/..' parts.
+ *
+ * Based on code in the Node.js 'path' core module.
+ *
+ * @param aPath The path or url to normalize.
+ */
+ function normalize(aPath) {
+ var path = aPath;
+ var url = urlParse(aPath);
+ if (url) {
+ if (!url.path) {
+ return aPath;
+ }
+ path = url.path;
+ }
+ var isAbsolute = exports.isAbsolute(path);
+
+ var parts = path.split(/\/+/);
+ for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {
+ part = parts[i];
+ if (part === '.') {
+ parts.splice(i, 1);
+ } else if (part === '..') {
+ up++;
+ } else if (up > 0) {
+ if (part === '') {
+ // The first part is blank if the path is absolute. Trying to go
+ // above the root is a no-op. Therefore we can remove all '..' parts
+ // directly after the root.
+ parts.splice(i + 1, up);
+ up = 0;
+ } else {
+ parts.splice(i, 2);
+ up--;
+ }
+ }
+ }
+ path = parts.join('/');
+
+ if (path === '') {
+ path = isAbsolute ? '/' : '.';
+ }
+
+ if (url) {
+ url.path = path;
+ return urlGenerate(url);
+ }
+ return path;
+ }
+ exports.normalize = normalize;
+
+ /**
+ * Joins two paths/URLs.
+ *
+ * @param aRoot The root path or URL.
+ * @param aPath The path or URL to be joined with the root.
+ *
+ * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a
+ * scheme-relative URL: Then the scheme of aRoot, if any, is prepended
+ * first.
+ * - Otherwise aPath is a path. If aRoot is a URL, then its path portion
+ * is updated with the result and aRoot is returned. Otherwise the result
+ * is returned.
+ * - If aPath is absolute, the result is aPath.
+ * - Otherwise the two paths are joined with a slash.
+ * - Joining for example 'http://' and 'www.example.com' is also supported.
+ */
+ function join(aRoot, aPath) {
+ if (aRoot === "") {
+ aRoot = ".";
+ }
+ if (aPath === "") {
+ aPath = ".";
+ }
+ var aPathUrl = urlParse(aPath);
+ var aRootUrl = urlParse(aRoot);
+ if (aRootUrl) {
+ aRoot = aRootUrl.path || '/';
+ }
+
+ // `join(foo, '//www.example.org')`
+ if (aPathUrl && !aPathUrl.scheme) {
+ if (aRootUrl) {
+ aPathUrl.scheme = aRootUrl.scheme;
+ }
+ return urlGenerate(aPathUrl);
+ }
+
+ if (aPathUrl || aPath.match(dataUrlRegexp)) {
+ return aPath;
+ }
+
+ // `join('http://', 'www.example.com')`
+ if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {
+ aRootUrl.host = aPath;
+ return urlGenerate(aRootUrl);
+ }
+
+ var joined = aPath.charAt(0) === '/'
+ ? aPath
+ : normalize(aRoot.replace(/\/+$/, '') + '/' + aPath);
+
+ if (aRootUrl) {
+ aRootUrl.path = joined;
+ return urlGenerate(aRootUrl);
+ }
+ return joined;
+ }
+ exports.join = join;
+
+ exports.isAbsolute = function (aPath) {
+ return aPath.charAt(0) === '/' || !!aPath.match(urlRegexp);
+ };
+
+ /**
+ * Make a path relative to a URL or another path.
+ *
+ * @param aRoot The root path or URL.
+ * @param aPath The path or URL to be made relative to aRoot.
+ */
+ function relative(aRoot, aPath) {
+ if (aRoot === "") {
+ aRoot = ".";
+ }
+
+ aRoot = aRoot.replace(/\/$/, '');
+
+ // It is possible for the path to be above the root. In this case, simply
+ // checking whether the root is a prefix of the path won't work. Instead, we
+ // need to remove components from the root one by one, until either we find
+ // a prefix that fits, or we run out of components to remove.
+ var level = 0;
+ while (aPath.indexOf(aRoot + '/') !== 0) {
+ var index = aRoot.lastIndexOf("/");
+ if (index < 0) {
+ return aPath;
+ }
+
+ // If the only part of the root that is left is the scheme (i.e. http://,
+ // file:///, etc.), one or more slashes (/), or simply nothing at all, we
+ // have exhausted all components, so the path is not relative to the root.
+ aRoot = aRoot.slice(0, index);
+ if (aRoot.match(/^([^\/]+:\/)?\/*$/)) {
+ return aPath;
+ }
+
+ ++level;
+ }
+
+ // Make sure we add a "../" for each component we removed from the root.
+ return Array(level + 1).join("../") + aPath.substr(aRoot.length + 1);
+ }
+ exports.relative = relative;
+
+ /**
+ * Because behavior goes wacky when you set `__proto__` on objects, we
+ * have to prefix all the strings in our set with an arbitrary character.
+ *
+ * See https://github.com/mozilla/source-map/pull/31 and
+ * https://github.com/mozilla/source-map/issues/30
+ *
+ * @param String aStr
+ */
+ function toSetString(aStr) {
+ return '$' + aStr;
+ }
+ exports.toSetString = toSetString;
+
+ function fromSetString(aStr) {
+ return aStr.substr(1);
+ }
+ exports.fromSetString = fromSetString;
+
+ /**
+ * Comparator between two mappings where the original positions are compared.
+ *
+ * Optionally pass in `true` as `onlyCompareGenerated` to consider two
+ * mappings with the same original source/line/column, but different generated
+ * line and column the same. Useful when searching for a mapping with a
+ * stubbed out mapping.
+ */
+ function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {
+ var cmp = mappingA.source - mappingB.source;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.originalLine - mappingB.originalLine;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.originalColumn - mappingB.originalColumn;
+ if (cmp !== 0 || onlyCompareOriginal) {
+ return cmp;
+ }
+
+ cmp = mappingA.generatedColumn - mappingB.generatedColumn;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.generatedLine - mappingB.generatedLine;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ return mappingA.name - mappingB.name;
+ }
+ exports.compareByOriginalPositions = compareByOriginalPositions;
+
+ /**
+ * Comparator between two mappings with deflated source and name indices where
+ * the generated positions are compared.
+ *
+ * Optionally pass in `true` as `onlyCompareGenerated` to consider two
+ * mappings with the same generated line and column, but different
+ * source/name/original line and column the same. Useful when searching for a
+ * mapping with a stubbed out mapping.
+ */
+ function compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {
+ var cmp = mappingA.generatedLine - mappingB.generatedLine;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.generatedColumn - mappingB.generatedColumn;
+ if (cmp !== 0 || onlyCompareGenerated) {
+ return cmp;
+ }
+
+ cmp = mappingA.source - mappingB.source;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.originalLine - mappingB.originalLine;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.originalColumn - mappingB.originalColumn;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ return mappingA.name - mappingB.name;
+ }
+ exports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;
+
+ function strcmp(aStr1, aStr2) {
+ if (aStr1 === aStr2) {
+ return 0;
+ }
+
+ if (aStr1 > aStr2) {
+ return 1;
+ }
+
+ return -1;
+ }
+
+ /**
+ * Comparator between two mappings with inflated source and name strings where
+ * the generated positions are compared.
+ */
+ function compareByGeneratedPositionsInflated(mappingA, mappingB) {
+ var cmp = mappingA.generatedLine - mappingB.generatedLine;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.generatedColumn - mappingB.generatedColumn;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = strcmp(mappingA.source, mappingB.source);
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.originalLine - mappingB.originalLine;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.originalColumn - mappingB.originalColumn;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ return strcmp(mappingA.name, mappingB.name);
+ }
+ exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;
+ }
+
+
+/***/ },
+/* 5 */
+/***/ function(module, exports, __webpack_require__) {
+
+ /* -*- Mode: js; js-indent-level: 2; -*- */
+ /*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+ {
+ var util = __webpack_require__(4);
+
+ /**
+ * A data structure which is a combination of an array and a set. Adding a new
+ * member is O(1), testing for membership is O(1), and finding the index of an
+ * element is O(1). Removing elements from the set is not supported. Only
+ * strings are supported for membership.
+ */
+ function ArraySet() {
+ this._array = [];
+ this._set = {};
+ }
+
+ /**
+ * Static method for creating ArraySet instances from an existing array.
+ */
+ ArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {
+ var set = new ArraySet();
+ for (var i = 0, len = aArray.length; i < len; i++) {
+ set.add(aArray[i], aAllowDuplicates);
+ }
+ return set;
+ };
+
+ /**
+ * Return how many unique items are in this ArraySet. If duplicates have been
+ * added, than those do not count towards the size.
+ *
+ * @returns Number
+ */
+ ArraySet.prototype.size = function ArraySet_size() {
+ return Object.getOwnPropertyNames(this._set).length;
+ };
+
+ /**
+ * Add the given string to this set.
+ *
+ * @param String aStr
+ */
+ ArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {
+ var sStr = util.toSetString(aStr);
+ var isDuplicate = this._set.hasOwnProperty(sStr);
+ var idx = this._array.length;
+ if (!isDuplicate || aAllowDuplicates) {
+ this._array.push(aStr);
+ }
+ if (!isDuplicate) {
+ this._set[sStr] = idx;
+ }
+ };
+
+ /**
+ * Is the given string a member of this set?
+ *
+ * @param String aStr
+ */
+ ArraySet.prototype.has = function ArraySet_has(aStr) {
+ var sStr = util.toSetString(aStr);
+ return this._set.hasOwnProperty(sStr);
+ };
+
+ /**
+ * What is the index of the given string in the array?
+ *
+ * @param String aStr
+ */
+ ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {
+ var sStr = util.toSetString(aStr);
+ if (this._set.hasOwnProperty(sStr)) {
+ return this._set[sStr];
+ }
+ throw new Error('"' + aStr + '" is not in the set.');
+ };
+
+ /**
+ * What is the element at the given index?
+ *
+ * @param Number aIdx
+ */
+ ArraySet.prototype.at = function ArraySet_at(aIdx) {
+ if (aIdx >= 0 && aIdx < this._array.length) {
+ return this._array[aIdx];
+ }
+ throw new Error('No element indexed by ' + aIdx);
+ };
+
+ /**
+ * Returns the array representation of this set (which has the proper indices
+ * indicated by indexOf). Note that this is a copy of the internal array used
+ * for storing the members so that no one can mess with internal state.
+ */
+ ArraySet.prototype.toArray = function ArraySet_toArray() {
+ return this._array.slice();
+ };
+
+ exports.ArraySet = ArraySet;
+ }
+
+
+/***/ },
+/* 6 */
+/***/ function(module, exports, __webpack_require__) {
+
+ /* -*- Mode: js; js-indent-level: 2; -*- */
+ /*
+ * Copyright 2014 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+ {
+ var util = __webpack_require__(4);
+
+ /**
+ * Determine whether mappingB is after mappingA with respect to generated
+ * position.
+ */
+ function generatedPositionAfter(mappingA, mappingB) {
+ // Optimized for most common case
+ var lineA = mappingA.generatedLine;
+ var lineB = mappingB.generatedLine;
+ var columnA = mappingA.generatedColumn;
+ var columnB = mappingB.generatedColumn;
+ return lineB > lineA || lineB == lineA && columnB >= columnA ||
+ util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0;
+ }
+
+ /**
+ * A data structure to provide a sorted view of accumulated mappings in a
+ * performance conscious manner. It trades a neglibable overhead in general
+ * case for a large speedup in case of mappings being added in order.
+ */
+ function MappingList() {
+ this._array = [];
+ this._sorted = true;
+ // Serves as infimum
+ this._last = {generatedLine: -1, generatedColumn: 0};
+ }
+
+ /**
+ * Iterate through internal items. This method takes the same arguments that
+ * `Array.prototype.forEach` takes.
+ *
+ * NOTE: The order of the mappings is NOT guaranteed.
+ */
+ MappingList.prototype.unsortedForEach =
+ function MappingList_forEach(aCallback, aThisArg) {
+ this._array.forEach(aCallback, aThisArg);
+ };
+
+ /**
+ * Add the given source mapping.
+ *
+ * @param Object aMapping
+ */
+ MappingList.prototype.add = function MappingList_add(aMapping) {
+ if (generatedPositionAfter(this._last, aMapping)) {
+ this._last = aMapping;
+ this._array.push(aMapping);
+ } else {
+ this._sorted = false;
+ this._array.push(aMapping);
+ }
+ };
+
+ /**
+ * Returns the flat, sorted array of mappings. The mappings are sorted by
+ * generated position.
+ *
+ * WARNING: This method returns internal data without copying, for
+ * performance. The return value must NOT be mutated, and should be treated as
+ * an immutable borrow. If you want to take ownership, you must make your own
+ * copy.
+ */
+ MappingList.prototype.toArray = function MappingList_toArray() {
+ if (!this._sorted) {
+ this._array.sort(util.compareByGeneratedPositionsInflated);
+ this._sorted = true;
+ }
+ return this._array;
+ };
+
+ exports.MappingList = MappingList;
+ }
+
+
+/***/ },
+/* 7 */
+/***/ function(module, exports, __webpack_require__) {
+
+ /* -*- Mode: js; js-indent-level: 2; -*- */
+ /*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+ {
+ var util = __webpack_require__(4);
+ var binarySearch = __webpack_require__(8);
+ var ArraySet = __webpack_require__(5).ArraySet;
+ var base64VLQ = __webpack_require__(2);
+ var quickSort = __webpack_require__(9).quickSort;
+
+ function SourceMapConsumer(aSourceMap) {
+ var sourceMap = aSourceMap;
+ if (typeof aSourceMap === 'string') {
+ sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, ''));
+ }
+
+ return sourceMap.sections != null
+ ? new IndexedSourceMapConsumer(sourceMap)
+ : new BasicSourceMapConsumer(sourceMap);
+ }
+
+ SourceMapConsumer.fromSourceMap = function(aSourceMap) {
+ return BasicSourceMapConsumer.fromSourceMap(aSourceMap);
+ }
+
+ /**
+ * The version of the source mapping spec that we are consuming.
+ */
+ SourceMapConsumer.prototype._version = 3;
+
+ // `__generatedMappings` and `__originalMappings` are arrays that hold the
+ // parsed mapping coordinates from the source map's "mappings" attribute. They
+ // are lazily instantiated, accessed via the `_generatedMappings` and
+ // `_originalMappings` getters respectively, and we only parse the mappings
+ // and create these arrays once queried for a source location. We jump through
+ // these hoops because there can be many thousands of mappings, and parsing
+ // them is expensive, so we only want to do it if we must.
+ //
+ // Each object in the arrays is of the form:
+ //
+ // {
+ // generatedLine: The line number in the generated code,
+ // generatedColumn: The column number in the generated code,
+ // source: The path to the original source file that generated this
+ // chunk of code,
+ // originalLine: The line number in the original source that
+ // corresponds to this chunk of generated code,
+ // originalColumn: The column number in the original source that
+ // corresponds to this chunk of generated code,
+ // name: The name of the original symbol which generated this chunk of
+ // code.
+ // }
+ //
+ // All properties except for `generatedLine` and `generatedColumn` can be
+ // `null`.
+ //
+ // `_generatedMappings` is ordered by the generated positions.
+ //
+ // `_originalMappings` is ordered by the original positions.
+
+ SourceMapConsumer.prototype.__generatedMappings = null;
+ Object.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {
+ get: function () {
+ if (!this.__generatedMappings) {
+ this._parseMappings(this._mappings, this.sourceRoot);
+ }
+
+ return this.__generatedMappings;
+ }
+ });
+
+ SourceMapConsumer.prototype.__originalMappings = null;
+ Object.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {
+ get: function () {
+ if (!this.__originalMappings) {
+ this._parseMappings(this._mappings, this.sourceRoot);
+ }
+
+ return this.__originalMappings;
+ }
+ });
+
+ SourceMapConsumer.prototype._charIsMappingSeparator =
+ function SourceMapConsumer_charIsMappingSeparator(aStr, index) {
+ var c = aStr.charAt(index);
+ return c === ";" || c === ",";
+ };
+
+ /**
+ * Parse the mappings in a string in to a data structure which we can easily
+ * query (the ordered arrays in the `this.__generatedMappings` and
+ * `this.__originalMappings` properties).
+ */
+ SourceMapConsumer.prototype._parseMappings =
+ function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {
+ throw new Error("Subclasses must implement _parseMappings");
+ };
+
+ SourceMapConsumer.GENERATED_ORDER = 1;
+ SourceMapConsumer.ORIGINAL_ORDER = 2;
+
+ SourceMapConsumer.GREATEST_LOWER_BOUND = 1;
+ SourceMapConsumer.LEAST_UPPER_BOUND = 2;
+
+ /**
+ * Iterate over each mapping between an original source/line/column and a
+ * generated line/column in this source map.
+ *
+ * @param Function aCallback
+ * The function that is called with each mapping.
+ * @param Object aContext
+ * Optional. If specified, this object will be the value of `this` every
+ * time that `aCallback` is called.
+ * @param aOrder
+ * Either `SourceMapConsumer.GENERATED_ORDER` or
+ * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to
+ * iterate over the mappings sorted by the generated file's line/column
+ * order or the original's source/line/column order, respectively. Defaults to
+ * `SourceMapConsumer.GENERATED_ORDER`.
+ */
+ SourceMapConsumer.prototype.eachMapping =
+ function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {
+ var context = aContext || null;
+ var order = aOrder || SourceMapConsumer.GENERATED_ORDER;
+
+ var mappings;
+ switch (order) {
+ case SourceMapConsumer.GENERATED_ORDER:
+ mappings = this._generatedMappings;
+ break;
+ case SourceMapConsumer.ORIGINAL_ORDER:
+ mappings = this._originalMappings;
+ break;
+ default:
+ throw new Error("Unknown order of iteration.");
+ }
+
+ var sourceRoot = this.sourceRoot;
+ mappings.map(function (mapping) {
+ var source = mapping.source === null ? null : this._sources.at(mapping.source);
+ if (source != null && sourceRoot != null) {
+ source = util.join(sourceRoot, source);
+ }
+ return {
+ source: source,
+ generatedLine: mapping.generatedLine,
+ generatedColumn: mapping.generatedColumn,
+ originalLine: mapping.originalLine,
+ originalColumn: mapping.originalColumn,
+ name: mapping.name === null ? null : this._names.at(mapping.name)
+ };
+ }, this).forEach(aCallback, context);
+ };
+
+ /**
+ * Returns all generated line and column information for the original source,
+ * line, and column provided. If no column is provided, returns all mappings
+ * corresponding to a either the line we are searching for or the next
+ * closest line that has any mappings. Otherwise, returns all mappings
+ * corresponding to the given line and either the column we are searching for
+ * or the next closest column that has any offsets.
+ *
+ * The only argument is an object with the following properties:
+ *
+ * - source: The filename of the original source.
+ * - line: The line number in the original source.
+ * - column: Optional. the column number in the original source.
+ *
+ * and an array of objects is returned, each with the following properties:
+ *
+ * - line: The line number in the generated source, or null.
+ * - column: The column number in the generated source, or null.
+ */
+ SourceMapConsumer.prototype.allGeneratedPositionsFor =
+ function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {
+ var line = util.getArg(aArgs, 'line');
+
+ // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping
+ // returns the index of the closest mapping less than the needle. By
+ // setting needle.originalColumn to 0, we thus find the last mapping for
+ // the given line, provided such a mapping exists.
+ var needle = {
+ source: util.getArg(aArgs, 'source'),
+ originalLine: line,
+ originalColumn: util.getArg(aArgs, 'column', 0)
+ };
+
+ if (this.sourceRoot != null) {
+ needle.source = util.relative(this.sourceRoot, needle.source);
+ }
+ if (!this._sources.has(needle.source)) {
+ return [];
+ }
+ needle.source = this._sources.indexOf(needle.source);
+
+ var mappings = [];
+
+ var index = this._findMapping(needle,
+ this._originalMappings,
+ "originalLine",
+ "originalColumn",
+ util.compareByOriginalPositions,
+ binarySearch.LEAST_UPPER_BOUND);
+ if (index >= 0) {
+ var mapping = this._originalMappings[index];
+
+ if (aArgs.column === undefined) {
+ var originalLine = mapping.originalLine;
+
+ // Iterate until either we run out of mappings, or we run into
+ // a mapping for a different line than the one we found. Since
+ // mappings are sorted, this is guaranteed to find all mappings for
+ // the line we found.
+ while (mapping && mapping.originalLine === originalLine) {
+ mappings.push({
+ line: util.getArg(mapping, 'generatedLine', null),
+ column: util.getArg(mapping, 'generatedColumn', null),
+ lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)
+ });
+
+ mapping = this._originalMappings[++index];
+ }
+ } else {
+ var originalColumn = mapping.originalColumn;
+
+ // Iterate until either we run out of mappings, or we run into
+ // a mapping for a different line than the one we were searching for.
+ // Since mappings are sorted, this is guaranteed to find all mappings for
+ // the line we are searching for.
+ while (mapping &&
+ mapping.originalLine === line &&
+ mapping.originalColumn == originalColumn) {
+ mappings.push({
+ line: util.getArg(mapping, 'generatedLine', null),
+ column: util.getArg(mapping, 'generatedColumn', null),
+ lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)
+ });
+
+ mapping = this._originalMappings[++index];
+ }
+ }
+ }
+
+ return mappings;
+ };
+
+ exports.SourceMapConsumer = SourceMapConsumer;
+
+ /**
+ * A BasicSourceMapConsumer instance represents a parsed source map which we can
+ * query for information about the original file positions by giving it a file
+ * position in the generated source.
+ *
+ * The only parameter is the raw source map (either as a JSON string, or
+ * already parsed to an object). According to the spec, source maps have the
+ * following attributes:
+ *
+ * - version: Which version of the source map spec this map is following.
+ * - sources: An array of URLs to the original source files.
+ * - names: An array of identifiers which can be referrenced by individual mappings.
+ * - sourceRoot: Optional. The URL root from which all sources are relative.
+ * - sourcesContent: Optional. An array of contents of the original source files.
+ * - mappings: A string of base64 VLQs which contain the actual mappings.
+ * - file: Optional. The generated file this source map is associated with.
+ *
+ * Here is an example source map, taken from the source map spec[0]:
+ *
+ * {
+ * version : 3,
+ * file: "out.js",
+ * sourceRoot : "",
+ * sources: ["foo.js", "bar.js"],
+ * names: ["src", "maps", "are", "fun"],
+ * mappings: "AA,AB;;ABCDE;"
+ * }
+ *
+ * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#
+ */
+ function BasicSourceMapConsumer(aSourceMap) {
+ var sourceMap = aSourceMap;
+ if (typeof aSourceMap === 'string') {
+ sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, ''));
+ }
+
+ var version = util.getArg(sourceMap, 'version');
+ var sources = util.getArg(sourceMap, 'sources');
+ // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which
+ // requires the array) to play nice here.
+ var names = util.getArg(sourceMap, 'names', []);
+ var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);
+ var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);
+ var mappings = util.getArg(sourceMap, 'mappings');
+ var file = util.getArg(sourceMap, 'file', null);
+
+ // Once again, Sass deviates from the spec and supplies the version as a
+ // string rather than a number, so we use loose equality checking here.
+ if (version != this._version) {
+ throw new Error('Unsupported version: ' + version);
+ }
+
+ sources = sources
+ // Some source maps produce relative source paths like "./foo.js" instead of
+ // "foo.js". Normalize these first so that future comparisons will succeed.
+ // See bugzil.la/1090768.
+ .map(util.normalize)
+ // Always ensure that absolute sources are internally stored relative to
+ // the source root, if the source root is absolute. Not doing this would
+ // be particularly problematic when the source root is a prefix of the
+ // source (valid, but why??). See github issue #199 and bugzil.la/1188982.
+ .map(function (source) {
+ return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source)
+ ? util.relative(sourceRoot, source)
+ : source;
+ });
+
+ // Pass `true` below to allow duplicate names and sources. While source maps
+ // are intended to be compressed and deduplicated, the TypeScript compiler
+ // sometimes generates source maps with duplicates in them. See Github issue
+ // #72 and bugzil.la/889492.
+ this._names = ArraySet.fromArray(names, true);
+ this._sources = ArraySet.fromArray(sources, true);
+
+ this.sourceRoot = sourceRoot;
+ this.sourcesContent = sourcesContent;
+ this._mappings = mappings;
+ this.file = file;
+ }
+
+ BasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);
+ BasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;
+
+ /**
+ * Create a BasicSourceMapConsumer from a SourceMapGenerator.
+ *
+ * @param SourceMapGenerator aSourceMap
+ * The source map that will be consumed.
+ * @returns BasicSourceMapConsumer
+ */
+ BasicSourceMapConsumer.fromSourceMap =
+ function SourceMapConsumer_fromSourceMap(aSourceMap) {
+ var smc = Object.create(BasicSourceMapConsumer.prototype);
+
+ var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);
+ var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);
+ smc.sourceRoot = aSourceMap._sourceRoot;
+ smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),
+ smc.sourceRoot);
+ smc.file = aSourceMap._file;
+
+ // Because we are modifying the entries (by converting string sources and
+ // names to indices into the sources and names ArraySets), we have to make
+ // a copy of the entry or else bad things happen. Shared mutable state
+ // strikes again! See github issue #191.
+
+ var generatedMappings = aSourceMap._mappings.toArray().slice();
+ var destGeneratedMappings = smc.__generatedMappings = [];
+ var destOriginalMappings = smc.__originalMappings = [];
+
+ for (var i = 0, length = generatedMappings.length; i < length; i++) {
+ var srcMapping = generatedMappings[i];
+ var destMapping = new Mapping;
+ destMapping.generatedLine = srcMapping.generatedLine;
+ destMapping.generatedColumn = srcMapping.generatedColumn;
+
+ if (srcMapping.source) {
+ destMapping.source = sources.indexOf(srcMapping.source);
+ destMapping.originalLine = srcMapping.originalLine;
+ destMapping.originalColumn = srcMapping.originalColumn;
+
+ if (srcMapping.name) {
+ destMapping.name = names.indexOf(srcMapping.name);
+ }
+
+ destOriginalMappings.push(destMapping);
+ }
+
+ destGeneratedMappings.push(destMapping);
+ }
+
+ quickSort(smc.__originalMappings, util.compareByOriginalPositions);
+
+ return smc;
+ };
+
+ /**
+ * The version of the source mapping spec that we are consuming.
+ */
+ BasicSourceMapConsumer.prototype._version = 3;
+
+ /**
+ * The list of original sources.
+ */
+ Object.defineProperty(BasicSourceMapConsumer.prototype, 'sources', {
+ get: function () {
+ return this._sources.toArray().map(function (s) {
+ return this.sourceRoot != null ? util.join(this.sourceRoot, s) : s;
+ }, this);
+ }
+ });
+
+ /**
+ * Provide the JIT with a nice shape / hidden class.
+ */
+ function Mapping() {
+ this.generatedLine = 0;
+ this.generatedColumn = 0;
+ this.source = null;
+ this.originalLine = null;
+ this.originalColumn = null;
+ this.name = null;
+ }
+
+ /**
+ * Parse the mappings in a string in to a data structure which we can easily
+ * query (the ordered arrays in the `this.__generatedMappings` and
+ * `this.__originalMappings` properties).
+ */
+ BasicSourceMapConsumer.prototype._parseMappings =
+ function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {
+ var generatedLine = 1;
+ var previousGeneratedColumn = 0;
+ var previousOriginalLine = 0;
+ var previousOriginalColumn = 0;
+ var previousSource = 0;
+ var previousName = 0;
+ var length = aStr.length;
+ var index = 0;
+ var cachedSegments = {};
+ var temp = {};
+ var originalMappings = [];
+ var generatedMappings = [];
+ var mapping, str, segment, end, value;
+
+ while (index < length) {
+ if (aStr.charAt(index) === ';') {
+ generatedLine++;
+ index++;
+ previousGeneratedColumn = 0;
+ }
+ else if (aStr.charAt(index) === ',') {
+ index++;
+ }
+ else {
+ mapping = new Mapping();
+ mapping.generatedLine = generatedLine;
+
+ // Because each offset is encoded relative to the previous one,
+ // many segments often have the same encoding. We can exploit this
+ // fact by caching the parsed variable length fields of each segment,
+ // allowing us to avoid a second parse if we encounter the same
+ // segment again.
+ for (end = index; end < length; end++) {
+ if (this._charIsMappingSeparator(aStr, end)) {
+ break;
+ }
+ }
+ str = aStr.slice(index, end);
+
+ segment = cachedSegments[str];
+ if (segment) {
+ index += str.length;
+ } else {
+ segment = [];
+ while (index < end) {
+ base64VLQ.decode(aStr, index, temp);
+ value = temp.value;
+ index = temp.rest;
+ segment.push(value);
+ }
+
+ if (segment.length === 2) {
+ throw new Error('Found a source, but no line and column');
+ }
+
+ if (segment.length === 3) {
+ throw new Error('Found a source and line, but no column');
+ }
+
+ cachedSegments[str] = segment;
+ }
+
+ // Generated column.
+ mapping.generatedColumn = previousGeneratedColumn + segment[0];
+ previousGeneratedColumn = mapping.generatedColumn;
+
+ if (segment.length > 1) {
+ // Original source.
+ mapping.source = previousSource + segment[1];
+ previousSource += segment[1];
+
+ // Original line.
+ mapping.originalLine = previousOriginalLine + segment[2];
+ previousOriginalLine = mapping.originalLine;
+ // Lines are stored 0-based
+ mapping.originalLine += 1;
+
+ // Original column.
+ mapping.originalColumn = previousOriginalColumn + segment[3];
+ previousOriginalColumn = mapping.originalColumn;
+
+ if (segment.length > 4) {
+ // Original name.
+ mapping.name = previousName + segment[4];
+ previousName += segment[4];
+ }
+ }
+
+ generatedMappings.push(mapping);
+ if (typeof mapping.originalLine === 'number') {
+ originalMappings.push(mapping);
+ }
+ }
+ }
+
+ quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated);
+ this.__generatedMappings = generatedMappings;
+
+ quickSort(originalMappings, util.compareByOriginalPositions);
+ this.__originalMappings = originalMappings;
+ };
+
+ /**
+ * Find the mapping that best matches the hypothetical "needle" mapping that
+ * we are searching for in the given "haystack" of mappings.
+ */
+ BasicSourceMapConsumer.prototype._findMapping =
+ function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,
+ aColumnName, aComparator, aBias) {
+ // To return the position we are searching for, we must first find the
+ // mapping for the given position and then return the opposite position it
+ // points to. Because the mappings are sorted, we can use binary search to
+ // find the best mapping.
+
+ if (aNeedle[aLineName] <= 0) {
+ throw new TypeError('Line must be greater than or equal to 1, got '
+ + aNeedle[aLineName]);
+ }
+ if (aNeedle[aColumnName] < 0) {
+ throw new TypeError('Column must be greater than or equal to 0, got '
+ + aNeedle[aColumnName]);
+ }
+
+ return binarySearch.search(aNeedle, aMappings, aComparator, aBias);
+ };
+
+ /**
+ * Compute the last column for each generated mapping. The last column is
+ * inclusive.
+ */
+ BasicSourceMapConsumer.prototype.computeColumnSpans =
+ function SourceMapConsumer_computeColumnSpans() {
+ for (var index = 0; index < this._generatedMappings.length; ++index) {
+ var mapping = this._generatedMappings[index];
+
+ // Mappings do not contain a field for the last generated columnt. We
+ // can come up with an optimistic estimate, however, by assuming that
+ // mappings are contiguous (i.e. given two consecutive mappings, the
+ // first mapping ends where the second one starts).
+ if (index + 1 < this._generatedMappings.length) {
+ var nextMapping = this._generatedMappings[index + 1];
+
+ if (mapping.generatedLine === nextMapping.generatedLine) {
+ mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;
+ continue;
+ }
+ }
+
+ // The last mapping for each line spans the entire line.
+ mapping.lastGeneratedColumn = Infinity;
+ }
+ };
+
+ /**
+ * Returns the original source, line, and column information for the generated
+ * source's line and column positions provided. The only argument is an object
+ * with the following properties:
+ *
+ * - line: The line number in the generated source.
+ * - column: The column number in the generated source.
+ * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or
+ * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the
+ * closest element that is smaller than or greater than the one we are
+ * searching for, respectively, if the exact element cannot be found.
+ * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.
+ *
+ * and an object is returned with the following properties:
+ *
+ * - source: The original source file, or null.
+ * - line: The line number in the original source, or null.
+ * - column: The column number in the original source, or null.
+ * - name: The original identifier, or null.
+ */
+ BasicSourceMapConsumer.prototype.originalPositionFor =
+ function SourceMapConsumer_originalPositionFor(aArgs) {
+ var needle = {
+ generatedLine: util.getArg(aArgs, 'line'),
+ generatedColumn: util.getArg(aArgs, 'column')
+ };
+
+ var index = this._findMapping(
+ needle,
+ this._generatedMappings,
+ "generatedLine",
+ "generatedColumn",
+ util.compareByGeneratedPositionsDeflated,
+ util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)
+ );
+
+ if (index >= 0) {
+ var mapping = this._generatedMappings[index];
+
+ if (mapping.generatedLine === needle.generatedLine) {
+ var source = util.getArg(mapping, 'source', null);
+ if (source !== null) {
+ source = this._sources.at(source);
+ if (this.sourceRoot != null) {
+ source = util.join(this.sourceRoot, source);
+ }
+ }
+ var name = util.getArg(mapping, 'name', null);
+ if (name !== null) {
+ name = this._names.at(name);
+ }
+ return {
+ source: source,
+ line: util.getArg(mapping, 'originalLine', null),
+ column: util.getArg(mapping, 'originalColumn', null),
+ name: name
+ };
+ }
+ }
+
+ return {
+ source: null,
+ line: null,
+ column: null,
+ name: null
+ };
+ };
+
+ /**
+ * Return true if we have the source content for every source in the source
+ * map, false otherwise.
+ */
+ BasicSourceMapConsumer.prototype.hasContentsOfAllSources =
+ function BasicSourceMapConsumer_hasContentsOfAllSources() {
+ if (!this.sourcesContent) {
+ return false;
+ }
+ return this.sourcesContent.length >= this._sources.size() &&
+ !this.sourcesContent.some(function (sc) { return sc == null; });
+ };
+
+ /**
+ * Returns the original source content. The only argument is the url of the
+ * original source file. Returns null if no original source content is
+ * available.
+ */
+ BasicSourceMapConsumer.prototype.sourceContentFor =
+ function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {
+ if (!this.sourcesContent) {
+ return null;
+ }
+
+ if (this.sourceRoot != null) {
+ aSource = util.relative(this.sourceRoot, aSource);
+ }
+
+ if (this._sources.has(aSource)) {
+ return this.sourcesContent[this._sources.indexOf(aSource)];
+ }
+
+ var url;
+ if (this.sourceRoot != null
+ && (url = util.urlParse(this.sourceRoot))) {
+ // XXX: file:// URIs and absolute paths lead to unexpected behavior for
+ // many users. We can help them out when they expect file:// URIs to
+ // behave like it would if they were running a local HTTP server. See
+ // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.
+ var fileUriAbsPath = aSource.replace(/^file:\/\//, "");
+ if (url.scheme == "file"
+ && this._sources.has(fileUriAbsPath)) {
+ return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]
+ }
+
+ if ((!url.path || url.path == "/")
+ && this._sources.has("/" + aSource)) {
+ return this.sourcesContent[this._sources.indexOf("/" + aSource)];
+ }
+ }
+
+ // This function is used recursively from
+ // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we
+ // don't want to throw if we can't find the source - we just want to
+ // return null, so we provide a flag to exit gracefully.
+ if (nullOnMissing) {
+ return null;
+ }
+ else {
+ throw new Error('"' + aSource + '" is not in the SourceMap.');
+ }
+ };
+
+ /**
+ * Returns the generated line and column information for the original source,
+ * line, and column positions provided. The only argument is an object with
+ * the following properties:
+ *
+ * - source: The filename of the original source.
+ * - line: The line number in the original source.
+ * - column: The column number in the original source.
+ * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or
+ * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the
+ * closest element that is smaller than or greater than the one we are
+ * searching for, respectively, if the exact element cannot be found.
+ * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.
+ *
+ * and an object is returned with the following properties:
+ *
+ * - line: The line number in the generated source, or null.
+ * - column: The column number in the generated source, or null.
+ */
+ BasicSourceMapConsumer.prototype.generatedPositionFor =
+ function SourceMapConsumer_generatedPositionFor(aArgs) {
+ var source = util.getArg(aArgs, 'source');
+ if (this.sourceRoot != null) {
+ source = util.relative(this.sourceRoot, source);
+ }
+ if (!this._sources.has(source)) {
+ return {
+ line: null,
+ column: null,
+ lastColumn: null
+ };
+ }
+ source = this._sources.indexOf(source);
+
+ var needle = {
+ source: source,
+ originalLine: util.getArg(aArgs, 'line'),
+ originalColumn: util.getArg(aArgs, 'column')
+ };
+
+ var index = this._findMapping(
+ needle,
+ this._originalMappings,
+ "originalLine",
+ "originalColumn",
+ util.compareByOriginalPositions,
+ util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)
+ );
+
+ if (index >= 0) {
+ var mapping = this._originalMappings[index];
+
+ if (mapping.source === needle.source) {
+ return {
+ line: util.getArg(mapping, 'generatedLine', null),
+ column: util.getArg(mapping, 'generatedColumn', null),
+ lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)
+ };
+ }
+ }
+
+ return {
+ line: null,
+ column: null,
+ lastColumn: null
+ };
+ };
+
+ exports.BasicSourceMapConsumer = BasicSourceMapConsumer;
+
+ /**
+ * An IndexedSourceMapConsumer instance represents a parsed source map which
+ * we can query for information. It differs from BasicSourceMapConsumer in
+ * that it takes "indexed" source maps (i.e. ones with a "sections" field) as
+ * input.
+ *
+ * The only parameter is a raw source map (either as a JSON string, or already
+ * parsed to an object). According to the spec for indexed source maps, they
+ * have the following attributes:
+ *
+ * - version: Which version of the source map spec this map is following.
+ * - file: Optional. The generated file this source map is associated with.
+ * - sections: A list of section definitions.
+ *
+ * Each value under the "sections" field has two fields:
+ * - offset: The offset into the original specified at which this section
+ * begins to apply, defined as an object with a "line" and "column"
+ * field.
+ * - map: A source map definition. This source map could also be indexed,
+ * but doesn't have to be.
+ *
+ * Instead of the "map" field, it's also possible to have a "url" field
+ * specifying a URL to retrieve a source map from, but that's currently
+ * unsupported.
+ *
+ * Here's an example source map, taken from the source map spec[0], but
+ * modified to omit a section which uses the "url" field.
+ *
+ * {
+ * version : 3,
+ * file: "app.js",
+ * sections: [{
+ * offset: {line:100, column:10},
+ * map: {
+ * version : 3,
+ * file: "section.js",
+ * sources: ["foo.js", "bar.js"],
+ * names: ["src", "maps", "are", "fun"],
+ * mappings: "AAAA,E;;ABCDE;"
+ * }
+ * }],
+ * }
+ *
+ * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt
+ */
+ function IndexedSourceMapConsumer(aSourceMap) {
+ var sourceMap = aSourceMap;
+ if (typeof aSourceMap === 'string') {
+ sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, ''));
+ }
+
+ var version = util.getArg(sourceMap, 'version');
+ var sections = util.getArg(sourceMap, 'sections');
+
+ if (version != this._version) {
+ throw new Error('Unsupported version: ' + version);
+ }
+
+ this._sources = new ArraySet();
+ this._names = new ArraySet();
+
+ var lastOffset = {
+ line: -1,
+ column: 0
+ };
+ this._sections = sections.map(function (s) {
+ if (s.url) {
+ // The url field will require support for asynchronicity.
+ // See https://github.com/mozilla/source-map/issues/16
+ throw new Error('Support for url field in sections not implemented.');
+ }
+ var offset = util.getArg(s, 'offset');
+ var offsetLine = util.getArg(offset, 'line');
+ var offsetColumn = util.getArg(offset, 'column');
+
+ if (offsetLine < lastOffset.line ||
+ (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) {
+ throw new Error('Section offsets must be ordered and non-overlapping.');
+ }
+ lastOffset = offset;
+
+ return {
+ generatedOffset: {
+ // The offset fields are 0-based, but we use 1-based indices when
+ // encoding/decoding from VLQ.
+ generatedLine: offsetLine + 1,
+ generatedColumn: offsetColumn + 1
+ },
+ consumer: new SourceMapConsumer(util.getArg(s, 'map'))
+ }
+ });
+ }
+
+ IndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);
+ IndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;
+
+ /**
+ * The version of the source mapping spec that we are consuming.
+ */
+ IndexedSourceMapConsumer.prototype._version = 3;
+
+ /**
+ * The list of original sources.
+ */
+ Object.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', {
+ get: function () {
+ var sources = [];
+ for (var i = 0; i < this._sections.length; i++) {
+ for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {
+ sources.push(this._sections[i].consumer.sources[j]);
+ }
+ }
+ return sources;
+ }
+ });
+
+ /**
+ * Returns the original source, line, and column information for the generated
+ * source's line and column positions provided. The only argument is an object
+ * with the following properties:
+ *
+ * - line: The line number in the generated source.
+ * - column: The column number in the generated source.
+ *
+ * and an object is returned with the following properties:
+ *
+ * - source: The original source file, or null.
+ * - line: The line number in the original source, or null.
+ * - column: The column number in the original source, or null.
+ * - name: The original identifier, or null.
+ */
+ IndexedSourceMapConsumer.prototype.originalPositionFor =
+ function IndexedSourceMapConsumer_originalPositionFor(aArgs) {
+ var needle = {
+ generatedLine: util.getArg(aArgs, 'line'),
+ generatedColumn: util.getArg(aArgs, 'column')
+ };
+
+ // Find the section containing the generated position we're trying to map
+ // to an original position.
+ var sectionIndex = binarySearch.search(needle, this._sections,
+ function(needle, section) {
+ var cmp = needle.generatedLine - section.generatedOffset.generatedLine;
+ if (cmp) {
+ return cmp;
+ }
+
+ return (needle.generatedColumn -
+ section.generatedOffset.generatedColumn);
+ });
+ var section = this._sections[sectionIndex];
+
+ if (!section) {
+ return {
+ source: null,
+ line: null,
+ column: null,
+ name: null
+ };
+ }
+
+ return section.consumer.originalPositionFor({
+ line: needle.generatedLine -
+ (section.generatedOffset.generatedLine - 1),
+ column: needle.generatedColumn -
+ (section.generatedOffset.generatedLine === needle.generatedLine
+ ? section.generatedOffset.generatedColumn - 1
+ : 0),
+ bias: aArgs.bias
+ });
+ };
+
+ /**
+ * Return true if we have the source content for every source in the source
+ * map, false otherwise.
+ */
+ IndexedSourceMapConsumer.prototype.hasContentsOfAllSources =
+ function IndexedSourceMapConsumer_hasContentsOfAllSources() {
+ return this._sections.every(function (s) {
+ return s.consumer.hasContentsOfAllSources();
+ });
+ };
+
+ /**
+ * Returns the original source content. The only argument is the url of the
+ * original source file. Returns null if no original source content is
+ * available.
+ */
+ IndexedSourceMapConsumer.prototype.sourceContentFor =
+ function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {
+ for (var i = 0; i < this._sections.length; i++) {
+ var section = this._sections[i];
+
+ var content = section.consumer.sourceContentFor(aSource, true);
+ if (content) {
+ return content;
+ }
+ }
+ if (nullOnMissing) {
+ return null;
+ }
+ else {
+ throw new Error('"' + aSource + '" is not in the SourceMap.');
+ }
+ };
+
+ /**
+ * Returns the generated line and column information for the original source,
+ * line, and column positions provided. The only argument is an object with
+ * the following properties:
+ *
+ * - source: The filename of the original source.
+ * - line: The line number in the original source.
+ * - column: The column number in the original source.
+ *
+ * and an object is returned with the following properties:
+ *
+ * - line: The line number in the generated source, or null.
+ * - column: The column number in the generated source, or null.
+ */
+ IndexedSourceMapConsumer.prototype.generatedPositionFor =
+ function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {
+ for (var i = 0; i < this._sections.length; i++) {
+ var section = this._sections[i];
+
+ // Only consider this section if the requested source is in the list of
+ // sources of the consumer.
+ if (section.consumer.sources.indexOf(util.getArg(aArgs, 'source')) === -1) {
+ continue;
+ }
+ var generatedPosition = section.consumer.generatedPositionFor(aArgs);
+ if (generatedPosition) {
+ var ret = {
+ line: generatedPosition.line +
+ (section.generatedOffset.generatedLine - 1),
+ column: generatedPosition.column +
+ (section.generatedOffset.generatedLine === generatedPosition.line
+ ? section.generatedOffset.generatedColumn - 1
+ : 0)
+ };
+ return ret;
+ }
+ }
+
+ return {
+ line: null,
+ column: null
+ };
+ };
+
+ /**
+ * Parse the mappings in a string in to a data structure which we can easily
+ * query (the ordered arrays in the `this.__generatedMappings` and
+ * `this.__originalMappings` properties).
+ */
+ IndexedSourceMapConsumer.prototype._parseMappings =
+ function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {
+ this.__generatedMappings = [];
+ this.__originalMappings = [];
+ for (var i = 0; i < this._sections.length; i++) {
+ var section = this._sections[i];
+ var sectionMappings = section.consumer._generatedMappings;
+ for (var j = 0; j < sectionMappings.length; j++) {
+ var mapping = sectionMappings[j];
+
+ var source = section.consumer._sources.at(mapping.source);
+ if (section.consumer.sourceRoot !== null) {
+ source = util.join(section.consumer.sourceRoot, source);
+ }
+ this._sources.add(source);
+ source = this._sources.indexOf(source);
+
+ var name = section.consumer._names.at(mapping.name);
+ this._names.add(name);
+ name = this._names.indexOf(name);
+
+ // The mappings coming from the consumer for the section have
+ // generated positions relative to the start of the section, so we
+ // need to offset them to be relative to the start of the concatenated
+ // generated file.
+ var adjustedMapping = {
+ source: source,
+ generatedLine: mapping.generatedLine +
+ (section.generatedOffset.generatedLine - 1),
+ generatedColumn: mapping.generatedColumn +
+ (section.generatedOffset.generatedLine === mapping.generatedLine
+ ? section.generatedOffset.generatedColumn - 1
+ : 0),
+ originalLine: mapping.originalLine,
+ originalColumn: mapping.originalColumn,
+ name: name
+ };
+
+ this.__generatedMappings.push(adjustedMapping);
+ if (typeof adjustedMapping.originalLine === 'number') {
+ this.__originalMappings.push(adjustedMapping);
+ }
+ }
+ }
+
+ quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);
+ quickSort(this.__originalMappings, util.compareByOriginalPositions);
+ };
+
+ exports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;
+ }
+
+
+/***/ },
+/* 8 */
+/***/ function(module, exports) {
+
+ /* -*- Mode: js; js-indent-level: 2; -*- */
+ /*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+ {
+ exports.GREATEST_LOWER_BOUND = 1;
+ exports.LEAST_UPPER_BOUND = 2;
+
+ /**
+ * Recursive implementation of binary search.
+ *
+ * @param aLow Indices here and lower do not contain the needle.
+ * @param aHigh Indices here and higher do not contain the needle.
+ * @param aNeedle The element being searched for.
+ * @param aHaystack The non-empty array being searched.
+ * @param aCompare Function which takes two elements and returns -1, 0, or 1.
+ * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or
+ * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the
+ * closest element that is smaller than or greater than the one we are
+ * searching for, respectively, if the exact element cannot be found.
+ */
+ function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {
+ // This function terminates when one of the following is true:
+ //
+ // 1. We find the exact element we are looking for.
+ //
+ // 2. We did not find the exact element, but we can return the index of
+ // the next-closest element.
+ //
+ // 3. We did not find the exact element, and there is no next-closest
+ // element than the one we are searching for, so we return -1.
+ var mid = Math.floor((aHigh - aLow) / 2) + aLow;
+ var cmp = aCompare(aNeedle, aHaystack[mid], true);
+ if (cmp === 0) {
+ // Found the element we are looking for.
+ return mid;
+ }
+ else if (cmp > 0) {
+ // Our needle is greater than aHaystack[mid].
+ if (aHigh - mid > 1) {
+ // The element is in the upper half.
+ return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);
+ }
+
+ // The exact needle element was not found in this haystack. Determine if
+ // we are in termination case (3) or (2) and return the appropriate thing.
+ if (aBias == exports.LEAST_UPPER_BOUND) {
+ return aHigh < aHaystack.length ? aHigh : -1;
+ } else {
+ return mid;
+ }
+ }
+ else {
+ // Our needle is less than aHaystack[mid].
+ if (mid - aLow > 1) {
+ // The element is in the lower half.
+ return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);
+ }
+
+ // we are in termination case (3) or (2) and return the appropriate thing.
+ if (aBias == exports.LEAST_UPPER_BOUND) {
+ return mid;
+ } else {
+ return aLow < 0 ? -1 : aLow;
+ }
+ }
+ }
+
+ /**
+ * This is an implementation of binary search which will always try and return
+ * the index of the closest element if there is no exact hit. This is because
+ * mappings between original and generated line/col pairs are single points,
+ * and there is an implicit region between each of them, so a miss just means
+ * that you aren't on the very start of a region.
+ *
+ * @param aNeedle The element you are looking for.
+ * @param aHaystack The array that is being searched.
+ * @param aCompare A function which takes the needle and an element in the
+ * array and returns -1, 0, or 1 depending on whether the needle is less
+ * than, equal to, or greater than the element, respectively.
+ * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or
+ * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the
+ * closest element that is smaller than or greater than the one we are
+ * searching for, respectively, if the exact element cannot be found.
+ * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.
+ */
+ exports.search = function search(aNeedle, aHaystack, aCompare, aBias) {
+ if (aHaystack.length === 0) {
+ return -1;
+ }
+
+ var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,
+ aCompare, aBias || exports.GREATEST_LOWER_BOUND);
+ if (index < 0) {
+ return -1;
+ }
+
+ // We have found either the exact element, or the next-closest element than
+ // the one we are searching for. However, there may be more than one such
+ // element. Make sure we always return the smallest of these.
+ while (index - 1 >= 0) {
+ if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {
+ break;
+ }
+ --index;
+ }
+
+ return index;
+ };
+ }
+
+
+/***/ },
+/* 9 */
+/***/ function(module, exports) {
+
+ /* -*- Mode: js; js-indent-level: 2; -*- */
+ /*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+ {
+ // It turns out that some (most?) JavaScript engines don't self-host
+ // `Array.prototype.sort`. This makes sense because C++ will likely remain
+ // faster than JS when doing raw CPU-intensive sorting. However, when using a
+ // custom comparator function, calling back and forth between the VM's C++ and
+ // JIT'd JS is rather slow *and* loses JIT type information, resulting in
+ // worse generated code for the comparator function than would be optimal. In
+ // fact, when sorting with a comparator, these costs outweigh the benefits of
+ // sorting in C++. By using our own JS-implemented Quick Sort (below), we get
+ // a ~3500ms mean speed-up in `bench/bench.html`.
+
+ /**
+ * Swap the elements indexed by `x` and `y` in the array `ary`.
+ *
+ * @param {Array} ary
+ * The array.
+ * @param {Number} x
+ * The index of the first item.
+ * @param {Number} y
+ * The index of the second item.
+ */
+ function swap(ary, x, y) {
+ var temp = ary[x];
+ ary[x] = ary[y];
+ ary[y] = temp;
+ }
+
+ /**
+ * Returns a random integer within the range `low .. high` inclusive.
+ *
+ * @param {Number} low
+ * The lower bound on the range.
+ * @param {Number} high
+ * The upper bound on the range.
+ */
+ function randomIntInRange(low, high) {
+ return Math.round(low + (Math.random() * (high - low)));
+ }
+
+ /**
+ * The Quick Sort algorithm.
+ *
+ * @param {Array} ary
+ * An array to sort.
+ * @param {function} comparator
+ * Function to use to compare two items.
+ * @param {Number} p
+ * Start index of the array
+ * @param {Number} r
+ * End index of the array
+ */
+ function doQuickSort(ary, comparator, p, r) {
+ // If our lower bound is less than our upper bound, we (1) partition the
+ // array into two pieces and (2) recurse on each half. If it is not, this is
+ // the empty array and our base case.
+
+ if (p < r) {
+ // (1) Partitioning.
+ //
+ // The partitioning chooses a pivot between `p` and `r` and moves all
+ // elements that are less than or equal to the pivot to the before it, and
+ // all the elements that are greater than it after it. The effect is that
+ // once partition is done, the pivot is in the exact place it will be when
+ // the array is put in sorted order, and it will not need to be moved
+ // again. This runs in O(n) time.
+
+ // Always choose a random pivot so that an input array which is reverse
+ // sorted does not cause O(n^2) running time.
+ var pivotIndex = randomIntInRange(p, r);
+ var i = p - 1;
+
+ swap(ary, pivotIndex, r);
+ var pivot = ary[r];
+
+ // Immediately after `j` is incremented in this loop, the following hold
+ // true:
+ //
+ // * Every element in `ary[p .. i]` is less than or equal to the pivot.
+ //
+ // * Every element in `ary[i+1 .. j-1]` is greater than the pivot.
+ for (var j = p; j < r; j++) {
+ if (comparator(ary[j], pivot) <= 0) {
+ i += 1;
+ swap(ary, i, j);
+ }
+ }
+
+ swap(ary, i + 1, j);
+ var q = i + 1;
+
+ // (2) Recurse on each half.
+
+ doQuickSort(ary, comparator, p, q - 1);
+ doQuickSort(ary, comparator, q + 1, r);
+ }
+ }
+
+ /**
+ * Sort the given array in-place with the given comparator function.
+ *
+ * @param {Array} ary
+ * An array to sort.
+ * @param {function} comparator
+ * Function to use to compare two items.
+ */
+ exports.quickSort = function (ary, comparator) {
+ doQuickSort(ary, comparator, 0, ary.length - 1);
+ };
+ }
+
+
+/***/ },
+/* 10 */
+/***/ function(module, exports, __webpack_require__) {
+
+ /* -*- Mode: js; js-indent-level: 2; -*- */
+ /*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+ {
+ var SourceMapGenerator = __webpack_require__(1).SourceMapGenerator;
+ var util = __webpack_require__(4);
+
+ // Matches a Windows-style `\r\n` newline or a `\n` newline used by all other
+ // operating systems these days (capturing the result).
+ var REGEX_NEWLINE = /(\r?\n)/;
+
+ // Newline character code for charCodeAt() comparisons
+ var NEWLINE_CODE = 10;
+
+ // Private symbol for identifying `SourceNode`s when multiple versions of
+ // the source-map library are loaded. This MUST NOT CHANGE across
+ // versions!
+ var isSourceNode = "$$$isSourceNode$$$";
+
+ /**
+ * SourceNodes provide a way to abstract over interpolating/concatenating
+ * snippets of generated JavaScript source code while maintaining the line and
+ * column information associated with the original source code.
+ *
+ * @param aLine The original line number.
+ * @param aColumn The original column number.
+ * @param aSource The original source's filename.
+ * @param aChunks Optional. An array of strings which are snippets of
+ * generated JS, or other SourceNodes.
+ * @param aName The original identifier.
+ */
+ function SourceNode(aLine, aColumn, aSource, aChunks, aName) {
+ this.children = [];
+ this.sourceContents = {};
+ this.line = aLine == null ? null : aLine;
+ this.column = aColumn == null ? null : aColumn;
+ this.source = aSource == null ? null : aSource;
+ this.name = aName == null ? null : aName;
+ this[isSourceNode] = true;
+ if (aChunks != null) this.add(aChunks);
+ }
+
+ /**
+ * Creates a SourceNode from generated code and a SourceMapConsumer.
+ *
+ * @param aGeneratedCode The generated code
+ * @param aSourceMapConsumer The SourceMap for the generated code
+ * @param aRelativePath Optional. The path that relative sources in the
+ * SourceMapConsumer should be relative to.
+ */
+ SourceNode.fromStringWithSourceMap =
+ function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {
+ // The SourceNode we want to fill with the generated code
+ // and the SourceMap
+ var node = new SourceNode();
+
+ // All even indices of this array are one line of the generated code,
+ // while all odd indices are the newlines between two adjacent lines
+ // (since `REGEX_NEWLINE` captures its match).
+ // Processed fragments are removed from this array, by calling `shiftNextLine`.
+ var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);
+ var shiftNextLine = function() {
+ var lineContents = remainingLines.shift();
+ // The last line of a file might not have a newline.
+ var newLine = remainingLines.shift() || "";
+ return lineContents + newLine;
+ };
+
+ // We need to remember the position of "remainingLines"
+ var lastGeneratedLine = 1, lastGeneratedColumn = 0;
+
+ // The generate SourceNodes we need a code range.
+ // To extract it current and last mapping is used.
+ // Here we store the last mapping.
+ var lastMapping = null;
+
+ aSourceMapConsumer.eachMapping(function (mapping) {
+ if (lastMapping !== null) {
+ // We add the code from "lastMapping" to "mapping":
+ // First check if there is a new line in between.
+ if (lastGeneratedLine < mapping.generatedLine) {
+ // Associate first line with "lastMapping"
+ addMappingWithCode(lastMapping, shiftNextLine());
+ lastGeneratedLine++;
+ lastGeneratedColumn = 0;
+ // The remaining code is added without mapping
+ } else {
+ // There is no new line in between.
+ // Associate the code between "lastGeneratedColumn" and
+ // "mapping.generatedColumn" with "lastMapping"
+ var nextLine = remainingLines[0];
+ var code = nextLine.substr(0, mapping.generatedColumn -
+ lastGeneratedColumn);
+ remainingLines[0] = nextLine.substr(mapping.generatedColumn -
+ lastGeneratedColumn);
+ lastGeneratedColumn = mapping.generatedColumn;
+ addMappingWithCode(lastMapping, code);
+ // No more remaining code, continue
+ lastMapping = mapping;
+ return;
+ }
+ }
+ // We add the generated code until the first mapping
+ // to the SourceNode without any mapping.
+ // Each line is added as separate string.
+ while (lastGeneratedLine < mapping.generatedLine) {
+ node.add(shiftNextLine());
+ lastGeneratedLine++;
+ }
+ if (lastGeneratedColumn < mapping.generatedColumn) {
+ var nextLine = remainingLines[0];
+ node.add(nextLine.substr(0, mapping.generatedColumn));
+ remainingLines[0] = nextLine.substr(mapping.generatedColumn);
+ lastGeneratedColumn = mapping.generatedColumn;
+ }
+ lastMapping = mapping;
+ }, this);
+ // We have processed all mappings.
+ if (remainingLines.length > 0) {
+ if (lastMapping) {
+ // Associate the remaining code in the current line with "lastMapping"
+ addMappingWithCode(lastMapping, shiftNextLine());
+ }
+ // and add the remaining lines without any mapping
+ node.add(remainingLines.join(""));
+ }
+
+ // Copy sourcesContent into SourceNode
+ aSourceMapConsumer.sources.forEach(function (sourceFile) {
+ var content = aSourceMapConsumer.sourceContentFor(sourceFile);
+ if (content != null) {
+ if (aRelativePath != null) {
+ sourceFile = util.join(aRelativePath, sourceFile);
+ }
+ node.setSourceContent(sourceFile, content);
+ }
+ });
+
+ return node;
+
+ function addMappingWithCode(mapping, code) {
+ if (mapping === null || mapping.source === undefined) {
+ node.add(code);
+ } else {
+ var source = aRelativePath
+ ? util.join(aRelativePath, mapping.source)
+ : mapping.source;
+ node.add(new SourceNode(mapping.originalLine,
+ mapping.originalColumn,
+ source,
+ code,
+ mapping.name));
+ }
+ }
+ };
+
+ /**
+ * Add a chunk of generated JS to this source node.
+ *
+ * @param aChunk A string snippet of generated JS code, another instance of
+ * SourceNode, or an array where each member is one of those things.
+ */
+ SourceNode.prototype.add = function SourceNode_add(aChunk) {
+ if (Array.isArray(aChunk)) {
+ aChunk.forEach(function (chunk) {
+ this.add(chunk);
+ }, this);
+ }
+ else if (aChunk[isSourceNode] || typeof aChunk === "string") {
+ if (aChunk) {
+ this.children.push(aChunk);
+ }
+ }
+ else {
+ throw new TypeError(
+ "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk
+ );
+ }
+ return this;
+ };
+
+ /**
+ * Add a chunk of generated JS to the beginning of this source node.
+ *
+ * @param aChunk A string snippet of generated JS code, another instance of
+ * SourceNode, or an array where each member is one of those things.
+ */
+ SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {
+ if (Array.isArray(aChunk)) {
+ for (var i = aChunk.length-1; i >= 0; i--) {
+ this.prepend(aChunk[i]);
+ }
+ }
+ else if (aChunk[isSourceNode] || typeof aChunk === "string") {
+ this.children.unshift(aChunk);
+ }
+ else {
+ throw new TypeError(
+ "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk
+ );
+ }
+ return this;
+ };
+
+ /**
+ * Walk over the tree of JS snippets in this node and its children. The
+ * walking function is called once for each snippet of JS and is passed that
+ * snippet and the its original associated source's line/column location.
+ *
+ * @param aFn The traversal function.
+ */
+ SourceNode.prototype.walk = function SourceNode_walk(aFn) {
+ var chunk;
+ for (var i = 0, len = this.children.length; i < len; i++) {
+ chunk = this.children[i];
+ if (chunk[isSourceNode]) {
+ chunk.walk(aFn);
+ }
+ else {
+ if (chunk !== '') {
+ aFn(chunk, { source: this.source,
+ line: this.line,
+ column: this.column,
+ name: this.name });
+ }
+ }
+ }
+ };
+
+ /**
+ * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between
+ * each of `this.children`.
+ *
+ * @param aSep The separator.
+ */
+ SourceNode.prototype.join = function SourceNode_join(aSep) {
+ var newChildren;
+ var i;
+ var len = this.children.length;
+ if (len > 0) {
+ newChildren = [];
+ for (i = 0; i < len-1; i++) {
+ newChildren.push(this.children[i]);
+ newChildren.push(aSep);
+ }
+ newChildren.push(this.children[i]);
+ this.children = newChildren;
+ }
+ return this;
+ };
+
+ /**
+ * Call String.prototype.replace on the very right-most source snippet. Useful
+ * for trimming whitespace from the end of a source node, etc.
+ *
+ * @param aPattern The pattern to replace.
+ * @param aReplacement The thing to replace the pattern with.
+ */
+ SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {
+ var lastChild = this.children[this.children.length - 1];
+ if (lastChild[isSourceNode]) {
+ lastChild.replaceRight(aPattern, aReplacement);
+ }
+ else if (typeof lastChild === 'string') {
+ this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);
+ }
+ else {
+ this.children.push(''.replace(aPattern, aReplacement));
+ }
+ return this;
+ };
+
+ /**
+ * Set the source content for a source file. This will be added to the SourceMapGenerator
+ * in the sourcesContent field.
+ *
+ * @param aSourceFile The filename of the source file
+ * @param aSourceContent The content of the source file
+ */
+ SourceNode.prototype.setSourceContent =
+ function SourceNode_setSourceContent(aSourceFile, aSourceContent) {
+ this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;
+ };
+
+ /**
+ * Walk over the tree of SourceNodes. The walking function is called for each
+ * source file content and is passed the filename and source content.
+ *
+ * @param aFn The traversal function.
+ */
+ SourceNode.prototype.walkSourceContents =
+ function SourceNode_walkSourceContents(aFn) {
+ for (var i = 0, len = this.children.length; i < len; i++) {
+ if (this.children[i][isSourceNode]) {
+ this.children[i].walkSourceContents(aFn);
+ }
+ }
+
+ var sources = Object.keys(this.sourceContents);
+ for (var i = 0, len = sources.length; i < len; i++) {
+ aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);
+ }
+ };
+
+ /**
+ * Return the string representation of this source node. Walks over the tree
+ * and concatenates all the various snippets together to one string.
+ */
+ SourceNode.prototype.toString = function SourceNode_toString() {
+ var str = "";
+ this.walk(function (chunk) {
+ str += chunk;
+ });
+ return str;
+ };
+
+ /**
+ * Returns the string representation of this source node along with a source
+ * map.
+ */
+ SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {
+ var generated = {
+ code: "",
+ line: 1,
+ column: 0
+ };
+ var map = new SourceMapGenerator(aArgs);
+ var sourceMappingActive = false;
+ var lastOriginalSource = null;
+ var lastOriginalLine = null;
+ var lastOriginalColumn = null;
+ var lastOriginalName = null;
+ this.walk(function (chunk, original) {
+ generated.code += chunk;
+ if (original.source !== null
+ && original.line !== null
+ && original.column !== null) {
+ if(lastOriginalSource !== original.source
+ || lastOriginalLine !== original.line
+ || lastOriginalColumn !== original.column
+ || lastOriginalName !== original.name) {
+ map.addMapping({
+ source: original.source,
+ original: {
+ line: original.line,
+ column: original.column
+ },
+ generated: {
+ line: generated.line,
+ column: generated.column
+ },
+ name: original.name
+ });
+ }
+ lastOriginalSource = original.source;
+ lastOriginalLine = original.line;
+ lastOriginalColumn = original.column;
+ lastOriginalName = original.name;
+ sourceMappingActive = true;
+ } else if (sourceMappingActive) {
+ map.addMapping({
+ generated: {
+ line: generated.line,
+ column: generated.column
+ }
+ });
+ lastOriginalSource = null;
+ sourceMappingActive = false;
+ }
+ for (var idx = 0, length = chunk.length; idx < length; idx++) {
+ if (chunk.charCodeAt(idx) === NEWLINE_CODE) {
+ generated.line++;
+ generated.column = 0;
+ // Mappings end at eol
+ if (idx + 1 === length) {
+ lastOriginalSource = null;
+ sourceMappingActive = false;
+ } else if (sourceMappingActive) {
+ map.addMapping({
+ source: original.source,
+ original: {
+ line: original.line,
+ column: original.column
+ },
+ generated: {
+ line: generated.line,
+ column: generated.column
+ },
+ name: original.name
+ });
+ }
+ } else {
+ generated.column++;
+ }
+ }
+ });
+ this.walkSourceContents(function (sourceFile, sourceContent) {
+ map.setSourceContent(sourceFile, sourceContent);
+ });
+
+ return { code: generated.code, map: map };
+ };
+
+ exports.SourceNode = SourceNode;
+ }
+
+
+/***/ }
+/******/ ])
+});
+;
\ No newline at end of file
diff --git a/node_modules/babel-core/node_modules/source-map/dist/source-map.min.js b/node_modules/babel-core/node_modules/source-map/dist/source-map.min.js
new file mode 100644
index 0000000..3de3bd2
--- /dev/null
+++ b/node_modules/babel-core/node_modules/source-map/dist/source-map.min.js
@@ -0,0 +1,2 @@
+!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n():"function"==typeof define&&define.amd?define([],n):"object"==typeof exports?exports.sourceMap=n():e.sourceMap=n()}(this,function(){return function(e){function n(t){if(r[t])return r[t].exports;var o=r[t]={exports:{},id:t,loaded:!1};return e[t].call(o.exports,o,o.exports,n),o.loaded=!0,o.exports}var r={};return n.m=e,n.c=r,n.p="",n(0)}([function(e,n,r){n.SourceMapGenerator=r(1).SourceMapGenerator,n.SourceMapConsumer=r(7).SourceMapConsumer,n.SourceNode=r(10).SourceNode},function(e,n,r){function t(e){e||(e={}),this._file=i.getArg(e,"file",null),this._sourceRoot=i.getArg(e,"sourceRoot",null),this._skipValidation=i.getArg(e,"skipValidation",!1),this._sources=new s,this._names=new s,this._mappings=new a,this._sourcesContents=null}var o=r(2),i=r(4),s=r(5).ArraySet,a=r(6).MappingList;t.prototype._version=3,t.fromSourceMap=function(e){var n=e.sourceRoot,r=new t({file:e.file,sourceRoot:n});return e.eachMapping(function(e){var t={generated:{line:e.generatedLine,column:e.generatedColumn}};null!=e.source&&(t.source=e.source,null!=n&&(t.source=i.relative(n,t.source)),t.original={line:e.originalLine,column:e.originalColumn},null!=e.name&&(t.name=e.name)),r.addMapping(t)}),e.sources.forEach(function(n){var t=e.sourceContentFor(n);null!=t&&r.setSourceContent(n,t)}),r},t.prototype.addMapping=function(e){var n=i.getArg(e,"generated"),r=i.getArg(e,"original",null),t=i.getArg(e,"source",null),o=i.getArg(e,"name",null);this._skipValidation||this._validateMapping(n,r,t,o),null==t||this._sources.has(t)||this._sources.add(t),null==o||this._names.has(o)||this._names.add(o),this._mappings.add({generatedLine:n.line,generatedColumn:n.column,originalLine:null!=r&&r.line,originalColumn:null!=r&&r.column,source:t,name:o})},t.prototype.setSourceContent=function(e,n){var r=e;null!=this._sourceRoot&&(r=i.relative(this._sourceRoot,r)),null!=n?(this._sourcesContents||(this._sourcesContents={}),this._sourcesContents[i.toSetString(r)]=n):this._sourcesContents&&(delete this._sourcesContents[i.toSetString(r)],0===Object.keys(this._sourcesContents).length&&(this._sourcesContents=null))},t.prototype.applySourceMap=function(e,n,r){var t=n;if(null==n){if(null==e.file)throw new Error('SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, or the source map\'s "file" property. Both were omitted.');t=e.file}var o=this._sourceRoot;null!=o&&(t=i.relative(o,t));var a=new s,u=new s;this._mappings.unsortedForEach(function(n){if(n.source===t&&null!=n.originalLine){var s=e.originalPositionFor({line:n.originalLine,column:n.originalColumn});null!=s.source&&(n.source=s.source,null!=r&&(n.source=i.join(r,n.source)),null!=o&&(n.source=i.relative(o,n.source)),n.originalLine=s.line,n.originalColumn=s.column,null!=s.name&&(n.name=s.name))}var l=n.source;null==l||a.has(l)||a.add(l);var c=n.name;null==c||u.has(c)||u.add(c)},this),this._sources=a,this._names=u,e.sources.forEach(function(n){var t=e.sourceContentFor(n);null!=t&&(null!=r&&(n=i.join(r,n)),null!=o&&(n=i.relative(o,n)),this.setSourceContent(n,t))},this)},t.prototype._validateMapping=function(e,n,r,t){if((!(e&&"line"in e&&"column"in e&&e.line>0&&e.column>=0)||n||r||t)&&!(e&&"line"in e&&"column"in e&&n&&"line"in n&&"column"in n&&e.line>0&&e.column>=0&&n.line>0&&n.column>=0&&r))throw new Error("Invalid mapping: "+JSON.stringify({generated:e,source:r,original:n,name:t}))},t.prototype._serializeMappings=function(){for(var e,n,r,t=0,s=1,a=0,u=0,l=0,c=0,g="",p=this._mappings.toArray(),h=0,f=p.length;f>h;h++){if(e=p[h],e.generatedLine!==s)for(t=0;e.generatedLine!==s;)g+=";",s++;else if(h>0){if(!i.compareByGeneratedPositionsInflated(e,p[h-1]))continue;g+=","}g+=o.encode(e.generatedColumn-t),t=e.generatedColumn,null!=e.source&&(r=this._sources.indexOf(e.source),g+=o.encode(r-c),c=r,g+=o.encode(e.originalLine-1-u),u=e.originalLine-1,g+=o.encode(e.originalColumn-a),a=e.originalColumn,null!=e.name&&(n=this._names.indexOf(e.name),g+=o.encode(n-l),l=n))}return g},t.prototype._generateSourcesContent=function(e,n){return e.map(function(e){if(!this._sourcesContents)return null;null!=n&&(e=i.relative(n,e));var r=i.toSetString(e);return Object.prototype.hasOwnProperty.call(this._sourcesContents,r)?this._sourcesContents[r]:null},this)},t.prototype.toJSON=function(){var e={version:this._version,sources:this._sources.toArray(),names:this._names.toArray(),mappings:this._serializeMappings()};return null!=this._file&&(e.file=this._file),null!=this._sourceRoot&&(e.sourceRoot=this._sourceRoot),this._sourcesContents&&(e.sourcesContent=this._generateSourcesContent(e.sources,e.sourceRoot)),e},t.prototype.toString=function(){return JSON.stringify(this.toJSON())},n.SourceMapGenerator=t},function(e,n,r){function t(e){return 0>e?(-e<<1)+1:(e<<1)+0}function o(e){var n=1===(1&e),r=e>>1;return n?-r:r}var i=r(3),s=5,a=1<>>=s,o>0&&(n|=l),r+=i.encode(n);while(o>0);return r},n.decode=function(e,n,r){var t,a,c=e.length,g=0,p=0;do{if(n>=c)throw new Error("Expected more digits in base 64 VLQ value.");if(a=i.decode(e.charCodeAt(n++)),-1===a)throw new Error("Invalid base64 digit: "+e.charAt(n-1));t=!!(a&l),a&=u,g+=a< =0&&e=n&&r>=e?e-n:e>=t&&o>=e?e-t+l:e>=i&&s>=e?e-i+c:e==a?62:e==u?63:-1}},function(e,n){function r(e,n,r){if(n in e)return e[n];if(3===arguments.length)return r;throw new Error('"'+n+'" is a required argument.')}function t(e){var n=e.match(f);return n?{scheme:n[1],auth:n[2],host:n[3],port:n[4],path:n[5]}:null}function o(e){var n="";return e.scheme&&(n+=e.scheme+":"),n+="//",e.auth&&(n+=e.auth+"@"),e.host&&(n+=e.host),e.port&&(n+=":"+e.port),e.path&&(n+=e.path),n}function i(e){var r=e,i=t(e);if(i){if(!i.path)return e;r=i.path}for(var s,a=n.isAbsolute(r),u=r.split(/\/+/),l=0,c=u.length-1;c>=0;c--)s=u[c],"."===s?u.splice(c,1):".."===s?l++:l>0&&(""===s?(u.splice(c+1,l),l=0):(u.splice(c,2),l--));return r=u.join("/"),""===r&&(r=a?"/":"."),i?(i.path=r,o(i)):r}function s(e,n){""===e&&(e="."),""===n&&(n=".");var r=t(n),s=t(e);if(s&&(e=s.path||"/"),r&&!r.scheme)return s&&(r.scheme=s.scheme),o(r);if(r||n.match(d))return n;if(s&&!s.host&&!s.path)return s.host=n,o(s);var a="/"===n.charAt(0)?n:i(e.replace(/\/+$/,"")+"/"+n);return s?(s.path=a,o(s)):a}function a(e,n){""===e&&(e="."),e=e.replace(/\/$/,"");for(var r=0;0!==n.indexOf(e+"/");){var t=e.lastIndexOf("/");if(0>t)return n;if(e=e.slice(0,t),e.match(/^([^\/]+:\/)?\/*$/))return n;++r}return Array(r+1).join("../")+n.substr(e.length+1)}function u(e){return"$"+e}function l(e){return e.substr(1)}function c(e,n,r){var t=e.source-n.source;return 0!==t?t:(t=e.originalLine-n.originalLine,0!==t?t:(t=e.originalColumn-n.originalColumn,0!==t||r?t:(t=e.generatedColumn-n.generatedColumn,0!==t?t:(t=e.generatedLine-n.generatedLine,0!==t?t:e.name-n.name))))}function g(e,n,r){var t=e.generatedLine-n.generatedLine;return 0!==t?t:(t=e.generatedColumn-n.generatedColumn,0!==t||r?t:(t=e.source-n.source,0!==t?t:(t=e.originalLine-n.originalLine,0!==t?t:(t=e.originalColumn-n.originalColumn,0!==t?t:e.name-n.name))))}function p(e,n){return e===n?0:e>n?1:-1}function h(e,n){var r=e.generatedLine-n.generatedLine;return 0!==r?r:(r=e.generatedColumn-n.generatedColumn,0!==r?r:(r=p(e.source,n.source),0!==r?r:(r=e.originalLine-n.originalLine,0!==r?r:(r=e.originalColumn-n.originalColumn,0!==r?r:p(e.name,n.name)))))}n.getArg=r;var f=/^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.]*)(?::(\d+))?(\S*)$/,d=/^data:.+\,.+$/;n.urlParse=t,n.urlGenerate=o,n.normalize=i,n.join=s,n.isAbsolute=function(e){return"/"===e.charAt(0)||!!e.match(f)},n.relative=a,n.toSetString=u,n.fromSetString=l,n.compareByOriginalPositions=c,n.compareByGeneratedPositionsDeflated=g,n.compareByGeneratedPositionsInflated=h},function(e,n,r){function t(){this._array=[],this._set={}}var o=r(4);t.fromArray=function(e,n){for(var r=new t,o=0,i=e.length;i>o;o++)r.add(e[o],n);return r},t.prototype.size=function(){return Object.getOwnPropertyNames(this._set).length},t.prototype.add=function(e,n){var r=o.toSetString(e),t=this._set.hasOwnProperty(r),i=this._array.length;(!t||n)&&this._array.push(e),t||(this._set[r]=i)},t.prototype.has=function(e){var n=o.toSetString(e);return this._set.hasOwnProperty(n)},t.prototype.indexOf=function(e){var n=o.toSetString(e);if(this._set.hasOwnProperty(n))return this._set[n];throw new Error('"'+e+'" is not in the set.')},t.prototype.at=function(e){if(e>=0&&er||t==r&&s>=o||i.compareByGeneratedPositionsInflated(e,n)<=0}function o(){this._array=[],this._sorted=!0,this._last={generatedLine:-1,generatedColumn:0}}var i=r(4);o.prototype.unsortedForEach=function(e,n){this._array.forEach(e,n)},o.prototype.add=function(e){t(this._last,e)?(this._last=e,this._array.push(e)):(this._sorted=!1,this._array.push(e))},o.prototype.toArray=function(){return this._sorted||(this._array.sort(i.compareByGeneratedPositionsInflated),this._sorted=!0),this._array},n.MappingList=o},function(e,n,r){function t(e){var n=e;return"string"==typeof e&&(n=JSON.parse(e.replace(/^\)\]\}'/,""))),null!=n.sections?new s(n):new o(n)}function o(e){var n=e;"string"==typeof e&&(n=JSON.parse(e.replace(/^\)\]\}'/,"")));var r=a.getArg(n,"version"),t=a.getArg(n,"sources"),o=a.getArg(n,"names",[]),i=a.getArg(n,"sourceRoot",null),s=a.getArg(n,"sourcesContent",null),u=a.getArg(n,"mappings"),c=a.getArg(n,"file",null);if(r!=this._version)throw new Error("Unsupported version: "+r);t=t.map(a.normalize).map(function(e){return i&&a.isAbsolute(i)&&a.isAbsolute(e)?a.relative(i,e):e}),this._names=l.fromArray(o,!0),this._sources=l.fromArray(t,!0),this.sourceRoot=i,this.sourcesContent=s,this._mappings=u,this.file=c}function i(){this.generatedLine=0,this.generatedColumn=0,this.source=null,this.originalLine=null,this.originalColumn=null,this.name=null}function s(e){var n=e;"string"==typeof e&&(n=JSON.parse(e.replace(/^\)\]\}'/,"")));var r=a.getArg(n,"version"),o=a.getArg(n,"sections");if(r!=this._version)throw new Error("Unsupported version: "+r);this._sources=new l,this._names=new l;var i={line:-1,column:0};this._sections=o.map(function(e){if(e.url)throw new Error("Support for url field in sections not implemented.");var n=a.getArg(e,"offset"),r=a.getArg(n,"line"),o=a.getArg(n,"column");if(r=0){var i=this._originalMappings[o];if(void 0===e.column)for(var s=i.originalLine;i&&i.originalLine===s;)t.push({line:a.getArg(i,"generatedLine",null),column:a.getArg(i,"generatedColumn",null),lastColumn:a.getArg(i,"lastGeneratedColumn",null)}),i=this._originalMappings[++o];else for(var l=i.originalColumn;i&&i.originalLine===n&&i.originalColumn==l;)t.push({line:a.getArg(i,"generatedLine",null),column:a.getArg(i,"generatedColumn",null),lastColumn:a.getArg(i,"lastGeneratedColumn",null)}),i=this._originalMappings[++o]}return t},n.SourceMapConsumer=t,o.prototype=Object.create(t.prototype),o.prototype.consumer=t,o.fromSourceMap=function(e){var n=Object.create(o.prototype),r=n._names=l.fromArray(e._names.toArray(),!0),t=n._sources=l.fromArray(e._sources.toArray(),!0);n.sourceRoot=e._sourceRoot,n.sourcesContent=e._generateSourcesContent(n._sources.toArray(),n.sourceRoot),n.file=e._file;for(var s=e._mappings.toArray().slice(),u=n.__generatedMappings=[],c=n.__originalMappings=[],p=0,h=s.length;h>p;p++){var f=s[p],d=new i;d.generatedLine=f.generatedLine,d.generatedColumn=f.generatedColumn,f.source&&(d.source=t.indexOf(f.source),d.originalLine=f.originalLine,d.originalColumn=f.originalColumn,f.name&&(d.name=r.indexOf(f.name)),c.push(d)),u.push(d)}return g(n.__originalMappings,a.compareByOriginalPositions),n},o.prototype._version=3,Object.defineProperty(o.prototype,"sources",{get:function(){return this._sources.toArray().map(function(e){return null!=this.sourceRoot?a.join(this.sourceRoot,e):e},this)}}),o.prototype._parseMappings=function(e,n){for(var r,t,o,s,u,l=1,p=0,h=0,f=0,d=0,m=0,_=e.length,v=0,y={},C={},A=[],S=[];_>v;)if(";"===e.charAt(v))l++,v++,p=0;else if(","===e.charAt(v))v++;else{for(r=new i,r.generatedLine=l,s=v;_>s&&!this._charIsMappingSeparator(e,s);s++);if(t=e.slice(v,s),o=y[t])v+=t.length;else{for(o=[];s>v;)c.decode(e,v,C),u=C.value,v=C.rest,o.push(u);if(2===o.length)throw new Error("Found a source, but no line and column");if(3===o.length)throw new Error("Found a source and line, but no column");y[t]=o}r.generatedColumn=p+o[0],p=r.generatedColumn,o.length>1&&(r.source=d+o[1],d+=o[1],r.originalLine=h+o[2],h=r.originalLine,r.originalLine+=1,r.originalColumn=f+o[3],f=r.originalColumn,o.length>4&&(r.name=m+o[4],m+=o[4])),S.push(r),"number"==typeof r.originalLine&&A.push(r)}g(S,a.compareByGeneratedPositionsDeflated),this.__generatedMappings=S,g(A,a.compareByOriginalPositions),this.__originalMappings=A},o.prototype._findMapping=function(e,n,r,t,o,i){if(e[r]<=0)throw new TypeError("Line must be greater than or equal to 1, got "+e[r]);if(e[t]<0)throw new TypeError("Column must be greater than or equal to 0, got "+e[t]);return u.search(e,n,o,i)},o.prototype.computeColumnSpans=function(){for(var e=0;e=0){var o=this._generatedMappings[r];if(o.generatedLine===n.generatedLine){var i=a.getArg(o,"source",null);null!==i&&(i=this._sources.at(i),null!=this.sourceRoot&&(i=a.join(this.sourceRoot,i)));var s=a.getArg(o,"name",null);return null!==s&&(s=this._names.at(s)),{source:i,line:a.getArg(o,"originalLine",null),column:a.getArg(o,"originalColumn",null),name:s}}}return{source:null,line:null,column:null,name:null}},o.prototype.hasContentsOfAllSources=function(){return this.sourcesContent?this.sourcesContent.length>=this._sources.size()&&!this.sourcesContent.some(function(e){return null==e}):!1},o.prototype.sourceContentFor=function(e,n){if(!this.sourcesContent)return null;if(null!=this.sourceRoot&&(e=a.relative(this.sourceRoot,e)),this._sources.has(e))return this.sourcesContent[this._sources.indexOf(e)];var r;if(null!=this.sourceRoot&&(r=a.urlParse(this.sourceRoot))){var t=e.replace(/^file:\/\//,"");if("file"==r.scheme&&this._sources.has(t))return this.sourcesContent[this._sources.indexOf(t)];if((!r.path||"/"==r.path)&&this._sources.has("/"+e))return this.sourcesContent[this._sources.indexOf("/"+e)]}if(n)return null;throw new Error('"'+e+'" is not in the SourceMap.')},o.prototype.generatedPositionFor=function(e){var n=a.getArg(e,"source");if(null!=this.sourceRoot&&(n=a.relative(this.sourceRoot,n)),!this._sources.has(n))return{line:null,column:null,lastColumn:null};n=this._sources.indexOf(n);var r={source:n,originalLine:a.getArg(e,"line"),originalColumn:a.getArg(e,"column")},o=this._findMapping(r,this._originalMappings,"originalLine","originalColumn",a.compareByOriginalPositions,a.getArg(e,"bias",t.GREATEST_LOWER_BOUND));if(o>=0){var i=this._originalMappings[o];if(i.source===r.source)return{line:a.getArg(i,"generatedLine",null),column:a.getArg(i,"generatedColumn",null),lastColumn:a.getArg(i,"lastGeneratedColumn",null)}}return{line:null,column:null,lastColumn:null}},n.BasicSourceMapConsumer=o,s.prototype=Object.create(t.prototype),s.prototype.constructor=t,s.prototype._version=3,Object.defineProperty(s.prototype,"sources",{get:function(){for(var e=[],n=0;n0?t-u>1?r(u,t,o,i,s,a):a==n.LEAST_UPPER_BOUND?t1?r(e,u,o,i,s,a):a==n.LEAST_UPPER_BOUND?u:0>e?-1:e}n.GREATEST_LOWER_BOUND=1,n.LEAST_UPPER_BOUND=2,n.search=function(e,t,o,i){if(0===t.length)return-1;var s=r(-1,t.length,e,t,o,i||n.GREATEST_LOWER_BOUND);if(0>s)return-1;for(;s-1>=0&&0===o(t[s],t[s-1],!0);)--s;return s}},function(e,n){function r(e,n,r){var t=e[n];e[n]=e[r],e[r]=t}function t(e,n){return Math.round(e+Math.random()*(n-e))}function o(e,n,i,s){if(s>i){var a=t(i,s),u=i-1;r(e,a,s);for(var l=e[s],c=i;s>c;c++)n(e[c],l)<=0&&(u+=1,r(e,u,c));r(e,u+1,c);var g=u+1;o(e,n,i,g-1),o(e,n,g+1,s)}}n.quickSort=function(e,n){o(e,n,0,e.length-1)}},function(e,n,r){function t(e,n,r,t,o){this.children=[],this.sourceContents={},this.line=null==e?null:e,this.column=null==n?null:n,this.source=null==r?null:r,this.name=null==o?null:o,this[u]=!0,null!=t&&this.add(t)}var o=r(1).SourceMapGenerator,i=r(4),s=/(\r?\n)/,a=10,u="$$$isSourceNode$$$";t.fromStringWithSourceMap=function(e,n,r){function o(e,n){if(null===e||void 0===e.source)a.add(n);else{var o=r?i.join(r,e.source):e.source;a.add(new t(e.originalLine,e.originalColumn,o,n,e.name))}}var a=new t,u=e.split(s),l=function(){var e=u.shift(),n=u.shift()||"";return e+n},c=1,g=0,p=null;return n.eachMapping(function(e){if(null!==p){if(!(c0&&(p&&o(p,l()),a.add(u.join(""))),n.sources.forEach(function(e){var t=n.sourceContentFor(e);null!=t&&(null!=r&&(e=i.join(r,e)),a.setSourceContent(e,t))}),a},t.prototype.add=function(e){if(Array.isArray(e))e.forEach(function(e){this.add(e)},this);else{if(!e[u]&&"string"!=typeof e)throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+e);e&&this.children.push(e)}return this},t.prototype.prepend=function(e){if(Array.isArray(e))for(var n=e.length-1;n>=0;n--)this.prepend(e[n]);else{if(!e[u]&&"string"!=typeof e)throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+e);this.children.unshift(e)}return this},t.prototype.walk=function(e){for(var n,r=0,t=this.children.length;t>r;r++)n=this.children[r],n[u]?n.walk(e):""!==n&&e(n,{source:this.source,line:this.line,column:this.column,name:this.name})},t.prototype.join=function(e){var n,r,t=this.children.length;if(t>0){for(n=[],r=0;t-1>r;r++)n.push(this.children[r]),n.push(e);n.push(this.children[r]),this.children=n}return this},t.prototype.replaceRight=function(e,n){var r=this.children[this.children.length-1];return r[u]?r.replaceRight(e,n):"string"==typeof r?this.children[this.children.length-1]=r.replace(e,n):this.children.push("".replace(e,n)),this},t.prototype.setSourceContent=function(e,n){this.sourceContents[i.toSetString(e)]=n},t.prototype.walkSourceContents=function(e){for(var n=0,r=this.children.length;r>n;n++)this.children[n][u]&&this.children[n].walkSourceContents(e);for(var t=Object.keys(this.sourceContents),n=0,r=t.length;r>n;n++)e(i.fromSetString(t[n]),this.sourceContents[t[n]])},t.prototype.toString=function(){var e="";return this.walk(function(n){e+=n}),e},t.prototype.toStringWithSourceMap=function(e){var n={code:"",line:1,column:0},r=new o(e),t=!1,i=null,s=null,u=null,l=null;return this.walk(function(e,o){n.code+=e,null!==o.source&&null!==o.line&&null!==o.column?((i!==o.source||s!==o.line||u!==o.column||l!==o.name)&&r.addMapping({source:o.source,original:{line:o.line,column:o.column},generated:{line:n.line,column:n.column},name:o.name}),i=o.source,s=o.line,u=o.column,l=o.name,t=!0):t&&(r.addMapping({generated:{line:n.line,column:n.column}}),i=null,t=!1);for(var c=0,g=e.length;g>c;c++)e.charCodeAt(c)===a?(n.line++,n.column=0,c+1===g?(i=null,t=!1):t&&r.addMapping({source:o.source,original:{line:o.line,column:o.column},generated:{line:n.line,column:n.column},name:o.name})):n.column++}),this.walkSourceContents(function(e,n){r.setSourceContent(e,n)}),{code:n.code,map:r}},n.SourceNode=t}])});
+//# sourceMappingURL=source-map.min.js.map
\ No newline at end of file
diff --git a/node_modules/babel-core/node_modules/source-map/dist/source-map.min.js.map b/node_modules/babel-core/node_modules/source-map/dist/source-map.min.js.map
new file mode 100644
index 0000000..8470bde
--- /dev/null
+++ b/node_modules/babel-core/node_modules/source-map/dist/source-map.min.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///source-map.min.js","webpack:///webpack/bootstrap a7d787c028005295f8d2","webpack:///./source-map.js","webpack:///./lib/source-map-generator.js","webpack:///./lib/base64-vlq.js","webpack:///./lib/base64.js","webpack:///./lib/util.js","webpack:///./lib/array-set.js","webpack:///./lib/mapping-list.js","webpack:///./lib/source-map-consumer.js","webpack:///./lib/binary-search.js","webpack:///./lib/quick-sort.js","webpack:///./lib/source-node.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","SourceMapGenerator","SourceMapConsumer","SourceNode","aArgs","_file","util","getArg","_sourceRoot","_skipValidation","_sources","ArraySet","_names","_mappings","MappingList","_sourcesContents","base64VLQ","prototype","_version","fromSourceMap","aSourceMapConsumer","sourceRoot","generator","file","eachMapping","mapping","newMapping","generated","line","generatedLine","column","generatedColumn","source","relative","original","originalLine","originalColumn","name","addMapping","sources","forEach","sourceFile","content","sourceContentFor","setSourceContent","_validateMapping","has","add","aSourceFile","aSourceContent","toSetString","Object","keys","length","applySourceMap","aSourceMapPath","Error","newSources","newNames","unsortedForEach","originalPositionFor","join","aGenerated","aOriginal","aSource","aName","JSON","stringify","_serializeMappings","nameIdx","sourceIdx","previousGeneratedColumn","previousGeneratedLine","previousOriginalColumn","previousOriginalLine","previousName","previousSource","result","mappings","toArray","i","len","compareByGeneratedPositionsInflated","encode","indexOf","_generateSourcesContent","aSources","aSourceRoot","map","key","hasOwnProperty","toJSON","version","names","sourcesContent","toString","toVLQSigned","aValue","fromVLQSigned","isNegative","shifted","base64","VLQ_BASE_SHIFT","VLQ_BASE","VLQ_BASE_MASK","VLQ_CONTINUATION_BIT","digit","encoded","vlq","decode","aStr","aIndex","aOutParam","continuation","strLen","shift","charCodeAt","charAt","value","rest","intToCharMap","split","number","TypeError","charCode","bigA","bigZ","littleA","littleZ","zero","nine","plus","slash","littleOffset","numberOffset","aDefaultValue","arguments","urlParse","aUrl","match","urlRegexp","scheme","auth","host","port","path","urlGenerate","aParsedUrl","url","normalize","aPath","part","isAbsolute","parts","up","splice","aRoot","aPathUrl","aRootUrl","dataUrlRegexp","joined","replace","level","index","lastIndexOf","slice","Array","substr","fromSetString","compareByOriginalPositions","mappingA","mappingB","onlyCompareOriginal","cmp","compareByGeneratedPositionsDeflated","onlyCompareGenerated","strcmp","aStr1","aStr2","_array","_set","fromArray","aArray","aAllowDuplicates","set","size","getOwnPropertyNames","sStr","isDuplicate","idx","push","at","aIdx","generatedPositionAfter","lineA","lineB","columnA","columnB","_sorted","_last","aCallback","aThisArg","aMapping","sort","aSourceMap","sourceMap","parse","sections","IndexedSourceMapConsumer","BasicSourceMapConsumer","Mapping","lastOffset","_sections","s","offset","offsetLine","offsetColumn","generatedOffset","consumer","binarySearch","quickSort","__generatedMappings","defineProperty","get","_parseMappings","__originalMappings","_charIsMappingSeparator","GENERATED_ORDER","ORIGINAL_ORDER","GREATEST_LOWER_BOUND","LEAST_UPPER_BOUND","aContext","aOrder","context","order","_generatedMappings","_originalMappings","allGeneratedPositionsFor","needle","_findMapping","undefined","lastColumn","create","smc","generatedMappings","destGeneratedMappings","destOriginalMappings","srcMapping","destMapping","str","segment","end","cachedSegments","temp","originalMappings","aNeedle","aMappings","aLineName","aColumnName","aComparator","aBias","search","computeColumnSpans","nextMapping","lastGeneratedColumn","Infinity","hasContentsOfAllSources","some","sc","nullOnMissing","fileUriAbsPath","generatedPositionFor","constructor","j","sectionIndex","section","bias","every","generatedPosition","ret","sectionMappings","adjustedMapping","recursiveSearch","aLow","aHigh","aHaystack","aCompare","mid","Math","floor","swap","ary","x","y","randomIntInRange","low","high","round","random","doQuickSort","comparator","r","pivotIndex","pivot","q","aLine","aColumn","aChunks","children","sourceContents","isSourceNode","REGEX_NEWLINE","NEWLINE_CODE","fromStringWithSourceMap","aGeneratedCode","aRelativePath","addMappingWithCode","code","node","remainingLines","shiftNextLine","lineContents","newLine","lastGeneratedLine","lastMapping","nextLine","aChunk","isArray","chunk","prepend","unshift","walk","aFn","aSep","newChildren","replaceRight","aPattern","aReplacement","lastChild","walkSourceContents","toStringWithSourceMap","sourceMappingActive","lastOriginalSource","lastOriginalLine","lastOriginalColumn","lastOriginalName","sourceContent"],"mappings":"CAAA,SAAAA,EAAAC,GACA,gBAAAC,UAAA,gBAAAC,QACAA,OAAAD,QAAAD,IACA,kBAAAG,gBAAAC,IACAD,UAAAH,GACA,gBAAAC,SACAA,QAAA,UAAAD,IAEAD,EAAA,UAAAC,KACCK,KAAA,WACD,MCAgB,UAAUC,GCN1B,QAAAC,GAAAC,GAGA,GAAAC,EAAAD,GACA,MAAAC,GAAAD,GAAAP,OAGA,IAAAC,GAAAO,EAAAD,IACAP,WACAS,GAAAF,EACAG,QAAA,EAUA,OANAL,GAAAE,GAAAI,KAAAV,EAAAD,QAAAC,IAAAD,QAAAM,GAGAL,EAAAS,QAAA,EAGAT,EAAAD,QAvBA,GAAAQ,KAqCA,OATAF,GAAAM,EAAAP,EAGAC,EAAAO,EAAAL,EAGAF,EAAAQ,EAAA,GAGAR,EAAA,KDgBM,SAASL,EAAQD,EAASM,GEjDhCN,EAAAe,mBAAAT,EAAA,GAAAS,mBACAf,EAAAgB,kBAAAV,EAAA,GAAAU,kBACAhB,EAAAiB,WAAAX,EAAA,IAAAW,YF6DM,SAAShB,EAAQD,EAASM,GGhDhC,QAAAS,GAAAG,GACAA,IACAA,MAEAd,KAAAe,MAAAC,EAAAC,OAAAH,EAAA,aACAd,KAAAkB,YAAAF,EAAAC,OAAAH,EAAA,mBACAd,KAAAmB,gBAAAH,EAAAC,OAAAH,EAAA,qBACAd,KAAAoB,SAAA,GAAAC,GACArB,KAAAsB,OAAA,GAAAD,GACArB,KAAAuB,UAAA,GAAAC,GACAxB,KAAAyB,iBAAA,KAvBA,GAAAC,GAAAxB,EAAA,GACAc,EAAAd,EAAA,GACAmB,EAAAnB,EAAA,GAAAmB,SACAG,EAAAtB,EAAA,GAAAsB,WAuBAb,GAAAgB,UAAAC,SAAA,EAOAjB,EAAAkB,cACA,SAAAC,GACA,GAAAC,GAAAD,EAAAC,WACAC,EAAA,GAAArB,IACAsB,KAAAH,EAAAG,KACAF,cAkCA,OAhCAD,GAAAI,YAAA,SAAAC,GACA,GAAAC,IACAC,WACAC,KAAAH,EAAAI,cACAC,OAAAL,EAAAM,iBAIA,OAAAN,EAAAO,SACAN,EAAAM,OAAAP,EAAAO,OACA,MAAAX,IACAK,EAAAM,OAAA1B,EAAA2B,SAAAZ,EAAAK,EAAAM,SAGAN,EAAAQ,UACAN,KAAAH,EAAAU,aACAL,OAAAL,EAAAW,gBAGA,MAAAX,EAAAY,OACAX,EAAAW,KAAAZ,EAAAY,OAIAf,EAAAgB,WAAAZ,KAEAN,EAAAmB,QAAAC,QAAA,SAAAC,GACA,GAAAC,GAAAtB,EAAAuB,iBAAAF,EACA,OAAAC,GACApB,EAAAsB,iBAAAH,EAAAC,KAGApB,GAaArB,EAAAgB,UAAAqB,WACA,SAAAlC,GACA,GAAAuB,GAAArB,EAAAC,OAAAH,EAAA,aACA8B,EAAA5B,EAAAC,OAAAH,EAAA,iBACA4B,EAAA1B,EAAAC,OAAAH,EAAA,eACAiC,EAAA/B,EAAAC,OAAAH,EAAA,YAEAd,MAAAmB,iBACAnB,KAAAuD,iBAAAlB,EAAAO,EAAAF,EAAAK,GAGA,MAAAL,GAAA1C,KAAAoB,SAAAoC,IAAAd,IACA1C,KAAAoB,SAAAqC,IAAAf,GAGA,MAAAK,GAAA/C,KAAAsB,OAAAkC,IAAAT,IACA/C,KAAAsB,OAAAmC,IAAAV,GAGA/C,KAAAuB,UAAAkC,KACAlB,cAAAF,EAAAC,KACAG,gBAAAJ,EAAAG,OACAK,aAAA,MAAAD,KAAAN,KACAQ,eAAA,MAAAF,KAAAJ,OACAE,SACAK,UAOApC,EAAAgB,UAAA2B,iBACA,SAAAI,EAAAC,GACA,GAAAjB,GAAAgB,CACA,OAAA1D,KAAAkB,cACAwB,EAAA1B,EAAA2B,SAAA3C,KAAAkB,YAAAwB,IAGA,MAAAiB,GAGA3D,KAAAyB,mBACAzB,KAAAyB,qBAEAzB,KAAAyB,iBAAAT,EAAA4C,YAAAlB,IAAAiB,GACO3D,KAAAyB,yBAGPzB,MAAAyB,iBAAAT,EAAA4C,YAAAlB,IACA,IAAAmB,OAAAC,KAAA9D,KAAAyB,kBAAAsC,SACA/D,KAAAyB,iBAAA,QAqBAd,EAAAgB,UAAAqC,eACA,SAAAlC,EAAA4B,EAAAO,GACA,GAAAd,GAAAO,CAEA,UAAAA,EAAA,CACA,SAAA5B,EAAAG,KACA,SAAAiC,OACA,gJAIAf,GAAArB,EAAAG,KAEA,GAAAF,GAAA/B,KAAAkB,WAEA,OAAAa,IACAoB,EAAAnC,EAAA2B,SAAAZ,EAAAoB,GAIA,IAAAgB,GAAA,GAAA9C,GACA+C,EAAA,GAAA/C,EAGArB,MAAAuB,UAAA8C,gBAAA,SAAAlC,GACA,GAAAA,EAAAO,SAAAS,GAAA,MAAAhB,EAAAU,aAAA,CAEA,GAAAD,GAAAd,EAAAwC,qBACAhC,KAAAH,EAAAU,aACAL,OAAAL,EAAAW,gBAEA,OAAAF,EAAAF,SAEAP,EAAAO,OAAAE,EAAAF,OACA,MAAAuB,IACA9B,EAAAO,OAAA1B,EAAAuD,KAAAN,EAAA9B,EAAAO,SAEA,MAAAX,IACAI,EAAAO,OAAA1B,EAAA2B,SAAAZ,EAAAI,EAAAO,SAEAP,EAAAU,aAAAD,EAAAN,KACAH,EAAAW,eAAAF,EAAAJ,OACA,MAAAI,EAAAG,OACAZ,EAAAY,KAAAH,EAAAG,OAKA,GAAAL,GAAAP,EAAAO,MACA,OAAAA,GAAAyB,EAAAX,IAAAd,IACAyB,EAAAV,IAAAf,EAGA,IAAAK,GAAAZ,EAAAY,IACA,OAAAA,GAAAqB,EAAAZ,IAAAT,IACAqB,EAAAX,IAAAV,IAGO/C,MACPA,KAAAoB,SAAA+C,EACAnE,KAAAsB,OAAA8C,EAGAtC,EAAAmB,QAAAC,QAAA,SAAAC,GACA,GAAAC,GAAAtB,EAAAuB,iBAAAF,EACA,OAAAC,IACA,MAAAa,IACAd,EAAAnC,EAAAuD,KAAAN,EAAAd,IAEA,MAAApB,IACAoB,EAAAnC,EAAA2B,SAAAZ,EAAAoB,IAEAnD,KAAAsD,iBAAAH,EAAAC,KAEOpD,OAcPW,EAAAgB,UAAA4B,iBACA,SAAAiB,EAAAC,EAAAC,EACAC,GACA,MAAAH,GAAA,QAAAA,IAAA,UAAAA,IACAA,EAAAlC,KAAA,GAAAkC,EAAAhC,QAAA,IACAiC,GAAAC,GAAAC,MAIAH,GAAA,QAAAA,IAAA,UAAAA,IACAC,GAAA,QAAAA,IAAA,UAAAA,IACAD,EAAAlC,KAAA,GAAAkC,EAAAhC,QAAA,GACAiC,EAAAnC,KAAA,GAAAmC,EAAAjC,QAAA,GACAkC,GAKA,SAAAR,OAAA,oBAAAU,KAAAC,WACAxC,UAAAmC,EACA9B,OAAAgC,EACA9B,SAAA6B,EACA1B,KAAA4B,MASAhE,EAAAgB,UAAAmD,mBACA,WAaA,OALA3C,GACA4C,EACAC,EATAC,EAAA,EACAC,EAAA,EACAC,EAAA,EACAC,EAAA,EACAC,EAAA,EACAC,EAAA,EACAC,EAAA,GAKAC,EAAAxF,KAAAuB,UAAAkE,UACAC,EAAA,EAAAC,EAAAH,EAAAzB,OAA4C4B,EAAAD,EAASA,IAAA,CAGrD,GAFAvD,EAAAqD,EAAAE,GAEAvD,EAAAI,gBAAA2C,EAEA,IADAD,EAAA,EACA9C,EAAAI,gBAAA2C,GACAK,GAAA,IACAL,QAIA,IAAAQ,EAAA,GACA,IAAA1E,EAAA4E,oCAAAzD,EAAAqD,EAAAE,EAAA,IACA,QAEAH,IAAA,IAIAA,GAAA7D,EAAAmE,OAAA1D,EAAAM,gBACAwC,GACAA,EAAA9C,EAAAM,gBAEA,MAAAN,EAAAO,SACAsC,EAAAhF,KAAAoB,SAAA0E,QAAA3D,EAAAO,QACA6C,GAAA7D,EAAAmE,OAAAb,EAAAM,GACAA,EAAAN,EAGAO,GAAA7D,EAAAmE,OAAA1D,EAAAU,aAAA,EACAuC,GACAA,EAAAjD,EAAAU,aAAA,EAEA0C,GAAA7D,EAAAmE,OAAA1D,EAAAW,eACAqC,GACAA,EAAAhD,EAAAW,eAEA,MAAAX,EAAAY,OACAgC,EAAA/E,KAAAsB,OAAAwE,QAAA3D,EAAAY,MACAwC,GAAA7D,EAAAmE,OAAAd,EAAAM,GACAA,EAAAN,IAKA,MAAAQ,IAGA5E,EAAAgB,UAAAoE,wBACA,SAAAC,EAAAC,GACA,MAAAD,GAAAE,IAAA,SAAAxD,GACA,IAAA1C,KAAAyB,iBACA,WAEA,OAAAwE,IACAvD,EAAA1B,EAAA2B,SAAAsD,EAAAvD,GAEA,IAAAyD,GAAAnF,EAAA4C,YAAAlB,EACA,OAAAmB,QAAAlC,UAAAyE,eAAA7F,KAAAP,KAAAyB,iBACA0E,GACAnG,KAAAyB,iBAAA0E,GACA,MACOnG,OAMPW,EAAAgB,UAAA0E,OACA,WACA,GAAAH,IACAI,QAAAtG,KAAA4B,SACAqB,QAAAjD,KAAAoB,SAAAqE,UACAc,MAAAvG,KAAAsB,OAAAmE,UACAD,SAAAxF,KAAA8E,qBAYA,OAVA,OAAA9E,KAAAe,QACAmF,EAAAjE,KAAAjC,KAAAe,OAEA,MAAAf,KAAAkB,cACAgF,EAAAnE,WAAA/B,KAAAkB,aAEAlB,KAAAyB,mBACAyE,EAAAM,eAAAxG,KAAA+F,wBAAAG,EAAAjD,QAAAiD,EAAAnE,aAGAmE,GAMAvF,EAAAgB,UAAA8E,SACA,WACA,MAAA7B,MAAAC,UAAA7E,KAAAqG,WAGAzG,EAAAe,sBH4EM,SAASd,EAAQD,EAASM,GIlZhC,QAAAwG,GAAAC,GACA,SAAAA,IACAA,GAAA,MACAA,GAAA,KASA,QAAAC,GAAAD,GACA,GAAAE,GAAA,OAAAF,GACAG,EAAAH,GAAA,CACA,OAAAE,IACAC,EACAA,EAhDA,GAAAC,GAAA7G,EAAA,GAcA8G,EAAA,EAGAC,EAAA,GAAAD,EAGAE,EAAAD,EAAA,EAGAE,EAAAF,CA+BArH,GAAAiG,OAAA,SAAAc,GACA,GACAS,GADAC,EAAA,GAGAC,EAAAZ,EAAAC,EAEA,GACAS,GAAAE,EAAAJ,EACAI,KAAAN,EACAM,EAAA,IAGAF,GAAAD,GAEAE,GAAAN,EAAAlB,OAAAuB,SACKE,EAAA,EAEL,OAAAD,IAOAzH,EAAA2H,OAAA,SAAAC,EAAAC,EAAAC,GACA,GAGAC,GAAAP,EAHAQ,EAAAJ,EAAAzD,OACAwB,EAAA,EACAsC,EAAA,CAGA,IACA,GAAAJ,GAAAG,EACA,SAAA1D,OAAA,6CAIA,IADAkD,EAAAL,EAAAQ,OAAAC,EAAAM,WAAAL,MACA,KAAAL,EACA,SAAAlD,OAAA,yBAAAsD,EAAAO,OAAAN,EAAA,GAGAE,MAAAP,EAAAD,GACAC,GAAAF,EACA3B,GAAA6B,GAAAS,EACAA,GAAAb,QACKW,EAELD,GAAAM,MAAApB,EAAArB,GACAmC,EAAAO,KAAAR,IJ+dM,SAAS5H,EAAQD,GKlmBvB,GAAAsI,GAAA,mEAAAC,MAAA,GAKAvI,GAAAiG,OAAA,SAAAuC,GACA,GAAAA,GAAA,GAAAA,EAAAF,EAAAnE,OACA,MAAAmE,GAAAE,EAEA,UAAAC,WAAA,6BAAAD,IAOAxI,EAAA2H,OAAA,SAAAe,GACA,GAAAC,GAAA,GACAC,EAAA,GAEAC,EAAA,GACAC,EAAA,IAEAC,EAAA,GACAC,EAAA,GAEAC,EAAA,GACAC,EAAA,GAEAC,EAAA,GACAC,EAAA,EAGA,OAAAV,IAAAC,GAAAC,GAAAF,EACAA,EAAAC,EAIAD,GAAAG,GAAAC,GAAAJ,EACAA,EAAAG,EAAAM,EAIAT,GAAAK,GAAAC,GAAAN,EACAA,EAAAK,EAAAK,EAIAV,GAAAO,EACA,GAIAP,GAAAQ,EACA,GAIA,KLknBM,SAASjJ,EAAQD,GMlqBvB,QAAAqB,GAAAH,EAAA6D,EAAAsE,GACA,GAAAtE,IAAA7D,GACA,MAAAA,GAAA6D,EACK,QAAAuE,UAAAnF,OACL,MAAAkF,EAEA,UAAA/E,OAAA,IAAAS,EAAA,6BAQA,QAAAwE,GAAAC,GACA,GAAAC,GAAAD,EAAAC,MAAAC,EACA,OAAAD,IAIAE,OAAAF,EAAA,GACAG,KAAAH,EAAA,GACAI,KAAAJ,EAAA,GACAK,KAAAL,EAAA,GACAM,KAAAN,EAAA,IAPA,KAYA,QAAAO,GAAAC,GACA,GAAAC,GAAA,EAiBA,OAhBAD,GAAAN,SACAO,GAAAD,EAAAN,OAAA,KAEAO,GAAA,KACAD,EAAAL,OACAM,GAAAD,EAAAL,KAAA,KAEAK,EAAAJ,OACAK,GAAAD,EAAAJ,MAEAI,EAAAH,OACAI,GAAA,IAAAD,EAAAH,MAEAG,EAAAF,OACAG,GAAAD,EAAAF,MAEAG,EAeA,QAAAC,GAAAC,GACA,GAAAL,GAAAK,EACAF,EAAAX,EAAAa,EACA,IAAAF,EAAA,CACA,IAAAA,EAAAH,KACA,MAAAK,EAEAL,GAAAG,EAAAH,KAKA,OAAAM,GAHAC,EAAAtK,EAAAsK,WAAAP,GAEAQ,EAAAR,EAAAxB,MAAA,OACAiC,EAAA,EAAA1E,EAAAyE,EAAApG,OAAA,EAAgD2B,GAAA,EAAQA,IACxDuE,EAAAE,EAAAzE,GACA,MAAAuE,EACAE,EAAAE,OAAA3E,EAAA,GACO,OAAAuE,EACPG,IACOA,EAAA,IACP,KAAAH,GAIAE,EAAAE,OAAA3E,EAAA,EAAA0E,GACAA,EAAA,IAEAD,EAAAE,OAAA3E,EAAA,GACA0E,KAUA,OANAT,GAAAQ,EAAA5F,KAAA,KAEA,KAAAoF,IACAA,EAAAO,EAAA,SAGAJ,GACAA,EAAAH,OACAC,EAAAE,IAEAH,EAoBA,QAAApF,GAAA+F,EAAAN,GACA,KAAAM,IACAA,EAAA,KAEA,KAAAN,IACAA,EAAA,IAEA,IAAAO,GAAApB,EAAAa,GACAQ,EAAArB,EAAAmB,EAMA,IALAE,IACAF,EAAAE,EAAAb,MAAA,KAIAY,MAAAhB,OAIA,MAHAiB,KACAD,EAAAhB,OAAAiB,EAAAjB,QAEAK,EAAAW,EAGA,IAAAA,GAAAP,EAAAX,MAAAoB,GACA,MAAAT,EAIA,IAAAQ,MAAAf,OAAAe,EAAAb,KAEA,MADAa,GAAAf,KAAAO,EACAJ,EAAAY,EAGA,IAAAE,GAAA,MAAAV,EAAAjC,OAAA,GACAiC,EACAD,EAAAO,EAAAK,QAAA,eAAAX,EAEA,OAAAQ,IACAA,EAAAb,KAAAe,EACAd,EAAAY,IAEAE,EAcA,QAAA/H,GAAA2H,EAAAN,GACA,KAAAM,IACAA,EAAA,KAGAA,IAAAK,QAAA,SAOA,KADA,GAAAC,GAAA,EACA,IAAAZ,EAAAlE,QAAAwE,EAAA,OACA,GAAAO,GAAAP,EAAAQ,YAAA,IACA,MAAAD,EACA,MAAAb,EAOA,IADAM,IAAAS,MAAA,EAAAF,GACAP,EAAAjB,MAAA,qBACA,MAAAW,KAGAY,EAIA,MAAAI,OAAAJ,EAAA,GAAArG,KAAA,OAAAyF,EAAAiB,OAAAX,EAAAvG,OAAA,GAaA,QAAAH,GAAA4D,GACA,UAAAA,EAIA,QAAA0D,GAAA1D,GACA,MAAAA,GAAAyD,OAAA,GAYA,QAAAE,GAAAC,EAAAC,EAAAC,GACA,GAAAC,GAAAH,EAAA1I,OAAA2I,EAAA3I,MACA,YAAA6I,EACAA,GAGAA,EAAAH,EAAAvI,aAAAwI,EAAAxI,aACA,IAAA0I,EACAA,GAGAA,EAAAH,EAAAtI,eAAAuI,EAAAvI,eACA,IAAAyI,GAAAD,EACAC,GAGAA,EAAAH,EAAA3I,gBAAA4I,EAAA5I,gBACA,IAAA8I,EACAA,GAGAA,EAAAH,EAAA7I,cAAA8I,EAAA9I,cACA,IAAAgJ,EACAA,EAGAH,EAAArI,KAAAsI,EAAAtI,SAaA,QAAAyI,GAAAJ,EAAAC,EAAAI,GACA,GAAAF,GAAAH,EAAA7I,cAAA8I,EAAA9I,aACA,YAAAgJ,EACAA,GAGAA,EAAAH,EAAA3I,gBAAA4I,EAAA5I,gBACA,IAAA8I,GAAAE,EACAF,GAGAA,EAAAH,EAAA1I,OAAA2I,EAAA3I,OACA,IAAA6I,EACAA,GAGAA,EAAAH,EAAAvI,aAAAwI,EAAAxI,aACA,IAAA0I,EACAA,GAGAA,EAAAH,EAAAtI,eAAAuI,EAAAvI,eACA,IAAAyI,EACAA,EAGAH,EAAArI,KAAAsI,EAAAtI,SAIA,QAAA2I,GAAAC,EAAAC,GACA,MAAAD,KAAAC,EACA,EAGAD,EAAAC,EACA,EAGA,GAOA,QAAAhG,GAAAwF,EAAAC,GACA,GAAAE,GAAAH,EAAA7I,cAAA8I,EAAA9I,aACA,YAAAgJ,EACAA,GAGAA,EAAAH,EAAA3I,gBAAA4I,EAAA5I,gBACA,IAAA8I,EACAA,GAGAA,EAAAG,EAAAN,EAAA1I,OAAA2I,EAAA3I,QACA,IAAA6I,EACAA,GAGAA,EAAAH,EAAAvI,aAAAwI,EAAAxI,aACA,IAAA0I,EACAA,GAGAA,EAAAH,EAAAtI,eAAAuI,EAAAvI,eACA,IAAAyI,EACAA,EAGAG,EAAAN,EAAArI,KAAAsI,EAAAtI,UAnVAnD,EAAAqB,QAEA,IAAAqI,GAAA,iEACAmB,EAAA,eAeA7K,GAAAuJ,WAsBAvJ,EAAAgK,cAwDAhK,EAAAmK,YA2DAnK,EAAA2E,OAEA3E,EAAAsK,WAAA,SAAAF,GACA,YAAAA,EAAAjC,OAAA,MAAAiC,EAAAX,MAAAC,IAyCA1J,EAAA+C,WAcA/C,EAAAgE,cAKAhE,EAAAsL,gBAsCAtL,EAAAuL,6BAuCAvL,EAAA4L,sCA8CA5L,EAAAgG,uCN2rBM,SAAS/F,EAAQD,EAASM,GO3hChC,QAAAmB,KACArB,KAAA6L,UACA7L,KAAA8L,QAVA,GAAA9K,GAAAd,EAAA,EAgBAmB,GAAA0K,UAAA,SAAAC,EAAAC,GAEA,OADAC,GAAA,GAAA7K,GACAqE,EAAA,EAAAC,EAAAqG,EAAAjI,OAAwC4B,EAAAD,EAASA,IACjDwG,EAAAzI,IAAAuI,EAAAtG,GAAAuG,EAEA,OAAAC,IASA7K,EAAAM,UAAAwK,KAAA,WACA,MAAAtI,QAAAuI,oBAAApM,KAAA8L,MAAA/H,QAQA1C,EAAAM,UAAA8B,IAAA,SAAA+D,EAAAyE,GACA,GAAAI,GAAArL,EAAA4C,YAAA4D,GACA8E,EAAAtM,KAAA8L,KAAA1F,eAAAiG,GACAE,EAAAvM,KAAA6L,OAAA9H,SACAuI,GAAAL,IACAjM,KAAA6L,OAAAW,KAAAhF,GAEA8E,IACAtM,KAAA8L,KAAAO,GAAAE,IASAlL,EAAAM,UAAA6B,IAAA,SAAAgE,GACA,GAAA6E,GAAArL,EAAA4C,YAAA4D,EACA,OAAAxH,MAAA8L,KAAA1F,eAAAiG,IAQAhL,EAAAM,UAAAmE,QAAA,SAAA0B,GACA,GAAA6E,GAAArL,EAAA4C,YAAA4D,EACA,IAAAxH,KAAA8L,KAAA1F,eAAAiG,GACA,MAAArM,MAAA8L,KAAAO,EAEA,UAAAnI,OAAA,IAAAsD,EAAA,yBAQAnG,EAAAM,UAAA8K,GAAA,SAAAC,GACA,GAAAA,GAAA,GAAAA,EAAA1M,KAAA6L,OAAA9H,OACA,MAAA/D,MAAA6L,OAAAa,EAEA,UAAAxI,OAAA,yBAAAwI,IAQArL,EAAAM,UAAA8D,QAAA,WACA,MAAAzF,MAAA6L,OAAAd,SAGAnL,EAAAyB,YPkjCM,SAASxB,EAAQD,EAASM,GQ3oChC,QAAAyM,GAAAvB,EAAAC,GAEA,GAAAuB,GAAAxB,EAAA7I,cACAsK,EAAAxB,EAAA9I,cACAuK,EAAA1B,EAAA3I,gBACAsK,EAAA1B,EAAA5I,eACA,OAAAoK,GAAAD,GAAAC,GAAAD,GAAAG,GAAAD,GACA9L,EAAA4E,oCAAAwF,EAAAC,IAAA,EAQA,QAAA7J,KACAxB,KAAA6L,UACA7L,KAAAgN,SAAA,EAEAhN,KAAAiN,OAAkB1K,cAAA,GAAAE,gBAAA,GAzBlB,GAAAzB,GAAAd,EAAA,EAkCAsB,GAAAG,UAAA0C,gBACA,SAAA6I,EAAAC,GACAnN,KAAA6L,OAAA3I,QAAAgK,EAAAC,IAQA3L,EAAAG,UAAA8B,IAAA,SAAA2J,GACAT,EAAA3M,KAAAiN,MAAAG,IACApN,KAAAiN,MAAAG,EACApN,KAAA6L,OAAAW,KAAAY,KAEApN,KAAAgN,SAAA,EACAhN,KAAA6L,OAAAW,KAAAY,KAaA5L,EAAAG,UAAA8D,QAAA,WAKA,MAJAzF,MAAAgN,UACAhN,KAAA6L,OAAAwB,KAAArM,EAAA4E,qCACA5F,KAAAgN,SAAA,GAEAhN,KAAA6L,QAGAjM,EAAA4B,eRgqCM,SAAS3B,EAAQD,EAASM,GSjuChC,QAAAU,GAAA0M,GACA,GAAAC,GAAAD,CAKA,OAJA,gBAAAA,KACAC,EAAA3I,KAAA4I,MAAAF,EAAA3C,QAAA,WAAwD,MAGxD,MAAA4C,EAAAE,SACA,GAAAC,GAAAH,GACA,GAAAI,GAAAJ,GAoQA,QAAAI,GAAAL,GACA,GAAAC,GAAAD,CACA,iBAAAA,KACAC,EAAA3I,KAAA4I,MAAAF,EAAA3C,QAAA,WAAwD,KAGxD,IAAArE,GAAAtF,EAAAC,OAAAsM,EAAA,WACAtK,EAAAjC,EAAAC,OAAAsM,EAAA,WAGAhH,EAAAvF,EAAAC,OAAAsM,EAAA,YACAxL,EAAAf,EAAAC,OAAAsM,EAAA,mBACA/G,EAAAxF,EAAAC,OAAAsM,EAAA,uBACA/H,EAAAxE,EAAAC,OAAAsM,EAAA,YACAtL,EAAAjB,EAAAC,OAAAsM,EAAA,YAIA,IAAAjH,GAAAtG,KAAA4B,SACA,SAAAsC,OAAA,wBAAAoC,EAGArD,KAIAiD,IAAAlF,EAAA+I,WAKA7D,IAAA,SAAAxD,GACA,MAAAX,IAAAf,EAAAkJ,WAAAnI,IAAAf,EAAAkJ,WAAAxH,GACA1B,EAAA2B,SAAAZ,EAAAW,GACAA,IAOA1C,KAAAsB,OAAAD,EAAA0K,UAAAxF,GAAA,GACAvG,KAAAoB,SAAAC,EAAA0K,UAAA9I,GAAA,GAEAjD,KAAA+B,aACA/B,KAAAwG,iBACAxG,KAAAuB,UAAAiE,EACAxF,KAAAiC,OA8EA,QAAA2L,KACA5N,KAAAuC,cAAA,EACAvC,KAAAyC,gBAAA,EACAzC,KAAA0C,OAAA,KACA1C,KAAA6C,aAAA,KACA7C,KAAA8C,eAAA,KACA9C,KAAA+C,KAAA,KAyZA,QAAA2K,GAAAJ,GACA,GAAAC,GAAAD,CACA,iBAAAA,KACAC,EAAA3I,KAAA4I,MAAAF,EAAA3C,QAAA,WAAwD,KAGxD,IAAArE,GAAAtF,EAAAC,OAAAsM,EAAA,WACAE,EAAAzM,EAAAC,OAAAsM,EAAA,WAEA,IAAAjH,GAAAtG,KAAA4B,SACA,SAAAsC,OAAA,wBAAAoC,EAGAtG,MAAAoB,SAAA,GAAAC,GACArB,KAAAsB,OAAA,GAAAD,EAEA,IAAAwM,IACAvL,KAAA,GACAE,OAAA,EAEAxC,MAAA8N,UAAAL,EAAAvH,IAAA,SAAA6H,GACA,GAAAA,EAAAjE,IAGA,SAAA5F,OAAA,qDAEA,IAAA8J,GAAAhN,EAAAC,OAAA8M,EAAA,UACAE,EAAAjN,EAAAC,OAAA+M,EAAA,QACAE,EAAAlN,EAAAC,OAAA+M,EAAA,SAEA,IAAAC,EAAAJ,EAAAvL,MACA2L,IAAAJ,EAAAvL,MAAA4L,EAAAL,EAAArL,OACA,SAAA0B,OAAA,uDAIA,OAFA2J,GAAAG,GAGAG,iBAGA5L,cAAA0L,EAAA,EACAxL,gBAAAyL,EAAA,GAEAE,SAAA,GAAAxN,GAAAI,EAAAC,OAAA8M,EAAA,WAz1BA,GAAA/M,GAAAd,EAAA,GACAmO,EAAAnO,EAAA,GACAmB,EAAAnB,EAAA,GAAAmB,SACAK,EAAAxB,EAAA,GACAoO,EAAApO,EAAA,GAAAoO,SAaA1N,GAAAiB,cAAA,SAAAyL,GACA,MAAAK,GAAA9L,cAAAyL,IAMA1M,EAAAe,UAAAC,SAAA,EAgCAhB,EAAAe,UAAA4M,oBAAA,KACA1K,OAAA2K,eAAA5N,EAAAe,UAAA,sBACA8M,IAAA,WAKA,MAJAzO,MAAAuO,qBACAvO,KAAA0O,eAAA1O,KAAAuB,UAAAvB,KAAA+B,YAGA/B,KAAAuO,uBAIA3N,EAAAe,UAAAgN,mBAAA,KACA9K,OAAA2K,eAAA5N,EAAAe,UAAA,qBACA8M,IAAA,WAKA,MAJAzO,MAAA2O,oBACA3O,KAAA0O,eAAA1O,KAAAuB,UAAAvB,KAAA+B,YAGA/B,KAAA2O,sBAIA/N,EAAAe,UAAAiN,wBACA,SAAApH,EAAAqD,GACA,GAAApK,GAAA+G,EAAAO,OAAA8C,EACA,aAAApK,GAAqB,MAAAA,GAQrBG,EAAAe,UAAA+M,eACA,SAAAlH,EAAAvB,GACA,SAAA/B,OAAA,6CAGAtD,EAAAiO,gBAAA,EACAjO,EAAAkO,eAAA,EAEAlO,EAAAmO,qBAAA,EACAnO,EAAAoO,kBAAA,EAkBApO,EAAAe,UAAAO,YACA,SAAAgL,EAAA+B,EAAAC,GACA,GAGA1J,GAHA2J,EAAAF,GAAA,KACAG,EAAAF,GAAAtO,EAAAiO,eAGA,QAAAO,GACA,IAAAxO,GAAAiO,gBACArJ,EAAAxF,KAAAqP,kBACA,MACA,KAAAzO,GAAAkO,eACAtJ,EAAAxF,KAAAsP,iBACA,MACA,SACA,SAAApL,OAAA,+BAGA,GAAAnC,GAAA/B,KAAA+B,UACAyD,GAAAU,IAAA,SAAA/D,GACA,GAAAO,GAAA,OAAAP,EAAAO,OAAA,KAAA1C,KAAAoB,SAAAqL,GAAAtK,EAAAO,OAIA,OAHA,OAAAA,GAAA,MAAAX,IACAW,EAAA1B,EAAAuD,KAAAxC,EAAAW,KAGAA,SACAH,cAAAJ,EAAAI,cACAE,gBAAAN,EAAAM,gBACAI,aAAAV,EAAAU,aACAC,eAAAX,EAAAW,eACAC,KAAA,OAAAZ,EAAAY,KAAA,KAAA/C,KAAAsB,OAAAmL,GAAAtK,EAAAY,QAEO/C,MAAAkD,QAAAgK,EAAAiC,IAsBPvO,EAAAe,UAAA4N,yBACA,SAAAzO,GACA,GAAAwB,GAAAtB,EAAAC,OAAAH,EAAA,QAMA0O,GACA9M,OAAA1B,EAAAC,OAAAH,EAAA,UACA+B,aAAAP,EACAQ,eAAA9B,EAAAC,OAAAH,EAAA,YAMA,IAHA,MAAAd,KAAA+B,aACAyN,EAAA9M,OAAA1B,EAAA2B,SAAA3C,KAAA+B,WAAAyN,EAAA9M,UAEA1C,KAAAoB,SAAAoC,IAAAgM,EAAA9M,QACA,QAEA8M,GAAA9M,OAAA1C,KAAAoB,SAAA0E,QAAA0J,EAAA9M,OAEA,IAAA8C,MAEAqF,EAAA7K,KAAAyP,aAAAD,EACAxP,KAAAsP,kBACA,eACA,iBACAtO,EAAAmK,2BACAkD,EAAAW,kBACA,IAAAnE,GAAA,GACA,GAAA1I,GAAAnC,KAAAsP,kBAAAzE,EAEA,IAAA6E,SAAA5O,EAAA0B,OAOA,IANA,GAAAK,GAAAV,EAAAU,aAMAV,KAAAU,kBACA2C,EAAAgH,MACAlK,KAAAtB,EAAAC,OAAAkB,EAAA,sBACAK,OAAAxB,EAAAC,OAAAkB,EAAA,wBACAwN,WAAA3O,EAAAC,OAAAkB,EAAA,8BAGAA,EAAAnC,KAAAsP,oBAAAzE,OASA,KANA,GAAA/H,GAAAX,EAAAW,eAMAX,GACAA,EAAAU,eAAAP,GACAH,EAAAW,mBACA0C,EAAAgH,MACAlK,KAAAtB,EAAAC,OAAAkB,EAAA,sBACAK,OAAAxB,EAAAC,OAAAkB,EAAA,wBACAwN,WAAA3O,EAAAC,OAAAkB,EAAA,8BAGAA,EAAAnC,KAAAsP,oBAAAzE,GAKA,MAAArF,IAGA5F,EAAAgB,oBAkFA+M,EAAAhM,UAAAkC,OAAA+L,OAAAhP,EAAAe,WACAgM,EAAAhM,UAAAyM,SAAAxN,EASA+M,EAAA9L,cACA,SAAAyL,GACA,GAAAuC,GAAAhM,OAAA+L,OAAAjC,EAAAhM,WAEA4E,EAAAsJ,EAAAvO,OAAAD,EAAA0K,UAAAuB,EAAAhM,OAAAmE,WAAA,GACAxC,EAAA4M,EAAAzO,SAAAC,EAAA0K,UAAAuB,EAAAlM,SAAAqE,WAAA,EACAoK,GAAA9N,WAAAuL,EAAApM,YACA2O,EAAArJ,eAAA8G,EAAAvH,wBAAA8J,EAAAzO,SAAAqE,UACAoK,EAAA9N,YACA8N,EAAA5N,KAAAqL,EAAAvM,KAWA,QAJA+O,GAAAxC,EAAA/L,UAAAkE,UAAAsF,QACAgF,EAAAF,EAAAtB,uBACAyB,EAAAH,EAAAlB,sBAEAjJ,EAAA,EAAA3B,EAAA+L,EAAA/L,OAAwDA,EAAA2B,EAAYA,IAAA,CACpE,GAAAuK,GAAAH,EAAApK,GACAwK,EAAA,GAAAtC,EACAsC,GAAA3N,cAAA0N,EAAA1N,cACA2N,EAAAzN,gBAAAwN,EAAAxN,gBAEAwN,EAAAvN,SACAwN,EAAAxN,OAAAO,EAAA6C,QAAAmK,EAAAvN,QACAwN,EAAArN,aAAAoN,EAAApN,aACAqN,EAAApN,eAAAmN,EAAAnN,eAEAmN,EAAAlN,OACAmN,EAAAnN,KAAAwD,EAAAT,QAAAmK,EAAAlN,OAGAiN,EAAAxD,KAAA0D,IAGAH,EAAAvD,KAAA0D,GAKA,MAFA5B,GAAAuB,EAAAlB,mBAAA3N,EAAAmK,4BAEA0E,GAMAlC,EAAAhM,UAAAC,SAAA,EAKAiC,OAAA2K,eAAAb,EAAAhM,UAAA,WACA8M,IAAA,WACA,MAAAzO,MAAAoB,SAAAqE,UAAAS,IAAA,SAAA6H,GACA,aAAA/N,KAAA+B,WAAAf,EAAAuD,KAAAvE,KAAA+B,WAAAgM,MACO/N,SAqBP2N,EAAAhM,UAAA+M,eACA,SAAAlH,EAAAvB,GAeA,IAdA,GAYA9D,GAAAgO,EAAAC,EAAAC,EAAArI,EAZAzF,EAAA,EACA0C,EAAA,EACAG,EAAA,EACAD,EAAA,EACAG,EAAA,EACAD,EAAA,EACAtB,EAAAyD,EAAAzD,OACA8G,EAAA,EACAyF,KACAC,KACAC,KACAV,KAGA/L,EAAA8G,GACA,SAAArD,EAAAO,OAAA8C,GACAtI,IACAsI,IACA5F,EAAA,MAEA,UAAAuC,EAAAO,OAAA8C,GACAA,QAEA,CASA,IARA1I,EAAA,GAAAyL,GACAzL,EAAAI,gBAOA8N,EAAAxF,EAA2B9G,EAAAsM,IAC3BrQ,KAAA4O,wBAAApH,EAAA6I,GADyCA,KAQzC,GAHAF,EAAA3I,EAAAuD,MAAAF,EAAAwF,GAEAD,EAAAE,EAAAH,GAEAtF,GAAAsF,EAAApM,WACW,CAEX,IADAqM,KACAC,EAAAxF,GACAnJ,EAAA6F,OAAAC,EAAAqD,EAAA0F,GACAvI,EAAAuI,EAAAvI,MACA6C,EAAA0F,EAAAtI,KACAmI,EAAA5D,KAAAxE,EAGA,QAAAoI,EAAArM,OACA,SAAAG,OAAA,yCAGA,QAAAkM,EAAArM,OACA,SAAAG,OAAA,yCAGAoM,GAAAH,GAAAC,EAIAjO,EAAAM,gBAAAwC,EAAAmL,EAAA,GACAnL,EAAA9C,EAAAM,gBAEA2N,EAAArM,OAAA,IAEA5B,EAAAO,OAAA4C,EAAA8K,EAAA,GACA9K,GAAA8K,EAAA,GAGAjO,EAAAU,aAAAuC,EAAAgL,EAAA,GACAhL,EAAAjD,EAAAU,aAEAV,EAAAU,cAAA,EAGAV,EAAAW,eAAAqC,EAAAiL,EAAA,GACAjL,EAAAhD,EAAAW,eAEAsN,EAAArM,OAAA,IAEA5B,EAAAY,KAAAsC,EAAA+K,EAAA,GACA/K,GAAA+K,EAAA,KAIAN,EAAAtD,KAAArK,GACA,gBAAAA,GAAAU,cACA2N,EAAAhE,KAAArK,GAKAmM,EAAAwB,EAAA9O,EAAAwK,qCACAxL,KAAAuO,oBAAAuB,EAEAxB,EAAAkC,EAAAxP,EAAAmK,4BACAnL,KAAA2O,mBAAA6B,GAOA7C,EAAAhM,UAAA8N,aACA,SAAAgB,EAAAC,EAAAC,EACAC,EAAAC,EAAAC,GAMA,GAAAL,EAAAE,IAAA,EACA,SAAAtI,WAAA,gDACAoI,EAAAE,GAEA,IAAAF,EAAAG,GAAA,EACA,SAAAvI,WAAA,kDACAoI,EAAAG,GAGA,OAAAvC,GAAA0C,OAAAN,EAAAC,EAAAG,EAAAC,IAOAnD,EAAAhM,UAAAqP,mBACA,WACA,OAAAnG,GAAA,EAAyBA,EAAA7K,KAAAqP,mBAAAtL,SAAwC8G,EAAA,CACjE,GAAA1I,GAAAnC,KAAAqP,mBAAAxE,EAMA,IAAAA,EAAA,EAAA7K,KAAAqP,mBAAAtL,OAAA,CACA,GAAAkN,GAAAjR,KAAAqP,mBAAAxE,EAAA,EAEA,IAAA1I,EAAAI,gBAAA0O,EAAA1O,cAAA,CACAJ,EAAA+O,oBAAAD,EAAAxO,gBAAA,CACA,WAKAN,EAAA+O,oBAAAC,MAwBAxD,EAAAhM,UAAA2C,oBACA,SAAAxD,GACA,GAAA0O,IACAjN,cAAAvB,EAAAC,OAAAH,EAAA,QACA2B,gBAAAzB,EAAAC,OAAAH,EAAA,WAGA+J,EAAA7K,KAAAyP,aACAD,EACAxP,KAAAqP,mBACA,gBACA,kBACArO,EAAAwK,oCACAxK,EAAAC,OAAAH,EAAA,OAAAF,EAAAmO,sBAGA,IAAAlE,GAAA,GACA,GAAA1I,GAAAnC,KAAAqP,mBAAAxE,EAEA,IAAA1I,EAAAI,gBAAAiN,EAAAjN,cAAA,CACA,GAAAG,GAAA1B,EAAAC,OAAAkB,EAAA,cACA,QAAAO,IACAA,EAAA1C,KAAAoB,SAAAqL,GAAA/J,GACA,MAAA1C,KAAA+B,aACAW,EAAA1B,EAAAuD,KAAAvE,KAAA+B,WAAAW,IAGA,IAAAK,GAAA/B,EAAAC,OAAAkB,EAAA,YAIA,OAHA,QAAAY,IACAA,EAAA/C,KAAAsB,OAAAmL,GAAA1J,KAGAL,SACAJ,KAAAtB,EAAAC,OAAAkB,EAAA,qBACAK,OAAAxB,EAAAC,OAAAkB,EAAA,uBACAY,SAKA,OACAL,OAAA,KACAJ,KAAA,KACAE,OAAA,KACAO,KAAA,OAQA4K,EAAAhM,UAAAyP,wBACA,WACA,MAAApR,MAAAwG,eAGAxG,KAAAwG,eAAAzC,QAAA/D,KAAAoB,SAAA+K,SACAnM,KAAAwG,eAAA6K,KAAA,SAAAC,GAAiD,aAAAA,KAHjD,GAWA3D,EAAAhM,UAAA0B,iBACA,SAAAqB,EAAA6M,GACA,IAAAvR,KAAAwG,eACA,WAOA,IAJA,MAAAxG,KAAA+B,aACA2C,EAAA1D,EAAA2B,SAAA3C,KAAA+B,WAAA2C,IAGA1E,KAAAoB,SAAAoC,IAAAkB,GACA,MAAA1E,MAAAwG,eAAAxG,KAAAoB,SAAA0E,QAAApB,GAGA,IAAAoF,EACA,UAAA9J,KAAA+B,aACA+H,EAAA9I,EAAAmI,SAAAnJ,KAAA+B,aAAA,CAKA,GAAAyP,GAAA9M,EAAAiG,QAAA,gBACA,YAAAb,EAAAP,QACAvJ,KAAAoB,SAAAoC,IAAAgO,GACA,MAAAxR,MAAAwG,eAAAxG,KAAAoB,SAAA0E,QAAA0L,GAGA,MAAA1H,EAAAH,MAAA,KAAAG,EAAAH,OACA3J,KAAAoB,SAAAoC,IAAA,IAAAkB,GACA,MAAA1E,MAAAwG,eAAAxG,KAAAoB,SAAA0E,QAAA,IAAApB,IAQA,GAAA6M,EACA,WAGA,UAAArN,OAAA,IAAAQ,EAAA,+BAuBAiJ,EAAAhM,UAAA8P,qBACA,SAAA3Q,GACA,GAAA4B,GAAA1B,EAAAC,OAAAH,EAAA,SAIA,IAHA,MAAAd,KAAA+B,aACAW,EAAA1B,EAAA2B,SAAA3C,KAAA+B,WAAAW,KAEA1C,KAAAoB,SAAAoC,IAAAd,GACA,OACAJ,KAAA,KACAE,OAAA,KACAmN,WAAA,KAGAjN,GAAA1C,KAAAoB,SAAA0E,QAAApD,EAEA,IAAA8M,IACA9M,SACAG,aAAA7B,EAAAC,OAAAH,EAAA,QACAgC,eAAA9B,EAAAC,OAAAH,EAAA,WAGA+J,EAAA7K,KAAAyP,aACAD,EACAxP,KAAAsP,kBACA,eACA,iBACAtO,EAAAmK,2BACAnK,EAAAC,OAAAH,EAAA,OAAAF,EAAAmO,sBAGA,IAAAlE,GAAA,GACA,GAAA1I,GAAAnC,KAAAsP,kBAAAzE,EAEA,IAAA1I,EAAAO,SAAA8M,EAAA9M,OACA,OACAJ,KAAAtB,EAAAC,OAAAkB,EAAA,sBACAK,OAAAxB,EAAAC,OAAAkB,EAAA,wBACAwN,WAAA3O,EAAAC,OAAAkB,EAAA,6BAKA,OACAG,KAAA,KACAE,OAAA,KACAmN,WAAA,OAIA/P,EAAA+N,yBA+FAD,EAAA/L,UAAAkC,OAAA+L,OAAAhP,EAAAe,WACA+L,EAAA/L,UAAA+P,YAAA9Q,EAKA8M,EAAA/L,UAAAC,SAAA,EAKAiC,OAAA2K,eAAAd,EAAA/L,UAAA,WACA8M,IAAA,WAEA,OADAxL,MACAyC,EAAA,EAAqBA,EAAA1F,KAAA8N,UAAA/J,OAA2B2B,IAChD,OAAAiM,GAAA,EAAuBA,EAAA3R,KAAA8N,UAAApI,GAAA0I,SAAAnL,QAAAc,OAA+C4N,IACtE1O,EAAAuJ,KAAAxM,KAAA8N,UAAApI,GAAA0I,SAAAnL,QAAA0O,GAGA,OAAA1O,MAmBAyK,EAAA/L,UAAA2C,oBACA,SAAAxD,GACA,GAAA0O,IACAjN,cAAAvB,EAAAC,OAAAH,EAAA,QACA2B,gBAAAzB,EAAAC,OAAAH,EAAA,WAKA8Q,EAAAvD,EAAA0C,OAAAvB,EAAAxP,KAAA8N,UACA,SAAA0B,EAAAqC,GACA,GAAAtG,GAAAiE,EAAAjN,cAAAsP,EAAA1D,gBAAA5L,aACA,OAAAgJ,GACAA,EAGAiE,EAAA/M,gBACAoP,EAAA1D,gBAAA1L,kBAEAoP,EAAA7R,KAAA8N,UAAA8D,EAEA,OAAAC,GASAA,EAAAzD,SAAA9J,qBACAhC,KAAAkN,EAAAjN,eACAsP,EAAA1D,gBAAA5L,cAAA,GACAC,OAAAgN,EAAA/M,iBACAoP,EAAA1D,gBAAA5L,gBAAAiN,EAAAjN,cACAsP,EAAA1D,gBAAA1L,gBAAA,EACA,GACAqP,KAAAhR,EAAAgR,QAdApP,OAAA,KACAJ,KAAA,KACAE,OAAA,KACAO,KAAA,OAmBA2K,EAAA/L,UAAAyP,wBACA,WACA,MAAApR,MAAA8N,UAAAiE,MAAA,SAAAhE,GACA,MAAAA,GAAAK,SAAAgD,6BASA1D,EAAA/L,UAAA0B,iBACA,SAAAqB,EAAA6M,GACA,OAAA7L,GAAA,EAAqBA,EAAA1F,KAAA8N,UAAA/J,OAA2B2B,IAAA,CAChD,GAAAmM,GAAA7R,KAAA8N,UAAApI,GAEAtC,EAAAyO,EAAAzD,SAAA/K,iBAAAqB,GAAA,EACA,IAAAtB,EACA,MAAAA,GAGA,GAAAmO,EACA,WAGA,UAAArN,OAAA,IAAAQ,EAAA,+BAkBAgJ,EAAA/L,UAAA8P,qBACA,SAAA3Q,GACA,OAAA4E,GAAA,EAAqBA,EAAA1F,KAAA8N,UAAA/J,OAA2B2B,IAAA,CAChD,GAAAmM,GAAA7R,KAAA8N,UAAApI,EAIA,SAAAmM,EAAAzD,SAAAnL,QAAA6C,QAAA9E,EAAAC,OAAAH,EAAA,YAGA,GAAAkR,GAAAH,EAAAzD,SAAAqD,qBAAA3Q,EACA,IAAAkR,EAAA,CACA,GAAAC,IACA3P,KAAA0P,EAAA1P,MACAuP,EAAA1D,gBAAA5L,cAAA,GACAC,OAAAwP,EAAAxP,QACAqP,EAAA1D,gBAAA5L,gBAAAyP,EAAA1P,KACAuP,EAAA1D,gBAAA1L,gBAAA,EACA,GAEA,OAAAwP,KAIA,OACA3P,KAAA,KACAE,OAAA,OASAkL,EAAA/L,UAAA+M,eACA,SAAAlH,EAAAvB,GACAjG,KAAAuO,uBACAvO,KAAA2O,qBACA,QAAAjJ,GAAA,EAAqBA,EAAA1F,KAAA8N,UAAA/J,OAA2B2B,IAGhD,OAFAmM,GAAA7R,KAAA8N,UAAApI,GACAwM,EAAAL,EAAAzD,SAAAiB,mBACAsC,EAAA,EAAuBA,EAAAO,EAAAnO,OAA4B4N,IAAA,CACnD,GAAAxP,GAAA+P,EAAAP,GAEAjP,EAAAmP,EAAAzD,SAAAhN,SAAAqL,GAAAtK,EAAAO,OACA,QAAAmP,EAAAzD,SAAArM,aACAW,EAAA1B,EAAAuD,KAAAsN,EAAAzD,SAAArM,WAAAW,IAEA1C,KAAAoB,SAAAqC,IAAAf,GACAA,EAAA1C,KAAAoB,SAAA0E,QAAApD,EAEA,IAAAK,GAAA8O,EAAAzD,SAAA9M,OAAAmL,GAAAtK,EAAAY,KACA/C,MAAAsB,OAAAmC,IAAAV,GACAA,EAAA/C,KAAAsB,OAAAwE,QAAA/C,EAMA,IAAAoP,IACAzP,SACAH,cAAAJ,EAAAI,eACAsP,EAAA1D,gBAAA5L,cAAA,GACAE,gBAAAN,EAAAM,iBACAoP,EAAA1D,gBAAA5L,gBAAAJ,EAAAI,cACAsP,EAAA1D,gBAAA1L,gBAAA,EACA,GACAI,aAAAV,EAAAU,aACAC,eAAAX,EAAAW,eACAC,OAGA/C,MAAAuO,oBAAA/B,KAAA2F,GACA,gBAAAA,GAAAtP,cACA7C,KAAA2O,mBAAAnC,KAAA2F,GAKA7D,EAAAtO,KAAAuO,oBAAAvN,EAAAwK,qCACA8C,EAAAtO,KAAA2O,mBAAA3N,EAAAmK,6BAGAvL,EAAA8N,4BTsvCM,SAAS7N,EAAQD,GUvxEvB,QAAAwS,GAAAC,EAAAC,EAAA7B,EAAA8B,EAAAC,EAAA1B,GAUA,GAAA2B,GAAAC,KAAAC,OAAAL,EAAAD,GAAA,GAAAA,EACA9G,EAAAiH,EAAA/B,EAAA8B,EAAAE,IAAA,EACA,YAAAlH,EAEAkH,EAEAlH,EAAA,EAEA+G,EAAAG,EAAA,EAEAL,EAAAK,EAAAH,EAAA7B,EAAA8B,EAAAC,EAAA1B,GAKAA,GAAAlR,EAAAoP,kBACAsD,EAAAC,EAAAxO,OAAAuO,EAAA,GAEAG,EAKAA,EAAAJ,EAAA,EAEAD,EAAAC,EAAAI,EAAAhC,EAAA8B,EAAAC,EAAA1B,GAIAA,GAAAlR,EAAAoP,kBACAyD,EAEA,EAAAJ,EAAA,GAAAA,EA1DAzS,EAAAmP,qBAAA,EACAnP,EAAAoP,kBAAA,EAgFApP,EAAAmR,OAAA,SAAAN,EAAA8B,EAAAC,EAAA1B,GACA,OAAAyB,EAAAxO,OACA,QAGA,IAAA8G,GAAAuH,EAAA,GAAAG,EAAAxO,OAAA0M,EAAA8B,EACAC,EAAA1B,GAAAlR,EAAAmP,qBACA,MAAAlE,EACA,QAMA,MAAAA,EAAA,MACA,IAAA2H,EAAAD,EAAA1H,GAAA0H,EAAA1H,EAAA,UAGAA,CAGA,OAAAA,KVuzEM,SAAShL,EAAQD,GWz4EvB,QAAAgT,GAAAC,EAAAC,EAAAC,GACA,GAAAxC,GAAAsC,EAAAC,EACAD,GAAAC,GAAAD,EAAAE,GACAF,EAAAE,GAAAxC,EAWA,QAAAyC,GAAAC,EAAAC,GACA,MAAAR,MAAAS,MAAAF,EAAAP,KAAAU,UAAAF,EAAAD,IAeA,QAAAI,GAAAR,EAAAS,EAAA5S,EAAA6S,GAKA,GAAAA,EAAA7S,EAAA,CAYA,GAAA8S,GAAAR,EAAAtS,EAAA6S,GACA7N,EAAAhF,EAAA,CAEAkS,GAAAC,EAAAW,EAAAD,EASA,QARAE,GAAAZ,EAAAU,GAQA5B,EAAAjR,EAAqB6S,EAAA5B,EAAOA,IAC5B2B,EAAAT,EAAAlB,GAAA8B,IAAA,IACA/N,GAAA,EACAkN,EAAAC,EAAAnN,EAAAiM,GAIAiB,GAAAC,EAAAnN,EAAA,EAAAiM,EACA,IAAA+B,GAAAhO,EAAA,CAIA2N,GAAAR,EAAAS,EAAA5S,EAAAgT,EAAA,GACAL,EAAAR,EAAAS,EAAAI,EAAA,EAAAH,IAYA3T,EAAA0O,UAAA,SAAAuE,EAAAS,GACAD,EAAAR,EAAAS,EAAA,EAAAT,EAAA9O,OAAA,KX66EM,SAASlE,EAAQD,EAASM,GY3/EhC,QAAAW,GAAA8S,EAAAC,EAAAlP,EAAAmP,EAAAlP,GACA3E,KAAA8T,YACA9T,KAAA+T,kBACA/T,KAAAsC,KAAA,MAAAqR,EAAA,KAAAA,EACA3T,KAAAwC,OAAA,MAAAoR,EAAA,KAAAA,EACA5T,KAAA0C,OAAA,MAAAgC,EAAA,KAAAA,EACA1E,KAAA+C,KAAA,MAAA4B,EAAA,KAAAA,EACA3E,KAAAgU,IAAA,EACA,MAAAH,GAAA7T,KAAAyD,IAAAoQ,GAnCA,GAAAlT,GAAAT,EAAA,GAAAS,mBACAK,EAAAd,EAAA,GAIA+T,EAAA,UAGAC,EAAA,GAKAF,EAAA,oBAiCAnT,GAAAsT,wBACA,SAAAC,EAAAtS,EAAAuS,GAyFA,QAAAC,GAAAnS,EAAAoS,GACA,UAAApS,GAAAuN,SAAAvN,EAAAO,OACA8R,EAAA/Q,IAAA8Q,OACS,CACT,GAAA7R,GAAA2R,EACArT,EAAAuD,KAAA8P,EAAAlS,EAAAO,QACAP,EAAAO,MACA8R,GAAA/Q,IAAA,GAAA5C,GAAAsB,EAAAU,aACAV,EAAAW,eACAJ,EACA6R,EACApS,EAAAY,QAjGA,GAAAyR,GAAA,GAAA3T,GAMA4T,EAAAL,EAAAjM,MAAA8L,GACAS,EAAA,WACA,GAAAC,GAAAF,EAAA5M,QAEA+M,EAAAH,EAAA5M,SAAA,EACA,OAAA8M,GAAAC,GAIAC,EAAA,EAAA3D,EAAA,EAKA4D,EAAA,IAgEA,OA9DAhT,GAAAI,YAAA,SAAAC,GACA,UAAA2S,EAAA,CAGA,KAAAD,EAAA1S,EAAAI,eAMW,CAIX,GAAAwS,GAAAN,EAAA,GACAF,EAAAQ,EAAA9J,OAAA,EAAA9I,EAAAM,gBACAyO,EAOA,OANAuD,GAAA,GAAAM,EAAA9J,OAAA9I,EAAAM,gBACAyO,GACAA,EAAA/O,EAAAM,gBACA6R,EAAAQ,EAAAP,QAEAO,EAAA3S,GAhBAmS,EAAAQ,EAAAJ,KACAG,IACA3D,EAAA,EAqBA,KAAA2D,EAAA1S,EAAAI,eACAiS,EAAA/Q,IAAAiR,KACAG,GAEA,IAAA3D,EAAA/O,EAAAM,gBAAA,CACA,GAAAsS,GAAAN,EAAA,EACAD,GAAA/Q,IAAAsR,EAAA9J,OAAA,EAAA9I,EAAAM,kBACAgS,EAAA,GAAAM,EAAA9J,OAAA9I,EAAAM,iBACAyO,EAAA/O,EAAAM,gBAEAqS,EAAA3S,GACOnC,MAEPyU,EAAA1Q,OAAA,IACA+Q,GAEAR,EAAAQ,EAAAJ,KAGAF,EAAA/Q,IAAAgR,EAAAlQ,KAAA,MAIAzC,EAAAmB,QAAAC,QAAA,SAAAC,GACA,GAAAC,GAAAtB,EAAAuB,iBAAAF,EACA,OAAAC,IACA,MAAAiR,IACAlR,EAAAnC,EAAAuD,KAAA8P,EAAAlR,IAEAqR,EAAAlR,iBAAAH,EAAAC,MAIAoR,GAwBA3T,EAAAc,UAAA8B,IAAA,SAAAuR,GACA,GAAAhK,MAAAiK,QAAAD,GACAA,EAAA9R,QAAA,SAAAgS,GACAlV,KAAAyD,IAAAyR,IACOlV,UAEP,KAAAgV,EAAAhB,IAAA,gBAAAgB,GAMA,SAAA3M,WACA,8EAAA2M,EANAA,IACAhV,KAAA8T,SAAAtH,KAAAwI,GAQA,MAAAhV,OASAa,EAAAc,UAAAwT,QAAA,SAAAH,GACA,GAAAhK,MAAAiK,QAAAD,GACA,OAAAtP,GAAAsP,EAAAjR,OAAA,EAAmC2B,GAAA,EAAQA,IAC3C1F,KAAAmV,QAAAH,EAAAtP,QAGA,KAAAsP,EAAAhB,IAAA,gBAAAgB,GAIA,SAAA3M,WACA,8EAAA2M,EAJAhV,MAAA8T,SAAAsB,QAAAJ,GAOA,MAAAhV,OAUAa,EAAAc,UAAA0T,KAAA,SAAAC,GAEA,OADAJ,GACAxP,EAAA,EAAAC,EAAA3F,KAAA8T,SAAA/P,OAA+C4B,EAAAD,EAASA,IACxDwP,EAAAlV,KAAA8T,SAAApO,GACAwP,EAAAlB,GACAkB,EAAAG,KAAAC,GAGA,KAAAJ,GACAI,EAAAJ,GAAsBxS,OAAA1C,KAAA0C,OACtBJ,KAAAtC,KAAAsC,KACAE,OAAAxC,KAAAwC,OACAO,KAAA/C,KAAA+C,QAYAlC,EAAAc,UAAA4C,KAAA,SAAAgR,GACA,GAAAC,GACA9P,EACAC,EAAA3F,KAAA8T,SAAA/P,MACA,IAAA4B,EAAA,GAEA,IADA6P,KACA9P,EAAA,EAAiBC,EAAA,EAAAD,EAAWA,IAC5B8P,EAAAhJ,KAAAxM,KAAA8T,SAAApO,IACA8P,EAAAhJ,KAAA+I,EAEAC,GAAAhJ,KAAAxM,KAAA8T,SAAApO,IACA1F,KAAA8T,SAAA0B,EAEA,MAAAxV,OAUAa,EAAAc,UAAA8T,aAAA,SAAAC,EAAAC,GACA,GAAAC,GAAA5V,KAAA8T,SAAA9T,KAAA8T,SAAA/P,OAAA,EAUA,OATA6R,GAAA5B,GACA4B,EAAAH,aAAAC,EAAAC,GAEA,gBAAAC,GACA5V,KAAA8T,SAAA9T,KAAA8T,SAAA/P,OAAA,GAAA6R,EAAAjL,QAAA+K,EAAAC,GAGA3V,KAAA8T,SAAAtH,KAAA,GAAA7B,QAAA+K,EAAAC,IAEA3V,MAUAa,EAAAc,UAAA2B,iBACA,SAAAI,EAAAC,GACA3D,KAAA+T,eAAA/S,EAAA4C,YAAAF,IAAAC,GASA9C,EAAAc,UAAAkU,mBACA,SAAAP,GACA,OAAA5P,GAAA,EAAAC,EAAA3F,KAAA8T,SAAA/P,OAAiD4B,EAAAD,EAASA,IAC1D1F,KAAA8T,SAAApO,GAAAsO,IACAhU,KAAA8T,SAAApO,GAAAmQ,mBAAAP,EAKA,QADArS,GAAAY,OAAAC,KAAA9D,KAAA+T,gBACArO,EAAA,EAAAC,EAAA1C,EAAAc,OAA2C4B,EAAAD,EAASA,IACpD4P,EAAAtU,EAAAkK,cAAAjI,EAAAyC,IAAA1F,KAAA+T,eAAA9Q,EAAAyC,MAQA7E,EAAAc,UAAA8E,SAAA,WACA,GAAA0J,GAAA,EAIA,OAHAnQ,MAAAqV,KAAA,SAAAH,GACA/E,GAAA+E,IAEA/E,GAOAtP,EAAAc,UAAAmU,sBAAA,SAAAhV,GACA,GAAAuB,IACAkS,KAAA,GACAjS,KAAA,EACAE,OAAA,GAEA0D,EAAA,GAAAvF,GAAAG,GACAiV,GAAA,EACAC,EAAA,KACAC,EAAA,KACAC,EAAA,KACAC,EAAA,IAqEA,OApEAnW,MAAAqV,KAAA,SAAAH,EAAAtS,GACAP,EAAAkS,MAAAW,EACA,OAAAtS,EAAAF,QACA,OAAAE,EAAAN,MACA,OAAAM,EAAAJ,SACAwT,IAAApT,EAAAF,QACAuT,IAAArT,EAAAN,MACA4T,IAAAtT,EAAAJ,QACA2T,IAAAvT,EAAAG,OACAmD,EAAAlD,YACAN,OAAAE,EAAAF,OACAE,UACAN,KAAAM,EAAAN,KACAE,OAAAI,EAAAJ,QAEAH,WACAC,KAAAD,EAAAC,KACAE,OAAAH,EAAAG,QAEAO,KAAAH,EAAAG,OAGAiT,EAAApT,EAAAF,OACAuT,EAAArT,EAAAN,KACA4T,EAAAtT,EAAAJ,OACA2T,EAAAvT,EAAAG,KACAgT,GAAA,GACOA,IACP7P,EAAAlD,YACAX,WACAC,KAAAD,EAAAC,KACAE,OAAAH,EAAAG,UAGAwT,EAAA,KACAD,GAAA,EAEA,QAAAxJ,GAAA,EAAAxI,EAAAmR,EAAAnR,OAA8CA,EAAAwI,EAAcA,IAC5D2I,EAAApN,WAAAyE,KAAA2H,GACA7R,EAAAC,OACAD,EAAAG,OAAA,EAEA+J,EAAA,IAAAxI,GACAiS,EAAA,KACAD,GAAA,GACWA,GACX7P,EAAAlD,YACAN,OAAAE,EAAAF,OACAE,UACAN,KAAAM,EAAAN,KACAE,OAAAI,EAAAJ,QAEAH,WACAC,KAAAD,EAAAC,KACAE,OAAAH,EAAAG,QAEAO,KAAAH,EAAAG,QAIAV,EAAAG,WAIAxC,KAAA6V,mBAAA,SAAA1S,EAAAiT,GACAlQ,EAAA5C,iBAAAH,EAAAiT,MAGY7B,KAAAlS,EAAAkS,KAAArO,QAGZtG,EAAAiB","file":"source-map.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"sourceMap\"] = factory();\n\telse\n\t\troot[\"sourceMap\"] = factory();\n})(this, function() {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"sourceMap\"] = factory();\n\telse\n\t\troot[\"sourceMap\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \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\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\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.loaded = 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// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/*\n\t * Copyright 2009-2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE.txt or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\texports.SourceMapGenerator = __webpack_require__(1).SourceMapGenerator;\n\texports.SourceMapConsumer = __webpack_require__(7).SourceMapConsumer;\n\texports.SourceNode = __webpack_require__(10).SourceNode;\n\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t{\n\t var base64VLQ = __webpack_require__(2);\n\t var util = __webpack_require__(4);\n\t var ArraySet = __webpack_require__(5).ArraySet;\n\t var MappingList = __webpack_require__(6).MappingList;\n\t\n\t /**\n\t * An instance of the SourceMapGenerator represents a source map which is\n\t * being built incrementally. You may pass an object with the following\n\t * properties:\n\t *\n\t * - file: The filename of the generated source.\n\t * - sourceRoot: A root for all relative URLs in this source map.\n\t */\n\t function SourceMapGenerator(aArgs) {\n\t if (!aArgs) {\n\t aArgs = {};\n\t }\n\t this._file = util.getArg(aArgs, 'file', null);\n\t this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null);\n\t this._skipValidation = util.getArg(aArgs, 'skipValidation', false);\n\t this._sources = new ArraySet();\n\t this._names = new ArraySet();\n\t this._mappings = new MappingList();\n\t this._sourcesContents = null;\n\t }\n\t\n\t SourceMapGenerator.prototype._version = 3;\n\t\n\t /**\n\t * Creates a new SourceMapGenerator based on a SourceMapConsumer\n\t *\n\t * @param aSourceMapConsumer The SourceMap.\n\t */\n\t SourceMapGenerator.fromSourceMap =\n\t function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) {\n\t var sourceRoot = aSourceMapConsumer.sourceRoot;\n\t var generator = new SourceMapGenerator({\n\t file: aSourceMapConsumer.file,\n\t sourceRoot: sourceRoot\n\t });\n\t aSourceMapConsumer.eachMapping(function (mapping) {\n\t var newMapping = {\n\t generated: {\n\t line: mapping.generatedLine,\n\t column: mapping.generatedColumn\n\t }\n\t };\n\t\n\t if (mapping.source != null) {\n\t newMapping.source = mapping.source;\n\t if (sourceRoot != null) {\n\t newMapping.source = util.relative(sourceRoot, newMapping.source);\n\t }\n\t\n\t newMapping.original = {\n\t line: mapping.originalLine,\n\t column: mapping.originalColumn\n\t };\n\t\n\t if (mapping.name != null) {\n\t newMapping.name = mapping.name;\n\t }\n\t }\n\t\n\t generator.addMapping(newMapping);\n\t });\n\t aSourceMapConsumer.sources.forEach(function (sourceFile) {\n\t var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n\t if (content != null) {\n\t generator.setSourceContent(sourceFile, content);\n\t }\n\t });\n\t return generator;\n\t };\n\t\n\t /**\n\t * Add a single mapping from original source line and column to the generated\n\t * source's line and column for this source map being created. The mapping\n\t * object should have the following properties:\n\t *\n\t * - generated: An object with the generated line and column positions.\n\t * - original: An object with the original line and column positions.\n\t * - source: The original source file (relative to the sourceRoot).\n\t * - name: An optional original token name for this mapping.\n\t */\n\t SourceMapGenerator.prototype.addMapping =\n\t function SourceMapGenerator_addMapping(aArgs) {\n\t var generated = util.getArg(aArgs, 'generated');\n\t var original = util.getArg(aArgs, 'original', null);\n\t var source = util.getArg(aArgs, 'source', null);\n\t var name = util.getArg(aArgs, 'name', null);\n\t\n\t if (!this._skipValidation) {\n\t this._validateMapping(generated, original, source, name);\n\t }\n\t\n\t if (source != null && !this._sources.has(source)) {\n\t this._sources.add(source);\n\t }\n\t\n\t if (name != null && !this._names.has(name)) {\n\t this._names.add(name);\n\t }\n\t\n\t this._mappings.add({\n\t generatedLine: generated.line,\n\t generatedColumn: generated.column,\n\t originalLine: original != null && original.line,\n\t originalColumn: original != null && original.column,\n\t source: source,\n\t name: name\n\t });\n\t };\n\t\n\t /**\n\t * Set the source content for a source file.\n\t */\n\t SourceMapGenerator.prototype.setSourceContent =\n\t function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {\n\t var source = aSourceFile;\n\t if (this._sourceRoot != null) {\n\t source = util.relative(this._sourceRoot, source);\n\t }\n\t\n\t if (aSourceContent != null) {\n\t // Add the source content to the _sourcesContents map.\n\t // Create a new _sourcesContents map if the property is null.\n\t if (!this._sourcesContents) {\n\t this._sourcesContents = {};\n\t }\n\t this._sourcesContents[util.toSetString(source)] = aSourceContent;\n\t } else if (this._sourcesContents) {\n\t // Remove the source file from the _sourcesContents map.\n\t // If the _sourcesContents map is empty, set the property to null.\n\t delete this._sourcesContents[util.toSetString(source)];\n\t if (Object.keys(this._sourcesContents).length === 0) {\n\t this._sourcesContents = null;\n\t }\n\t }\n\t };\n\t\n\t /**\n\t * Applies the mappings of a sub-source-map for a specific source file to the\n\t * source map being generated. Each mapping to the supplied source file is\n\t * rewritten using the supplied source map. Note: The resolution for the\n\t * resulting mappings is the minimium of this map and the supplied map.\n\t *\n\t * @param aSourceMapConsumer The source map to be applied.\n\t * @param aSourceFile Optional. The filename of the source file.\n\t * If omitted, SourceMapConsumer's file property will be used.\n\t * @param aSourceMapPath Optional. The dirname of the path to the source map\n\t * to be applied. If relative, it is relative to the SourceMapConsumer.\n\t * This parameter is needed when the two source maps aren't in the same\n\t * directory, and the source map to be applied contains relative source\n\t * paths. If so, those relative source paths need to be rewritten\n\t * relative to the SourceMapGenerator.\n\t */\n\t SourceMapGenerator.prototype.applySourceMap =\n\t function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) {\n\t var sourceFile = aSourceFile;\n\t // If aSourceFile is omitted, we will use the file property of the SourceMap\n\t if (aSourceFile == null) {\n\t if (aSourceMapConsumer.file == null) {\n\t throw new Error(\n\t 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' +\n\t 'or the source map\\'s \"file\" property. Both were omitted.'\n\t );\n\t }\n\t sourceFile = aSourceMapConsumer.file;\n\t }\n\t var sourceRoot = this._sourceRoot;\n\t // Make \"sourceFile\" relative if an absolute Url is passed.\n\t if (sourceRoot != null) {\n\t sourceFile = util.relative(sourceRoot, sourceFile);\n\t }\n\t // Applying the SourceMap can add and remove items from the sources and\n\t // the names array.\n\t var newSources = new ArraySet();\n\t var newNames = new ArraySet();\n\t\n\t // Find mappings for the \"sourceFile\"\n\t this._mappings.unsortedForEach(function (mapping) {\n\t if (mapping.source === sourceFile && mapping.originalLine != null) {\n\t // Check if it can be mapped by the source map, then update the mapping.\n\t var original = aSourceMapConsumer.originalPositionFor({\n\t line: mapping.originalLine,\n\t column: mapping.originalColumn\n\t });\n\t if (original.source != null) {\n\t // Copy mapping\n\t mapping.source = original.source;\n\t if (aSourceMapPath != null) {\n\t mapping.source = util.join(aSourceMapPath, mapping.source)\n\t }\n\t if (sourceRoot != null) {\n\t mapping.source = util.relative(sourceRoot, mapping.source);\n\t }\n\t mapping.originalLine = original.line;\n\t mapping.originalColumn = original.column;\n\t if (original.name != null) {\n\t mapping.name = original.name;\n\t }\n\t }\n\t }\n\t\n\t var source = mapping.source;\n\t if (source != null && !newSources.has(source)) {\n\t newSources.add(source);\n\t }\n\t\n\t var name = mapping.name;\n\t if (name != null && !newNames.has(name)) {\n\t newNames.add(name);\n\t }\n\t\n\t }, this);\n\t this._sources = newSources;\n\t this._names = newNames;\n\t\n\t // Copy sourcesContents of applied map.\n\t aSourceMapConsumer.sources.forEach(function (sourceFile) {\n\t var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n\t if (content != null) {\n\t if (aSourceMapPath != null) {\n\t sourceFile = util.join(aSourceMapPath, sourceFile);\n\t }\n\t if (sourceRoot != null) {\n\t sourceFile = util.relative(sourceRoot, sourceFile);\n\t }\n\t this.setSourceContent(sourceFile, content);\n\t }\n\t }, this);\n\t };\n\t\n\t /**\n\t * A mapping can have one of the three levels of data:\n\t *\n\t * 1. Just the generated position.\n\t * 2. The Generated position, original position, and original source.\n\t * 3. Generated and original position, original source, as well as a name\n\t * token.\n\t *\n\t * To maintain consistency, we validate that any new mapping being added falls\n\t * in to one of these categories.\n\t */\n\t SourceMapGenerator.prototype._validateMapping =\n\t function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource,\n\t aName) {\n\t if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n\t && aGenerated.line > 0 && aGenerated.column >= 0\n\t && !aOriginal && !aSource && !aName) {\n\t // Case 1.\n\t return;\n\t }\n\t else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n\t && aOriginal && 'line' in aOriginal && 'column' in aOriginal\n\t && aGenerated.line > 0 && aGenerated.column >= 0\n\t && aOriginal.line > 0 && aOriginal.column >= 0\n\t && aSource) {\n\t // Cases 2 and 3.\n\t return;\n\t }\n\t else {\n\t throw new Error('Invalid mapping: ' + JSON.stringify({\n\t generated: aGenerated,\n\t source: aSource,\n\t original: aOriginal,\n\t name: aName\n\t }));\n\t }\n\t };\n\t\n\t /**\n\t * Serialize the accumulated mappings in to the stream of base 64 VLQs\n\t * specified by the source map format.\n\t */\n\t SourceMapGenerator.prototype._serializeMappings =\n\t function SourceMapGenerator_serializeMappings() {\n\t var previousGeneratedColumn = 0;\n\t var previousGeneratedLine = 1;\n\t var previousOriginalColumn = 0;\n\t var previousOriginalLine = 0;\n\t var previousName = 0;\n\t var previousSource = 0;\n\t var result = '';\n\t var mapping;\n\t var nameIdx;\n\t var sourceIdx;\n\t\n\t var mappings = this._mappings.toArray();\n\t for (var i = 0, len = mappings.length; i < len; i++) {\n\t mapping = mappings[i];\n\t\n\t if (mapping.generatedLine !== previousGeneratedLine) {\n\t previousGeneratedColumn = 0;\n\t while (mapping.generatedLine !== previousGeneratedLine) {\n\t result += ';';\n\t previousGeneratedLine++;\n\t }\n\t }\n\t else {\n\t if (i > 0) {\n\t if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {\n\t continue;\n\t }\n\t result += ',';\n\t }\n\t }\n\t\n\t result += base64VLQ.encode(mapping.generatedColumn\n\t - previousGeneratedColumn);\n\t previousGeneratedColumn = mapping.generatedColumn;\n\t\n\t if (mapping.source != null) {\n\t sourceIdx = this._sources.indexOf(mapping.source);\n\t result += base64VLQ.encode(sourceIdx - previousSource);\n\t previousSource = sourceIdx;\n\t\n\t // lines are stored 0-based in SourceMap spec version 3\n\t result += base64VLQ.encode(mapping.originalLine - 1\n\t - previousOriginalLine);\n\t previousOriginalLine = mapping.originalLine - 1;\n\t\n\t result += base64VLQ.encode(mapping.originalColumn\n\t - previousOriginalColumn);\n\t previousOriginalColumn = mapping.originalColumn;\n\t\n\t if (mapping.name != null) {\n\t nameIdx = this._names.indexOf(mapping.name);\n\t result += base64VLQ.encode(nameIdx - previousName);\n\t previousName = nameIdx;\n\t }\n\t }\n\t }\n\t\n\t return result;\n\t };\n\t\n\t SourceMapGenerator.prototype._generateSourcesContent =\n\t function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {\n\t return aSources.map(function (source) {\n\t if (!this._sourcesContents) {\n\t return null;\n\t }\n\t if (aSourceRoot != null) {\n\t source = util.relative(aSourceRoot, source);\n\t }\n\t var key = util.toSetString(source);\n\t return Object.prototype.hasOwnProperty.call(this._sourcesContents,\n\t key)\n\t ? this._sourcesContents[key]\n\t : null;\n\t }, this);\n\t };\n\t\n\t /**\n\t * Externalize the source map.\n\t */\n\t SourceMapGenerator.prototype.toJSON =\n\t function SourceMapGenerator_toJSON() {\n\t var map = {\n\t version: this._version,\n\t sources: this._sources.toArray(),\n\t names: this._names.toArray(),\n\t mappings: this._serializeMappings()\n\t };\n\t if (this._file != null) {\n\t map.file = this._file;\n\t }\n\t if (this._sourceRoot != null) {\n\t map.sourceRoot = this._sourceRoot;\n\t }\n\t if (this._sourcesContents) {\n\t map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);\n\t }\n\t\n\t return map;\n\t };\n\t\n\t /**\n\t * Render the source map being generated to a string.\n\t */\n\t SourceMapGenerator.prototype.toString =\n\t function SourceMapGenerator_toString() {\n\t return JSON.stringify(this.toJSON());\n\t };\n\t\n\t exports.SourceMapGenerator = SourceMapGenerator;\n\t}\n\n\n/***/ },\n/* 2 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t *\n\t * Based on the Base 64 VLQ implementation in Closure Compiler:\n\t * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java\n\t *\n\t * Copyright 2011 The Closure Compiler Authors. All rights reserved.\n\t * Redistribution and use in source and binary forms, with or without\n\t * modification, are permitted provided that the following conditions are\n\t * met:\n\t *\n\t * * Redistributions of source code must retain the above copyright\n\t * notice, this list of conditions and the following disclaimer.\n\t * * Redistributions in binary form must reproduce the above\n\t * copyright notice, this list of conditions and the following\n\t * disclaimer in the documentation and/or other materials provided\n\t * with the distribution.\n\t * * Neither the name of Google Inc. nor the names of its\n\t * contributors may be used to endorse or promote products derived\n\t * from this software without specific prior written permission.\n\t *\n\t * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\t * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n\t * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n\t * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n\t * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n\t * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n\t * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n\t * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n\t * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n\t * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n\t * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\t */\n\t{\n\t var base64 = __webpack_require__(3);\n\t\n\t // A single base 64 digit can contain 6 bits of data. For the base 64 variable\n\t // length quantities we use in the source map spec, the first bit is the sign,\n\t // the next four bits are the actual value, and the 6th bit is the\n\t // continuation bit. The continuation bit tells us whether there are more\n\t // digits in this value following this digit.\n\t //\n\t // Continuation\n\t // | Sign\n\t // | |\n\t // V V\n\t // 101011\n\t\n\t var VLQ_BASE_SHIFT = 5;\n\t\n\t // binary: 100000\n\t var VLQ_BASE = 1 << VLQ_BASE_SHIFT;\n\t\n\t // binary: 011111\n\t var VLQ_BASE_MASK = VLQ_BASE - 1;\n\t\n\t // binary: 100000\n\t var VLQ_CONTINUATION_BIT = VLQ_BASE;\n\t\n\t /**\n\t * Converts from a two-complement value to a value where the sign bit is\n\t * placed in the least significant bit. For example, as decimals:\n\t * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary)\n\t * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary)\n\t */\n\t function toVLQSigned(aValue) {\n\t return aValue < 0\n\t ? ((-aValue) << 1) + 1\n\t : (aValue << 1) + 0;\n\t }\n\t\n\t /**\n\t * Converts to a two-complement value from a value where the sign bit is\n\t * placed in the least significant bit. For example, as decimals:\n\t * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1\n\t * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2\n\t */\n\t function fromVLQSigned(aValue) {\n\t var isNegative = (aValue & 1) === 1;\n\t var shifted = aValue >> 1;\n\t return isNegative\n\t ? -shifted\n\t : shifted;\n\t }\n\t\n\t /**\n\t * Returns the base 64 VLQ encoded value.\n\t */\n\t exports.encode = function base64VLQ_encode(aValue) {\n\t var encoded = \"\";\n\t var digit;\n\t\n\t var vlq = toVLQSigned(aValue);\n\t\n\t do {\n\t digit = vlq & VLQ_BASE_MASK;\n\t vlq >>>= VLQ_BASE_SHIFT;\n\t if (vlq > 0) {\n\t // There are still more digits in this value, so we must make sure the\n\t // continuation bit is marked.\n\t digit |= VLQ_CONTINUATION_BIT;\n\t }\n\t encoded += base64.encode(digit);\n\t } while (vlq > 0);\n\t\n\t return encoded;\n\t };\n\t\n\t /**\n\t * Decodes the next base 64 VLQ value from the given string and returns the\n\t * value and the rest of the string via the out parameter.\n\t */\n\t exports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {\n\t var strLen = aStr.length;\n\t var result = 0;\n\t var shift = 0;\n\t var continuation, digit;\n\t\n\t do {\n\t if (aIndex >= strLen) {\n\t throw new Error(\"Expected more digits in base 64 VLQ value.\");\n\t }\n\t\n\t digit = base64.decode(aStr.charCodeAt(aIndex++));\n\t if (digit === -1) {\n\t throw new Error(\"Invalid base64 digit: \" + aStr.charAt(aIndex - 1));\n\t }\n\t\n\t continuation = !!(digit & VLQ_CONTINUATION_BIT);\n\t digit &= VLQ_BASE_MASK;\n\t result = result + (digit << shift);\n\t shift += VLQ_BASE_SHIFT;\n\t } while (continuation);\n\t\n\t aOutParam.value = fromVLQSigned(result);\n\t aOutParam.rest = aIndex;\n\t };\n\t}\n\n\n/***/ },\n/* 3 */\n/***/ function(module, exports) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t{\n\t var intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');\n\t\n\t /**\n\t * Encode an integer in the range of 0 to 63 to a single base 64 digit.\n\t */\n\t exports.encode = function (number) {\n\t if (0 <= number && number < intToCharMap.length) {\n\t return intToCharMap[number];\n\t }\n\t throw new TypeError(\"Must be between 0 and 63: \" + number);\n\t };\n\t\n\t /**\n\t * Decode a single base 64 character code digit to an integer. Returns -1 on\n\t * failure.\n\t */\n\t exports.decode = function (charCode) {\n\t var bigA = 65; // 'A'\n\t var bigZ = 90; // 'Z'\n\t\n\t var littleA = 97; // 'a'\n\t var littleZ = 122; // 'z'\n\t\n\t var zero = 48; // '0'\n\t var nine = 57; // '9'\n\t\n\t var plus = 43; // '+'\n\t var slash = 47; // '/'\n\t\n\t var littleOffset = 26;\n\t var numberOffset = 52;\n\t\n\t // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ\n\t if (bigA <= charCode && charCode <= bigZ) {\n\t return (charCode - bigA);\n\t }\n\t\n\t // 26 - 51: abcdefghijklmnopqrstuvwxyz\n\t if (littleA <= charCode && charCode <= littleZ) {\n\t return (charCode - littleA + littleOffset);\n\t }\n\t\n\t // 52 - 61: 0123456789\n\t if (zero <= charCode && charCode <= nine) {\n\t return (charCode - zero + numberOffset);\n\t }\n\t\n\t // 62: +\n\t if (charCode == plus) {\n\t return 62;\n\t }\n\t\n\t // 63: /\n\t if (charCode == slash) {\n\t return 63;\n\t }\n\t\n\t // Invalid base64 digit.\n\t return -1;\n\t };\n\t}\n\n\n/***/ },\n/* 4 */\n/***/ function(module, exports) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t{\n\t /**\n\t * This is a helper function for getting values from parameter/options\n\t * objects.\n\t *\n\t * @param args The object we are extracting values from\n\t * @param name The name of the property we are getting.\n\t * @param defaultValue An optional value to return if the property is missing\n\t * from the object. If this is not specified and the property is missing, an\n\t * error will be thrown.\n\t */\n\t function getArg(aArgs, aName, aDefaultValue) {\n\t if (aName in aArgs) {\n\t return aArgs[aName];\n\t } else if (arguments.length === 3) {\n\t return aDefaultValue;\n\t } else {\n\t throw new Error('\"' + aName + '\" is a required argument.');\n\t }\n\t }\n\t exports.getArg = getArg;\n\t\n\t var urlRegexp = /^(?:([\\w+\\-.]+):)?\\/\\/(?:(\\w+:\\w+)@)?([\\w.]*)(?::(\\d+))?(\\S*)$/;\n\t var dataUrlRegexp = /^data:.+\\,.+$/;\n\t\n\t function urlParse(aUrl) {\n\t var match = aUrl.match(urlRegexp);\n\t if (!match) {\n\t return null;\n\t }\n\t return {\n\t scheme: match[1],\n\t auth: match[2],\n\t host: match[3],\n\t port: match[4],\n\t path: match[5]\n\t };\n\t }\n\t exports.urlParse = urlParse;\n\t\n\t function urlGenerate(aParsedUrl) {\n\t var url = '';\n\t if (aParsedUrl.scheme) {\n\t url += aParsedUrl.scheme + ':';\n\t }\n\t url += '//';\n\t if (aParsedUrl.auth) {\n\t url += aParsedUrl.auth + '@';\n\t }\n\t if (aParsedUrl.host) {\n\t url += aParsedUrl.host;\n\t }\n\t if (aParsedUrl.port) {\n\t url += \":\" + aParsedUrl.port\n\t }\n\t if (aParsedUrl.path) {\n\t url += aParsedUrl.path;\n\t }\n\t return url;\n\t }\n\t exports.urlGenerate = urlGenerate;\n\t\n\t /**\n\t * Normalizes a path, or the path portion of a URL:\n\t *\n\t * - Replaces consequtive slashes with one slash.\n\t * - Removes unnecessary '.' parts.\n\t * - Removes unnecessary '/..' parts.\n\t *\n\t * Based on code in the Node.js 'path' core module.\n\t *\n\t * @param aPath The path or url to normalize.\n\t */\n\t function normalize(aPath) {\n\t var path = aPath;\n\t var url = urlParse(aPath);\n\t if (url) {\n\t if (!url.path) {\n\t return aPath;\n\t }\n\t path = url.path;\n\t }\n\t var isAbsolute = exports.isAbsolute(path);\n\t\n\t var parts = path.split(/\\/+/);\n\t for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {\n\t part = parts[i];\n\t if (part === '.') {\n\t parts.splice(i, 1);\n\t } else if (part === '..') {\n\t up++;\n\t } else if (up > 0) {\n\t if (part === '') {\n\t // The first part is blank if the path is absolute. Trying to go\n\t // above the root is a no-op. Therefore we can remove all '..' parts\n\t // directly after the root.\n\t parts.splice(i + 1, up);\n\t up = 0;\n\t } else {\n\t parts.splice(i, 2);\n\t up--;\n\t }\n\t }\n\t }\n\t path = parts.join('/');\n\t\n\t if (path === '') {\n\t path = isAbsolute ? '/' : '.';\n\t }\n\t\n\t if (url) {\n\t url.path = path;\n\t return urlGenerate(url);\n\t }\n\t return path;\n\t }\n\t exports.normalize = normalize;\n\t\n\t /**\n\t * Joins two paths/URLs.\n\t *\n\t * @param aRoot The root path or URL.\n\t * @param aPath The path or URL to be joined with the root.\n\t *\n\t * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a\n\t * scheme-relative URL: Then the scheme of aRoot, if any, is prepended\n\t * first.\n\t * - Otherwise aPath is a path. If aRoot is a URL, then its path portion\n\t * is updated with the result and aRoot is returned. Otherwise the result\n\t * is returned.\n\t * - If aPath is absolute, the result is aPath.\n\t * - Otherwise the two paths are joined with a slash.\n\t * - Joining for example 'http://' and 'www.example.com' is also supported.\n\t */\n\t function join(aRoot, aPath) {\n\t if (aRoot === \"\") {\n\t aRoot = \".\";\n\t }\n\t if (aPath === \"\") {\n\t aPath = \".\";\n\t }\n\t var aPathUrl = urlParse(aPath);\n\t var aRootUrl = urlParse(aRoot);\n\t if (aRootUrl) {\n\t aRoot = aRootUrl.path || '/';\n\t }\n\t\n\t // `join(foo, '//www.example.org')`\n\t if (aPathUrl && !aPathUrl.scheme) {\n\t if (aRootUrl) {\n\t aPathUrl.scheme = aRootUrl.scheme;\n\t }\n\t return urlGenerate(aPathUrl);\n\t }\n\t\n\t if (aPathUrl || aPath.match(dataUrlRegexp)) {\n\t return aPath;\n\t }\n\t\n\t // `join('http://', 'www.example.com')`\n\t if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {\n\t aRootUrl.host = aPath;\n\t return urlGenerate(aRootUrl);\n\t }\n\t\n\t var joined = aPath.charAt(0) === '/'\n\t ? aPath\n\t : normalize(aRoot.replace(/\\/+$/, '') + '/' + aPath);\n\t\n\t if (aRootUrl) {\n\t aRootUrl.path = joined;\n\t return urlGenerate(aRootUrl);\n\t }\n\t return joined;\n\t }\n\t exports.join = join;\n\t\n\t exports.isAbsolute = function (aPath) {\n\t return aPath.charAt(0) === '/' || !!aPath.match(urlRegexp);\n\t };\n\t\n\t /**\n\t * Make a path relative to a URL or another path.\n\t *\n\t * @param aRoot The root path or URL.\n\t * @param aPath The path or URL to be made relative to aRoot.\n\t */\n\t function relative(aRoot, aPath) {\n\t if (aRoot === \"\") {\n\t aRoot = \".\";\n\t }\n\t\n\t aRoot = aRoot.replace(/\\/$/, '');\n\t\n\t // It is possible for the path to be above the root. In this case, simply\n\t // checking whether the root is a prefix of the path won't work. Instead, we\n\t // need to remove components from the root one by one, until either we find\n\t // a prefix that fits, or we run out of components to remove.\n\t var level = 0;\n\t while (aPath.indexOf(aRoot + '/') !== 0) {\n\t var index = aRoot.lastIndexOf(\"/\");\n\t if (index < 0) {\n\t return aPath;\n\t }\n\t\n\t // If the only part of the root that is left is the scheme (i.e. http://,\n\t // file:///, etc.), one or more slashes (/), or simply nothing at all, we\n\t // have exhausted all components, so the path is not relative to the root.\n\t aRoot = aRoot.slice(0, index);\n\t if (aRoot.match(/^([^\\/]+:\\/)?\\/*$/)) {\n\t return aPath;\n\t }\n\t\n\t ++level;\n\t }\n\t\n\t // Make sure we add a \"../\" for each component we removed from the root.\n\t return Array(level + 1).join(\"../\") + aPath.substr(aRoot.length + 1);\n\t }\n\t exports.relative = relative;\n\t\n\t /**\n\t * Because behavior goes wacky when you set `__proto__` on objects, we\n\t * have to prefix all the strings in our set with an arbitrary character.\n\t *\n\t * See https://github.com/mozilla/source-map/pull/31 and\n\t * https://github.com/mozilla/source-map/issues/30\n\t *\n\t * @param String aStr\n\t */\n\t function toSetString(aStr) {\n\t return '$' + aStr;\n\t }\n\t exports.toSetString = toSetString;\n\t\n\t function fromSetString(aStr) {\n\t return aStr.substr(1);\n\t }\n\t exports.fromSetString = fromSetString;\n\t\n\t /**\n\t * Comparator between two mappings where the original positions are compared.\n\t *\n\t * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n\t * mappings with the same original source/line/column, but different generated\n\t * line and column the same. Useful when searching for a mapping with a\n\t * stubbed out mapping.\n\t */\n\t function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {\n\t var cmp = mappingA.source - mappingB.source;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.originalLine - mappingB.originalLine;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.originalColumn - mappingB.originalColumn;\n\t if (cmp !== 0 || onlyCompareOriginal) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.generatedLine - mappingB.generatedLine;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t return mappingA.name - mappingB.name;\n\t }\n\t exports.compareByOriginalPositions = compareByOriginalPositions;\n\t\n\t /**\n\t * Comparator between two mappings with deflated source and name indices where\n\t * the generated positions are compared.\n\t *\n\t * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n\t * mappings with the same generated line and column, but different\n\t * source/name/original line and column the same. Useful when searching for a\n\t * mapping with a stubbed out mapping.\n\t */\n\t function compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {\n\t var cmp = mappingA.generatedLine - mappingB.generatedLine;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n\t if (cmp !== 0 || onlyCompareGenerated) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.source - mappingB.source;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.originalLine - mappingB.originalLine;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.originalColumn - mappingB.originalColumn;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t return mappingA.name - mappingB.name;\n\t }\n\t exports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;\n\t\n\t function strcmp(aStr1, aStr2) {\n\t if (aStr1 === aStr2) {\n\t return 0;\n\t }\n\t\n\t if (aStr1 > aStr2) {\n\t return 1;\n\t }\n\t\n\t return -1;\n\t }\n\t\n\t /**\n\t * Comparator between two mappings with inflated source and name strings where\n\t * the generated positions are compared.\n\t */\n\t function compareByGeneratedPositionsInflated(mappingA, mappingB) {\n\t var cmp = mappingA.generatedLine - mappingB.generatedLine;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = strcmp(mappingA.source, mappingB.source);\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.originalLine - mappingB.originalLine;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.originalColumn - mappingB.originalColumn;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t return strcmp(mappingA.name, mappingB.name);\n\t }\n\t exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;\n\t}\n\n\n/***/ },\n/* 5 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t{\n\t var util = __webpack_require__(4);\n\t\n\t /**\n\t * A data structure which is a combination of an array and a set. Adding a new\n\t * member is O(1), testing for membership is O(1), and finding the index of an\n\t * element is O(1). Removing elements from the set is not supported. Only\n\t * strings are supported for membership.\n\t */\n\t function ArraySet() {\n\t this._array = [];\n\t this._set = {};\n\t }\n\t\n\t /**\n\t * Static method for creating ArraySet instances from an existing array.\n\t */\n\t ArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {\n\t var set = new ArraySet();\n\t for (var i = 0, len = aArray.length; i < len; i++) {\n\t set.add(aArray[i], aAllowDuplicates);\n\t }\n\t return set;\n\t };\n\t\n\t /**\n\t * Return how many unique items are in this ArraySet. If duplicates have been\n\t * added, than those do not count towards the size.\n\t *\n\t * @returns Number\n\t */\n\t ArraySet.prototype.size = function ArraySet_size() {\n\t return Object.getOwnPropertyNames(this._set).length;\n\t };\n\t\n\t /**\n\t * Add the given string to this set.\n\t *\n\t * @param String aStr\n\t */\n\t ArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {\n\t var sStr = util.toSetString(aStr);\n\t var isDuplicate = this._set.hasOwnProperty(sStr);\n\t var idx = this._array.length;\n\t if (!isDuplicate || aAllowDuplicates) {\n\t this._array.push(aStr);\n\t }\n\t if (!isDuplicate) {\n\t this._set[sStr] = idx;\n\t }\n\t };\n\t\n\t /**\n\t * Is the given string a member of this set?\n\t *\n\t * @param String aStr\n\t */\n\t ArraySet.prototype.has = function ArraySet_has(aStr) {\n\t var sStr = util.toSetString(aStr);\n\t return this._set.hasOwnProperty(sStr);\n\t };\n\t\n\t /**\n\t * What is the index of the given string in the array?\n\t *\n\t * @param String aStr\n\t */\n\t ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {\n\t var sStr = util.toSetString(aStr);\n\t if (this._set.hasOwnProperty(sStr)) {\n\t return this._set[sStr];\n\t }\n\t throw new Error('\"' + aStr + '\" is not in the set.');\n\t };\n\t\n\t /**\n\t * What is the element at the given index?\n\t *\n\t * @param Number aIdx\n\t */\n\t ArraySet.prototype.at = function ArraySet_at(aIdx) {\n\t if (aIdx >= 0 && aIdx < this._array.length) {\n\t return this._array[aIdx];\n\t }\n\t throw new Error('No element indexed by ' + aIdx);\n\t };\n\t\n\t /**\n\t * Returns the array representation of this set (which has the proper indices\n\t * indicated by indexOf). Note that this is a copy of the internal array used\n\t * for storing the members so that no one can mess with internal state.\n\t */\n\t ArraySet.prototype.toArray = function ArraySet_toArray() {\n\t return this._array.slice();\n\t };\n\t\n\t exports.ArraySet = ArraySet;\n\t}\n\n\n/***/ },\n/* 6 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2014 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t{\n\t var util = __webpack_require__(4);\n\t\n\t /**\n\t * Determine whether mappingB is after mappingA with respect to generated\n\t * position.\n\t */\n\t function generatedPositionAfter(mappingA, mappingB) {\n\t // Optimized for most common case\n\t var lineA = mappingA.generatedLine;\n\t var lineB = mappingB.generatedLine;\n\t var columnA = mappingA.generatedColumn;\n\t var columnB = mappingB.generatedColumn;\n\t return lineB > lineA || lineB == lineA && columnB >= columnA ||\n\t util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0;\n\t }\n\t\n\t /**\n\t * A data structure to provide a sorted view of accumulated mappings in a\n\t * performance conscious manner. It trades a neglibable overhead in general\n\t * case for a large speedup in case of mappings being added in order.\n\t */\n\t function MappingList() {\n\t this._array = [];\n\t this._sorted = true;\n\t // Serves as infimum\n\t this._last = {generatedLine: -1, generatedColumn: 0};\n\t }\n\t\n\t /**\n\t * Iterate through internal items. This method takes the same arguments that\n\t * `Array.prototype.forEach` takes.\n\t *\n\t * NOTE: The order of the mappings is NOT guaranteed.\n\t */\n\t MappingList.prototype.unsortedForEach =\n\t function MappingList_forEach(aCallback, aThisArg) {\n\t this._array.forEach(aCallback, aThisArg);\n\t };\n\t\n\t /**\n\t * Add the given source mapping.\n\t *\n\t * @param Object aMapping\n\t */\n\t MappingList.prototype.add = function MappingList_add(aMapping) {\n\t if (generatedPositionAfter(this._last, aMapping)) {\n\t this._last = aMapping;\n\t this._array.push(aMapping);\n\t } else {\n\t this._sorted = false;\n\t this._array.push(aMapping);\n\t }\n\t };\n\t\n\t /**\n\t * Returns the flat, sorted array of mappings. The mappings are sorted by\n\t * generated position.\n\t *\n\t * WARNING: This method returns internal data without copying, for\n\t * performance. The return value must NOT be mutated, and should be treated as\n\t * an immutable borrow. If you want to take ownership, you must make your own\n\t * copy.\n\t */\n\t MappingList.prototype.toArray = function MappingList_toArray() {\n\t if (!this._sorted) {\n\t this._array.sort(util.compareByGeneratedPositionsInflated);\n\t this._sorted = true;\n\t }\n\t return this._array;\n\t };\n\t\n\t exports.MappingList = MappingList;\n\t}\n\n\n/***/ },\n/* 7 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t{\n\t var util = __webpack_require__(4);\n\t var binarySearch = __webpack_require__(8);\n\t var ArraySet = __webpack_require__(5).ArraySet;\n\t var base64VLQ = __webpack_require__(2);\n\t var quickSort = __webpack_require__(9).quickSort;\n\t\n\t function SourceMapConsumer(aSourceMap) {\n\t var sourceMap = aSourceMap;\n\t if (typeof aSourceMap === 'string') {\n\t sourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/, ''));\n\t }\n\t\n\t return sourceMap.sections != null\n\t ? new IndexedSourceMapConsumer(sourceMap)\n\t : new BasicSourceMapConsumer(sourceMap);\n\t }\n\t\n\t SourceMapConsumer.fromSourceMap = function(aSourceMap) {\n\t return BasicSourceMapConsumer.fromSourceMap(aSourceMap);\n\t }\n\t\n\t /**\n\t * The version of the source mapping spec that we are consuming.\n\t */\n\t SourceMapConsumer.prototype._version = 3;\n\t\n\t // `__generatedMappings` and `__originalMappings` are arrays that hold the\n\t // parsed mapping coordinates from the source map's \"mappings\" attribute. They\n\t // are lazily instantiated, accessed via the `_generatedMappings` and\n\t // `_originalMappings` getters respectively, and we only parse the mappings\n\t // and create these arrays once queried for a source location. We jump through\n\t // these hoops because there can be many thousands of mappings, and parsing\n\t // them is expensive, so we only want to do it if we must.\n\t //\n\t // Each object in the arrays is of the form:\n\t //\n\t // {\n\t // generatedLine: The line number in the generated code,\n\t // generatedColumn: The column number in the generated code,\n\t // source: The path to the original source file that generated this\n\t // chunk of code,\n\t // originalLine: The line number in the original source that\n\t // corresponds to this chunk of generated code,\n\t // originalColumn: The column number in the original source that\n\t // corresponds to this chunk of generated code,\n\t // name: The name of the original symbol which generated this chunk of\n\t // code.\n\t // }\n\t //\n\t // All properties except for `generatedLine` and `generatedColumn` can be\n\t // `null`.\n\t //\n\t // `_generatedMappings` is ordered by the generated positions.\n\t //\n\t // `_originalMappings` is ordered by the original positions.\n\t\n\t SourceMapConsumer.prototype.__generatedMappings = null;\n\t Object.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {\n\t get: function () {\n\t if (!this.__generatedMappings) {\n\t this._parseMappings(this._mappings, this.sourceRoot);\n\t }\n\t\n\t return this.__generatedMappings;\n\t }\n\t });\n\t\n\t SourceMapConsumer.prototype.__originalMappings = null;\n\t Object.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {\n\t get: function () {\n\t if (!this.__originalMappings) {\n\t this._parseMappings(this._mappings, this.sourceRoot);\n\t }\n\t\n\t return this.__originalMappings;\n\t }\n\t });\n\t\n\t SourceMapConsumer.prototype._charIsMappingSeparator =\n\t function SourceMapConsumer_charIsMappingSeparator(aStr, index) {\n\t var c = aStr.charAt(index);\n\t return c === \";\" || c === \",\";\n\t };\n\t\n\t /**\n\t * Parse the mappings in a string in to a data structure which we can easily\n\t * query (the ordered arrays in the `this.__generatedMappings` and\n\t * `this.__originalMappings` properties).\n\t */\n\t SourceMapConsumer.prototype._parseMappings =\n\t function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n\t throw new Error(\"Subclasses must implement _parseMappings\");\n\t };\n\t\n\t SourceMapConsumer.GENERATED_ORDER = 1;\n\t SourceMapConsumer.ORIGINAL_ORDER = 2;\n\t\n\t SourceMapConsumer.GREATEST_LOWER_BOUND = 1;\n\t SourceMapConsumer.LEAST_UPPER_BOUND = 2;\n\t\n\t /**\n\t * Iterate over each mapping between an original source/line/column and a\n\t * generated line/column in this source map.\n\t *\n\t * @param Function aCallback\n\t * The function that is called with each mapping.\n\t * @param Object aContext\n\t * Optional. If specified, this object will be the value of `this` every\n\t * time that `aCallback` is called.\n\t * @param aOrder\n\t * Either `SourceMapConsumer.GENERATED_ORDER` or\n\t * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to\n\t * iterate over the mappings sorted by the generated file's line/column\n\t * order or the original's source/line/column order, respectively. Defaults to\n\t * `SourceMapConsumer.GENERATED_ORDER`.\n\t */\n\t SourceMapConsumer.prototype.eachMapping =\n\t function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {\n\t var context = aContext || null;\n\t var order = aOrder || SourceMapConsumer.GENERATED_ORDER;\n\t\n\t var mappings;\n\t switch (order) {\n\t case SourceMapConsumer.GENERATED_ORDER:\n\t mappings = this._generatedMappings;\n\t break;\n\t case SourceMapConsumer.ORIGINAL_ORDER:\n\t mappings = this._originalMappings;\n\t break;\n\t default:\n\t throw new Error(\"Unknown order of iteration.\");\n\t }\n\t\n\t var sourceRoot = this.sourceRoot;\n\t mappings.map(function (mapping) {\n\t var source = mapping.source === null ? null : this._sources.at(mapping.source);\n\t if (source != null && sourceRoot != null) {\n\t source = util.join(sourceRoot, source);\n\t }\n\t return {\n\t source: source,\n\t generatedLine: mapping.generatedLine,\n\t generatedColumn: mapping.generatedColumn,\n\t originalLine: mapping.originalLine,\n\t originalColumn: mapping.originalColumn,\n\t name: mapping.name === null ? null : this._names.at(mapping.name)\n\t };\n\t }, this).forEach(aCallback, context);\n\t };\n\t\n\t /**\n\t * Returns all generated line and column information for the original source,\n\t * line, and column provided. If no column is provided, returns all mappings\n\t * corresponding to a either the line we are searching for or the next\n\t * closest line that has any mappings. Otherwise, returns all mappings\n\t * corresponding to the given line and either the column we are searching for\n\t * or the next closest column that has any offsets.\n\t *\n\t * The only argument is an object with the following properties:\n\t *\n\t * - source: The filename of the original source.\n\t * - line: The line number in the original source.\n\t * - column: Optional. the column number in the original source.\n\t *\n\t * and an array of objects is returned, each with the following properties:\n\t *\n\t * - line: The line number in the generated source, or null.\n\t * - column: The column number in the generated source, or null.\n\t */\n\t SourceMapConsumer.prototype.allGeneratedPositionsFor =\n\t function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {\n\t var line = util.getArg(aArgs, 'line');\n\t\n\t // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping\n\t // returns the index of the closest mapping less than the needle. By\n\t // setting needle.originalColumn to 0, we thus find the last mapping for\n\t // the given line, provided such a mapping exists.\n\t var needle = {\n\t source: util.getArg(aArgs, 'source'),\n\t originalLine: line,\n\t originalColumn: util.getArg(aArgs, 'column', 0)\n\t };\n\t\n\t if (this.sourceRoot != null) {\n\t needle.source = util.relative(this.sourceRoot, needle.source);\n\t }\n\t if (!this._sources.has(needle.source)) {\n\t return [];\n\t }\n\t needle.source = this._sources.indexOf(needle.source);\n\t\n\t var mappings = [];\n\t\n\t var index = this._findMapping(needle,\n\t this._originalMappings,\n\t \"originalLine\",\n\t \"originalColumn\",\n\t util.compareByOriginalPositions,\n\t binarySearch.LEAST_UPPER_BOUND);\n\t if (index >= 0) {\n\t var mapping = this._originalMappings[index];\n\t\n\t if (aArgs.column === undefined) {\n\t var originalLine = mapping.originalLine;\n\t\n\t // Iterate until either we run out of mappings, or we run into\n\t // a mapping for a different line than the one we found. Since\n\t // mappings are sorted, this is guaranteed to find all mappings for\n\t // the line we found.\n\t while (mapping && mapping.originalLine === originalLine) {\n\t mappings.push({\n\t line: util.getArg(mapping, 'generatedLine', null),\n\t column: util.getArg(mapping, 'generatedColumn', null),\n\t lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n\t });\n\t\n\t mapping = this._originalMappings[++index];\n\t }\n\t } else {\n\t var originalColumn = mapping.originalColumn;\n\t\n\t // Iterate until either we run out of mappings, or we run into\n\t // a mapping for a different line than the one we were searching for.\n\t // Since mappings are sorted, this is guaranteed to find all mappings for\n\t // the line we are searching for.\n\t while (mapping &&\n\t mapping.originalLine === line &&\n\t mapping.originalColumn == originalColumn) {\n\t mappings.push({\n\t line: util.getArg(mapping, 'generatedLine', null),\n\t column: util.getArg(mapping, 'generatedColumn', null),\n\t lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n\t });\n\t\n\t mapping = this._originalMappings[++index];\n\t }\n\t }\n\t }\n\t\n\t return mappings;\n\t };\n\t\n\t exports.SourceMapConsumer = SourceMapConsumer;\n\t\n\t /**\n\t * A BasicSourceMapConsumer instance represents a parsed source map which we can\n\t * query for information about the original file positions by giving it a file\n\t * position in the generated source.\n\t *\n\t * The only parameter is the raw source map (either as a JSON string, or\n\t * already parsed to an object). According to the spec, source maps have the\n\t * following attributes:\n\t *\n\t * - version: Which version of the source map spec this map is following.\n\t * - sources: An array of URLs to the original source files.\n\t * - names: An array of identifiers which can be referrenced by individual mappings.\n\t * - sourceRoot: Optional. The URL root from which all sources are relative.\n\t * - sourcesContent: Optional. An array of contents of the original source files.\n\t * - mappings: A string of base64 VLQs which contain the actual mappings.\n\t * - file: Optional. The generated file this source map is associated with.\n\t *\n\t * Here is an example source map, taken from the source map spec[0]:\n\t *\n\t * {\n\t * version : 3,\n\t * file: \"out.js\",\n\t * sourceRoot : \"\",\n\t * sources: [\"foo.js\", \"bar.js\"],\n\t * names: [\"src\", \"maps\", \"are\", \"fun\"],\n\t * mappings: \"AA,AB;;ABCDE;\"\n\t * }\n\t *\n\t * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#\n\t */\n\t function BasicSourceMapConsumer(aSourceMap) {\n\t var sourceMap = aSourceMap;\n\t if (typeof aSourceMap === 'string') {\n\t sourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/, ''));\n\t }\n\t\n\t var version = util.getArg(sourceMap, 'version');\n\t var sources = util.getArg(sourceMap, 'sources');\n\t // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which\n\t // requires the array) to play nice here.\n\t var names = util.getArg(sourceMap, 'names', []);\n\t var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);\n\t var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);\n\t var mappings = util.getArg(sourceMap, 'mappings');\n\t var file = util.getArg(sourceMap, 'file', null);\n\t\n\t // Once again, Sass deviates from the spec and supplies the version as a\n\t // string rather than a number, so we use loose equality checking here.\n\t if (version != this._version) {\n\t throw new Error('Unsupported version: ' + version);\n\t }\n\t\n\t sources = sources\n\t // Some source maps produce relative source paths like \"./foo.js\" instead of\n\t // \"foo.js\". Normalize these first so that future comparisons will succeed.\n\t // See bugzil.la/1090768.\n\t .map(util.normalize)\n\t // Always ensure that absolute sources are internally stored relative to\n\t // the source root, if the source root is absolute. Not doing this would\n\t // be particularly problematic when the source root is a prefix of the\n\t // source (valid, but why??). See github issue #199 and bugzil.la/1188982.\n\t .map(function (source) {\n\t return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source)\n\t ? util.relative(sourceRoot, source)\n\t : source;\n\t });\n\t\n\t // Pass `true` below to allow duplicate names and sources. While source maps\n\t // are intended to be compressed and deduplicated, the TypeScript compiler\n\t // sometimes generates source maps with duplicates in them. See Github issue\n\t // #72 and bugzil.la/889492.\n\t this._names = ArraySet.fromArray(names, true);\n\t this._sources = ArraySet.fromArray(sources, true);\n\t\n\t this.sourceRoot = sourceRoot;\n\t this.sourcesContent = sourcesContent;\n\t this._mappings = mappings;\n\t this.file = file;\n\t }\n\t\n\t BasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\n\t BasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;\n\t\n\t /**\n\t * Create a BasicSourceMapConsumer from a SourceMapGenerator.\n\t *\n\t * @param SourceMapGenerator aSourceMap\n\t * The source map that will be consumed.\n\t * @returns BasicSourceMapConsumer\n\t */\n\t BasicSourceMapConsumer.fromSourceMap =\n\t function SourceMapConsumer_fromSourceMap(aSourceMap) {\n\t var smc = Object.create(BasicSourceMapConsumer.prototype);\n\t\n\t var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);\n\t var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);\n\t smc.sourceRoot = aSourceMap._sourceRoot;\n\t smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),\n\t smc.sourceRoot);\n\t smc.file = aSourceMap._file;\n\t\n\t // Because we are modifying the entries (by converting string sources and\n\t // names to indices into the sources and names ArraySets), we have to make\n\t // a copy of the entry or else bad things happen. Shared mutable state\n\t // strikes again! See github issue #191.\n\t\n\t var generatedMappings = aSourceMap._mappings.toArray().slice();\n\t var destGeneratedMappings = smc.__generatedMappings = [];\n\t var destOriginalMappings = smc.__originalMappings = [];\n\t\n\t for (var i = 0, length = generatedMappings.length; i < length; i++) {\n\t var srcMapping = generatedMappings[i];\n\t var destMapping = new Mapping;\n\t destMapping.generatedLine = srcMapping.generatedLine;\n\t destMapping.generatedColumn = srcMapping.generatedColumn;\n\t\n\t if (srcMapping.source) {\n\t destMapping.source = sources.indexOf(srcMapping.source);\n\t destMapping.originalLine = srcMapping.originalLine;\n\t destMapping.originalColumn = srcMapping.originalColumn;\n\t\n\t if (srcMapping.name) {\n\t destMapping.name = names.indexOf(srcMapping.name);\n\t }\n\t\n\t destOriginalMappings.push(destMapping);\n\t }\n\t\n\t destGeneratedMappings.push(destMapping);\n\t }\n\t\n\t quickSort(smc.__originalMappings, util.compareByOriginalPositions);\n\t\n\t return smc;\n\t };\n\t\n\t /**\n\t * The version of the source mapping spec that we are consuming.\n\t */\n\t BasicSourceMapConsumer.prototype._version = 3;\n\t\n\t /**\n\t * The list of original sources.\n\t */\n\t Object.defineProperty(BasicSourceMapConsumer.prototype, 'sources', {\n\t get: function () {\n\t return this._sources.toArray().map(function (s) {\n\t return this.sourceRoot != null ? util.join(this.sourceRoot, s) : s;\n\t }, this);\n\t }\n\t });\n\t\n\t /**\n\t * Provide the JIT with a nice shape / hidden class.\n\t */\n\t function Mapping() {\n\t this.generatedLine = 0;\n\t this.generatedColumn = 0;\n\t this.source = null;\n\t this.originalLine = null;\n\t this.originalColumn = null;\n\t this.name = null;\n\t }\n\t\n\t /**\n\t * Parse the mappings in a string in to a data structure which we can easily\n\t * query (the ordered arrays in the `this.__generatedMappings` and\n\t * `this.__originalMappings` properties).\n\t */\n\t BasicSourceMapConsumer.prototype._parseMappings =\n\t function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n\t var generatedLine = 1;\n\t var previousGeneratedColumn = 0;\n\t var previousOriginalLine = 0;\n\t var previousOriginalColumn = 0;\n\t var previousSource = 0;\n\t var previousName = 0;\n\t var length = aStr.length;\n\t var index = 0;\n\t var cachedSegments = {};\n\t var temp = {};\n\t var originalMappings = [];\n\t var generatedMappings = [];\n\t var mapping, str, segment, end, value;\n\t\n\t while (index < length) {\n\t if (aStr.charAt(index) === ';') {\n\t generatedLine++;\n\t index++;\n\t previousGeneratedColumn = 0;\n\t }\n\t else if (aStr.charAt(index) === ',') {\n\t index++;\n\t }\n\t else {\n\t mapping = new Mapping();\n\t mapping.generatedLine = generatedLine;\n\t\n\t // Because each offset is encoded relative to the previous one,\n\t // many segments often have the same encoding. We can exploit this\n\t // fact by caching the parsed variable length fields of each segment,\n\t // allowing us to avoid a second parse if we encounter the same\n\t // segment again.\n\t for (end = index; end < length; end++) {\n\t if (this._charIsMappingSeparator(aStr, end)) {\n\t break;\n\t }\n\t }\n\t str = aStr.slice(index, end);\n\t\n\t segment = cachedSegments[str];\n\t if (segment) {\n\t index += str.length;\n\t } else {\n\t segment = [];\n\t while (index < end) {\n\t base64VLQ.decode(aStr, index, temp);\n\t value = temp.value;\n\t index = temp.rest;\n\t segment.push(value);\n\t }\n\t\n\t if (segment.length === 2) {\n\t throw new Error('Found a source, but no line and column');\n\t }\n\t\n\t if (segment.length === 3) {\n\t throw new Error('Found a source and line, but no column');\n\t }\n\t\n\t cachedSegments[str] = segment;\n\t }\n\t\n\t // Generated column.\n\t mapping.generatedColumn = previousGeneratedColumn + segment[0];\n\t previousGeneratedColumn = mapping.generatedColumn;\n\t\n\t if (segment.length > 1) {\n\t // Original source.\n\t mapping.source = previousSource + segment[1];\n\t previousSource += segment[1];\n\t\n\t // Original line.\n\t mapping.originalLine = previousOriginalLine + segment[2];\n\t previousOriginalLine = mapping.originalLine;\n\t // Lines are stored 0-based\n\t mapping.originalLine += 1;\n\t\n\t // Original column.\n\t mapping.originalColumn = previousOriginalColumn + segment[3];\n\t previousOriginalColumn = mapping.originalColumn;\n\t\n\t if (segment.length > 4) {\n\t // Original name.\n\t mapping.name = previousName + segment[4];\n\t previousName += segment[4];\n\t }\n\t }\n\t\n\t generatedMappings.push(mapping);\n\t if (typeof mapping.originalLine === 'number') {\n\t originalMappings.push(mapping);\n\t }\n\t }\n\t }\n\t\n\t quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated);\n\t this.__generatedMappings = generatedMappings;\n\t\n\t quickSort(originalMappings, util.compareByOriginalPositions);\n\t this.__originalMappings = originalMappings;\n\t };\n\t\n\t /**\n\t * Find the mapping that best matches the hypothetical \"needle\" mapping that\n\t * we are searching for in the given \"haystack\" of mappings.\n\t */\n\t BasicSourceMapConsumer.prototype._findMapping =\n\t function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,\n\t aColumnName, aComparator, aBias) {\n\t // To return the position we are searching for, we must first find the\n\t // mapping for the given position and then return the opposite position it\n\t // points to. Because the mappings are sorted, we can use binary search to\n\t // find the best mapping.\n\t\n\t if (aNeedle[aLineName] <= 0) {\n\t throw new TypeError('Line must be greater than or equal to 1, got '\n\t + aNeedle[aLineName]);\n\t }\n\t if (aNeedle[aColumnName] < 0) {\n\t throw new TypeError('Column must be greater than or equal to 0, got '\n\t + aNeedle[aColumnName]);\n\t }\n\t\n\t return binarySearch.search(aNeedle, aMappings, aComparator, aBias);\n\t };\n\t\n\t /**\n\t * Compute the last column for each generated mapping. The last column is\n\t * inclusive.\n\t */\n\t BasicSourceMapConsumer.prototype.computeColumnSpans =\n\t function SourceMapConsumer_computeColumnSpans() {\n\t for (var index = 0; index < this._generatedMappings.length; ++index) {\n\t var mapping = this._generatedMappings[index];\n\t\n\t // Mappings do not contain a field for the last generated columnt. We\n\t // can come up with an optimistic estimate, however, by assuming that\n\t // mappings are contiguous (i.e. given two consecutive mappings, the\n\t // first mapping ends where the second one starts).\n\t if (index + 1 < this._generatedMappings.length) {\n\t var nextMapping = this._generatedMappings[index + 1];\n\t\n\t if (mapping.generatedLine === nextMapping.generatedLine) {\n\t mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;\n\t continue;\n\t }\n\t }\n\t\n\t // The last mapping for each line spans the entire line.\n\t mapping.lastGeneratedColumn = Infinity;\n\t }\n\t };\n\t\n\t /**\n\t * Returns the original source, line, and column information for the generated\n\t * source's line and column positions provided. The only argument is an object\n\t * with the following properties:\n\t *\n\t * - line: The line number in the generated source.\n\t * - column: The column number in the generated source.\n\t * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n\t * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n\t * closest element that is smaller than or greater than the one we are\n\t * searching for, respectively, if the exact element cannot be found.\n\t * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n\t *\n\t * and an object is returned with the following properties:\n\t *\n\t * - source: The original source file, or null.\n\t * - line: The line number in the original source, or null.\n\t * - column: The column number in the original source, or null.\n\t * - name: The original identifier, or null.\n\t */\n\t BasicSourceMapConsumer.prototype.originalPositionFor =\n\t function SourceMapConsumer_originalPositionFor(aArgs) {\n\t var needle = {\n\t generatedLine: util.getArg(aArgs, 'line'),\n\t generatedColumn: util.getArg(aArgs, 'column')\n\t };\n\t\n\t var index = this._findMapping(\n\t needle,\n\t this._generatedMappings,\n\t \"generatedLine\",\n\t \"generatedColumn\",\n\t util.compareByGeneratedPositionsDeflated,\n\t util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n\t );\n\t\n\t if (index >= 0) {\n\t var mapping = this._generatedMappings[index];\n\t\n\t if (mapping.generatedLine === needle.generatedLine) {\n\t var source = util.getArg(mapping, 'source', null);\n\t if (source !== null) {\n\t source = this._sources.at(source);\n\t if (this.sourceRoot != null) {\n\t source = util.join(this.sourceRoot, source);\n\t }\n\t }\n\t var name = util.getArg(mapping, 'name', null);\n\t if (name !== null) {\n\t name = this._names.at(name);\n\t }\n\t return {\n\t source: source,\n\t line: util.getArg(mapping, 'originalLine', null),\n\t column: util.getArg(mapping, 'originalColumn', null),\n\t name: name\n\t };\n\t }\n\t }\n\t\n\t return {\n\t source: null,\n\t line: null,\n\t column: null,\n\t name: null\n\t };\n\t };\n\t\n\t /**\n\t * Return true if we have the source content for every source in the source\n\t * map, false otherwise.\n\t */\n\t BasicSourceMapConsumer.prototype.hasContentsOfAllSources =\n\t function BasicSourceMapConsumer_hasContentsOfAllSources() {\n\t if (!this.sourcesContent) {\n\t return false;\n\t }\n\t return this.sourcesContent.length >= this._sources.size() &&\n\t !this.sourcesContent.some(function (sc) { return sc == null; });\n\t };\n\t\n\t /**\n\t * Returns the original source content. The only argument is the url of the\n\t * original source file. Returns null if no original source content is\n\t * available.\n\t */\n\t BasicSourceMapConsumer.prototype.sourceContentFor =\n\t function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n\t if (!this.sourcesContent) {\n\t return null;\n\t }\n\t\n\t if (this.sourceRoot != null) {\n\t aSource = util.relative(this.sourceRoot, aSource);\n\t }\n\t\n\t if (this._sources.has(aSource)) {\n\t return this.sourcesContent[this._sources.indexOf(aSource)];\n\t }\n\t\n\t var url;\n\t if (this.sourceRoot != null\n\t && (url = util.urlParse(this.sourceRoot))) {\n\t // XXX: file:// URIs and absolute paths lead to unexpected behavior for\n\t // many users. We can help them out when they expect file:// URIs to\n\t // behave like it would if they were running a local HTTP server. See\n\t // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.\n\t var fileUriAbsPath = aSource.replace(/^file:\\/\\//, \"\");\n\t if (url.scheme == \"file\"\n\t && this._sources.has(fileUriAbsPath)) {\n\t return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]\n\t }\n\t\n\t if ((!url.path || url.path == \"/\")\n\t && this._sources.has(\"/\" + aSource)) {\n\t return this.sourcesContent[this._sources.indexOf(\"/\" + aSource)];\n\t }\n\t }\n\t\n\t // This function is used recursively from\n\t // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we\n\t // don't want to throw if we can't find the source - we just want to\n\t // return null, so we provide a flag to exit gracefully.\n\t if (nullOnMissing) {\n\t return null;\n\t }\n\t else {\n\t throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n\t }\n\t };\n\t\n\t /**\n\t * Returns the generated line and column information for the original source,\n\t * line, and column positions provided. The only argument is an object with\n\t * the following properties:\n\t *\n\t * - source: The filename of the original source.\n\t * - line: The line number in the original source.\n\t * - column: The column number in the original source.\n\t * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n\t * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n\t * closest element that is smaller than or greater than the one we are\n\t * searching for, respectively, if the exact element cannot be found.\n\t * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n\t *\n\t * and an object is returned with the following properties:\n\t *\n\t * - line: The line number in the generated source, or null.\n\t * - column: The column number in the generated source, or null.\n\t */\n\t BasicSourceMapConsumer.prototype.generatedPositionFor =\n\t function SourceMapConsumer_generatedPositionFor(aArgs) {\n\t var source = util.getArg(aArgs, 'source');\n\t if (this.sourceRoot != null) {\n\t source = util.relative(this.sourceRoot, source);\n\t }\n\t if (!this._sources.has(source)) {\n\t return {\n\t line: null,\n\t column: null,\n\t lastColumn: null\n\t };\n\t }\n\t source = this._sources.indexOf(source);\n\t\n\t var needle = {\n\t source: source,\n\t originalLine: util.getArg(aArgs, 'line'),\n\t originalColumn: util.getArg(aArgs, 'column')\n\t };\n\t\n\t var index = this._findMapping(\n\t needle,\n\t this._originalMappings,\n\t \"originalLine\",\n\t \"originalColumn\",\n\t util.compareByOriginalPositions,\n\t util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n\t );\n\t\n\t if (index >= 0) {\n\t var mapping = this._originalMappings[index];\n\t\n\t if (mapping.source === needle.source) {\n\t return {\n\t line: util.getArg(mapping, 'generatedLine', null),\n\t column: util.getArg(mapping, 'generatedColumn', null),\n\t lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n\t };\n\t }\n\t }\n\t\n\t return {\n\t line: null,\n\t column: null,\n\t lastColumn: null\n\t };\n\t };\n\t\n\t exports.BasicSourceMapConsumer = BasicSourceMapConsumer;\n\t\n\t /**\n\t * An IndexedSourceMapConsumer instance represents a parsed source map which\n\t * we can query for information. It differs from BasicSourceMapConsumer in\n\t * that it takes \"indexed\" source maps (i.e. ones with a \"sections\" field) as\n\t * input.\n\t *\n\t * The only parameter is a raw source map (either as a JSON string, or already\n\t * parsed to an object). According to the spec for indexed source maps, they\n\t * have the following attributes:\n\t *\n\t * - version: Which version of the source map spec this map is following.\n\t * - file: Optional. The generated file this source map is associated with.\n\t * - sections: A list of section definitions.\n\t *\n\t * Each value under the \"sections\" field has two fields:\n\t * - offset: The offset into the original specified at which this section\n\t * begins to apply, defined as an object with a \"line\" and \"column\"\n\t * field.\n\t * - map: A source map definition. This source map could also be indexed,\n\t * but doesn't have to be.\n\t *\n\t * Instead of the \"map\" field, it's also possible to have a \"url\" field\n\t * specifying a URL to retrieve a source map from, but that's currently\n\t * unsupported.\n\t *\n\t * Here's an example source map, taken from the source map spec[0], but\n\t * modified to omit a section which uses the \"url\" field.\n\t *\n\t * {\n\t * version : 3,\n\t * file: \"app.js\",\n\t * sections: [{\n\t * offset: {line:100, column:10},\n\t * map: {\n\t * version : 3,\n\t * file: \"section.js\",\n\t * sources: [\"foo.js\", \"bar.js\"],\n\t * names: [\"src\", \"maps\", \"are\", \"fun\"],\n\t * mappings: \"AAAA,E;;ABCDE;\"\n\t * }\n\t * }],\n\t * }\n\t *\n\t * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt\n\t */\n\t function IndexedSourceMapConsumer(aSourceMap) {\n\t var sourceMap = aSourceMap;\n\t if (typeof aSourceMap === 'string') {\n\t sourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/, ''));\n\t }\n\t\n\t var version = util.getArg(sourceMap, 'version');\n\t var sections = util.getArg(sourceMap, 'sections');\n\t\n\t if (version != this._version) {\n\t throw new Error('Unsupported version: ' + version);\n\t }\n\t\n\t this._sources = new ArraySet();\n\t this._names = new ArraySet();\n\t\n\t var lastOffset = {\n\t line: -1,\n\t column: 0\n\t };\n\t this._sections = sections.map(function (s) {\n\t if (s.url) {\n\t // The url field will require support for asynchronicity.\n\t // See https://github.com/mozilla/source-map/issues/16\n\t throw new Error('Support for url field in sections not implemented.');\n\t }\n\t var offset = util.getArg(s, 'offset');\n\t var offsetLine = util.getArg(offset, 'line');\n\t var offsetColumn = util.getArg(offset, 'column');\n\t\n\t if (offsetLine < lastOffset.line ||\n\t (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) {\n\t throw new Error('Section offsets must be ordered and non-overlapping.');\n\t }\n\t lastOffset = offset;\n\t\n\t return {\n\t generatedOffset: {\n\t // The offset fields are 0-based, but we use 1-based indices when\n\t // encoding/decoding from VLQ.\n\t generatedLine: offsetLine + 1,\n\t generatedColumn: offsetColumn + 1\n\t },\n\t consumer: new SourceMapConsumer(util.getArg(s, 'map'))\n\t }\n\t });\n\t }\n\t\n\t IndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\n\t IndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;\n\t\n\t /**\n\t * The version of the source mapping spec that we are consuming.\n\t */\n\t IndexedSourceMapConsumer.prototype._version = 3;\n\t\n\t /**\n\t * The list of original sources.\n\t */\n\t Object.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', {\n\t get: function () {\n\t var sources = [];\n\t for (var i = 0; i < this._sections.length; i++) {\n\t for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {\n\t sources.push(this._sections[i].consumer.sources[j]);\n\t }\n\t }\n\t return sources;\n\t }\n\t });\n\t\n\t /**\n\t * Returns the original source, line, and column information for the generated\n\t * source's line and column positions provided. The only argument is an object\n\t * with the following properties:\n\t *\n\t * - line: The line number in the generated source.\n\t * - column: The column number in the generated source.\n\t *\n\t * and an object is returned with the following properties:\n\t *\n\t * - source: The original source file, or null.\n\t * - line: The line number in the original source, or null.\n\t * - column: The column number in the original source, or null.\n\t * - name: The original identifier, or null.\n\t */\n\t IndexedSourceMapConsumer.prototype.originalPositionFor =\n\t function IndexedSourceMapConsumer_originalPositionFor(aArgs) {\n\t var needle = {\n\t generatedLine: util.getArg(aArgs, 'line'),\n\t generatedColumn: util.getArg(aArgs, 'column')\n\t };\n\t\n\t // Find the section containing the generated position we're trying to map\n\t // to an original position.\n\t var sectionIndex = binarySearch.search(needle, this._sections,\n\t function(needle, section) {\n\t var cmp = needle.generatedLine - section.generatedOffset.generatedLine;\n\t if (cmp) {\n\t return cmp;\n\t }\n\t\n\t return (needle.generatedColumn -\n\t section.generatedOffset.generatedColumn);\n\t });\n\t var section = this._sections[sectionIndex];\n\t\n\t if (!section) {\n\t return {\n\t source: null,\n\t line: null,\n\t column: null,\n\t name: null\n\t };\n\t }\n\t\n\t return section.consumer.originalPositionFor({\n\t line: needle.generatedLine -\n\t (section.generatedOffset.generatedLine - 1),\n\t column: needle.generatedColumn -\n\t (section.generatedOffset.generatedLine === needle.generatedLine\n\t ? section.generatedOffset.generatedColumn - 1\n\t : 0),\n\t bias: aArgs.bias\n\t });\n\t };\n\t\n\t /**\n\t * Return true if we have the source content for every source in the source\n\t * map, false otherwise.\n\t */\n\t IndexedSourceMapConsumer.prototype.hasContentsOfAllSources =\n\t function IndexedSourceMapConsumer_hasContentsOfAllSources() {\n\t return this._sections.every(function (s) {\n\t return s.consumer.hasContentsOfAllSources();\n\t });\n\t };\n\t\n\t /**\n\t * Returns the original source content. The only argument is the url of the\n\t * original source file. Returns null if no original source content is\n\t * available.\n\t */\n\t IndexedSourceMapConsumer.prototype.sourceContentFor =\n\t function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n\t for (var i = 0; i < this._sections.length; i++) {\n\t var section = this._sections[i];\n\t\n\t var content = section.consumer.sourceContentFor(aSource, true);\n\t if (content) {\n\t return content;\n\t }\n\t }\n\t if (nullOnMissing) {\n\t return null;\n\t }\n\t else {\n\t throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n\t }\n\t };\n\t\n\t /**\n\t * Returns the generated line and column information for the original source,\n\t * line, and column positions provided. The only argument is an object with\n\t * the following properties:\n\t *\n\t * - source: The filename of the original source.\n\t * - line: The line number in the original source.\n\t * - column: The column number in the original source.\n\t *\n\t * and an object is returned with the following properties:\n\t *\n\t * - line: The line number in the generated source, or null.\n\t * - column: The column number in the generated source, or null.\n\t */\n\t IndexedSourceMapConsumer.prototype.generatedPositionFor =\n\t function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {\n\t for (var i = 0; i < this._sections.length; i++) {\n\t var section = this._sections[i];\n\t\n\t // Only consider this section if the requested source is in the list of\n\t // sources of the consumer.\n\t if (section.consumer.sources.indexOf(util.getArg(aArgs, 'source')) === -1) {\n\t continue;\n\t }\n\t var generatedPosition = section.consumer.generatedPositionFor(aArgs);\n\t if (generatedPosition) {\n\t var ret = {\n\t line: generatedPosition.line +\n\t (section.generatedOffset.generatedLine - 1),\n\t column: generatedPosition.column +\n\t (section.generatedOffset.generatedLine === generatedPosition.line\n\t ? section.generatedOffset.generatedColumn - 1\n\t : 0)\n\t };\n\t return ret;\n\t }\n\t }\n\t\n\t return {\n\t line: null,\n\t column: null\n\t };\n\t };\n\t\n\t /**\n\t * Parse the mappings in a string in to a data structure which we can easily\n\t * query (the ordered arrays in the `this.__generatedMappings` and\n\t * `this.__originalMappings` properties).\n\t */\n\t IndexedSourceMapConsumer.prototype._parseMappings =\n\t function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n\t this.__generatedMappings = [];\n\t this.__originalMappings = [];\n\t for (var i = 0; i < this._sections.length; i++) {\n\t var section = this._sections[i];\n\t var sectionMappings = section.consumer._generatedMappings;\n\t for (var j = 0; j < sectionMappings.length; j++) {\n\t var mapping = sectionMappings[j];\n\t\n\t var source = section.consumer._sources.at(mapping.source);\n\t if (section.consumer.sourceRoot !== null) {\n\t source = util.join(section.consumer.sourceRoot, source);\n\t }\n\t this._sources.add(source);\n\t source = this._sources.indexOf(source);\n\t\n\t var name = section.consumer._names.at(mapping.name);\n\t this._names.add(name);\n\t name = this._names.indexOf(name);\n\t\n\t // The mappings coming from the consumer for the section have\n\t // generated positions relative to the start of the section, so we\n\t // need to offset them to be relative to the start of the concatenated\n\t // generated file.\n\t var adjustedMapping = {\n\t source: source,\n\t generatedLine: mapping.generatedLine +\n\t (section.generatedOffset.generatedLine - 1),\n\t generatedColumn: mapping.generatedColumn +\n\t (section.generatedOffset.generatedLine === mapping.generatedLine\n\t ? section.generatedOffset.generatedColumn - 1\n\t : 0),\n\t originalLine: mapping.originalLine,\n\t originalColumn: mapping.originalColumn,\n\t name: name\n\t };\n\t\n\t this.__generatedMappings.push(adjustedMapping);\n\t if (typeof adjustedMapping.originalLine === 'number') {\n\t this.__originalMappings.push(adjustedMapping);\n\t }\n\t }\n\t }\n\t\n\t quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);\n\t quickSort(this.__originalMappings, util.compareByOriginalPositions);\n\t };\n\t\n\t exports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;\n\t}\n\n\n/***/ },\n/* 8 */\n/***/ function(module, exports) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t{\n\t exports.GREATEST_LOWER_BOUND = 1;\n\t exports.LEAST_UPPER_BOUND = 2;\n\t\n\t /**\n\t * Recursive implementation of binary search.\n\t *\n\t * @param aLow Indices here and lower do not contain the needle.\n\t * @param aHigh Indices here and higher do not contain the needle.\n\t * @param aNeedle The element being searched for.\n\t * @param aHaystack The non-empty array being searched.\n\t * @param aCompare Function which takes two elements and returns -1, 0, or 1.\n\t * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n\t * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n\t * closest element that is smaller than or greater than the one we are\n\t * searching for, respectively, if the exact element cannot be found.\n\t */\n\t function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {\n\t // This function terminates when one of the following is true:\n\t //\n\t // 1. We find the exact element we are looking for.\n\t //\n\t // 2. We did not find the exact element, but we can return the index of\n\t // the next-closest element.\n\t //\n\t // 3. We did not find the exact element, and there is no next-closest\n\t // element than the one we are searching for, so we return -1.\n\t var mid = Math.floor((aHigh - aLow) / 2) + aLow;\n\t var cmp = aCompare(aNeedle, aHaystack[mid], true);\n\t if (cmp === 0) {\n\t // Found the element we are looking for.\n\t return mid;\n\t }\n\t else if (cmp > 0) {\n\t // Our needle is greater than aHaystack[mid].\n\t if (aHigh - mid > 1) {\n\t // The element is in the upper half.\n\t return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);\n\t }\n\t\n\t // The exact needle element was not found in this haystack. Determine if\n\t // we are in termination case (3) or (2) and return the appropriate thing.\n\t if (aBias == exports.LEAST_UPPER_BOUND) {\n\t return aHigh < aHaystack.length ? aHigh : -1;\n\t } else {\n\t return mid;\n\t }\n\t }\n\t else {\n\t // Our needle is less than aHaystack[mid].\n\t if (mid - aLow > 1) {\n\t // The element is in the lower half.\n\t return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);\n\t }\n\t\n\t // we are in termination case (3) or (2) and return the appropriate thing.\n\t if (aBias == exports.LEAST_UPPER_BOUND) {\n\t return mid;\n\t } else {\n\t return aLow < 0 ? -1 : aLow;\n\t }\n\t }\n\t }\n\t\n\t /**\n\t * This is an implementation of binary search which will always try and return\n\t * the index of the closest element if there is no exact hit. This is because\n\t * mappings between original and generated line/col pairs are single points,\n\t * and there is an implicit region between each of them, so a miss just means\n\t * that you aren't on the very start of a region.\n\t *\n\t * @param aNeedle The element you are looking for.\n\t * @param aHaystack The array that is being searched.\n\t * @param aCompare A function which takes the needle and an element in the\n\t * array and returns -1, 0, or 1 depending on whether the needle is less\n\t * than, equal to, or greater than the element, respectively.\n\t * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n\t * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n\t * closest element that is smaller than or greater than the one we are\n\t * searching for, respectively, if the exact element cannot be found.\n\t * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.\n\t */\n\t exports.search = function search(aNeedle, aHaystack, aCompare, aBias) {\n\t if (aHaystack.length === 0) {\n\t return -1;\n\t }\n\t\n\t var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,\n\t aCompare, aBias || exports.GREATEST_LOWER_BOUND);\n\t if (index < 0) {\n\t return -1;\n\t }\n\t\n\t // We have found either the exact element, or the next-closest element than\n\t // the one we are searching for. However, there may be more than one such\n\t // element. Make sure we always return the smallest of these.\n\t while (index - 1 >= 0) {\n\t if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {\n\t break;\n\t }\n\t --index;\n\t }\n\t\n\t return index;\n\t };\n\t}\n\n\n/***/ },\n/* 9 */\n/***/ function(module, exports) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t{\n\t // It turns out that some (most?) JavaScript engines don't self-host\n\t // `Array.prototype.sort`. This makes sense because C++ will likely remain\n\t // faster than JS when doing raw CPU-intensive sorting. However, when using a\n\t // custom comparator function, calling back and forth between the VM's C++ and\n\t // JIT'd JS is rather slow *and* loses JIT type information, resulting in\n\t // worse generated code for the comparator function than would be optimal. In\n\t // fact, when sorting with a comparator, these costs outweigh the benefits of\n\t // sorting in C++. By using our own JS-implemented Quick Sort (below), we get\n\t // a ~3500ms mean speed-up in `bench/bench.html`.\n\t\n\t /**\n\t * Swap the elements indexed by `x` and `y` in the array `ary`.\n\t *\n\t * @param {Array} ary\n\t * The array.\n\t * @param {Number} x\n\t * The index of the first item.\n\t * @param {Number} y\n\t * The index of the second item.\n\t */\n\t function swap(ary, x, y) {\n\t var temp = ary[x];\n\t ary[x] = ary[y];\n\t ary[y] = temp;\n\t }\n\t\n\t /**\n\t * Returns a random integer within the range `low .. high` inclusive.\n\t *\n\t * @param {Number} low\n\t * The lower bound on the range.\n\t * @param {Number} high\n\t * The upper bound on the range.\n\t */\n\t function randomIntInRange(low, high) {\n\t return Math.round(low + (Math.random() * (high - low)));\n\t }\n\t\n\t /**\n\t * The Quick Sort algorithm.\n\t *\n\t * @param {Array} ary\n\t * An array to sort.\n\t * @param {function} comparator\n\t * Function to use to compare two items.\n\t * @param {Number} p\n\t * Start index of the array\n\t * @param {Number} r\n\t * End index of the array\n\t */\n\t function doQuickSort(ary, comparator, p, r) {\n\t // If our lower bound is less than our upper bound, we (1) partition the\n\t // array into two pieces and (2) recurse on each half. If it is not, this is\n\t // the empty array and our base case.\n\t\n\t if (p < r) {\n\t // (1) Partitioning.\n\t //\n\t // The partitioning chooses a pivot between `p` and `r` and moves all\n\t // elements that are less than or equal to the pivot to the before it, and\n\t // all the elements that are greater than it after it. The effect is that\n\t // once partition is done, the pivot is in the exact place it will be when\n\t // the array is put in sorted order, and it will not need to be moved\n\t // again. This runs in O(n) time.\n\t\n\t // Always choose a random pivot so that an input array which is reverse\n\t // sorted does not cause O(n^2) running time.\n\t var pivotIndex = randomIntInRange(p, r);\n\t var i = p - 1;\n\t\n\t swap(ary, pivotIndex, r);\n\t var pivot = ary[r];\n\t\n\t // Immediately after `j` is incremented in this loop, the following hold\n\t // true:\n\t //\n\t // * Every element in `ary[p .. i]` is less than or equal to the pivot.\n\t //\n\t // * Every element in `ary[i+1 .. j-1]` is greater than the pivot.\n\t for (var j = p; j < r; j++) {\n\t if (comparator(ary[j], pivot) <= 0) {\n\t i += 1;\n\t swap(ary, i, j);\n\t }\n\t }\n\t\n\t swap(ary, i + 1, j);\n\t var q = i + 1;\n\t\n\t // (2) Recurse on each half.\n\t\n\t doQuickSort(ary, comparator, p, q - 1);\n\t doQuickSort(ary, comparator, q + 1, r);\n\t }\n\t }\n\t\n\t /**\n\t * Sort the given array in-place with the given comparator function.\n\t *\n\t * @param {Array} ary\n\t * An array to sort.\n\t * @param {function} comparator\n\t * Function to use to compare two items.\n\t */\n\t exports.quickSort = function (ary, comparator) {\n\t doQuickSort(ary, comparator, 0, ary.length - 1);\n\t };\n\t}\n\n\n/***/ },\n/* 10 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t{\n\t var SourceMapGenerator = __webpack_require__(1).SourceMapGenerator;\n\t var util = __webpack_require__(4);\n\t\n\t // Matches a Windows-style `\\r\\n` newline or a `\\n` newline used by all other\n\t // operating systems these days (capturing the result).\n\t var REGEX_NEWLINE = /(\\r?\\n)/;\n\t\n\t // Newline character code for charCodeAt() comparisons\n\t var NEWLINE_CODE = 10;\n\t\n\t // Private symbol for identifying `SourceNode`s when multiple versions of\n\t // the source-map library are loaded. This MUST NOT CHANGE across\n\t // versions!\n\t var isSourceNode = \"$$$isSourceNode$$$\";\n\t\n\t /**\n\t * SourceNodes provide a way to abstract over interpolating/concatenating\n\t * snippets of generated JavaScript source code while maintaining the line and\n\t * column information associated with the original source code.\n\t *\n\t * @param aLine The original line number.\n\t * @param aColumn The original column number.\n\t * @param aSource The original source's filename.\n\t * @param aChunks Optional. An array of strings which are snippets of\n\t * generated JS, or other SourceNodes.\n\t * @param aName The original identifier.\n\t */\n\t function SourceNode(aLine, aColumn, aSource, aChunks, aName) {\n\t this.children = [];\n\t this.sourceContents = {};\n\t this.line = aLine == null ? null : aLine;\n\t this.column = aColumn == null ? null : aColumn;\n\t this.source = aSource == null ? null : aSource;\n\t this.name = aName == null ? null : aName;\n\t this[isSourceNode] = true;\n\t if (aChunks != null) this.add(aChunks);\n\t }\n\t\n\t /**\n\t * Creates a SourceNode from generated code and a SourceMapConsumer.\n\t *\n\t * @param aGeneratedCode The generated code\n\t * @param aSourceMapConsumer The SourceMap for the generated code\n\t * @param aRelativePath Optional. The path that relative sources in the\n\t * SourceMapConsumer should be relative to.\n\t */\n\t SourceNode.fromStringWithSourceMap =\n\t function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {\n\t // The SourceNode we want to fill with the generated code\n\t // and the SourceMap\n\t var node = new SourceNode();\n\t\n\t // All even indices of this array are one line of the generated code,\n\t // while all odd indices are the newlines between two adjacent lines\n\t // (since `REGEX_NEWLINE` captures its match).\n\t // Processed fragments are removed from this array, by calling `shiftNextLine`.\n\t var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);\n\t var shiftNextLine = function() {\n\t var lineContents = remainingLines.shift();\n\t // The last line of a file might not have a newline.\n\t var newLine = remainingLines.shift() || \"\";\n\t return lineContents + newLine;\n\t };\n\t\n\t // We need to remember the position of \"remainingLines\"\n\t var lastGeneratedLine = 1, lastGeneratedColumn = 0;\n\t\n\t // The generate SourceNodes we need a code range.\n\t // To extract it current and last mapping is used.\n\t // Here we store the last mapping.\n\t var lastMapping = null;\n\t\n\t aSourceMapConsumer.eachMapping(function (mapping) {\n\t if (lastMapping !== null) {\n\t // We add the code from \"lastMapping\" to \"mapping\":\n\t // First check if there is a new line in between.\n\t if (lastGeneratedLine < mapping.generatedLine) {\n\t // Associate first line with \"lastMapping\"\n\t addMappingWithCode(lastMapping, shiftNextLine());\n\t lastGeneratedLine++;\n\t lastGeneratedColumn = 0;\n\t // The remaining code is added without mapping\n\t } else {\n\t // There is no new line in between.\n\t // Associate the code between \"lastGeneratedColumn\" and\n\t // \"mapping.generatedColumn\" with \"lastMapping\"\n\t var nextLine = remainingLines[0];\n\t var code = nextLine.substr(0, mapping.generatedColumn -\n\t lastGeneratedColumn);\n\t remainingLines[0] = nextLine.substr(mapping.generatedColumn -\n\t lastGeneratedColumn);\n\t lastGeneratedColumn = mapping.generatedColumn;\n\t addMappingWithCode(lastMapping, code);\n\t // No more remaining code, continue\n\t lastMapping = mapping;\n\t return;\n\t }\n\t }\n\t // We add the generated code until the first mapping\n\t // to the SourceNode without any mapping.\n\t // Each line is added as separate string.\n\t while (lastGeneratedLine < mapping.generatedLine) {\n\t node.add(shiftNextLine());\n\t lastGeneratedLine++;\n\t }\n\t if (lastGeneratedColumn < mapping.generatedColumn) {\n\t var nextLine = remainingLines[0];\n\t node.add(nextLine.substr(0, mapping.generatedColumn));\n\t remainingLines[0] = nextLine.substr(mapping.generatedColumn);\n\t lastGeneratedColumn = mapping.generatedColumn;\n\t }\n\t lastMapping = mapping;\n\t }, this);\n\t // We have processed all mappings.\n\t if (remainingLines.length > 0) {\n\t if (lastMapping) {\n\t // Associate the remaining code in the current line with \"lastMapping\"\n\t addMappingWithCode(lastMapping, shiftNextLine());\n\t }\n\t // and add the remaining lines without any mapping\n\t node.add(remainingLines.join(\"\"));\n\t }\n\t\n\t // Copy sourcesContent into SourceNode\n\t aSourceMapConsumer.sources.forEach(function (sourceFile) {\n\t var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n\t if (content != null) {\n\t if (aRelativePath != null) {\n\t sourceFile = util.join(aRelativePath, sourceFile);\n\t }\n\t node.setSourceContent(sourceFile, content);\n\t }\n\t });\n\t\n\t return node;\n\t\n\t function addMappingWithCode(mapping, code) {\n\t if (mapping === null || mapping.source === undefined) {\n\t node.add(code);\n\t } else {\n\t var source = aRelativePath\n\t ? util.join(aRelativePath, mapping.source)\n\t : mapping.source;\n\t node.add(new SourceNode(mapping.originalLine,\n\t mapping.originalColumn,\n\t source,\n\t code,\n\t mapping.name));\n\t }\n\t }\n\t };\n\t\n\t /**\n\t * Add a chunk of generated JS to this source node.\n\t *\n\t * @param aChunk A string snippet of generated JS code, another instance of\n\t * SourceNode, or an array where each member is one of those things.\n\t */\n\t SourceNode.prototype.add = function SourceNode_add(aChunk) {\n\t if (Array.isArray(aChunk)) {\n\t aChunk.forEach(function (chunk) {\n\t this.add(chunk);\n\t }, this);\n\t }\n\t else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n\t if (aChunk) {\n\t this.children.push(aChunk);\n\t }\n\t }\n\t else {\n\t throw new TypeError(\n\t \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n\t );\n\t }\n\t return this;\n\t };\n\t\n\t /**\n\t * Add a chunk of generated JS to the beginning of this source node.\n\t *\n\t * @param aChunk A string snippet of generated JS code, another instance of\n\t * SourceNode, or an array where each member is one of those things.\n\t */\n\t SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {\n\t if (Array.isArray(aChunk)) {\n\t for (var i = aChunk.length-1; i >= 0; i--) {\n\t this.prepend(aChunk[i]);\n\t }\n\t }\n\t else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n\t this.children.unshift(aChunk);\n\t }\n\t else {\n\t throw new TypeError(\n\t \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n\t );\n\t }\n\t return this;\n\t };\n\t\n\t /**\n\t * Walk over the tree of JS snippets in this node and its children. The\n\t * walking function is called once for each snippet of JS and is passed that\n\t * snippet and the its original associated source's line/column location.\n\t *\n\t * @param aFn The traversal function.\n\t */\n\t SourceNode.prototype.walk = function SourceNode_walk(aFn) {\n\t var chunk;\n\t for (var i = 0, len = this.children.length; i < len; i++) {\n\t chunk = this.children[i];\n\t if (chunk[isSourceNode]) {\n\t chunk.walk(aFn);\n\t }\n\t else {\n\t if (chunk !== '') {\n\t aFn(chunk, { source: this.source,\n\t line: this.line,\n\t column: this.column,\n\t name: this.name });\n\t }\n\t }\n\t }\n\t };\n\t\n\t /**\n\t * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between\n\t * each of `this.children`.\n\t *\n\t * @param aSep The separator.\n\t */\n\t SourceNode.prototype.join = function SourceNode_join(aSep) {\n\t var newChildren;\n\t var i;\n\t var len = this.children.length;\n\t if (len > 0) {\n\t newChildren = [];\n\t for (i = 0; i < len-1; i++) {\n\t newChildren.push(this.children[i]);\n\t newChildren.push(aSep);\n\t }\n\t newChildren.push(this.children[i]);\n\t this.children = newChildren;\n\t }\n\t return this;\n\t };\n\t\n\t /**\n\t * Call String.prototype.replace on the very right-most source snippet. Useful\n\t * for trimming whitespace from the end of a source node, etc.\n\t *\n\t * @param aPattern The pattern to replace.\n\t * @param aReplacement The thing to replace the pattern with.\n\t */\n\t SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {\n\t var lastChild = this.children[this.children.length - 1];\n\t if (lastChild[isSourceNode]) {\n\t lastChild.replaceRight(aPattern, aReplacement);\n\t }\n\t else if (typeof lastChild === 'string') {\n\t this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);\n\t }\n\t else {\n\t this.children.push(''.replace(aPattern, aReplacement));\n\t }\n\t return this;\n\t };\n\t\n\t /**\n\t * Set the source content for a source file. This will be added to the SourceMapGenerator\n\t * in the sourcesContent field.\n\t *\n\t * @param aSourceFile The filename of the source file\n\t * @param aSourceContent The content of the source file\n\t */\n\t SourceNode.prototype.setSourceContent =\n\t function SourceNode_setSourceContent(aSourceFile, aSourceContent) {\n\t this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;\n\t };\n\t\n\t /**\n\t * Walk over the tree of SourceNodes. The walking function is called for each\n\t * source file content and is passed the filename and source content.\n\t *\n\t * @param aFn The traversal function.\n\t */\n\t SourceNode.prototype.walkSourceContents =\n\t function SourceNode_walkSourceContents(aFn) {\n\t for (var i = 0, len = this.children.length; i < len; i++) {\n\t if (this.children[i][isSourceNode]) {\n\t this.children[i].walkSourceContents(aFn);\n\t }\n\t }\n\t\n\t var sources = Object.keys(this.sourceContents);\n\t for (var i = 0, len = sources.length; i < len; i++) {\n\t aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);\n\t }\n\t };\n\t\n\t /**\n\t * Return the string representation of this source node. Walks over the tree\n\t * and concatenates all the various snippets together to one string.\n\t */\n\t SourceNode.prototype.toString = function SourceNode_toString() {\n\t var str = \"\";\n\t this.walk(function (chunk) {\n\t str += chunk;\n\t });\n\t return str;\n\t };\n\t\n\t /**\n\t * Returns the string representation of this source node along with a source\n\t * map.\n\t */\n\t SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {\n\t var generated = {\n\t code: \"\",\n\t line: 1,\n\t column: 0\n\t };\n\t var map = new SourceMapGenerator(aArgs);\n\t var sourceMappingActive = false;\n\t var lastOriginalSource = null;\n\t var lastOriginalLine = null;\n\t var lastOriginalColumn = null;\n\t var lastOriginalName = null;\n\t this.walk(function (chunk, original) {\n\t generated.code += chunk;\n\t if (original.source !== null\n\t && original.line !== null\n\t && original.column !== null) {\n\t if(lastOriginalSource !== original.source\n\t || lastOriginalLine !== original.line\n\t || lastOriginalColumn !== original.column\n\t || lastOriginalName !== original.name) {\n\t map.addMapping({\n\t source: original.source,\n\t original: {\n\t line: original.line,\n\t column: original.column\n\t },\n\t generated: {\n\t line: generated.line,\n\t column: generated.column\n\t },\n\t name: original.name\n\t });\n\t }\n\t lastOriginalSource = original.source;\n\t lastOriginalLine = original.line;\n\t lastOriginalColumn = original.column;\n\t lastOriginalName = original.name;\n\t sourceMappingActive = true;\n\t } else if (sourceMappingActive) {\n\t map.addMapping({\n\t generated: {\n\t line: generated.line,\n\t column: generated.column\n\t }\n\t });\n\t lastOriginalSource = null;\n\t sourceMappingActive = false;\n\t }\n\t for (var idx = 0, length = chunk.length; idx < length; idx++) {\n\t if (chunk.charCodeAt(idx) === NEWLINE_CODE) {\n\t generated.line++;\n\t generated.column = 0;\n\t // Mappings end at eol\n\t if (idx + 1 === length) {\n\t lastOriginalSource = null;\n\t sourceMappingActive = false;\n\t } else if (sourceMappingActive) {\n\t map.addMapping({\n\t source: original.source,\n\t original: {\n\t line: original.line,\n\t column: original.column\n\t },\n\t generated: {\n\t line: generated.line,\n\t column: generated.column\n\t },\n\t name: original.name\n\t });\n\t }\n\t } else {\n\t generated.column++;\n\t }\n\t }\n\t });\n\t this.walkSourceContents(function (sourceFile, sourceContent) {\n\t map.setSourceContent(sourceFile, sourceContent);\n\t });\n\t\n\t return { code: generated.code, map: map };\n\t };\n\t\n\t exports.SourceNode = SourceNode;\n\t}\n\n\n/***/ }\n/******/ ])\n});\n;\n\n\n/** WEBPACK FOOTER **\n ** source-map.min.js\n **/"," \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\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\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.loaded = 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// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap a7d787c028005295f8d2\n **/","/*\n * Copyright 2009-2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE.txt or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\nexports.SourceMapGenerator = require('./lib/source-map-generator').SourceMapGenerator;\nexports.SourceMapConsumer = require('./lib/source-map-consumer').SourceMapConsumer;\nexports.SourceNode = require('./lib/source-node').SourceNode;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./source-map.js\n ** module id = 0\n ** module chunks = 0\n **/","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n{\n var base64VLQ = require('./base64-vlq');\n var util = require('./util');\n var ArraySet = require('./array-set').ArraySet;\n var MappingList = require('./mapping-list').MappingList;\n\n /**\n * An instance of the SourceMapGenerator represents a source map which is\n * being built incrementally. You may pass an object with the following\n * properties:\n *\n * - file: The filename of the generated source.\n * - sourceRoot: A root for all relative URLs in this source map.\n */\n function SourceMapGenerator(aArgs) {\n if (!aArgs) {\n aArgs = {};\n }\n this._file = util.getArg(aArgs, 'file', null);\n this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null);\n this._skipValidation = util.getArg(aArgs, 'skipValidation', false);\n this._sources = new ArraySet();\n this._names = new ArraySet();\n this._mappings = new MappingList();\n this._sourcesContents = null;\n }\n\n SourceMapGenerator.prototype._version = 3;\n\n /**\n * Creates a new SourceMapGenerator based on a SourceMapConsumer\n *\n * @param aSourceMapConsumer The SourceMap.\n */\n SourceMapGenerator.fromSourceMap =\n function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) {\n var sourceRoot = aSourceMapConsumer.sourceRoot;\n var generator = new SourceMapGenerator({\n file: aSourceMapConsumer.file,\n sourceRoot: sourceRoot\n });\n aSourceMapConsumer.eachMapping(function (mapping) {\n var newMapping = {\n generated: {\n line: mapping.generatedLine,\n column: mapping.generatedColumn\n }\n };\n\n if (mapping.source != null) {\n newMapping.source = mapping.source;\n if (sourceRoot != null) {\n newMapping.source = util.relative(sourceRoot, newMapping.source);\n }\n\n newMapping.original = {\n line: mapping.originalLine,\n column: mapping.originalColumn\n };\n\n if (mapping.name != null) {\n newMapping.name = mapping.name;\n }\n }\n\n generator.addMapping(newMapping);\n });\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n generator.setSourceContent(sourceFile, content);\n }\n });\n return generator;\n };\n\n /**\n * Add a single mapping from original source line and column to the generated\n * source's line and column for this source map being created. The mapping\n * object should have the following properties:\n *\n * - generated: An object with the generated line and column positions.\n * - original: An object with the original line and column positions.\n * - source: The original source file (relative to the sourceRoot).\n * - name: An optional original token name for this mapping.\n */\n SourceMapGenerator.prototype.addMapping =\n function SourceMapGenerator_addMapping(aArgs) {\n var generated = util.getArg(aArgs, 'generated');\n var original = util.getArg(aArgs, 'original', null);\n var source = util.getArg(aArgs, 'source', null);\n var name = util.getArg(aArgs, 'name', null);\n\n if (!this._skipValidation) {\n this._validateMapping(generated, original, source, name);\n }\n\n if (source != null && !this._sources.has(source)) {\n this._sources.add(source);\n }\n\n if (name != null && !this._names.has(name)) {\n this._names.add(name);\n }\n\n this._mappings.add({\n generatedLine: generated.line,\n generatedColumn: generated.column,\n originalLine: original != null && original.line,\n originalColumn: original != null && original.column,\n source: source,\n name: name\n });\n };\n\n /**\n * Set the source content for a source file.\n */\n SourceMapGenerator.prototype.setSourceContent =\n function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {\n var source = aSourceFile;\n if (this._sourceRoot != null) {\n source = util.relative(this._sourceRoot, source);\n }\n\n if (aSourceContent != null) {\n // Add the source content to the _sourcesContents map.\n // Create a new _sourcesContents map if the property is null.\n if (!this._sourcesContents) {\n this._sourcesContents = {};\n }\n this._sourcesContents[util.toSetString(source)] = aSourceContent;\n } else if (this._sourcesContents) {\n // Remove the source file from the _sourcesContents map.\n // If the _sourcesContents map is empty, set the property to null.\n delete this._sourcesContents[util.toSetString(source)];\n if (Object.keys(this._sourcesContents).length === 0) {\n this._sourcesContents = null;\n }\n }\n };\n\n /**\n * Applies the mappings of a sub-source-map for a specific source file to the\n * source map being generated. Each mapping to the supplied source file is\n * rewritten using the supplied source map. Note: The resolution for the\n * resulting mappings is the minimium of this map and the supplied map.\n *\n * @param aSourceMapConsumer The source map to be applied.\n * @param aSourceFile Optional. The filename of the source file.\n * If omitted, SourceMapConsumer's file property will be used.\n * @param aSourceMapPath Optional. The dirname of the path to the source map\n * to be applied. If relative, it is relative to the SourceMapConsumer.\n * This parameter is needed when the two source maps aren't in the same\n * directory, and the source map to be applied contains relative source\n * paths. If so, those relative source paths need to be rewritten\n * relative to the SourceMapGenerator.\n */\n SourceMapGenerator.prototype.applySourceMap =\n function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) {\n var sourceFile = aSourceFile;\n // If aSourceFile is omitted, we will use the file property of the SourceMap\n if (aSourceFile == null) {\n if (aSourceMapConsumer.file == null) {\n throw new Error(\n 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' +\n 'or the source map\\'s \"file\" property. Both were omitted.'\n );\n }\n sourceFile = aSourceMapConsumer.file;\n }\n var sourceRoot = this._sourceRoot;\n // Make \"sourceFile\" relative if an absolute Url is passed.\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n // Applying the SourceMap can add and remove items from the sources and\n // the names array.\n var newSources = new ArraySet();\n var newNames = new ArraySet();\n\n // Find mappings for the \"sourceFile\"\n this._mappings.unsortedForEach(function (mapping) {\n if (mapping.source === sourceFile && mapping.originalLine != null) {\n // Check if it can be mapped by the source map, then update the mapping.\n var original = aSourceMapConsumer.originalPositionFor({\n line: mapping.originalLine,\n column: mapping.originalColumn\n });\n if (original.source != null) {\n // Copy mapping\n mapping.source = original.source;\n if (aSourceMapPath != null) {\n mapping.source = util.join(aSourceMapPath, mapping.source)\n }\n if (sourceRoot != null) {\n mapping.source = util.relative(sourceRoot, mapping.source);\n }\n mapping.originalLine = original.line;\n mapping.originalColumn = original.column;\n if (original.name != null) {\n mapping.name = original.name;\n }\n }\n }\n\n var source = mapping.source;\n if (source != null && !newSources.has(source)) {\n newSources.add(source);\n }\n\n var name = mapping.name;\n if (name != null && !newNames.has(name)) {\n newNames.add(name);\n }\n\n }, this);\n this._sources = newSources;\n this._names = newNames;\n\n // Copy sourcesContents of applied map.\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n if (aSourceMapPath != null) {\n sourceFile = util.join(aSourceMapPath, sourceFile);\n }\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n this.setSourceContent(sourceFile, content);\n }\n }, this);\n };\n\n /**\n * A mapping can have one of the three levels of data:\n *\n * 1. Just the generated position.\n * 2. The Generated position, original position, and original source.\n * 3. Generated and original position, original source, as well as a name\n * token.\n *\n * To maintain consistency, we validate that any new mapping being added falls\n * in to one of these categories.\n */\n SourceMapGenerator.prototype._validateMapping =\n function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource,\n aName) {\n if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n && aGenerated.line > 0 && aGenerated.column >= 0\n && !aOriginal && !aSource && !aName) {\n // Case 1.\n return;\n }\n else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n && aOriginal && 'line' in aOriginal && 'column' in aOriginal\n && aGenerated.line > 0 && aGenerated.column >= 0\n && aOriginal.line > 0 && aOriginal.column >= 0\n && aSource) {\n // Cases 2 and 3.\n return;\n }\n else {\n throw new Error('Invalid mapping: ' + JSON.stringify({\n generated: aGenerated,\n source: aSource,\n original: aOriginal,\n name: aName\n }));\n }\n };\n\n /**\n * Serialize the accumulated mappings in to the stream of base 64 VLQs\n * specified by the source map format.\n */\n SourceMapGenerator.prototype._serializeMappings =\n function SourceMapGenerator_serializeMappings() {\n var previousGeneratedColumn = 0;\n var previousGeneratedLine = 1;\n var previousOriginalColumn = 0;\n var previousOriginalLine = 0;\n var previousName = 0;\n var previousSource = 0;\n var result = '';\n var mapping;\n var nameIdx;\n var sourceIdx;\n\n var mappings = this._mappings.toArray();\n for (var i = 0, len = mappings.length; i < len; i++) {\n mapping = mappings[i];\n\n if (mapping.generatedLine !== previousGeneratedLine) {\n previousGeneratedColumn = 0;\n while (mapping.generatedLine !== previousGeneratedLine) {\n result += ';';\n previousGeneratedLine++;\n }\n }\n else {\n if (i > 0) {\n if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {\n continue;\n }\n result += ',';\n }\n }\n\n result += base64VLQ.encode(mapping.generatedColumn\n - previousGeneratedColumn);\n previousGeneratedColumn = mapping.generatedColumn;\n\n if (mapping.source != null) {\n sourceIdx = this._sources.indexOf(mapping.source);\n result += base64VLQ.encode(sourceIdx - previousSource);\n previousSource = sourceIdx;\n\n // lines are stored 0-based in SourceMap spec version 3\n result += base64VLQ.encode(mapping.originalLine - 1\n - previousOriginalLine);\n previousOriginalLine = mapping.originalLine - 1;\n\n result += base64VLQ.encode(mapping.originalColumn\n - previousOriginalColumn);\n previousOriginalColumn = mapping.originalColumn;\n\n if (mapping.name != null) {\n nameIdx = this._names.indexOf(mapping.name);\n result += base64VLQ.encode(nameIdx - previousName);\n previousName = nameIdx;\n }\n }\n }\n\n return result;\n };\n\n SourceMapGenerator.prototype._generateSourcesContent =\n function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {\n return aSources.map(function (source) {\n if (!this._sourcesContents) {\n return null;\n }\n if (aSourceRoot != null) {\n source = util.relative(aSourceRoot, source);\n }\n var key = util.toSetString(source);\n return Object.prototype.hasOwnProperty.call(this._sourcesContents,\n key)\n ? this._sourcesContents[key]\n : null;\n }, this);\n };\n\n /**\n * Externalize the source map.\n */\n SourceMapGenerator.prototype.toJSON =\n function SourceMapGenerator_toJSON() {\n var map = {\n version: this._version,\n sources: this._sources.toArray(),\n names: this._names.toArray(),\n mappings: this._serializeMappings()\n };\n if (this._file != null) {\n map.file = this._file;\n }\n if (this._sourceRoot != null) {\n map.sourceRoot = this._sourceRoot;\n }\n if (this._sourcesContents) {\n map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);\n }\n\n return map;\n };\n\n /**\n * Render the source map being generated to a string.\n */\n SourceMapGenerator.prototype.toString =\n function SourceMapGenerator_toString() {\n return JSON.stringify(this.toJSON());\n };\n\n exports.SourceMapGenerator = SourceMapGenerator;\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./lib/source-map-generator.js\n ** module id = 1\n ** module chunks = 0\n **/","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * Based on the Base 64 VLQ implementation in Closure Compiler:\n * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java\n *\n * Copyright 2011 The Closure Compiler Authors. All rights reserved.\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are\n * met:\n *\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above\n * copyright notice, this list of conditions and the following\n * disclaimer in the documentation and/or other materials provided\n * with the distribution.\n * * Neither the name of Google Inc. nor the names of its\n * contributors may be used to endorse or promote products derived\n * from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n{\n var base64 = require('./base64');\n\n // A single base 64 digit can contain 6 bits of data. For the base 64 variable\n // length quantities we use in the source map spec, the first bit is the sign,\n // the next four bits are the actual value, and the 6th bit is the\n // continuation bit. The continuation bit tells us whether there are more\n // digits in this value following this digit.\n //\n // Continuation\n // | Sign\n // | |\n // V V\n // 101011\n\n var VLQ_BASE_SHIFT = 5;\n\n // binary: 100000\n var VLQ_BASE = 1 << VLQ_BASE_SHIFT;\n\n // binary: 011111\n var VLQ_BASE_MASK = VLQ_BASE - 1;\n\n // binary: 100000\n var VLQ_CONTINUATION_BIT = VLQ_BASE;\n\n /**\n * Converts from a two-complement value to a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary)\n * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary)\n */\n function toVLQSigned(aValue) {\n return aValue < 0\n ? ((-aValue) << 1) + 1\n : (aValue << 1) + 0;\n }\n\n /**\n * Converts to a two-complement value from a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1\n * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2\n */\n function fromVLQSigned(aValue) {\n var isNegative = (aValue & 1) === 1;\n var shifted = aValue >> 1;\n return isNegative\n ? -shifted\n : shifted;\n }\n\n /**\n * Returns the base 64 VLQ encoded value.\n */\n exports.encode = function base64VLQ_encode(aValue) {\n var encoded = \"\";\n var digit;\n\n var vlq = toVLQSigned(aValue);\n\n do {\n digit = vlq & VLQ_BASE_MASK;\n vlq >>>= VLQ_BASE_SHIFT;\n if (vlq > 0) {\n // There are still more digits in this value, so we must make sure the\n // continuation bit is marked.\n digit |= VLQ_CONTINUATION_BIT;\n }\n encoded += base64.encode(digit);\n } while (vlq > 0);\n\n return encoded;\n };\n\n /**\n * Decodes the next base 64 VLQ value from the given string and returns the\n * value and the rest of the string via the out parameter.\n */\n exports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {\n var strLen = aStr.length;\n var result = 0;\n var shift = 0;\n var continuation, digit;\n\n do {\n if (aIndex >= strLen) {\n throw new Error(\"Expected more digits in base 64 VLQ value.\");\n }\n\n digit = base64.decode(aStr.charCodeAt(aIndex++));\n if (digit === -1) {\n throw new Error(\"Invalid base64 digit: \" + aStr.charAt(aIndex - 1));\n }\n\n continuation = !!(digit & VLQ_CONTINUATION_BIT);\n digit &= VLQ_BASE_MASK;\n result = result + (digit << shift);\n shift += VLQ_BASE_SHIFT;\n } while (continuation);\n\n aOutParam.value = fromVLQSigned(result);\n aOutParam.rest = aIndex;\n };\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./lib/base64-vlq.js\n ** module id = 2\n ** module chunks = 0\n **/","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n{\n var intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');\n\n /**\n * Encode an integer in the range of 0 to 63 to a single base 64 digit.\n */\n exports.encode = function (number) {\n if (0 <= number && number < intToCharMap.length) {\n return intToCharMap[number];\n }\n throw new TypeError(\"Must be between 0 and 63: \" + number);\n };\n\n /**\n * Decode a single base 64 character code digit to an integer. Returns -1 on\n * failure.\n */\n exports.decode = function (charCode) {\n var bigA = 65; // 'A'\n var bigZ = 90; // 'Z'\n\n var littleA = 97; // 'a'\n var littleZ = 122; // 'z'\n\n var zero = 48; // '0'\n var nine = 57; // '9'\n\n var plus = 43; // '+'\n var slash = 47; // '/'\n\n var littleOffset = 26;\n var numberOffset = 52;\n\n // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ\n if (bigA <= charCode && charCode <= bigZ) {\n return (charCode - bigA);\n }\n\n // 26 - 51: abcdefghijklmnopqrstuvwxyz\n if (littleA <= charCode && charCode <= littleZ) {\n return (charCode - littleA + littleOffset);\n }\n\n // 52 - 61: 0123456789\n if (zero <= charCode && charCode <= nine) {\n return (charCode - zero + numberOffset);\n }\n\n // 62: +\n if (charCode == plus) {\n return 62;\n }\n\n // 63: /\n if (charCode == slash) {\n return 63;\n }\n\n // Invalid base64 digit.\n return -1;\n };\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./lib/base64.js\n ** module id = 3\n ** module chunks = 0\n **/","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n{\n /**\n * This is a helper function for getting values from parameter/options\n * objects.\n *\n * @param args The object we are extracting values from\n * @param name The name of the property we are getting.\n * @param defaultValue An optional value to return if the property is missing\n * from the object. If this is not specified and the property is missing, an\n * error will be thrown.\n */\n function getArg(aArgs, aName, aDefaultValue) {\n if (aName in aArgs) {\n return aArgs[aName];\n } else if (arguments.length === 3) {\n return aDefaultValue;\n } else {\n throw new Error('\"' + aName + '\" is a required argument.');\n }\n }\n exports.getArg = getArg;\n\n var urlRegexp = /^(?:([\\w+\\-.]+):)?\\/\\/(?:(\\w+:\\w+)@)?([\\w.]*)(?::(\\d+))?(\\S*)$/;\n var dataUrlRegexp = /^data:.+\\,.+$/;\n\n function urlParse(aUrl) {\n var match = aUrl.match(urlRegexp);\n if (!match) {\n return null;\n }\n return {\n scheme: match[1],\n auth: match[2],\n host: match[3],\n port: match[4],\n path: match[5]\n };\n }\n exports.urlParse = urlParse;\n\n function urlGenerate(aParsedUrl) {\n var url = '';\n if (aParsedUrl.scheme) {\n url += aParsedUrl.scheme + ':';\n }\n url += '//';\n if (aParsedUrl.auth) {\n url += aParsedUrl.auth + '@';\n }\n if (aParsedUrl.host) {\n url += aParsedUrl.host;\n }\n if (aParsedUrl.port) {\n url += \":\" + aParsedUrl.port\n }\n if (aParsedUrl.path) {\n url += aParsedUrl.path;\n }\n return url;\n }\n exports.urlGenerate = urlGenerate;\n\n /**\n * Normalizes a path, or the path portion of a URL:\n *\n * - Replaces consequtive slashes with one slash.\n * - Removes unnecessary '.' parts.\n * - Removes unnecessary '/..' parts.\n *\n * Based on code in the Node.js 'path' core module.\n *\n * @param aPath The path or url to normalize.\n */\n function normalize(aPath) {\n var path = aPath;\n var url = urlParse(aPath);\n if (url) {\n if (!url.path) {\n return aPath;\n }\n path = url.path;\n }\n var isAbsolute = exports.isAbsolute(path);\n\n var parts = path.split(/\\/+/);\n for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {\n part = parts[i];\n if (part === '.') {\n parts.splice(i, 1);\n } else if (part === '..') {\n up++;\n } else if (up > 0) {\n if (part === '') {\n // The first part is blank if the path is absolute. Trying to go\n // above the root is a no-op. Therefore we can remove all '..' parts\n // directly after the root.\n parts.splice(i + 1, up);\n up = 0;\n } else {\n parts.splice(i, 2);\n up--;\n }\n }\n }\n path = parts.join('/');\n\n if (path === '') {\n path = isAbsolute ? '/' : '.';\n }\n\n if (url) {\n url.path = path;\n return urlGenerate(url);\n }\n return path;\n }\n exports.normalize = normalize;\n\n /**\n * Joins two paths/URLs.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be joined with the root.\n *\n * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a\n * scheme-relative URL: Then the scheme of aRoot, if any, is prepended\n * first.\n * - Otherwise aPath is a path. If aRoot is a URL, then its path portion\n * is updated with the result and aRoot is returned. Otherwise the result\n * is returned.\n * - If aPath is absolute, the result is aPath.\n * - Otherwise the two paths are joined with a slash.\n * - Joining for example 'http://' and 'www.example.com' is also supported.\n */\n function join(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n if (aPath === \"\") {\n aPath = \".\";\n }\n var aPathUrl = urlParse(aPath);\n var aRootUrl = urlParse(aRoot);\n if (aRootUrl) {\n aRoot = aRootUrl.path || '/';\n }\n\n // `join(foo, '//www.example.org')`\n if (aPathUrl && !aPathUrl.scheme) {\n if (aRootUrl) {\n aPathUrl.scheme = aRootUrl.scheme;\n }\n return urlGenerate(aPathUrl);\n }\n\n if (aPathUrl || aPath.match(dataUrlRegexp)) {\n return aPath;\n }\n\n // `join('http://', 'www.example.com')`\n if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {\n aRootUrl.host = aPath;\n return urlGenerate(aRootUrl);\n }\n\n var joined = aPath.charAt(0) === '/'\n ? aPath\n : normalize(aRoot.replace(/\\/+$/, '') + '/' + aPath);\n\n if (aRootUrl) {\n aRootUrl.path = joined;\n return urlGenerate(aRootUrl);\n }\n return joined;\n }\n exports.join = join;\n\n exports.isAbsolute = function (aPath) {\n return aPath.charAt(0) === '/' || !!aPath.match(urlRegexp);\n };\n\n /**\n * Make a path relative to a URL or another path.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be made relative to aRoot.\n */\n function relative(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n\n aRoot = aRoot.replace(/\\/$/, '');\n\n // It is possible for the path to be above the root. In this case, simply\n // checking whether the root is a prefix of the path won't work. Instead, we\n // need to remove components from the root one by one, until either we find\n // a prefix that fits, or we run out of components to remove.\n var level = 0;\n while (aPath.indexOf(aRoot + '/') !== 0) {\n var index = aRoot.lastIndexOf(\"/\");\n if (index < 0) {\n return aPath;\n }\n\n // If the only part of the root that is left is the scheme (i.e. http://,\n // file:///, etc.), one or more slashes (/), or simply nothing at all, we\n // have exhausted all components, so the path is not relative to the root.\n aRoot = aRoot.slice(0, index);\n if (aRoot.match(/^([^\\/]+:\\/)?\\/*$/)) {\n return aPath;\n }\n\n ++level;\n }\n\n // Make sure we add a \"../\" for each component we removed from the root.\n return Array(level + 1).join(\"../\") + aPath.substr(aRoot.length + 1);\n }\n exports.relative = relative;\n\n /**\n * Because behavior goes wacky when you set `__proto__` on objects, we\n * have to prefix all the strings in our set with an arbitrary character.\n *\n * See https://github.com/mozilla/source-map/pull/31 and\n * https://github.com/mozilla/source-map/issues/30\n *\n * @param String aStr\n */\n function toSetString(aStr) {\n return '$' + aStr;\n }\n exports.toSetString = toSetString;\n\n function fromSetString(aStr) {\n return aStr.substr(1);\n }\n exports.fromSetString = fromSetString;\n\n /**\n * Comparator between two mappings where the original positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same original source/line/column, but different generated\n * line and column the same. Useful when searching for a mapping with a\n * stubbed out mapping.\n */\n function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {\n var cmp = mappingA.source - mappingB.source;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0 || onlyCompareOriginal) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n return mappingA.name - mappingB.name;\n }\n exports.compareByOriginalPositions = compareByOriginalPositions;\n\n /**\n * Comparator between two mappings with deflated source and name indices where\n * the generated positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same generated line and column, but different\n * source/name/original line and column the same. Useful when searching for a\n * mapping with a stubbed out mapping.\n */\n function compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0 || onlyCompareGenerated) {\n return cmp;\n }\n\n cmp = mappingA.source - mappingB.source;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n return mappingA.name - mappingB.name;\n }\n exports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;\n\n function strcmp(aStr1, aStr2) {\n if (aStr1 === aStr2) {\n return 0;\n }\n\n if (aStr1 > aStr2) {\n return 1;\n }\n\n return -1;\n }\n\n /**\n * Comparator between two mappings with inflated source and name strings where\n * the generated positions are compared.\n */\n function compareByGeneratedPositionsInflated(mappingA, mappingB) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n }\n exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./lib/util.js\n ** module id = 4\n ** module chunks = 0\n **/","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n{\n var util = require('./util');\n\n /**\n * A data structure which is a combination of an array and a set. Adding a new\n * member is O(1), testing for membership is O(1), and finding the index of an\n * element is O(1). Removing elements from the set is not supported. Only\n * strings are supported for membership.\n */\n function ArraySet() {\n this._array = [];\n this._set = {};\n }\n\n /**\n * Static method for creating ArraySet instances from an existing array.\n */\n ArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {\n var set = new ArraySet();\n for (var i = 0, len = aArray.length; i < len; i++) {\n set.add(aArray[i], aAllowDuplicates);\n }\n return set;\n };\n\n /**\n * Return how many unique items are in this ArraySet. If duplicates have been\n * added, than those do not count towards the size.\n *\n * @returns Number\n */\n ArraySet.prototype.size = function ArraySet_size() {\n return Object.getOwnPropertyNames(this._set).length;\n };\n\n /**\n * Add the given string to this set.\n *\n * @param String aStr\n */\n ArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {\n var sStr = util.toSetString(aStr);\n var isDuplicate = this._set.hasOwnProperty(sStr);\n var idx = this._array.length;\n if (!isDuplicate || aAllowDuplicates) {\n this._array.push(aStr);\n }\n if (!isDuplicate) {\n this._set[sStr] = idx;\n }\n };\n\n /**\n * Is the given string a member of this set?\n *\n * @param String aStr\n */\n ArraySet.prototype.has = function ArraySet_has(aStr) {\n var sStr = util.toSetString(aStr);\n return this._set.hasOwnProperty(sStr);\n };\n\n /**\n * What is the index of the given string in the array?\n *\n * @param String aStr\n */\n ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {\n var sStr = util.toSetString(aStr);\n if (this._set.hasOwnProperty(sStr)) {\n return this._set[sStr];\n }\n throw new Error('\"' + aStr + '\" is not in the set.');\n };\n\n /**\n * What is the element at the given index?\n *\n * @param Number aIdx\n */\n ArraySet.prototype.at = function ArraySet_at(aIdx) {\n if (aIdx >= 0 && aIdx < this._array.length) {\n return this._array[aIdx];\n }\n throw new Error('No element indexed by ' + aIdx);\n };\n\n /**\n * Returns the array representation of this set (which has the proper indices\n * indicated by indexOf). Note that this is a copy of the internal array used\n * for storing the members so that no one can mess with internal state.\n */\n ArraySet.prototype.toArray = function ArraySet_toArray() {\n return this._array.slice();\n };\n\n exports.ArraySet = ArraySet;\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./lib/array-set.js\n ** module id = 5\n ** module chunks = 0\n **/","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2014 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n{\n var util = require('./util');\n\n /**\n * Determine whether mappingB is after mappingA with respect to generated\n * position.\n */\n function generatedPositionAfter(mappingA, mappingB) {\n // Optimized for most common case\n var lineA = mappingA.generatedLine;\n var lineB = mappingB.generatedLine;\n var columnA = mappingA.generatedColumn;\n var columnB = mappingB.generatedColumn;\n return lineB > lineA || lineB == lineA && columnB >= columnA ||\n util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0;\n }\n\n /**\n * A data structure to provide a sorted view of accumulated mappings in a\n * performance conscious manner. It trades a neglibable overhead in general\n * case for a large speedup in case of mappings being added in order.\n */\n function MappingList() {\n this._array = [];\n this._sorted = true;\n // Serves as infimum\n this._last = {generatedLine: -1, generatedColumn: 0};\n }\n\n /**\n * Iterate through internal items. This method takes the same arguments that\n * `Array.prototype.forEach` takes.\n *\n * NOTE: The order of the mappings is NOT guaranteed.\n */\n MappingList.prototype.unsortedForEach =\n function MappingList_forEach(aCallback, aThisArg) {\n this._array.forEach(aCallback, aThisArg);\n };\n\n /**\n * Add the given source mapping.\n *\n * @param Object aMapping\n */\n MappingList.prototype.add = function MappingList_add(aMapping) {\n if (generatedPositionAfter(this._last, aMapping)) {\n this._last = aMapping;\n this._array.push(aMapping);\n } else {\n this._sorted = false;\n this._array.push(aMapping);\n }\n };\n\n /**\n * Returns the flat, sorted array of mappings. The mappings are sorted by\n * generated position.\n *\n * WARNING: This method returns internal data without copying, for\n * performance. The return value must NOT be mutated, and should be treated as\n * an immutable borrow. If you want to take ownership, you must make your own\n * copy.\n */\n MappingList.prototype.toArray = function MappingList_toArray() {\n if (!this._sorted) {\n this._array.sort(util.compareByGeneratedPositionsInflated);\n this._sorted = true;\n }\n return this._array;\n };\n\n exports.MappingList = MappingList;\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./lib/mapping-list.js\n ** module id = 6\n ** module chunks = 0\n **/","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n{\n var util = require('./util');\n var binarySearch = require('./binary-search');\n var ArraySet = require('./array-set').ArraySet;\n var base64VLQ = require('./base64-vlq');\n var quickSort = require('./quick-sort').quickSort;\n\n function SourceMapConsumer(aSourceMap) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/, ''));\n }\n\n return sourceMap.sections != null\n ? new IndexedSourceMapConsumer(sourceMap)\n : new BasicSourceMapConsumer(sourceMap);\n }\n\n SourceMapConsumer.fromSourceMap = function(aSourceMap) {\n return BasicSourceMapConsumer.fromSourceMap(aSourceMap);\n }\n\n /**\n * The version of the source mapping spec that we are consuming.\n */\n SourceMapConsumer.prototype._version = 3;\n\n // `__generatedMappings` and `__originalMappings` are arrays that hold the\n // parsed mapping coordinates from the source map's \"mappings\" attribute. They\n // are lazily instantiated, accessed via the `_generatedMappings` and\n // `_originalMappings` getters respectively, and we only parse the mappings\n // and create these arrays once queried for a source location. We jump through\n // these hoops because there can be many thousands of mappings, and parsing\n // them is expensive, so we only want to do it if we must.\n //\n // Each object in the arrays is of the form:\n //\n // {\n // generatedLine: The line number in the generated code,\n // generatedColumn: The column number in the generated code,\n // source: The path to the original source file that generated this\n // chunk of code,\n // originalLine: The line number in the original source that\n // corresponds to this chunk of generated code,\n // originalColumn: The column number in the original source that\n // corresponds to this chunk of generated code,\n // name: The name of the original symbol which generated this chunk of\n // code.\n // }\n //\n // All properties except for `generatedLine` and `generatedColumn` can be\n // `null`.\n //\n // `_generatedMappings` is ordered by the generated positions.\n //\n // `_originalMappings` is ordered by the original positions.\n\n SourceMapConsumer.prototype.__generatedMappings = null;\n Object.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {\n get: function () {\n if (!this.__generatedMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__generatedMappings;\n }\n });\n\n SourceMapConsumer.prototype.__originalMappings = null;\n Object.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {\n get: function () {\n if (!this.__originalMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__originalMappings;\n }\n });\n\n SourceMapConsumer.prototype._charIsMappingSeparator =\n function SourceMapConsumer_charIsMappingSeparator(aStr, index) {\n var c = aStr.charAt(index);\n return c === \";\" || c === \",\";\n };\n\n /**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\n SourceMapConsumer.prototype._parseMappings =\n function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n throw new Error(\"Subclasses must implement _parseMappings\");\n };\n\n SourceMapConsumer.GENERATED_ORDER = 1;\n SourceMapConsumer.ORIGINAL_ORDER = 2;\n\n SourceMapConsumer.GREATEST_LOWER_BOUND = 1;\n SourceMapConsumer.LEAST_UPPER_BOUND = 2;\n\n /**\n * Iterate over each mapping between an original source/line/column and a\n * generated line/column in this source map.\n *\n * @param Function aCallback\n * The function that is called with each mapping.\n * @param Object aContext\n * Optional. If specified, this object will be the value of `this` every\n * time that `aCallback` is called.\n * @param aOrder\n * Either `SourceMapConsumer.GENERATED_ORDER` or\n * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to\n * iterate over the mappings sorted by the generated file's line/column\n * order or the original's source/line/column order, respectively. Defaults to\n * `SourceMapConsumer.GENERATED_ORDER`.\n */\n SourceMapConsumer.prototype.eachMapping =\n function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {\n var context = aContext || null;\n var order = aOrder || SourceMapConsumer.GENERATED_ORDER;\n\n var mappings;\n switch (order) {\n case SourceMapConsumer.GENERATED_ORDER:\n mappings = this._generatedMappings;\n break;\n case SourceMapConsumer.ORIGINAL_ORDER:\n mappings = this._originalMappings;\n break;\n default:\n throw new Error(\"Unknown order of iteration.\");\n }\n\n var sourceRoot = this.sourceRoot;\n mappings.map(function (mapping) {\n var source = mapping.source === null ? null : this._sources.at(mapping.source);\n if (source != null && sourceRoot != null) {\n source = util.join(sourceRoot, source);\n }\n return {\n source: source,\n generatedLine: mapping.generatedLine,\n generatedColumn: mapping.generatedColumn,\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: mapping.name === null ? null : this._names.at(mapping.name)\n };\n }, this).forEach(aCallback, context);\n };\n\n /**\n * Returns all generated line and column information for the original source,\n * line, and column provided. If no column is provided, returns all mappings\n * corresponding to a either the line we are searching for or the next\n * closest line that has any mappings. Otherwise, returns all mappings\n * corresponding to the given line and either the column we are searching for\n * or the next closest column that has any offsets.\n *\n * The only argument is an object with the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source.\n * - column: Optional. the column number in the original source.\n *\n * and an array of objects is returned, each with the following properties:\n *\n * - line: The line number in the generated source, or null.\n * - column: The column number in the generated source, or null.\n */\n SourceMapConsumer.prototype.allGeneratedPositionsFor =\n function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {\n var line = util.getArg(aArgs, 'line');\n\n // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping\n // returns the index of the closest mapping less than the needle. By\n // setting needle.originalColumn to 0, we thus find the last mapping for\n // the given line, provided such a mapping exists.\n var needle = {\n source: util.getArg(aArgs, 'source'),\n originalLine: line,\n originalColumn: util.getArg(aArgs, 'column', 0)\n };\n\n if (this.sourceRoot != null) {\n needle.source = util.relative(this.sourceRoot, needle.source);\n }\n if (!this._sources.has(needle.source)) {\n return [];\n }\n needle.source = this._sources.indexOf(needle.source);\n\n var mappings = [];\n\n var index = this._findMapping(needle,\n this._originalMappings,\n \"originalLine\",\n \"originalColumn\",\n util.compareByOriginalPositions,\n binarySearch.LEAST_UPPER_BOUND);\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n\n if (aArgs.column === undefined) {\n var originalLine = mapping.originalLine;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we found. Since\n // mappings are sorted, this is guaranteed to find all mappings for\n // the line we found.\n while (mapping && mapping.originalLine === originalLine) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n\n mapping = this._originalMappings[++index];\n }\n } else {\n var originalColumn = mapping.originalColumn;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we were searching for.\n // Since mappings are sorted, this is guaranteed to find all mappings for\n // the line we are searching for.\n while (mapping &&\n mapping.originalLine === line &&\n mapping.originalColumn == originalColumn) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n\n mapping = this._originalMappings[++index];\n }\n }\n }\n\n return mappings;\n };\n\n exports.SourceMapConsumer = SourceMapConsumer;\n\n /**\n * A BasicSourceMapConsumer instance represents a parsed source map which we can\n * query for information about the original file positions by giving it a file\n * position in the generated source.\n *\n * The only parameter is the raw source map (either as a JSON string, or\n * already parsed to an object). According to the spec, source maps have the\n * following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - sources: An array of URLs to the original source files.\n * - names: An array of identifiers which can be referrenced by individual mappings.\n * - sourceRoot: Optional. The URL root from which all sources are relative.\n * - sourcesContent: Optional. An array of contents of the original source files.\n * - mappings: A string of base64 VLQs which contain the actual mappings.\n * - file: Optional. The generated file this source map is associated with.\n *\n * Here is an example source map, taken from the source map spec[0]:\n *\n * {\n * version : 3,\n * file: \"out.js\",\n * sourceRoot : \"\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AA,AB;;ABCDE;\"\n * }\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#\n */\n function BasicSourceMapConsumer(aSourceMap) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/, ''));\n }\n\n var version = util.getArg(sourceMap, 'version');\n var sources = util.getArg(sourceMap, 'sources');\n // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which\n // requires the array) to play nice here.\n var names = util.getArg(sourceMap, 'names', []);\n var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);\n var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);\n var mappings = util.getArg(sourceMap, 'mappings');\n var file = util.getArg(sourceMap, 'file', null);\n\n // Once again, Sass deviates from the spec and supplies the version as a\n // string rather than a number, so we use loose equality checking here.\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n\n sources = sources\n // Some source maps produce relative source paths like \"./foo.js\" instead of\n // \"foo.js\". Normalize these first so that future comparisons will succeed.\n // See bugzil.la/1090768.\n .map(util.normalize)\n // Always ensure that absolute sources are internally stored relative to\n // the source root, if the source root is absolute. Not doing this would\n // be particularly problematic when the source root is a prefix of the\n // source (valid, but why??). See github issue #199 and bugzil.la/1188982.\n .map(function (source) {\n return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source)\n ? util.relative(sourceRoot, source)\n : source;\n });\n\n // Pass `true` below to allow duplicate names and sources. While source maps\n // are intended to be compressed and deduplicated, the TypeScript compiler\n // sometimes generates source maps with duplicates in them. See Github issue\n // #72 and bugzil.la/889492.\n this._names = ArraySet.fromArray(names, true);\n this._sources = ArraySet.fromArray(sources, true);\n\n this.sourceRoot = sourceRoot;\n this.sourcesContent = sourcesContent;\n this._mappings = mappings;\n this.file = file;\n }\n\n BasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\n BasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;\n\n /**\n * Create a BasicSourceMapConsumer from a SourceMapGenerator.\n *\n * @param SourceMapGenerator aSourceMap\n * The source map that will be consumed.\n * @returns BasicSourceMapConsumer\n */\n BasicSourceMapConsumer.fromSourceMap =\n function SourceMapConsumer_fromSourceMap(aSourceMap) {\n var smc = Object.create(BasicSourceMapConsumer.prototype);\n\n var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);\n var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);\n smc.sourceRoot = aSourceMap._sourceRoot;\n smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),\n smc.sourceRoot);\n smc.file = aSourceMap._file;\n\n // Because we are modifying the entries (by converting string sources and\n // names to indices into the sources and names ArraySets), we have to make\n // a copy of the entry or else bad things happen. Shared mutable state\n // strikes again! See github issue #191.\n\n var generatedMappings = aSourceMap._mappings.toArray().slice();\n var destGeneratedMappings = smc.__generatedMappings = [];\n var destOriginalMappings = smc.__originalMappings = [];\n\n for (var i = 0, length = generatedMappings.length; i < length; i++) {\n var srcMapping = generatedMappings[i];\n var destMapping = new Mapping;\n destMapping.generatedLine = srcMapping.generatedLine;\n destMapping.generatedColumn = srcMapping.generatedColumn;\n\n if (srcMapping.source) {\n destMapping.source = sources.indexOf(srcMapping.source);\n destMapping.originalLine = srcMapping.originalLine;\n destMapping.originalColumn = srcMapping.originalColumn;\n\n if (srcMapping.name) {\n destMapping.name = names.indexOf(srcMapping.name);\n }\n\n destOriginalMappings.push(destMapping);\n }\n\n destGeneratedMappings.push(destMapping);\n }\n\n quickSort(smc.__originalMappings, util.compareByOriginalPositions);\n\n return smc;\n };\n\n /**\n * The version of the source mapping spec that we are consuming.\n */\n BasicSourceMapConsumer.prototype._version = 3;\n\n /**\n * The list of original sources.\n */\n Object.defineProperty(BasicSourceMapConsumer.prototype, 'sources', {\n get: function () {\n return this._sources.toArray().map(function (s) {\n return this.sourceRoot != null ? util.join(this.sourceRoot, s) : s;\n }, this);\n }\n });\n\n /**\n * Provide the JIT with a nice shape / hidden class.\n */\n function Mapping() {\n this.generatedLine = 0;\n this.generatedColumn = 0;\n this.source = null;\n this.originalLine = null;\n this.originalColumn = null;\n this.name = null;\n }\n\n /**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\n BasicSourceMapConsumer.prototype._parseMappings =\n function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n var generatedLine = 1;\n var previousGeneratedColumn = 0;\n var previousOriginalLine = 0;\n var previousOriginalColumn = 0;\n var previousSource = 0;\n var previousName = 0;\n var length = aStr.length;\n var index = 0;\n var cachedSegments = {};\n var temp = {};\n var originalMappings = [];\n var generatedMappings = [];\n var mapping, str, segment, end, value;\n\n while (index < length) {\n if (aStr.charAt(index) === ';') {\n generatedLine++;\n index++;\n previousGeneratedColumn = 0;\n }\n else if (aStr.charAt(index) === ',') {\n index++;\n }\n else {\n mapping = new Mapping();\n mapping.generatedLine = generatedLine;\n\n // Because each offset is encoded relative to the previous one,\n // many segments often have the same encoding. We can exploit this\n // fact by caching the parsed variable length fields of each segment,\n // allowing us to avoid a second parse if we encounter the same\n // segment again.\n for (end = index; end < length; end++) {\n if (this._charIsMappingSeparator(aStr, end)) {\n break;\n }\n }\n str = aStr.slice(index, end);\n\n segment = cachedSegments[str];\n if (segment) {\n index += str.length;\n } else {\n segment = [];\n while (index < end) {\n base64VLQ.decode(aStr, index, temp);\n value = temp.value;\n index = temp.rest;\n segment.push(value);\n }\n\n if (segment.length === 2) {\n throw new Error('Found a source, but no line and column');\n }\n\n if (segment.length === 3) {\n throw new Error('Found a source and line, but no column');\n }\n\n cachedSegments[str] = segment;\n }\n\n // Generated column.\n mapping.generatedColumn = previousGeneratedColumn + segment[0];\n previousGeneratedColumn = mapping.generatedColumn;\n\n if (segment.length > 1) {\n // Original source.\n mapping.source = previousSource + segment[1];\n previousSource += segment[1];\n\n // Original line.\n mapping.originalLine = previousOriginalLine + segment[2];\n previousOriginalLine = mapping.originalLine;\n // Lines are stored 0-based\n mapping.originalLine += 1;\n\n // Original column.\n mapping.originalColumn = previousOriginalColumn + segment[3];\n previousOriginalColumn = mapping.originalColumn;\n\n if (segment.length > 4) {\n // Original name.\n mapping.name = previousName + segment[4];\n previousName += segment[4];\n }\n }\n\n generatedMappings.push(mapping);\n if (typeof mapping.originalLine === 'number') {\n originalMappings.push(mapping);\n }\n }\n }\n\n quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated);\n this.__generatedMappings = generatedMappings;\n\n quickSort(originalMappings, util.compareByOriginalPositions);\n this.__originalMappings = originalMappings;\n };\n\n /**\n * Find the mapping that best matches the hypothetical \"needle\" mapping that\n * we are searching for in the given \"haystack\" of mappings.\n */\n BasicSourceMapConsumer.prototype._findMapping =\n function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,\n aColumnName, aComparator, aBias) {\n // To return the position we are searching for, we must first find the\n // mapping for the given position and then return the opposite position it\n // points to. Because the mappings are sorted, we can use binary search to\n // find the best mapping.\n\n if (aNeedle[aLineName] <= 0) {\n throw new TypeError('Line must be greater than or equal to 1, got '\n + aNeedle[aLineName]);\n }\n if (aNeedle[aColumnName] < 0) {\n throw new TypeError('Column must be greater than or equal to 0, got '\n + aNeedle[aColumnName]);\n }\n\n return binarySearch.search(aNeedle, aMappings, aComparator, aBias);\n };\n\n /**\n * Compute the last column for each generated mapping. The last column is\n * inclusive.\n */\n BasicSourceMapConsumer.prototype.computeColumnSpans =\n function SourceMapConsumer_computeColumnSpans() {\n for (var index = 0; index < this._generatedMappings.length; ++index) {\n var mapping = this._generatedMappings[index];\n\n // Mappings do not contain a field for the last generated columnt. We\n // can come up with an optimistic estimate, however, by assuming that\n // mappings are contiguous (i.e. given two consecutive mappings, the\n // first mapping ends where the second one starts).\n if (index + 1 < this._generatedMappings.length) {\n var nextMapping = this._generatedMappings[index + 1];\n\n if (mapping.generatedLine === nextMapping.generatedLine) {\n mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;\n continue;\n }\n }\n\n // The last mapping for each line spans the entire line.\n mapping.lastGeneratedColumn = Infinity;\n }\n };\n\n /**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source.\n * - column: The column number in the generated source.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null.\n * - column: The column number in the original source, or null.\n * - name: The original identifier, or null.\n */\n BasicSourceMapConsumer.prototype.originalPositionFor =\n function SourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n var index = this._findMapping(\n needle,\n this._generatedMappings,\n \"generatedLine\",\n \"generatedColumn\",\n util.compareByGeneratedPositionsDeflated,\n util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n );\n\n if (index >= 0) {\n var mapping = this._generatedMappings[index];\n\n if (mapping.generatedLine === needle.generatedLine) {\n var source = util.getArg(mapping, 'source', null);\n if (source !== null) {\n source = this._sources.at(source);\n if (this.sourceRoot != null) {\n source = util.join(this.sourceRoot, source);\n }\n }\n var name = util.getArg(mapping, 'name', null);\n if (name !== null) {\n name = this._names.at(name);\n }\n return {\n source: source,\n line: util.getArg(mapping, 'originalLine', null),\n column: util.getArg(mapping, 'originalColumn', null),\n name: name\n };\n }\n }\n\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n };\n\n /**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\n BasicSourceMapConsumer.prototype.hasContentsOfAllSources =\n function BasicSourceMapConsumer_hasContentsOfAllSources() {\n if (!this.sourcesContent) {\n return false;\n }\n return this.sourcesContent.length >= this._sources.size() &&\n !this.sourcesContent.some(function (sc) { return sc == null; });\n };\n\n /**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\n BasicSourceMapConsumer.prototype.sourceContentFor =\n function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n if (!this.sourcesContent) {\n return null;\n }\n\n if (this.sourceRoot != null) {\n aSource = util.relative(this.sourceRoot, aSource);\n }\n\n if (this._sources.has(aSource)) {\n return this.sourcesContent[this._sources.indexOf(aSource)];\n }\n\n var url;\n if (this.sourceRoot != null\n && (url = util.urlParse(this.sourceRoot))) {\n // XXX: file:// URIs and absolute paths lead to unexpected behavior for\n // many users. We can help them out when they expect file:// URIs to\n // behave like it would if they were running a local HTTP server. See\n // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.\n var fileUriAbsPath = aSource.replace(/^file:\\/\\//, \"\");\n if (url.scheme == \"file\"\n && this._sources.has(fileUriAbsPath)) {\n return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]\n }\n\n if ((!url.path || url.path == \"/\")\n && this._sources.has(\"/\" + aSource)) {\n return this.sourcesContent[this._sources.indexOf(\"/\" + aSource)];\n }\n }\n\n // This function is used recursively from\n // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we\n // don't want to throw if we can't find the source - we just want to\n // return null, so we provide a flag to exit gracefully.\n if (nullOnMissing) {\n return null;\n }\n else {\n throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n }\n };\n\n /**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source.\n * - column: The column number in the original source.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null.\n * - column: The column number in the generated source, or null.\n */\n BasicSourceMapConsumer.prototype.generatedPositionFor =\n function SourceMapConsumer_generatedPositionFor(aArgs) {\n var source = util.getArg(aArgs, 'source');\n if (this.sourceRoot != null) {\n source = util.relative(this.sourceRoot, source);\n }\n if (!this._sources.has(source)) {\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n }\n source = this._sources.indexOf(source);\n\n var needle = {\n source: source,\n originalLine: util.getArg(aArgs, 'line'),\n originalColumn: util.getArg(aArgs, 'column')\n };\n\n var index = this._findMapping(\n needle,\n this._originalMappings,\n \"originalLine\",\n \"originalColumn\",\n util.compareByOriginalPositions,\n util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n );\n\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n\n if (mapping.source === needle.source) {\n return {\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n };\n }\n }\n\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n };\n\n exports.BasicSourceMapConsumer = BasicSourceMapConsumer;\n\n /**\n * An IndexedSourceMapConsumer instance represents a parsed source map which\n * we can query for information. It differs from BasicSourceMapConsumer in\n * that it takes \"indexed\" source maps (i.e. ones with a \"sections\" field) as\n * input.\n *\n * The only parameter is a raw source map (either as a JSON string, or already\n * parsed to an object). According to the spec for indexed source maps, they\n * have the following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - file: Optional. The generated file this source map is associated with.\n * - sections: A list of section definitions.\n *\n * Each value under the \"sections\" field has two fields:\n * - offset: The offset into the original specified at which this section\n * begins to apply, defined as an object with a \"line\" and \"column\"\n * field.\n * - map: A source map definition. This source map could also be indexed,\n * but doesn't have to be.\n *\n * Instead of the \"map\" field, it's also possible to have a \"url\" field\n * specifying a URL to retrieve a source map from, but that's currently\n * unsupported.\n *\n * Here's an example source map, taken from the source map spec[0], but\n * modified to omit a section which uses the \"url\" field.\n *\n * {\n * version : 3,\n * file: \"app.js\",\n * sections: [{\n * offset: {line:100, column:10},\n * map: {\n * version : 3,\n * file: \"section.js\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AAAA,E;;ABCDE;\"\n * }\n * }],\n * }\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt\n */\n function IndexedSourceMapConsumer(aSourceMap) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/, ''));\n }\n\n var version = util.getArg(sourceMap, 'version');\n var sections = util.getArg(sourceMap, 'sections');\n\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n\n this._sources = new ArraySet();\n this._names = new ArraySet();\n\n var lastOffset = {\n line: -1,\n column: 0\n };\n this._sections = sections.map(function (s) {\n if (s.url) {\n // The url field will require support for asynchronicity.\n // See https://github.com/mozilla/source-map/issues/16\n throw new Error('Support for url field in sections not implemented.');\n }\n var offset = util.getArg(s, 'offset');\n var offsetLine = util.getArg(offset, 'line');\n var offsetColumn = util.getArg(offset, 'column');\n\n if (offsetLine < lastOffset.line ||\n (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) {\n throw new Error('Section offsets must be ordered and non-overlapping.');\n }\n lastOffset = offset;\n\n return {\n generatedOffset: {\n // The offset fields are 0-based, but we use 1-based indices when\n // encoding/decoding from VLQ.\n generatedLine: offsetLine + 1,\n generatedColumn: offsetColumn + 1\n },\n consumer: new SourceMapConsumer(util.getArg(s, 'map'))\n }\n });\n }\n\n IndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\n IndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;\n\n /**\n * The version of the source mapping spec that we are consuming.\n */\n IndexedSourceMapConsumer.prototype._version = 3;\n\n /**\n * The list of original sources.\n */\n Object.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', {\n get: function () {\n var sources = [];\n for (var i = 0; i < this._sections.length; i++) {\n for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {\n sources.push(this._sections[i].consumer.sources[j]);\n }\n }\n return sources;\n }\n });\n\n /**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source.\n * - column: The column number in the generated source.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null.\n * - column: The column number in the original source, or null.\n * - name: The original identifier, or null.\n */\n IndexedSourceMapConsumer.prototype.originalPositionFor =\n function IndexedSourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n // Find the section containing the generated position we're trying to map\n // to an original position.\n var sectionIndex = binarySearch.search(needle, this._sections,\n function(needle, section) {\n var cmp = needle.generatedLine - section.generatedOffset.generatedLine;\n if (cmp) {\n return cmp;\n }\n\n return (needle.generatedColumn -\n section.generatedOffset.generatedColumn);\n });\n var section = this._sections[sectionIndex];\n\n if (!section) {\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n }\n\n return section.consumer.originalPositionFor({\n line: needle.generatedLine -\n (section.generatedOffset.generatedLine - 1),\n column: needle.generatedColumn -\n (section.generatedOffset.generatedLine === needle.generatedLine\n ? section.generatedOffset.generatedColumn - 1\n : 0),\n bias: aArgs.bias\n });\n };\n\n /**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\n IndexedSourceMapConsumer.prototype.hasContentsOfAllSources =\n function IndexedSourceMapConsumer_hasContentsOfAllSources() {\n return this._sections.every(function (s) {\n return s.consumer.hasContentsOfAllSources();\n });\n };\n\n /**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\n IndexedSourceMapConsumer.prototype.sourceContentFor =\n function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n\n var content = section.consumer.sourceContentFor(aSource, true);\n if (content) {\n return content;\n }\n }\n if (nullOnMissing) {\n return null;\n }\n else {\n throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n }\n };\n\n /**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source.\n * - column: The column number in the original source.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null.\n * - column: The column number in the generated source, or null.\n */\n IndexedSourceMapConsumer.prototype.generatedPositionFor =\n function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n\n // Only consider this section if the requested source is in the list of\n // sources of the consumer.\n if (section.consumer.sources.indexOf(util.getArg(aArgs, 'source')) === -1) {\n continue;\n }\n var generatedPosition = section.consumer.generatedPositionFor(aArgs);\n if (generatedPosition) {\n var ret = {\n line: generatedPosition.line +\n (section.generatedOffset.generatedLine - 1),\n column: generatedPosition.column +\n (section.generatedOffset.generatedLine === generatedPosition.line\n ? section.generatedOffset.generatedColumn - 1\n : 0)\n };\n return ret;\n }\n }\n\n return {\n line: null,\n column: null\n };\n };\n\n /**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\n IndexedSourceMapConsumer.prototype._parseMappings =\n function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n this.__generatedMappings = [];\n this.__originalMappings = [];\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n var sectionMappings = section.consumer._generatedMappings;\n for (var j = 0; j < sectionMappings.length; j++) {\n var mapping = sectionMappings[j];\n\n var source = section.consumer._sources.at(mapping.source);\n if (section.consumer.sourceRoot !== null) {\n source = util.join(section.consumer.sourceRoot, source);\n }\n this._sources.add(source);\n source = this._sources.indexOf(source);\n\n var name = section.consumer._names.at(mapping.name);\n this._names.add(name);\n name = this._names.indexOf(name);\n\n // The mappings coming from the consumer for the section have\n // generated positions relative to the start of the section, so we\n // need to offset them to be relative to the start of the concatenated\n // generated file.\n var adjustedMapping = {\n source: source,\n generatedLine: mapping.generatedLine +\n (section.generatedOffset.generatedLine - 1),\n generatedColumn: mapping.generatedColumn +\n (section.generatedOffset.generatedLine === mapping.generatedLine\n ? section.generatedOffset.generatedColumn - 1\n : 0),\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: name\n };\n\n this.__generatedMappings.push(adjustedMapping);\n if (typeof adjustedMapping.originalLine === 'number') {\n this.__originalMappings.push(adjustedMapping);\n }\n }\n }\n\n quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);\n quickSort(this.__originalMappings, util.compareByOriginalPositions);\n };\n\n exports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./lib/source-map-consumer.js\n ** module id = 7\n ** module chunks = 0\n **/","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n{\n exports.GREATEST_LOWER_BOUND = 1;\n exports.LEAST_UPPER_BOUND = 2;\n\n /**\n * Recursive implementation of binary search.\n *\n * @param aLow Indices here and lower do not contain the needle.\n * @param aHigh Indices here and higher do not contain the needle.\n * @param aNeedle The element being searched for.\n * @param aHaystack The non-empty array being searched.\n * @param aCompare Function which takes two elements and returns -1, 0, or 1.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n */\n function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {\n // This function terminates when one of the following is true:\n //\n // 1. We find the exact element we are looking for.\n //\n // 2. We did not find the exact element, but we can return the index of\n // the next-closest element.\n //\n // 3. We did not find the exact element, and there is no next-closest\n // element than the one we are searching for, so we return -1.\n var mid = Math.floor((aHigh - aLow) / 2) + aLow;\n var cmp = aCompare(aNeedle, aHaystack[mid], true);\n if (cmp === 0) {\n // Found the element we are looking for.\n return mid;\n }\n else if (cmp > 0) {\n // Our needle is greater than aHaystack[mid].\n if (aHigh - mid > 1) {\n // The element is in the upper half.\n return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // The exact needle element was not found in this haystack. Determine if\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return aHigh < aHaystack.length ? aHigh : -1;\n } else {\n return mid;\n }\n }\n else {\n // Our needle is less than aHaystack[mid].\n if (mid - aLow > 1) {\n // The element is in the lower half.\n return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return mid;\n } else {\n return aLow < 0 ? -1 : aLow;\n }\n }\n }\n\n /**\n * This is an implementation of binary search which will always try and return\n * the index of the closest element if there is no exact hit. This is because\n * mappings between original and generated line/col pairs are single points,\n * and there is an implicit region between each of them, so a miss just means\n * that you aren't on the very start of a region.\n *\n * @param aNeedle The element you are looking for.\n * @param aHaystack The array that is being searched.\n * @param aCompare A function which takes the needle and an element in the\n * array and returns -1, 0, or 1 depending on whether the needle is less\n * than, equal to, or greater than the element, respectively.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.\n */\n exports.search = function search(aNeedle, aHaystack, aCompare, aBias) {\n if (aHaystack.length === 0) {\n return -1;\n }\n\n var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,\n aCompare, aBias || exports.GREATEST_LOWER_BOUND);\n if (index < 0) {\n return -1;\n }\n\n // We have found either the exact element, or the next-closest element than\n // the one we are searching for. However, there may be more than one such\n // element. Make sure we always return the smallest of these.\n while (index - 1 >= 0) {\n if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {\n break;\n }\n --index;\n }\n\n return index;\n };\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./lib/binary-search.js\n ** module id = 8\n ** module chunks = 0\n **/","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n{\n // It turns out that some (most?) JavaScript engines don't self-host\n // `Array.prototype.sort`. This makes sense because C++ will likely remain\n // faster than JS when doing raw CPU-intensive sorting. However, when using a\n // custom comparator function, calling back and forth between the VM's C++ and\n // JIT'd JS is rather slow *and* loses JIT type information, resulting in\n // worse generated code for the comparator function than would be optimal. In\n // fact, when sorting with a comparator, these costs outweigh the benefits of\n // sorting in C++. By using our own JS-implemented Quick Sort (below), we get\n // a ~3500ms mean speed-up in `bench/bench.html`.\n\n /**\n * Swap the elements indexed by `x` and `y` in the array `ary`.\n *\n * @param {Array} ary\n * The array.\n * @param {Number} x\n * The index of the first item.\n * @param {Number} y\n * The index of the second item.\n */\n function swap(ary, x, y) {\n var temp = ary[x];\n ary[x] = ary[y];\n ary[y] = temp;\n }\n\n /**\n * Returns a random integer within the range `low .. high` inclusive.\n *\n * @param {Number} low\n * The lower bound on the range.\n * @param {Number} high\n * The upper bound on the range.\n */\n function randomIntInRange(low, high) {\n return Math.round(low + (Math.random() * (high - low)));\n }\n\n /**\n * The Quick Sort algorithm.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n * @param {Number} p\n * Start index of the array\n * @param {Number} r\n * End index of the array\n */\n function doQuickSort(ary, comparator, p, r) {\n // If our lower bound is less than our upper bound, we (1) partition the\n // array into two pieces and (2) recurse on each half. If it is not, this is\n // the empty array and our base case.\n\n if (p < r) {\n // (1) Partitioning.\n //\n // The partitioning chooses a pivot between `p` and `r` and moves all\n // elements that are less than or equal to the pivot to the before it, and\n // all the elements that are greater than it after it. The effect is that\n // once partition is done, the pivot is in the exact place it will be when\n // the array is put in sorted order, and it will not need to be moved\n // again. This runs in O(n) time.\n\n // Always choose a random pivot so that an input array which is reverse\n // sorted does not cause O(n^2) running time.\n var pivotIndex = randomIntInRange(p, r);\n var i = p - 1;\n\n swap(ary, pivotIndex, r);\n var pivot = ary[r];\n\n // Immediately after `j` is incremented in this loop, the following hold\n // true:\n //\n // * Every element in `ary[p .. i]` is less than or equal to the pivot.\n //\n // * Every element in `ary[i+1 .. j-1]` is greater than the pivot.\n for (var j = p; j < r; j++) {\n if (comparator(ary[j], pivot) <= 0) {\n i += 1;\n swap(ary, i, j);\n }\n }\n\n swap(ary, i + 1, j);\n var q = i + 1;\n\n // (2) Recurse on each half.\n\n doQuickSort(ary, comparator, p, q - 1);\n doQuickSort(ary, comparator, q + 1, r);\n }\n }\n\n /**\n * Sort the given array in-place with the given comparator function.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n */\n exports.quickSort = function (ary, comparator) {\n doQuickSort(ary, comparator, 0, ary.length - 1);\n };\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./lib/quick-sort.js\n ** module id = 9\n ** module chunks = 0\n **/","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n{\n var SourceMapGenerator = require('./source-map-generator').SourceMapGenerator;\n var util = require('./util');\n\n // Matches a Windows-style `\\r\\n` newline or a `\\n` newline used by all other\n // operating systems these days (capturing the result).\n var REGEX_NEWLINE = /(\\r?\\n)/;\n\n // Newline character code for charCodeAt() comparisons\n var NEWLINE_CODE = 10;\n\n // Private symbol for identifying `SourceNode`s when multiple versions of\n // the source-map library are loaded. This MUST NOT CHANGE across\n // versions!\n var isSourceNode = \"$$$isSourceNode$$$\";\n\n /**\n * SourceNodes provide a way to abstract over interpolating/concatenating\n * snippets of generated JavaScript source code while maintaining the line and\n * column information associated with the original source code.\n *\n * @param aLine The original line number.\n * @param aColumn The original column number.\n * @param aSource The original source's filename.\n * @param aChunks Optional. An array of strings which are snippets of\n * generated JS, or other SourceNodes.\n * @param aName The original identifier.\n */\n function SourceNode(aLine, aColumn, aSource, aChunks, aName) {\n this.children = [];\n this.sourceContents = {};\n this.line = aLine == null ? null : aLine;\n this.column = aColumn == null ? null : aColumn;\n this.source = aSource == null ? null : aSource;\n this.name = aName == null ? null : aName;\n this[isSourceNode] = true;\n if (aChunks != null) this.add(aChunks);\n }\n\n /**\n * Creates a SourceNode from generated code and a SourceMapConsumer.\n *\n * @param aGeneratedCode The generated code\n * @param aSourceMapConsumer The SourceMap for the generated code\n * @param aRelativePath Optional. The path that relative sources in the\n * SourceMapConsumer should be relative to.\n */\n SourceNode.fromStringWithSourceMap =\n function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {\n // The SourceNode we want to fill with the generated code\n // and the SourceMap\n var node = new SourceNode();\n\n // All even indices of this array are one line of the generated code,\n // while all odd indices are the newlines between two adjacent lines\n // (since `REGEX_NEWLINE` captures its match).\n // Processed fragments are removed from this array, by calling `shiftNextLine`.\n var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);\n var shiftNextLine = function() {\n var lineContents = remainingLines.shift();\n // The last line of a file might not have a newline.\n var newLine = remainingLines.shift() || \"\";\n return lineContents + newLine;\n };\n\n // We need to remember the position of \"remainingLines\"\n var lastGeneratedLine = 1, lastGeneratedColumn = 0;\n\n // The generate SourceNodes we need a code range.\n // To extract it current and last mapping is used.\n // Here we store the last mapping.\n var lastMapping = null;\n\n aSourceMapConsumer.eachMapping(function (mapping) {\n if (lastMapping !== null) {\n // We add the code from \"lastMapping\" to \"mapping\":\n // First check if there is a new line in between.\n if (lastGeneratedLine < mapping.generatedLine) {\n // Associate first line with \"lastMapping\"\n addMappingWithCode(lastMapping, shiftNextLine());\n lastGeneratedLine++;\n lastGeneratedColumn = 0;\n // The remaining code is added without mapping\n } else {\n // There is no new line in between.\n // Associate the code between \"lastGeneratedColumn\" and\n // \"mapping.generatedColumn\" with \"lastMapping\"\n var nextLine = remainingLines[0];\n var code = nextLine.substr(0, mapping.generatedColumn -\n lastGeneratedColumn);\n remainingLines[0] = nextLine.substr(mapping.generatedColumn -\n lastGeneratedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n addMappingWithCode(lastMapping, code);\n // No more remaining code, continue\n lastMapping = mapping;\n return;\n }\n }\n // We add the generated code until the first mapping\n // to the SourceNode without any mapping.\n // Each line is added as separate string.\n while (lastGeneratedLine < mapping.generatedLine) {\n node.add(shiftNextLine());\n lastGeneratedLine++;\n }\n if (lastGeneratedColumn < mapping.generatedColumn) {\n var nextLine = remainingLines[0];\n node.add(nextLine.substr(0, mapping.generatedColumn));\n remainingLines[0] = nextLine.substr(mapping.generatedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n }\n lastMapping = mapping;\n }, this);\n // We have processed all mappings.\n if (remainingLines.length > 0) {\n if (lastMapping) {\n // Associate the remaining code in the current line with \"lastMapping\"\n addMappingWithCode(lastMapping, shiftNextLine());\n }\n // and add the remaining lines without any mapping\n node.add(remainingLines.join(\"\"));\n }\n\n // Copy sourcesContent into SourceNode\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n if (aRelativePath != null) {\n sourceFile = util.join(aRelativePath, sourceFile);\n }\n node.setSourceContent(sourceFile, content);\n }\n });\n\n return node;\n\n function addMappingWithCode(mapping, code) {\n if (mapping === null || mapping.source === undefined) {\n node.add(code);\n } else {\n var source = aRelativePath\n ? util.join(aRelativePath, mapping.source)\n : mapping.source;\n node.add(new SourceNode(mapping.originalLine,\n mapping.originalColumn,\n source,\n code,\n mapping.name));\n }\n }\n };\n\n /**\n * Add a chunk of generated JS to this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\n SourceNode.prototype.add = function SourceNode_add(aChunk) {\n if (Array.isArray(aChunk)) {\n aChunk.forEach(function (chunk) {\n this.add(chunk);\n }, this);\n }\n else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n if (aChunk) {\n this.children.push(aChunk);\n }\n }\n else {\n throw new TypeError(\n \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n );\n }\n return this;\n };\n\n /**\n * Add a chunk of generated JS to the beginning of this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\n SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {\n if (Array.isArray(aChunk)) {\n for (var i = aChunk.length-1; i >= 0; i--) {\n this.prepend(aChunk[i]);\n }\n }\n else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n this.children.unshift(aChunk);\n }\n else {\n throw new TypeError(\n \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n );\n }\n return this;\n };\n\n /**\n * Walk over the tree of JS snippets in this node and its children. The\n * walking function is called once for each snippet of JS and is passed that\n * snippet and the its original associated source's line/column location.\n *\n * @param aFn The traversal function.\n */\n SourceNode.prototype.walk = function SourceNode_walk(aFn) {\n var chunk;\n for (var i = 0, len = this.children.length; i < len; i++) {\n chunk = this.children[i];\n if (chunk[isSourceNode]) {\n chunk.walk(aFn);\n }\n else {\n if (chunk !== '') {\n aFn(chunk, { source: this.source,\n line: this.line,\n column: this.column,\n name: this.name });\n }\n }\n }\n };\n\n /**\n * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between\n * each of `this.children`.\n *\n * @param aSep The separator.\n */\n SourceNode.prototype.join = function SourceNode_join(aSep) {\n var newChildren;\n var i;\n var len = this.children.length;\n if (len > 0) {\n newChildren = [];\n for (i = 0; i < len-1; i++) {\n newChildren.push(this.children[i]);\n newChildren.push(aSep);\n }\n newChildren.push(this.children[i]);\n this.children = newChildren;\n }\n return this;\n };\n\n /**\n * Call String.prototype.replace on the very right-most source snippet. Useful\n * for trimming whitespace from the end of a source node, etc.\n *\n * @param aPattern The pattern to replace.\n * @param aReplacement The thing to replace the pattern with.\n */\n SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {\n var lastChild = this.children[this.children.length - 1];\n if (lastChild[isSourceNode]) {\n lastChild.replaceRight(aPattern, aReplacement);\n }\n else if (typeof lastChild === 'string') {\n this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);\n }\n else {\n this.children.push(''.replace(aPattern, aReplacement));\n }\n return this;\n };\n\n /**\n * Set the source content for a source file. This will be added to the SourceMapGenerator\n * in the sourcesContent field.\n *\n * @param aSourceFile The filename of the source file\n * @param aSourceContent The content of the source file\n */\n SourceNode.prototype.setSourceContent =\n function SourceNode_setSourceContent(aSourceFile, aSourceContent) {\n this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;\n };\n\n /**\n * Walk over the tree of SourceNodes. The walking function is called for each\n * source file content and is passed the filename and source content.\n *\n * @param aFn The traversal function.\n */\n SourceNode.prototype.walkSourceContents =\n function SourceNode_walkSourceContents(aFn) {\n for (var i = 0, len = this.children.length; i < len; i++) {\n if (this.children[i][isSourceNode]) {\n this.children[i].walkSourceContents(aFn);\n }\n }\n\n var sources = Object.keys(this.sourceContents);\n for (var i = 0, len = sources.length; i < len; i++) {\n aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);\n }\n };\n\n /**\n * Return the string representation of this source node. Walks over the tree\n * and concatenates all the various snippets together to one string.\n */\n SourceNode.prototype.toString = function SourceNode_toString() {\n var str = \"\";\n this.walk(function (chunk) {\n str += chunk;\n });\n return str;\n };\n\n /**\n * Returns the string representation of this source node along with a source\n * map.\n */\n SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {\n var generated = {\n code: \"\",\n line: 1,\n column: 0\n };\n var map = new SourceMapGenerator(aArgs);\n var sourceMappingActive = false;\n var lastOriginalSource = null;\n var lastOriginalLine = null;\n var lastOriginalColumn = null;\n var lastOriginalName = null;\n this.walk(function (chunk, original) {\n generated.code += chunk;\n if (original.source !== null\n && original.line !== null\n && original.column !== null) {\n if(lastOriginalSource !== original.source\n || lastOriginalLine !== original.line\n || lastOriginalColumn !== original.column\n || lastOriginalName !== original.name) {\n map.addMapping({\n source: original.source,\n original: {\n line: original.line,\n column: original.column\n },\n generated: {\n line: generated.line,\n column: generated.column\n },\n name: original.name\n });\n }\n lastOriginalSource = original.source;\n lastOriginalLine = original.line;\n lastOriginalColumn = original.column;\n lastOriginalName = original.name;\n sourceMappingActive = true;\n } else if (sourceMappingActive) {\n map.addMapping({\n generated: {\n line: generated.line,\n column: generated.column\n }\n });\n lastOriginalSource = null;\n sourceMappingActive = false;\n }\n for (var idx = 0, length = chunk.length; idx < length; idx++) {\n if (chunk.charCodeAt(idx) === NEWLINE_CODE) {\n generated.line++;\n generated.column = 0;\n // Mappings end at eol\n if (idx + 1 === length) {\n lastOriginalSource = null;\n sourceMappingActive = false;\n } else if (sourceMappingActive) {\n map.addMapping({\n source: original.source,\n original: {\n line: original.line,\n column: original.column\n },\n generated: {\n line: generated.line,\n column: generated.column\n },\n name: original.name\n });\n }\n } else {\n generated.column++;\n }\n }\n });\n this.walkSourceContents(function (sourceFile, sourceContent) {\n map.setSourceContent(sourceFile, sourceContent);\n });\n\n return { code: generated.code, map: map };\n };\n\n exports.SourceNode = SourceNode;\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./lib/source-node.js\n ** module id = 10\n ** module chunks = 0\n **/"],"sourceRoot":""}
\ No newline at end of file
diff --git a/node_modules/babel-core/node_modules/source-map/lib/array-set.js b/node_modules/babel-core/node_modules/source-map/lib/array-set.js
new file mode 100644
index 0000000..0ffbb9f
--- /dev/null
+++ b/node_modules/babel-core/node_modules/source-map/lib/array-set.js
@@ -0,0 +1,104 @@
+/* -*- Mode: js; js-indent-level: 2; -*- */
+/*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+{
+ var util = require('./util');
+
+ /**
+ * A data structure which is a combination of an array and a set. Adding a new
+ * member is O(1), testing for membership is O(1), and finding the index of an
+ * element is O(1). Removing elements from the set is not supported. Only
+ * strings are supported for membership.
+ */
+ function ArraySet() {
+ this._array = [];
+ this._set = {};
+ }
+
+ /**
+ * Static method for creating ArraySet instances from an existing array.
+ */
+ ArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {
+ var set = new ArraySet();
+ for (var i = 0, len = aArray.length; i < len; i++) {
+ set.add(aArray[i], aAllowDuplicates);
+ }
+ return set;
+ };
+
+ /**
+ * Return how many unique items are in this ArraySet. If duplicates have been
+ * added, than those do not count towards the size.
+ *
+ * @returns Number
+ */
+ ArraySet.prototype.size = function ArraySet_size() {
+ return Object.getOwnPropertyNames(this._set).length;
+ };
+
+ /**
+ * Add the given string to this set.
+ *
+ * @param String aStr
+ */
+ ArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {
+ var sStr = util.toSetString(aStr);
+ var isDuplicate = this._set.hasOwnProperty(sStr);
+ var idx = this._array.length;
+ if (!isDuplicate || aAllowDuplicates) {
+ this._array.push(aStr);
+ }
+ if (!isDuplicate) {
+ this._set[sStr] = idx;
+ }
+ };
+
+ /**
+ * Is the given string a member of this set?
+ *
+ * @param String aStr
+ */
+ ArraySet.prototype.has = function ArraySet_has(aStr) {
+ var sStr = util.toSetString(aStr);
+ return this._set.hasOwnProperty(sStr);
+ };
+
+ /**
+ * What is the index of the given string in the array?
+ *
+ * @param String aStr
+ */
+ ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {
+ var sStr = util.toSetString(aStr);
+ if (this._set.hasOwnProperty(sStr)) {
+ return this._set[sStr];
+ }
+ throw new Error('"' + aStr + '" is not in the set.');
+ };
+
+ /**
+ * What is the element at the given index?
+ *
+ * @param Number aIdx
+ */
+ ArraySet.prototype.at = function ArraySet_at(aIdx) {
+ if (aIdx >= 0 && aIdx < this._array.length) {
+ return this._array[aIdx];
+ }
+ throw new Error('No element indexed by ' + aIdx);
+ };
+
+ /**
+ * Returns the array representation of this set (which has the proper indices
+ * indicated by indexOf). Note that this is a copy of the internal array used
+ * for storing the members so that no one can mess with internal state.
+ */
+ ArraySet.prototype.toArray = function ArraySet_toArray() {
+ return this._array.slice();
+ };
+
+ exports.ArraySet = ArraySet;
+}
diff --git a/node_modules/babel-core/node_modules/source-map/lib/base64-vlq.js b/node_modules/babel-core/node_modules/source-map/lib/base64-vlq.js
new file mode 100644
index 0000000..f2a07f7
--- /dev/null
+++ b/node_modules/babel-core/node_modules/source-map/lib/base64-vlq.js
@@ -0,0 +1,141 @@
+/* -*- Mode: js; js-indent-level: 2; -*- */
+/*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ *
+ * Based on the Base 64 VLQ implementation in Closure Compiler:
+ * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java
+ *
+ * Copyright 2011 The Closure Compiler Authors. All rights reserved.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided
+ * with the distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER 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.
+ */
+{
+ var base64 = require('./base64');
+
+ // A single base 64 digit can contain 6 bits of data. For the base 64 variable
+ // length quantities we use in the source map spec, the first bit is the sign,
+ // the next four bits are the actual value, and the 6th bit is the
+ // continuation bit. The continuation bit tells us whether there are more
+ // digits in this value following this digit.
+ //
+ // Continuation
+ // | Sign
+ // | |
+ // V V
+ // 101011
+
+ var VLQ_BASE_SHIFT = 5;
+
+ // binary: 100000
+ var VLQ_BASE = 1 << VLQ_BASE_SHIFT;
+
+ // binary: 011111
+ var VLQ_BASE_MASK = VLQ_BASE - 1;
+
+ // binary: 100000
+ var VLQ_CONTINUATION_BIT = VLQ_BASE;
+
+ /**
+ * Converts from a two-complement value to a value where the sign bit is
+ * placed in the least significant bit. For example, as decimals:
+ * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary)
+ * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary)
+ */
+ function toVLQSigned(aValue) {
+ return aValue < 0
+ ? ((-aValue) << 1) + 1
+ : (aValue << 1) + 0;
+ }
+
+ /**
+ * Converts to a two-complement value from a value where the sign bit is
+ * placed in the least significant bit. For example, as decimals:
+ * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1
+ * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2
+ */
+ function fromVLQSigned(aValue) {
+ var isNegative = (aValue & 1) === 1;
+ var shifted = aValue >> 1;
+ return isNegative
+ ? -shifted
+ : shifted;
+ }
+
+ /**
+ * Returns the base 64 VLQ encoded value.
+ */
+ exports.encode = function base64VLQ_encode(aValue) {
+ var encoded = "";
+ var digit;
+
+ var vlq = toVLQSigned(aValue);
+
+ do {
+ digit = vlq & VLQ_BASE_MASK;
+ vlq >>>= VLQ_BASE_SHIFT;
+ if (vlq > 0) {
+ // There are still more digits in this value, so we must make sure the
+ // continuation bit is marked.
+ digit |= VLQ_CONTINUATION_BIT;
+ }
+ encoded += base64.encode(digit);
+ } while (vlq > 0);
+
+ return encoded;
+ };
+
+ /**
+ * Decodes the next base 64 VLQ value from the given string and returns the
+ * value and the rest of the string via the out parameter.
+ */
+ exports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {
+ var strLen = aStr.length;
+ var result = 0;
+ var shift = 0;
+ var continuation, digit;
+
+ do {
+ if (aIndex >= strLen) {
+ throw new Error("Expected more digits in base 64 VLQ value.");
+ }
+
+ digit = base64.decode(aStr.charCodeAt(aIndex++));
+ if (digit === -1) {
+ throw new Error("Invalid base64 digit: " + aStr.charAt(aIndex - 1));
+ }
+
+ continuation = !!(digit & VLQ_CONTINUATION_BIT);
+ digit &= VLQ_BASE_MASK;
+ result = result + (digit << shift);
+ shift += VLQ_BASE_SHIFT;
+ } while (continuation);
+
+ aOutParam.value = fromVLQSigned(result);
+ aOutParam.rest = aIndex;
+ };
+}
diff --git a/node_modules/babel-core/node_modules/source-map/lib/base64.js b/node_modules/babel-core/node_modules/source-map/lib/base64.js
new file mode 100644
index 0000000..dfda6ce
--- /dev/null
+++ b/node_modules/babel-core/node_modules/source-map/lib/base64.js
@@ -0,0 +1,68 @@
+/* -*- Mode: js; js-indent-level: 2; -*- */
+/*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+{
+ var intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');
+
+ /**
+ * Encode an integer in the range of 0 to 63 to a single base 64 digit.
+ */
+ exports.encode = function (number) {
+ if (0 <= number && number < intToCharMap.length) {
+ return intToCharMap[number];
+ }
+ throw new TypeError("Must be between 0 and 63: " + number);
+ };
+
+ /**
+ * Decode a single base 64 character code digit to an integer. Returns -1 on
+ * failure.
+ */
+ exports.decode = function (charCode) {
+ var bigA = 65; // 'A'
+ var bigZ = 90; // 'Z'
+
+ var littleA = 97; // 'a'
+ var littleZ = 122; // 'z'
+
+ var zero = 48; // '0'
+ var nine = 57; // '9'
+
+ var plus = 43; // '+'
+ var slash = 47; // '/'
+
+ var littleOffset = 26;
+ var numberOffset = 52;
+
+ // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ
+ if (bigA <= charCode && charCode <= bigZ) {
+ return (charCode - bigA);
+ }
+
+ // 26 - 51: abcdefghijklmnopqrstuvwxyz
+ if (littleA <= charCode && charCode <= littleZ) {
+ return (charCode - littleA + littleOffset);
+ }
+
+ // 52 - 61: 0123456789
+ if (zero <= charCode && charCode <= nine) {
+ return (charCode - zero + numberOffset);
+ }
+
+ // 62: +
+ if (charCode == plus) {
+ return 62;
+ }
+
+ // 63: /
+ if (charCode == slash) {
+ return 63;
+ }
+
+ // Invalid base64 digit.
+ return -1;
+ };
+}
diff --git a/node_modules/babel-core/node_modules/source-map/lib/binary-search.js b/node_modules/babel-core/node_modules/source-map/lib/binary-search.js
new file mode 100644
index 0000000..03161e6
--- /dev/null
+++ b/node_modules/babel-core/node_modules/source-map/lib/binary-search.js
@@ -0,0 +1,112 @@
+/* -*- Mode: js; js-indent-level: 2; -*- */
+/*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+{
+ exports.GREATEST_LOWER_BOUND = 1;
+ exports.LEAST_UPPER_BOUND = 2;
+
+ /**
+ * Recursive implementation of binary search.
+ *
+ * @param aLow Indices here and lower do not contain the needle.
+ * @param aHigh Indices here and higher do not contain the needle.
+ * @param aNeedle The element being searched for.
+ * @param aHaystack The non-empty array being searched.
+ * @param aCompare Function which takes two elements and returns -1, 0, or 1.
+ * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or
+ * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the
+ * closest element that is smaller than or greater than the one we are
+ * searching for, respectively, if the exact element cannot be found.
+ */
+ function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {
+ // This function terminates when one of the following is true:
+ //
+ // 1. We find the exact element we are looking for.
+ //
+ // 2. We did not find the exact element, but we can return the index of
+ // the next-closest element.
+ //
+ // 3. We did not find the exact element, and there is no next-closest
+ // element than the one we are searching for, so we return -1.
+ var mid = Math.floor((aHigh - aLow) / 2) + aLow;
+ var cmp = aCompare(aNeedle, aHaystack[mid], true);
+ if (cmp === 0) {
+ // Found the element we are looking for.
+ return mid;
+ }
+ else if (cmp > 0) {
+ // Our needle is greater than aHaystack[mid].
+ if (aHigh - mid > 1) {
+ // The element is in the upper half.
+ return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);
+ }
+
+ // The exact needle element was not found in this haystack. Determine if
+ // we are in termination case (3) or (2) and return the appropriate thing.
+ if (aBias == exports.LEAST_UPPER_BOUND) {
+ return aHigh < aHaystack.length ? aHigh : -1;
+ } else {
+ return mid;
+ }
+ }
+ else {
+ // Our needle is less than aHaystack[mid].
+ if (mid - aLow > 1) {
+ // The element is in the lower half.
+ return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);
+ }
+
+ // we are in termination case (3) or (2) and return the appropriate thing.
+ if (aBias == exports.LEAST_UPPER_BOUND) {
+ return mid;
+ } else {
+ return aLow < 0 ? -1 : aLow;
+ }
+ }
+ }
+
+ /**
+ * This is an implementation of binary search which will always try and return
+ * the index of the closest element if there is no exact hit. This is because
+ * mappings between original and generated line/col pairs are single points,
+ * and there is an implicit region between each of them, so a miss just means
+ * that you aren't on the very start of a region.
+ *
+ * @param aNeedle The element you are looking for.
+ * @param aHaystack The array that is being searched.
+ * @param aCompare A function which takes the needle and an element in the
+ * array and returns -1, 0, or 1 depending on whether the needle is less
+ * than, equal to, or greater than the element, respectively.
+ * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or
+ * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the
+ * closest element that is smaller than or greater than the one we are
+ * searching for, respectively, if the exact element cannot be found.
+ * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.
+ */
+ exports.search = function search(aNeedle, aHaystack, aCompare, aBias) {
+ if (aHaystack.length === 0) {
+ return -1;
+ }
+
+ var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,
+ aCompare, aBias || exports.GREATEST_LOWER_BOUND);
+ if (index < 0) {
+ return -1;
+ }
+
+ // We have found either the exact element, or the next-closest element than
+ // the one we are searching for. However, there may be more than one such
+ // element. Make sure we always return the smallest of these.
+ while (index - 1 >= 0) {
+ if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {
+ break;
+ }
+ --index;
+ }
+
+ return index;
+ };
+}
diff --git a/node_modules/babel-core/node_modules/source-map/lib/mapping-list.js b/node_modules/babel-core/node_modules/source-map/lib/mapping-list.js
new file mode 100644
index 0000000..287a607
--- /dev/null
+++ b/node_modules/babel-core/node_modules/source-map/lib/mapping-list.js
@@ -0,0 +1,80 @@
+/* -*- Mode: js; js-indent-level: 2; -*- */
+/*
+ * Copyright 2014 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+{
+ var util = require('./util');
+
+ /**
+ * Determine whether mappingB is after mappingA with respect to generated
+ * position.
+ */
+ function generatedPositionAfter(mappingA, mappingB) {
+ // Optimized for most common case
+ var lineA = mappingA.generatedLine;
+ var lineB = mappingB.generatedLine;
+ var columnA = mappingA.generatedColumn;
+ var columnB = mappingB.generatedColumn;
+ return lineB > lineA || lineB == lineA && columnB >= columnA ||
+ util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0;
+ }
+
+ /**
+ * A data structure to provide a sorted view of accumulated mappings in a
+ * performance conscious manner. It trades a neglibable overhead in general
+ * case for a large speedup in case of mappings being added in order.
+ */
+ function MappingList() {
+ this._array = [];
+ this._sorted = true;
+ // Serves as infimum
+ this._last = {generatedLine: -1, generatedColumn: 0};
+ }
+
+ /**
+ * Iterate through internal items. This method takes the same arguments that
+ * `Array.prototype.forEach` takes.
+ *
+ * NOTE: The order of the mappings is NOT guaranteed.
+ */
+ MappingList.prototype.unsortedForEach =
+ function MappingList_forEach(aCallback, aThisArg) {
+ this._array.forEach(aCallback, aThisArg);
+ };
+
+ /**
+ * Add the given source mapping.
+ *
+ * @param Object aMapping
+ */
+ MappingList.prototype.add = function MappingList_add(aMapping) {
+ if (generatedPositionAfter(this._last, aMapping)) {
+ this._last = aMapping;
+ this._array.push(aMapping);
+ } else {
+ this._sorted = false;
+ this._array.push(aMapping);
+ }
+ };
+
+ /**
+ * Returns the flat, sorted array of mappings. The mappings are sorted by
+ * generated position.
+ *
+ * WARNING: This method returns internal data without copying, for
+ * performance. The return value must NOT be mutated, and should be treated as
+ * an immutable borrow. If you want to take ownership, you must make your own
+ * copy.
+ */
+ MappingList.prototype.toArray = function MappingList_toArray() {
+ if (!this._sorted) {
+ this._array.sort(util.compareByGeneratedPositionsInflated);
+ this._sorted = true;
+ }
+ return this._array;
+ };
+
+ exports.MappingList = MappingList;
+}
diff --git a/node_modules/babel-core/node_modules/source-map/lib/quick-sort.js b/node_modules/babel-core/node_modules/source-map/lib/quick-sort.js
new file mode 100644
index 0000000..f92823c
--- /dev/null
+++ b/node_modules/babel-core/node_modules/source-map/lib/quick-sort.js
@@ -0,0 +1,115 @@
+/* -*- Mode: js; js-indent-level: 2; -*- */
+/*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+{
+ // It turns out that some (most?) JavaScript engines don't self-host
+ // `Array.prototype.sort`. This makes sense because C++ will likely remain
+ // faster than JS when doing raw CPU-intensive sorting. However, when using a
+ // custom comparator function, calling back and forth between the VM's C++ and
+ // JIT'd JS is rather slow *and* loses JIT type information, resulting in
+ // worse generated code for the comparator function than would be optimal. In
+ // fact, when sorting with a comparator, these costs outweigh the benefits of
+ // sorting in C++. By using our own JS-implemented Quick Sort (below), we get
+ // a ~3500ms mean speed-up in `bench/bench.html`.
+
+ /**
+ * Swap the elements indexed by `x` and `y` in the array `ary`.
+ *
+ * @param {Array} ary
+ * The array.
+ * @param {Number} x
+ * The index of the first item.
+ * @param {Number} y
+ * The index of the second item.
+ */
+ function swap(ary, x, y) {
+ var temp = ary[x];
+ ary[x] = ary[y];
+ ary[y] = temp;
+ }
+
+ /**
+ * Returns a random integer within the range `low .. high` inclusive.
+ *
+ * @param {Number} low
+ * The lower bound on the range.
+ * @param {Number} high
+ * The upper bound on the range.
+ */
+ function randomIntInRange(low, high) {
+ return Math.round(low + (Math.random() * (high - low)));
+ }
+
+ /**
+ * The Quick Sort algorithm.
+ *
+ * @param {Array} ary
+ * An array to sort.
+ * @param {function} comparator
+ * Function to use to compare two items.
+ * @param {Number} p
+ * Start index of the array
+ * @param {Number} r
+ * End index of the array
+ */
+ function doQuickSort(ary, comparator, p, r) {
+ // If our lower bound is less than our upper bound, we (1) partition the
+ // array into two pieces and (2) recurse on each half. If it is not, this is
+ // the empty array and our base case.
+
+ if (p < r) {
+ // (1) Partitioning.
+ //
+ // The partitioning chooses a pivot between `p` and `r` and moves all
+ // elements that are less than or equal to the pivot to the before it, and
+ // all the elements that are greater than it after it. The effect is that
+ // once partition is done, the pivot is in the exact place it will be when
+ // the array is put in sorted order, and it will not need to be moved
+ // again. This runs in O(n) time.
+
+ // Always choose a random pivot so that an input array which is reverse
+ // sorted does not cause O(n^2) running time.
+ var pivotIndex = randomIntInRange(p, r);
+ var i = p - 1;
+
+ swap(ary, pivotIndex, r);
+ var pivot = ary[r];
+
+ // Immediately after `j` is incremented in this loop, the following hold
+ // true:
+ //
+ // * Every element in `ary[p .. i]` is less than or equal to the pivot.
+ //
+ // * Every element in `ary[i+1 .. j-1]` is greater than the pivot.
+ for (var j = p; j < r; j++) {
+ if (comparator(ary[j], pivot) <= 0) {
+ i += 1;
+ swap(ary, i, j);
+ }
+ }
+
+ swap(ary, i + 1, j);
+ var q = i + 1;
+
+ // (2) Recurse on each half.
+
+ doQuickSort(ary, comparator, p, q - 1);
+ doQuickSort(ary, comparator, q + 1, r);
+ }
+ }
+
+ /**
+ * Sort the given array in-place with the given comparator function.
+ *
+ * @param {Array} ary
+ * An array to sort.
+ * @param {function} comparator
+ * Function to use to compare two items.
+ */
+ exports.quickSort = function (ary, comparator) {
+ doQuickSort(ary, comparator, 0, ary.length - 1);
+ };
+}
diff --git a/node_modules/babel-core/node_modules/source-map/lib/source-map-consumer.js b/node_modules/babel-core/node_modules/source-map/lib/source-map-consumer.js
new file mode 100644
index 0000000..242f21c
--- /dev/null
+++ b/node_modules/babel-core/node_modules/source-map/lib/source-map-consumer.js
@@ -0,0 +1,1082 @@
+/* -*- Mode: js; js-indent-level: 2; -*- */
+/*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+{
+ var util = require('./util');
+ var binarySearch = require('./binary-search');
+ var ArraySet = require('./array-set').ArraySet;
+ var base64VLQ = require('./base64-vlq');
+ var quickSort = require('./quick-sort').quickSort;
+
+ function SourceMapConsumer(aSourceMap) {
+ var sourceMap = aSourceMap;
+ if (typeof aSourceMap === 'string') {
+ sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, ''));
+ }
+
+ return sourceMap.sections != null
+ ? new IndexedSourceMapConsumer(sourceMap)
+ : new BasicSourceMapConsumer(sourceMap);
+ }
+
+ SourceMapConsumer.fromSourceMap = function(aSourceMap) {
+ return BasicSourceMapConsumer.fromSourceMap(aSourceMap);
+ }
+
+ /**
+ * The version of the source mapping spec that we are consuming.
+ */
+ SourceMapConsumer.prototype._version = 3;
+
+ // `__generatedMappings` and `__originalMappings` are arrays that hold the
+ // parsed mapping coordinates from the source map's "mappings" attribute. They
+ // are lazily instantiated, accessed via the `_generatedMappings` and
+ // `_originalMappings` getters respectively, and we only parse the mappings
+ // and create these arrays once queried for a source location. We jump through
+ // these hoops because there can be many thousands of mappings, and parsing
+ // them is expensive, so we only want to do it if we must.
+ //
+ // Each object in the arrays is of the form:
+ //
+ // {
+ // generatedLine: The line number in the generated code,
+ // generatedColumn: The column number in the generated code,
+ // source: The path to the original source file that generated this
+ // chunk of code,
+ // originalLine: The line number in the original source that
+ // corresponds to this chunk of generated code,
+ // originalColumn: The column number in the original source that
+ // corresponds to this chunk of generated code,
+ // name: The name of the original symbol which generated this chunk of
+ // code.
+ // }
+ //
+ // All properties except for `generatedLine` and `generatedColumn` can be
+ // `null`.
+ //
+ // `_generatedMappings` is ordered by the generated positions.
+ //
+ // `_originalMappings` is ordered by the original positions.
+
+ SourceMapConsumer.prototype.__generatedMappings = null;
+ Object.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {
+ get: function () {
+ if (!this.__generatedMappings) {
+ this._parseMappings(this._mappings, this.sourceRoot);
+ }
+
+ return this.__generatedMappings;
+ }
+ });
+
+ SourceMapConsumer.prototype.__originalMappings = null;
+ Object.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {
+ get: function () {
+ if (!this.__originalMappings) {
+ this._parseMappings(this._mappings, this.sourceRoot);
+ }
+
+ return this.__originalMappings;
+ }
+ });
+
+ SourceMapConsumer.prototype._charIsMappingSeparator =
+ function SourceMapConsumer_charIsMappingSeparator(aStr, index) {
+ var c = aStr.charAt(index);
+ return c === ";" || c === ",";
+ };
+
+ /**
+ * Parse the mappings in a string in to a data structure which we can easily
+ * query (the ordered arrays in the `this.__generatedMappings` and
+ * `this.__originalMappings` properties).
+ */
+ SourceMapConsumer.prototype._parseMappings =
+ function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {
+ throw new Error("Subclasses must implement _parseMappings");
+ };
+
+ SourceMapConsumer.GENERATED_ORDER = 1;
+ SourceMapConsumer.ORIGINAL_ORDER = 2;
+
+ SourceMapConsumer.GREATEST_LOWER_BOUND = 1;
+ SourceMapConsumer.LEAST_UPPER_BOUND = 2;
+
+ /**
+ * Iterate over each mapping between an original source/line/column and a
+ * generated line/column in this source map.
+ *
+ * @param Function aCallback
+ * The function that is called with each mapping.
+ * @param Object aContext
+ * Optional. If specified, this object will be the value of `this` every
+ * time that `aCallback` is called.
+ * @param aOrder
+ * Either `SourceMapConsumer.GENERATED_ORDER` or
+ * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to
+ * iterate over the mappings sorted by the generated file's line/column
+ * order or the original's source/line/column order, respectively. Defaults to
+ * `SourceMapConsumer.GENERATED_ORDER`.
+ */
+ SourceMapConsumer.prototype.eachMapping =
+ function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {
+ var context = aContext || null;
+ var order = aOrder || SourceMapConsumer.GENERATED_ORDER;
+
+ var mappings;
+ switch (order) {
+ case SourceMapConsumer.GENERATED_ORDER:
+ mappings = this._generatedMappings;
+ break;
+ case SourceMapConsumer.ORIGINAL_ORDER:
+ mappings = this._originalMappings;
+ break;
+ default:
+ throw new Error("Unknown order of iteration.");
+ }
+
+ var sourceRoot = this.sourceRoot;
+ mappings.map(function (mapping) {
+ var source = mapping.source === null ? null : this._sources.at(mapping.source);
+ if (source != null && sourceRoot != null) {
+ source = util.join(sourceRoot, source);
+ }
+ return {
+ source: source,
+ generatedLine: mapping.generatedLine,
+ generatedColumn: mapping.generatedColumn,
+ originalLine: mapping.originalLine,
+ originalColumn: mapping.originalColumn,
+ name: mapping.name === null ? null : this._names.at(mapping.name)
+ };
+ }, this).forEach(aCallback, context);
+ };
+
+ /**
+ * Returns all generated line and column information for the original source,
+ * line, and column provided. If no column is provided, returns all mappings
+ * corresponding to a either the line we are searching for or the next
+ * closest line that has any mappings. Otherwise, returns all mappings
+ * corresponding to the given line and either the column we are searching for
+ * or the next closest column that has any offsets.
+ *
+ * The only argument is an object with the following properties:
+ *
+ * - source: The filename of the original source.
+ * - line: The line number in the original source.
+ * - column: Optional. the column number in the original source.
+ *
+ * and an array of objects is returned, each with the following properties:
+ *
+ * - line: The line number in the generated source, or null.
+ * - column: The column number in the generated source, or null.
+ */
+ SourceMapConsumer.prototype.allGeneratedPositionsFor =
+ function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {
+ var line = util.getArg(aArgs, 'line');
+
+ // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping
+ // returns the index of the closest mapping less than the needle. By
+ // setting needle.originalColumn to 0, we thus find the last mapping for
+ // the given line, provided such a mapping exists.
+ var needle = {
+ source: util.getArg(aArgs, 'source'),
+ originalLine: line,
+ originalColumn: util.getArg(aArgs, 'column', 0)
+ };
+
+ if (this.sourceRoot != null) {
+ needle.source = util.relative(this.sourceRoot, needle.source);
+ }
+ if (!this._sources.has(needle.source)) {
+ return [];
+ }
+ needle.source = this._sources.indexOf(needle.source);
+
+ var mappings = [];
+
+ var index = this._findMapping(needle,
+ this._originalMappings,
+ "originalLine",
+ "originalColumn",
+ util.compareByOriginalPositions,
+ binarySearch.LEAST_UPPER_BOUND);
+ if (index >= 0) {
+ var mapping = this._originalMappings[index];
+
+ if (aArgs.column === undefined) {
+ var originalLine = mapping.originalLine;
+
+ // Iterate until either we run out of mappings, or we run into
+ // a mapping for a different line than the one we found. Since
+ // mappings are sorted, this is guaranteed to find all mappings for
+ // the line we found.
+ while (mapping && mapping.originalLine === originalLine) {
+ mappings.push({
+ line: util.getArg(mapping, 'generatedLine', null),
+ column: util.getArg(mapping, 'generatedColumn', null),
+ lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)
+ });
+
+ mapping = this._originalMappings[++index];
+ }
+ } else {
+ var originalColumn = mapping.originalColumn;
+
+ // Iterate until either we run out of mappings, or we run into
+ // a mapping for a different line than the one we were searching for.
+ // Since mappings are sorted, this is guaranteed to find all mappings for
+ // the line we are searching for.
+ while (mapping &&
+ mapping.originalLine === line &&
+ mapping.originalColumn == originalColumn) {
+ mappings.push({
+ line: util.getArg(mapping, 'generatedLine', null),
+ column: util.getArg(mapping, 'generatedColumn', null),
+ lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)
+ });
+
+ mapping = this._originalMappings[++index];
+ }
+ }
+ }
+
+ return mappings;
+ };
+
+ exports.SourceMapConsumer = SourceMapConsumer;
+
+ /**
+ * A BasicSourceMapConsumer instance represents a parsed source map which we can
+ * query for information about the original file positions by giving it a file
+ * position in the generated source.
+ *
+ * The only parameter is the raw source map (either as a JSON string, or
+ * already parsed to an object). According to the spec, source maps have the
+ * following attributes:
+ *
+ * - version: Which version of the source map spec this map is following.
+ * - sources: An array of URLs to the original source files.
+ * - names: An array of identifiers which can be referrenced by individual mappings.
+ * - sourceRoot: Optional. The URL root from which all sources are relative.
+ * - sourcesContent: Optional. An array of contents of the original source files.
+ * - mappings: A string of base64 VLQs which contain the actual mappings.
+ * - file: Optional. The generated file this source map is associated with.
+ *
+ * Here is an example source map, taken from the source map spec[0]:
+ *
+ * {
+ * version : 3,
+ * file: "out.js",
+ * sourceRoot : "",
+ * sources: ["foo.js", "bar.js"],
+ * names: ["src", "maps", "are", "fun"],
+ * mappings: "AA,AB;;ABCDE;"
+ * }
+ *
+ * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#
+ */
+ function BasicSourceMapConsumer(aSourceMap) {
+ var sourceMap = aSourceMap;
+ if (typeof aSourceMap === 'string') {
+ sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, ''));
+ }
+
+ var version = util.getArg(sourceMap, 'version');
+ var sources = util.getArg(sourceMap, 'sources');
+ // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which
+ // requires the array) to play nice here.
+ var names = util.getArg(sourceMap, 'names', []);
+ var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);
+ var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);
+ var mappings = util.getArg(sourceMap, 'mappings');
+ var file = util.getArg(sourceMap, 'file', null);
+
+ // Once again, Sass deviates from the spec and supplies the version as a
+ // string rather than a number, so we use loose equality checking here.
+ if (version != this._version) {
+ throw new Error('Unsupported version: ' + version);
+ }
+
+ sources = sources
+ // Some source maps produce relative source paths like "./foo.js" instead of
+ // "foo.js". Normalize these first so that future comparisons will succeed.
+ // See bugzil.la/1090768.
+ .map(util.normalize)
+ // Always ensure that absolute sources are internally stored relative to
+ // the source root, if the source root is absolute. Not doing this would
+ // be particularly problematic when the source root is a prefix of the
+ // source (valid, but why??). See github issue #199 and bugzil.la/1188982.
+ .map(function (source) {
+ return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source)
+ ? util.relative(sourceRoot, source)
+ : source;
+ });
+
+ // Pass `true` below to allow duplicate names and sources. While source maps
+ // are intended to be compressed and deduplicated, the TypeScript compiler
+ // sometimes generates source maps with duplicates in them. See Github issue
+ // #72 and bugzil.la/889492.
+ this._names = ArraySet.fromArray(names, true);
+ this._sources = ArraySet.fromArray(sources, true);
+
+ this.sourceRoot = sourceRoot;
+ this.sourcesContent = sourcesContent;
+ this._mappings = mappings;
+ this.file = file;
+ }
+
+ BasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);
+ BasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;
+
+ /**
+ * Create a BasicSourceMapConsumer from a SourceMapGenerator.
+ *
+ * @param SourceMapGenerator aSourceMap
+ * The source map that will be consumed.
+ * @returns BasicSourceMapConsumer
+ */
+ BasicSourceMapConsumer.fromSourceMap =
+ function SourceMapConsumer_fromSourceMap(aSourceMap) {
+ var smc = Object.create(BasicSourceMapConsumer.prototype);
+
+ var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);
+ var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);
+ smc.sourceRoot = aSourceMap._sourceRoot;
+ smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),
+ smc.sourceRoot);
+ smc.file = aSourceMap._file;
+
+ // Because we are modifying the entries (by converting string sources and
+ // names to indices into the sources and names ArraySets), we have to make
+ // a copy of the entry or else bad things happen. Shared mutable state
+ // strikes again! See github issue #191.
+
+ var generatedMappings = aSourceMap._mappings.toArray().slice();
+ var destGeneratedMappings = smc.__generatedMappings = [];
+ var destOriginalMappings = smc.__originalMappings = [];
+
+ for (var i = 0, length = generatedMappings.length; i < length; i++) {
+ var srcMapping = generatedMappings[i];
+ var destMapping = new Mapping;
+ destMapping.generatedLine = srcMapping.generatedLine;
+ destMapping.generatedColumn = srcMapping.generatedColumn;
+
+ if (srcMapping.source) {
+ destMapping.source = sources.indexOf(srcMapping.source);
+ destMapping.originalLine = srcMapping.originalLine;
+ destMapping.originalColumn = srcMapping.originalColumn;
+
+ if (srcMapping.name) {
+ destMapping.name = names.indexOf(srcMapping.name);
+ }
+
+ destOriginalMappings.push(destMapping);
+ }
+
+ destGeneratedMappings.push(destMapping);
+ }
+
+ quickSort(smc.__originalMappings, util.compareByOriginalPositions);
+
+ return smc;
+ };
+
+ /**
+ * The version of the source mapping spec that we are consuming.
+ */
+ BasicSourceMapConsumer.prototype._version = 3;
+
+ /**
+ * The list of original sources.
+ */
+ Object.defineProperty(BasicSourceMapConsumer.prototype, 'sources', {
+ get: function () {
+ return this._sources.toArray().map(function (s) {
+ return this.sourceRoot != null ? util.join(this.sourceRoot, s) : s;
+ }, this);
+ }
+ });
+
+ /**
+ * Provide the JIT with a nice shape / hidden class.
+ */
+ function Mapping() {
+ this.generatedLine = 0;
+ this.generatedColumn = 0;
+ this.source = null;
+ this.originalLine = null;
+ this.originalColumn = null;
+ this.name = null;
+ }
+
+ /**
+ * Parse the mappings in a string in to a data structure which we can easily
+ * query (the ordered arrays in the `this.__generatedMappings` and
+ * `this.__originalMappings` properties).
+ */
+ BasicSourceMapConsumer.prototype._parseMappings =
+ function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {
+ var generatedLine = 1;
+ var previousGeneratedColumn = 0;
+ var previousOriginalLine = 0;
+ var previousOriginalColumn = 0;
+ var previousSource = 0;
+ var previousName = 0;
+ var length = aStr.length;
+ var index = 0;
+ var cachedSegments = {};
+ var temp = {};
+ var originalMappings = [];
+ var generatedMappings = [];
+ var mapping, str, segment, end, value;
+
+ while (index < length) {
+ if (aStr.charAt(index) === ';') {
+ generatedLine++;
+ index++;
+ previousGeneratedColumn = 0;
+ }
+ else if (aStr.charAt(index) === ',') {
+ index++;
+ }
+ else {
+ mapping = new Mapping();
+ mapping.generatedLine = generatedLine;
+
+ // Because each offset is encoded relative to the previous one,
+ // many segments often have the same encoding. We can exploit this
+ // fact by caching the parsed variable length fields of each segment,
+ // allowing us to avoid a second parse if we encounter the same
+ // segment again.
+ for (end = index; end < length; end++) {
+ if (this._charIsMappingSeparator(aStr, end)) {
+ break;
+ }
+ }
+ str = aStr.slice(index, end);
+
+ segment = cachedSegments[str];
+ if (segment) {
+ index += str.length;
+ } else {
+ segment = [];
+ while (index < end) {
+ base64VLQ.decode(aStr, index, temp);
+ value = temp.value;
+ index = temp.rest;
+ segment.push(value);
+ }
+
+ if (segment.length === 2) {
+ throw new Error('Found a source, but no line and column');
+ }
+
+ if (segment.length === 3) {
+ throw new Error('Found a source and line, but no column');
+ }
+
+ cachedSegments[str] = segment;
+ }
+
+ // Generated column.
+ mapping.generatedColumn = previousGeneratedColumn + segment[0];
+ previousGeneratedColumn = mapping.generatedColumn;
+
+ if (segment.length > 1) {
+ // Original source.
+ mapping.source = previousSource + segment[1];
+ previousSource += segment[1];
+
+ // Original line.
+ mapping.originalLine = previousOriginalLine + segment[2];
+ previousOriginalLine = mapping.originalLine;
+ // Lines are stored 0-based
+ mapping.originalLine += 1;
+
+ // Original column.
+ mapping.originalColumn = previousOriginalColumn + segment[3];
+ previousOriginalColumn = mapping.originalColumn;
+
+ if (segment.length > 4) {
+ // Original name.
+ mapping.name = previousName + segment[4];
+ previousName += segment[4];
+ }
+ }
+
+ generatedMappings.push(mapping);
+ if (typeof mapping.originalLine === 'number') {
+ originalMappings.push(mapping);
+ }
+ }
+ }
+
+ quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated);
+ this.__generatedMappings = generatedMappings;
+
+ quickSort(originalMappings, util.compareByOriginalPositions);
+ this.__originalMappings = originalMappings;
+ };
+
+ /**
+ * Find the mapping that best matches the hypothetical "needle" mapping that
+ * we are searching for in the given "haystack" of mappings.
+ */
+ BasicSourceMapConsumer.prototype._findMapping =
+ function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,
+ aColumnName, aComparator, aBias) {
+ // To return the position we are searching for, we must first find the
+ // mapping for the given position and then return the opposite position it
+ // points to. Because the mappings are sorted, we can use binary search to
+ // find the best mapping.
+
+ if (aNeedle[aLineName] <= 0) {
+ throw new TypeError('Line must be greater than or equal to 1, got '
+ + aNeedle[aLineName]);
+ }
+ if (aNeedle[aColumnName] < 0) {
+ throw new TypeError('Column must be greater than or equal to 0, got '
+ + aNeedle[aColumnName]);
+ }
+
+ return binarySearch.search(aNeedle, aMappings, aComparator, aBias);
+ };
+
+ /**
+ * Compute the last column for each generated mapping. The last column is
+ * inclusive.
+ */
+ BasicSourceMapConsumer.prototype.computeColumnSpans =
+ function SourceMapConsumer_computeColumnSpans() {
+ for (var index = 0; index < this._generatedMappings.length; ++index) {
+ var mapping = this._generatedMappings[index];
+
+ // Mappings do not contain a field for the last generated columnt. We
+ // can come up with an optimistic estimate, however, by assuming that
+ // mappings are contiguous (i.e. given two consecutive mappings, the
+ // first mapping ends where the second one starts).
+ if (index + 1 < this._generatedMappings.length) {
+ var nextMapping = this._generatedMappings[index + 1];
+
+ if (mapping.generatedLine === nextMapping.generatedLine) {
+ mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;
+ continue;
+ }
+ }
+
+ // The last mapping for each line spans the entire line.
+ mapping.lastGeneratedColumn = Infinity;
+ }
+ };
+
+ /**
+ * Returns the original source, line, and column information for the generated
+ * source's line and column positions provided. The only argument is an object
+ * with the following properties:
+ *
+ * - line: The line number in the generated source.
+ * - column: The column number in the generated source.
+ * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or
+ * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the
+ * closest element that is smaller than or greater than the one we are
+ * searching for, respectively, if the exact element cannot be found.
+ * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.
+ *
+ * and an object is returned with the following properties:
+ *
+ * - source: The original source file, or null.
+ * - line: The line number in the original source, or null.
+ * - column: The column number in the original source, or null.
+ * - name: The original identifier, or null.
+ */
+ BasicSourceMapConsumer.prototype.originalPositionFor =
+ function SourceMapConsumer_originalPositionFor(aArgs) {
+ var needle = {
+ generatedLine: util.getArg(aArgs, 'line'),
+ generatedColumn: util.getArg(aArgs, 'column')
+ };
+
+ var index = this._findMapping(
+ needle,
+ this._generatedMappings,
+ "generatedLine",
+ "generatedColumn",
+ util.compareByGeneratedPositionsDeflated,
+ util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)
+ );
+
+ if (index >= 0) {
+ var mapping = this._generatedMappings[index];
+
+ if (mapping.generatedLine === needle.generatedLine) {
+ var source = util.getArg(mapping, 'source', null);
+ if (source !== null) {
+ source = this._sources.at(source);
+ if (this.sourceRoot != null) {
+ source = util.join(this.sourceRoot, source);
+ }
+ }
+ var name = util.getArg(mapping, 'name', null);
+ if (name !== null) {
+ name = this._names.at(name);
+ }
+ return {
+ source: source,
+ line: util.getArg(mapping, 'originalLine', null),
+ column: util.getArg(mapping, 'originalColumn', null),
+ name: name
+ };
+ }
+ }
+
+ return {
+ source: null,
+ line: null,
+ column: null,
+ name: null
+ };
+ };
+
+ /**
+ * Return true if we have the source content for every source in the source
+ * map, false otherwise.
+ */
+ BasicSourceMapConsumer.prototype.hasContentsOfAllSources =
+ function BasicSourceMapConsumer_hasContentsOfAllSources() {
+ if (!this.sourcesContent) {
+ return false;
+ }
+ return this.sourcesContent.length >= this._sources.size() &&
+ !this.sourcesContent.some(function (sc) { return sc == null; });
+ };
+
+ /**
+ * Returns the original source content. The only argument is the url of the
+ * original source file. Returns null if no original source content is
+ * available.
+ */
+ BasicSourceMapConsumer.prototype.sourceContentFor =
+ function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {
+ if (!this.sourcesContent) {
+ return null;
+ }
+
+ if (this.sourceRoot != null) {
+ aSource = util.relative(this.sourceRoot, aSource);
+ }
+
+ if (this._sources.has(aSource)) {
+ return this.sourcesContent[this._sources.indexOf(aSource)];
+ }
+
+ var url;
+ if (this.sourceRoot != null
+ && (url = util.urlParse(this.sourceRoot))) {
+ // XXX: file:// URIs and absolute paths lead to unexpected behavior for
+ // many users. We can help them out when they expect file:// URIs to
+ // behave like it would if they were running a local HTTP server. See
+ // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.
+ var fileUriAbsPath = aSource.replace(/^file:\/\//, "");
+ if (url.scheme == "file"
+ && this._sources.has(fileUriAbsPath)) {
+ return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]
+ }
+
+ if ((!url.path || url.path == "/")
+ && this._sources.has("/" + aSource)) {
+ return this.sourcesContent[this._sources.indexOf("/" + aSource)];
+ }
+ }
+
+ // This function is used recursively from
+ // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we
+ // don't want to throw if we can't find the source - we just want to
+ // return null, so we provide a flag to exit gracefully.
+ if (nullOnMissing) {
+ return null;
+ }
+ else {
+ throw new Error('"' + aSource + '" is not in the SourceMap.');
+ }
+ };
+
+ /**
+ * Returns the generated line and column information for the original source,
+ * line, and column positions provided. The only argument is an object with
+ * the following properties:
+ *
+ * - source: The filename of the original source.
+ * - line: The line number in the original source.
+ * - column: The column number in the original source.
+ * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or
+ * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the
+ * closest element that is smaller than or greater than the one we are
+ * searching for, respectively, if the exact element cannot be found.
+ * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.
+ *
+ * and an object is returned with the following properties:
+ *
+ * - line: The line number in the generated source, or null.
+ * - column: The column number in the generated source, or null.
+ */
+ BasicSourceMapConsumer.prototype.generatedPositionFor =
+ function SourceMapConsumer_generatedPositionFor(aArgs) {
+ var source = util.getArg(aArgs, 'source');
+ if (this.sourceRoot != null) {
+ source = util.relative(this.sourceRoot, source);
+ }
+ if (!this._sources.has(source)) {
+ return {
+ line: null,
+ column: null,
+ lastColumn: null
+ };
+ }
+ source = this._sources.indexOf(source);
+
+ var needle = {
+ source: source,
+ originalLine: util.getArg(aArgs, 'line'),
+ originalColumn: util.getArg(aArgs, 'column')
+ };
+
+ var index = this._findMapping(
+ needle,
+ this._originalMappings,
+ "originalLine",
+ "originalColumn",
+ util.compareByOriginalPositions,
+ util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)
+ );
+
+ if (index >= 0) {
+ var mapping = this._originalMappings[index];
+
+ if (mapping.source === needle.source) {
+ return {
+ line: util.getArg(mapping, 'generatedLine', null),
+ column: util.getArg(mapping, 'generatedColumn', null),
+ lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)
+ };
+ }
+ }
+
+ return {
+ line: null,
+ column: null,
+ lastColumn: null
+ };
+ };
+
+ exports.BasicSourceMapConsumer = BasicSourceMapConsumer;
+
+ /**
+ * An IndexedSourceMapConsumer instance represents a parsed source map which
+ * we can query for information. It differs from BasicSourceMapConsumer in
+ * that it takes "indexed" source maps (i.e. ones with a "sections" field) as
+ * input.
+ *
+ * The only parameter is a raw source map (either as a JSON string, or already
+ * parsed to an object). According to the spec for indexed source maps, they
+ * have the following attributes:
+ *
+ * - version: Which version of the source map spec this map is following.
+ * - file: Optional. The generated file this source map is associated with.
+ * - sections: A list of section definitions.
+ *
+ * Each value under the "sections" field has two fields:
+ * - offset: The offset into the original specified at which this section
+ * begins to apply, defined as an object with a "line" and "column"
+ * field.
+ * - map: A source map definition. This source map could also be indexed,
+ * but doesn't have to be.
+ *
+ * Instead of the "map" field, it's also possible to have a "url" field
+ * specifying a URL to retrieve a source map from, but that's currently
+ * unsupported.
+ *
+ * Here's an example source map, taken from the source map spec[0], but
+ * modified to omit a section which uses the "url" field.
+ *
+ * {
+ * version : 3,
+ * file: "app.js",
+ * sections: [{
+ * offset: {line:100, column:10},
+ * map: {
+ * version : 3,
+ * file: "section.js",
+ * sources: ["foo.js", "bar.js"],
+ * names: ["src", "maps", "are", "fun"],
+ * mappings: "AAAA,E;;ABCDE;"
+ * }
+ * }],
+ * }
+ *
+ * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt
+ */
+ function IndexedSourceMapConsumer(aSourceMap) {
+ var sourceMap = aSourceMap;
+ if (typeof aSourceMap === 'string') {
+ sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, ''));
+ }
+
+ var version = util.getArg(sourceMap, 'version');
+ var sections = util.getArg(sourceMap, 'sections');
+
+ if (version != this._version) {
+ throw new Error('Unsupported version: ' + version);
+ }
+
+ this._sources = new ArraySet();
+ this._names = new ArraySet();
+
+ var lastOffset = {
+ line: -1,
+ column: 0
+ };
+ this._sections = sections.map(function (s) {
+ if (s.url) {
+ // The url field will require support for asynchronicity.
+ // See https://github.com/mozilla/source-map/issues/16
+ throw new Error('Support for url field in sections not implemented.');
+ }
+ var offset = util.getArg(s, 'offset');
+ var offsetLine = util.getArg(offset, 'line');
+ var offsetColumn = util.getArg(offset, 'column');
+
+ if (offsetLine < lastOffset.line ||
+ (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) {
+ throw new Error('Section offsets must be ordered and non-overlapping.');
+ }
+ lastOffset = offset;
+
+ return {
+ generatedOffset: {
+ // The offset fields are 0-based, but we use 1-based indices when
+ // encoding/decoding from VLQ.
+ generatedLine: offsetLine + 1,
+ generatedColumn: offsetColumn + 1
+ },
+ consumer: new SourceMapConsumer(util.getArg(s, 'map'))
+ }
+ });
+ }
+
+ IndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);
+ IndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;
+
+ /**
+ * The version of the source mapping spec that we are consuming.
+ */
+ IndexedSourceMapConsumer.prototype._version = 3;
+
+ /**
+ * The list of original sources.
+ */
+ Object.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', {
+ get: function () {
+ var sources = [];
+ for (var i = 0; i < this._sections.length; i++) {
+ for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {
+ sources.push(this._sections[i].consumer.sources[j]);
+ }
+ }
+ return sources;
+ }
+ });
+
+ /**
+ * Returns the original source, line, and column information for the generated
+ * source's line and column positions provided. The only argument is an object
+ * with the following properties:
+ *
+ * - line: The line number in the generated source.
+ * - column: The column number in the generated source.
+ *
+ * and an object is returned with the following properties:
+ *
+ * - source: The original source file, or null.
+ * - line: The line number in the original source, or null.
+ * - column: The column number in the original source, or null.
+ * - name: The original identifier, or null.
+ */
+ IndexedSourceMapConsumer.prototype.originalPositionFor =
+ function IndexedSourceMapConsumer_originalPositionFor(aArgs) {
+ var needle = {
+ generatedLine: util.getArg(aArgs, 'line'),
+ generatedColumn: util.getArg(aArgs, 'column')
+ };
+
+ // Find the section containing the generated position we're trying to map
+ // to an original position.
+ var sectionIndex = binarySearch.search(needle, this._sections,
+ function(needle, section) {
+ var cmp = needle.generatedLine - section.generatedOffset.generatedLine;
+ if (cmp) {
+ return cmp;
+ }
+
+ return (needle.generatedColumn -
+ section.generatedOffset.generatedColumn);
+ });
+ var section = this._sections[sectionIndex];
+
+ if (!section) {
+ return {
+ source: null,
+ line: null,
+ column: null,
+ name: null
+ };
+ }
+
+ return section.consumer.originalPositionFor({
+ line: needle.generatedLine -
+ (section.generatedOffset.generatedLine - 1),
+ column: needle.generatedColumn -
+ (section.generatedOffset.generatedLine === needle.generatedLine
+ ? section.generatedOffset.generatedColumn - 1
+ : 0),
+ bias: aArgs.bias
+ });
+ };
+
+ /**
+ * Return true if we have the source content for every source in the source
+ * map, false otherwise.
+ */
+ IndexedSourceMapConsumer.prototype.hasContentsOfAllSources =
+ function IndexedSourceMapConsumer_hasContentsOfAllSources() {
+ return this._sections.every(function (s) {
+ return s.consumer.hasContentsOfAllSources();
+ });
+ };
+
+ /**
+ * Returns the original source content. The only argument is the url of the
+ * original source file. Returns null if no original source content is
+ * available.
+ */
+ IndexedSourceMapConsumer.prototype.sourceContentFor =
+ function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {
+ for (var i = 0; i < this._sections.length; i++) {
+ var section = this._sections[i];
+
+ var content = section.consumer.sourceContentFor(aSource, true);
+ if (content) {
+ return content;
+ }
+ }
+ if (nullOnMissing) {
+ return null;
+ }
+ else {
+ throw new Error('"' + aSource + '" is not in the SourceMap.');
+ }
+ };
+
+ /**
+ * Returns the generated line and column information for the original source,
+ * line, and column positions provided. The only argument is an object with
+ * the following properties:
+ *
+ * - source: The filename of the original source.
+ * - line: The line number in the original source.
+ * - column: The column number in the original source.
+ *
+ * and an object is returned with the following properties:
+ *
+ * - line: The line number in the generated source, or null.
+ * - column: The column number in the generated source, or null.
+ */
+ IndexedSourceMapConsumer.prototype.generatedPositionFor =
+ function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {
+ for (var i = 0; i < this._sections.length; i++) {
+ var section = this._sections[i];
+
+ // Only consider this section if the requested source is in the list of
+ // sources of the consumer.
+ if (section.consumer.sources.indexOf(util.getArg(aArgs, 'source')) === -1) {
+ continue;
+ }
+ var generatedPosition = section.consumer.generatedPositionFor(aArgs);
+ if (generatedPosition) {
+ var ret = {
+ line: generatedPosition.line +
+ (section.generatedOffset.generatedLine - 1),
+ column: generatedPosition.column +
+ (section.generatedOffset.generatedLine === generatedPosition.line
+ ? section.generatedOffset.generatedColumn - 1
+ : 0)
+ };
+ return ret;
+ }
+ }
+
+ return {
+ line: null,
+ column: null
+ };
+ };
+
+ /**
+ * Parse the mappings in a string in to a data structure which we can easily
+ * query (the ordered arrays in the `this.__generatedMappings` and
+ * `this.__originalMappings` properties).
+ */
+ IndexedSourceMapConsumer.prototype._parseMappings =
+ function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {
+ this.__generatedMappings = [];
+ this.__originalMappings = [];
+ for (var i = 0; i < this._sections.length; i++) {
+ var section = this._sections[i];
+ var sectionMappings = section.consumer._generatedMappings;
+ for (var j = 0; j < sectionMappings.length; j++) {
+ var mapping = sectionMappings[j];
+
+ var source = section.consumer._sources.at(mapping.source);
+ if (section.consumer.sourceRoot !== null) {
+ source = util.join(section.consumer.sourceRoot, source);
+ }
+ this._sources.add(source);
+ source = this._sources.indexOf(source);
+
+ var name = section.consumer._names.at(mapping.name);
+ this._names.add(name);
+ name = this._names.indexOf(name);
+
+ // The mappings coming from the consumer for the section have
+ // generated positions relative to the start of the section, so we
+ // need to offset them to be relative to the start of the concatenated
+ // generated file.
+ var adjustedMapping = {
+ source: source,
+ generatedLine: mapping.generatedLine +
+ (section.generatedOffset.generatedLine - 1),
+ generatedColumn: mapping.generatedColumn +
+ (section.generatedOffset.generatedLine === mapping.generatedLine
+ ? section.generatedOffset.generatedColumn - 1
+ : 0),
+ originalLine: mapping.originalLine,
+ originalColumn: mapping.originalColumn,
+ name: name
+ };
+
+ this.__generatedMappings.push(adjustedMapping);
+ if (typeof adjustedMapping.originalLine === 'number') {
+ this.__originalMappings.push(adjustedMapping);
+ }
+ }
+ }
+
+ quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);
+ quickSort(this.__originalMappings, util.compareByOriginalPositions);
+ };
+
+ exports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;
+}
diff --git a/node_modules/babel-core/node_modules/source-map/lib/source-map-generator.js b/node_modules/babel-core/node_modules/source-map/lib/source-map-generator.js
new file mode 100644
index 0000000..ffc76cd
--- /dev/null
+++ b/node_modules/babel-core/node_modules/source-map/lib/source-map-generator.js
@@ -0,0 +1,396 @@
+/* -*- Mode: js; js-indent-level: 2; -*- */
+/*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+{
+ var base64VLQ = require('./base64-vlq');
+ var util = require('./util');
+ var ArraySet = require('./array-set').ArraySet;
+ var MappingList = require('./mapping-list').MappingList;
+
+ /**
+ * An instance of the SourceMapGenerator represents a source map which is
+ * being built incrementally. You may pass an object with the following
+ * properties:
+ *
+ * - file: The filename of the generated source.
+ * - sourceRoot: A root for all relative URLs in this source map.
+ */
+ function SourceMapGenerator(aArgs) {
+ if (!aArgs) {
+ aArgs = {};
+ }
+ this._file = util.getArg(aArgs, 'file', null);
+ this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null);
+ this._skipValidation = util.getArg(aArgs, 'skipValidation', false);
+ this._sources = new ArraySet();
+ this._names = new ArraySet();
+ this._mappings = new MappingList();
+ this._sourcesContents = null;
+ }
+
+ SourceMapGenerator.prototype._version = 3;
+
+ /**
+ * Creates a new SourceMapGenerator based on a SourceMapConsumer
+ *
+ * @param aSourceMapConsumer The SourceMap.
+ */
+ SourceMapGenerator.fromSourceMap =
+ function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) {
+ var sourceRoot = aSourceMapConsumer.sourceRoot;
+ var generator = new SourceMapGenerator({
+ file: aSourceMapConsumer.file,
+ sourceRoot: sourceRoot
+ });
+ aSourceMapConsumer.eachMapping(function (mapping) {
+ var newMapping = {
+ generated: {
+ line: mapping.generatedLine,
+ column: mapping.generatedColumn
+ }
+ };
+
+ if (mapping.source != null) {
+ newMapping.source = mapping.source;
+ if (sourceRoot != null) {
+ newMapping.source = util.relative(sourceRoot, newMapping.source);
+ }
+
+ newMapping.original = {
+ line: mapping.originalLine,
+ column: mapping.originalColumn
+ };
+
+ if (mapping.name != null) {
+ newMapping.name = mapping.name;
+ }
+ }
+
+ generator.addMapping(newMapping);
+ });
+ aSourceMapConsumer.sources.forEach(function (sourceFile) {
+ var content = aSourceMapConsumer.sourceContentFor(sourceFile);
+ if (content != null) {
+ generator.setSourceContent(sourceFile, content);
+ }
+ });
+ return generator;
+ };
+
+ /**
+ * Add a single mapping from original source line and column to the generated
+ * source's line and column for this source map being created. The mapping
+ * object should have the following properties:
+ *
+ * - generated: An object with the generated line and column positions.
+ * - original: An object with the original line and column positions.
+ * - source: The original source file (relative to the sourceRoot).
+ * - name: An optional original token name for this mapping.
+ */
+ SourceMapGenerator.prototype.addMapping =
+ function SourceMapGenerator_addMapping(aArgs) {
+ var generated = util.getArg(aArgs, 'generated');
+ var original = util.getArg(aArgs, 'original', null);
+ var source = util.getArg(aArgs, 'source', null);
+ var name = util.getArg(aArgs, 'name', null);
+
+ if (!this._skipValidation) {
+ this._validateMapping(generated, original, source, name);
+ }
+
+ if (source != null && !this._sources.has(source)) {
+ this._sources.add(source);
+ }
+
+ if (name != null && !this._names.has(name)) {
+ this._names.add(name);
+ }
+
+ this._mappings.add({
+ generatedLine: generated.line,
+ generatedColumn: generated.column,
+ originalLine: original != null && original.line,
+ originalColumn: original != null && original.column,
+ source: source,
+ name: name
+ });
+ };
+
+ /**
+ * Set the source content for a source file.
+ */
+ SourceMapGenerator.prototype.setSourceContent =
+ function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {
+ var source = aSourceFile;
+ if (this._sourceRoot != null) {
+ source = util.relative(this._sourceRoot, source);
+ }
+
+ if (aSourceContent != null) {
+ // Add the source content to the _sourcesContents map.
+ // Create a new _sourcesContents map if the property is null.
+ if (!this._sourcesContents) {
+ this._sourcesContents = {};
+ }
+ this._sourcesContents[util.toSetString(source)] = aSourceContent;
+ } else if (this._sourcesContents) {
+ // Remove the source file from the _sourcesContents map.
+ // If the _sourcesContents map is empty, set the property to null.
+ delete this._sourcesContents[util.toSetString(source)];
+ if (Object.keys(this._sourcesContents).length === 0) {
+ this._sourcesContents = null;
+ }
+ }
+ };
+
+ /**
+ * Applies the mappings of a sub-source-map for a specific source file to the
+ * source map being generated. Each mapping to the supplied source file is
+ * rewritten using the supplied source map. Note: The resolution for the
+ * resulting mappings is the minimium of this map and the supplied map.
+ *
+ * @param aSourceMapConsumer The source map to be applied.
+ * @param aSourceFile Optional. The filename of the source file.
+ * If omitted, SourceMapConsumer's file property will be used.
+ * @param aSourceMapPath Optional. The dirname of the path to the source map
+ * to be applied. If relative, it is relative to the SourceMapConsumer.
+ * This parameter is needed when the two source maps aren't in the same
+ * directory, and the source map to be applied contains relative source
+ * paths. If so, those relative source paths need to be rewritten
+ * relative to the SourceMapGenerator.
+ */
+ SourceMapGenerator.prototype.applySourceMap =
+ function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) {
+ var sourceFile = aSourceFile;
+ // If aSourceFile is omitted, we will use the file property of the SourceMap
+ if (aSourceFile == null) {
+ if (aSourceMapConsumer.file == null) {
+ throw new Error(
+ 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' +
+ 'or the source map\'s "file" property. Both were omitted.'
+ );
+ }
+ sourceFile = aSourceMapConsumer.file;
+ }
+ var sourceRoot = this._sourceRoot;
+ // Make "sourceFile" relative if an absolute Url is passed.
+ if (sourceRoot != null) {
+ sourceFile = util.relative(sourceRoot, sourceFile);
+ }
+ // Applying the SourceMap can add and remove items from the sources and
+ // the names array.
+ var newSources = new ArraySet();
+ var newNames = new ArraySet();
+
+ // Find mappings for the "sourceFile"
+ this._mappings.unsortedForEach(function (mapping) {
+ if (mapping.source === sourceFile && mapping.originalLine != null) {
+ // Check if it can be mapped by the source map, then update the mapping.
+ var original = aSourceMapConsumer.originalPositionFor({
+ line: mapping.originalLine,
+ column: mapping.originalColumn
+ });
+ if (original.source != null) {
+ // Copy mapping
+ mapping.source = original.source;
+ if (aSourceMapPath != null) {
+ mapping.source = util.join(aSourceMapPath, mapping.source)
+ }
+ if (sourceRoot != null) {
+ mapping.source = util.relative(sourceRoot, mapping.source);
+ }
+ mapping.originalLine = original.line;
+ mapping.originalColumn = original.column;
+ if (original.name != null) {
+ mapping.name = original.name;
+ }
+ }
+ }
+
+ var source = mapping.source;
+ if (source != null && !newSources.has(source)) {
+ newSources.add(source);
+ }
+
+ var name = mapping.name;
+ if (name != null && !newNames.has(name)) {
+ newNames.add(name);
+ }
+
+ }, this);
+ this._sources = newSources;
+ this._names = newNames;
+
+ // Copy sourcesContents of applied map.
+ aSourceMapConsumer.sources.forEach(function (sourceFile) {
+ var content = aSourceMapConsumer.sourceContentFor(sourceFile);
+ if (content != null) {
+ if (aSourceMapPath != null) {
+ sourceFile = util.join(aSourceMapPath, sourceFile);
+ }
+ if (sourceRoot != null) {
+ sourceFile = util.relative(sourceRoot, sourceFile);
+ }
+ this.setSourceContent(sourceFile, content);
+ }
+ }, this);
+ };
+
+ /**
+ * A mapping can have one of the three levels of data:
+ *
+ * 1. Just the generated position.
+ * 2. The Generated position, original position, and original source.
+ * 3. Generated and original position, original source, as well as a name
+ * token.
+ *
+ * To maintain consistency, we validate that any new mapping being added falls
+ * in to one of these categories.
+ */
+ SourceMapGenerator.prototype._validateMapping =
+ function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource,
+ aName) {
+ if (aGenerated && 'line' in aGenerated && 'column' in aGenerated
+ && aGenerated.line > 0 && aGenerated.column >= 0
+ && !aOriginal && !aSource && !aName) {
+ // Case 1.
+ return;
+ }
+ else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated
+ && aOriginal && 'line' in aOriginal && 'column' in aOriginal
+ && aGenerated.line > 0 && aGenerated.column >= 0
+ && aOriginal.line > 0 && aOriginal.column >= 0
+ && aSource) {
+ // Cases 2 and 3.
+ return;
+ }
+ else {
+ throw new Error('Invalid mapping: ' + JSON.stringify({
+ generated: aGenerated,
+ source: aSource,
+ original: aOriginal,
+ name: aName
+ }));
+ }
+ };
+
+ /**
+ * Serialize the accumulated mappings in to the stream of base 64 VLQs
+ * specified by the source map format.
+ */
+ SourceMapGenerator.prototype._serializeMappings =
+ function SourceMapGenerator_serializeMappings() {
+ var previousGeneratedColumn = 0;
+ var previousGeneratedLine = 1;
+ var previousOriginalColumn = 0;
+ var previousOriginalLine = 0;
+ var previousName = 0;
+ var previousSource = 0;
+ var result = '';
+ var mapping;
+ var nameIdx;
+ var sourceIdx;
+
+ var mappings = this._mappings.toArray();
+ for (var i = 0, len = mappings.length; i < len; i++) {
+ mapping = mappings[i];
+
+ if (mapping.generatedLine !== previousGeneratedLine) {
+ previousGeneratedColumn = 0;
+ while (mapping.generatedLine !== previousGeneratedLine) {
+ result += ';';
+ previousGeneratedLine++;
+ }
+ }
+ else {
+ if (i > 0) {
+ if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {
+ continue;
+ }
+ result += ',';
+ }
+ }
+
+ result += base64VLQ.encode(mapping.generatedColumn
+ - previousGeneratedColumn);
+ previousGeneratedColumn = mapping.generatedColumn;
+
+ if (mapping.source != null) {
+ sourceIdx = this._sources.indexOf(mapping.source);
+ result += base64VLQ.encode(sourceIdx - previousSource);
+ previousSource = sourceIdx;
+
+ // lines are stored 0-based in SourceMap spec version 3
+ result += base64VLQ.encode(mapping.originalLine - 1
+ - previousOriginalLine);
+ previousOriginalLine = mapping.originalLine - 1;
+
+ result += base64VLQ.encode(mapping.originalColumn
+ - previousOriginalColumn);
+ previousOriginalColumn = mapping.originalColumn;
+
+ if (mapping.name != null) {
+ nameIdx = this._names.indexOf(mapping.name);
+ result += base64VLQ.encode(nameIdx - previousName);
+ previousName = nameIdx;
+ }
+ }
+ }
+
+ return result;
+ };
+
+ SourceMapGenerator.prototype._generateSourcesContent =
+ function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {
+ return aSources.map(function (source) {
+ if (!this._sourcesContents) {
+ return null;
+ }
+ if (aSourceRoot != null) {
+ source = util.relative(aSourceRoot, source);
+ }
+ var key = util.toSetString(source);
+ return Object.prototype.hasOwnProperty.call(this._sourcesContents,
+ key)
+ ? this._sourcesContents[key]
+ : null;
+ }, this);
+ };
+
+ /**
+ * Externalize the source map.
+ */
+ SourceMapGenerator.prototype.toJSON =
+ function SourceMapGenerator_toJSON() {
+ var map = {
+ version: this._version,
+ sources: this._sources.toArray(),
+ names: this._names.toArray(),
+ mappings: this._serializeMappings()
+ };
+ if (this._file != null) {
+ map.file = this._file;
+ }
+ if (this._sourceRoot != null) {
+ map.sourceRoot = this._sourceRoot;
+ }
+ if (this._sourcesContents) {
+ map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);
+ }
+
+ return map;
+ };
+
+ /**
+ * Render the source map being generated to a string.
+ */
+ SourceMapGenerator.prototype.toString =
+ function SourceMapGenerator_toString() {
+ return JSON.stringify(this.toJSON());
+ };
+
+ exports.SourceMapGenerator = SourceMapGenerator;
+}
diff --git a/node_modules/babel-core/node_modules/source-map/lib/source-node.js b/node_modules/babel-core/node_modules/source-map/lib/source-node.js
new file mode 100644
index 0000000..8b0fd59
--- /dev/null
+++ b/node_modules/babel-core/node_modules/source-map/lib/source-node.js
@@ -0,0 +1,408 @@
+/* -*- Mode: js; js-indent-level: 2; -*- */
+/*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+{
+ var SourceMapGenerator = require('./source-map-generator').SourceMapGenerator;
+ var util = require('./util');
+
+ // Matches a Windows-style `\r\n` newline or a `\n` newline used by all other
+ // operating systems these days (capturing the result).
+ var REGEX_NEWLINE = /(\r?\n)/;
+
+ // Newline character code for charCodeAt() comparisons
+ var NEWLINE_CODE = 10;
+
+ // Private symbol for identifying `SourceNode`s when multiple versions of
+ // the source-map library are loaded. This MUST NOT CHANGE across
+ // versions!
+ var isSourceNode = "$$$isSourceNode$$$";
+
+ /**
+ * SourceNodes provide a way to abstract over interpolating/concatenating
+ * snippets of generated JavaScript source code while maintaining the line and
+ * column information associated with the original source code.
+ *
+ * @param aLine The original line number.
+ * @param aColumn The original column number.
+ * @param aSource The original source's filename.
+ * @param aChunks Optional. An array of strings which are snippets of
+ * generated JS, or other SourceNodes.
+ * @param aName The original identifier.
+ */
+ function SourceNode(aLine, aColumn, aSource, aChunks, aName) {
+ this.children = [];
+ this.sourceContents = {};
+ this.line = aLine == null ? null : aLine;
+ this.column = aColumn == null ? null : aColumn;
+ this.source = aSource == null ? null : aSource;
+ this.name = aName == null ? null : aName;
+ this[isSourceNode] = true;
+ if (aChunks != null) this.add(aChunks);
+ }
+
+ /**
+ * Creates a SourceNode from generated code and a SourceMapConsumer.
+ *
+ * @param aGeneratedCode The generated code
+ * @param aSourceMapConsumer The SourceMap for the generated code
+ * @param aRelativePath Optional. The path that relative sources in the
+ * SourceMapConsumer should be relative to.
+ */
+ SourceNode.fromStringWithSourceMap =
+ function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {
+ // The SourceNode we want to fill with the generated code
+ // and the SourceMap
+ var node = new SourceNode();
+
+ // All even indices of this array are one line of the generated code,
+ // while all odd indices are the newlines between two adjacent lines
+ // (since `REGEX_NEWLINE` captures its match).
+ // Processed fragments are removed from this array, by calling `shiftNextLine`.
+ var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);
+ var shiftNextLine = function() {
+ var lineContents = remainingLines.shift();
+ // The last line of a file might not have a newline.
+ var newLine = remainingLines.shift() || "";
+ return lineContents + newLine;
+ };
+
+ // We need to remember the position of "remainingLines"
+ var lastGeneratedLine = 1, lastGeneratedColumn = 0;
+
+ // The generate SourceNodes we need a code range.
+ // To extract it current and last mapping is used.
+ // Here we store the last mapping.
+ var lastMapping = null;
+
+ aSourceMapConsumer.eachMapping(function (mapping) {
+ if (lastMapping !== null) {
+ // We add the code from "lastMapping" to "mapping":
+ // First check if there is a new line in between.
+ if (lastGeneratedLine < mapping.generatedLine) {
+ // Associate first line with "lastMapping"
+ addMappingWithCode(lastMapping, shiftNextLine());
+ lastGeneratedLine++;
+ lastGeneratedColumn = 0;
+ // The remaining code is added without mapping
+ } else {
+ // There is no new line in between.
+ // Associate the code between "lastGeneratedColumn" and
+ // "mapping.generatedColumn" with "lastMapping"
+ var nextLine = remainingLines[0];
+ var code = nextLine.substr(0, mapping.generatedColumn -
+ lastGeneratedColumn);
+ remainingLines[0] = nextLine.substr(mapping.generatedColumn -
+ lastGeneratedColumn);
+ lastGeneratedColumn = mapping.generatedColumn;
+ addMappingWithCode(lastMapping, code);
+ // No more remaining code, continue
+ lastMapping = mapping;
+ return;
+ }
+ }
+ // We add the generated code until the first mapping
+ // to the SourceNode without any mapping.
+ // Each line is added as separate string.
+ while (lastGeneratedLine < mapping.generatedLine) {
+ node.add(shiftNextLine());
+ lastGeneratedLine++;
+ }
+ if (lastGeneratedColumn < mapping.generatedColumn) {
+ var nextLine = remainingLines[0];
+ node.add(nextLine.substr(0, mapping.generatedColumn));
+ remainingLines[0] = nextLine.substr(mapping.generatedColumn);
+ lastGeneratedColumn = mapping.generatedColumn;
+ }
+ lastMapping = mapping;
+ }, this);
+ // We have processed all mappings.
+ if (remainingLines.length > 0) {
+ if (lastMapping) {
+ // Associate the remaining code in the current line with "lastMapping"
+ addMappingWithCode(lastMapping, shiftNextLine());
+ }
+ // and add the remaining lines without any mapping
+ node.add(remainingLines.join(""));
+ }
+
+ // Copy sourcesContent into SourceNode
+ aSourceMapConsumer.sources.forEach(function (sourceFile) {
+ var content = aSourceMapConsumer.sourceContentFor(sourceFile);
+ if (content != null) {
+ if (aRelativePath != null) {
+ sourceFile = util.join(aRelativePath, sourceFile);
+ }
+ node.setSourceContent(sourceFile, content);
+ }
+ });
+
+ return node;
+
+ function addMappingWithCode(mapping, code) {
+ if (mapping === null || mapping.source === undefined) {
+ node.add(code);
+ } else {
+ var source = aRelativePath
+ ? util.join(aRelativePath, mapping.source)
+ : mapping.source;
+ node.add(new SourceNode(mapping.originalLine,
+ mapping.originalColumn,
+ source,
+ code,
+ mapping.name));
+ }
+ }
+ };
+
+ /**
+ * Add a chunk of generated JS to this source node.
+ *
+ * @param aChunk A string snippet of generated JS code, another instance of
+ * SourceNode, or an array where each member is one of those things.
+ */
+ SourceNode.prototype.add = function SourceNode_add(aChunk) {
+ if (Array.isArray(aChunk)) {
+ aChunk.forEach(function (chunk) {
+ this.add(chunk);
+ }, this);
+ }
+ else if (aChunk[isSourceNode] || typeof aChunk === "string") {
+ if (aChunk) {
+ this.children.push(aChunk);
+ }
+ }
+ else {
+ throw new TypeError(
+ "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk
+ );
+ }
+ return this;
+ };
+
+ /**
+ * Add a chunk of generated JS to the beginning of this source node.
+ *
+ * @param aChunk A string snippet of generated JS code, another instance of
+ * SourceNode, or an array where each member is one of those things.
+ */
+ SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {
+ if (Array.isArray(aChunk)) {
+ for (var i = aChunk.length-1; i >= 0; i--) {
+ this.prepend(aChunk[i]);
+ }
+ }
+ else if (aChunk[isSourceNode] || typeof aChunk === "string") {
+ this.children.unshift(aChunk);
+ }
+ else {
+ throw new TypeError(
+ "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk
+ );
+ }
+ return this;
+ };
+
+ /**
+ * Walk over the tree of JS snippets in this node and its children. The
+ * walking function is called once for each snippet of JS and is passed that
+ * snippet and the its original associated source's line/column location.
+ *
+ * @param aFn The traversal function.
+ */
+ SourceNode.prototype.walk = function SourceNode_walk(aFn) {
+ var chunk;
+ for (var i = 0, len = this.children.length; i < len; i++) {
+ chunk = this.children[i];
+ if (chunk[isSourceNode]) {
+ chunk.walk(aFn);
+ }
+ else {
+ if (chunk !== '') {
+ aFn(chunk, { source: this.source,
+ line: this.line,
+ column: this.column,
+ name: this.name });
+ }
+ }
+ }
+ };
+
+ /**
+ * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between
+ * each of `this.children`.
+ *
+ * @param aSep The separator.
+ */
+ SourceNode.prototype.join = function SourceNode_join(aSep) {
+ var newChildren;
+ var i;
+ var len = this.children.length;
+ if (len > 0) {
+ newChildren = [];
+ for (i = 0; i < len-1; i++) {
+ newChildren.push(this.children[i]);
+ newChildren.push(aSep);
+ }
+ newChildren.push(this.children[i]);
+ this.children = newChildren;
+ }
+ return this;
+ };
+
+ /**
+ * Call String.prototype.replace on the very right-most source snippet. Useful
+ * for trimming whitespace from the end of a source node, etc.
+ *
+ * @param aPattern The pattern to replace.
+ * @param aReplacement The thing to replace the pattern with.
+ */
+ SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {
+ var lastChild = this.children[this.children.length - 1];
+ if (lastChild[isSourceNode]) {
+ lastChild.replaceRight(aPattern, aReplacement);
+ }
+ else if (typeof lastChild === 'string') {
+ this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);
+ }
+ else {
+ this.children.push(''.replace(aPattern, aReplacement));
+ }
+ return this;
+ };
+
+ /**
+ * Set the source content for a source file. This will be added to the SourceMapGenerator
+ * in the sourcesContent field.
+ *
+ * @param aSourceFile The filename of the source file
+ * @param aSourceContent The content of the source file
+ */
+ SourceNode.prototype.setSourceContent =
+ function SourceNode_setSourceContent(aSourceFile, aSourceContent) {
+ this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;
+ };
+
+ /**
+ * Walk over the tree of SourceNodes. The walking function is called for each
+ * source file content and is passed the filename and source content.
+ *
+ * @param aFn The traversal function.
+ */
+ SourceNode.prototype.walkSourceContents =
+ function SourceNode_walkSourceContents(aFn) {
+ for (var i = 0, len = this.children.length; i < len; i++) {
+ if (this.children[i][isSourceNode]) {
+ this.children[i].walkSourceContents(aFn);
+ }
+ }
+
+ var sources = Object.keys(this.sourceContents);
+ for (var i = 0, len = sources.length; i < len; i++) {
+ aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);
+ }
+ };
+
+ /**
+ * Return the string representation of this source node. Walks over the tree
+ * and concatenates all the various snippets together to one string.
+ */
+ SourceNode.prototype.toString = function SourceNode_toString() {
+ var str = "";
+ this.walk(function (chunk) {
+ str += chunk;
+ });
+ return str;
+ };
+
+ /**
+ * Returns the string representation of this source node along with a source
+ * map.
+ */
+ SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {
+ var generated = {
+ code: "",
+ line: 1,
+ column: 0
+ };
+ var map = new SourceMapGenerator(aArgs);
+ var sourceMappingActive = false;
+ var lastOriginalSource = null;
+ var lastOriginalLine = null;
+ var lastOriginalColumn = null;
+ var lastOriginalName = null;
+ this.walk(function (chunk, original) {
+ generated.code += chunk;
+ if (original.source !== null
+ && original.line !== null
+ && original.column !== null) {
+ if(lastOriginalSource !== original.source
+ || lastOriginalLine !== original.line
+ || lastOriginalColumn !== original.column
+ || lastOriginalName !== original.name) {
+ map.addMapping({
+ source: original.source,
+ original: {
+ line: original.line,
+ column: original.column
+ },
+ generated: {
+ line: generated.line,
+ column: generated.column
+ },
+ name: original.name
+ });
+ }
+ lastOriginalSource = original.source;
+ lastOriginalLine = original.line;
+ lastOriginalColumn = original.column;
+ lastOriginalName = original.name;
+ sourceMappingActive = true;
+ } else if (sourceMappingActive) {
+ map.addMapping({
+ generated: {
+ line: generated.line,
+ column: generated.column
+ }
+ });
+ lastOriginalSource = null;
+ sourceMappingActive = false;
+ }
+ for (var idx = 0, length = chunk.length; idx < length; idx++) {
+ if (chunk.charCodeAt(idx) === NEWLINE_CODE) {
+ generated.line++;
+ generated.column = 0;
+ // Mappings end at eol
+ if (idx + 1 === length) {
+ lastOriginalSource = null;
+ sourceMappingActive = false;
+ } else if (sourceMappingActive) {
+ map.addMapping({
+ source: original.source,
+ original: {
+ line: original.line,
+ column: original.column
+ },
+ generated: {
+ line: generated.line,
+ column: generated.column
+ },
+ name: original.name
+ });
+ }
+ } else {
+ generated.column++;
+ }
+ }
+ });
+ this.walkSourceContents(function (sourceFile, sourceContent) {
+ map.setSourceContent(sourceFile, sourceContent);
+ });
+
+ return { code: generated.code, map: map };
+ };
+
+ exports.SourceNode = SourceNode;
+}
diff --git a/node_modules/babel-core/node_modules/source-map/lib/util.js b/node_modules/babel-core/node_modules/source-map/lib/util.js
new file mode 100644
index 0000000..4581590
--- /dev/null
+++ b/node_modules/babel-core/node_modules/source-map/lib/util.js
@@ -0,0 +1,369 @@
+/* -*- Mode: js; js-indent-level: 2; -*- */
+/*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+{
+ /**
+ * This is a helper function for getting values from parameter/options
+ * objects.
+ *
+ * @param args The object we are extracting values from
+ * @param name The name of the property we are getting.
+ * @param defaultValue An optional value to return if the property is missing
+ * from the object. If this is not specified and the property is missing, an
+ * error will be thrown.
+ */
+ function getArg(aArgs, aName, aDefaultValue) {
+ if (aName in aArgs) {
+ return aArgs[aName];
+ } else if (arguments.length === 3) {
+ return aDefaultValue;
+ } else {
+ throw new Error('"' + aName + '" is a required argument.');
+ }
+ }
+ exports.getArg = getArg;
+
+ var urlRegexp = /^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.]*)(?::(\d+))?(\S*)$/;
+ var dataUrlRegexp = /^data:.+\,.+$/;
+
+ function urlParse(aUrl) {
+ var match = aUrl.match(urlRegexp);
+ if (!match) {
+ return null;
+ }
+ return {
+ scheme: match[1],
+ auth: match[2],
+ host: match[3],
+ port: match[4],
+ path: match[5]
+ };
+ }
+ exports.urlParse = urlParse;
+
+ function urlGenerate(aParsedUrl) {
+ var url = '';
+ if (aParsedUrl.scheme) {
+ url += aParsedUrl.scheme + ':';
+ }
+ url += '//';
+ if (aParsedUrl.auth) {
+ url += aParsedUrl.auth + '@';
+ }
+ if (aParsedUrl.host) {
+ url += aParsedUrl.host;
+ }
+ if (aParsedUrl.port) {
+ url += ":" + aParsedUrl.port
+ }
+ if (aParsedUrl.path) {
+ url += aParsedUrl.path;
+ }
+ return url;
+ }
+ exports.urlGenerate = urlGenerate;
+
+ /**
+ * Normalizes a path, or the path portion of a URL:
+ *
+ * - Replaces consequtive slashes with one slash.
+ * - Removes unnecessary '.' parts.
+ * - Removes unnecessary '/..' parts.
+ *
+ * Based on code in the Node.js 'path' core module.
+ *
+ * @param aPath The path or url to normalize.
+ */
+ function normalize(aPath) {
+ var path = aPath;
+ var url = urlParse(aPath);
+ if (url) {
+ if (!url.path) {
+ return aPath;
+ }
+ path = url.path;
+ }
+ var isAbsolute = exports.isAbsolute(path);
+
+ var parts = path.split(/\/+/);
+ for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {
+ part = parts[i];
+ if (part === '.') {
+ parts.splice(i, 1);
+ } else if (part === '..') {
+ up++;
+ } else if (up > 0) {
+ if (part === '') {
+ // The first part is blank if the path is absolute. Trying to go
+ // above the root is a no-op. Therefore we can remove all '..' parts
+ // directly after the root.
+ parts.splice(i + 1, up);
+ up = 0;
+ } else {
+ parts.splice(i, 2);
+ up--;
+ }
+ }
+ }
+ path = parts.join('/');
+
+ if (path === '') {
+ path = isAbsolute ? '/' : '.';
+ }
+
+ if (url) {
+ url.path = path;
+ return urlGenerate(url);
+ }
+ return path;
+ }
+ exports.normalize = normalize;
+
+ /**
+ * Joins two paths/URLs.
+ *
+ * @param aRoot The root path or URL.
+ * @param aPath The path or URL to be joined with the root.
+ *
+ * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a
+ * scheme-relative URL: Then the scheme of aRoot, if any, is prepended
+ * first.
+ * - Otherwise aPath is a path. If aRoot is a URL, then its path portion
+ * is updated with the result and aRoot is returned. Otherwise the result
+ * is returned.
+ * - If aPath is absolute, the result is aPath.
+ * - Otherwise the two paths are joined with a slash.
+ * - Joining for example 'http://' and 'www.example.com' is also supported.
+ */
+ function join(aRoot, aPath) {
+ if (aRoot === "") {
+ aRoot = ".";
+ }
+ if (aPath === "") {
+ aPath = ".";
+ }
+ var aPathUrl = urlParse(aPath);
+ var aRootUrl = urlParse(aRoot);
+ if (aRootUrl) {
+ aRoot = aRootUrl.path || '/';
+ }
+
+ // `join(foo, '//www.example.org')`
+ if (aPathUrl && !aPathUrl.scheme) {
+ if (aRootUrl) {
+ aPathUrl.scheme = aRootUrl.scheme;
+ }
+ return urlGenerate(aPathUrl);
+ }
+
+ if (aPathUrl || aPath.match(dataUrlRegexp)) {
+ return aPath;
+ }
+
+ // `join('http://', 'www.example.com')`
+ if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {
+ aRootUrl.host = aPath;
+ return urlGenerate(aRootUrl);
+ }
+
+ var joined = aPath.charAt(0) === '/'
+ ? aPath
+ : normalize(aRoot.replace(/\/+$/, '') + '/' + aPath);
+
+ if (aRootUrl) {
+ aRootUrl.path = joined;
+ return urlGenerate(aRootUrl);
+ }
+ return joined;
+ }
+ exports.join = join;
+
+ exports.isAbsolute = function (aPath) {
+ return aPath.charAt(0) === '/' || !!aPath.match(urlRegexp);
+ };
+
+ /**
+ * Make a path relative to a URL or another path.
+ *
+ * @param aRoot The root path or URL.
+ * @param aPath The path or URL to be made relative to aRoot.
+ */
+ function relative(aRoot, aPath) {
+ if (aRoot === "") {
+ aRoot = ".";
+ }
+
+ aRoot = aRoot.replace(/\/$/, '');
+
+ // It is possible for the path to be above the root. In this case, simply
+ // checking whether the root is a prefix of the path won't work. Instead, we
+ // need to remove components from the root one by one, until either we find
+ // a prefix that fits, or we run out of components to remove.
+ var level = 0;
+ while (aPath.indexOf(aRoot + '/') !== 0) {
+ var index = aRoot.lastIndexOf("/");
+ if (index < 0) {
+ return aPath;
+ }
+
+ // If the only part of the root that is left is the scheme (i.e. http://,
+ // file:///, etc.), one or more slashes (/), or simply nothing at all, we
+ // have exhausted all components, so the path is not relative to the root.
+ aRoot = aRoot.slice(0, index);
+ if (aRoot.match(/^([^\/]+:\/)?\/*$/)) {
+ return aPath;
+ }
+
+ ++level;
+ }
+
+ // Make sure we add a "../" for each component we removed from the root.
+ return Array(level + 1).join("../") + aPath.substr(aRoot.length + 1);
+ }
+ exports.relative = relative;
+
+ /**
+ * Because behavior goes wacky when you set `__proto__` on objects, we
+ * have to prefix all the strings in our set with an arbitrary character.
+ *
+ * See https://github.com/mozilla/source-map/pull/31 and
+ * https://github.com/mozilla/source-map/issues/30
+ *
+ * @param String aStr
+ */
+ function toSetString(aStr) {
+ return '$' + aStr;
+ }
+ exports.toSetString = toSetString;
+
+ function fromSetString(aStr) {
+ return aStr.substr(1);
+ }
+ exports.fromSetString = fromSetString;
+
+ /**
+ * Comparator between two mappings where the original positions are compared.
+ *
+ * Optionally pass in `true` as `onlyCompareGenerated` to consider two
+ * mappings with the same original source/line/column, but different generated
+ * line and column the same. Useful when searching for a mapping with a
+ * stubbed out mapping.
+ */
+ function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {
+ var cmp = mappingA.source - mappingB.source;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.originalLine - mappingB.originalLine;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.originalColumn - mappingB.originalColumn;
+ if (cmp !== 0 || onlyCompareOriginal) {
+ return cmp;
+ }
+
+ cmp = mappingA.generatedColumn - mappingB.generatedColumn;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.generatedLine - mappingB.generatedLine;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ return mappingA.name - mappingB.name;
+ }
+ exports.compareByOriginalPositions = compareByOriginalPositions;
+
+ /**
+ * Comparator between two mappings with deflated source and name indices where
+ * the generated positions are compared.
+ *
+ * Optionally pass in `true` as `onlyCompareGenerated` to consider two
+ * mappings with the same generated line and column, but different
+ * source/name/original line and column the same. Useful when searching for a
+ * mapping with a stubbed out mapping.
+ */
+ function compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {
+ var cmp = mappingA.generatedLine - mappingB.generatedLine;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.generatedColumn - mappingB.generatedColumn;
+ if (cmp !== 0 || onlyCompareGenerated) {
+ return cmp;
+ }
+
+ cmp = mappingA.source - mappingB.source;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.originalLine - mappingB.originalLine;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.originalColumn - mappingB.originalColumn;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ return mappingA.name - mappingB.name;
+ }
+ exports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;
+
+ function strcmp(aStr1, aStr2) {
+ if (aStr1 === aStr2) {
+ return 0;
+ }
+
+ if (aStr1 > aStr2) {
+ return 1;
+ }
+
+ return -1;
+ }
+
+ /**
+ * Comparator between two mappings with inflated source and name strings where
+ * the generated positions are compared.
+ */
+ function compareByGeneratedPositionsInflated(mappingA, mappingB) {
+ var cmp = mappingA.generatedLine - mappingB.generatedLine;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.generatedColumn - mappingB.generatedColumn;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = strcmp(mappingA.source, mappingB.source);
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.originalLine - mappingB.originalLine;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.originalColumn - mappingB.originalColumn;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ return strcmp(mappingA.name, mappingB.name);
+ }
+ exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;
+}
diff --git a/node_modules/babel-core/node_modules/source-map/package.json b/node_modules/babel-core/node_modules/source-map/package.json
new file mode 100644
index 0000000..869de64
--- /dev/null
+++ b/node_modules/babel-core/node_modules/source-map/package.json
@@ -0,0 +1,240 @@
+{
+ "_args": [
+ [
+ "source-map@^0.5.0",
+ "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-core"
+ ]
+ ],
+ "_from": "source-map@>=0.5.0 <0.6.0",
+ "_id": "source-map@0.5.3",
+ "_inCache": true,
+ "_installable": true,
+ "_location": "/babel-core/source-map",
+ "_npmUser": {
+ "email": "fitzgen@gmail.com",
+ "name": "nickfitzgerald"
+ },
+ "_npmVersion": "1.4.9",
+ "_phantomChildren": {},
+ "_requested": {
+ "name": "source-map",
+ "raw": "source-map@^0.5.0",
+ "rawSpec": "^0.5.0",
+ "scope": null,
+ "spec": ">=0.5.0 <0.6.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/babel-core"
+ ],
+ "_resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.3.tgz",
+ "_shasum": "82674b85a71b0be76c3e7416d15e9f5252eb3be0",
+ "_shrinkwrap": null,
+ "_spec": "source-map@^0.5.0",
+ "_where": "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-core",
+ "author": {
+ "email": "nfitzgerald@mozilla.com",
+ "name": "Nick Fitzgerald"
+ },
+ "bugs": {
+ "url": "https://github.com/mozilla/source-map/issues"
+ },
+ "contributors": [
+ {
+ "name": "Simon Lydell",
+ "email": "simon.lydell@gmail.com"
+ },
+ {
+ "name": "Tobias Koppers",
+ "email": "tobias.koppers@googlemail.com"
+ },
+ {
+ "name": "Stephen Crane",
+ "email": "scrane@mozilla.com"
+ },
+ {
+ "name": "Ryan Seddon",
+ "email": "seddon.ryan@gmail.com"
+ },
+ {
+ "name": "Miles Elam",
+ "email": "miles.elam@deem.com"
+ },
+ {
+ "name": "Mihai Bazon",
+ "email": "mihai.bazon@gmail.com"
+ },
+ {
+ "name": "Michael Ficarra",
+ "email": "github.public.email@michael.ficarra.me"
+ },
+ {
+ "name": "Todd Wolfson",
+ "email": "todd@twolfson.com"
+ },
+ {
+ "name": "Alexander Solovyov",
+ "email": "alexander@solovyov.net"
+ },
+ {
+ "name": "Felix Gnass",
+ "email": "fgnass@gmail.com"
+ },
+ {
+ "name": "Conrad Irwin",
+ "email": "conrad.irwin@gmail.com"
+ },
+ {
+ "name": "usrbincc",
+ "email": "usrbincc@yahoo.com"
+ },
+ {
+ "name": "David Glasser",
+ "email": "glasser@davidglasser.net"
+ },
+ {
+ "name": "Chase Douglas",
+ "email": "chase@newrelic.com"
+ },
+ {
+ "name": "Evan Wallace",
+ "email": "evan.exe@gmail.com"
+ },
+ {
+ "name": "Heather Arthur",
+ "email": "fayearthur@gmail.com"
+ },
+ {
+ "name": "Hugh Kennedy",
+ "email": "hughskennedy@gmail.com"
+ },
+ {
+ "name": "David Glasser",
+ "email": "glasser@davidglasser.net"
+ },
+ {
+ "name": "Duncan Beevers",
+ "email": "duncan@dweebd.com"
+ },
+ {
+ "name": "Jmeas Smith",
+ "email": "jellyes2@gmail.com"
+ },
+ {
+ "name": "Michael Z Goddard",
+ "email": "mzgoddard@gmail.com"
+ },
+ {
+ "name": "azu",
+ "email": "azu@users.noreply.github.com"
+ },
+ {
+ "name": "John Gozde",
+ "email": "john@gozde.ca"
+ },
+ {
+ "name": "Adam Kirkton",
+ "email": "akirkton@truefitinnovation.com"
+ },
+ {
+ "name": "Chris Montgomery",
+ "email": "christopher.montgomery@dowjones.com"
+ },
+ {
+ "name": "J. Ryan Stinnett",
+ "email": "jryans@gmail.com"
+ },
+ {
+ "name": "Jack Herrington",
+ "email": "jherrington@walmartlabs.com"
+ },
+ {
+ "name": "Chris Truter",
+ "email": "jeffpalentine@gmail.com"
+ },
+ {
+ "name": "Daniel Espeset",
+ "email": "daniel@danielespeset.com"
+ },
+ {
+ "name": "Jamie Wong",
+ "email": "jamie.lf.wong@gmail.com"
+ },
+ {
+ "name": "Eddy Bruël",
+ "email": "ejpbruel@mozilla.com"
+ },
+ {
+ "name": "Hawken Rives",
+ "email": "hawkrives@gmail.com"
+ },
+ {
+ "name": "Gilad Peleg",
+ "email": "giladp007@gmail.com"
+ },
+ {
+ "name": "djchie",
+ "email": "djchie.dev@gmail.com"
+ },
+ {
+ "name": "Gary Ye",
+ "email": "garysye@gmail.com"
+ },
+ {
+ "name": "Nicolas Lalevée",
+ "email": "nicolas.lalevee@hibnet.org"
+ }
+ ],
+ "dependencies": {},
+ "description": "Generates and consumes source maps",
+ "devDependencies": {
+ "doctoc": "^0.15.0",
+ "webpack": "^1.12.0"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "82674b85a71b0be76c3e7416d15e9f5252eb3be0",
+ "tarball": "http://registry.npmjs.org/source-map/-/source-map-0.5.3.tgz"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ },
+ "files": [
+ "dist/source-map.debug.js",
+ "dist/source-map.js",
+ "dist/source-map.min.js",
+ "dist/source-map.min.js.map",
+ "lib/",
+ "source-map.js"
+ ],
+ "homepage": "https://github.com/mozilla/source-map",
+ "license": "BSD-3-Clause",
+ "main": "./source-map.js",
+ "maintainers": [
+ {
+ "name": "mozilla-devtools",
+ "email": "mozilla-developer-tools@googlegroups.com"
+ },
+ {
+ "name": "mozilla",
+ "email": "dherman@mozilla.com"
+ },
+ {
+ "name": "nickfitzgerald",
+ "email": "fitzgen@gmail.com"
+ }
+ ],
+ "name": "source-map",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git+ssh://git@github.com/mozilla/source-map.git"
+ },
+ "scripts": {
+ "build": "webpack --color",
+ "test": "node test/run-tests.js",
+ "toc": "doctoc --title '## Table of Contents' README.md && doctoc --title '## Table of Contents' CONTRIBUTING.md"
+ },
+ "version": "0.5.3"
+}
diff --git a/node_modules/babel-core/node_modules/source-map/source-map.js b/node_modules/babel-core/node_modules/source-map/source-map.js
new file mode 100644
index 0000000..bc88fe8
--- /dev/null
+++ b/node_modules/babel-core/node_modules/source-map/source-map.js
@@ -0,0 +1,8 @@
+/*
+ * Copyright 2009-2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE.txt or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+exports.SourceMapGenerator = require('./lib/source-map-generator').SourceMapGenerator;
+exports.SourceMapConsumer = require('./lib/source-map-consumer').SourceMapConsumer;
+exports.SourceNode = require('./lib/source-node').SourceNode;
diff --git a/node_modules/babel-core/package.json b/node_modules/babel-core/package.json
new file mode 100644
index 0000000..0793c31
--- /dev/null
+++ b/node_modules/babel-core/package.json
@@ -0,0 +1,133 @@
+{
+ "_args": [
+ [
+ "babel-core@^6.5.1",
+ "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial"
+ ]
+ ],
+ "_from": "babel-core@>=6.5.1 <7.0.0",
+ "_id": "babel-core@6.7.2",
+ "_inCache": true,
+ "_installable": true,
+ "_location": "/babel-core",
+ "_nodeVersion": "5.5.0",
+ "_npmOperationalInternal": {
+ "host": "packages-12-west.internal.npmjs.com",
+ "tmp": "tmp/babel-core-6.7.2.tgz_1457649689619_0.9277808284386992"
+ },
+ "_npmUser": {
+ "email": "amjad.masad@gmail.com",
+ "name": "amasad"
+ },
+ "_npmVersion": "3.3.12",
+ "_phantomChildren": {},
+ "_requested": {
+ "name": "babel-core",
+ "raw": "babel-core@^6.5.1",
+ "rawSpec": "^6.5.1",
+ "scope": null,
+ "spec": ">=6.5.1 <7.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "#DEV:/",
+ "/babel-plugin-transform-regenerator",
+ "/babel-register"
+ ],
+ "_resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.7.2.tgz",
+ "_shasum": "126357a99d046a6d0b5ce9a46c3b61d71a3ec4b5",
+ "_shrinkwrap": null,
+ "_spec": "babel-core@^6.5.1",
+ "_where": "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial",
+ "author": {
+ "email": "sebmck@gmail.com",
+ "name": "Sebastian McKenzie"
+ },
+ "dependencies": {
+ "babel-code-frame": "^6.7.2",
+ "babel-generator": "^6.7.2",
+ "babel-helpers": "^6.6.0",
+ "babel-messages": "^6.7.2",
+ "babel-register": "^6.7.2",
+ "babel-runtime": "^5.0.0",
+ "babel-template": "^6.7.0",
+ "babel-traverse": "^6.7.2",
+ "babel-types": "^6.7.2",
+ "babylon": "^6.7.0",
+ "convert-source-map": "^1.1.0",
+ "debug": "^2.1.1",
+ "json5": "^0.4.0",
+ "lodash": "^3.10.0",
+ "minimatch": "^2.0.3",
+ "path-exists": "^1.0.0",
+ "path-is-absolute": "^1.0.0",
+ "private": "^0.1.6",
+ "shebang-regex": "^1.0.0",
+ "slash": "^1.0.0",
+ "source-map": "^0.5.0"
+ },
+ "description": "Babel compiler core.",
+ "devDependencies": {
+ "babel-helper-fixtures": "^6.6.5",
+ "babel-helper-transform-fixture-test-runner": "^6.6.5",
+ "babel-polyfill": "^6.7.2"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "126357a99d046a6d0b5ce9a46c3b61d71a3ec4b5",
+ "tarball": "http://registry.npmjs.org/babel-core/-/babel-core-6.7.2.tgz"
+ },
+ "homepage": "https://babeljs.io/",
+ "keywords": [
+ "6to5",
+ "babel",
+ "classes",
+ "const",
+ "es6",
+ "harmony",
+ "let",
+ "modules",
+ "transpile",
+ "transpiler",
+ "var"
+ ],
+ "license": "MIT",
+ "maintainers": [
+ {
+ "name": "amasad",
+ "email": "amjad.masad@gmail.com"
+ },
+ {
+ "name": "hzoo",
+ "email": "hi@henryzoo.com"
+ },
+ {
+ "name": "jmm",
+ "email": "npm-public@jessemccarthy.net"
+ },
+ {
+ "name": "loganfsmyth",
+ "email": "loganfsmyth@gmail.com"
+ },
+ {
+ "name": "sebmck",
+ "email": "sebmck@gmail.com"
+ },
+ {
+ "name": "thejameskyle",
+ "email": "me@thejameskyle.com"
+ }
+ ],
+ "name": "babel-core",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel/tree/master/packages/babel-core"
+ },
+ "scripts": {
+ "bench": "make bench",
+ "test": "make test"
+ },
+ "version": "6.7.2"
+}
diff --git a/node_modules/babel-core/register.js b/node_modules/babel-core/register.js
new file mode 100644
index 0000000..97d35f2
--- /dev/null
+++ b/node_modules/babel-core/register.js
@@ -0,0 +1,3 @@
+/* eslint max-len: 0 */
+// TODO: eventually deprecate this console.trace("use the `babel-register` package instead of `babel-core/register`");
+module.exports = require("babel-register");
diff --git a/node_modules/babel-generator/README.md b/node_modules/babel-generator/README.md
new file mode 100644
index 0000000..aeab598
--- /dev/null
+++ b/node_modules/babel-generator/README.md
@@ -0,0 +1,84 @@
+# babel-generator
+
+> Turns an AST into code.
+
+## Install
+
+```sh
+$ npm install babel-generator
+```
+
+## Usage
+
+```js
+import {parse} from 'babylon';
+import generate from 'babel-generator';
+
+const code = 'class Example {}';
+const ast = parse(code);
+
+const output = generate(ast, { /* options */ }, code);
+```
+
+## Options
+
+Options for formatting output:
+
+name | type | default | description
+-----------------------|----------|-----------------|--------------------------------------------------------------------------
+auxiliaryCommentBefore | string | | Optional string to add as a block comment at the start of the output file
+auxiliaryCommentAfter | string | | Optional string to add as a block comment at the end of the output file
+shouldPrintComment | function | `opts.comments` | Function that takes a comment (as a string) and returns `true` if the comment should be included in the output. By default, comments are included if `opts.comments` is `true` or if `opts.minifed` is `false` and the comment contains `@preserve` or `@license`
+retainLines | boolean | `false` | Attempt to use the same line numbers in the output code as in the source code (helps preserve stack traces)
+comments | boolean | `true` | Should comments be included in output
+compact | boolean or `'auto'` | `opts.minified` | Set to `true` to avoid adding whitespace for formatting
+minified | boolean | `false` | Should the output be minified
+concise | boolean | `false` | Set to `true` to reduce whitespace (but not as much as `opts.compact`)
+quotes | `'single'` or `'double'` | autodetect based on `ast.tokens` | The type of quote to use in the output
+filename | string | | Used in warning messages
+
+Options for source maps:
+
+name | type | default | description
+-----------------------|----------|-----------------|--------------------------------------------------------------------------
+sourceMaps | boolean | `false` | Enable generating source maps
+sourceMapTarget | string | | The filename of the generated code that the source map will be associated with
+sourceRoot | string | | A root for all relative URLs in the source map
+sourceFileName | string | | The filename for the source code (i.e. the code in the `code` argument). This will only be used if `code` is a string.
+
+## AST from Multiple Sources
+
+In most cases, Babel does a 1:1 transformation of input-file to output-file. However,
+you may be dealing with AST constructed from multiple sources - JS files, templates, etc.
+If this is the case, and you want the sourcemaps to reflect the correct sources, you'll need
+to make some changes to your code.
+
+First, each node with a `loc` property (which indicates that node's original placement in the
+source document) must also include a `loc.filename` property, set to the source filename.
+
+Second, you should pass an object to `generate` as the `code` parameter. Keys
+should be the source filenames, and values should be the source content.
+
+Here's an example of what that might look like:
+
+```js
+import {parse} from 'babylon';
+import traverse from "babel-traverse";
+import generate from 'babel-generator';
+
+const a = 'var a = 1;';
+const b = 'var b = 2;';
+const astA = parse(a, { filename: 'a.js' });
+const astB = parse(b, { filename: 'b.js' });
+const ast = {
+ type: 'Program',
+ body: [].concat(astA.body, ast2.body)
+};
+
+const { code, map } = generate(ast, { /* options */ }, {
+ 'a.js': a,
+ 'b.js': b
+});
+
+// Sourcemap will point to both a.js and b.js where appropriate.
+```
diff --git a/node_modules/babel-generator/lib/buffer.js b/node_modules/babel-generator/lib/buffer.js
new file mode 100644
index 0000000..d340c85
--- /dev/null
+++ b/node_modules/babel-generator/lib/buffer.js
@@ -0,0 +1,326 @@
+"use strict";
+
+var _classCallCheck = require("babel-runtime/helpers/class-call-check")["default"];
+
+var _interopRequireDefault = require("babel-runtime/helpers/interop-require-default")["default"];
+
+exports.__esModule = true;
+
+var _repeating = require("repeating");
+
+var _repeating2 = _interopRequireDefault(_repeating);
+
+var _trimRight = require("trim-right");
+
+var _trimRight2 = _interopRequireDefault(_trimRight);
+
+/**
+ * Buffer for collecting generated output.
+ */
+
+var Buffer = (function () {
+ function Buffer(position, format) {
+ _classCallCheck(this, Buffer);
+
+ this.printedCommentStarts = {};
+ this.parenPushNewlineState = null;
+ this.position = position;
+ this._indent = format.indent.base;
+ this.format = format;
+ this.buf = "";
+
+ // Maintaining a reference to the last char in the buffer is an optimization
+ // to make sure that v8 doesn't "flatten" the string more often than needed
+ // see https://github.com/babel/babel/pull/3283 for details.
+ this.last = "";
+ }
+
+ /**
+ * Description
+ */
+
+ Buffer.prototype.catchUp = function catchUp(node) {
+ // catch up to this nodes newline if we're behind
+ if (node.loc && this.format.retainLines && this.buf) {
+ while (this.position.line < node.loc.start.line) {
+ this._push("\n");
+ }
+ }
+ };
+
+ /**
+ * Get the current trimmed buffer.
+ */
+
+ Buffer.prototype.get = function get() {
+ return _trimRight2["default"](this.buf);
+ };
+
+ /**
+ * Get the current indent.
+ */
+
+ Buffer.prototype.getIndent = function getIndent() {
+ if (this.format.compact || this.format.concise) {
+ return "";
+ } else {
+ return _repeating2["default"](this.format.indent.style, this._indent);
+ }
+ };
+
+ /**
+ * Get the current indent size.
+ */
+
+ Buffer.prototype.indentSize = function indentSize() {
+ return this.getIndent().length;
+ };
+
+ /**
+ * Increment indent size.
+ */
+
+ Buffer.prototype.indent = function indent() {
+ this._indent++;
+ };
+
+ /**
+ * Decrement indent size.
+ */
+
+ Buffer.prototype.dedent = function dedent() {
+ this._indent--;
+ };
+
+ /**
+ * Add a semicolon to the buffer.
+ */
+
+ Buffer.prototype.semicolon = function semicolon() {
+ this.push(";");
+ };
+
+ /**
+ * Ensure last character is a semicolon.
+ */
+
+ Buffer.prototype.ensureSemicolon = function ensureSemicolon() {
+ if (!this.isLast(";")) this.semicolon();
+ };
+
+ /**
+ * Add a right brace to the buffer.
+ */
+
+ Buffer.prototype.rightBrace = function rightBrace() {
+ this.newline(true);
+ if (this.format.minified && !this._lastPrintedIsEmptyStatement) {
+ this._removeLast(";");
+ }
+ this.push("}");
+ };
+
+ /**
+ * Add a keyword to the buffer.
+ */
+
+ Buffer.prototype.keyword = function keyword(name) {
+ this.push(name);
+ this.space();
+ };
+
+ /**
+ * Add a space to the buffer unless it is compact (override with force).
+ */
+
+ Buffer.prototype.space = function space(force) {
+ if (!force && this.format.compact) return;
+
+ if (force || this.buf && !this.isLast(" ") && !this.isLast("\n")) {
+ this.push(" ");
+ }
+ };
+
+ /**
+ * Remove the last character.
+ */
+
+ Buffer.prototype.removeLast = function removeLast(cha) {
+ if (this.format.compact) return;
+ return this._removeLast(cha);
+ };
+
+ Buffer.prototype._removeLast = function _removeLast(cha) {
+ if (!this._isLast(cha)) return;
+ this.buf = this.buf.slice(0, -1);
+ this.last = this.buf[this.buf.length - 1];
+ this.position.unshift(cha);
+ };
+
+ /**
+ * Set some state that will be modified if a newline has been inserted before any
+ * non-space characters.
+ *
+ * This is to prevent breaking semantics for terminatorless separator nodes. eg:
+ *
+ * return foo;
+ *
+ * returns `foo`. But if we do:
+ *
+ * return
+ * foo;
+ *
+ * `undefined` will be returned and not `foo` due to the terminator.
+ */
+
+ Buffer.prototype.startTerminatorless = function startTerminatorless() {
+ return this.parenPushNewlineState = {
+ printed: false
+ };
+ };
+
+ /**
+ * Print an ending parentheses if a starting one has been printed.
+ */
+
+ Buffer.prototype.endTerminatorless = function endTerminatorless(state) {
+ if (state.printed) {
+ this.dedent();
+ this.newline();
+ this.push(")");
+ }
+ };
+
+ /**
+ * Add a newline (or many newlines), maintaining formatting.
+ * Strips multiple newlines if removeLast is true.
+ */
+
+ Buffer.prototype.newline = function newline(i, removeLast) {
+ if (this.format.retainLines || this.format.compact) return;
+
+ if (this.format.concise) {
+ this.space();
+ return;
+ }
+
+ // never allow more than two lines
+ if (this.endsWith("\n\n")) return;
+
+ if (typeof i === "boolean") removeLast = i;
+ if (typeof i !== "number") i = 1;
+
+ i = Math.min(2, i);
+ if (this.endsWith("{\n") || this.endsWith(":\n")) i--;
+ if (i <= 0) return;
+
+ // remove the last newline
+ if (removeLast) {
+ this.removeLast("\n");
+ }
+
+ this.removeLast(" ");
+ this._removeSpacesAfterLastNewline();
+ this._push(_repeating2["default"]("\n", i));
+ };
+
+ /**
+ * If buffer ends with a newline and some spaces after it, trim those spaces.
+ */
+
+ Buffer.prototype._removeSpacesAfterLastNewline = function _removeSpacesAfterLastNewline() {
+ var lastNewlineIndex = this.buf.lastIndexOf("\n");
+ if (lastNewlineIndex >= 0 && this.get().length <= lastNewlineIndex) {
+ this.buf = this.buf.substring(0, lastNewlineIndex + 1);
+ this.last = "\n";
+ }
+ };
+
+ /**
+ * Push a string to the buffer, maintaining indentation and newlines.
+ */
+
+ Buffer.prototype.push = function push(str, noIndent) {
+ if (!this.format.compact && this._indent && !noIndent && str !== "\n") {
+ // we have an indent level and we aren't pushing a newline
+ var indent = this.getIndent();
+
+ // replace all newlines with newlines with the indentation
+ str = str.replace(/\n/g, "\n" + indent);
+
+ // we've got a newline before us so prepend on the indentation
+ if (this.isLast("\n")) this._push(indent);
+ }
+
+ this._push(str);
+ };
+
+ /**
+ * Push a string to the buffer.
+ */
+
+ Buffer.prototype._push = function _push(str) {
+ // see startTerminatorless() instance method
+ var parenPushNewlineState = this.parenPushNewlineState;
+ if (parenPushNewlineState) {
+ for (var i = 0; i < str.length; i++) {
+ var cha = str[i];
+
+ // we can ignore spaces since they wont interupt a terminatorless separator
+ if (cha === " ") continue;
+
+ this.parenPushNewlineState = null;
+
+ if (cha === "\n" || cha === "/") {
+ // we're going to break this terminator expression so we need to add a parentheses
+ this._push("(");
+ this.indent();
+ parenPushNewlineState.printed = true;
+ }
+
+ break;
+ }
+ }
+
+ //
+ this.position.push(str);
+ this.buf += str;
+ this.last = str[str.length - 1];
+ };
+
+ /**
+ * Test if the buffer ends with a string.
+ */
+
+ Buffer.prototype.endsWith = function endsWith(str) {
+ if (str.length === 1) {
+ return this.last === str;
+ } else {
+ return this.buf.slice(-str.length) === str;
+ }
+ };
+
+ /**
+ * Test if a character is last in the buffer.
+ */
+
+ Buffer.prototype.isLast = function isLast(cha) {
+ if (this.format.compact) return false;
+ return this._isLast(cha);
+ };
+
+ Buffer.prototype._isLast = function _isLast(cha) {
+ var last = this.last;
+
+ if (Array.isArray(cha)) {
+ return cha.indexOf(last) >= 0;
+ } else {
+ return cha === last;
+ }
+ };
+
+ return Buffer;
+})();
+
+exports["default"] = Buffer;
+module.exports = exports["default"];
\ No newline at end of file
diff --git a/node_modules/babel-generator/lib/generators/base.js b/node_modules/babel-generator/lib/generators/base.js
new file mode 100644
index 0000000..31eb15f
--- /dev/null
+++ b/node_modules/babel-generator/lib/generators/base.js
@@ -0,0 +1,50 @@
+"use strict";
+
+exports.__esModule = true;
+exports.File = File;
+exports.Program = Program;
+exports.BlockStatement = BlockStatement;
+exports.Noop = Noop;
+exports.Directive = Directive;
+exports.DirectiveLiteral = DirectiveLiteral;
+
+function File(node) {
+ this.print(node.program, node);
+}
+
+function Program(node) {
+ this.printInnerComments(node, false);
+
+ this.printSequence(node.directives, node);
+ if (node.directives && node.directives.length) this.newline();
+
+ this.printSequence(node.body, node);
+}
+
+function BlockStatement(node) {
+ this.push("{");
+ this.printInnerComments(node);
+ if (node.body.length) {
+ this.newline();
+
+ this.printSequence(node.directives, node, { indent: true });
+ if (node.directives && node.directives.length) this.newline();
+
+ this.printSequence(node.body, node, { indent: true });
+ if (!this.format.retainLines && !this.format.concise) this.removeLast("\n");
+ this.rightBrace();
+ } else {
+ this.push("}");
+ }
+}
+
+function Noop() {}
+
+function Directive(node) {
+ this.print(node.value, node);
+ this.semicolon();
+}
+
+function DirectiveLiteral(node) {
+ this.push(this._stringLiteral(node.value));
+}
\ No newline at end of file
diff --git a/node_modules/babel-generator/lib/generators/classes.js b/node_modules/babel-generator/lib/generators/classes.js
new file mode 100644
index 0000000..de24408
--- /dev/null
+++ b/node_modules/babel-generator/lib/generators/classes.js
@@ -0,0 +1,80 @@
+"use strict";
+
+exports.__esModule = true;
+exports.ClassDeclaration = ClassDeclaration;
+exports.ClassBody = ClassBody;
+exports.ClassProperty = ClassProperty;
+exports.ClassMethod = ClassMethod;
+
+function ClassDeclaration(node) {
+ this.printJoin(node.decorators, node, { separator: "" });
+ this.push("class");
+
+ if (node.id) {
+ this.push(" ");
+ this.print(node.id, node);
+ }
+
+ this.print(node.typeParameters, node);
+
+ if (node.superClass) {
+ this.push(" extends ");
+ this.print(node.superClass, node);
+ this.print(node.superTypeParameters, node);
+ }
+
+ if (node["implements"]) {
+ this.push(" implements ");
+ this.printJoin(node["implements"], node, { separator: ", " });
+ }
+
+ this.space();
+ this.print(node.body, node);
+}
+
+exports.ClassExpression = ClassDeclaration;
+
+function ClassBody(node) {
+ this.push("{");
+ this.printInnerComments(node);
+ if (node.body.length === 0) {
+ this.push("}");
+ } else {
+ this.newline();
+
+ this.indent();
+ this.printSequence(node.body, node);
+ this.dedent();
+
+ this.rightBrace();
+ }
+}
+
+function ClassProperty(node) {
+ this.printJoin(node.decorators, node, { separator: "" });
+
+ if (node["static"]) this.push("static ");
+ this.print(node.key, node);
+ this.print(node.typeAnnotation, node);
+ if (node.value) {
+ this.space();
+ this.push("=");
+ this.space();
+ this.print(node.value, node);
+ }
+ this.semicolon();
+}
+
+function ClassMethod(node) {
+ this.printJoin(node.decorators, node, { separator: "" });
+
+ if (node["static"]) {
+ this.push("static ");
+ }
+
+ if (node.kind === "constructorCall") {
+ this.push("call ");
+ }
+
+ this._method(node);
+}
\ No newline at end of file
diff --git a/node_modules/babel-generator/lib/generators/expressions.js b/node_modules/babel-generator/lib/generators/expressions.js
new file mode 100644
index 0000000..e72c514
--- /dev/null
+++ b/node_modules/babel-generator/lib/generators/expressions.js
@@ -0,0 +1,280 @@
+/* eslint max-len: 0 */
+
+"use strict";
+
+var _interopRequireDefault = require("babel-runtime/helpers/interop-require-default")["default"];
+
+var _interopRequireWildcard = require("babel-runtime/helpers/interop-require-wildcard")["default"];
+
+exports.__esModule = true;
+exports.UnaryExpression = UnaryExpression;
+exports.DoExpression = DoExpression;
+exports.ParenthesizedExpression = ParenthesizedExpression;
+exports.UpdateExpression = UpdateExpression;
+exports.ConditionalExpression = ConditionalExpression;
+exports.NewExpression = NewExpression;
+exports.SequenceExpression = SequenceExpression;
+exports.ThisExpression = ThisExpression;
+exports.Super = Super;
+exports.Decorator = Decorator;
+exports.CallExpression = CallExpression;
+exports.EmptyStatement = EmptyStatement;
+exports.ExpressionStatement = ExpressionStatement;
+exports.AssignmentPattern = AssignmentPattern;
+exports.AssignmentExpression = AssignmentExpression;
+exports.BindExpression = BindExpression;
+exports.MemberExpression = MemberExpression;
+exports.MetaProperty = MetaProperty;
+
+var _isInteger = require("is-integer");
+
+var _isInteger2 = _interopRequireDefault(_isInteger);
+
+var _lodashLangIsNumber = require("lodash/lang/isNumber");
+
+var _lodashLangIsNumber2 = _interopRequireDefault(_lodashLangIsNumber);
+
+var _babelTypes = require("babel-types");
+
+var t = _interopRequireWildcard(_babelTypes);
+
+var _node = require("../node");
+
+var n = _interopRequireWildcard(_node);
+
+var SCIENTIFIC_NOTATION = /e/i;
+var ZERO_DECIMAL_INTEGER = /\.0+$/;
+var NON_DECIMAL_LITERAL = /^0[box]/;
+
+function UnaryExpression(node) {
+ var needsSpace = /[a-z]$/.test(node.operator);
+ var arg = node.argument;
+
+ if (t.isUpdateExpression(arg) || t.isUnaryExpression(arg)) {
+ needsSpace = true;
+ }
+
+ if (t.isUnaryExpression(arg) && arg.operator === "!") {
+ needsSpace = false;
+ }
+
+ this.push(node.operator);
+ if (needsSpace) this.push(" ");
+ this.print(node.argument, node);
+}
+
+function DoExpression(node) {
+ this.push("do");
+ this.space();
+ this.print(node.body, node);
+}
+
+function ParenthesizedExpression(node) {
+ this.push("(");
+ this.print(node.expression, node);
+ this.push(")");
+}
+
+function UpdateExpression(node) {
+ if (node.prefix) {
+ this.push(node.operator);
+ this.print(node.argument, node);
+ } else {
+ this.print(node.argument, node);
+ this.push(node.operator);
+ }
+}
+
+function ConditionalExpression(node) {
+ this.print(node.test, node);
+ this.space();
+ this.push("?");
+ this.space();
+ this.print(node.consequent, node);
+ this.space();
+ this.push(":");
+ this.space();
+ this.print(node.alternate, node);
+}
+
+function NewExpression(node, parent) {
+ this.push("new ");
+ this.print(node.callee, node);
+ if (node.arguments.length === 0 && this.format.minified && !t.isCallExpression(parent, { callee: node }) && !t.isMemberExpression(parent) && !t.isNewExpression(parent)) return;
+
+ this.push("(");
+ this.printList(node.arguments, node);
+ this.push(")");
+}
+
+function SequenceExpression(node) {
+ this.printList(node.expressions, node);
+}
+
+function ThisExpression() {
+ this.push("this");
+}
+
+function Super() {
+ this.push("super");
+}
+
+function Decorator(node) {
+ this.push("@");
+ this.print(node.expression, node);
+ this.newline();
+}
+
+function CallExpression(node) {
+ this.print(node.callee, node);
+ if (node.loc) this.printAuxAfterComment();
+
+ this.push("(");
+
+ var isPrettyCall = node._prettyCall && !this.format.retainLines && !this.format.compact;
+
+ var separator = undefined;
+ if (isPrettyCall) {
+ separator = ",\n";
+ this.newline();
+ this.indent();
+ }
+
+ this.printList(node.arguments, node, { separator: separator });
+
+ if (isPrettyCall) {
+ this.newline();
+ this.dedent();
+ }
+
+ this.push(")");
+}
+
+function buildYieldAwait(keyword) {
+ return function (node) {
+ this.push(keyword);
+
+ if (node.delegate) {
+ this.push("*");
+ }
+
+ if (node.argument) {
+ this.push(" ");
+ var terminatorState = this.startTerminatorless();
+ this.print(node.argument, node);
+ this.endTerminatorless(terminatorState);
+ }
+ };
+}
+
+var YieldExpression = buildYieldAwait("yield");
+exports.YieldExpression = YieldExpression;
+var AwaitExpression = buildYieldAwait("await");
+
+exports.AwaitExpression = AwaitExpression;
+
+function EmptyStatement() {
+ this._lastPrintedIsEmptyStatement = true;
+ this.semicolon();
+}
+
+function ExpressionStatement(node) {
+ this.print(node.expression, node);
+ this.semicolon();
+}
+
+function AssignmentPattern(node) {
+ this.print(node.left, node);
+ this.space();
+ this.push("=");
+ this.space();
+ this.print(node.right, node);
+}
+
+function AssignmentExpression(node, parent) {
+ // Somewhere inside a for statement `init` node but doesn't usually
+ // needs a paren except for `in` expressions: `for (a in b ? a : b;;)`
+ var parens = this._inForStatementInitCounter && node.operator === "in" && !n.needsParens(node, parent);
+
+ if (parens) {
+ this.push("(");
+ }
+
+ this.print(node.left, node);
+
+ var spaces = !this.format.compact || node.operator === "in" || node.operator === "instanceof";
+ if (spaces) this.push(" ");
+
+ this.push(node.operator);
+
+ if (!spaces) {
+ // space is mandatory to avoid outputting
+
+
+
+## Table of Contents
+
+- [Examples](#examples)
+ - [Consuming a source map](#consuming-a-source-map)
+ - [Generating a source map](#generating-a-source-map)
+ - [With SourceNode (high level API)](#with-sourcenode-high-level-api)
+ - [With SourceMapGenerator (low level API)](#with-sourcemapgenerator-low-level-api)
+- [API](#api)
+ - [SourceMapConsumer](#sourcemapconsumer)
+ - [new SourceMapConsumer(rawSourceMap)](#new-sourcemapconsumerrawsourcemap)
+ - [SourceMapConsumer.prototype.computeColumnSpans()](#sourcemapconsumerprototypecomputecolumnspans)
+ - [SourceMapConsumer.prototype.originalPositionFor(generatedPosition)](#sourcemapconsumerprototypeoriginalpositionforgeneratedposition)
+ - [SourceMapConsumer.prototype.generatedPositionFor(originalPosition)](#sourcemapconsumerprototypegeneratedpositionfororiginalposition)
+ - [SourceMapConsumer.prototype.allGeneratedPositionsFor(originalPosition)](#sourcemapconsumerprototypeallgeneratedpositionsfororiginalposition)
+ - [SourceMapConsumer.prototype.hasContentsOfAllSources()](#sourcemapconsumerprototypehascontentsofallsources)
+ - [SourceMapConsumer.prototype.sourceContentFor(source[, returnNullOnMissing])](#sourcemapconsumerprototypesourcecontentforsource-returnnullonmissing)
+ - [SourceMapConsumer.prototype.eachMapping(callback, context, order)](#sourcemapconsumerprototypeeachmappingcallback-context-order)
+ - [SourceMapGenerator](#sourcemapgenerator)
+ - [new SourceMapGenerator([startOfSourceMap])](#new-sourcemapgeneratorstartofsourcemap)
+ - [SourceMapGenerator.fromSourceMap(sourceMapConsumer)](#sourcemapgeneratorfromsourcemapsourcemapconsumer)
+ - [SourceMapGenerator.prototype.addMapping(mapping)](#sourcemapgeneratorprototypeaddmappingmapping)
+ - [SourceMapGenerator.prototype.setSourceContent(sourceFile, sourceContent)](#sourcemapgeneratorprototypesetsourcecontentsourcefile-sourcecontent)
+ - [SourceMapGenerator.prototype.applySourceMap(sourceMapConsumer[, sourceFile[, sourceMapPath]])](#sourcemapgeneratorprototypeapplysourcemapsourcemapconsumer-sourcefile-sourcemappath)
+ - [SourceMapGenerator.prototype.toString()](#sourcemapgeneratorprototypetostring)
+ - [SourceNode](#sourcenode)
+ - [new SourceNode([line, column, source[, chunk[, name]]])](#new-sourcenodeline-column-source-chunk-name)
+ - [SourceNode.fromStringWithSourceMap(code, sourceMapConsumer[, relativePath])](#sourcenodefromstringwithsourcemapcode-sourcemapconsumer-relativepath)
+ - [SourceNode.prototype.add(chunk)](#sourcenodeprototypeaddchunk)
+ - [SourceNode.prototype.prepend(chunk)](#sourcenodeprototypeprependchunk)
+ - [SourceNode.prototype.setSourceContent(sourceFile, sourceContent)](#sourcenodeprototypesetsourcecontentsourcefile-sourcecontent)
+ - [SourceNode.prototype.walk(fn)](#sourcenodeprototypewalkfn)
+ - [SourceNode.prototype.walkSourceContents(fn)](#sourcenodeprototypewalksourcecontentsfn)
+ - [SourceNode.prototype.join(sep)](#sourcenodeprototypejoinsep)
+ - [SourceNode.prototype.replaceRight(pattern, replacement)](#sourcenodeprototypereplacerightpattern-replacement)
+ - [SourceNode.prototype.toString()](#sourcenodeprototypetostring)
+ - [SourceNode.prototype.toStringWithSourceMap([startOfSourceMap])](#sourcenodeprototypetostringwithsourcemapstartofsourcemap)
+
+
+
+## Examples
+
+### Consuming a source map
+
+```js
+var rawSourceMap = {
+ version: 3,
+ file: 'min.js',
+ names: ['bar', 'baz', 'n'],
+ sources: ['one.js', 'two.js'],
+ sourceRoot: 'http://example.com/www/js/',
+ mappings: 'CAAC,IAAI,IAAM,SAAUA,GAClB,OAAOC,IAAID;CCDb,IAAI,IAAM,SAAUE,GAClB,OAAOA'
+};
+
+var smc = new SourceMapConsumer(rawSourceMap);
+
+console.log(smc.sources);
+// [ 'http://example.com/www/js/one.js',
+// 'http://example.com/www/js/two.js' ]
+
+console.log(smc.originalPositionFor({
+ line: 2,
+ column: 28
+}));
+// { source: 'http://example.com/www/js/two.js',
+// line: 2,
+// column: 10,
+// name: 'n' }
+
+console.log(smc.generatedPositionFor({
+ source: 'http://example.com/www/js/two.js',
+ line: 2,
+ column: 10
+}));
+// { line: 2, column: 28 }
+
+smc.eachMapping(function (m) {
+ // ...
+});
+```
+
+### Generating a source map
+
+In depth guide:
+[**Compiling to JavaScript, and Debugging with Source Maps**](https://hacks.mozilla.org/2013/05/compiling-to-javascript-and-debugging-with-source-maps/)
+
+#### With SourceNode (high level API)
+
+```js
+function compile(ast) {
+ switch (ast.type) {
+ case 'BinaryExpression':
+ return new SourceNode(
+ ast.location.line,
+ ast.location.column,
+ ast.location.source,
+ [compile(ast.left), " + ", compile(ast.right)]
+ );
+ case 'Literal':
+ return new SourceNode(
+ ast.location.line,
+ ast.location.column,
+ ast.location.source,
+ String(ast.value)
+ );
+ // ...
+ default:
+ throw new Error("Bad AST");
+ }
+}
+
+var ast = parse("40 + 2", "add.js");
+console.log(compile(ast).toStringWithSourceMap({
+ file: 'add.js'
+}));
+// { code: '40 + 2',
+// map: [object SourceMapGenerator] }
+```
+
+#### With SourceMapGenerator (low level API)
+
+```js
+var map = new SourceMapGenerator({
+ file: "source-mapped.js"
+});
+
+map.addMapping({
+ generated: {
+ line: 10,
+ column: 35
+ },
+ source: "foo.js",
+ original: {
+ line: 33,
+ column: 2
+ },
+ name: "christopher"
+});
+
+console.log(map.toString());
+// '{"version":3,"file":"source-mapped.js","sources":["foo.js"],"names":["christopher"],"mappings":";;;;;;;;;mCAgCEA"}'
+```
+
+## API
+
+Get a reference to the module:
+
+```js
+// Node.js
+var sourceMap = require('source-map');
+
+// Browser builds
+var sourceMap = window.sourceMap;
+
+// Inside Firefox
+const sourceMap = require("devtools/toolkit/sourcemap/source-map.js");
+```
+
+### SourceMapConsumer
+
+A SourceMapConsumer instance represents a parsed source map which we can query
+for information about the original file positions by giving it a file position
+in the generated source.
+
+#### new SourceMapConsumer(rawSourceMap)
+
+The only parameter is the raw source map (either as a string which can be
+`JSON.parse`'d, or an object). According to the spec, source maps have the
+following attributes:
+
+* `version`: Which version of the source map spec this map is following.
+
+* `sources`: An array of URLs to the original source files.
+
+* `names`: An array of identifiers which can be referenced by individual
+ mappings.
+
+* `sourceRoot`: Optional. The URL root from which all sources are relative.
+
+* `sourcesContent`: Optional. An array of contents of the original source files.
+
+* `mappings`: A string of base64 VLQs which contain the actual mappings.
+
+* `file`: Optional. The generated filename this source map is associated with.
+
+```js
+var consumer = new sourceMap.SourceMapConsumer(rawSourceMapJsonData);
+```
+
+#### SourceMapConsumer.prototype.computeColumnSpans()
+
+Compute the last column for each generated mapping. The last column is
+inclusive.
+
+```js
+// Before:
+consumer.allGeneratedpositionsfor({ line: 2, source: "foo.coffee" })
+// [ { line: 2,
+// column: 1 },
+// { line: 2,
+// column: 10 },
+// { line: 2,
+// column: 20 } ]
+
+consumer.computeColumnSpans();
+
+// After:
+consumer.allGeneratedpositionsfor({ line: 2, source: "foo.coffee" })
+// [ { line: 2,
+// column: 1,
+// lastColumn: 9 },
+// { line: 2,
+// column: 10,
+// lastColumn: 19 },
+// { line: 2,
+// column: 20,
+// lastColumn: Infinity } ]
+
+```
+
+#### SourceMapConsumer.prototype.originalPositionFor(generatedPosition)
+
+Returns the original source, line, and column information for the generated
+source's line and column positions provided. The only argument is an object with
+the following properties:
+
+* `line`: The line number in the generated source.
+
+* `column`: The column number in the generated source.
+
+* `bias`: Either `SourceMapConsumer.GREATEST_LOWER_BOUND` or
+ `SourceMapConsumer.LEAST_UPPER_BOUND`. Specifies whether to return the closest
+ element that is smaller than or greater than the one we are searching for,
+ respectively, if the exact element cannot be found. Defaults to
+ `SourceMapConsumer.GREATEST_LOWER_BOUND`.
+
+and an object is returned with the following properties:
+
+* `source`: The original source file, or null if this information is not
+ available.
+
+* `line`: The line number in the original source, or null if this information is
+ not available.
+
+* `column`: The column number in the original source, or null or null if this
+ information is not available.
+
+* `name`: The original identifier, or null if this information is not available.
+
+```js
+consumer.originalPositionFor({ line: 2, column: 10 })
+// { source: 'foo.coffee',
+// line: 2,
+// column: 2,
+// name: null }
+
+consumer.originalPositionFor({ line: 99999999999999999, column: 999999999999999 })
+// { source: null,
+// line: null,
+// column: null,
+// name: null }
+```
+
+#### SourceMapConsumer.prototype.generatedPositionFor(originalPosition)
+
+Returns the generated line and column information for the original source,
+line, and column positions provided. The only argument is an object with
+the following properties:
+
+* `source`: The filename of the original source.
+
+* `line`: The line number in the original source.
+
+* `column`: The column number in the original source.
+
+and an object is returned with the following properties:
+
+* `line`: The line number in the generated source, or null.
+
+* `column`: The column number in the generated source, or null.
+
+```js
+consumer.generatedPositionFor({ source: "example.js", line: 2, column: 10 })
+// { line: 1,
+// column: 56 }
+```
+
+#### SourceMapConsumer.prototype.allGeneratedPositionsFor(originalPosition)
+
+Returns all generated line and column information for the original source, line,
+and column provided. If no column is provided, returns all mappings
+corresponding to a either the line we are searching for or the next closest line
+that has any mappings. Otherwise, returns all mappings corresponding to the
+given line and either the column we are searching for or the next closest column
+that has any offsets.
+
+The only argument is an object with the following properties:
+
+* `source`: The filename of the original source.
+
+* `line`: The line number in the original source.
+
+* `column`: Optional. The column number in the original source.
+
+and an array of objects is returned, each with the following properties:
+
+* `line`: The line number in the generated source, or null.
+
+* `column`: The column number in the generated source, or null.
+
+```js
+consumer.allGeneratedpositionsfor({ line: 2, source: "foo.coffee" })
+// [ { line: 2,
+// column: 1 },
+// { line: 2,
+// column: 10 },
+// { line: 2,
+// column: 20 } ]
+```
+
+#### SourceMapConsumer.prototype.hasContentsOfAllSources()
+
+Return true if we have the embedded source content for every source listed in
+the source map, false otherwise.
+
+In other words, if this method returns `true`, then
+`consumer.sourceContentFor(s)` will succeed for every source `s` in
+`consumer.sources`.
+
+```js
+// ...
+if (consumer.hasContentsOfAllSources()) {
+ consumerReadyCallback(consumer);
+} else {
+ fetchSources(consumer, consumerReadyCallback);
+}
+// ...
+```
+
+#### SourceMapConsumer.prototype.sourceContentFor(source[, returnNullOnMissing])
+
+Returns the original source content for the source provided. The only
+argument is the URL of the original source file.
+
+If the source content for the given source is not found, then an error is
+thrown. Optionally, pass `true` as the second param to have `null` returned
+instead.
+
+```js
+consumer.sources
+// [ "my-cool-lib.clj" ]
+
+consumer.sourceContentFor("my-cool-lib.clj")
+// "..."
+
+consumer.sourceContentFor("this is not in the source map");
+// Error: "this is not in the source map" is not in the source map
+
+consumer.sourceContentFor("this is not in the source map", true);
+// null
+```
+
+#### SourceMapConsumer.prototype.eachMapping(callback, context, order)
+
+Iterate over each mapping between an original source/line/column and a
+generated line/column in this source map.
+
+* `callback`: The function that is called with each mapping. Mappings have the
+ form `{ source, generatedLine, generatedColumn, originalLine, originalColumn,
+ name }`
+
+* `context`: Optional. If specified, this object will be the value of `this`
+ every time that `callback` is called.
+
+* `order`: Either `SourceMapConsumer.GENERATED_ORDER` or
+ `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to iterate over
+ the mappings sorted by the generated file's line/column order or the
+ original's source/line/column order, respectively. Defaults to
+ `SourceMapConsumer.GENERATED_ORDER`.
+
+```js
+consumer.eachMapping(function (m) { console.log(m); })
+// ...
+// { source: 'illmatic.js',
+// generatedLine: 1,
+// generatedColumn: 0,
+// originalLine: 1,
+// originalColumn: 0,
+// name: null }
+// { source: 'illmatic.js',
+// generatedLine: 2,
+// generatedColumn: 0,
+// originalLine: 2,
+// originalColumn: 0,
+// name: null }
+// ...
+```
+### SourceMapGenerator
+
+An instance of the SourceMapGenerator represents a source map which is being
+built incrementally.
+
+#### new SourceMapGenerator([startOfSourceMap])
+
+You may pass an object with the following properties:
+
+* `file`: The filename of the generated source that this source map is
+ associated with.
+
+* `sourceRoot`: A root for all relative URLs in this source map.
+
+* `skipValidation`: Optional. When `true`, disables validation of mappings as
+ they are added. This can improve performance but should be used with
+ discretion, as a last resort. Even then, one should avoid using this flag when
+ running tests, if possible.
+
+```js
+var generator = new sourceMap.SourceMapGenerator({
+ file: "my-generated-javascript-file.js",
+ sourceRoot: "http://example.com/app/js/"
+});
+```
+
+#### SourceMapGenerator.fromSourceMap(sourceMapConsumer)
+
+Creates a new `SourceMapGenerator` from an existing `SourceMapConsumer` instance.
+
+* `sourceMapConsumer` The SourceMap.
+
+```js
+var generator = sourceMap.SourceMapGenerator.fromSourceMap(consumer);
+```
+
+#### SourceMapGenerator.prototype.addMapping(mapping)
+
+Add a single mapping from original source line and column to the generated
+source's line and column for this source map being created. The mapping object
+should have the following properties:
+
+* `generated`: An object with the generated line and column positions.
+
+* `original`: An object with the original line and column positions.
+
+* `source`: The original source file (relative to the sourceRoot).
+
+* `name`: An optional original token name for this mapping.
+
+```js
+generator.addMapping({
+ source: "module-one.scm",
+ original: { line: 128, column: 0 },
+ generated: { line: 3, column: 456 }
+})
+```
+
+#### SourceMapGenerator.prototype.setSourceContent(sourceFile, sourceContent)
+
+Set the source content for an original source file.
+
+* `sourceFile` the URL of the original source file.
+
+* `sourceContent` the content of the source file.
+
+```js
+generator.setSourceContent("module-one.scm",
+ fs.readFileSync("path/to/module-one.scm"))
+```
+
+#### SourceMapGenerator.prototype.applySourceMap(sourceMapConsumer[, sourceFile[, sourceMapPath]])
+
+Applies a SourceMap for a source file to the SourceMap.
+Each mapping to the supplied source file is rewritten using the
+supplied SourceMap. Note: The resolution for the resulting mappings
+is the minimum of this map and the supplied map.
+
+* `sourceMapConsumer`: The SourceMap to be applied.
+
+* `sourceFile`: Optional. The filename of the source file.
+ If omitted, sourceMapConsumer.file will be used, if it exists.
+ Otherwise an error will be thrown.
+
+* `sourceMapPath`: Optional. The dirname of the path to the SourceMap
+ to be applied. If relative, it is relative to the SourceMap.
+
+ This parameter is needed when the two SourceMaps aren't in the same
+ directory, and the SourceMap to be applied contains relative source
+ paths. If so, those relative source paths need to be rewritten
+ relative to the SourceMap.
+
+ If omitted, it is assumed that both SourceMaps are in the same directory,
+ thus not needing any rewriting. (Supplying `'.'` has the same effect.)
+
+#### SourceMapGenerator.prototype.toString()
+
+Renders the source map being generated to a string.
+
+```js
+generator.toString()
+// '{"version":3,"sources":["module-one.scm"],"names":[],"mappings":"...snip...","file":"my-generated-javascript-file.js","sourceRoot":"http://example.com/app/js/"}'
+```
+
+### SourceNode
+
+SourceNodes provide a way to abstract over interpolating and/or concatenating
+snippets of generated JavaScript source code, while maintaining the line and
+column information associated between those snippets and the original source
+code. This is useful as the final intermediate representation a compiler might
+use before outputting the generated JS and source map.
+
+#### new SourceNode([line, column, source[, chunk[, name]]])
+
+* `line`: The original line number associated with this source node, or null if
+ it isn't associated with an original line.
+
+* `column`: The original column number associated with this source node, or null
+ if it isn't associated with an original column.
+
+* `source`: The original source's filename; null if no filename is provided.
+
+* `chunk`: Optional. Is immediately passed to `SourceNode.prototype.add`, see
+ below.
+
+* `name`: Optional. The original identifier.
+
+```js
+var node = new SourceNode(1, 2, "a.cpp", [
+ new SourceNode(3, 4, "b.cpp", "extern int status;\n"),
+ new SourceNode(5, 6, "c.cpp", "std::string* make_string(size_t n);\n"),
+ new SourceNode(7, 8, "d.cpp", "int main(int argc, char** argv) {}\n"),
+]);
+```
+
+#### SourceNode.fromStringWithSourceMap(code, sourceMapConsumer[, relativePath])
+
+Creates a SourceNode from generated code and a SourceMapConsumer.
+
+* `code`: The generated code
+
+* `sourceMapConsumer` The SourceMap for the generated code
+
+* `relativePath` The optional path that relative sources in `sourceMapConsumer`
+ should be relative to.
+
+```js
+var consumer = new SourceMapConsumer(fs.readFileSync("path/to/my-file.js.map"));
+var node = SourceNode.fromStringWithSourceMap(fs.readFileSync("path/to/my-file.js"),
+ consumer);
+```
+
+#### SourceNode.prototype.add(chunk)
+
+Add a chunk of generated JS to this source node.
+
+* `chunk`: A string snippet of generated JS code, another instance of
+ `SourceNode`, or an array where each member is one of those things.
+
+```js
+node.add(" + ");
+node.add(otherNode);
+node.add([leftHandOperandNode, " + ", rightHandOperandNode]);
+```
+
+#### SourceNode.prototype.prepend(chunk)
+
+Prepend a chunk of generated JS to this source node.
+
+* `chunk`: A string snippet of generated JS code, another instance of
+ `SourceNode`, or an array where each member is one of those things.
+
+```js
+node.prepend("/** Build Id: f783haef86324gf **/\n\n");
+```
+
+#### SourceNode.prototype.setSourceContent(sourceFile, sourceContent)
+
+Set the source content for a source file. This will be added to the
+`SourceMap` in the `sourcesContent` field.
+
+* `sourceFile`: The filename of the source file
+
+* `sourceContent`: The content of the source file
+
+```js
+node.setSourceContent("module-one.scm",
+ fs.readFileSync("path/to/module-one.scm"))
+```
+
+#### SourceNode.prototype.walk(fn)
+
+Walk over the tree of JS snippets in this node and its children. The walking
+function is called once for each snippet of JS and is passed that snippet and
+the its original associated source's line/column location.
+
+* `fn`: The traversal function.
+
+```js
+var node = new SourceNode(1, 2, "a.js", [
+ new SourceNode(3, 4, "b.js", "uno"),
+ "dos",
+ [
+ "tres",
+ new SourceNode(5, 6, "c.js", "quatro")
+ ]
+]);
+
+node.walk(function (code, loc) { console.log("WALK:", code, loc); })
+// WALK: uno { source: 'b.js', line: 3, column: 4, name: null }
+// WALK: dos { source: 'a.js', line: 1, column: 2, name: null }
+// WALK: tres { source: 'a.js', line: 1, column: 2, name: null }
+// WALK: quatro { source: 'c.js', line: 5, column: 6, name: null }
+```
+
+#### SourceNode.prototype.walkSourceContents(fn)
+
+Walk over the tree of SourceNodes. The walking function is called for each
+source file content and is passed the filename and source content.
+
+* `fn`: The traversal function.
+
+```js
+var a = new SourceNode(1, 2, "a.js", "generated from a");
+a.setSourceContent("a.js", "original a");
+var b = new SourceNode(1, 2, "b.js", "generated from b");
+b.setSourceContent("b.js", "original b");
+var c = new SourceNode(1, 2, "c.js", "generated from c");
+c.setSourceContent("c.js", "original c");
+
+var node = new SourceNode(null, null, null, [a, b, c]);
+node.walkSourceContents(function (source, contents) { console.log("WALK:", source, ":", contents); })
+// WALK: a.js : original a
+// WALK: b.js : original b
+// WALK: c.js : original c
+```
+
+#### SourceNode.prototype.join(sep)
+
+Like `Array.prototype.join` except for SourceNodes. Inserts the separator
+between each of this source node's children.
+
+* `sep`: The separator.
+
+```js
+var lhs = new SourceNode(1, 2, "a.rs", "my_copy");
+var operand = new SourceNode(3, 4, "a.rs", "=");
+var rhs = new SourceNode(5, 6, "a.rs", "orig.clone()");
+
+var node = new SourceNode(null, null, null, [ lhs, operand, rhs ]);
+var joinedNode = node.join(" ");
+```
+
+#### SourceNode.prototype.replaceRight(pattern, replacement)
+
+Call `String.prototype.replace` on the very right-most source snippet. Useful
+for trimming white space from the end of a source node, etc.
+
+* `pattern`: The pattern to replace.
+
+* `replacement`: The thing to replace the pattern with.
+
+```js
+// Trim trailing white space.
+node.replaceRight(/\s*$/, "");
+```
+
+#### SourceNode.prototype.toString()
+
+Return the string representation of this source node. Walks over the tree and
+concatenates all the various snippets together to one string.
+
+```js
+var node = new SourceNode(1, 2, "a.js", [
+ new SourceNode(3, 4, "b.js", "uno"),
+ "dos",
+ [
+ "tres",
+ new SourceNode(5, 6, "c.js", "quatro")
+ ]
+]);
+
+node.toString()
+// 'unodostresquatro'
+```
+
+#### SourceNode.prototype.toStringWithSourceMap([startOfSourceMap])
+
+Returns the string representation of this tree of source nodes, plus a
+SourceMapGenerator which contains all the mappings between the generated and
+original sources.
+
+The arguments are the same as those to `new SourceMapGenerator`.
+
+```js
+var node = new SourceNode(1, 2, "a.js", [
+ new SourceNode(3, 4, "b.js", "uno"),
+ "dos",
+ [
+ "tres",
+ new SourceNode(5, 6, "c.js", "quatro")
+ ]
+]);
+
+node.toStringWithSourceMap({ file: "my-output-file.js" })
+// { code: 'unodostresquatro',
+// map: [object SourceMapGenerator] }
+```
diff --git a/node_modules/babel-generator/node_modules/source-map/dist/source-map.debug.js b/node_modules/babel-generator/node_modules/source-map/dist/source-map.debug.js
new file mode 100644
index 0000000..aca3ca5
--- /dev/null
+++ b/node_modules/babel-generator/node_modules/source-map/dist/source-map.debug.js
@@ -0,0 +1,3006 @@
+(function webpackUniversalModuleDefinition(root, factory) {
+ if(typeof exports === 'object' && typeof module === 'object')
+ module.exports = factory();
+ else if(typeof define === 'function' && define.amd)
+ define([], factory);
+ else if(typeof exports === 'object')
+ exports["sourceMap"] = factory();
+ else
+ root["sourceMap"] = factory();
+})(this, function() {
+return /******/ (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] = {
+/******/ exports: {},
+/******/ id: moduleId,
+/******/ loaded: false
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.loaded = 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;
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ([
+/* 0 */
+/***/ function(module, exports, __webpack_require__) {
+
+ /*
+ * Copyright 2009-2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE.txt or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+ exports.SourceMapGenerator = __webpack_require__(1).SourceMapGenerator;
+ exports.SourceMapConsumer = __webpack_require__(7).SourceMapConsumer;
+ exports.SourceNode = __webpack_require__(10).SourceNode;
+
+
+/***/ },
+/* 1 */
+/***/ function(module, exports, __webpack_require__) {
+
+ /* -*- Mode: js; js-indent-level: 2; -*- */
+ /*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+ {
+ var base64VLQ = __webpack_require__(2);
+ var util = __webpack_require__(4);
+ var ArraySet = __webpack_require__(5).ArraySet;
+ var MappingList = __webpack_require__(6).MappingList;
+
+ /**
+ * An instance of the SourceMapGenerator represents a source map which is
+ * being built incrementally. You may pass an object with the following
+ * properties:
+ *
+ * - file: The filename of the generated source.
+ * - sourceRoot: A root for all relative URLs in this source map.
+ */
+ function SourceMapGenerator(aArgs) {
+ if (!aArgs) {
+ aArgs = {};
+ }
+ this._file = util.getArg(aArgs, 'file', null);
+ this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null);
+ this._skipValidation = util.getArg(aArgs, 'skipValidation', false);
+ this._sources = new ArraySet();
+ this._names = new ArraySet();
+ this._mappings = new MappingList();
+ this._sourcesContents = null;
+ }
+
+ SourceMapGenerator.prototype._version = 3;
+
+ /**
+ * Creates a new SourceMapGenerator based on a SourceMapConsumer
+ *
+ * @param aSourceMapConsumer The SourceMap.
+ */
+ SourceMapGenerator.fromSourceMap =
+ function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) {
+ var sourceRoot = aSourceMapConsumer.sourceRoot;
+ var generator = new SourceMapGenerator({
+ file: aSourceMapConsumer.file,
+ sourceRoot: sourceRoot
+ });
+ aSourceMapConsumer.eachMapping(function (mapping) {
+ var newMapping = {
+ generated: {
+ line: mapping.generatedLine,
+ column: mapping.generatedColumn
+ }
+ };
+
+ if (mapping.source != null) {
+ newMapping.source = mapping.source;
+ if (sourceRoot != null) {
+ newMapping.source = util.relative(sourceRoot, newMapping.source);
+ }
+
+ newMapping.original = {
+ line: mapping.originalLine,
+ column: mapping.originalColumn
+ };
+
+ if (mapping.name != null) {
+ newMapping.name = mapping.name;
+ }
+ }
+
+ generator.addMapping(newMapping);
+ });
+ aSourceMapConsumer.sources.forEach(function (sourceFile) {
+ var content = aSourceMapConsumer.sourceContentFor(sourceFile);
+ if (content != null) {
+ generator.setSourceContent(sourceFile, content);
+ }
+ });
+ return generator;
+ };
+
+ /**
+ * Add a single mapping from original source line and column to the generated
+ * source's line and column for this source map being created. The mapping
+ * object should have the following properties:
+ *
+ * - generated: An object with the generated line and column positions.
+ * - original: An object with the original line and column positions.
+ * - source: The original source file (relative to the sourceRoot).
+ * - name: An optional original token name for this mapping.
+ */
+ SourceMapGenerator.prototype.addMapping =
+ function SourceMapGenerator_addMapping(aArgs) {
+ var generated = util.getArg(aArgs, 'generated');
+ var original = util.getArg(aArgs, 'original', null);
+ var source = util.getArg(aArgs, 'source', null);
+ var name = util.getArg(aArgs, 'name', null);
+
+ if (!this._skipValidation) {
+ this._validateMapping(generated, original, source, name);
+ }
+
+ if (source != null && !this._sources.has(source)) {
+ this._sources.add(source);
+ }
+
+ if (name != null && !this._names.has(name)) {
+ this._names.add(name);
+ }
+
+ this._mappings.add({
+ generatedLine: generated.line,
+ generatedColumn: generated.column,
+ originalLine: original != null && original.line,
+ originalColumn: original != null && original.column,
+ source: source,
+ name: name
+ });
+ };
+
+ /**
+ * Set the source content for a source file.
+ */
+ SourceMapGenerator.prototype.setSourceContent =
+ function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {
+ var source = aSourceFile;
+ if (this._sourceRoot != null) {
+ source = util.relative(this._sourceRoot, source);
+ }
+
+ if (aSourceContent != null) {
+ // Add the source content to the _sourcesContents map.
+ // Create a new _sourcesContents map if the property is null.
+ if (!this._sourcesContents) {
+ this._sourcesContents = {};
+ }
+ this._sourcesContents[util.toSetString(source)] = aSourceContent;
+ } else if (this._sourcesContents) {
+ // Remove the source file from the _sourcesContents map.
+ // If the _sourcesContents map is empty, set the property to null.
+ delete this._sourcesContents[util.toSetString(source)];
+ if (Object.keys(this._sourcesContents).length === 0) {
+ this._sourcesContents = null;
+ }
+ }
+ };
+
+ /**
+ * Applies the mappings of a sub-source-map for a specific source file to the
+ * source map being generated. Each mapping to the supplied source file is
+ * rewritten using the supplied source map. Note: The resolution for the
+ * resulting mappings is the minimium of this map and the supplied map.
+ *
+ * @param aSourceMapConsumer The source map to be applied.
+ * @param aSourceFile Optional. The filename of the source file.
+ * If omitted, SourceMapConsumer's file property will be used.
+ * @param aSourceMapPath Optional. The dirname of the path to the source map
+ * to be applied. If relative, it is relative to the SourceMapConsumer.
+ * This parameter is needed when the two source maps aren't in the same
+ * directory, and the source map to be applied contains relative source
+ * paths. If so, those relative source paths need to be rewritten
+ * relative to the SourceMapGenerator.
+ */
+ SourceMapGenerator.prototype.applySourceMap =
+ function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) {
+ var sourceFile = aSourceFile;
+ // If aSourceFile is omitted, we will use the file property of the SourceMap
+ if (aSourceFile == null) {
+ if (aSourceMapConsumer.file == null) {
+ throw new Error(
+ 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' +
+ 'or the source map\'s "file" property. Both were omitted.'
+ );
+ }
+ sourceFile = aSourceMapConsumer.file;
+ }
+ var sourceRoot = this._sourceRoot;
+ // Make "sourceFile" relative if an absolute Url is passed.
+ if (sourceRoot != null) {
+ sourceFile = util.relative(sourceRoot, sourceFile);
+ }
+ // Applying the SourceMap can add and remove items from the sources and
+ // the names array.
+ var newSources = new ArraySet();
+ var newNames = new ArraySet();
+
+ // Find mappings for the "sourceFile"
+ this._mappings.unsortedForEach(function (mapping) {
+ if (mapping.source === sourceFile && mapping.originalLine != null) {
+ // Check if it can be mapped by the source map, then update the mapping.
+ var original = aSourceMapConsumer.originalPositionFor({
+ line: mapping.originalLine,
+ column: mapping.originalColumn
+ });
+ if (original.source != null) {
+ // Copy mapping
+ mapping.source = original.source;
+ if (aSourceMapPath != null) {
+ mapping.source = util.join(aSourceMapPath, mapping.source)
+ }
+ if (sourceRoot != null) {
+ mapping.source = util.relative(sourceRoot, mapping.source);
+ }
+ mapping.originalLine = original.line;
+ mapping.originalColumn = original.column;
+ if (original.name != null) {
+ mapping.name = original.name;
+ }
+ }
+ }
+
+ var source = mapping.source;
+ if (source != null && !newSources.has(source)) {
+ newSources.add(source);
+ }
+
+ var name = mapping.name;
+ if (name != null && !newNames.has(name)) {
+ newNames.add(name);
+ }
+
+ }, this);
+ this._sources = newSources;
+ this._names = newNames;
+
+ // Copy sourcesContents of applied map.
+ aSourceMapConsumer.sources.forEach(function (sourceFile) {
+ var content = aSourceMapConsumer.sourceContentFor(sourceFile);
+ if (content != null) {
+ if (aSourceMapPath != null) {
+ sourceFile = util.join(aSourceMapPath, sourceFile);
+ }
+ if (sourceRoot != null) {
+ sourceFile = util.relative(sourceRoot, sourceFile);
+ }
+ this.setSourceContent(sourceFile, content);
+ }
+ }, this);
+ };
+
+ /**
+ * A mapping can have one of the three levels of data:
+ *
+ * 1. Just the generated position.
+ * 2. The Generated position, original position, and original source.
+ * 3. Generated and original position, original source, as well as a name
+ * token.
+ *
+ * To maintain consistency, we validate that any new mapping being added falls
+ * in to one of these categories.
+ */
+ SourceMapGenerator.prototype._validateMapping =
+ function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource,
+ aName) {
+ if (aGenerated && 'line' in aGenerated && 'column' in aGenerated
+ && aGenerated.line > 0 && aGenerated.column >= 0
+ && !aOriginal && !aSource && !aName) {
+ // Case 1.
+ return;
+ }
+ else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated
+ && aOriginal && 'line' in aOriginal && 'column' in aOriginal
+ && aGenerated.line > 0 && aGenerated.column >= 0
+ && aOriginal.line > 0 && aOriginal.column >= 0
+ && aSource) {
+ // Cases 2 and 3.
+ return;
+ }
+ else {
+ throw new Error('Invalid mapping: ' + JSON.stringify({
+ generated: aGenerated,
+ source: aSource,
+ original: aOriginal,
+ name: aName
+ }));
+ }
+ };
+
+ /**
+ * Serialize the accumulated mappings in to the stream of base 64 VLQs
+ * specified by the source map format.
+ */
+ SourceMapGenerator.prototype._serializeMappings =
+ function SourceMapGenerator_serializeMappings() {
+ var previousGeneratedColumn = 0;
+ var previousGeneratedLine = 1;
+ var previousOriginalColumn = 0;
+ var previousOriginalLine = 0;
+ var previousName = 0;
+ var previousSource = 0;
+ var result = '';
+ var mapping;
+ var nameIdx;
+ var sourceIdx;
+
+ var mappings = this._mappings.toArray();
+ for (var i = 0, len = mappings.length; i < len; i++) {
+ mapping = mappings[i];
+
+ if (mapping.generatedLine !== previousGeneratedLine) {
+ previousGeneratedColumn = 0;
+ while (mapping.generatedLine !== previousGeneratedLine) {
+ result += ';';
+ previousGeneratedLine++;
+ }
+ }
+ else {
+ if (i > 0) {
+ if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {
+ continue;
+ }
+ result += ',';
+ }
+ }
+
+ result += base64VLQ.encode(mapping.generatedColumn
+ - previousGeneratedColumn);
+ previousGeneratedColumn = mapping.generatedColumn;
+
+ if (mapping.source != null) {
+ sourceIdx = this._sources.indexOf(mapping.source);
+ result += base64VLQ.encode(sourceIdx - previousSource);
+ previousSource = sourceIdx;
+
+ // lines are stored 0-based in SourceMap spec version 3
+ result += base64VLQ.encode(mapping.originalLine - 1
+ - previousOriginalLine);
+ previousOriginalLine = mapping.originalLine - 1;
+
+ result += base64VLQ.encode(mapping.originalColumn
+ - previousOriginalColumn);
+ previousOriginalColumn = mapping.originalColumn;
+
+ if (mapping.name != null) {
+ nameIdx = this._names.indexOf(mapping.name);
+ result += base64VLQ.encode(nameIdx - previousName);
+ previousName = nameIdx;
+ }
+ }
+ }
+
+ return result;
+ };
+
+ SourceMapGenerator.prototype._generateSourcesContent =
+ function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {
+ return aSources.map(function (source) {
+ if (!this._sourcesContents) {
+ return null;
+ }
+ if (aSourceRoot != null) {
+ source = util.relative(aSourceRoot, source);
+ }
+ var key = util.toSetString(source);
+ return Object.prototype.hasOwnProperty.call(this._sourcesContents,
+ key)
+ ? this._sourcesContents[key]
+ : null;
+ }, this);
+ };
+
+ /**
+ * Externalize the source map.
+ */
+ SourceMapGenerator.prototype.toJSON =
+ function SourceMapGenerator_toJSON() {
+ var map = {
+ version: this._version,
+ sources: this._sources.toArray(),
+ names: this._names.toArray(),
+ mappings: this._serializeMappings()
+ };
+ if (this._file != null) {
+ map.file = this._file;
+ }
+ if (this._sourceRoot != null) {
+ map.sourceRoot = this._sourceRoot;
+ }
+ if (this._sourcesContents) {
+ map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);
+ }
+
+ return map;
+ };
+
+ /**
+ * Render the source map being generated to a string.
+ */
+ SourceMapGenerator.prototype.toString =
+ function SourceMapGenerator_toString() {
+ return JSON.stringify(this.toJSON());
+ };
+
+ exports.SourceMapGenerator = SourceMapGenerator;
+ }
+
+
+/***/ },
+/* 2 */
+/***/ function(module, exports, __webpack_require__) {
+
+ /* -*- Mode: js; js-indent-level: 2; -*- */
+ /*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ *
+ * Based on the Base 64 VLQ implementation in Closure Compiler:
+ * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java
+ *
+ * Copyright 2011 The Closure Compiler Authors. All rights reserved.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided
+ * with the distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER 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.
+ */
+ {
+ var base64 = __webpack_require__(3);
+
+ // A single base 64 digit can contain 6 bits of data. For the base 64 variable
+ // length quantities we use in the source map spec, the first bit is the sign,
+ // the next four bits are the actual value, and the 6th bit is the
+ // continuation bit. The continuation bit tells us whether there are more
+ // digits in this value following this digit.
+ //
+ // Continuation
+ // | Sign
+ // | |
+ // V V
+ // 101011
+
+ var VLQ_BASE_SHIFT = 5;
+
+ // binary: 100000
+ var VLQ_BASE = 1 << VLQ_BASE_SHIFT;
+
+ // binary: 011111
+ var VLQ_BASE_MASK = VLQ_BASE - 1;
+
+ // binary: 100000
+ var VLQ_CONTINUATION_BIT = VLQ_BASE;
+
+ /**
+ * Converts from a two-complement value to a value where the sign bit is
+ * placed in the least significant bit. For example, as decimals:
+ * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary)
+ * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary)
+ */
+ function toVLQSigned(aValue) {
+ return aValue < 0
+ ? ((-aValue) << 1) + 1
+ : (aValue << 1) + 0;
+ }
+
+ /**
+ * Converts to a two-complement value from a value where the sign bit is
+ * placed in the least significant bit. For example, as decimals:
+ * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1
+ * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2
+ */
+ function fromVLQSigned(aValue) {
+ var isNegative = (aValue & 1) === 1;
+ var shifted = aValue >> 1;
+ return isNegative
+ ? -shifted
+ : shifted;
+ }
+
+ /**
+ * Returns the base 64 VLQ encoded value.
+ */
+ exports.encode = function base64VLQ_encode(aValue) {
+ var encoded = "";
+ var digit;
+
+ var vlq = toVLQSigned(aValue);
+
+ do {
+ digit = vlq & VLQ_BASE_MASK;
+ vlq >>>= VLQ_BASE_SHIFT;
+ if (vlq > 0) {
+ // There are still more digits in this value, so we must make sure the
+ // continuation bit is marked.
+ digit |= VLQ_CONTINUATION_BIT;
+ }
+ encoded += base64.encode(digit);
+ } while (vlq > 0);
+
+ return encoded;
+ };
+
+ /**
+ * Decodes the next base 64 VLQ value from the given string and returns the
+ * value and the rest of the string via the out parameter.
+ */
+ exports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {
+ var strLen = aStr.length;
+ var result = 0;
+ var shift = 0;
+ var continuation, digit;
+
+ do {
+ if (aIndex >= strLen) {
+ throw new Error("Expected more digits in base 64 VLQ value.");
+ }
+
+ digit = base64.decode(aStr.charCodeAt(aIndex++));
+ if (digit === -1) {
+ throw new Error("Invalid base64 digit: " + aStr.charAt(aIndex - 1));
+ }
+
+ continuation = !!(digit & VLQ_CONTINUATION_BIT);
+ digit &= VLQ_BASE_MASK;
+ result = result + (digit << shift);
+ shift += VLQ_BASE_SHIFT;
+ } while (continuation);
+
+ aOutParam.value = fromVLQSigned(result);
+ aOutParam.rest = aIndex;
+ };
+ }
+
+
+/***/ },
+/* 3 */
+/***/ function(module, exports) {
+
+ /* -*- Mode: js; js-indent-level: 2; -*- */
+ /*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+ {
+ var intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');
+
+ /**
+ * Encode an integer in the range of 0 to 63 to a single base 64 digit.
+ */
+ exports.encode = function (number) {
+ if (0 <= number && number < intToCharMap.length) {
+ return intToCharMap[number];
+ }
+ throw new TypeError("Must be between 0 and 63: " + number);
+ };
+
+ /**
+ * Decode a single base 64 character code digit to an integer. Returns -1 on
+ * failure.
+ */
+ exports.decode = function (charCode) {
+ var bigA = 65; // 'A'
+ var bigZ = 90; // 'Z'
+
+ var littleA = 97; // 'a'
+ var littleZ = 122; // 'z'
+
+ var zero = 48; // '0'
+ var nine = 57; // '9'
+
+ var plus = 43; // '+'
+ var slash = 47; // '/'
+
+ var littleOffset = 26;
+ var numberOffset = 52;
+
+ // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ
+ if (bigA <= charCode && charCode <= bigZ) {
+ return (charCode - bigA);
+ }
+
+ // 26 - 51: abcdefghijklmnopqrstuvwxyz
+ if (littleA <= charCode && charCode <= littleZ) {
+ return (charCode - littleA + littleOffset);
+ }
+
+ // 52 - 61: 0123456789
+ if (zero <= charCode && charCode <= nine) {
+ return (charCode - zero + numberOffset);
+ }
+
+ // 62: +
+ if (charCode == plus) {
+ return 62;
+ }
+
+ // 63: /
+ if (charCode == slash) {
+ return 63;
+ }
+
+ // Invalid base64 digit.
+ return -1;
+ };
+ }
+
+
+/***/ },
+/* 4 */
+/***/ function(module, exports) {
+
+ /* -*- Mode: js; js-indent-level: 2; -*- */
+ /*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+ {
+ /**
+ * This is a helper function for getting values from parameter/options
+ * objects.
+ *
+ * @param args The object we are extracting values from
+ * @param name The name of the property we are getting.
+ * @param defaultValue An optional value to return if the property is missing
+ * from the object. If this is not specified and the property is missing, an
+ * error will be thrown.
+ */
+ function getArg(aArgs, aName, aDefaultValue) {
+ if (aName in aArgs) {
+ return aArgs[aName];
+ } else if (arguments.length === 3) {
+ return aDefaultValue;
+ } else {
+ throw new Error('"' + aName + '" is a required argument.');
+ }
+ }
+ exports.getArg = getArg;
+
+ var urlRegexp = /^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.]*)(?::(\d+))?(\S*)$/;
+ var dataUrlRegexp = /^data:.+\,.+$/;
+
+ function urlParse(aUrl) {
+ var match = aUrl.match(urlRegexp);
+ if (!match) {
+ return null;
+ }
+ return {
+ scheme: match[1],
+ auth: match[2],
+ host: match[3],
+ port: match[4],
+ path: match[5]
+ };
+ }
+ exports.urlParse = urlParse;
+
+ function urlGenerate(aParsedUrl) {
+ var url = '';
+ if (aParsedUrl.scheme) {
+ url += aParsedUrl.scheme + ':';
+ }
+ url += '//';
+ if (aParsedUrl.auth) {
+ url += aParsedUrl.auth + '@';
+ }
+ if (aParsedUrl.host) {
+ url += aParsedUrl.host;
+ }
+ if (aParsedUrl.port) {
+ url += ":" + aParsedUrl.port
+ }
+ if (aParsedUrl.path) {
+ url += aParsedUrl.path;
+ }
+ return url;
+ }
+ exports.urlGenerate = urlGenerate;
+
+ /**
+ * Normalizes a path, or the path portion of a URL:
+ *
+ * - Replaces consequtive slashes with one slash.
+ * - Removes unnecessary '.' parts.
+ * - Removes unnecessary '/..' parts.
+ *
+ * Based on code in the Node.js 'path' core module.
+ *
+ * @param aPath The path or url to normalize.
+ */
+ function normalize(aPath) {
+ var path = aPath;
+ var url = urlParse(aPath);
+ if (url) {
+ if (!url.path) {
+ return aPath;
+ }
+ path = url.path;
+ }
+ var isAbsolute = exports.isAbsolute(path);
+
+ var parts = path.split(/\/+/);
+ for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {
+ part = parts[i];
+ if (part === '.') {
+ parts.splice(i, 1);
+ } else if (part === '..') {
+ up++;
+ } else if (up > 0) {
+ if (part === '') {
+ // The first part is blank if the path is absolute. Trying to go
+ // above the root is a no-op. Therefore we can remove all '..' parts
+ // directly after the root.
+ parts.splice(i + 1, up);
+ up = 0;
+ } else {
+ parts.splice(i, 2);
+ up--;
+ }
+ }
+ }
+ path = parts.join('/');
+
+ if (path === '') {
+ path = isAbsolute ? '/' : '.';
+ }
+
+ if (url) {
+ url.path = path;
+ return urlGenerate(url);
+ }
+ return path;
+ }
+ exports.normalize = normalize;
+
+ /**
+ * Joins two paths/URLs.
+ *
+ * @param aRoot The root path or URL.
+ * @param aPath The path or URL to be joined with the root.
+ *
+ * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a
+ * scheme-relative URL: Then the scheme of aRoot, if any, is prepended
+ * first.
+ * - Otherwise aPath is a path. If aRoot is a URL, then its path portion
+ * is updated with the result and aRoot is returned. Otherwise the result
+ * is returned.
+ * - If aPath is absolute, the result is aPath.
+ * - Otherwise the two paths are joined with a slash.
+ * - Joining for example 'http://' and 'www.example.com' is also supported.
+ */
+ function join(aRoot, aPath) {
+ if (aRoot === "") {
+ aRoot = ".";
+ }
+ if (aPath === "") {
+ aPath = ".";
+ }
+ var aPathUrl = urlParse(aPath);
+ var aRootUrl = urlParse(aRoot);
+ if (aRootUrl) {
+ aRoot = aRootUrl.path || '/';
+ }
+
+ // `join(foo, '//www.example.org')`
+ if (aPathUrl && !aPathUrl.scheme) {
+ if (aRootUrl) {
+ aPathUrl.scheme = aRootUrl.scheme;
+ }
+ return urlGenerate(aPathUrl);
+ }
+
+ if (aPathUrl || aPath.match(dataUrlRegexp)) {
+ return aPath;
+ }
+
+ // `join('http://', 'www.example.com')`
+ if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {
+ aRootUrl.host = aPath;
+ return urlGenerate(aRootUrl);
+ }
+
+ var joined = aPath.charAt(0) === '/'
+ ? aPath
+ : normalize(aRoot.replace(/\/+$/, '') + '/' + aPath);
+
+ if (aRootUrl) {
+ aRootUrl.path = joined;
+ return urlGenerate(aRootUrl);
+ }
+ return joined;
+ }
+ exports.join = join;
+
+ exports.isAbsolute = function (aPath) {
+ return aPath.charAt(0) === '/' || !!aPath.match(urlRegexp);
+ };
+
+ /**
+ * Make a path relative to a URL or another path.
+ *
+ * @param aRoot The root path or URL.
+ * @param aPath The path or URL to be made relative to aRoot.
+ */
+ function relative(aRoot, aPath) {
+ if (aRoot === "") {
+ aRoot = ".";
+ }
+
+ aRoot = aRoot.replace(/\/$/, '');
+
+ // It is possible for the path to be above the root. In this case, simply
+ // checking whether the root is a prefix of the path won't work. Instead, we
+ // need to remove components from the root one by one, until either we find
+ // a prefix that fits, or we run out of components to remove.
+ var level = 0;
+ while (aPath.indexOf(aRoot + '/') !== 0) {
+ var index = aRoot.lastIndexOf("/");
+ if (index < 0) {
+ return aPath;
+ }
+
+ // If the only part of the root that is left is the scheme (i.e. http://,
+ // file:///, etc.), one or more slashes (/), or simply nothing at all, we
+ // have exhausted all components, so the path is not relative to the root.
+ aRoot = aRoot.slice(0, index);
+ if (aRoot.match(/^([^\/]+:\/)?\/*$/)) {
+ return aPath;
+ }
+
+ ++level;
+ }
+
+ // Make sure we add a "../" for each component we removed from the root.
+ return Array(level + 1).join("../") + aPath.substr(aRoot.length + 1);
+ }
+ exports.relative = relative;
+
+ /**
+ * Because behavior goes wacky when you set `__proto__` on objects, we
+ * have to prefix all the strings in our set with an arbitrary character.
+ *
+ * See https://github.com/mozilla/source-map/pull/31 and
+ * https://github.com/mozilla/source-map/issues/30
+ *
+ * @param String aStr
+ */
+ function toSetString(aStr) {
+ return '$' + aStr;
+ }
+ exports.toSetString = toSetString;
+
+ function fromSetString(aStr) {
+ return aStr.substr(1);
+ }
+ exports.fromSetString = fromSetString;
+
+ /**
+ * Comparator between two mappings where the original positions are compared.
+ *
+ * Optionally pass in `true` as `onlyCompareGenerated` to consider two
+ * mappings with the same original source/line/column, but different generated
+ * line and column the same. Useful when searching for a mapping with a
+ * stubbed out mapping.
+ */
+ function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {
+ var cmp = mappingA.source - mappingB.source;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.originalLine - mappingB.originalLine;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.originalColumn - mappingB.originalColumn;
+ if (cmp !== 0 || onlyCompareOriginal) {
+ return cmp;
+ }
+
+ cmp = mappingA.generatedColumn - mappingB.generatedColumn;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.generatedLine - mappingB.generatedLine;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ return mappingA.name - mappingB.name;
+ }
+ exports.compareByOriginalPositions = compareByOriginalPositions;
+
+ /**
+ * Comparator between two mappings with deflated source and name indices where
+ * the generated positions are compared.
+ *
+ * Optionally pass in `true` as `onlyCompareGenerated` to consider two
+ * mappings with the same generated line and column, but different
+ * source/name/original line and column the same. Useful when searching for a
+ * mapping with a stubbed out mapping.
+ */
+ function compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {
+ var cmp = mappingA.generatedLine - mappingB.generatedLine;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.generatedColumn - mappingB.generatedColumn;
+ if (cmp !== 0 || onlyCompareGenerated) {
+ return cmp;
+ }
+
+ cmp = mappingA.source - mappingB.source;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.originalLine - mappingB.originalLine;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.originalColumn - mappingB.originalColumn;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ return mappingA.name - mappingB.name;
+ }
+ exports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;
+
+ function strcmp(aStr1, aStr2) {
+ if (aStr1 === aStr2) {
+ return 0;
+ }
+
+ if (aStr1 > aStr2) {
+ return 1;
+ }
+
+ return -1;
+ }
+
+ /**
+ * Comparator between two mappings with inflated source and name strings where
+ * the generated positions are compared.
+ */
+ function compareByGeneratedPositionsInflated(mappingA, mappingB) {
+ var cmp = mappingA.generatedLine - mappingB.generatedLine;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.generatedColumn - mappingB.generatedColumn;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = strcmp(mappingA.source, mappingB.source);
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.originalLine - mappingB.originalLine;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.originalColumn - mappingB.originalColumn;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ return strcmp(mappingA.name, mappingB.name);
+ }
+ exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;
+ }
+
+
+/***/ },
+/* 5 */
+/***/ function(module, exports, __webpack_require__) {
+
+ /* -*- Mode: js; js-indent-level: 2; -*- */
+ /*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+ {
+ var util = __webpack_require__(4);
+
+ /**
+ * A data structure which is a combination of an array and a set. Adding a new
+ * member is O(1), testing for membership is O(1), and finding the index of an
+ * element is O(1). Removing elements from the set is not supported. Only
+ * strings are supported for membership.
+ */
+ function ArraySet() {
+ this._array = [];
+ this._set = {};
+ }
+
+ /**
+ * Static method for creating ArraySet instances from an existing array.
+ */
+ ArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {
+ var set = new ArraySet();
+ for (var i = 0, len = aArray.length; i < len; i++) {
+ set.add(aArray[i], aAllowDuplicates);
+ }
+ return set;
+ };
+
+ /**
+ * Return how many unique items are in this ArraySet. If duplicates have been
+ * added, than those do not count towards the size.
+ *
+ * @returns Number
+ */
+ ArraySet.prototype.size = function ArraySet_size() {
+ return Object.getOwnPropertyNames(this._set).length;
+ };
+
+ /**
+ * Add the given string to this set.
+ *
+ * @param String aStr
+ */
+ ArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {
+ var sStr = util.toSetString(aStr);
+ var isDuplicate = this._set.hasOwnProperty(sStr);
+ var idx = this._array.length;
+ if (!isDuplicate || aAllowDuplicates) {
+ this._array.push(aStr);
+ }
+ if (!isDuplicate) {
+ this._set[sStr] = idx;
+ }
+ };
+
+ /**
+ * Is the given string a member of this set?
+ *
+ * @param String aStr
+ */
+ ArraySet.prototype.has = function ArraySet_has(aStr) {
+ var sStr = util.toSetString(aStr);
+ return this._set.hasOwnProperty(sStr);
+ };
+
+ /**
+ * What is the index of the given string in the array?
+ *
+ * @param String aStr
+ */
+ ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {
+ var sStr = util.toSetString(aStr);
+ if (this._set.hasOwnProperty(sStr)) {
+ return this._set[sStr];
+ }
+ throw new Error('"' + aStr + '" is not in the set.');
+ };
+
+ /**
+ * What is the element at the given index?
+ *
+ * @param Number aIdx
+ */
+ ArraySet.prototype.at = function ArraySet_at(aIdx) {
+ if (aIdx >= 0 && aIdx < this._array.length) {
+ return this._array[aIdx];
+ }
+ throw new Error('No element indexed by ' + aIdx);
+ };
+
+ /**
+ * Returns the array representation of this set (which has the proper indices
+ * indicated by indexOf). Note that this is a copy of the internal array used
+ * for storing the members so that no one can mess with internal state.
+ */
+ ArraySet.prototype.toArray = function ArraySet_toArray() {
+ return this._array.slice();
+ };
+
+ exports.ArraySet = ArraySet;
+ }
+
+
+/***/ },
+/* 6 */
+/***/ function(module, exports, __webpack_require__) {
+
+ /* -*- Mode: js; js-indent-level: 2; -*- */
+ /*
+ * Copyright 2014 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+ {
+ var util = __webpack_require__(4);
+
+ /**
+ * Determine whether mappingB is after mappingA with respect to generated
+ * position.
+ */
+ function generatedPositionAfter(mappingA, mappingB) {
+ // Optimized for most common case
+ var lineA = mappingA.generatedLine;
+ var lineB = mappingB.generatedLine;
+ var columnA = mappingA.generatedColumn;
+ var columnB = mappingB.generatedColumn;
+ return lineB > lineA || lineB == lineA && columnB >= columnA ||
+ util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0;
+ }
+
+ /**
+ * A data structure to provide a sorted view of accumulated mappings in a
+ * performance conscious manner. It trades a neglibable overhead in general
+ * case for a large speedup in case of mappings being added in order.
+ */
+ function MappingList() {
+ this._array = [];
+ this._sorted = true;
+ // Serves as infimum
+ this._last = {generatedLine: -1, generatedColumn: 0};
+ }
+
+ /**
+ * Iterate through internal items. This method takes the same arguments that
+ * `Array.prototype.forEach` takes.
+ *
+ * NOTE: The order of the mappings is NOT guaranteed.
+ */
+ MappingList.prototype.unsortedForEach =
+ function MappingList_forEach(aCallback, aThisArg) {
+ this._array.forEach(aCallback, aThisArg);
+ };
+
+ /**
+ * Add the given source mapping.
+ *
+ * @param Object aMapping
+ */
+ MappingList.prototype.add = function MappingList_add(aMapping) {
+ if (generatedPositionAfter(this._last, aMapping)) {
+ this._last = aMapping;
+ this._array.push(aMapping);
+ } else {
+ this._sorted = false;
+ this._array.push(aMapping);
+ }
+ };
+
+ /**
+ * Returns the flat, sorted array of mappings. The mappings are sorted by
+ * generated position.
+ *
+ * WARNING: This method returns internal data without copying, for
+ * performance. The return value must NOT be mutated, and should be treated as
+ * an immutable borrow. If you want to take ownership, you must make your own
+ * copy.
+ */
+ MappingList.prototype.toArray = function MappingList_toArray() {
+ if (!this._sorted) {
+ this._array.sort(util.compareByGeneratedPositionsInflated);
+ this._sorted = true;
+ }
+ return this._array;
+ };
+
+ exports.MappingList = MappingList;
+ }
+
+
+/***/ },
+/* 7 */
+/***/ function(module, exports, __webpack_require__) {
+
+ /* -*- Mode: js; js-indent-level: 2; -*- */
+ /*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+ {
+ var util = __webpack_require__(4);
+ var binarySearch = __webpack_require__(8);
+ var ArraySet = __webpack_require__(5).ArraySet;
+ var base64VLQ = __webpack_require__(2);
+ var quickSort = __webpack_require__(9).quickSort;
+
+ function SourceMapConsumer(aSourceMap) {
+ var sourceMap = aSourceMap;
+ if (typeof aSourceMap === 'string') {
+ sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, ''));
+ }
+
+ return sourceMap.sections != null
+ ? new IndexedSourceMapConsumer(sourceMap)
+ : new BasicSourceMapConsumer(sourceMap);
+ }
+
+ SourceMapConsumer.fromSourceMap = function(aSourceMap) {
+ return BasicSourceMapConsumer.fromSourceMap(aSourceMap);
+ }
+
+ /**
+ * The version of the source mapping spec that we are consuming.
+ */
+ SourceMapConsumer.prototype._version = 3;
+
+ // `__generatedMappings` and `__originalMappings` are arrays that hold the
+ // parsed mapping coordinates from the source map's "mappings" attribute. They
+ // are lazily instantiated, accessed via the `_generatedMappings` and
+ // `_originalMappings` getters respectively, and we only parse the mappings
+ // and create these arrays once queried for a source location. We jump through
+ // these hoops because there can be many thousands of mappings, and parsing
+ // them is expensive, so we only want to do it if we must.
+ //
+ // Each object in the arrays is of the form:
+ //
+ // {
+ // generatedLine: The line number in the generated code,
+ // generatedColumn: The column number in the generated code,
+ // source: The path to the original source file that generated this
+ // chunk of code,
+ // originalLine: The line number in the original source that
+ // corresponds to this chunk of generated code,
+ // originalColumn: The column number in the original source that
+ // corresponds to this chunk of generated code,
+ // name: The name of the original symbol which generated this chunk of
+ // code.
+ // }
+ //
+ // All properties except for `generatedLine` and `generatedColumn` can be
+ // `null`.
+ //
+ // `_generatedMappings` is ordered by the generated positions.
+ //
+ // `_originalMappings` is ordered by the original positions.
+
+ SourceMapConsumer.prototype.__generatedMappings = null;
+ Object.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {
+ get: function () {
+ if (!this.__generatedMappings) {
+ this._parseMappings(this._mappings, this.sourceRoot);
+ }
+
+ return this.__generatedMappings;
+ }
+ });
+
+ SourceMapConsumer.prototype.__originalMappings = null;
+ Object.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {
+ get: function () {
+ if (!this.__originalMappings) {
+ this._parseMappings(this._mappings, this.sourceRoot);
+ }
+
+ return this.__originalMappings;
+ }
+ });
+
+ SourceMapConsumer.prototype._charIsMappingSeparator =
+ function SourceMapConsumer_charIsMappingSeparator(aStr, index) {
+ var c = aStr.charAt(index);
+ return c === ";" || c === ",";
+ };
+
+ /**
+ * Parse the mappings in a string in to a data structure which we can easily
+ * query (the ordered arrays in the `this.__generatedMappings` and
+ * `this.__originalMappings` properties).
+ */
+ SourceMapConsumer.prototype._parseMappings =
+ function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {
+ throw new Error("Subclasses must implement _parseMappings");
+ };
+
+ SourceMapConsumer.GENERATED_ORDER = 1;
+ SourceMapConsumer.ORIGINAL_ORDER = 2;
+
+ SourceMapConsumer.GREATEST_LOWER_BOUND = 1;
+ SourceMapConsumer.LEAST_UPPER_BOUND = 2;
+
+ /**
+ * Iterate over each mapping between an original source/line/column and a
+ * generated line/column in this source map.
+ *
+ * @param Function aCallback
+ * The function that is called with each mapping.
+ * @param Object aContext
+ * Optional. If specified, this object will be the value of `this` every
+ * time that `aCallback` is called.
+ * @param aOrder
+ * Either `SourceMapConsumer.GENERATED_ORDER` or
+ * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to
+ * iterate over the mappings sorted by the generated file's line/column
+ * order or the original's source/line/column order, respectively. Defaults to
+ * `SourceMapConsumer.GENERATED_ORDER`.
+ */
+ SourceMapConsumer.prototype.eachMapping =
+ function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {
+ var context = aContext || null;
+ var order = aOrder || SourceMapConsumer.GENERATED_ORDER;
+
+ var mappings;
+ switch (order) {
+ case SourceMapConsumer.GENERATED_ORDER:
+ mappings = this._generatedMappings;
+ break;
+ case SourceMapConsumer.ORIGINAL_ORDER:
+ mappings = this._originalMappings;
+ break;
+ default:
+ throw new Error("Unknown order of iteration.");
+ }
+
+ var sourceRoot = this.sourceRoot;
+ mappings.map(function (mapping) {
+ var source = mapping.source === null ? null : this._sources.at(mapping.source);
+ if (source != null && sourceRoot != null) {
+ source = util.join(sourceRoot, source);
+ }
+ return {
+ source: source,
+ generatedLine: mapping.generatedLine,
+ generatedColumn: mapping.generatedColumn,
+ originalLine: mapping.originalLine,
+ originalColumn: mapping.originalColumn,
+ name: mapping.name === null ? null : this._names.at(mapping.name)
+ };
+ }, this).forEach(aCallback, context);
+ };
+
+ /**
+ * Returns all generated line and column information for the original source,
+ * line, and column provided. If no column is provided, returns all mappings
+ * corresponding to a either the line we are searching for or the next
+ * closest line that has any mappings. Otherwise, returns all mappings
+ * corresponding to the given line and either the column we are searching for
+ * or the next closest column that has any offsets.
+ *
+ * The only argument is an object with the following properties:
+ *
+ * - source: The filename of the original source.
+ * - line: The line number in the original source.
+ * - column: Optional. the column number in the original source.
+ *
+ * and an array of objects is returned, each with the following properties:
+ *
+ * - line: The line number in the generated source, or null.
+ * - column: The column number in the generated source, or null.
+ */
+ SourceMapConsumer.prototype.allGeneratedPositionsFor =
+ function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {
+ var line = util.getArg(aArgs, 'line');
+
+ // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping
+ // returns the index of the closest mapping less than the needle. By
+ // setting needle.originalColumn to 0, we thus find the last mapping for
+ // the given line, provided such a mapping exists.
+ var needle = {
+ source: util.getArg(aArgs, 'source'),
+ originalLine: line,
+ originalColumn: util.getArg(aArgs, 'column', 0)
+ };
+
+ if (this.sourceRoot != null) {
+ needle.source = util.relative(this.sourceRoot, needle.source);
+ }
+ if (!this._sources.has(needle.source)) {
+ return [];
+ }
+ needle.source = this._sources.indexOf(needle.source);
+
+ var mappings = [];
+
+ var index = this._findMapping(needle,
+ this._originalMappings,
+ "originalLine",
+ "originalColumn",
+ util.compareByOriginalPositions,
+ binarySearch.LEAST_UPPER_BOUND);
+ if (index >= 0) {
+ var mapping = this._originalMappings[index];
+
+ if (aArgs.column === undefined) {
+ var originalLine = mapping.originalLine;
+
+ // Iterate until either we run out of mappings, or we run into
+ // a mapping for a different line than the one we found. Since
+ // mappings are sorted, this is guaranteed to find all mappings for
+ // the line we found.
+ while (mapping && mapping.originalLine === originalLine) {
+ mappings.push({
+ line: util.getArg(mapping, 'generatedLine', null),
+ column: util.getArg(mapping, 'generatedColumn', null),
+ lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)
+ });
+
+ mapping = this._originalMappings[++index];
+ }
+ } else {
+ var originalColumn = mapping.originalColumn;
+
+ // Iterate until either we run out of mappings, or we run into
+ // a mapping for a different line than the one we were searching for.
+ // Since mappings are sorted, this is guaranteed to find all mappings for
+ // the line we are searching for.
+ while (mapping &&
+ mapping.originalLine === line &&
+ mapping.originalColumn == originalColumn) {
+ mappings.push({
+ line: util.getArg(mapping, 'generatedLine', null),
+ column: util.getArg(mapping, 'generatedColumn', null),
+ lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)
+ });
+
+ mapping = this._originalMappings[++index];
+ }
+ }
+ }
+
+ return mappings;
+ };
+
+ exports.SourceMapConsumer = SourceMapConsumer;
+
+ /**
+ * A BasicSourceMapConsumer instance represents a parsed source map which we can
+ * query for information about the original file positions by giving it a file
+ * position in the generated source.
+ *
+ * The only parameter is the raw source map (either as a JSON string, or
+ * already parsed to an object). According to the spec, source maps have the
+ * following attributes:
+ *
+ * - version: Which version of the source map spec this map is following.
+ * - sources: An array of URLs to the original source files.
+ * - names: An array of identifiers which can be referrenced by individual mappings.
+ * - sourceRoot: Optional. The URL root from which all sources are relative.
+ * - sourcesContent: Optional. An array of contents of the original source files.
+ * - mappings: A string of base64 VLQs which contain the actual mappings.
+ * - file: Optional. The generated file this source map is associated with.
+ *
+ * Here is an example source map, taken from the source map spec[0]:
+ *
+ * {
+ * version : 3,
+ * file: "out.js",
+ * sourceRoot : "",
+ * sources: ["foo.js", "bar.js"],
+ * names: ["src", "maps", "are", "fun"],
+ * mappings: "AA,AB;;ABCDE;"
+ * }
+ *
+ * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#
+ */
+ function BasicSourceMapConsumer(aSourceMap) {
+ var sourceMap = aSourceMap;
+ if (typeof aSourceMap === 'string') {
+ sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, ''));
+ }
+
+ var version = util.getArg(sourceMap, 'version');
+ var sources = util.getArg(sourceMap, 'sources');
+ // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which
+ // requires the array) to play nice here.
+ var names = util.getArg(sourceMap, 'names', []);
+ var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);
+ var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);
+ var mappings = util.getArg(sourceMap, 'mappings');
+ var file = util.getArg(sourceMap, 'file', null);
+
+ // Once again, Sass deviates from the spec and supplies the version as a
+ // string rather than a number, so we use loose equality checking here.
+ if (version != this._version) {
+ throw new Error('Unsupported version: ' + version);
+ }
+
+ sources = sources
+ // Some source maps produce relative source paths like "./foo.js" instead of
+ // "foo.js". Normalize these first so that future comparisons will succeed.
+ // See bugzil.la/1090768.
+ .map(util.normalize)
+ // Always ensure that absolute sources are internally stored relative to
+ // the source root, if the source root is absolute. Not doing this would
+ // be particularly problematic when the source root is a prefix of the
+ // source (valid, but why??). See github issue #199 and bugzil.la/1188982.
+ .map(function (source) {
+ return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source)
+ ? util.relative(sourceRoot, source)
+ : source;
+ });
+
+ // Pass `true` below to allow duplicate names and sources. While source maps
+ // are intended to be compressed and deduplicated, the TypeScript compiler
+ // sometimes generates source maps with duplicates in them. See Github issue
+ // #72 and bugzil.la/889492.
+ this._names = ArraySet.fromArray(names, true);
+ this._sources = ArraySet.fromArray(sources, true);
+
+ this.sourceRoot = sourceRoot;
+ this.sourcesContent = sourcesContent;
+ this._mappings = mappings;
+ this.file = file;
+ }
+
+ BasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);
+ BasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;
+
+ /**
+ * Create a BasicSourceMapConsumer from a SourceMapGenerator.
+ *
+ * @param SourceMapGenerator aSourceMap
+ * The source map that will be consumed.
+ * @returns BasicSourceMapConsumer
+ */
+ BasicSourceMapConsumer.fromSourceMap =
+ function SourceMapConsumer_fromSourceMap(aSourceMap) {
+ var smc = Object.create(BasicSourceMapConsumer.prototype);
+
+ var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);
+ var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);
+ smc.sourceRoot = aSourceMap._sourceRoot;
+ smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),
+ smc.sourceRoot);
+ smc.file = aSourceMap._file;
+
+ // Because we are modifying the entries (by converting string sources and
+ // names to indices into the sources and names ArraySets), we have to make
+ // a copy of the entry or else bad things happen. Shared mutable state
+ // strikes again! See github issue #191.
+
+ var generatedMappings = aSourceMap._mappings.toArray().slice();
+ var destGeneratedMappings = smc.__generatedMappings = [];
+ var destOriginalMappings = smc.__originalMappings = [];
+
+ for (var i = 0, length = generatedMappings.length; i < length; i++) {
+ var srcMapping = generatedMappings[i];
+ var destMapping = new Mapping;
+ destMapping.generatedLine = srcMapping.generatedLine;
+ destMapping.generatedColumn = srcMapping.generatedColumn;
+
+ if (srcMapping.source) {
+ destMapping.source = sources.indexOf(srcMapping.source);
+ destMapping.originalLine = srcMapping.originalLine;
+ destMapping.originalColumn = srcMapping.originalColumn;
+
+ if (srcMapping.name) {
+ destMapping.name = names.indexOf(srcMapping.name);
+ }
+
+ destOriginalMappings.push(destMapping);
+ }
+
+ destGeneratedMappings.push(destMapping);
+ }
+
+ quickSort(smc.__originalMappings, util.compareByOriginalPositions);
+
+ return smc;
+ };
+
+ /**
+ * The version of the source mapping spec that we are consuming.
+ */
+ BasicSourceMapConsumer.prototype._version = 3;
+
+ /**
+ * The list of original sources.
+ */
+ Object.defineProperty(BasicSourceMapConsumer.prototype, 'sources', {
+ get: function () {
+ return this._sources.toArray().map(function (s) {
+ return this.sourceRoot != null ? util.join(this.sourceRoot, s) : s;
+ }, this);
+ }
+ });
+
+ /**
+ * Provide the JIT with a nice shape / hidden class.
+ */
+ function Mapping() {
+ this.generatedLine = 0;
+ this.generatedColumn = 0;
+ this.source = null;
+ this.originalLine = null;
+ this.originalColumn = null;
+ this.name = null;
+ }
+
+ /**
+ * Parse the mappings in a string in to a data structure which we can easily
+ * query (the ordered arrays in the `this.__generatedMappings` and
+ * `this.__originalMappings` properties).
+ */
+ BasicSourceMapConsumer.prototype._parseMappings =
+ function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {
+ var generatedLine = 1;
+ var previousGeneratedColumn = 0;
+ var previousOriginalLine = 0;
+ var previousOriginalColumn = 0;
+ var previousSource = 0;
+ var previousName = 0;
+ var length = aStr.length;
+ var index = 0;
+ var cachedSegments = {};
+ var temp = {};
+ var originalMappings = [];
+ var generatedMappings = [];
+ var mapping, str, segment, end, value;
+
+ while (index < length) {
+ if (aStr.charAt(index) === ';') {
+ generatedLine++;
+ index++;
+ previousGeneratedColumn = 0;
+ }
+ else if (aStr.charAt(index) === ',') {
+ index++;
+ }
+ else {
+ mapping = new Mapping();
+ mapping.generatedLine = generatedLine;
+
+ // Because each offset is encoded relative to the previous one,
+ // many segments often have the same encoding. We can exploit this
+ // fact by caching the parsed variable length fields of each segment,
+ // allowing us to avoid a second parse if we encounter the same
+ // segment again.
+ for (end = index; end < length; end++) {
+ if (this._charIsMappingSeparator(aStr, end)) {
+ break;
+ }
+ }
+ str = aStr.slice(index, end);
+
+ segment = cachedSegments[str];
+ if (segment) {
+ index += str.length;
+ } else {
+ segment = [];
+ while (index < end) {
+ base64VLQ.decode(aStr, index, temp);
+ value = temp.value;
+ index = temp.rest;
+ segment.push(value);
+ }
+
+ if (segment.length === 2) {
+ throw new Error('Found a source, but no line and column');
+ }
+
+ if (segment.length === 3) {
+ throw new Error('Found a source and line, but no column');
+ }
+
+ cachedSegments[str] = segment;
+ }
+
+ // Generated column.
+ mapping.generatedColumn = previousGeneratedColumn + segment[0];
+ previousGeneratedColumn = mapping.generatedColumn;
+
+ if (segment.length > 1) {
+ // Original source.
+ mapping.source = previousSource + segment[1];
+ previousSource += segment[1];
+
+ // Original line.
+ mapping.originalLine = previousOriginalLine + segment[2];
+ previousOriginalLine = mapping.originalLine;
+ // Lines are stored 0-based
+ mapping.originalLine += 1;
+
+ // Original column.
+ mapping.originalColumn = previousOriginalColumn + segment[3];
+ previousOriginalColumn = mapping.originalColumn;
+
+ if (segment.length > 4) {
+ // Original name.
+ mapping.name = previousName + segment[4];
+ previousName += segment[4];
+ }
+ }
+
+ generatedMappings.push(mapping);
+ if (typeof mapping.originalLine === 'number') {
+ originalMappings.push(mapping);
+ }
+ }
+ }
+
+ quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated);
+ this.__generatedMappings = generatedMappings;
+
+ quickSort(originalMappings, util.compareByOriginalPositions);
+ this.__originalMappings = originalMappings;
+ };
+
+ /**
+ * Find the mapping that best matches the hypothetical "needle" mapping that
+ * we are searching for in the given "haystack" of mappings.
+ */
+ BasicSourceMapConsumer.prototype._findMapping =
+ function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,
+ aColumnName, aComparator, aBias) {
+ // To return the position we are searching for, we must first find the
+ // mapping for the given position and then return the opposite position it
+ // points to. Because the mappings are sorted, we can use binary search to
+ // find the best mapping.
+
+ if (aNeedle[aLineName] <= 0) {
+ throw new TypeError('Line must be greater than or equal to 1, got '
+ + aNeedle[aLineName]);
+ }
+ if (aNeedle[aColumnName] < 0) {
+ throw new TypeError('Column must be greater than or equal to 0, got '
+ + aNeedle[aColumnName]);
+ }
+
+ return binarySearch.search(aNeedle, aMappings, aComparator, aBias);
+ };
+
+ /**
+ * Compute the last column for each generated mapping. The last column is
+ * inclusive.
+ */
+ BasicSourceMapConsumer.prototype.computeColumnSpans =
+ function SourceMapConsumer_computeColumnSpans() {
+ for (var index = 0; index < this._generatedMappings.length; ++index) {
+ var mapping = this._generatedMappings[index];
+
+ // Mappings do not contain a field for the last generated columnt. We
+ // can come up with an optimistic estimate, however, by assuming that
+ // mappings are contiguous (i.e. given two consecutive mappings, the
+ // first mapping ends where the second one starts).
+ if (index + 1 < this._generatedMappings.length) {
+ var nextMapping = this._generatedMappings[index + 1];
+
+ if (mapping.generatedLine === nextMapping.generatedLine) {
+ mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;
+ continue;
+ }
+ }
+
+ // The last mapping for each line spans the entire line.
+ mapping.lastGeneratedColumn = Infinity;
+ }
+ };
+
+ /**
+ * Returns the original source, line, and column information for the generated
+ * source's line and column positions provided. The only argument is an object
+ * with the following properties:
+ *
+ * - line: The line number in the generated source.
+ * - column: The column number in the generated source.
+ * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or
+ * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the
+ * closest element that is smaller than or greater than the one we are
+ * searching for, respectively, if the exact element cannot be found.
+ * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.
+ *
+ * and an object is returned with the following properties:
+ *
+ * - source: The original source file, or null.
+ * - line: The line number in the original source, or null.
+ * - column: The column number in the original source, or null.
+ * - name: The original identifier, or null.
+ */
+ BasicSourceMapConsumer.prototype.originalPositionFor =
+ function SourceMapConsumer_originalPositionFor(aArgs) {
+ var needle = {
+ generatedLine: util.getArg(aArgs, 'line'),
+ generatedColumn: util.getArg(aArgs, 'column')
+ };
+
+ var index = this._findMapping(
+ needle,
+ this._generatedMappings,
+ "generatedLine",
+ "generatedColumn",
+ util.compareByGeneratedPositionsDeflated,
+ util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)
+ );
+
+ if (index >= 0) {
+ var mapping = this._generatedMappings[index];
+
+ if (mapping.generatedLine === needle.generatedLine) {
+ var source = util.getArg(mapping, 'source', null);
+ if (source !== null) {
+ source = this._sources.at(source);
+ if (this.sourceRoot != null) {
+ source = util.join(this.sourceRoot, source);
+ }
+ }
+ var name = util.getArg(mapping, 'name', null);
+ if (name !== null) {
+ name = this._names.at(name);
+ }
+ return {
+ source: source,
+ line: util.getArg(mapping, 'originalLine', null),
+ column: util.getArg(mapping, 'originalColumn', null),
+ name: name
+ };
+ }
+ }
+
+ return {
+ source: null,
+ line: null,
+ column: null,
+ name: null
+ };
+ };
+
+ /**
+ * Return true if we have the source content for every source in the source
+ * map, false otherwise.
+ */
+ BasicSourceMapConsumer.prototype.hasContentsOfAllSources =
+ function BasicSourceMapConsumer_hasContentsOfAllSources() {
+ if (!this.sourcesContent) {
+ return false;
+ }
+ return this.sourcesContent.length >= this._sources.size() &&
+ !this.sourcesContent.some(function (sc) { return sc == null; });
+ };
+
+ /**
+ * Returns the original source content. The only argument is the url of the
+ * original source file. Returns null if no original source content is
+ * available.
+ */
+ BasicSourceMapConsumer.prototype.sourceContentFor =
+ function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {
+ if (!this.sourcesContent) {
+ return null;
+ }
+
+ if (this.sourceRoot != null) {
+ aSource = util.relative(this.sourceRoot, aSource);
+ }
+
+ if (this._sources.has(aSource)) {
+ return this.sourcesContent[this._sources.indexOf(aSource)];
+ }
+
+ var url;
+ if (this.sourceRoot != null
+ && (url = util.urlParse(this.sourceRoot))) {
+ // XXX: file:// URIs and absolute paths lead to unexpected behavior for
+ // many users. We can help them out when they expect file:// URIs to
+ // behave like it would if they were running a local HTTP server. See
+ // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.
+ var fileUriAbsPath = aSource.replace(/^file:\/\//, "");
+ if (url.scheme == "file"
+ && this._sources.has(fileUriAbsPath)) {
+ return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]
+ }
+
+ if ((!url.path || url.path == "/")
+ && this._sources.has("/" + aSource)) {
+ return this.sourcesContent[this._sources.indexOf("/" + aSource)];
+ }
+ }
+
+ // This function is used recursively from
+ // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we
+ // don't want to throw if we can't find the source - we just want to
+ // return null, so we provide a flag to exit gracefully.
+ if (nullOnMissing) {
+ return null;
+ }
+ else {
+ throw new Error('"' + aSource + '" is not in the SourceMap.');
+ }
+ };
+
+ /**
+ * Returns the generated line and column information for the original source,
+ * line, and column positions provided. The only argument is an object with
+ * the following properties:
+ *
+ * - source: The filename of the original source.
+ * - line: The line number in the original source.
+ * - column: The column number in the original source.
+ * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or
+ * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the
+ * closest element that is smaller than or greater than the one we are
+ * searching for, respectively, if the exact element cannot be found.
+ * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.
+ *
+ * and an object is returned with the following properties:
+ *
+ * - line: The line number in the generated source, or null.
+ * - column: The column number in the generated source, or null.
+ */
+ BasicSourceMapConsumer.prototype.generatedPositionFor =
+ function SourceMapConsumer_generatedPositionFor(aArgs) {
+ var source = util.getArg(aArgs, 'source');
+ if (this.sourceRoot != null) {
+ source = util.relative(this.sourceRoot, source);
+ }
+ if (!this._sources.has(source)) {
+ return {
+ line: null,
+ column: null,
+ lastColumn: null
+ };
+ }
+ source = this._sources.indexOf(source);
+
+ var needle = {
+ source: source,
+ originalLine: util.getArg(aArgs, 'line'),
+ originalColumn: util.getArg(aArgs, 'column')
+ };
+
+ var index = this._findMapping(
+ needle,
+ this._originalMappings,
+ "originalLine",
+ "originalColumn",
+ util.compareByOriginalPositions,
+ util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)
+ );
+
+ if (index >= 0) {
+ var mapping = this._originalMappings[index];
+
+ if (mapping.source === needle.source) {
+ return {
+ line: util.getArg(mapping, 'generatedLine', null),
+ column: util.getArg(mapping, 'generatedColumn', null),
+ lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)
+ };
+ }
+ }
+
+ return {
+ line: null,
+ column: null,
+ lastColumn: null
+ };
+ };
+
+ exports.BasicSourceMapConsumer = BasicSourceMapConsumer;
+
+ /**
+ * An IndexedSourceMapConsumer instance represents a parsed source map which
+ * we can query for information. It differs from BasicSourceMapConsumer in
+ * that it takes "indexed" source maps (i.e. ones with a "sections" field) as
+ * input.
+ *
+ * The only parameter is a raw source map (either as a JSON string, or already
+ * parsed to an object). According to the spec for indexed source maps, they
+ * have the following attributes:
+ *
+ * - version: Which version of the source map spec this map is following.
+ * - file: Optional. The generated file this source map is associated with.
+ * - sections: A list of section definitions.
+ *
+ * Each value under the "sections" field has two fields:
+ * - offset: The offset into the original specified at which this section
+ * begins to apply, defined as an object with a "line" and "column"
+ * field.
+ * - map: A source map definition. This source map could also be indexed,
+ * but doesn't have to be.
+ *
+ * Instead of the "map" field, it's also possible to have a "url" field
+ * specifying a URL to retrieve a source map from, but that's currently
+ * unsupported.
+ *
+ * Here's an example source map, taken from the source map spec[0], but
+ * modified to omit a section which uses the "url" field.
+ *
+ * {
+ * version : 3,
+ * file: "app.js",
+ * sections: [{
+ * offset: {line:100, column:10},
+ * map: {
+ * version : 3,
+ * file: "section.js",
+ * sources: ["foo.js", "bar.js"],
+ * names: ["src", "maps", "are", "fun"],
+ * mappings: "AAAA,E;;ABCDE;"
+ * }
+ * }],
+ * }
+ *
+ * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt
+ */
+ function IndexedSourceMapConsumer(aSourceMap) {
+ var sourceMap = aSourceMap;
+ if (typeof aSourceMap === 'string') {
+ sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, ''));
+ }
+
+ var version = util.getArg(sourceMap, 'version');
+ var sections = util.getArg(sourceMap, 'sections');
+
+ if (version != this._version) {
+ throw new Error('Unsupported version: ' + version);
+ }
+
+ this._sources = new ArraySet();
+ this._names = new ArraySet();
+
+ var lastOffset = {
+ line: -1,
+ column: 0
+ };
+ this._sections = sections.map(function (s) {
+ if (s.url) {
+ // The url field will require support for asynchronicity.
+ // See https://github.com/mozilla/source-map/issues/16
+ throw new Error('Support for url field in sections not implemented.');
+ }
+ var offset = util.getArg(s, 'offset');
+ var offsetLine = util.getArg(offset, 'line');
+ var offsetColumn = util.getArg(offset, 'column');
+
+ if (offsetLine < lastOffset.line ||
+ (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) {
+ throw new Error('Section offsets must be ordered and non-overlapping.');
+ }
+ lastOffset = offset;
+
+ return {
+ generatedOffset: {
+ // The offset fields are 0-based, but we use 1-based indices when
+ // encoding/decoding from VLQ.
+ generatedLine: offsetLine + 1,
+ generatedColumn: offsetColumn + 1
+ },
+ consumer: new SourceMapConsumer(util.getArg(s, 'map'))
+ }
+ });
+ }
+
+ IndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);
+ IndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;
+
+ /**
+ * The version of the source mapping spec that we are consuming.
+ */
+ IndexedSourceMapConsumer.prototype._version = 3;
+
+ /**
+ * The list of original sources.
+ */
+ Object.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', {
+ get: function () {
+ var sources = [];
+ for (var i = 0; i < this._sections.length; i++) {
+ for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {
+ sources.push(this._sections[i].consumer.sources[j]);
+ }
+ }
+ return sources;
+ }
+ });
+
+ /**
+ * Returns the original source, line, and column information for the generated
+ * source's line and column positions provided. The only argument is an object
+ * with the following properties:
+ *
+ * - line: The line number in the generated source.
+ * - column: The column number in the generated source.
+ *
+ * and an object is returned with the following properties:
+ *
+ * - source: The original source file, or null.
+ * - line: The line number in the original source, or null.
+ * - column: The column number in the original source, or null.
+ * - name: The original identifier, or null.
+ */
+ IndexedSourceMapConsumer.prototype.originalPositionFor =
+ function IndexedSourceMapConsumer_originalPositionFor(aArgs) {
+ var needle = {
+ generatedLine: util.getArg(aArgs, 'line'),
+ generatedColumn: util.getArg(aArgs, 'column')
+ };
+
+ // Find the section containing the generated position we're trying to map
+ // to an original position.
+ var sectionIndex = binarySearch.search(needle, this._sections,
+ function(needle, section) {
+ var cmp = needle.generatedLine - section.generatedOffset.generatedLine;
+ if (cmp) {
+ return cmp;
+ }
+
+ return (needle.generatedColumn -
+ section.generatedOffset.generatedColumn);
+ });
+ var section = this._sections[sectionIndex];
+
+ if (!section) {
+ return {
+ source: null,
+ line: null,
+ column: null,
+ name: null
+ };
+ }
+
+ return section.consumer.originalPositionFor({
+ line: needle.generatedLine -
+ (section.generatedOffset.generatedLine - 1),
+ column: needle.generatedColumn -
+ (section.generatedOffset.generatedLine === needle.generatedLine
+ ? section.generatedOffset.generatedColumn - 1
+ : 0),
+ bias: aArgs.bias
+ });
+ };
+
+ /**
+ * Return true if we have the source content for every source in the source
+ * map, false otherwise.
+ */
+ IndexedSourceMapConsumer.prototype.hasContentsOfAllSources =
+ function IndexedSourceMapConsumer_hasContentsOfAllSources() {
+ return this._sections.every(function (s) {
+ return s.consumer.hasContentsOfAllSources();
+ });
+ };
+
+ /**
+ * Returns the original source content. The only argument is the url of the
+ * original source file. Returns null if no original source content is
+ * available.
+ */
+ IndexedSourceMapConsumer.prototype.sourceContentFor =
+ function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {
+ for (var i = 0; i < this._sections.length; i++) {
+ var section = this._sections[i];
+
+ var content = section.consumer.sourceContentFor(aSource, true);
+ if (content) {
+ return content;
+ }
+ }
+ if (nullOnMissing) {
+ return null;
+ }
+ else {
+ throw new Error('"' + aSource + '" is not in the SourceMap.');
+ }
+ };
+
+ /**
+ * Returns the generated line and column information for the original source,
+ * line, and column positions provided. The only argument is an object with
+ * the following properties:
+ *
+ * - source: The filename of the original source.
+ * - line: The line number in the original source.
+ * - column: The column number in the original source.
+ *
+ * and an object is returned with the following properties:
+ *
+ * - line: The line number in the generated source, or null.
+ * - column: The column number in the generated source, or null.
+ */
+ IndexedSourceMapConsumer.prototype.generatedPositionFor =
+ function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {
+ for (var i = 0; i < this._sections.length; i++) {
+ var section = this._sections[i];
+
+ // Only consider this section if the requested source is in the list of
+ // sources of the consumer.
+ if (section.consumer.sources.indexOf(util.getArg(aArgs, 'source')) === -1) {
+ continue;
+ }
+ var generatedPosition = section.consumer.generatedPositionFor(aArgs);
+ if (generatedPosition) {
+ var ret = {
+ line: generatedPosition.line +
+ (section.generatedOffset.generatedLine - 1),
+ column: generatedPosition.column +
+ (section.generatedOffset.generatedLine === generatedPosition.line
+ ? section.generatedOffset.generatedColumn - 1
+ : 0)
+ };
+ return ret;
+ }
+ }
+
+ return {
+ line: null,
+ column: null
+ };
+ };
+
+ /**
+ * Parse the mappings in a string in to a data structure which we can easily
+ * query (the ordered arrays in the `this.__generatedMappings` and
+ * `this.__originalMappings` properties).
+ */
+ IndexedSourceMapConsumer.prototype._parseMappings =
+ function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {
+ this.__generatedMappings = [];
+ this.__originalMappings = [];
+ for (var i = 0; i < this._sections.length; i++) {
+ var section = this._sections[i];
+ var sectionMappings = section.consumer._generatedMappings;
+ for (var j = 0; j < sectionMappings.length; j++) {
+ var mapping = sectionMappings[j];
+
+ var source = section.consumer._sources.at(mapping.source);
+ if (section.consumer.sourceRoot !== null) {
+ source = util.join(section.consumer.sourceRoot, source);
+ }
+ this._sources.add(source);
+ source = this._sources.indexOf(source);
+
+ var name = section.consumer._names.at(mapping.name);
+ this._names.add(name);
+ name = this._names.indexOf(name);
+
+ // The mappings coming from the consumer for the section have
+ // generated positions relative to the start of the section, so we
+ // need to offset them to be relative to the start of the concatenated
+ // generated file.
+ var adjustedMapping = {
+ source: source,
+ generatedLine: mapping.generatedLine +
+ (section.generatedOffset.generatedLine - 1),
+ generatedColumn: mapping.generatedColumn +
+ (section.generatedOffset.generatedLine === mapping.generatedLine
+ ? section.generatedOffset.generatedColumn - 1
+ : 0),
+ originalLine: mapping.originalLine,
+ originalColumn: mapping.originalColumn,
+ name: name
+ };
+
+ this.__generatedMappings.push(adjustedMapping);
+ if (typeof adjustedMapping.originalLine === 'number') {
+ this.__originalMappings.push(adjustedMapping);
+ }
+ }
+ }
+
+ quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);
+ quickSort(this.__originalMappings, util.compareByOriginalPositions);
+ };
+
+ exports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;
+ }
+
+
+/***/ },
+/* 8 */
+/***/ function(module, exports) {
+
+ /* -*- Mode: js; js-indent-level: 2; -*- */
+ /*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+ {
+ exports.GREATEST_LOWER_BOUND = 1;
+ exports.LEAST_UPPER_BOUND = 2;
+
+ /**
+ * Recursive implementation of binary search.
+ *
+ * @param aLow Indices here and lower do not contain the needle.
+ * @param aHigh Indices here and higher do not contain the needle.
+ * @param aNeedle The element being searched for.
+ * @param aHaystack The non-empty array being searched.
+ * @param aCompare Function which takes two elements and returns -1, 0, or 1.
+ * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or
+ * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the
+ * closest element that is smaller than or greater than the one we are
+ * searching for, respectively, if the exact element cannot be found.
+ */
+ function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {
+ // This function terminates when one of the following is true:
+ //
+ // 1. We find the exact element we are looking for.
+ //
+ // 2. We did not find the exact element, but we can return the index of
+ // the next-closest element.
+ //
+ // 3. We did not find the exact element, and there is no next-closest
+ // element than the one we are searching for, so we return -1.
+ var mid = Math.floor((aHigh - aLow) / 2) + aLow;
+ var cmp = aCompare(aNeedle, aHaystack[mid], true);
+ if (cmp === 0) {
+ // Found the element we are looking for.
+ return mid;
+ }
+ else if (cmp > 0) {
+ // Our needle is greater than aHaystack[mid].
+ if (aHigh - mid > 1) {
+ // The element is in the upper half.
+ return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);
+ }
+
+ // The exact needle element was not found in this haystack. Determine if
+ // we are in termination case (3) or (2) and return the appropriate thing.
+ if (aBias == exports.LEAST_UPPER_BOUND) {
+ return aHigh < aHaystack.length ? aHigh : -1;
+ } else {
+ return mid;
+ }
+ }
+ else {
+ // Our needle is less than aHaystack[mid].
+ if (mid - aLow > 1) {
+ // The element is in the lower half.
+ return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);
+ }
+
+ // we are in termination case (3) or (2) and return the appropriate thing.
+ if (aBias == exports.LEAST_UPPER_BOUND) {
+ return mid;
+ } else {
+ return aLow < 0 ? -1 : aLow;
+ }
+ }
+ }
+
+ /**
+ * This is an implementation of binary search which will always try and return
+ * the index of the closest element if there is no exact hit. This is because
+ * mappings between original and generated line/col pairs are single points,
+ * and there is an implicit region between each of them, so a miss just means
+ * that you aren't on the very start of a region.
+ *
+ * @param aNeedle The element you are looking for.
+ * @param aHaystack The array that is being searched.
+ * @param aCompare A function which takes the needle and an element in the
+ * array and returns -1, 0, or 1 depending on whether the needle is less
+ * than, equal to, or greater than the element, respectively.
+ * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or
+ * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the
+ * closest element that is smaller than or greater than the one we are
+ * searching for, respectively, if the exact element cannot be found.
+ * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.
+ */
+ exports.search = function search(aNeedle, aHaystack, aCompare, aBias) {
+ if (aHaystack.length === 0) {
+ return -1;
+ }
+
+ var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,
+ aCompare, aBias || exports.GREATEST_LOWER_BOUND);
+ if (index < 0) {
+ return -1;
+ }
+
+ // We have found either the exact element, or the next-closest element than
+ // the one we are searching for. However, there may be more than one such
+ // element. Make sure we always return the smallest of these.
+ while (index - 1 >= 0) {
+ if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {
+ break;
+ }
+ --index;
+ }
+
+ return index;
+ };
+ }
+
+
+/***/ },
+/* 9 */
+/***/ function(module, exports) {
+
+ /* -*- Mode: js; js-indent-level: 2; -*- */
+ /*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+ {
+ // It turns out that some (most?) JavaScript engines don't self-host
+ // `Array.prototype.sort`. This makes sense because C++ will likely remain
+ // faster than JS when doing raw CPU-intensive sorting. However, when using a
+ // custom comparator function, calling back and forth between the VM's C++ and
+ // JIT'd JS is rather slow *and* loses JIT type information, resulting in
+ // worse generated code for the comparator function than would be optimal. In
+ // fact, when sorting with a comparator, these costs outweigh the benefits of
+ // sorting in C++. By using our own JS-implemented Quick Sort (below), we get
+ // a ~3500ms mean speed-up in `bench/bench.html`.
+
+ /**
+ * Swap the elements indexed by `x` and `y` in the array `ary`.
+ *
+ * @param {Array} ary
+ * The array.
+ * @param {Number} x
+ * The index of the first item.
+ * @param {Number} y
+ * The index of the second item.
+ */
+ function swap(ary, x, y) {
+ var temp = ary[x];
+ ary[x] = ary[y];
+ ary[y] = temp;
+ }
+
+ /**
+ * Returns a random integer within the range `low .. high` inclusive.
+ *
+ * @param {Number} low
+ * The lower bound on the range.
+ * @param {Number} high
+ * The upper bound on the range.
+ */
+ function randomIntInRange(low, high) {
+ return Math.round(low + (Math.random() * (high - low)));
+ }
+
+ /**
+ * The Quick Sort algorithm.
+ *
+ * @param {Array} ary
+ * An array to sort.
+ * @param {function} comparator
+ * Function to use to compare two items.
+ * @param {Number} p
+ * Start index of the array
+ * @param {Number} r
+ * End index of the array
+ */
+ function doQuickSort(ary, comparator, p, r) {
+ // If our lower bound is less than our upper bound, we (1) partition the
+ // array into two pieces and (2) recurse on each half. If it is not, this is
+ // the empty array and our base case.
+
+ if (p < r) {
+ // (1) Partitioning.
+ //
+ // The partitioning chooses a pivot between `p` and `r` and moves all
+ // elements that are less than or equal to the pivot to the before it, and
+ // all the elements that are greater than it after it. The effect is that
+ // once partition is done, the pivot is in the exact place it will be when
+ // the array is put in sorted order, and it will not need to be moved
+ // again. This runs in O(n) time.
+
+ // Always choose a random pivot so that an input array which is reverse
+ // sorted does not cause O(n^2) running time.
+ var pivotIndex = randomIntInRange(p, r);
+ var i = p - 1;
+
+ swap(ary, pivotIndex, r);
+ var pivot = ary[r];
+
+ // Immediately after `j` is incremented in this loop, the following hold
+ // true:
+ //
+ // * Every element in `ary[p .. i]` is less than or equal to the pivot.
+ //
+ // * Every element in `ary[i+1 .. j-1]` is greater than the pivot.
+ for (var j = p; j < r; j++) {
+ if (comparator(ary[j], pivot) <= 0) {
+ i += 1;
+ swap(ary, i, j);
+ }
+ }
+
+ swap(ary, i + 1, j);
+ var q = i + 1;
+
+ // (2) Recurse on each half.
+
+ doQuickSort(ary, comparator, p, q - 1);
+ doQuickSort(ary, comparator, q + 1, r);
+ }
+ }
+
+ /**
+ * Sort the given array in-place with the given comparator function.
+ *
+ * @param {Array} ary
+ * An array to sort.
+ * @param {function} comparator
+ * Function to use to compare two items.
+ */
+ exports.quickSort = function (ary, comparator) {
+ doQuickSort(ary, comparator, 0, ary.length - 1);
+ };
+ }
+
+
+/***/ },
+/* 10 */
+/***/ function(module, exports, __webpack_require__) {
+
+ /* -*- Mode: js; js-indent-level: 2; -*- */
+ /*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+ {
+ var SourceMapGenerator = __webpack_require__(1).SourceMapGenerator;
+ var util = __webpack_require__(4);
+
+ // Matches a Windows-style `\r\n` newline or a `\n` newline used by all other
+ // operating systems these days (capturing the result).
+ var REGEX_NEWLINE = /(\r?\n)/;
+
+ // Newline character code for charCodeAt() comparisons
+ var NEWLINE_CODE = 10;
+
+ // Private symbol for identifying `SourceNode`s when multiple versions of
+ // the source-map library are loaded. This MUST NOT CHANGE across
+ // versions!
+ var isSourceNode = "$$$isSourceNode$$$";
+
+ /**
+ * SourceNodes provide a way to abstract over interpolating/concatenating
+ * snippets of generated JavaScript source code while maintaining the line and
+ * column information associated with the original source code.
+ *
+ * @param aLine The original line number.
+ * @param aColumn The original column number.
+ * @param aSource The original source's filename.
+ * @param aChunks Optional. An array of strings which are snippets of
+ * generated JS, or other SourceNodes.
+ * @param aName The original identifier.
+ */
+ function SourceNode(aLine, aColumn, aSource, aChunks, aName) {
+ this.children = [];
+ this.sourceContents = {};
+ this.line = aLine == null ? null : aLine;
+ this.column = aColumn == null ? null : aColumn;
+ this.source = aSource == null ? null : aSource;
+ this.name = aName == null ? null : aName;
+ this[isSourceNode] = true;
+ if (aChunks != null) this.add(aChunks);
+ }
+
+ /**
+ * Creates a SourceNode from generated code and a SourceMapConsumer.
+ *
+ * @param aGeneratedCode The generated code
+ * @param aSourceMapConsumer The SourceMap for the generated code
+ * @param aRelativePath Optional. The path that relative sources in the
+ * SourceMapConsumer should be relative to.
+ */
+ SourceNode.fromStringWithSourceMap =
+ function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {
+ // The SourceNode we want to fill with the generated code
+ // and the SourceMap
+ var node = new SourceNode();
+
+ // All even indices of this array are one line of the generated code,
+ // while all odd indices are the newlines between two adjacent lines
+ // (since `REGEX_NEWLINE` captures its match).
+ // Processed fragments are removed from this array, by calling `shiftNextLine`.
+ var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);
+ var shiftNextLine = function() {
+ var lineContents = remainingLines.shift();
+ // The last line of a file might not have a newline.
+ var newLine = remainingLines.shift() || "";
+ return lineContents + newLine;
+ };
+
+ // We need to remember the position of "remainingLines"
+ var lastGeneratedLine = 1, lastGeneratedColumn = 0;
+
+ // The generate SourceNodes we need a code range.
+ // To extract it current and last mapping is used.
+ // Here we store the last mapping.
+ var lastMapping = null;
+
+ aSourceMapConsumer.eachMapping(function (mapping) {
+ if (lastMapping !== null) {
+ // We add the code from "lastMapping" to "mapping":
+ // First check if there is a new line in between.
+ if (lastGeneratedLine < mapping.generatedLine) {
+ // Associate first line with "lastMapping"
+ addMappingWithCode(lastMapping, shiftNextLine());
+ lastGeneratedLine++;
+ lastGeneratedColumn = 0;
+ // The remaining code is added without mapping
+ } else {
+ // There is no new line in between.
+ // Associate the code between "lastGeneratedColumn" and
+ // "mapping.generatedColumn" with "lastMapping"
+ var nextLine = remainingLines[0];
+ var code = nextLine.substr(0, mapping.generatedColumn -
+ lastGeneratedColumn);
+ remainingLines[0] = nextLine.substr(mapping.generatedColumn -
+ lastGeneratedColumn);
+ lastGeneratedColumn = mapping.generatedColumn;
+ addMappingWithCode(lastMapping, code);
+ // No more remaining code, continue
+ lastMapping = mapping;
+ return;
+ }
+ }
+ // We add the generated code until the first mapping
+ // to the SourceNode without any mapping.
+ // Each line is added as separate string.
+ while (lastGeneratedLine < mapping.generatedLine) {
+ node.add(shiftNextLine());
+ lastGeneratedLine++;
+ }
+ if (lastGeneratedColumn < mapping.generatedColumn) {
+ var nextLine = remainingLines[0];
+ node.add(nextLine.substr(0, mapping.generatedColumn));
+ remainingLines[0] = nextLine.substr(mapping.generatedColumn);
+ lastGeneratedColumn = mapping.generatedColumn;
+ }
+ lastMapping = mapping;
+ }, this);
+ // We have processed all mappings.
+ if (remainingLines.length > 0) {
+ if (lastMapping) {
+ // Associate the remaining code in the current line with "lastMapping"
+ addMappingWithCode(lastMapping, shiftNextLine());
+ }
+ // and add the remaining lines without any mapping
+ node.add(remainingLines.join(""));
+ }
+
+ // Copy sourcesContent into SourceNode
+ aSourceMapConsumer.sources.forEach(function (sourceFile) {
+ var content = aSourceMapConsumer.sourceContentFor(sourceFile);
+ if (content != null) {
+ if (aRelativePath != null) {
+ sourceFile = util.join(aRelativePath, sourceFile);
+ }
+ node.setSourceContent(sourceFile, content);
+ }
+ });
+
+ return node;
+
+ function addMappingWithCode(mapping, code) {
+ if (mapping === null || mapping.source === undefined) {
+ node.add(code);
+ } else {
+ var source = aRelativePath
+ ? util.join(aRelativePath, mapping.source)
+ : mapping.source;
+ node.add(new SourceNode(mapping.originalLine,
+ mapping.originalColumn,
+ source,
+ code,
+ mapping.name));
+ }
+ }
+ };
+
+ /**
+ * Add a chunk of generated JS to this source node.
+ *
+ * @param aChunk A string snippet of generated JS code, another instance of
+ * SourceNode, or an array where each member is one of those things.
+ */
+ SourceNode.prototype.add = function SourceNode_add(aChunk) {
+ if (Array.isArray(aChunk)) {
+ aChunk.forEach(function (chunk) {
+ this.add(chunk);
+ }, this);
+ }
+ else if (aChunk[isSourceNode] || typeof aChunk === "string") {
+ if (aChunk) {
+ this.children.push(aChunk);
+ }
+ }
+ else {
+ throw new TypeError(
+ "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk
+ );
+ }
+ return this;
+ };
+
+ /**
+ * Add a chunk of generated JS to the beginning of this source node.
+ *
+ * @param aChunk A string snippet of generated JS code, another instance of
+ * SourceNode, or an array where each member is one of those things.
+ */
+ SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {
+ if (Array.isArray(aChunk)) {
+ for (var i = aChunk.length-1; i >= 0; i--) {
+ this.prepend(aChunk[i]);
+ }
+ }
+ else if (aChunk[isSourceNode] || typeof aChunk === "string") {
+ this.children.unshift(aChunk);
+ }
+ else {
+ throw new TypeError(
+ "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk
+ );
+ }
+ return this;
+ };
+
+ /**
+ * Walk over the tree of JS snippets in this node and its children. The
+ * walking function is called once for each snippet of JS and is passed that
+ * snippet and the its original associated source's line/column location.
+ *
+ * @param aFn The traversal function.
+ */
+ SourceNode.prototype.walk = function SourceNode_walk(aFn) {
+ var chunk;
+ for (var i = 0, len = this.children.length; i < len; i++) {
+ chunk = this.children[i];
+ if (chunk[isSourceNode]) {
+ chunk.walk(aFn);
+ }
+ else {
+ if (chunk !== '') {
+ aFn(chunk, { source: this.source,
+ line: this.line,
+ column: this.column,
+ name: this.name });
+ }
+ }
+ }
+ };
+
+ /**
+ * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between
+ * each of `this.children`.
+ *
+ * @param aSep The separator.
+ */
+ SourceNode.prototype.join = function SourceNode_join(aSep) {
+ var newChildren;
+ var i;
+ var len = this.children.length;
+ if (len > 0) {
+ newChildren = [];
+ for (i = 0; i < len-1; i++) {
+ newChildren.push(this.children[i]);
+ newChildren.push(aSep);
+ }
+ newChildren.push(this.children[i]);
+ this.children = newChildren;
+ }
+ return this;
+ };
+
+ /**
+ * Call String.prototype.replace on the very right-most source snippet. Useful
+ * for trimming whitespace from the end of a source node, etc.
+ *
+ * @param aPattern The pattern to replace.
+ * @param aReplacement The thing to replace the pattern with.
+ */
+ SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {
+ var lastChild = this.children[this.children.length - 1];
+ if (lastChild[isSourceNode]) {
+ lastChild.replaceRight(aPattern, aReplacement);
+ }
+ else if (typeof lastChild === 'string') {
+ this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);
+ }
+ else {
+ this.children.push(''.replace(aPattern, aReplacement));
+ }
+ return this;
+ };
+
+ /**
+ * Set the source content for a source file. This will be added to the SourceMapGenerator
+ * in the sourcesContent field.
+ *
+ * @param aSourceFile The filename of the source file
+ * @param aSourceContent The content of the source file
+ */
+ SourceNode.prototype.setSourceContent =
+ function SourceNode_setSourceContent(aSourceFile, aSourceContent) {
+ this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;
+ };
+
+ /**
+ * Walk over the tree of SourceNodes. The walking function is called for each
+ * source file content and is passed the filename and source content.
+ *
+ * @param aFn The traversal function.
+ */
+ SourceNode.prototype.walkSourceContents =
+ function SourceNode_walkSourceContents(aFn) {
+ for (var i = 0, len = this.children.length; i < len; i++) {
+ if (this.children[i][isSourceNode]) {
+ this.children[i].walkSourceContents(aFn);
+ }
+ }
+
+ var sources = Object.keys(this.sourceContents);
+ for (var i = 0, len = sources.length; i < len; i++) {
+ aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);
+ }
+ };
+
+ /**
+ * Return the string representation of this source node. Walks over the tree
+ * and concatenates all the various snippets together to one string.
+ */
+ SourceNode.prototype.toString = function SourceNode_toString() {
+ var str = "";
+ this.walk(function (chunk) {
+ str += chunk;
+ });
+ return str;
+ };
+
+ /**
+ * Returns the string representation of this source node along with a source
+ * map.
+ */
+ SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {
+ var generated = {
+ code: "",
+ line: 1,
+ column: 0
+ };
+ var map = new SourceMapGenerator(aArgs);
+ var sourceMappingActive = false;
+ var lastOriginalSource = null;
+ var lastOriginalLine = null;
+ var lastOriginalColumn = null;
+ var lastOriginalName = null;
+ this.walk(function (chunk, original) {
+ generated.code += chunk;
+ if (original.source !== null
+ && original.line !== null
+ && original.column !== null) {
+ if(lastOriginalSource !== original.source
+ || lastOriginalLine !== original.line
+ || lastOriginalColumn !== original.column
+ || lastOriginalName !== original.name) {
+ map.addMapping({
+ source: original.source,
+ original: {
+ line: original.line,
+ column: original.column
+ },
+ generated: {
+ line: generated.line,
+ column: generated.column
+ },
+ name: original.name
+ });
+ }
+ lastOriginalSource = original.source;
+ lastOriginalLine = original.line;
+ lastOriginalColumn = original.column;
+ lastOriginalName = original.name;
+ sourceMappingActive = true;
+ } else if (sourceMappingActive) {
+ map.addMapping({
+ generated: {
+ line: generated.line,
+ column: generated.column
+ }
+ });
+ lastOriginalSource = null;
+ sourceMappingActive = false;
+ }
+ for (var idx = 0, length = chunk.length; idx < length; idx++) {
+ if (chunk.charCodeAt(idx) === NEWLINE_CODE) {
+ generated.line++;
+ generated.column = 0;
+ // Mappings end at eol
+ if (idx + 1 === length) {
+ lastOriginalSource = null;
+ sourceMappingActive = false;
+ } else if (sourceMappingActive) {
+ map.addMapping({
+ source: original.source,
+ original: {
+ line: original.line,
+ column: original.column
+ },
+ generated: {
+ line: generated.line,
+ column: generated.column
+ },
+ name: original.name
+ });
+ }
+ } else {
+ generated.column++;
+ }
+ }
+ });
+ this.walkSourceContents(function (sourceFile, sourceContent) {
+ map.setSourceContent(sourceFile, sourceContent);
+ });
+
+ return { code: generated.code, map: map };
+ };
+
+ exports.SourceNode = SourceNode;
+ }
+
+
+/***/ }
+/******/ ])
+});
+;
+//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwid2VicGFjazovLy93ZWJwYWNrL2Jvb3RzdHJhcCAzMzE2M2Q1YTFmMDY1MDk5Y2MwYiIsIndlYnBhY2s6Ly8vLi9zb3VyY2UtbWFwLmpzIiwid2VicGFjazovLy8uL2xpYi9zb3VyY2UtbWFwLWdlbmVyYXRvci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvYmFzZTY0LXZscS5qcyIsIndlYnBhY2s6Ly8vLi9saWIvYmFzZTY0LmpzIiwid2VicGFjazovLy8uL2xpYi91dGlsLmpzIiwid2VicGFjazovLy8uL2xpYi9hcnJheS1zZXQuanMiLCJ3ZWJwYWNrOi8vLy4vbGliL21hcHBpbmctbGlzdC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvc291cmNlLW1hcC1jb25zdW1lci5qcyIsIndlYnBhY2s6Ly8vLi9saWIvYmluYXJ5LXNlYXJjaC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvcXVpY2stc29ydC5qcyIsIndlYnBhY2s6Ly8vLi9saWIvc291cmNlLW5vZGUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELE87QUNWQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSx1QkFBZTtBQUNmO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOzs7Ozs7O0FDdENBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7QUNQQSxpQkFBZ0Isb0JBQW9CO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsUUFBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFFBQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVM7QUFDVDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsNkNBQTRDLFNBQVM7QUFDckQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0EseUJBQXdCO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7Ozs7Ozs7QUMzWUEsaUJBQWdCLG9CQUFvQjtBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNERBQTJEO0FBQzNELHFCQUFvQjtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFLOztBQUVMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTs7Ozs7OztBQzVJQSxpQkFBZ0Isb0JBQW9CO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQWtCO0FBQ2xCLG1CQUFrQjs7QUFFbEIsc0JBQXFCO0FBQ3JCLHVCQUFzQjs7QUFFdEIsbUJBQWtCO0FBQ2xCLG1CQUFrQjs7QUFFbEIsbUJBQWtCO0FBQ2xCLG9CQUFtQjs7QUFFbkI7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7OztBQ25FQSxpQkFBZ0Isb0JBQW9CO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBSztBQUNMO0FBQ0EsTUFBSztBQUNMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsaURBQWdELFFBQVE7QUFDeEQ7QUFDQTtBQUNBO0FBQ0EsUUFBTztBQUNQO0FBQ0EsUUFBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7O0FDaFhBLGlCQUFnQixvQkFBb0I7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlDQUF3QyxTQUFTO0FBQ2pEO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOzs7Ozs7O0FDdkdBLGlCQUFnQixvQkFBb0I7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQWtCO0FBQ2xCOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOzs7Ozs7O0FDL0VBLGlCQUFnQixvQkFBb0I7QUFDcEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSx5REFBd0Q7QUFDeEQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQSxzQkFBcUI7QUFDckI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWE7O0FBRWI7QUFDQTtBQUNBLFVBQVM7QUFDVDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYTs7QUFFYjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsOEJBQTZCLE1BQU07QUFDbkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5REFBd0Q7QUFDeEQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFPOztBQUVQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSx5REFBd0QsWUFBWTtBQUNwRTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFPO0FBQ1A7QUFDQSxJQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHNDQUFxQztBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTJCLGNBQWM7QUFDekM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxZQUFXO0FBQ1g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUF5Qix3Q0FBd0M7QUFDakU7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtEQUFpRCxtQkFBbUIsRUFBRTtBQUN0RTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7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Y0FBYSxNQUFNO0FBQ25CO0FBQ0EsY0FBYSxTQUFTO0FBQ3RCO0FBQ0EsY0FBYSxPQUFPO0FBQ3BCO0FBQ0EsY0FBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxzQkFBcUIsT0FBTztBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsY0FBYSxNQUFNO0FBQ25CO0FBQ0EsY0FBYSxTQUFTO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7OztBQ2xIQSxpQkFBZ0Isb0JBQW9CO0FBQ3BDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBVztBQUNYO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQU87O0FBRVA7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsVUFBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9DQUFtQyxRQUFRO0FBQzNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdEQUErQyxTQUFTO0FBQ3hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVCQUFzQjtBQUN0QjtBQUNBO0FBQ0EseUNBQXdDO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGtCQUFpQixXQUFXO0FBQzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrREFBaUQsU0FBUztBQUMxRDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDRDQUEyQyxTQUFTO0FBQ3BEO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYTtBQUNiO0FBQ0E7QUFDQTtBQUNBLGNBQWE7QUFDYjtBQUNBLFlBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFVBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQSwrQ0FBOEMsY0FBYztBQUM1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQSxnQkFBZTtBQUNmO0FBQ0EsY0FBYTtBQUNiO0FBQ0EsVUFBUztBQUNUO0FBQ0E7QUFDQTtBQUNBLE1BQUs7QUFDTDtBQUNBO0FBQ0EsTUFBSzs7QUFFTCxhQUFZO0FBQ1o7O0FBRUE7QUFDQSIsImZpbGUiOiJzb3VyY2UtbWFwLmRlYnVnLmpzIiwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoW10sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wic291cmNlTWFwXCJdID0gZmFjdG9yeSgpO1xuXHRlbHNlXG5cdFx0cm9vdFtcInNvdXJjZU1hcFwiXSA9IGZhY3RvcnkoKTtcbn0pKHRoaXMsIGZ1bmN0aW9uKCkge1xucmV0dXJuIFxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIHdlYnBhY2svdW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvblxuICoqLyIsIiBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbiBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG5cbiBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cbiBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKVxuIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuXG4gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRleHBvcnRzOiB7fSxcbiBcdFx0XHRpZDogbW9kdWxlSWQsXG4gXHRcdFx0bG9hZGVkOiBmYWxzZVxuIFx0XHR9O1xuXG4gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRcdG1vZHVsZS5sb2FkZWQgPSB0cnVlO1xuXG4gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbiBcdH1cblxuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbiBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG5cbiBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuXG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBfX3dlYnBhY2tfcmVxdWlyZV9fKDApO1xuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogd2VicGFjay9ib290c3RyYXAgMzMxNjNkNWExZjA2NTA5OWNjMGJcbiAqKi8iLCIvKlxuICogQ29weXJpZ2h0IDIwMDktMjAxMSBNb3ppbGxhIEZvdW5kYXRpb24gYW5kIGNvbnRyaWJ1dG9yc1xuICogTGljZW5zZWQgdW5kZXIgdGhlIE5ldyBCU0QgbGljZW5zZS4gU2VlIExJQ0VOU0UudHh0IG9yOlxuICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICovXG5leHBvcnRzLlNvdXJjZU1hcEdlbmVyYXRvciA9IHJlcXVpcmUoJy4vbGliL3NvdXJjZS1tYXAtZ2VuZXJhdG9yJykuU291cmNlTWFwR2VuZXJhdG9yO1xuZXhwb3J0cy5Tb3VyY2VNYXBDb25zdW1lciA9IHJlcXVpcmUoJy4vbGliL3NvdXJjZS1tYXAtY29uc3VtZXInKS5Tb3VyY2VNYXBDb25zdW1lcjtcbmV4cG9ydHMuU291cmNlTm9kZSA9IHJlcXVpcmUoJy4vbGliL3NvdXJjZS1ub2RlJykuU291cmNlTm9kZTtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9zb3VyY2UtbWFwLmpzXG4gKiogbW9kdWxlIGlkID0gMFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyogLSotIE1vZGU6IGpzOyBqcy1pbmRlbnQtbGV2ZWw6IDI7IC0qLSAqL1xuLypcbiAqIENvcHlyaWdodCAyMDExIE1vemlsbGEgRm91bmRhdGlvbiBhbmQgY29udHJpYnV0b3JzXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBsaWNlbnNlLiBTZWUgTElDRU5TRSBvcjpcbiAqIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2VcbiAqL1xue1xuICB2YXIgYmFzZTY0VkxRID0gcmVxdWlyZSgnLi9iYXNlNjQtdmxxJyk7XG4gIHZhciB1dGlsID0gcmVxdWlyZSgnLi91dGlsJyk7XG4gIHZhciBBcnJheVNldCA9IHJlcXVpcmUoJy4vYXJyYXktc2V0JykuQXJyYXlTZXQ7XG4gIHZhciBNYXBwaW5nTGlzdCA9IHJlcXVpcmUoJy4vbWFwcGluZy1saXN0JykuTWFwcGluZ0xpc3Q7XG5cbiAgLyoqXG4gICAqIEFuIGluc3RhbmNlIG9mIHRoZSBTb3VyY2VNYXBHZW5lcmF0b3IgcmVwcmVzZW50cyBhIHNvdXJjZSBtYXAgd2hpY2ggaXNcbiAgICogYmVpbmcgYnVpbHQgaW5jcmVtZW50YWxseS4gWW91IG1heSBwYXNzIGFuIG9iamVjdCB3aXRoIHRoZSBmb2xsb3dpbmdcbiAgICogcHJvcGVydGllczpcbiAgICpcbiAgICogICAtIGZpbGU6IFRoZSBmaWxlbmFtZSBvZiB0aGUgZ2VuZXJhdGVkIHNvdXJjZS5cbiAgICogICAtIHNvdXJjZVJvb3Q6IEEgcm9vdCBmb3IgYWxsIHJlbGF0aXZlIFVSTHMgaW4gdGhpcyBzb3VyY2UgbWFwLlxuICAgKi9cbiAgZnVuY3Rpb24gU291cmNlTWFwR2VuZXJhdG9yKGFBcmdzKSB7XG4gICAgaWYgKCFhQXJncykge1xuICAgICAgYUFyZ3MgPSB7fTtcbiAgICB9XG4gICAgdGhpcy5fZmlsZSA9IHV0aWwuZ2V0QXJnKGFBcmdzLCAnZmlsZScsIG51bGwpO1xuICAgIHRoaXMuX3NvdXJjZVJvb3QgPSB1dGlsLmdldEFyZyhhQXJncywgJ3NvdXJjZVJvb3QnLCBudWxsKTtcbiAgICB0aGlzLl9za2lwVmFsaWRhdGlvbiA9IHV0aWwuZ2V0QXJnKGFBcmdzLCAnc2tpcFZhbGlkYXRpb24nLCBmYWxzZSk7XG4gICAgdGhpcy5fc291cmNlcyA9IG5ldyBBcnJheVNldCgpO1xuICAgIHRoaXMuX25hbWVzID0gbmV3IEFycmF5U2V0KCk7XG4gICAgdGhpcy5fbWFwcGluZ3MgPSBuZXcgTWFwcGluZ0xpc3QoKTtcbiAgICB0aGlzLl9zb3VyY2VzQ29udGVudHMgPSBudWxsO1xuICB9XG5cbiAgU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS5fdmVyc2lvbiA9IDM7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgU291cmNlTWFwR2VuZXJhdG9yIGJhc2VkIG9uIGEgU291cmNlTWFwQ29uc3VtZXJcbiAgICpcbiAgICogQHBhcmFtIGFTb3VyY2VNYXBDb25zdW1lciBUaGUgU291cmNlTWFwLlxuICAgKi9cbiAgU291cmNlTWFwR2VuZXJhdG9yLmZyb21Tb3VyY2VNYXAgPVxuICAgIGZ1bmN0aW9uIFNvdXJjZU1hcEdlbmVyYXRvcl9mcm9tU291cmNlTWFwKGFTb3VyY2VNYXBDb25zdW1lcikge1xuICAgICAgdmFyIHNvdXJjZVJvb3QgPSBhU291cmNlTWFwQ29uc3VtZXIuc291cmNlUm9vdDtcbiAgICAgIHZhciBnZW5lcmF0b3IgPSBuZXcgU291cmNlTWFwR2VuZXJhdG9yKHtcbiAgICAgICAgZmlsZTogYVNvdXJjZU1hcENvbnN1bWVyLmZpbGUsXG4gICAgICAgIHNvdXJjZVJvb3Q6IHNvdXJjZVJvb3RcbiAgICAgIH0pO1xuICAgICAgYVNvdXJjZU1hcENvbnN1bWVyLmVhY2hNYXBwaW5nKGZ1bmN0aW9uIChtYXBwaW5nKSB7XG4gICAgICAgIHZhciBuZXdNYXBwaW5nID0ge1xuICAgICAgICAgIGdlbmVyYXRlZDoge1xuICAgICAgICAgICAgbGluZTogbWFwcGluZy5nZW5lcmF0ZWRMaW5lLFxuICAgICAgICAgICAgY29sdW1uOiBtYXBwaW5nLmdlbmVyYXRlZENvbHVtblxuICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICBpZiAobWFwcGluZy5zb3VyY2UgIT0gbnVsbCkge1xuICAgICAgICAgIG5ld01hcHBpbmcuc291cmNlID0gbWFwcGluZy5zb3VyY2U7XG4gICAgICAgICAgaWYgKHNvdXJjZVJvb3QgIT0gbnVsbCkge1xuICAgICAgICAgICAgbmV3TWFwcGluZy5zb3VyY2UgPSB1dGlsLnJlbGF0aXZlKHNvdXJjZVJvb3QsIG5ld01hcHBpbmcuc291cmNlKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBuZXdNYXBwaW5nLm9yaWdpbmFsID0ge1xuICAgICAgICAgICAgbGluZTogbWFwcGluZy5vcmlnaW5hbExpbmUsXG4gICAgICAgICAgICBjb2x1bW46IG1hcHBpbmcub3JpZ2luYWxDb2x1bW5cbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgaWYgKG1hcHBpbmcubmFtZSAhPSBudWxsKSB7XG4gICAgICAgICAgICBuZXdNYXBwaW5nLm5hbWUgPSBtYXBwaW5nLm5hbWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgZ2VuZXJhdG9yLmFkZE1hcHBpbmcobmV3TWFwcGluZyk7XG4gICAgICB9KTtcbiAgICAgIGFTb3VyY2VNYXBDb25zdW1lci5zb3VyY2VzLmZvckVhY2goZnVuY3Rpb24gKHNvdXJjZUZpbGUpIHtcbiAgICAgICAgdmFyIGNvbnRlbnQgPSBhU291cmNlTWFwQ29uc3VtZXIuc291cmNlQ29udGVudEZvcihzb3VyY2VGaWxlKTtcbiAgICAgICAgaWYgKGNvbnRlbnQgIT0gbnVsbCkge1xuICAgICAgICAgIGdlbmVyYXRvci5zZXRTb3VyY2VDb250ZW50KHNvdXJjZUZpbGUsIGNvbnRlbnQpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBnZW5lcmF0b3I7XG4gICAgfTtcblxuICAvKipcbiAgICogQWRkIGEgc2luZ2xlIG1hcHBpbmcgZnJvbSBvcmlnaW5hbCBzb3VyY2UgbGluZSBhbmQgY29sdW1uIHRvIHRoZSBnZW5lcmF0ZWRcbiAgICogc291cmNlJ3MgbGluZSBhbmQgY29sdW1uIGZvciB0aGlzIHNvdXJjZSBtYXAgYmVpbmcgY3JlYXRlZC4gVGhlIG1hcHBpbmdcbiAgICogb2JqZWN0IHNob3VsZCBoYXZlIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAgICpcbiAgICogICAtIGdlbmVyYXRlZDogQW4gb2JqZWN0IHdpdGggdGhlIGdlbmVyYXRlZCBsaW5lIGFuZCBjb2x1bW4gcG9zaXRpb25zLlxuICAgKiAgIC0gb3JpZ2luYWw6IEFuIG9iamVjdCB3aXRoIHRoZSBvcmlnaW5hbCBsaW5lIGFuZCBjb2x1bW4gcG9zaXRpb25zLlxuICAgKiAgIC0gc291cmNlOiBUaGUgb3JpZ2luYWwgc291cmNlIGZpbGUgKHJlbGF0aXZlIHRvIHRoZSBzb3VyY2VSb290KS5cbiAgICogICAtIG5hbWU6IEFuIG9wdGlvbmFsIG9yaWdpbmFsIHRva2VuIG5hbWUgZm9yIHRoaXMgbWFwcGluZy5cbiAgICovXG4gIFNvdXJjZU1hcEdlbmVyYXRvci5wcm90b3R5cGUuYWRkTWFwcGluZyA9XG4gICAgZnVuY3Rpb24gU291cmNlTWFwR2VuZXJhdG9yX2FkZE1hcHBpbmcoYUFyZ3MpIHtcbiAgICAgIHZhciBnZW5lcmF0ZWQgPSB1dGlsLmdldEFyZyhhQXJncywgJ2dlbmVyYXRlZCcpO1xuICAgICAgdmFyIG9yaWdpbmFsID0gdXRpbC5nZXRBcmcoYUFyZ3MsICdvcmlnaW5hbCcsIG51bGwpO1xuICAgICAgdmFyIHNvdXJjZSA9IHV0aWwuZ2V0QXJnKGFBcmdzLCAnc291cmNlJywgbnVsbCk7XG4gICAgICB2YXIgbmFtZSA9IHV0aWwuZ2V0QXJnKGFBcmdzLCAnbmFtZScsIG51bGwpO1xuXG4gICAgICBpZiAoIXRoaXMuX3NraXBWYWxpZGF0aW9uKSB7XG4gICAgICAgIHRoaXMuX3ZhbGlkYXRlTWFwcGluZyhnZW5lcmF0ZWQsIG9yaWdpbmFsLCBzb3VyY2UsIG5hbWUpO1xuICAgICAgfVxuXG4gICAgICBpZiAoc291cmNlICE9IG51bGwgJiYgIXRoaXMuX3NvdXJjZXMuaGFzKHNvdXJjZSkpIHtcbiAgICAgICAgdGhpcy5fc291cmNlcy5hZGQoc291cmNlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG5hbWUgIT0gbnVsbCAmJiAhdGhpcy5fbmFtZXMuaGFzKG5hbWUpKSB7XG4gICAgICAgIHRoaXMuX25hbWVzLmFkZChuYW1lKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fbWFwcGluZ3MuYWRkKHtcbiAgICAgICAgZ2VuZXJhdGVkTGluZTogZ2VuZXJhdGVkLmxpbmUsXG4gICAgICAgIGdlbmVyYXRlZENvbHVtbjogZ2VuZXJhdGVkLmNvbHVtbixcbiAgICAgICAgb3JpZ2luYWxMaW5lOiBvcmlnaW5hbCAhPSBudWxsICYmIG9yaWdpbmFsLmxpbmUsXG4gICAgICAgIG9yaWdpbmFsQ29sdW1uOiBvcmlnaW5hbCAhPSBudWxsICYmIG9yaWdpbmFsLmNvbHVtbixcbiAgICAgICAgc291cmNlOiBzb3VyY2UsXG4gICAgICAgIG5hbWU6IG5hbWVcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgc291cmNlIGNvbnRlbnQgZm9yIGEgc291cmNlIGZpbGUuXG4gICAqL1xuICBTb3VyY2VNYXBHZW5lcmF0b3IucHJvdG90eXBlLnNldFNvdXJjZUNvbnRlbnQgPVxuICAgIGZ1bmN0aW9uIFNvdXJjZU1hcEdlbmVyYXRvcl9zZXRTb3VyY2VDb250ZW50KGFTb3VyY2VGaWxlLCBhU291cmNlQ29udGVudCkge1xuICAgICAgdmFyIHNvdXJjZSA9IGFTb3VyY2VGaWxlO1xuICAgICAgaWYgKHRoaXMuX3NvdXJjZVJvb3QgIT0gbnVsbCkge1xuICAgICAgICBzb3VyY2UgPSB1dGlsLnJlbGF0aXZlKHRoaXMuX3NvdXJjZVJvb3QsIHNvdXJjZSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChhU291cmNlQ29udGVudCAhPSBudWxsKSB7XG4gICAgICAgIC8vIEFkZCB0aGUgc291cmNlIGNvbnRlbnQgdG8gdGhlIF9zb3VyY2VzQ29udGVudHMgbWFwLlxuICAgICAgICAvLyBDcmVhdGUgYSBuZXcgX3NvdXJjZXNDb250ZW50cyBtYXAgaWYgdGhlIHByb3BlcnR5IGlzIG51bGwuXG4gICAgICAgIGlmICghdGhpcy5fc291cmNlc0NvbnRlbnRzKSB7XG4gICAgICAgICAgdGhpcy5fc291cmNlc0NvbnRlbnRzID0ge307XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fc291cmNlc0NvbnRlbnRzW3V0aWwudG9TZXRTdHJpbmcoc291cmNlKV0gPSBhU291cmNlQ29udGVudDtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5fc291cmNlc0NvbnRlbnRzKSB7XG4gICAgICAgIC8vIFJlbW92ZSB0aGUgc291cmNlIGZpbGUgZnJvbSB0aGUgX3NvdXJjZXNDb250ZW50cyBtYXAuXG4gICAgICAgIC8vIElmIHRoZSBfc291cmNlc0NvbnRlbnRzIG1hcCBpcyBlbXB0eSwgc2V0IHRoZSBwcm9wZXJ0eSB0byBudWxsLlxuICAgICAgICBkZWxldGUgdGhpcy5fc291cmNlc0NvbnRlbnRzW3V0aWwudG9TZXRTdHJpbmcoc291cmNlKV07XG4gICAgICAgIGlmIChPYmplY3Qua2V5cyh0aGlzLl9zb3VyY2VzQ29udGVudHMpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHRoaXMuX3NvdXJjZXNDb250ZW50cyA9IG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuXG4gIC8qKlxuICAgKiBBcHBsaWVzIHRoZSBtYXBwaW5ncyBvZiBhIHN1Yi1zb3VyY2UtbWFwIGZvciBhIHNwZWNpZmljIHNvdXJjZSBmaWxlIHRvIHRoZVxuICAgKiBzb3VyY2UgbWFwIGJlaW5nIGdlbmVyYXRlZC4gRWFjaCBtYXBwaW5nIHRvIHRoZSBzdXBwbGllZCBzb3VyY2UgZmlsZSBpc1xuICAgKiByZXdyaXR0ZW4gdXNpbmcgdGhlIHN1cHBsaWVkIHNvdXJjZSBtYXAuIE5vdGU6IFRoZSByZXNvbHV0aW9uIGZvciB0aGVcbiAgICogcmVzdWx0aW5nIG1hcHBpbmdzIGlzIHRoZSBtaW5pbWl1bSBvZiB0aGlzIG1hcCBhbmQgdGhlIHN1cHBsaWVkIG1hcC5cbiAgICpcbiAgICogQHBhcmFtIGFTb3VyY2VNYXBDb25zdW1lciBUaGUgc291cmNlIG1hcCB0byBiZSBhcHBsaWVkLlxuICAgKiBAcGFyYW0gYVNvdXJjZUZpbGUgT3B0aW9uYWwuIFRoZSBmaWxlbmFtZSBvZiB0aGUgc291cmNlIGZpbGUuXG4gICAqICAgICAgICBJZiBvbWl0dGVkLCBTb3VyY2VNYXBDb25zdW1lcidzIGZpbGUgcHJvcGVydHkgd2lsbCBiZSB1c2VkLlxuICAgKiBAcGFyYW0gYVNvdXJjZU1hcFBhdGggT3B0aW9uYWwuIFRoZSBkaXJuYW1lIG9mIHRoZSBwYXRoIHRvIHRoZSBzb3VyY2UgbWFwXG4gICAqICAgICAgICB0byBiZSBhcHBsaWVkLiBJZiByZWxhdGl2ZSwgaXQgaXMgcmVsYXRpdmUgdG8gdGhlIFNvdXJjZU1hcENvbnN1bWVyLlxuICAgKiAgICAgICAgVGhpcyBwYXJhbWV0ZXIgaXMgbmVlZGVkIHdoZW4gdGhlIHR3byBzb3VyY2UgbWFwcyBhcmVuJ3QgaW4gdGhlIHNhbWVcbiAgICogICAgICAgIGRpcmVjdG9yeSwgYW5kIHRoZSBzb3VyY2UgbWFwIHRvIGJlIGFwcGxpZWQgY29udGFpbnMgcmVsYXRpdmUgc291cmNlXG4gICAqICAgICAgICBwYXRocy4gSWYgc28sIHRob3NlIHJlbGF0aXZlIHNvdXJjZSBwYXRocyBuZWVkIHRvIGJlIHJld3JpdHRlblxuICAgKiAgICAgICAgcmVsYXRpdmUgdG8gdGhlIFNvdXJjZU1hcEdlbmVyYXRvci5cbiAgICovXG4gIFNvdXJjZU1hcEdlbmVyYXRvci5wcm90b3R5cGUuYXBwbHlTb3VyY2VNYXAgPVxuICAgIGZ1bmN0aW9uIFNvdXJjZU1hcEdlbmVyYXRvcl9hcHBseVNvdXJjZU1hcChhU291cmNlTWFwQ29uc3VtZXIsIGFTb3VyY2VGaWxlLCBhU291cmNlTWFwUGF0aCkge1xuICAgICAgdmFyIHNvdXJjZUZpbGUgPSBhU291cmNlRmlsZTtcbiAgICAgIC8vIElmIGFTb3VyY2VGaWxlIGlzIG9taXR0ZWQsIHdlIHdpbGwgdXNlIHRoZSBmaWxlIHByb3BlcnR5IG9mIHRoZSBTb3VyY2VNYXBcbiAgICAgIGlmIChhU291cmNlRmlsZSA9PSBudWxsKSB7XG4gICAgICAgIGlmIChhU291cmNlTWFwQ29uc3VtZXIuZmlsZSA9PSBudWxsKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgJ1NvdXJjZU1hcEdlbmVyYXRvci5wcm90b3R5cGUuYXBwbHlTb3VyY2VNYXAgcmVxdWlyZXMgZWl0aGVyIGFuIGV4cGxpY2l0IHNvdXJjZSBmaWxlLCAnICtcbiAgICAgICAgICAgICdvciB0aGUgc291cmNlIG1hcFxcJ3MgXCJmaWxlXCIgcHJvcGVydHkuIEJvdGggd2VyZSBvbWl0dGVkLidcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHNvdXJjZUZpbGUgPSBhU291cmNlTWFwQ29uc3VtZXIuZmlsZTtcbiAgICAgIH1cbiAgICAgIHZhciBzb3VyY2VSb290ID0gdGhpcy5fc291cmNlUm9vdDtcbiAgICAgIC8vIE1ha2UgXCJzb3VyY2VGaWxlXCIgcmVsYXRpdmUgaWYgYW4gYWJzb2x1dGUgVXJsIGlzIHBhc3NlZC5cbiAgICAgIGlmIChzb3VyY2VSb290ICE9IG51bGwpIHtcbiAgICAgICAgc291cmNlRmlsZSA9IHV0aWwucmVsYXRpdmUoc291cmNlUm9vdCwgc291cmNlRmlsZSk7XG4gICAgICB9XG4gICAgICAvLyBBcHBseWluZyB0aGUgU291cmNlTWFwIGNhbiBhZGQgYW5kIHJlbW92ZSBpdGVtcyBmcm9tIHRoZSBzb3VyY2VzIGFuZFxuICAgICAgLy8gdGhlIG5hbWVzIGFycmF5LlxuICAgICAgdmFyIG5ld1NvdXJjZXMgPSBuZXcgQXJyYXlTZXQoKTtcbiAgICAgIHZhciBuZXdOYW1lcyA9IG5ldyBBcnJheVNldCgpO1xuXG4gICAgICAvLyBGaW5kIG1hcHBpbmdzIGZvciB0aGUgXCJzb3VyY2VGaWxlXCJcbiAgICAgIHRoaXMuX21hcHBpbmdzLnVuc29ydGVkRm9yRWFjaChmdW5jdGlvbiAobWFwcGluZykge1xuICAgICAgICBpZiAobWFwcGluZy5zb3VyY2UgPT09IHNvdXJjZUZpbGUgJiYgbWFwcGluZy5vcmlnaW5hbExpbmUgIT0gbnVsbCkge1xuICAgICAgICAgIC8vIENoZWNrIGlmIGl0IGNhbiBiZSBtYXBwZWQgYnkgdGhlIHNvdXJjZSBtYXAsIHRoZW4gdXBkYXRlIHRoZSBtYXBwaW5nLlxuICAgICAgICAgIHZhciBvcmlnaW5hbCA9IGFTb3VyY2VNYXBDb25zdW1lci5vcmlnaW5hbFBvc2l0aW9uRm9yKHtcbiAgICAgICAgICAgIGxpbmU6IG1hcHBpbmcub3JpZ2luYWxMaW5lLFxuICAgICAgICAgICAgY29sdW1uOiBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaWYgKG9yaWdpbmFsLnNvdXJjZSAhPSBudWxsKSB7XG4gICAgICAgICAgICAvLyBDb3B5IG1hcHBpbmdcbiAgICAgICAgICAgIG1hcHBpbmcuc291cmNlID0gb3JpZ2luYWwuc291cmNlO1xuICAgICAgICAgICAgaWYgKGFTb3VyY2VNYXBQYXRoICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgbWFwcGluZy5zb3VyY2UgPSB1dGlsLmpvaW4oYVNvdXJjZU1hcFBhdGgsIG1hcHBpbmcuc291cmNlKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHNvdXJjZVJvb3QgIT0gbnVsbCkge1xuICAgICAgICAgICAgICBtYXBwaW5nLnNvdXJjZSA9IHV0aWwucmVsYXRpdmUoc291cmNlUm9vdCwgbWFwcGluZy5zb3VyY2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbWFwcGluZy5vcmlnaW5hbExpbmUgPSBvcmlnaW5hbC5saW5lO1xuICAgICAgICAgICAgbWFwcGluZy5vcmlnaW5hbENvbHVtbiA9IG9yaWdpbmFsLmNvbHVtbjtcbiAgICAgICAgICAgIGlmIChvcmlnaW5hbC5uYW1lICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgbWFwcGluZy5uYW1lID0gb3JpZ2luYWwubmFtZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgc291cmNlID0gbWFwcGluZy5zb3VyY2U7XG4gICAgICAgIGlmIChzb3VyY2UgIT0gbnVsbCAmJiAhbmV3U291cmNlcy5oYXMoc291cmNlKSkge1xuICAgICAgICAgIG5ld1NvdXJjZXMuYWRkKHNvdXJjZSk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgbmFtZSA9IG1hcHBpbmcubmFtZTtcbiAgICAgICAgaWYgKG5hbWUgIT0gbnVsbCAmJiAhbmV3TmFtZXMuaGFzKG5hbWUpKSB7XG4gICAgICAgICAgbmV3TmFtZXMuYWRkKG5hbWUpO1xuICAgICAgICB9XG5cbiAgICAgIH0sIHRoaXMpO1xuICAgICAgdGhpcy5fc291cmNlcyA9IG5ld1NvdXJjZXM7XG4gICAgICB0aGlzLl9uYW1lcyA9IG5ld05hbWVzO1xuXG4gICAgICAvLyBDb3B5IHNvdXJjZXNDb250ZW50cyBvZiBhcHBsaWVkIG1hcC5cbiAgICAgIGFTb3VyY2VNYXBDb25zdW1lci5zb3VyY2VzLmZvckVhY2goZnVuY3Rpb24gKHNvdXJjZUZpbGUpIHtcbiAgICAgICAgdmFyIGNvbnRlbnQgPSBhU291cmNlTWFwQ29uc3VtZXIuc291cmNlQ29udGVudEZvcihzb3VyY2VGaWxlKTtcbiAgICAgICAgaWYgKGNvbnRlbnQgIT0gbnVsbCkge1xuICAgICAgICAgIGlmIChhU291cmNlTWFwUGF0aCAhPSBudWxsKSB7XG4gICAgICAgICAgICBzb3VyY2VGaWxlID0gdXRpbC5qb2luKGFTb3VyY2VNYXBQYXRoLCBzb3VyY2VGaWxlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHNvdXJjZVJvb3QgIT0gbnVsbCkge1xuICAgICAgICAgICAgc291cmNlRmlsZSA9IHV0aWwucmVsYXRpdmUoc291cmNlUm9vdCwgc291cmNlRmlsZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuc2V0U291cmNlQ29udGVudChzb3VyY2VGaWxlLCBjb250ZW50KTtcbiAgICAgICAgfVxuICAgICAgfSwgdGhpcyk7XG4gICAgfTtcblxuICAvKipcbiAgICogQSBtYXBwaW5nIGNhbiBoYXZlIG9uZSBvZiB0aGUgdGhyZWUgbGV2ZWxzIG9mIGRhdGE6XG4gICAqXG4gICAqICAgMS4gSnVzdCB0aGUgZ2VuZXJhdGVkIHBvc2l0aW9uLlxuICAgKiAgIDIuIFRoZSBHZW5lcmF0ZWQgcG9zaXRpb24sIG9yaWdpbmFsIHBvc2l0aW9uLCBhbmQgb3JpZ2luYWwgc291cmNlLlxuICAgKiAgIDMuIEdlbmVyYXRlZCBhbmQgb3JpZ2luYWwgcG9zaXRpb24sIG9yaWdpbmFsIHNvdXJjZSwgYXMgd2VsbCBhcyBhIG5hbWVcbiAgICogICAgICB0b2tlbi5cbiAgICpcbiAgICogVG8gbWFpbnRhaW4gY29uc2lzdGVuY3ksIHdlIHZhbGlkYXRlIHRoYXQgYW55IG5ldyBtYXBwaW5nIGJlaW5nIGFkZGVkIGZhbGxzXG4gICAqIGluIHRvIG9uZSBvZiB0aGVzZSBjYXRlZ29yaWVzLlxuICAgKi9cbiAgU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS5fdmFsaWRhdGVNYXBwaW5nID1cbiAgICBmdW5jdGlvbiBTb3VyY2VNYXBHZW5lcmF0b3JfdmFsaWRhdGVNYXBwaW5nKGFHZW5lcmF0ZWQsIGFPcmlnaW5hbCwgYVNvdXJjZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFOYW1lKSB7XG4gICAgICBpZiAoYUdlbmVyYXRlZCAmJiAnbGluZScgaW4gYUdlbmVyYXRlZCAmJiAnY29sdW1uJyBpbiBhR2VuZXJhdGVkXG4gICAgICAgICAgJiYgYUdlbmVyYXRlZC5saW5lID4gMCAmJiBhR2VuZXJhdGVkLmNvbHVtbiA+PSAwXG4gICAgICAgICAgJiYgIWFPcmlnaW5hbCAmJiAhYVNvdXJjZSAmJiAhYU5hbWUpIHtcbiAgICAgICAgLy8gQ2FzZSAxLlxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBlbHNlIGlmIChhR2VuZXJhdGVkICYmICdsaW5lJyBpbiBhR2VuZXJhdGVkICYmICdjb2x1bW4nIGluIGFHZW5lcmF0ZWRcbiAgICAgICAgICAgICAgICYmIGFPcmlnaW5hbCAmJiAnbGluZScgaW4gYU9yaWdpbmFsICYmICdjb2x1bW4nIGluIGFPcmlnaW5hbFxuICAgICAgICAgICAgICAgJiYgYUdlbmVyYXRlZC5saW5lID4gMCAmJiBhR2VuZXJhdGVkLmNvbHVtbiA+PSAwXG4gICAgICAgICAgICAgICAmJiBhT3JpZ2luYWwubGluZSA+IDAgJiYgYU9yaWdpbmFsLmNvbHVtbiA+PSAwXG4gICAgICAgICAgICAgICAmJiBhU291cmNlKSB7XG4gICAgICAgIC8vIENhc2VzIDIgYW5kIDMuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgbWFwcGluZzogJyArIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICBnZW5lcmF0ZWQ6IGFHZW5lcmF0ZWQsXG4gICAgICAgICAgc291cmNlOiBhU291cmNlLFxuICAgICAgICAgIG9yaWdpbmFsOiBhT3JpZ2luYWwsXG4gICAgICAgICAgbmFtZTogYU5hbWVcbiAgICAgICAgfSkpO1xuICAgICAgfVxuICAgIH07XG5cbiAgLyoqXG4gICAqIFNlcmlhbGl6ZSB0aGUgYWNjdW11bGF0ZWQgbWFwcGluZ3MgaW4gdG8gdGhlIHN0cmVhbSBvZiBiYXNlIDY0IFZMUXNcbiAgICogc3BlY2lmaWVkIGJ5IHRoZSBzb3VyY2UgbWFwIGZvcm1hdC5cbiAgICovXG4gIFNvdXJjZU1hcEdlbmVyYXRvci5wcm90b3R5cGUuX3NlcmlhbGl6ZU1hcHBpbmdzID1cbiAgICBmdW5jdGlvbiBTb3VyY2VNYXBHZW5lcmF0b3Jfc2VyaWFsaXplTWFwcGluZ3MoKSB7XG4gICAgICB2YXIgcHJldmlvdXNHZW5lcmF0ZWRDb2x1bW4gPSAwO1xuICAgICAgdmFyIHByZXZpb3VzR2VuZXJhdGVkTGluZSA9IDE7XG4gICAgICB2YXIgcHJldmlvdXNPcmlnaW5hbENvbHVtbiA9IDA7XG4gICAgICB2YXIgcHJldmlvdXNPcmlnaW5hbExpbmUgPSAwO1xuICAgICAgdmFyIHByZXZpb3VzTmFtZSA9IDA7XG4gICAgICB2YXIgcHJldmlvdXNTb3VyY2UgPSAwO1xuICAgICAgdmFyIHJlc3VsdCA9ICcnO1xuICAgICAgdmFyIG1hcHBpbmc7XG4gICAgICB2YXIgbmFtZUlkeDtcbiAgICAgIHZhciBzb3VyY2VJZHg7XG5cbiAgICAgIHZhciBtYXBwaW5ncyA9IHRoaXMuX21hcHBpbmdzLnRvQXJyYXkoKTtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBtYXBwaW5ncy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgICBtYXBwaW5nID0gbWFwcGluZ3NbaV07XG5cbiAgICAgICAgaWYgKG1hcHBpbmcuZ2VuZXJhdGVkTGluZSAhPT0gcHJldmlvdXNHZW5lcmF0ZWRMaW5lKSB7XG4gICAgICAgICAgcHJldmlvdXNHZW5lcmF0ZWRDb2x1bW4gPSAwO1xuICAgICAgICAgIHdoaWxlIChtYXBwaW5nLmdlbmVyYXRlZExpbmUgIT09IHByZXZpb3VzR2VuZXJhdGVkTGluZSkge1xuICAgICAgICAgICAgcmVzdWx0ICs9ICc7JztcbiAgICAgICAgICAgIHByZXZpb3VzR2VuZXJhdGVkTGluZSsrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBpZiAoaSA+IDApIHtcbiAgICAgICAgICAgIGlmICghdXRpbC5jb21wYXJlQnlHZW5lcmF0ZWRQb3NpdGlvbnNJbmZsYXRlZChtYXBwaW5nLCBtYXBwaW5nc1tpIC0gMV0pKSB7XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzdWx0ICs9ICcsJztcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXN1bHQgKz0gYmFzZTY0VkxRLmVuY29kZShtYXBwaW5nLmdlbmVyYXRlZENvbHVtblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIHByZXZpb3VzR2VuZXJhdGVkQ29sdW1uKTtcbiAgICAgICAgcHJldmlvdXNHZW5lcmF0ZWRDb2x1bW4gPSBtYXBwaW5nLmdlbmVyYXRlZENvbHVtbjtcblxuICAgICAgICBpZiAobWFwcGluZy5zb3VyY2UgIT0gbnVsbCkge1xuICAgICAgICAgIHNvdXJjZUlkeCA9IHRoaXMuX3NvdXJjZXMuaW5kZXhPZihtYXBwaW5nLnNvdXJjZSk7XG4gICAgICAgICAgcmVzdWx0ICs9IGJhc2U2NFZMUS5lbmNvZGUoc291cmNlSWR4IC0gcHJldmlvdXNTb3VyY2UpO1xuICAgICAgICAgIHByZXZpb3VzU291cmNlID0gc291cmNlSWR4O1xuXG4gICAgICAgICAgLy8gbGluZXMgYXJlIHN0b3JlZCAwLWJhc2VkIGluIFNvdXJjZU1hcCBzcGVjIHZlcnNpb24gM1xuICAgICAgICAgIHJlc3VsdCArPSBiYXNlNjRWTFEuZW5jb2RlKG1hcHBpbmcub3JpZ2luYWxMaW5lIC0gMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gcHJldmlvdXNPcmlnaW5hbExpbmUpO1xuICAgICAgICAgIHByZXZpb3VzT3JpZ2luYWxMaW5lID0gbWFwcGluZy5vcmlnaW5hbExpbmUgLSAxO1xuXG4gICAgICAgICAgcmVzdWx0ICs9IGJhc2U2NFZMUS5lbmNvZGUobWFwcGluZy5vcmlnaW5hbENvbHVtblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gcHJldmlvdXNPcmlnaW5hbENvbHVtbik7XG4gICAgICAgICAgcHJldmlvdXNPcmlnaW5hbENvbHVtbiA9IG1hcHBpbmcub3JpZ2luYWxDb2x1bW47XG5cbiAgICAgICAgICBpZiAobWFwcGluZy5uYW1lICE9IG51bGwpIHtcbiAgICAgICAgICAgIG5hbWVJZHggPSB0aGlzLl9uYW1lcy5pbmRleE9mKG1hcHBpbmcubmFtZSk7XG4gICAgICAgICAgICByZXN1bHQgKz0gYmFzZTY0VkxRLmVuY29kZShuYW1lSWR4IC0gcHJldmlvdXNOYW1lKTtcbiAgICAgICAgICAgIHByZXZpb3VzTmFtZSA9IG5hbWVJZHg7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfTtcblxuICBTb3VyY2VNYXBHZW5lcmF0b3IucHJvdG90eXBlLl9nZW5lcmF0ZVNvdXJjZXNDb250ZW50ID1cbiAgICBmdW5jdGlvbiBTb3VyY2VNYXBHZW5lcmF0b3JfZ2VuZXJhdGVTb3VyY2VzQ29udGVudChhU291cmNlcywgYVNvdXJjZVJvb3QpIHtcbiAgICAgIHJldHVybiBhU291cmNlcy5tYXAoZnVuY3Rpb24gKHNvdXJjZSkge1xuICAgICAgICBpZiAoIXRoaXMuX3NvdXJjZXNDb250ZW50cykge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhU291cmNlUm9vdCAhPSBudWxsKSB7XG4gICAgICAgICAgc291cmNlID0gdXRpbC5yZWxhdGl2ZShhU291cmNlUm9vdCwgc291cmNlKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIga2V5ID0gdXRpbC50b1NldFN0cmluZyhzb3VyY2UpO1xuICAgICAgICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMuX3NvdXJjZXNDb250ZW50cyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXkpXG4gICAgICAgICAgPyB0aGlzLl9zb3VyY2VzQ29udGVudHNba2V5XVxuICAgICAgICAgIDogbnVsbDtcbiAgICAgIH0sIHRoaXMpO1xuICAgIH07XG5cbiAgLyoqXG4gICAqIEV4dGVybmFsaXplIHRoZSBzb3VyY2UgbWFwLlxuICAgKi9cbiAgU291cmNlTWFwR2VuZXJhdG9yLnByb3RvdHlwZS50b0pTT04gPVxuICAgIGZ1bmN0aW9uIFNvdXJjZU1hcEdlbmVyYXRvcl90b0pTT04oKSB7XG4gICAgICB2YXIgbWFwID0ge1xuICAgICAgICB2ZXJzaW9uOiB0aGlzLl92ZXJzaW9uLFxuICAgICAgICBzb3VyY2VzOiB0aGlzLl9zb3VyY2VzLnRvQXJyYXkoKSxcbiAgICAgICAgbmFtZXM6IHRoaXMuX25hbWVzLnRvQXJyYXkoKSxcbiAgICAgICAgbWFwcGluZ3M6IHRoaXMuX3NlcmlhbGl6ZU1hcHBpbmdzKClcbiAgICAgIH07XG4gICAgICBpZiAodGhpcy5fZmlsZSAhPSBudWxsKSB7XG4gICAgICAgIG1hcC5maWxlID0gdGhpcy5fZmlsZTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLl9zb3VyY2VSb290ICE9IG51bGwpIHtcbiAgICAgICAgbWFwLnNvdXJjZVJvb3QgPSB0aGlzLl9zb3VyY2VSb290O1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuX3NvdXJjZXNDb250ZW50cykge1xuICAgICAgICBtYXAuc291cmNlc0NvbnRlbnQgPSB0aGlzLl9nZW5lcmF0ZVNvdXJjZXNDb250ZW50KG1hcC5zb3VyY2VzLCBtYXAuc291cmNlUm9vdCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBtYXA7XG4gICAgfTtcblxuICAvKipcbiAgICogUmVuZGVyIHRoZSBzb3VyY2UgbWFwIGJlaW5nIGdlbmVyYXRlZCB0byBhIHN0cmluZy5cbiAgICovXG4gIFNvdXJjZU1hcEdlbmVyYXRvci5wcm90b3R5cGUudG9TdHJpbmcgPVxuICAgIGZ1bmN0aW9uIFNvdXJjZU1hcEdlbmVyYXRvcl90b1N0cmluZygpIHtcbiAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh0aGlzLnRvSlNPTigpKTtcbiAgICB9O1xuXG4gIGV4cG9ydHMuU291cmNlTWFwR2VuZXJhdG9yID0gU291cmNlTWFwR2VuZXJhdG9yO1xufVxuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL2xpYi9zb3VyY2UtbWFwLWdlbmVyYXRvci5qc1xuICoqIG1vZHVsZSBpZCA9IDFcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qIC0qLSBNb2RlOiBqczsganMtaW5kZW50LWxldmVsOiAyOyAtKi0gKi9cbi8qXG4gKiBDb3B5cmlnaHQgMjAxMSBNb3ppbGxhIEZvdW5kYXRpb24gYW5kIGNvbnRyaWJ1dG9yc1xuICogTGljZW5zZWQgdW5kZXIgdGhlIE5ldyBCU0QgbGljZW5zZS4gU2VlIExJQ0VOU0Ugb3I6XG4gKiBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlXG4gKlxuICogQmFzZWQgb24gdGhlIEJhc2UgNjQgVkxRIGltcGxlbWVudGF0aW9uIGluIENsb3N1cmUgQ29tcGlsZXI6XG4gKiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2Nsb3N1cmUtY29tcGlsZXIvc291cmNlL2Jyb3dzZS90cnVuay9zcmMvY29tL2dvb2dsZS9kZWJ1Z2dpbmcvc291cmNlbWFwL0Jhc2U2NFZMUS5qYXZhXG4gKlxuICogQ29weXJpZ2h0IDIwMTEgVGhlIENsb3N1cmUgQ29tcGlsZXIgQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dFxuICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZVxuICogbWV0OlxuICpcbiAqICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0XG4gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuXG4gKiAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlXG4gKiAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZ1xuICogICAgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkXG4gKiAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uXG4gKiAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzXG4gKiAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWRcbiAqICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi5cbiAqXG4gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTXG4gKiBcIkFTIElTXCIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UXG4gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1JcbiAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUXG4gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCxcbiAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1RcbiAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLFxuICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZXG4gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUXG4gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0VcbiAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gKi9cbntcbiAgdmFyIGJhc2U2NCA9IHJlcXVpcmUoJy4vYmFzZTY0Jyk7XG5cbiAgLy8gQSBzaW5nbGUgYmFzZSA2NCBkaWdpdCBjYW4gY29udGFpbiA2IGJpdHMgb2YgZGF0YS4gRm9yIHRoZSBiYXNlIDY0IHZhcmlhYmxlXG4gIC8vIGxlbmd0aCBxdWFudGl0aWVzIHdlIHVzZSBpbiB0aGUgc291cmNlIG1hcCBzcGVjLCB0aGUgZmlyc3QgYml0IGlzIHRoZSBzaWduLFxuICAvLyB0aGUgbmV4dCBmb3VyIGJpdHMgYXJlIHRoZSBhY3R1YWwgdmFsdWUsIGFuZCB0aGUgNnRoIGJpdCBpcyB0aGVcbiAgLy8gY29udGludWF0aW9uIGJpdC4gVGhlIGNvbnRpbnVhdGlvbiBiaXQgdGVsbHMgdXMgd2hldGhlciB0aGVyZSBhcmUgbW9yZVxuICAvLyBkaWdpdHMgaW4gdGhpcyB2YWx1ZSBmb2xsb3dpbmcgdGhpcyBkaWdpdC5cbiAgLy9cbiAgLy8gICBDb250aW51YXRpb25cbiAgLy8gICB8ICAgIFNpZ25cbiAgLy8gICB8ICAgIHxcbiAgLy8gICBWICAgIFZcbiAgLy8gICAxMDEwMTFcblxuICB2YXIgVkxRX0JBU0VfU0hJRlQgPSA1O1xuXG4gIC8vIGJpbmFyeTogMTAwMDAwXG4gIHZhciBWTFFfQkFTRSA9IDEgPDwgVkxRX0JBU0VfU0hJRlQ7XG5cbiAgLy8gYmluYXJ5OiAwMTExMTFcbiAgdmFyIFZMUV9CQVNFX01BU0sgPSBWTFFfQkFTRSAtIDE7XG5cbiAgLy8gYmluYXJ5OiAxMDAwMDBcbiAgdmFyIFZMUV9DT05USU5VQVRJT05fQklUID0gVkxRX0JBU0U7XG5cbiAgLyoqXG4gICAqIENvbnZlcnRzIGZyb20gYSB0d28tY29tcGxlbWVudCB2YWx1ZSB0byBhIHZhbHVlIHdoZXJlIHRoZSBzaWduIGJpdCBpc1xuICAgKiBwbGFjZWQgaW4gdGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdC4gIEZvciBleGFtcGxlLCBhcyBkZWNpbWFsczpcbiAgICogICAxIGJlY29tZXMgMiAoMTAgYmluYXJ5KSwgLTEgYmVjb21lcyAzICgxMSBiaW5hcnkpXG4gICAqICAgMiBiZWNvbWVzIDQgKDEwMCBiaW5hcnkpLCAtMiBiZWNvbWVzIDUgKDEwMSBiaW5hcnkpXG4gICAqL1xuICBmdW5jdGlvbiB0b1ZMUVNpZ25lZChhVmFsdWUpIHtcbiAgICByZXR1cm4gYVZhbHVlIDwgMFxuICAgICAgPyAoKC1hVmFsdWUpIDw8IDEpICsgMVxuICAgICAgOiAoYVZhbHVlIDw8IDEpICsgMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0cyB0byBhIHR3by1jb21wbGVtZW50IHZhbHVlIGZyb20gYSB2YWx1ZSB3aGVyZSB0aGUgc2lnbiBiaXQgaXNcbiAgICogcGxhY2VkIGluIHRoZSBsZWFzdCBzaWduaWZpY2FudCBiaXQuICBGb3IgZXhhbXBsZSwgYXMgZGVjaW1hbHM6XG4gICAqICAgMiAoMTAgYmluYXJ5KSBiZWNvbWVzIDEsIDMgKDExIGJpbmFyeSkgYmVjb21lcyAtMVxuICAgKiAgIDQgKDEwMCBiaW5hcnkpIGJlY29tZXMgMiwgNSAoMTAxIGJpbmFyeSkgYmVjb21lcyAtMlxuICAgKi9cbiAgZnVuY3Rpb24gZnJvbVZMUVNpZ25lZChhVmFsdWUpIHtcbiAgICB2YXIgaXNOZWdhdGl2ZSA9IChhVmFsdWUgJiAxKSA9PT0gMTtcbiAgICB2YXIgc2hpZnRlZCA9IGFWYWx1ZSA+PiAxO1xuICAgIHJldHVybiBpc05lZ2F0aXZlXG4gICAgICA/IC1zaGlmdGVkXG4gICAgICA6IHNoaWZ0ZWQ7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgYmFzZSA2NCBWTFEgZW5jb2RlZCB2YWx1ZS5cbiAgICovXG4gIGV4cG9ydHMuZW5jb2RlID0gZnVuY3Rpb24gYmFzZTY0VkxRX2VuY29kZShhVmFsdWUpIHtcbiAgICB2YXIgZW5jb2RlZCA9IFwiXCI7XG4gICAgdmFyIGRpZ2l0O1xuXG4gICAgdmFyIHZscSA9IHRvVkxRU2lnbmVkKGFWYWx1ZSk7XG5cbiAgICBkbyB7XG4gICAgICBkaWdpdCA9IHZscSAmIFZMUV9CQVNFX01BU0s7XG4gICAgICB2bHEgPj4+PSBWTFFfQkFTRV9TSElGVDtcbiAgICAgIGlmICh2bHEgPiAwKSB7XG4gICAgICAgIC8vIFRoZXJlIGFyZSBzdGlsbCBtb3JlIGRpZ2l0cyBpbiB0aGlzIHZhbHVlLCBzbyB3ZSBtdXN0IG1ha2Ugc3VyZSB0aGVcbiAgICAgICAgLy8gY29udGludWF0aW9uIGJpdCBpcyBtYXJrZWQuXG4gICAgICAgIGRpZ2l0IHw9IFZMUV9DT05USU5VQVRJT05fQklUO1xuICAgICAgfVxuICAgICAgZW5jb2RlZCArPSBiYXNlNjQuZW5jb2RlKGRpZ2l0KTtcbiAgICB9IHdoaWxlICh2bHEgPiAwKTtcblxuICAgIHJldHVybiBlbmNvZGVkO1xuICB9O1xuXG4gIC8qKlxuICAgKiBEZWNvZGVzIHRoZSBuZXh0IGJhc2UgNjQgVkxRIHZhbHVlIGZyb20gdGhlIGdpdmVuIHN0cmluZyBhbmQgcmV0dXJucyB0aGVcbiAgICogdmFsdWUgYW5kIHRoZSByZXN0IG9mIHRoZSBzdHJpbmcgdmlhIHRoZSBvdXQgcGFyYW1ldGVyLlxuICAgKi9cbiAgZXhwb3J0cy5kZWNvZGUgPSBmdW5jdGlvbiBiYXNlNjRWTFFfZGVjb2RlKGFTdHIsIGFJbmRleCwgYU91dFBhcmFtKSB7XG4gICAgdmFyIHN0ckxlbiA9IGFTdHIubGVuZ3RoO1xuICAgIHZhciByZXN1bHQgPSAwO1xuICAgIHZhciBzaGlmdCA9IDA7XG4gICAgdmFyIGNvbnRpbnVhdGlvbiwgZGlnaXQ7XG5cbiAgICBkbyB7XG4gICAgICBpZiAoYUluZGV4ID49IHN0ckxlbikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJFeHBlY3RlZCBtb3JlIGRpZ2l0cyBpbiBiYXNlIDY0IFZMUSB2YWx1ZS5cIik7XG4gICAgICB9XG5cbiAgICAgIGRpZ2l0ID0gYmFzZTY0LmRlY29kZShhU3RyLmNoYXJDb2RlQXQoYUluZGV4KyspKTtcbiAgICAgIGlmIChkaWdpdCA9PT0gLTEpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSW52YWxpZCBiYXNlNjQgZGlnaXQ6IFwiICsgYVN0ci5jaGFyQXQoYUluZGV4IC0gMSkpO1xuICAgICAgfVxuXG4gICAgICBjb250aW51YXRpb24gPSAhIShkaWdpdCAmIFZMUV9DT05USU5VQVRJT05fQklUKTtcbiAgICAgIGRpZ2l0ICY9IFZMUV9CQVNFX01BU0s7XG4gICAgICByZXN1bHQgPSByZXN1bHQgKyAoZGlnaXQgPDwgc2hpZnQpO1xuICAgICAgc2hpZnQgKz0gVkxRX0JBU0VfU0hJRlQ7XG4gICAgfSB3aGlsZSAoY29udGludWF0aW9uKTtcblxuICAgIGFPdXRQYXJhbS52YWx1ZSA9IGZyb21WTFFTaWduZWQocmVzdWx0KTtcbiAgICBhT3V0UGFyYW0ucmVzdCA9IGFJbmRleDtcbiAgfTtcbn1cblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9saWIvYmFzZTY0LXZscS5qc1xuICoqIG1vZHVsZSBpZCA9IDJcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qIC0qLSBNb2RlOiBqczsganMtaW5kZW50LWxldmVsOiAyOyAtKi0gKi9cbi8qXG4gKiBDb3B5cmlnaHQgMjAxMSBNb3ppbGxhIEZvdW5kYXRpb24gYW5kIGNvbnRyaWJ1dG9yc1xuICogTGljZW5zZWQgdW5kZXIgdGhlIE5ldyBCU0QgbGljZW5zZS4gU2VlIExJQ0VOU0Ugb3I6XG4gKiBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlXG4gKi9cbntcbiAgdmFyIGludFRvQ2hhck1hcCA9ICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvJy5zcGxpdCgnJyk7XG5cbiAgLyoqXG4gICAqIEVuY29kZSBhbiBpbnRlZ2VyIGluIHRoZSByYW5nZSBvZiAwIHRvIDYzIHRvIGEgc2luZ2xlIGJhc2UgNjQgZGlnaXQuXG4gICAqL1xuICBleHBvcnRzLmVuY29kZSA9IGZ1bmN0aW9uIChudW1iZXIpIHtcbiAgICBpZiAoMCA8PSBudW1iZXIgJiYgbnVtYmVyIDwgaW50VG9DaGFyTWFwLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGludFRvQ2hhck1hcFtudW1iZXJdO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiTXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDYzOiBcIiArIG51bWJlcik7XG4gIH07XG5cbiAgLyoqXG4gICAqIERlY29kZSBhIHNpbmdsZSBiYXNlIDY0IGNoYXJhY3RlciBjb2RlIGRpZ2l0IHRvIGFuIGludGVnZXIuIFJldHVybnMgLTEgb25cbiAgICogZmFpbHVyZS5cbiAgICovXG4gIGV4cG9ydHMuZGVjb2RlID0gZnVuY3Rpb24gKGNoYXJDb2RlKSB7XG4gICAgdmFyIGJpZ0EgPSA2NTsgICAgIC8vICdBJ1xuICAgIHZhciBiaWdaID0gOTA7ICAgICAvLyAnWidcblxuICAgIHZhciBsaXR0bGVBID0gOTc7ICAvLyAnYSdcbiAgICB2YXIgbGl0dGxlWiA9IDEyMjsgLy8gJ3onXG5cbiAgICB2YXIgemVybyA9IDQ4OyAgICAgLy8gJzAnXG4gICAgdmFyIG5pbmUgPSA1NzsgICAgIC8vICc5J1xuXG4gICAgdmFyIHBsdXMgPSA0MzsgICAgIC8vICcrJ1xuICAgIHZhciBzbGFzaCA9IDQ3OyAgICAvLyAnLydcblxuICAgIHZhciBsaXR0bGVPZmZzZXQgPSAyNjtcbiAgICB2YXIgbnVtYmVyT2Zmc2V0ID0gNTI7XG5cbiAgICAvLyAwIC0gMjU6IEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaXG4gICAgaWYgKGJpZ0EgPD0gY2hhckNvZGUgJiYgY2hhckNvZGUgPD0gYmlnWikge1xuICAgICAgcmV0dXJuIChjaGFyQ29kZSAtIGJpZ0EpO1xuICAgIH1cblxuICAgIC8vIDI2IC0gNTE6IGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6XG4gICAgaWYgKGxpdHRsZUEgPD0gY2hhckNvZGUgJiYgY2hhckNvZGUgPD0gbGl0dGxlWikge1xuICAgICAgcmV0dXJuIChjaGFyQ29kZSAtIGxpdHRsZUEgKyBsaXR0bGVPZmZzZXQpO1xuICAgIH1cblxuICAgIC8vIDUyIC0gNjE6IDAxMjM0NTY3ODlcbiAgICBpZiAoemVybyA8PSBjaGFyQ29kZSAmJiBjaGFyQ29kZSA8PSBuaW5lKSB7XG4gICAgICByZXR1cm4gKGNoYXJDb2RlIC0gemVybyArIG51bWJlck9mZnNldCk7XG4gICAgfVxuXG4gICAgLy8gNjI6ICtcbiAgICBpZiAoY2hhckNvZGUgPT0gcGx1cykge1xuICAgICAgcmV0dXJuIDYyO1xuICAgIH1cblxuICAgIC8vIDYzOiAvXG4gICAgaWYgKGNoYXJDb2RlID09IHNsYXNoKSB7XG4gICAgICByZXR1cm4gNjM7XG4gICAgfVxuXG4gICAgLy8gSW52YWxpZCBiYXNlNjQgZGlnaXQuXG4gICAgcmV0dXJuIC0xO1xuICB9O1xufVxuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL2xpYi9iYXNlNjQuanNcbiAqKiBtb2R1bGUgaWQgPSAzXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKiAtKi0gTW9kZToganM7IGpzLWluZGVudC1sZXZlbDogMjsgLSotICovXG4vKlxuICogQ29weXJpZ2h0IDIwMTEgTW96aWxsYSBGb3VuZGF0aW9uIGFuZCBjb250cmlidXRvcnNcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIGxpY2Vuc2UuIFNlZSBMSUNFTlNFIG9yOlxuICogaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL0JTRC0zLUNsYXVzZVxuICovXG57XG4gIC8qKlxuICAgKiBUaGlzIGlzIGEgaGVscGVyIGZ1bmN0aW9uIGZvciBnZXR0aW5nIHZhbHVlcyBmcm9tIHBhcmFtZXRlci9vcHRpb25zXG4gICAqIG9iamVjdHMuXG4gICAqXG4gICAqIEBwYXJhbSBhcmdzIFRoZSBvYmplY3Qgd2UgYXJlIGV4dHJhY3RpbmcgdmFsdWVzIGZyb21cbiAgICogQHBhcmFtIG5hbWUgVGhlIG5hbWUgb2YgdGhlIHByb3BlcnR5IHdlIGFyZSBnZXR0aW5nLlxuICAgKiBAcGFyYW0gZGVmYXVsdFZhbHVlIEFuIG9wdGlvbmFsIHZhbHVlIHRvIHJldHVybiBpZiB0aGUgcHJvcGVydHkgaXMgbWlzc2luZ1xuICAgKiBmcm9tIHRoZSBvYmplY3QuIElmIHRoaXMgaXMgbm90IHNwZWNpZmllZCBhbmQgdGhlIHByb3BlcnR5IGlzIG1pc3NpbmcsIGFuXG4gICAqIGVycm9yIHdpbGwgYmUgdGhyb3duLlxuICAgKi9cbiAgZnVuY3Rpb24gZ2V0QXJnKGFBcmdzLCBhTmFtZSwgYURlZmF1bHRWYWx1ZSkge1xuICAgIGlmIChhTmFtZSBpbiBhQXJncykge1xuICAgICAgcmV0dXJuIGFBcmdzW2FOYW1lXTtcbiAgICB9IGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDMpIHtcbiAgICAgIHJldHVybiBhRGVmYXVsdFZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1wiJyArIGFOYW1lICsgJ1wiIGlzIGEgcmVxdWlyZWQgYXJndW1lbnQuJyk7XG4gICAgfVxuICB9XG4gIGV4cG9ydHMuZ2V0QXJnID0gZ2V0QXJnO1xuXG4gIHZhciB1cmxSZWdleHAgPSAvXig/OihbXFx3K1xcLS5dKyk6KT9cXC9cXC8oPzooXFx3KzpcXHcrKUApPyhbXFx3Ll0qKSg/OjooXFxkKykpPyhcXFMqKSQvO1xuICB2YXIgZGF0YVVybFJlZ2V4cCA9IC9eZGF0YTouK1xcLC4rJC87XG5cbiAgZnVuY3Rpb24gdXJsUGFyc2UoYVVybCkge1xuICAgIHZhciBtYXRjaCA9IGFVcmwubWF0Y2godXJsUmVnZXhwKTtcbiAgICBpZiAoIW1hdGNoKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHNjaGVtZTogbWF0Y2hbMV0sXG4gICAgICBhdXRoOiBtYXRjaFsyXSxcbiAgICAgIGhvc3Q6IG1hdGNoWzNdLFxuICAgICAgcG9ydDogbWF0Y2hbNF0sXG4gICAgICBwYXRoOiBtYXRjaFs1XVxuICAgIH07XG4gIH1cbiAgZXhwb3J0cy51cmxQYXJzZSA9IHVybFBhcnNlO1xuXG4gIGZ1bmN0aW9uIHVybEdlbmVyYXRlKGFQYXJzZWRVcmwpIHtcbiAgICB2YXIgdXJsID0gJyc7XG4gICAgaWYgKGFQYXJzZWRVcmwuc2NoZW1lKSB7XG4gICAgICB1cmwgKz0gYVBhcnNlZFVybC5zY2hlbWUgKyAnOic7XG4gICAgfVxuICAgIHVybCArPSAnLy8nO1xuICAgIGlmIChhUGFyc2VkVXJsLmF1dGgpIHtcbiAgICAgIHVybCArPSBhUGFyc2VkVXJsLmF1dGggKyAnQCc7XG4gICAgfVxuICAgIGlmIChhUGFyc2VkVXJsLmhvc3QpIHtcbiAgICAgIHVybCArPSBhUGFyc2VkVXJsLmhvc3Q7XG4gICAgfVxuICAgIGlmIChhUGFyc2VkVXJsLnBvcnQpIHtcbiAgICAgIHVybCArPSBcIjpcIiArIGFQYXJzZWRVcmwucG9ydFxuICAgIH1cbiAgICBpZiAoYVBhcnNlZFVybC5wYXRoKSB7XG4gICAgICB1cmwgKz0gYVBhcnNlZFVybC5wYXRoO1xuICAgIH1cbiAgICByZXR1cm4gdXJsO1xuICB9XG4gIGV4cG9ydHMudXJsR2VuZXJhdGUgPSB1cmxHZW5lcmF0ZTtcblxuICAvKipcbiAgICogTm9ybWFsaXplcyBhIHBhdGgsIG9yIHRoZSBwYXRoIHBvcnRpb24gb2YgYSBVUkw6XG4gICAqXG4gICAqIC0gUmVwbGFjZXMgY29uc2VxdXRpdmUgc2xhc2hlcyB3aXRoIG9uZSBzbGFzaC5cbiAgICogLSBSZW1vdmVzIHVubmVjZXNzYXJ5ICcuJyBwYXJ0cy5cbiAgICogLSBSZW1vdmVzIHVubmVjZXNzYXJ5ICc8ZGlyPi8uLicgcGFydHMuXG4gICAqXG4gICAqIEJhc2VkIG9uIGNvZGUgaW4gdGhlIE5vZGUuanMgJ3BhdGgnIGNvcmUgbW9kdWxlLlxuICAgKlxuICAgKiBAcGFyYW0gYVBhdGggVGhlIHBhdGggb3IgdXJsIHRvIG5vcm1hbGl6ZS5cbiAgICovXG4gIGZ1bmN0aW9uIG5vcm1hbGl6ZShhUGF0aCkge1xuICAgIHZhciBwYXRoID0gYVBhdGg7XG4gICAgdmFyIHVybCA9IHVybFBhcnNlKGFQYXRoKTtcbiAgICBpZiAodXJsKSB7XG4gICAgICBpZiAoIXVybC5wYXRoKSB7XG4gICAgICAgIHJldHVybiBhUGF0aDtcbiAgICAgIH1cbiAgICAgIHBhdGggPSB1cmwucGF0aDtcbiAgICB9XG4gICAgdmFyIGlzQWJzb2x1dGUgPSBleHBvcnRzLmlzQWJzb2x1dGUocGF0aCk7XG5cbiAgICB2YXIgcGFydHMgPSBwYXRoLnNwbGl0KC9cXC8rLyk7XG4gICAgZm9yICh2YXIgcGFydCwgdXAgPSAwLCBpID0gcGFydHMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHBhcnQgPSBwYXJ0c1tpXTtcbiAgICAgIGlmIChwYXJ0ID09PSAnLicpIHtcbiAgICAgICAgcGFydHMuc3BsaWNlKGksIDEpO1xuICAgICAgfSBlbHNlIGlmIChwYXJ0ID09PSAnLi4nKSB7XG4gICAgICAgIHVwKys7XG4gICAgICB9IGVsc2UgaWYgKHVwID4gMCkge1xuICAgICAgICBpZiAocGFydCA9PT0gJycpIHtcbiAgICAgICAgICAvLyBUaGUgZmlyc3QgcGFydCBpcyBibGFuayBpZiB0aGUgcGF0aCBpcyBhYnNvbHV0ZS4gVHJ5aW5nIHRvIGdvXG4gICAgICAgICAgLy8gYWJvdmUgdGhlIHJvb3QgaXMgYSBuby1vcC4gVGhlcmVmb3JlIHdlIGNhbiByZW1vdmUgYWxsICcuLicgcGFydHNcbiAgICAgICAgICAvLyBkaXJlY3RseSBhZnRlciB0aGUgcm9vdC5cbiAgICAgICAgICBwYXJ0cy5zcGxpY2UoaSArIDEsIHVwKTtcbiAgICAgICAgICB1cCA9IDA7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcGFydHMuc3BsaWNlKGksIDIpO1xuICAgICAgICAgIHVwLS07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcGF0aCA9IHBhcnRzLmpvaW4oJy8nKTtcblxuICAgIGlmIChwYXRoID09PSAnJykge1xuICAgICAgcGF0aCA9IGlzQWJzb2x1dGUgPyAnLycgOiAnLic7XG4gICAgfVxuXG4gICAgaWYgKHVybCkge1xuICAgICAgdXJsLnBhdGggPSBwYXRoO1xuICAgICAgcmV0dXJuIHVybEdlbmVyYXRlKHVybCk7XG4gICAgfVxuICAgIHJldHVybiBwYXRoO1xuICB9XG4gIGV4cG9ydHMubm9ybWFsaXplID0gbm9ybWFsaXplO1xuXG4gIC8qKlxuICAgKiBKb2lucyB0d28gcGF0aHMvVVJMcy5cbiAgICpcbiAgICogQHBhcmFtIGFSb290IFRoZSByb290IHBhdGggb3IgVVJMLlxuICAgKiBAcGFyYW0gYVBhdGggVGhlIHBhdGggb3IgVVJMIHRvIGJlIGpvaW5lZCB3aXRoIHRoZSByb290LlxuICAgKlxuICAgKiAtIElmIGFQYXRoIGlzIGEgVVJMIG9yIGEgZGF0YSBVUkksIGFQYXRoIGlzIHJldHVybmVkLCB1bmxlc3MgYVBhdGggaXMgYVxuICAgKiAgIHNjaGVtZS1yZWxhdGl2ZSBVUkw6IFRoZW4gdGhlIHNjaGVtZSBvZiBhUm9vdCwgaWYgYW55LCBpcyBwcmVwZW5kZWRcbiAgICogICBmaXJzdC5cbiAgICogLSBPdGhlcndpc2UgYVBhdGggaXMgYSBwYXRoLiBJZiBhUm9vdCBpcyBhIFVSTCwgdGhlbiBpdHMgcGF0aCBwb3J0aW9uXG4gICAqICAgaXMgdXBkYXRlZCB3aXRoIHRoZSByZXN1bHQgYW5kIGFSb290IGlzIHJldHVybmVkLiBPdGhlcndpc2UgdGhlIHJlc3VsdFxuICAgKiAgIGlzIHJldHVybmVkLlxuICAgKiAgIC0gSWYgYVBhdGggaXMgYWJzb2x1dGUsIHRoZSByZXN1bHQgaXMgYVBhdGguXG4gICAqICAgLSBPdGhlcndpc2UgdGhlIHR3byBwYXRocyBhcmUgam9pbmVkIHdpdGggYSBzbGFzaC5cbiAgICogLSBKb2luaW5nIGZvciBleGFtcGxlICdodHRwOi8vJyBhbmQgJ3d3dy5leGFtcGxlLmNvbScgaXMgYWxzbyBzdXBwb3J0ZWQuXG4gICAqL1xuICBmdW5jdGlvbiBqb2luKGFSb290LCBhUGF0aCkge1xuICAgIGlmIChhUm9vdCA9PT0gXCJcIikge1xuICAgICAgYVJvb3QgPSBcIi5cIjtcbiAgICB9XG4gICAgaWYgKGFQYXRoID09PSBcIlwiKSB7XG4gICAgICBhUGF0aCA9IFwiLlwiO1xuICAgIH1cbiAgICB2YXIgYVBhdGhVcmwgPSB1cmxQYXJzZShhUGF0aCk7XG4gICAgdmFyIGFSb290VXJsID0gdXJsUGFyc2UoYVJvb3QpO1xuICAgIGlmIChhUm9vdFVybCkge1xuICAgICAgYVJvb3QgPSBhUm9vdFVybC5wYXRoIHx8ICcvJztcbiAgICB9XG5cbiAgICAvLyBgam9pbihmb28sICcvL3d3dy5leGFtcGxlLm9yZycpYFxuICAgIGlmIChhUGF0aFVybCAmJiAhYVBhdGhVcmwuc2NoZW1lKSB7XG4gICAgICBpZiAoYVJvb3RVcmwpIHtcbiAgICAgICAgYVBhdGhVcmwuc2NoZW1lID0gYVJvb3RVcmwuc2NoZW1lO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHVybEdlbmVyYXRlKGFQYXRoVXJsKTtcbiAgICB9XG5cbiAgICBpZiAoYVBhdGhVcmwgfHwgYVBhdGgubWF0Y2goZGF0YVVybFJlZ2V4cCkpIHtcbiAgICAgIHJldHVybiBhUGF0aDtcbiAgICB9XG5cbiAgICAvLyBgam9pbignaHR0cDovLycsICd3d3cuZXhhbXBsZS5jb20nKWBcbiAgICBpZiAoYVJvb3RVcmwgJiYgIWFSb290VXJsLmhvc3QgJiYgIWFSb290VXJsLnBhdGgpIHtcbiAgICAgIGFSb290VXJsLmhvc3QgPSBhUGF0aDtcbiAgICAgIHJldHVybiB1cmxHZW5lcmF0ZShhUm9vdFVybCk7XG4gICAgfVxuXG4gICAgdmFyIGpvaW5lZCA9IGFQYXRoLmNoYXJBdCgwKSA9PT0gJy8nXG4gICAgICA/IGFQYXRoXG4gICAgICA6IG5vcm1hbGl6ZShhUm9vdC5yZXBsYWNlKC9cXC8rJC8sICcnKSArICcvJyArIGFQYXRoKTtcblxuICAgIGlmIChhUm9vdFVybCkge1xuICAgICAgYVJvb3RVcmwucGF0aCA9IGpvaW5lZDtcbiAgICAgIHJldHVybiB1cmxHZW5lcmF0ZShhUm9vdFVybCk7XG4gICAgfVxuICAgIHJldHVybiBqb2luZWQ7XG4gIH1cbiAgZXhwb3J0cy5qb2luID0gam9pbjtcblxuICBleHBvcnRzLmlzQWJzb2x1dGUgPSBmdW5jdGlvbiAoYVBhdGgpIHtcbiAgICByZXR1cm4gYVBhdGguY2hhckF0KDApID09PSAnLycgfHwgISFhUGF0aC5tYXRjaCh1cmxSZWdleHApO1xuICB9O1xuXG4gIC8qKlxuICAgKiBNYWtlIGEgcGF0aCByZWxhdGl2ZSB0byBhIFVSTCBvciBhbm90aGVyIHBhdGguXG4gICAqXG4gICAqIEBwYXJhbSBhUm9vdCBUaGUgcm9vdCBwYXRoIG9yIFVSTC5cbiAgICogQHBhcmFtIGFQYXRoIFRoZSBwYXRoIG9yIFVSTCB0byBiZSBtYWRlIHJlbGF0aXZlIHRvIGFSb290LlxuICAgKi9cbiAgZnVuY3Rpb24gcmVsYXRpdmUoYVJvb3QsIGFQYXRoKSB7XG4gICAgaWYgKGFSb290ID09PSBcIlwiKSB7XG4gICAgICBhUm9vdCA9IFwiLlwiO1xuICAgIH1cblxuICAgIGFSb290ID0gYVJvb3QucmVwbGFjZSgvXFwvJC8sICcnKTtcblxuICAgIC8vIEl0IGlzIHBvc3NpYmxlIGZvciB0aGUgcGF0aCB0byBiZSBhYm92ZSB0aGUgcm9vdC4gSW4gdGhpcyBjYXNlLCBzaW1wbHlcbiAgICAvLyBjaGVja2luZyB3aGV0aGVyIHRoZSByb290IGlzIGEgcHJlZml4IG9mIHRoZSBwYXRoIHdvbid0IHdvcmsuIEluc3RlYWQsIHdlXG4gICAgLy8gbmVlZCB0byByZW1vdmUgY29tcG9uZW50cyBmcm9tIHRoZSByb290IG9uZSBieSBvbmUsIHVudGlsIGVpdGhlciB3ZSBmaW5kXG4gICAgLy8gYSBwcmVmaXggdGhhdCBmaXRzLCBvciB3ZSBydW4gb3V0IG9mIGNvbXBvbmVudHMgdG8gcmVtb3ZlLlxuICAgIHZhciBsZXZlbCA9IDA7XG4gICAgd2hpbGUgKGFQYXRoLmluZGV4T2YoYVJvb3QgKyAnLycpICE9PSAwKSB7XG4gICAgICB2YXIgaW5kZXggPSBhUm9vdC5sYXN0SW5kZXhPZihcIi9cIik7XG4gICAgICBpZiAoaW5kZXggPCAwKSB7XG4gICAgICAgIHJldHVybiBhUGF0aDtcbiAgICAgIH1cblxuICAgICAgLy8gSWYgdGhlIG9ubHkgcGFydCBvZiB0aGUgcm9vdCB0aGF0IGlzIGxlZnQgaXMgdGhlIHNjaGVtZSAoaS5lLiBodHRwOi8vLFxuICAgICAgLy8gZmlsZTovLy8sIGV0Yy4pLCBvbmUgb3IgbW9yZSBzbGFzaGVzICgvKSwgb3Igc2ltcGx5IG5vdGhpbmcgYXQgYWxsLCB3ZVxuICAgICAgLy8gaGF2ZSBleGhhdXN0ZWQgYWxsIGNvbXBvbmVudHMsIHNvIHRoZSBwYXRoIGlzIG5vdCByZWxhdGl2ZSB0byB0aGUgcm9vdC5cbiAgICAgIGFSb290ID0gYVJvb3Quc2xpY2UoMCwgaW5kZXgpO1xuICAgICAgaWYgKGFSb290Lm1hdGNoKC9eKFteXFwvXSs6XFwvKT9cXC8qJC8pKSB7XG4gICAgICAgIHJldHVybiBhUGF0aDtcbiAgICAgIH1cblxuICAgICAgKytsZXZlbDtcbiAgICB9XG5cbiAgICAvLyBNYWtlIHN1cmUgd2UgYWRkIGEgXCIuLi9cIiBmb3IgZWFjaCBjb21wb25lbnQgd2UgcmVtb3ZlZCBmcm9tIHRoZSByb290LlxuICAgIHJldHVybiBBcnJheShsZXZlbCArIDEpLmpvaW4oXCIuLi9cIikgKyBhUGF0aC5zdWJzdHIoYVJvb3QubGVuZ3RoICsgMSk7XG4gIH1cbiAgZXhwb3J0cy5yZWxhdGl2ZSA9IHJlbGF0aXZlO1xuXG4gIC8qKlxuICAgKiBCZWNhdXNlIGJlaGF2aW9yIGdvZXMgd2Fja3kgd2hlbiB5b3Ugc2V0IGBfX3Byb3RvX19gIG9uIG9iamVjdHMsIHdlXG4gICAqIGhhdmUgdG8gcHJlZml4IGFsbCB0aGUgc3RyaW5ncyBpbiBvdXIgc2V0IHdpdGggYW4gYXJiaXRyYXJ5IGNoYXJhY3Rlci5cbiAgICpcbiAgICogU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9tb3ppbGxhL3NvdXJjZS1tYXAvcHVsbC8zMSBhbmRcbiAgICogaHR0cHM6Ly9naXRodWIuY29tL21vemlsbGEvc291cmNlLW1hcC9pc3N1ZXMvMzBcbiAgICpcbiAgICogQHBhcmFtIFN0cmluZyBhU3RyXG4gICAqL1xuICBmdW5jdGlvbiB0b1NldFN0cmluZyhhU3RyKSB7XG4gICAgcmV0dXJuICckJyArIGFTdHI7XG4gIH1cbiAgZXhwb3J0cy50b1NldFN0cmluZyA9IHRvU2V0U3RyaW5nO1xuXG4gIGZ1bmN0aW9uIGZyb21TZXRTdHJpbmcoYVN0cikge1xuICAgIHJldHVybiBhU3RyLnN1YnN0cigxKTtcbiAgfVxuICBleHBvcnRzLmZyb21TZXRTdHJpbmcgPSBmcm9tU2V0U3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDb21wYXJhdG9yIGJldHdlZW4gdHdvIG1hcHBpbmdzIHdoZXJlIHRoZSBvcmlnaW5hbCBwb3NpdGlvbnMgYXJlIGNvbXBhcmVkLlxuICAgKlxuICAgKiBPcHRpb25hbGx5IHBhc3MgaW4gYHRydWVgIGFzIGBvbmx5Q29tcGFyZUdlbmVyYXRlZGAgdG8gY29uc2lkZXIgdHdvXG4gICAqIG1hcHBpbmdzIHdpdGggdGhlIHNhbWUgb3JpZ2luYWwgc291cmNlL2xpbmUvY29sdW1uLCBidXQgZGlmZmVyZW50IGdlbmVyYXRlZFxuICAgKiBsaW5lIGFuZCBjb2x1bW4gdGhlIHNhbWUuIFVzZWZ1bCB3aGVuIHNlYXJjaGluZyBmb3IgYSBtYXBwaW5nIHdpdGggYVxuICAgKiBzdHViYmVkIG91dCBtYXBwaW5nLlxuICAgKi9cbiAgZnVuY3Rpb24gY29tcGFyZUJ5T3JpZ2luYWxQb3NpdGlvbnMobWFwcGluZ0EsIG1hcHBpbmdCLCBvbmx5Q29tcGFyZU9yaWdpbmFsKSB7XG4gICAgdmFyIGNtcCA9IG1hcHBpbmdBLnNvdXJjZSAtIG1hcHBpbmdCLnNvdXJjZTtcbiAgICBpZiAoY21wICE9PSAwKSB7XG4gICAgICByZXR1cm4gY21wO1xuICAgIH1cblxuICAgIGNtcCA9IG1hcHBpbmdBLm9yaWdpbmFsTGluZSAtIG1hcHBpbmdCLm9yaWdpbmFsTGluZTtcbiAgICBpZiAoY21wICE9PSAwKSB7XG4gICAgICByZXR1cm4gY21wO1xuICAgIH1cblxuICAgIGNtcCA9IG1hcHBpbmdBLm9yaWdpbmFsQ29sdW1uIC0gbWFwcGluZ0Iub3JpZ2luYWxDb2x1bW47XG4gICAgaWYgKGNtcCAhPT0gMCB8fCBvbmx5Q29tcGFyZU9yaWdpbmFsKSB7XG4gICAgICByZXR1cm4gY21wO1xuICAgIH1cblxuICAgIGNtcCA9IG1hcHBpbmdBLmdlbmVyYXRlZENvbHVtbiAtIG1hcHBpbmdCLmdlbmVyYXRlZENvbHVtbjtcbiAgICBpZiAoY21wICE9PSAwKSB7XG4gICAgICByZXR1cm4gY21wO1xuICAgIH1cblxuICAgIGNtcCA9IG1hcHBpbmdBLmdlbmVyYXRlZExpbmUgLSBtYXBwaW5nQi5nZW5lcmF0ZWRMaW5lO1xuICAgIGlmIChjbXAgIT09IDApIHtcbiAgICAgIHJldHVybiBjbXA7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1hcHBpbmdBLm5hbWUgLSBtYXBwaW5nQi5uYW1lO1xuICB9XG4gIGV4cG9ydHMuY29tcGFyZUJ5T3JpZ2luYWxQb3NpdGlvbnMgPSBjb21wYXJlQnlPcmlnaW5hbFBvc2l0aW9ucztcblxuICAvKipcbiAgICogQ29tcGFyYXRvciBiZXR3ZWVuIHR3byBtYXBwaW5ncyB3aXRoIGRlZmxhdGVkIHNvdXJjZSBhbmQgbmFtZSBpbmRpY2VzIHdoZXJlXG4gICAqIHRoZSBnZW5lcmF0ZWQgcG9zaXRpb25zIGFyZSBjb21wYXJlZC5cbiAgICpcbiAgICogT3B0aW9uYWxseSBwYXNzIGluIGB0cnVlYCBhcyBgb25seUNvbXBhcmVHZW5lcmF0ZWRgIHRvIGNvbnNpZGVyIHR3b1xuICAgKiBtYXBwaW5ncyB3aXRoIHRoZSBzYW1lIGdlbmVyYXRlZCBsaW5lIGFuZCBjb2x1bW4sIGJ1dCBkaWZmZXJlbnRcbiAgICogc291cmNlL25hbWUvb3JpZ2luYWwgbGluZSBhbmQgY29sdW1uIHRoZSBzYW1lLiBVc2VmdWwgd2hlbiBzZWFyY2hpbmcgZm9yIGFcbiAgICogbWFwcGluZyB3aXRoIGEgc3R1YmJlZCBvdXQgbWFwcGluZy5cbiAgICovXG4gIGZ1bmN0aW9uIGNvbXBhcmVCeUdlbmVyYXRlZFBvc2l0aW9uc0RlZmxhdGVkKG1hcHBpbmdBLCBtYXBwaW5nQiwgb25seUNvbXBhcmVHZW5lcmF0ZWQpIHtcbiAgICB2YXIgY21wID0gbWFwcGluZ0EuZ2VuZXJhdGVkTGluZSAtIG1hcHBpbmdCLmdlbmVyYXRlZExpbmU7XG4gICAgaWYgKGNtcCAhPT0gMCkge1xuICAgICAgcmV0dXJuIGNtcDtcbiAgICB9XG5cbiAgICBjbXAgPSBtYXBwaW5nQS5nZW5lcmF0ZWRDb2x1bW4gLSBtYXBwaW5nQi5nZW5lcmF0ZWRDb2x1bW47XG4gICAgaWYgKGNtcCAhPT0gMCB8fCBvbmx5Q29tcGFyZUdlbmVyYXRlZCkge1xuICAgICAgcmV0dXJuIGNtcDtcbiAgICB9XG5cbiAgICBjbXAgPSBtYXBwaW5nQS5zb3VyY2UgLSBtYXBwaW5nQi5zb3VyY2U7XG4gICAgaWYgKGNtcCAhPT0gMCkge1xuICAgICAgcmV0dXJuIGNtcDtcbiAgICB9XG5cbiAgICBjbXAgPSBtYXBwaW5nQS5vcmlnaW5hbExpbmUgLSBtYXBwaW5nQi5vcmlnaW5hbExpbmU7XG4gICAgaWYgKGNtcCAhPT0gMCkge1xuICAgICAgcmV0dXJuIGNtcDtcbiAgICB9XG5cbiAgICBjbXAgPSBtYXBwaW5nQS5vcmlnaW5hbENvbHVtbiAtIG1hcHBpbmdCLm9yaWdpbmFsQ29sdW1uO1xuICAgIGlmIChjbXAgIT09IDApIHtcbiAgICAgIHJldHVybiBjbXA7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1hcHBpbmdBLm5hbWUgLSBtYXBwaW5nQi5uYW1lO1xuICB9XG4gIGV4cG9ydHMuY29tcGFyZUJ5R2VuZXJhdGVkUG9zaXRpb25zRGVmbGF0ZWQgPSBjb21wYXJlQnlHZW5lcmF0ZWRQb3NpdGlvbnNEZWZsYXRlZDtcblxuICBmdW5jdGlvbiBzdHJjbXAoYVN0cjEsIGFTdHIyKSB7XG4gICAgaWYgKGFTdHIxID09PSBhU3RyMikge1xuICAgICAgcmV0dXJuIDA7XG4gICAgfVxuXG4gICAgaWYgKGFTdHIxID4gYVN0cjIpIHtcbiAgICAgIHJldHVybiAxO1xuICAgIH1cblxuICAgIHJldHVybiAtMTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb21wYXJhdG9yIGJldHdlZW4gdHdvIG1hcHBpbmdzIHdpdGggaW5mbGF0ZWQgc291cmNlIGFuZCBuYW1lIHN0cmluZ3Mgd2hlcmVcbiAgICogdGhlIGdlbmVyYXRlZCBwb3NpdGlvbnMgYXJlIGNvbXBhcmVkLlxuICAgKi9cbiAgZnVuY3Rpb24gY29tcGFyZUJ5R2VuZXJhdGVkUG9zaXRpb25zSW5mbGF0ZWQobWFwcGluZ0EsIG1hcHBpbmdCKSB7XG4gICAgdmFyIGNtcCA9IG1hcHBpbmdBLmdlbmVyYXRlZExpbmUgLSBtYXBwaW5nQi5nZW5lcmF0ZWRMaW5lO1xuICAgIGlmIChjbXAgIT09IDApIHtcbiAgICAgIHJldHVybiBjbXA7XG4gICAgfVxuXG4gICAgY21wID0gbWFwcGluZ0EuZ2VuZXJhdGVkQ29sdW1uIC0gbWFwcGluZ0IuZ2VuZXJhdGVkQ29sdW1uO1xuICAgIGlmIChjbXAgIT09IDApIHtcbiAgICAgIHJldHVybiBjbXA7XG4gICAgfVxuXG4gICAgY21wID0gc3RyY21wKG1hcHBpbmdBLnNvdXJjZSwgbWFwcGluZ0Iuc291cmNlKTtcbiAgICBpZiAoY21wICE9PSAwKSB7XG4gICAgICByZXR1cm4gY21wO1xuICAgIH1cblxuICAgIGNtcCA9IG1hcHBpbmdBLm9yaWdpbmFsTGluZSAtIG1hcHBpbmdCLm9yaWdpbmFsTGluZTtcbiAgICBpZiAoY21wICE9PSAwKSB7XG4gICAgICByZXR1cm4gY21wO1xuICAgIH1cblxuICAgIGNtcCA9IG1hcHBpbmdBLm9yaWdpbmFsQ29sdW1uIC0gbWFwcGluZ0Iub3JpZ2luYWxDb2x1bW47XG4gICAgaWYgKGNtcCAhPT0gMCkge1xuICAgICAgcmV0dXJuIGNtcDtcbiAgICB9XG5cbiAgICByZXR1cm4gc3RyY21wKG1hcHBpbmdBLm5hbWUsIG1hcHBpbmdCLm5hbWUpO1xuICB9XG4gIGV4cG9ydHMuY29tcGFyZUJ5R2VuZXJhdGVkUG9zaXRpb25zSW5mbGF0ZWQgPSBjb21wYXJlQnlHZW5lcmF0ZWRQb3NpdGlvbnNJbmZsYXRlZDtcbn1cblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9saWIvdXRpbC5qc1xuICoqIG1vZHVsZSBpZCA9IDRcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qIC0qLSBNb2RlOiBqczsganMtaW5kZW50LWxldmVsOiAyOyAtKi0gKi9cbi8qXG4gKiBDb3B5cmlnaHQgMjAxMSBNb3ppbGxhIEZvdW5kYXRpb24gYW5kIGNvbnRyaWJ1dG9yc1xuICogTGljZW5zZWQgdW5kZXIgdGhlIE5ldyBCU0QgbGljZW5zZS4gU2VlIExJQ0VOU0Ugb3I6XG4gKiBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlXG4gKi9cbntcbiAgdmFyIHV0aWwgPSByZXF1aXJlKCcuL3V0aWwnKTtcblxuICAvKipcbiAgICogQSBkYXRhIHN0cnVjdHVyZSB3aGljaCBpcyBhIGNvbWJpbmF0aW9uIG9mIGFuIGFycmF5IGFuZCBhIHNldC4gQWRkaW5nIGEgbmV3XG4gICAqIG1lbWJlciBpcyBPKDEpLCB0ZXN0aW5nIGZvciBtZW1iZXJzaGlwIGlzIE8oMSksIGFuZCBmaW5kaW5nIHRoZSBpbmRleCBvZiBhblxuICAgKiBlbGVtZW50IGlzIE8oMSkuIFJlbW92aW5nIGVsZW1lbnRzIGZyb20gdGhlIHNldCBpcyBub3Qgc3VwcG9ydGVkLiBPbmx5XG4gICAqIHN0cmluZ3MgYXJlIHN1cHBvcnRlZCBmb3IgbWVtYmVyc2hpcC5cbiAgICovXG4gIGZ1bmN0aW9uIEFycmF5U2V0KCkge1xuICAgIHRoaXMuX2FycmF5ID0gW107XG4gICAgdGhpcy5fc2V0ID0ge307XG4gIH1cblxuICAvKipcbiAgICogU3RhdGljIG1ldGhvZCBmb3IgY3JlYXRpbmcgQXJyYXlTZXQgaW5zdGFuY2VzIGZyb20gYW4gZXhpc3RpbmcgYXJyYXkuXG4gICAqL1xuICBBcnJheVNldC5mcm9tQXJyYXkgPSBmdW5jdGlvbiBBcnJheVNldF9mcm9tQXJyYXkoYUFycmF5LCBhQWxsb3dEdXBsaWNhdGVzKSB7XG4gICAgdmFyIHNldCA9IG5ldyBBcnJheVNldCgpO1xuICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBhQXJyYXkubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIHNldC5hZGQoYUFycmF5W2ldLCBhQWxsb3dEdXBsaWNhdGVzKTtcbiAgICB9XG4gICAgcmV0dXJuIHNldDtcbiAgfTtcblxuICAvKipcbiAgICogUmV0dXJuIGhvdyBtYW55IHVuaXF1ZSBpdGVtcyBhcmUgaW4gdGhpcyBBcnJheVNldC4gSWYgZHVwbGljYXRlcyBoYXZlIGJlZW5cbiAgICogYWRkZWQsIHRoYW4gdGhvc2UgZG8gbm90IGNvdW50IHRvd2FyZHMgdGhlIHNpemUuXG4gICAqXG4gICAqIEByZXR1cm5zIE51bWJlclxuICAgKi9cbiAgQXJyYXlTZXQucHJvdG90eXBlLnNpemUgPSBmdW5jdGlvbiBBcnJheVNldF9zaXplKCkge1xuICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzLl9zZXQpLmxlbmd0aDtcbiAgfTtcblxuICAvKipcbiAgICogQWRkIHRoZSBnaXZlbiBzdHJpbmcgdG8gdGhpcyBzZXQuXG4gICAqXG4gICAqIEBwYXJhbSBTdHJpbmcgYVN0clxuICAgKi9cbiAgQXJyYXlTZXQucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIEFycmF5U2V0X2FkZChhU3RyLCBhQWxsb3dEdXBsaWNhdGVzKSB7XG4gICAgdmFyIHNTdHIgPSB1dGlsLnRvU2V0U3RyaW5nKGFTdHIpO1xuICAgIHZhciBpc0R1cGxpY2F0ZSA9IHRoaXMuX3NldC5oYXNPd25Qcm9wZXJ0eShzU3RyKTtcbiAgICB2YXIgaWR4ID0gdGhpcy5fYXJyYXkubGVuZ3RoO1xuICAgIGlmICghaXNEdXBsaWNhdGUgfHwgYUFsbG93RHVwbGljYXRlcykge1xuICAgICAgdGhpcy5fYXJyYXkucHVzaChhU3RyKTtcbiAgICB9XG4gICAgaWYgKCFpc0R1cGxpY2F0ZSkge1xuICAgICAgdGhpcy5fc2V0W3NTdHJdID0gaWR4O1xuICAgIH1cbiAgfTtcblxuICAvKipcbiAgICogSXMgdGhlIGdpdmVuIHN0cmluZyBhIG1lbWJlciBvZiB0aGlzIHNldD9cbiAgICpcbiAgICogQHBhcmFtIFN0cmluZyBhU3RyXG4gICAqL1xuICBBcnJheVNldC5wcm90b3R5cGUuaGFzID0gZnVuY3Rpb24gQXJyYXlTZXRfaGFzKGFTdHIpIHtcbiAgICB2YXIgc1N0ciA9IHV0aWwudG9TZXRTdHJpbmcoYVN0cik7XG4gICAgcmV0dXJuIHRoaXMuX3NldC5oYXNPd25Qcm9wZXJ0eShzU3RyKTtcbiAgfTtcblxuICAvKipcbiAgICogV2hhdCBpcyB0aGUgaW5kZXggb2YgdGhlIGdpdmVuIHN0cmluZyBpbiB0aGUgYXJyYXk/XG4gICAqXG4gICAqIEBwYXJhbSBTdHJpbmcgYVN0clxuICAgKi9cbiAgQXJyYXlTZXQucHJvdG90eXBlLmluZGV4T2YgPSBmdW5jdGlvbiBBcnJheVNldF9pbmRleE9mKGFTdHIpIHtcbiAgICB2YXIgc1N0ciA9IHV0aWwudG9TZXRTdHJpbmcoYVN0cik7XG4gICAgaWYgKHRoaXMuX3NldC5oYXNPd25Qcm9wZXJ0eShzU3RyKSkge1xuICAgICAgcmV0dXJuIHRoaXMuX3NldFtzU3RyXTtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKCdcIicgKyBhU3RyICsgJ1wiIGlzIG5vdCBpbiB0aGUgc2V0LicpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBXaGF0IGlzIHRoZSBlbGVtZW50IGF0IHRoZSBnaXZlbiBpbmRleD9cbiAgICpcbiAgICogQHBhcmFtIE51bWJlciBhSWR4XG4gICAqL1xuICBBcnJheVNldC5wcm90b3R5cGUuYXQgPSBmdW5jdGlvbiBBcnJheVNldF9hdChhSWR4KSB7XG4gICAgaWYgKGFJZHggPj0gMCAmJiBhSWR4IDwgdGhpcy5fYXJyYXkubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gdGhpcy5fYXJyYXlbYUlkeF07XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcignTm8gZWxlbWVudCBpbmRleGVkIGJ5ICcgKyBhSWR4KTtcbiAgfTtcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgYXJyYXkgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBzZXQgKHdoaWNoIGhhcyB0aGUgcHJvcGVyIGluZGljZXNcbiAgICogaW5kaWNhdGVkIGJ5IGluZGV4T2YpLiBOb3RlIHRoYXQgdGhpcyBpcyBhIGNvcHkgb2YgdGhlIGludGVybmFsIGFycmF5IHVzZWRcbiAgICogZm9yIHN0b3JpbmcgdGhlIG1lbWJlcnMgc28gdGhhdCBubyBvbmUgY2FuIG1lc3Mgd2l0aCBpbnRlcm5hbCBzdGF0ZS5cbiAgICovXG4gIEFycmF5U2V0LnByb3RvdHlwZS50b0FycmF5ID0gZnVuY3Rpb24gQXJyYXlTZXRfdG9BcnJheSgpIHtcbiAgICByZXR1cm4gdGhpcy5fYXJyYXkuc2xpY2UoKTtcbiAgfTtcblxuICBleHBvcnRzLkFycmF5U2V0ID0gQXJyYXlTZXQ7XG59XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vbGliL2FycmF5LXNldC5qc1xuICoqIG1vZHVsZSBpZCA9IDVcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qIC0qLSBNb2RlOiBqczsganMtaW5kZW50LWxldmVsOiAyOyAtKi0gKi9cbi8qXG4gKiBDb3B5cmlnaHQgMjAxNCBNb3ppbGxhIEZvdW5kYXRpb24gYW5kIGNvbnRyaWJ1dG9yc1xuICogTGljZW5zZWQgdW5kZXIgdGhlIE5ldyBCU0QgbGljZW5zZS4gU2VlIExJQ0VOU0Ugb3I6XG4gKiBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlXG4gKi9cbntcbiAgdmFyIHV0aWwgPSByZXF1aXJlKCcuL3V0aWwnKTtcblxuICAvKipcbiAgICogRGV0ZXJtaW5lIHdoZXRoZXIgbWFwcGluZ0IgaXMgYWZ0ZXIgbWFwcGluZ0Egd2l0aCByZXNwZWN0IHRvIGdlbmVyYXRlZFxuICAgKiBwb3NpdGlvbi5cbiAgICovXG4gIGZ1bmN0aW9uIGdlbmVyYXRlZFBvc2l0aW9uQWZ0ZXIobWFwcGluZ0EsIG1hcHBpbmdCKSB7XG4gICAgLy8gT3B0aW1pemVkIGZvciBtb3N0IGNvbW1vbiBjYXNlXG4gICAgdmFyIGxpbmVBID0gbWFwcGluZ0EuZ2VuZXJhdGVkTGluZTtcbiAgICB2YXIgbGluZUIgPSBtYXBwaW5nQi5nZW5lcmF0ZWRMaW5lO1xuICAgIHZhciBjb2x1bW5BID0gbWFwcGluZ0EuZ2VuZXJhdGVkQ29sdW1uO1xuICAgIHZhciBjb2x1bW5CID0gbWFwcGluZ0IuZ2VuZXJhdGVkQ29sdW1uO1xuICAgIHJldHVybiBsaW5lQiA+IGxpbmVBIHx8IGxpbmVCID09IGxpbmVBICYmIGNvbHVtbkIgPj0gY29sdW1uQSB8fFxuICAgICAgICAgICB1dGlsLmNvbXBhcmVCeUdlbmVyYXRlZFBvc2l0aW9uc0luZmxhdGVkKG1hcHBpbmdBLCBtYXBwaW5nQikgPD0gMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIGRhdGEgc3RydWN0dXJlIHRvIHByb3ZpZGUgYSBzb3J0ZWQgdmlldyBvZiBhY2N1bXVsYXRlZCBtYXBwaW5ncyBpbiBhXG4gICAqIHBlcmZvcm1hbmNlIGNvbnNjaW91cyBtYW5uZXIuIEl0IHRyYWRlcyBhIG5lZ2xpYmFibGUgb3ZlcmhlYWQgaW4gZ2VuZXJhbFxuICAgKiBjYXNlIGZvciBhIGxhcmdlIHNwZWVkdXAgaW4gY2FzZSBvZiBtYXBwaW5ncyBiZWluZyBhZGRlZCBpbiBvcmRlci5cbiAgICovXG4gIGZ1bmN0aW9uIE1hcHBpbmdMaXN0KCkge1xuICAgIHRoaXMuX2FycmF5ID0gW107XG4gICAgdGhpcy5fc29ydGVkID0gdHJ1ZTtcbiAgICAvLyBTZXJ2ZXMgYXMgaW5maW11bVxuICAgIHRoaXMuX2xhc3QgPSB7Z2VuZXJhdGVkTGluZTogLTEsIGdlbmVyYXRlZENvbHVtbjogMH07XG4gIH1cblxuICAvKipcbiAgICogSXRlcmF0ZSB0aHJvdWdoIGludGVybmFsIGl0ZW1zLiBUaGlzIG1ldGhvZCB0YWtlcyB0aGUgc2FtZSBhcmd1bWVudHMgdGhhdFxuICAgKiBgQXJyYXkucHJvdG90eXBlLmZvckVhY2hgIHRha2VzLlxuICAgKlxuICAgKiBOT1RFOiBUaGUgb3JkZXIgb2YgdGhlIG1hcHBpbmdzIGlzIE5PVCBndWFyYW50ZWVkLlxuICAgKi9cbiAgTWFwcGluZ0xpc3QucHJvdG90eXBlLnVuc29ydGVkRm9yRWFjaCA9XG4gICAgZnVuY3Rpb24gTWFwcGluZ0xpc3RfZm9yRWFjaChhQ2FsbGJhY2ssIGFUaGlzQXJnKSB7XG4gICAgICB0aGlzLl9hcnJheS5mb3JFYWNoKGFDYWxsYmFjaywgYVRoaXNBcmcpO1xuICAgIH07XG5cbiAgLyoqXG4gICAqIEFkZCB0aGUgZ2l2ZW4gc291cmNlIG1hcHBpbmcuXG4gICAqXG4gICAqIEBwYXJhbSBPYmplY3QgYU1hcHBpbmdcbiAgICovXG4gIE1hcHBpbmdMaXN0LnByb3RvdHlwZS5hZGQgPSBmdW5jdGlvbiBNYXBwaW5nTGlzdF9hZGQoYU1hcHBpbmcpIHtcbiAgICBpZiAoZ2VuZXJhdGVkUG9zaXRpb25BZnRlcih0aGlzLl9sYXN0LCBhTWFwcGluZykpIHtcbiAgICAgIHRoaXMuX2xhc3QgPSBhTWFwcGluZztcbiAgICAgIHRoaXMuX2FycmF5LnB1c2goYU1hcHBpbmcpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9zb3J0ZWQgPSBmYWxzZTtcbiAgICAgIHRoaXMuX2FycmF5LnB1c2goYU1hcHBpbmcpO1xuICAgIH1cbiAgfTtcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgZmxhdCwgc29ydGVkIGFycmF5IG9mIG1hcHBpbmdzLiBUaGUgbWFwcGluZ3MgYXJlIHNvcnRlZCBieVxuICAgKiBnZW5lcmF0ZWQgcG9zaXRpb24uXG4gICAqXG4gICAqIFdBUk5JTkc6IFRoaXMgbWV0aG9kIHJldHVybnMgaW50ZXJuYWwgZGF0YSB3aXRob3V0IGNvcHlpbmcsIGZvclxuICAgKiBwZXJmb3JtYW5jZS4gVGhlIHJldHVybiB2YWx1ZSBtdXN0IE5PVCBiZSBtdXRhdGVkLCBhbmQgc2hvdWxkIGJlIHRyZWF0ZWQgYXNcbiAgICogYW4gaW1tdXRhYmxlIGJvcnJvdy4gSWYgeW91IHdhbnQgdG8gdGFrZSBvd25lcnNoaXAsIHlvdSBtdXN0IG1ha2UgeW91ciBvd25cbiAgICogY29weS5cbiAgICovXG4gIE1hcHBpbmdMaXN0LnByb3RvdHlwZS50b0FycmF5ID0gZnVuY3Rpb24gTWFwcGluZ0xpc3RfdG9BcnJheSgpIHtcbiAgICBpZiAoIXRoaXMuX3NvcnRlZCkge1xuICAgICAgdGhpcy5fYXJyYXkuc29ydCh1dGlsLmNvbXBhcmVCeUdlbmVyYXRlZFBvc2l0aW9uc0luZmxhdGVkKTtcbiAgICAgIHRoaXMuX3NvcnRlZCA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9hcnJheTtcbiAgfTtcblxuICBleHBvcnRzLk1hcHBpbmdMaXN0ID0gTWFwcGluZ0xpc3Q7XG59XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vbGliL21hcHBpbmctbGlzdC5qc1xuICoqIG1vZHVsZSBpZCA9IDZcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qIC0qLSBNb2RlOiBqczsganMtaW5kZW50LWxldmVsOiAyOyAtKi0gKi9cbi8qXG4gKiBDb3B5cmlnaHQgMjAxMSBNb3ppbGxhIEZvdW5kYXRpb24gYW5kIGNvbnRyaWJ1dG9yc1xuICogTGljZW5zZWQgdW5kZXIgdGhlIE5ldyBCU0QgbGljZW5zZS4gU2VlIExJQ0VOU0Ugb3I6XG4gKiBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlXG4gKi9cbntcbiAgdmFyIHV0aWwgPSByZXF1aXJlKCcuL3V0aWwnKTtcbiAgdmFyIGJpbmFyeVNlYXJjaCA9IHJlcXVpcmUoJy4vYmluYXJ5LXNlYXJjaCcpO1xuICB2YXIgQXJyYXlTZXQgPSByZXF1aXJlKCcuL2FycmF5LXNldCcpLkFycmF5U2V0O1xuICB2YXIgYmFzZTY0VkxRID0gcmVxdWlyZSgnLi9iYXNlNjQtdmxxJyk7XG4gIHZhciBxdWlja1NvcnQgPSByZXF1aXJlKCcuL3F1aWNrLXNvcnQnKS5xdWlja1NvcnQ7XG5cbiAgZnVuY3Rpb24gU291cmNlTWFwQ29uc3VtZXIoYVNvdXJjZU1hcCkge1xuICAgIHZhciBzb3VyY2VNYXAgPSBhU291cmNlTWFwO1xuICAgIGlmICh0eXBlb2YgYVNvdXJjZU1hcCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHNvdXJjZU1hcCA9IEpTT04ucGFyc2UoYVNvdXJjZU1hcC5yZXBsYWNlKC9eXFwpXFxdXFx9Jy8sICcnKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNvdXJjZU1hcC5zZWN0aW9ucyAhPSBudWxsXG4gICAgICA/IG5ldyBJbmRleGVkU291cmNlTWFwQ29uc3VtZXIoc291cmNlTWFwKVxuICAgICAgOiBuZXcgQmFzaWNTb3VyY2VNYXBDb25zdW1lcihzb3VyY2VNYXApO1xuICB9XG5cbiAgU291cmNlTWFwQ29uc3VtZXIuZnJvbVNvdXJjZU1hcCA9IGZ1bmN0aW9uKGFTb3VyY2VNYXApIHtcbiAgICByZXR1cm4gQmFzaWNTb3VyY2VNYXBDb25zdW1lci5mcm9tU291cmNlTWFwKGFTb3VyY2VNYXApO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBzb3VyY2UgbWFwcGluZyBzcGVjIHRoYXQgd2UgYXJlIGNvbnN1bWluZy5cbiAgICovXG4gIFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fdmVyc2lvbiA9IDM7XG5cbiAgLy8gYF9fZ2VuZXJhdGVkTWFwcGluZ3NgIGFuZCBgX19vcmlnaW5hbE1hcHBpbmdzYCBhcmUgYXJyYXlzIHRoYXQgaG9sZCB0aGVcbiAgLy8gcGFyc2VkIG1hcHBpbmcgY29vcmRpbmF0ZXMgZnJvbSB0aGUgc291cmNlIG1hcCdzIFwibWFwcGluZ3NcIiBhdHRyaWJ1dGUuIFRoZXlcbiAgLy8gYXJlIGxhemlseSBpbnN0YW50aWF0ZWQsIGFjY2Vzc2VkIHZpYSB0aGUgYF9nZW5lcmF0ZWRNYXBwaW5nc2AgYW5kXG4gIC8vIGBfb3JpZ2luYWxNYXBwaW5nc2AgZ2V0dGVycyByZXNwZWN0aXZlbHksIGFuZCB3ZSBvbmx5IHBhcnNlIHRoZSBtYXBwaW5nc1xuICAvLyBhbmQgY3JlYXRlIHRoZXNlIGFycmF5cyBvbmNlIHF1ZXJpZWQgZm9yIGEgc291cmNlIGxvY2F0aW9uLiBXZSBqdW1wIHRocm91Z2hcbiAgLy8gdGhlc2UgaG9vcHMgYmVjYXVzZSB0aGVyZSBjYW4gYmUgbWFueSB0aG91c2FuZHMgb2YgbWFwcGluZ3MsIGFuZCBwYXJzaW5nXG4gIC8vIHRoZW0gaXMgZXhwZW5zaXZlLCBzbyB3ZSBvbmx5IHdhbnQgdG8gZG8gaXQgaWYgd2UgbXVzdC5cbiAgLy9cbiAgLy8gRWFjaCBvYmplY3QgaW4gdGhlIGFycmF5cyBpcyBvZiB0aGUgZm9ybTpcbiAgLy9cbiAgLy8gICAgIHtcbiAgLy8gICAgICAgZ2VuZXJhdGVkTGluZTogVGhlIGxpbmUgbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgY29kZSxcbiAgLy8gICAgICAgZ2VuZXJhdGVkQ29sdW1uOiBUaGUgY29sdW1uIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIGNvZGUsXG4gIC8vICAgICAgIHNvdXJjZTogVGhlIHBhdGggdG8gdGhlIG9yaWdpbmFsIHNvdXJjZSBmaWxlIHRoYXQgZ2VuZXJhdGVkIHRoaXNcbiAgLy8gICAgICAgICAgICAgICBjaHVuayBvZiBjb2RlLFxuICAvLyAgICAgICBvcmlnaW5hbExpbmU6IFRoZSBsaW5lIG51bWJlciBpbiB0aGUgb3JpZ2luYWwgc291cmNlIHRoYXRcbiAgLy8gICAgICAgICAgICAgICAgICAgICBjb3JyZXNwb25kcyB0byB0aGlzIGNodW5rIG9mIGdlbmVyYXRlZCBjb2RlLFxuICAvLyAgICAgICBvcmlnaW5hbENvbHVtbjogVGhlIGNvbHVtbiBudW1iZXIgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZSB0aGF0XG4gIC8vICAgICAgICAgICAgICAgICAgICAgICBjb3JyZXNwb25kcyB0byB0aGlzIGNodW5rIG9mIGdlbmVyYXRlZCBjb2RlLFxuICAvLyAgICAgICBuYW1lOiBUaGUgbmFtZSBvZiB0aGUgb3JpZ2luYWwgc3ltYm9sIHdoaWNoIGdlbmVyYXRlZCB0aGlzIGNodW5rIG9mXG4gIC8vICAgICAgICAgICAgIGNvZGUuXG4gIC8vICAgICB9XG4gIC8vXG4gIC8vIEFsbCBwcm9wZXJ0aWVzIGV4Y2VwdCBmb3IgYGdlbmVyYXRlZExpbmVgIGFuZCBgZ2VuZXJhdGVkQ29sdW1uYCBjYW4gYmVcbiAgLy8gYG51bGxgLlxuICAvL1xuICAvLyBgX2dlbmVyYXRlZE1hcHBpbmdzYCBpcyBvcmRlcmVkIGJ5IHRoZSBnZW5lcmF0ZWQgcG9zaXRpb25zLlxuICAvL1xuICAvLyBgX29yaWdpbmFsTWFwcGluZ3NgIGlzIG9yZGVyZWQgYnkgdGhlIG9yaWdpbmFsIHBvc2l0aW9ucy5cblxuICBTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuX19nZW5lcmF0ZWRNYXBwaW5ncyA9IG51bGw7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUsICdfZ2VuZXJhdGVkTWFwcGluZ3MnLCB7XG4gICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoIXRoaXMuX19nZW5lcmF0ZWRNYXBwaW5ncykge1xuICAgICAgICB0aGlzLl9wYXJzZU1hcHBpbmdzKHRoaXMuX21hcHBpbmdzLCB0aGlzLnNvdXJjZVJvb3QpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5fX2dlbmVyYXRlZE1hcHBpbmdzO1xuICAgIH1cbiAgfSk7XG5cbiAgU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLl9fb3JpZ2luYWxNYXBwaW5ncyA9IG51bGw7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUsICdfb3JpZ2luYWxNYXBwaW5ncycsIHtcbiAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmICghdGhpcy5fX29yaWdpbmFsTWFwcGluZ3MpIHtcbiAgICAgICAgdGhpcy5fcGFyc2VNYXBwaW5ncyh0aGlzLl9tYXBwaW5ncywgdGhpcy5zb3VyY2VSb290KTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMuX19vcmlnaW5hbE1hcHBpbmdzO1xuICAgIH1cbiAgfSk7XG5cbiAgU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLl9jaGFySXNNYXBwaW5nU2VwYXJhdG9yID1cbiAgICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9jaGFySXNNYXBwaW5nU2VwYXJhdG9yKGFTdHIsIGluZGV4KSB7XG4gICAgICB2YXIgYyA9IGFTdHIuY2hhckF0KGluZGV4KTtcbiAgICAgIHJldHVybiBjID09PSBcIjtcIiB8fCBjID09PSBcIixcIjtcbiAgICB9O1xuXG4gIC8qKlxuICAgKiBQYXJzZSB0aGUgbWFwcGluZ3MgaW4gYSBzdHJpbmcgaW4gdG8gYSBkYXRhIHN0cnVjdHVyZSB3aGljaCB3ZSBjYW4gZWFzaWx5XG4gICAqIHF1ZXJ5ICh0aGUgb3JkZXJlZCBhcnJheXMgaW4gdGhlIGB0aGlzLl9fZ2VuZXJhdGVkTWFwcGluZ3NgIGFuZFxuICAgKiBgdGhpcy5fX29yaWdpbmFsTWFwcGluZ3NgIHByb3BlcnRpZXMpLlxuICAgKi9cbiAgU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLl9wYXJzZU1hcHBpbmdzID1cbiAgICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9wYXJzZU1hcHBpbmdzKGFTdHIsIGFTb3VyY2VSb290KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJTdWJjbGFzc2VzIG11c3QgaW1wbGVtZW50IF9wYXJzZU1hcHBpbmdzXCIpO1xuICAgIH07XG5cbiAgU291cmNlTWFwQ29uc3VtZXIuR0VORVJBVEVEX09SREVSID0gMTtcbiAgU291cmNlTWFwQ29uc3VtZXIuT1JJR0lOQUxfT1JERVIgPSAyO1xuXG4gIFNvdXJjZU1hcENvbnN1bWVyLkdSRUFURVNUX0xPV0VSX0JPVU5EID0gMTtcbiAgU291cmNlTWFwQ29uc3VtZXIuTEVBU1RfVVBQRVJfQk9VTkQgPSAyO1xuXG4gIC8qKlxuICAgKiBJdGVyYXRlIG92ZXIgZWFjaCBtYXBwaW5nIGJldHdlZW4gYW4gb3JpZ2luYWwgc291cmNlL2xpbmUvY29sdW1uIGFuZCBhXG4gICAqIGdlbmVyYXRlZCBsaW5lL2NvbHVtbiBpbiB0aGlzIHNvdXJjZSBtYXAuXG4gICAqXG4gICAqIEBwYXJhbSBGdW5jdGlvbiBhQ2FsbGJhY2tcbiAgICogICAgICAgIFRoZSBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCB3aXRoIGVhY2ggbWFwcGluZy5cbiAgICogQHBhcmFtIE9iamVjdCBhQ29udGV4dFxuICAgKiAgICAgICAgT3B0aW9uYWwuIElmIHNwZWNpZmllZCwgdGhpcyBvYmplY3Qgd2lsbCBiZSB0aGUgdmFsdWUgb2YgYHRoaXNgIGV2ZXJ5XG4gICAqICAgICAgICB0aW1lIHRoYXQgYGFDYWxsYmFja2AgaXMgY2FsbGVkLlxuICAgKiBAcGFyYW0gYU9yZGVyXG4gICAqICAgICAgICBFaXRoZXIgYFNvdXJjZU1hcENvbnN1bWVyLkdFTkVSQVRFRF9PUkRFUmAgb3JcbiAgICogICAgICAgIGBTb3VyY2VNYXBDb25zdW1lci5PUklHSU5BTF9PUkRFUmAuIFNwZWNpZmllcyB3aGV0aGVyIHlvdSB3YW50IHRvXG4gICAqICAgICAgICBpdGVyYXRlIG92ZXIgdGhlIG1hcHBpbmdzIHNvcnRlZCBieSB0aGUgZ2VuZXJhdGVkIGZpbGUncyBsaW5lL2NvbHVtblxuICAgKiAgICAgICAgb3JkZXIgb3IgdGhlIG9yaWdpbmFsJ3Mgc291cmNlL2xpbmUvY29sdW1uIG9yZGVyLCByZXNwZWN0aXZlbHkuIERlZmF1bHRzIHRvXG4gICAqICAgICAgICBgU291cmNlTWFwQ29uc3VtZXIuR0VORVJBVEVEX09SREVSYC5cbiAgICovXG4gIFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5lYWNoTWFwcGluZyA9XG4gICAgZnVuY3Rpb24gU291cmNlTWFwQ29uc3VtZXJfZWFjaE1hcHBpbmcoYUNhbGxiYWNrLCBhQ29udGV4dCwgYU9yZGVyKSB7XG4gICAgICB2YXIgY29udGV4dCA9IGFDb250ZXh0IHx8IG51bGw7XG4gICAgICB2YXIgb3JkZXIgPSBhT3JkZXIgfHwgU291cmNlTWFwQ29uc3VtZXIuR0VORVJBVEVEX09SREVSO1xuXG4gICAgICB2YXIgbWFwcGluZ3M7XG4gICAgICBzd2l0Y2ggKG9yZGVyKSB7XG4gICAgICBjYXNlIFNvdXJjZU1hcENvbnN1bWVyLkdFTkVSQVRFRF9PUkRFUjpcbiAgICAgICAgbWFwcGluZ3MgPSB0aGlzLl9nZW5lcmF0ZWRNYXBwaW5ncztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFNvdXJjZU1hcENvbnN1bWVyLk9SSUdJTkFMX09SREVSOlxuICAgICAgICBtYXBwaW5ncyA9IHRoaXMuX29yaWdpbmFsTWFwcGluZ3M7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5rbm93biBvcmRlciBvZiBpdGVyYXRpb24uXCIpO1xuICAgICAgfVxuXG4gICAgICB2YXIgc291cmNlUm9vdCA9IHRoaXMuc291cmNlUm9vdDtcbiAgICAgIG1hcHBpbmdzLm1hcChmdW5jdGlvbiAobWFwcGluZykge1xuICAgICAgICB2YXIgc291cmNlID0gbWFwcGluZy5zb3VyY2UgPT09IG51bGwgPyBudWxsIDogdGhpcy5fc291cmNlcy5hdChtYXBwaW5nLnNvdXJjZSk7XG4gICAgICAgIGlmIChzb3VyY2UgIT0gbnVsbCAmJiBzb3VyY2VSb290ICE9IG51bGwpIHtcbiAgICAgICAgICBzb3VyY2UgPSB1dGlsLmpvaW4oc291cmNlUm9vdCwgc291cmNlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHNvdXJjZTogc291cmNlLFxuICAgICAgICAgIGdlbmVyYXRlZExpbmU6IG1hcHBpbmcuZ2VuZXJhdGVkTGluZSxcbiAgICAgICAgICBnZW5lcmF0ZWRDb2x1bW46IG1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uLFxuICAgICAgICAgIG9yaWdpbmFsTGluZTogbWFwcGluZy5vcmlnaW5hbExpbmUsXG4gICAgICAgICAgb3JpZ2luYWxDb2x1bW46IG1hcHBpbmcub3JpZ2luYWxDb2x1bW4sXG4gICAgICAgICAgbmFtZTogbWFwcGluZy5uYW1lID09PSBudWxsID8gbnVsbCA6IHRoaXMuX25hbWVzLmF0KG1hcHBpbmcubmFtZSlcbiAgICAgICAgfTtcbiAgICAgIH0sIHRoaXMpLmZvckVhY2goYUNhbGxiYWNrLCBjb250ZXh0KTtcbiAgICB9O1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFsbCBnZW5lcmF0ZWQgbGluZSBhbmQgY29sdW1uIGluZm9ybWF0aW9uIGZvciB0aGUgb3JpZ2luYWwgc291cmNlLFxuICAgKiBsaW5lLCBhbmQgY29sdW1uIHByb3ZpZGVkLiBJZiBubyBjb2x1bW4gaXMgcHJvdmlkZWQsIHJldHVybnMgYWxsIG1hcHBpbmdzXG4gICAqIGNvcnJlc3BvbmRpbmcgdG8gYSBlaXRoZXIgdGhlIGxpbmUgd2UgYXJlIHNlYXJjaGluZyBmb3Igb3IgdGhlIG5leHRcbiAgICogY2xvc2VzdCBsaW5lIHRoYXQgaGFzIGFueSBtYXBwaW5ncy4gT3RoZXJ3aXNlLCByZXR1cm5zIGFsbCBtYXBwaW5nc1xuICAgKiBjb3JyZXNwb25kaW5nIHRvIHRoZSBnaXZlbiBsaW5lIGFuZCBlaXRoZXIgdGhlIGNvbHVtbiB3ZSBhcmUgc2VhcmNoaW5nIGZvclxuICAgKiBvciB0aGUgbmV4dCBjbG9zZXN0IGNvbHVtbiB0aGF0IGhhcyBhbnkgb2Zmc2V0cy5cbiAgICpcbiAgICogVGhlIG9ubHkgYXJndW1lbnQgaXMgYW4gb2JqZWN0IHdpdGggdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOlxuICAgKlxuICAgKiAgIC0gc291cmNlOiBUaGUgZmlsZW5hbWUgb2YgdGhlIG9yaWdpbmFsIHNvdXJjZS5cbiAgICogICAtIGxpbmU6IFRoZSBsaW5lIG51bWJlciBpbiB0aGUgb3JpZ2luYWwgc291cmNlLlxuICAgKiAgIC0gY29sdW1uOiBPcHRpb25hbC4gdGhlIGNvbHVtbiBudW1iZXIgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZS5cbiAgICpcbiAgICogYW5kIGFuIGFycmF5IG9mIG9iamVjdHMgaXMgcmV0dXJuZWQsIGVhY2ggd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gICAqXG4gICAqICAgLSBsaW5lOiBUaGUgbGluZSBudW1iZXIgaW4gdGhlIGdlbmVyYXRlZCBzb3VyY2UsIG9yIG51bGwuXG4gICAqICAgLSBjb2x1bW46IFRoZSBjb2x1bW4gbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgc291cmNlLCBvciBudWxsLlxuICAgKi9cbiAgU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLmFsbEdlbmVyYXRlZFBvc2l0aW9uc0ZvciA9XG4gICAgZnVuY3Rpb24gU291cmNlTWFwQ29uc3VtZXJfYWxsR2VuZXJhdGVkUG9zaXRpb25zRm9yKGFBcmdzKSB7XG4gICAgICB2YXIgbGluZSA9IHV0aWwuZ2V0QXJnKGFBcmdzLCAnbGluZScpO1xuXG4gICAgICAvLyBXaGVuIHRoZXJlIGlzIG5vIGV4YWN0IG1hdGNoLCBCYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fZmluZE1hcHBpbmdcbiAgICAgIC8vIHJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBjbG9zZXN0IG1hcHBpbmcgbGVzcyB0aGFuIHRoZSBuZWVkbGUuIEJ5XG4gICAgICAvLyBzZXR0aW5nIG5lZWRsZS5vcmlnaW5hbENvbHVtbiB0byAwLCB3ZSB0aHVzIGZpbmQgdGhlIGxhc3QgbWFwcGluZyBmb3JcbiAgICAgIC8vIHRoZSBnaXZlbiBsaW5lLCBwcm92aWRlZCBzdWNoIGEgbWFwcGluZyBleGlzdHMuXG4gICAgICB2YXIgbmVlZGxlID0ge1xuICAgICAgICBzb3VyY2U6IHV0aWwuZ2V0QXJnKGFBcmdzLCAnc291cmNlJyksXG4gICAgICAgIG9yaWdpbmFsTGluZTogbGluZSxcbiAgICAgICAgb3JpZ2luYWxDb2x1bW46IHV0aWwuZ2V0QXJnKGFBcmdzLCAnY29sdW1uJywgMClcbiAgICAgIH07XG5cbiAgICAgIGlmICh0aGlzLnNvdXJjZVJvb3QgIT0gbnVsbCkge1xuICAgICAgICBuZWVkbGUuc291cmNlID0gdXRpbC5yZWxhdGl2ZSh0aGlzLnNvdXJjZVJvb3QsIG5lZWRsZS5zb3VyY2UpO1xuICAgICAgfVxuICAgICAgaWYgKCF0aGlzLl9zb3VyY2VzLmhhcyhuZWVkbGUuc291cmNlKSkge1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBuZWVkbGUuc291cmNlID0gdGhpcy5fc291cmNlcy5pbmRleE9mKG5lZWRsZS5zb3VyY2UpO1xuXG4gICAgICB2YXIgbWFwcGluZ3MgPSBbXTtcblxuICAgICAgdmFyIGluZGV4ID0gdGhpcy5fZmluZE1hcHBpbmcobmVlZGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3JpZ2luYWxNYXBwaW5ncyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwib3JpZ2luYWxMaW5lXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIm9yaWdpbmFsQ29sdW1uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1dGlsLmNvbXBhcmVCeU9yaWdpbmFsUG9zaXRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmluYXJ5U2VhcmNoLkxFQVNUX1VQUEVSX0JPVU5EKTtcbiAgICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICAgIHZhciBtYXBwaW5nID0gdGhpcy5fb3JpZ2luYWxNYXBwaW5nc1tpbmRleF07XG5cbiAgICAgICAgaWYgKGFBcmdzLmNvbHVtbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgdmFyIG9yaWdpbmFsTGluZSA9IG1hcHBpbmcub3JpZ2luYWxMaW5lO1xuXG4gICAgICAgICAgLy8gSXRlcmF0ZSB1bnRpbCBlaXRoZXIgd2UgcnVuIG91dCBvZiBtYXBwaW5ncywgb3Igd2UgcnVuIGludG9cbiAgICAgICAgICAvLyBhIG1hcHBpbmcgZm9yIGEgZGlmZmVyZW50IGxpbmUgdGhhbiB0aGUgb25lIHdlIGZvdW5kLiBTaW5jZVxuICAgICAgICAgIC8vIG1hcHBpbmdzIGFyZSBzb3J0ZWQsIHRoaXMgaXMgZ3VhcmFudGVlZCB0byBmaW5kIGFsbCBtYXBwaW5ncyBmb3JcbiAgICAgICAgICAvLyB0aGUgbGluZSB3ZSBmb3VuZC5cbiAgICAgICAgICB3aGlsZSAobWFwcGluZyAmJiBtYXBwaW5nLm9yaWdpbmFsTGluZSA9PT0gb3JpZ2luYWxMaW5lKSB7XG4gICAgICAgICAgICBtYXBwaW5ncy5wdXNoKHtcbiAgICAgICAgICAgICAgbGluZTogdXRpbC5nZXRBcmcobWFwcGluZywgJ2dlbmVyYXRlZExpbmUnLCBudWxsKSxcbiAgICAgICAgICAgICAgY29sdW1uOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAnZ2VuZXJhdGVkQ29sdW1uJywgbnVsbCksXG4gICAgICAgICAgICAgIGxhc3RDb2x1bW46IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdsYXN0R2VuZXJhdGVkQ29sdW1uJywgbnVsbClcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBtYXBwaW5nID0gdGhpcy5fb3JpZ2luYWxNYXBwaW5nc1srK2luZGV4XTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFyIG9yaWdpbmFsQ29sdW1uID0gbWFwcGluZy5vcmlnaW5hbENvbHVtbjtcblxuICAgICAgICAgIC8vIEl0ZXJhdGUgdW50aWwgZWl0aGVyIHdlIHJ1biBvdXQgb2YgbWFwcGluZ3MsIG9yIHdlIHJ1biBpbnRvXG4gICAgICAgICAgLy8gYSBtYXBwaW5nIGZvciBhIGRpZmZlcmVudCBsaW5lIHRoYW4gdGhlIG9uZSB3ZSB3ZXJlIHNlYXJjaGluZyBmb3IuXG4gICAgICAgICAgLy8gU2luY2UgbWFwcGluZ3MgYXJlIHNvcnRlZCwgdGhpcyBpcyBndWFyYW50ZWVkIHRvIGZpbmQgYWxsIG1hcHBpbmdzIGZvclxuICAgICAgICAgIC8vIHRoZSBsaW5lIHdlIGFyZSBzZWFyY2hpbmcgZm9yLlxuICAgICAgICAgIHdoaWxlIChtYXBwaW5nICYmXG4gICAgICAgICAgICAgICAgIG1hcHBpbmcub3JpZ2luYWxMaW5lID09PSBsaW5lICYmXG4gICAgICAgICAgICAgICAgIG1hcHBpbmcub3JpZ2luYWxDb2x1bW4gPT0gb3JpZ2luYWxDb2x1bW4pIHtcbiAgICAgICAgICAgIG1hcHBpbmdzLnB1c2goe1xuICAgICAgICAgICAgICBsaW5lOiB1dGlsLmdldEFyZyhtYXBwaW5nLCAnZ2VuZXJhdGVkTGluZScsIG51bGwpLFxuICAgICAgICAgICAgICBjb2x1bW46IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdnZW5lcmF0ZWRDb2x1bW4nLCBudWxsKSxcbiAgICAgICAgICAgICAgbGFzdENvbHVtbjogdXRpbC5nZXRBcmcobWFwcGluZywgJ2xhc3RHZW5lcmF0ZWRDb2x1bW4nLCBudWxsKVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIG1hcHBpbmcgPSB0aGlzLl9vcmlnaW5hbE1hcHBpbmdzWysraW5kZXhdO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gbWFwcGluZ3M7XG4gICAgfTtcblxuICBleHBvcnRzLlNvdXJjZU1hcENvbnN1bWVyID0gU291cmNlTWFwQ29uc3VtZXI7XG5cbiAgLyoqXG4gICAqIEEgQmFzaWNTb3VyY2VNYXBDb25zdW1lciBpbnN0YW5jZSByZXByZXNlbnRzIGEgcGFyc2VkIHNvdXJjZSBtYXAgd2hpY2ggd2UgY2FuXG4gICAqIHF1ZXJ5IGZvciBpbmZvcm1hdGlvbiBhYm91dCB0aGUgb3JpZ2luYWwgZmlsZSBwb3NpdGlvbnMgYnkgZ2l2aW5nIGl0IGEgZmlsZVxuICAgKiBwb3NpdGlvbiBpbiB0aGUgZ2VuZXJhdGVkIHNvdXJjZS5cbiAgICpcbiAgICogVGhlIG9ubHkgcGFyYW1ldGVyIGlzIHRoZSByYXcgc291cmNlIG1hcCAoZWl0aGVyIGFzIGEgSlNPTiBzdHJpbmcsIG9yXG4gICAqIGFscmVhZHkgcGFyc2VkIHRvIGFuIG9iamVjdCkuIEFjY29yZGluZyB0byB0aGUgc3BlYywgc291cmNlIG1hcHMgaGF2ZSB0aGVcbiAgICogZm9sbG93aW5nIGF0dHJpYnV0ZXM6XG4gICAqXG4gICAqICAgLSB2ZXJzaW9uOiBXaGljaCB2ZXJzaW9uIG9mIHRoZSBzb3VyY2UgbWFwIHNwZWMgdGhpcyBtYXAgaXMgZm9sbG93aW5nLlxuICAgKiAgIC0gc291cmNlczogQW4gYXJyYXkgb2YgVVJMcyB0byB0aGUgb3JpZ2luYWwgc291cmNlIGZpbGVzLlxuICAgKiAgIC0gbmFtZXM6IEFuIGFycmF5IG9mIGlkZW50aWZpZXJzIHdoaWNoIGNhbiBiZSByZWZlcnJlbmNlZCBieSBpbmRpdmlkdWFsIG1hcHBpbmdzLlxuICAgKiAgIC0gc291cmNlUm9vdDogT3B0aW9uYWwuIFRoZSBVUkwgcm9vdCBmcm9tIHdoaWNoIGFsbCBzb3VyY2VzIGFyZSByZWxhdGl2ZS5cbiAgICogICAtIHNvdXJjZXNDb250ZW50OiBPcHRpb25hbC4gQW4gYXJyYXkgb2YgY29udGVudHMgb2YgdGhlIG9yaWdpbmFsIHNvdXJjZSBmaWxlcy5cbiAgICogICAtIG1hcHBpbmdzOiBBIHN0cmluZyBvZiBiYXNlNjQgVkxRcyB3aGljaCBjb250YWluIHRoZSBhY3R1YWwgbWFwcGluZ3MuXG4gICAqICAgLSBmaWxlOiBPcHRpb25hbC4gVGhlIGdlbmVyYXRlZCBmaWxlIHRoaXMgc291cmNlIG1hcCBpcyBhc3NvY2lhdGVkIHdpdGguXG4gICAqXG4gICAqIEhlcmUgaXMgYW4gZXhhbXBsZSBzb3VyY2UgbWFwLCB0YWtlbiBmcm9tIHRoZSBzb3VyY2UgbWFwIHNwZWNbMF06XG4gICAqXG4gICAqICAgICB7XG4gICAqICAgICAgIHZlcnNpb24gOiAzLFxuICAgKiAgICAgICBmaWxlOiBcIm91dC5qc1wiLFxuICAgKiAgICAgICBzb3VyY2VSb290IDogXCJcIixcbiAgICogICAgICAgc291cmNlczogW1wiZm9vLmpzXCIsIFwiYmFyLmpzXCJdLFxuICAgKiAgICAgICBuYW1lczogW1wic3JjXCIsIFwibWFwc1wiLCBcImFyZVwiLCBcImZ1blwiXSxcbiAgICogICAgICAgbWFwcGluZ3M6IFwiQUEsQUI7O0FCQ0RFO1wiXG4gICAqICAgICB9XG4gICAqXG4gICAqIFswXTogaHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20vZG9jdW1lbnQvZC8xVTFSR0FlaFF3UnlwVVRvdkYxS1JscGlPRnplMGItXzJnYzZmQUgwS1kway9lZGl0P3BsaT0xI1xuICAgKi9cbiAgZnVuY3Rpb24gQmFzaWNTb3VyY2VNYXBDb25zdW1lcihhU291cmNlTWFwKSB7XG4gICAgdmFyIHNvdXJjZU1hcCA9IGFTb3VyY2VNYXA7XG4gICAgaWYgKHR5cGVvZiBhU291cmNlTWFwID09PSAnc3RyaW5nJykge1xuICAgICAgc291cmNlTWFwID0gSlNPTi5wYXJzZShhU291cmNlTWFwLnJlcGxhY2UoL15cXClcXF1cXH0nLywgJycpKTtcbiAgICB9XG5cbiAgICB2YXIgdmVyc2lvbiA9IHV0aWwuZ2V0QXJnKHNvdXJjZU1hcCwgJ3ZlcnNpb24nKTtcbiAgICB2YXIgc291cmNlcyA9IHV0aWwuZ2V0QXJnKHNvdXJjZU1hcCwgJ3NvdXJjZXMnKTtcbiAgICAvLyBTYXNzIDMuMyBsZWF2ZXMgb3V0IHRoZSAnbmFtZXMnIGFycmF5LCBzbyB3ZSBkZXZpYXRlIGZyb20gdGhlIHNwZWMgKHdoaWNoXG4gICAgLy8gcmVxdWlyZXMgdGhlIGFycmF5KSB0byBwbGF5IG5pY2UgaGVyZS5cbiAgICB2YXIgbmFtZXMgPSB1dGlsLmdldEFyZyhzb3VyY2VNYXAsICduYW1lcycsIFtdKTtcbiAgICB2YXIgc291cmNlUm9vdCA9IHV0aWwuZ2V0QXJnKHNvdXJjZU1hcCwgJ3NvdXJjZVJvb3QnLCBudWxsKTtcbiAgICB2YXIgc291cmNlc0NvbnRlbnQgPSB1dGlsLmdldEFyZyhzb3VyY2VNYXAsICdzb3VyY2VzQ29udGVudCcsIG51bGwpO1xuICAgIHZhciBtYXBwaW5ncyA9IHV0aWwuZ2V0QXJnKHNvdXJjZU1hcCwgJ21hcHBpbmdzJyk7XG4gICAgdmFyIGZpbGUgPSB1dGlsLmdldEFyZyhzb3VyY2VNYXAsICdmaWxlJywgbnVsbCk7XG5cbiAgICAvLyBPbmNlIGFnYWluLCBTYXNzIGRldmlhdGVzIGZyb20gdGhlIHNwZWMgYW5kIHN1cHBsaWVzIHRoZSB2ZXJzaW9uIGFzIGFcbiAgICAvLyBzdHJpbmcgcmF0aGVyIHRoYW4gYSBudW1iZXIsIHNvIHdlIHVzZSBsb29zZSBlcXVhbGl0eSBjaGVja2luZyBoZXJlLlxuICAgIGlmICh2ZXJzaW9uICE9IHRoaXMuX3ZlcnNpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgdmVyc2lvbjogJyArIHZlcnNpb24pO1xuICAgIH1cblxuICAgIHNvdXJjZXMgPSBzb3VyY2VzXG4gICAgICAvLyBTb21lIHNvdXJjZSBtYXBzIHByb2R1Y2UgcmVsYXRpdmUgc291cmNlIHBhdGhzIGxpa2UgXCIuL2Zvby5qc1wiIGluc3RlYWQgb2ZcbiAgICAgIC8vIFwiZm9vLmpzXCIuICBOb3JtYWxpemUgdGhlc2UgZmlyc3Qgc28gdGhhdCBmdXR1cmUgY29tcGFyaXNvbnMgd2lsbCBzdWNjZWVkLlxuICAgICAgLy8gU2VlIGJ1Z3ppbC5sYS8xMDkwNzY4LlxuICAgICAgLm1hcCh1dGlsLm5vcm1hbGl6ZSlcbiAgICAgIC8vIEFsd2F5cyBlbnN1cmUgdGhhdCBhYnNvbHV0ZSBzb3VyY2VzIGFyZSBpbnRlcm5hbGx5IHN0b3JlZCByZWxhdGl2ZSB0b1xuICAgICAgLy8gdGhlIHNvdXJjZSByb290LCBpZiB0aGUgc291cmNlIHJvb3QgaXMgYWJzb2x1dGUuIE5vdCBkb2luZyB0aGlzIHdvdWxkXG4gICAgICAvLyBiZSBwYXJ0aWN1bGFybHkgcHJvYmxlbWF0aWMgd2hlbiB0aGUgc291cmNlIHJvb3QgaXMgYSBwcmVmaXggb2YgdGhlXG4gICAgICAvLyBzb3VyY2UgKHZhbGlkLCBidXQgd2h5Pz8pLiBTZWUgZ2l0aHViIGlzc3VlICMxOTkgYW5kIGJ1Z3ppbC5sYS8xMTg4OTgyLlxuICAgICAgLm1hcChmdW5jdGlvbiAoc291cmNlKSB7XG4gICAgICAgIHJldHVybiBzb3VyY2VSb290ICYmIHV0aWwuaXNBYnNvbHV0ZShzb3VyY2VSb290KSAmJiB1dGlsLmlzQWJzb2x1dGUoc291cmNlKVxuICAgICAgICAgID8gdXRpbC5yZWxhdGl2ZShzb3VyY2VSb290LCBzb3VyY2UpXG4gICAgICAgICAgOiBzb3VyY2U7XG4gICAgICB9KTtcblxuICAgIC8vIFBhc3MgYHRydWVgIGJlbG93IHRvIGFsbG93IGR1cGxpY2F0ZSBuYW1lcyBhbmQgc291cmNlcy4gV2hpbGUgc291cmNlIG1hcHNcbiAgICAvLyBhcmUgaW50ZW5kZWQgdG8gYmUgY29tcHJlc3NlZCBhbmQgZGVkdXBsaWNhdGVkLCB0aGUgVHlwZVNjcmlwdCBjb21waWxlclxuICAgIC8vIHNvbWV0aW1lcyBnZW5lcmF0ZXMgc291cmNlIG1hcHMgd2l0aCBkdXBsaWNhdGVzIGluIHRoZW0uIFNlZSBHaXRodWIgaXNzdWVcbiAgICAvLyAjNzIgYW5kIGJ1Z3ppbC5sYS84ODk0OTIuXG4gICAgdGhpcy5fbmFtZXMgPSBBcnJheVNldC5mcm9tQXJyYXkobmFtZXMsIHRydWUpO1xuICAgIHRoaXMuX3NvdXJjZXMgPSBBcnJheVNldC5mcm9tQXJyYXkoc291cmNlcywgdHJ1ZSk7XG5cbiAgICB0aGlzLnNvdXJjZVJvb3QgPSBzb3VyY2VSb290O1xuICAgIHRoaXMuc291cmNlc0NvbnRlbnQgPSBzb3VyY2VzQ29udGVudDtcbiAgICB0aGlzLl9tYXBwaW5ncyA9IG1hcHBpbmdzO1xuICAgIHRoaXMuZmlsZSA9IGZpbGU7XG4gIH1cblxuICBCYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlKTtcbiAgQmFzaWNTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuY29uc3VtZXIgPSBTb3VyY2VNYXBDb25zdW1lcjtcblxuICAvKipcbiAgICogQ3JlYXRlIGEgQmFzaWNTb3VyY2VNYXBDb25zdW1lciBmcm9tIGEgU291cmNlTWFwR2VuZXJhdG9yLlxuICAgKlxuICAgKiBAcGFyYW0gU291cmNlTWFwR2VuZXJhdG9yIGFTb3VyY2VNYXBcbiAgICogICAgICAgIFRoZSBzb3VyY2UgbWFwIHRoYXQgd2lsbCBiZSBjb25zdW1lZC5cbiAgICogQHJldHVybnMgQmFzaWNTb3VyY2VNYXBDb25zdW1lclxuICAgKi9cbiAgQmFzaWNTb3VyY2VNYXBDb25zdW1lci5mcm9tU291cmNlTWFwID1cbiAgICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9mcm9tU291cmNlTWFwKGFTb3VyY2VNYXApIHtcbiAgICAgIHZhciBzbWMgPSBPYmplY3QuY3JlYXRlKEJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlKTtcblxuICAgICAgdmFyIG5hbWVzID0gc21jLl9uYW1lcyA9IEFycmF5U2V0LmZyb21BcnJheShhU291cmNlTWFwLl9uYW1lcy50b0FycmF5KCksIHRydWUpO1xuICAgICAgdmFyIHNvdXJjZXMgPSBzbWMuX3NvdXJjZXMgPSBBcnJheVNldC5mcm9tQXJyYXkoYVNvdXJjZU1hcC5fc291cmNlcy50b0FycmF5KCksIHRydWUpO1xuICAgICAgc21jLnNvdXJjZVJvb3QgPSBhU291cmNlTWFwLl9zb3VyY2VSb290O1xuICAgICAgc21jLnNvdXJjZXNDb250ZW50ID0gYVNvdXJjZU1hcC5fZ2VuZXJhdGVTb3VyY2VzQ29udGVudChzbWMuX3NvdXJjZXMudG9BcnJheSgpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbWMuc291cmNlUm9vdCk7XG4gICAgICBzbWMuZmlsZSA9IGFTb3VyY2VNYXAuX2ZpbGU7XG5cbiAgICAgIC8vIEJlY2F1c2Ugd2UgYXJlIG1vZGlmeWluZyB0aGUgZW50cmllcyAoYnkgY29udmVydGluZyBzdHJpbmcgc291cmNlcyBhbmRcbiAgICAgIC8vIG5hbWVzIHRvIGluZGljZXMgaW50byB0aGUgc291cmNlcyBhbmQgbmFtZXMgQXJyYXlTZXRzKSwgd2UgaGF2ZSB0byBtYWtlXG4gICAgICAvLyBhIGNvcHkgb2YgdGhlIGVudHJ5IG9yIGVsc2UgYmFkIHRoaW5ncyBoYXBwZW4uIFNoYXJlZCBtdXRhYmxlIHN0YXRlXG4gICAgICAvLyBzdHJpa2VzIGFnYWluISBTZWUgZ2l0aHViIGlzc3VlICMxOTEuXG5cbiAgICAgIHZhciBnZW5lcmF0ZWRNYXBwaW5ncyA9IGFTb3VyY2VNYXAuX21hcHBpbmdzLnRvQXJyYXkoKS5zbGljZSgpO1xuICAgICAgdmFyIGRlc3RHZW5lcmF0ZWRNYXBwaW5ncyA9IHNtYy5fX2dlbmVyYXRlZE1hcHBpbmdzID0gW107XG4gICAgICB2YXIgZGVzdE9yaWdpbmFsTWFwcGluZ3MgPSBzbWMuX19vcmlnaW5hbE1hcHBpbmdzID0gW107XG5cbiAgICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGggPSBnZW5lcmF0ZWRNYXBwaW5ncy5sZW5ndGg7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgc3JjTWFwcGluZyA9IGdlbmVyYXRlZE1hcHBpbmdzW2ldO1xuICAgICAgICB2YXIgZGVzdE1hcHBpbmcgPSBuZXcgTWFwcGluZztcbiAgICAgICAgZGVzdE1hcHBpbmcuZ2VuZXJhdGVkTGluZSA9IHNyY01hcHBpbmcuZ2VuZXJhdGVkTGluZTtcbiAgICAgICAgZGVzdE1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uID0gc3JjTWFwcGluZy5nZW5lcmF0ZWRDb2x1bW47XG5cbiAgICAgICAgaWYgKHNyY01hcHBpbmcuc291cmNlKSB7XG4gICAgICAgICAgZGVzdE1hcHBpbmcuc291cmNlID0gc291cmNlcy5pbmRleE9mKHNyY01hcHBpbmcuc291cmNlKTtcbiAgICAgICAgICBkZXN0TWFwcGluZy5vcmlnaW5hbExpbmUgPSBzcmNNYXBwaW5nLm9yaWdpbmFsTGluZTtcbiAgICAgICAgICBkZXN0TWFwcGluZy5vcmlnaW5hbENvbHVtbiA9IHNyY01hcHBpbmcub3JpZ2luYWxDb2x1bW47XG5cbiAgICAgICAgICBpZiAoc3JjTWFwcGluZy5uYW1lKSB7XG4gICAgICAgICAgICBkZXN0TWFwcGluZy5uYW1lID0gbmFtZXMuaW5kZXhPZihzcmNNYXBwaW5nLm5hbWUpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGRlc3RPcmlnaW5hbE1hcHBpbmdzLnB1c2goZGVzdE1hcHBpbmcpO1xuICAgICAgICB9XG5cbiAgICAgICAgZGVzdEdlbmVyYXRlZE1hcHBpbmdzLnB1c2goZGVzdE1hcHBpbmcpO1xuICAgICAgfVxuXG4gICAgICBxdWlja1NvcnQoc21jLl9fb3JpZ2luYWxNYXBwaW5ncywgdXRpbC5jb21wYXJlQnlPcmlnaW5hbFBvc2l0aW9ucyk7XG5cbiAgICAgIHJldHVybiBzbWM7XG4gICAgfTtcblxuICAvKipcbiAgICogVGhlIHZlcnNpb24gb2YgdGhlIHNvdXJjZSBtYXBwaW5nIHNwZWMgdGhhdCB3ZSBhcmUgY29uc3VtaW5nLlxuICAgKi9cbiAgQmFzaWNTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuX3ZlcnNpb24gPSAzO1xuXG4gIC8qKlxuICAgKiBUaGUgbGlzdCBvZiBvcmlnaW5hbCBzb3VyY2VzLlxuICAgKi9cbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLCAnc291cmNlcycsIHtcbiAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiB0aGlzLl9zb3VyY2VzLnRvQXJyYXkoKS5tYXAoZnVuY3Rpb24gKHMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc291cmNlUm9vdCAhPSBudWxsID8gdXRpbC5qb2luKHRoaXMuc291cmNlUm9vdCwgcykgOiBzO1xuICAgICAgfSwgdGhpcyk7XG4gICAgfVxuICB9KTtcblxuICAvKipcbiAgICogUHJvdmlkZSB0aGUgSklUIHdpdGggYSBuaWNlIHNoYXBlIC8gaGlkZGVuIGNsYXNzLlxuICAgKi9cbiAgZnVuY3Rpb24gTWFwcGluZygpIHtcbiAgICB0aGlzLmdlbmVyYXRlZExpbmUgPSAwO1xuICAgIHRoaXMuZ2VuZXJhdGVkQ29sdW1uID0gMDtcbiAgICB0aGlzLnNvdXJjZSA9IG51bGw7XG4gICAgdGhpcy5vcmlnaW5hbExpbmUgPSBudWxsO1xuICAgIHRoaXMub3JpZ2luYWxDb2x1bW4gPSBudWxsO1xuICAgIHRoaXMubmFtZSA9IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogUGFyc2UgdGhlIG1hcHBpbmdzIGluIGEgc3RyaW5nIGluIHRvIGEgZGF0YSBzdHJ1Y3R1cmUgd2hpY2ggd2UgY2FuIGVhc2lseVxuICAgKiBxdWVyeSAodGhlIG9yZGVyZWQgYXJyYXlzIGluIHRoZSBgdGhpcy5fX2dlbmVyYXRlZE1hcHBpbmdzYCBhbmRcbiAgICogYHRoaXMuX19vcmlnaW5hbE1hcHBpbmdzYCBwcm9wZXJ0aWVzKS5cbiAgICovXG4gIEJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLl9wYXJzZU1hcHBpbmdzID1cbiAgICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9wYXJzZU1hcHBpbmdzKGFTdHIsIGFTb3VyY2VSb290KSB7XG4gICAgICB2YXIgZ2VuZXJhdGVkTGluZSA9IDE7XG4gICAgICB2YXIgcHJldmlvdXNHZW5lcmF0ZWRDb2x1bW4gPSAwO1xuICAgICAgdmFyIHByZXZpb3VzT3JpZ2luYWxMaW5lID0gMDtcbiAgICAgIHZhciBwcmV2aW91c09yaWdpbmFsQ29sdW1uID0gMDtcbiAgICAgIHZhciBwcmV2aW91c1NvdXJjZSA9IDA7XG4gICAgICB2YXIgcHJldmlvdXNOYW1lID0gMDtcbiAgICAgIHZhciBsZW5ndGggPSBhU3RyLmxlbmd0aDtcbiAgICAgIHZhciBpbmRleCA9IDA7XG4gICAgICB2YXIgY2FjaGVkU2VnbWVudHMgPSB7fTtcbiAgICAgIHZhciB0ZW1wID0ge307XG4gICAgICB2YXIgb3JpZ2luYWxNYXBwaW5ncyA9IFtdO1xuICAgICAgdmFyIGdlbmVyYXRlZE1hcHBpbmdzID0gW107XG4gICAgICB2YXIgbWFwcGluZywgc3RyLCBzZWdtZW50LCBlbmQsIHZhbHVlO1xuXG4gICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHtcbiAgICAgICAgaWYgKGFTdHIuY2hhckF0KGluZGV4KSA9PT0gJzsnKSB7XG4gICAgICAgICAgZ2VuZXJhdGVkTGluZSsrO1xuICAgICAgICAgIGluZGV4Kys7XG4gICAgICAgICAgcHJldmlvdXNHZW5lcmF0ZWRDb2x1bW4gPSAwO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKGFTdHIuY2hhckF0KGluZGV4KSA9PT0gJywnKSB7XG4gICAgICAgICAgaW5kZXgrKztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBtYXBwaW5nID0gbmV3IE1hcHBpbmcoKTtcbiAgICAgICAgICBtYXBwaW5nLmdlbmVyYXRlZExpbmUgPSBnZW5lcmF0ZWRMaW5lO1xuXG4gICAgICAgICAgLy8gQmVjYXVzZSBlYWNoIG9mZnNldCBpcyBlbmNvZGVkIHJlbGF0aXZlIHRvIHRoZSBwcmV2aW91cyBvbmUsXG4gICAgICAgICAgLy8gbWFueSBzZWdtZW50cyBvZnRlbiBoYXZlIHRoZSBzYW1lIGVuY29kaW5nLiBXZSBjYW4gZXhwbG9pdCB0aGlzXG4gICAgICAgICAgLy8gZmFjdCBieSBjYWNoaW5nIHRoZSBwYXJzZWQgdmFyaWFibGUgbGVuZ3RoIGZpZWxkcyBvZiBlYWNoIHNlZ21lbnQsXG4gICAgICAgICAgLy8gYWxsb3dpbmcgdXMgdG8gYXZvaWQgYSBzZWNvbmQgcGFyc2UgaWYgd2UgZW5jb3VudGVyIHRoZSBzYW1lXG4gICAgICAgICAgLy8gc2VnbWVudCBhZ2Fpbi5cbiAgICAgICAgICBmb3IgKGVuZCA9IGluZGV4OyBlbmQgPCBsZW5ndGg7IGVuZCsrKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5fY2hhcklzTWFwcGluZ1NlcGFyYXRvcihhU3RyLCBlbmQpKSB7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBzdHIgPSBhU3RyLnNsaWNlKGluZGV4LCBlbmQpO1xuXG4gICAgICAgICAgc2VnbWVudCA9IGNhY2hlZFNlZ21lbnRzW3N0cl07XG4gICAgICAgICAgaWYgKHNlZ21lbnQpIHtcbiAgICAgICAgICAgIGluZGV4ICs9IHN0ci5sZW5ndGg7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNlZ21lbnQgPSBbXTtcbiAgICAgICAgICAgIHdoaWxlIChpbmRleCA8IGVuZCkge1xuICAgICAgICAgICAgICBiYXNlNjRWTFEuZGVjb2RlKGFTdHIsIGluZGV4LCB0ZW1wKTtcbiAgICAgICAgICAgICAgdmFsdWUgPSB0ZW1wLnZhbHVlO1xuICAgICAgICAgICAgICBpbmRleCA9IHRlbXAucmVzdDtcbiAgICAgICAgICAgICAgc2VnbWVudC5wdXNoKHZhbHVlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHNlZ21lbnQubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRm91bmQgYSBzb3VyY2UsIGJ1dCBubyBsaW5lIGFuZCBjb2x1bW4nKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHNlZ21lbnQubGVuZ3RoID09PSAzKSB7XG4gICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRm91bmQgYSBzb3VyY2UgYW5kIGxpbmUsIGJ1dCBubyBjb2x1bW4nKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY2FjaGVkU2VnbWVudHNbc3RyXSA9IHNlZ21lbnQ7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gR2VuZXJhdGVkIGNvbHVtbi5cbiAgICAgICAgICBtYXBwaW5nLmdlbmVyYXRlZENvbHVtbiA9IHByZXZpb3VzR2VuZXJhdGVkQ29sdW1uICsgc2VnbWVudFswXTtcbiAgICAgICAgICBwcmV2aW91c0dlbmVyYXRlZENvbHVtbiA9IG1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uO1xuXG4gICAgICAgICAgaWYgKHNlZ21lbnQubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgLy8gT3JpZ2luYWwgc291cmNlLlxuICAgICAgICAgICAgbWFwcGluZy5zb3VyY2UgPSBwcmV2aW91c1NvdXJjZSArIHNlZ21lbnRbMV07XG4gICAgICAgICAgICBwcmV2aW91c1NvdXJjZSArPSBzZWdtZW50WzFdO1xuXG4gICAgICAgICAgICAvLyBPcmlnaW5hbCBsaW5lLlxuICAgICAgICAgICAgbWFwcGluZy5vcmlnaW5hbExpbmUgPSBwcmV2aW91c09yaWdpbmFsTGluZSArIHNlZ21lbnRbMl07XG4gICAgICAgICAgICBwcmV2aW91c09yaWdpbmFsTGluZSA9IG1hcHBpbmcub3JpZ2luYWxMaW5lO1xuICAgICAgICAgICAgLy8gTGluZXMgYXJlIHN0b3JlZCAwLWJhc2VkXG4gICAgICAgICAgICBtYXBwaW5nLm9yaWdpbmFsTGluZSArPSAxO1xuXG4gICAgICAgICAgICAvLyBPcmlnaW5hbCBjb2x1bW4uXG4gICAgICAgICAgICBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uID0gcHJldmlvdXNPcmlnaW5hbENvbHVtbiArIHNlZ21lbnRbM107XG4gICAgICAgICAgICBwcmV2aW91c09yaWdpbmFsQ29sdW1uID0gbWFwcGluZy5vcmlnaW5hbENvbHVtbjtcblxuICAgICAgICAgICAgaWYgKHNlZ21lbnQubGVuZ3RoID4gNCkge1xuICAgICAgICAgICAgICAvLyBPcmlnaW5hbCBuYW1lLlxuICAgICAgICAgICAgICBtYXBwaW5nLm5hbWUgPSBwcmV2aW91c05hbWUgKyBzZWdtZW50WzRdO1xuICAgICAgICAgICAgICBwcmV2aW91c05hbWUgKz0gc2VnbWVudFs0XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBnZW5lcmF0ZWRNYXBwaW5ncy5wdXNoKG1hcHBpbmcpO1xuICAgICAgICAgIGlmICh0eXBlb2YgbWFwcGluZy5vcmlnaW5hbExpbmUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICBvcmlnaW5hbE1hcHBpbmdzLnB1c2gobWFwcGluZyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHF1aWNrU29ydChnZW5lcmF0ZWRNYXBwaW5ncywgdXRpbC5jb21wYXJlQnlHZW5lcmF0ZWRQb3NpdGlvbnNEZWZsYXRlZCk7XG4gICAgICB0aGlzLl9fZ2VuZXJhdGVkTWFwcGluZ3MgPSBnZW5lcmF0ZWRNYXBwaW5ncztcblxuICAgICAgcXVpY2tTb3J0KG9yaWdpbmFsTWFwcGluZ3MsIHV0aWwuY29tcGFyZUJ5T3JpZ2luYWxQb3NpdGlvbnMpO1xuICAgICAgdGhpcy5fX29yaWdpbmFsTWFwcGluZ3MgPSBvcmlnaW5hbE1hcHBpbmdzO1xuICAgIH07XG5cbiAgLyoqXG4gICAqIEZpbmQgdGhlIG1hcHBpbmcgdGhhdCBiZXN0IG1hdGNoZXMgdGhlIGh5cG90aGV0aWNhbCBcIm5lZWRsZVwiIG1hcHBpbmcgdGhhdFxuICAgKiB3ZSBhcmUgc2VhcmNoaW5nIGZvciBpbiB0aGUgZ2l2ZW4gXCJoYXlzdGFja1wiIG9mIG1hcHBpbmdzLlxuICAgKi9cbiAgQmFzaWNTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuX2ZpbmRNYXBwaW5nID1cbiAgICBmdW5jdGlvbiBTb3VyY2VNYXBDb25zdW1lcl9maW5kTWFwcGluZyhhTmVlZGxlLCBhTWFwcGluZ3MsIGFMaW5lTmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhQ29sdW1uTmFtZSwgYUNvbXBhcmF0b3IsIGFCaWFzKSB7XG4gICAgICAvLyBUbyByZXR1cm4gdGhlIHBvc2l0aW9uIHdlIGFyZSBzZWFyY2hpbmcgZm9yLCB3ZSBtdXN0IGZpcnN0IGZpbmQgdGhlXG4gICAgICAvLyBtYXBwaW5nIGZvciB0aGUgZ2l2ZW4gcG9zaXRpb24gYW5kIHRoZW4gcmV0dXJuIHRoZSBvcHBvc2l0ZSBwb3NpdGlvbiBpdFxuICAgICAgLy8gcG9pbnRzIHRvLiBCZWNhdXNlIHRoZSBtYXBwaW5ncyBhcmUgc29ydGVkLCB3ZSBjYW4gdXNlIGJpbmFyeSBzZWFyY2ggdG9cbiAgICAgIC8vIGZpbmQgdGhlIGJlc3QgbWFwcGluZy5cblxuICAgICAgaWYgKGFOZWVkbGVbYUxpbmVOYW1lXSA8PSAwKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0xpbmUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMSwgZ290ICdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGFOZWVkbGVbYUxpbmVOYW1lXSk7XG4gICAgICB9XG4gICAgICBpZiAoYU5lZWRsZVthQ29sdW1uTmFtZV0gPCAwKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0NvbHVtbiBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAwLCBnb3QgJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgYU5lZWRsZVthQ29sdW1uTmFtZV0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gYmluYXJ5U2VhcmNoLnNlYXJjaChhTmVlZGxlLCBhTWFwcGluZ3MsIGFDb21wYXJhdG9yLCBhQmlhcyk7XG4gICAgfTtcblxuICAvKipcbiAgICogQ29tcHV0ZSB0aGUgbGFzdCBjb2x1bW4gZm9yIGVhY2ggZ2VuZXJhdGVkIG1hcHBpbmcuIFRoZSBsYXN0IGNvbHVtbiBpc1xuICAgKiBpbmNsdXNpdmUuXG4gICAqL1xuICBCYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5jb21wdXRlQ29sdW1uU3BhbnMgPVxuICAgIGZ1bmN0aW9uIFNvdXJjZU1hcENvbnN1bWVyX2NvbXB1dGVDb2x1bW5TcGFucygpIHtcbiAgICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCB0aGlzLl9nZW5lcmF0ZWRNYXBwaW5ncy5sZW5ndGg7ICsraW5kZXgpIHtcbiAgICAgICAgdmFyIG1hcHBpbmcgPSB0aGlzLl9nZW5lcmF0ZWRNYXBwaW5nc1tpbmRleF07XG5cbiAgICAgICAgLy8gTWFwcGluZ3MgZG8gbm90IGNvbnRhaW4gYSBmaWVsZCBmb3IgdGhlIGxhc3QgZ2VuZXJhdGVkIGNvbHVtbnQuIFdlXG4gICAgICAgIC8vIGNhbiBjb21lIHVwIHdpdGggYW4gb3B0aW1pc3RpYyBlc3RpbWF0ZSwgaG93ZXZlciwgYnkgYXNzdW1pbmcgdGhhdFxuICAgICAgICAvLyBtYXBwaW5ncyBhcmUgY29udGlndW91cyAoaS5lLiBnaXZlbiB0d28gY29uc2VjdXRpdmUgbWFwcGluZ3MsIHRoZVxuICAgICAgICAvLyBmaXJzdCBtYXBwaW5nIGVuZHMgd2hlcmUgdGhlIHNlY29uZCBvbmUgc3RhcnRzKS5cbiAgICAgICAgaWYgKGluZGV4ICsgMSA8IHRoaXMuX2dlbmVyYXRlZE1hcHBpbmdzLmxlbmd0aCkge1xuICAgICAgICAgIHZhciBuZXh0TWFwcGluZyA9IHRoaXMuX2dlbmVyYXRlZE1hcHBpbmdzW2luZGV4ICsgMV07XG5cbiAgICAgICAgICBpZiAobWFwcGluZy5nZW5lcmF0ZWRMaW5lID09PSBuZXh0TWFwcGluZy5nZW5lcmF0ZWRMaW5lKSB7XG4gICAgICAgICAgICBtYXBwaW5nLmxhc3RHZW5lcmF0ZWRDb2x1bW4gPSBuZXh0TWFwcGluZy5nZW5lcmF0ZWRDb2x1bW4gLSAxO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGhlIGxhc3QgbWFwcGluZyBmb3IgZWFjaCBsaW5lIHNwYW5zIHRoZSBlbnRpcmUgbGluZS5cbiAgICAgICAgbWFwcGluZy5sYXN0R2VuZXJhdGVkQ29sdW1uID0gSW5maW5pdHk7XG4gICAgICB9XG4gICAgfTtcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgb3JpZ2luYWwgc291cmNlLCBsaW5lLCBhbmQgY29sdW1uIGluZm9ybWF0aW9uIGZvciB0aGUgZ2VuZXJhdGVkXG4gICAqIHNvdXJjZSdzIGxpbmUgYW5kIGNvbHVtbiBwb3NpdGlvbnMgcHJvdmlkZWQuIFRoZSBvbmx5IGFyZ3VtZW50IGlzIGFuIG9iamVjdFxuICAgKiB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAgICpcbiAgICogICAtIGxpbmU6IFRoZSBsaW5lIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIHNvdXJjZS5cbiAgICogICAtIGNvbHVtbjogVGhlIGNvbHVtbiBudW1iZXIgaW4gdGhlIGdlbmVyYXRlZCBzb3VyY2UuXG4gICAqICAgLSBiaWFzOiBFaXRoZXIgJ1NvdXJjZU1hcENvbnN1bWVyLkdSRUFURVNUX0xPV0VSX0JPVU5EJyBvclxuICAgKiAgICAgJ1NvdXJjZU1hcENvbnN1bWVyLkxFQVNUX1VQUEVSX0JPVU5EJy4gU3BlY2lmaWVzIHdoZXRoZXIgdG8gcmV0dXJuIHRoZVxuICAgKiAgICAgY2xvc2VzdCBlbGVtZW50IHRoYXQgaXMgc21hbGxlciB0aGFuIG9yIGdyZWF0ZXIgdGhhbiB0aGUgb25lIHdlIGFyZVxuICAgKiAgICAgc2VhcmNoaW5nIGZvciwgcmVzcGVjdGl2ZWx5LCBpZiB0aGUgZXhhY3QgZWxlbWVudCBjYW5ub3QgYmUgZm91bmQuXG4gICAqICAgICBEZWZhdWx0cyB0byAnU291cmNlTWFwQ29uc3VtZXIuR1JFQVRFU1RfTE9XRVJfQk9VTkQnLlxuICAgKlxuICAgKiBhbmQgYW4gb2JqZWN0IGlzIHJldHVybmVkIHdpdGggdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOlxuICAgKlxuICAgKiAgIC0gc291cmNlOiBUaGUgb3JpZ2luYWwgc291cmNlIGZpbGUsIG9yIG51bGwuXG4gICAqICAgLSBsaW5lOiBUaGUgbGluZSBudW1iZXIgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZSwgb3IgbnVsbC5cbiAgICogICAtIGNvbHVtbjogVGhlIGNvbHVtbiBudW1iZXIgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZSwgb3IgbnVsbC5cbiAgICogICAtIG5hbWU6IFRoZSBvcmlnaW5hbCBpZGVudGlmaWVyLCBvciBudWxsLlxuICAgKi9cbiAgQmFzaWNTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUub3JpZ2luYWxQb3NpdGlvbkZvciA9XG4gICAgZnVuY3Rpb24gU291cmNlTWFwQ29uc3VtZXJfb3JpZ2luYWxQb3NpdGlvbkZvcihhQXJncykge1xuICAgICAgdmFyIG5lZWRsZSA9IHtcbiAgICAgICAgZ2VuZXJhdGVkTGluZTogdXRpbC5nZXRBcmcoYUFyZ3MsICdsaW5lJyksXG4gICAgICAgIGdlbmVyYXRlZENvbHVtbjogdXRpbC5nZXRBcmcoYUFyZ3MsICdjb2x1bW4nKVxuICAgICAgfTtcblxuICAgICAgdmFyIGluZGV4ID0gdGhpcy5fZmluZE1hcHBpbmcoXG4gICAgICAgIG5lZWRsZSxcbiAgICAgICAgdGhpcy5fZ2VuZXJhdGVkTWFwcGluZ3MsXG4gICAgICAgIFwiZ2VuZXJhdGVkTGluZVwiLFxuICAgICAgICBcImdlbmVyYXRlZENvbHVtblwiLFxuICAgICAgICB1dGlsLmNvbXBhcmVCeUdlbmVyYXRlZFBvc2l0aW9uc0RlZmxhdGVkLFxuICAgICAgICB1dGlsLmdldEFyZyhhQXJncywgJ2JpYXMnLCBTb3VyY2VNYXBDb25zdW1lci5HUkVBVEVTVF9MT1dFUl9CT1VORClcbiAgICAgICk7XG5cbiAgICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICAgIHZhciBtYXBwaW5nID0gdGhpcy5fZ2VuZXJhdGVkTWFwcGluZ3NbaW5kZXhdO1xuXG4gICAgICAgIGlmIChtYXBwaW5nLmdlbmVyYXRlZExpbmUgPT09IG5lZWRsZS5nZW5lcmF0ZWRMaW5lKSB7XG4gICAgICAgICAgdmFyIHNvdXJjZSA9IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdzb3VyY2UnLCBudWxsKTtcbiAgICAgICAgICBpZiAoc291cmNlICE9PSBudWxsKSB7XG4gICAgICAgICAgICBzb3VyY2UgPSB0aGlzLl9zb3VyY2VzLmF0KHNvdXJjZSk7XG4gICAgICAgICAgICBpZiAodGhpcy5zb3VyY2VSb290ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgc291cmNlID0gdXRpbC5qb2luKHRoaXMuc291cmNlUm9vdCwgc291cmNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgdmFyIG5hbWUgPSB1dGlsLmdldEFyZyhtYXBwaW5nLCAnbmFtZScsIG51bGwpO1xuICAgICAgICAgIGlmIChuYW1lICE9PSBudWxsKSB7XG4gICAgICAgICAgICBuYW1lID0gdGhpcy5fbmFtZXMuYXQobmFtZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzb3VyY2U6IHNvdXJjZSxcbiAgICAgICAgICAgIGxpbmU6IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdvcmlnaW5hbExpbmUnLCBudWxsKSxcbiAgICAgICAgICAgIGNvbHVtbjogdXRpbC5nZXRBcmcobWFwcGluZywgJ29yaWdpbmFsQ29sdW1uJywgbnVsbCksXG4gICAgICAgICAgICBuYW1lOiBuYW1lXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBzb3VyY2U6IG51bGwsXG4gICAgICAgIGxpbmU6IG51bGwsXG4gICAgICAgIGNvbHVtbjogbnVsbCxcbiAgICAgICAgbmFtZTogbnVsbFxuICAgICAgfTtcbiAgICB9O1xuXG4gIC8qKlxuICAgKiBSZXR1cm4gdHJ1ZSBpZiB3ZSBoYXZlIHRoZSBzb3VyY2UgY29udGVudCBmb3IgZXZlcnkgc291cmNlIGluIHRoZSBzb3VyY2VcbiAgICogbWFwLCBmYWxzZSBvdGhlcndpc2UuXG4gICAqL1xuICBCYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5oYXNDb250ZW50c09mQWxsU291cmNlcyA9XG4gICAgZnVuY3Rpb24gQmFzaWNTb3VyY2VNYXBDb25zdW1lcl9oYXNDb250ZW50c09mQWxsU291cmNlcygpIHtcbiAgICAgIGlmICghdGhpcy5zb3VyY2VzQ29udGVudCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5zb3VyY2VzQ29udGVudC5sZW5ndGggPj0gdGhpcy5fc291cmNlcy5zaXplKCkgJiZcbiAgICAgICAgIXRoaXMuc291cmNlc0NvbnRlbnQuc29tZShmdW5jdGlvbiAoc2MpIHsgcmV0dXJuIHNjID09IG51bGw7IH0pO1xuICAgIH07XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIG9yaWdpbmFsIHNvdXJjZSBjb250ZW50LiBUaGUgb25seSBhcmd1bWVudCBpcyB0aGUgdXJsIG9mIHRoZVxuICAgKiBvcmlnaW5hbCBzb3VyY2UgZmlsZS4gUmV0dXJucyBudWxsIGlmIG5vIG9yaWdpbmFsIHNvdXJjZSBjb250ZW50IGlzXG4gICAqIGF2YWlsYWJsZS5cbiAgICovXG4gIEJhc2ljU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLnNvdXJjZUNvbnRlbnRGb3IgPVxuICAgIGZ1bmN0aW9uIFNvdXJjZU1hcENvbnN1bWVyX3NvdXJjZUNvbnRlbnRGb3IoYVNvdXJjZSwgbnVsbE9uTWlzc2luZykge1xuICAgICAgaWYgKCF0aGlzLnNvdXJjZXNDb250ZW50KSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5zb3VyY2VSb290ICE9IG51bGwpIHtcbiAgICAgICAgYVNvdXJjZSA9IHV0aWwucmVsYXRpdmUodGhpcy5zb3VyY2VSb290LCBhU291cmNlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuX3NvdXJjZXMuaGFzKGFTb3VyY2UpKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNvdXJjZXNDb250ZW50W3RoaXMuX3NvdXJjZXMuaW5kZXhPZihhU291cmNlKV07XG4gICAgICB9XG5cbiAgICAgIHZhciB1cmw7XG4gICAgICBpZiAodGhpcy5zb3VyY2VSb290ICE9IG51bGxcbiAgICAgICAgICAmJiAodXJsID0gdXRpbC51cmxQYXJzZSh0aGlzLnNvdXJjZVJvb3QpKSkge1xuICAgICAgICAvLyBYWFg6IGZpbGU6Ly8gVVJJcyBhbmQgYWJzb2x1dGUgcGF0aHMgbGVhZCB0byB1bmV4cGVjdGVkIGJlaGF2aW9yIGZvclxuICAgICAgICAvLyBtYW55IHVzZXJzLiBXZSBjYW4gaGVscCB0aGVtIG91dCB3aGVuIHRoZXkgZXhwZWN0IGZpbGU6Ly8gVVJJcyB0b1xuICAgICAgICAvLyBiZWhhdmUgbGlrZSBpdCB3b3VsZCBpZiB0aGV5IHdlcmUgcnVubmluZyBhIGxvY2FsIEhUVFAgc2VydmVyLiBTZWVcbiAgICAgICAgLy8gaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODg1NTk3LlxuICAgICAgICB2YXIgZmlsZVVyaUFic1BhdGggPSBhU291cmNlLnJlcGxhY2UoL15maWxlOlxcL1xcLy8sIFwiXCIpO1xuICAgICAgICBpZiAodXJsLnNjaGVtZSA9PSBcImZpbGVcIlxuICAgICAgICAgICAgJiYgdGhpcy5fc291cmNlcy5oYXMoZmlsZVVyaUFic1BhdGgpKSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuc291cmNlc0NvbnRlbnRbdGhpcy5fc291cmNlcy5pbmRleE9mKGZpbGVVcmlBYnNQYXRoKV1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICgoIXVybC5wYXRoIHx8IHVybC5wYXRoID09IFwiL1wiKVxuICAgICAgICAgICAgJiYgdGhpcy5fc291cmNlcy5oYXMoXCIvXCIgKyBhU291cmNlKSkge1xuICAgICAgICAgIHJldHVybiB0aGlzLnNvdXJjZXNDb250ZW50W3RoaXMuX3NvdXJjZXMuaW5kZXhPZihcIi9cIiArIGFTb3VyY2UpXTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgcmVjdXJzaXZlbHkgZnJvbVxuICAgICAgLy8gSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5zb3VyY2VDb250ZW50Rm9yLiBJbiB0aGF0IGNhc2UsIHdlXG4gICAgICAvLyBkb24ndCB3YW50IHRvIHRocm93IGlmIHdlIGNhbid0IGZpbmQgdGhlIHNvdXJjZSAtIHdlIGp1c3Qgd2FudCB0b1xuICAgICAgLy8gcmV0dXJuIG51bGwsIHNvIHdlIHByb3ZpZGUgYSBmbGFnIHRvIGV4aXQgZ3JhY2VmdWxseS5cbiAgICAgIGlmIChudWxsT25NaXNzaW5nKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignXCInICsgYVNvdXJjZSArICdcIiBpcyBub3QgaW4gdGhlIFNvdXJjZU1hcC4nKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBnZW5lcmF0ZWQgbGluZSBhbmQgY29sdW1uIGluZm9ybWF0aW9uIGZvciB0aGUgb3JpZ2luYWwgc291cmNlLFxuICAgKiBsaW5lLCBhbmQgY29sdW1uIHBvc2l0aW9ucyBwcm92aWRlZC4gVGhlIG9ubHkgYXJndW1lbnQgaXMgYW4gb2JqZWN0IHdpdGhcbiAgICogdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOlxuICAgKlxuICAgKiAgIC0gc291cmNlOiBUaGUgZmlsZW5hbWUgb2YgdGhlIG9yaWdpbmFsIHNvdXJjZS5cbiAgICogICAtIGxpbmU6IFRoZSBsaW5lIG51bWJlciBpbiB0aGUgb3JpZ2luYWwgc291cmNlLlxuICAgKiAgIC0gY29sdW1uOiBUaGUgY29sdW1uIG51bWJlciBpbiB0aGUgb3JpZ2luYWwgc291cmNlLlxuICAgKiAgIC0gYmlhczogRWl0aGVyICdTb3VyY2VNYXBDb25zdW1lci5HUkVBVEVTVF9MT1dFUl9CT1VORCcgb3JcbiAgICogICAgICdTb3VyY2VNYXBDb25zdW1lci5MRUFTVF9VUFBFUl9CT1VORCcuIFNwZWNpZmllcyB3aGV0aGVyIHRvIHJldHVybiB0aGVcbiAgICogICAgIGNsb3Nlc3QgZWxlbWVudCB0aGF0IGlzIHNtYWxsZXIgdGhhbiBvciBncmVhdGVyIHRoYW4gdGhlIG9uZSB3ZSBhcmVcbiAgICogICAgIHNlYXJjaGluZyBmb3IsIHJlc3BlY3RpdmVseSwgaWYgdGhlIGV4YWN0IGVsZW1lbnQgY2Fubm90IGJlIGZvdW5kLlxuICAgKiAgICAgRGVmYXVsdHMgdG8gJ1NvdXJjZU1hcENvbnN1bWVyLkdSRUFURVNUX0xPV0VSX0JPVU5EJy5cbiAgICpcbiAgICogYW5kIGFuIG9iamVjdCBpcyByZXR1cm5lZCB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAgICpcbiAgICogICAtIGxpbmU6IFRoZSBsaW5lIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIHNvdXJjZSwgb3IgbnVsbC5cbiAgICogICAtIGNvbHVtbjogVGhlIGNvbHVtbiBudW1iZXIgaW4gdGhlIGdlbmVyYXRlZCBzb3VyY2UsIG9yIG51bGwuXG4gICAqL1xuICBCYXNpY1NvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5nZW5lcmF0ZWRQb3NpdGlvbkZvciA9XG4gICAgZnVuY3Rpb24gU291cmNlTWFwQ29uc3VtZXJfZ2VuZXJhdGVkUG9zaXRpb25Gb3IoYUFyZ3MpIHtcbiAgICAgIHZhciBzb3VyY2UgPSB1dGlsLmdldEFyZyhhQXJncywgJ3NvdXJjZScpO1xuICAgICAgaWYgKHRoaXMuc291cmNlUm9vdCAhPSBudWxsKSB7XG4gICAgICAgIHNvdXJjZSA9IHV0aWwucmVsYXRpdmUodGhpcy5zb3VyY2VSb290LCBzb3VyY2UpO1xuICAgICAgfVxuICAgICAgaWYgKCF0aGlzLl9zb3VyY2VzLmhhcyhzb3VyY2UpKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbGluZTogbnVsbCxcbiAgICAgICAgICBjb2x1bW46IG51bGwsXG4gICAgICAgICAgbGFzdENvbHVtbjogbnVsbFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgc291cmNlID0gdGhpcy5fc291cmNlcy5pbmRleE9mKHNvdXJjZSk7XG5cbiAgICAgIHZhciBuZWVkbGUgPSB7XG4gICAgICAgIHNvdXJjZTogc291cmNlLFxuICAgICAgICBvcmlnaW5hbExpbmU6IHV0aWwuZ2V0QXJnKGFBcmdzLCAnbGluZScpLFxuICAgICAgICBvcmlnaW5hbENvbHVtbjogdXRpbC5nZXRBcmcoYUFyZ3MsICdjb2x1bW4nKVxuICAgICAgfTtcblxuICAgICAgdmFyIGluZGV4ID0gdGhpcy5fZmluZE1hcHBpbmcoXG4gICAgICAgIG5lZWRsZSxcbiAgICAgICAgdGhpcy5fb3JpZ2luYWxNYXBwaW5ncyxcbiAgICAgICAgXCJvcmlnaW5hbExpbmVcIixcbiAgICAgICAgXCJvcmlnaW5hbENvbHVtblwiLFxuICAgICAgICB1dGlsLmNvbXBhcmVCeU9yaWdpbmFsUG9zaXRpb25zLFxuICAgICAgICB1dGlsLmdldEFyZyhhQXJncywgJ2JpYXMnLCBTb3VyY2VNYXBDb25zdW1lci5HUkVBVEVTVF9MT1dFUl9CT1VORClcbiAgICAgICk7XG5cbiAgICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICAgIHZhciBtYXBwaW5nID0gdGhpcy5fb3JpZ2luYWxNYXBwaW5nc1tpbmRleF07XG5cbiAgICAgICAgaWYgKG1hcHBpbmcuc291cmNlID09PSBuZWVkbGUuc291cmNlKSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGxpbmU6IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdnZW5lcmF0ZWRMaW5lJywgbnVsbCksXG4gICAgICAgICAgICBjb2x1bW46IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdnZW5lcmF0ZWRDb2x1bW4nLCBudWxsKSxcbiAgICAgICAgICAgIGxhc3RDb2x1bW46IHV0aWwuZ2V0QXJnKG1hcHBpbmcsICdsYXN0R2VuZXJhdGVkQ29sdW1uJywgbnVsbClcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGxpbmU6IG51bGwsXG4gICAgICAgIGNvbHVtbjogbnVsbCxcbiAgICAgICAgbGFzdENvbHVtbjogbnVsbFxuICAgICAgfTtcbiAgICB9O1xuXG4gIGV4cG9ydHMuQmFzaWNTb3VyY2VNYXBDb25zdW1lciA9IEJhc2ljU291cmNlTWFwQ29uc3VtZXI7XG5cbiAgLyoqXG4gICAqIEFuIEluZGV4ZWRTb3VyY2VNYXBDb25zdW1lciBpbnN0YW5jZSByZXByZXNlbnRzIGEgcGFyc2VkIHNvdXJjZSBtYXAgd2hpY2hcbiAgICogd2UgY2FuIHF1ZXJ5IGZvciBpbmZvcm1hdGlvbi4gSXQgZGlmZmVycyBmcm9tIEJhc2ljU291cmNlTWFwQ29uc3VtZXIgaW5cbiAgICogdGhhdCBpdCB0YWtlcyBcImluZGV4ZWRcIiBzb3VyY2UgbWFwcyAoaS5lLiBvbmVzIHdpdGggYSBcInNlY3Rpb25zXCIgZmllbGQpIGFzXG4gICAqIGlucHV0LlxuICAgKlxuICAgKiBUaGUgb25seSBwYXJhbWV0ZXIgaXMgYSByYXcgc291cmNlIG1hcCAoZWl0aGVyIGFzIGEgSlNPTiBzdHJpbmcsIG9yIGFscmVhZHlcbiAgICogcGFyc2VkIHRvIGFuIG9iamVjdCkuIEFjY29yZGluZyB0byB0aGUgc3BlYyBmb3IgaW5kZXhlZCBzb3VyY2UgbWFwcywgdGhleVxuICAgKiBoYXZlIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlczpcbiAgICpcbiAgICogICAtIHZlcnNpb246IFdoaWNoIHZlcnNpb24gb2YgdGhlIHNvdXJjZSBtYXAgc3BlYyB0aGlzIG1hcCBpcyBmb2xsb3dpbmcuXG4gICAqICAgLSBmaWxlOiBPcHRpb25hbC4gVGhlIGdlbmVyYXRlZCBmaWxlIHRoaXMgc291cmNlIG1hcCBpcyBhc3NvY2lhdGVkIHdpdGguXG4gICAqICAgLSBzZWN0aW9uczogQSBsaXN0IG9mIHNlY3Rpb24gZGVmaW5pdGlvbnMuXG4gICAqXG4gICAqIEVhY2ggdmFsdWUgdW5kZXIgdGhlIFwic2VjdGlvbnNcIiBmaWVsZCBoYXMgdHdvIGZpZWxkczpcbiAgICogICAtIG9mZnNldDogVGhlIG9mZnNldCBpbnRvIHRoZSBvcmlnaW5hbCBzcGVjaWZpZWQgYXQgd2hpY2ggdGhpcyBzZWN0aW9uXG4gICAqICAgICAgIGJlZ2lucyB0byBhcHBseSwgZGVmaW5lZCBhcyBhbiBvYmplY3Qgd2l0aCBhIFwibGluZVwiIGFuZCBcImNvbHVtblwiXG4gICAqICAgICAgIGZpZWxkLlxuICAgKiAgIC0gbWFwOiBBIHNvdXJjZSBtYXAgZGVmaW5pdGlvbi4gVGhpcyBzb3VyY2UgbWFwIGNvdWxkIGFsc28gYmUgaW5kZXhlZCxcbiAgICogICAgICAgYnV0IGRvZXNuJ3QgaGF2ZSB0byBiZS5cbiAgICpcbiAgICogSW5zdGVhZCBvZiB0aGUgXCJtYXBcIiBmaWVsZCwgaXQncyBhbHNvIHBvc3NpYmxlIHRvIGhhdmUgYSBcInVybFwiIGZpZWxkXG4gICAqIHNwZWNpZnlpbmcgYSBVUkwgdG8gcmV0cmlldmUgYSBzb3VyY2UgbWFwIGZyb20sIGJ1dCB0aGF0J3MgY3VycmVudGx5XG4gICAqIHVuc3VwcG9ydGVkLlxuICAgKlxuICAgKiBIZXJlJ3MgYW4gZXhhbXBsZSBzb3VyY2UgbWFwLCB0YWtlbiBmcm9tIHRoZSBzb3VyY2UgbWFwIHNwZWNbMF0sIGJ1dFxuICAgKiBtb2RpZmllZCB0byBvbWl0IGEgc2VjdGlvbiB3aGljaCB1c2VzIHRoZSBcInVybFwiIGZpZWxkLlxuICAgKlxuICAgKiAge1xuICAgKiAgICB2ZXJzaW9uIDogMyxcbiAgICogICAgZmlsZTogXCJhcHAuanNcIixcbiAgICogICAgc2VjdGlvbnM6IFt7XG4gICAqICAgICAgb2Zmc2V0OiB7bGluZToxMDAsIGNvbHVtbjoxMH0sXG4gICAqICAgICAgbWFwOiB7XG4gICAqICAgICAgICB2ZXJzaW9uIDogMyxcbiAgICogICAgICAgIGZpbGU6IFwic2VjdGlvbi5qc1wiLFxuICAgKiAgICAgICAgc291cmNlczogW1wiZm9vLmpzXCIsIFwiYmFyLmpzXCJdLFxuICAgKiAgICAgICAgbmFtZXM6IFtcInNyY1wiLCBcIm1hcHNcIiwgXCJhcmVcIiwgXCJmdW5cIl0sXG4gICAqICAgICAgICBtYXBwaW5nczogXCJBQUFBLEU7O0FCQ0RFO1wiXG4gICAqICAgICAgfVxuICAgKiAgICB9XSxcbiAgICogIH1cbiAgICpcbiAgICogWzBdOiBodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9kb2N1bWVudC9kLzFVMVJHQWVoUXdSeXBVVG92RjFLUmxwaU9GemUwYi1fMmdjNmZBSDBLWTBrL2VkaXQjaGVhZGluZz1oLjUzNWVzM3hlcHJndFxuICAgKi9cbiAgZnVuY3Rpb24gSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyKGFTb3VyY2VNYXApIHtcbiAgICB2YXIgc291cmNlTWFwID0gYVNvdXJjZU1hcDtcbiAgICBpZiAodHlwZW9mIGFTb3VyY2VNYXAgPT09ICdzdHJpbmcnKSB7XG4gICAgICBzb3VyY2VNYXAgPSBKU09OLnBhcnNlKGFTb3VyY2VNYXAucmVwbGFjZSgvXlxcKVxcXVxcfScvLCAnJykpO1xuICAgIH1cblxuICAgIHZhciB2ZXJzaW9uID0gdXRpbC5nZXRBcmcoc291cmNlTWFwLCAndmVyc2lvbicpO1xuICAgIHZhciBzZWN0aW9ucyA9IHV0aWwuZ2V0QXJnKHNvdXJjZU1hcCwgJ3NlY3Rpb25zJyk7XG5cbiAgICBpZiAodmVyc2lvbiAhPSB0aGlzLl92ZXJzaW9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIHZlcnNpb246ICcgKyB2ZXJzaW9uKTtcbiAgICB9XG5cbiAgICB0aGlzLl9zb3VyY2VzID0gbmV3IEFycmF5U2V0KCk7XG4gICAgdGhpcy5fbmFtZXMgPSBuZXcgQXJyYXlTZXQoKTtcblxuICAgIHZhciBsYXN0T2Zmc2V0ID0ge1xuICAgICAgbGluZTogLTEsXG4gICAgICBjb2x1bW46IDBcbiAgICB9O1xuICAgIHRoaXMuX3NlY3Rpb25zID0gc2VjdGlvbnMubWFwKGZ1bmN0aW9uIChzKSB7XG4gICAgICBpZiAocy51cmwpIHtcbiAgICAgICAgLy8gVGhlIHVybCBmaWVsZCB3aWxsIHJlcXVpcmUgc3VwcG9ydCBmb3IgYXN5bmNocm9uaWNpdHkuXG4gICAgICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS9zb3VyY2UtbWFwL2lzc3Vlcy8xNlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1N1cHBvcnQgZm9yIHVybCBmaWVsZCBpbiBzZWN0aW9ucyBub3QgaW1wbGVtZW50ZWQuJyk7XG4gICAgICB9XG4gICAgICB2YXIgb2Zmc2V0ID0gdXRpbC5nZXRBcmcocywgJ29mZnNldCcpO1xuICAgICAgdmFyIG9mZnNldExpbmUgPSB1dGlsLmdldEFyZyhvZmZzZXQsICdsaW5lJyk7XG4gICAgICB2YXIgb2Zmc2V0Q29sdW1uID0gdXRpbC5nZXRBcmcob2Zmc2V0LCAnY29sdW1uJyk7XG5cbiAgICAgIGlmIChvZmZzZXRMaW5lIDwgbGFzdE9mZnNldC5saW5lIHx8XG4gICAgICAgICAgKG9mZnNldExpbmUgPT09IGxhc3RPZmZzZXQubGluZSAmJiBvZmZzZXRDb2x1bW4gPCBsYXN0T2Zmc2V0LmNvbHVtbikpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdTZWN0aW9uIG9mZnNldHMgbXVzdCBiZSBvcmRlcmVkIGFuZCBub24tb3ZlcmxhcHBpbmcuJyk7XG4gICAgICB9XG4gICAgICBsYXN0T2Zmc2V0ID0gb2Zmc2V0O1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBnZW5lcmF0ZWRPZmZzZXQ6IHtcbiAgICAgICAgICAvLyBUaGUgb2Zmc2V0IGZpZWxkcyBhcmUgMC1iYXNlZCwgYnV0IHdlIHVzZSAxLWJhc2VkIGluZGljZXMgd2hlblxuICAgICAgICAgIC8vIGVuY29kaW5nL2RlY29kaW5nIGZyb20gVkxRLlxuICAgICAgICAgIGdlbmVyYXRlZExpbmU6IG9mZnNldExpbmUgKyAxLFxuICAgICAgICAgIGdlbmVyYXRlZENvbHVtbjogb2Zmc2V0Q29sdW1uICsgMVxuICAgICAgICB9LFxuICAgICAgICBjb25zdW1lcjogbmV3IFNvdXJjZU1hcENvbnN1bWVyKHV0aWwuZ2V0QXJnKHMsICdtYXAnKSlcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIEluZGV4ZWRTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZSk7XG4gIEluZGV4ZWRTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBTb3VyY2VNYXBDb25zdW1lcjtcblxuICAvKipcbiAgICogVGhlIHZlcnNpb24gb2YgdGhlIHNvdXJjZSBtYXBwaW5nIHNwZWMgdGhhdCB3ZSBhcmUgY29uc3VtaW5nLlxuICAgKi9cbiAgSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5fdmVyc2lvbiA9IDM7XG5cbiAgLyoqXG4gICAqIFRoZSBsaXN0IG9mIG9yaWdpbmFsIHNvdXJjZXMuXG4gICAqL1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZSwgJ3NvdXJjZXMnLCB7XG4gICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgc291cmNlcyA9IFtdO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9zZWN0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHRoaXMuX3NlY3Rpb25zW2ldLmNvbnN1bWVyLnNvdXJjZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgICAgICBzb3VyY2VzLnB1c2godGhpcy5fc2VjdGlvbnNbaV0uY29uc3VtZXIuc291cmNlc1tqXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBzb3VyY2VzO1xuICAgIH1cbiAgfSk7XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIG9yaWdpbmFsIHNvdXJjZSwgbGluZSwgYW5kIGNvbHVtbiBpbmZvcm1hdGlvbiBmb3IgdGhlIGdlbmVyYXRlZFxuICAgKiBzb3VyY2UncyBsaW5lIGFuZCBjb2x1bW4gcG9zaXRpb25zIHByb3ZpZGVkLiBUaGUgb25seSBhcmd1bWVudCBpcyBhbiBvYmplY3RcbiAgICogd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG4gICAqXG4gICAqICAgLSBsaW5lOiBUaGUgbGluZSBudW1iZXIgaW4gdGhlIGdlbmVyYXRlZCBzb3VyY2UuXG4gICAqICAgLSBjb2x1bW46IFRoZSBjb2x1bW4gbnVtYmVyIGluIHRoZSBnZW5lcmF0ZWQgc291cmNlLlxuICAgKlxuICAgKiBhbmQgYW4gb2JqZWN0IGlzIHJldHVybmVkIHdpdGggdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOlxuICAgKlxuICAgKiAgIC0gc291cmNlOiBUaGUgb3JpZ2luYWwgc291cmNlIGZpbGUsIG9yIG51bGwuXG4gICAqICAgLSBsaW5lOiBUaGUgbGluZSBudW1iZXIgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZSwgb3IgbnVsbC5cbiAgICogICAtIGNvbHVtbjogVGhlIGNvbHVtbiBudW1iZXIgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZSwgb3IgbnVsbC5cbiAgICogICAtIG5hbWU6IFRoZSBvcmlnaW5hbCBpZGVudGlmaWVyLCBvciBudWxsLlxuICAgKi9cbiAgSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyLnByb3RvdHlwZS5vcmlnaW5hbFBvc2l0aW9uRm9yID1cbiAgICBmdW5jdGlvbiBJbmRleGVkU291cmNlTWFwQ29uc3VtZXJfb3JpZ2luYWxQb3NpdGlvbkZvcihhQXJncykge1xuICAgICAgdmFyIG5lZWRsZSA9IHtcbiAgICAgICAgZ2VuZXJhdGVkTGluZTogdXRpbC5nZXRBcmcoYUFyZ3MsICdsaW5lJyksXG4gICAgICAgIGdlbmVyYXRlZENvbHVtbjogdXRpbC5nZXRBcmcoYUFyZ3MsICdjb2x1bW4nKVxuICAgICAgfTtcblxuICAgICAgLy8gRmluZCB0aGUgc2VjdGlvbiBjb250YWluaW5nIHRoZSBnZW5lcmF0ZWQgcG9zaXRpb24gd2UncmUgdHJ5aW5nIHRvIG1hcFxuICAgICAgLy8gdG8gYW4gb3JpZ2luYWwgcG9zaXRpb24uXG4gICAgICB2YXIgc2VjdGlvbkluZGV4ID0gYmluYXJ5U2VhcmNoLnNlYXJjaChuZWVkbGUsIHRoaXMuX3NlY3Rpb25zLFxuICAgICAgICBmdW5jdGlvbihuZWVkbGUsIHNlY3Rpb24pIHtcbiAgICAgICAgICB2YXIgY21wID0gbmVlZGxlLmdlbmVyYXRlZExpbmUgLSBzZWN0aW9uLmdlbmVyYXRlZE9mZnNldC5nZW5lcmF0ZWRMaW5lO1xuICAgICAgICAgIGlmIChjbXApIHtcbiAgICAgICAgICAgIHJldHVybiBjbXA7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIChuZWVkbGUuZ2VuZXJhdGVkQ29sdW1uIC1cbiAgICAgICAgICAgICAgICAgIHNlY3Rpb24uZ2VuZXJhdGVkT2Zmc2V0LmdlbmVyYXRlZENvbHVtbik7XG4gICAgICAgIH0pO1xuICAgICAgdmFyIHNlY3Rpb24gPSB0aGlzLl9zZWN0aW9uc1tzZWN0aW9uSW5kZXhdO1xuXG4gICAgICBpZiAoIXNlY3Rpb24pIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBzb3VyY2U6IG51bGwsXG4gICAgICAgICAgbGluZTogbnVsbCxcbiAgICAgICAgICBjb2x1bW46IG51bGwsXG4gICAgICAgICAgbmFtZTogbnVsbFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gc2VjdGlvbi5jb25zdW1lci5vcmlnaW5hbFBvc2l0aW9uRm9yKHtcbiAgICAgICAgbGluZTogbmVlZGxlLmdlbmVyYXRlZExpbmUgLVxuICAgICAgICAgIChzZWN0aW9uLmdlbmVyYXRlZE9mZnNldC5nZW5lcmF0ZWRMaW5lIC0gMSksXG4gICAgICAgIGNvbHVtbjogbmVlZGxlLmdlbmVyYXRlZENvbHVtbiAtXG4gICAgICAgICAgKHNlY3Rpb24uZ2VuZXJhdGVkT2Zmc2V0LmdlbmVyYXRlZExpbmUgPT09IG5lZWRsZS5nZW5lcmF0ZWRMaW5lXG4gICAgICAgICAgID8gc2VjdGlvbi5nZW5lcmF0ZWRPZmZzZXQuZ2VuZXJhdGVkQ29sdW1uIC0gMVxuICAgICAgICAgICA6IDApLFxuICAgICAgICBiaWFzOiBhQXJncy5iaWFzXG4gICAgICB9KTtcbiAgICB9O1xuXG4gIC8qKlxuICAgKiBSZXR1cm4gdHJ1ZSBpZiB3ZSBoYXZlIHRoZSBzb3VyY2UgY29udGVudCBmb3IgZXZlcnkgc291cmNlIGluIHRoZSBzb3VyY2VcbiAgICogbWFwLCBmYWxzZSBvdGhlcndpc2UuXG4gICAqL1xuICBJbmRleGVkU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLmhhc0NvbnRlbnRzT2ZBbGxTb3VyY2VzID1cbiAgICBmdW5jdGlvbiBJbmRleGVkU291cmNlTWFwQ29uc3VtZXJfaGFzQ29udGVudHNPZkFsbFNvdXJjZXMoKSB7XG4gICAgICByZXR1cm4gdGhpcy5fc2VjdGlvbnMuZXZlcnkoZnVuY3Rpb24gKHMpIHtcbiAgICAgICAgcmV0dXJuIHMuY29uc3VtZXIuaGFzQ29udGVudHNPZkFsbFNvdXJjZXMoKTtcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIG9yaWdpbmFsIHNvdXJjZSBjb250ZW50LiBUaGUgb25seSBhcmd1bWVudCBpcyB0aGUgdXJsIG9mIHRoZVxuICAgKiBvcmlnaW5hbCBzb3VyY2UgZmlsZS4gUmV0dXJucyBudWxsIGlmIG5vIG9yaWdpbmFsIHNvdXJjZSBjb250ZW50IGlzXG4gICAqIGF2YWlsYWJsZS5cbiAgICovXG4gIEluZGV4ZWRTb3VyY2VNYXBDb25zdW1lci5wcm90b3R5cGUuc291cmNlQ29udGVudEZvciA9XG4gICAgZnVuY3Rpb24gSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyX3NvdXJjZUNvbnRlbnRGb3IoYVNvdXJjZSwgbnVsbE9uTWlzc2luZykge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9zZWN0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgc2VjdGlvbiA9IHRoaXMuX3NlY3Rpb25zW2ldO1xuXG4gICAgICAgIHZhciBjb250ZW50ID0gc2VjdGlvbi5jb25zdW1lci5zb3VyY2VDb250ZW50Rm9yKGFTb3VyY2UsIHRydWUpO1xuICAgICAgICBpZiAoY29udGVudCkge1xuICAgICAgICAgIHJldHVybiBjb250ZW50O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAobnVsbE9uTWlzc2luZykge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1wiJyArIGFTb3VyY2UgKyAnXCIgaXMgbm90IGluIHRoZSBTb3VyY2VNYXAuJyk7XG4gICAgICB9XG4gICAgfTtcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgZ2VuZXJhdGVkIGxpbmUgYW5kIGNvbHVtbiBpbmZvcm1hdGlvbiBmb3IgdGhlIG9yaWdpbmFsIHNvdXJjZSxcbiAgICogbGluZSwgYW5kIGNvbHVtbiBwb3NpdGlvbnMgcHJvdmlkZWQuIFRoZSBvbmx5IGFyZ3VtZW50IGlzIGFuIG9iamVjdCB3aXRoXG4gICAqIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAgICpcbiAgICogICAtIHNvdXJjZTogVGhlIGZpbGVuYW1lIG9mIHRoZSBvcmlnaW5hbCBzb3VyY2UuXG4gICAqICAgLSBsaW5lOiBUaGUgbGluZSBudW1iZXIgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZS5cbiAgICogICAtIGNvbHVtbjogVGhlIGNvbHVtbiBudW1iZXIgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZS5cbiAgICpcbiAgICogYW5kIGFuIG9iamVjdCBpcyByZXR1cm5lZCB3aXRoIHRoZSBmb2xsb3dpbmcgcHJvcGVydGllczpcbiAgICpcbiAgICogICAtIGxpbmU6IFRoZSBsaW5lIG51bWJlciBpbiB0aGUgZ2VuZXJhdGVkIHNvdXJjZSwgb3IgbnVsbC5cbiAgICogICAtIGNvbHVtbjogVGhlIGNvbHVtbiBudW1iZXIgaW4gdGhlIGdlbmVyYXRlZCBzb3VyY2UsIG9yIG51bGwuXG4gICAqL1xuICBJbmRleGVkU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLmdlbmVyYXRlZFBvc2l0aW9uRm9yID1cbiAgICBmdW5jdGlvbiBJbmRleGVkU291cmNlTWFwQ29uc3VtZXJfZ2VuZXJhdGVkUG9zaXRpb25Gb3IoYUFyZ3MpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fc2VjdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIHNlY3Rpb24gPSB0aGlzLl9zZWN0aW9uc1tpXTtcblxuICAgICAgICAvLyBPbmx5IGNvbnNpZGVyIHRoaXMgc2VjdGlvbiBpZiB0aGUgcmVxdWVzdGVkIHNvdXJjZSBpcyBpbiB0aGUgbGlzdCBvZlxuICAgICAgICAvLyBzb3VyY2VzIG9mIHRoZSBjb25zdW1lci5cbiAgICAgICAgaWYgKHNlY3Rpb24uY29uc3VtZXIuc291cmNlcy5pbmRleE9mKHV0aWwuZ2V0QXJnKGFBcmdzLCAnc291cmNlJykpID09PSAtMSkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIHZhciBnZW5lcmF0ZWRQb3NpdGlvbiA9IHNlY3Rpb24uY29uc3VtZXIuZ2VuZXJhdGVkUG9zaXRpb25Gb3IoYUFyZ3MpO1xuICAgICAgICBpZiAoZ2VuZXJhdGVkUG9zaXRpb24pIHtcbiAgICAgICAgICB2YXIgcmV0ID0ge1xuICAgICAgICAgICAgbGluZTogZ2VuZXJhdGVkUG9zaXRpb24ubGluZSArXG4gICAgICAgICAgICAgIChzZWN0aW9uLmdlbmVyYXRlZE9mZnNldC5nZW5lcmF0ZWRMaW5lIC0gMSksXG4gICAgICAgICAgICBjb2x1bW46IGdlbmVyYXRlZFBvc2l0aW9uLmNvbHVtbiArXG4gICAgICAgICAgICAgIChzZWN0aW9uLmdlbmVyYXRlZE9mZnNldC5nZW5lcmF0ZWRMaW5lID09PSBnZW5lcmF0ZWRQb3NpdGlvbi5saW5lXG4gICAgICAgICAgICAgICA/IHNlY3Rpb24uZ2VuZXJhdGVkT2Zmc2V0LmdlbmVyYXRlZENvbHVtbiAtIDFcbiAgICAgICAgICAgICAgIDogMClcbiAgICAgICAgICB9O1xuICAgICAgICAgIHJldHVybiByZXQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbGluZTogbnVsbCxcbiAgICAgICAgY29sdW1uOiBudWxsXG4gICAgICB9O1xuICAgIH07XG5cbiAgLyoqXG4gICAqIFBhcnNlIHRoZSBtYXBwaW5ncyBpbiBhIHN0cmluZyBpbiB0byBhIGRhdGEgc3RydWN0dXJlIHdoaWNoIHdlIGNhbiBlYXNpbHlcbiAgICogcXVlcnkgKHRoZSBvcmRlcmVkIGFycmF5cyBpbiB0aGUgYHRoaXMuX19nZW5lcmF0ZWRNYXBwaW5nc2AgYW5kXG4gICAqIGB0aGlzLl9fb3JpZ2luYWxNYXBwaW5nc2AgcHJvcGVydGllcykuXG4gICAqL1xuICBJbmRleGVkU291cmNlTWFwQ29uc3VtZXIucHJvdG90eXBlLl9wYXJzZU1hcHBpbmdzID1cbiAgICBmdW5jdGlvbiBJbmRleGVkU291cmNlTWFwQ29uc3VtZXJfcGFyc2VNYXBwaW5ncyhhU3RyLCBhU291cmNlUm9vdCkge1xuICAgICAgdGhpcy5fX2dlbmVyYXRlZE1hcHBpbmdzID0gW107XG4gICAgICB0aGlzLl9fb3JpZ2luYWxNYXBwaW5ncyA9IFtdO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9zZWN0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgc2VjdGlvbiA9IHRoaXMuX3NlY3Rpb25zW2ldO1xuICAgICAgICB2YXIgc2VjdGlvbk1hcHBpbmdzID0gc2VjdGlvbi5jb25zdW1lci5fZ2VuZXJhdGVkTWFwcGluZ3M7XG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgc2VjdGlvbk1hcHBpbmdzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgdmFyIG1hcHBpbmcgPSBzZWN0aW9uTWFwcGluZ3Nbal07XG5cbiAgICAgICAgICB2YXIgc291cmNlID0gc2VjdGlvbi5jb25zdW1lci5fc291cmNlcy5hdChtYXBwaW5nLnNvdXJjZSk7XG4gICAgICAgICAgaWYgKHNlY3Rpb24uY29uc3VtZXIuc291cmNlUm9vdCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgc291cmNlID0gdXRpbC5qb2luKHNlY3Rpb24uY29uc3VtZXIuc291cmNlUm9vdCwgc291cmNlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5fc291cmNlcy5hZGQoc291cmNlKTtcbiAgICAgICAgICBzb3VyY2UgPSB0aGlzLl9zb3VyY2VzLmluZGV4T2Yoc291cmNlKTtcblxuICAgICAgICAgIHZhciBuYW1lID0gc2VjdGlvbi5jb25zdW1lci5fbmFtZXMuYXQobWFwcGluZy5uYW1lKTtcbiAgICAgICAgICB0aGlzLl9uYW1lcy5hZGQobmFtZSk7XG4gICAgICAgICAgbmFtZSA9IHRoaXMuX25hbWVzLmluZGV4T2YobmFtZSk7XG5cbiAgICAgICAgICAvLyBUaGUgbWFwcGluZ3MgY29taW5nIGZyb20gdGhlIGNvbnN1bWVyIGZvciB0aGUgc2VjdGlvbiBoYXZlXG4gICAgICAgICAgLy8gZ2VuZXJhdGVkIHBvc2l0aW9ucyByZWxhdGl2ZSB0byB0aGUgc3RhcnQgb2YgdGhlIHNlY3Rpb24sIHNvIHdlXG4gICAgICAgICAgLy8gbmVlZCB0byBvZmZzZXQgdGhlbSB0byBiZSByZWxhdGl2ZSB0byB0aGUgc3RhcnQgb2YgdGhlIGNvbmNhdGVuYXRlZFxuICAgICAgICAgIC8vIGdlbmVyYXRlZCBmaWxlLlxuICAgICAgICAgIHZhciBhZGp1c3RlZE1hcHBpbmcgPSB7XG4gICAgICAgICAgICBzb3VyY2U6IHNvdXJjZSxcbiAgICAgICAgICAgIGdlbmVyYXRlZExpbmU6IG1hcHBpbmcuZ2VuZXJhdGVkTGluZSArXG4gICAgICAgICAgICAgIChzZWN0aW9uLmdlbmVyYXRlZE9mZnNldC5nZW5lcmF0ZWRMaW5lIC0gMSksXG4gICAgICAgICAgICBnZW5lcmF0ZWRDb2x1bW46IG1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uICtcbiAgICAgICAgICAgICAgKHNlY3Rpb24uZ2VuZXJhdGVkT2Zmc2V0LmdlbmVyYXRlZExpbmUgPT09IG1hcHBpbmcuZ2VuZXJhdGVkTGluZVxuICAgICAgICAgICAgICA/IHNlY3Rpb24uZ2VuZXJhdGVkT2Zmc2V0LmdlbmVyYXRlZENvbHVtbiAtIDFcbiAgICAgICAgICAgICAgOiAwKSxcbiAgICAgICAgICAgIG9yaWdpbmFsTGluZTogbWFwcGluZy5vcmlnaW5hbExpbmUsXG4gICAgICAgICAgICBvcmlnaW5hbENvbHVtbjogbWFwcGluZy5vcmlnaW5hbENvbHVtbixcbiAgICAgICAgICAgIG5hbWU6IG5hbWVcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgdGhpcy5fX2dlbmVyYXRlZE1hcHBpbmdzLnB1c2goYWRqdXN0ZWRNYXBwaW5nKTtcbiAgICAgICAgICBpZiAodHlwZW9mIGFkanVzdGVkTWFwcGluZy5vcmlnaW5hbExpbmUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgICB0aGlzLl9fb3JpZ2luYWxNYXBwaW5ncy5wdXNoKGFkanVzdGVkTWFwcGluZyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHF1aWNrU29ydCh0aGlzLl9fZ2VuZXJhdGVkTWFwcGluZ3MsIHV0aWwuY29tcGFyZUJ5R2VuZXJhdGVkUG9zaXRpb25zRGVmbGF0ZWQpO1xuICAgICAgcXVpY2tTb3J0KHRoaXMuX19vcmlnaW5hbE1hcHBpbmdzLCB1dGlsLmNvbXBhcmVCeU9yaWdpbmFsUG9zaXRpb25zKTtcbiAgICB9O1xuXG4gIGV4cG9ydHMuSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyID0gSW5kZXhlZFNvdXJjZU1hcENvbnN1bWVyO1xufVxuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL2xpYi9zb3VyY2UtbWFwLWNvbnN1bWVyLmpzXG4gKiogbW9kdWxlIGlkID0gN1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyogLSotIE1vZGU6IGpzOyBqcy1pbmRlbnQtbGV2ZWw6IDI7IC0qLSAqL1xuLypcbiAqIENvcHlyaWdodCAyMDExIE1vemlsbGEgRm91bmRhdGlvbiBhbmQgY29udHJpYnV0b3JzXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBsaWNlbnNlLiBTZWUgTElDRU5TRSBvcjpcbiAqIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2VcbiAqL1xue1xuICBleHBvcnRzLkdSRUFURVNUX0xPV0VSX0JPVU5EID0gMTtcbiAgZXhwb3J0cy5MRUFTVF9VUFBFUl9CT1VORCA9IDI7XG5cbiAgLyoqXG4gICAqIFJlY3Vyc2l2ZSBpbXBsZW1lbnRhdGlvbiBvZiBiaW5hcnkgc2VhcmNoLlxuICAgKlxuICAgKiBAcGFyYW0gYUxvdyBJbmRpY2VzIGhlcmUgYW5kIGxvd2VyIGRvIG5vdCBjb250YWluIHRoZSBuZWVkbGUuXG4gICAqIEBwYXJhbSBhSGlnaCBJbmRpY2VzIGhlcmUgYW5kIGhpZ2hlciBkbyBub3QgY29udGFpbiB0aGUgbmVlZGxlLlxuICAgKiBAcGFyYW0gYU5lZWRsZSBUaGUgZWxlbWVudCBiZWluZyBzZWFyY2hlZCBmb3IuXG4gICAqIEBwYXJhbSBhSGF5c3RhY2sgVGhlIG5vbi1lbXB0eSBhcnJheSBiZWluZyBzZWFyY2hlZC5cbiAgICogQHBhcmFtIGFDb21wYXJlIEZ1bmN0aW9uIHdoaWNoIHRha2VzIHR3byBlbGVtZW50cyBhbmQgcmV0dXJucyAtMSwgMCwgb3IgMS5cbiAgICogQHBhcmFtIGFCaWFzIEVpdGhlciAnYmluYXJ5U2VhcmNoLkdSRUFURVNUX0xPV0VSX0JPVU5EJyBvclxuICAgKiAgICAgJ2JpbmFyeVNlYXJjaC5MRUFTVF9VUFBFUl9CT1VORCcuIFNwZWNpZmllcyB3aGV0aGVyIHRvIHJldHVybiB0aGVcbiAgICogICAgIGNsb3Nlc3QgZWxlbWVudCB0aGF0IGlzIHNtYWxsZXIgdGhhbiBvciBncmVhdGVyIHRoYW4gdGhlIG9uZSB3ZSBhcmVcbiAgICogICAgIHNlYXJjaGluZyBmb3IsIHJlc3BlY3RpdmVseSwgaWYgdGhlIGV4YWN0IGVsZW1lbnQgY2Fubm90IGJlIGZvdW5kLlxuICAgKi9cbiAgZnVuY3Rpb24gcmVjdXJzaXZlU2VhcmNoKGFMb3csIGFIaWdoLCBhTmVlZGxlLCBhSGF5c3RhY2ssIGFDb21wYXJlLCBhQmlhcykge1xuICAgIC8vIFRoaXMgZnVuY3Rpb24gdGVybWluYXRlcyB3aGVuIG9uZSBvZiB0aGUgZm9sbG93aW5nIGlzIHRydWU6XG4gICAgLy9cbiAgICAvLyAgIDEuIFdlIGZpbmQgdGhlIGV4YWN0IGVsZW1lbnQgd2UgYXJlIGxvb2tpbmcgZm9yLlxuICAgIC8vXG4gICAgLy8gICAyLiBXZSBkaWQgbm90IGZpbmQgdGhlIGV4YWN0IGVsZW1lbnQsIGJ1dCB3ZSBjYW4gcmV0dXJuIHRoZSBpbmRleCBvZlxuICAgIC8vICAgICAgdGhlIG5leHQtY2xvc2VzdCBlbGVtZW50LlxuICAgIC8vXG4gICAgLy8gICAzLiBXZSBkaWQgbm90IGZpbmQgdGhlIGV4YWN0IGVsZW1lbnQsIGFuZCB0aGVyZSBpcyBubyBuZXh0LWNsb3Nlc3RcbiAgICAvLyAgICAgIGVsZW1lbnQgdGhhbiB0aGUgb25lIHdlIGFyZSBzZWFyY2hpbmcgZm9yLCBzbyB3ZSByZXR1cm4gLTEuXG4gICAgdmFyIG1pZCA9IE1hdGguZmxvb3IoKGFIaWdoIC0gYUxvdykgLyAyKSArIGFMb3c7XG4gICAgdmFyIGNtcCA9IGFDb21wYXJlKGFOZWVkbGUsIGFIYXlzdGFja1ttaWRdLCB0cnVlKTtcbiAgICBpZiAoY21wID09PSAwKSB7XG4gICAgICAvLyBGb3VuZCB0aGUgZWxlbWVudCB3ZSBhcmUgbG9va2luZyBmb3IuXG4gICAgICByZXR1cm4gbWlkO1xuICAgIH1cbiAgICBlbHNlIGlmIChjbXAgPiAwKSB7XG4gICAgICAvLyBPdXIgbmVlZGxlIGlzIGdyZWF0ZXIgdGhhbiBhSGF5c3RhY2tbbWlkXS5cbiAgICAgIGlmIChhSGlnaCAtIG1pZCA+IDEpIHtcbiAgICAgICAgLy8gVGhlIGVsZW1lbnQgaXMgaW4gdGhlIHVwcGVyIGhhbGYuXG4gICAgICAgIHJldHVybiByZWN1cnNpdmVTZWFyY2gobWlkLCBhSGlnaCwgYU5lZWRsZSwgYUhheXN0YWNrLCBhQ29tcGFyZSwgYUJpYXMpO1xuICAgICAgfVxuXG4gICAgICAvLyBUaGUgZXhhY3QgbmVlZGxlIGVsZW1lbnQgd2FzIG5vdCBmb3VuZCBpbiB0aGlzIGhheXN0YWNrLiBEZXRlcm1pbmUgaWZcbiAgICAgIC8vIHdlIGFyZSBpbiB0ZXJtaW5hdGlvbiBjYXNlICgzKSBvciAoMikgYW5kIHJldHVybiB0aGUgYXBwcm9wcmlhdGUgdGhpbmcuXG4gICAgICBpZiAoYUJpYXMgPT0gZXhwb3J0cy5MRUFTVF9VUFBFUl9CT1VORCkge1xuICAgICAgICByZXR1cm4gYUhpZ2ggPCBhSGF5c3RhY2subGVuZ3RoID8gYUhpZ2ggOiAtMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBtaWQ7XG4gICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgLy8gT3VyIG5lZWRsZSBpcyBsZXNzIHRoYW4gYUhheXN0YWNrW21pZF0uXG4gICAgICBpZiAobWlkIC0gYUxvdyA+IDEpIHtcbiAgICAgICAgLy8gVGhlIGVsZW1lbnQgaXMgaW4gdGhlIGxvd2VyIGhhbGYuXG4gICAgICAgIHJldHVybiByZWN1cnNpdmVTZWFyY2goYUxvdywgbWlkLCBhTmVlZGxlLCBhSGF5c3RhY2ssIGFDb21wYXJlLCBhQmlhcyk7XG4gICAgICB9XG5cbiAgICAgIC8vIHdlIGFyZSBpbiB0ZXJtaW5hdGlvbiBjYXNlICgzKSBvciAoMikgYW5kIHJldHVybiB0aGUgYXBwcm9wcmlhdGUgdGhpbmcuXG4gICAgICBpZiAoYUJpYXMgPT0gZXhwb3J0cy5MRUFTVF9VUFBFUl9CT1VORCkge1xuICAgICAgICByZXR1cm4gbWlkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIGFMb3cgPCAwID8gLTEgOiBhTG93O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIGlzIGFuIGltcGxlbWVudGF0aW9uIG9mIGJpbmFyeSBzZWFyY2ggd2hpY2ggd2lsbCBhbHdheXMgdHJ5IGFuZCByZXR1cm5cbiAgICogdGhlIGluZGV4IG9mIHRoZSBjbG9zZXN0IGVsZW1lbnQgaWYgdGhlcmUgaXMgbm8gZXhhY3QgaGl0LiBUaGlzIGlzIGJlY2F1c2VcbiAgICogbWFwcGluZ3MgYmV0d2VlbiBvcmlnaW5hbCBhbmQgZ2VuZXJhdGVkIGxpbmUvY29sIHBhaXJzIGFyZSBzaW5nbGUgcG9pbnRzLFxuICAgKiBhbmQgdGhlcmUgaXMgYW4gaW1wbGljaXQgcmVnaW9uIGJldHdlZW4gZWFjaCBvZiB0aGVtLCBzbyBhIG1pc3MganVzdCBtZWFuc1xuICAgKiB0aGF0IHlvdSBhcmVuJ3Qgb24gdGhlIHZlcnkgc3RhcnQgb2YgYSByZWdpb24uXG4gICAqXG4gICAqIEBwYXJhbSBhTmVlZGxlIFRoZSBlbGVtZW50IHlvdSBhcmUgbG9va2luZyBmb3IuXG4gICAqIEBwYXJhbSBhSGF5c3RhY2sgVGhlIGFycmF5IHRoYXQgaXMgYmVpbmcgc2VhcmNoZWQuXG4gICAqIEBwYXJhbSBhQ29tcGFyZSBBIGZ1bmN0aW9uIHdoaWNoIHRha2VzIHRoZSBuZWVkbGUgYW5kIGFuIGVsZW1lbnQgaW4gdGhlXG4gICAqICAgICBhcnJheSBhbmQgcmV0dXJucyAtMSwgMCwgb3IgMSBkZXBlbmRpbmcgb24gd2hldGhlciB0aGUgbmVlZGxlIGlzIGxlc3NcbiAgICogICAgIHRoYW4sIGVxdWFsIHRvLCBvciBncmVhdGVyIHRoYW4gdGhlIGVsZW1lbnQsIHJlc3BlY3RpdmVseS5cbiAgICogQHBhcmFtIGFCaWFzIEVpdGhlciAnYmluYXJ5U2VhcmNoLkdSRUFURVNUX0xPV0VSX0JPVU5EJyBvclxuICAgKiAgICAgJ2JpbmFyeVNlYXJjaC5MRUFTVF9VUFBFUl9CT1VORCcuIFNwZWNpZmllcyB3aGV0aGVyIHRvIHJldHVybiB0aGVcbiAgICogICAgIGNsb3Nlc3QgZWxlbWVudCB0aGF0IGlzIHNtYWxsZXIgdGhhbiBvciBncmVhdGVyIHRoYW4gdGhlIG9uZSB3ZSBhcmVcbiAgICogICAgIHNlYXJjaGluZyBmb3IsIHJlc3BlY3RpdmVseSwgaWYgdGhlIGV4YWN0IGVsZW1lbnQgY2Fubm90IGJlIGZvdW5kLlxuICAgKiAgICAgRGVmYXVsdHMgdG8gJ2JpbmFyeVNlYXJjaC5HUkVBVEVTVF9MT1dFUl9CT1VORCcuXG4gICAqL1xuICBleHBvcnRzLnNlYXJjaCA9IGZ1bmN0aW9uIHNlYXJjaChhTmVlZGxlLCBhSGF5c3RhY2ssIGFDb21wYXJlLCBhQmlhcykge1xuICAgIGlmIChhSGF5c3RhY2subGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gLTE7XG4gICAgfVxuXG4gICAgdmFyIGluZGV4ID0gcmVjdXJzaXZlU2VhcmNoKC0xLCBhSGF5c3RhY2subGVuZ3RoLCBhTmVlZGxlLCBhSGF5c3RhY2ssXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFDb21wYXJlLCBhQmlhcyB8fCBleHBvcnRzLkdSRUFURVNUX0xPV0VSX0JPVU5EKTtcbiAgICBpZiAoaW5kZXggPCAwKSB7XG4gICAgICByZXR1cm4gLTE7XG4gICAgfVxuXG4gICAgLy8gV2UgaGF2ZSBmb3VuZCBlaXRoZXIgdGhlIGV4YWN0IGVsZW1lbnQsIG9yIHRoZSBuZXh0LWNsb3Nlc3QgZWxlbWVudCB0aGFuXG4gICAgLy8gdGhlIG9uZSB3ZSBhcmUgc2VhcmNoaW5nIGZvci4gSG93ZXZlciwgdGhlcmUgbWF5IGJlIG1vcmUgdGhhbiBvbmUgc3VjaFxuICAgIC8vIGVsZW1lbnQuIE1ha2Ugc3VyZSB3ZSBhbHdheXMgcmV0dXJuIHRoZSBzbWFsbGVzdCBvZiB0aGVzZS5cbiAgICB3aGlsZSAoaW5kZXggLSAxID49IDApIHtcbiAgICAgIGlmIChhQ29tcGFyZShhSGF5c3RhY2tbaW5kZXhdLCBhSGF5c3RhY2tbaW5kZXggLSAxXSwgdHJ1ZSkgIT09IDApIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICAtLWluZGV4O1xuICAgIH1cblxuICAgIHJldHVybiBpbmRleDtcbiAgfTtcbn1cblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9saWIvYmluYXJ5LXNlYXJjaC5qc1xuICoqIG1vZHVsZSBpZCA9IDhcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qIC0qLSBNb2RlOiBqczsganMtaW5kZW50LWxldmVsOiAyOyAtKi0gKi9cbi8qXG4gKiBDb3B5cmlnaHQgMjAxMSBNb3ppbGxhIEZvdW5kYXRpb24gYW5kIGNvbnRyaWJ1dG9yc1xuICogTGljZW5zZWQgdW5kZXIgdGhlIE5ldyBCU0QgbGljZW5zZS4gU2VlIExJQ0VOU0Ugb3I6XG4gKiBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlXG4gKi9cbntcbiAgLy8gSXQgdHVybnMgb3V0IHRoYXQgc29tZSAobW9zdD8pIEphdmFTY3JpcHQgZW5naW5lcyBkb24ndCBzZWxmLWhvc3RcbiAgLy8gYEFycmF5LnByb3RvdHlwZS5zb3J0YC4gVGhpcyBtYWtlcyBzZW5zZSBiZWNhdXNlIEMrKyB3aWxsIGxpa2VseSByZW1haW5cbiAgLy8gZmFzdGVyIHRoYW4gSlMgd2hlbiBkb2luZyByYXcgQ1BVLWludGVuc2l2ZSBzb3J0aW5nLiBIb3dldmVyLCB3aGVuIHVzaW5nIGFcbiAgLy8gY3VzdG9tIGNvbXBhcmF0b3IgZnVuY3Rpb24sIGNhbGxpbmcgYmFjayBhbmQgZm9ydGggYmV0d2VlbiB0aGUgVk0ncyBDKysgYW5kXG4gIC8vIEpJVCdkIEpTIGlzIHJhdGhlciBzbG93ICphbmQqIGxvc2VzIEpJVCB0eXBlIGluZm9ybWF0aW9uLCByZXN1bHRpbmcgaW5cbiAgLy8gd29yc2UgZ2VuZXJhdGVkIGNvZGUgZm9yIHRoZSBjb21wYXJhdG9yIGZ1bmN0aW9uIHRoYW4gd291bGQgYmUgb3B0aW1hbC4gSW5cbiAgLy8gZmFjdCwgd2hlbiBzb3J0aW5nIHdpdGggYSBjb21wYXJhdG9yLCB0aGVzZSBjb3N0cyBvdXR3ZWlnaCB0aGUgYmVuZWZpdHMgb2ZcbiAgLy8gc29ydGluZyBpbiBDKysuIEJ5IHVzaW5nIG91ciBvd24gSlMtaW1wbGVtZW50ZWQgUXVpY2sgU29ydCAoYmVsb3cpLCB3ZSBnZXRcbiAgLy8gYSB+MzUwMG1zIG1lYW4gc3BlZWQtdXAgaW4gYGJlbmNoL2JlbmNoLmh0bWxgLlxuXG4gIC8qKlxuICAgKiBTd2FwIHRoZSBlbGVtZW50cyBpbmRleGVkIGJ5IGB4YCBhbmQgYHlgIGluIHRoZSBhcnJheSBgYXJ5YC5cbiAgICpcbiAgICogQHBhcmFtIHtBcnJheX0gYXJ5XG4gICAqICAgICAgICBUaGUgYXJyYXkuXG4gICAqIEBwYXJhbSB7TnVtYmVyfSB4XG4gICAqICAgICAgICBUaGUgaW5kZXggb2YgdGhlIGZpcnN0IGl0ZW0uXG4gICAqIEBwYXJhbSB7TnVtYmVyfSB5XG4gICAqICAgICAgICBUaGUgaW5kZXggb2YgdGhlIHNlY29uZCBpdGVtLlxuICAgKi9cbiAgZnVuY3Rpb24gc3dhcChhcnksIHgsIHkpIHtcbiAgICB2YXIgdGVtcCA9IGFyeVt4XTtcbiAgICBhcnlbeF0gPSBhcnlbeV07XG4gICAgYXJ5W3ldID0gdGVtcDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgcmFuZG9tIGludGVnZXIgd2l0aGluIHRoZSByYW5nZSBgbG93IC4uIGhpZ2hgIGluY2x1c2l2ZS5cbiAgICpcbiAgICogQHBhcmFtIHtOdW1iZXJ9IGxvd1xuICAgKiAgICAgICAgVGhlIGxvd2VyIGJvdW5kIG9uIHRoZSByYW5nZS5cbiAgICogQHBhcmFtIHtOdW1iZXJ9IGhpZ2hcbiAgICogICAgICAgIFRoZSB1cHBlciBib3VuZCBvbiB0aGUgcmFuZ2UuXG4gICAqL1xuICBmdW5jdGlvbiByYW5kb21JbnRJblJhbmdlKGxvdywgaGlnaCkge1xuICAgIHJldHVybiBNYXRoLnJvdW5kKGxvdyArIChNYXRoLnJhbmRvbSgpICogKGhpZ2ggLSBsb3cpKSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIFF1aWNrIFNvcnQgYWxnb3JpdGhtLlxuICAgKlxuICAgKiBAcGFyYW0ge0FycmF5fSBhcnlcbiAgICogICAgICAgIEFuIGFycmF5IHRvIHNvcnQuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGNvbXBhcmF0b3JcbiAgICogICAgICAgIEZ1bmN0aW9uIHRvIHVzZSB0byBjb21wYXJlIHR3byBpdGVtcy5cbiAgICogQHBhcmFtIHtOdW1iZXJ9IHBcbiAgICogICAgICAgIFN0YXJ0IGluZGV4IG9mIHRoZSBhcnJheVxuICAgKiBAcGFyYW0ge051bWJlcn0gclxuICAgKiAgICAgICAgRW5kIGluZGV4IG9mIHRoZSBhcnJheVxuICAgKi9cbiAgZnVuY3Rpb24gZG9RdWlja1NvcnQoYXJ5LCBjb21wYXJhdG9yLCBwLCByKSB7XG4gICAgLy8gSWYgb3VyIGxvd2VyIGJvdW5kIGlzIGxlc3MgdGhhbiBvdXIgdXBwZXIgYm91bmQsIHdlICgxKSBwYXJ0aXRpb24gdGhlXG4gICAgLy8gYXJyYXkgaW50byB0d28gcGllY2VzIGFuZCAoMikgcmVjdXJzZSBvbiBlYWNoIGhhbGYuIElmIGl0IGlzIG5vdCwgdGhpcyBpc1xuICAgIC8vIHRoZSBlbXB0eSBhcnJheSBhbmQgb3VyIGJhc2UgY2FzZS5cblxuICAgIGlmIChwIDwgcikge1xuICAgICAgLy8gKDEpIFBhcnRpdGlvbmluZy5cbiAgICAgIC8vXG4gICAgICAvLyBUaGUgcGFydGl0aW9uaW5nIGNob29zZXMgYSBwaXZvdCBiZXR3ZWVuIGBwYCBhbmQgYHJgIGFuZCBtb3ZlcyBhbGxcbiAgICAgIC8vIGVsZW1lbnRzIHRoYXQgYXJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUgcGl2b3QgdG8gdGhlIGJlZm9yZSBpdCwgYW5kXG4gICAgICAvLyBhbGwgdGhlIGVsZW1lbnRzIHRoYXQgYXJlIGdyZWF0ZXIgdGhhbiBpdCBhZnRlciBpdC4gVGhlIGVmZmVjdCBpcyB0aGF0XG4gICAgICAvLyBvbmNlIHBhcnRpdGlvbiBpcyBkb25lLCB0aGUgcGl2b3QgaXMgaW4gdGhlIGV4YWN0IHBsYWNlIGl0IHdpbGwgYmUgd2hlblxuICAgICAgLy8gdGhlIGFycmF5IGlzIHB1dCBpbiBzb3J0ZWQgb3JkZXIsIGFuZCBpdCB3aWxsIG5vdCBuZWVkIHRvIGJlIG1vdmVkXG4gICAgICAvLyBhZ2Fpbi4gVGhpcyBydW5zIGluIE8obikgdGltZS5cblxuICAgICAgLy8gQWx3YXlzIGNob29zZSBhIHJhbmRvbSBwaXZvdCBzbyB0aGF0IGFuIGlucHV0IGFycmF5IHdoaWNoIGlzIHJldmVyc2VcbiAgICAgIC8vIHNvcnRlZCBkb2VzIG5vdCBjYXVzZSBPKG5eMikgcnVubmluZyB0aW1lLlxuICAgICAgdmFyIHBpdm90SW5kZXggPSByYW5kb21JbnRJblJhbmdlKHAsIHIpO1xuICAgICAgdmFyIGkgPSBwIC0gMTtcblxuICAgICAgc3dhcChhcnksIHBpdm90SW5kZXgsIHIpO1xuICAgICAgdmFyIHBpdm90ID0gYXJ5W3JdO1xuXG4gICAgICAvLyBJbW1lZGlhdGVseSBhZnRlciBgamAgaXMgaW5jcmVtZW50ZWQgaW4gdGhpcyBsb29wLCB0aGUgZm9sbG93aW5nIGhvbGRcbiAgICAgIC8vIHRydWU6XG4gICAgICAvL1xuICAgICAgLy8gICAqIEV2ZXJ5IGVsZW1lbnQgaW4gYGFyeVtwIC4uIGldYCBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHBpdm90LlxuICAgICAgLy9cbiAgICAgIC8vICAgKiBFdmVyeSBlbGVtZW50IGluIGBhcnlbaSsxIC4uIGotMV1gIGlzIGdyZWF0ZXIgdGhhbiB0aGUgcGl2b3QuXG4gICAgICBmb3IgKHZhciBqID0gcDsgaiA8IHI7IGorKykge1xuICAgICAgICBpZiAoY29tcGFyYXRvcihhcnlbal0sIHBpdm90KSA8PSAwKSB7XG4gICAgICAgICAgaSArPSAxO1xuICAgICAgICAgIHN3YXAoYXJ5LCBpLCBqKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBzd2FwKGFyeSwgaSArIDEsIGopO1xuICAgICAgdmFyIHEgPSBpICsgMTtcblxuICAgICAgLy8gKDIpIFJlY3Vyc2Ugb24gZWFjaCBoYWxmLlxuXG4gICAgICBkb1F1aWNrU29ydChhcnksIGNvbXBhcmF0b3IsIHAsIHEgLSAxKTtcbiAgICAgIGRvUXVpY2tTb3J0KGFyeSwgY29tcGFyYXRvciwgcSArIDEsIHIpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTb3J0IHRoZSBnaXZlbiBhcnJheSBpbi1wbGFjZSB3aXRoIHRoZSBnaXZlbiBjb21wYXJhdG9yIGZ1bmN0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge0FycmF5fSBhcnlcbiAgICogICAgICAgIEFuIGFycmF5IHRvIHNvcnQuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGNvbXBhcmF0b3JcbiAgICogICAgICAgIEZ1bmN0aW9uIHRvIHVzZSB0byBjb21wYXJlIHR3byBpdGVtcy5cbiAgICovXG4gIGV4cG9ydHMucXVpY2tTb3J0ID0gZnVuY3Rpb24gKGFyeSwgY29tcGFyYXRvcikge1xuICAgIGRvUXVpY2tTb3J0KGFyeSwgY29tcGFyYXRvciwgMCwgYXJ5Lmxlbmd0aCAtIDEpO1xuICB9O1xufVxuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL2xpYi9xdWljay1zb3J0LmpzXG4gKiogbW9kdWxlIGlkID0gOVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyogLSotIE1vZGU6IGpzOyBqcy1pbmRlbnQtbGV2ZWw6IDI7IC0qLSAqL1xuLypcbiAqIENvcHlyaWdodCAyMDExIE1vemlsbGEgRm91bmRhdGlvbiBhbmQgY29udHJpYnV0b3JzXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBsaWNlbnNlLiBTZWUgTElDRU5TRSBvcjpcbiAqIGh0dHA6Ly9vcGVuc291cmNlLm9yZy9saWNlbnNlcy9CU0QtMy1DbGF1c2VcbiAqL1xue1xuICB2YXIgU291cmNlTWFwR2VuZXJhdG9yID0gcmVxdWlyZSgnLi9zb3VyY2UtbWFwLWdlbmVyYXRvcicpLlNvdXJjZU1hcEdlbmVyYXRvcjtcbiAgdmFyIHV0aWwgPSByZXF1aXJlKCcuL3V0aWwnKTtcblxuICAvLyBNYXRjaGVzIGEgV2luZG93cy1zdHlsZSBgXFxyXFxuYCBuZXdsaW5lIG9yIGEgYFxcbmAgbmV3bGluZSB1c2VkIGJ5IGFsbCBvdGhlclxuICAvLyBvcGVyYXRpbmcgc3lzdGVtcyB0aGVzZSBkYXlzIChjYXB0dXJpbmcgdGhlIHJlc3VsdCkuXG4gIHZhciBSRUdFWF9ORVdMSU5FID0gLyhcXHI/XFxuKS87XG5cbiAgLy8gTmV3bGluZSBjaGFyYWN0ZXIgY29kZSBmb3IgY2hhckNvZGVBdCgpIGNvbXBhcmlzb25zXG4gIHZhciBORVdMSU5FX0NPREUgPSAxMDtcblxuICAvLyBQcml2YXRlIHN5bWJvbCBmb3IgaWRlbnRpZnlpbmcgYFNvdXJjZU5vZGVgcyB3aGVuIG11bHRpcGxlIHZlcnNpb25zIG9mXG4gIC8vIHRoZSBzb3VyY2UtbWFwIGxpYnJhcnkgYXJlIGxvYWRlZC4gVGhpcyBNVVNUIE5PVCBDSEFOR0UgYWNyb3NzXG4gIC8vIHZlcnNpb25zIVxuICB2YXIgaXNTb3VyY2VOb2RlID0gXCIkJCRpc1NvdXJjZU5vZGUkJCRcIjtcblxuICAvKipcbiAgICogU291cmNlTm9kZXMgcHJvdmlkZSBhIHdheSB0byBhYnN0cmFjdCBvdmVyIGludGVycG9sYXRpbmcvY29uY2F0ZW5hdGluZ1xuICAgKiBzbmlwcGV0cyBvZiBnZW5lcmF0ZWQgSmF2YVNjcmlwdCBzb3VyY2UgY29kZSB3aGlsZSBtYWludGFpbmluZyB0aGUgbGluZSBhbmRcbiAgICogY29sdW1uIGluZm9ybWF0aW9uIGFzc29jaWF0ZWQgd2l0aCB0aGUgb3JpZ2luYWwgc291cmNlIGNvZGUuXG4gICAqXG4gICAqIEBwYXJhbSBhTGluZSBUaGUgb3JpZ2luYWwgbGluZSBudW1iZXIuXG4gICAqIEBwYXJhbSBhQ29sdW1uIFRoZSBvcmlnaW5hbCBjb2x1bW4gbnVtYmVyLlxuICAgKiBAcGFyYW0gYVNvdXJjZSBUaGUgb3JpZ2luYWwgc291cmNlJ3MgZmlsZW5hbWUuXG4gICAqIEBwYXJhbSBhQ2h1bmtzIE9wdGlvbmFsLiBBbiBhcnJheSBvZiBzdHJpbmdzIHdoaWNoIGFyZSBzbmlwcGV0cyBvZlxuICAgKiAgICAgICAgZ2VuZXJhdGVkIEpTLCBvciBvdGhlciBTb3VyY2VOb2Rlcy5cbiAgICogQHBhcmFtIGFOYW1lIFRoZSBvcmlnaW5hbCBpZGVudGlmaWVyLlxuICAgKi9cbiAgZnVuY3Rpb24gU291cmNlTm9kZShhTGluZSwgYUNvbHVtbiwgYVNvdXJjZSwgYUNodW5rcywgYU5hbWUpIHtcbiAgICB0aGlzLmNoaWxkcmVuID0gW107XG4gICAgdGhpcy5zb3VyY2VDb250ZW50cyA9IHt9O1xuICAgIHRoaXMubGluZSA9IGFMaW5lID09IG51bGwgPyBudWxsIDogYUxpbmU7XG4gICAgdGhpcy5jb2x1bW4gPSBhQ29sdW1uID09IG51bGwgPyBudWxsIDogYUNvbHVtbjtcbiAgICB0aGlzLnNvdXJjZSA9IGFTb3VyY2UgPT0gbnVsbCA/IG51bGwgOiBhU291cmNlO1xuICAgIHRoaXMubmFtZSA9IGFOYW1lID09IG51bGwgPyBudWxsIDogYU5hbWU7XG4gICAgdGhpc1tpc1NvdXJjZU5vZGVdID0gdHJ1ZTtcbiAgICBpZiAoYUNodW5rcyAhPSBudWxsKSB0aGlzLmFkZChhQ2h1bmtzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgU291cmNlTm9kZSBmcm9tIGdlbmVyYXRlZCBjb2RlIGFuZCBhIFNvdXJjZU1hcENvbnN1bWVyLlxuICAgKlxuICAgKiBAcGFyYW0gYUdlbmVyYXRlZENvZGUgVGhlIGdlbmVyYXRlZCBjb2RlXG4gICAqIEBwYXJhbSBhU291cmNlTWFwQ29uc3VtZXIgVGhlIFNvdXJjZU1hcCBmb3IgdGhlIGdlbmVyYXRlZCBjb2RlXG4gICAqIEBwYXJhbSBhUmVsYXRpdmVQYXRoIE9wdGlvbmFsLiBUaGUgcGF0aCB0aGF0IHJlbGF0aXZlIHNvdXJjZXMgaW4gdGhlXG4gICAqICAgICAgICBTb3VyY2VNYXBDb25zdW1lciBzaG91bGQgYmUgcmVsYXRpdmUgdG8uXG4gICAqL1xuICBTb3VyY2VOb2RlLmZyb21TdHJpbmdXaXRoU291cmNlTWFwID1cbiAgICBmdW5jdGlvbiBTb3VyY2VOb2RlX2Zyb21TdHJpbmdXaXRoU291cmNlTWFwKGFHZW5lcmF0ZWRDb2RlLCBhU291cmNlTWFwQ29uc3VtZXIsIGFSZWxhdGl2ZVBhdGgpIHtcbiAgICAgIC8vIFRoZSBTb3VyY2VOb2RlIHdlIHdhbnQgdG8gZmlsbCB3aXRoIHRoZSBnZW5lcmF0ZWQgY29kZVxuICAgICAgLy8gYW5kIHRoZSBTb3VyY2VNYXBcbiAgICAgIHZhciBub2RlID0gbmV3IFNvdXJjZU5vZGUoKTtcblxuICAgICAgLy8gQWxsIGV2ZW4gaW5kaWNlcyBvZiB0aGlzIGFycmF5IGFyZSBvbmUgbGluZSBvZiB0aGUgZ2VuZXJhdGVkIGNvZGUsXG4gICAgICAvLyB3aGlsZSBhbGwgb2RkIGluZGljZXMgYXJlIHRoZSBuZXdsaW5lcyBiZXR3ZWVuIHR3byBhZGphY2VudCBsaW5lc1xuICAgICAgLy8gKHNpbmNlIGBSRUdFWF9ORVdMSU5FYCBjYXB0dXJlcyBpdHMgbWF0Y2gpLlxuICAgICAgLy8gUHJvY2Vzc2VkIGZyYWdtZW50cyBhcmUgcmVtb3ZlZCBmcm9tIHRoaXMgYXJyYXksIGJ5IGNhbGxpbmcgYHNoaWZ0TmV4dExpbmVgLlxuICAgICAgdmFyIHJlbWFpbmluZ0xpbmVzID0gYUdlbmVyYXRlZENvZGUuc3BsaXQoUkVHRVhfTkVXTElORSk7XG4gICAgICB2YXIgc2hpZnROZXh0TGluZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgbGluZUNvbnRlbnRzID0gcmVtYWluaW5nTGluZXMuc2hpZnQoKTtcbiAgICAgICAgLy8gVGhlIGxhc3QgbGluZSBvZiBhIGZpbGUgbWlnaHQgbm90IGhhdmUgYSBuZXdsaW5lLlxuICAgICAgICB2YXIgbmV3TGluZSA9IHJlbWFpbmluZ0xpbmVzLnNoaWZ0KCkgfHwgXCJcIjtcbiAgICAgICAgcmV0dXJuIGxpbmVDb250ZW50cyArIG5ld0xpbmU7XG4gICAgICB9O1xuXG4gICAgICAvLyBXZSBuZWVkIHRvIHJlbWVtYmVyIHRoZSBwb3NpdGlvbiBvZiBcInJlbWFpbmluZ0xpbmVzXCJcbiAgICAgIHZhciBsYXN0R2VuZXJhdGVkTGluZSA9IDEsIGxhc3RHZW5lcmF0ZWRDb2x1bW4gPSAwO1xuXG4gICAgICAvLyBUaGUgZ2VuZXJhdGUgU291cmNlTm9kZXMgd2UgbmVlZCBhIGNvZGUgcmFuZ2UuXG4gICAgICAvLyBUbyBleHRyYWN0IGl0IGN1cnJlbnQgYW5kIGxhc3QgbWFwcGluZyBpcyB1c2VkLlxuICAgICAgLy8gSGVyZSB3ZSBzdG9yZSB0aGUgbGFzdCBtYXBwaW5nLlxuICAgICAgdmFyIGxhc3RNYXBwaW5nID0gbnVsbDtcblxuICAgICAgYVNvdXJjZU1hcENvbnN1bWVyLmVhY2hNYXBwaW5nKGZ1bmN0aW9uIChtYXBwaW5nKSB7XG4gICAgICAgIGlmIChsYXN0TWFwcGluZyAhPT0gbnVsbCkge1xuICAgICAgICAgIC8vIFdlIGFkZCB0aGUgY29kZSBmcm9tIFwibGFzdE1hcHBpbmdcIiB0byBcIm1hcHBpbmdcIjpcbiAgICAgICAgICAvLyBGaXJzdCBjaGVjayBpZiB0aGVyZSBpcyBhIG5ldyBsaW5lIGluIGJldHdlZW4uXG4gICAgICAgICAgaWYgKGxhc3RHZW5lcmF0ZWRMaW5lIDwgbWFwcGluZy5nZW5lcmF0ZWRMaW5lKSB7XG4gICAgICAgICAgICAvLyBBc3NvY2lhdGUgZmlyc3QgbGluZSB3aXRoIFwibGFzdE1hcHBpbmdcIlxuICAgICAgICAgICAgYWRkTWFwcGluZ1dpdGhDb2RlKGxhc3RNYXBwaW5nLCBzaGlmdE5leHRMaW5lKCkpO1xuICAgICAgICAgICAgbGFzdEdlbmVyYXRlZExpbmUrKztcbiAgICAgICAgICAgIGxhc3RHZW5lcmF0ZWRDb2x1bW4gPSAwO1xuICAgICAgICAgICAgLy8gVGhlIHJlbWFpbmluZyBjb2RlIGlzIGFkZGVkIHdpdGhvdXQgbWFwcGluZ1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBUaGVyZSBpcyBubyBuZXcgbGluZSBpbiBiZXR3ZWVuLlxuICAgICAgICAgICAgLy8gQXNzb2NpYXRlIHRoZSBjb2RlIGJldHdlZW4gXCJsYXN0R2VuZXJhdGVkQ29sdW1uXCIgYW5kXG4gICAgICAgICAgICAvLyBcIm1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uXCIgd2l0aCBcImxhc3RNYXBwaW5nXCJcbiAgICAgICAgICAgIHZhciBuZXh0TGluZSA9IHJlbWFpbmluZ0xpbmVzWzBdO1xuICAgICAgICAgICAgdmFyIGNvZGUgPSBuZXh0TGluZS5zdWJzdHIoMCwgbWFwcGluZy5nZW5lcmF0ZWRDb2x1bW4gLVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdEdlbmVyYXRlZENvbHVtbik7XG4gICAgICAgICAgICByZW1haW5pbmdMaW5lc1swXSA9IG5leHRMaW5lLnN1YnN0cihtYXBwaW5nLmdlbmVyYXRlZENvbHVtbiAtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0R2VuZXJhdGVkQ29sdW1uKTtcbiAgICAgICAgICAgIGxhc3RHZW5lcmF0ZWRDb2x1bW4gPSBtYXBwaW5nLmdlbmVyYXRlZENvbHVtbjtcbiAgICAgICAgICAgIGFkZE1hcHBpbmdXaXRoQ29kZShsYXN0TWFwcGluZywgY29kZSk7XG4gICAgICAgICAgICAvLyBObyBtb3JlIHJlbWFpbmluZyBjb2RlLCBjb250aW51ZVxuICAgICAgICAgICAgbGFzdE1hcHBpbmcgPSBtYXBwaW5nO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBXZSBhZGQgdGhlIGdlbmVyYXRlZCBjb2RlIHVudGlsIHRoZSBmaXJzdCBtYXBwaW5nXG4gICAgICAgIC8vIHRvIHRoZSBTb3VyY2VOb2RlIHdpdGhvdXQgYW55IG1hcHBpbmcuXG4gICAgICAgIC8vIEVhY2ggbGluZSBpcyBhZGRlZCBhcyBzZXBhcmF0ZSBzdHJpbmcuXG4gICAgICAgIHdoaWxlIChsYXN0R2VuZXJhdGVkTGluZSA8IG1hcHBpbmcuZ2VuZXJhdGVkTGluZSkge1xuICAgICAgICAgIG5vZGUuYWRkKHNoaWZ0TmV4dExpbmUoKSk7XG4gICAgICAgICAgbGFzdEdlbmVyYXRlZExpbmUrKztcbiAgICAgICAgfVxuICAgICAgICBpZiAobGFzdEdlbmVyYXRlZENvbHVtbiA8IG1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uKSB7XG4gICAgICAgICAgdmFyIG5leHRMaW5lID0gcmVtYWluaW5nTGluZXNbMF07XG4gICAgICAgICAgbm9kZS5hZGQobmV4dExpbmUuc3Vic3RyKDAsIG1hcHBpbmcuZ2VuZXJhdGVkQ29sdW1uKSk7XG4gICAgICAgICAgcmVtYWluaW5nTGluZXNbMF0gPSBuZXh0TGluZS5zdWJzdHIobWFwcGluZy5nZW5lcmF0ZWRDb2x1bW4pO1xuICAgICAgICAgIGxhc3RHZW5lcmF0ZWRDb2x1bW4gPSBtYXBwaW5nLmdlbmVyYXRlZENvbHVtbjtcbiAgICAgICAgfVxuICAgICAgICBsYXN0TWFwcGluZyA9IG1hcHBpbmc7XG4gICAgICB9LCB0aGlzKTtcbiAgICAgIC8vIFdlIGhhdmUgcHJvY2Vzc2VkIGFsbCBtYXBwaW5ncy5cbiAgICAgIGlmIChyZW1haW5pbmdMaW5lcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGlmIChsYXN0TWFwcGluZykge1xuICAgICAgICAgIC8vIEFzc29jaWF0ZSB0aGUgcmVtYWluaW5nIGNvZGUgaW4gdGhlIGN1cnJlbnQgbGluZSB3aXRoIFwibGFzdE1hcHBpbmdcIlxuICAgICAgICAgIGFkZE1hcHBpbmdXaXRoQ29kZShsYXN0TWFwcGluZywgc2hpZnROZXh0TGluZSgpKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBhbmQgYWRkIHRoZSByZW1haW5pbmcgbGluZXMgd2l0aG91dCBhbnkgbWFwcGluZ1xuICAgICAgICBub2RlLmFkZChyZW1haW5pbmdMaW5lcy5qb2luKFwiXCIpKTtcbiAgICAgIH1cblxuICAgICAgLy8gQ29weSBzb3VyY2VzQ29udGVudCBpbnRvIFNvdXJjZU5vZGVcbiAgICAgIGFTb3VyY2VNYXBDb25zdW1lci5zb3VyY2VzLmZvckVhY2goZnVuY3Rpb24gKHNvdXJjZUZpbGUpIHtcbiAgICAgICAgdmFyIGNvbnRlbnQgPSBhU291cmNlTWFwQ29uc3VtZXIuc291cmNlQ29udGVudEZvcihzb3VyY2VGaWxlKTtcbiAgICAgICAgaWYgKGNvbnRlbnQgIT0gbnVsbCkge1xuICAgICAgICAgIGlmIChhUmVsYXRpdmVQYXRoICE9IG51bGwpIHtcbiAgICAgICAgICAgIHNvdXJjZUZpbGUgPSB1dGlsLmpvaW4oYVJlbGF0aXZlUGF0aCwgc291cmNlRmlsZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIG5vZGUuc2V0U291cmNlQ29udGVudChzb3VyY2VGaWxlLCBjb250ZW50KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBub2RlO1xuXG4gICAgICBmdW5jdGlvbiBhZGRNYXBwaW5nV2l0aENvZGUobWFwcGluZywgY29kZSkge1xuICAgICAgICBpZiAobWFwcGluZyA9PT0gbnVsbCB8fCBtYXBwaW5nLnNvdXJjZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgbm9kZS5hZGQoY29kZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFyIHNvdXJjZSA9IGFSZWxhdGl2ZVBhdGhcbiAgICAgICAgICAgID8gdXRpbC5qb2luKGFSZWxhdGl2ZVBhdGgsIG1hcHBpbmcuc291cmNlKVxuICAgICAgICAgICAgOiBtYXBwaW5nLnNvdXJjZTtcbiAgICAgICAgICBub2RlLmFkZChuZXcgU291cmNlTm9kZShtYXBwaW5nLm9yaWdpbmFsTGluZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBwaW5nLm9yaWdpbmFsQ29sdW1uLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcHBpbmcubmFtZSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcblxuICAvKipcbiAgICogQWRkIGEgY2h1bmsgb2YgZ2VuZXJhdGVkIEpTIHRvIHRoaXMgc291cmNlIG5vZGUuXG4gICAqXG4gICAqIEBwYXJhbSBhQ2h1bmsgQSBzdHJpbmcgc25pcHBldCBvZiBnZW5lcmF0ZWQgSlMgY29kZSwgYW5vdGhlciBpbnN0YW5jZSBvZlxuICAgKiAgICAgICAgU291cmNlTm9kZSwgb3IgYW4gYXJyYXkgd2hlcmUgZWFjaCBtZW1iZXIgaXMgb25lIG9mIHRob3NlIHRoaW5ncy5cbiAgICovXG4gIFNvdXJjZU5vZGUucHJvdG90eXBlLmFkZCA9IGZ1bmN0aW9uIFNvdXJjZU5vZGVfYWRkKGFDaHVuaykge1xuICAgIGlmIChBcnJheS5pc0FycmF5KGFDaHVuaykpIHtcbiAgICAgIGFDaHVuay5mb3JFYWNoKGZ1bmN0aW9uIChjaHVuaykge1xuICAgICAgICB0aGlzLmFkZChjaHVuayk7XG4gICAgICB9LCB0aGlzKTtcbiAgICB9XG4gICAgZWxzZSBpZiAoYUNodW5rW2lzU291cmNlTm9kZV0gfHwgdHlwZW9mIGFDaHVuayA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgaWYgKGFDaHVuaykge1xuICAgICAgICB0aGlzLmNoaWxkcmVuLnB1c2goYUNodW5rKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFxuICAgICAgICBcIkV4cGVjdGVkIGEgU291cmNlTm9kZSwgc3RyaW5nLCBvciBhbiBhcnJheSBvZiBTb3VyY2VOb2RlcyBhbmQgc3RyaW5ncy4gR290IFwiICsgYUNodW5rXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICAvKipcbiAgICogQWRkIGEgY2h1bmsgb2YgZ2VuZXJhdGVkIEpTIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhpcyBzb3VyY2Ugbm9kZS5cbiAgICpcbiAgICogQHBhcmFtIGFDaHVuayBBIHN0cmluZyBzbmlwcGV0IG9mIGdlbmVyYXRlZCBKUyBjb2RlLCBhbm90aGVyIGluc3RhbmNlIG9mXG4gICAqICAgICAgICBTb3VyY2VOb2RlLCBvciBhbiBhcnJheSB3aGVyZSBlYWNoIG1lbWJlciBpcyBvbmUgb2YgdGhvc2UgdGhpbmdzLlxuICAgKi9cbiAgU291cmNlTm9kZS5wcm90b3R5cGUucHJlcGVuZCA9IGZ1bmN0aW9uIFNvdXJjZU5vZGVfcHJlcGVuZChhQ2h1bmspIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShhQ2h1bmspKSB7XG4gICAgICBmb3IgKHZhciBpID0gYUNodW5rLmxlbmd0aC0xOyBpID49IDA7IGktLSkge1xuICAgICAgICB0aGlzLnByZXBlbmQoYUNodW5rW2ldKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZWxzZSBpZiAoYUNodW5rW2lzU291cmNlTm9kZV0gfHwgdHlwZW9mIGFDaHVuayA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgdGhpcy5jaGlsZHJlbi51bnNoaWZ0KGFDaHVuayk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcbiAgICAgICAgXCJFeHBlY3RlZCBhIFNvdXJjZU5vZGUsIHN0cmluZywgb3IgYW4gYXJyYXkgb2YgU291cmNlTm9kZXMgYW5kIHN0cmluZ3MuIEdvdCBcIiArIGFDaHVua1xuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgLyoqXG4gICAqIFdhbGsgb3ZlciB0aGUgdHJlZSBvZiBKUyBzbmlwcGV0cyBpbiB0aGlzIG5vZGUgYW5kIGl0cyBjaGlsZHJlbi4gVGhlXG4gICAqIHdhbGtpbmcgZnVuY3Rpb24gaXMgY2FsbGVkIG9uY2UgZm9yIGVhY2ggc25pcHBldCBvZiBKUyBhbmQgaXMgcGFzc2VkIHRoYXRcbiAgICogc25pcHBldCBhbmQgdGhlIGl0cyBvcmlnaW5hbCBhc3NvY2lhdGVkIHNvdXJjZSdzIGxpbmUvY29sdW1uIGxvY2F0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gYUZuIFRoZSB0cmF2ZXJzYWwgZnVuY3Rpb24uXG4gICAqL1xuICBTb3VyY2VOb2RlLnByb3RvdHlwZS53YWxrID0gZnVuY3Rpb24gU291cmNlTm9kZV93YWxrKGFGbikge1xuICAgIHZhciBjaHVuaztcbiAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gdGhpcy5jaGlsZHJlbi5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xuICAgICAgY2h1bmsgPSB0aGlzLmNoaWxkcmVuW2ldO1xuICAgICAgaWYgKGNodW5rW2lzU291cmNlTm9kZV0pIHtcbiAgICAgICAgY2h1bmsud2FsayhhRm4pO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIGlmIChjaHVuayAhPT0gJycpIHtcbiAgICAgICAgICBhRm4oY2h1bmssIHsgc291cmNlOiB0aGlzLnNvdXJjZSxcbiAgICAgICAgICAgICAgICAgICAgICAgbGluZTogdGhpcy5saW5lLFxuICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW46IHRoaXMuY29sdW1uLFxuICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiB0aGlzLm5hbWUgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgLyoqXG4gICAqIExpa2UgYFN0cmluZy5wcm90b3R5cGUuam9pbmAgZXhjZXB0IGZvciBTb3VyY2VOb2Rlcy4gSW5zZXJ0cyBgYVN0cmAgYmV0d2VlblxuICAgKiBlYWNoIG9mIGB0aGlzLmNoaWxkcmVuYC5cbiAgICpcbiAgICogQHBhcmFtIGFTZXAgVGhlIHNlcGFyYXRvci5cbiAgICovXG4gIFNvdXJjZU5vZGUucHJvdG90eXBlLmpvaW4gPSBmdW5jdGlvbiBTb3VyY2VOb2RlX2pvaW4oYVNlcCkge1xuICAgIHZhciBuZXdDaGlsZHJlbjtcbiAgICB2YXIgaTtcbiAgICB2YXIgbGVuID0gdGhpcy5jaGlsZHJlbi5sZW5ndGg7XG4gICAgaWYgKGxlbiA+IDApIHtcbiAgICAgIG5ld0NoaWxkcmVuID0gW107XG4gICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuLTE7IGkrKykge1xuICAgICAgICBuZXdDaGlsZHJlbi5wdXNoKHRoaXMuY2hpbGRyZW5baV0pO1xuICAgICAgICBuZXdDaGlsZHJlbi5wdXNoKGFTZXApO1xuICAgICAgfVxuICAgICAgbmV3Q2hpbGRyZW4ucHVzaCh0aGlzLmNoaWxkcmVuW2ldKTtcbiAgICAgIHRoaXMuY2hpbGRyZW4gPSBuZXdDaGlsZHJlbjtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgLyoqXG4gICAqIENhbGwgU3RyaW5nLnByb3RvdHlwZS5yZXBsYWNlIG9uIHRoZSB2ZXJ5IHJpZ2h0LW1vc3Qgc291cmNlIHNuaXBwZXQuIFVzZWZ1bFxuICAgKiBmb3IgdHJpbW1pbmcgd2hpdGVzcGFjZSBmcm9tIHRoZSBlbmQgb2YgYSBzb3VyY2Ugbm9kZSwgZXRjLlxuICAgKlxuICAgKiBAcGFyYW0gYVBhdHRlcm4gVGhlIHBhdHRlcm4gdG8gcmVwbGFjZS5cbiAgICogQHBhcmFtIGFSZXBsYWNlbWVudCBUaGUgdGhpbmcgdG8gcmVwbGFjZSB0aGUgcGF0dGVybiB3aXRoLlxuICAgKi9cbiAgU291cmNlTm9kZS5wcm90b3R5cGUucmVwbGFjZVJpZ2h0ID0gZnVuY3Rpb24gU291cmNlTm9kZV9yZXBsYWNlUmlnaHQoYVBhdHRlcm4sIGFSZXBsYWNlbWVudCkge1xuICAgIHZhciBsYXN0Q2hpbGQgPSB0aGlzLmNoaWxkcmVuW3RoaXMuY2hpbGRyZW4ubGVuZ3RoIC0gMV07XG4gICAgaWYgKGxhc3RDaGlsZFtpc1NvdXJjZU5vZGVdKSB7XG4gICAgICBsYXN0Q2hpbGQucmVwbGFjZVJpZ2h0KGFQYXR0ZXJuLCBhUmVwbGFjZW1lbnQpO1xuICAgIH1cbiAgICBlbHNlIGlmICh0eXBlb2YgbGFzdENoaWxkID09PSAnc3RyaW5nJykge1xuICAgICAgdGhpcy5jaGlsZHJlblt0aGlzLmNoaWxkcmVuLmxlbmd0aCAtIDFdID0gbGFzdENoaWxkLnJlcGxhY2UoYVBhdHRlcm4sIGFSZXBsYWNlbWVudCk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgdGhpcy5jaGlsZHJlbi5wdXNoKCcnLnJlcGxhY2UoYVBhdHRlcm4sIGFSZXBsYWNlbWVudCkpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICAvKipcbiAgICogU2V0IHRoZSBzb3VyY2UgY29udGVudCBmb3IgYSBzb3VyY2UgZmlsZS4gVGhpcyB3aWxsIGJlIGFkZGVkIHRvIHRoZSBTb3VyY2VNYXBHZW5lcmF0b3JcbiAgICogaW4gdGhlIHNvdXJjZXNDb250ZW50IGZpZWxkLlxuICAgKlxuICAgKiBAcGFyYW0gYVNvdXJjZUZpbGUgVGhlIGZpbGVuYW1lIG9mIHRoZSBzb3VyY2UgZmlsZVxuICAgKiBAcGFyYW0gYVNvdXJjZUNvbnRlbnQgVGhlIGNvbnRlbnQgb2YgdGhlIHNvdXJjZSBmaWxlXG4gICAqL1xuICBTb3VyY2VOb2RlLnByb3RvdHlwZS5zZXRTb3VyY2VDb250ZW50ID1cbiAgICBmdW5jdGlvbiBTb3VyY2VOb2RlX3NldFNvdXJjZUNvbnRlbnQoYVNvdXJjZUZpbGUsIGFTb3VyY2VDb250ZW50KSB7XG4gICAgICB0aGlzLnNvdXJjZUNvbnRlbnRzW3V0aWwudG9TZXRTdHJpbmcoYVNvdXJjZUZpbGUpXSA9IGFTb3VyY2VDb250ZW50O1xuICAgIH07XG5cbiAgLyoqXG4gICAqIFdhbGsgb3ZlciB0aGUgdHJlZSBvZiBTb3VyY2VOb2Rlcy4gVGhlIHdhbGtpbmcgZnVuY3Rpb24gaXMgY2FsbGVkIGZvciBlYWNoXG4gICAqIHNvdXJjZSBmaWxlIGNvbnRlbnQgYW5kIGlzIHBhc3NlZCB0aGUgZmlsZW5hbWUgYW5kIHNvdXJjZSBjb250ZW50LlxuICAgKlxuICAgKiBAcGFyYW0gYUZuIFRoZSB0cmF2ZXJzYWwgZnVuY3Rpb24uXG4gICAqL1xuICBTb3VyY2VOb2RlLnByb3RvdHlwZS53YWxrU291cmNlQ29udGVudHMgPVxuICAgIGZ1bmN0aW9uIFNvdXJjZU5vZGVfd2Fsa1NvdXJjZUNvbnRlbnRzKGFGbikge1xuICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IHRoaXMuY2hpbGRyZW4ubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgaWYgKHRoaXMuY2hpbGRyZW5baV1baXNTb3VyY2VOb2RlXSkge1xuICAgICAgICAgIHRoaXMuY2hpbGRyZW5baV0ud2Fsa1NvdXJjZUNvbnRlbnRzKGFGbik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdmFyIHNvdXJjZXMgPSBPYmplY3Qua2V5cyh0aGlzLnNvdXJjZUNvbnRlbnRzKTtcbiAgICAgIGZvciAodmFyIGkgPSAwLCBsZW4gPSBzb3VyY2VzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICAgIGFGbih1dGlsLmZyb21TZXRTdHJpbmcoc291cmNlc1tpXSksIHRoaXMuc291cmNlQ29udGVudHNbc291cmNlc1tpXV0pO1xuICAgICAgfVxuICAgIH07XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgc291cmNlIG5vZGUuIFdhbGtzIG92ZXIgdGhlIHRyZWVcbiAgICogYW5kIGNvbmNhdGVuYXRlcyBhbGwgdGhlIHZhcmlvdXMgc25pcHBldHMgdG9nZXRoZXIgdG8gb25lIHN0cmluZy5cbiAgICovXG4gIFNvdXJjZU5vZGUucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24gU291cmNlTm9kZV90b1N0cmluZygpIHtcbiAgICB2YXIgc3RyID0gXCJcIjtcbiAgICB0aGlzLndhbGsoZnVuY3Rpb24gKGNodW5rKSB7XG4gICAgICBzdHIgKz0gY2h1bms7XG4gICAgfSk7XG4gICAgcmV0dXJuIHN0cjtcbiAgfTtcblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgc291cmNlIG5vZGUgYWxvbmcgd2l0aCBhIHNvdXJjZVxuICAgKiBtYXAuXG4gICAqL1xuICBTb3VyY2VOb2RlLnByb3RvdHlwZS50b1N0cmluZ1dpdGhTb3VyY2VNYXAgPSBmdW5jdGlvbiBTb3VyY2VOb2RlX3RvU3RyaW5nV2l0aFNvdXJjZU1hcChhQXJncykge1xuICAgIHZhciBnZW5lcmF0ZWQgPSB7XG4gICAgICBjb2RlOiBcIlwiLFxuICAgICAgbGluZTogMSxcbiAgICAgIGNvbHVtbjogMFxuICAgIH07XG4gICAgdmFyIG1hcCA9IG5ldyBTb3VyY2VNYXBHZW5lcmF0b3IoYUFyZ3MpO1xuICAgIHZhciBzb3VyY2VNYXBwaW5nQWN0aXZlID0gZmFsc2U7XG4gICAgdmFyIGxhc3RPcmlnaW5hbFNvdXJjZSA9IG51bGw7XG4gICAgdmFyIGxhc3RPcmlnaW5hbExpbmUgPSBudWxsO1xuICAgIHZhciBsYXN0T3JpZ2luYWxDb2x1bW4gPSBudWxsO1xuICAgIHZhciBsYXN0T3JpZ2luYWxOYW1lID0gbnVsbDtcbiAgICB0aGlzLndhbGsoZnVuY3Rpb24gKGNodW5rLCBvcmlnaW5hbCkge1xuICAgICAgZ2VuZXJhdGVkLmNvZGUgKz0gY2h1bms7XG4gICAgICBpZiAob3JpZ2luYWwuc291cmNlICE9PSBudWxsXG4gICAgICAgICAgJiYgb3JpZ2luYWwubGluZSAhPT0gbnVsbFxuICAgICAgICAgICYmIG9yaWdpbmFsLmNvbHVtbiAhPT0gbnVsbCkge1xuICAgICAgICBpZihsYXN0T3JpZ2luYWxTb3VyY2UgIT09IG9yaWdpbmFsLnNvdXJjZVxuICAgICAgICAgICB8fCBsYXN0T3JpZ2luYWxMaW5lICE9PSBvcmlnaW5hbC5saW5lXG4gICAgICAgICAgIHx8IGxhc3RPcmlnaW5hbENvbHVtbiAhPT0gb3JpZ2luYWwuY29sdW1uXG4gICAgICAgICAgIHx8IGxhc3RPcmlnaW5hbE5hbWUgIT09IG9yaWdpbmFsLm5hbWUpIHtcbiAgICAgICAgICBtYXAuYWRkTWFwcGluZyh7XG4gICAgICAgICAgICBzb3VyY2U6IG9yaWdpbmFsLnNvdXJjZSxcbiAgICAgICAgICAgIG9yaWdpbmFsOiB7XG4gICAgICAgICAgICAgIGxpbmU6IG9yaWdpbmFsLmxpbmUsXG4gICAgICAgICAgICAgIGNvbHVtbjogb3JpZ2luYWwuY29sdW1uXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2VuZXJhdGVkOiB7XG4gICAgICAgICAgICAgIGxpbmU6IGdlbmVyYXRlZC5saW5lLFxuICAgICAgICAgICAgICBjb2x1bW46IGdlbmVyYXRlZC5jb2x1bW5cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBuYW1lOiBvcmlnaW5hbC5uYW1lXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgbGFzdE9yaWdpbmFsU291cmNlID0gb3JpZ2luYWwuc291cmNlO1xuICAgICAgICBsYXN0T3JpZ2luYWxMaW5lID0gb3JpZ2luYWwubGluZTtcbiAgICAgICAgbGFzdE9yaWdpbmFsQ29sdW1uID0gb3JpZ2luYWwuY29sdW1uO1xuICAgICAgICBsYXN0T3JpZ2luYWxOYW1lID0gb3JpZ2luYWwubmFtZTtcbiAgICAgICAgc291cmNlTWFwcGluZ0FjdGl2ZSA9IHRydWU7XG4gICAgICB9IGVsc2UgaWYgKHNvdXJjZU1hcHBpbmdBY3RpdmUpIHtcbiAgICAgICAgbWFwLmFkZE1hcHBpbmcoe1xuICAgICAgICAgIGdlbmVyYXRlZDoge1xuICAgICAgICAgICAgbGluZTogZ2VuZXJhdGVkLmxpbmUsXG4gICAgICAgICAgICBjb2x1bW46IGdlbmVyYXRlZC5jb2x1bW5cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBsYXN0T3JpZ2luYWxTb3VyY2UgPSBudWxsO1xuICAgICAgICBzb3VyY2VNYXBwaW5nQWN0aXZlID0gZmFsc2U7XG4gICAgICB9XG4gICAgICBmb3IgKHZhciBpZHggPSAwLCBsZW5ndGggPSBjaHVuay5sZW5ndGg7IGlkeCA8IGxlbmd0aDsgaWR4KyspIHtcbiAgICAgICAgaWYgKGNodW5rLmNoYXJDb2RlQXQoaWR4KSA9PT0gTkVXTElORV9DT0RFKSB7XG4gICAgICAgICAgZ2VuZXJhdGVkLmxpbmUrKztcbiAgICAgICAgICBnZW5lcmF0ZWQuY29sdW1uID0gMDtcbiAgICAgICAgICAvLyBNYXBwaW5ncyBlbmQgYXQgZW9sXG4gICAgICAgICAgaWYgKGlkeCArIDEgPT09IGxlbmd0aCkge1xuICAgICAgICAgICAgbGFzdE9yaWdpbmFsU291cmNlID0gbnVsbDtcbiAgICAgICAgICAgIHNvdXJjZU1hcHBpbmdBY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHNvdXJjZU1hcHBpbmdBY3RpdmUpIHtcbiAgICAgICAgICAgIG1hcC5hZGRNYXBwaW5nKHtcbiAgICAgICAgICAgICAgc291cmNlOiBvcmlnaW5hbC5zb3VyY2UsXG4gICAgICAgICAgICAgIG9yaWdpbmFsOiB7XG4gICAgICAgICAgICAgICAgbGluZTogb3JpZ2luYWwubGluZSxcbiAgICAgICAgICAgICAgICBjb2x1bW46IG9yaWdpbmFsLmNvbHVtblxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBnZW5lcmF0ZWQ6IHtcbiAgICAgICAgICAgICAgICBsaW5lOiBnZW5lcmF0ZWQubGluZSxcbiAgICAgICAgICAgICAgICBjb2x1bW46IGdlbmVyYXRlZC5jb2x1bW5cbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgbmFtZTogb3JpZ2luYWwubmFtZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGdlbmVyYXRlZC5jb2x1bW4rKztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMud2Fsa1NvdXJjZUNvbnRlbnRzKGZ1bmN0aW9uIChzb3VyY2VGaWxlLCBzb3VyY2VDb250ZW50KSB7XG4gICAgICBtYXAuc2V0U291cmNlQ29udGVudChzb3VyY2VGaWxlLCBzb3VyY2VDb250ZW50KTtcbiAgICB9KTtcblxuICAgIHJldHVybiB7IGNvZGU6IGdlbmVyYXRlZC5jb2RlLCBtYXA6IG1hcCB9O1xuICB9O1xuXG4gIGV4cG9ydHMuU291cmNlTm9kZSA9IFNvdXJjZU5vZGU7XG59XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vbGliL3NvdXJjZS1ub2RlLmpzXG4gKiogbW9kdWxlIGlkID0gMTBcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyJdLCJzb3VyY2VSb290IjoiIn0=
\ No newline at end of file
diff --git a/node_modules/babel-generator/node_modules/source-map/dist/source-map.js b/node_modules/babel-generator/node_modules/source-map/dist/source-map.js
new file mode 100644
index 0000000..25199a6
--- /dev/null
+++ b/node_modules/babel-generator/node_modules/source-map/dist/source-map.js
@@ -0,0 +1,3005 @@
+(function webpackUniversalModuleDefinition(root, factory) {
+ if(typeof exports === 'object' && typeof module === 'object')
+ module.exports = factory();
+ else if(typeof define === 'function' && define.amd)
+ define([], factory);
+ else if(typeof exports === 'object')
+ exports["sourceMap"] = factory();
+ else
+ root["sourceMap"] = factory();
+})(this, function() {
+return /******/ (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] = {
+/******/ exports: {},
+/******/ id: moduleId,
+/******/ loaded: false
+/******/ };
+
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+
+/******/ // Flag the module as loaded
+/******/ module.loaded = 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;
+
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ([
+/* 0 */
+/***/ function(module, exports, __webpack_require__) {
+
+ /*
+ * Copyright 2009-2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE.txt or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+ exports.SourceMapGenerator = __webpack_require__(1).SourceMapGenerator;
+ exports.SourceMapConsumer = __webpack_require__(7).SourceMapConsumer;
+ exports.SourceNode = __webpack_require__(10).SourceNode;
+
+
+/***/ },
+/* 1 */
+/***/ function(module, exports, __webpack_require__) {
+
+ /* -*- Mode: js; js-indent-level: 2; -*- */
+ /*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+ {
+ var base64VLQ = __webpack_require__(2);
+ var util = __webpack_require__(4);
+ var ArraySet = __webpack_require__(5).ArraySet;
+ var MappingList = __webpack_require__(6).MappingList;
+
+ /**
+ * An instance of the SourceMapGenerator represents a source map which is
+ * being built incrementally. You may pass an object with the following
+ * properties:
+ *
+ * - file: The filename of the generated source.
+ * - sourceRoot: A root for all relative URLs in this source map.
+ */
+ function SourceMapGenerator(aArgs) {
+ if (!aArgs) {
+ aArgs = {};
+ }
+ this._file = util.getArg(aArgs, 'file', null);
+ this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null);
+ this._skipValidation = util.getArg(aArgs, 'skipValidation', false);
+ this._sources = new ArraySet();
+ this._names = new ArraySet();
+ this._mappings = new MappingList();
+ this._sourcesContents = null;
+ }
+
+ SourceMapGenerator.prototype._version = 3;
+
+ /**
+ * Creates a new SourceMapGenerator based on a SourceMapConsumer
+ *
+ * @param aSourceMapConsumer The SourceMap.
+ */
+ SourceMapGenerator.fromSourceMap =
+ function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) {
+ var sourceRoot = aSourceMapConsumer.sourceRoot;
+ var generator = new SourceMapGenerator({
+ file: aSourceMapConsumer.file,
+ sourceRoot: sourceRoot
+ });
+ aSourceMapConsumer.eachMapping(function (mapping) {
+ var newMapping = {
+ generated: {
+ line: mapping.generatedLine,
+ column: mapping.generatedColumn
+ }
+ };
+
+ if (mapping.source != null) {
+ newMapping.source = mapping.source;
+ if (sourceRoot != null) {
+ newMapping.source = util.relative(sourceRoot, newMapping.source);
+ }
+
+ newMapping.original = {
+ line: mapping.originalLine,
+ column: mapping.originalColumn
+ };
+
+ if (mapping.name != null) {
+ newMapping.name = mapping.name;
+ }
+ }
+
+ generator.addMapping(newMapping);
+ });
+ aSourceMapConsumer.sources.forEach(function (sourceFile) {
+ var content = aSourceMapConsumer.sourceContentFor(sourceFile);
+ if (content != null) {
+ generator.setSourceContent(sourceFile, content);
+ }
+ });
+ return generator;
+ };
+
+ /**
+ * Add a single mapping from original source line and column to the generated
+ * source's line and column for this source map being created. The mapping
+ * object should have the following properties:
+ *
+ * - generated: An object with the generated line and column positions.
+ * - original: An object with the original line and column positions.
+ * - source: The original source file (relative to the sourceRoot).
+ * - name: An optional original token name for this mapping.
+ */
+ SourceMapGenerator.prototype.addMapping =
+ function SourceMapGenerator_addMapping(aArgs) {
+ var generated = util.getArg(aArgs, 'generated');
+ var original = util.getArg(aArgs, 'original', null);
+ var source = util.getArg(aArgs, 'source', null);
+ var name = util.getArg(aArgs, 'name', null);
+
+ if (!this._skipValidation) {
+ this._validateMapping(generated, original, source, name);
+ }
+
+ if (source != null && !this._sources.has(source)) {
+ this._sources.add(source);
+ }
+
+ if (name != null && !this._names.has(name)) {
+ this._names.add(name);
+ }
+
+ this._mappings.add({
+ generatedLine: generated.line,
+ generatedColumn: generated.column,
+ originalLine: original != null && original.line,
+ originalColumn: original != null && original.column,
+ source: source,
+ name: name
+ });
+ };
+
+ /**
+ * Set the source content for a source file.
+ */
+ SourceMapGenerator.prototype.setSourceContent =
+ function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {
+ var source = aSourceFile;
+ if (this._sourceRoot != null) {
+ source = util.relative(this._sourceRoot, source);
+ }
+
+ if (aSourceContent != null) {
+ // Add the source content to the _sourcesContents map.
+ // Create a new _sourcesContents map if the property is null.
+ if (!this._sourcesContents) {
+ this._sourcesContents = {};
+ }
+ this._sourcesContents[util.toSetString(source)] = aSourceContent;
+ } else if (this._sourcesContents) {
+ // Remove the source file from the _sourcesContents map.
+ // If the _sourcesContents map is empty, set the property to null.
+ delete this._sourcesContents[util.toSetString(source)];
+ if (Object.keys(this._sourcesContents).length === 0) {
+ this._sourcesContents = null;
+ }
+ }
+ };
+
+ /**
+ * Applies the mappings of a sub-source-map for a specific source file to the
+ * source map being generated. Each mapping to the supplied source file is
+ * rewritten using the supplied source map. Note: The resolution for the
+ * resulting mappings is the minimium of this map and the supplied map.
+ *
+ * @param aSourceMapConsumer The source map to be applied.
+ * @param aSourceFile Optional. The filename of the source file.
+ * If omitted, SourceMapConsumer's file property will be used.
+ * @param aSourceMapPath Optional. The dirname of the path to the source map
+ * to be applied. If relative, it is relative to the SourceMapConsumer.
+ * This parameter is needed when the two source maps aren't in the same
+ * directory, and the source map to be applied contains relative source
+ * paths. If so, those relative source paths need to be rewritten
+ * relative to the SourceMapGenerator.
+ */
+ SourceMapGenerator.prototype.applySourceMap =
+ function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) {
+ var sourceFile = aSourceFile;
+ // If aSourceFile is omitted, we will use the file property of the SourceMap
+ if (aSourceFile == null) {
+ if (aSourceMapConsumer.file == null) {
+ throw new Error(
+ 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' +
+ 'or the source map\'s "file" property. Both were omitted.'
+ );
+ }
+ sourceFile = aSourceMapConsumer.file;
+ }
+ var sourceRoot = this._sourceRoot;
+ // Make "sourceFile" relative if an absolute Url is passed.
+ if (sourceRoot != null) {
+ sourceFile = util.relative(sourceRoot, sourceFile);
+ }
+ // Applying the SourceMap can add and remove items from the sources and
+ // the names array.
+ var newSources = new ArraySet();
+ var newNames = new ArraySet();
+
+ // Find mappings for the "sourceFile"
+ this._mappings.unsortedForEach(function (mapping) {
+ if (mapping.source === sourceFile && mapping.originalLine != null) {
+ // Check if it can be mapped by the source map, then update the mapping.
+ var original = aSourceMapConsumer.originalPositionFor({
+ line: mapping.originalLine,
+ column: mapping.originalColumn
+ });
+ if (original.source != null) {
+ // Copy mapping
+ mapping.source = original.source;
+ if (aSourceMapPath != null) {
+ mapping.source = util.join(aSourceMapPath, mapping.source)
+ }
+ if (sourceRoot != null) {
+ mapping.source = util.relative(sourceRoot, mapping.source);
+ }
+ mapping.originalLine = original.line;
+ mapping.originalColumn = original.column;
+ if (original.name != null) {
+ mapping.name = original.name;
+ }
+ }
+ }
+
+ var source = mapping.source;
+ if (source != null && !newSources.has(source)) {
+ newSources.add(source);
+ }
+
+ var name = mapping.name;
+ if (name != null && !newNames.has(name)) {
+ newNames.add(name);
+ }
+
+ }, this);
+ this._sources = newSources;
+ this._names = newNames;
+
+ // Copy sourcesContents of applied map.
+ aSourceMapConsumer.sources.forEach(function (sourceFile) {
+ var content = aSourceMapConsumer.sourceContentFor(sourceFile);
+ if (content != null) {
+ if (aSourceMapPath != null) {
+ sourceFile = util.join(aSourceMapPath, sourceFile);
+ }
+ if (sourceRoot != null) {
+ sourceFile = util.relative(sourceRoot, sourceFile);
+ }
+ this.setSourceContent(sourceFile, content);
+ }
+ }, this);
+ };
+
+ /**
+ * A mapping can have one of the three levels of data:
+ *
+ * 1. Just the generated position.
+ * 2. The Generated position, original position, and original source.
+ * 3. Generated and original position, original source, as well as a name
+ * token.
+ *
+ * To maintain consistency, we validate that any new mapping being added falls
+ * in to one of these categories.
+ */
+ SourceMapGenerator.prototype._validateMapping =
+ function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource,
+ aName) {
+ if (aGenerated && 'line' in aGenerated && 'column' in aGenerated
+ && aGenerated.line > 0 && aGenerated.column >= 0
+ && !aOriginal && !aSource && !aName) {
+ // Case 1.
+ return;
+ }
+ else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated
+ && aOriginal && 'line' in aOriginal && 'column' in aOriginal
+ && aGenerated.line > 0 && aGenerated.column >= 0
+ && aOriginal.line > 0 && aOriginal.column >= 0
+ && aSource) {
+ // Cases 2 and 3.
+ return;
+ }
+ else {
+ throw new Error('Invalid mapping: ' + JSON.stringify({
+ generated: aGenerated,
+ source: aSource,
+ original: aOriginal,
+ name: aName
+ }));
+ }
+ };
+
+ /**
+ * Serialize the accumulated mappings in to the stream of base 64 VLQs
+ * specified by the source map format.
+ */
+ SourceMapGenerator.prototype._serializeMappings =
+ function SourceMapGenerator_serializeMappings() {
+ var previousGeneratedColumn = 0;
+ var previousGeneratedLine = 1;
+ var previousOriginalColumn = 0;
+ var previousOriginalLine = 0;
+ var previousName = 0;
+ var previousSource = 0;
+ var result = '';
+ var mapping;
+ var nameIdx;
+ var sourceIdx;
+
+ var mappings = this._mappings.toArray();
+ for (var i = 0, len = mappings.length; i < len; i++) {
+ mapping = mappings[i];
+
+ if (mapping.generatedLine !== previousGeneratedLine) {
+ previousGeneratedColumn = 0;
+ while (mapping.generatedLine !== previousGeneratedLine) {
+ result += ';';
+ previousGeneratedLine++;
+ }
+ }
+ else {
+ if (i > 0) {
+ if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {
+ continue;
+ }
+ result += ',';
+ }
+ }
+
+ result += base64VLQ.encode(mapping.generatedColumn
+ - previousGeneratedColumn);
+ previousGeneratedColumn = mapping.generatedColumn;
+
+ if (mapping.source != null) {
+ sourceIdx = this._sources.indexOf(mapping.source);
+ result += base64VLQ.encode(sourceIdx - previousSource);
+ previousSource = sourceIdx;
+
+ // lines are stored 0-based in SourceMap spec version 3
+ result += base64VLQ.encode(mapping.originalLine - 1
+ - previousOriginalLine);
+ previousOriginalLine = mapping.originalLine - 1;
+
+ result += base64VLQ.encode(mapping.originalColumn
+ - previousOriginalColumn);
+ previousOriginalColumn = mapping.originalColumn;
+
+ if (mapping.name != null) {
+ nameIdx = this._names.indexOf(mapping.name);
+ result += base64VLQ.encode(nameIdx - previousName);
+ previousName = nameIdx;
+ }
+ }
+ }
+
+ return result;
+ };
+
+ SourceMapGenerator.prototype._generateSourcesContent =
+ function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {
+ return aSources.map(function (source) {
+ if (!this._sourcesContents) {
+ return null;
+ }
+ if (aSourceRoot != null) {
+ source = util.relative(aSourceRoot, source);
+ }
+ var key = util.toSetString(source);
+ return Object.prototype.hasOwnProperty.call(this._sourcesContents,
+ key)
+ ? this._sourcesContents[key]
+ : null;
+ }, this);
+ };
+
+ /**
+ * Externalize the source map.
+ */
+ SourceMapGenerator.prototype.toJSON =
+ function SourceMapGenerator_toJSON() {
+ var map = {
+ version: this._version,
+ sources: this._sources.toArray(),
+ names: this._names.toArray(),
+ mappings: this._serializeMappings()
+ };
+ if (this._file != null) {
+ map.file = this._file;
+ }
+ if (this._sourceRoot != null) {
+ map.sourceRoot = this._sourceRoot;
+ }
+ if (this._sourcesContents) {
+ map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);
+ }
+
+ return map;
+ };
+
+ /**
+ * Render the source map being generated to a string.
+ */
+ SourceMapGenerator.prototype.toString =
+ function SourceMapGenerator_toString() {
+ return JSON.stringify(this.toJSON());
+ };
+
+ exports.SourceMapGenerator = SourceMapGenerator;
+ }
+
+
+/***/ },
+/* 2 */
+/***/ function(module, exports, __webpack_require__) {
+
+ /* -*- Mode: js; js-indent-level: 2; -*- */
+ /*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ *
+ * Based on the Base 64 VLQ implementation in Closure Compiler:
+ * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java
+ *
+ * Copyright 2011 The Closure Compiler Authors. All rights reserved.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided
+ * with the distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER 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.
+ */
+ {
+ var base64 = __webpack_require__(3);
+
+ // A single base 64 digit can contain 6 bits of data. For the base 64 variable
+ // length quantities we use in the source map spec, the first bit is the sign,
+ // the next four bits are the actual value, and the 6th bit is the
+ // continuation bit. The continuation bit tells us whether there are more
+ // digits in this value following this digit.
+ //
+ // Continuation
+ // | Sign
+ // | |
+ // V V
+ // 101011
+
+ var VLQ_BASE_SHIFT = 5;
+
+ // binary: 100000
+ var VLQ_BASE = 1 << VLQ_BASE_SHIFT;
+
+ // binary: 011111
+ var VLQ_BASE_MASK = VLQ_BASE - 1;
+
+ // binary: 100000
+ var VLQ_CONTINUATION_BIT = VLQ_BASE;
+
+ /**
+ * Converts from a two-complement value to a value where the sign bit is
+ * placed in the least significant bit. For example, as decimals:
+ * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary)
+ * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary)
+ */
+ function toVLQSigned(aValue) {
+ return aValue < 0
+ ? ((-aValue) << 1) + 1
+ : (aValue << 1) + 0;
+ }
+
+ /**
+ * Converts to a two-complement value from a value where the sign bit is
+ * placed in the least significant bit. For example, as decimals:
+ * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1
+ * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2
+ */
+ function fromVLQSigned(aValue) {
+ var isNegative = (aValue & 1) === 1;
+ var shifted = aValue >> 1;
+ return isNegative
+ ? -shifted
+ : shifted;
+ }
+
+ /**
+ * Returns the base 64 VLQ encoded value.
+ */
+ exports.encode = function base64VLQ_encode(aValue) {
+ var encoded = "";
+ var digit;
+
+ var vlq = toVLQSigned(aValue);
+
+ do {
+ digit = vlq & VLQ_BASE_MASK;
+ vlq >>>= VLQ_BASE_SHIFT;
+ if (vlq > 0) {
+ // There are still more digits in this value, so we must make sure the
+ // continuation bit is marked.
+ digit |= VLQ_CONTINUATION_BIT;
+ }
+ encoded += base64.encode(digit);
+ } while (vlq > 0);
+
+ return encoded;
+ };
+
+ /**
+ * Decodes the next base 64 VLQ value from the given string and returns the
+ * value and the rest of the string via the out parameter.
+ */
+ exports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {
+ var strLen = aStr.length;
+ var result = 0;
+ var shift = 0;
+ var continuation, digit;
+
+ do {
+ if (aIndex >= strLen) {
+ throw new Error("Expected more digits in base 64 VLQ value.");
+ }
+
+ digit = base64.decode(aStr.charCodeAt(aIndex++));
+ if (digit === -1) {
+ throw new Error("Invalid base64 digit: " + aStr.charAt(aIndex - 1));
+ }
+
+ continuation = !!(digit & VLQ_CONTINUATION_BIT);
+ digit &= VLQ_BASE_MASK;
+ result = result + (digit << shift);
+ shift += VLQ_BASE_SHIFT;
+ } while (continuation);
+
+ aOutParam.value = fromVLQSigned(result);
+ aOutParam.rest = aIndex;
+ };
+ }
+
+
+/***/ },
+/* 3 */
+/***/ function(module, exports) {
+
+ /* -*- Mode: js; js-indent-level: 2; -*- */
+ /*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+ {
+ var intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');
+
+ /**
+ * Encode an integer in the range of 0 to 63 to a single base 64 digit.
+ */
+ exports.encode = function (number) {
+ if (0 <= number && number < intToCharMap.length) {
+ return intToCharMap[number];
+ }
+ throw new TypeError("Must be between 0 and 63: " + number);
+ };
+
+ /**
+ * Decode a single base 64 character code digit to an integer. Returns -1 on
+ * failure.
+ */
+ exports.decode = function (charCode) {
+ var bigA = 65; // 'A'
+ var bigZ = 90; // 'Z'
+
+ var littleA = 97; // 'a'
+ var littleZ = 122; // 'z'
+
+ var zero = 48; // '0'
+ var nine = 57; // '9'
+
+ var plus = 43; // '+'
+ var slash = 47; // '/'
+
+ var littleOffset = 26;
+ var numberOffset = 52;
+
+ // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ
+ if (bigA <= charCode && charCode <= bigZ) {
+ return (charCode - bigA);
+ }
+
+ // 26 - 51: abcdefghijklmnopqrstuvwxyz
+ if (littleA <= charCode && charCode <= littleZ) {
+ return (charCode - littleA + littleOffset);
+ }
+
+ // 52 - 61: 0123456789
+ if (zero <= charCode && charCode <= nine) {
+ return (charCode - zero + numberOffset);
+ }
+
+ // 62: +
+ if (charCode == plus) {
+ return 62;
+ }
+
+ // 63: /
+ if (charCode == slash) {
+ return 63;
+ }
+
+ // Invalid base64 digit.
+ return -1;
+ };
+ }
+
+
+/***/ },
+/* 4 */
+/***/ function(module, exports) {
+
+ /* -*- Mode: js; js-indent-level: 2; -*- */
+ /*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+ {
+ /**
+ * This is a helper function for getting values from parameter/options
+ * objects.
+ *
+ * @param args The object we are extracting values from
+ * @param name The name of the property we are getting.
+ * @param defaultValue An optional value to return if the property is missing
+ * from the object. If this is not specified and the property is missing, an
+ * error will be thrown.
+ */
+ function getArg(aArgs, aName, aDefaultValue) {
+ if (aName in aArgs) {
+ return aArgs[aName];
+ } else if (arguments.length === 3) {
+ return aDefaultValue;
+ } else {
+ throw new Error('"' + aName + '" is a required argument.');
+ }
+ }
+ exports.getArg = getArg;
+
+ var urlRegexp = /^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.]*)(?::(\d+))?(\S*)$/;
+ var dataUrlRegexp = /^data:.+\,.+$/;
+
+ function urlParse(aUrl) {
+ var match = aUrl.match(urlRegexp);
+ if (!match) {
+ return null;
+ }
+ return {
+ scheme: match[1],
+ auth: match[2],
+ host: match[3],
+ port: match[4],
+ path: match[5]
+ };
+ }
+ exports.urlParse = urlParse;
+
+ function urlGenerate(aParsedUrl) {
+ var url = '';
+ if (aParsedUrl.scheme) {
+ url += aParsedUrl.scheme + ':';
+ }
+ url += '//';
+ if (aParsedUrl.auth) {
+ url += aParsedUrl.auth + '@';
+ }
+ if (aParsedUrl.host) {
+ url += aParsedUrl.host;
+ }
+ if (aParsedUrl.port) {
+ url += ":" + aParsedUrl.port
+ }
+ if (aParsedUrl.path) {
+ url += aParsedUrl.path;
+ }
+ return url;
+ }
+ exports.urlGenerate = urlGenerate;
+
+ /**
+ * Normalizes a path, or the path portion of a URL:
+ *
+ * - Replaces consequtive slashes with one slash.
+ * - Removes unnecessary '.' parts.
+ * - Removes unnecessary '/..' parts.
+ *
+ * Based on code in the Node.js 'path' core module.
+ *
+ * @param aPath The path or url to normalize.
+ */
+ function normalize(aPath) {
+ var path = aPath;
+ var url = urlParse(aPath);
+ if (url) {
+ if (!url.path) {
+ return aPath;
+ }
+ path = url.path;
+ }
+ var isAbsolute = exports.isAbsolute(path);
+
+ var parts = path.split(/\/+/);
+ for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {
+ part = parts[i];
+ if (part === '.') {
+ parts.splice(i, 1);
+ } else if (part === '..') {
+ up++;
+ } else if (up > 0) {
+ if (part === '') {
+ // The first part is blank if the path is absolute. Trying to go
+ // above the root is a no-op. Therefore we can remove all '..' parts
+ // directly after the root.
+ parts.splice(i + 1, up);
+ up = 0;
+ } else {
+ parts.splice(i, 2);
+ up--;
+ }
+ }
+ }
+ path = parts.join('/');
+
+ if (path === '') {
+ path = isAbsolute ? '/' : '.';
+ }
+
+ if (url) {
+ url.path = path;
+ return urlGenerate(url);
+ }
+ return path;
+ }
+ exports.normalize = normalize;
+
+ /**
+ * Joins two paths/URLs.
+ *
+ * @param aRoot The root path or URL.
+ * @param aPath The path or URL to be joined with the root.
+ *
+ * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a
+ * scheme-relative URL: Then the scheme of aRoot, if any, is prepended
+ * first.
+ * - Otherwise aPath is a path. If aRoot is a URL, then its path portion
+ * is updated with the result and aRoot is returned. Otherwise the result
+ * is returned.
+ * - If aPath is absolute, the result is aPath.
+ * - Otherwise the two paths are joined with a slash.
+ * - Joining for example 'http://' and 'www.example.com' is also supported.
+ */
+ function join(aRoot, aPath) {
+ if (aRoot === "") {
+ aRoot = ".";
+ }
+ if (aPath === "") {
+ aPath = ".";
+ }
+ var aPathUrl = urlParse(aPath);
+ var aRootUrl = urlParse(aRoot);
+ if (aRootUrl) {
+ aRoot = aRootUrl.path || '/';
+ }
+
+ // `join(foo, '//www.example.org')`
+ if (aPathUrl && !aPathUrl.scheme) {
+ if (aRootUrl) {
+ aPathUrl.scheme = aRootUrl.scheme;
+ }
+ return urlGenerate(aPathUrl);
+ }
+
+ if (aPathUrl || aPath.match(dataUrlRegexp)) {
+ return aPath;
+ }
+
+ // `join('http://', 'www.example.com')`
+ if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {
+ aRootUrl.host = aPath;
+ return urlGenerate(aRootUrl);
+ }
+
+ var joined = aPath.charAt(0) === '/'
+ ? aPath
+ : normalize(aRoot.replace(/\/+$/, '') + '/' + aPath);
+
+ if (aRootUrl) {
+ aRootUrl.path = joined;
+ return urlGenerate(aRootUrl);
+ }
+ return joined;
+ }
+ exports.join = join;
+
+ exports.isAbsolute = function (aPath) {
+ return aPath.charAt(0) === '/' || !!aPath.match(urlRegexp);
+ };
+
+ /**
+ * Make a path relative to a URL or another path.
+ *
+ * @param aRoot The root path or URL.
+ * @param aPath The path or URL to be made relative to aRoot.
+ */
+ function relative(aRoot, aPath) {
+ if (aRoot === "") {
+ aRoot = ".";
+ }
+
+ aRoot = aRoot.replace(/\/$/, '');
+
+ // It is possible for the path to be above the root. In this case, simply
+ // checking whether the root is a prefix of the path won't work. Instead, we
+ // need to remove components from the root one by one, until either we find
+ // a prefix that fits, or we run out of components to remove.
+ var level = 0;
+ while (aPath.indexOf(aRoot + '/') !== 0) {
+ var index = aRoot.lastIndexOf("/");
+ if (index < 0) {
+ return aPath;
+ }
+
+ // If the only part of the root that is left is the scheme (i.e. http://,
+ // file:///, etc.), one or more slashes (/), or simply nothing at all, we
+ // have exhausted all components, so the path is not relative to the root.
+ aRoot = aRoot.slice(0, index);
+ if (aRoot.match(/^([^\/]+:\/)?\/*$/)) {
+ return aPath;
+ }
+
+ ++level;
+ }
+
+ // Make sure we add a "../" for each component we removed from the root.
+ return Array(level + 1).join("../") + aPath.substr(aRoot.length + 1);
+ }
+ exports.relative = relative;
+
+ /**
+ * Because behavior goes wacky when you set `__proto__` on objects, we
+ * have to prefix all the strings in our set with an arbitrary character.
+ *
+ * See https://github.com/mozilla/source-map/pull/31 and
+ * https://github.com/mozilla/source-map/issues/30
+ *
+ * @param String aStr
+ */
+ function toSetString(aStr) {
+ return '$' + aStr;
+ }
+ exports.toSetString = toSetString;
+
+ function fromSetString(aStr) {
+ return aStr.substr(1);
+ }
+ exports.fromSetString = fromSetString;
+
+ /**
+ * Comparator between two mappings where the original positions are compared.
+ *
+ * Optionally pass in `true` as `onlyCompareGenerated` to consider two
+ * mappings with the same original source/line/column, but different generated
+ * line and column the same. Useful when searching for a mapping with a
+ * stubbed out mapping.
+ */
+ function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {
+ var cmp = mappingA.source - mappingB.source;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.originalLine - mappingB.originalLine;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.originalColumn - mappingB.originalColumn;
+ if (cmp !== 0 || onlyCompareOriginal) {
+ return cmp;
+ }
+
+ cmp = mappingA.generatedColumn - mappingB.generatedColumn;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.generatedLine - mappingB.generatedLine;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ return mappingA.name - mappingB.name;
+ }
+ exports.compareByOriginalPositions = compareByOriginalPositions;
+
+ /**
+ * Comparator between two mappings with deflated source and name indices where
+ * the generated positions are compared.
+ *
+ * Optionally pass in `true` as `onlyCompareGenerated` to consider two
+ * mappings with the same generated line and column, but different
+ * source/name/original line and column the same. Useful when searching for a
+ * mapping with a stubbed out mapping.
+ */
+ function compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {
+ var cmp = mappingA.generatedLine - mappingB.generatedLine;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.generatedColumn - mappingB.generatedColumn;
+ if (cmp !== 0 || onlyCompareGenerated) {
+ return cmp;
+ }
+
+ cmp = mappingA.source - mappingB.source;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.originalLine - mappingB.originalLine;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.originalColumn - mappingB.originalColumn;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ return mappingA.name - mappingB.name;
+ }
+ exports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;
+
+ function strcmp(aStr1, aStr2) {
+ if (aStr1 === aStr2) {
+ return 0;
+ }
+
+ if (aStr1 > aStr2) {
+ return 1;
+ }
+
+ return -1;
+ }
+
+ /**
+ * Comparator between two mappings with inflated source and name strings where
+ * the generated positions are compared.
+ */
+ function compareByGeneratedPositionsInflated(mappingA, mappingB) {
+ var cmp = mappingA.generatedLine - mappingB.generatedLine;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.generatedColumn - mappingB.generatedColumn;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = strcmp(mappingA.source, mappingB.source);
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.originalLine - mappingB.originalLine;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.originalColumn - mappingB.originalColumn;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ return strcmp(mappingA.name, mappingB.name);
+ }
+ exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;
+ }
+
+
+/***/ },
+/* 5 */
+/***/ function(module, exports, __webpack_require__) {
+
+ /* -*- Mode: js; js-indent-level: 2; -*- */
+ /*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+ {
+ var util = __webpack_require__(4);
+
+ /**
+ * A data structure which is a combination of an array and a set. Adding a new
+ * member is O(1), testing for membership is O(1), and finding the index of an
+ * element is O(1). Removing elements from the set is not supported. Only
+ * strings are supported for membership.
+ */
+ function ArraySet() {
+ this._array = [];
+ this._set = {};
+ }
+
+ /**
+ * Static method for creating ArraySet instances from an existing array.
+ */
+ ArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {
+ var set = new ArraySet();
+ for (var i = 0, len = aArray.length; i < len; i++) {
+ set.add(aArray[i], aAllowDuplicates);
+ }
+ return set;
+ };
+
+ /**
+ * Return how many unique items are in this ArraySet. If duplicates have been
+ * added, than those do not count towards the size.
+ *
+ * @returns Number
+ */
+ ArraySet.prototype.size = function ArraySet_size() {
+ return Object.getOwnPropertyNames(this._set).length;
+ };
+
+ /**
+ * Add the given string to this set.
+ *
+ * @param String aStr
+ */
+ ArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {
+ var sStr = util.toSetString(aStr);
+ var isDuplicate = this._set.hasOwnProperty(sStr);
+ var idx = this._array.length;
+ if (!isDuplicate || aAllowDuplicates) {
+ this._array.push(aStr);
+ }
+ if (!isDuplicate) {
+ this._set[sStr] = idx;
+ }
+ };
+
+ /**
+ * Is the given string a member of this set?
+ *
+ * @param String aStr
+ */
+ ArraySet.prototype.has = function ArraySet_has(aStr) {
+ var sStr = util.toSetString(aStr);
+ return this._set.hasOwnProperty(sStr);
+ };
+
+ /**
+ * What is the index of the given string in the array?
+ *
+ * @param String aStr
+ */
+ ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {
+ var sStr = util.toSetString(aStr);
+ if (this._set.hasOwnProperty(sStr)) {
+ return this._set[sStr];
+ }
+ throw new Error('"' + aStr + '" is not in the set.');
+ };
+
+ /**
+ * What is the element at the given index?
+ *
+ * @param Number aIdx
+ */
+ ArraySet.prototype.at = function ArraySet_at(aIdx) {
+ if (aIdx >= 0 && aIdx < this._array.length) {
+ return this._array[aIdx];
+ }
+ throw new Error('No element indexed by ' + aIdx);
+ };
+
+ /**
+ * Returns the array representation of this set (which has the proper indices
+ * indicated by indexOf). Note that this is a copy of the internal array used
+ * for storing the members so that no one can mess with internal state.
+ */
+ ArraySet.prototype.toArray = function ArraySet_toArray() {
+ return this._array.slice();
+ };
+
+ exports.ArraySet = ArraySet;
+ }
+
+
+/***/ },
+/* 6 */
+/***/ function(module, exports, __webpack_require__) {
+
+ /* -*- Mode: js; js-indent-level: 2; -*- */
+ /*
+ * Copyright 2014 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+ {
+ var util = __webpack_require__(4);
+
+ /**
+ * Determine whether mappingB is after mappingA with respect to generated
+ * position.
+ */
+ function generatedPositionAfter(mappingA, mappingB) {
+ // Optimized for most common case
+ var lineA = mappingA.generatedLine;
+ var lineB = mappingB.generatedLine;
+ var columnA = mappingA.generatedColumn;
+ var columnB = mappingB.generatedColumn;
+ return lineB > lineA || lineB == lineA && columnB >= columnA ||
+ util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0;
+ }
+
+ /**
+ * A data structure to provide a sorted view of accumulated mappings in a
+ * performance conscious manner. It trades a neglibable overhead in general
+ * case for a large speedup in case of mappings being added in order.
+ */
+ function MappingList() {
+ this._array = [];
+ this._sorted = true;
+ // Serves as infimum
+ this._last = {generatedLine: -1, generatedColumn: 0};
+ }
+
+ /**
+ * Iterate through internal items. This method takes the same arguments that
+ * `Array.prototype.forEach` takes.
+ *
+ * NOTE: The order of the mappings is NOT guaranteed.
+ */
+ MappingList.prototype.unsortedForEach =
+ function MappingList_forEach(aCallback, aThisArg) {
+ this._array.forEach(aCallback, aThisArg);
+ };
+
+ /**
+ * Add the given source mapping.
+ *
+ * @param Object aMapping
+ */
+ MappingList.prototype.add = function MappingList_add(aMapping) {
+ if (generatedPositionAfter(this._last, aMapping)) {
+ this._last = aMapping;
+ this._array.push(aMapping);
+ } else {
+ this._sorted = false;
+ this._array.push(aMapping);
+ }
+ };
+
+ /**
+ * Returns the flat, sorted array of mappings. The mappings are sorted by
+ * generated position.
+ *
+ * WARNING: This method returns internal data without copying, for
+ * performance. The return value must NOT be mutated, and should be treated as
+ * an immutable borrow. If you want to take ownership, you must make your own
+ * copy.
+ */
+ MappingList.prototype.toArray = function MappingList_toArray() {
+ if (!this._sorted) {
+ this._array.sort(util.compareByGeneratedPositionsInflated);
+ this._sorted = true;
+ }
+ return this._array;
+ };
+
+ exports.MappingList = MappingList;
+ }
+
+
+/***/ },
+/* 7 */
+/***/ function(module, exports, __webpack_require__) {
+
+ /* -*- Mode: js; js-indent-level: 2; -*- */
+ /*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+ {
+ var util = __webpack_require__(4);
+ var binarySearch = __webpack_require__(8);
+ var ArraySet = __webpack_require__(5).ArraySet;
+ var base64VLQ = __webpack_require__(2);
+ var quickSort = __webpack_require__(9).quickSort;
+
+ function SourceMapConsumer(aSourceMap) {
+ var sourceMap = aSourceMap;
+ if (typeof aSourceMap === 'string') {
+ sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, ''));
+ }
+
+ return sourceMap.sections != null
+ ? new IndexedSourceMapConsumer(sourceMap)
+ : new BasicSourceMapConsumer(sourceMap);
+ }
+
+ SourceMapConsumer.fromSourceMap = function(aSourceMap) {
+ return BasicSourceMapConsumer.fromSourceMap(aSourceMap);
+ }
+
+ /**
+ * The version of the source mapping spec that we are consuming.
+ */
+ SourceMapConsumer.prototype._version = 3;
+
+ // `__generatedMappings` and `__originalMappings` are arrays that hold the
+ // parsed mapping coordinates from the source map's "mappings" attribute. They
+ // are lazily instantiated, accessed via the `_generatedMappings` and
+ // `_originalMappings` getters respectively, and we only parse the mappings
+ // and create these arrays once queried for a source location. We jump through
+ // these hoops because there can be many thousands of mappings, and parsing
+ // them is expensive, so we only want to do it if we must.
+ //
+ // Each object in the arrays is of the form:
+ //
+ // {
+ // generatedLine: The line number in the generated code,
+ // generatedColumn: The column number in the generated code,
+ // source: The path to the original source file that generated this
+ // chunk of code,
+ // originalLine: The line number in the original source that
+ // corresponds to this chunk of generated code,
+ // originalColumn: The column number in the original source that
+ // corresponds to this chunk of generated code,
+ // name: The name of the original symbol which generated this chunk of
+ // code.
+ // }
+ //
+ // All properties except for `generatedLine` and `generatedColumn` can be
+ // `null`.
+ //
+ // `_generatedMappings` is ordered by the generated positions.
+ //
+ // `_originalMappings` is ordered by the original positions.
+
+ SourceMapConsumer.prototype.__generatedMappings = null;
+ Object.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {
+ get: function () {
+ if (!this.__generatedMappings) {
+ this._parseMappings(this._mappings, this.sourceRoot);
+ }
+
+ return this.__generatedMappings;
+ }
+ });
+
+ SourceMapConsumer.prototype.__originalMappings = null;
+ Object.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {
+ get: function () {
+ if (!this.__originalMappings) {
+ this._parseMappings(this._mappings, this.sourceRoot);
+ }
+
+ return this.__originalMappings;
+ }
+ });
+
+ SourceMapConsumer.prototype._charIsMappingSeparator =
+ function SourceMapConsumer_charIsMappingSeparator(aStr, index) {
+ var c = aStr.charAt(index);
+ return c === ";" || c === ",";
+ };
+
+ /**
+ * Parse the mappings in a string in to a data structure which we can easily
+ * query (the ordered arrays in the `this.__generatedMappings` and
+ * `this.__originalMappings` properties).
+ */
+ SourceMapConsumer.prototype._parseMappings =
+ function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {
+ throw new Error("Subclasses must implement _parseMappings");
+ };
+
+ SourceMapConsumer.GENERATED_ORDER = 1;
+ SourceMapConsumer.ORIGINAL_ORDER = 2;
+
+ SourceMapConsumer.GREATEST_LOWER_BOUND = 1;
+ SourceMapConsumer.LEAST_UPPER_BOUND = 2;
+
+ /**
+ * Iterate over each mapping between an original source/line/column and a
+ * generated line/column in this source map.
+ *
+ * @param Function aCallback
+ * The function that is called with each mapping.
+ * @param Object aContext
+ * Optional. If specified, this object will be the value of `this` every
+ * time that `aCallback` is called.
+ * @param aOrder
+ * Either `SourceMapConsumer.GENERATED_ORDER` or
+ * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to
+ * iterate over the mappings sorted by the generated file's line/column
+ * order or the original's source/line/column order, respectively. Defaults to
+ * `SourceMapConsumer.GENERATED_ORDER`.
+ */
+ SourceMapConsumer.prototype.eachMapping =
+ function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {
+ var context = aContext || null;
+ var order = aOrder || SourceMapConsumer.GENERATED_ORDER;
+
+ var mappings;
+ switch (order) {
+ case SourceMapConsumer.GENERATED_ORDER:
+ mappings = this._generatedMappings;
+ break;
+ case SourceMapConsumer.ORIGINAL_ORDER:
+ mappings = this._originalMappings;
+ break;
+ default:
+ throw new Error("Unknown order of iteration.");
+ }
+
+ var sourceRoot = this.sourceRoot;
+ mappings.map(function (mapping) {
+ var source = mapping.source === null ? null : this._sources.at(mapping.source);
+ if (source != null && sourceRoot != null) {
+ source = util.join(sourceRoot, source);
+ }
+ return {
+ source: source,
+ generatedLine: mapping.generatedLine,
+ generatedColumn: mapping.generatedColumn,
+ originalLine: mapping.originalLine,
+ originalColumn: mapping.originalColumn,
+ name: mapping.name === null ? null : this._names.at(mapping.name)
+ };
+ }, this).forEach(aCallback, context);
+ };
+
+ /**
+ * Returns all generated line and column information for the original source,
+ * line, and column provided. If no column is provided, returns all mappings
+ * corresponding to a either the line we are searching for or the next
+ * closest line that has any mappings. Otherwise, returns all mappings
+ * corresponding to the given line and either the column we are searching for
+ * or the next closest column that has any offsets.
+ *
+ * The only argument is an object with the following properties:
+ *
+ * - source: The filename of the original source.
+ * - line: The line number in the original source.
+ * - column: Optional. the column number in the original source.
+ *
+ * and an array of objects is returned, each with the following properties:
+ *
+ * - line: The line number in the generated source, or null.
+ * - column: The column number in the generated source, or null.
+ */
+ SourceMapConsumer.prototype.allGeneratedPositionsFor =
+ function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {
+ var line = util.getArg(aArgs, 'line');
+
+ // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping
+ // returns the index of the closest mapping less than the needle. By
+ // setting needle.originalColumn to 0, we thus find the last mapping for
+ // the given line, provided such a mapping exists.
+ var needle = {
+ source: util.getArg(aArgs, 'source'),
+ originalLine: line,
+ originalColumn: util.getArg(aArgs, 'column', 0)
+ };
+
+ if (this.sourceRoot != null) {
+ needle.source = util.relative(this.sourceRoot, needle.source);
+ }
+ if (!this._sources.has(needle.source)) {
+ return [];
+ }
+ needle.source = this._sources.indexOf(needle.source);
+
+ var mappings = [];
+
+ var index = this._findMapping(needle,
+ this._originalMappings,
+ "originalLine",
+ "originalColumn",
+ util.compareByOriginalPositions,
+ binarySearch.LEAST_UPPER_BOUND);
+ if (index >= 0) {
+ var mapping = this._originalMappings[index];
+
+ if (aArgs.column === undefined) {
+ var originalLine = mapping.originalLine;
+
+ // Iterate until either we run out of mappings, or we run into
+ // a mapping for a different line than the one we found. Since
+ // mappings are sorted, this is guaranteed to find all mappings for
+ // the line we found.
+ while (mapping && mapping.originalLine === originalLine) {
+ mappings.push({
+ line: util.getArg(mapping, 'generatedLine', null),
+ column: util.getArg(mapping, 'generatedColumn', null),
+ lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)
+ });
+
+ mapping = this._originalMappings[++index];
+ }
+ } else {
+ var originalColumn = mapping.originalColumn;
+
+ // Iterate until either we run out of mappings, or we run into
+ // a mapping for a different line than the one we were searching for.
+ // Since mappings are sorted, this is guaranteed to find all mappings for
+ // the line we are searching for.
+ while (mapping &&
+ mapping.originalLine === line &&
+ mapping.originalColumn == originalColumn) {
+ mappings.push({
+ line: util.getArg(mapping, 'generatedLine', null),
+ column: util.getArg(mapping, 'generatedColumn', null),
+ lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)
+ });
+
+ mapping = this._originalMappings[++index];
+ }
+ }
+ }
+
+ return mappings;
+ };
+
+ exports.SourceMapConsumer = SourceMapConsumer;
+
+ /**
+ * A BasicSourceMapConsumer instance represents a parsed source map which we can
+ * query for information about the original file positions by giving it a file
+ * position in the generated source.
+ *
+ * The only parameter is the raw source map (either as a JSON string, or
+ * already parsed to an object). According to the spec, source maps have the
+ * following attributes:
+ *
+ * - version: Which version of the source map spec this map is following.
+ * - sources: An array of URLs to the original source files.
+ * - names: An array of identifiers which can be referrenced by individual mappings.
+ * - sourceRoot: Optional. The URL root from which all sources are relative.
+ * - sourcesContent: Optional. An array of contents of the original source files.
+ * - mappings: A string of base64 VLQs which contain the actual mappings.
+ * - file: Optional. The generated file this source map is associated with.
+ *
+ * Here is an example source map, taken from the source map spec[0]:
+ *
+ * {
+ * version : 3,
+ * file: "out.js",
+ * sourceRoot : "",
+ * sources: ["foo.js", "bar.js"],
+ * names: ["src", "maps", "are", "fun"],
+ * mappings: "AA,AB;;ABCDE;"
+ * }
+ *
+ * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#
+ */
+ function BasicSourceMapConsumer(aSourceMap) {
+ var sourceMap = aSourceMap;
+ if (typeof aSourceMap === 'string') {
+ sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, ''));
+ }
+
+ var version = util.getArg(sourceMap, 'version');
+ var sources = util.getArg(sourceMap, 'sources');
+ // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which
+ // requires the array) to play nice here.
+ var names = util.getArg(sourceMap, 'names', []);
+ var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);
+ var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);
+ var mappings = util.getArg(sourceMap, 'mappings');
+ var file = util.getArg(sourceMap, 'file', null);
+
+ // Once again, Sass deviates from the spec and supplies the version as a
+ // string rather than a number, so we use loose equality checking here.
+ if (version != this._version) {
+ throw new Error('Unsupported version: ' + version);
+ }
+
+ sources = sources
+ // Some source maps produce relative source paths like "./foo.js" instead of
+ // "foo.js". Normalize these first so that future comparisons will succeed.
+ // See bugzil.la/1090768.
+ .map(util.normalize)
+ // Always ensure that absolute sources are internally stored relative to
+ // the source root, if the source root is absolute. Not doing this would
+ // be particularly problematic when the source root is a prefix of the
+ // source (valid, but why??). See github issue #199 and bugzil.la/1188982.
+ .map(function (source) {
+ return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source)
+ ? util.relative(sourceRoot, source)
+ : source;
+ });
+
+ // Pass `true` below to allow duplicate names and sources. While source maps
+ // are intended to be compressed and deduplicated, the TypeScript compiler
+ // sometimes generates source maps with duplicates in them. See Github issue
+ // #72 and bugzil.la/889492.
+ this._names = ArraySet.fromArray(names, true);
+ this._sources = ArraySet.fromArray(sources, true);
+
+ this.sourceRoot = sourceRoot;
+ this.sourcesContent = sourcesContent;
+ this._mappings = mappings;
+ this.file = file;
+ }
+
+ BasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);
+ BasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;
+
+ /**
+ * Create a BasicSourceMapConsumer from a SourceMapGenerator.
+ *
+ * @param SourceMapGenerator aSourceMap
+ * The source map that will be consumed.
+ * @returns BasicSourceMapConsumer
+ */
+ BasicSourceMapConsumer.fromSourceMap =
+ function SourceMapConsumer_fromSourceMap(aSourceMap) {
+ var smc = Object.create(BasicSourceMapConsumer.prototype);
+
+ var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);
+ var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);
+ smc.sourceRoot = aSourceMap._sourceRoot;
+ smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),
+ smc.sourceRoot);
+ smc.file = aSourceMap._file;
+
+ // Because we are modifying the entries (by converting string sources and
+ // names to indices into the sources and names ArraySets), we have to make
+ // a copy of the entry or else bad things happen. Shared mutable state
+ // strikes again! See github issue #191.
+
+ var generatedMappings = aSourceMap._mappings.toArray().slice();
+ var destGeneratedMappings = smc.__generatedMappings = [];
+ var destOriginalMappings = smc.__originalMappings = [];
+
+ for (var i = 0, length = generatedMappings.length; i < length; i++) {
+ var srcMapping = generatedMappings[i];
+ var destMapping = new Mapping;
+ destMapping.generatedLine = srcMapping.generatedLine;
+ destMapping.generatedColumn = srcMapping.generatedColumn;
+
+ if (srcMapping.source) {
+ destMapping.source = sources.indexOf(srcMapping.source);
+ destMapping.originalLine = srcMapping.originalLine;
+ destMapping.originalColumn = srcMapping.originalColumn;
+
+ if (srcMapping.name) {
+ destMapping.name = names.indexOf(srcMapping.name);
+ }
+
+ destOriginalMappings.push(destMapping);
+ }
+
+ destGeneratedMappings.push(destMapping);
+ }
+
+ quickSort(smc.__originalMappings, util.compareByOriginalPositions);
+
+ return smc;
+ };
+
+ /**
+ * The version of the source mapping spec that we are consuming.
+ */
+ BasicSourceMapConsumer.prototype._version = 3;
+
+ /**
+ * The list of original sources.
+ */
+ Object.defineProperty(BasicSourceMapConsumer.prototype, 'sources', {
+ get: function () {
+ return this._sources.toArray().map(function (s) {
+ return this.sourceRoot != null ? util.join(this.sourceRoot, s) : s;
+ }, this);
+ }
+ });
+
+ /**
+ * Provide the JIT with a nice shape / hidden class.
+ */
+ function Mapping() {
+ this.generatedLine = 0;
+ this.generatedColumn = 0;
+ this.source = null;
+ this.originalLine = null;
+ this.originalColumn = null;
+ this.name = null;
+ }
+
+ /**
+ * Parse the mappings in a string in to a data structure which we can easily
+ * query (the ordered arrays in the `this.__generatedMappings` and
+ * `this.__originalMappings` properties).
+ */
+ BasicSourceMapConsumer.prototype._parseMappings =
+ function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {
+ var generatedLine = 1;
+ var previousGeneratedColumn = 0;
+ var previousOriginalLine = 0;
+ var previousOriginalColumn = 0;
+ var previousSource = 0;
+ var previousName = 0;
+ var length = aStr.length;
+ var index = 0;
+ var cachedSegments = {};
+ var temp = {};
+ var originalMappings = [];
+ var generatedMappings = [];
+ var mapping, str, segment, end, value;
+
+ while (index < length) {
+ if (aStr.charAt(index) === ';') {
+ generatedLine++;
+ index++;
+ previousGeneratedColumn = 0;
+ }
+ else if (aStr.charAt(index) === ',') {
+ index++;
+ }
+ else {
+ mapping = new Mapping();
+ mapping.generatedLine = generatedLine;
+
+ // Because each offset is encoded relative to the previous one,
+ // many segments often have the same encoding. We can exploit this
+ // fact by caching the parsed variable length fields of each segment,
+ // allowing us to avoid a second parse if we encounter the same
+ // segment again.
+ for (end = index; end < length; end++) {
+ if (this._charIsMappingSeparator(aStr, end)) {
+ break;
+ }
+ }
+ str = aStr.slice(index, end);
+
+ segment = cachedSegments[str];
+ if (segment) {
+ index += str.length;
+ } else {
+ segment = [];
+ while (index < end) {
+ base64VLQ.decode(aStr, index, temp);
+ value = temp.value;
+ index = temp.rest;
+ segment.push(value);
+ }
+
+ if (segment.length === 2) {
+ throw new Error('Found a source, but no line and column');
+ }
+
+ if (segment.length === 3) {
+ throw new Error('Found a source and line, but no column');
+ }
+
+ cachedSegments[str] = segment;
+ }
+
+ // Generated column.
+ mapping.generatedColumn = previousGeneratedColumn + segment[0];
+ previousGeneratedColumn = mapping.generatedColumn;
+
+ if (segment.length > 1) {
+ // Original source.
+ mapping.source = previousSource + segment[1];
+ previousSource += segment[1];
+
+ // Original line.
+ mapping.originalLine = previousOriginalLine + segment[2];
+ previousOriginalLine = mapping.originalLine;
+ // Lines are stored 0-based
+ mapping.originalLine += 1;
+
+ // Original column.
+ mapping.originalColumn = previousOriginalColumn + segment[3];
+ previousOriginalColumn = mapping.originalColumn;
+
+ if (segment.length > 4) {
+ // Original name.
+ mapping.name = previousName + segment[4];
+ previousName += segment[4];
+ }
+ }
+
+ generatedMappings.push(mapping);
+ if (typeof mapping.originalLine === 'number') {
+ originalMappings.push(mapping);
+ }
+ }
+ }
+
+ quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated);
+ this.__generatedMappings = generatedMappings;
+
+ quickSort(originalMappings, util.compareByOriginalPositions);
+ this.__originalMappings = originalMappings;
+ };
+
+ /**
+ * Find the mapping that best matches the hypothetical "needle" mapping that
+ * we are searching for in the given "haystack" of mappings.
+ */
+ BasicSourceMapConsumer.prototype._findMapping =
+ function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,
+ aColumnName, aComparator, aBias) {
+ // To return the position we are searching for, we must first find the
+ // mapping for the given position and then return the opposite position it
+ // points to. Because the mappings are sorted, we can use binary search to
+ // find the best mapping.
+
+ if (aNeedle[aLineName] <= 0) {
+ throw new TypeError('Line must be greater than or equal to 1, got '
+ + aNeedle[aLineName]);
+ }
+ if (aNeedle[aColumnName] < 0) {
+ throw new TypeError('Column must be greater than or equal to 0, got '
+ + aNeedle[aColumnName]);
+ }
+
+ return binarySearch.search(aNeedle, aMappings, aComparator, aBias);
+ };
+
+ /**
+ * Compute the last column for each generated mapping. The last column is
+ * inclusive.
+ */
+ BasicSourceMapConsumer.prototype.computeColumnSpans =
+ function SourceMapConsumer_computeColumnSpans() {
+ for (var index = 0; index < this._generatedMappings.length; ++index) {
+ var mapping = this._generatedMappings[index];
+
+ // Mappings do not contain a field for the last generated columnt. We
+ // can come up with an optimistic estimate, however, by assuming that
+ // mappings are contiguous (i.e. given two consecutive mappings, the
+ // first mapping ends where the second one starts).
+ if (index + 1 < this._generatedMappings.length) {
+ var nextMapping = this._generatedMappings[index + 1];
+
+ if (mapping.generatedLine === nextMapping.generatedLine) {
+ mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;
+ continue;
+ }
+ }
+
+ // The last mapping for each line spans the entire line.
+ mapping.lastGeneratedColumn = Infinity;
+ }
+ };
+
+ /**
+ * Returns the original source, line, and column information for the generated
+ * source's line and column positions provided. The only argument is an object
+ * with the following properties:
+ *
+ * - line: The line number in the generated source.
+ * - column: The column number in the generated source.
+ * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or
+ * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the
+ * closest element that is smaller than or greater than the one we are
+ * searching for, respectively, if the exact element cannot be found.
+ * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.
+ *
+ * and an object is returned with the following properties:
+ *
+ * - source: The original source file, or null.
+ * - line: The line number in the original source, or null.
+ * - column: The column number in the original source, or null.
+ * - name: The original identifier, or null.
+ */
+ BasicSourceMapConsumer.prototype.originalPositionFor =
+ function SourceMapConsumer_originalPositionFor(aArgs) {
+ var needle = {
+ generatedLine: util.getArg(aArgs, 'line'),
+ generatedColumn: util.getArg(aArgs, 'column')
+ };
+
+ var index = this._findMapping(
+ needle,
+ this._generatedMappings,
+ "generatedLine",
+ "generatedColumn",
+ util.compareByGeneratedPositionsDeflated,
+ util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)
+ );
+
+ if (index >= 0) {
+ var mapping = this._generatedMappings[index];
+
+ if (mapping.generatedLine === needle.generatedLine) {
+ var source = util.getArg(mapping, 'source', null);
+ if (source !== null) {
+ source = this._sources.at(source);
+ if (this.sourceRoot != null) {
+ source = util.join(this.sourceRoot, source);
+ }
+ }
+ var name = util.getArg(mapping, 'name', null);
+ if (name !== null) {
+ name = this._names.at(name);
+ }
+ return {
+ source: source,
+ line: util.getArg(mapping, 'originalLine', null),
+ column: util.getArg(mapping, 'originalColumn', null),
+ name: name
+ };
+ }
+ }
+
+ return {
+ source: null,
+ line: null,
+ column: null,
+ name: null
+ };
+ };
+
+ /**
+ * Return true if we have the source content for every source in the source
+ * map, false otherwise.
+ */
+ BasicSourceMapConsumer.prototype.hasContentsOfAllSources =
+ function BasicSourceMapConsumer_hasContentsOfAllSources() {
+ if (!this.sourcesContent) {
+ return false;
+ }
+ return this.sourcesContent.length >= this._sources.size() &&
+ !this.sourcesContent.some(function (sc) { return sc == null; });
+ };
+
+ /**
+ * Returns the original source content. The only argument is the url of the
+ * original source file. Returns null if no original source content is
+ * available.
+ */
+ BasicSourceMapConsumer.prototype.sourceContentFor =
+ function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {
+ if (!this.sourcesContent) {
+ return null;
+ }
+
+ if (this.sourceRoot != null) {
+ aSource = util.relative(this.sourceRoot, aSource);
+ }
+
+ if (this._sources.has(aSource)) {
+ return this.sourcesContent[this._sources.indexOf(aSource)];
+ }
+
+ var url;
+ if (this.sourceRoot != null
+ && (url = util.urlParse(this.sourceRoot))) {
+ // XXX: file:// URIs and absolute paths lead to unexpected behavior for
+ // many users. We can help them out when they expect file:// URIs to
+ // behave like it would if they were running a local HTTP server. See
+ // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.
+ var fileUriAbsPath = aSource.replace(/^file:\/\//, "");
+ if (url.scheme == "file"
+ && this._sources.has(fileUriAbsPath)) {
+ return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]
+ }
+
+ if ((!url.path || url.path == "/")
+ && this._sources.has("/" + aSource)) {
+ return this.sourcesContent[this._sources.indexOf("/" + aSource)];
+ }
+ }
+
+ // This function is used recursively from
+ // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we
+ // don't want to throw if we can't find the source - we just want to
+ // return null, so we provide a flag to exit gracefully.
+ if (nullOnMissing) {
+ return null;
+ }
+ else {
+ throw new Error('"' + aSource + '" is not in the SourceMap.');
+ }
+ };
+
+ /**
+ * Returns the generated line and column information for the original source,
+ * line, and column positions provided. The only argument is an object with
+ * the following properties:
+ *
+ * - source: The filename of the original source.
+ * - line: The line number in the original source.
+ * - column: The column number in the original source.
+ * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or
+ * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the
+ * closest element that is smaller than or greater than the one we are
+ * searching for, respectively, if the exact element cannot be found.
+ * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.
+ *
+ * and an object is returned with the following properties:
+ *
+ * - line: The line number in the generated source, or null.
+ * - column: The column number in the generated source, or null.
+ */
+ BasicSourceMapConsumer.prototype.generatedPositionFor =
+ function SourceMapConsumer_generatedPositionFor(aArgs) {
+ var source = util.getArg(aArgs, 'source');
+ if (this.sourceRoot != null) {
+ source = util.relative(this.sourceRoot, source);
+ }
+ if (!this._sources.has(source)) {
+ return {
+ line: null,
+ column: null,
+ lastColumn: null
+ };
+ }
+ source = this._sources.indexOf(source);
+
+ var needle = {
+ source: source,
+ originalLine: util.getArg(aArgs, 'line'),
+ originalColumn: util.getArg(aArgs, 'column')
+ };
+
+ var index = this._findMapping(
+ needle,
+ this._originalMappings,
+ "originalLine",
+ "originalColumn",
+ util.compareByOriginalPositions,
+ util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)
+ );
+
+ if (index >= 0) {
+ var mapping = this._originalMappings[index];
+
+ if (mapping.source === needle.source) {
+ return {
+ line: util.getArg(mapping, 'generatedLine', null),
+ column: util.getArg(mapping, 'generatedColumn', null),
+ lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)
+ };
+ }
+ }
+
+ return {
+ line: null,
+ column: null,
+ lastColumn: null
+ };
+ };
+
+ exports.BasicSourceMapConsumer = BasicSourceMapConsumer;
+
+ /**
+ * An IndexedSourceMapConsumer instance represents a parsed source map which
+ * we can query for information. It differs from BasicSourceMapConsumer in
+ * that it takes "indexed" source maps (i.e. ones with a "sections" field) as
+ * input.
+ *
+ * The only parameter is a raw source map (either as a JSON string, or already
+ * parsed to an object). According to the spec for indexed source maps, they
+ * have the following attributes:
+ *
+ * - version: Which version of the source map spec this map is following.
+ * - file: Optional. The generated file this source map is associated with.
+ * - sections: A list of section definitions.
+ *
+ * Each value under the "sections" field has two fields:
+ * - offset: The offset into the original specified at which this section
+ * begins to apply, defined as an object with a "line" and "column"
+ * field.
+ * - map: A source map definition. This source map could also be indexed,
+ * but doesn't have to be.
+ *
+ * Instead of the "map" field, it's also possible to have a "url" field
+ * specifying a URL to retrieve a source map from, but that's currently
+ * unsupported.
+ *
+ * Here's an example source map, taken from the source map spec[0], but
+ * modified to omit a section which uses the "url" field.
+ *
+ * {
+ * version : 3,
+ * file: "app.js",
+ * sections: [{
+ * offset: {line:100, column:10},
+ * map: {
+ * version : 3,
+ * file: "section.js",
+ * sources: ["foo.js", "bar.js"],
+ * names: ["src", "maps", "are", "fun"],
+ * mappings: "AAAA,E;;ABCDE;"
+ * }
+ * }],
+ * }
+ *
+ * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt
+ */
+ function IndexedSourceMapConsumer(aSourceMap) {
+ var sourceMap = aSourceMap;
+ if (typeof aSourceMap === 'string') {
+ sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, ''));
+ }
+
+ var version = util.getArg(sourceMap, 'version');
+ var sections = util.getArg(sourceMap, 'sections');
+
+ if (version != this._version) {
+ throw new Error('Unsupported version: ' + version);
+ }
+
+ this._sources = new ArraySet();
+ this._names = new ArraySet();
+
+ var lastOffset = {
+ line: -1,
+ column: 0
+ };
+ this._sections = sections.map(function (s) {
+ if (s.url) {
+ // The url field will require support for asynchronicity.
+ // See https://github.com/mozilla/source-map/issues/16
+ throw new Error('Support for url field in sections not implemented.');
+ }
+ var offset = util.getArg(s, 'offset');
+ var offsetLine = util.getArg(offset, 'line');
+ var offsetColumn = util.getArg(offset, 'column');
+
+ if (offsetLine < lastOffset.line ||
+ (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) {
+ throw new Error('Section offsets must be ordered and non-overlapping.');
+ }
+ lastOffset = offset;
+
+ return {
+ generatedOffset: {
+ // The offset fields are 0-based, but we use 1-based indices when
+ // encoding/decoding from VLQ.
+ generatedLine: offsetLine + 1,
+ generatedColumn: offsetColumn + 1
+ },
+ consumer: new SourceMapConsumer(util.getArg(s, 'map'))
+ }
+ });
+ }
+
+ IndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);
+ IndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;
+
+ /**
+ * The version of the source mapping spec that we are consuming.
+ */
+ IndexedSourceMapConsumer.prototype._version = 3;
+
+ /**
+ * The list of original sources.
+ */
+ Object.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', {
+ get: function () {
+ var sources = [];
+ for (var i = 0; i < this._sections.length; i++) {
+ for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {
+ sources.push(this._sections[i].consumer.sources[j]);
+ }
+ }
+ return sources;
+ }
+ });
+
+ /**
+ * Returns the original source, line, and column information for the generated
+ * source's line and column positions provided. The only argument is an object
+ * with the following properties:
+ *
+ * - line: The line number in the generated source.
+ * - column: The column number in the generated source.
+ *
+ * and an object is returned with the following properties:
+ *
+ * - source: The original source file, or null.
+ * - line: The line number in the original source, or null.
+ * - column: The column number in the original source, or null.
+ * - name: The original identifier, or null.
+ */
+ IndexedSourceMapConsumer.prototype.originalPositionFor =
+ function IndexedSourceMapConsumer_originalPositionFor(aArgs) {
+ var needle = {
+ generatedLine: util.getArg(aArgs, 'line'),
+ generatedColumn: util.getArg(aArgs, 'column')
+ };
+
+ // Find the section containing the generated position we're trying to map
+ // to an original position.
+ var sectionIndex = binarySearch.search(needle, this._sections,
+ function(needle, section) {
+ var cmp = needle.generatedLine - section.generatedOffset.generatedLine;
+ if (cmp) {
+ return cmp;
+ }
+
+ return (needle.generatedColumn -
+ section.generatedOffset.generatedColumn);
+ });
+ var section = this._sections[sectionIndex];
+
+ if (!section) {
+ return {
+ source: null,
+ line: null,
+ column: null,
+ name: null
+ };
+ }
+
+ return section.consumer.originalPositionFor({
+ line: needle.generatedLine -
+ (section.generatedOffset.generatedLine - 1),
+ column: needle.generatedColumn -
+ (section.generatedOffset.generatedLine === needle.generatedLine
+ ? section.generatedOffset.generatedColumn - 1
+ : 0),
+ bias: aArgs.bias
+ });
+ };
+
+ /**
+ * Return true if we have the source content for every source in the source
+ * map, false otherwise.
+ */
+ IndexedSourceMapConsumer.prototype.hasContentsOfAllSources =
+ function IndexedSourceMapConsumer_hasContentsOfAllSources() {
+ return this._sections.every(function (s) {
+ return s.consumer.hasContentsOfAllSources();
+ });
+ };
+
+ /**
+ * Returns the original source content. The only argument is the url of the
+ * original source file. Returns null if no original source content is
+ * available.
+ */
+ IndexedSourceMapConsumer.prototype.sourceContentFor =
+ function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {
+ for (var i = 0; i < this._sections.length; i++) {
+ var section = this._sections[i];
+
+ var content = section.consumer.sourceContentFor(aSource, true);
+ if (content) {
+ return content;
+ }
+ }
+ if (nullOnMissing) {
+ return null;
+ }
+ else {
+ throw new Error('"' + aSource + '" is not in the SourceMap.');
+ }
+ };
+
+ /**
+ * Returns the generated line and column information for the original source,
+ * line, and column positions provided. The only argument is an object with
+ * the following properties:
+ *
+ * - source: The filename of the original source.
+ * - line: The line number in the original source.
+ * - column: The column number in the original source.
+ *
+ * and an object is returned with the following properties:
+ *
+ * - line: The line number in the generated source, or null.
+ * - column: The column number in the generated source, or null.
+ */
+ IndexedSourceMapConsumer.prototype.generatedPositionFor =
+ function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {
+ for (var i = 0; i < this._sections.length; i++) {
+ var section = this._sections[i];
+
+ // Only consider this section if the requested source is in the list of
+ // sources of the consumer.
+ if (section.consumer.sources.indexOf(util.getArg(aArgs, 'source')) === -1) {
+ continue;
+ }
+ var generatedPosition = section.consumer.generatedPositionFor(aArgs);
+ if (generatedPosition) {
+ var ret = {
+ line: generatedPosition.line +
+ (section.generatedOffset.generatedLine - 1),
+ column: generatedPosition.column +
+ (section.generatedOffset.generatedLine === generatedPosition.line
+ ? section.generatedOffset.generatedColumn - 1
+ : 0)
+ };
+ return ret;
+ }
+ }
+
+ return {
+ line: null,
+ column: null
+ };
+ };
+
+ /**
+ * Parse the mappings in a string in to a data structure which we can easily
+ * query (the ordered arrays in the `this.__generatedMappings` and
+ * `this.__originalMappings` properties).
+ */
+ IndexedSourceMapConsumer.prototype._parseMappings =
+ function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {
+ this.__generatedMappings = [];
+ this.__originalMappings = [];
+ for (var i = 0; i < this._sections.length; i++) {
+ var section = this._sections[i];
+ var sectionMappings = section.consumer._generatedMappings;
+ for (var j = 0; j < sectionMappings.length; j++) {
+ var mapping = sectionMappings[j];
+
+ var source = section.consumer._sources.at(mapping.source);
+ if (section.consumer.sourceRoot !== null) {
+ source = util.join(section.consumer.sourceRoot, source);
+ }
+ this._sources.add(source);
+ source = this._sources.indexOf(source);
+
+ var name = section.consumer._names.at(mapping.name);
+ this._names.add(name);
+ name = this._names.indexOf(name);
+
+ // The mappings coming from the consumer for the section have
+ // generated positions relative to the start of the section, so we
+ // need to offset them to be relative to the start of the concatenated
+ // generated file.
+ var adjustedMapping = {
+ source: source,
+ generatedLine: mapping.generatedLine +
+ (section.generatedOffset.generatedLine - 1),
+ generatedColumn: mapping.generatedColumn +
+ (section.generatedOffset.generatedLine === mapping.generatedLine
+ ? section.generatedOffset.generatedColumn - 1
+ : 0),
+ originalLine: mapping.originalLine,
+ originalColumn: mapping.originalColumn,
+ name: name
+ };
+
+ this.__generatedMappings.push(adjustedMapping);
+ if (typeof adjustedMapping.originalLine === 'number') {
+ this.__originalMappings.push(adjustedMapping);
+ }
+ }
+ }
+
+ quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);
+ quickSort(this.__originalMappings, util.compareByOriginalPositions);
+ };
+
+ exports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;
+ }
+
+
+/***/ },
+/* 8 */
+/***/ function(module, exports) {
+
+ /* -*- Mode: js; js-indent-level: 2; -*- */
+ /*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+ {
+ exports.GREATEST_LOWER_BOUND = 1;
+ exports.LEAST_UPPER_BOUND = 2;
+
+ /**
+ * Recursive implementation of binary search.
+ *
+ * @param aLow Indices here and lower do not contain the needle.
+ * @param aHigh Indices here and higher do not contain the needle.
+ * @param aNeedle The element being searched for.
+ * @param aHaystack The non-empty array being searched.
+ * @param aCompare Function which takes two elements and returns -1, 0, or 1.
+ * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or
+ * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the
+ * closest element that is smaller than or greater than the one we are
+ * searching for, respectively, if the exact element cannot be found.
+ */
+ function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {
+ // This function terminates when one of the following is true:
+ //
+ // 1. We find the exact element we are looking for.
+ //
+ // 2. We did not find the exact element, but we can return the index of
+ // the next-closest element.
+ //
+ // 3. We did not find the exact element, and there is no next-closest
+ // element than the one we are searching for, so we return -1.
+ var mid = Math.floor((aHigh - aLow) / 2) + aLow;
+ var cmp = aCompare(aNeedle, aHaystack[mid], true);
+ if (cmp === 0) {
+ // Found the element we are looking for.
+ return mid;
+ }
+ else if (cmp > 0) {
+ // Our needle is greater than aHaystack[mid].
+ if (aHigh - mid > 1) {
+ // The element is in the upper half.
+ return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);
+ }
+
+ // The exact needle element was not found in this haystack. Determine if
+ // we are in termination case (3) or (2) and return the appropriate thing.
+ if (aBias == exports.LEAST_UPPER_BOUND) {
+ return aHigh < aHaystack.length ? aHigh : -1;
+ } else {
+ return mid;
+ }
+ }
+ else {
+ // Our needle is less than aHaystack[mid].
+ if (mid - aLow > 1) {
+ // The element is in the lower half.
+ return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);
+ }
+
+ // we are in termination case (3) or (2) and return the appropriate thing.
+ if (aBias == exports.LEAST_UPPER_BOUND) {
+ return mid;
+ } else {
+ return aLow < 0 ? -1 : aLow;
+ }
+ }
+ }
+
+ /**
+ * This is an implementation of binary search which will always try and return
+ * the index of the closest element if there is no exact hit. This is because
+ * mappings between original and generated line/col pairs are single points,
+ * and there is an implicit region between each of them, so a miss just means
+ * that you aren't on the very start of a region.
+ *
+ * @param aNeedle The element you are looking for.
+ * @param aHaystack The array that is being searched.
+ * @param aCompare A function which takes the needle and an element in the
+ * array and returns -1, 0, or 1 depending on whether the needle is less
+ * than, equal to, or greater than the element, respectively.
+ * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or
+ * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the
+ * closest element that is smaller than or greater than the one we are
+ * searching for, respectively, if the exact element cannot be found.
+ * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.
+ */
+ exports.search = function search(aNeedle, aHaystack, aCompare, aBias) {
+ if (aHaystack.length === 0) {
+ return -1;
+ }
+
+ var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,
+ aCompare, aBias || exports.GREATEST_LOWER_BOUND);
+ if (index < 0) {
+ return -1;
+ }
+
+ // We have found either the exact element, or the next-closest element than
+ // the one we are searching for. However, there may be more than one such
+ // element. Make sure we always return the smallest of these.
+ while (index - 1 >= 0) {
+ if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {
+ break;
+ }
+ --index;
+ }
+
+ return index;
+ };
+ }
+
+
+/***/ },
+/* 9 */
+/***/ function(module, exports) {
+
+ /* -*- Mode: js; js-indent-level: 2; -*- */
+ /*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+ {
+ // It turns out that some (most?) JavaScript engines don't self-host
+ // `Array.prototype.sort`. This makes sense because C++ will likely remain
+ // faster than JS when doing raw CPU-intensive sorting. However, when using a
+ // custom comparator function, calling back and forth between the VM's C++ and
+ // JIT'd JS is rather slow *and* loses JIT type information, resulting in
+ // worse generated code for the comparator function than would be optimal. In
+ // fact, when sorting with a comparator, these costs outweigh the benefits of
+ // sorting in C++. By using our own JS-implemented Quick Sort (below), we get
+ // a ~3500ms mean speed-up in `bench/bench.html`.
+
+ /**
+ * Swap the elements indexed by `x` and `y` in the array `ary`.
+ *
+ * @param {Array} ary
+ * The array.
+ * @param {Number} x
+ * The index of the first item.
+ * @param {Number} y
+ * The index of the second item.
+ */
+ function swap(ary, x, y) {
+ var temp = ary[x];
+ ary[x] = ary[y];
+ ary[y] = temp;
+ }
+
+ /**
+ * Returns a random integer within the range `low .. high` inclusive.
+ *
+ * @param {Number} low
+ * The lower bound on the range.
+ * @param {Number} high
+ * The upper bound on the range.
+ */
+ function randomIntInRange(low, high) {
+ return Math.round(low + (Math.random() * (high - low)));
+ }
+
+ /**
+ * The Quick Sort algorithm.
+ *
+ * @param {Array} ary
+ * An array to sort.
+ * @param {function} comparator
+ * Function to use to compare two items.
+ * @param {Number} p
+ * Start index of the array
+ * @param {Number} r
+ * End index of the array
+ */
+ function doQuickSort(ary, comparator, p, r) {
+ // If our lower bound is less than our upper bound, we (1) partition the
+ // array into two pieces and (2) recurse on each half. If it is not, this is
+ // the empty array and our base case.
+
+ if (p < r) {
+ // (1) Partitioning.
+ //
+ // The partitioning chooses a pivot between `p` and `r` and moves all
+ // elements that are less than or equal to the pivot to the before it, and
+ // all the elements that are greater than it after it. The effect is that
+ // once partition is done, the pivot is in the exact place it will be when
+ // the array is put in sorted order, and it will not need to be moved
+ // again. This runs in O(n) time.
+
+ // Always choose a random pivot so that an input array which is reverse
+ // sorted does not cause O(n^2) running time.
+ var pivotIndex = randomIntInRange(p, r);
+ var i = p - 1;
+
+ swap(ary, pivotIndex, r);
+ var pivot = ary[r];
+
+ // Immediately after `j` is incremented in this loop, the following hold
+ // true:
+ //
+ // * Every element in `ary[p .. i]` is less than or equal to the pivot.
+ //
+ // * Every element in `ary[i+1 .. j-1]` is greater than the pivot.
+ for (var j = p; j < r; j++) {
+ if (comparator(ary[j], pivot) <= 0) {
+ i += 1;
+ swap(ary, i, j);
+ }
+ }
+
+ swap(ary, i + 1, j);
+ var q = i + 1;
+
+ // (2) Recurse on each half.
+
+ doQuickSort(ary, comparator, p, q - 1);
+ doQuickSort(ary, comparator, q + 1, r);
+ }
+ }
+
+ /**
+ * Sort the given array in-place with the given comparator function.
+ *
+ * @param {Array} ary
+ * An array to sort.
+ * @param {function} comparator
+ * Function to use to compare two items.
+ */
+ exports.quickSort = function (ary, comparator) {
+ doQuickSort(ary, comparator, 0, ary.length - 1);
+ };
+ }
+
+
+/***/ },
+/* 10 */
+/***/ function(module, exports, __webpack_require__) {
+
+ /* -*- Mode: js; js-indent-level: 2; -*- */
+ /*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+ {
+ var SourceMapGenerator = __webpack_require__(1).SourceMapGenerator;
+ var util = __webpack_require__(4);
+
+ // Matches a Windows-style `\r\n` newline or a `\n` newline used by all other
+ // operating systems these days (capturing the result).
+ var REGEX_NEWLINE = /(\r?\n)/;
+
+ // Newline character code for charCodeAt() comparisons
+ var NEWLINE_CODE = 10;
+
+ // Private symbol for identifying `SourceNode`s when multiple versions of
+ // the source-map library are loaded. This MUST NOT CHANGE across
+ // versions!
+ var isSourceNode = "$$$isSourceNode$$$";
+
+ /**
+ * SourceNodes provide a way to abstract over interpolating/concatenating
+ * snippets of generated JavaScript source code while maintaining the line and
+ * column information associated with the original source code.
+ *
+ * @param aLine The original line number.
+ * @param aColumn The original column number.
+ * @param aSource The original source's filename.
+ * @param aChunks Optional. An array of strings which are snippets of
+ * generated JS, or other SourceNodes.
+ * @param aName The original identifier.
+ */
+ function SourceNode(aLine, aColumn, aSource, aChunks, aName) {
+ this.children = [];
+ this.sourceContents = {};
+ this.line = aLine == null ? null : aLine;
+ this.column = aColumn == null ? null : aColumn;
+ this.source = aSource == null ? null : aSource;
+ this.name = aName == null ? null : aName;
+ this[isSourceNode] = true;
+ if (aChunks != null) this.add(aChunks);
+ }
+
+ /**
+ * Creates a SourceNode from generated code and a SourceMapConsumer.
+ *
+ * @param aGeneratedCode The generated code
+ * @param aSourceMapConsumer The SourceMap for the generated code
+ * @param aRelativePath Optional. The path that relative sources in the
+ * SourceMapConsumer should be relative to.
+ */
+ SourceNode.fromStringWithSourceMap =
+ function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {
+ // The SourceNode we want to fill with the generated code
+ // and the SourceMap
+ var node = new SourceNode();
+
+ // All even indices of this array are one line of the generated code,
+ // while all odd indices are the newlines between two adjacent lines
+ // (since `REGEX_NEWLINE` captures its match).
+ // Processed fragments are removed from this array, by calling `shiftNextLine`.
+ var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);
+ var shiftNextLine = function() {
+ var lineContents = remainingLines.shift();
+ // The last line of a file might not have a newline.
+ var newLine = remainingLines.shift() || "";
+ return lineContents + newLine;
+ };
+
+ // We need to remember the position of "remainingLines"
+ var lastGeneratedLine = 1, lastGeneratedColumn = 0;
+
+ // The generate SourceNodes we need a code range.
+ // To extract it current and last mapping is used.
+ // Here we store the last mapping.
+ var lastMapping = null;
+
+ aSourceMapConsumer.eachMapping(function (mapping) {
+ if (lastMapping !== null) {
+ // We add the code from "lastMapping" to "mapping":
+ // First check if there is a new line in between.
+ if (lastGeneratedLine < mapping.generatedLine) {
+ // Associate first line with "lastMapping"
+ addMappingWithCode(lastMapping, shiftNextLine());
+ lastGeneratedLine++;
+ lastGeneratedColumn = 0;
+ // The remaining code is added without mapping
+ } else {
+ // There is no new line in between.
+ // Associate the code between "lastGeneratedColumn" and
+ // "mapping.generatedColumn" with "lastMapping"
+ var nextLine = remainingLines[0];
+ var code = nextLine.substr(0, mapping.generatedColumn -
+ lastGeneratedColumn);
+ remainingLines[0] = nextLine.substr(mapping.generatedColumn -
+ lastGeneratedColumn);
+ lastGeneratedColumn = mapping.generatedColumn;
+ addMappingWithCode(lastMapping, code);
+ // No more remaining code, continue
+ lastMapping = mapping;
+ return;
+ }
+ }
+ // We add the generated code until the first mapping
+ // to the SourceNode without any mapping.
+ // Each line is added as separate string.
+ while (lastGeneratedLine < mapping.generatedLine) {
+ node.add(shiftNextLine());
+ lastGeneratedLine++;
+ }
+ if (lastGeneratedColumn < mapping.generatedColumn) {
+ var nextLine = remainingLines[0];
+ node.add(nextLine.substr(0, mapping.generatedColumn));
+ remainingLines[0] = nextLine.substr(mapping.generatedColumn);
+ lastGeneratedColumn = mapping.generatedColumn;
+ }
+ lastMapping = mapping;
+ }, this);
+ // We have processed all mappings.
+ if (remainingLines.length > 0) {
+ if (lastMapping) {
+ // Associate the remaining code in the current line with "lastMapping"
+ addMappingWithCode(lastMapping, shiftNextLine());
+ }
+ // and add the remaining lines without any mapping
+ node.add(remainingLines.join(""));
+ }
+
+ // Copy sourcesContent into SourceNode
+ aSourceMapConsumer.sources.forEach(function (sourceFile) {
+ var content = aSourceMapConsumer.sourceContentFor(sourceFile);
+ if (content != null) {
+ if (aRelativePath != null) {
+ sourceFile = util.join(aRelativePath, sourceFile);
+ }
+ node.setSourceContent(sourceFile, content);
+ }
+ });
+
+ return node;
+
+ function addMappingWithCode(mapping, code) {
+ if (mapping === null || mapping.source === undefined) {
+ node.add(code);
+ } else {
+ var source = aRelativePath
+ ? util.join(aRelativePath, mapping.source)
+ : mapping.source;
+ node.add(new SourceNode(mapping.originalLine,
+ mapping.originalColumn,
+ source,
+ code,
+ mapping.name));
+ }
+ }
+ };
+
+ /**
+ * Add a chunk of generated JS to this source node.
+ *
+ * @param aChunk A string snippet of generated JS code, another instance of
+ * SourceNode, or an array where each member is one of those things.
+ */
+ SourceNode.prototype.add = function SourceNode_add(aChunk) {
+ if (Array.isArray(aChunk)) {
+ aChunk.forEach(function (chunk) {
+ this.add(chunk);
+ }, this);
+ }
+ else if (aChunk[isSourceNode] || typeof aChunk === "string") {
+ if (aChunk) {
+ this.children.push(aChunk);
+ }
+ }
+ else {
+ throw new TypeError(
+ "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk
+ );
+ }
+ return this;
+ };
+
+ /**
+ * Add a chunk of generated JS to the beginning of this source node.
+ *
+ * @param aChunk A string snippet of generated JS code, another instance of
+ * SourceNode, or an array where each member is one of those things.
+ */
+ SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {
+ if (Array.isArray(aChunk)) {
+ for (var i = aChunk.length-1; i >= 0; i--) {
+ this.prepend(aChunk[i]);
+ }
+ }
+ else if (aChunk[isSourceNode] || typeof aChunk === "string") {
+ this.children.unshift(aChunk);
+ }
+ else {
+ throw new TypeError(
+ "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk
+ );
+ }
+ return this;
+ };
+
+ /**
+ * Walk over the tree of JS snippets in this node and its children. The
+ * walking function is called once for each snippet of JS and is passed that
+ * snippet and the its original associated source's line/column location.
+ *
+ * @param aFn The traversal function.
+ */
+ SourceNode.prototype.walk = function SourceNode_walk(aFn) {
+ var chunk;
+ for (var i = 0, len = this.children.length; i < len; i++) {
+ chunk = this.children[i];
+ if (chunk[isSourceNode]) {
+ chunk.walk(aFn);
+ }
+ else {
+ if (chunk !== '') {
+ aFn(chunk, { source: this.source,
+ line: this.line,
+ column: this.column,
+ name: this.name });
+ }
+ }
+ }
+ };
+
+ /**
+ * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between
+ * each of `this.children`.
+ *
+ * @param aSep The separator.
+ */
+ SourceNode.prototype.join = function SourceNode_join(aSep) {
+ var newChildren;
+ var i;
+ var len = this.children.length;
+ if (len > 0) {
+ newChildren = [];
+ for (i = 0; i < len-1; i++) {
+ newChildren.push(this.children[i]);
+ newChildren.push(aSep);
+ }
+ newChildren.push(this.children[i]);
+ this.children = newChildren;
+ }
+ return this;
+ };
+
+ /**
+ * Call String.prototype.replace on the very right-most source snippet. Useful
+ * for trimming whitespace from the end of a source node, etc.
+ *
+ * @param aPattern The pattern to replace.
+ * @param aReplacement The thing to replace the pattern with.
+ */
+ SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {
+ var lastChild = this.children[this.children.length - 1];
+ if (lastChild[isSourceNode]) {
+ lastChild.replaceRight(aPattern, aReplacement);
+ }
+ else if (typeof lastChild === 'string') {
+ this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);
+ }
+ else {
+ this.children.push(''.replace(aPattern, aReplacement));
+ }
+ return this;
+ };
+
+ /**
+ * Set the source content for a source file. This will be added to the SourceMapGenerator
+ * in the sourcesContent field.
+ *
+ * @param aSourceFile The filename of the source file
+ * @param aSourceContent The content of the source file
+ */
+ SourceNode.prototype.setSourceContent =
+ function SourceNode_setSourceContent(aSourceFile, aSourceContent) {
+ this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;
+ };
+
+ /**
+ * Walk over the tree of SourceNodes. The walking function is called for each
+ * source file content and is passed the filename and source content.
+ *
+ * @param aFn The traversal function.
+ */
+ SourceNode.prototype.walkSourceContents =
+ function SourceNode_walkSourceContents(aFn) {
+ for (var i = 0, len = this.children.length; i < len; i++) {
+ if (this.children[i][isSourceNode]) {
+ this.children[i].walkSourceContents(aFn);
+ }
+ }
+
+ var sources = Object.keys(this.sourceContents);
+ for (var i = 0, len = sources.length; i < len; i++) {
+ aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);
+ }
+ };
+
+ /**
+ * Return the string representation of this source node. Walks over the tree
+ * and concatenates all the various snippets together to one string.
+ */
+ SourceNode.prototype.toString = function SourceNode_toString() {
+ var str = "";
+ this.walk(function (chunk) {
+ str += chunk;
+ });
+ return str;
+ };
+
+ /**
+ * Returns the string representation of this source node along with a source
+ * map.
+ */
+ SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {
+ var generated = {
+ code: "",
+ line: 1,
+ column: 0
+ };
+ var map = new SourceMapGenerator(aArgs);
+ var sourceMappingActive = false;
+ var lastOriginalSource = null;
+ var lastOriginalLine = null;
+ var lastOriginalColumn = null;
+ var lastOriginalName = null;
+ this.walk(function (chunk, original) {
+ generated.code += chunk;
+ if (original.source !== null
+ && original.line !== null
+ && original.column !== null) {
+ if(lastOriginalSource !== original.source
+ || lastOriginalLine !== original.line
+ || lastOriginalColumn !== original.column
+ || lastOriginalName !== original.name) {
+ map.addMapping({
+ source: original.source,
+ original: {
+ line: original.line,
+ column: original.column
+ },
+ generated: {
+ line: generated.line,
+ column: generated.column
+ },
+ name: original.name
+ });
+ }
+ lastOriginalSource = original.source;
+ lastOriginalLine = original.line;
+ lastOriginalColumn = original.column;
+ lastOriginalName = original.name;
+ sourceMappingActive = true;
+ } else if (sourceMappingActive) {
+ map.addMapping({
+ generated: {
+ line: generated.line,
+ column: generated.column
+ }
+ });
+ lastOriginalSource = null;
+ sourceMappingActive = false;
+ }
+ for (var idx = 0, length = chunk.length; idx < length; idx++) {
+ if (chunk.charCodeAt(idx) === NEWLINE_CODE) {
+ generated.line++;
+ generated.column = 0;
+ // Mappings end at eol
+ if (idx + 1 === length) {
+ lastOriginalSource = null;
+ sourceMappingActive = false;
+ } else if (sourceMappingActive) {
+ map.addMapping({
+ source: original.source,
+ original: {
+ line: original.line,
+ column: original.column
+ },
+ generated: {
+ line: generated.line,
+ column: generated.column
+ },
+ name: original.name
+ });
+ }
+ } else {
+ generated.column++;
+ }
+ }
+ });
+ this.walkSourceContents(function (sourceFile, sourceContent) {
+ map.setSourceContent(sourceFile, sourceContent);
+ });
+
+ return { code: generated.code, map: map };
+ };
+
+ exports.SourceNode = SourceNode;
+ }
+
+
+/***/ }
+/******/ ])
+});
+;
\ No newline at end of file
diff --git a/node_modules/babel-generator/node_modules/source-map/dist/source-map.min.js b/node_modules/babel-generator/node_modules/source-map/dist/source-map.min.js
new file mode 100644
index 0000000..3de3bd2
--- /dev/null
+++ b/node_modules/babel-generator/node_modules/source-map/dist/source-map.min.js
@@ -0,0 +1,2 @@
+!function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n():"function"==typeof define&&define.amd?define([],n):"object"==typeof exports?exports.sourceMap=n():e.sourceMap=n()}(this,function(){return function(e){function n(t){if(r[t])return r[t].exports;var o=r[t]={exports:{},id:t,loaded:!1};return e[t].call(o.exports,o,o.exports,n),o.loaded=!0,o.exports}var r={};return n.m=e,n.c=r,n.p="",n(0)}([function(e,n,r){n.SourceMapGenerator=r(1).SourceMapGenerator,n.SourceMapConsumer=r(7).SourceMapConsumer,n.SourceNode=r(10).SourceNode},function(e,n,r){function t(e){e||(e={}),this._file=i.getArg(e,"file",null),this._sourceRoot=i.getArg(e,"sourceRoot",null),this._skipValidation=i.getArg(e,"skipValidation",!1),this._sources=new s,this._names=new s,this._mappings=new a,this._sourcesContents=null}var o=r(2),i=r(4),s=r(5).ArraySet,a=r(6).MappingList;t.prototype._version=3,t.fromSourceMap=function(e){var n=e.sourceRoot,r=new t({file:e.file,sourceRoot:n});return e.eachMapping(function(e){var t={generated:{line:e.generatedLine,column:e.generatedColumn}};null!=e.source&&(t.source=e.source,null!=n&&(t.source=i.relative(n,t.source)),t.original={line:e.originalLine,column:e.originalColumn},null!=e.name&&(t.name=e.name)),r.addMapping(t)}),e.sources.forEach(function(n){var t=e.sourceContentFor(n);null!=t&&r.setSourceContent(n,t)}),r},t.prototype.addMapping=function(e){var n=i.getArg(e,"generated"),r=i.getArg(e,"original",null),t=i.getArg(e,"source",null),o=i.getArg(e,"name",null);this._skipValidation||this._validateMapping(n,r,t,o),null==t||this._sources.has(t)||this._sources.add(t),null==o||this._names.has(o)||this._names.add(o),this._mappings.add({generatedLine:n.line,generatedColumn:n.column,originalLine:null!=r&&r.line,originalColumn:null!=r&&r.column,source:t,name:o})},t.prototype.setSourceContent=function(e,n){var r=e;null!=this._sourceRoot&&(r=i.relative(this._sourceRoot,r)),null!=n?(this._sourcesContents||(this._sourcesContents={}),this._sourcesContents[i.toSetString(r)]=n):this._sourcesContents&&(delete this._sourcesContents[i.toSetString(r)],0===Object.keys(this._sourcesContents).length&&(this._sourcesContents=null))},t.prototype.applySourceMap=function(e,n,r){var t=n;if(null==n){if(null==e.file)throw new Error('SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, or the source map\'s "file" property. Both were omitted.');t=e.file}var o=this._sourceRoot;null!=o&&(t=i.relative(o,t));var a=new s,u=new s;this._mappings.unsortedForEach(function(n){if(n.source===t&&null!=n.originalLine){var s=e.originalPositionFor({line:n.originalLine,column:n.originalColumn});null!=s.source&&(n.source=s.source,null!=r&&(n.source=i.join(r,n.source)),null!=o&&(n.source=i.relative(o,n.source)),n.originalLine=s.line,n.originalColumn=s.column,null!=s.name&&(n.name=s.name))}var l=n.source;null==l||a.has(l)||a.add(l);var c=n.name;null==c||u.has(c)||u.add(c)},this),this._sources=a,this._names=u,e.sources.forEach(function(n){var t=e.sourceContentFor(n);null!=t&&(null!=r&&(n=i.join(r,n)),null!=o&&(n=i.relative(o,n)),this.setSourceContent(n,t))},this)},t.prototype._validateMapping=function(e,n,r,t){if((!(e&&"line"in e&&"column"in e&&e.line>0&&e.column>=0)||n||r||t)&&!(e&&"line"in e&&"column"in e&&n&&"line"in n&&"column"in n&&e.line>0&&e.column>=0&&n.line>0&&n.column>=0&&r))throw new Error("Invalid mapping: "+JSON.stringify({generated:e,source:r,original:n,name:t}))},t.prototype._serializeMappings=function(){for(var e,n,r,t=0,s=1,a=0,u=0,l=0,c=0,g="",p=this._mappings.toArray(),h=0,f=p.length;f>h;h++){if(e=p[h],e.generatedLine!==s)for(t=0;e.generatedLine!==s;)g+=";",s++;else if(h>0){if(!i.compareByGeneratedPositionsInflated(e,p[h-1]))continue;g+=","}g+=o.encode(e.generatedColumn-t),t=e.generatedColumn,null!=e.source&&(r=this._sources.indexOf(e.source),g+=o.encode(r-c),c=r,g+=o.encode(e.originalLine-1-u),u=e.originalLine-1,g+=o.encode(e.originalColumn-a),a=e.originalColumn,null!=e.name&&(n=this._names.indexOf(e.name),g+=o.encode(n-l),l=n))}return g},t.prototype._generateSourcesContent=function(e,n){return e.map(function(e){if(!this._sourcesContents)return null;null!=n&&(e=i.relative(n,e));var r=i.toSetString(e);return Object.prototype.hasOwnProperty.call(this._sourcesContents,r)?this._sourcesContents[r]:null},this)},t.prototype.toJSON=function(){var e={version:this._version,sources:this._sources.toArray(),names:this._names.toArray(),mappings:this._serializeMappings()};return null!=this._file&&(e.file=this._file),null!=this._sourceRoot&&(e.sourceRoot=this._sourceRoot),this._sourcesContents&&(e.sourcesContent=this._generateSourcesContent(e.sources,e.sourceRoot)),e},t.prototype.toString=function(){return JSON.stringify(this.toJSON())},n.SourceMapGenerator=t},function(e,n,r){function t(e){return 0>e?(-e<<1)+1:(e<<1)+0}function o(e){var n=1===(1&e),r=e>>1;return n?-r:r}var i=r(3),s=5,a=1<>>=s,o>0&&(n|=l),r+=i.encode(n);while(o>0);return r},n.decode=function(e,n,r){var t,a,c=e.length,g=0,p=0;do{if(n>=c)throw new Error("Expected more digits in base 64 VLQ value.");if(a=i.decode(e.charCodeAt(n++)),-1===a)throw new Error("Invalid base64 digit: "+e.charAt(n-1));t=!!(a&l),a&=u,g+=a< =0&&e=n&&r>=e?e-n:e>=t&&o>=e?e-t+l:e>=i&&s>=e?e-i+c:e==a?62:e==u?63:-1}},function(e,n){function r(e,n,r){if(n in e)return e[n];if(3===arguments.length)return r;throw new Error('"'+n+'" is a required argument.')}function t(e){var n=e.match(f);return n?{scheme:n[1],auth:n[2],host:n[3],port:n[4],path:n[5]}:null}function o(e){var n="";return e.scheme&&(n+=e.scheme+":"),n+="//",e.auth&&(n+=e.auth+"@"),e.host&&(n+=e.host),e.port&&(n+=":"+e.port),e.path&&(n+=e.path),n}function i(e){var r=e,i=t(e);if(i){if(!i.path)return e;r=i.path}for(var s,a=n.isAbsolute(r),u=r.split(/\/+/),l=0,c=u.length-1;c>=0;c--)s=u[c],"."===s?u.splice(c,1):".."===s?l++:l>0&&(""===s?(u.splice(c+1,l),l=0):(u.splice(c,2),l--));return r=u.join("/"),""===r&&(r=a?"/":"."),i?(i.path=r,o(i)):r}function s(e,n){""===e&&(e="."),""===n&&(n=".");var r=t(n),s=t(e);if(s&&(e=s.path||"/"),r&&!r.scheme)return s&&(r.scheme=s.scheme),o(r);if(r||n.match(d))return n;if(s&&!s.host&&!s.path)return s.host=n,o(s);var a="/"===n.charAt(0)?n:i(e.replace(/\/+$/,"")+"/"+n);return s?(s.path=a,o(s)):a}function a(e,n){""===e&&(e="."),e=e.replace(/\/$/,"");for(var r=0;0!==n.indexOf(e+"/");){var t=e.lastIndexOf("/");if(0>t)return n;if(e=e.slice(0,t),e.match(/^([^\/]+:\/)?\/*$/))return n;++r}return Array(r+1).join("../")+n.substr(e.length+1)}function u(e){return"$"+e}function l(e){return e.substr(1)}function c(e,n,r){var t=e.source-n.source;return 0!==t?t:(t=e.originalLine-n.originalLine,0!==t?t:(t=e.originalColumn-n.originalColumn,0!==t||r?t:(t=e.generatedColumn-n.generatedColumn,0!==t?t:(t=e.generatedLine-n.generatedLine,0!==t?t:e.name-n.name))))}function g(e,n,r){var t=e.generatedLine-n.generatedLine;return 0!==t?t:(t=e.generatedColumn-n.generatedColumn,0!==t||r?t:(t=e.source-n.source,0!==t?t:(t=e.originalLine-n.originalLine,0!==t?t:(t=e.originalColumn-n.originalColumn,0!==t?t:e.name-n.name))))}function p(e,n){return e===n?0:e>n?1:-1}function h(e,n){var r=e.generatedLine-n.generatedLine;return 0!==r?r:(r=e.generatedColumn-n.generatedColumn,0!==r?r:(r=p(e.source,n.source),0!==r?r:(r=e.originalLine-n.originalLine,0!==r?r:(r=e.originalColumn-n.originalColumn,0!==r?r:p(e.name,n.name)))))}n.getArg=r;var f=/^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.]*)(?::(\d+))?(\S*)$/,d=/^data:.+\,.+$/;n.urlParse=t,n.urlGenerate=o,n.normalize=i,n.join=s,n.isAbsolute=function(e){return"/"===e.charAt(0)||!!e.match(f)},n.relative=a,n.toSetString=u,n.fromSetString=l,n.compareByOriginalPositions=c,n.compareByGeneratedPositionsDeflated=g,n.compareByGeneratedPositionsInflated=h},function(e,n,r){function t(){this._array=[],this._set={}}var o=r(4);t.fromArray=function(e,n){for(var r=new t,o=0,i=e.length;i>o;o++)r.add(e[o],n);return r},t.prototype.size=function(){return Object.getOwnPropertyNames(this._set).length},t.prototype.add=function(e,n){var r=o.toSetString(e),t=this._set.hasOwnProperty(r),i=this._array.length;(!t||n)&&this._array.push(e),t||(this._set[r]=i)},t.prototype.has=function(e){var n=o.toSetString(e);return this._set.hasOwnProperty(n)},t.prototype.indexOf=function(e){var n=o.toSetString(e);if(this._set.hasOwnProperty(n))return this._set[n];throw new Error('"'+e+'" is not in the set.')},t.prototype.at=function(e){if(e>=0&&er||t==r&&s>=o||i.compareByGeneratedPositionsInflated(e,n)<=0}function o(){this._array=[],this._sorted=!0,this._last={generatedLine:-1,generatedColumn:0}}var i=r(4);o.prototype.unsortedForEach=function(e,n){this._array.forEach(e,n)},o.prototype.add=function(e){t(this._last,e)?(this._last=e,this._array.push(e)):(this._sorted=!1,this._array.push(e))},o.prototype.toArray=function(){return this._sorted||(this._array.sort(i.compareByGeneratedPositionsInflated),this._sorted=!0),this._array},n.MappingList=o},function(e,n,r){function t(e){var n=e;return"string"==typeof e&&(n=JSON.parse(e.replace(/^\)\]\}'/,""))),null!=n.sections?new s(n):new o(n)}function o(e){var n=e;"string"==typeof e&&(n=JSON.parse(e.replace(/^\)\]\}'/,"")));var r=a.getArg(n,"version"),t=a.getArg(n,"sources"),o=a.getArg(n,"names",[]),i=a.getArg(n,"sourceRoot",null),s=a.getArg(n,"sourcesContent",null),u=a.getArg(n,"mappings"),c=a.getArg(n,"file",null);if(r!=this._version)throw new Error("Unsupported version: "+r);t=t.map(a.normalize).map(function(e){return i&&a.isAbsolute(i)&&a.isAbsolute(e)?a.relative(i,e):e}),this._names=l.fromArray(o,!0),this._sources=l.fromArray(t,!0),this.sourceRoot=i,this.sourcesContent=s,this._mappings=u,this.file=c}function i(){this.generatedLine=0,this.generatedColumn=0,this.source=null,this.originalLine=null,this.originalColumn=null,this.name=null}function s(e){var n=e;"string"==typeof e&&(n=JSON.parse(e.replace(/^\)\]\}'/,"")));var r=a.getArg(n,"version"),o=a.getArg(n,"sections");if(r!=this._version)throw new Error("Unsupported version: "+r);this._sources=new l,this._names=new l;var i={line:-1,column:0};this._sections=o.map(function(e){if(e.url)throw new Error("Support for url field in sections not implemented.");var n=a.getArg(e,"offset"),r=a.getArg(n,"line"),o=a.getArg(n,"column");if(r=0){var i=this._originalMappings[o];if(void 0===e.column)for(var s=i.originalLine;i&&i.originalLine===s;)t.push({line:a.getArg(i,"generatedLine",null),column:a.getArg(i,"generatedColumn",null),lastColumn:a.getArg(i,"lastGeneratedColumn",null)}),i=this._originalMappings[++o];else for(var l=i.originalColumn;i&&i.originalLine===n&&i.originalColumn==l;)t.push({line:a.getArg(i,"generatedLine",null),column:a.getArg(i,"generatedColumn",null),lastColumn:a.getArg(i,"lastGeneratedColumn",null)}),i=this._originalMappings[++o]}return t},n.SourceMapConsumer=t,o.prototype=Object.create(t.prototype),o.prototype.consumer=t,o.fromSourceMap=function(e){var n=Object.create(o.prototype),r=n._names=l.fromArray(e._names.toArray(),!0),t=n._sources=l.fromArray(e._sources.toArray(),!0);n.sourceRoot=e._sourceRoot,n.sourcesContent=e._generateSourcesContent(n._sources.toArray(),n.sourceRoot),n.file=e._file;for(var s=e._mappings.toArray().slice(),u=n.__generatedMappings=[],c=n.__originalMappings=[],p=0,h=s.length;h>p;p++){var f=s[p],d=new i;d.generatedLine=f.generatedLine,d.generatedColumn=f.generatedColumn,f.source&&(d.source=t.indexOf(f.source),d.originalLine=f.originalLine,d.originalColumn=f.originalColumn,f.name&&(d.name=r.indexOf(f.name)),c.push(d)),u.push(d)}return g(n.__originalMappings,a.compareByOriginalPositions),n},o.prototype._version=3,Object.defineProperty(o.prototype,"sources",{get:function(){return this._sources.toArray().map(function(e){return null!=this.sourceRoot?a.join(this.sourceRoot,e):e},this)}}),o.prototype._parseMappings=function(e,n){for(var r,t,o,s,u,l=1,p=0,h=0,f=0,d=0,m=0,_=e.length,v=0,y={},C={},A=[],S=[];_>v;)if(";"===e.charAt(v))l++,v++,p=0;else if(","===e.charAt(v))v++;else{for(r=new i,r.generatedLine=l,s=v;_>s&&!this._charIsMappingSeparator(e,s);s++);if(t=e.slice(v,s),o=y[t])v+=t.length;else{for(o=[];s>v;)c.decode(e,v,C),u=C.value,v=C.rest,o.push(u);if(2===o.length)throw new Error("Found a source, but no line and column");if(3===o.length)throw new Error("Found a source and line, but no column");y[t]=o}r.generatedColumn=p+o[0],p=r.generatedColumn,o.length>1&&(r.source=d+o[1],d+=o[1],r.originalLine=h+o[2],h=r.originalLine,r.originalLine+=1,r.originalColumn=f+o[3],f=r.originalColumn,o.length>4&&(r.name=m+o[4],m+=o[4])),S.push(r),"number"==typeof r.originalLine&&A.push(r)}g(S,a.compareByGeneratedPositionsDeflated),this.__generatedMappings=S,g(A,a.compareByOriginalPositions),this.__originalMappings=A},o.prototype._findMapping=function(e,n,r,t,o,i){if(e[r]<=0)throw new TypeError("Line must be greater than or equal to 1, got "+e[r]);if(e[t]<0)throw new TypeError("Column must be greater than or equal to 0, got "+e[t]);return u.search(e,n,o,i)},o.prototype.computeColumnSpans=function(){for(var e=0;e=0){var o=this._generatedMappings[r];if(o.generatedLine===n.generatedLine){var i=a.getArg(o,"source",null);null!==i&&(i=this._sources.at(i),null!=this.sourceRoot&&(i=a.join(this.sourceRoot,i)));var s=a.getArg(o,"name",null);return null!==s&&(s=this._names.at(s)),{source:i,line:a.getArg(o,"originalLine",null),column:a.getArg(o,"originalColumn",null),name:s}}}return{source:null,line:null,column:null,name:null}},o.prototype.hasContentsOfAllSources=function(){return this.sourcesContent?this.sourcesContent.length>=this._sources.size()&&!this.sourcesContent.some(function(e){return null==e}):!1},o.prototype.sourceContentFor=function(e,n){if(!this.sourcesContent)return null;if(null!=this.sourceRoot&&(e=a.relative(this.sourceRoot,e)),this._sources.has(e))return this.sourcesContent[this._sources.indexOf(e)];var r;if(null!=this.sourceRoot&&(r=a.urlParse(this.sourceRoot))){var t=e.replace(/^file:\/\//,"");if("file"==r.scheme&&this._sources.has(t))return this.sourcesContent[this._sources.indexOf(t)];if((!r.path||"/"==r.path)&&this._sources.has("/"+e))return this.sourcesContent[this._sources.indexOf("/"+e)]}if(n)return null;throw new Error('"'+e+'" is not in the SourceMap.')},o.prototype.generatedPositionFor=function(e){var n=a.getArg(e,"source");if(null!=this.sourceRoot&&(n=a.relative(this.sourceRoot,n)),!this._sources.has(n))return{line:null,column:null,lastColumn:null};n=this._sources.indexOf(n);var r={source:n,originalLine:a.getArg(e,"line"),originalColumn:a.getArg(e,"column")},o=this._findMapping(r,this._originalMappings,"originalLine","originalColumn",a.compareByOriginalPositions,a.getArg(e,"bias",t.GREATEST_LOWER_BOUND));if(o>=0){var i=this._originalMappings[o];if(i.source===r.source)return{line:a.getArg(i,"generatedLine",null),column:a.getArg(i,"generatedColumn",null),lastColumn:a.getArg(i,"lastGeneratedColumn",null)}}return{line:null,column:null,lastColumn:null}},n.BasicSourceMapConsumer=o,s.prototype=Object.create(t.prototype),s.prototype.constructor=t,s.prototype._version=3,Object.defineProperty(s.prototype,"sources",{get:function(){for(var e=[],n=0;n0?t-u>1?r(u,t,o,i,s,a):a==n.LEAST_UPPER_BOUND?t1?r(e,u,o,i,s,a):a==n.LEAST_UPPER_BOUND?u:0>e?-1:e}n.GREATEST_LOWER_BOUND=1,n.LEAST_UPPER_BOUND=2,n.search=function(e,t,o,i){if(0===t.length)return-1;var s=r(-1,t.length,e,t,o,i||n.GREATEST_LOWER_BOUND);if(0>s)return-1;for(;s-1>=0&&0===o(t[s],t[s-1],!0);)--s;return s}},function(e,n){function r(e,n,r){var t=e[n];e[n]=e[r],e[r]=t}function t(e,n){return Math.round(e+Math.random()*(n-e))}function o(e,n,i,s){if(s>i){var a=t(i,s),u=i-1;r(e,a,s);for(var l=e[s],c=i;s>c;c++)n(e[c],l)<=0&&(u+=1,r(e,u,c));r(e,u+1,c);var g=u+1;o(e,n,i,g-1),o(e,n,g+1,s)}}n.quickSort=function(e,n){o(e,n,0,e.length-1)}},function(e,n,r){function t(e,n,r,t,o){this.children=[],this.sourceContents={},this.line=null==e?null:e,this.column=null==n?null:n,this.source=null==r?null:r,this.name=null==o?null:o,this[u]=!0,null!=t&&this.add(t)}var o=r(1).SourceMapGenerator,i=r(4),s=/(\r?\n)/,a=10,u="$$$isSourceNode$$$";t.fromStringWithSourceMap=function(e,n,r){function o(e,n){if(null===e||void 0===e.source)a.add(n);else{var o=r?i.join(r,e.source):e.source;a.add(new t(e.originalLine,e.originalColumn,o,n,e.name))}}var a=new t,u=e.split(s),l=function(){var e=u.shift(),n=u.shift()||"";return e+n},c=1,g=0,p=null;return n.eachMapping(function(e){if(null!==p){if(!(c0&&(p&&o(p,l()),a.add(u.join(""))),n.sources.forEach(function(e){var t=n.sourceContentFor(e);null!=t&&(null!=r&&(e=i.join(r,e)),a.setSourceContent(e,t))}),a},t.prototype.add=function(e){if(Array.isArray(e))e.forEach(function(e){this.add(e)},this);else{if(!e[u]&&"string"!=typeof e)throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+e);e&&this.children.push(e)}return this},t.prototype.prepend=function(e){if(Array.isArray(e))for(var n=e.length-1;n>=0;n--)this.prepend(e[n]);else{if(!e[u]&&"string"!=typeof e)throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+e);this.children.unshift(e)}return this},t.prototype.walk=function(e){for(var n,r=0,t=this.children.length;t>r;r++)n=this.children[r],n[u]?n.walk(e):""!==n&&e(n,{source:this.source,line:this.line,column:this.column,name:this.name})},t.prototype.join=function(e){var n,r,t=this.children.length;if(t>0){for(n=[],r=0;t-1>r;r++)n.push(this.children[r]),n.push(e);n.push(this.children[r]),this.children=n}return this},t.prototype.replaceRight=function(e,n){var r=this.children[this.children.length-1];return r[u]?r.replaceRight(e,n):"string"==typeof r?this.children[this.children.length-1]=r.replace(e,n):this.children.push("".replace(e,n)),this},t.prototype.setSourceContent=function(e,n){this.sourceContents[i.toSetString(e)]=n},t.prototype.walkSourceContents=function(e){for(var n=0,r=this.children.length;r>n;n++)this.children[n][u]&&this.children[n].walkSourceContents(e);for(var t=Object.keys(this.sourceContents),n=0,r=t.length;r>n;n++)e(i.fromSetString(t[n]),this.sourceContents[t[n]])},t.prototype.toString=function(){var e="";return this.walk(function(n){e+=n}),e},t.prototype.toStringWithSourceMap=function(e){var n={code:"",line:1,column:0},r=new o(e),t=!1,i=null,s=null,u=null,l=null;return this.walk(function(e,o){n.code+=e,null!==o.source&&null!==o.line&&null!==o.column?((i!==o.source||s!==o.line||u!==o.column||l!==o.name)&&r.addMapping({source:o.source,original:{line:o.line,column:o.column},generated:{line:n.line,column:n.column},name:o.name}),i=o.source,s=o.line,u=o.column,l=o.name,t=!0):t&&(r.addMapping({generated:{line:n.line,column:n.column}}),i=null,t=!1);for(var c=0,g=e.length;g>c;c++)e.charCodeAt(c)===a?(n.line++,n.column=0,c+1===g?(i=null,t=!1):t&&r.addMapping({source:o.source,original:{line:o.line,column:o.column},generated:{line:n.line,column:n.column},name:o.name})):n.column++}),this.walkSourceContents(function(e,n){r.setSourceContent(e,n)}),{code:n.code,map:r}},n.SourceNode=t}])});
+//# sourceMappingURL=source-map.min.js.map
\ No newline at end of file
diff --git a/node_modules/babel-generator/node_modules/source-map/dist/source-map.min.js.map b/node_modules/babel-generator/node_modules/source-map/dist/source-map.min.js.map
new file mode 100644
index 0000000..8470bde
--- /dev/null
+++ b/node_modules/babel-generator/node_modules/source-map/dist/source-map.min.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///source-map.min.js","webpack:///webpack/bootstrap a7d787c028005295f8d2","webpack:///./source-map.js","webpack:///./lib/source-map-generator.js","webpack:///./lib/base64-vlq.js","webpack:///./lib/base64.js","webpack:///./lib/util.js","webpack:///./lib/array-set.js","webpack:///./lib/mapping-list.js","webpack:///./lib/source-map-consumer.js","webpack:///./lib/binary-search.js","webpack:///./lib/quick-sort.js","webpack:///./lib/source-node.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","SourceMapGenerator","SourceMapConsumer","SourceNode","aArgs","_file","util","getArg","_sourceRoot","_skipValidation","_sources","ArraySet","_names","_mappings","MappingList","_sourcesContents","base64VLQ","prototype","_version","fromSourceMap","aSourceMapConsumer","sourceRoot","generator","file","eachMapping","mapping","newMapping","generated","line","generatedLine","column","generatedColumn","source","relative","original","originalLine","originalColumn","name","addMapping","sources","forEach","sourceFile","content","sourceContentFor","setSourceContent","_validateMapping","has","add","aSourceFile","aSourceContent","toSetString","Object","keys","length","applySourceMap","aSourceMapPath","Error","newSources","newNames","unsortedForEach","originalPositionFor","join","aGenerated","aOriginal","aSource","aName","JSON","stringify","_serializeMappings","nameIdx","sourceIdx","previousGeneratedColumn","previousGeneratedLine","previousOriginalColumn","previousOriginalLine","previousName","previousSource","result","mappings","toArray","i","len","compareByGeneratedPositionsInflated","encode","indexOf","_generateSourcesContent","aSources","aSourceRoot","map","key","hasOwnProperty","toJSON","version","names","sourcesContent","toString","toVLQSigned","aValue","fromVLQSigned","isNegative","shifted","base64","VLQ_BASE_SHIFT","VLQ_BASE","VLQ_BASE_MASK","VLQ_CONTINUATION_BIT","digit","encoded","vlq","decode","aStr","aIndex","aOutParam","continuation","strLen","shift","charCodeAt","charAt","value","rest","intToCharMap","split","number","TypeError","charCode","bigA","bigZ","littleA","littleZ","zero","nine","plus","slash","littleOffset","numberOffset","aDefaultValue","arguments","urlParse","aUrl","match","urlRegexp","scheme","auth","host","port","path","urlGenerate","aParsedUrl","url","normalize","aPath","part","isAbsolute","parts","up","splice","aRoot","aPathUrl","aRootUrl","dataUrlRegexp","joined","replace","level","index","lastIndexOf","slice","Array","substr","fromSetString","compareByOriginalPositions","mappingA","mappingB","onlyCompareOriginal","cmp","compareByGeneratedPositionsDeflated","onlyCompareGenerated","strcmp","aStr1","aStr2","_array","_set","fromArray","aArray","aAllowDuplicates","set","size","getOwnPropertyNames","sStr","isDuplicate","idx","push","at","aIdx","generatedPositionAfter","lineA","lineB","columnA","columnB","_sorted","_last","aCallback","aThisArg","aMapping","sort","aSourceMap","sourceMap","parse","sections","IndexedSourceMapConsumer","BasicSourceMapConsumer","Mapping","lastOffset","_sections","s","offset","offsetLine","offsetColumn","generatedOffset","consumer","binarySearch","quickSort","__generatedMappings","defineProperty","get","_parseMappings","__originalMappings","_charIsMappingSeparator","GENERATED_ORDER","ORIGINAL_ORDER","GREATEST_LOWER_BOUND","LEAST_UPPER_BOUND","aContext","aOrder","context","order","_generatedMappings","_originalMappings","allGeneratedPositionsFor","needle","_findMapping","undefined","lastColumn","create","smc","generatedMappings","destGeneratedMappings","destOriginalMappings","srcMapping","destMapping","str","segment","end","cachedSegments","temp","originalMappings","aNeedle","aMappings","aLineName","aColumnName","aComparator","aBias","search","computeColumnSpans","nextMapping","lastGeneratedColumn","Infinity","hasContentsOfAllSources","some","sc","nullOnMissing","fileUriAbsPath","generatedPositionFor","constructor","j","sectionIndex","section","bias","every","generatedPosition","ret","sectionMappings","adjustedMapping","recursiveSearch","aLow","aHigh","aHaystack","aCompare","mid","Math","floor","swap","ary","x","y","randomIntInRange","low","high","round","random","doQuickSort","comparator","r","pivotIndex","pivot","q","aLine","aColumn","aChunks","children","sourceContents","isSourceNode","REGEX_NEWLINE","NEWLINE_CODE","fromStringWithSourceMap","aGeneratedCode","aRelativePath","addMappingWithCode","code","node","remainingLines","shiftNextLine","lineContents","newLine","lastGeneratedLine","lastMapping","nextLine","aChunk","isArray","chunk","prepend","unshift","walk","aFn","aSep","newChildren","replaceRight","aPattern","aReplacement","lastChild","walkSourceContents","toStringWithSourceMap","sourceMappingActive","lastOriginalSource","lastOriginalLine","lastOriginalColumn","lastOriginalName","sourceContent"],"mappings":"CAAA,SAAAA,EAAAC,GACA,gBAAAC,UAAA,gBAAAC,QACAA,OAAAD,QAAAD,IACA,kBAAAG,gBAAAC,IACAD,UAAAH,GACA,gBAAAC,SACAA,QAAA,UAAAD,IAEAD,EAAA,UAAAC,KACCK,KAAA,WACD,MCAgB,UAAUC,GCN1B,QAAAC,GAAAC,GAGA,GAAAC,EAAAD,GACA,MAAAC,GAAAD,GAAAP,OAGA,IAAAC,GAAAO,EAAAD,IACAP,WACAS,GAAAF,EACAG,QAAA,EAUA,OANAL,GAAAE,GAAAI,KAAAV,EAAAD,QAAAC,IAAAD,QAAAM,GAGAL,EAAAS,QAAA,EAGAT,EAAAD,QAvBA,GAAAQ,KAqCA,OATAF,GAAAM,EAAAP,EAGAC,EAAAO,EAAAL,EAGAF,EAAAQ,EAAA,GAGAR,EAAA,KDgBM,SAASL,EAAQD,EAASM,GEjDhCN,EAAAe,mBAAAT,EAAA,GAAAS,mBACAf,EAAAgB,kBAAAV,EAAA,GAAAU,kBACAhB,EAAAiB,WAAAX,EAAA,IAAAW,YF6DM,SAAShB,EAAQD,EAASM,GGhDhC,QAAAS,GAAAG,GACAA,IACAA,MAEAd,KAAAe,MAAAC,EAAAC,OAAAH,EAAA,aACAd,KAAAkB,YAAAF,EAAAC,OAAAH,EAAA,mBACAd,KAAAmB,gBAAAH,EAAAC,OAAAH,EAAA,qBACAd,KAAAoB,SAAA,GAAAC,GACArB,KAAAsB,OAAA,GAAAD,GACArB,KAAAuB,UAAA,GAAAC,GACAxB,KAAAyB,iBAAA,KAvBA,GAAAC,GAAAxB,EAAA,GACAc,EAAAd,EAAA,GACAmB,EAAAnB,EAAA,GAAAmB,SACAG,EAAAtB,EAAA,GAAAsB,WAuBAb,GAAAgB,UAAAC,SAAA,EAOAjB,EAAAkB,cACA,SAAAC,GACA,GAAAC,GAAAD,EAAAC,WACAC,EAAA,GAAArB,IACAsB,KAAAH,EAAAG,KACAF,cAkCA,OAhCAD,GAAAI,YAAA,SAAAC,GACA,GAAAC,IACAC,WACAC,KAAAH,EAAAI,cACAC,OAAAL,EAAAM,iBAIA,OAAAN,EAAAO,SACAN,EAAAM,OAAAP,EAAAO,OACA,MAAAX,IACAK,EAAAM,OAAA1B,EAAA2B,SAAAZ,EAAAK,EAAAM,SAGAN,EAAAQ,UACAN,KAAAH,EAAAU,aACAL,OAAAL,EAAAW,gBAGA,MAAAX,EAAAY,OACAX,EAAAW,KAAAZ,EAAAY,OAIAf,EAAAgB,WAAAZ,KAEAN,EAAAmB,QAAAC,QAAA,SAAAC,GACA,GAAAC,GAAAtB,EAAAuB,iBAAAF,EACA,OAAAC,GACApB,EAAAsB,iBAAAH,EAAAC,KAGApB,GAaArB,EAAAgB,UAAAqB,WACA,SAAAlC,GACA,GAAAuB,GAAArB,EAAAC,OAAAH,EAAA,aACA8B,EAAA5B,EAAAC,OAAAH,EAAA,iBACA4B,EAAA1B,EAAAC,OAAAH,EAAA,eACAiC,EAAA/B,EAAAC,OAAAH,EAAA,YAEAd,MAAAmB,iBACAnB,KAAAuD,iBAAAlB,EAAAO,EAAAF,EAAAK,GAGA,MAAAL,GAAA1C,KAAAoB,SAAAoC,IAAAd,IACA1C,KAAAoB,SAAAqC,IAAAf,GAGA,MAAAK,GAAA/C,KAAAsB,OAAAkC,IAAAT,IACA/C,KAAAsB,OAAAmC,IAAAV,GAGA/C,KAAAuB,UAAAkC,KACAlB,cAAAF,EAAAC,KACAG,gBAAAJ,EAAAG,OACAK,aAAA,MAAAD,KAAAN,KACAQ,eAAA,MAAAF,KAAAJ,OACAE,SACAK,UAOApC,EAAAgB,UAAA2B,iBACA,SAAAI,EAAAC,GACA,GAAAjB,GAAAgB,CACA,OAAA1D,KAAAkB,cACAwB,EAAA1B,EAAA2B,SAAA3C,KAAAkB,YAAAwB,IAGA,MAAAiB,GAGA3D,KAAAyB,mBACAzB,KAAAyB,qBAEAzB,KAAAyB,iBAAAT,EAAA4C,YAAAlB,IAAAiB,GACO3D,KAAAyB,yBAGPzB,MAAAyB,iBAAAT,EAAA4C,YAAAlB,IACA,IAAAmB,OAAAC,KAAA9D,KAAAyB,kBAAAsC,SACA/D,KAAAyB,iBAAA,QAqBAd,EAAAgB,UAAAqC,eACA,SAAAlC,EAAA4B,EAAAO,GACA,GAAAd,GAAAO,CAEA,UAAAA,EAAA,CACA,SAAA5B,EAAAG,KACA,SAAAiC,OACA,gJAIAf,GAAArB,EAAAG,KAEA,GAAAF,GAAA/B,KAAAkB,WAEA,OAAAa,IACAoB,EAAAnC,EAAA2B,SAAAZ,EAAAoB,GAIA,IAAAgB,GAAA,GAAA9C,GACA+C,EAAA,GAAA/C,EAGArB,MAAAuB,UAAA8C,gBAAA,SAAAlC,GACA,GAAAA,EAAAO,SAAAS,GAAA,MAAAhB,EAAAU,aAAA,CAEA,GAAAD,GAAAd,EAAAwC,qBACAhC,KAAAH,EAAAU,aACAL,OAAAL,EAAAW,gBAEA,OAAAF,EAAAF,SAEAP,EAAAO,OAAAE,EAAAF,OACA,MAAAuB,IACA9B,EAAAO,OAAA1B,EAAAuD,KAAAN,EAAA9B,EAAAO,SAEA,MAAAX,IACAI,EAAAO,OAAA1B,EAAA2B,SAAAZ,EAAAI,EAAAO,SAEAP,EAAAU,aAAAD,EAAAN,KACAH,EAAAW,eAAAF,EAAAJ,OACA,MAAAI,EAAAG,OACAZ,EAAAY,KAAAH,EAAAG,OAKA,GAAAL,GAAAP,EAAAO,MACA,OAAAA,GAAAyB,EAAAX,IAAAd,IACAyB,EAAAV,IAAAf,EAGA,IAAAK,GAAAZ,EAAAY,IACA,OAAAA,GAAAqB,EAAAZ,IAAAT,IACAqB,EAAAX,IAAAV,IAGO/C,MACPA,KAAAoB,SAAA+C,EACAnE,KAAAsB,OAAA8C,EAGAtC,EAAAmB,QAAAC,QAAA,SAAAC,GACA,GAAAC,GAAAtB,EAAAuB,iBAAAF,EACA,OAAAC,IACA,MAAAa,IACAd,EAAAnC,EAAAuD,KAAAN,EAAAd,IAEA,MAAApB,IACAoB,EAAAnC,EAAA2B,SAAAZ,EAAAoB,IAEAnD,KAAAsD,iBAAAH,EAAAC,KAEOpD,OAcPW,EAAAgB,UAAA4B,iBACA,SAAAiB,EAAAC,EAAAC,EACAC,GACA,MAAAH,GAAA,QAAAA,IAAA,UAAAA,IACAA,EAAAlC,KAAA,GAAAkC,EAAAhC,QAAA,IACAiC,GAAAC,GAAAC,MAIAH,GAAA,QAAAA,IAAA,UAAAA,IACAC,GAAA,QAAAA,IAAA,UAAAA,IACAD,EAAAlC,KAAA,GAAAkC,EAAAhC,QAAA,GACAiC,EAAAnC,KAAA,GAAAmC,EAAAjC,QAAA,GACAkC,GAKA,SAAAR,OAAA,oBAAAU,KAAAC,WACAxC,UAAAmC,EACA9B,OAAAgC,EACA9B,SAAA6B,EACA1B,KAAA4B,MASAhE,EAAAgB,UAAAmD,mBACA,WAaA,OALA3C,GACA4C,EACAC,EATAC,EAAA,EACAC,EAAA,EACAC,EAAA,EACAC,EAAA,EACAC,EAAA,EACAC,EAAA,EACAC,EAAA,GAKAC,EAAAxF,KAAAuB,UAAAkE,UACAC,EAAA,EAAAC,EAAAH,EAAAzB,OAA4C4B,EAAAD,EAASA,IAAA,CAGrD,GAFAvD,EAAAqD,EAAAE,GAEAvD,EAAAI,gBAAA2C,EAEA,IADAD,EAAA,EACA9C,EAAAI,gBAAA2C,GACAK,GAAA,IACAL,QAIA,IAAAQ,EAAA,GACA,IAAA1E,EAAA4E,oCAAAzD,EAAAqD,EAAAE,EAAA,IACA,QAEAH,IAAA,IAIAA,GAAA7D,EAAAmE,OAAA1D,EAAAM,gBACAwC,GACAA,EAAA9C,EAAAM,gBAEA,MAAAN,EAAAO,SACAsC,EAAAhF,KAAAoB,SAAA0E,QAAA3D,EAAAO,QACA6C,GAAA7D,EAAAmE,OAAAb,EAAAM,GACAA,EAAAN,EAGAO,GAAA7D,EAAAmE,OAAA1D,EAAAU,aAAA,EACAuC,GACAA,EAAAjD,EAAAU,aAAA,EAEA0C,GAAA7D,EAAAmE,OAAA1D,EAAAW,eACAqC,GACAA,EAAAhD,EAAAW,eAEA,MAAAX,EAAAY,OACAgC,EAAA/E,KAAAsB,OAAAwE,QAAA3D,EAAAY,MACAwC,GAAA7D,EAAAmE,OAAAd,EAAAM,GACAA,EAAAN,IAKA,MAAAQ,IAGA5E,EAAAgB,UAAAoE,wBACA,SAAAC,EAAAC,GACA,MAAAD,GAAAE,IAAA,SAAAxD,GACA,IAAA1C,KAAAyB,iBACA,WAEA,OAAAwE,IACAvD,EAAA1B,EAAA2B,SAAAsD,EAAAvD,GAEA,IAAAyD,GAAAnF,EAAA4C,YAAAlB,EACA,OAAAmB,QAAAlC,UAAAyE,eAAA7F,KAAAP,KAAAyB,iBACA0E,GACAnG,KAAAyB,iBAAA0E,GACA,MACOnG,OAMPW,EAAAgB,UAAA0E,OACA,WACA,GAAAH,IACAI,QAAAtG,KAAA4B,SACAqB,QAAAjD,KAAAoB,SAAAqE,UACAc,MAAAvG,KAAAsB,OAAAmE,UACAD,SAAAxF,KAAA8E,qBAYA,OAVA,OAAA9E,KAAAe,QACAmF,EAAAjE,KAAAjC,KAAAe,OAEA,MAAAf,KAAAkB,cACAgF,EAAAnE,WAAA/B,KAAAkB,aAEAlB,KAAAyB,mBACAyE,EAAAM,eAAAxG,KAAA+F,wBAAAG,EAAAjD,QAAAiD,EAAAnE,aAGAmE,GAMAvF,EAAAgB,UAAA8E,SACA,WACA,MAAA7B,MAAAC,UAAA7E,KAAAqG,WAGAzG,EAAAe,sBH4EM,SAASd,EAAQD,EAASM,GIlZhC,QAAAwG,GAAAC,GACA,SAAAA,IACAA,GAAA,MACAA,GAAA,KASA,QAAAC,GAAAD,GACA,GAAAE,GAAA,OAAAF,GACAG,EAAAH,GAAA,CACA,OAAAE,IACAC,EACAA,EAhDA,GAAAC,GAAA7G,EAAA,GAcA8G,EAAA,EAGAC,EAAA,GAAAD,EAGAE,EAAAD,EAAA,EAGAE,EAAAF,CA+BArH,GAAAiG,OAAA,SAAAc,GACA,GACAS,GADAC,EAAA,GAGAC,EAAAZ,EAAAC,EAEA,GACAS,GAAAE,EAAAJ,EACAI,KAAAN,EACAM,EAAA,IAGAF,GAAAD,GAEAE,GAAAN,EAAAlB,OAAAuB,SACKE,EAAA,EAEL,OAAAD,IAOAzH,EAAA2H,OAAA,SAAAC,EAAAC,EAAAC,GACA,GAGAC,GAAAP,EAHAQ,EAAAJ,EAAAzD,OACAwB,EAAA,EACAsC,EAAA,CAGA,IACA,GAAAJ,GAAAG,EACA,SAAA1D,OAAA,6CAIA,IADAkD,EAAAL,EAAAQ,OAAAC,EAAAM,WAAAL,MACA,KAAAL,EACA,SAAAlD,OAAA,yBAAAsD,EAAAO,OAAAN,EAAA,GAGAE,MAAAP,EAAAD,GACAC,GAAAF,EACA3B,GAAA6B,GAAAS,EACAA,GAAAb,QACKW,EAELD,GAAAM,MAAApB,EAAArB,GACAmC,EAAAO,KAAAR,IJ+dM,SAAS5H,EAAQD,GKlmBvB,GAAAsI,GAAA,mEAAAC,MAAA,GAKAvI,GAAAiG,OAAA,SAAAuC,GACA,GAAAA,GAAA,GAAAA,EAAAF,EAAAnE,OACA,MAAAmE,GAAAE,EAEA,UAAAC,WAAA,6BAAAD,IAOAxI,EAAA2H,OAAA,SAAAe,GACA,GAAAC,GAAA,GACAC,EAAA,GAEAC,EAAA,GACAC,EAAA,IAEAC,EAAA,GACAC,EAAA,GAEAC,EAAA,GACAC,EAAA,GAEAC,EAAA,GACAC,EAAA,EAGA,OAAAV,IAAAC,GAAAC,GAAAF,EACAA,EAAAC,EAIAD,GAAAG,GAAAC,GAAAJ,EACAA,EAAAG,EAAAM,EAIAT,GAAAK,GAAAC,GAAAN,EACAA,EAAAK,EAAAK,EAIAV,GAAAO,EACA,GAIAP,GAAAQ,EACA,GAIA,KLknBM,SAASjJ,EAAQD,GMlqBvB,QAAAqB,GAAAH,EAAA6D,EAAAsE,GACA,GAAAtE,IAAA7D,GACA,MAAAA,GAAA6D,EACK,QAAAuE,UAAAnF,OACL,MAAAkF,EAEA,UAAA/E,OAAA,IAAAS,EAAA,6BAQA,QAAAwE,GAAAC,GACA,GAAAC,GAAAD,EAAAC,MAAAC,EACA,OAAAD,IAIAE,OAAAF,EAAA,GACAG,KAAAH,EAAA,GACAI,KAAAJ,EAAA,GACAK,KAAAL,EAAA,GACAM,KAAAN,EAAA,IAPA,KAYA,QAAAO,GAAAC,GACA,GAAAC,GAAA,EAiBA,OAhBAD,GAAAN,SACAO,GAAAD,EAAAN,OAAA,KAEAO,GAAA,KACAD,EAAAL,OACAM,GAAAD,EAAAL,KAAA,KAEAK,EAAAJ,OACAK,GAAAD,EAAAJ,MAEAI,EAAAH,OACAI,GAAA,IAAAD,EAAAH,MAEAG,EAAAF,OACAG,GAAAD,EAAAF,MAEAG,EAeA,QAAAC,GAAAC,GACA,GAAAL,GAAAK,EACAF,EAAAX,EAAAa,EACA,IAAAF,EAAA,CACA,IAAAA,EAAAH,KACA,MAAAK,EAEAL,GAAAG,EAAAH,KAKA,OAAAM,GAHAC,EAAAtK,EAAAsK,WAAAP,GAEAQ,EAAAR,EAAAxB,MAAA,OACAiC,EAAA,EAAA1E,EAAAyE,EAAApG,OAAA,EAAgD2B,GAAA,EAAQA,IACxDuE,EAAAE,EAAAzE,GACA,MAAAuE,EACAE,EAAAE,OAAA3E,EAAA,GACO,OAAAuE,EACPG,IACOA,EAAA,IACP,KAAAH,GAIAE,EAAAE,OAAA3E,EAAA,EAAA0E,GACAA,EAAA,IAEAD,EAAAE,OAAA3E,EAAA,GACA0E,KAUA,OANAT,GAAAQ,EAAA5F,KAAA,KAEA,KAAAoF,IACAA,EAAAO,EAAA,SAGAJ,GACAA,EAAAH,OACAC,EAAAE,IAEAH,EAoBA,QAAApF,GAAA+F,EAAAN,GACA,KAAAM,IACAA,EAAA,KAEA,KAAAN,IACAA,EAAA,IAEA,IAAAO,GAAApB,EAAAa,GACAQ,EAAArB,EAAAmB,EAMA,IALAE,IACAF,EAAAE,EAAAb,MAAA,KAIAY,MAAAhB,OAIA,MAHAiB,KACAD,EAAAhB,OAAAiB,EAAAjB,QAEAK,EAAAW,EAGA,IAAAA,GAAAP,EAAAX,MAAAoB,GACA,MAAAT,EAIA,IAAAQ,MAAAf,OAAAe,EAAAb,KAEA,MADAa,GAAAf,KAAAO,EACAJ,EAAAY,EAGA,IAAAE,GAAA,MAAAV,EAAAjC,OAAA,GACAiC,EACAD,EAAAO,EAAAK,QAAA,eAAAX,EAEA,OAAAQ,IACAA,EAAAb,KAAAe,EACAd,EAAAY,IAEAE,EAcA,QAAA/H,GAAA2H,EAAAN,GACA,KAAAM,IACAA,EAAA,KAGAA,IAAAK,QAAA,SAOA,KADA,GAAAC,GAAA,EACA,IAAAZ,EAAAlE,QAAAwE,EAAA,OACA,GAAAO,GAAAP,EAAAQ,YAAA,IACA,MAAAD,EACA,MAAAb,EAOA,IADAM,IAAAS,MAAA,EAAAF,GACAP,EAAAjB,MAAA,qBACA,MAAAW,KAGAY,EAIA,MAAAI,OAAAJ,EAAA,GAAArG,KAAA,OAAAyF,EAAAiB,OAAAX,EAAAvG,OAAA,GAaA,QAAAH,GAAA4D,GACA,UAAAA,EAIA,QAAA0D,GAAA1D,GACA,MAAAA,GAAAyD,OAAA,GAYA,QAAAE,GAAAC,EAAAC,EAAAC,GACA,GAAAC,GAAAH,EAAA1I,OAAA2I,EAAA3I,MACA,YAAA6I,EACAA,GAGAA,EAAAH,EAAAvI,aAAAwI,EAAAxI,aACA,IAAA0I,EACAA,GAGAA,EAAAH,EAAAtI,eAAAuI,EAAAvI,eACA,IAAAyI,GAAAD,EACAC,GAGAA,EAAAH,EAAA3I,gBAAA4I,EAAA5I,gBACA,IAAA8I,EACAA,GAGAA,EAAAH,EAAA7I,cAAA8I,EAAA9I,cACA,IAAAgJ,EACAA,EAGAH,EAAArI,KAAAsI,EAAAtI,SAaA,QAAAyI,GAAAJ,EAAAC,EAAAI,GACA,GAAAF,GAAAH,EAAA7I,cAAA8I,EAAA9I,aACA,YAAAgJ,EACAA,GAGAA,EAAAH,EAAA3I,gBAAA4I,EAAA5I,gBACA,IAAA8I,GAAAE,EACAF,GAGAA,EAAAH,EAAA1I,OAAA2I,EAAA3I,OACA,IAAA6I,EACAA,GAGAA,EAAAH,EAAAvI,aAAAwI,EAAAxI,aACA,IAAA0I,EACAA,GAGAA,EAAAH,EAAAtI,eAAAuI,EAAAvI,eACA,IAAAyI,EACAA,EAGAH,EAAArI,KAAAsI,EAAAtI,SAIA,QAAA2I,GAAAC,EAAAC,GACA,MAAAD,KAAAC,EACA,EAGAD,EAAAC,EACA,EAGA,GAOA,QAAAhG,GAAAwF,EAAAC,GACA,GAAAE,GAAAH,EAAA7I,cAAA8I,EAAA9I,aACA,YAAAgJ,EACAA,GAGAA,EAAAH,EAAA3I,gBAAA4I,EAAA5I,gBACA,IAAA8I,EACAA,GAGAA,EAAAG,EAAAN,EAAA1I,OAAA2I,EAAA3I,QACA,IAAA6I,EACAA,GAGAA,EAAAH,EAAAvI,aAAAwI,EAAAxI,aACA,IAAA0I,EACAA,GAGAA,EAAAH,EAAAtI,eAAAuI,EAAAvI,eACA,IAAAyI,EACAA,EAGAG,EAAAN,EAAArI,KAAAsI,EAAAtI,UAnVAnD,EAAAqB,QAEA,IAAAqI,GAAA,iEACAmB,EAAA,eAeA7K,GAAAuJ,WAsBAvJ,EAAAgK,cAwDAhK,EAAAmK,YA2DAnK,EAAA2E,OAEA3E,EAAAsK,WAAA,SAAAF,GACA,YAAAA,EAAAjC,OAAA,MAAAiC,EAAAX,MAAAC,IAyCA1J,EAAA+C,WAcA/C,EAAAgE,cAKAhE,EAAAsL,gBAsCAtL,EAAAuL,6BAuCAvL,EAAA4L,sCA8CA5L,EAAAgG,uCN2rBM,SAAS/F,EAAQD,EAASM,GO3hChC,QAAAmB,KACArB,KAAA6L,UACA7L,KAAA8L,QAVA,GAAA9K,GAAAd,EAAA,EAgBAmB,GAAA0K,UAAA,SAAAC,EAAAC,GAEA,OADAC,GAAA,GAAA7K,GACAqE,EAAA,EAAAC,EAAAqG,EAAAjI,OAAwC4B,EAAAD,EAASA,IACjDwG,EAAAzI,IAAAuI,EAAAtG,GAAAuG,EAEA,OAAAC,IASA7K,EAAAM,UAAAwK,KAAA,WACA,MAAAtI,QAAAuI,oBAAApM,KAAA8L,MAAA/H,QAQA1C,EAAAM,UAAA8B,IAAA,SAAA+D,EAAAyE,GACA,GAAAI,GAAArL,EAAA4C,YAAA4D,GACA8E,EAAAtM,KAAA8L,KAAA1F,eAAAiG,GACAE,EAAAvM,KAAA6L,OAAA9H,SACAuI,GAAAL,IACAjM,KAAA6L,OAAAW,KAAAhF,GAEA8E,IACAtM,KAAA8L,KAAAO,GAAAE,IASAlL,EAAAM,UAAA6B,IAAA,SAAAgE,GACA,GAAA6E,GAAArL,EAAA4C,YAAA4D,EACA,OAAAxH,MAAA8L,KAAA1F,eAAAiG,IAQAhL,EAAAM,UAAAmE,QAAA,SAAA0B,GACA,GAAA6E,GAAArL,EAAA4C,YAAA4D,EACA,IAAAxH,KAAA8L,KAAA1F,eAAAiG,GACA,MAAArM,MAAA8L,KAAAO,EAEA,UAAAnI,OAAA,IAAAsD,EAAA,yBAQAnG,EAAAM,UAAA8K,GAAA,SAAAC,GACA,GAAAA,GAAA,GAAAA,EAAA1M,KAAA6L,OAAA9H,OACA,MAAA/D,MAAA6L,OAAAa,EAEA,UAAAxI,OAAA,yBAAAwI,IAQArL,EAAAM,UAAA8D,QAAA,WACA,MAAAzF,MAAA6L,OAAAd,SAGAnL,EAAAyB,YPkjCM,SAASxB,EAAQD,EAASM,GQ3oChC,QAAAyM,GAAAvB,EAAAC,GAEA,GAAAuB,GAAAxB,EAAA7I,cACAsK,EAAAxB,EAAA9I,cACAuK,EAAA1B,EAAA3I,gBACAsK,EAAA1B,EAAA5I,eACA,OAAAoK,GAAAD,GAAAC,GAAAD,GAAAG,GAAAD,GACA9L,EAAA4E,oCAAAwF,EAAAC,IAAA,EAQA,QAAA7J,KACAxB,KAAA6L,UACA7L,KAAAgN,SAAA,EAEAhN,KAAAiN,OAAkB1K,cAAA,GAAAE,gBAAA,GAzBlB,GAAAzB,GAAAd,EAAA,EAkCAsB,GAAAG,UAAA0C,gBACA,SAAA6I,EAAAC,GACAnN,KAAA6L,OAAA3I,QAAAgK,EAAAC,IAQA3L,EAAAG,UAAA8B,IAAA,SAAA2J,GACAT,EAAA3M,KAAAiN,MAAAG,IACApN,KAAAiN,MAAAG,EACApN,KAAA6L,OAAAW,KAAAY,KAEApN,KAAAgN,SAAA,EACAhN,KAAA6L,OAAAW,KAAAY,KAaA5L,EAAAG,UAAA8D,QAAA,WAKA,MAJAzF,MAAAgN,UACAhN,KAAA6L,OAAAwB,KAAArM,EAAA4E,qCACA5F,KAAAgN,SAAA,GAEAhN,KAAA6L,QAGAjM,EAAA4B,eRgqCM,SAAS3B,EAAQD,EAASM,GSjuChC,QAAAU,GAAA0M,GACA,GAAAC,GAAAD,CAKA,OAJA,gBAAAA,KACAC,EAAA3I,KAAA4I,MAAAF,EAAA3C,QAAA,WAAwD,MAGxD,MAAA4C,EAAAE,SACA,GAAAC,GAAAH,GACA,GAAAI,GAAAJ,GAoQA,QAAAI,GAAAL,GACA,GAAAC,GAAAD,CACA,iBAAAA,KACAC,EAAA3I,KAAA4I,MAAAF,EAAA3C,QAAA,WAAwD,KAGxD,IAAArE,GAAAtF,EAAAC,OAAAsM,EAAA,WACAtK,EAAAjC,EAAAC,OAAAsM,EAAA,WAGAhH,EAAAvF,EAAAC,OAAAsM,EAAA,YACAxL,EAAAf,EAAAC,OAAAsM,EAAA,mBACA/G,EAAAxF,EAAAC,OAAAsM,EAAA,uBACA/H,EAAAxE,EAAAC,OAAAsM,EAAA,YACAtL,EAAAjB,EAAAC,OAAAsM,EAAA,YAIA,IAAAjH,GAAAtG,KAAA4B,SACA,SAAAsC,OAAA,wBAAAoC,EAGArD,KAIAiD,IAAAlF,EAAA+I,WAKA7D,IAAA,SAAAxD,GACA,MAAAX,IAAAf,EAAAkJ,WAAAnI,IAAAf,EAAAkJ,WAAAxH,GACA1B,EAAA2B,SAAAZ,EAAAW,GACAA,IAOA1C,KAAAsB,OAAAD,EAAA0K,UAAAxF,GAAA,GACAvG,KAAAoB,SAAAC,EAAA0K,UAAA9I,GAAA,GAEAjD,KAAA+B,aACA/B,KAAAwG,iBACAxG,KAAAuB,UAAAiE,EACAxF,KAAAiC,OA8EA,QAAA2L,KACA5N,KAAAuC,cAAA,EACAvC,KAAAyC,gBAAA,EACAzC,KAAA0C,OAAA,KACA1C,KAAA6C,aAAA,KACA7C,KAAA8C,eAAA,KACA9C,KAAA+C,KAAA,KAyZA,QAAA2K,GAAAJ,GACA,GAAAC,GAAAD,CACA,iBAAAA,KACAC,EAAA3I,KAAA4I,MAAAF,EAAA3C,QAAA,WAAwD,KAGxD,IAAArE,GAAAtF,EAAAC,OAAAsM,EAAA,WACAE,EAAAzM,EAAAC,OAAAsM,EAAA,WAEA,IAAAjH,GAAAtG,KAAA4B,SACA,SAAAsC,OAAA,wBAAAoC,EAGAtG,MAAAoB,SAAA,GAAAC,GACArB,KAAAsB,OAAA,GAAAD,EAEA,IAAAwM,IACAvL,KAAA,GACAE,OAAA,EAEAxC,MAAA8N,UAAAL,EAAAvH,IAAA,SAAA6H,GACA,GAAAA,EAAAjE,IAGA,SAAA5F,OAAA,qDAEA,IAAA8J,GAAAhN,EAAAC,OAAA8M,EAAA,UACAE,EAAAjN,EAAAC,OAAA+M,EAAA,QACAE,EAAAlN,EAAAC,OAAA+M,EAAA,SAEA,IAAAC,EAAAJ,EAAAvL,MACA2L,IAAAJ,EAAAvL,MAAA4L,EAAAL,EAAArL,OACA,SAAA0B,OAAA,uDAIA,OAFA2J,GAAAG,GAGAG,iBAGA5L,cAAA0L,EAAA,EACAxL,gBAAAyL,EAAA,GAEAE,SAAA,GAAAxN,GAAAI,EAAAC,OAAA8M,EAAA,WAz1BA,GAAA/M,GAAAd,EAAA,GACAmO,EAAAnO,EAAA,GACAmB,EAAAnB,EAAA,GAAAmB,SACAK,EAAAxB,EAAA,GACAoO,EAAApO,EAAA,GAAAoO,SAaA1N,GAAAiB,cAAA,SAAAyL,GACA,MAAAK,GAAA9L,cAAAyL,IAMA1M,EAAAe,UAAAC,SAAA,EAgCAhB,EAAAe,UAAA4M,oBAAA,KACA1K,OAAA2K,eAAA5N,EAAAe,UAAA,sBACA8M,IAAA,WAKA,MAJAzO,MAAAuO,qBACAvO,KAAA0O,eAAA1O,KAAAuB,UAAAvB,KAAA+B,YAGA/B,KAAAuO,uBAIA3N,EAAAe,UAAAgN,mBAAA,KACA9K,OAAA2K,eAAA5N,EAAAe,UAAA,qBACA8M,IAAA,WAKA,MAJAzO,MAAA2O,oBACA3O,KAAA0O,eAAA1O,KAAAuB,UAAAvB,KAAA+B,YAGA/B,KAAA2O,sBAIA/N,EAAAe,UAAAiN,wBACA,SAAApH,EAAAqD,GACA,GAAApK,GAAA+G,EAAAO,OAAA8C,EACA,aAAApK,GAAqB,MAAAA,GAQrBG,EAAAe,UAAA+M,eACA,SAAAlH,EAAAvB,GACA,SAAA/B,OAAA,6CAGAtD,EAAAiO,gBAAA,EACAjO,EAAAkO,eAAA,EAEAlO,EAAAmO,qBAAA,EACAnO,EAAAoO,kBAAA,EAkBApO,EAAAe,UAAAO,YACA,SAAAgL,EAAA+B,EAAAC,GACA,GAGA1J,GAHA2J,EAAAF,GAAA,KACAG,EAAAF,GAAAtO,EAAAiO,eAGA,QAAAO,GACA,IAAAxO,GAAAiO,gBACArJ,EAAAxF,KAAAqP,kBACA,MACA,KAAAzO,GAAAkO,eACAtJ,EAAAxF,KAAAsP,iBACA,MACA,SACA,SAAApL,OAAA,+BAGA,GAAAnC,GAAA/B,KAAA+B,UACAyD,GAAAU,IAAA,SAAA/D,GACA,GAAAO,GAAA,OAAAP,EAAAO,OAAA,KAAA1C,KAAAoB,SAAAqL,GAAAtK,EAAAO,OAIA,OAHA,OAAAA,GAAA,MAAAX,IACAW,EAAA1B,EAAAuD,KAAAxC,EAAAW,KAGAA,SACAH,cAAAJ,EAAAI,cACAE,gBAAAN,EAAAM,gBACAI,aAAAV,EAAAU,aACAC,eAAAX,EAAAW,eACAC,KAAA,OAAAZ,EAAAY,KAAA,KAAA/C,KAAAsB,OAAAmL,GAAAtK,EAAAY,QAEO/C,MAAAkD,QAAAgK,EAAAiC,IAsBPvO,EAAAe,UAAA4N,yBACA,SAAAzO,GACA,GAAAwB,GAAAtB,EAAAC,OAAAH,EAAA,QAMA0O,GACA9M,OAAA1B,EAAAC,OAAAH,EAAA,UACA+B,aAAAP,EACAQ,eAAA9B,EAAAC,OAAAH,EAAA,YAMA,IAHA,MAAAd,KAAA+B,aACAyN,EAAA9M,OAAA1B,EAAA2B,SAAA3C,KAAA+B,WAAAyN,EAAA9M,UAEA1C,KAAAoB,SAAAoC,IAAAgM,EAAA9M,QACA,QAEA8M,GAAA9M,OAAA1C,KAAAoB,SAAA0E,QAAA0J,EAAA9M,OAEA,IAAA8C,MAEAqF,EAAA7K,KAAAyP,aAAAD,EACAxP,KAAAsP,kBACA,eACA,iBACAtO,EAAAmK,2BACAkD,EAAAW,kBACA,IAAAnE,GAAA,GACA,GAAA1I,GAAAnC,KAAAsP,kBAAAzE,EAEA,IAAA6E,SAAA5O,EAAA0B,OAOA,IANA,GAAAK,GAAAV,EAAAU,aAMAV,KAAAU,kBACA2C,EAAAgH,MACAlK,KAAAtB,EAAAC,OAAAkB,EAAA,sBACAK,OAAAxB,EAAAC,OAAAkB,EAAA,wBACAwN,WAAA3O,EAAAC,OAAAkB,EAAA,8BAGAA,EAAAnC,KAAAsP,oBAAAzE,OASA,KANA,GAAA/H,GAAAX,EAAAW,eAMAX,GACAA,EAAAU,eAAAP,GACAH,EAAAW,mBACA0C,EAAAgH,MACAlK,KAAAtB,EAAAC,OAAAkB,EAAA,sBACAK,OAAAxB,EAAAC,OAAAkB,EAAA,wBACAwN,WAAA3O,EAAAC,OAAAkB,EAAA,8BAGAA,EAAAnC,KAAAsP,oBAAAzE,GAKA,MAAArF,IAGA5F,EAAAgB,oBAkFA+M,EAAAhM,UAAAkC,OAAA+L,OAAAhP,EAAAe,WACAgM,EAAAhM,UAAAyM,SAAAxN,EASA+M,EAAA9L,cACA,SAAAyL,GACA,GAAAuC,GAAAhM,OAAA+L,OAAAjC,EAAAhM,WAEA4E,EAAAsJ,EAAAvO,OAAAD,EAAA0K,UAAAuB,EAAAhM,OAAAmE,WAAA,GACAxC,EAAA4M,EAAAzO,SAAAC,EAAA0K,UAAAuB,EAAAlM,SAAAqE,WAAA,EACAoK,GAAA9N,WAAAuL,EAAApM,YACA2O,EAAArJ,eAAA8G,EAAAvH,wBAAA8J,EAAAzO,SAAAqE,UACAoK,EAAA9N,YACA8N,EAAA5N,KAAAqL,EAAAvM,KAWA,QAJA+O,GAAAxC,EAAA/L,UAAAkE,UAAAsF,QACAgF,EAAAF,EAAAtB,uBACAyB,EAAAH,EAAAlB,sBAEAjJ,EAAA,EAAA3B,EAAA+L,EAAA/L,OAAwDA,EAAA2B,EAAYA,IAAA,CACpE,GAAAuK,GAAAH,EAAApK,GACAwK,EAAA,GAAAtC,EACAsC,GAAA3N,cAAA0N,EAAA1N,cACA2N,EAAAzN,gBAAAwN,EAAAxN,gBAEAwN,EAAAvN,SACAwN,EAAAxN,OAAAO,EAAA6C,QAAAmK,EAAAvN,QACAwN,EAAArN,aAAAoN,EAAApN,aACAqN,EAAApN,eAAAmN,EAAAnN,eAEAmN,EAAAlN,OACAmN,EAAAnN,KAAAwD,EAAAT,QAAAmK,EAAAlN,OAGAiN,EAAAxD,KAAA0D,IAGAH,EAAAvD,KAAA0D,GAKA,MAFA5B,GAAAuB,EAAAlB,mBAAA3N,EAAAmK,4BAEA0E,GAMAlC,EAAAhM,UAAAC,SAAA,EAKAiC,OAAA2K,eAAAb,EAAAhM,UAAA,WACA8M,IAAA,WACA,MAAAzO,MAAAoB,SAAAqE,UAAAS,IAAA,SAAA6H,GACA,aAAA/N,KAAA+B,WAAAf,EAAAuD,KAAAvE,KAAA+B,WAAAgM,MACO/N,SAqBP2N,EAAAhM,UAAA+M,eACA,SAAAlH,EAAAvB,GAeA,IAdA,GAYA9D,GAAAgO,EAAAC,EAAAC,EAAArI,EAZAzF,EAAA,EACA0C,EAAA,EACAG,EAAA,EACAD,EAAA,EACAG,EAAA,EACAD,EAAA,EACAtB,EAAAyD,EAAAzD,OACA8G,EAAA,EACAyF,KACAC,KACAC,KACAV,KAGA/L,EAAA8G,GACA,SAAArD,EAAAO,OAAA8C,GACAtI,IACAsI,IACA5F,EAAA,MAEA,UAAAuC,EAAAO,OAAA8C,GACAA,QAEA,CASA,IARA1I,EAAA,GAAAyL,GACAzL,EAAAI,gBAOA8N,EAAAxF,EAA2B9G,EAAAsM,IAC3BrQ,KAAA4O,wBAAApH,EAAA6I,GADyCA,KAQzC,GAHAF,EAAA3I,EAAAuD,MAAAF,EAAAwF,GAEAD,EAAAE,EAAAH,GAEAtF,GAAAsF,EAAApM,WACW,CAEX,IADAqM,KACAC,EAAAxF,GACAnJ,EAAA6F,OAAAC,EAAAqD,EAAA0F,GACAvI,EAAAuI,EAAAvI,MACA6C,EAAA0F,EAAAtI,KACAmI,EAAA5D,KAAAxE,EAGA,QAAAoI,EAAArM,OACA,SAAAG,OAAA,yCAGA,QAAAkM,EAAArM,OACA,SAAAG,OAAA,yCAGAoM,GAAAH,GAAAC,EAIAjO,EAAAM,gBAAAwC,EAAAmL,EAAA,GACAnL,EAAA9C,EAAAM,gBAEA2N,EAAArM,OAAA,IAEA5B,EAAAO,OAAA4C,EAAA8K,EAAA,GACA9K,GAAA8K,EAAA,GAGAjO,EAAAU,aAAAuC,EAAAgL,EAAA,GACAhL,EAAAjD,EAAAU,aAEAV,EAAAU,cAAA,EAGAV,EAAAW,eAAAqC,EAAAiL,EAAA,GACAjL,EAAAhD,EAAAW,eAEAsN,EAAArM,OAAA,IAEA5B,EAAAY,KAAAsC,EAAA+K,EAAA,GACA/K,GAAA+K,EAAA,KAIAN,EAAAtD,KAAArK,GACA,gBAAAA,GAAAU,cACA2N,EAAAhE,KAAArK,GAKAmM,EAAAwB,EAAA9O,EAAAwK,qCACAxL,KAAAuO,oBAAAuB,EAEAxB,EAAAkC,EAAAxP,EAAAmK,4BACAnL,KAAA2O,mBAAA6B,GAOA7C,EAAAhM,UAAA8N,aACA,SAAAgB,EAAAC,EAAAC,EACAC,EAAAC,EAAAC,GAMA,GAAAL,EAAAE,IAAA,EACA,SAAAtI,WAAA,gDACAoI,EAAAE,GAEA,IAAAF,EAAAG,GAAA,EACA,SAAAvI,WAAA,kDACAoI,EAAAG,GAGA,OAAAvC,GAAA0C,OAAAN,EAAAC,EAAAG,EAAAC,IAOAnD,EAAAhM,UAAAqP,mBACA,WACA,OAAAnG,GAAA,EAAyBA,EAAA7K,KAAAqP,mBAAAtL,SAAwC8G,EAAA,CACjE,GAAA1I,GAAAnC,KAAAqP,mBAAAxE,EAMA,IAAAA,EAAA,EAAA7K,KAAAqP,mBAAAtL,OAAA,CACA,GAAAkN,GAAAjR,KAAAqP,mBAAAxE,EAAA,EAEA,IAAA1I,EAAAI,gBAAA0O,EAAA1O,cAAA,CACAJ,EAAA+O,oBAAAD,EAAAxO,gBAAA,CACA,WAKAN,EAAA+O,oBAAAC,MAwBAxD,EAAAhM,UAAA2C,oBACA,SAAAxD,GACA,GAAA0O,IACAjN,cAAAvB,EAAAC,OAAAH,EAAA,QACA2B,gBAAAzB,EAAAC,OAAAH,EAAA,WAGA+J,EAAA7K,KAAAyP,aACAD,EACAxP,KAAAqP,mBACA,gBACA,kBACArO,EAAAwK,oCACAxK,EAAAC,OAAAH,EAAA,OAAAF,EAAAmO,sBAGA,IAAAlE,GAAA,GACA,GAAA1I,GAAAnC,KAAAqP,mBAAAxE,EAEA,IAAA1I,EAAAI,gBAAAiN,EAAAjN,cAAA,CACA,GAAAG,GAAA1B,EAAAC,OAAAkB,EAAA,cACA,QAAAO,IACAA,EAAA1C,KAAAoB,SAAAqL,GAAA/J,GACA,MAAA1C,KAAA+B,aACAW,EAAA1B,EAAAuD,KAAAvE,KAAA+B,WAAAW,IAGA,IAAAK,GAAA/B,EAAAC,OAAAkB,EAAA,YAIA,OAHA,QAAAY,IACAA,EAAA/C,KAAAsB,OAAAmL,GAAA1J,KAGAL,SACAJ,KAAAtB,EAAAC,OAAAkB,EAAA,qBACAK,OAAAxB,EAAAC,OAAAkB,EAAA,uBACAY,SAKA,OACAL,OAAA,KACAJ,KAAA,KACAE,OAAA,KACAO,KAAA,OAQA4K,EAAAhM,UAAAyP,wBACA,WACA,MAAApR,MAAAwG,eAGAxG,KAAAwG,eAAAzC,QAAA/D,KAAAoB,SAAA+K,SACAnM,KAAAwG,eAAA6K,KAAA,SAAAC,GAAiD,aAAAA,KAHjD,GAWA3D,EAAAhM,UAAA0B,iBACA,SAAAqB,EAAA6M,GACA,IAAAvR,KAAAwG,eACA,WAOA,IAJA,MAAAxG,KAAA+B,aACA2C,EAAA1D,EAAA2B,SAAA3C,KAAA+B,WAAA2C,IAGA1E,KAAAoB,SAAAoC,IAAAkB,GACA,MAAA1E,MAAAwG,eAAAxG,KAAAoB,SAAA0E,QAAApB,GAGA,IAAAoF,EACA,UAAA9J,KAAA+B,aACA+H,EAAA9I,EAAAmI,SAAAnJ,KAAA+B,aAAA,CAKA,GAAAyP,GAAA9M,EAAAiG,QAAA,gBACA,YAAAb,EAAAP,QACAvJ,KAAAoB,SAAAoC,IAAAgO,GACA,MAAAxR,MAAAwG,eAAAxG,KAAAoB,SAAA0E,QAAA0L,GAGA,MAAA1H,EAAAH,MAAA,KAAAG,EAAAH,OACA3J,KAAAoB,SAAAoC,IAAA,IAAAkB,GACA,MAAA1E,MAAAwG,eAAAxG,KAAAoB,SAAA0E,QAAA,IAAApB,IAQA,GAAA6M,EACA,WAGA,UAAArN,OAAA,IAAAQ,EAAA,+BAuBAiJ,EAAAhM,UAAA8P,qBACA,SAAA3Q,GACA,GAAA4B,GAAA1B,EAAAC,OAAAH,EAAA,SAIA,IAHA,MAAAd,KAAA+B,aACAW,EAAA1B,EAAA2B,SAAA3C,KAAA+B,WAAAW,KAEA1C,KAAAoB,SAAAoC,IAAAd,GACA,OACAJ,KAAA,KACAE,OAAA,KACAmN,WAAA,KAGAjN,GAAA1C,KAAAoB,SAAA0E,QAAApD,EAEA,IAAA8M,IACA9M,SACAG,aAAA7B,EAAAC,OAAAH,EAAA,QACAgC,eAAA9B,EAAAC,OAAAH,EAAA,WAGA+J,EAAA7K,KAAAyP,aACAD,EACAxP,KAAAsP,kBACA,eACA,iBACAtO,EAAAmK,2BACAnK,EAAAC,OAAAH,EAAA,OAAAF,EAAAmO,sBAGA,IAAAlE,GAAA,GACA,GAAA1I,GAAAnC,KAAAsP,kBAAAzE,EAEA,IAAA1I,EAAAO,SAAA8M,EAAA9M,OACA,OACAJ,KAAAtB,EAAAC,OAAAkB,EAAA,sBACAK,OAAAxB,EAAAC,OAAAkB,EAAA,wBACAwN,WAAA3O,EAAAC,OAAAkB,EAAA,6BAKA,OACAG,KAAA,KACAE,OAAA,KACAmN,WAAA,OAIA/P,EAAA+N,yBA+FAD,EAAA/L,UAAAkC,OAAA+L,OAAAhP,EAAAe,WACA+L,EAAA/L,UAAA+P,YAAA9Q,EAKA8M,EAAA/L,UAAAC,SAAA,EAKAiC,OAAA2K,eAAAd,EAAA/L,UAAA,WACA8M,IAAA,WAEA,OADAxL,MACAyC,EAAA,EAAqBA,EAAA1F,KAAA8N,UAAA/J,OAA2B2B,IAChD,OAAAiM,GAAA,EAAuBA,EAAA3R,KAAA8N,UAAApI,GAAA0I,SAAAnL,QAAAc,OAA+C4N,IACtE1O,EAAAuJ,KAAAxM,KAAA8N,UAAApI,GAAA0I,SAAAnL,QAAA0O,GAGA,OAAA1O,MAmBAyK,EAAA/L,UAAA2C,oBACA,SAAAxD,GACA,GAAA0O,IACAjN,cAAAvB,EAAAC,OAAAH,EAAA,QACA2B,gBAAAzB,EAAAC,OAAAH,EAAA,WAKA8Q,EAAAvD,EAAA0C,OAAAvB,EAAAxP,KAAA8N,UACA,SAAA0B,EAAAqC,GACA,GAAAtG,GAAAiE,EAAAjN,cAAAsP,EAAA1D,gBAAA5L,aACA,OAAAgJ,GACAA,EAGAiE,EAAA/M,gBACAoP,EAAA1D,gBAAA1L,kBAEAoP,EAAA7R,KAAA8N,UAAA8D,EAEA,OAAAC,GASAA,EAAAzD,SAAA9J,qBACAhC,KAAAkN,EAAAjN,eACAsP,EAAA1D,gBAAA5L,cAAA,GACAC,OAAAgN,EAAA/M,iBACAoP,EAAA1D,gBAAA5L,gBAAAiN,EAAAjN,cACAsP,EAAA1D,gBAAA1L,gBAAA,EACA,GACAqP,KAAAhR,EAAAgR,QAdApP,OAAA,KACAJ,KAAA,KACAE,OAAA,KACAO,KAAA,OAmBA2K,EAAA/L,UAAAyP,wBACA,WACA,MAAApR,MAAA8N,UAAAiE,MAAA,SAAAhE,GACA,MAAAA,GAAAK,SAAAgD,6BASA1D,EAAA/L,UAAA0B,iBACA,SAAAqB,EAAA6M,GACA,OAAA7L,GAAA,EAAqBA,EAAA1F,KAAA8N,UAAA/J,OAA2B2B,IAAA,CAChD,GAAAmM,GAAA7R,KAAA8N,UAAApI,GAEAtC,EAAAyO,EAAAzD,SAAA/K,iBAAAqB,GAAA,EACA,IAAAtB,EACA,MAAAA,GAGA,GAAAmO,EACA,WAGA,UAAArN,OAAA,IAAAQ,EAAA,+BAkBAgJ,EAAA/L,UAAA8P,qBACA,SAAA3Q,GACA,OAAA4E,GAAA,EAAqBA,EAAA1F,KAAA8N,UAAA/J,OAA2B2B,IAAA,CAChD,GAAAmM,GAAA7R,KAAA8N,UAAApI,EAIA,SAAAmM,EAAAzD,SAAAnL,QAAA6C,QAAA9E,EAAAC,OAAAH,EAAA,YAGA,GAAAkR,GAAAH,EAAAzD,SAAAqD,qBAAA3Q,EACA,IAAAkR,EAAA,CACA,GAAAC,IACA3P,KAAA0P,EAAA1P,MACAuP,EAAA1D,gBAAA5L,cAAA,GACAC,OAAAwP,EAAAxP,QACAqP,EAAA1D,gBAAA5L,gBAAAyP,EAAA1P,KACAuP,EAAA1D,gBAAA1L,gBAAA,EACA,GAEA,OAAAwP,KAIA,OACA3P,KAAA,KACAE,OAAA,OASAkL,EAAA/L,UAAA+M,eACA,SAAAlH,EAAAvB,GACAjG,KAAAuO,uBACAvO,KAAA2O,qBACA,QAAAjJ,GAAA,EAAqBA,EAAA1F,KAAA8N,UAAA/J,OAA2B2B,IAGhD,OAFAmM,GAAA7R,KAAA8N,UAAApI,GACAwM,EAAAL,EAAAzD,SAAAiB,mBACAsC,EAAA,EAAuBA,EAAAO,EAAAnO,OAA4B4N,IAAA,CACnD,GAAAxP,GAAA+P,EAAAP,GAEAjP,EAAAmP,EAAAzD,SAAAhN,SAAAqL,GAAAtK,EAAAO,OACA,QAAAmP,EAAAzD,SAAArM,aACAW,EAAA1B,EAAAuD,KAAAsN,EAAAzD,SAAArM,WAAAW,IAEA1C,KAAAoB,SAAAqC,IAAAf,GACAA,EAAA1C,KAAAoB,SAAA0E,QAAApD,EAEA,IAAAK,GAAA8O,EAAAzD,SAAA9M,OAAAmL,GAAAtK,EAAAY,KACA/C,MAAAsB,OAAAmC,IAAAV,GACAA,EAAA/C,KAAAsB,OAAAwE,QAAA/C,EAMA,IAAAoP,IACAzP,SACAH,cAAAJ,EAAAI,eACAsP,EAAA1D,gBAAA5L,cAAA,GACAE,gBAAAN,EAAAM,iBACAoP,EAAA1D,gBAAA5L,gBAAAJ,EAAAI,cACAsP,EAAA1D,gBAAA1L,gBAAA,EACA,GACAI,aAAAV,EAAAU,aACAC,eAAAX,EAAAW,eACAC,OAGA/C,MAAAuO,oBAAA/B,KAAA2F,GACA,gBAAAA,GAAAtP,cACA7C,KAAA2O,mBAAAnC,KAAA2F,GAKA7D,EAAAtO,KAAAuO,oBAAAvN,EAAAwK,qCACA8C,EAAAtO,KAAA2O,mBAAA3N,EAAAmK,6BAGAvL,EAAA8N,4BTsvCM,SAAS7N,EAAQD,GUvxEvB,QAAAwS,GAAAC,EAAAC,EAAA7B,EAAA8B,EAAAC,EAAA1B,GAUA,GAAA2B,GAAAC,KAAAC,OAAAL,EAAAD,GAAA,GAAAA,EACA9G,EAAAiH,EAAA/B,EAAA8B,EAAAE,IAAA,EACA,YAAAlH,EAEAkH,EAEAlH,EAAA,EAEA+G,EAAAG,EAAA,EAEAL,EAAAK,EAAAH,EAAA7B,EAAA8B,EAAAC,EAAA1B,GAKAA,GAAAlR,EAAAoP,kBACAsD,EAAAC,EAAAxO,OAAAuO,EAAA,GAEAG,EAKAA,EAAAJ,EAAA,EAEAD,EAAAC,EAAAI,EAAAhC,EAAA8B,EAAAC,EAAA1B,GAIAA,GAAAlR,EAAAoP,kBACAyD,EAEA,EAAAJ,EAAA,GAAAA,EA1DAzS,EAAAmP,qBAAA,EACAnP,EAAAoP,kBAAA,EAgFApP,EAAAmR,OAAA,SAAAN,EAAA8B,EAAAC,EAAA1B,GACA,OAAAyB,EAAAxO,OACA,QAGA,IAAA8G,GAAAuH,EAAA,GAAAG,EAAAxO,OAAA0M,EAAA8B,EACAC,EAAA1B,GAAAlR,EAAAmP,qBACA,MAAAlE,EACA,QAMA,MAAAA,EAAA,MACA,IAAA2H,EAAAD,EAAA1H,GAAA0H,EAAA1H,EAAA,UAGAA,CAGA,OAAAA,KVuzEM,SAAShL,EAAQD,GWz4EvB,QAAAgT,GAAAC,EAAAC,EAAAC,GACA,GAAAxC,GAAAsC,EAAAC,EACAD,GAAAC,GAAAD,EAAAE,GACAF,EAAAE,GAAAxC,EAWA,QAAAyC,GAAAC,EAAAC,GACA,MAAAR,MAAAS,MAAAF,EAAAP,KAAAU,UAAAF,EAAAD,IAeA,QAAAI,GAAAR,EAAAS,EAAA5S,EAAA6S,GAKA,GAAAA,EAAA7S,EAAA,CAYA,GAAA8S,GAAAR,EAAAtS,EAAA6S,GACA7N,EAAAhF,EAAA,CAEAkS,GAAAC,EAAAW,EAAAD,EASA,QARAE,GAAAZ,EAAAU,GAQA5B,EAAAjR,EAAqB6S,EAAA5B,EAAOA,IAC5B2B,EAAAT,EAAAlB,GAAA8B,IAAA,IACA/N,GAAA,EACAkN,EAAAC,EAAAnN,EAAAiM,GAIAiB,GAAAC,EAAAnN,EAAA,EAAAiM,EACA,IAAA+B,GAAAhO,EAAA,CAIA2N,GAAAR,EAAAS,EAAA5S,EAAAgT,EAAA,GACAL,EAAAR,EAAAS,EAAAI,EAAA,EAAAH,IAYA3T,EAAA0O,UAAA,SAAAuE,EAAAS,GACAD,EAAAR,EAAAS,EAAA,EAAAT,EAAA9O,OAAA,KX66EM,SAASlE,EAAQD,EAASM,GY3/EhC,QAAAW,GAAA8S,EAAAC,EAAAlP,EAAAmP,EAAAlP,GACA3E,KAAA8T,YACA9T,KAAA+T,kBACA/T,KAAAsC,KAAA,MAAAqR,EAAA,KAAAA,EACA3T,KAAAwC,OAAA,MAAAoR,EAAA,KAAAA,EACA5T,KAAA0C,OAAA,MAAAgC,EAAA,KAAAA,EACA1E,KAAA+C,KAAA,MAAA4B,EAAA,KAAAA,EACA3E,KAAAgU,IAAA,EACA,MAAAH,GAAA7T,KAAAyD,IAAAoQ,GAnCA,GAAAlT,GAAAT,EAAA,GAAAS,mBACAK,EAAAd,EAAA,GAIA+T,EAAA,UAGAC,EAAA,GAKAF,EAAA,oBAiCAnT,GAAAsT,wBACA,SAAAC,EAAAtS,EAAAuS,GAyFA,QAAAC,GAAAnS,EAAAoS,GACA,UAAApS,GAAAuN,SAAAvN,EAAAO,OACA8R,EAAA/Q,IAAA8Q,OACS,CACT,GAAA7R,GAAA2R,EACArT,EAAAuD,KAAA8P,EAAAlS,EAAAO,QACAP,EAAAO,MACA8R,GAAA/Q,IAAA,GAAA5C,GAAAsB,EAAAU,aACAV,EAAAW,eACAJ,EACA6R,EACApS,EAAAY,QAjGA,GAAAyR,GAAA,GAAA3T,GAMA4T,EAAAL,EAAAjM,MAAA8L,GACAS,EAAA,WACA,GAAAC,GAAAF,EAAA5M,QAEA+M,EAAAH,EAAA5M,SAAA,EACA,OAAA8M,GAAAC,GAIAC,EAAA,EAAA3D,EAAA,EAKA4D,EAAA,IAgEA,OA9DAhT,GAAAI,YAAA,SAAAC,GACA,UAAA2S,EAAA,CAGA,KAAAD,EAAA1S,EAAAI,eAMW,CAIX,GAAAwS,GAAAN,EAAA,GACAF,EAAAQ,EAAA9J,OAAA,EAAA9I,EAAAM,gBACAyO,EAOA,OANAuD,GAAA,GAAAM,EAAA9J,OAAA9I,EAAAM,gBACAyO,GACAA,EAAA/O,EAAAM,gBACA6R,EAAAQ,EAAAP,QAEAO,EAAA3S,GAhBAmS,EAAAQ,EAAAJ,KACAG,IACA3D,EAAA,EAqBA,KAAA2D,EAAA1S,EAAAI,eACAiS,EAAA/Q,IAAAiR,KACAG,GAEA,IAAA3D,EAAA/O,EAAAM,gBAAA,CACA,GAAAsS,GAAAN,EAAA,EACAD,GAAA/Q,IAAAsR,EAAA9J,OAAA,EAAA9I,EAAAM,kBACAgS,EAAA,GAAAM,EAAA9J,OAAA9I,EAAAM,iBACAyO,EAAA/O,EAAAM,gBAEAqS,EAAA3S,GACOnC,MAEPyU,EAAA1Q,OAAA,IACA+Q,GAEAR,EAAAQ,EAAAJ,KAGAF,EAAA/Q,IAAAgR,EAAAlQ,KAAA,MAIAzC,EAAAmB,QAAAC,QAAA,SAAAC,GACA,GAAAC,GAAAtB,EAAAuB,iBAAAF,EACA,OAAAC,IACA,MAAAiR,IACAlR,EAAAnC,EAAAuD,KAAA8P,EAAAlR,IAEAqR,EAAAlR,iBAAAH,EAAAC,MAIAoR,GAwBA3T,EAAAc,UAAA8B,IAAA,SAAAuR,GACA,GAAAhK,MAAAiK,QAAAD,GACAA,EAAA9R,QAAA,SAAAgS,GACAlV,KAAAyD,IAAAyR,IACOlV,UAEP,KAAAgV,EAAAhB,IAAA,gBAAAgB,GAMA,SAAA3M,WACA,8EAAA2M,EANAA,IACAhV,KAAA8T,SAAAtH,KAAAwI,GAQA,MAAAhV,OASAa,EAAAc,UAAAwT,QAAA,SAAAH,GACA,GAAAhK,MAAAiK,QAAAD,GACA,OAAAtP,GAAAsP,EAAAjR,OAAA,EAAmC2B,GAAA,EAAQA,IAC3C1F,KAAAmV,QAAAH,EAAAtP,QAGA,KAAAsP,EAAAhB,IAAA,gBAAAgB,GAIA,SAAA3M,WACA,8EAAA2M,EAJAhV,MAAA8T,SAAAsB,QAAAJ,GAOA,MAAAhV,OAUAa,EAAAc,UAAA0T,KAAA,SAAAC,GAEA,OADAJ,GACAxP,EAAA,EAAAC,EAAA3F,KAAA8T,SAAA/P,OAA+C4B,EAAAD,EAASA,IACxDwP,EAAAlV,KAAA8T,SAAApO,GACAwP,EAAAlB,GACAkB,EAAAG,KAAAC,GAGA,KAAAJ,GACAI,EAAAJ,GAAsBxS,OAAA1C,KAAA0C,OACtBJ,KAAAtC,KAAAsC,KACAE,OAAAxC,KAAAwC,OACAO,KAAA/C,KAAA+C,QAYAlC,EAAAc,UAAA4C,KAAA,SAAAgR,GACA,GAAAC,GACA9P,EACAC,EAAA3F,KAAA8T,SAAA/P,MACA,IAAA4B,EAAA,GAEA,IADA6P,KACA9P,EAAA,EAAiBC,EAAA,EAAAD,EAAWA,IAC5B8P,EAAAhJ,KAAAxM,KAAA8T,SAAApO,IACA8P,EAAAhJ,KAAA+I,EAEAC,GAAAhJ,KAAAxM,KAAA8T,SAAApO,IACA1F,KAAA8T,SAAA0B,EAEA,MAAAxV,OAUAa,EAAAc,UAAA8T,aAAA,SAAAC,EAAAC,GACA,GAAAC,GAAA5V,KAAA8T,SAAA9T,KAAA8T,SAAA/P,OAAA,EAUA,OATA6R,GAAA5B,GACA4B,EAAAH,aAAAC,EAAAC,GAEA,gBAAAC,GACA5V,KAAA8T,SAAA9T,KAAA8T,SAAA/P,OAAA,GAAA6R,EAAAjL,QAAA+K,EAAAC,GAGA3V,KAAA8T,SAAAtH,KAAA,GAAA7B,QAAA+K,EAAAC,IAEA3V,MAUAa,EAAAc,UAAA2B,iBACA,SAAAI,EAAAC,GACA3D,KAAA+T,eAAA/S,EAAA4C,YAAAF,IAAAC,GASA9C,EAAAc,UAAAkU,mBACA,SAAAP,GACA,OAAA5P,GAAA,EAAAC,EAAA3F,KAAA8T,SAAA/P,OAAiD4B,EAAAD,EAASA,IAC1D1F,KAAA8T,SAAApO,GAAAsO,IACAhU,KAAA8T,SAAApO,GAAAmQ,mBAAAP,EAKA,QADArS,GAAAY,OAAAC,KAAA9D,KAAA+T,gBACArO,EAAA,EAAAC,EAAA1C,EAAAc,OAA2C4B,EAAAD,EAASA,IACpD4P,EAAAtU,EAAAkK,cAAAjI,EAAAyC,IAAA1F,KAAA+T,eAAA9Q,EAAAyC,MAQA7E,EAAAc,UAAA8E,SAAA,WACA,GAAA0J,GAAA,EAIA,OAHAnQ,MAAAqV,KAAA,SAAAH,GACA/E,GAAA+E,IAEA/E,GAOAtP,EAAAc,UAAAmU,sBAAA,SAAAhV,GACA,GAAAuB,IACAkS,KAAA,GACAjS,KAAA,EACAE,OAAA,GAEA0D,EAAA,GAAAvF,GAAAG,GACAiV,GAAA,EACAC,EAAA,KACAC,EAAA,KACAC,EAAA,KACAC,EAAA,IAqEA,OApEAnW,MAAAqV,KAAA,SAAAH,EAAAtS,GACAP,EAAAkS,MAAAW,EACA,OAAAtS,EAAAF,QACA,OAAAE,EAAAN,MACA,OAAAM,EAAAJ,SACAwT,IAAApT,EAAAF,QACAuT,IAAArT,EAAAN,MACA4T,IAAAtT,EAAAJ,QACA2T,IAAAvT,EAAAG,OACAmD,EAAAlD,YACAN,OAAAE,EAAAF,OACAE,UACAN,KAAAM,EAAAN,KACAE,OAAAI,EAAAJ,QAEAH,WACAC,KAAAD,EAAAC,KACAE,OAAAH,EAAAG,QAEAO,KAAAH,EAAAG,OAGAiT,EAAApT,EAAAF,OACAuT,EAAArT,EAAAN,KACA4T,EAAAtT,EAAAJ,OACA2T,EAAAvT,EAAAG,KACAgT,GAAA,GACOA,IACP7P,EAAAlD,YACAX,WACAC,KAAAD,EAAAC,KACAE,OAAAH,EAAAG,UAGAwT,EAAA,KACAD,GAAA,EAEA,QAAAxJ,GAAA,EAAAxI,EAAAmR,EAAAnR,OAA8CA,EAAAwI,EAAcA,IAC5D2I,EAAApN,WAAAyE,KAAA2H,GACA7R,EAAAC,OACAD,EAAAG,OAAA,EAEA+J,EAAA,IAAAxI,GACAiS,EAAA,KACAD,GAAA,GACWA,GACX7P,EAAAlD,YACAN,OAAAE,EAAAF,OACAE,UACAN,KAAAM,EAAAN,KACAE,OAAAI,EAAAJ,QAEAH,WACAC,KAAAD,EAAAC,KACAE,OAAAH,EAAAG,QAEAO,KAAAH,EAAAG,QAIAV,EAAAG,WAIAxC,KAAA6V,mBAAA,SAAA1S,EAAAiT,GACAlQ,EAAA5C,iBAAAH,EAAAiT,MAGY7B,KAAAlS,EAAAkS,KAAArO,QAGZtG,EAAAiB","file":"source-map.min.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"sourceMap\"] = factory();\n\telse\n\t\troot[\"sourceMap\"] = factory();\n})(this, function() {\nreturn \n\n\n/** WEBPACK FOOTER **\n ** webpack/universalModuleDefinition\n **/","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"sourceMap\"] = factory();\n\telse\n\t\troot[\"sourceMap\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \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\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\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.loaded = 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// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/*\n\t * Copyright 2009-2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE.txt or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\texports.SourceMapGenerator = __webpack_require__(1).SourceMapGenerator;\n\texports.SourceMapConsumer = __webpack_require__(7).SourceMapConsumer;\n\texports.SourceNode = __webpack_require__(10).SourceNode;\n\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t{\n\t var base64VLQ = __webpack_require__(2);\n\t var util = __webpack_require__(4);\n\t var ArraySet = __webpack_require__(5).ArraySet;\n\t var MappingList = __webpack_require__(6).MappingList;\n\t\n\t /**\n\t * An instance of the SourceMapGenerator represents a source map which is\n\t * being built incrementally. You may pass an object with the following\n\t * properties:\n\t *\n\t * - file: The filename of the generated source.\n\t * - sourceRoot: A root for all relative URLs in this source map.\n\t */\n\t function SourceMapGenerator(aArgs) {\n\t if (!aArgs) {\n\t aArgs = {};\n\t }\n\t this._file = util.getArg(aArgs, 'file', null);\n\t this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null);\n\t this._skipValidation = util.getArg(aArgs, 'skipValidation', false);\n\t this._sources = new ArraySet();\n\t this._names = new ArraySet();\n\t this._mappings = new MappingList();\n\t this._sourcesContents = null;\n\t }\n\t\n\t SourceMapGenerator.prototype._version = 3;\n\t\n\t /**\n\t * Creates a new SourceMapGenerator based on a SourceMapConsumer\n\t *\n\t * @param aSourceMapConsumer The SourceMap.\n\t */\n\t SourceMapGenerator.fromSourceMap =\n\t function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) {\n\t var sourceRoot = aSourceMapConsumer.sourceRoot;\n\t var generator = new SourceMapGenerator({\n\t file: aSourceMapConsumer.file,\n\t sourceRoot: sourceRoot\n\t });\n\t aSourceMapConsumer.eachMapping(function (mapping) {\n\t var newMapping = {\n\t generated: {\n\t line: mapping.generatedLine,\n\t column: mapping.generatedColumn\n\t }\n\t };\n\t\n\t if (mapping.source != null) {\n\t newMapping.source = mapping.source;\n\t if (sourceRoot != null) {\n\t newMapping.source = util.relative(sourceRoot, newMapping.source);\n\t }\n\t\n\t newMapping.original = {\n\t line: mapping.originalLine,\n\t column: mapping.originalColumn\n\t };\n\t\n\t if (mapping.name != null) {\n\t newMapping.name = mapping.name;\n\t }\n\t }\n\t\n\t generator.addMapping(newMapping);\n\t });\n\t aSourceMapConsumer.sources.forEach(function (sourceFile) {\n\t var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n\t if (content != null) {\n\t generator.setSourceContent(sourceFile, content);\n\t }\n\t });\n\t return generator;\n\t };\n\t\n\t /**\n\t * Add a single mapping from original source line and column to the generated\n\t * source's line and column for this source map being created. The mapping\n\t * object should have the following properties:\n\t *\n\t * - generated: An object with the generated line and column positions.\n\t * - original: An object with the original line and column positions.\n\t * - source: The original source file (relative to the sourceRoot).\n\t * - name: An optional original token name for this mapping.\n\t */\n\t SourceMapGenerator.prototype.addMapping =\n\t function SourceMapGenerator_addMapping(aArgs) {\n\t var generated = util.getArg(aArgs, 'generated');\n\t var original = util.getArg(aArgs, 'original', null);\n\t var source = util.getArg(aArgs, 'source', null);\n\t var name = util.getArg(aArgs, 'name', null);\n\t\n\t if (!this._skipValidation) {\n\t this._validateMapping(generated, original, source, name);\n\t }\n\t\n\t if (source != null && !this._sources.has(source)) {\n\t this._sources.add(source);\n\t }\n\t\n\t if (name != null && !this._names.has(name)) {\n\t this._names.add(name);\n\t }\n\t\n\t this._mappings.add({\n\t generatedLine: generated.line,\n\t generatedColumn: generated.column,\n\t originalLine: original != null && original.line,\n\t originalColumn: original != null && original.column,\n\t source: source,\n\t name: name\n\t });\n\t };\n\t\n\t /**\n\t * Set the source content for a source file.\n\t */\n\t SourceMapGenerator.prototype.setSourceContent =\n\t function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {\n\t var source = aSourceFile;\n\t if (this._sourceRoot != null) {\n\t source = util.relative(this._sourceRoot, source);\n\t }\n\t\n\t if (aSourceContent != null) {\n\t // Add the source content to the _sourcesContents map.\n\t // Create a new _sourcesContents map if the property is null.\n\t if (!this._sourcesContents) {\n\t this._sourcesContents = {};\n\t }\n\t this._sourcesContents[util.toSetString(source)] = aSourceContent;\n\t } else if (this._sourcesContents) {\n\t // Remove the source file from the _sourcesContents map.\n\t // If the _sourcesContents map is empty, set the property to null.\n\t delete this._sourcesContents[util.toSetString(source)];\n\t if (Object.keys(this._sourcesContents).length === 0) {\n\t this._sourcesContents = null;\n\t }\n\t }\n\t };\n\t\n\t /**\n\t * Applies the mappings of a sub-source-map for a specific source file to the\n\t * source map being generated. Each mapping to the supplied source file is\n\t * rewritten using the supplied source map. Note: The resolution for the\n\t * resulting mappings is the minimium of this map and the supplied map.\n\t *\n\t * @param aSourceMapConsumer The source map to be applied.\n\t * @param aSourceFile Optional. The filename of the source file.\n\t * If omitted, SourceMapConsumer's file property will be used.\n\t * @param aSourceMapPath Optional. The dirname of the path to the source map\n\t * to be applied. If relative, it is relative to the SourceMapConsumer.\n\t * This parameter is needed when the two source maps aren't in the same\n\t * directory, and the source map to be applied contains relative source\n\t * paths. If so, those relative source paths need to be rewritten\n\t * relative to the SourceMapGenerator.\n\t */\n\t SourceMapGenerator.prototype.applySourceMap =\n\t function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) {\n\t var sourceFile = aSourceFile;\n\t // If aSourceFile is omitted, we will use the file property of the SourceMap\n\t if (aSourceFile == null) {\n\t if (aSourceMapConsumer.file == null) {\n\t throw new Error(\n\t 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' +\n\t 'or the source map\\'s \"file\" property. Both were omitted.'\n\t );\n\t }\n\t sourceFile = aSourceMapConsumer.file;\n\t }\n\t var sourceRoot = this._sourceRoot;\n\t // Make \"sourceFile\" relative if an absolute Url is passed.\n\t if (sourceRoot != null) {\n\t sourceFile = util.relative(sourceRoot, sourceFile);\n\t }\n\t // Applying the SourceMap can add and remove items from the sources and\n\t // the names array.\n\t var newSources = new ArraySet();\n\t var newNames = new ArraySet();\n\t\n\t // Find mappings for the \"sourceFile\"\n\t this._mappings.unsortedForEach(function (mapping) {\n\t if (mapping.source === sourceFile && mapping.originalLine != null) {\n\t // Check if it can be mapped by the source map, then update the mapping.\n\t var original = aSourceMapConsumer.originalPositionFor({\n\t line: mapping.originalLine,\n\t column: mapping.originalColumn\n\t });\n\t if (original.source != null) {\n\t // Copy mapping\n\t mapping.source = original.source;\n\t if (aSourceMapPath != null) {\n\t mapping.source = util.join(aSourceMapPath, mapping.source)\n\t }\n\t if (sourceRoot != null) {\n\t mapping.source = util.relative(sourceRoot, mapping.source);\n\t }\n\t mapping.originalLine = original.line;\n\t mapping.originalColumn = original.column;\n\t if (original.name != null) {\n\t mapping.name = original.name;\n\t }\n\t }\n\t }\n\t\n\t var source = mapping.source;\n\t if (source != null && !newSources.has(source)) {\n\t newSources.add(source);\n\t }\n\t\n\t var name = mapping.name;\n\t if (name != null && !newNames.has(name)) {\n\t newNames.add(name);\n\t }\n\t\n\t }, this);\n\t this._sources = newSources;\n\t this._names = newNames;\n\t\n\t // Copy sourcesContents of applied map.\n\t aSourceMapConsumer.sources.forEach(function (sourceFile) {\n\t var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n\t if (content != null) {\n\t if (aSourceMapPath != null) {\n\t sourceFile = util.join(aSourceMapPath, sourceFile);\n\t }\n\t if (sourceRoot != null) {\n\t sourceFile = util.relative(sourceRoot, sourceFile);\n\t }\n\t this.setSourceContent(sourceFile, content);\n\t }\n\t }, this);\n\t };\n\t\n\t /**\n\t * A mapping can have one of the three levels of data:\n\t *\n\t * 1. Just the generated position.\n\t * 2. The Generated position, original position, and original source.\n\t * 3. Generated and original position, original source, as well as a name\n\t * token.\n\t *\n\t * To maintain consistency, we validate that any new mapping being added falls\n\t * in to one of these categories.\n\t */\n\t SourceMapGenerator.prototype._validateMapping =\n\t function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource,\n\t aName) {\n\t if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n\t && aGenerated.line > 0 && aGenerated.column >= 0\n\t && !aOriginal && !aSource && !aName) {\n\t // Case 1.\n\t return;\n\t }\n\t else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n\t && aOriginal && 'line' in aOriginal && 'column' in aOriginal\n\t && aGenerated.line > 0 && aGenerated.column >= 0\n\t && aOriginal.line > 0 && aOriginal.column >= 0\n\t && aSource) {\n\t // Cases 2 and 3.\n\t return;\n\t }\n\t else {\n\t throw new Error('Invalid mapping: ' + JSON.stringify({\n\t generated: aGenerated,\n\t source: aSource,\n\t original: aOriginal,\n\t name: aName\n\t }));\n\t }\n\t };\n\t\n\t /**\n\t * Serialize the accumulated mappings in to the stream of base 64 VLQs\n\t * specified by the source map format.\n\t */\n\t SourceMapGenerator.prototype._serializeMappings =\n\t function SourceMapGenerator_serializeMappings() {\n\t var previousGeneratedColumn = 0;\n\t var previousGeneratedLine = 1;\n\t var previousOriginalColumn = 0;\n\t var previousOriginalLine = 0;\n\t var previousName = 0;\n\t var previousSource = 0;\n\t var result = '';\n\t var mapping;\n\t var nameIdx;\n\t var sourceIdx;\n\t\n\t var mappings = this._mappings.toArray();\n\t for (var i = 0, len = mappings.length; i < len; i++) {\n\t mapping = mappings[i];\n\t\n\t if (mapping.generatedLine !== previousGeneratedLine) {\n\t previousGeneratedColumn = 0;\n\t while (mapping.generatedLine !== previousGeneratedLine) {\n\t result += ';';\n\t previousGeneratedLine++;\n\t }\n\t }\n\t else {\n\t if (i > 0) {\n\t if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {\n\t continue;\n\t }\n\t result += ',';\n\t }\n\t }\n\t\n\t result += base64VLQ.encode(mapping.generatedColumn\n\t - previousGeneratedColumn);\n\t previousGeneratedColumn = mapping.generatedColumn;\n\t\n\t if (mapping.source != null) {\n\t sourceIdx = this._sources.indexOf(mapping.source);\n\t result += base64VLQ.encode(sourceIdx - previousSource);\n\t previousSource = sourceIdx;\n\t\n\t // lines are stored 0-based in SourceMap spec version 3\n\t result += base64VLQ.encode(mapping.originalLine - 1\n\t - previousOriginalLine);\n\t previousOriginalLine = mapping.originalLine - 1;\n\t\n\t result += base64VLQ.encode(mapping.originalColumn\n\t - previousOriginalColumn);\n\t previousOriginalColumn = mapping.originalColumn;\n\t\n\t if (mapping.name != null) {\n\t nameIdx = this._names.indexOf(mapping.name);\n\t result += base64VLQ.encode(nameIdx - previousName);\n\t previousName = nameIdx;\n\t }\n\t }\n\t }\n\t\n\t return result;\n\t };\n\t\n\t SourceMapGenerator.prototype._generateSourcesContent =\n\t function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {\n\t return aSources.map(function (source) {\n\t if (!this._sourcesContents) {\n\t return null;\n\t }\n\t if (aSourceRoot != null) {\n\t source = util.relative(aSourceRoot, source);\n\t }\n\t var key = util.toSetString(source);\n\t return Object.prototype.hasOwnProperty.call(this._sourcesContents,\n\t key)\n\t ? this._sourcesContents[key]\n\t : null;\n\t }, this);\n\t };\n\t\n\t /**\n\t * Externalize the source map.\n\t */\n\t SourceMapGenerator.prototype.toJSON =\n\t function SourceMapGenerator_toJSON() {\n\t var map = {\n\t version: this._version,\n\t sources: this._sources.toArray(),\n\t names: this._names.toArray(),\n\t mappings: this._serializeMappings()\n\t };\n\t if (this._file != null) {\n\t map.file = this._file;\n\t }\n\t if (this._sourceRoot != null) {\n\t map.sourceRoot = this._sourceRoot;\n\t }\n\t if (this._sourcesContents) {\n\t map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);\n\t }\n\t\n\t return map;\n\t };\n\t\n\t /**\n\t * Render the source map being generated to a string.\n\t */\n\t SourceMapGenerator.prototype.toString =\n\t function SourceMapGenerator_toString() {\n\t return JSON.stringify(this.toJSON());\n\t };\n\t\n\t exports.SourceMapGenerator = SourceMapGenerator;\n\t}\n\n\n/***/ },\n/* 2 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t *\n\t * Based on the Base 64 VLQ implementation in Closure Compiler:\n\t * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java\n\t *\n\t * Copyright 2011 The Closure Compiler Authors. All rights reserved.\n\t * Redistribution and use in source and binary forms, with or without\n\t * modification, are permitted provided that the following conditions are\n\t * met:\n\t *\n\t * * Redistributions of source code must retain the above copyright\n\t * notice, this list of conditions and the following disclaimer.\n\t * * Redistributions in binary form must reproduce the above\n\t * copyright notice, this list of conditions and the following\n\t * disclaimer in the documentation and/or other materials provided\n\t * with the distribution.\n\t * * Neither the name of Google Inc. nor the names of its\n\t * contributors may be used to endorse or promote products derived\n\t * from this software without specific prior written permission.\n\t *\n\t * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\t * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n\t * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n\t * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n\t * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n\t * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n\t * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n\t * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n\t * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n\t * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n\t * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\t */\n\t{\n\t var base64 = __webpack_require__(3);\n\t\n\t // A single base 64 digit can contain 6 bits of data. For the base 64 variable\n\t // length quantities we use in the source map spec, the first bit is the sign,\n\t // the next four bits are the actual value, and the 6th bit is the\n\t // continuation bit. The continuation bit tells us whether there are more\n\t // digits in this value following this digit.\n\t //\n\t // Continuation\n\t // | Sign\n\t // | |\n\t // V V\n\t // 101011\n\t\n\t var VLQ_BASE_SHIFT = 5;\n\t\n\t // binary: 100000\n\t var VLQ_BASE = 1 << VLQ_BASE_SHIFT;\n\t\n\t // binary: 011111\n\t var VLQ_BASE_MASK = VLQ_BASE - 1;\n\t\n\t // binary: 100000\n\t var VLQ_CONTINUATION_BIT = VLQ_BASE;\n\t\n\t /**\n\t * Converts from a two-complement value to a value where the sign bit is\n\t * placed in the least significant bit. For example, as decimals:\n\t * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary)\n\t * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary)\n\t */\n\t function toVLQSigned(aValue) {\n\t return aValue < 0\n\t ? ((-aValue) << 1) + 1\n\t : (aValue << 1) + 0;\n\t }\n\t\n\t /**\n\t * Converts to a two-complement value from a value where the sign bit is\n\t * placed in the least significant bit. For example, as decimals:\n\t * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1\n\t * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2\n\t */\n\t function fromVLQSigned(aValue) {\n\t var isNegative = (aValue & 1) === 1;\n\t var shifted = aValue >> 1;\n\t return isNegative\n\t ? -shifted\n\t : shifted;\n\t }\n\t\n\t /**\n\t * Returns the base 64 VLQ encoded value.\n\t */\n\t exports.encode = function base64VLQ_encode(aValue) {\n\t var encoded = \"\";\n\t var digit;\n\t\n\t var vlq = toVLQSigned(aValue);\n\t\n\t do {\n\t digit = vlq & VLQ_BASE_MASK;\n\t vlq >>>= VLQ_BASE_SHIFT;\n\t if (vlq > 0) {\n\t // There are still more digits in this value, so we must make sure the\n\t // continuation bit is marked.\n\t digit |= VLQ_CONTINUATION_BIT;\n\t }\n\t encoded += base64.encode(digit);\n\t } while (vlq > 0);\n\t\n\t return encoded;\n\t };\n\t\n\t /**\n\t * Decodes the next base 64 VLQ value from the given string and returns the\n\t * value and the rest of the string via the out parameter.\n\t */\n\t exports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {\n\t var strLen = aStr.length;\n\t var result = 0;\n\t var shift = 0;\n\t var continuation, digit;\n\t\n\t do {\n\t if (aIndex >= strLen) {\n\t throw new Error(\"Expected more digits in base 64 VLQ value.\");\n\t }\n\t\n\t digit = base64.decode(aStr.charCodeAt(aIndex++));\n\t if (digit === -1) {\n\t throw new Error(\"Invalid base64 digit: \" + aStr.charAt(aIndex - 1));\n\t }\n\t\n\t continuation = !!(digit & VLQ_CONTINUATION_BIT);\n\t digit &= VLQ_BASE_MASK;\n\t result = result + (digit << shift);\n\t shift += VLQ_BASE_SHIFT;\n\t } while (continuation);\n\t\n\t aOutParam.value = fromVLQSigned(result);\n\t aOutParam.rest = aIndex;\n\t };\n\t}\n\n\n/***/ },\n/* 3 */\n/***/ function(module, exports) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t{\n\t var intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');\n\t\n\t /**\n\t * Encode an integer in the range of 0 to 63 to a single base 64 digit.\n\t */\n\t exports.encode = function (number) {\n\t if (0 <= number && number < intToCharMap.length) {\n\t return intToCharMap[number];\n\t }\n\t throw new TypeError(\"Must be between 0 and 63: \" + number);\n\t };\n\t\n\t /**\n\t * Decode a single base 64 character code digit to an integer. Returns -1 on\n\t * failure.\n\t */\n\t exports.decode = function (charCode) {\n\t var bigA = 65; // 'A'\n\t var bigZ = 90; // 'Z'\n\t\n\t var littleA = 97; // 'a'\n\t var littleZ = 122; // 'z'\n\t\n\t var zero = 48; // '0'\n\t var nine = 57; // '9'\n\t\n\t var plus = 43; // '+'\n\t var slash = 47; // '/'\n\t\n\t var littleOffset = 26;\n\t var numberOffset = 52;\n\t\n\t // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ\n\t if (bigA <= charCode && charCode <= bigZ) {\n\t return (charCode - bigA);\n\t }\n\t\n\t // 26 - 51: abcdefghijklmnopqrstuvwxyz\n\t if (littleA <= charCode && charCode <= littleZ) {\n\t return (charCode - littleA + littleOffset);\n\t }\n\t\n\t // 52 - 61: 0123456789\n\t if (zero <= charCode && charCode <= nine) {\n\t return (charCode - zero + numberOffset);\n\t }\n\t\n\t // 62: +\n\t if (charCode == plus) {\n\t return 62;\n\t }\n\t\n\t // 63: /\n\t if (charCode == slash) {\n\t return 63;\n\t }\n\t\n\t // Invalid base64 digit.\n\t return -1;\n\t };\n\t}\n\n\n/***/ },\n/* 4 */\n/***/ function(module, exports) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t{\n\t /**\n\t * This is a helper function for getting values from parameter/options\n\t * objects.\n\t *\n\t * @param args The object we are extracting values from\n\t * @param name The name of the property we are getting.\n\t * @param defaultValue An optional value to return if the property is missing\n\t * from the object. If this is not specified and the property is missing, an\n\t * error will be thrown.\n\t */\n\t function getArg(aArgs, aName, aDefaultValue) {\n\t if (aName in aArgs) {\n\t return aArgs[aName];\n\t } else if (arguments.length === 3) {\n\t return aDefaultValue;\n\t } else {\n\t throw new Error('\"' + aName + '\" is a required argument.');\n\t }\n\t }\n\t exports.getArg = getArg;\n\t\n\t var urlRegexp = /^(?:([\\w+\\-.]+):)?\\/\\/(?:(\\w+:\\w+)@)?([\\w.]*)(?::(\\d+))?(\\S*)$/;\n\t var dataUrlRegexp = /^data:.+\\,.+$/;\n\t\n\t function urlParse(aUrl) {\n\t var match = aUrl.match(urlRegexp);\n\t if (!match) {\n\t return null;\n\t }\n\t return {\n\t scheme: match[1],\n\t auth: match[2],\n\t host: match[3],\n\t port: match[4],\n\t path: match[5]\n\t };\n\t }\n\t exports.urlParse = urlParse;\n\t\n\t function urlGenerate(aParsedUrl) {\n\t var url = '';\n\t if (aParsedUrl.scheme) {\n\t url += aParsedUrl.scheme + ':';\n\t }\n\t url += '//';\n\t if (aParsedUrl.auth) {\n\t url += aParsedUrl.auth + '@';\n\t }\n\t if (aParsedUrl.host) {\n\t url += aParsedUrl.host;\n\t }\n\t if (aParsedUrl.port) {\n\t url += \":\" + aParsedUrl.port\n\t }\n\t if (aParsedUrl.path) {\n\t url += aParsedUrl.path;\n\t }\n\t return url;\n\t }\n\t exports.urlGenerate = urlGenerate;\n\t\n\t /**\n\t * Normalizes a path, or the path portion of a URL:\n\t *\n\t * - Replaces consequtive slashes with one slash.\n\t * - Removes unnecessary '.' parts.\n\t * - Removes unnecessary '/..' parts.\n\t *\n\t * Based on code in the Node.js 'path' core module.\n\t *\n\t * @param aPath The path or url to normalize.\n\t */\n\t function normalize(aPath) {\n\t var path = aPath;\n\t var url = urlParse(aPath);\n\t if (url) {\n\t if (!url.path) {\n\t return aPath;\n\t }\n\t path = url.path;\n\t }\n\t var isAbsolute = exports.isAbsolute(path);\n\t\n\t var parts = path.split(/\\/+/);\n\t for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {\n\t part = parts[i];\n\t if (part === '.') {\n\t parts.splice(i, 1);\n\t } else if (part === '..') {\n\t up++;\n\t } else if (up > 0) {\n\t if (part === '') {\n\t // The first part is blank if the path is absolute. Trying to go\n\t // above the root is a no-op. Therefore we can remove all '..' parts\n\t // directly after the root.\n\t parts.splice(i + 1, up);\n\t up = 0;\n\t } else {\n\t parts.splice(i, 2);\n\t up--;\n\t }\n\t }\n\t }\n\t path = parts.join('/');\n\t\n\t if (path === '') {\n\t path = isAbsolute ? '/' : '.';\n\t }\n\t\n\t if (url) {\n\t url.path = path;\n\t return urlGenerate(url);\n\t }\n\t return path;\n\t }\n\t exports.normalize = normalize;\n\t\n\t /**\n\t * Joins two paths/URLs.\n\t *\n\t * @param aRoot The root path or URL.\n\t * @param aPath The path or URL to be joined with the root.\n\t *\n\t * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a\n\t * scheme-relative URL: Then the scheme of aRoot, if any, is prepended\n\t * first.\n\t * - Otherwise aPath is a path. If aRoot is a URL, then its path portion\n\t * is updated with the result and aRoot is returned. Otherwise the result\n\t * is returned.\n\t * - If aPath is absolute, the result is aPath.\n\t * - Otherwise the two paths are joined with a slash.\n\t * - Joining for example 'http://' and 'www.example.com' is also supported.\n\t */\n\t function join(aRoot, aPath) {\n\t if (aRoot === \"\") {\n\t aRoot = \".\";\n\t }\n\t if (aPath === \"\") {\n\t aPath = \".\";\n\t }\n\t var aPathUrl = urlParse(aPath);\n\t var aRootUrl = urlParse(aRoot);\n\t if (aRootUrl) {\n\t aRoot = aRootUrl.path || '/';\n\t }\n\t\n\t // `join(foo, '//www.example.org')`\n\t if (aPathUrl && !aPathUrl.scheme) {\n\t if (aRootUrl) {\n\t aPathUrl.scheme = aRootUrl.scheme;\n\t }\n\t return urlGenerate(aPathUrl);\n\t }\n\t\n\t if (aPathUrl || aPath.match(dataUrlRegexp)) {\n\t return aPath;\n\t }\n\t\n\t // `join('http://', 'www.example.com')`\n\t if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {\n\t aRootUrl.host = aPath;\n\t return urlGenerate(aRootUrl);\n\t }\n\t\n\t var joined = aPath.charAt(0) === '/'\n\t ? aPath\n\t : normalize(aRoot.replace(/\\/+$/, '') + '/' + aPath);\n\t\n\t if (aRootUrl) {\n\t aRootUrl.path = joined;\n\t return urlGenerate(aRootUrl);\n\t }\n\t return joined;\n\t }\n\t exports.join = join;\n\t\n\t exports.isAbsolute = function (aPath) {\n\t return aPath.charAt(0) === '/' || !!aPath.match(urlRegexp);\n\t };\n\t\n\t /**\n\t * Make a path relative to a URL or another path.\n\t *\n\t * @param aRoot The root path or URL.\n\t * @param aPath The path or URL to be made relative to aRoot.\n\t */\n\t function relative(aRoot, aPath) {\n\t if (aRoot === \"\") {\n\t aRoot = \".\";\n\t }\n\t\n\t aRoot = aRoot.replace(/\\/$/, '');\n\t\n\t // It is possible for the path to be above the root. In this case, simply\n\t // checking whether the root is a prefix of the path won't work. Instead, we\n\t // need to remove components from the root one by one, until either we find\n\t // a prefix that fits, or we run out of components to remove.\n\t var level = 0;\n\t while (aPath.indexOf(aRoot + '/') !== 0) {\n\t var index = aRoot.lastIndexOf(\"/\");\n\t if (index < 0) {\n\t return aPath;\n\t }\n\t\n\t // If the only part of the root that is left is the scheme (i.e. http://,\n\t // file:///, etc.), one or more slashes (/), or simply nothing at all, we\n\t // have exhausted all components, so the path is not relative to the root.\n\t aRoot = aRoot.slice(0, index);\n\t if (aRoot.match(/^([^\\/]+:\\/)?\\/*$/)) {\n\t return aPath;\n\t }\n\t\n\t ++level;\n\t }\n\t\n\t // Make sure we add a \"../\" for each component we removed from the root.\n\t return Array(level + 1).join(\"../\") + aPath.substr(aRoot.length + 1);\n\t }\n\t exports.relative = relative;\n\t\n\t /**\n\t * Because behavior goes wacky when you set `__proto__` on objects, we\n\t * have to prefix all the strings in our set with an arbitrary character.\n\t *\n\t * See https://github.com/mozilla/source-map/pull/31 and\n\t * https://github.com/mozilla/source-map/issues/30\n\t *\n\t * @param String aStr\n\t */\n\t function toSetString(aStr) {\n\t return '$' + aStr;\n\t }\n\t exports.toSetString = toSetString;\n\t\n\t function fromSetString(aStr) {\n\t return aStr.substr(1);\n\t }\n\t exports.fromSetString = fromSetString;\n\t\n\t /**\n\t * Comparator between two mappings where the original positions are compared.\n\t *\n\t * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n\t * mappings with the same original source/line/column, but different generated\n\t * line and column the same. Useful when searching for a mapping with a\n\t * stubbed out mapping.\n\t */\n\t function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {\n\t var cmp = mappingA.source - mappingB.source;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.originalLine - mappingB.originalLine;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.originalColumn - mappingB.originalColumn;\n\t if (cmp !== 0 || onlyCompareOriginal) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.generatedLine - mappingB.generatedLine;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t return mappingA.name - mappingB.name;\n\t }\n\t exports.compareByOriginalPositions = compareByOriginalPositions;\n\t\n\t /**\n\t * Comparator between two mappings with deflated source and name indices where\n\t * the generated positions are compared.\n\t *\n\t * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n\t * mappings with the same generated line and column, but different\n\t * source/name/original line and column the same. Useful when searching for a\n\t * mapping with a stubbed out mapping.\n\t */\n\t function compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {\n\t var cmp = mappingA.generatedLine - mappingB.generatedLine;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n\t if (cmp !== 0 || onlyCompareGenerated) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.source - mappingB.source;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.originalLine - mappingB.originalLine;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.originalColumn - mappingB.originalColumn;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t return mappingA.name - mappingB.name;\n\t }\n\t exports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;\n\t\n\t function strcmp(aStr1, aStr2) {\n\t if (aStr1 === aStr2) {\n\t return 0;\n\t }\n\t\n\t if (aStr1 > aStr2) {\n\t return 1;\n\t }\n\t\n\t return -1;\n\t }\n\t\n\t /**\n\t * Comparator between two mappings with inflated source and name strings where\n\t * the generated positions are compared.\n\t */\n\t function compareByGeneratedPositionsInflated(mappingA, mappingB) {\n\t var cmp = mappingA.generatedLine - mappingB.generatedLine;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = strcmp(mappingA.source, mappingB.source);\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.originalLine - mappingB.originalLine;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t cmp = mappingA.originalColumn - mappingB.originalColumn;\n\t if (cmp !== 0) {\n\t return cmp;\n\t }\n\t\n\t return strcmp(mappingA.name, mappingB.name);\n\t }\n\t exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;\n\t}\n\n\n/***/ },\n/* 5 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t{\n\t var util = __webpack_require__(4);\n\t\n\t /**\n\t * A data structure which is a combination of an array and a set. Adding a new\n\t * member is O(1), testing for membership is O(1), and finding the index of an\n\t * element is O(1). Removing elements from the set is not supported. Only\n\t * strings are supported for membership.\n\t */\n\t function ArraySet() {\n\t this._array = [];\n\t this._set = {};\n\t }\n\t\n\t /**\n\t * Static method for creating ArraySet instances from an existing array.\n\t */\n\t ArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {\n\t var set = new ArraySet();\n\t for (var i = 0, len = aArray.length; i < len; i++) {\n\t set.add(aArray[i], aAllowDuplicates);\n\t }\n\t return set;\n\t };\n\t\n\t /**\n\t * Return how many unique items are in this ArraySet. If duplicates have been\n\t * added, than those do not count towards the size.\n\t *\n\t * @returns Number\n\t */\n\t ArraySet.prototype.size = function ArraySet_size() {\n\t return Object.getOwnPropertyNames(this._set).length;\n\t };\n\t\n\t /**\n\t * Add the given string to this set.\n\t *\n\t * @param String aStr\n\t */\n\t ArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {\n\t var sStr = util.toSetString(aStr);\n\t var isDuplicate = this._set.hasOwnProperty(sStr);\n\t var idx = this._array.length;\n\t if (!isDuplicate || aAllowDuplicates) {\n\t this._array.push(aStr);\n\t }\n\t if (!isDuplicate) {\n\t this._set[sStr] = idx;\n\t }\n\t };\n\t\n\t /**\n\t * Is the given string a member of this set?\n\t *\n\t * @param String aStr\n\t */\n\t ArraySet.prototype.has = function ArraySet_has(aStr) {\n\t var sStr = util.toSetString(aStr);\n\t return this._set.hasOwnProperty(sStr);\n\t };\n\t\n\t /**\n\t * What is the index of the given string in the array?\n\t *\n\t * @param String aStr\n\t */\n\t ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {\n\t var sStr = util.toSetString(aStr);\n\t if (this._set.hasOwnProperty(sStr)) {\n\t return this._set[sStr];\n\t }\n\t throw new Error('\"' + aStr + '\" is not in the set.');\n\t };\n\t\n\t /**\n\t * What is the element at the given index?\n\t *\n\t * @param Number aIdx\n\t */\n\t ArraySet.prototype.at = function ArraySet_at(aIdx) {\n\t if (aIdx >= 0 && aIdx < this._array.length) {\n\t return this._array[aIdx];\n\t }\n\t throw new Error('No element indexed by ' + aIdx);\n\t };\n\t\n\t /**\n\t * Returns the array representation of this set (which has the proper indices\n\t * indicated by indexOf). Note that this is a copy of the internal array used\n\t * for storing the members so that no one can mess with internal state.\n\t */\n\t ArraySet.prototype.toArray = function ArraySet_toArray() {\n\t return this._array.slice();\n\t };\n\t\n\t exports.ArraySet = ArraySet;\n\t}\n\n\n/***/ },\n/* 6 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2014 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t{\n\t var util = __webpack_require__(4);\n\t\n\t /**\n\t * Determine whether mappingB is after mappingA with respect to generated\n\t * position.\n\t */\n\t function generatedPositionAfter(mappingA, mappingB) {\n\t // Optimized for most common case\n\t var lineA = mappingA.generatedLine;\n\t var lineB = mappingB.generatedLine;\n\t var columnA = mappingA.generatedColumn;\n\t var columnB = mappingB.generatedColumn;\n\t return lineB > lineA || lineB == lineA && columnB >= columnA ||\n\t util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0;\n\t }\n\t\n\t /**\n\t * A data structure to provide a sorted view of accumulated mappings in a\n\t * performance conscious manner. It trades a neglibable overhead in general\n\t * case for a large speedup in case of mappings being added in order.\n\t */\n\t function MappingList() {\n\t this._array = [];\n\t this._sorted = true;\n\t // Serves as infimum\n\t this._last = {generatedLine: -1, generatedColumn: 0};\n\t }\n\t\n\t /**\n\t * Iterate through internal items. This method takes the same arguments that\n\t * `Array.prototype.forEach` takes.\n\t *\n\t * NOTE: The order of the mappings is NOT guaranteed.\n\t */\n\t MappingList.prototype.unsortedForEach =\n\t function MappingList_forEach(aCallback, aThisArg) {\n\t this._array.forEach(aCallback, aThisArg);\n\t };\n\t\n\t /**\n\t * Add the given source mapping.\n\t *\n\t * @param Object aMapping\n\t */\n\t MappingList.prototype.add = function MappingList_add(aMapping) {\n\t if (generatedPositionAfter(this._last, aMapping)) {\n\t this._last = aMapping;\n\t this._array.push(aMapping);\n\t } else {\n\t this._sorted = false;\n\t this._array.push(aMapping);\n\t }\n\t };\n\t\n\t /**\n\t * Returns the flat, sorted array of mappings. The mappings are sorted by\n\t * generated position.\n\t *\n\t * WARNING: This method returns internal data without copying, for\n\t * performance. The return value must NOT be mutated, and should be treated as\n\t * an immutable borrow. If you want to take ownership, you must make your own\n\t * copy.\n\t */\n\t MappingList.prototype.toArray = function MappingList_toArray() {\n\t if (!this._sorted) {\n\t this._array.sort(util.compareByGeneratedPositionsInflated);\n\t this._sorted = true;\n\t }\n\t return this._array;\n\t };\n\t\n\t exports.MappingList = MappingList;\n\t}\n\n\n/***/ },\n/* 7 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t{\n\t var util = __webpack_require__(4);\n\t var binarySearch = __webpack_require__(8);\n\t var ArraySet = __webpack_require__(5).ArraySet;\n\t var base64VLQ = __webpack_require__(2);\n\t var quickSort = __webpack_require__(9).quickSort;\n\t\n\t function SourceMapConsumer(aSourceMap) {\n\t var sourceMap = aSourceMap;\n\t if (typeof aSourceMap === 'string') {\n\t sourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/, ''));\n\t }\n\t\n\t return sourceMap.sections != null\n\t ? new IndexedSourceMapConsumer(sourceMap)\n\t : new BasicSourceMapConsumer(sourceMap);\n\t }\n\t\n\t SourceMapConsumer.fromSourceMap = function(aSourceMap) {\n\t return BasicSourceMapConsumer.fromSourceMap(aSourceMap);\n\t }\n\t\n\t /**\n\t * The version of the source mapping spec that we are consuming.\n\t */\n\t SourceMapConsumer.prototype._version = 3;\n\t\n\t // `__generatedMappings` and `__originalMappings` are arrays that hold the\n\t // parsed mapping coordinates from the source map's \"mappings\" attribute. They\n\t // are lazily instantiated, accessed via the `_generatedMappings` and\n\t // `_originalMappings` getters respectively, and we only parse the mappings\n\t // and create these arrays once queried for a source location. We jump through\n\t // these hoops because there can be many thousands of mappings, and parsing\n\t // them is expensive, so we only want to do it if we must.\n\t //\n\t // Each object in the arrays is of the form:\n\t //\n\t // {\n\t // generatedLine: The line number in the generated code,\n\t // generatedColumn: The column number in the generated code,\n\t // source: The path to the original source file that generated this\n\t // chunk of code,\n\t // originalLine: The line number in the original source that\n\t // corresponds to this chunk of generated code,\n\t // originalColumn: The column number in the original source that\n\t // corresponds to this chunk of generated code,\n\t // name: The name of the original symbol which generated this chunk of\n\t // code.\n\t // }\n\t //\n\t // All properties except for `generatedLine` and `generatedColumn` can be\n\t // `null`.\n\t //\n\t // `_generatedMappings` is ordered by the generated positions.\n\t //\n\t // `_originalMappings` is ordered by the original positions.\n\t\n\t SourceMapConsumer.prototype.__generatedMappings = null;\n\t Object.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {\n\t get: function () {\n\t if (!this.__generatedMappings) {\n\t this._parseMappings(this._mappings, this.sourceRoot);\n\t }\n\t\n\t return this.__generatedMappings;\n\t }\n\t });\n\t\n\t SourceMapConsumer.prototype.__originalMappings = null;\n\t Object.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {\n\t get: function () {\n\t if (!this.__originalMappings) {\n\t this._parseMappings(this._mappings, this.sourceRoot);\n\t }\n\t\n\t return this.__originalMappings;\n\t }\n\t });\n\t\n\t SourceMapConsumer.prototype._charIsMappingSeparator =\n\t function SourceMapConsumer_charIsMappingSeparator(aStr, index) {\n\t var c = aStr.charAt(index);\n\t return c === \";\" || c === \",\";\n\t };\n\t\n\t /**\n\t * Parse the mappings in a string in to a data structure which we can easily\n\t * query (the ordered arrays in the `this.__generatedMappings` and\n\t * `this.__originalMappings` properties).\n\t */\n\t SourceMapConsumer.prototype._parseMappings =\n\t function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n\t throw new Error(\"Subclasses must implement _parseMappings\");\n\t };\n\t\n\t SourceMapConsumer.GENERATED_ORDER = 1;\n\t SourceMapConsumer.ORIGINAL_ORDER = 2;\n\t\n\t SourceMapConsumer.GREATEST_LOWER_BOUND = 1;\n\t SourceMapConsumer.LEAST_UPPER_BOUND = 2;\n\t\n\t /**\n\t * Iterate over each mapping between an original source/line/column and a\n\t * generated line/column in this source map.\n\t *\n\t * @param Function aCallback\n\t * The function that is called with each mapping.\n\t * @param Object aContext\n\t * Optional. If specified, this object will be the value of `this` every\n\t * time that `aCallback` is called.\n\t * @param aOrder\n\t * Either `SourceMapConsumer.GENERATED_ORDER` or\n\t * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to\n\t * iterate over the mappings sorted by the generated file's line/column\n\t * order or the original's source/line/column order, respectively. Defaults to\n\t * `SourceMapConsumer.GENERATED_ORDER`.\n\t */\n\t SourceMapConsumer.prototype.eachMapping =\n\t function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {\n\t var context = aContext || null;\n\t var order = aOrder || SourceMapConsumer.GENERATED_ORDER;\n\t\n\t var mappings;\n\t switch (order) {\n\t case SourceMapConsumer.GENERATED_ORDER:\n\t mappings = this._generatedMappings;\n\t break;\n\t case SourceMapConsumer.ORIGINAL_ORDER:\n\t mappings = this._originalMappings;\n\t break;\n\t default:\n\t throw new Error(\"Unknown order of iteration.\");\n\t }\n\t\n\t var sourceRoot = this.sourceRoot;\n\t mappings.map(function (mapping) {\n\t var source = mapping.source === null ? null : this._sources.at(mapping.source);\n\t if (source != null && sourceRoot != null) {\n\t source = util.join(sourceRoot, source);\n\t }\n\t return {\n\t source: source,\n\t generatedLine: mapping.generatedLine,\n\t generatedColumn: mapping.generatedColumn,\n\t originalLine: mapping.originalLine,\n\t originalColumn: mapping.originalColumn,\n\t name: mapping.name === null ? null : this._names.at(mapping.name)\n\t };\n\t }, this).forEach(aCallback, context);\n\t };\n\t\n\t /**\n\t * Returns all generated line and column information for the original source,\n\t * line, and column provided. If no column is provided, returns all mappings\n\t * corresponding to a either the line we are searching for or the next\n\t * closest line that has any mappings. Otherwise, returns all mappings\n\t * corresponding to the given line and either the column we are searching for\n\t * or the next closest column that has any offsets.\n\t *\n\t * The only argument is an object with the following properties:\n\t *\n\t * - source: The filename of the original source.\n\t * - line: The line number in the original source.\n\t * - column: Optional. the column number in the original source.\n\t *\n\t * and an array of objects is returned, each with the following properties:\n\t *\n\t * - line: The line number in the generated source, or null.\n\t * - column: The column number in the generated source, or null.\n\t */\n\t SourceMapConsumer.prototype.allGeneratedPositionsFor =\n\t function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {\n\t var line = util.getArg(aArgs, 'line');\n\t\n\t // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping\n\t // returns the index of the closest mapping less than the needle. By\n\t // setting needle.originalColumn to 0, we thus find the last mapping for\n\t // the given line, provided such a mapping exists.\n\t var needle = {\n\t source: util.getArg(aArgs, 'source'),\n\t originalLine: line,\n\t originalColumn: util.getArg(aArgs, 'column', 0)\n\t };\n\t\n\t if (this.sourceRoot != null) {\n\t needle.source = util.relative(this.sourceRoot, needle.source);\n\t }\n\t if (!this._sources.has(needle.source)) {\n\t return [];\n\t }\n\t needle.source = this._sources.indexOf(needle.source);\n\t\n\t var mappings = [];\n\t\n\t var index = this._findMapping(needle,\n\t this._originalMappings,\n\t \"originalLine\",\n\t \"originalColumn\",\n\t util.compareByOriginalPositions,\n\t binarySearch.LEAST_UPPER_BOUND);\n\t if (index >= 0) {\n\t var mapping = this._originalMappings[index];\n\t\n\t if (aArgs.column === undefined) {\n\t var originalLine = mapping.originalLine;\n\t\n\t // Iterate until either we run out of mappings, or we run into\n\t // a mapping for a different line than the one we found. Since\n\t // mappings are sorted, this is guaranteed to find all mappings for\n\t // the line we found.\n\t while (mapping && mapping.originalLine === originalLine) {\n\t mappings.push({\n\t line: util.getArg(mapping, 'generatedLine', null),\n\t column: util.getArg(mapping, 'generatedColumn', null),\n\t lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n\t });\n\t\n\t mapping = this._originalMappings[++index];\n\t }\n\t } else {\n\t var originalColumn = mapping.originalColumn;\n\t\n\t // Iterate until either we run out of mappings, or we run into\n\t // a mapping for a different line than the one we were searching for.\n\t // Since mappings are sorted, this is guaranteed to find all mappings for\n\t // the line we are searching for.\n\t while (mapping &&\n\t mapping.originalLine === line &&\n\t mapping.originalColumn == originalColumn) {\n\t mappings.push({\n\t line: util.getArg(mapping, 'generatedLine', null),\n\t column: util.getArg(mapping, 'generatedColumn', null),\n\t lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n\t });\n\t\n\t mapping = this._originalMappings[++index];\n\t }\n\t }\n\t }\n\t\n\t return mappings;\n\t };\n\t\n\t exports.SourceMapConsumer = SourceMapConsumer;\n\t\n\t /**\n\t * A BasicSourceMapConsumer instance represents a parsed source map which we can\n\t * query for information about the original file positions by giving it a file\n\t * position in the generated source.\n\t *\n\t * The only parameter is the raw source map (either as a JSON string, or\n\t * already parsed to an object). According to the spec, source maps have the\n\t * following attributes:\n\t *\n\t * - version: Which version of the source map spec this map is following.\n\t * - sources: An array of URLs to the original source files.\n\t * - names: An array of identifiers which can be referrenced by individual mappings.\n\t * - sourceRoot: Optional. The URL root from which all sources are relative.\n\t * - sourcesContent: Optional. An array of contents of the original source files.\n\t * - mappings: A string of base64 VLQs which contain the actual mappings.\n\t * - file: Optional. The generated file this source map is associated with.\n\t *\n\t * Here is an example source map, taken from the source map spec[0]:\n\t *\n\t * {\n\t * version : 3,\n\t * file: \"out.js\",\n\t * sourceRoot : \"\",\n\t * sources: [\"foo.js\", \"bar.js\"],\n\t * names: [\"src\", \"maps\", \"are\", \"fun\"],\n\t * mappings: \"AA,AB;;ABCDE;\"\n\t * }\n\t *\n\t * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#\n\t */\n\t function BasicSourceMapConsumer(aSourceMap) {\n\t var sourceMap = aSourceMap;\n\t if (typeof aSourceMap === 'string') {\n\t sourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/, ''));\n\t }\n\t\n\t var version = util.getArg(sourceMap, 'version');\n\t var sources = util.getArg(sourceMap, 'sources');\n\t // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which\n\t // requires the array) to play nice here.\n\t var names = util.getArg(sourceMap, 'names', []);\n\t var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);\n\t var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);\n\t var mappings = util.getArg(sourceMap, 'mappings');\n\t var file = util.getArg(sourceMap, 'file', null);\n\t\n\t // Once again, Sass deviates from the spec and supplies the version as a\n\t // string rather than a number, so we use loose equality checking here.\n\t if (version != this._version) {\n\t throw new Error('Unsupported version: ' + version);\n\t }\n\t\n\t sources = sources\n\t // Some source maps produce relative source paths like \"./foo.js\" instead of\n\t // \"foo.js\". Normalize these first so that future comparisons will succeed.\n\t // See bugzil.la/1090768.\n\t .map(util.normalize)\n\t // Always ensure that absolute sources are internally stored relative to\n\t // the source root, if the source root is absolute. Not doing this would\n\t // be particularly problematic when the source root is a prefix of the\n\t // source (valid, but why??). See github issue #199 and bugzil.la/1188982.\n\t .map(function (source) {\n\t return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source)\n\t ? util.relative(sourceRoot, source)\n\t : source;\n\t });\n\t\n\t // Pass `true` below to allow duplicate names and sources. While source maps\n\t // are intended to be compressed and deduplicated, the TypeScript compiler\n\t // sometimes generates source maps with duplicates in them. See Github issue\n\t // #72 and bugzil.la/889492.\n\t this._names = ArraySet.fromArray(names, true);\n\t this._sources = ArraySet.fromArray(sources, true);\n\t\n\t this.sourceRoot = sourceRoot;\n\t this.sourcesContent = sourcesContent;\n\t this._mappings = mappings;\n\t this.file = file;\n\t }\n\t\n\t BasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\n\t BasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;\n\t\n\t /**\n\t * Create a BasicSourceMapConsumer from a SourceMapGenerator.\n\t *\n\t * @param SourceMapGenerator aSourceMap\n\t * The source map that will be consumed.\n\t * @returns BasicSourceMapConsumer\n\t */\n\t BasicSourceMapConsumer.fromSourceMap =\n\t function SourceMapConsumer_fromSourceMap(aSourceMap) {\n\t var smc = Object.create(BasicSourceMapConsumer.prototype);\n\t\n\t var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);\n\t var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);\n\t smc.sourceRoot = aSourceMap._sourceRoot;\n\t smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),\n\t smc.sourceRoot);\n\t smc.file = aSourceMap._file;\n\t\n\t // Because we are modifying the entries (by converting string sources and\n\t // names to indices into the sources and names ArraySets), we have to make\n\t // a copy of the entry or else bad things happen. Shared mutable state\n\t // strikes again! See github issue #191.\n\t\n\t var generatedMappings = aSourceMap._mappings.toArray().slice();\n\t var destGeneratedMappings = smc.__generatedMappings = [];\n\t var destOriginalMappings = smc.__originalMappings = [];\n\t\n\t for (var i = 0, length = generatedMappings.length; i < length; i++) {\n\t var srcMapping = generatedMappings[i];\n\t var destMapping = new Mapping;\n\t destMapping.generatedLine = srcMapping.generatedLine;\n\t destMapping.generatedColumn = srcMapping.generatedColumn;\n\t\n\t if (srcMapping.source) {\n\t destMapping.source = sources.indexOf(srcMapping.source);\n\t destMapping.originalLine = srcMapping.originalLine;\n\t destMapping.originalColumn = srcMapping.originalColumn;\n\t\n\t if (srcMapping.name) {\n\t destMapping.name = names.indexOf(srcMapping.name);\n\t }\n\t\n\t destOriginalMappings.push(destMapping);\n\t }\n\t\n\t destGeneratedMappings.push(destMapping);\n\t }\n\t\n\t quickSort(smc.__originalMappings, util.compareByOriginalPositions);\n\t\n\t return smc;\n\t };\n\t\n\t /**\n\t * The version of the source mapping spec that we are consuming.\n\t */\n\t BasicSourceMapConsumer.prototype._version = 3;\n\t\n\t /**\n\t * The list of original sources.\n\t */\n\t Object.defineProperty(BasicSourceMapConsumer.prototype, 'sources', {\n\t get: function () {\n\t return this._sources.toArray().map(function (s) {\n\t return this.sourceRoot != null ? util.join(this.sourceRoot, s) : s;\n\t }, this);\n\t }\n\t });\n\t\n\t /**\n\t * Provide the JIT with a nice shape / hidden class.\n\t */\n\t function Mapping() {\n\t this.generatedLine = 0;\n\t this.generatedColumn = 0;\n\t this.source = null;\n\t this.originalLine = null;\n\t this.originalColumn = null;\n\t this.name = null;\n\t }\n\t\n\t /**\n\t * Parse the mappings in a string in to a data structure which we can easily\n\t * query (the ordered arrays in the `this.__generatedMappings` and\n\t * `this.__originalMappings` properties).\n\t */\n\t BasicSourceMapConsumer.prototype._parseMappings =\n\t function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n\t var generatedLine = 1;\n\t var previousGeneratedColumn = 0;\n\t var previousOriginalLine = 0;\n\t var previousOriginalColumn = 0;\n\t var previousSource = 0;\n\t var previousName = 0;\n\t var length = aStr.length;\n\t var index = 0;\n\t var cachedSegments = {};\n\t var temp = {};\n\t var originalMappings = [];\n\t var generatedMappings = [];\n\t var mapping, str, segment, end, value;\n\t\n\t while (index < length) {\n\t if (aStr.charAt(index) === ';') {\n\t generatedLine++;\n\t index++;\n\t previousGeneratedColumn = 0;\n\t }\n\t else if (aStr.charAt(index) === ',') {\n\t index++;\n\t }\n\t else {\n\t mapping = new Mapping();\n\t mapping.generatedLine = generatedLine;\n\t\n\t // Because each offset is encoded relative to the previous one,\n\t // many segments often have the same encoding. We can exploit this\n\t // fact by caching the parsed variable length fields of each segment,\n\t // allowing us to avoid a second parse if we encounter the same\n\t // segment again.\n\t for (end = index; end < length; end++) {\n\t if (this._charIsMappingSeparator(aStr, end)) {\n\t break;\n\t }\n\t }\n\t str = aStr.slice(index, end);\n\t\n\t segment = cachedSegments[str];\n\t if (segment) {\n\t index += str.length;\n\t } else {\n\t segment = [];\n\t while (index < end) {\n\t base64VLQ.decode(aStr, index, temp);\n\t value = temp.value;\n\t index = temp.rest;\n\t segment.push(value);\n\t }\n\t\n\t if (segment.length === 2) {\n\t throw new Error('Found a source, but no line and column');\n\t }\n\t\n\t if (segment.length === 3) {\n\t throw new Error('Found a source and line, but no column');\n\t }\n\t\n\t cachedSegments[str] = segment;\n\t }\n\t\n\t // Generated column.\n\t mapping.generatedColumn = previousGeneratedColumn + segment[0];\n\t previousGeneratedColumn = mapping.generatedColumn;\n\t\n\t if (segment.length > 1) {\n\t // Original source.\n\t mapping.source = previousSource + segment[1];\n\t previousSource += segment[1];\n\t\n\t // Original line.\n\t mapping.originalLine = previousOriginalLine + segment[2];\n\t previousOriginalLine = mapping.originalLine;\n\t // Lines are stored 0-based\n\t mapping.originalLine += 1;\n\t\n\t // Original column.\n\t mapping.originalColumn = previousOriginalColumn + segment[3];\n\t previousOriginalColumn = mapping.originalColumn;\n\t\n\t if (segment.length > 4) {\n\t // Original name.\n\t mapping.name = previousName + segment[4];\n\t previousName += segment[4];\n\t }\n\t }\n\t\n\t generatedMappings.push(mapping);\n\t if (typeof mapping.originalLine === 'number') {\n\t originalMappings.push(mapping);\n\t }\n\t }\n\t }\n\t\n\t quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated);\n\t this.__generatedMappings = generatedMappings;\n\t\n\t quickSort(originalMappings, util.compareByOriginalPositions);\n\t this.__originalMappings = originalMappings;\n\t };\n\t\n\t /**\n\t * Find the mapping that best matches the hypothetical \"needle\" mapping that\n\t * we are searching for in the given \"haystack\" of mappings.\n\t */\n\t BasicSourceMapConsumer.prototype._findMapping =\n\t function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,\n\t aColumnName, aComparator, aBias) {\n\t // To return the position we are searching for, we must first find the\n\t // mapping for the given position and then return the opposite position it\n\t // points to. Because the mappings are sorted, we can use binary search to\n\t // find the best mapping.\n\t\n\t if (aNeedle[aLineName] <= 0) {\n\t throw new TypeError('Line must be greater than or equal to 1, got '\n\t + aNeedle[aLineName]);\n\t }\n\t if (aNeedle[aColumnName] < 0) {\n\t throw new TypeError('Column must be greater than or equal to 0, got '\n\t + aNeedle[aColumnName]);\n\t }\n\t\n\t return binarySearch.search(aNeedle, aMappings, aComparator, aBias);\n\t };\n\t\n\t /**\n\t * Compute the last column for each generated mapping. The last column is\n\t * inclusive.\n\t */\n\t BasicSourceMapConsumer.prototype.computeColumnSpans =\n\t function SourceMapConsumer_computeColumnSpans() {\n\t for (var index = 0; index < this._generatedMappings.length; ++index) {\n\t var mapping = this._generatedMappings[index];\n\t\n\t // Mappings do not contain a field for the last generated columnt. We\n\t // can come up with an optimistic estimate, however, by assuming that\n\t // mappings are contiguous (i.e. given two consecutive mappings, the\n\t // first mapping ends where the second one starts).\n\t if (index + 1 < this._generatedMappings.length) {\n\t var nextMapping = this._generatedMappings[index + 1];\n\t\n\t if (mapping.generatedLine === nextMapping.generatedLine) {\n\t mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;\n\t continue;\n\t }\n\t }\n\t\n\t // The last mapping for each line spans the entire line.\n\t mapping.lastGeneratedColumn = Infinity;\n\t }\n\t };\n\t\n\t /**\n\t * Returns the original source, line, and column information for the generated\n\t * source's line and column positions provided. The only argument is an object\n\t * with the following properties:\n\t *\n\t * - line: The line number in the generated source.\n\t * - column: The column number in the generated source.\n\t * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n\t * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n\t * closest element that is smaller than or greater than the one we are\n\t * searching for, respectively, if the exact element cannot be found.\n\t * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n\t *\n\t * and an object is returned with the following properties:\n\t *\n\t * - source: The original source file, or null.\n\t * - line: The line number in the original source, or null.\n\t * - column: The column number in the original source, or null.\n\t * - name: The original identifier, or null.\n\t */\n\t BasicSourceMapConsumer.prototype.originalPositionFor =\n\t function SourceMapConsumer_originalPositionFor(aArgs) {\n\t var needle = {\n\t generatedLine: util.getArg(aArgs, 'line'),\n\t generatedColumn: util.getArg(aArgs, 'column')\n\t };\n\t\n\t var index = this._findMapping(\n\t needle,\n\t this._generatedMappings,\n\t \"generatedLine\",\n\t \"generatedColumn\",\n\t util.compareByGeneratedPositionsDeflated,\n\t util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n\t );\n\t\n\t if (index >= 0) {\n\t var mapping = this._generatedMappings[index];\n\t\n\t if (mapping.generatedLine === needle.generatedLine) {\n\t var source = util.getArg(mapping, 'source', null);\n\t if (source !== null) {\n\t source = this._sources.at(source);\n\t if (this.sourceRoot != null) {\n\t source = util.join(this.sourceRoot, source);\n\t }\n\t }\n\t var name = util.getArg(mapping, 'name', null);\n\t if (name !== null) {\n\t name = this._names.at(name);\n\t }\n\t return {\n\t source: source,\n\t line: util.getArg(mapping, 'originalLine', null),\n\t column: util.getArg(mapping, 'originalColumn', null),\n\t name: name\n\t };\n\t }\n\t }\n\t\n\t return {\n\t source: null,\n\t line: null,\n\t column: null,\n\t name: null\n\t };\n\t };\n\t\n\t /**\n\t * Return true if we have the source content for every source in the source\n\t * map, false otherwise.\n\t */\n\t BasicSourceMapConsumer.prototype.hasContentsOfAllSources =\n\t function BasicSourceMapConsumer_hasContentsOfAllSources() {\n\t if (!this.sourcesContent) {\n\t return false;\n\t }\n\t return this.sourcesContent.length >= this._sources.size() &&\n\t !this.sourcesContent.some(function (sc) { return sc == null; });\n\t };\n\t\n\t /**\n\t * Returns the original source content. The only argument is the url of the\n\t * original source file. Returns null if no original source content is\n\t * available.\n\t */\n\t BasicSourceMapConsumer.prototype.sourceContentFor =\n\t function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n\t if (!this.sourcesContent) {\n\t return null;\n\t }\n\t\n\t if (this.sourceRoot != null) {\n\t aSource = util.relative(this.sourceRoot, aSource);\n\t }\n\t\n\t if (this._sources.has(aSource)) {\n\t return this.sourcesContent[this._sources.indexOf(aSource)];\n\t }\n\t\n\t var url;\n\t if (this.sourceRoot != null\n\t && (url = util.urlParse(this.sourceRoot))) {\n\t // XXX: file:// URIs and absolute paths lead to unexpected behavior for\n\t // many users. We can help them out when they expect file:// URIs to\n\t // behave like it would if they were running a local HTTP server. See\n\t // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.\n\t var fileUriAbsPath = aSource.replace(/^file:\\/\\//, \"\");\n\t if (url.scheme == \"file\"\n\t && this._sources.has(fileUriAbsPath)) {\n\t return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]\n\t }\n\t\n\t if ((!url.path || url.path == \"/\")\n\t && this._sources.has(\"/\" + aSource)) {\n\t return this.sourcesContent[this._sources.indexOf(\"/\" + aSource)];\n\t }\n\t }\n\t\n\t // This function is used recursively from\n\t // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we\n\t // don't want to throw if we can't find the source - we just want to\n\t // return null, so we provide a flag to exit gracefully.\n\t if (nullOnMissing) {\n\t return null;\n\t }\n\t else {\n\t throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n\t }\n\t };\n\t\n\t /**\n\t * Returns the generated line and column information for the original source,\n\t * line, and column positions provided. The only argument is an object with\n\t * the following properties:\n\t *\n\t * - source: The filename of the original source.\n\t * - line: The line number in the original source.\n\t * - column: The column number in the original source.\n\t * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n\t * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n\t * closest element that is smaller than or greater than the one we are\n\t * searching for, respectively, if the exact element cannot be found.\n\t * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n\t *\n\t * and an object is returned with the following properties:\n\t *\n\t * - line: The line number in the generated source, or null.\n\t * - column: The column number in the generated source, or null.\n\t */\n\t BasicSourceMapConsumer.prototype.generatedPositionFor =\n\t function SourceMapConsumer_generatedPositionFor(aArgs) {\n\t var source = util.getArg(aArgs, 'source');\n\t if (this.sourceRoot != null) {\n\t source = util.relative(this.sourceRoot, source);\n\t }\n\t if (!this._sources.has(source)) {\n\t return {\n\t line: null,\n\t column: null,\n\t lastColumn: null\n\t };\n\t }\n\t source = this._sources.indexOf(source);\n\t\n\t var needle = {\n\t source: source,\n\t originalLine: util.getArg(aArgs, 'line'),\n\t originalColumn: util.getArg(aArgs, 'column')\n\t };\n\t\n\t var index = this._findMapping(\n\t needle,\n\t this._originalMappings,\n\t \"originalLine\",\n\t \"originalColumn\",\n\t util.compareByOriginalPositions,\n\t util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n\t );\n\t\n\t if (index >= 0) {\n\t var mapping = this._originalMappings[index];\n\t\n\t if (mapping.source === needle.source) {\n\t return {\n\t line: util.getArg(mapping, 'generatedLine', null),\n\t column: util.getArg(mapping, 'generatedColumn', null),\n\t lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n\t };\n\t }\n\t }\n\t\n\t return {\n\t line: null,\n\t column: null,\n\t lastColumn: null\n\t };\n\t };\n\t\n\t exports.BasicSourceMapConsumer = BasicSourceMapConsumer;\n\t\n\t /**\n\t * An IndexedSourceMapConsumer instance represents a parsed source map which\n\t * we can query for information. It differs from BasicSourceMapConsumer in\n\t * that it takes \"indexed\" source maps (i.e. ones with a \"sections\" field) as\n\t * input.\n\t *\n\t * The only parameter is a raw source map (either as a JSON string, or already\n\t * parsed to an object). According to the spec for indexed source maps, they\n\t * have the following attributes:\n\t *\n\t * - version: Which version of the source map spec this map is following.\n\t * - file: Optional. The generated file this source map is associated with.\n\t * - sections: A list of section definitions.\n\t *\n\t * Each value under the \"sections\" field has two fields:\n\t * - offset: The offset into the original specified at which this section\n\t * begins to apply, defined as an object with a \"line\" and \"column\"\n\t * field.\n\t * - map: A source map definition. This source map could also be indexed,\n\t * but doesn't have to be.\n\t *\n\t * Instead of the \"map\" field, it's also possible to have a \"url\" field\n\t * specifying a URL to retrieve a source map from, but that's currently\n\t * unsupported.\n\t *\n\t * Here's an example source map, taken from the source map spec[0], but\n\t * modified to omit a section which uses the \"url\" field.\n\t *\n\t * {\n\t * version : 3,\n\t * file: \"app.js\",\n\t * sections: [{\n\t * offset: {line:100, column:10},\n\t * map: {\n\t * version : 3,\n\t * file: \"section.js\",\n\t * sources: [\"foo.js\", \"bar.js\"],\n\t * names: [\"src\", \"maps\", \"are\", \"fun\"],\n\t * mappings: \"AAAA,E;;ABCDE;\"\n\t * }\n\t * }],\n\t * }\n\t *\n\t * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt\n\t */\n\t function IndexedSourceMapConsumer(aSourceMap) {\n\t var sourceMap = aSourceMap;\n\t if (typeof aSourceMap === 'string') {\n\t sourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/, ''));\n\t }\n\t\n\t var version = util.getArg(sourceMap, 'version');\n\t var sections = util.getArg(sourceMap, 'sections');\n\t\n\t if (version != this._version) {\n\t throw new Error('Unsupported version: ' + version);\n\t }\n\t\n\t this._sources = new ArraySet();\n\t this._names = new ArraySet();\n\t\n\t var lastOffset = {\n\t line: -1,\n\t column: 0\n\t };\n\t this._sections = sections.map(function (s) {\n\t if (s.url) {\n\t // The url field will require support for asynchronicity.\n\t // See https://github.com/mozilla/source-map/issues/16\n\t throw new Error('Support for url field in sections not implemented.');\n\t }\n\t var offset = util.getArg(s, 'offset');\n\t var offsetLine = util.getArg(offset, 'line');\n\t var offsetColumn = util.getArg(offset, 'column');\n\t\n\t if (offsetLine < lastOffset.line ||\n\t (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) {\n\t throw new Error('Section offsets must be ordered and non-overlapping.');\n\t }\n\t lastOffset = offset;\n\t\n\t return {\n\t generatedOffset: {\n\t // The offset fields are 0-based, but we use 1-based indices when\n\t // encoding/decoding from VLQ.\n\t generatedLine: offsetLine + 1,\n\t generatedColumn: offsetColumn + 1\n\t },\n\t consumer: new SourceMapConsumer(util.getArg(s, 'map'))\n\t }\n\t });\n\t }\n\t\n\t IndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\n\t IndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;\n\t\n\t /**\n\t * The version of the source mapping spec that we are consuming.\n\t */\n\t IndexedSourceMapConsumer.prototype._version = 3;\n\t\n\t /**\n\t * The list of original sources.\n\t */\n\t Object.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', {\n\t get: function () {\n\t var sources = [];\n\t for (var i = 0; i < this._sections.length; i++) {\n\t for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {\n\t sources.push(this._sections[i].consumer.sources[j]);\n\t }\n\t }\n\t return sources;\n\t }\n\t });\n\t\n\t /**\n\t * Returns the original source, line, and column information for the generated\n\t * source's line and column positions provided. The only argument is an object\n\t * with the following properties:\n\t *\n\t * - line: The line number in the generated source.\n\t * - column: The column number in the generated source.\n\t *\n\t * and an object is returned with the following properties:\n\t *\n\t * - source: The original source file, or null.\n\t * - line: The line number in the original source, or null.\n\t * - column: The column number in the original source, or null.\n\t * - name: The original identifier, or null.\n\t */\n\t IndexedSourceMapConsumer.prototype.originalPositionFor =\n\t function IndexedSourceMapConsumer_originalPositionFor(aArgs) {\n\t var needle = {\n\t generatedLine: util.getArg(aArgs, 'line'),\n\t generatedColumn: util.getArg(aArgs, 'column')\n\t };\n\t\n\t // Find the section containing the generated position we're trying to map\n\t // to an original position.\n\t var sectionIndex = binarySearch.search(needle, this._sections,\n\t function(needle, section) {\n\t var cmp = needle.generatedLine - section.generatedOffset.generatedLine;\n\t if (cmp) {\n\t return cmp;\n\t }\n\t\n\t return (needle.generatedColumn -\n\t section.generatedOffset.generatedColumn);\n\t });\n\t var section = this._sections[sectionIndex];\n\t\n\t if (!section) {\n\t return {\n\t source: null,\n\t line: null,\n\t column: null,\n\t name: null\n\t };\n\t }\n\t\n\t return section.consumer.originalPositionFor({\n\t line: needle.generatedLine -\n\t (section.generatedOffset.generatedLine - 1),\n\t column: needle.generatedColumn -\n\t (section.generatedOffset.generatedLine === needle.generatedLine\n\t ? section.generatedOffset.generatedColumn - 1\n\t : 0),\n\t bias: aArgs.bias\n\t });\n\t };\n\t\n\t /**\n\t * Return true if we have the source content for every source in the source\n\t * map, false otherwise.\n\t */\n\t IndexedSourceMapConsumer.prototype.hasContentsOfAllSources =\n\t function IndexedSourceMapConsumer_hasContentsOfAllSources() {\n\t return this._sections.every(function (s) {\n\t return s.consumer.hasContentsOfAllSources();\n\t });\n\t };\n\t\n\t /**\n\t * Returns the original source content. The only argument is the url of the\n\t * original source file. Returns null if no original source content is\n\t * available.\n\t */\n\t IndexedSourceMapConsumer.prototype.sourceContentFor =\n\t function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n\t for (var i = 0; i < this._sections.length; i++) {\n\t var section = this._sections[i];\n\t\n\t var content = section.consumer.sourceContentFor(aSource, true);\n\t if (content) {\n\t return content;\n\t }\n\t }\n\t if (nullOnMissing) {\n\t return null;\n\t }\n\t else {\n\t throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n\t }\n\t };\n\t\n\t /**\n\t * Returns the generated line and column information for the original source,\n\t * line, and column positions provided. The only argument is an object with\n\t * the following properties:\n\t *\n\t * - source: The filename of the original source.\n\t * - line: The line number in the original source.\n\t * - column: The column number in the original source.\n\t *\n\t * and an object is returned with the following properties:\n\t *\n\t * - line: The line number in the generated source, or null.\n\t * - column: The column number in the generated source, or null.\n\t */\n\t IndexedSourceMapConsumer.prototype.generatedPositionFor =\n\t function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {\n\t for (var i = 0; i < this._sections.length; i++) {\n\t var section = this._sections[i];\n\t\n\t // Only consider this section if the requested source is in the list of\n\t // sources of the consumer.\n\t if (section.consumer.sources.indexOf(util.getArg(aArgs, 'source')) === -1) {\n\t continue;\n\t }\n\t var generatedPosition = section.consumer.generatedPositionFor(aArgs);\n\t if (generatedPosition) {\n\t var ret = {\n\t line: generatedPosition.line +\n\t (section.generatedOffset.generatedLine - 1),\n\t column: generatedPosition.column +\n\t (section.generatedOffset.generatedLine === generatedPosition.line\n\t ? section.generatedOffset.generatedColumn - 1\n\t : 0)\n\t };\n\t return ret;\n\t }\n\t }\n\t\n\t return {\n\t line: null,\n\t column: null\n\t };\n\t };\n\t\n\t /**\n\t * Parse the mappings in a string in to a data structure which we can easily\n\t * query (the ordered arrays in the `this.__generatedMappings` and\n\t * `this.__originalMappings` properties).\n\t */\n\t IndexedSourceMapConsumer.prototype._parseMappings =\n\t function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n\t this.__generatedMappings = [];\n\t this.__originalMappings = [];\n\t for (var i = 0; i < this._sections.length; i++) {\n\t var section = this._sections[i];\n\t var sectionMappings = section.consumer._generatedMappings;\n\t for (var j = 0; j < sectionMappings.length; j++) {\n\t var mapping = sectionMappings[j];\n\t\n\t var source = section.consumer._sources.at(mapping.source);\n\t if (section.consumer.sourceRoot !== null) {\n\t source = util.join(section.consumer.sourceRoot, source);\n\t }\n\t this._sources.add(source);\n\t source = this._sources.indexOf(source);\n\t\n\t var name = section.consumer._names.at(mapping.name);\n\t this._names.add(name);\n\t name = this._names.indexOf(name);\n\t\n\t // The mappings coming from the consumer for the section have\n\t // generated positions relative to the start of the section, so we\n\t // need to offset them to be relative to the start of the concatenated\n\t // generated file.\n\t var adjustedMapping = {\n\t source: source,\n\t generatedLine: mapping.generatedLine +\n\t (section.generatedOffset.generatedLine - 1),\n\t generatedColumn: mapping.generatedColumn +\n\t (section.generatedOffset.generatedLine === mapping.generatedLine\n\t ? section.generatedOffset.generatedColumn - 1\n\t : 0),\n\t originalLine: mapping.originalLine,\n\t originalColumn: mapping.originalColumn,\n\t name: name\n\t };\n\t\n\t this.__generatedMappings.push(adjustedMapping);\n\t if (typeof adjustedMapping.originalLine === 'number') {\n\t this.__originalMappings.push(adjustedMapping);\n\t }\n\t }\n\t }\n\t\n\t quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);\n\t quickSort(this.__originalMappings, util.compareByOriginalPositions);\n\t };\n\t\n\t exports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;\n\t}\n\n\n/***/ },\n/* 8 */\n/***/ function(module, exports) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t{\n\t exports.GREATEST_LOWER_BOUND = 1;\n\t exports.LEAST_UPPER_BOUND = 2;\n\t\n\t /**\n\t * Recursive implementation of binary search.\n\t *\n\t * @param aLow Indices here and lower do not contain the needle.\n\t * @param aHigh Indices here and higher do not contain the needle.\n\t * @param aNeedle The element being searched for.\n\t * @param aHaystack The non-empty array being searched.\n\t * @param aCompare Function which takes two elements and returns -1, 0, or 1.\n\t * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n\t * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n\t * closest element that is smaller than or greater than the one we are\n\t * searching for, respectively, if the exact element cannot be found.\n\t */\n\t function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {\n\t // This function terminates when one of the following is true:\n\t //\n\t // 1. We find the exact element we are looking for.\n\t //\n\t // 2. We did not find the exact element, but we can return the index of\n\t // the next-closest element.\n\t //\n\t // 3. We did not find the exact element, and there is no next-closest\n\t // element than the one we are searching for, so we return -1.\n\t var mid = Math.floor((aHigh - aLow) / 2) + aLow;\n\t var cmp = aCompare(aNeedle, aHaystack[mid], true);\n\t if (cmp === 0) {\n\t // Found the element we are looking for.\n\t return mid;\n\t }\n\t else if (cmp > 0) {\n\t // Our needle is greater than aHaystack[mid].\n\t if (aHigh - mid > 1) {\n\t // The element is in the upper half.\n\t return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);\n\t }\n\t\n\t // The exact needle element was not found in this haystack. Determine if\n\t // we are in termination case (3) or (2) and return the appropriate thing.\n\t if (aBias == exports.LEAST_UPPER_BOUND) {\n\t return aHigh < aHaystack.length ? aHigh : -1;\n\t } else {\n\t return mid;\n\t }\n\t }\n\t else {\n\t // Our needle is less than aHaystack[mid].\n\t if (mid - aLow > 1) {\n\t // The element is in the lower half.\n\t return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);\n\t }\n\t\n\t // we are in termination case (3) or (2) and return the appropriate thing.\n\t if (aBias == exports.LEAST_UPPER_BOUND) {\n\t return mid;\n\t } else {\n\t return aLow < 0 ? -1 : aLow;\n\t }\n\t }\n\t }\n\t\n\t /**\n\t * This is an implementation of binary search which will always try and return\n\t * the index of the closest element if there is no exact hit. This is because\n\t * mappings between original and generated line/col pairs are single points,\n\t * and there is an implicit region between each of them, so a miss just means\n\t * that you aren't on the very start of a region.\n\t *\n\t * @param aNeedle The element you are looking for.\n\t * @param aHaystack The array that is being searched.\n\t * @param aCompare A function which takes the needle and an element in the\n\t * array and returns -1, 0, or 1 depending on whether the needle is less\n\t * than, equal to, or greater than the element, respectively.\n\t * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n\t * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n\t * closest element that is smaller than or greater than the one we are\n\t * searching for, respectively, if the exact element cannot be found.\n\t * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.\n\t */\n\t exports.search = function search(aNeedle, aHaystack, aCompare, aBias) {\n\t if (aHaystack.length === 0) {\n\t return -1;\n\t }\n\t\n\t var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,\n\t aCompare, aBias || exports.GREATEST_LOWER_BOUND);\n\t if (index < 0) {\n\t return -1;\n\t }\n\t\n\t // We have found either the exact element, or the next-closest element than\n\t // the one we are searching for. However, there may be more than one such\n\t // element. Make sure we always return the smallest of these.\n\t while (index - 1 >= 0) {\n\t if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {\n\t break;\n\t }\n\t --index;\n\t }\n\t\n\t return index;\n\t };\n\t}\n\n\n/***/ },\n/* 9 */\n/***/ function(module, exports) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t{\n\t // It turns out that some (most?) JavaScript engines don't self-host\n\t // `Array.prototype.sort`. This makes sense because C++ will likely remain\n\t // faster than JS when doing raw CPU-intensive sorting. However, when using a\n\t // custom comparator function, calling back and forth between the VM's C++ and\n\t // JIT'd JS is rather slow *and* loses JIT type information, resulting in\n\t // worse generated code for the comparator function than would be optimal. In\n\t // fact, when sorting with a comparator, these costs outweigh the benefits of\n\t // sorting in C++. By using our own JS-implemented Quick Sort (below), we get\n\t // a ~3500ms mean speed-up in `bench/bench.html`.\n\t\n\t /**\n\t * Swap the elements indexed by `x` and `y` in the array `ary`.\n\t *\n\t * @param {Array} ary\n\t * The array.\n\t * @param {Number} x\n\t * The index of the first item.\n\t * @param {Number} y\n\t * The index of the second item.\n\t */\n\t function swap(ary, x, y) {\n\t var temp = ary[x];\n\t ary[x] = ary[y];\n\t ary[y] = temp;\n\t }\n\t\n\t /**\n\t * Returns a random integer within the range `low .. high` inclusive.\n\t *\n\t * @param {Number} low\n\t * The lower bound on the range.\n\t * @param {Number} high\n\t * The upper bound on the range.\n\t */\n\t function randomIntInRange(low, high) {\n\t return Math.round(low + (Math.random() * (high - low)));\n\t }\n\t\n\t /**\n\t * The Quick Sort algorithm.\n\t *\n\t * @param {Array} ary\n\t * An array to sort.\n\t * @param {function} comparator\n\t * Function to use to compare two items.\n\t * @param {Number} p\n\t * Start index of the array\n\t * @param {Number} r\n\t * End index of the array\n\t */\n\t function doQuickSort(ary, comparator, p, r) {\n\t // If our lower bound is less than our upper bound, we (1) partition the\n\t // array into two pieces and (2) recurse on each half. If it is not, this is\n\t // the empty array and our base case.\n\t\n\t if (p < r) {\n\t // (1) Partitioning.\n\t //\n\t // The partitioning chooses a pivot between `p` and `r` and moves all\n\t // elements that are less than or equal to the pivot to the before it, and\n\t // all the elements that are greater than it after it. The effect is that\n\t // once partition is done, the pivot is in the exact place it will be when\n\t // the array is put in sorted order, and it will not need to be moved\n\t // again. This runs in O(n) time.\n\t\n\t // Always choose a random pivot so that an input array which is reverse\n\t // sorted does not cause O(n^2) running time.\n\t var pivotIndex = randomIntInRange(p, r);\n\t var i = p - 1;\n\t\n\t swap(ary, pivotIndex, r);\n\t var pivot = ary[r];\n\t\n\t // Immediately after `j` is incremented in this loop, the following hold\n\t // true:\n\t //\n\t // * Every element in `ary[p .. i]` is less than or equal to the pivot.\n\t //\n\t // * Every element in `ary[i+1 .. j-1]` is greater than the pivot.\n\t for (var j = p; j < r; j++) {\n\t if (comparator(ary[j], pivot) <= 0) {\n\t i += 1;\n\t swap(ary, i, j);\n\t }\n\t }\n\t\n\t swap(ary, i + 1, j);\n\t var q = i + 1;\n\t\n\t // (2) Recurse on each half.\n\t\n\t doQuickSort(ary, comparator, p, q - 1);\n\t doQuickSort(ary, comparator, q + 1, r);\n\t }\n\t }\n\t\n\t /**\n\t * Sort the given array in-place with the given comparator function.\n\t *\n\t * @param {Array} ary\n\t * An array to sort.\n\t * @param {function} comparator\n\t * Function to use to compare two items.\n\t */\n\t exports.quickSort = function (ary, comparator) {\n\t doQuickSort(ary, comparator, 0, ary.length - 1);\n\t };\n\t}\n\n\n/***/ },\n/* 10 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t/* -*- Mode: js; js-indent-level: 2; -*- */\n\t/*\n\t * Copyright 2011 Mozilla Foundation and contributors\n\t * Licensed under the New BSD license. See LICENSE or:\n\t * http://opensource.org/licenses/BSD-3-Clause\n\t */\n\t{\n\t var SourceMapGenerator = __webpack_require__(1).SourceMapGenerator;\n\t var util = __webpack_require__(4);\n\t\n\t // Matches a Windows-style `\\r\\n` newline or a `\\n` newline used by all other\n\t // operating systems these days (capturing the result).\n\t var REGEX_NEWLINE = /(\\r?\\n)/;\n\t\n\t // Newline character code for charCodeAt() comparisons\n\t var NEWLINE_CODE = 10;\n\t\n\t // Private symbol for identifying `SourceNode`s when multiple versions of\n\t // the source-map library are loaded. This MUST NOT CHANGE across\n\t // versions!\n\t var isSourceNode = \"$$$isSourceNode$$$\";\n\t\n\t /**\n\t * SourceNodes provide a way to abstract over interpolating/concatenating\n\t * snippets of generated JavaScript source code while maintaining the line and\n\t * column information associated with the original source code.\n\t *\n\t * @param aLine The original line number.\n\t * @param aColumn The original column number.\n\t * @param aSource The original source's filename.\n\t * @param aChunks Optional. An array of strings which are snippets of\n\t * generated JS, or other SourceNodes.\n\t * @param aName The original identifier.\n\t */\n\t function SourceNode(aLine, aColumn, aSource, aChunks, aName) {\n\t this.children = [];\n\t this.sourceContents = {};\n\t this.line = aLine == null ? null : aLine;\n\t this.column = aColumn == null ? null : aColumn;\n\t this.source = aSource == null ? null : aSource;\n\t this.name = aName == null ? null : aName;\n\t this[isSourceNode] = true;\n\t if (aChunks != null) this.add(aChunks);\n\t }\n\t\n\t /**\n\t * Creates a SourceNode from generated code and a SourceMapConsumer.\n\t *\n\t * @param aGeneratedCode The generated code\n\t * @param aSourceMapConsumer The SourceMap for the generated code\n\t * @param aRelativePath Optional. The path that relative sources in the\n\t * SourceMapConsumer should be relative to.\n\t */\n\t SourceNode.fromStringWithSourceMap =\n\t function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {\n\t // The SourceNode we want to fill with the generated code\n\t // and the SourceMap\n\t var node = new SourceNode();\n\t\n\t // All even indices of this array are one line of the generated code,\n\t // while all odd indices are the newlines between two adjacent lines\n\t // (since `REGEX_NEWLINE` captures its match).\n\t // Processed fragments are removed from this array, by calling `shiftNextLine`.\n\t var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);\n\t var shiftNextLine = function() {\n\t var lineContents = remainingLines.shift();\n\t // The last line of a file might not have a newline.\n\t var newLine = remainingLines.shift() || \"\";\n\t return lineContents + newLine;\n\t };\n\t\n\t // We need to remember the position of \"remainingLines\"\n\t var lastGeneratedLine = 1, lastGeneratedColumn = 0;\n\t\n\t // The generate SourceNodes we need a code range.\n\t // To extract it current and last mapping is used.\n\t // Here we store the last mapping.\n\t var lastMapping = null;\n\t\n\t aSourceMapConsumer.eachMapping(function (mapping) {\n\t if (lastMapping !== null) {\n\t // We add the code from \"lastMapping\" to \"mapping\":\n\t // First check if there is a new line in between.\n\t if (lastGeneratedLine < mapping.generatedLine) {\n\t // Associate first line with \"lastMapping\"\n\t addMappingWithCode(lastMapping, shiftNextLine());\n\t lastGeneratedLine++;\n\t lastGeneratedColumn = 0;\n\t // The remaining code is added without mapping\n\t } else {\n\t // There is no new line in between.\n\t // Associate the code between \"lastGeneratedColumn\" and\n\t // \"mapping.generatedColumn\" with \"lastMapping\"\n\t var nextLine = remainingLines[0];\n\t var code = nextLine.substr(0, mapping.generatedColumn -\n\t lastGeneratedColumn);\n\t remainingLines[0] = nextLine.substr(mapping.generatedColumn -\n\t lastGeneratedColumn);\n\t lastGeneratedColumn = mapping.generatedColumn;\n\t addMappingWithCode(lastMapping, code);\n\t // No more remaining code, continue\n\t lastMapping = mapping;\n\t return;\n\t }\n\t }\n\t // We add the generated code until the first mapping\n\t // to the SourceNode without any mapping.\n\t // Each line is added as separate string.\n\t while (lastGeneratedLine < mapping.generatedLine) {\n\t node.add(shiftNextLine());\n\t lastGeneratedLine++;\n\t }\n\t if (lastGeneratedColumn < mapping.generatedColumn) {\n\t var nextLine = remainingLines[0];\n\t node.add(nextLine.substr(0, mapping.generatedColumn));\n\t remainingLines[0] = nextLine.substr(mapping.generatedColumn);\n\t lastGeneratedColumn = mapping.generatedColumn;\n\t }\n\t lastMapping = mapping;\n\t }, this);\n\t // We have processed all mappings.\n\t if (remainingLines.length > 0) {\n\t if (lastMapping) {\n\t // Associate the remaining code in the current line with \"lastMapping\"\n\t addMappingWithCode(lastMapping, shiftNextLine());\n\t }\n\t // and add the remaining lines without any mapping\n\t node.add(remainingLines.join(\"\"));\n\t }\n\t\n\t // Copy sourcesContent into SourceNode\n\t aSourceMapConsumer.sources.forEach(function (sourceFile) {\n\t var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n\t if (content != null) {\n\t if (aRelativePath != null) {\n\t sourceFile = util.join(aRelativePath, sourceFile);\n\t }\n\t node.setSourceContent(sourceFile, content);\n\t }\n\t });\n\t\n\t return node;\n\t\n\t function addMappingWithCode(mapping, code) {\n\t if (mapping === null || mapping.source === undefined) {\n\t node.add(code);\n\t } else {\n\t var source = aRelativePath\n\t ? util.join(aRelativePath, mapping.source)\n\t : mapping.source;\n\t node.add(new SourceNode(mapping.originalLine,\n\t mapping.originalColumn,\n\t source,\n\t code,\n\t mapping.name));\n\t }\n\t }\n\t };\n\t\n\t /**\n\t * Add a chunk of generated JS to this source node.\n\t *\n\t * @param aChunk A string snippet of generated JS code, another instance of\n\t * SourceNode, or an array where each member is one of those things.\n\t */\n\t SourceNode.prototype.add = function SourceNode_add(aChunk) {\n\t if (Array.isArray(aChunk)) {\n\t aChunk.forEach(function (chunk) {\n\t this.add(chunk);\n\t }, this);\n\t }\n\t else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n\t if (aChunk) {\n\t this.children.push(aChunk);\n\t }\n\t }\n\t else {\n\t throw new TypeError(\n\t \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n\t );\n\t }\n\t return this;\n\t };\n\t\n\t /**\n\t * Add a chunk of generated JS to the beginning of this source node.\n\t *\n\t * @param aChunk A string snippet of generated JS code, another instance of\n\t * SourceNode, or an array where each member is one of those things.\n\t */\n\t SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {\n\t if (Array.isArray(aChunk)) {\n\t for (var i = aChunk.length-1; i >= 0; i--) {\n\t this.prepend(aChunk[i]);\n\t }\n\t }\n\t else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n\t this.children.unshift(aChunk);\n\t }\n\t else {\n\t throw new TypeError(\n\t \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n\t );\n\t }\n\t return this;\n\t };\n\t\n\t /**\n\t * Walk over the tree of JS snippets in this node and its children. The\n\t * walking function is called once for each snippet of JS and is passed that\n\t * snippet and the its original associated source's line/column location.\n\t *\n\t * @param aFn The traversal function.\n\t */\n\t SourceNode.prototype.walk = function SourceNode_walk(aFn) {\n\t var chunk;\n\t for (var i = 0, len = this.children.length; i < len; i++) {\n\t chunk = this.children[i];\n\t if (chunk[isSourceNode]) {\n\t chunk.walk(aFn);\n\t }\n\t else {\n\t if (chunk !== '') {\n\t aFn(chunk, { source: this.source,\n\t line: this.line,\n\t column: this.column,\n\t name: this.name });\n\t }\n\t }\n\t }\n\t };\n\t\n\t /**\n\t * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between\n\t * each of `this.children`.\n\t *\n\t * @param aSep The separator.\n\t */\n\t SourceNode.prototype.join = function SourceNode_join(aSep) {\n\t var newChildren;\n\t var i;\n\t var len = this.children.length;\n\t if (len > 0) {\n\t newChildren = [];\n\t for (i = 0; i < len-1; i++) {\n\t newChildren.push(this.children[i]);\n\t newChildren.push(aSep);\n\t }\n\t newChildren.push(this.children[i]);\n\t this.children = newChildren;\n\t }\n\t return this;\n\t };\n\t\n\t /**\n\t * Call String.prototype.replace on the very right-most source snippet. Useful\n\t * for trimming whitespace from the end of a source node, etc.\n\t *\n\t * @param aPattern The pattern to replace.\n\t * @param aReplacement The thing to replace the pattern with.\n\t */\n\t SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {\n\t var lastChild = this.children[this.children.length - 1];\n\t if (lastChild[isSourceNode]) {\n\t lastChild.replaceRight(aPattern, aReplacement);\n\t }\n\t else if (typeof lastChild === 'string') {\n\t this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);\n\t }\n\t else {\n\t this.children.push(''.replace(aPattern, aReplacement));\n\t }\n\t return this;\n\t };\n\t\n\t /**\n\t * Set the source content for a source file. This will be added to the SourceMapGenerator\n\t * in the sourcesContent field.\n\t *\n\t * @param aSourceFile The filename of the source file\n\t * @param aSourceContent The content of the source file\n\t */\n\t SourceNode.prototype.setSourceContent =\n\t function SourceNode_setSourceContent(aSourceFile, aSourceContent) {\n\t this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;\n\t };\n\t\n\t /**\n\t * Walk over the tree of SourceNodes. The walking function is called for each\n\t * source file content and is passed the filename and source content.\n\t *\n\t * @param aFn The traversal function.\n\t */\n\t SourceNode.prototype.walkSourceContents =\n\t function SourceNode_walkSourceContents(aFn) {\n\t for (var i = 0, len = this.children.length; i < len; i++) {\n\t if (this.children[i][isSourceNode]) {\n\t this.children[i].walkSourceContents(aFn);\n\t }\n\t }\n\t\n\t var sources = Object.keys(this.sourceContents);\n\t for (var i = 0, len = sources.length; i < len; i++) {\n\t aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);\n\t }\n\t };\n\t\n\t /**\n\t * Return the string representation of this source node. Walks over the tree\n\t * and concatenates all the various snippets together to one string.\n\t */\n\t SourceNode.prototype.toString = function SourceNode_toString() {\n\t var str = \"\";\n\t this.walk(function (chunk) {\n\t str += chunk;\n\t });\n\t return str;\n\t };\n\t\n\t /**\n\t * Returns the string representation of this source node along with a source\n\t * map.\n\t */\n\t SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {\n\t var generated = {\n\t code: \"\",\n\t line: 1,\n\t column: 0\n\t };\n\t var map = new SourceMapGenerator(aArgs);\n\t var sourceMappingActive = false;\n\t var lastOriginalSource = null;\n\t var lastOriginalLine = null;\n\t var lastOriginalColumn = null;\n\t var lastOriginalName = null;\n\t this.walk(function (chunk, original) {\n\t generated.code += chunk;\n\t if (original.source !== null\n\t && original.line !== null\n\t && original.column !== null) {\n\t if(lastOriginalSource !== original.source\n\t || lastOriginalLine !== original.line\n\t || lastOriginalColumn !== original.column\n\t || lastOriginalName !== original.name) {\n\t map.addMapping({\n\t source: original.source,\n\t original: {\n\t line: original.line,\n\t column: original.column\n\t },\n\t generated: {\n\t line: generated.line,\n\t column: generated.column\n\t },\n\t name: original.name\n\t });\n\t }\n\t lastOriginalSource = original.source;\n\t lastOriginalLine = original.line;\n\t lastOriginalColumn = original.column;\n\t lastOriginalName = original.name;\n\t sourceMappingActive = true;\n\t } else if (sourceMappingActive) {\n\t map.addMapping({\n\t generated: {\n\t line: generated.line,\n\t column: generated.column\n\t }\n\t });\n\t lastOriginalSource = null;\n\t sourceMappingActive = false;\n\t }\n\t for (var idx = 0, length = chunk.length; idx < length; idx++) {\n\t if (chunk.charCodeAt(idx) === NEWLINE_CODE) {\n\t generated.line++;\n\t generated.column = 0;\n\t // Mappings end at eol\n\t if (idx + 1 === length) {\n\t lastOriginalSource = null;\n\t sourceMappingActive = false;\n\t } else if (sourceMappingActive) {\n\t map.addMapping({\n\t source: original.source,\n\t original: {\n\t line: original.line,\n\t column: original.column\n\t },\n\t generated: {\n\t line: generated.line,\n\t column: generated.column\n\t },\n\t name: original.name\n\t });\n\t }\n\t } else {\n\t generated.column++;\n\t }\n\t }\n\t });\n\t this.walkSourceContents(function (sourceFile, sourceContent) {\n\t map.setSourceContent(sourceFile, sourceContent);\n\t });\n\t\n\t return { code: generated.code, map: map };\n\t };\n\t\n\t exports.SourceNode = SourceNode;\n\t}\n\n\n/***/ }\n/******/ ])\n});\n;\n\n\n/** WEBPACK FOOTER **\n ** source-map.min.js\n **/"," \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\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\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.loaded = 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// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n/** WEBPACK FOOTER **\n ** webpack/bootstrap a7d787c028005295f8d2\n **/","/*\n * Copyright 2009-2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE.txt or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\nexports.SourceMapGenerator = require('./lib/source-map-generator').SourceMapGenerator;\nexports.SourceMapConsumer = require('./lib/source-map-consumer').SourceMapConsumer;\nexports.SourceNode = require('./lib/source-node').SourceNode;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./source-map.js\n ** module id = 0\n ** module chunks = 0\n **/","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n{\n var base64VLQ = require('./base64-vlq');\n var util = require('./util');\n var ArraySet = require('./array-set').ArraySet;\n var MappingList = require('./mapping-list').MappingList;\n\n /**\n * An instance of the SourceMapGenerator represents a source map which is\n * being built incrementally. You may pass an object with the following\n * properties:\n *\n * - file: The filename of the generated source.\n * - sourceRoot: A root for all relative URLs in this source map.\n */\n function SourceMapGenerator(aArgs) {\n if (!aArgs) {\n aArgs = {};\n }\n this._file = util.getArg(aArgs, 'file', null);\n this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null);\n this._skipValidation = util.getArg(aArgs, 'skipValidation', false);\n this._sources = new ArraySet();\n this._names = new ArraySet();\n this._mappings = new MappingList();\n this._sourcesContents = null;\n }\n\n SourceMapGenerator.prototype._version = 3;\n\n /**\n * Creates a new SourceMapGenerator based on a SourceMapConsumer\n *\n * @param aSourceMapConsumer The SourceMap.\n */\n SourceMapGenerator.fromSourceMap =\n function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) {\n var sourceRoot = aSourceMapConsumer.sourceRoot;\n var generator = new SourceMapGenerator({\n file: aSourceMapConsumer.file,\n sourceRoot: sourceRoot\n });\n aSourceMapConsumer.eachMapping(function (mapping) {\n var newMapping = {\n generated: {\n line: mapping.generatedLine,\n column: mapping.generatedColumn\n }\n };\n\n if (mapping.source != null) {\n newMapping.source = mapping.source;\n if (sourceRoot != null) {\n newMapping.source = util.relative(sourceRoot, newMapping.source);\n }\n\n newMapping.original = {\n line: mapping.originalLine,\n column: mapping.originalColumn\n };\n\n if (mapping.name != null) {\n newMapping.name = mapping.name;\n }\n }\n\n generator.addMapping(newMapping);\n });\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n generator.setSourceContent(sourceFile, content);\n }\n });\n return generator;\n };\n\n /**\n * Add a single mapping from original source line and column to the generated\n * source's line and column for this source map being created. The mapping\n * object should have the following properties:\n *\n * - generated: An object with the generated line and column positions.\n * - original: An object with the original line and column positions.\n * - source: The original source file (relative to the sourceRoot).\n * - name: An optional original token name for this mapping.\n */\n SourceMapGenerator.prototype.addMapping =\n function SourceMapGenerator_addMapping(aArgs) {\n var generated = util.getArg(aArgs, 'generated');\n var original = util.getArg(aArgs, 'original', null);\n var source = util.getArg(aArgs, 'source', null);\n var name = util.getArg(aArgs, 'name', null);\n\n if (!this._skipValidation) {\n this._validateMapping(generated, original, source, name);\n }\n\n if (source != null && !this._sources.has(source)) {\n this._sources.add(source);\n }\n\n if (name != null && !this._names.has(name)) {\n this._names.add(name);\n }\n\n this._mappings.add({\n generatedLine: generated.line,\n generatedColumn: generated.column,\n originalLine: original != null && original.line,\n originalColumn: original != null && original.column,\n source: source,\n name: name\n });\n };\n\n /**\n * Set the source content for a source file.\n */\n SourceMapGenerator.prototype.setSourceContent =\n function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {\n var source = aSourceFile;\n if (this._sourceRoot != null) {\n source = util.relative(this._sourceRoot, source);\n }\n\n if (aSourceContent != null) {\n // Add the source content to the _sourcesContents map.\n // Create a new _sourcesContents map if the property is null.\n if (!this._sourcesContents) {\n this._sourcesContents = {};\n }\n this._sourcesContents[util.toSetString(source)] = aSourceContent;\n } else if (this._sourcesContents) {\n // Remove the source file from the _sourcesContents map.\n // If the _sourcesContents map is empty, set the property to null.\n delete this._sourcesContents[util.toSetString(source)];\n if (Object.keys(this._sourcesContents).length === 0) {\n this._sourcesContents = null;\n }\n }\n };\n\n /**\n * Applies the mappings of a sub-source-map for a specific source file to the\n * source map being generated. Each mapping to the supplied source file is\n * rewritten using the supplied source map. Note: The resolution for the\n * resulting mappings is the minimium of this map and the supplied map.\n *\n * @param aSourceMapConsumer The source map to be applied.\n * @param aSourceFile Optional. The filename of the source file.\n * If omitted, SourceMapConsumer's file property will be used.\n * @param aSourceMapPath Optional. The dirname of the path to the source map\n * to be applied. If relative, it is relative to the SourceMapConsumer.\n * This parameter is needed when the two source maps aren't in the same\n * directory, and the source map to be applied contains relative source\n * paths. If so, those relative source paths need to be rewritten\n * relative to the SourceMapGenerator.\n */\n SourceMapGenerator.prototype.applySourceMap =\n function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) {\n var sourceFile = aSourceFile;\n // If aSourceFile is omitted, we will use the file property of the SourceMap\n if (aSourceFile == null) {\n if (aSourceMapConsumer.file == null) {\n throw new Error(\n 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' +\n 'or the source map\\'s \"file\" property. Both were omitted.'\n );\n }\n sourceFile = aSourceMapConsumer.file;\n }\n var sourceRoot = this._sourceRoot;\n // Make \"sourceFile\" relative if an absolute Url is passed.\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n // Applying the SourceMap can add and remove items from the sources and\n // the names array.\n var newSources = new ArraySet();\n var newNames = new ArraySet();\n\n // Find mappings for the \"sourceFile\"\n this._mappings.unsortedForEach(function (mapping) {\n if (mapping.source === sourceFile && mapping.originalLine != null) {\n // Check if it can be mapped by the source map, then update the mapping.\n var original = aSourceMapConsumer.originalPositionFor({\n line: mapping.originalLine,\n column: mapping.originalColumn\n });\n if (original.source != null) {\n // Copy mapping\n mapping.source = original.source;\n if (aSourceMapPath != null) {\n mapping.source = util.join(aSourceMapPath, mapping.source)\n }\n if (sourceRoot != null) {\n mapping.source = util.relative(sourceRoot, mapping.source);\n }\n mapping.originalLine = original.line;\n mapping.originalColumn = original.column;\n if (original.name != null) {\n mapping.name = original.name;\n }\n }\n }\n\n var source = mapping.source;\n if (source != null && !newSources.has(source)) {\n newSources.add(source);\n }\n\n var name = mapping.name;\n if (name != null && !newNames.has(name)) {\n newNames.add(name);\n }\n\n }, this);\n this._sources = newSources;\n this._names = newNames;\n\n // Copy sourcesContents of applied map.\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n if (aSourceMapPath != null) {\n sourceFile = util.join(aSourceMapPath, sourceFile);\n }\n if (sourceRoot != null) {\n sourceFile = util.relative(sourceRoot, sourceFile);\n }\n this.setSourceContent(sourceFile, content);\n }\n }, this);\n };\n\n /**\n * A mapping can have one of the three levels of data:\n *\n * 1. Just the generated position.\n * 2. The Generated position, original position, and original source.\n * 3. Generated and original position, original source, as well as a name\n * token.\n *\n * To maintain consistency, we validate that any new mapping being added falls\n * in to one of these categories.\n */\n SourceMapGenerator.prototype._validateMapping =\n function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource,\n aName) {\n if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n && aGenerated.line > 0 && aGenerated.column >= 0\n && !aOriginal && !aSource && !aName) {\n // Case 1.\n return;\n }\n else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n && aOriginal && 'line' in aOriginal && 'column' in aOriginal\n && aGenerated.line > 0 && aGenerated.column >= 0\n && aOriginal.line > 0 && aOriginal.column >= 0\n && aSource) {\n // Cases 2 and 3.\n return;\n }\n else {\n throw new Error('Invalid mapping: ' + JSON.stringify({\n generated: aGenerated,\n source: aSource,\n original: aOriginal,\n name: aName\n }));\n }\n };\n\n /**\n * Serialize the accumulated mappings in to the stream of base 64 VLQs\n * specified by the source map format.\n */\n SourceMapGenerator.prototype._serializeMappings =\n function SourceMapGenerator_serializeMappings() {\n var previousGeneratedColumn = 0;\n var previousGeneratedLine = 1;\n var previousOriginalColumn = 0;\n var previousOriginalLine = 0;\n var previousName = 0;\n var previousSource = 0;\n var result = '';\n var mapping;\n var nameIdx;\n var sourceIdx;\n\n var mappings = this._mappings.toArray();\n for (var i = 0, len = mappings.length; i < len; i++) {\n mapping = mappings[i];\n\n if (mapping.generatedLine !== previousGeneratedLine) {\n previousGeneratedColumn = 0;\n while (mapping.generatedLine !== previousGeneratedLine) {\n result += ';';\n previousGeneratedLine++;\n }\n }\n else {\n if (i > 0) {\n if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {\n continue;\n }\n result += ',';\n }\n }\n\n result += base64VLQ.encode(mapping.generatedColumn\n - previousGeneratedColumn);\n previousGeneratedColumn = mapping.generatedColumn;\n\n if (mapping.source != null) {\n sourceIdx = this._sources.indexOf(mapping.source);\n result += base64VLQ.encode(sourceIdx - previousSource);\n previousSource = sourceIdx;\n\n // lines are stored 0-based in SourceMap spec version 3\n result += base64VLQ.encode(mapping.originalLine - 1\n - previousOriginalLine);\n previousOriginalLine = mapping.originalLine - 1;\n\n result += base64VLQ.encode(mapping.originalColumn\n - previousOriginalColumn);\n previousOriginalColumn = mapping.originalColumn;\n\n if (mapping.name != null) {\n nameIdx = this._names.indexOf(mapping.name);\n result += base64VLQ.encode(nameIdx - previousName);\n previousName = nameIdx;\n }\n }\n }\n\n return result;\n };\n\n SourceMapGenerator.prototype._generateSourcesContent =\n function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {\n return aSources.map(function (source) {\n if (!this._sourcesContents) {\n return null;\n }\n if (aSourceRoot != null) {\n source = util.relative(aSourceRoot, source);\n }\n var key = util.toSetString(source);\n return Object.prototype.hasOwnProperty.call(this._sourcesContents,\n key)\n ? this._sourcesContents[key]\n : null;\n }, this);\n };\n\n /**\n * Externalize the source map.\n */\n SourceMapGenerator.prototype.toJSON =\n function SourceMapGenerator_toJSON() {\n var map = {\n version: this._version,\n sources: this._sources.toArray(),\n names: this._names.toArray(),\n mappings: this._serializeMappings()\n };\n if (this._file != null) {\n map.file = this._file;\n }\n if (this._sourceRoot != null) {\n map.sourceRoot = this._sourceRoot;\n }\n if (this._sourcesContents) {\n map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);\n }\n\n return map;\n };\n\n /**\n * Render the source map being generated to a string.\n */\n SourceMapGenerator.prototype.toString =\n function SourceMapGenerator_toString() {\n return JSON.stringify(this.toJSON());\n };\n\n exports.SourceMapGenerator = SourceMapGenerator;\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./lib/source-map-generator.js\n ** module id = 1\n ** module chunks = 0\n **/","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * Based on the Base 64 VLQ implementation in Closure Compiler:\n * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java\n *\n * Copyright 2011 The Closure Compiler Authors. All rights reserved.\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are\n * met:\n *\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above\n * copyright notice, this list of conditions and the following\n * disclaimer in the documentation and/or other materials provided\n * with the distribution.\n * * Neither the name of Google Inc. nor the names of its\n * contributors may be used to endorse or promote products derived\n * from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n{\n var base64 = require('./base64');\n\n // A single base 64 digit can contain 6 bits of data. For the base 64 variable\n // length quantities we use in the source map spec, the first bit is the sign,\n // the next four bits are the actual value, and the 6th bit is the\n // continuation bit. The continuation bit tells us whether there are more\n // digits in this value following this digit.\n //\n // Continuation\n // | Sign\n // | |\n // V V\n // 101011\n\n var VLQ_BASE_SHIFT = 5;\n\n // binary: 100000\n var VLQ_BASE = 1 << VLQ_BASE_SHIFT;\n\n // binary: 011111\n var VLQ_BASE_MASK = VLQ_BASE - 1;\n\n // binary: 100000\n var VLQ_CONTINUATION_BIT = VLQ_BASE;\n\n /**\n * Converts from a two-complement value to a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary)\n * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary)\n */\n function toVLQSigned(aValue) {\n return aValue < 0\n ? ((-aValue) << 1) + 1\n : (aValue << 1) + 0;\n }\n\n /**\n * Converts to a two-complement value from a value where the sign bit is\n * placed in the least significant bit. For example, as decimals:\n * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1\n * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2\n */\n function fromVLQSigned(aValue) {\n var isNegative = (aValue & 1) === 1;\n var shifted = aValue >> 1;\n return isNegative\n ? -shifted\n : shifted;\n }\n\n /**\n * Returns the base 64 VLQ encoded value.\n */\n exports.encode = function base64VLQ_encode(aValue) {\n var encoded = \"\";\n var digit;\n\n var vlq = toVLQSigned(aValue);\n\n do {\n digit = vlq & VLQ_BASE_MASK;\n vlq >>>= VLQ_BASE_SHIFT;\n if (vlq > 0) {\n // There are still more digits in this value, so we must make sure the\n // continuation bit is marked.\n digit |= VLQ_CONTINUATION_BIT;\n }\n encoded += base64.encode(digit);\n } while (vlq > 0);\n\n return encoded;\n };\n\n /**\n * Decodes the next base 64 VLQ value from the given string and returns the\n * value and the rest of the string via the out parameter.\n */\n exports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {\n var strLen = aStr.length;\n var result = 0;\n var shift = 0;\n var continuation, digit;\n\n do {\n if (aIndex >= strLen) {\n throw new Error(\"Expected more digits in base 64 VLQ value.\");\n }\n\n digit = base64.decode(aStr.charCodeAt(aIndex++));\n if (digit === -1) {\n throw new Error(\"Invalid base64 digit: \" + aStr.charAt(aIndex - 1));\n }\n\n continuation = !!(digit & VLQ_CONTINUATION_BIT);\n digit &= VLQ_BASE_MASK;\n result = result + (digit << shift);\n shift += VLQ_BASE_SHIFT;\n } while (continuation);\n\n aOutParam.value = fromVLQSigned(result);\n aOutParam.rest = aIndex;\n };\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./lib/base64-vlq.js\n ** module id = 2\n ** module chunks = 0\n **/","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n{\n var intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');\n\n /**\n * Encode an integer in the range of 0 to 63 to a single base 64 digit.\n */\n exports.encode = function (number) {\n if (0 <= number && number < intToCharMap.length) {\n return intToCharMap[number];\n }\n throw new TypeError(\"Must be between 0 and 63: \" + number);\n };\n\n /**\n * Decode a single base 64 character code digit to an integer. Returns -1 on\n * failure.\n */\n exports.decode = function (charCode) {\n var bigA = 65; // 'A'\n var bigZ = 90; // 'Z'\n\n var littleA = 97; // 'a'\n var littleZ = 122; // 'z'\n\n var zero = 48; // '0'\n var nine = 57; // '9'\n\n var plus = 43; // '+'\n var slash = 47; // '/'\n\n var littleOffset = 26;\n var numberOffset = 52;\n\n // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ\n if (bigA <= charCode && charCode <= bigZ) {\n return (charCode - bigA);\n }\n\n // 26 - 51: abcdefghijklmnopqrstuvwxyz\n if (littleA <= charCode && charCode <= littleZ) {\n return (charCode - littleA + littleOffset);\n }\n\n // 52 - 61: 0123456789\n if (zero <= charCode && charCode <= nine) {\n return (charCode - zero + numberOffset);\n }\n\n // 62: +\n if (charCode == plus) {\n return 62;\n }\n\n // 63: /\n if (charCode == slash) {\n return 63;\n }\n\n // Invalid base64 digit.\n return -1;\n };\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./lib/base64.js\n ** module id = 3\n ** module chunks = 0\n **/","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n{\n /**\n * This is a helper function for getting values from parameter/options\n * objects.\n *\n * @param args The object we are extracting values from\n * @param name The name of the property we are getting.\n * @param defaultValue An optional value to return if the property is missing\n * from the object. If this is not specified and the property is missing, an\n * error will be thrown.\n */\n function getArg(aArgs, aName, aDefaultValue) {\n if (aName in aArgs) {\n return aArgs[aName];\n } else if (arguments.length === 3) {\n return aDefaultValue;\n } else {\n throw new Error('\"' + aName + '\" is a required argument.');\n }\n }\n exports.getArg = getArg;\n\n var urlRegexp = /^(?:([\\w+\\-.]+):)?\\/\\/(?:(\\w+:\\w+)@)?([\\w.]*)(?::(\\d+))?(\\S*)$/;\n var dataUrlRegexp = /^data:.+\\,.+$/;\n\n function urlParse(aUrl) {\n var match = aUrl.match(urlRegexp);\n if (!match) {\n return null;\n }\n return {\n scheme: match[1],\n auth: match[2],\n host: match[3],\n port: match[4],\n path: match[5]\n };\n }\n exports.urlParse = urlParse;\n\n function urlGenerate(aParsedUrl) {\n var url = '';\n if (aParsedUrl.scheme) {\n url += aParsedUrl.scheme + ':';\n }\n url += '//';\n if (aParsedUrl.auth) {\n url += aParsedUrl.auth + '@';\n }\n if (aParsedUrl.host) {\n url += aParsedUrl.host;\n }\n if (aParsedUrl.port) {\n url += \":\" + aParsedUrl.port\n }\n if (aParsedUrl.path) {\n url += aParsedUrl.path;\n }\n return url;\n }\n exports.urlGenerate = urlGenerate;\n\n /**\n * Normalizes a path, or the path portion of a URL:\n *\n * - Replaces consequtive slashes with one slash.\n * - Removes unnecessary '.' parts.\n * - Removes unnecessary '/..' parts.\n *\n * Based on code in the Node.js 'path' core module.\n *\n * @param aPath The path or url to normalize.\n */\n function normalize(aPath) {\n var path = aPath;\n var url = urlParse(aPath);\n if (url) {\n if (!url.path) {\n return aPath;\n }\n path = url.path;\n }\n var isAbsolute = exports.isAbsolute(path);\n\n var parts = path.split(/\\/+/);\n for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {\n part = parts[i];\n if (part === '.') {\n parts.splice(i, 1);\n } else if (part === '..') {\n up++;\n } else if (up > 0) {\n if (part === '') {\n // The first part is blank if the path is absolute. Trying to go\n // above the root is a no-op. Therefore we can remove all '..' parts\n // directly after the root.\n parts.splice(i + 1, up);\n up = 0;\n } else {\n parts.splice(i, 2);\n up--;\n }\n }\n }\n path = parts.join('/');\n\n if (path === '') {\n path = isAbsolute ? '/' : '.';\n }\n\n if (url) {\n url.path = path;\n return urlGenerate(url);\n }\n return path;\n }\n exports.normalize = normalize;\n\n /**\n * Joins two paths/URLs.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be joined with the root.\n *\n * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a\n * scheme-relative URL: Then the scheme of aRoot, if any, is prepended\n * first.\n * - Otherwise aPath is a path. If aRoot is a URL, then its path portion\n * is updated with the result and aRoot is returned. Otherwise the result\n * is returned.\n * - If aPath is absolute, the result is aPath.\n * - Otherwise the two paths are joined with a slash.\n * - Joining for example 'http://' and 'www.example.com' is also supported.\n */\n function join(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n if (aPath === \"\") {\n aPath = \".\";\n }\n var aPathUrl = urlParse(aPath);\n var aRootUrl = urlParse(aRoot);\n if (aRootUrl) {\n aRoot = aRootUrl.path || '/';\n }\n\n // `join(foo, '//www.example.org')`\n if (aPathUrl && !aPathUrl.scheme) {\n if (aRootUrl) {\n aPathUrl.scheme = aRootUrl.scheme;\n }\n return urlGenerate(aPathUrl);\n }\n\n if (aPathUrl || aPath.match(dataUrlRegexp)) {\n return aPath;\n }\n\n // `join('http://', 'www.example.com')`\n if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {\n aRootUrl.host = aPath;\n return urlGenerate(aRootUrl);\n }\n\n var joined = aPath.charAt(0) === '/'\n ? aPath\n : normalize(aRoot.replace(/\\/+$/, '') + '/' + aPath);\n\n if (aRootUrl) {\n aRootUrl.path = joined;\n return urlGenerate(aRootUrl);\n }\n return joined;\n }\n exports.join = join;\n\n exports.isAbsolute = function (aPath) {\n return aPath.charAt(0) === '/' || !!aPath.match(urlRegexp);\n };\n\n /**\n * Make a path relative to a URL or another path.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be made relative to aRoot.\n */\n function relative(aRoot, aPath) {\n if (aRoot === \"\") {\n aRoot = \".\";\n }\n\n aRoot = aRoot.replace(/\\/$/, '');\n\n // It is possible for the path to be above the root. In this case, simply\n // checking whether the root is a prefix of the path won't work. Instead, we\n // need to remove components from the root one by one, until either we find\n // a prefix that fits, or we run out of components to remove.\n var level = 0;\n while (aPath.indexOf(aRoot + '/') !== 0) {\n var index = aRoot.lastIndexOf(\"/\");\n if (index < 0) {\n return aPath;\n }\n\n // If the only part of the root that is left is the scheme (i.e. http://,\n // file:///, etc.), one or more slashes (/), or simply nothing at all, we\n // have exhausted all components, so the path is not relative to the root.\n aRoot = aRoot.slice(0, index);\n if (aRoot.match(/^([^\\/]+:\\/)?\\/*$/)) {\n return aPath;\n }\n\n ++level;\n }\n\n // Make sure we add a \"../\" for each component we removed from the root.\n return Array(level + 1).join(\"../\") + aPath.substr(aRoot.length + 1);\n }\n exports.relative = relative;\n\n /**\n * Because behavior goes wacky when you set `__proto__` on objects, we\n * have to prefix all the strings in our set with an arbitrary character.\n *\n * See https://github.com/mozilla/source-map/pull/31 and\n * https://github.com/mozilla/source-map/issues/30\n *\n * @param String aStr\n */\n function toSetString(aStr) {\n return '$' + aStr;\n }\n exports.toSetString = toSetString;\n\n function fromSetString(aStr) {\n return aStr.substr(1);\n }\n exports.fromSetString = fromSetString;\n\n /**\n * Comparator between two mappings where the original positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same original source/line/column, but different generated\n * line and column the same. Useful when searching for a mapping with a\n * stubbed out mapping.\n */\n function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {\n var cmp = mappingA.source - mappingB.source;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0 || onlyCompareOriginal) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n return mappingA.name - mappingB.name;\n }\n exports.compareByOriginalPositions = compareByOriginalPositions;\n\n /**\n * Comparator between two mappings with deflated source and name indices where\n * the generated positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same generated line and column, but different\n * source/name/original line and column the same. Useful when searching for a\n * mapping with a stubbed out mapping.\n */\n function compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0 || onlyCompareGenerated) {\n return cmp;\n }\n\n cmp = mappingA.source - mappingB.source;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n return mappingA.name - mappingB.name;\n }\n exports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;\n\n function strcmp(aStr1, aStr2) {\n if (aStr1 === aStr2) {\n return 0;\n }\n\n if (aStr1 > aStr2) {\n return 1;\n }\n\n return -1;\n }\n\n /**\n * Comparator between two mappings with inflated source and name strings where\n * the generated positions are compared.\n */\n function compareByGeneratedPositionsInflated(mappingA, mappingB) {\n var cmp = mappingA.generatedLine - mappingB.generatedLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = strcmp(mappingA.source, mappingB.source);\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalLine - mappingB.originalLine;\n if (cmp !== 0) {\n return cmp;\n }\n\n cmp = mappingA.originalColumn - mappingB.originalColumn;\n if (cmp !== 0) {\n return cmp;\n }\n\n return strcmp(mappingA.name, mappingB.name);\n }\n exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./lib/util.js\n ** module id = 4\n ** module chunks = 0\n **/","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n{\n var util = require('./util');\n\n /**\n * A data structure which is a combination of an array and a set. Adding a new\n * member is O(1), testing for membership is O(1), and finding the index of an\n * element is O(1). Removing elements from the set is not supported. Only\n * strings are supported for membership.\n */\n function ArraySet() {\n this._array = [];\n this._set = {};\n }\n\n /**\n * Static method for creating ArraySet instances from an existing array.\n */\n ArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {\n var set = new ArraySet();\n for (var i = 0, len = aArray.length; i < len; i++) {\n set.add(aArray[i], aAllowDuplicates);\n }\n return set;\n };\n\n /**\n * Return how many unique items are in this ArraySet. If duplicates have been\n * added, than those do not count towards the size.\n *\n * @returns Number\n */\n ArraySet.prototype.size = function ArraySet_size() {\n return Object.getOwnPropertyNames(this._set).length;\n };\n\n /**\n * Add the given string to this set.\n *\n * @param String aStr\n */\n ArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {\n var sStr = util.toSetString(aStr);\n var isDuplicate = this._set.hasOwnProperty(sStr);\n var idx = this._array.length;\n if (!isDuplicate || aAllowDuplicates) {\n this._array.push(aStr);\n }\n if (!isDuplicate) {\n this._set[sStr] = idx;\n }\n };\n\n /**\n * Is the given string a member of this set?\n *\n * @param String aStr\n */\n ArraySet.prototype.has = function ArraySet_has(aStr) {\n var sStr = util.toSetString(aStr);\n return this._set.hasOwnProperty(sStr);\n };\n\n /**\n * What is the index of the given string in the array?\n *\n * @param String aStr\n */\n ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {\n var sStr = util.toSetString(aStr);\n if (this._set.hasOwnProperty(sStr)) {\n return this._set[sStr];\n }\n throw new Error('\"' + aStr + '\" is not in the set.');\n };\n\n /**\n * What is the element at the given index?\n *\n * @param Number aIdx\n */\n ArraySet.prototype.at = function ArraySet_at(aIdx) {\n if (aIdx >= 0 && aIdx < this._array.length) {\n return this._array[aIdx];\n }\n throw new Error('No element indexed by ' + aIdx);\n };\n\n /**\n * Returns the array representation of this set (which has the proper indices\n * indicated by indexOf). Note that this is a copy of the internal array used\n * for storing the members so that no one can mess with internal state.\n */\n ArraySet.prototype.toArray = function ArraySet_toArray() {\n return this._array.slice();\n };\n\n exports.ArraySet = ArraySet;\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./lib/array-set.js\n ** module id = 5\n ** module chunks = 0\n **/","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2014 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n{\n var util = require('./util');\n\n /**\n * Determine whether mappingB is after mappingA with respect to generated\n * position.\n */\n function generatedPositionAfter(mappingA, mappingB) {\n // Optimized for most common case\n var lineA = mappingA.generatedLine;\n var lineB = mappingB.generatedLine;\n var columnA = mappingA.generatedColumn;\n var columnB = mappingB.generatedColumn;\n return lineB > lineA || lineB == lineA && columnB >= columnA ||\n util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0;\n }\n\n /**\n * A data structure to provide a sorted view of accumulated mappings in a\n * performance conscious manner. It trades a neglibable overhead in general\n * case for a large speedup in case of mappings being added in order.\n */\n function MappingList() {\n this._array = [];\n this._sorted = true;\n // Serves as infimum\n this._last = {generatedLine: -1, generatedColumn: 0};\n }\n\n /**\n * Iterate through internal items. This method takes the same arguments that\n * `Array.prototype.forEach` takes.\n *\n * NOTE: The order of the mappings is NOT guaranteed.\n */\n MappingList.prototype.unsortedForEach =\n function MappingList_forEach(aCallback, aThisArg) {\n this._array.forEach(aCallback, aThisArg);\n };\n\n /**\n * Add the given source mapping.\n *\n * @param Object aMapping\n */\n MappingList.prototype.add = function MappingList_add(aMapping) {\n if (generatedPositionAfter(this._last, aMapping)) {\n this._last = aMapping;\n this._array.push(aMapping);\n } else {\n this._sorted = false;\n this._array.push(aMapping);\n }\n };\n\n /**\n * Returns the flat, sorted array of mappings. The mappings are sorted by\n * generated position.\n *\n * WARNING: This method returns internal data without copying, for\n * performance. The return value must NOT be mutated, and should be treated as\n * an immutable borrow. If you want to take ownership, you must make your own\n * copy.\n */\n MappingList.prototype.toArray = function MappingList_toArray() {\n if (!this._sorted) {\n this._array.sort(util.compareByGeneratedPositionsInflated);\n this._sorted = true;\n }\n return this._array;\n };\n\n exports.MappingList = MappingList;\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./lib/mapping-list.js\n ** module id = 6\n ** module chunks = 0\n **/","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n{\n var util = require('./util');\n var binarySearch = require('./binary-search');\n var ArraySet = require('./array-set').ArraySet;\n var base64VLQ = require('./base64-vlq');\n var quickSort = require('./quick-sort').quickSort;\n\n function SourceMapConsumer(aSourceMap) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/, ''));\n }\n\n return sourceMap.sections != null\n ? new IndexedSourceMapConsumer(sourceMap)\n : new BasicSourceMapConsumer(sourceMap);\n }\n\n SourceMapConsumer.fromSourceMap = function(aSourceMap) {\n return BasicSourceMapConsumer.fromSourceMap(aSourceMap);\n }\n\n /**\n * The version of the source mapping spec that we are consuming.\n */\n SourceMapConsumer.prototype._version = 3;\n\n // `__generatedMappings` and `__originalMappings` are arrays that hold the\n // parsed mapping coordinates from the source map's \"mappings\" attribute. They\n // are lazily instantiated, accessed via the `_generatedMappings` and\n // `_originalMappings` getters respectively, and we only parse the mappings\n // and create these arrays once queried for a source location. We jump through\n // these hoops because there can be many thousands of mappings, and parsing\n // them is expensive, so we only want to do it if we must.\n //\n // Each object in the arrays is of the form:\n //\n // {\n // generatedLine: The line number in the generated code,\n // generatedColumn: The column number in the generated code,\n // source: The path to the original source file that generated this\n // chunk of code,\n // originalLine: The line number in the original source that\n // corresponds to this chunk of generated code,\n // originalColumn: The column number in the original source that\n // corresponds to this chunk of generated code,\n // name: The name of the original symbol which generated this chunk of\n // code.\n // }\n //\n // All properties except for `generatedLine` and `generatedColumn` can be\n // `null`.\n //\n // `_generatedMappings` is ordered by the generated positions.\n //\n // `_originalMappings` is ordered by the original positions.\n\n SourceMapConsumer.prototype.__generatedMappings = null;\n Object.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {\n get: function () {\n if (!this.__generatedMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__generatedMappings;\n }\n });\n\n SourceMapConsumer.prototype.__originalMappings = null;\n Object.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {\n get: function () {\n if (!this.__originalMappings) {\n this._parseMappings(this._mappings, this.sourceRoot);\n }\n\n return this.__originalMappings;\n }\n });\n\n SourceMapConsumer.prototype._charIsMappingSeparator =\n function SourceMapConsumer_charIsMappingSeparator(aStr, index) {\n var c = aStr.charAt(index);\n return c === \";\" || c === \",\";\n };\n\n /**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\n SourceMapConsumer.prototype._parseMappings =\n function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n throw new Error(\"Subclasses must implement _parseMappings\");\n };\n\n SourceMapConsumer.GENERATED_ORDER = 1;\n SourceMapConsumer.ORIGINAL_ORDER = 2;\n\n SourceMapConsumer.GREATEST_LOWER_BOUND = 1;\n SourceMapConsumer.LEAST_UPPER_BOUND = 2;\n\n /**\n * Iterate over each mapping between an original source/line/column and a\n * generated line/column in this source map.\n *\n * @param Function aCallback\n * The function that is called with each mapping.\n * @param Object aContext\n * Optional. If specified, this object will be the value of `this` every\n * time that `aCallback` is called.\n * @param aOrder\n * Either `SourceMapConsumer.GENERATED_ORDER` or\n * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to\n * iterate over the mappings sorted by the generated file's line/column\n * order or the original's source/line/column order, respectively. Defaults to\n * `SourceMapConsumer.GENERATED_ORDER`.\n */\n SourceMapConsumer.prototype.eachMapping =\n function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {\n var context = aContext || null;\n var order = aOrder || SourceMapConsumer.GENERATED_ORDER;\n\n var mappings;\n switch (order) {\n case SourceMapConsumer.GENERATED_ORDER:\n mappings = this._generatedMappings;\n break;\n case SourceMapConsumer.ORIGINAL_ORDER:\n mappings = this._originalMappings;\n break;\n default:\n throw new Error(\"Unknown order of iteration.\");\n }\n\n var sourceRoot = this.sourceRoot;\n mappings.map(function (mapping) {\n var source = mapping.source === null ? null : this._sources.at(mapping.source);\n if (source != null && sourceRoot != null) {\n source = util.join(sourceRoot, source);\n }\n return {\n source: source,\n generatedLine: mapping.generatedLine,\n generatedColumn: mapping.generatedColumn,\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: mapping.name === null ? null : this._names.at(mapping.name)\n };\n }, this).forEach(aCallback, context);\n };\n\n /**\n * Returns all generated line and column information for the original source,\n * line, and column provided. If no column is provided, returns all mappings\n * corresponding to a either the line we are searching for or the next\n * closest line that has any mappings. Otherwise, returns all mappings\n * corresponding to the given line and either the column we are searching for\n * or the next closest column that has any offsets.\n *\n * The only argument is an object with the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source.\n * - column: Optional. the column number in the original source.\n *\n * and an array of objects is returned, each with the following properties:\n *\n * - line: The line number in the generated source, or null.\n * - column: The column number in the generated source, or null.\n */\n SourceMapConsumer.prototype.allGeneratedPositionsFor =\n function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {\n var line = util.getArg(aArgs, 'line');\n\n // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping\n // returns the index of the closest mapping less than the needle. By\n // setting needle.originalColumn to 0, we thus find the last mapping for\n // the given line, provided such a mapping exists.\n var needle = {\n source: util.getArg(aArgs, 'source'),\n originalLine: line,\n originalColumn: util.getArg(aArgs, 'column', 0)\n };\n\n if (this.sourceRoot != null) {\n needle.source = util.relative(this.sourceRoot, needle.source);\n }\n if (!this._sources.has(needle.source)) {\n return [];\n }\n needle.source = this._sources.indexOf(needle.source);\n\n var mappings = [];\n\n var index = this._findMapping(needle,\n this._originalMappings,\n \"originalLine\",\n \"originalColumn\",\n util.compareByOriginalPositions,\n binarySearch.LEAST_UPPER_BOUND);\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n\n if (aArgs.column === undefined) {\n var originalLine = mapping.originalLine;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we found. Since\n // mappings are sorted, this is guaranteed to find all mappings for\n // the line we found.\n while (mapping && mapping.originalLine === originalLine) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n\n mapping = this._originalMappings[++index];\n }\n } else {\n var originalColumn = mapping.originalColumn;\n\n // Iterate until either we run out of mappings, or we run into\n // a mapping for a different line than the one we were searching for.\n // Since mappings are sorted, this is guaranteed to find all mappings for\n // the line we are searching for.\n while (mapping &&\n mapping.originalLine === line &&\n mapping.originalColumn == originalColumn) {\n mappings.push({\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n });\n\n mapping = this._originalMappings[++index];\n }\n }\n }\n\n return mappings;\n };\n\n exports.SourceMapConsumer = SourceMapConsumer;\n\n /**\n * A BasicSourceMapConsumer instance represents a parsed source map which we can\n * query for information about the original file positions by giving it a file\n * position in the generated source.\n *\n * The only parameter is the raw source map (either as a JSON string, or\n * already parsed to an object). According to the spec, source maps have the\n * following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - sources: An array of URLs to the original source files.\n * - names: An array of identifiers which can be referrenced by individual mappings.\n * - sourceRoot: Optional. The URL root from which all sources are relative.\n * - sourcesContent: Optional. An array of contents of the original source files.\n * - mappings: A string of base64 VLQs which contain the actual mappings.\n * - file: Optional. The generated file this source map is associated with.\n *\n * Here is an example source map, taken from the source map spec[0]:\n *\n * {\n * version : 3,\n * file: \"out.js\",\n * sourceRoot : \"\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AA,AB;;ABCDE;\"\n * }\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#\n */\n function BasicSourceMapConsumer(aSourceMap) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/, ''));\n }\n\n var version = util.getArg(sourceMap, 'version');\n var sources = util.getArg(sourceMap, 'sources');\n // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which\n // requires the array) to play nice here.\n var names = util.getArg(sourceMap, 'names', []);\n var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);\n var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);\n var mappings = util.getArg(sourceMap, 'mappings');\n var file = util.getArg(sourceMap, 'file', null);\n\n // Once again, Sass deviates from the spec and supplies the version as a\n // string rather than a number, so we use loose equality checking here.\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n\n sources = sources\n // Some source maps produce relative source paths like \"./foo.js\" instead of\n // \"foo.js\". Normalize these first so that future comparisons will succeed.\n // See bugzil.la/1090768.\n .map(util.normalize)\n // Always ensure that absolute sources are internally stored relative to\n // the source root, if the source root is absolute. Not doing this would\n // be particularly problematic when the source root is a prefix of the\n // source (valid, but why??). See github issue #199 and bugzil.la/1188982.\n .map(function (source) {\n return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source)\n ? util.relative(sourceRoot, source)\n : source;\n });\n\n // Pass `true` below to allow duplicate names and sources. While source maps\n // are intended to be compressed and deduplicated, the TypeScript compiler\n // sometimes generates source maps with duplicates in them. See Github issue\n // #72 and bugzil.la/889492.\n this._names = ArraySet.fromArray(names, true);\n this._sources = ArraySet.fromArray(sources, true);\n\n this.sourceRoot = sourceRoot;\n this.sourcesContent = sourcesContent;\n this._mappings = mappings;\n this.file = file;\n }\n\n BasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\n BasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;\n\n /**\n * Create a BasicSourceMapConsumer from a SourceMapGenerator.\n *\n * @param SourceMapGenerator aSourceMap\n * The source map that will be consumed.\n * @returns BasicSourceMapConsumer\n */\n BasicSourceMapConsumer.fromSourceMap =\n function SourceMapConsumer_fromSourceMap(aSourceMap) {\n var smc = Object.create(BasicSourceMapConsumer.prototype);\n\n var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);\n var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);\n smc.sourceRoot = aSourceMap._sourceRoot;\n smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),\n smc.sourceRoot);\n smc.file = aSourceMap._file;\n\n // Because we are modifying the entries (by converting string sources and\n // names to indices into the sources and names ArraySets), we have to make\n // a copy of the entry or else bad things happen. Shared mutable state\n // strikes again! See github issue #191.\n\n var generatedMappings = aSourceMap._mappings.toArray().slice();\n var destGeneratedMappings = smc.__generatedMappings = [];\n var destOriginalMappings = smc.__originalMappings = [];\n\n for (var i = 0, length = generatedMappings.length; i < length; i++) {\n var srcMapping = generatedMappings[i];\n var destMapping = new Mapping;\n destMapping.generatedLine = srcMapping.generatedLine;\n destMapping.generatedColumn = srcMapping.generatedColumn;\n\n if (srcMapping.source) {\n destMapping.source = sources.indexOf(srcMapping.source);\n destMapping.originalLine = srcMapping.originalLine;\n destMapping.originalColumn = srcMapping.originalColumn;\n\n if (srcMapping.name) {\n destMapping.name = names.indexOf(srcMapping.name);\n }\n\n destOriginalMappings.push(destMapping);\n }\n\n destGeneratedMappings.push(destMapping);\n }\n\n quickSort(smc.__originalMappings, util.compareByOriginalPositions);\n\n return smc;\n };\n\n /**\n * The version of the source mapping spec that we are consuming.\n */\n BasicSourceMapConsumer.prototype._version = 3;\n\n /**\n * The list of original sources.\n */\n Object.defineProperty(BasicSourceMapConsumer.prototype, 'sources', {\n get: function () {\n return this._sources.toArray().map(function (s) {\n return this.sourceRoot != null ? util.join(this.sourceRoot, s) : s;\n }, this);\n }\n });\n\n /**\n * Provide the JIT with a nice shape / hidden class.\n */\n function Mapping() {\n this.generatedLine = 0;\n this.generatedColumn = 0;\n this.source = null;\n this.originalLine = null;\n this.originalColumn = null;\n this.name = null;\n }\n\n /**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\n BasicSourceMapConsumer.prototype._parseMappings =\n function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n var generatedLine = 1;\n var previousGeneratedColumn = 0;\n var previousOriginalLine = 0;\n var previousOriginalColumn = 0;\n var previousSource = 0;\n var previousName = 0;\n var length = aStr.length;\n var index = 0;\n var cachedSegments = {};\n var temp = {};\n var originalMappings = [];\n var generatedMappings = [];\n var mapping, str, segment, end, value;\n\n while (index < length) {\n if (aStr.charAt(index) === ';') {\n generatedLine++;\n index++;\n previousGeneratedColumn = 0;\n }\n else if (aStr.charAt(index) === ',') {\n index++;\n }\n else {\n mapping = new Mapping();\n mapping.generatedLine = generatedLine;\n\n // Because each offset is encoded relative to the previous one,\n // many segments often have the same encoding. We can exploit this\n // fact by caching the parsed variable length fields of each segment,\n // allowing us to avoid a second parse if we encounter the same\n // segment again.\n for (end = index; end < length; end++) {\n if (this._charIsMappingSeparator(aStr, end)) {\n break;\n }\n }\n str = aStr.slice(index, end);\n\n segment = cachedSegments[str];\n if (segment) {\n index += str.length;\n } else {\n segment = [];\n while (index < end) {\n base64VLQ.decode(aStr, index, temp);\n value = temp.value;\n index = temp.rest;\n segment.push(value);\n }\n\n if (segment.length === 2) {\n throw new Error('Found a source, but no line and column');\n }\n\n if (segment.length === 3) {\n throw new Error('Found a source and line, but no column');\n }\n\n cachedSegments[str] = segment;\n }\n\n // Generated column.\n mapping.generatedColumn = previousGeneratedColumn + segment[0];\n previousGeneratedColumn = mapping.generatedColumn;\n\n if (segment.length > 1) {\n // Original source.\n mapping.source = previousSource + segment[1];\n previousSource += segment[1];\n\n // Original line.\n mapping.originalLine = previousOriginalLine + segment[2];\n previousOriginalLine = mapping.originalLine;\n // Lines are stored 0-based\n mapping.originalLine += 1;\n\n // Original column.\n mapping.originalColumn = previousOriginalColumn + segment[3];\n previousOriginalColumn = mapping.originalColumn;\n\n if (segment.length > 4) {\n // Original name.\n mapping.name = previousName + segment[4];\n previousName += segment[4];\n }\n }\n\n generatedMappings.push(mapping);\n if (typeof mapping.originalLine === 'number') {\n originalMappings.push(mapping);\n }\n }\n }\n\n quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated);\n this.__generatedMappings = generatedMappings;\n\n quickSort(originalMappings, util.compareByOriginalPositions);\n this.__originalMappings = originalMappings;\n };\n\n /**\n * Find the mapping that best matches the hypothetical \"needle\" mapping that\n * we are searching for in the given \"haystack\" of mappings.\n */\n BasicSourceMapConsumer.prototype._findMapping =\n function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,\n aColumnName, aComparator, aBias) {\n // To return the position we are searching for, we must first find the\n // mapping for the given position and then return the opposite position it\n // points to. Because the mappings are sorted, we can use binary search to\n // find the best mapping.\n\n if (aNeedle[aLineName] <= 0) {\n throw new TypeError('Line must be greater than or equal to 1, got '\n + aNeedle[aLineName]);\n }\n if (aNeedle[aColumnName] < 0) {\n throw new TypeError('Column must be greater than or equal to 0, got '\n + aNeedle[aColumnName]);\n }\n\n return binarySearch.search(aNeedle, aMappings, aComparator, aBias);\n };\n\n /**\n * Compute the last column for each generated mapping. The last column is\n * inclusive.\n */\n BasicSourceMapConsumer.prototype.computeColumnSpans =\n function SourceMapConsumer_computeColumnSpans() {\n for (var index = 0; index < this._generatedMappings.length; ++index) {\n var mapping = this._generatedMappings[index];\n\n // Mappings do not contain a field for the last generated columnt. We\n // can come up with an optimistic estimate, however, by assuming that\n // mappings are contiguous (i.e. given two consecutive mappings, the\n // first mapping ends where the second one starts).\n if (index + 1 < this._generatedMappings.length) {\n var nextMapping = this._generatedMappings[index + 1];\n\n if (mapping.generatedLine === nextMapping.generatedLine) {\n mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;\n continue;\n }\n }\n\n // The last mapping for each line spans the entire line.\n mapping.lastGeneratedColumn = Infinity;\n }\n };\n\n /**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source.\n * - column: The column number in the generated source.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null.\n * - column: The column number in the original source, or null.\n * - name: The original identifier, or null.\n */\n BasicSourceMapConsumer.prototype.originalPositionFor =\n function SourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n var index = this._findMapping(\n needle,\n this._generatedMappings,\n \"generatedLine\",\n \"generatedColumn\",\n util.compareByGeneratedPositionsDeflated,\n util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n );\n\n if (index >= 0) {\n var mapping = this._generatedMappings[index];\n\n if (mapping.generatedLine === needle.generatedLine) {\n var source = util.getArg(mapping, 'source', null);\n if (source !== null) {\n source = this._sources.at(source);\n if (this.sourceRoot != null) {\n source = util.join(this.sourceRoot, source);\n }\n }\n var name = util.getArg(mapping, 'name', null);\n if (name !== null) {\n name = this._names.at(name);\n }\n return {\n source: source,\n line: util.getArg(mapping, 'originalLine', null),\n column: util.getArg(mapping, 'originalColumn', null),\n name: name\n };\n }\n }\n\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n };\n\n /**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\n BasicSourceMapConsumer.prototype.hasContentsOfAllSources =\n function BasicSourceMapConsumer_hasContentsOfAllSources() {\n if (!this.sourcesContent) {\n return false;\n }\n return this.sourcesContent.length >= this._sources.size() &&\n !this.sourcesContent.some(function (sc) { return sc == null; });\n };\n\n /**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\n BasicSourceMapConsumer.prototype.sourceContentFor =\n function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n if (!this.sourcesContent) {\n return null;\n }\n\n if (this.sourceRoot != null) {\n aSource = util.relative(this.sourceRoot, aSource);\n }\n\n if (this._sources.has(aSource)) {\n return this.sourcesContent[this._sources.indexOf(aSource)];\n }\n\n var url;\n if (this.sourceRoot != null\n && (url = util.urlParse(this.sourceRoot))) {\n // XXX: file:// URIs and absolute paths lead to unexpected behavior for\n // many users. We can help them out when they expect file:// URIs to\n // behave like it would if they were running a local HTTP server. See\n // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.\n var fileUriAbsPath = aSource.replace(/^file:\\/\\//, \"\");\n if (url.scheme == \"file\"\n && this._sources.has(fileUriAbsPath)) {\n return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]\n }\n\n if ((!url.path || url.path == \"/\")\n && this._sources.has(\"/\" + aSource)) {\n return this.sourcesContent[this._sources.indexOf(\"/\" + aSource)];\n }\n }\n\n // This function is used recursively from\n // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we\n // don't want to throw if we can't find the source - we just want to\n // return null, so we provide a flag to exit gracefully.\n if (nullOnMissing) {\n return null;\n }\n else {\n throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n }\n };\n\n /**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source.\n * - column: The column number in the original source.\n * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null.\n * - column: The column number in the generated source, or null.\n */\n BasicSourceMapConsumer.prototype.generatedPositionFor =\n function SourceMapConsumer_generatedPositionFor(aArgs) {\n var source = util.getArg(aArgs, 'source');\n if (this.sourceRoot != null) {\n source = util.relative(this.sourceRoot, source);\n }\n if (!this._sources.has(source)) {\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n }\n source = this._sources.indexOf(source);\n\n var needle = {\n source: source,\n originalLine: util.getArg(aArgs, 'line'),\n originalColumn: util.getArg(aArgs, 'column')\n };\n\n var index = this._findMapping(\n needle,\n this._originalMappings,\n \"originalLine\",\n \"originalColumn\",\n util.compareByOriginalPositions,\n util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n );\n\n if (index >= 0) {\n var mapping = this._originalMappings[index];\n\n if (mapping.source === needle.source) {\n return {\n line: util.getArg(mapping, 'generatedLine', null),\n column: util.getArg(mapping, 'generatedColumn', null),\n lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n };\n }\n }\n\n return {\n line: null,\n column: null,\n lastColumn: null\n };\n };\n\n exports.BasicSourceMapConsumer = BasicSourceMapConsumer;\n\n /**\n * An IndexedSourceMapConsumer instance represents a parsed source map which\n * we can query for information. It differs from BasicSourceMapConsumer in\n * that it takes \"indexed\" source maps (i.e. ones with a \"sections\" field) as\n * input.\n *\n * The only parameter is a raw source map (either as a JSON string, or already\n * parsed to an object). According to the spec for indexed source maps, they\n * have the following attributes:\n *\n * - version: Which version of the source map spec this map is following.\n * - file: Optional. The generated file this source map is associated with.\n * - sections: A list of section definitions.\n *\n * Each value under the \"sections\" field has two fields:\n * - offset: The offset into the original specified at which this section\n * begins to apply, defined as an object with a \"line\" and \"column\"\n * field.\n * - map: A source map definition. This source map could also be indexed,\n * but doesn't have to be.\n *\n * Instead of the \"map\" field, it's also possible to have a \"url\" field\n * specifying a URL to retrieve a source map from, but that's currently\n * unsupported.\n *\n * Here's an example source map, taken from the source map spec[0], but\n * modified to omit a section which uses the \"url\" field.\n *\n * {\n * version : 3,\n * file: \"app.js\",\n * sections: [{\n * offset: {line:100, column:10},\n * map: {\n * version : 3,\n * file: \"section.js\",\n * sources: [\"foo.js\", \"bar.js\"],\n * names: [\"src\", \"maps\", \"are\", \"fun\"],\n * mappings: \"AAAA,E;;ABCDE;\"\n * }\n * }],\n * }\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt\n */\n function IndexedSourceMapConsumer(aSourceMap) {\n var sourceMap = aSourceMap;\n if (typeof aSourceMap === 'string') {\n sourceMap = JSON.parse(aSourceMap.replace(/^\\)\\]\\}'/, ''));\n }\n\n var version = util.getArg(sourceMap, 'version');\n var sections = util.getArg(sourceMap, 'sections');\n\n if (version != this._version) {\n throw new Error('Unsupported version: ' + version);\n }\n\n this._sources = new ArraySet();\n this._names = new ArraySet();\n\n var lastOffset = {\n line: -1,\n column: 0\n };\n this._sections = sections.map(function (s) {\n if (s.url) {\n // The url field will require support for asynchronicity.\n // See https://github.com/mozilla/source-map/issues/16\n throw new Error('Support for url field in sections not implemented.');\n }\n var offset = util.getArg(s, 'offset');\n var offsetLine = util.getArg(offset, 'line');\n var offsetColumn = util.getArg(offset, 'column');\n\n if (offsetLine < lastOffset.line ||\n (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) {\n throw new Error('Section offsets must be ordered and non-overlapping.');\n }\n lastOffset = offset;\n\n return {\n generatedOffset: {\n // The offset fields are 0-based, but we use 1-based indices when\n // encoding/decoding from VLQ.\n generatedLine: offsetLine + 1,\n generatedColumn: offsetColumn + 1\n },\n consumer: new SourceMapConsumer(util.getArg(s, 'map'))\n }\n });\n }\n\n IndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\n IndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;\n\n /**\n * The version of the source mapping spec that we are consuming.\n */\n IndexedSourceMapConsumer.prototype._version = 3;\n\n /**\n * The list of original sources.\n */\n Object.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', {\n get: function () {\n var sources = [];\n for (var i = 0; i < this._sections.length; i++) {\n for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {\n sources.push(this._sections[i].consumer.sources[j]);\n }\n }\n return sources;\n }\n });\n\n /**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n * - line: The line number in the generated source.\n * - column: The column number in the generated source.\n *\n * and an object is returned with the following properties:\n *\n * - source: The original source file, or null.\n * - line: The line number in the original source, or null.\n * - column: The column number in the original source, or null.\n * - name: The original identifier, or null.\n */\n IndexedSourceMapConsumer.prototype.originalPositionFor =\n function IndexedSourceMapConsumer_originalPositionFor(aArgs) {\n var needle = {\n generatedLine: util.getArg(aArgs, 'line'),\n generatedColumn: util.getArg(aArgs, 'column')\n };\n\n // Find the section containing the generated position we're trying to map\n // to an original position.\n var sectionIndex = binarySearch.search(needle, this._sections,\n function(needle, section) {\n var cmp = needle.generatedLine - section.generatedOffset.generatedLine;\n if (cmp) {\n return cmp;\n }\n\n return (needle.generatedColumn -\n section.generatedOffset.generatedColumn);\n });\n var section = this._sections[sectionIndex];\n\n if (!section) {\n return {\n source: null,\n line: null,\n column: null,\n name: null\n };\n }\n\n return section.consumer.originalPositionFor({\n line: needle.generatedLine -\n (section.generatedOffset.generatedLine - 1),\n column: needle.generatedColumn -\n (section.generatedOffset.generatedLine === needle.generatedLine\n ? section.generatedOffset.generatedColumn - 1\n : 0),\n bias: aArgs.bias\n });\n };\n\n /**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\n IndexedSourceMapConsumer.prototype.hasContentsOfAllSources =\n function IndexedSourceMapConsumer_hasContentsOfAllSources() {\n return this._sections.every(function (s) {\n return s.consumer.hasContentsOfAllSources();\n });\n };\n\n /**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\n IndexedSourceMapConsumer.prototype.sourceContentFor =\n function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n\n var content = section.consumer.sourceContentFor(aSource, true);\n if (content) {\n return content;\n }\n }\n if (nullOnMissing) {\n return null;\n }\n else {\n throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n }\n };\n\n /**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n * - source: The filename of the original source.\n * - line: The line number in the original source.\n * - column: The column number in the original source.\n *\n * and an object is returned with the following properties:\n *\n * - line: The line number in the generated source, or null.\n * - column: The column number in the generated source, or null.\n */\n IndexedSourceMapConsumer.prototype.generatedPositionFor =\n function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n\n // Only consider this section if the requested source is in the list of\n // sources of the consumer.\n if (section.consumer.sources.indexOf(util.getArg(aArgs, 'source')) === -1) {\n continue;\n }\n var generatedPosition = section.consumer.generatedPositionFor(aArgs);\n if (generatedPosition) {\n var ret = {\n line: generatedPosition.line +\n (section.generatedOffset.generatedLine - 1),\n column: generatedPosition.column +\n (section.generatedOffset.generatedLine === generatedPosition.line\n ? section.generatedOffset.generatedColumn - 1\n : 0)\n };\n return ret;\n }\n }\n\n return {\n line: null,\n column: null\n };\n };\n\n /**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\n IndexedSourceMapConsumer.prototype._parseMappings =\n function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n this.__generatedMappings = [];\n this.__originalMappings = [];\n for (var i = 0; i < this._sections.length; i++) {\n var section = this._sections[i];\n var sectionMappings = section.consumer._generatedMappings;\n for (var j = 0; j < sectionMappings.length; j++) {\n var mapping = sectionMappings[j];\n\n var source = section.consumer._sources.at(mapping.source);\n if (section.consumer.sourceRoot !== null) {\n source = util.join(section.consumer.sourceRoot, source);\n }\n this._sources.add(source);\n source = this._sources.indexOf(source);\n\n var name = section.consumer._names.at(mapping.name);\n this._names.add(name);\n name = this._names.indexOf(name);\n\n // The mappings coming from the consumer for the section have\n // generated positions relative to the start of the section, so we\n // need to offset them to be relative to the start of the concatenated\n // generated file.\n var adjustedMapping = {\n source: source,\n generatedLine: mapping.generatedLine +\n (section.generatedOffset.generatedLine - 1),\n generatedColumn: mapping.generatedColumn +\n (section.generatedOffset.generatedLine === mapping.generatedLine\n ? section.generatedOffset.generatedColumn - 1\n : 0),\n originalLine: mapping.originalLine,\n originalColumn: mapping.originalColumn,\n name: name\n };\n\n this.__generatedMappings.push(adjustedMapping);\n if (typeof adjustedMapping.originalLine === 'number') {\n this.__originalMappings.push(adjustedMapping);\n }\n }\n }\n\n quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);\n quickSort(this.__originalMappings, util.compareByOriginalPositions);\n };\n\n exports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./lib/source-map-consumer.js\n ** module id = 7\n ** module chunks = 0\n **/","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n{\n exports.GREATEST_LOWER_BOUND = 1;\n exports.LEAST_UPPER_BOUND = 2;\n\n /**\n * Recursive implementation of binary search.\n *\n * @param aLow Indices here and lower do not contain the needle.\n * @param aHigh Indices here and higher do not contain the needle.\n * @param aNeedle The element being searched for.\n * @param aHaystack The non-empty array being searched.\n * @param aCompare Function which takes two elements and returns -1, 0, or 1.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n */\n function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {\n // This function terminates when one of the following is true:\n //\n // 1. We find the exact element we are looking for.\n //\n // 2. We did not find the exact element, but we can return the index of\n // the next-closest element.\n //\n // 3. We did not find the exact element, and there is no next-closest\n // element than the one we are searching for, so we return -1.\n var mid = Math.floor((aHigh - aLow) / 2) + aLow;\n var cmp = aCompare(aNeedle, aHaystack[mid], true);\n if (cmp === 0) {\n // Found the element we are looking for.\n return mid;\n }\n else if (cmp > 0) {\n // Our needle is greater than aHaystack[mid].\n if (aHigh - mid > 1) {\n // The element is in the upper half.\n return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // The exact needle element was not found in this haystack. Determine if\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return aHigh < aHaystack.length ? aHigh : -1;\n } else {\n return mid;\n }\n }\n else {\n // Our needle is less than aHaystack[mid].\n if (mid - aLow > 1) {\n // The element is in the lower half.\n return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);\n }\n\n // we are in termination case (3) or (2) and return the appropriate thing.\n if (aBias == exports.LEAST_UPPER_BOUND) {\n return mid;\n } else {\n return aLow < 0 ? -1 : aLow;\n }\n }\n }\n\n /**\n * This is an implementation of binary search which will always try and return\n * the index of the closest element if there is no exact hit. This is because\n * mappings between original and generated line/col pairs are single points,\n * and there is an implicit region between each of them, so a miss just means\n * that you aren't on the very start of a region.\n *\n * @param aNeedle The element you are looking for.\n * @param aHaystack The array that is being searched.\n * @param aCompare A function which takes the needle and an element in the\n * array and returns -1, 0, or 1 depending on whether the needle is less\n * than, equal to, or greater than the element, respectively.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n * closest element that is smaller than or greater than the one we are\n * searching for, respectively, if the exact element cannot be found.\n * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.\n */\n exports.search = function search(aNeedle, aHaystack, aCompare, aBias) {\n if (aHaystack.length === 0) {\n return -1;\n }\n\n var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,\n aCompare, aBias || exports.GREATEST_LOWER_BOUND);\n if (index < 0) {\n return -1;\n }\n\n // We have found either the exact element, or the next-closest element than\n // the one we are searching for. However, there may be more than one such\n // element. Make sure we always return the smallest of these.\n while (index - 1 >= 0) {\n if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {\n break;\n }\n --index;\n }\n\n return index;\n };\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./lib/binary-search.js\n ** module id = 8\n ** module chunks = 0\n **/","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n{\n // It turns out that some (most?) JavaScript engines don't self-host\n // `Array.prototype.sort`. This makes sense because C++ will likely remain\n // faster than JS when doing raw CPU-intensive sorting. However, when using a\n // custom comparator function, calling back and forth between the VM's C++ and\n // JIT'd JS is rather slow *and* loses JIT type information, resulting in\n // worse generated code for the comparator function than would be optimal. In\n // fact, when sorting with a comparator, these costs outweigh the benefits of\n // sorting in C++. By using our own JS-implemented Quick Sort (below), we get\n // a ~3500ms mean speed-up in `bench/bench.html`.\n\n /**\n * Swap the elements indexed by `x` and `y` in the array `ary`.\n *\n * @param {Array} ary\n * The array.\n * @param {Number} x\n * The index of the first item.\n * @param {Number} y\n * The index of the second item.\n */\n function swap(ary, x, y) {\n var temp = ary[x];\n ary[x] = ary[y];\n ary[y] = temp;\n }\n\n /**\n * Returns a random integer within the range `low .. high` inclusive.\n *\n * @param {Number} low\n * The lower bound on the range.\n * @param {Number} high\n * The upper bound on the range.\n */\n function randomIntInRange(low, high) {\n return Math.round(low + (Math.random() * (high - low)));\n }\n\n /**\n * The Quick Sort algorithm.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n * @param {Number} p\n * Start index of the array\n * @param {Number} r\n * End index of the array\n */\n function doQuickSort(ary, comparator, p, r) {\n // If our lower bound is less than our upper bound, we (1) partition the\n // array into two pieces and (2) recurse on each half. If it is not, this is\n // the empty array and our base case.\n\n if (p < r) {\n // (1) Partitioning.\n //\n // The partitioning chooses a pivot between `p` and `r` and moves all\n // elements that are less than or equal to the pivot to the before it, and\n // all the elements that are greater than it after it. The effect is that\n // once partition is done, the pivot is in the exact place it will be when\n // the array is put in sorted order, and it will not need to be moved\n // again. This runs in O(n) time.\n\n // Always choose a random pivot so that an input array which is reverse\n // sorted does not cause O(n^2) running time.\n var pivotIndex = randomIntInRange(p, r);\n var i = p - 1;\n\n swap(ary, pivotIndex, r);\n var pivot = ary[r];\n\n // Immediately after `j` is incremented in this loop, the following hold\n // true:\n //\n // * Every element in `ary[p .. i]` is less than or equal to the pivot.\n //\n // * Every element in `ary[i+1 .. j-1]` is greater than the pivot.\n for (var j = p; j < r; j++) {\n if (comparator(ary[j], pivot) <= 0) {\n i += 1;\n swap(ary, i, j);\n }\n }\n\n swap(ary, i + 1, j);\n var q = i + 1;\n\n // (2) Recurse on each half.\n\n doQuickSort(ary, comparator, p, q - 1);\n doQuickSort(ary, comparator, q + 1, r);\n }\n }\n\n /**\n * Sort the given array in-place with the given comparator function.\n *\n * @param {Array} ary\n * An array to sort.\n * @param {function} comparator\n * Function to use to compare two items.\n */\n exports.quickSort = function (ary, comparator) {\n doQuickSort(ary, comparator, 0, ary.length - 1);\n };\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./lib/quick-sort.js\n ** module id = 9\n ** module chunks = 0\n **/","/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n{\n var SourceMapGenerator = require('./source-map-generator').SourceMapGenerator;\n var util = require('./util');\n\n // Matches a Windows-style `\\r\\n` newline or a `\\n` newline used by all other\n // operating systems these days (capturing the result).\n var REGEX_NEWLINE = /(\\r?\\n)/;\n\n // Newline character code for charCodeAt() comparisons\n var NEWLINE_CODE = 10;\n\n // Private symbol for identifying `SourceNode`s when multiple versions of\n // the source-map library are loaded. This MUST NOT CHANGE across\n // versions!\n var isSourceNode = \"$$$isSourceNode$$$\";\n\n /**\n * SourceNodes provide a way to abstract over interpolating/concatenating\n * snippets of generated JavaScript source code while maintaining the line and\n * column information associated with the original source code.\n *\n * @param aLine The original line number.\n * @param aColumn The original column number.\n * @param aSource The original source's filename.\n * @param aChunks Optional. An array of strings which are snippets of\n * generated JS, or other SourceNodes.\n * @param aName The original identifier.\n */\n function SourceNode(aLine, aColumn, aSource, aChunks, aName) {\n this.children = [];\n this.sourceContents = {};\n this.line = aLine == null ? null : aLine;\n this.column = aColumn == null ? null : aColumn;\n this.source = aSource == null ? null : aSource;\n this.name = aName == null ? null : aName;\n this[isSourceNode] = true;\n if (aChunks != null) this.add(aChunks);\n }\n\n /**\n * Creates a SourceNode from generated code and a SourceMapConsumer.\n *\n * @param aGeneratedCode The generated code\n * @param aSourceMapConsumer The SourceMap for the generated code\n * @param aRelativePath Optional. The path that relative sources in the\n * SourceMapConsumer should be relative to.\n */\n SourceNode.fromStringWithSourceMap =\n function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {\n // The SourceNode we want to fill with the generated code\n // and the SourceMap\n var node = new SourceNode();\n\n // All even indices of this array are one line of the generated code,\n // while all odd indices are the newlines between two adjacent lines\n // (since `REGEX_NEWLINE` captures its match).\n // Processed fragments are removed from this array, by calling `shiftNextLine`.\n var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);\n var shiftNextLine = function() {\n var lineContents = remainingLines.shift();\n // The last line of a file might not have a newline.\n var newLine = remainingLines.shift() || \"\";\n return lineContents + newLine;\n };\n\n // We need to remember the position of \"remainingLines\"\n var lastGeneratedLine = 1, lastGeneratedColumn = 0;\n\n // The generate SourceNodes we need a code range.\n // To extract it current and last mapping is used.\n // Here we store the last mapping.\n var lastMapping = null;\n\n aSourceMapConsumer.eachMapping(function (mapping) {\n if (lastMapping !== null) {\n // We add the code from \"lastMapping\" to \"mapping\":\n // First check if there is a new line in between.\n if (lastGeneratedLine < mapping.generatedLine) {\n // Associate first line with \"lastMapping\"\n addMappingWithCode(lastMapping, shiftNextLine());\n lastGeneratedLine++;\n lastGeneratedColumn = 0;\n // The remaining code is added without mapping\n } else {\n // There is no new line in between.\n // Associate the code between \"lastGeneratedColumn\" and\n // \"mapping.generatedColumn\" with \"lastMapping\"\n var nextLine = remainingLines[0];\n var code = nextLine.substr(0, mapping.generatedColumn -\n lastGeneratedColumn);\n remainingLines[0] = nextLine.substr(mapping.generatedColumn -\n lastGeneratedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n addMappingWithCode(lastMapping, code);\n // No more remaining code, continue\n lastMapping = mapping;\n return;\n }\n }\n // We add the generated code until the first mapping\n // to the SourceNode without any mapping.\n // Each line is added as separate string.\n while (lastGeneratedLine < mapping.generatedLine) {\n node.add(shiftNextLine());\n lastGeneratedLine++;\n }\n if (lastGeneratedColumn < mapping.generatedColumn) {\n var nextLine = remainingLines[0];\n node.add(nextLine.substr(0, mapping.generatedColumn));\n remainingLines[0] = nextLine.substr(mapping.generatedColumn);\n lastGeneratedColumn = mapping.generatedColumn;\n }\n lastMapping = mapping;\n }, this);\n // We have processed all mappings.\n if (remainingLines.length > 0) {\n if (lastMapping) {\n // Associate the remaining code in the current line with \"lastMapping\"\n addMappingWithCode(lastMapping, shiftNextLine());\n }\n // and add the remaining lines without any mapping\n node.add(remainingLines.join(\"\"));\n }\n\n // Copy sourcesContent into SourceNode\n aSourceMapConsumer.sources.forEach(function (sourceFile) {\n var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n if (content != null) {\n if (aRelativePath != null) {\n sourceFile = util.join(aRelativePath, sourceFile);\n }\n node.setSourceContent(sourceFile, content);\n }\n });\n\n return node;\n\n function addMappingWithCode(mapping, code) {\n if (mapping === null || mapping.source === undefined) {\n node.add(code);\n } else {\n var source = aRelativePath\n ? util.join(aRelativePath, mapping.source)\n : mapping.source;\n node.add(new SourceNode(mapping.originalLine,\n mapping.originalColumn,\n source,\n code,\n mapping.name));\n }\n }\n };\n\n /**\n * Add a chunk of generated JS to this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\n SourceNode.prototype.add = function SourceNode_add(aChunk) {\n if (Array.isArray(aChunk)) {\n aChunk.forEach(function (chunk) {\n this.add(chunk);\n }, this);\n }\n else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n if (aChunk) {\n this.children.push(aChunk);\n }\n }\n else {\n throw new TypeError(\n \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n );\n }\n return this;\n };\n\n /**\n * Add a chunk of generated JS to the beginning of this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n * SourceNode, or an array where each member is one of those things.\n */\n SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {\n if (Array.isArray(aChunk)) {\n for (var i = aChunk.length-1; i >= 0; i--) {\n this.prepend(aChunk[i]);\n }\n }\n else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n this.children.unshift(aChunk);\n }\n else {\n throw new TypeError(\n \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n );\n }\n return this;\n };\n\n /**\n * Walk over the tree of JS snippets in this node and its children. The\n * walking function is called once for each snippet of JS and is passed that\n * snippet and the its original associated source's line/column location.\n *\n * @param aFn The traversal function.\n */\n SourceNode.prototype.walk = function SourceNode_walk(aFn) {\n var chunk;\n for (var i = 0, len = this.children.length; i < len; i++) {\n chunk = this.children[i];\n if (chunk[isSourceNode]) {\n chunk.walk(aFn);\n }\n else {\n if (chunk !== '') {\n aFn(chunk, { source: this.source,\n line: this.line,\n column: this.column,\n name: this.name });\n }\n }\n }\n };\n\n /**\n * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between\n * each of `this.children`.\n *\n * @param aSep The separator.\n */\n SourceNode.prototype.join = function SourceNode_join(aSep) {\n var newChildren;\n var i;\n var len = this.children.length;\n if (len > 0) {\n newChildren = [];\n for (i = 0; i < len-1; i++) {\n newChildren.push(this.children[i]);\n newChildren.push(aSep);\n }\n newChildren.push(this.children[i]);\n this.children = newChildren;\n }\n return this;\n };\n\n /**\n * Call String.prototype.replace on the very right-most source snippet. Useful\n * for trimming whitespace from the end of a source node, etc.\n *\n * @param aPattern The pattern to replace.\n * @param aReplacement The thing to replace the pattern with.\n */\n SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {\n var lastChild = this.children[this.children.length - 1];\n if (lastChild[isSourceNode]) {\n lastChild.replaceRight(aPattern, aReplacement);\n }\n else if (typeof lastChild === 'string') {\n this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);\n }\n else {\n this.children.push(''.replace(aPattern, aReplacement));\n }\n return this;\n };\n\n /**\n * Set the source content for a source file. This will be added to the SourceMapGenerator\n * in the sourcesContent field.\n *\n * @param aSourceFile The filename of the source file\n * @param aSourceContent The content of the source file\n */\n SourceNode.prototype.setSourceContent =\n function SourceNode_setSourceContent(aSourceFile, aSourceContent) {\n this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;\n };\n\n /**\n * Walk over the tree of SourceNodes. The walking function is called for each\n * source file content and is passed the filename and source content.\n *\n * @param aFn The traversal function.\n */\n SourceNode.prototype.walkSourceContents =\n function SourceNode_walkSourceContents(aFn) {\n for (var i = 0, len = this.children.length; i < len; i++) {\n if (this.children[i][isSourceNode]) {\n this.children[i].walkSourceContents(aFn);\n }\n }\n\n var sources = Object.keys(this.sourceContents);\n for (var i = 0, len = sources.length; i < len; i++) {\n aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);\n }\n };\n\n /**\n * Return the string representation of this source node. Walks over the tree\n * and concatenates all the various snippets together to one string.\n */\n SourceNode.prototype.toString = function SourceNode_toString() {\n var str = \"\";\n this.walk(function (chunk) {\n str += chunk;\n });\n return str;\n };\n\n /**\n * Returns the string representation of this source node along with a source\n * map.\n */\n SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {\n var generated = {\n code: \"\",\n line: 1,\n column: 0\n };\n var map = new SourceMapGenerator(aArgs);\n var sourceMappingActive = false;\n var lastOriginalSource = null;\n var lastOriginalLine = null;\n var lastOriginalColumn = null;\n var lastOriginalName = null;\n this.walk(function (chunk, original) {\n generated.code += chunk;\n if (original.source !== null\n && original.line !== null\n && original.column !== null) {\n if(lastOriginalSource !== original.source\n || lastOriginalLine !== original.line\n || lastOriginalColumn !== original.column\n || lastOriginalName !== original.name) {\n map.addMapping({\n source: original.source,\n original: {\n line: original.line,\n column: original.column\n },\n generated: {\n line: generated.line,\n column: generated.column\n },\n name: original.name\n });\n }\n lastOriginalSource = original.source;\n lastOriginalLine = original.line;\n lastOriginalColumn = original.column;\n lastOriginalName = original.name;\n sourceMappingActive = true;\n } else if (sourceMappingActive) {\n map.addMapping({\n generated: {\n line: generated.line,\n column: generated.column\n }\n });\n lastOriginalSource = null;\n sourceMappingActive = false;\n }\n for (var idx = 0, length = chunk.length; idx < length; idx++) {\n if (chunk.charCodeAt(idx) === NEWLINE_CODE) {\n generated.line++;\n generated.column = 0;\n // Mappings end at eol\n if (idx + 1 === length) {\n lastOriginalSource = null;\n sourceMappingActive = false;\n } else if (sourceMappingActive) {\n map.addMapping({\n source: original.source,\n original: {\n line: original.line,\n column: original.column\n },\n generated: {\n line: generated.line,\n column: generated.column\n },\n name: original.name\n });\n }\n } else {\n generated.column++;\n }\n }\n });\n this.walkSourceContents(function (sourceFile, sourceContent) {\n map.setSourceContent(sourceFile, sourceContent);\n });\n\n return { code: generated.code, map: map };\n };\n\n exports.SourceNode = SourceNode;\n}\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./lib/source-node.js\n ** module id = 10\n ** module chunks = 0\n **/"],"sourceRoot":""}
\ No newline at end of file
diff --git a/node_modules/babel-generator/node_modules/source-map/lib/array-set.js b/node_modules/babel-generator/node_modules/source-map/lib/array-set.js
new file mode 100644
index 0000000..0ffbb9f
--- /dev/null
+++ b/node_modules/babel-generator/node_modules/source-map/lib/array-set.js
@@ -0,0 +1,104 @@
+/* -*- Mode: js; js-indent-level: 2; -*- */
+/*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+{
+ var util = require('./util');
+
+ /**
+ * A data structure which is a combination of an array and a set. Adding a new
+ * member is O(1), testing for membership is O(1), and finding the index of an
+ * element is O(1). Removing elements from the set is not supported. Only
+ * strings are supported for membership.
+ */
+ function ArraySet() {
+ this._array = [];
+ this._set = {};
+ }
+
+ /**
+ * Static method for creating ArraySet instances from an existing array.
+ */
+ ArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {
+ var set = new ArraySet();
+ for (var i = 0, len = aArray.length; i < len; i++) {
+ set.add(aArray[i], aAllowDuplicates);
+ }
+ return set;
+ };
+
+ /**
+ * Return how many unique items are in this ArraySet. If duplicates have been
+ * added, than those do not count towards the size.
+ *
+ * @returns Number
+ */
+ ArraySet.prototype.size = function ArraySet_size() {
+ return Object.getOwnPropertyNames(this._set).length;
+ };
+
+ /**
+ * Add the given string to this set.
+ *
+ * @param String aStr
+ */
+ ArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {
+ var sStr = util.toSetString(aStr);
+ var isDuplicate = this._set.hasOwnProperty(sStr);
+ var idx = this._array.length;
+ if (!isDuplicate || aAllowDuplicates) {
+ this._array.push(aStr);
+ }
+ if (!isDuplicate) {
+ this._set[sStr] = idx;
+ }
+ };
+
+ /**
+ * Is the given string a member of this set?
+ *
+ * @param String aStr
+ */
+ ArraySet.prototype.has = function ArraySet_has(aStr) {
+ var sStr = util.toSetString(aStr);
+ return this._set.hasOwnProperty(sStr);
+ };
+
+ /**
+ * What is the index of the given string in the array?
+ *
+ * @param String aStr
+ */
+ ArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {
+ var sStr = util.toSetString(aStr);
+ if (this._set.hasOwnProperty(sStr)) {
+ return this._set[sStr];
+ }
+ throw new Error('"' + aStr + '" is not in the set.');
+ };
+
+ /**
+ * What is the element at the given index?
+ *
+ * @param Number aIdx
+ */
+ ArraySet.prototype.at = function ArraySet_at(aIdx) {
+ if (aIdx >= 0 && aIdx < this._array.length) {
+ return this._array[aIdx];
+ }
+ throw new Error('No element indexed by ' + aIdx);
+ };
+
+ /**
+ * Returns the array representation of this set (which has the proper indices
+ * indicated by indexOf). Note that this is a copy of the internal array used
+ * for storing the members so that no one can mess with internal state.
+ */
+ ArraySet.prototype.toArray = function ArraySet_toArray() {
+ return this._array.slice();
+ };
+
+ exports.ArraySet = ArraySet;
+}
diff --git a/node_modules/babel-generator/node_modules/source-map/lib/base64-vlq.js b/node_modules/babel-generator/node_modules/source-map/lib/base64-vlq.js
new file mode 100644
index 0000000..f2a07f7
--- /dev/null
+++ b/node_modules/babel-generator/node_modules/source-map/lib/base64-vlq.js
@@ -0,0 +1,141 @@
+/* -*- Mode: js; js-indent-level: 2; -*- */
+/*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ *
+ * Based on the Base 64 VLQ implementation in Closure Compiler:
+ * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java
+ *
+ * Copyright 2011 The Closure Compiler Authors. All rights reserved.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ *
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following
+ * disclaimer in the documentation and/or other materials provided
+ * with the distribution.
+ * * Neither the name of Google Inc. nor the names of its
+ * contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * OWNER 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.
+ */
+{
+ var base64 = require('./base64');
+
+ // A single base 64 digit can contain 6 bits of data. For the base 64 variable
+ // length quantities we use in the source map spec, the first bit is the sign,
+ // the next four bits are the actual value, and the 6th bit is the
+ // continuation bit. The continuation bit tells us whether there are more
+ // digits in this value following this digit.
+ //
+ // Continuation
+ // | Sign
+ // | |
+ // V V
+ // 101011
+
+ var VLQ_BASE_SHIFT = 5;
+
+ // binary: 100000
+ var VLQ_BASE = 1 << VLQ_BASE_SHIFT;
+
+ // binary: 011111
+ var VLQ_BASE_MASK = VLQ_BASE - 1;
+
+ // binary: 100000
+ var VLQ_CONTINUATION_BIT = VLQ_BASE;
+
+ /**
+ * Converts from a two-complement value to a value where the sign bit is
+ * placed in the least significant bit. For example, as decimals:
+ * 1 becomes 2 (10 binary), -1 becomes 3 (11 binary)
+ * 2 becomes 4 (100 binary), -2 becomes 5 (101 binary)
+ */
+ function toVLQSigned(aValue) {
+ return aValue < 0
+ ? ((-aValue) << 1) + 1
+ : (aValue << 1) + 0;
+ }
+
+ /**
+ * Converts to a two-complement value from a value where the sign bit is
+ * placed in the least significant bit. For example, as decimals:
+ * 2 (10 binary) becomes 1, 3 (11 binary) becomes -1
+ * 4 (100 binary) becomes 2, 5 (101 binary) becomes -2
+ */
+ function fromVLQSigned(aValue) {
+ var isNegative = (aValue & 1) === 1;
+ var shifted = aValue >> 1;
+ return isNegative
+ ? -shifted
+ : shifted;
+ }
+
+ /**
+ * Returns the base 64 VLQ encoded value.
+ */
+ exports.encode = function base64VLQ_encode(aValue) {
+ var encoded = "";
+ var digit;
+
+ var vlq = toVLQSigned(aValue);
+
+ do {
+ digit = vlq & VLQ_BASE_MASK;
+ vlq >>>= VLQ_BASE_SHIFT;
+ if (vlq > 0) {
+ // There are still more digits in this value, so we must make sure the
+ // continuation bit is marked.
+ digit |= VLQ_CONTINUATION_BIT;
+ }
+ encoded += base64.encode(digit);
+ } while (vlq > 0);
+
+ return encoded;
+ };
+
+ /**
+ * Decodes the next base 64 VLQ value from the given string and returns the
+ * value and the rest of the string via the out parameter.
+ */
+ exports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {
+ var strLen = aStr.length;
+ var result = 0;
+ var shift = 0;
+ var continuation, digit;
+
+ do {
+ if (aIndex >= strLen) {
+ throw new Error("Expected more digits in base 64 VLQ value.");
+ }
+
+ digit = base64.decode(aStr.charCodeAt(aIndex++));
+ if (digit === -1) {
+ throw new Error("Invalid base64 digit: " + aStr.charAt(aIndex - 1));
+ }
+
+ continuation = !!(digit & VLQ_CONTINUATION_BIT);
+ digit &= VLQ_BASE_MASK;
+ result = result + (digit << shift);
+ shift += VLQ_BASE_SHIFT;
+ } while (continuation);
+
+ aOutParam.value = fromVLQSigned(result);
+ aOutParam.rest = aIndex;
+ };
+}
diff --git a/node_modules/babel-generator/node_modules/source-map/lib/base64.js b/node_modules/babel-generator/node_modules/source-map/lib/base64.js
new file mode 100644
index 0000000..dfda6ce
--- /dev/null
+++ b/node_modules/babel-generator/node_modules/source-map/lib/base64.js
@@ -0,0 +1,68 @@
+/* -*- Mode: js; js-indent-level: 2; -*- */
+/*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+{
+ var intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');
+
+ /**
+ * Encode an integer in the range of 0 to 63 to a single base 64 digit.
+ */
+ exports.encode = function (number) {
+ if (0 <= number && number < intToCharMap.length) {
+ return intToCharMap[number];
+ }
+ throw new TypeError("Must be between 0 and 63: " + number);
+ };
+
+ /**
+ * Decode a single base 64 character code digit to an integer. Returns -1 on
+ * failure.
+ */
+ exports.decode = function (charCode) {
+ var bigA = 65; // 'A'
+ var bigZ = 90; // 'Z'
+
+ var littleA = 97; // 'a'
+ var littleZ = 122; // 'z'
+
+ var zero = 48; // '0'
+ var nine = 57; // '9'
+
+ var plus = 43; // '+'
+ var slash = 47; // '/'
+
+ var littleOffset = 26;
+ var numberOffset = 52;
+
+ // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ
+ if (bigA <= charCode && charCode <= bigZ) {
+ return (charCode - bigA);
+ }
+
+ // 26 - 51: abcdefghijklmnopqrstuvwxyz
+ if (littleA <= charCode && charCode <= littleZ) {
+ return (charCode - littleA + littleOffset);
+ }
+
+ // 52 - 61: 0123456789
+ if (zero <= charCode && charCode <= nine) {
+ return (charCode - zero + numberOffset);
+ }
+
+ // 62: +
+ if (charCode == plus) {
+ return 62;
+ }
+
+ // 63: /
+ if (charCode == slash) {
+ return 63;
+ }
+
+ // Invalid base64 digit.
+ return -1;
+ };
+}
diff --git a/node_modules/babel-generator/node_modules/source-map/lib/binary-search.js b/node_modules/babel-generator/node_modules/source-map/lib/binary-search.js
new file mode 100644
index 0000000..03161e6
--- /dev/null
+++ b/node_modules/babel-generator/node_modules/source-map/lib/binary-search.js
@@ -0,0 +1,112 @@
+/* -*- Mode: js; js-indent-level: 2; -*- */
+/*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+{
+ exports.GREATEST_LOWER_BOUND = 1;
+ exports.LEAST_UPPER_BOUND = 2;
+
+ /**
+ * Recursive implementation of binary search.
+ *
+ * @param aLow Indices here and lower do not contain the needle.
+ * @param aHigh Indices here and higher do not contain the needle.
+ * @param aNeedle The element being searched for.
+ * @param aHaystack The non-empty array being searched.
+ * @param aCompare Function which takes two elements and returns -1, 0, or 1.
+ * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or
+ * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the
+ * closest element that is smaller than or greater than the one we are
+ * searching for, respectively, if the exact element cannot be found.
+ */
+ function recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {
+ // This function terminates when one of the following is true:
+ //
+ // 1. We find the exact element we are looking for.
+ //
+ // 2. We did not find the exact element, but we can return the index of
+ // the next-closest element.
+ //
+ // 3. We did not find the exact element, and there is no next-closest
+ // element than the one we are searching for, so we return -1.
+ var mid = Math.floor((aHigh - aLow) / 2) + aLow;
+ var cmp = aCompare(aNeedle, aHaystack[mid], true);
+ if (cmp === 0) {
+ // Found the element we are looking for.
+ return mid;
+ }
+ else if (cmp > 0) {
+ // Our needle is greater than aHaystack[mid].
+ if (aHigh - mid > 1) {
+ // The element is in the upper half.
+ return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);
+ }
+
+ // The exact needle element was not found in this haystack. Determine if
+ // we are in termination case (3) or (2) and return the appropriate thing.
+ if (aBias == exports.LEAST_UPPER_BOUND) {
+ return aHigh < aHaystack.length ? aHigh : -1;
+ } else {
+ return mid;
+ }
+ }
+ else {
+ // Our needle is less than aHaystack[mid].
+ if (mid - aLow > 1) {
+ // The element is in the lower half.
+ return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);
+ }
+
+ // we are in termination case (3) or (2) and return the appropriate thing.
+ if (aBias == exports.LEAST_UPPER_BOUND) {
+ return mid;
+ } else {
+ return aLow < 0 ? -1 : aLow;
+ }
+ }
+ }
+
+ /**
+ * This is an implementation of binary search which will always try and return
+ * the index of the closest element if there is no exact hit. This is because
+ * mappings between original and generated line/col pairs are single points,
+ * and there is an implicit region between each of them, so a miss just means
+ * that you aren't on the very start of a region.
+ *
+ * @param aNeedle The element you are looking for.
+ * @param aHaystack The array that is being searched.
+ * @param aCompare A function which takes the needle and an element in the
+ * array and returns -1, 0, or 1 depending on whether the needle is less
+ * than, equal to, or greater than the element, respectively.
+ * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or
+ * 'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the
+ * closest element that is smaller than or greater than the one we are
+ * searching for, respectively, if the exact element cannot be found.
+ * Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.
+ */
+ exports.search = function search(aNeedle, aHaystack, aCompare, aBias) {
+ if (aHaystack.length === 0) {
+ return -1;
+ }
+
+ var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,
+ aCompare, aBias || exports.GREATEST_LOWER_BOUND);
+ if (index < 0) {
+ return -1;
+ }
+
+ // We have found either the exact element, or the next-closest element than
+ // the one we are searching for. However, there may be more than one such
+ // element. Make sure we always return the smallest of these.
+ while (index - 1 >= 0) {
+ if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {
+ break;
+ }
+ --index;
+ }
+
+ return index;
+ };
+}
diff --git a/node_modules/babel-generator/node_modules/source-map/lib/mapping-list.js b/node_modules/babel-generator/node_modules/source-map/lib/mapping-list.js
new file mode 100644
index 0000000..287a607
--- /dev/null
+++ b/node_modules/babel-generator/node_modules/source-map/lib/mapping-list.js
@@ -0,0 +1,80 @@
+/* -*- Mode: js; js-indent-level: 2; -*- */
+/*
+ * Copyright 2014 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+{
+ var util = require('./util');
+
+ /**
+ * Determine whether mappingB is after mappingA with respect to generated
+ * position.
+ */
+ function generatedPositionAfter(mappingA, mappingB) {
+ // Optimized for most common case
+ var lineA = mappingA.generatedLine;
+ var lineB = mappingB.generatedLine;
+ var columnA = mappingA.generatedColumn;
+ var columnB = mappingB.generatedColumn;
+ return lineB > lineA || lineB == lineA && columnB >= columnA ||
+ util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0;
+ }
+
+ /**
+ * A data structure to provide a sorted view of accumulated mappings in a
+ * performance conscious manner. It trades a neglibable overhead in general
+ * case for a large speedup in case of mappings being added in order.
+ */
+ function MappingList() {
+ this._array = [];
+ this._sorted = true;
+ // Serves as infimum
+ this._last = {generatedLine: -1, generatedColumn: 0};
+ }
+
+ /**
+ * Iterate through internal items. This method takes the same arguments that
+ * `Array.prototype.forEach` takes.
+ *
+ * NOTE: The order of the mappings is NOT guaranteed.
+ */
+ MappingList.prototype.unsortedForEach =
+ function MappingList_forEach(aCallback, aThisArg) {
+ this._array.forEach(aCallback, aThisArg);
+ };
+
+ /**
+ * Add the given source mapping.
+ *
+ * @param Object aMapping
+ */
+ MappingList.prototype.add = function MappingList_add(aMapping) {
+ if (generatedPositionAfter(this._last, aMapping)) {
+ this._last = aMapping;
+ this._array.push(aMapping);
+ } else {
+ this._sorted = false;
+ this._array.push(aMapping);
+ }
+ };
+
+ /**
+ * Returns the flat, sorted array of mappings. The mappings are sorted by
+ * generated position.
+ *
+ * WARNING: This method returns internal data without copying, for
+ * performance. The return value must NOT be mutated, and should be treated as
+ * an immutable borrow. If you want to take ownership, you must make your own
+ * copy.
+ */
+ MappingList.prototype.toArray = function MappingList_toArray() {
+ if (!this._sorted) {
+ this._array.sort(util.compareByGeneratedPositionsInflated);
+ this._sorted = true;
+ }
+ return this._array;
+ };
+
+ exports.MappingList = MappingList;
+}
diff --git a/node_modules/babel-generator/node_modules/source-map/lib/quick-sort.js b/node_modules/babel-generator/node_modules/source-map/lib/quick-sort.js
new file mode 100644
index 0000000..f92823c
--- /dev/null
+++ b/node_modules/babel-generator/node_modules/source-map/lib/quick-sort.js
@@ -0,0 +1,115 @@
+/* -*- Mode: js; js-indent-level: 2; -*- */
+/*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+{
+ // It turns out that some (most?) JavaScript engines don't self-host
+ // `Array.prototype.sort`. This makes sense because C++ will likely remain
+ // faster than JS when doing raw CPU-intensive sorting. However, when using a
+ // custom comparator function, calling back and forth between the VM's C++ and
+ // JIT'd JS is rather slow *and* loses JIT type information, resulting in
+ // worse generated code for the comparator function than would be optimal. In
+ // fact, when sorting with a comparator, these costs outweigh the benefits of
+ // sorting in C++. By using our own JS-implemented Quick Sort (below), we get
+ // a ~3500ms mean speed-up in `bench/bench.html`.
+
+ /**
+ * Swap the elements indexed by `x` and `y` in the array `ary`.
+ *
+ * @param {Array} ary
+ * The array.
+ * @param {Number} x
+ * The index of the first item.
+ * @param {Number} y
+ * The index of the second item.
+ */
+ function swap(ary, x, y) {
+ var temp = ary[x];
+ ary[x] = ary[y];
+ ary[y] = temp;
+ }
+
+ /**
+ * Returns a random integer within the range `low .. high` inclusive.
+ *
+ * @param {Number} low
+ * The lower bound on the range.
+ * @param {Number} high
+ * The upper bound on the range.
+ */
+ function randomIntInRange(low, high) {
+ return Math.round(low + (Math.random() * (high - low)));
+ }
+
+ /**
+ * The Quick Sort algorithm.
+ *
+ * @param {Array} ary
+ * An array to sort.
+ * @param {function} comparator
+ * Function to use to compare two items.
+ * @param {Number} p
+ * Start index of the array
+ * @param {Number} r
+ * End index of the array
+ */
+ function doQuickSort(ary, comparator, p, r) {
+ // If our lower bound is less than our upper bound, we (1) partition the
+ // array into two pieces and (2) recurse on each half. If it is not, this is
+ // the empty array and our base case.
+
+ if (p < r) {
+ // (1) Partitioning.
+ //
+ // The partitioning chooses a pivot between `p` and `r` and moves all
+ // elements that are less than or equal to the pivot to the before it, and
+ // all the elements that are greater than it after it. The effect is that
+ // once partition is done, the pivot is in the exact place it will be when
+ // the array is put in sorted order, and it will not need to be moved
+ // again. This runs in O(n) time.
+
+ // Always choose a random pivot so that an input array which is reverse
+ // sorted does not cause O(n^2) running time.
+ var pivotIndex = randomIntInRange(p, r);
+ var i = p - 1;
+
+ swap(ary, pivotIndex, r);
+ var pivot = ary[r];
+
+ // Immediately after `j` is incremented in this loop, the following hold
+ // true:
+ //
+ // * Every element in `ary[p .. i]` is less than or equal to the pivot.
+ //
+ // * Every element in `ary[i+1 .. j-1]` is greater than the pivot.
+ for (var j = p; j < r; j++) {
+ if (comparator(ary[j], pivot) <= 0) {
+ i += 1;
+ swap(ary, i, j);
+ }
+ }
+
+ swap(ary, i + 1, j);
+ var q = i + 1;
+
+ // (2) Recurse on each half.
+
+ doQuickSort(ary, comparator, p, q - 1);
+ doQuickSort(ary, comparator, q + 1, r);
+ }
+ }
+
+ /**
+ * Sort the given array in-place with the given comparator function.
+ *
+ * @param {Array} ary
+ * An array to sort.
+ * @param {function} comparator
+ * Function to use to compare two items.
+ */
+ exports.quickSort = function (ary, comparator) {
+ doQuickSort(ary, comparator, 0, ary.length - 1);
+ };
+}
diff --git a/node_modules/babel-generator/node_modules/source-map/lib/source-map-consumer.js b/node_modules/babel-generator/node_modules/source-map/lib/source-map-consumer.js
new file mode 100644
index 0000000..242f21c
--- /dev/null
+++ b/node_modules/babel-generator/node_modules/source-map/lib/source-map-consumer.js
@@ -0,0 +1,1082 @@
+/* -*- Mode: js; js-indent-level: 2; -*- */
+/*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+{
+ var util = require('./util');
+ var binarySearch = require('./binary-search');
+ var ArraySet = require('./array-set').ArraySet;
+ var base64VLQ = require('./base64-vlq');
+ var quickSort = require('./quick-sort').quickSort;
+
+ function SourceMapConsumer(aSourceMap) {
+ var sourceMap = aSourceMap;
+ if (typeof aSourceMap === 'string') {
+ sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, ''));
+ }
+
+ return sourceMap.sections != null
+ ? new IndexedSourceMapConsumer(sourceMap)
+ : new BasicSourceMapConsumer(sourceMap);
+ }
+
+ SourceMapConsumer.fromSourceMap = function(aSourceMap) {
+ return BasicSourceMapConsumer.fromSourceMap(aSourceMap);
+ }
+
+ /**
+ * The version of the source mapping spec that we are consuming.
+ */
+ SourceMapConsumer.prototype._version = 3;
+
+ // `__generatedMappings` and `__originalMappings` are arrays that hold the
+ // parsed mapping coordinates from the source map's "mappings" attribute. They
+ // are lazily instantiated, accessed via the `_generatedMappings` and
+ // `_originalMappings` getters respectively, and we only parse the mappings
+ // and create these arrays once queried for a source location. We jump through
+ // these hoops because there can be many thousands of mappings, and parsing
+ // them is expensive, so we only want to do it if we must.
+ //
+ // Each object in the arrays is of the form:
+ //
+ // {
+ // generatedLine: The line number in the generated code,
+ // generatedColumn: The column number in the generated code,
+ // source: The path to the original source file that generated this
+ // chunk of code,
+ // originalLine: The line number in the original source that
+ // corresponds to this chunk of generated code,
+ // originalColumn: The column number in the original source that
+ // corresponds to this chunk of generated code,
+ // name: The name of the original symbol which generated this chunk of
+ // code.
+ // }
+ //
+ // All properties except for `generatedLine` and `generatedColumn` can be
+ // `null`.
+ //
+ // `_generatedMappings` is ordered by the generated positions.
+ //
+ // `_originalMappings` is ordered by the original positions.
+
+ SourceMapConsumer.prototype.__generatedMappings = null;
+ Object.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {
+ get: function () {
+ if (!this.__generatedMappings) {
+ this._parseMappings(this._mappings, this.sourceRoot);
+ }
+
+ return this.__generatedMappings;
+ }
+ });
+
+ SourceMapConsumer.prototype.__originalMappings = null;
+ Object.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {
+ get: function () {
+ if (!this.__originalMappings) {
+ this._parseMappings(this._mappings, this.sourceRoot);
+ }
+
+ return this.__originalMappings;
+ }
+ });
+
+ SourceMapConsumer.prototype._charIsMappingSeparator =
+ function SourceMapConsumer_charIsMappingSeparator(aStr, index) {
+ var c = aStr.charAt(index);
+ return c === ";" || c === ",";
+ };
+
+ /**
+ * Parse the mappings in a string in to a data structure which we can easily
+ * query (the ordered arrays in the `this.__generatedMappings` and
+ * `this.__originalMappings` properties).
+ */
+ SourceMapConsumer.prototype._parseMappings =
+ function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {
+ throw new Error("Subclasses must implement _parseMappings");
+ };
+
+ SourceMapConsumer.GENERATED_ORDER = 1;
+ SourceMapConsumer.ORIGINAL_ORDER = 2;
+
+ SourceMapConsumer.GREATEST_LOWER_BOUND = 1;
+ SourceMapConsumer.LEAST_UPPER_BOUND = 2;
+
+ /**
+ * Iterate over each mapping between an original source/line/column and a
+ * generated line/column in this source map.
+ *
+ * @param Function aCallback
+ * The function that is called with each mapping.
+ * @param Object aContext
+ * Optional. If specified, this object will be the value of `this` every
+ * time that `aCallback` is called.
+ * @param aOrder
+ * Either `SourceMapConsumer.GENERATED_ORDER` or
+ * `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to
+ * iterate over the mappings sorted by the generated file's line/column
+ * order or the original's source/line/column order, respectively. Defaults to
+ * `SourceMapConsumer.GENERATED_ORDER`.
+ */
+ SourceMapConsumer.prototype.eachMapping =
+ function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {
+ var context = aContext || null;
+ var order = aOrder || SourceMapConsumer.GENERATED_ORDER;
+
+ var mappings;
+ switch (order) {
+ case SourceMapConsumer.GENERATED_ORDER:
+ mappings = this._generatedMappings;
+ break;
+ case SourceMapConsumer.ORIGINAL_ORDER:
+ mappings = this._originalMappings;
+ break;
+ default:
+ throw new Error("Unknown order of iteration.");
+ }
+
+ var sourceRoot = this.sourceRoot;
+ mappings.map(function (mapping) {
+ var source = mapping.source === null ? null : this._sources.at(mapping.source);
+ if (source != null && sourceRoot != null) {
+ source = util.join(sourceRoot, source);
+ }
+ return {
+ source: source,
+ generatedLine: mapping.generatedLine,
+ generatedColumn: mapping.generatedColumn,
+ originalLine: mapping.originalLine,
+ originalColumn: mapping.originalColumn,
+ name: mapping.name === null ? null : this._names.at(mapping.name)
+ };
+ }, this).forEach(aCallback, context);
+ };
+
+ /**
+ * Returns all generated line and column information for the original source,
+ * line, and column provided. If no column is provided, returns all mappings
+ * corresponding to a either the line we are searching for or the next
+ * closest line that has any mappings. Otherwise, returns all mappings
+ * corresponding to the given line and either the column we are searching for
+ * or the next closest column that has any offsets.
+ *
+ * The only argument is an object with the following properties:
+ *
+ * - source: The filename of the original source.
+ * - line: The line number in the original source.
+ * - column: Optional. the column number in the original source.
+ *
+ * and an array of objects is returned, each with the following properties:
+ *
+ * - line: The line number in the generated source, or null.
+ * - column: The column number in the generated source, or null.
+ */
+ SourceMapConsumer.prototype.allGeneratedPositionsFor =
+ function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {
+ var line = util.getArg(aArgs, 'line');
+
+ // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping
+ // returns the index of the closest mapping less than the needle. By
+ // setting needle.originalColumn to 0, we thus find the last mapping for
+ // the given line, provided such a mapping exists.
+ var needle = {
+ source: util.getArg(aArgs, 'source'),
+ originalLine: line,
+ originalColumn: util.getArg(aArgs, 'column', 0)
+ };
+
+ if (this.sourceRoot != null) {
+ needle.source = util.relative(this.sourceRoot, needle.source);
+ }
+ if (!this._sources.has(needle.source)) {
+ return [];
+ }
+ needle.source = this._sources.indexOf(needle.source);
+
+ var mappings = [];
+
+ var index = this._findMapping(needle,
+ this._originalMappings,
+ "originalLine",
+ "originalColumn",
+ util.compareByOriginalPositions,
+ binarySearch.LEAST_UPPER_BOUND);
+ if (index >= 0) {
+ var mapping = this._originalMappings[index];
+
+ if (aArgs.column === undefined) {
+ var originalLine = mapping.originalLine;
+
+ // Iterate until either we run out of mappings, or we run into
+ // a mapping for a different line than the one we found. Since
+ // mappings are sorted, this is guaranteed to find all mappings for
+ // the line we found.
+ while (mapping && mapping.originalLine === originalLine) {
+ mappings.push({
+ line: util.getArg(mapping, 'generatedLine', null),
+ column: util.getArg(mapping, 'generatedColumn', null),
+ lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)
+ });
+
+ mapping = this._originalMappings[++index];
+ }
+ } else {
+ var originalColumn = mapping.originalColumn;
+
+ // Iterate until either we run out of mappings, or we run into
+ // a mapping for a different line than the one we were searching for.
+ // Since mappings are sorted, this is guaranteed to find all mappings for
+ // the line we are searching for.
+ while (mapping &&
+ mapping.originalLine === line &&
+ mapping.originalColumn == originalColumn) {
+ mappings.push({
+ line: util.getArg(mapping, 'generatedLine', null),
+ column: util.getArg(mapping, 'generatedColumn', null),
+ lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)
+ });
+
+ mapping = this._originalMappings[++index];
+ }
+ }
+ }
+
+ return mappings;
+ };
+
+ exports.SourceMapConsumer = SourceMapConsumer;
+
+ /**
+ * A BasicSourceMapConsumer instance represents a parsed source map which we can
+ * query for information about the original file positions by giving it a file
+ * position in the generated source.
+ *
+ * The only parameter is the raw source map (either as a JSON string, or
+ * already parsed to an object). According to the spec, source maps have the
+ * following attributes:
+ *
+ * - version: Which version of the source map spec this map is following.
+ * - sources: An array of URLs to the original source files.
+ * - names: An array of identifiers which can be referrenced by individual mappings.
+ * - sourceRoot: Optional. The URL root from which all sources are relative.
+ * - sourcesContent: Optional. An array of contents of the original source files.
+ * - mappings: A string of base64 VLQs which contain the actual mappings.
+ * - file: Optional. The generated file this source map is associated with.
+ *
+ * Here is an example source map, taken from the source map spec[0]:
+ *
+ * {
+ * version : 3,
+ * file: "out.js",
+ * sourceRoot : "",
+ * sources: ["foo.js", "bar.js"],
+ * names: ["src", "maps", "are", "fun"],
+ * mappings: "AA,AB;;ABCDE;"
+ * }
+ *
+ * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#
+ */
+ function BasicSourceMapConsumer(aSourceMap) {
+ var sourceMap = aSourceMap;
+ if (typeof aSourceMap === 'string') {
+ sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, ''));
+ }
+
+ var version = util.getArg(sourceMap, 'version');
+ var sources = util.getArg(sourceMap, 'sources');
+ // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which
+ // requires the array) to play nice here.
+ var names = util.getArg(sourceMap, 'names', []);
+ var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);
+ var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);
+ var mappings = util.getArg(sourceMap, 'mappings');
+ var file = util.getArg(sourceMap, 'file', null);
+
+ // Once again, Sass deviates from the spec and supplies the version as a
+ // string rather than a number, so we use loose equality checking here.
+ if (version != this._version) {
+ throw new Error('Unsupported version: ' + version);
+ }
+
+ sources = sources
+ // Some source maps produce relative source paths like "./foo.js" instead of
+ // "foo.js". Normalize these first so that future comparisons will succeed.
+ // See bugzil.la/1090768.
+ .map(util.normalize)
+ // Always ensure that absolute sources are internally stored relative to
+ // the source root, if the source root is absolute. Not doing this would
+ // be particularly problematic when the source root is a prefix of the
+ // source (valid, but why??). See github issue #199 and bugzil.la/1188982.
+ .map(function (source) {
+ return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source)
+ ? util.relative(sourceRoot, source)
+ : source;
+ });
+
+ // Pass `true` below to allow duplicate names and sources. While source maps
+ // are intended to be compressed and deduplicated, the TypeScript compiler
+ // sometimes generates source maps with duplicates in them. See Github issue
+ // #72 and bugzil.la/889492.
+ this._names = ArraySet.fromArray(names, true);
+ this._sources = ArraySet.fromArray(sources, true);
+
+ this.sourceRoot = sourceRoot;
+ this.sourcesContent = sourcesContent;
+ this._mappings = mappings;
+ this.file = file;
+ }
+
+ BasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);
+ BasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;
+
+ /**
+ * Create a BasicSourceMapConsumer from a SourceMapGenerator.
+ *
+ * @param SourceMapGenerator aSourceMap
+ * The source map that will be consumed.
+ * @returns BasicSourceMapConsumer
+ */
+ BasicSourceMapConsumer.fromSourceMap =
+ function SourceMapConsumer_fromSourceMap(aSourceMap) {
+ var smc = Object.create(BasicSourceMapConsumer.prototype);
+
+ var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);
+ var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);
+ smc.sourceRoot = aSourceMap._sourceRoot;
+ smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),
+ smc.sourceRoot);
+ smc.file = aSourceMap._file;
+
+ // Because we are modifying the entries (by converting string sources and
+ // names to indices into the sources and names ArraySets), we have to make
+ // a copy of the entry or else bad things happen. Shared mutable state
+ // strikes again! See github issue #191.
+
+ var generatedMappings = aSourceMap._mappings.toArray().slice();
+ var destGeneratedMappings = smc.__generatedMappings = [];
+ var destOriginalMappings = smc.__originalMappings = [];
+
+ for (var i = 0, length = generatedMappings.length; i < length; i++) {
+ var srcMapping = generatedMappings[i];
+ var destMapping = new Mapping;
+ destMapping.generatedLine = srcMapping.generatedLine;
+ destMapping.generatedColumn = srcMapping.generatedColumn;
+
+ if (srcMapping.source) {
+ destMapping.source = sources.indexOf(srcMapping.source);
+ destMapping.originalLine = srcMapping.originalLine;
+ destMapping.originalColumn = srcMapping.originalColumn;
+
+ if (srcMapping.name) {
+ destMapping.name = names.indexOf(srcMapping.name);
+ }
+
+ destOriginalMappings.push(destMapping);
+ }
+
+ destGeneratedMappings.push(destMapping);
+ }
+
+ quickSort(smc.__originalMappings, util.compareByOriginalPositions);
+
+ return smc;
+ };
+
+ /**
+ * The version of the source mapping spec that we are consuming.
+ */
+ BasicSourceMapConsumer.prototype._version = 3;
+
+ /**
+ * The list of original sources.
+ */
+ Object.defineProperty(BasicSourceMapConsumer.prototype, 'sources', {
+ get: function () {
+ return this._sources.toArray().map(function (s) {
+ return this.sourceRoot != null ? util.join(this.sourceRoot, s) : s;
+ }, this);
+ }
+ });
+
+ /**
+ * Provide the JIT with a nice shape / hidden class.
+ */
+ function Mapping() {
+ this.generatedLine = 0;
+ this.generatedColumn = 0;
+ this.source = null;
+ this.originalLine = null;
+ this.originalColumn = null;
+ this.name = null;
+ }
+
+ /**
+ * Parse the mappings in a string in to a data structure which we can easily
+ * query (the ordered arrays in the `this.__generatedMappings` and
+ * `this.__originalMappings` properties).
+ */
+ BasicSourceMapConsumer.prototype._parseMappings =
+ function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {
+ var generatedLine = 1;
+ var previousGeneratedColumn = 0;
+ var previousOriginalLine = 0;
+ var previousOriginalColumn = 0;
+ var previousSource = 0;
+ var previousName = 0;
+ var length = aStr.length;
+ var index = 0;
+ var cachedSegments = {};
+ var temp = {};
+ var originalMappings = [];
+ var generatedMappings = [];
+ var mapping, str, segment, end, value;
+
+ while (index < length) {
+ if (aStr.charAt(index) === ';') {
+ generatedLine++;
+ index++;
+ previousGeneratedColumn = 0;
+ }
+ else if (aStr.charAt(index) === ',') {
+ index++;
+ }
+ else {
+ mapping = new Mapping();
+ mapping.generatedLine = generatedLine;
+
+ // Because each offset is encoded relative to the previous one,
+ // many segments often have the same encoding. We can exploit this
+ // fact by caching the parsed variable length fields of each segment,
+ // allowing us to avoid a second parse if we encounter the same
+ // segment again.
+ for (end = index; end < length; end++) {
+ if (this._charIsMappingSeparator(aStr, end)) {
+ break;
+ }
+ }
+ str = aStr.slice(index, end);
+
+ segment = cachedSegments[str];
+ if (segment) {
+ index += str.length;
+ } else {
+ segment = [];
+ while (index < end) {
+ base64VLQ.decode(aStr, index, temp);
+ value = temp.value;
+ index = temp.rest;
+ segment.push(value);
+ }
+
+ if (segment.length === 2) {
+ throw new Error('Found a source, but no line and column');
+ }
+
+ if (segment.length === 3) {
+ throw new Error('Found a source and line, but no column');
+ }
+
+ cachedSegments[str] = segment;
+ }
+
+ // Generated column.
+ mapping.generatedColumn = previousGeneratedColumn + segment[0];
+ previousGeneratedColumn = mapping.generatedColumn;
+
+ if (segment.length > 1) {
+ // Original source.
+ mapping.source = previousSource + segment[1];
+ previousSource += segment[1];
+
+ // Original line.
+ mapping.originalLine = previousOriginalLine + segment[2];
+ previousOriginalLine = mapping.originalLine;
+ // Lines are stored 0-based
+ mapping.originalLine += 1;
+
+ // Original column.
+ mapping.originalColumn = previousOriginalColumn + segment[3];
+ previousOriginalColumn = mapping.originalColumn;
+
+ if (segment.length > 4) {
+ // Original name.
+ mapping.name = previousName + segment[4];
+ previousName += segment[4];
+ }
+ }
+
+ generatedMappings.push(mapping);
+ if (typeof mapping.originalLine === 'number') {
+ originalMappings.push(mapping);
+ }
+ }
+ }
+
+ quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated);
+ this.__generatedMappings = generatedMappings;
+
+ quickSort(originalMappings, util.compareByOriginalPositions);
+ this.__originalMappings = originalMappings;
+ };
+
+ /**
+ * Find the mapping that best matches the hypothetical "needle" mapping that
+ * we are searching for in the given "haystack" of mappings.
+ */
+ BasicSourceMapConsumer.prototype._findMapping =
+ function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,
+ aColumnName, aComparator, aBias) {
+ // To return the position we are searching for, we must first find the
+ // mapping for the given position and then return the opposite position it
+ // points to. Because the mappings are sorted, we can use binary search to
+ // find the best mapping.
+
+ if (aNeedle[aLineName] <= 0) {
+ throw new TypeError('Line must be greater than or equal to 1, got '
+ + aNeedle[aLineName]);
+ }
+ if (aNeedle[aColumnName] < 0) {
+ throw new TypeError('Column must be greater than or equal to 0, got '
+ + aNeedle[aColumnName]);
+ }
+
+ return binarySearch.search(aNeedle, aMappings, aComparator, aBias);
+ };
+
+ /**
+ * Compute the last column for each generated mapping. The last column is
+ * inclusive.
+ */
+ BasicSourceMapConsumer.prototype.computeColumnSpans =
+ function SourceMapConsumer_computeColumnSpans() {
+ for (var index = 0; index < this._generatedMappings.length; ++index) {
+ var mapping = this._generatedMappings[index];
+
+ // Mappings do not contain a field for the last generated columnt. We
+ // can come up with an optimistic estimate, however, by assuming that
+ // mappings are contiguous (i.e. given two consecutive mappings, the
+ // first mapping ends where the second one starts).
+ if (index + 1 < this._generatedMappings.length) {
+ var nextMapping = this._generatedMappings[index + 1];
+
+ if (mapping.generatedLine === nextMapping.generatedLine) {
+ mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;
+ continue;
+ }
+ }
+
+ // The last mapping for each line spans the entire line.
+ mapping.lastGeneratedColumn = Infinity;
+ }
+ };
+
+ /**
+ * Returns the original source, line, and column information for the generated
+ * source's line and column positions provided. The only argument is an object
+ * with the following properties:
+ *
+ * - line: The line number in the generated source.
+ * - column: The column number in the generated source.
+ * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or
+ * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the
+ * closest element that is smaller than or greater than the one we are
+ * searching for, respectively, if the exact element cannot be found.
+ * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.
+ *
+ * and an object is returned with the following properties:
+ *
+ * - source: The original source file, or null.
+ * - line: The line number in the original source, or null.
+ * - column: The column number in the original source, or null.
+ * - name: The original identifier, or null.
+ */
+ BasicSourceMapConsumer.prototype.originalPositionFor =
+ function SourceMapConsumer_originalPositionFor(aArgs) {
+ var needle = {
+ generatedLine: util.getArg(aArgs, 'line'),
+ generatedColumn: util.getArg(aArgs, 'column')
+ };
+
+ var index = this._findMapping(
+ needle,
+ this._generatedMappings,
+ "generatedLine",
+ "generatedColumn",
+ util.compareByGeneratedPositionsDeflated,
+ util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)
+ );
+
+ if (index >= 0) {
+ var mapping = this._generatedMappings[index];
+
+ if (mapping.generatedLine === needle.generatedLine) {
+ var source = util.getArg(mapping, 'source', null);
+ if (source !== null) {
+ source = this._sources.at(source);
+ if (this.sourceRoot != null) {
+ source = util.join(this.sourceRoot, source);
+ }
+ }
+ var name = util.getArg(mapping, 'name', null);
+ if (name !== null) {
+ name = this._names.at(name);
+ }
+ return {
+ source: source,
+ line: util.getArg(mapping, 'originalLine', null),
+ column: util.getArg(mapping, 'originalColumn', null),
+ name: name
+ };
+ }
+ }
+
+ return {
+ source: null,
+ line: null,
+ column: null,
+ name: null
+ };
+ };
+
+ /**
+ * Return true if we have the source content for every source in the source
+ * map, false otherwise.
+ */
+ BasicSourceMapConsumer.prototype.hasContentsOfAllSources =
+ function BasicSourceMapConsumer_hasContentsOfAllSources() {
+ if (!this.sourcesContent) {
+ return false;
+ }
+ return this.sourcesContent.length >= this._sources.size() &&
+ !this.sourcesContent.some(function (sc) { return sc == null; });
+ };
+
+ /**
+ * Returns the original source content. The only argument is the url of the
+ * original source file. Returns null if no original source content is
+ * available.
+ */
+ BasicSourceMapConsumer.prototype.sourceContentFor =
+ function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {
+ if (!this.sourcesContent) {
+ return null;
+ }
+
+ if (this.sourceRoot != null) {
+ aSource = util.relative(this.sourceRoot, aSource);
+ }
+
+ if (this._sources.has(aSource)) {
+ return this.sourcesContent[this._sources.indexOf(aSource)];
+ }
+
+ var url;
+ if (this.sourceRoot != null
+ && (url = util.urlParse(this.sourceRoot))) {
+ // XXX: file:// URIs and absolute paths lead to unexpected behavior for
+ // many users. We can help them out when they expect file:// URIs to
+ // behave like it would if they were running a local HTTP server. See
+ // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.
+ var fileUriAbsPath = aSource.replace(/^file:\/\//, "");
+ if (url.scheme == "file"
+ && this._sources.has(fileUriAbsPath)) {
+ return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]
+ }
+
+ if ((!url.path || url.path == "/")
+ && this._sources.has("/" + aSource)) {
+ return this.sourcesContent[this._sources.indexOf("/" + aSource)];
+ }
+ }
+
+ // This function is used recursively from
+ // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we
+ // don't want to throw if we can't find the source - we just want to
+ // return null, so we provide a flag to exit gracefully.
+ if (nullOnMissing) {
+ return null;
+ }
+ else {
+ throw new Error('"' + aSource + '" is not in the SourceMap.');
+ }
+ };
+
+ /**
+ * Returns the generated line and column information for the original source,
+ * line, and column positions provided. The only argument is an object with
+ * the following properties:
+ *
+ * - source: The filename of the original source.
+ * - line: The line number in the original source.
+ * - column: The column number in the original source.
+ * - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or
+ * 'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the
+ * closest element that is smaller than or greater than the one we are
+ * searching for, respectively, if the exact element cannot be found.
+ * Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.
+ *
+ * and an object is returned with the following properties:
+ *
+ * - line: The line number in the generated source, or null.
+ * - column: The column number in the generated source, or null.
+ */
+ BasicSourceMapConsumer.prototype.generatedPositionFor =
+ function SourceMapConsumer_generatedPositionFor(aArgs) {
+ var source = util.getArg(aArgs, 'source');
+ if (this.sourceRoot != null) {
+ source = util.relative(this.sourceRoot, source);
+ }
+ if (!this._sources.has(source)) {
+ return {
+ line: null,
+ column: null,
+ lastColumn: null
+ };
+ }
+ source = this._sources.indexOf(source);
+
+ var needle = {
+ source: source,
+ originalLine: util.getArg(aArgs, 'line'),
+ originalColumn: util.getArg(aArgs, 'column')
+ };
+
+ var index = this._findMapping(
+ needle,
+ this._originalMappings,
+ "originalLine",
+ "originalColumn",
+ util.compareByOriginalPositions,
+ util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)
+ );
+
+ if (index >= 0) {
+ var mapping = this._originalMappings[index];
+
+ if (mapping.source === needle.source) {
+ return {
+ line: util.getArg(mapping, 'generatedLine', null),
+ column: util.getArg(mapping, 'generatedColumn', null),
+ lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)
+ };
+ }
+ }
+
+ return {
+ line: null,
+ column: null,
+ lastColumn: null
+ };
+ };
+
+ exports.BasicSourceMapConsumer = BasicSourceMapConsumer;
+
+ /**
+ * An IndexedSourceMapConsumer instance represents a parsed source map which
+ * we can query for information. It differs from BasicSourceMapConsumer in
+ * that it takes "indexed" source maps (i.e. ones with a "sections" field) as
+ * input.
+ *
+ * The only parameter is a raw source map (either as a JSON string, or already
+ * parsed to an object). According to the spec for indexed source maps, they
+ * have the following attributes:
+ *
+ * - version: Which version of the source map spec this map is following.
+ * - file: Optional. The generated file this source map is associated with.
+ * - sections: A list of section definitions.
+ *
+ * Each value under the "sections" field has two fields:
+ * - offset: The offset into the original specified at which this section
+ * begins to apply, defined as an object with a "line" and "column"
+ * field.
+ * - map: A source map definition. This source map could also be indexed,
+ * but doesn't have to be.
+ *
+ * Instead of the "map" field, it's also possible to have a "url" field
+ * specifying a URL to retrieve a source map from, but that's currently
+ * unsupported.
+ *
+ * Here's an example source map, taken from the source map spec[0], but
+ * modified to omit a section which uses the "url" field.
+ *
+ * {
+ * version : 3,
+ * file: "app.js",
+ * sections: [{
+ * offset: {line:100, column:10},
+ * map: {
+ * version : 3,
+ * file: "section.js",
+ * sources: ["foo.js", "bar.js"],
+ * names: ["src", "maps", "are", "fun"],
+ * mappings: "AAAA,E;;ABCDE;"
+ * }
+ * }],
+ * }
+ *
+ * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt
+ */
+ function IndexedSourceMapConsumer(aSourceMap) {
+ var sourceMap = aSourceMap;
+ if (typeof aSourceMap === 'string') {
+ sourceMap = JSON.parse(aSourceMap.replace(/^\)\]\}'/, ''));
+ }
+
+ var version = util.getArg(sourceMap, 'version');
+ var sections = util.getArg(sourceMap, 'sections');
+
+ if (version != this._version) {
+ throw new Error('Unsupported version: ' + version);
+ }
+
+ this._sources = new ArraySet();
+ this._names = new ArraySet();
+
+ var lastOffset = {
+ line: -1,
+ column: 0
+ };
+ this._sections = sections.map(function (s) {
+ if (s.url) {
+ // The url field will require support for asynchronicity.
+ // See https://github.com/mozilla/source-map/issues/16
+ throw new Error('Support for url field in sections not implemented.');
+ }
+ var offset = util.getArg(s, 'offset');
+ var offsetLine = util.getArg(offset, 'line');
+ var offsetColumn = util.getArg(offset, 'column');
+
+ if (offsetLine < lastOffset.line ||
+ (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) {
+ throw new Error('Section offsets must be ordered and non-overlapping.');
+ }
+ lastOffset = offset;
+
+ return {
+ generatedOffset: {
+ // The offset fields are 0-based, but we use 1-based indices when
+ // encoding/decoding from VLQ.
+ generatedLine: offsetLine + 1,
+ generatedColumn: offsetColumn + 1
+ },
+ consumer: new SourceMapConsumer(util.getArg(s, 'map'))
+ }
+ });
+ }
+
+ IndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);
+ IndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;
+
+ /**
+ * The version of the source mapping spec that we are consuming.
+ */
+ IndexedSourceMapConsumer.prototype._version = 3;
+
+ /**
+ * The list of original sources.
+ */
+ Object.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', {
+ get: function () {
+ var sources = [];
+ for (var i = 0; i < this._sections.length; i++) {
+ for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {
+ sources.push(this._sections[i].consumer.sources[j]);
+ }
+ }
+ return sources;
+ }
+ });
+
+ /**
+ * Returns the original source, line, and column information for the generated
+ * source's line and column positions provided. The only argument is an object
+ * with the following properties:
+ *
+ * - line: The line number in the generated source.
+ * - column: The column number in the generated source.
+ *
+ * and an object is returned with the following properties:
+ *
+ * - source: The original source file, or null.
+ * - line: The line number in the original source, or null.
+ * - column: The column number in the original source, or null.
+ * - name: The original identifier, or null.
+ */
+ IndexedSourceMapConsumer.prototype.originalPositionFor =
+ function IndexedSourceMapConsumer_originalPositionFor(aArgs) {
+ var needle = {
+ generatedLine: util.getArg(aArgs, 'line'),
+ generatedColumn: util.getArg(aArgs, 'column')
+ };
+
+ // Find the section containing the generated position we're trying to map
+ // to an original position.
+ var sectionIndex = binarySearch.search(needle, this._sections,
+ function(needle, section) {
+ var cmp = needle.generatedLine - section.generatedOffset.generatedLine;
+ if (cmp) {
+ return cmp;
+ }
+
+ return (needle.generatedColumn -
+ section.generatedOffset.generatedColumn);
+ });
+ var section = this._sections[sectionIndex];
+
+ if (!section) {
+ return {
+ source: null,
+ line: null,
+ column: null,
+ name: null
+ };
+ }
+
+ return section.consumer.originalPositionFor({
+ line: needle.generatedLine -
+ (section.generatedOffset.generatedLine - 1),
+ column: needle.generatedColumn -
+ (section.generatedOffset.generatedLine === needle.generatedLine
+ ? section.generatedOffset.generatedColumn - 1
+ : 0),
+ bias: aArgs.bias
+ });
+ };
+
+ /**
+ * Return true if we have the source content for every source in the source
+ * map, false otherwise.
+ */
+ IndexedSourceMapConsumer.prototype.hasContentsOfAllSources =
+ function IndexedSourceMapConsumer_hasContentsOfAllSources() {
+ return this._sections.every(function (s) {
+ return s.consumer.hasContentsOfAllSources();
+ });
+ };
+
+ /**
+ * Returns the original source content. The only argument is the url of the
+ * original source file. Returns null if no original source content is
+ * available.
+ */
+ IndexedSourceMapConsumer.prototype.sourceContentFor =
+ function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {
+ for (var i = 0; i < this._sections.length; i++) {
+ var section = this._sections[i];
+
+ var content = section.consumer.sourceContentFor(aSource, true);
+ if (content) {
+ return content;
+ }
+ }
+ if (nullOnMissing) {
+ return null;
+ }
+ else {
+ throw new Error('"' + aSource + '" is not in the SourceMap.');
+ }
+ };
+
+ /**
+ * Returns the generated line and column information for the original source,
+ * line, and column positions provided. The only argument is an object with
+ * the following properties:
+ *
+ * - source: The filename of the original source.
+ * - line: The line number in the original source.
+ * - column: The column number in the original source.
+ *
+ * and an object is returned with the following properties:
+ *
+ * - line: The line number in the generated source, or null.
+ * - column: The column number in the generated source, or null.
+ */
+ IndexedSourceMapConsumer.prototype.generatedPositionFor =
+ function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {
+ for (var i = 0; i < this._sections.length; i++) {
+ var section = this._sections[i];
+
+ // Only consider this section if the requested source is in the list of
+ // sources of the consumer.
+ if (section.consumer.sources.indexOf(util.getArg(aArgs, 'source')) === -1) {
+ continue;
+ }
+ var generatedPosition = section.consumer.generatedPositionFor(aArgs);
+ if (generatedPosition) {
+ var ret = {
+ line: generatedPosition.line +
+ (section.generatedOffset.generatedLine - 1),
+ column: generatedPosition.column +
+ (section.generatedOffset.generatedLine === generatedPosition.line
+ ? section.generatedOffset.generatedColumn - 1
+ : 0)
+ };
+ return ret;
+ }
+ }
+
+ return {
+ line: null,
+ column: null
+ };
+ };
+
+ /**
+ * Parse the mappings in a string in to a data structure which we can easily
+ * query (the ordered arrays in the `this.__generatedMappings` and
+ * `this.__originalMappings` properties).
+ */
+ IndexedSourceMapConsumer.prototype._parseMappings =
+ function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {
+ this.__generatedMappings = [];
+ this.__originalMappings = [];
+ for (var i = 0; i < this._sections.length; i++) {
+ var section = this._sections[i];
+ var sectionMappings = section.consumer._generatedMappings;
+ for (var j = 0; j < sectionMappings.length; j++) {
+ var mapping = sectionMappings[j];
+
+ var source = section.consumer._sources.at(mapping.source);
+ if (section.consumer.sourceRoot !== null) {
+ source = util.join(section.consumer.sourceRoot, source);
+ }
+ this._sources.add(source);
+ source = this._sources.indexOf(source);
+
+ var name = section.consumer._names.at(mapping.name);
+ this._names.add(name);
+ name = this._names.indexOf(name);
+
+ // The mappings coming from the consumer for the section have
+ // generated positions relative to the start of the section, so we
+ // need to offset them to be relative to the start of the concatenated
+ // generated file.
+ var adjustedMapping = {
+ source: source,
+ generatedLine: mapping.generatedLine +
+ (section.generatedOffset.generatedLine - 1),
+ generatedColumn: mapping.generatedColumn +
+ (section.generatedOffset.generatedLine === mapping.generatedLine
+ ? section.generatedOffset.generatedColumn - 1
+ : 0),
+ originalLine: mapping.originalLine,
+ originalColumn: mapping.originalColumn,
+ name: name
+ };
+
+ this.__generatedMappings.push(adjustedMapping);
+ if (typeof adjustedMapping.originalLine === 'number') {
+ this.__originalMappings.push(adjustedMapping);
+ }
+ }
+ }
+
+ quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);
+ quickSort(this.__originalMappings, util.compareByOriginalPositions);
+ };
+
+ exports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;
+}
diff --git a/node_modules/babel-generator/node_modules/source-map/lib/source-map-generator.js b/node_modules/babel-generator/node_modules/source-map/lib/source-map-generator.js
new file mode 100644
index 0000000..ffc76cd
--- /dev/null
+++ b/node_modules/babel-generator/node_modules/source-map/lib/source-map-generator.js
@@ -0,0 +1,396 @@
+/* -*- Mode: js; js-indent-level: 2; -*- */
+/*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+{
+ var base64VLQ = require('./base64-vlq');
+ var util = require('./util');
+ var ArraySet = require('./array-set').ArraySet;
+ var MappingList = require('./mapping-list').MappingList;
+
+ /**
+ * An instance of the SourceMapGenerator represents a source map which is
+ * being built incrementally. You may pass an object with the following
+ * properties:
+ *
+ * - file: The filename of the generated source.
+ * - sourceRoot: A root for all relative URLs in this source map.
+ */
+ function SourceMapGenerator(aArgs) {
+ if (!aArgs) {
+ aArgs = {};
+ }
+ this._file = util.getArg(aArgs, 'file', null);
+ this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null);
+ this._skipValidation = util.getArg(aArgs, 'skipValidation', false);
+ this._sources = new ArraySet();
+ this._names = new ArraySet();
+ this._mappings = new MappingList();
+ this._sourcesContents = null;
+ }
+
+ SourceMapGenerator.prototype._version = 3;
+
+ /**
+ * Creates a new SourceMapGenerator based on a SourceMapConsumer
+ *
+ * @param aSourceMapConsumer The SourceMap.
+ */
+ SourceMapGenerator.fromSourceMap =
+ function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) {
+ var sourceRoot = aSourceMapConsumer.sourceRoot;
+ var generator = new SourceMapGenerator({
+ file: aSourceMapConsumer.file,
+ sourceRoot: sourceRoot
+ });
+ aSourceMapConsumer.eachMapping(function (mapping) {
+ var newMapping = {
+ generated: {
+ line: mapping.generatedLine,
+ column: mapping.generatedColumn
+ }
+ };
+
+ if (mapping.source != null) {
+ newMapping.source = mapping.source;
+ if (sourceRoot != null) {
+ newMapping.source = util.relative(sourceRoot, newMapping.source);
+ }
+
+ newMapping.original = {
+ line: mapping.originalLine,
+ column: mapping.originalColumn
+ };
+
+ if (mapping.name != null) {
+ newMapping.name = mapping.name;
+ }
+ }
+
+ generator.addMapping(newMapping);
+ });
+ aSourceMapConsumer.sources.forEach(function (sourceFile) {
+ var content = aSourceMapConsumer.sourceContentFor(sourceFile);
+ if (content != null) {
+ generator.setSourceContent(sourceFile, content);
+ }
+ });
+ return generator;
+ };
+
+ /**
+ * Add a single mapping from original source line and column to the generated
+ * source's line and column for this source map being created. The mapping
+ * object should have the following properties:
+ *
+ * - generated: An object with the generated line and column positions.
+ * - original: An object with the original line and column positions.
+ * - source: The original source file (relative to the sourceRoot).
+ * - name: An optional original token name for this mapping.
+ */
+ SourceMapGenerator.prototype.addMapping =
+ function SourceMapGenerator_addMapping(aArgs) {
+ var generated = util.getArg(aArgs, 'generated');
+ var original = util.getArg(aArgs, 'original', null);
+ var source = util.getArg(aArgs, 'source', null);
+ var name = util.getArg(aArgs, 'name', null);
+
+ if (!this._skipValidation) {
+ this._validateMapping(generated, original, source, name);
+ }
+
+ if (source != null && !this._sources.has(source)) {
+ this._sources.add(source);
+ }
+
+ if (name != null && !this._names.has(name)) {
+ this._names.add(name);
+ }
+
+ this._mappings.add({
+ generatedLine: generated.line,
+ generatedColumn: generated.column,
+ originalLine: original != null && original.line,
+ originalColumn: original != null && original.column,
+ source: source,
+ name: name
+ });
+ };
+
+ /**
+ * Set the source content for a source file.
+ */
+ SourceMapGenerator.prototype.setSourceContent =
+ function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {
+ var source = aSourceFile;
+ if (this._sourceRoot != null) {
+ source = util.relative(this._sourceRoot, source);
+ }
+
+ if (aSourceContent != null) {
+ // Add the source content to the _sourcesContents map.
+ // Create a new _sourcesContents map if the property is null.
+ if (!this._sourcesContents) {
+ this._sourcesContents = {};
+ }
+ this._sourcesContents[util.toSetString(source)] = aSourceContent;
+ } else if (this._sourcesContents) {
+ // Remove the source file from the _sourcesContents map.
+ // If the _sourcesContents map is empty, set the property to null.
+ delete this._sourcesContents[util.toSetString(source)];
+ if (Object.keys(this._sourcesContents).length === 0) {
+ this._sourcesContents = null;
+ }
+ }
+ };
+
+ /**
+ * Applies the mappings of a sub-source-map for a specific source file to the
+ * source map being generated. Each mapping to the supplied source file is
+ * rewritten using the supplied source map. Note: The resolution for the
+ * resulting mappings is the minimium of this map and the supplied map.
+ *
+ * @param aSourceMapConsumer The source map to be applied.
+ * @param aSourceFile Optional. The filename of the source file.
+ * If omitted, SourceMapConsumer's file property will be used.
+ * @param aSourceMapPath Optional. The dirname of the path to the source map
+ * to be applied. If relative, it is relative to the SourceMapConsumer.
+ * This parameter is needed when the two source maps aren't in the same
+ * directory, and the source map to be applied contains relative source
+ * paths. If so, those relative source paths need to be rewritten
+ * relative to the SourceMapGenerator.
+ */
+ SourceMapGenerator.prototype.applySourceMap =
+ function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) {
+ var sourceFile = aSourceFile;
+ // If aSourceFile is omitted, we will use the file property of the SourceMap
+ if (aSourceFile == null) {
+ if (aSourceMapConsumer.file == null) {
+ throw new Error(
+ 'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' +
+ 'or the source map\'s "file" property. Both were omitted.'
+ );
+ }
+ sourceFile = aSourceMapConsumer.file;
+ }
+ var sourceRoot = this._sourceRoot;
+ // Make "sourceFile" relative if an absolute Url is passed.
+ if (sourceRoot != null) {
+ sourceFile = util.relative(sourceRoot, sourceFile);
+ }
+ // Applying the SourceMap can add and remove items from the sources and
+ // the names array.
+ var newSources = new ArraySet();
+ var newNames = new ArraySet();
+
+ // Find mappings for the "sourceFile"
+ this._mappings.unsortedForEach(function (mapping) {
+ if (mapping.source === sourceFile && mapping.originalLine != null) {
+ // Check if it can be mapped by the source map, then update the mapping.
+ var original = aSourceMapConsumer.originalPositionFor({
+ line: mapping.originalLine,
+ column: mapping.originalColumn
+ });
+ if (original.source != null) {
+ // Copy mapping
+ mapping.source = original.source;
+ if (aSourceMapPath != null) {
+ mapping.source = util.join(aSourceMapPath, mapping.source)
+ }
+ if (sourceRoot != null) {
+ mapping.source = util.relative(sourceRoot, mapping.source);
+ }
+ mapping.originalLine = original.line;
+ mapping.originalColumn = original.column;
+ if (original.name != null) {
+ mapping.name = original.name;
+ }
+ }
+ }
+
+ var source = mapping.source;
+ if (source != null && !newSources.has(source)) {
+ newSources.add(source);
+ }
+
+ var name = mapping.name;
+ if (name != null && !newNames.has(name)) {
+ newNames.add(name);
+ }
+
+ }, this);
+ this._sources = newSources;
+ this._names = newNames;
+
+ // Copy sourcesContents of applied map.
+ aSourceMapConsumer.sources.forEach(function (sourceFile) {
+ var content = aSourceMapConsumer.sourceContentFor(sourceFile);
+ if (content != null) {
+ if (aSourceMapPath != null) {
+ sourceFile = util.join(aSourceMapPath, sourceFile);
+ }
+ if (sourceRoot != null) {
+ sourceFile = util.relative(sourceRoot, sourceFile);
+ }
+ this.setSourceContent(sourceFile, content);
+ }
+ }, this);
+ };
+
+ /**
+ * A mapping can have one of the three levels of data:
+ *
+ * 1. Just the generated position.
+ * 2. The Generated position, original position, and original source.
+ * 3. Generated and original position, original source, as well as a name
+ * token.
+ *
+ * To maintain consistency, we validate that any new mapping being added falls
+ * in to one of these categories.
+ */
+ SourceMapGenerator.prototype._validateMapping =
+ function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource,
+ aName) {
+ if (aGenerated && 'line' in aGenerated && 'column' in aGenerated
+ && aGenerated.line > 0 && aGenerated.column >= 0
+ && !aOriginal && !aSource && !aName) {
+ // Case 1.
+ return;
+ }
+ else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated
+ && aOriginal && 'line' in aOriginal && 'column' in aOriginal
+ && aGenerated.line > 0 && aGenerated.column >= 0
+ && aOriginal.line > 0 && aOriginal.column >= 0
+ && aSource) {
+ // Cases 2 and 3.
+ return;
+ }
+ else {
+ throw new Error('Invalid mapping: ' + JSON.stringify({
+ generated: aGenerated,
+ source: aSource,
+ original: aOriginal,
+ name: aName
+ }));
+ }
+ };
+
+ /**
+ * Serialize the accumulated mappings in to the stream of base 64 VLQs
+ * specified by the source map format.
+ */
+ SourceMapGenerator.prototype._serializeMappings =
+ function SourceMapGenerator_serializeMappings() {
+ var previousGeneratedColumn = 0;
+ var previousGeneratedLine = 1;
+ var previousOriginalColumn = 0;
+ var previousOriginalLine = 0;
+ var previousName = 0;
+ var previousSource = 0;
+ var result = '';
+ var mapping;
+ var nameIdx;
+ var sourceIdx;
+
+ var mappings = this._mappings.toArray();
+ for (var i = 0, len = mappings.length; i < len; i++) {
+ mapping = mappings[i];
+
+ if (mapping.generatedLine !== previousGeneratedLine) {
+ previousGeneratedColumn = 0;
+ while (mapping.generatedLine !== previousGeneratedLine) {
+ result += ';';
+ previousGeneratedLine++;
+ }
+ }
+ else {
+ if (i > 0) {
+ if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {
+ continue;
+ }
+ result += ',';
+ }
+ }
+
+ result += base64VLQ.encode(mapping.generatedColumn
+ - previousGeneratedColumn);
+ previousGeneratedColumn = mapping.generatedColumn;
+
+ if (mapping.source != null) {
+ sourceIdx = this._sources.indexOf(mapping.source);
+ result += base64VLQ.encode(sourceIdx - previousSource);
+ previousSource = sourceIdx;
+
+ // lines are stored 0-based in SourceMap spec version 3
+ result += base64VLQ.encode(mapping.originalLine - 1
+ - previousOriginalLine);
+ previousOriginalLine = mapping.originalLine - 1;
+
+ result += base64VLQ.encode(mapping.originalColumn
+ - previousOriginalColumn);
+ previousOriginalColumn = mapping.originalColumn;
+
+ if (mapping.name != null) {
+ nameIdx = this._names.indexOf(mapping.name);
+ result += base64VLQ.encode(nameIdx - previousName);
+ previousName = nameIdx;
+ }
+ }
+ }
+
+ return result;
+ };
+
+ SourceMapGenerator.prototype._generateSourcesContent =
+ function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {
+ return aSources.map(function (source) {
+ if (!this._sourcesContents) {
+ return null;
+ }
+ if (aSourceRoot != null) {
+ source = util.relative(aSourceRoot, source);
+ }
+ var key = util.toSetString(source);
+ return Object.prototype.hasOwnProperty.call(this._sourcesContents,
+ key)
+ ? this._sourcesContents[key]
+ : null;
+ }, this);
+ };
+
+ /**
+ * Externalize the source map.
+ */
+ SourceMapGenerator.prototype.toJSON =
+ function SourceMapGenerator_toJSON() {
+ var map = {
+ version: this._version,
+ sources: this._sources.toArray(),
+ names: this._names.toArray(),
+ mappings: this._serializeMappings()
+ };
+ if (this._file != null) {
+ map.file = this._file;
+ }
+ if (this._sourceRoot != null) {
+ map.sourceRoot = this._sourceRoot;
+ }
+ if (this._sourcesContents) {
+ map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);
+ }
+
+ return map;
+ };
+
+ /**
+ * Render the source map being generated to a string.
+ */
+ SourceMapGenerator.prototype.toString =
+ function SourceMapGenerator_toString() {
+ return JSON.stringify(this.toJSON());
+ };
+
+ exports.SourceMapGenerator = SourceMapGenerator;
+}
diff --git a/node_modules/babel-generator/node_modules/source-map/lib/source-node.js b/node_modules/babel-generator/node_modules/source-map/lib/source-node.js
new file mode 100644
index 0000000..8b0fd59
--- /dev/null
+++ b/node_modules/babel-generator/node_modules/source-map/lib/source-node.js
@@ -0,0 +1,408 @@
+/* -*- Mode: js; js-indent-level: 2; -*- */
+/*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+{
+ var SourceMapGenerator = require('./source-map-generator').SourceMapGenerator;
+ var util = require('./util');
+
+ // Matches a Windows-style `\r\n` newline or a `\n` newline used by all other
+ // operating systems these days (capturing the result).
+ var REGEX_NEWLINE = /(\r?\n)/;
+
+ // Newline character code for charCodeAt() comparisons
+ var NEWLINE_CODE = 10;
+
+ // Private symbol for identifying `SourceNode`s when multiple versions of
+ // the source-map library are loaded. This MUST NOT CHANGE across
+ // versions!
+ var isSourceNode = "$$$isSourceNode$$$";
+
+ /**
+ * SourceNodes provide a way to abstract over interpolating/concatenating
+ * snippets of generated JavaScript source code while maintaining the line and
+ * column information associated with the original source code.
+ *
+ * @param aLine The original line number.
+ * @param aColumn The original column number.
+ * @param aSource The original source's filename.
+ * @param aChunks Optional. An array of strings which are snippets of
+ * generated JS, or other SourceNodes.
+ * @param aName The original identifier.
+ */
+ function SourceNode(aLine, aColumn, aSource, aChunks, aName) {
+ this.children = [];
+ this.sourceContents = {};
+ this.line = aLine == null ? null : aLine;
+ this.column = aColumn == null ? null : aColumn;
+ this.source = aSource == null ? null : aSource;
+ this.name = aName == null ? null : aName;
+ this[isSourceNode] = true;
+ if (aChunks != null) this.add(aChunks);
+ }
+
+ /**
+ * Creates a SourceNode from generated code and a SourceMapConsumer.
+ *
+ * @param aGeneratedCode The generated code
+ * @param aSourceMapConsumer The SourceMap for the generated code
+ * @param aRelativePath Optional. The path that relative sources in the
+ * SourceMapConsumer should be relative to.
+ */
+ SourceNode.fromStringWithSourceMap =
+ function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {
+ // The SourceNode we want to fill with the generated code
+ // and the SourceMap
+ var node = new SourceNode();
+
+ // All even indices of this array are one line of the generated code,
+ // while all odd indices are the newlines between two adjacent lines
+ // (since `REGEX_NEWLINE` captures its match).
+ // Processed fragments are removed from this array, by calling `shiftNextLine`.
+ var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);
+ var shiftNextLine = function() {
+ var lineContents = remainingLines.shift();
+ // The last line of a file might not have a newline.
+ var newLine = remainingLines.shift() || "";
+ return lineContents + newLine;
+ };
+
+ // We need to remember the position of "remainingLines"
+ var lastGeneratedLine = 1, lastGeneratedColumn = 0;
+
+ // The generate SourceNodes we need a code range.
+ // To extract it current and last mapping is used.
+ // Here we store the last mapping.
+ var lastMapping = null;
+
+ aSourceMapConsumer.eachMapping(function (mapping) {
+ if (lastMapping !== null) {
+ // We add the code from "lastMapping" to "mapping":
+ // First check if there is a new line in between.
+ if (lastGeneratedLine < mapping.generatedLine) {
+ // Associate first line with "lastMapping"
+ addMappingWithCode(lastMapping, shiftNextLine());
+ lastGeneratedLine++;
+ lastGeneratedColumn = 0;
+ // The remaining code is added without mapping
+ } else {
+ // There is no new line in between.
+ // Associate the code between "lastGeneratedColumn" and
+ // "mapping.generatedColumn" with "lastMapping"
+ var nextLine = remainingLines[0];
+ var code = nextLine.substr(0, mapping.generatedColumn -
+ lastGeneratedColumn);
+ remainingLines[0] = nextLine.substr(mapping.generatedColumn -
+ lastGeneratedColumn);
+ lastGeneratedColumn = mapping.generatedColumn;
+ addMappingWithCode(lastMapping, code);
+ // No more remaining code, continue
+ lastMapping = mapping;
+ return;
+ }
+ }
+ // We add the generated code until the first mapping
+ // to the SourceNode without any mapping.
+ // Each line is added as separate string.
+ while (lastGeneratedLine < mapping.generatedLine) {
+ node.add(shiftNextLine());
+ lastGeneratedLine++;
+ }
+ if (lastGeneratedColumn < mapping.generatedColumn) {
+ var nextLine = remainingLines[0];
+ node.add(nextLine.substr(0, mapping.generatedColumn));
+ remainingLines[0] = nextLine.substr(mapping.generatedColumn);
+ lastGeneratedColumn = mapping.generatedColumn;
+ }
+ lastMapping = mapping;
+ }, this);
+ // We have processed all mappings.
+ if (remainingLines.length > 0) {
+ if (lastMapping) {
+ // Associate the remaining code in the current line with "lastMapping"
+ addMappingWithCode(lastMapping, shiftNextLine());
+ }
+ // and add the remaining lines without any mapping
+ node.add(remainingLines.join(""));
+ }
+
+ // Copy sourcesContent into SourceNode
+ aSourceMapConsumer.sources.forEach(function (sourceFile) {
+ var content = aSourceMapConsumer.sourceContentFor(sourceFile);
+ if (content != null) {
+ if (aRelativePath != null) {
+ sourceFile = util.join(aRelativePath, sourceFile);
+ }
+ node.setSourceContent(sourceFile, content);
+ }
+ });
+
+ return node;
+
+ function addMappingWithCode(mapping, code) {
+ if (mapping === null || mapping.source === undefined) {
+ node.add(code);
+ } else {
+ var source = aRelativePath
+ ? util.join(aRelativePath, mapping.source)
+ : mapping.source;
+ node.add(new SourceNode(mapping.originalLine,
+ mapping.originalColumn,
+ source,
+ code,
+ mapping.name));
+ }
+ }
+ };
+
+ /**
+ * Add a chunk of generated JS to this source node.
+ *
+ * @param aChunk A string snippet of generated JS code, another instance of
+ * SourceNode, or an array where each member is one of those things.
+ */
+ SourceNode.prototype.add = function SourceNode_add(aChunk) {
+ if (Array.isArray(aChunk)) {
+ aChunk.forEach(function (chunk) {
+ this.add(chunk);
+ }, this);
+ }
+ else if (aChunk[isSourceNode] || typeof aChunk === "string") {
+ if (aChunk) {
+ this.children.push(aChunk);
+ }
+ }
+ else {
+ throw new TypeError(
+ "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk
+ );
+ }
+ return this;
+ };
+
+ /**
+ * Add a chunk of generated JS to the beginning of this source node.
+ *
+ * @param aChunk A string snippet of generated JS code, another instance of
+ * SourceNode, or an array where each member is one of those things.
+ */
+ SourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {
+ if (Array.isArray(aChunk)) {
+ for (var i = aChunk.length-1; i >= 0; i--) {
+ this.prepend(aChunk[i]);
+ }
+ }
+ else if (aChunk[isSourceNode] || typeof aChunk === "string") {
+ this.children.unshift(aChunk);
+ }
+ else {
+ throw new TypeError(
+ "Expected a SourceNode, string, or an array of SourceNodes and strings. Got " + aChunk
+ );
+ }
+ return this;
+ };
+
+ /**
+ * Walk over the tree of JS snippets in this node and its children. The
+ * walking function is called once for each snippet of JS and is passed that
+ * snippet and the its original associated source's line/column location.
+ *
+ * @param aFn The traversal function.
+ */
+ SourceNode.prototype.walk = function SourceNode_walk(aFn) {
+ var chunk;
+ for (var i = 0, len = this.children.length; i < len; i++) {
+ chunk = this.children[i];
+ if (chunk[isSourceNode]) {
+ chunk.walk(aFn);
+ }
+ else {
+ if (chunk !== '') {
+ aFn(chunk, { source: this.source,
+ line: this.line,
+ column: this.column,
+ name: this.name });
+ }
+ }
+ }
+ };
+
+ /**
+ * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between
+ * each of `this.children`.
+ *
+ * @param aSep The separator.
+ */
+ SourceNode.prototype.join = function SourceNode_join(aSep) {
+ var newChildren;
+ var i;
+ var len = this.children.length;
+ if (len > 0) {
+ newChildren = [];
+ for (i = 0; i < len-1; i++) {
+ newChildren.push(this.children[i]);
+ newChildren.push(aSep);
+ }
+ newChildren.push(this.children[i]);
+ this.children = newChildren;
+ }
+ return this;
+ };
+
+ /**
+ * Call String.prototype.replace on the very right-most source snippet. Useful
+ * for trimming whitespace from the end of a source node, etc.
+ *
+ * @param aPattern The pattern to replace.
+ * @param aReplacement The thing to replace the pattern with.
+ */
+ SourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {
+ var lastChild = this.children[this.children.length - 1];
+ if (lastChild[isSourceNode]) {
+ lastChild.replaceRight(aPattern, aReplacement);
+ }
+ else if (typeof lastChild === 'string') {
+ this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);
+ }
+ else {
+ this.children.push(''.replace(aPattern, aReplacement));
+ }
+ return this;
+ };
+
+ /**
+ * Set the source content for a source file. This will be added to the SourceMapGenerator
+ * in the sourcesContent field.
+ *
+ * @param aSourceFile The filename of the source file
+ * @param aSourceContent The content of the source file
+ */
+ SourceNode.prototype.setSourceContent =
+ function SourceNode_setSourceContent(aSourceFile, aSourceContent) {
+ this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;
+ };
+
+ /**
+ * Walk over the tree of SourceNodes. The walking function is called for each
+ * source file content and is passed the filename and source content.
+ *
+ * @param aFn The traversal function.
+ */
+ SourceNode.prototype.walkSourceContents =
+ function SourceNode_walkSourceContents(aFn) {
+ for (var i = 0, len = this.children.length; i < len; i++) {
+ if (this.children[i][isSourceNode]) {
+ this.children[i].walkSourceContents(aFn);
+ }
+ }
+
+ var sources = Object.keys(this.sourceContents);
+ for (var i = 0, len = sources.length; i < len; i++) {
+ aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);
+ }
+ };
+
+ /**
+ * Return the string representation of this source node. Walks over the tree
+ * and concatenates all the various snippets together to one string.
+ */
+ SourceNode.prototype.toString = function SourceNode_toString() {
+ var str = "";
+ this.walk(function (chunk) {
+ str += chunk;
+ });
+ return str;
+ };
+
+ /**
+ * Returns the string representation of this source node along with a source
+ * map.
+ */
+ SourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {
+ var generated = {
+ code: "",
+ line: 1,
+ column: 0
+ };
+ var map = new SourceMapGenerator(aArgs);
+ var sourceMappingActive = false;
+ var lastOriginalSource = null;
+ var lastOriginalLine = null;
+ var lastOriginalColumn = null;
+ var lastOriginalName = null;
+ this.walk(function (chunk, original) {
+ generated.code += chunk;
+ if (original.source !== null
+ && original.line !== null
+ && original.column !== null) {
+ if(lastOriginalSource !== original.source
+ || lastOriginalLine !== original.line
+ || lastOriginalColumn !== original.column
+ || lastOriginalName !== original.name) {
+ map.addMapping({
+ source: original.source,
+ original: {
+ line: original.line,
+ column: original.column
+ },
+ generated: {
+ line: generated.line,
+ column: generated.column
+ },
+ name: original.name
+ });
+ }
+ lastOriginalSource = original.source;
+ lastOriginalLine = original.line;
+ lastOriginalColumn = original.column;
+ lastOriginalName = original.name;
+ sourceMappingActive = true;
+ } else if (sourceMappingActive) {
+ map.addMapping({
+ generated: {
+ line: generated.line,
+ column: generated.column
+ }
+ });
+ lastOriginalSource = null;
+ sourceMappingActive = false;
+ }
+ for (var idx = 0, length = chunk.length; idx < length; idx++) {
+ if (chunk.charCodeAt(idx) === NEWLINE_CODE) {
+ generated.line++;
+ generated.column = 0;
+ // Mappings end at eol
+ if (idx + 1 === length) {
+ lastOriginalSource = null;
+ sourceMappingActive = false;
+ } else if (sourceMappingActive) {
+ map.addMapping({
+ source: original.source,
+ original: {
+ line: original.line,
+ column: original.column
+ },
+ generated: {
+ line: generated.line,
+ column: generated.column
+ },
+ name: original.name
+ });
+ }
+ } else {
+ generated.column++;
+ }
+ }
+ });
+ this.walkSourceContents(function (sourceFile, sourceContent) {
+ map.setSourceContent(sourceFile, sourceContent);
+ });
+
+ return { code: generated.code, map: map };
+ };
+
+ exports.SourceNode = SourceNode;
+}
diff --git a/node_modules/babel-generator/node_modules/source-map/lib/util.js b/node_modules/babel-generator/node_modules/source-map/lib/util.js
new file mode 100644
index 0000000..4581590
--- /dev/null
+++ b/node_modules/babel-generator/node_modules/source-map/lib/util.js
@@ -0,0 +1,369 @@
+/* -*- Mode: js; js-indent-level: 2; -*- */
+/*
+ * Copyright 2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+{
+ /**
+ * This is a helper function for getting values from parameter/options
+ * objects.
+ *
+ * @param args The object we are extracting values from
+ * @param name The name of the property we are getting.
+ * @param defaultValue An optional value to return if the property is missing
+ * from the object. If this is not specified and the property is missing, an
+ * error will be thrown.
+ */
+ function getArg(aArgs, aName, aDefaultValue) {
+ if (aName in aArgs) {
+ return aArgs[aName];
+ } else if (arguments.length === 3) {
+ return aDefaultValue;
+ } else {
+ throw new Error('"' + aName + '" is a required argument.');
+ }
+ }
+ exports.getArg = getArg;
+
+ var urlRegexp = /^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.]*)(?::(\d+))?(\S*)$/;
+ var dataUrlRegexp = /^data:.+\,.+$/;
+
+ function urlParse(aUrl) {
+ var match = aUrl.match(urlRegexp);
+ if (!match) {
+ return null;
+ }
+ return {
+ scheme: match[1],
+ auth: match[2],
+ host: match[3],
+ port: match[4],
+ path: match[5]
+ };
+ }
+ exports.urlParse = urlParse;
+
+ function urlGenerate(aParsedUrl) {
+ var url = '';
+ if (aParsedUrl.scheme) {
+ url += aParsedUrl.scheme + ':';
+ }
+ url += '//';
+ if (aParsedUrl.auth) {
+ url += aParsedUrl.auth + '@';
+ }
+ if (aParsedUrl.host) {
+ url += aParsedUrl.host;
+ }
+ if (aParsedUrl.port) {
+ url += ":" + aParsedUrl.port
+ }
+ if (aParsedUrl.path) {
+ url += aParsedUrl.path;
+ }
+ return url;
+ }
+ exports.urlGenerate = urlGenerate;
+
+ /**
+ * Normalizes a path, or the path portion of a URL:
+ *
+ * - Replaces consequtive slashes with one slash.
+ * - Removes unnecessary '.' parts.
+ * - Removes unnecessary '/..' parts.
+ *
+ * Based on code in the Node.js 'path' core module.
+ *
+ * @param aPath The path or url to normalize.
+ */
+ function normalize(aPath) {
+ var path = aPath;
+ var url = urlParse(aPath);
+ if (url) {
+ if (!url.path) {
+ return aPath;
+ }
+ path = url.path;
+ }
+ var isAbsolute = exports.isAbsolute(path);
+
+ var parts = path.split(/\/+/);
+ for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {
+ part = parts[i];
+ if (part === '.') {
+ parts.splice(i, 1);
+ } else if (part === '..') {
+ up++;
+ } else if (up > 0) {
+ if (part === '') {
+ // The first part is blank if the path is absolute. Trying to go
+ // above the root is a no-op. Therefore we can remove all '..' parts
+ // directly after the root.
+ parts.splice(i + 1, up);
+ up = 0;
+ } else {
+ parts.splice(i, 2);
+ up--;
+ }
+ }
+ }
+ path = parts.join('/');
+
+ if (path === '') {
+ path = isAbsolute ? '/' : '.';
+ }
+
+ if (url) {
+ url.path = path;
+ return urlGenerate(url);
+ }
+ return path;
+ }
+ exports.normalize = normalize;
+
+ /**
+ * Joins two paths/URLs.
+ *
+ * @param aRoot The root path or URL.
+ * @param aPath The path or URL to be joined with the root.
+ *
+ * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a
+ * scheme-relative URL: Then the scheme of aRoot, if any, is prepended
+ * first.
+ * - Otherwise aPath is a path. If aRoot is a URL, then its path portion
+ * is updated with the result and aRoot is returned. Otherwise the result
+ * is returned.
+ * - If aPath is absolute, the result is aPath.
+ * - Otherwise the two paths are joined with a slash.
+ * - Joining for example 'http://' and 'www.example.com' is also supported.
+ */
+ function join(aRoot, aPath) {
+ if (aRoot === "") {
+ aRoot = ".";
+ }
+ if (aPath === "") {
+ aPath = ".";
+ }
+ var aPathUrl = urlParse(aPath);
+ var aRootUrl = urlParse(aRoot);
+ if (aRootUrl) {
+ aRoot = aRootUrl.path || '/';
+ }
+
+ // `join(foo, '//www.example.org')`
+ if (aPathUrl && !aPathUrl.scheme) {
+ if (aRootUrl) {
+ aPathUrl.scheme = aRootUrl.scheme;
+ }
+ return urlGenerate(aPathUrl);
+ }
+
+ if (aPathUrl || aPath.match(dataUrlRegexp)) {
+ return aPath;
+ }
+
+ // `join('http://', 'www.example.com')`
+ if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {
+ aRootUrl.host = aPath;
+ return urlGenerate(aRootUrl);
+ }
+
+ var joined = aPath.charAt(0) === '/'
+ ? aPath
+ : normalize(aRoot.replace(/\/+$/, '') + '/' + aPath);
+
+ if (aRootUrl) {
+ aRootUrl.path = joined;
+ return urlGenerate(aRootUrl);
+ }
+ return joined;
+ }
+ exports.join = join;
+
+ exports.isAbsolute = function (aPath) {
+ return aPath.charAt(0) === '/' || !!aPath.match(urlRegexp);
+ };
+
+ /**
+ * Make a path relative to a URL or another path.
+ *
+ * @param aRoot The root path or URL.
+ * @param aPath The path or URL to be made relative to aRoot.
+ */
+ function relative(aRoot, aPath) {
+ if (aRoot === "") {
+ aRoot = ".";
+ }
+
+ aRoot = aRoot.replace(/\/$/, '');
+
+ // It is possible for the path to be above the root. In this case, simply
+ // checking whether the root is a prefix of the path won't work. Instead, we
+ // need to remove components from the root one by one, until either we find
+ // a prefix that fits, or we run out of components to remove.
+ var level = 0;
+ while (aPath.indexOf(aRoot + '/') !== 0) {
+ var index = aRoot.lastIndexOf("/");
+ if (index < 0) {
+ return aPath;
+ }
+
+ // If the only part of the root that is left is the scheme (i.e. http://,
+ // file:///, etc.), one or more slashes (/), or simply nothing at all, we
+ // have exhausted all components, so the path is not relative to the root.
+ aRoot = aRoot.slice(0, index);
+ if (aRoot.match(/^([^\/]+:\/)?\/*$/)) {
+ return aPath;
+ }
+
+ ++level;
+ }
+
+ // Make sure we add a "../" for each component we removed from the root.
+ return Array(level + 1).join("../") + aPath.substr(aRoot.length + 1);
+ }
+ exports.relative = relative;
+
+ /**
+ * Because behavior goes wacky when you set `__proto__` on objects, we
+ * have to prefix all the strings in our set with an arbitrary character.
+ *
+ * See https://github.com/mozilla/source-map/pull/31 and
+ * https://github.com/mozilla/source-map/issues/30
+ *
+ * @param String aStr
+ */
+ function toSetString(aStr) {
+ return '$' + aStr;
+ }
+ exports.toSetString = toSetString;
+
+ function fromSetString(aStr) {
+ return aStr.substr(1);
+ }
+ exports.fromSetString = fromSetString;
+
+ /**
+ * Comparator between two mappings where the original positions are compared.
+ *
+ * Optionally pass in `true` as `onlyCompareGenerated` to consider two
+ * mappings with the same original source/line/column, but different generated
+ * line and column the same. Useful when searching for a mapping with a
+ * stubbed out mapping.
+ */
+ function compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {
+ var cmp = mappingA.source - mappingB.source;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.originalLine - mappingB.originalLine;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.originalColumn - mappingB.originalColumn;
+ if (cmp !== 0 || onlyCompareOriginal) {
+ return cmp;
+ }
+
+ cmp = mappingA.generatedColumn - mappingB.generatedColumn;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.generatedLine - mappingB.generatedLine;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ return mappingA.name - mappingB.name;
+ }
+ exports.compareByOriginalPositions = compareByOriginalPositions;
+
+ /**
+ * Comparator between two mappings with deflated source and name indices where
+ * the generated positions are compared.
+ *
+ * Optionally pass in `true` as `onlyCompareGenerated` to consider two
+ * mappings with the same generated line and column, but different
+ * source/name/original line and column the same. Useful when searching for a
+ * mapping with a stubbed out mapping.
+ */
+ function compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {
+ var cmp = mappingA.generatedLine - mappingB.generatedLine;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.generatedColumn - mappingB.generatedColumn;
+ if (cmp !== 0 || onlyCompareGenerated) {
+ return cmp;
+ }
+
+ cmp = mappingA.source - mappingB.source;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.originalLine - mappingB.originalLine;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.originalColumn - mappingB.originalColumn;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ return mappingA.name - mappingB.name;
+ }
+ exports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;
+
+ function strcmp(aStr1, aStr2) {
+ if (aStr1 === aStr2) {
+ return 0;
+ }
+
+ if (aStr1 > aStr2) {
+ return 1;
+ }
+
+ return -1;
+ }
+
+ /**
+ * Comparator between two mappings with inflated source and name strings where
+ * the generated positions are compared.
+ */
+ function compareByGeneratedPositionsInflated(mappingA, mappingB) {
+ var cmp = mappingA.generatedLine - mappingB.generatedLine;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.generatedColumn - mappingB.generatedColumn;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = strcmp(mappingA.source, mappingB.source);
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.originalLine - mappingB.originalLine;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ cmp = mappingA.originalColumn - mappingB.originalColumn;
+ if (cmp !== 0) {
+ return cmp;
+ }
+
+ return strcmp(mappingA.name, mappingB.name);
+ }
+ exports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;
+}
diff --git a/node_modules/babel-generator/node_modules/source-map/package.json b/node_modules/babel-generator/node_modules/source-map/package.json
new file mode 100644
index 0000000..5bdf8e6
--- /dev/null
+++ b/node_modules/babel-generator/node_modules/source-map/package.json
@@ -0,0 +1,240 @@
+{
+ "_args": [
+ [
+ "source-map@^0.5.0",
+ "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-generator"
+ ]
+ ],
+ "_from": "source-map@>=0.5.0 <0.6.0",
+ "_id": "source-map@0.5.3",
+ "_inCache": true,
+ "_installable": true,
+ "_location": "/babel-generator/source-map",
+ "_npmUser": {
+ "email": "fitzgen@gmail.com",
+ "name": "nickfitzgerald"
+ },
+ "_npmVersion": "1.4.9",
+ "_phantomChildren": {},
+ "_requested": {
+ "name": "source-map",
+ "raw": "source-map@^0.5.0",
+ "rawSpec": "^0.5.0",
+ "scope": null,
+ "spec": ">=0.5.0 <0.6.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/babel-generator"
+ ],
+ "_resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.3.tgz",
+ "_shasum": "82674b85a71b0be76c3e7416d15e9f5252eb3be0",
+ "_shrinkwrap": null,
+ "_spec": "source-map@^0.5.0",
+ "_where": "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-generator",
+ "author": {
+ "email": "nfitzgerald@mozilla.com",
+ "name": "Nick Fitzgerald"
+ },
+ "bugs": {
+ "url": "https://github.com/mozilla/source-map/issues"
+ },
+ "contributors": [
+ {
+ "name": "Simon Lydell",
+ "email": "simon.lydell@gmail.com"
+ },
+ {
+ "name": "Tobias Koppers",
+ "email": "tobias.koppers@googlemail.com"
+ },
+ {
+ "name": "Stephen Crane",
+ "email": "scrane@mozilla.com"
+ },
+ {
+ "name": "Ryan Seddon",
+ "email": "seddon.ryan@gmail.com"
+ },
+ {
+ "name": "Miles Elam",
+ "email": "miles.elam@deem.com"
+ },
+ {
+ "name": "Mihai Bazon",
+ "email": "mihai.bazon@gmail.com"
+ },
+ {
+ "name": "Michael Ficarra",
+ "email": "github.public.email@michael.ficarra.me"
+ },
+ {
+ "name": "Todd Wolfson",
+ "email": "todd@twolfson.com"
+ },
+ {
+ "name": "Alexander Solovyov",
+ "email": "alexander@solovyov.net"
+ },
+ {
+ "name": "Felix Gnass",
+ "email": "fgnass@gmail.com"
+ },
+ {
+ "name": "Conrad Irwin",
+ "email": "conrad.irwin@gmail.com"
+ },
+ {
+ "name": "usrbincc",
+ "email": "usrbincc@yahoo.com"
+ },
+ {
+ "name": "David Glasser",
+ "email": "glasser@davidglasser.net"
+ },
+ {
+ "name": "Chase Douglas",
+ "email": "chase@newrelic.com"
+ },
+ {
+ "name": "Evan Wallace",
+ "email": "evan.exe@gmail.com"
+ },
+ {
+ "name": "Heather Arthur",
+ "email": "fayearthur@gmail.com"
+ },
+ {
+ "name": "Hugh Kennedy",
+ "email": "hughskennedy@gmail.com"
+ },
+ {
+ "name": "David Glasser",
+ "email": "glasser@davidglasser.net"
+ },
+ {
+ "name": "Duncan Beevers",
+ "email": "duncan@dweebd.com"
+ },
+ {
+ "name": "Jmeas Smith",
+ "email": "jellyes2@gmail.com"
+ },
+ {
+ "name": "Michael Z Goddard",
+ "email": "mzgoddard@gmail.com"
+ },
+ {
+ "name": "azu",
+ "email": "azu@users.noreply.github.com"
+ },
+ {
+ "name": "John Gozde",
+ "email": "john@gozde.ca"
+ },
+ {
+ "name": "Adam Kirkton",
+ "email": "akirkton@truefitinnovation.com"
+ },
+ {
+ "name": "Chris Montgomery",
+ "email": "christopher.montgomery@dowjones.com"
+ },
+ {
+ "name": "J. Ryan Stinnett",
+ "email": "jryans@gmail.com"
+ },
+ {
+ "name": "Jack Herrington",
+ "email": "jherrington@walmartlabs.com"
+ },
+ {
+ "name": "Chris Truter",
+ "email": "jeffpalentine@gmail.com"
+ },
+ {
+ "name": "Daniel Espeset",
+ "email": "daniel@danielespeset.com"
+ },
+ {
+ "name": "Jamie Wong",
+ "email": "jamie.lf.wong@gmail.com"
+ },
+ {
+ "name": "Eddy Bruël",
+ "email": "ejpbruel@mozilla.com"
+ },
+ {
+ "name": "Hawken Rives",
+ "email": "hawkrives@gmail.com"
+ },
+ {
+ "name": "Gilad Peleg",
+ "email": "giladp007@gmail.com"
+ },
+ {
+ "name": "djchie",
+ "email": "djchie.dev@gmail.com"
+ },
+ {
+ "name": "Gary Ye",
+ "email": "garysye@gmail.com"
+ },
+ {
+ "name": "Nicolas Lalevée",
+ "email": "nicolas.lalevee@hibnet.org"
+ }
+ ],
+ "dependencies": {},
+ "description": "Generates and consumes source maps",
+ "devDependencies": {
+ "doctoc": "^0.15.0",
+ "webpack": "^1.12.0"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "82674b85a71b0be76c3e7416d15e9f5252eb3be0",
+ "tarball": "http://registry.npmjs.org/source-map/-/source-map-0.5.3.tgz"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ },
+ "files": [
+ "dist/source-map.debug.js",
+ "dist/source-map.js",
+ "dist/source-map.min.js",
+ "dist/source-map.min.js.map",
+ "lib/",
+ "source-map.js"
+ ],
+ "homepage": "https://github.com/mozilla/source-map",
+ "license": "BSD-3-Clause",
+ "main": "./source-map.js",
+ "maintainers": [
+ {
+ "name": "mozilla-devtools",
+ "email": "mozilla-developer-tools@googlegroups.com"
+ },
+ {
+ "name": "mozilla",
+ "email": "dherman@mozilla.com"
+ },
+ {
+ "name": "nickfitzgerald",
+ "email": "fitzgen@gmail.com"
+ }
+ ],
+ "name": "source-map",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git+ssh://git@github.com/mozilla/source-map.git"
+ },
+ "scripts": {
+ "build": "webpack --color",
+ "test": "node test/run-tests.js",
+ "toc": "doctoc --title '## Table of Contents' README.md && doctoc --title '## Table of Contents' CONTRIBUTING.md"
+ },
+ "version": "0.5.3"
+}
diff --git a/node_modules/babel-generator/node_modules/source-map/source-map.js b/node_modules/babel-generator/node_modules/source-map/source-map.js
new file mode 100644
index 0000000..bc88fe8
--- /dev/null
+++ b/node_modules/babel-generator/node_modules/source-map/source-map.js
@@ -0,0 +1,8 @@
+/*
+ * Copyright 2009-2011 Mozilla Foundation and contributors
+ * Licensed under the New BSD license. See LICENSE.txt or:
+ * http://opensource.org/licenses/BSD-3-Clause
+ */
+exports.SourceMapGenerator = require('./lib/source-map-generator').SourceMapGenerator;
+exports.SourceMapConsumer = require('./lib/source-map-consumer').SourceMapConsumer;
+exports.SourceNode = require('./lib/source-node').SourceNode;
diff --git a/node_modules/babel-generator/package.json b/node_modules/babel-generator/package.json
new file mode 100644
index 0000000..1506414
--- /dev/null
+++ b/node_modules/babel-generator/package.json
@@ -0,0 +1,106 @@
+{
+ "_args": [
+ [
+ "babel-generator@^6.7.2",
+ "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-core"
+ ]
+ ],
+ "_from": "babel-generator@>=6.7.2 <7.0.0",
+ "_id": "babel-generator@6.7.2",
+ "_inCache": true,
+ "_installable": true,
+ "_location": "/babel-generator",
+ "_nodeVersion": "5.5.0",
+ "_npmOperationalInternal": {
+ "host": "packages-13-west.internal.npmjs.com",
+ "tmp": "tmp/babel-generator-6.7.2.tgz_1457649689534_0.3395618465729058"
+ },
+ "_npmUser": {
+ "email": "amjad.masad@gmail.com",
+ "name": "amasad"
+ },
+ "_npmVersion": "3.3.12",
+ "_phantomChildren": {},
+ "_requested": {
+ "name": "babel-generator",
+ "raw": "babel-generator@^6.7.2",
+ "rawSpec": "^6.7.2",
+ "scope": null,
+ "spec": ">=6.7.2 <7.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/babel-core"
+ ],
+ "_resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.7.2.tgz",
+ "_shasum": "cc9b6e013ecca7461bfd3a30017da5422815ef1f",
+ "_shrinkwrap": null,
+ "_spec": "babel-generator@^6.7.2",
+ "_where": "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-core",
+ "author": {
+ "email": "sebmck@gmail.com",
+ "name": "Sebastian McKenzie"
+ },
+ "dependencies": {
+ "babel-messages": "^6.7.2",
+ "babel-runtime": "^5.0.0",
+ "babel-types": "^6.7.2",
+ "detect-indent": "^3.0.1",
+ "is-integer": "^1.0.4",
+ "lodash": "^3.10.1",
+ "repeating": "^1.1.3",
+ "source-map": "^0.5.0",
+ "trim-right": "^1.0.1"
+ },
+ "description": "Turns an AST into code.",
+ "devDependencies": {
+ "babel-helper-fixtures": "^6.6.5",
+ "babylon": "^6.7.0"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "cc9b6e013ecca7461bfd3a30017da5422815ef1f",
+ "tarball": "http://registry.npmjs.org/babel-generator/-/babel-generator-6.7.2.tgz"
+ },
+ "files": [
+ "lib"
+ ],
+ "homepage": "https://babeljs.io/",
+ "license": "MIT",
+ "main": "lib/index.js",
+ "maintainers": [
+ {
+ "name": "amasad",
+ "email": "amjad.masad@gmail.com"
+ },
+ {
+ "name": "hzoo",
+ "email": "hi@henryzoo.com"
+ },
+ {
+ "name": "jmm",
+ "email": "npm-public@jessemccarthy.net"
+ },
+ {
+ "name": "loganfsmyth",
+ "email": "loganfsmyth@gmail.com"
+ },
+ {
+ "name": "sebmck",
+ "email": "sebmck@gmail.com"
+ },
+ {
+ "name": "thejameskyle",
+ "email": "me@thejameskyle.com"
+ }
+ ],
+ "name": "babel-generator",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel/tree/master/packages/babel-generator"
+ },
+ "scripts": {},
+ "version": "6.7.2"
+}
diff --git a/node_modules/babel-helper-builder-react-jsx/.npmignore b/node_modules/babel-helper-builder-react-jsx/.npmignore
new file mode 100644
index 0000000..47cdd2c
--- /dev/null
+++ b/node_modules/babel-helper-builder-react-jsx/.npmignore
@@ -0,0 +1,3 @@
+src
+test
+node_modules
diff --git a/node_modules/babel-helper-builder-react-jsx/README.md b/node_modules/babel-helper-builder-react-jsx/README.md
new file mode 100644
index 0000000..895857e
--- /dev/null
+++ b/node_modules/babel-helper-builder-react-jsx/README.md
@@ -0,0 +1,24 @@
+# babel-helper-builder-react-jsx
+
+## Usage
+
+```javascript
+type ElementState = {
+ tagExpr: Object; // tag node
+ tagName: string; // raw string tag name
+ args: Array; // array of call arguments
+ call?: Object; // optional call property that can be set to override the call expression returned
+ pre?: Function; // function called with (state: ElementState) before building attribs
+ post?: Function; // function called with (state: ElementState) after building attribs
+};
+
+require("babel-helper-builder-react-jsx")({
+ pre: function (state: ElementState) {
+ // called before building the element
+ },
+
+ post: function (state: ElementState) {
+ // called after building the element
+ }
+});
+```
diff --git a/node_modules/babel-helper-builder-react-jsx/lib/index.js b/node_modules/babel-helper-builder-react-jsx/lib/index.js
new file mode 100644
index 0000000..95ec3bc
--- /dev/null
+++ b/node_modules/babel-helper-builder-react-jsx/lib/index.js
@@ -0,0 +1,173 @@
+"use strict";
+
+var _interopRequireDefault = require("babel-runtime/helpers/interop-require-default")["default"];
+
+var _interopRequireWildcard = require("babel-runtime/helpers/interop-require-wildcard")["default"];
+
+exports.__esModule = true;
+
+var _esutils = require("esutils");
+
+var _esutils2 = _interopRequireDefault(_esutils);
+
+var _babelTypes = require("babel-types");
+
+var t = _interopRequireWildcard(_babelTypes);
+
+// function called with (state: ElementState) after building attribs
+
+exports["default"] = function (opts) {
+ var visitor = {};
+
+ visitor.JSXNamespacedName = function (path) {
+ throw path.buildCodeFrameError("Namespace tags are not supported. ReactJSX is not XML.");
+ };
+
+ visitor.JSXElement = {
+ exit: function exit(path, file) {
+ var callExpr = buildElementCall(path.get("openingElement"), file);
+
+ callExpr.arguments = callExpr.arguments.concat(path.node.children);
+
+ if (callExpr.arguments.length >= 3) {
+ callExpr._prettyCall = true;
+ }
+
+ path.replaceWith(t.inherits(callExpr, path.node));
+ }
+ };
+
+ return visitor;
+
+ function convertJSXIdentifier(node, parent) {
+ if (t.isJSXIdentifier(node)) {
+ if (node.name === "this" && t.isReferenced(node, parent)) {
+ return t.thisExpression();
+ } else if (_esutils2["default"].keyword.isIdentifierNameES6(node.name)) {
+ node.type = "Identifier";
+ } else {
+ return t.stringLiteral(node.name);
+ }
+ } else if (t.isJSXMemberExpression(node)) {
+ return t.memberExpression(convertJSXIdentifier(node.object, node), convertJSXIdentifier(node.property, node));
+ }
+
+ return node;
+ }
+
+ function convertAttributeValue(node) {
+ if (t.isJSXExpressionContainer(node)) {
+ return node.expression;
+ } else {
+ return node;
+ }
+ }
+
+ function convertAttribute(node) {
+ var value = convertAttributeValue(node.value || t.booleanLiteral(true));
+
+ if (t.isStringLiteral(value)) {
+ value.value = value.value.replace(/\n\s+/g, " ");
+ }
+
+ if (t.isValidIdentifier(node.name.name)) {
+ node.name.type = "Identifier";
+ } else {
+ node.name = t.stringLiteral(node.name.name);
+ }
+
+ return t.inherits(t.objectProperty(node.name, value), node);
+ }
+
+ function buildElementCall(path, file) {
+ path.parent.children = t.react.buildChildren(path.parent);
+
+ var tagExpr = convertJSXIdentifier(path.node.name, path.node);
+ var args = [];
+
+ var tagName = undefined;
+ if (t.isIdentifier(tagExpr)) {
+ tagName = tagExpr.name;
+ } else if (t.isLiteral(tagExpr)) {
+ tagName = tagExpr.value;
+ }
+
+ var state = {
+ tagExpr: tagExpr,
+ tagName: tagName,
+ args: args
+ };
+
+ if (opts.pre) {
+ opts.pre(state, file);
+ }
+
+ var attribs = path.node.attributes;
+ if (attribs.length) {
+ attribs = buildOpeningElementAttributes(attribs, file);
+ } else {
+ attribs = t.nullLiteral();
+ }
+
+ args.push(attribs);
+
+ if (opts.post) {
+ opts.post(state, file);
+ }
+
+ return state.call || t.callExpression(state.callee, args);
+ }
+
+ /**
+ * The logic for this is quite terse. It's because we need to
+ * support spread elements. We loop over all attributes,
+ * breaking on spreads, we then push a new object containg
+ * all prior attributes to an array for later processing.
+ */
+
+ function buildOpeningElementAttributes(attribs, file) {
+ var _props = [];
+ var objs = [];
+
+ function pushProps() {
+ if (!_props.length) return;
+
+ objs.push(t.objectExpression(_props));
+ _props = [];
+ }
+
+ while (attribs.length) {
+ var prop = attribs.shift();
+ if (t.isJSXSpreadAttribute(prop)) {
+ pushProps();
+ objs.push(prop.argument);
+ } else {
+ _props.push(convertAttribute(prop));
+ }
+ }
+
+ pushProps();
+
+ if (objs.length === 1) {
+ // only one object
+ attribs = objs[0];
+ } else {
+ // looks like we have multiple objects
+ if (!t.isObjectExpression(objs[0])) {
+ objs.unshift(t.objectExpression([]));
+ }
+
+ // spread it
+ attribs = t.callExpression(file.addHelper("extends"), objs);
+ }
+
+ return attribs;
+ }
+};
+
+module.exports = exports["default"];
+// tag node
+// raw string tag name
+// array of call arguments
+// optional call property that can be set to override the call expression returned
+// function called with (state: ElementState) before building attribs
\ No newline at end of file
diff --git a/node_modules/babel-helper-builder-react-jsx/package.json b/node_modules/babel-helper-builder-react-jsx/package.json
new file mode 100644
index 0000000..163adbb
--- /dev/null
+++ b/node_modules/babel-helper-builder-react-jsx/package.json
@@ -0,0 +1,90 @@
+{
+ "_args": [
+ [
+ "babel-helper-builder-react-jsx@^6.6.5",
+ "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-plugin-transform-react-jsx"
+ ]
+ ],
+ "_from": "babel-helper-builder-react-jsx@>=6.6.5 <7.0.0",
+ "_id": "babel-helper-builder-react-jsx@6.6.5",
+ "_inCache": true,
+ "_installable": true,
+ "_location": "/babel-helper-builder-react-jsx",
+ "_nodeVersion": "5.1.0",
+ "_npmOperationalInternal": {
+ "host": "packages-12-west.internal.npmjs.com",
+ "tmp": "tmp/babel-helper-builder-react-jsx-6.6.5.tgz_1457133386284_0.9943406709935516"
+ },
+ "_npmUser": {
+ "email": "hi@henryzoo.com",
+ "name": "hzoo"
+ },
+ "_npmVersion": "3.6.0",
+ "_phantomChildren": {},
+ "_requested": {
+ "name": "babel-helper-builder-react-jsx",
+ "raw": "babel-helper-builder-react-jsx@^6.6.5",
+ "rawSpec": "^6.6.5",
+ "scope": null,
+ "spec": ">=6.6.5 <7.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/babel-plugin-transform-react-jsx"
+ ],
+ "_resolved": "https://registry.npmjs.org/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.6.5.tgz",
+ "_shasum": "41b952de264ed3cbdc47dcfae40ac48d945ae368",
+ "_shrinkwrap": null,
+ "_spec": "babel-helper-builder-react-jsx@^6.6.5",
+ "_where": "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-plugin-transform-react-jsx",
+ "dependencies": {
+ "babel-runtime": "^5.0.0",
+ "babel-types": "^6.6.5",
+ "esutils": "^2.0.0",
+ "lodash": "^3.10.0"
+ },
+ "description": "## Usage",
+ "devDependencies": {},
+ "directories": {},
+ "dist": {
+ "shasum": "41b952de264ed3cbdc47dcfae40ac48d945ae368",
+ "tarball": "http://registry.npmjs.org/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.6.5.tgz"
+ },
+ "license": "MIT",
+ "main": "lib/index.js",
+ "maintainers": [
+ {
+ "name": "amasad",
+ "email": "amjad.masad@gmail.com"
+ },
+ {
+ "name": "hzoo",
+ "email": "hi@henryzoo.com"
+ },
+ {
+ "name": "jmm",
+ "email": "npm-public@jessemccarthy.net"
+ },
+ {
+ "name": "loganfsmyth",
+ "email": "loganfsmyth@gmail.com"
+ },
+ {
+ "name": "sebmck",
+ "email": "sebmck@gmail.com"
+ },
+ {
+ "name": "thejameskyle",
+ "email": "me@thejameskyle.com"
+ }
+ ],
+ "name": "babel-helper-builder-react-jsx",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel/tree/master/packages/babel-helper-builder-react-jsx"
+ },
+ "scripts": {},
+ "version": "6.6.5"
+}
diff --git a/node_modules/babel-helper-call-delegate/.npmignore b/node_modules/babel-helper-call-delegate/.npmignore
new file mode 100644
index 0000000..47cdd2c
--- /dev/null
+++ b/node_modules/babel-helper-call-delegate/.npmignore
@@ -0,0 +1,3 @@
+src
+test
+node_modules
diff --git a/node_modules/babel-helper-call-delegate/README.md b/node_modules/babel-helper-call-delegate/README.md
new file mode 100644
index 0000000..0841d07
--- /dev/null
+++ b/node_modules/babel-helper-call-delegate/README.md
@@ -0,0 +1,5 @@
+# babel-helper-call-delegate
+
+## Usage
+
+TODO
diff --git a/node_modules/babel-helper-call-delegate/lib/index.js b/node_modules/babel-helper-call-delegate/lib/index.js
new file mode 100644
index 0000000..50e42fd
--- /dev/null
+++ b/node_modules/babel-helper-call-delegate/lib/index.js
@@ -0,0 +1,76 @@
+"use strict";
+
+var _interopRequireDefault = require("babel-runtime/helpers/interop-require-default")["default"];
+
+var _interopRequireWildcard = require("babel-runtime/helpers/interop-require-wildcard")["default"];
+
+exports.__esModule = true;
+
+var _babelHelperHoistVariables = require("babel-helper-hoist-variables");
+
+var _babelHelperHoistVariables2 = _interopRequireDefault(_babelHelperHoistVariables);
+
+var _babelTypes = require("babel-types");
+
+var t = _interopRequireWildcard(_babelTypes);
+
+var visitor = {
+ enter: function enter(path, state) {
+ if (path.isThisExpression()) {
+ state.foundThis = true;
+ }
+
+ if (path.isReferencedIdentifier({ name: "arguments" })) {
+ state.foundArguments = true;
+ }
+ },
+
+ Function: function Function(path) {
+ path.skip();
+ }
+};
+
+exports["default"] = function (path) {
+ var scope = arguments.length <= 1 || arguments[1] === undefined ? path.scope : arguments[1];
+ return (function () {
+ var node = path.node;
+
+ var container = t.functionExpression(null, [], node.body, node.generator, node.async);
+
+ var callee = container;
+ var args = [];
+
+ // todo: only hoist if necessary
+ _babelHelperHoistVariables2["default"](path, function (id) {
+ return scope.push({ id: id });
+ });
+
+ var state = {
+ foundThis: false,
+ foundArguments: false
+ };
+
+ path.traverse(visitor, state);
+
+ if (state.foundArguments) {
+ callee = t.memberExpression(container, t.identifier("apply"));
+ args = [];
+
+ if (state.foundThis) {
+ args.push(t.thisExpression());
+ }
+
+ if (state.foundArguments) {
+ if (!state.foundThis) args.push(t.nullLiteral());
+ args.push(t.identifier("arguments"));
+ }
+ }
+
+ var call = t.callExpression(callee, args);
+ if (node.generator) call = t.yieldExpression(call, true);
+
+ return t.returnStatement(call);
+ })();
+};
+
+module.exports = exports["default"];
\ No newline at end of file
diff --git a/node_modules/babel-helper-call-delegate/package.json b/node_modules/babel-helper-call-delegate/package.json
new file mode 100644
index 0000000..da66868
--- /dev/null
+++ b/node_modules/babel-helper-call-delegate/package.json
@@ -0,0 +1,90 @@
+{
+ "_args": [
+ [
+ "babel-helper-call-delegate@^6.6.5",
+ "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-plugin-transform-es2015-parameters"
+ ]
+ ],
+ "_from": "babel-helper-call-delegate@>=6.6.5 <7.0.0",
+ "_id": "babel-helper-call-delegate@6.6.5",
+ "_inCache": true,
+ "_installable": true,
+ "_location": "/babel-helper-call-delegate",
+ "_nodeVersion": "5.1.0",
+ "_npmOperationalInternal": {
+ "host": "packages-13-west.internal.npmjs.com",
+ "tmp": "tmp/babel-helper-call-delegate-6.6.5.tgz_1457133389797_0.910776320612058"
+ },
+ "_npmUser": {
+ "email": "hi@henryzoo.com",
+ "name": "hzoo"
+ },
+ "_npmVersion": "3.6.0",
+ "_phantomChildren": {},
+ "_requested": {
+ "name": "babel-helper-call-delegate",
+ "raw": "babel-helper-call-delegate@^6.6.5",
+ "rawSpec": "^6.6.5",
+ "scope": null,
+ "spec": ">=6.6.5 <7.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/babel-plugin-transform-es2015-parameters"
+ ],
+ "_resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.6.5.tgz",
+ "_shasum": "d7c8ce67d8e1d28ef172301b16680c36c45f6e63",
+ "_shrinkwrap": null,
+ "_spec": "babel-helper-call-delegate@^6.6.5",
+ "_where": "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-plugin-transform-es2015-parameters",
+ "dependencies": {
+ "babel-helper-hoist-variables": "^6.6.5",
+ "babel-runtime": "^5.0.0",
+ "babel-traverse": "^6.6.5",
+ "babel-types": "^6.6.5"
+ },
+ "description": "## Usage",
+ "devDependencies": {},
+ "directories": {},
+ "dist": {
+ "shasum": "d7c8ce67d8e1d28ef172301b16680c36c45f6e63",
+ "tarball": "http://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.6.5.tgz"
+ },
+ "license": "MIT",
+ "main": "lib/index.js",
+ "maintainers": [
+ {
+ "name": "amasad",
+ "email": "amjad.masad@gmail.com"
+ },
+ {
+ "name": "hzoo",
+ "email": "hi@henryzoo.com"
+ },
+ {
+ "name": "jmm",
+ "email": "npm-public@jessemccarthy.net"
+ },
+ {
+ "name": "loganfsmyth",
+ "email": "loganfsmyth@gmail.com"
+ },
+ {
+ "name": "sebmck",
+ "email": "sebmck@gmail.com"
+ },
+ {
+ "name": "thejameskyle",
+ "email": "me@thejameskyle.com"
+ }
+ ],
+ "name": "babel-helper-call-delegate",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel/tree/master/packages/babel-helper-call-delegate"
+ },
+ "scripts": {},
+ "version": "6.6.5"
+}
diff --git a/node_modules/babel-helper-define-map/.npmignore b/node_modules/babel-helper-define-map/.npmignore
new file mode 100644
index 0000000..47cdd2c
--- /dev/null
+++ b/node_modules/babel-helper-define-map/.npmignore
@@ -0,0 +1,3 @@
+src
+test
+node_modules
diff --git a/node_modules/babel-helper-define-map/README.md b/node_modules/babel-helper-define-map/README.md
new file mode 100644
index 0000000..3818351
--- /dev/null
+++ b/node_modules/babel-helper-define-map/README.md
@@ -0,0 +1,5 @@
+# babel-helper-define-map
+
+## Usage
+
+TODO
diff --git a/node_modules/babel-helper-define-map/lib/index.js b/node_modules/babel-helper-define-map/lib/index.js
new file mode 100644
index 0000000..bd78828
--- /dev/null
+++ b/node_modules/babel-helper-define-map/lib/index.js
@@ -0,0 +1,162 @@
+/* eslint max-len: 0 */
+
+"use strict";
+
+var _interopRequireDefault = require("babel-runtime/helpers/interop-require-default")["default"];
+
+var _interopRequireWildcard = require("babel-runtime/helpers/interop-require-wildcard")["default"];
+
+exports.__esModule = true;
+exports.push = push;
+exports.hasComputed = hasComputed;
+exports.toComputedObjectFromClass = toComputedObjectFromClass;
+exports.toClassObject = toClassObject;
+exports.toDefineObject = toDefineObject;
+
+var _babelHelperFunctionName = require("babel-helper-function-name");
+
+var _babelHelperFunctionName2 = _interopRequireDefault(_babelHelperFunctionName);
+
+var _lodashCollectionEach = require("lodash/collection/each");
+
+var _lodashCollectionEach2 = _interopRequireDefault(_lodashCollectionEach);
+
+var _lodashObjectHas = require("lodash/object/has");
+
+var _lodashObjectHas2 = _interopRequireDefault(_lodashObjectHas);
+
+var _babelTypes = require("babel-types");
+
+var t = _interopRequireWildcard(_babelTypes);
+
+function toKind(node) {
+ if (t.isClassMethod(node) || t.isObjectMethod(node)) {
+ if (node.kind === "get" || node.kind === "set") {
+ return node.kind;
+ }
+ }
+
+ return "value";
+}
+
+function push(mutatorMap, node, kind, file, scope) {
+ var alias = t.toKeyAlias(node);
+
+ //
+
+ var map = {};
+ if (_lodashObjectHas2["default"](mutatorMap, alias)) map = mutatorMap[alias];
+ mutatorMap[alias] = map;
+
+ //
+
+ map._inherits = map._inherits || [];
+ map._inherits.push(node);
+
+ map._key = node.key;
+
+ if (node.computed) {
+ map._computed = true;
+ }
+
+ if (node.decorators) {
+ var decorators = map.decorators = map.decorators || t.arrayExpression([]);
+ decorators.elements = decorators.elements.concat(node.decorators.map(function (dec) {
+ return dec.expression;
+ }).reverse());
+ }
+
+ if (map.value || map.initializer) {
+ throw file.buildCodeFrameError(node, "Key conflict with sibling node");
+ }
+
+ var key = undefined,
+ value = undefined;
+
+ // save the key so we can possibly do function name inferences
+ if (t.isObjectProperty(node) || t.isObjectMethod(node) || t.isClassMethod(node)) {
+ key = t.toComputedKey(node, node.key);
+ }
+
+ if (t.isObjectProperty(node) || t.isClassProperty(node)) {
+ value = node.value;
+ } else if (t.isObjectMethod(node) || t.isClassMethod(node)) {
+ value = t.functionExpression(null, node.params, node.body, node.generator, node.async);
+ }
+
+ var inheritedKind = toKind(node);
+ if (!kind || inheritedKind !== "value") {
+ kind = inheritedKind;
+ }
+
+ // infer function name
+ if (scope && t.isStringLiteral(key) && (kind === "value" || kind === "initializer") && t.isFunctionExpression(value)) {
+ value = _babelHelperFunctionName2["default"]({ id: key, node: value, scope: scope });
+ }
+
+ if (value) {
+ t.inheritsComments(value, node);
+ map[kind] = value;
+ }
+
+ return map;
+}
+
+function hasComputed(mutatorMap) {
+ for (var key in mutatorMap) {
+ if (mutatorMap[key]._computed) {
+ return true;
+ }
+ }
+ return false;
+}
+
+function toComputedObjectFromClass(obj) {
+ var objExpr = t.arrayExpression([]);
+
+ for (var i = 0; i < obj.properties.length; i++) {
+ var prop = obj.properties[i];
+ var val = prop.value;
+ val.properties.unshift(t.objectProperty(t.identifier("key"), t.toComputedKey(prop)));
+ objExpr.elements.push(val);
+ }
+
+ return objExpr;
+}
+
+function toClassObject(mutatorMap) {
+ var objExpr = t.objectExpression([]);
+
+ _lodashCollectionEach2["default"](mutatorMap, function (map) {
+ var mapNode = t.objectExpression([]);
+
+ var propNode = t.objectProperty(map._key, mapNode, map._computed);
+
+ _lodashCollectionEach2["default"](map, function (node, key) {
+ if (key[0] === "_") return;
+
+ var inheritNode = node;
+ if (t.isClassMethod(node) || t.isClassProperty(node)) node = node.value;
+
+ var prop = t.objectProperty(t.identifier(key), node);
+ t.inheritsComments(prop, inheritNode);
+ t.removeComments(inheritNode);
+
+ mapNode.properties.push(prop);
+ });
+
+ objExpr.properties.push(propNode);
+ });
+
+ return objExpr;
+}
+
+function toDefineObject(mutatorMap) {
+ _lodashCollectionEach2["default"](mutatorMap, function (map) {
+ if (map.value) map.writable = t.booleanLiteral(true);
+ map.configurable = t.booleanLiteral(true);
+ map.enumerable = t.booleanLiteral(true);
+ });
+
+ return toClassObject(mutatorMap);
+}
\ No newline at end of file
diff --git a/node_modules/babel-helper-define-map/package.json b/node_modules/babel-helper-define-map/package.json
new file mode 100644
index 0000000..40702d4
--- /dev/null
+++ b/node_modules/babel-helper-define-map/package.json
@@ -0,0 +1,91 @@
+{
+ "_args": [
+ [
+ "babel-helper-define-map@^6.6.5",
+ "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-plugin-transform-es2015-classes"
+ ]
+ ],
+ "_from": "babel-helper-define-map@>=6.6.5 <7.0.0",
+ "_id": "babel-helper-define-map@6.6.5",
+ "_inCache": true,
+ "_installable": true,
+ "_location": "/babel-helper-define-map",
+ "_nodeVersion": "5.1.0",
+ "_npmOperationalInternal": {
+ "host": "packages-13-west.internal.npmjs.com",
+ "tmp": "tmp/babel-helper-define-map-6.6.5.tgz_1457133390182_0.16583834565244615"
+ },
+ "_npmUser": {
+ "email": "hi@henryzoo.com",
+ "name": "hzoo"
+ },
+ "_npmVersion": "3.6.0",
+ "_phantomChildren": {},
+ "_requested": {
+ "name": "babel-helper-define-map",
+ "raw": "babel-helper-define-map@^6.6.5",
+ "rawSpec": "^6.6.5",
+ "scope": null,
+ "spec": ">=6.6.5 <7.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/babel-plugin-transform-es2015-classes",
+ "/babel-plugin-transform-es2015-computed-properties"
+ ],
+ "_resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.6.5.tgz",
+ "_shasum": "1615cf12b07ce5f545958f21f9a21ab36fcb5985",
+ "_shrinkwrap": null,
+ "_spec": "babel-helper-define-map@^6.6.5",
+ "_where": "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-plugin-transform-es2015-classes",
+ "dependencies": {
+ "babel-helper-function-name": "^6.6.0",
+ "babel-runtime": "^5.0.0",
+ "babel-types": "^6.6.5",
+ "lodash": "^3.10.0"
+ },
+ "description": "## Usage",
+ "devDependencies": {},
+ "directories": {},
+ "dist": {
+ "shasum": "1615cf12b07ce5f545958f21f9a21ab36fcb5985",
+ "tarball": "http://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.6.5.tgz"
+ },
+ "license": "MIT",
+ "main": "lib/index.js",
+ "maintainers": [
+ {
+ "name": "amasad",
+ "email": "amjad.masad@gmail.com"
+ },
+ {
+ "name": "hzoo",
+ "email": "hi@henryzoo.com"
+ },
+ {
+ "name": "jmm",
+ "email": "npm-public@jessemccarthy.net"
+ },
+ {
+ "name": "loganfsmyth",
+ "email": "loganfsmyth@gmail.com"
+ },
+ {
+ "name": "sebmck",
+ "email": "sebmck@gmail.com"
+ },
+ {
+ "name": "thejameskyle",
+ "email": "me@thejameskyle.com"
+ }
+ ],
+ "name": "babel-helper-define-map",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel/tree/master/packages/babel-helper-define-map"
+ },
+ "scripts": {},
+ "version": "6.6.5"
+}
diff --git a/node_modules/babel-helper-function-name/.npmignore b/node_modules/babel-helper-function-name/.npmignore
new file mode 100644
index 0000000..47cdd2c
--- /dev/null
+++ b/node_modules/babel-helper-function-name/.npmignore
@@ -0,0 +1,3 @@
+src
+test
+node_modules
diff --git a/node_modules/babel-helper-function-name/README.md b/node_modules/babel-helper-function-name/README.md
new file mode 100644
index 0000000..96a4c65
--- /dev/null
+++ b/node_modules/babel-helper-function-name/README.md
@@ -0,0 +1,5 @@
+# babel-helper-function-name
+
+## Usage
+
+TODO
diff --git a/node_modules/babel-helper-function-name/lib/index.js b/node_modules/babel-helper-function-name/lib/index.js
new file mode 100644
index 0000000..7cc1c13
--- /dev/null
+++ b/node_modules/babel-helper-function-name/lib/index.js
@@ -0,0 +1,175 @@
+/* eslint max-len: 0 */
+
+"use strict";
+
+var _interopRequireDefault = require("babel-runtime/helpers/interop-require-default")["default"];
+
+var _interopRequireWildcard = require("babel-runtime/helpers/interop-require-wildcard")["default"];
+
+exports.__esModule = true;
+
+var _babelHelperGetFunctionArity = require("babel-helper-get-function-arity");
+
+var _babelHelperGetFunctionArity2 = _interopRequireDefault(_babelHelperGetFunctionArity);
+
+var _babelTemplate = require("babel-template");
+
+var _babelTemplate2 = _interopRequireDefault(_babelTemplate);
+
+var _babelTypes = require("babel-types");
+
+var t = _interopRequireWildcard(_babelTypes);
+
+var buildPropertyMethodAssignmentWrapper = _babelTemplate2["default"]("\n (function (FUNCTION_KEY) {\n function FUNCTION_ID() {\n return FUNCTION_KEY.apply(this, arguments);\n }\n\n FUNCTION_ID.toString = function () {\n return FUNCTION_KEY.toString();\n }\n\n return FUNCTION_ID;\n })(FUNCTION)\n");
+
+var buildGeneratorPropertyMethodAssignmentWrapper = _babelTemplate2["default"]("\n (function (FUNCTION_KEY) {\n function* FUNCTION_ID() {\n return yield* FUNCTION_KEY.apply(this, arguments);\n }\n\n FUNCTION_ID.toString = function () {\n return FUNCTION_KEY.toString();\n };\n\n return FUNCTION_ID;\n })(FUNCTION)\n");
+
+var visitor = {
+ "ReferencedIdentifier|BindingIdentifier": function ReferencedIdentifierBindingIdentifier(path, state) {
+ // check if this node matches our function id
+ if (path.node.name !== state.name) return;
+
+ // check that we don't have a local variable declared as that removes the need
+ // for the wrapper
+ var localDeclar = path.scope.getBindingIdentifier(state.name);
+ if (localDeclar !== state.outerDeclar) return;
+
+ state.selfReference = true;
+ path.stop();
+ }
+};
+
+function wrap(state, method, id, scope) {
+ if (state.selfReference) {
+ if (scope.hasBinding(id.name) && !scope.hasGlobal(id.name)) {
+ // we can just munge the local binding
+ scope.rename(id.name);
+ } else {
+ // we don't currently support wrapping class expressions
+ if (!t.isFunction(method)) return;
+
+ // need to add a wrapper since we can't change the references
+ var build = buildPropertyMethodAssignmentWrapper;
+ if (method.generator) build = buildGeneratorPropertyMethodAssignmentWrapper;
+ var _template = build({
+ FUNCTION: method,
+ FUNCTION_ID: id,
+ FUNCTION_KEY: scope.generateUidIdentifier(id.name)
+ }).expression;
+ _template.callee._skipModulesRemap = true;
+
+ // shim in dummy params to retain function arity, if you try to read the
+ // source then you'll get the original since it's proxied so it's all good
+ var params = _template.callee.body.body[0].params;
+ for (var i = 0, len = _babelHelperGetFunctionArity2["default"](method); i < len; i++) {
+ params.push(scope.generateUidIdentifier("x"));
+ }
+
+ return _template;
+ }
+ }
+
+ method.id = id;
+ scope.getProgramParent().references[id.name] = true;
+}
+
+function visit(node, name, scope) {
+ var state = {
+ selfAssignment: false,
+ selfReference: false,
+ outerDeclar: scope.getBindingIdentifier(name),
+ references: [],
+ name: name
+ };
+
+ // check to see if we have a local binding of the id we're setting inside of
+ // the function, this is important as there are caveats associated
+
+ var binding = scope.getOwnBinding(name);
+
+ if (binding) {
+ if (binding.kind === "param") {
+ // safari will blow up in strict mode with code like:
+ //
+ // let t = function t(t) {};
+ //
+ // with the error:
+ //
+ // Cannot declare a parameter named 't' as it shadows the name of a
+ // strict mode function.
+ //
+ // this isn't to the spec and they've invented this behaviour which is
+ // **extremely** annoying so we avoid setting the name if it has a param
+ // with the same id
+ state.selfReference = true;
+ } else {
+ // otherwise it's defined somewhere in scope like:
+ //
+ // let t = function () {
+ // let t = 2;
+ // };
+ //
+ // so we can safely just set the id and move along as it shadows the
+ // bound function id
+ }
+ } else if (state.outerDeclar || scope.hasGlobal(name)) {
+ scope.traverse(node, visitor, state);
+ }
+
+ return state;
+}
+
+exports["default"] = function (_ref) {
+ var node = _ref.node;
+ var parent = _ref.parent;
+ var scope = _ref.scope;
+ var id = _ref.id;
+
+ // has an `id` so we don't need to infer one
+ if (node.id) return;
+
+ if ((t.isObjectProperty(parent) || t.isObjectMethod(parent, { kind: "method" })) && (!parent.computed || t.isLiteral(parent.key))) {
+ // { foo() {} };
+ id = parent.key;
+ } else if (t.isVariableDeclarator(parent)) {
+ // let foo = function () {};
+ id = parent.id;
+
+ if (t.isIdentifier(id)) {
+ var binding = scope.parent.getBinding(id.name);
+ if (binding && binding.constant && scope.getBinding(id.name) === binding) {
+ // always going to reference this method
+ node.id = id;
+ node.id[t.NOT_LOCAL_BINDING] = true;
+ return;
+ }
+ }
+ } else if (t.isAssignmentExpression(parent)) {
+ // foo = function () {};
+ id = parent.left;
+ } else if (!id) {
+ return;
+ }
+
+ var name = undefined;
+ if (id && t.isLiteral(id)) {
+ name = id.value;
+ } else if (id && t.isIdentifier(id)) {
+ name = id.name;
+ } else {
+ return;
+ }
+
+ name = t.toBindingIdentifierName(name);
+ id = t.identifier(name);
+
+ // The id shouldn't be considered a local binding to the function because
+ // we are simply trying to set the function name and not actually create
+ // a local binding.
+ id[t.NOT_LOCAL_BINDING] = true;
+
+ var state = visit(node, name, scope);
+ return wrap(state, node, id, scope) || node;
+};
+
+module.exports = exports["default"];
\ No newline at end of file
diff --git a/node_modules/babel-helper-function-name/package.json b/node_modules/babel-helper-function-name/package.json
new file mode 100644
index 0000000..2d3a6f2
--- /dev/null
+++ b/node_modules/babel-helper-function-name/package.json
@@ -0,0 +1,93 @@
+{
+ "_args": [
+ [
+ "babel-helper-function-name@^6.6.0",
+ "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-plugin-transform-es2015-classes"
+ ]
+ ],
+ "_from": "babel-helper-function-name@>=6.6.0 <7.0.0",
+ "_id": "babel-helper-function-name@6.6.0",
+ "_inCache": true,
+ "_installable": true,
+ "_location": "/babel-helper-function-name",
+ "_nodeVersion": "5.1.0",
+ "_npmOperationalInternal": {
+ "host": "packages-6-west.internal.npmjs.com",
+ "tmp": "tmp/babel-helper-function-name-6.6.0.tgz_1456780347234_0.17874990380369127"
+ },
+ "_npmUser": {
+ "email": "hi@henryzoo.com",
+ "name": "hzoo"
+ },
+ "_npmVersion": "3.6.0",
+ "_phantomChildren": {},
+ "_requested": {
+ "name": "babel-helper-function-name",
+ "raw": "babel-helper-function-name@^6.6.0",
+ "rawSpec": "^6.6.0",
+ "scope": null,
+ "spec": ">=6.6.0 <7.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/babel-helper-define-map",
+ "/babel-plugin-transform-es2015-classes",
+ "/babel-plugin-transform-es2015-function-name"
+ ],
+ "_resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.6.0.tgz",
+ "_shasum": "1c2866b3cd089f71bbe5fac0bf2932002065bbbb",
+ "_shrinkwrap": null,
+ "_spec": "babel-helper-function-name@^6.6.0",
+ "_where": "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-plugin-transform-es2015-classes",
+ "dependencies": {
+ "babel-helper-get-function-arity": "^6.3.13",
+ "babel-runtime": "^5.0.0",
+ "babel-template": "^6.6.0",
+ "babel-traverse": "^6.6.0",
+ "babel-types": "^6.6.0"
+ },
+ "description": "## Usage",
+ "devDependencies": {},
+ "directories": {},
+ "dist": {
+ "shasum": "1c2866b3cd089f71bbe5fac0bf2932002065bbbb",
+ "tarball": "http://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.6.0.tgz"
+ },
+ "license": "MIT",
+ "main": "lib/index.js",
+ "maintainers": [
+ {
+ "name": "amasad",
+ "email": "amjad.masad@gmail.com"
+ },
+ {
+ "name": "hzoo",
+ "email": "hi@henryzoo.com"
+ },
+ {
+ "name": "jmm",
+ "email": "npm-public@jessemccarthy.net"
+ },
+ {
+ "name": "loganfsmyth",
+ "email": "loganfsmyth@gmail.com"
+ },
+ {
+ "name": "sebmck",
+ "email": "sebmck@gmail.com"
+ },
+ {
+ "name": "thejameskyle",
+ "email": "me@thejameskyle.com"
+ }
+ ],
+ "name": "babel-helper-function-name",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel/tree/master/packages/babel-helper-function-name"
+ },
+ "scripts": {},
+ "version": "6.6.0"
+}
diff --git a/node_modules/babel-helper-get-function-arity/.npmignore b/node_modules/babel-helper-get-function-arity/.npmignore
new file mode 100644
index 0000000..47cdd2c
--- /dev/null
+++ b/node_modules/babel-helper-get-function-arity/.npmignore
@@ -0,0 +1,3 @@
+src
+test
+node_modules
diff --git a/node_modules/babel-helper-get-function-arity/README.md b/node_modules/babel-helper-get-function-arity/README.md
new file mode 100644
index 0000000..2263230
--- /dev/null
+++ b/node_modules/babel-helper-get-function-arity/README.md
@@ -0,0 +1,5 @@
+# babel-helper-get-function-arity
+
+## Usage
+
+TODO
diff --git a/node_modules/babel-helper-get-function-arity/lib/index.js b/node_modules/babel-helper-get-function-arity/lib/index.js
new file mode 100644
index 0000000..4ecbf35
--- /dev/null
+++ b/node_modules/babel-helper-get-function-arity/lib/index.js
@@ -0,0 +1,22 @@
+"use strict";
+
+var _interopRequireWildcard = require("babel-runtime/helpers/interop-require-wildcard")["default"];
+
+exports.__esModule = true;
+
+var _babelTypes = require("babel-types");
+
+var t = _interopRequireWildcard(_babelTypes);
+
+exports["default"] = function (node) {
+ var params = node.params;
+ for (var i = 0; i < params.length; i++) {
+ var param = params[i];
+ if (t.isAssignmentPattern(param) || t.isRestElement(param)) {
+ return i;
+ }
+ }
+ return params.length;
+};
+
+module.exports = exports["default"];
\ No newline at end of file
diff --git a/node_modules/babel-helper-get-function-arity/package.json b/node_modules/babel-helper-get-function-arity/package.json
new file mode 100644
index 0000000..4ed5e58
--- /dev/null
+++ b/node_modules/babel-helper-get-function-arity/package.json
@@ -0,0 +1,89 @@
+{
+ "_args": [
+ [
+ "babel-helper-get-function-arity@^6.3.13",
+ "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-helper-function-name"
+ ]
+ ],
+ "_from": "babel-helper-get-function-arity@>=6.3.13 <7.0.0",
+ "_id": "babel-helper-get-function-arity@6.6.5",
+ "_inCache": true,
+ "_installable": true,
+ "_location": "/babel-helper-get-function-arity",
+ "_nodeVersion": "5.1.0",
+ "_npmOperationalInternal": {
+ "host": "packages-12-west.internal.npmjs.com",
+ "tmp": "tmp/babel-helper-get-function-arity-6.6.5.tgz_1457133394869_0.8935768641531467"
+ },
+ "_npmUser": {
+ "email": "hi@henryzoo.com",
+ "name": "hzoo"
+ },
+ "_npmVersion": "3.6.0",
+ "_phantomChildren": {},
+ "_requested": {
+ "name": "babel-helper-get-function-arity",
+ "raw": "babel-helper-get-function-arity@^6.3.13",
+ "rawSpec": "^6.3.13",
+ "scope": null,
+ "spec": ">=6.3.13 <7.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/babel-helper-function-name",
+ "/babel-plugin-transform-es2015-parameters"
+ ],
+ "_resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.6.5.tgz",
+ "_shasum": "702d54b2e06201c643c044611056da5258f78ab5",
+ "_shrinkwrap": null,
+ "_spec": "babel-helper-get-function-arity@^6.3.13",
+ "_where": "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-helper-function-name",
+ "dependencies": {
+ "babel-runtime": "^5.0.0",
+ "babel-types": "^6.6.5"
+ },
+ "description": "## Usage",
+ "devDependencies": {},
+ "directories": {},
+ "dist": {
+ "shasum": "702d54b2e06201c643c044611056da5258f78ab5",
+ "tarball": "http://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.6.5.tgz"
+ },
+ "license": "MIT",
+ "main": "lib/index.js",
+ "maintainers": [
+ {
+ "name": "amasad",
+ "email": "amjad.masad@gmail.com"
+ },
+ {
+ "name": "hzoo",
+ "email": "hi@henryzoo.com"
+ },
+ {
+ "name": "jmm",
+ "email": "npm-public@jessemccarthy.net"
+ },
+ {
+ "name": "loganfsmyth",
+ "email": "loganfsmyth@gmail.com"
+ },
+ {
+ "name": "sebmck",
+ "email": "sebmck@gmail.com"
+ },
+ {
+ "name": "thejameskyle",
+ "email": "me@thejameskyle.com"
+ }
+ ],
+ "name": "babel-helper-get-function-arity",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel/tree/master/packages/babel-helper-get-function-arity"
+ },
+ "scripts": {},
+ "version": "6.6.5"
+}
diff --git a/node_modules/babel-helper-hoist-variables/.npmignore b/node_modules/babel-helper-hoist-variables/.npmignore
new file mode 100644
index 0000000..47cdd2c
--- /dev/null
+++ b/node_modules/babel-helper-hoist-variables/.npmignore
@@ -0,0 +1,3 @@
+src
+test
+node_modules
diff --git a/node_modules/babel-helper-hoist-variables/README.md b/node_modules/babel-helper-hoist-variables/README.md
new file mode 100644
index 0000000..5b85097
--- /dev/null
+++ b/node_modules/babel-helper-hoist-variables/README.md
@@ -0,0 +1,5 @@
+# babel-helper-hoist-variables
+
+## Usage
+
+TODO
diff --git a/node_modules/babel-helper-hoist-variables/lib/index.js b/node_modules/babel-helper-hoist-variables/lib/index.js
new file mode 100644
index 0000000..3a3e5a6
--- /dev/null
+++ b/node_modules/babel-helper-hoist-variables/lib/index.js
@@ -0,0 +1,56 @@
+"use strict";
+
+var _interopRequireWildcard = require("babel-runtime/helpers/interop-require-wildcard")["default"];
+
+exports.__esModule = true;
+
+var _babelTypes = require("babel-types");
+
+var t = _interopRequireWildcard(_babelTypes);
+
+var visitor = {
+ Scope: function Scope(path, state) {
+ if (state.kind === "let") path.skip();
+ },
+
+ Function: function Function(path) {
+ path.skip();
+ },
+
+ VariableDeclaration: function VariableDeclaration(path, state) {
+ if (state.kind && path.node.kind !== state.kind) return;
+
+ var nodes = [];
+
+ var declarations = path.get("declarations");
+ var firstId = undefined;
+
+ for (var _i = 0; _i < declarations.length; _i++) {
+ var declar = declarations[_i];
+ firstId = declar.node.id;
+
+ if (declar.node.init) {
+ nodes.push(t.expressionStatement(t.assignmentExpression("=", declar.node.id, declar.node.init)));
+ }
+
+ for (var _name in declar.getBindingIdentifiers()) {
+ state.emit(t.identifier(_name), _name);
+ }
+ }
+
+ // for (var i in test)
+ if (path.parentPath.isFor({ left: path.node })) {
+ path.replaceWith(firstId);
+ } else {
+ path.replaceWithMultiple(nodes);
+ }
+ }
+};
+
+exports["default"] = function (path, emit) {
+ var kind = arguments.length <= 2 || arguments[2] === undefined ? "var" : arguments[2];
+
+ path.traverse(visitor, { kind: kind, emit: emit });
+};
+
+module.exports = exports["default"];
\ No newline at end of file
diff --git a/node_modules/babel-helper-hoist-variables/package.json b/node_modules/babel-helper-hoist-variables/package.json
new file mode 100644
index 0000000..60744a5
--- /dev/null
+++ b/node_modules/babel-helper-hoist-variables/package.json
@@ -0,0 +1,88 @@
+{
+ "_args": [
+ [
+ "babel-helper-hoist-variables@^6.6.5",
+ "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-helper-call-delegate"
+ ]
+ ],
+ "_from": "babel-helper-hoist-variables@>=6.6.5 <7.0.0",
+ "_id": "babel-helper-hoist-variables@6.6.5",
+ "_inCache": true,
+ "_installable": true,
+ "_location": "/babel-helper-hoist-variables",
+ "_nodeVersion": "5.1.0",
+ "_npmOperationalInternal": {
+ "host": "packages-13-west.internal.npmjs.com",
+ "tmp": "tmp/babel-helper-hoist-variables-6.6.5.tgz_1457133394993_0.5703725907951593"
+ },
+ "_npmUser": {
+ "email": "hi@henryzoo.com",
+ "name": "hzoo"
+ },
+ "_npmVersion": "3.6.0",
+ "_phantomChildren": {},
+ "_requested": {
+ "name": "babel-helper-hoist-variables",
+ "raw": "babel-helper-hoist-variables@^6.6.5",
+ "rawSpec": "^6.6.5",
+ "scope": null,
+ "spec": ">=6.6.5 <7.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/babel-helper-call-delegate"
+ ],
+ "_resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.6.5.tgz",
+ "_shasum": "c48f619536d51d5c990dd2193b0b204e8ff2bba5",
+ "_shrinkwrap": null,
+ "_spec": "babel-helper-hoist-variables@^6.6.5",
+ "_where": "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-helper-call-delegate",
+ "dependencies": {
+ "babel-runtime": "^5.0.0",
+ "babel-types": "^6.6.5"
+ },
+ "description": "## Usage",
+ "devDependencies": {},
+ "directories": {},
+ "dist": {
+ "shasum": "c48f619536d51d5c990dd2193b0b204e8ff2bba5",
+ "tarball": "http://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.6.5.tgz"
+ },
+ "license": "MIT",
+ "main": "lib/index.js",
+ "maintainers": [
+ {
+ "name": "amasad",
+ "email": "amjad.masad@gmail.com"
+ },
+ {
+ "name": "hzoo",
+ "email": "hi@henryzoo.com"
+ },
+ {
+ "name": "jmm",
+ "email": "npm-public@jessemccarthy.net"
+ },
+ {
+ "name": "loganfsmyth",
+ "email": "loganfsmyth@gmail.com"
+ },
+ {
+ "name": "sebmck",
+ "email": "sebmck@gmail.com"
+ },
+ {
+ "name": "thejameskyle",
+ "email": "me@thejameskyle.com"
+ }
+ ],
+ "name": "babel-helper-hoist-variables",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel/tree/master/packages/babel-helper-hoist-variables"
+ },
+ "scripts": {},
+ "version": "6.6.5"
+}
diff --git a/node_modules/babel-helper-optimise-call-expression/.npmignore b/node_modules/babel-helper-optimise-call-expression/.npmignore
new file mode 100644
index 0000000..47cdd2c
--- /dev/null
+++ b/node_modules/babel-helper-optimise-call-expression/.npmignore
@@ -0,0 +1,3 @@
+src
+test
+node_modules
diff --git a/node_modules/babel-helper-optimise-call-expression/README.md b/node_modules/babel-helper-optimise-call-expression/README.md
new file mode 100644
index 0000000..f6847bf
--- /dev/null
+++ b/node_modules/babel-helper-optimise-call-expression/README.md
@@ -0,0 +1,5 @@
+# babel-helper-optimise-call-expression
+
+## Usage
+
+TODO
diff --git a/node_modules/babel-helper-optimise-call-expression/lib/index.js b/node_modules/babel-helper-optimise-call-expression/lib/index.js
new file mode 100644
index 0000000..877660b
--- /dev/null
+++ b/node_modules/babel-helper-optimise-call-expression/lib/index.js
@@ -0,0 +1,22 @@
+/* eslint max-len: 0 */
+
+"use strict";
+
+var _interopRequireWildcard = require("babel-runtime/helpers/interop-require-wildcard")["default"];
+
+exports.__esModule = true;
+
+var _babelTypes = require("babel-types");
+
+var t = _interopRequireWildcard(_babelTypes);
+
+exports["default"] = function (callee, thisNode, args) {
+ if (args.length === 1 && t.isSpreadElement(args[0]) && t.isIdentifier(args[0].argument, { name: "arguments" })) {
+ // eg. super(...arguments);
+ return t.callExpression(t.memberExpression(callee, t.identifier("apply")), [thisNode, args[0].argument]);
+ } else {
+ return t.callExpression(t.memberExpression(callee, t.identifier("call")), [thisNode].concat(args));
+ }
+};
+
+module.exports = exports["default"];
\ No newline at end of file
diff --git a/node_modules/babel-helper-optimise-call-expression/package.json b/node_modules/babel-helper-optimise-call-expression/package.json
new file mode 100644
index 0000000..f2b1b37
--- /dev/null
+++ b/node_modules/babel-helper-optimise-call-expression/package.json
@@ -0,0 +1,89 @@
+{
+ "_args": [
+ [
+ "babel-helper-optimise-call-expression@^6.6.0",
+ "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-plugin-transform-es2015-classes"
+ ]
+ ],
+ "_from": "babel-helper-optimise-call-expression@>=6.6.0 <7.0.0",
+ "_id": "babel-helper-optimise-call-expression@6.6.0",
+ "_inCache": true,
+ "_installable": true,
+ "_location": "/babel-helper-optimise-call-expression",
+ "_nodeVersion": "5.1.0",
+ "_npmOperationalInternal": {
+ "host": "packages-9-west.internal.npmjs.com",
+ "tmp": "tmp/babel-helper-optimise-call-expression-6.6.0.tgz_1456780348112_0.49601022875867784"
+ },
+ "_npmUser": {
+ "email": "hi@henryzoo.com",
+ "name": "hzoo"
+ },
+ "_npmVersion": "3.6.0",
+ "_phantomChildren": {},
+ "_requested": {
+ "name": "babel-helper-optimise-call-expression",
+ "raw": "babel-helper-optimise-call-expression@^6.6.0",
+ "rawSpec": "^6.6.0",
+ "scope": null,
+ "spec": ">=6.6.0 <7.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/babel-helper-replace-supers",
+ "/babel-plugin-transform-es2015-classes"
+ ],
+ "_resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.6.0.tgz",
+ "_shasum": "cd0f755178aa02dc930d68eb4c760b476bc4b98f",
+ "_shrinkwrap": null,
+ "_spec": "babel-helper-optimise-call-expression@^6.6.0",
+ "_where": "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-plugin-transform-es2015-classes",
+ "dependencies": {
+ "babel-runtime": "^5.0.0",
+ "babel-types": "^6.6.0"
+ },
+ "description": "## Usage",
+ "devDependencies": {},
+ "directories": {},
+ "dist": {
+ "shasum": "cd0f755178aa02dc930d68eb4c760b476bc4b98f",
+ "tarball": "http://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.6.0.tgz"
+ },
+ "license": "MIT",
+ "main": "lib/index.js",
+ "maintainers": [
+ {
+ "name": "amasad",
+ "email": "amjad.masad@gmail.com"
+ },
+ {
+ "name": "hzoo",
+ "email": "hi@henryzoo.com"
+ },
+ {
+ "name": "jmm",
+ "email": "npm-public@jessemccarthy.net"
+ },
+ {
+ "name": "loganfsmyth",
+ "email": "loganfsmyth@gmail.com"
+ },
+ {
+ "name": "sebmck",
+ "email": "sebmck@gmail.com"
+ },
+ {
+ "name": "thejameskyle",
+ "email": "me@thejameskyle.com"
+ }
+ ],
+ "name": "babel-helper-optimise-call-expression",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel/tree/master/packages/babel-helper-optimise-call-expression"
+ },
+ "scripts": {},
+ "version": "6.6.0"
+}
diff --git a/node_modules/babel-helper-regex/.npmignore b/node_modules/babel-helper-regex/.npmignore
new file mode 100644
index 0000000..47cdd2c
--- /dev/null
+++ b/node_modules/babel-helper-regex/.npmignore
@@ -0,0 +1,3 @@
+src
+test
+node_modules
diff --git a/node_modules/babel-helper-regex/README.md b/node_modules/babel-helper-regex/README.md
new file mode 100644
index 0000000..bcdfccb
--- /dev/null
+++ b/node_modules/babel-helper-regex/README.md
@@ -0,0 +1,5 @@
+# babel-helper-regex
+
+## Usage
+
+TODO
diff --git a/node_modules/babel-helper-regex/lib/index.js b/node_modules/babel-helper-regex/lib/index.js
new file mode 100644
index 0000000..3ee467f
--- /dev/null
+++ b/node_modules/babel-helper-regex/lib/index.js
@@ -0,0 +1,28 @@
+"use strict";
+
+var _interopRequireDefault = require("babel-runtime/helpers/interop-require-default")["default"];
+
+var _interopRequireWildcard = require("babel-runtime/helpers/interop-require-wildcard")["default"];
+
+exports.__esModule = true;
+exports.is = is;
+exports.pullFlag = pullFlag;
+
+var _lodashArrayPull = require("lodash/array/pull");
+
+var _lodashArrayPull2 = _interopRequireDefault(_lodashArrayPull);
+
+var _babelTypes = require("babel-types");
+
+var t = _interopRequireWildcard(_babelTypes);
+
+function is(node, flag) {
+ return t.isRegExpLiteral(node) && node.flags.indexOf(flag) >= 0;
+}
+
+function pullFlag(node, flag) {
+ var flags = node.flags.split("");
+ if (node.flags.indexOf(flag) < 0) return;
+ _lodashArrayPull2["default"](flags, flag);
+ node.flags = flags.join("");
+}
\ No newline at end of file
diff --git a/node_modules/babel-helper-regex/package.json b/node_modules/babel-helper-regex/package.json
new file mode 100644
index 0000000..51def1a
--- /dev/null
+++ b/node_modules/babel-helper-regex/package.json
@@ -0,0 +1,90 @@
+{
+ "_args": [
+ [
+ "babel-helper-regex@^6.3.13",
+ "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-plugin-transform-es2015-sticky-regex"
+ ]
+ ],
+ "_from": "babel-helper-regex@>=6.3.13 <7.0.0",
+ "_id": "babel-helper-regex@6.6.5",
+ "_inCache": true,
+ "_installable": true,
+ "_location": "/babel-helper-regex",
+ "_nodeVersion": "5.1.0",
+ "_npmOperationalInternal": {
+ "host": "packages-13-west.internal.npmjs.com",
+ "tmp": "tmp/babel-helper-regex-6.6.5.tgz_1457133396277_0.9098349392879754"
+ },
+ "_npmUser": {
+ "email": "hi@henryzoo.com",
+ "name": "hzoo"
+ },
+ "_npmVersion": "3.6.0",
+ "_phantomChildren": {},
+ "_requested": {
+ "name": "babel-helper-regex",
+ "raw": "babel-helper-regex@^6.3.13",
+ "rawSpec": "^6.3.13",
+ "scope": null,
+ "spec": ">=6.3.13 <7.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/babel-plugin-transform-es2015-sticky-regex",
+ "/babel-plugin-transform-es2015-unicode-regex"
+ ],
+ "_resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.6.5.tgz",
+ "_shasum": "44b36f2f15948da9a60741dfab6a52061ed143e9",
+ "_shrinkwrap": null,
+ "_spec": "babel-helper-regex@^6.3.13",
+ "_where": "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-plugin-transform-es2015-sticky-regex",
+ "dependencies": {
+ "babel-runtime": "^5.0.0",
+ "babel-types": "^6.6.5",
+ "lodash": "^3.10.0"
+ },
+ "description": "## Usage",
+ "devDependencies": {},
+ "directories": {},
+ "dist": {
+ "shasum": "44b36f2f15948da9a60741dfab6a52061ed143e9",
+ "tarball": "http://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.6.5.tgz"
+ },
+ "license": "MIT",
+ "main": "lib/index.js",
+ "maintainers": [
+ {
+ "name": "amasad",
+ "email": "amjad.masad@gmail.com"
+ },
+ {
+ "name": "hzoo",
+ "email": "hi@henryzoo.com"
+ },
+ {
+ "name": "jmm",
+ "email": "npm-public@jessemccarthy.net"
+ },
+ {
+ "name": "loganfsmyth",
+ "email": "loganfsmyth@gmail.com"
+ },
+ {
+ "name": "sebmck",
+ "email": "sebmck@gmail.com"
+ },
+ {
+ "name": "thejameskyle",
+ "email": "me@thejameskyle.com"
+ }
+ ],
+ "name": "babel-helper-regex",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel/tree/master/packages/babel-helper-regex"
+ },
+ "scripts": {},
+ "version": "6.6.5"
+}
diff --git a/node_modules/babel-helper-replace-supers/.npmignore b/node_modules/babel-helper-replace-supers/.npmignore
new file mode 100644
index 0000000..47cdd2c
--- /dev/null
+++ b/node_modules/babel-helper-replace-supers/.npmignore
@@ -0,0 +1,3 @@
+src
+test
+node_modules
diff --git a/node_modules/babel-helper-replace-supers/README.md b/node_modules/babel-helper-replace-supers/README.md
new file mode 100644
index 0000000..a6515da
--- /dev/null
+++ b/node_modules/babel-helper-replace-supers/README.md
@@ -0,0 +1,5 @@
+# babel-helper-replace-supers
+
+## Usage
+
+TODO
diff --git a/node_modules/babel-helper-replace-supers/lib/index.js b/node_modules/babel-helper-replace-supers/lib/index.js
new file mode 100644
index 0000000..9c90408
--- /dev/null
+++ b/node_modules/babel-helper-replace-supers/lib/index.js
@@ -0,0 +1,252 @@
+/* eslint max-len: 0 */
+
+"use strict";
+
+var _classCallCheck = require("babel-runtime/helpers/class-call-check")["default"];
+
+var _Symbol = require("babel-runtime/core-js/symbol")["default"];
+
+var _interopRequireDefault = require("babel-runtime/helpers/interop-require-default")["default"];
+
+var _interopRequireWildcard = require("babel-runtime/helpers/interop-require-wildcard")["default"];
+
+exports.__esModule = true;
+
+var _babelHelperOptimiseCallExpression = require("babel-helper-optimise-call-expression");
+
+var _babelHelperOptimiseCallExpression2 = _interopRequireDefault(_babelHelperOptimiseCallExpression);
+
+var _babelMessages = require("babel-messages");
+
+var messages = _interopRequireWildcard(_babelMessages);
+
+var _babelTypes = require("babel-types");
+
+var t = _interopRequireWildcard(_babelTypes);
+
+// ✌️
+var HARDCORE_THIS_REF = _Symbol();
+
+function isIllegalBareSuper(node, parent) {
+ if (!t.isSuper(node)) return false;
+ if (t.isMemberExpression(parent, { computed: false })) return false;
+ if (t.isCallExpression(parent, { callee: node })) return false;
+ return true;
+}
+
+function isMemberExpressionSuper(node) {
+ return t.isMemberExpression(node) && t.isSuper(node.object);
+}
+
+var visitor = {
+ Function: function Function(path) {
+ if (!path.inShadow("this")) {
+ path.skip();
+ }
+ },
+
+ ReturnStatement: function ReturnStatement(path, state) {
+ if (!path.inShadow("this")) {
+ state.returns.push(path);
+ }
+ },
+
+ ThisExpression: function ThisExpression(path, state) {
+ if (!path.node[HARDCORE_THIS_REF]) {
+ state.thises.push(path);
+ }
+ },
+
+ enter: function enter(path, state) {
+ var callback = state.specHandle;
+ if (state.isLoose) callback = state.looseHandle;
+
+ var isBareSuper = path.isCallExpression() && path.get("callee").isSuper();
+
+ var result = callback.call(state, path);
+
+ if (result) {
+ state.hasSuper = true;
+ }
+
+ if (isBareSuper) {
+ state.bareSupers.push(path);
+ }
+
+ if (result === true) {
+ path.requeue();
+ }
+
+ if (result !== true && result) {
+ if (Array.isArray(result)) {
+ path.replaceWithMultiple(result);
+ } else {
+ path.replaceWith(result);
+ }
+ }
+ }
+};
+
+var ReplaceSupers = (function () {
+ function ReplaceSupers(opts) {
+ var inClass = arguments.length <= 1 || arguments[1] === undefined ? false : arguments[1];
+
+ _classCallCheck(this, ReplaceSupers);
+
+ this.forceSuperMemoisation = opts.forceSuperMemoisation;
+ this.methodPath = opts.methodPath;
+ this.methodNode = opts.methodNode;
+ this.superRef = opts.superRef;
+ this.isStatic = opts.isStatic;
+ this.hasSuper = false;
+ this.inClass = inClass;
+ this.isLoose = opts.isLoose;
+ this.scope = this.methodPath.scope;
+ this.file = opts.file;
+ this.opts = opts;
+
+ this.bareSupers = [];
+ this.returns = [];
+ this.thises = [];
+ }
+
+ ReplaceSupers.prototype.getObjectRef = function getObjectRef() {
+ return this.opts.objectRef || this.opts.getObjectRef();
+ };
+
+ /**
+ * Sets a super class value of the named property.
+ *
+ * @example
+ *
+ * _set(Object.getPrototypeOf(CLASS.prototype), "METHOD", "VALUE", this)
+ *
+ */
+
+ ReplaceSupers.prototype.setSuperProperty = function setSuperProperty(property, value, isComputed) {
+ return t.callExpression(this.file.addHelper("set"), [t.callExpression(t.memberExpression(t.identifier("Object"), t.identifier("getPrototypeOf")), [this.isStatic ? this.getObjectRef() : t.memberExpression(this.getObjectRef(), t.identifier("prototype"))]), isComputed ? property : t.stringLiteral(property.name), value, t.thisExpression()]);
+ };
+
+ /**
+ * Gets a node representing the super class value of the named property.
+ *
+ * @example
+ *
+ * _get(Object.getPrototypeOf(CLASS.prototype), "METHOD", this)
+ *
+ */
+
+ ReplaceSupers.prototype.getSuperProperty = function getSuperProperty(property, isComputed) {
+ return t.callExpression(this.file.addHelper("get"), [t.callExpression(t.memberExpression(t.identifier("Object"), t.identifier("getPrototypeOf")), [this.isStatic ? this.getObjectRef() : t.memberExpression(this.getObjectRef(), t.identifier("prototype"))]), isComputed ? property : t.stringLiteral(property.name), t.thisExpression()]);
+ };
+
+ ReplaceSupers.prototype.replace = function replace() {
+ this.methodPath.traverse(visitor, this);
+ };
+
+ ReplaceSupers.prototype.getLooseSuperProperty = function getLooseSuperProperty(id, parent) {
+ var methodNode = this.methodNode;
+ var superRef = this.superRef || t.identifier("Function");
+
+ if (parent.property === id) {
+ return;
+ } else if (t.isCallExpression(parent, { callee: id })) {
+ return;
+ } else if (t.isMemberExpression(parent) && !methodNode["static"]) {
+ // super.test -> objectRef.prototype.test
+ return t.memberExpression(superRef, t.identifier("prototype"));
+ } else {
+ return superRef;
+ }
+ };
+
+ ReplaceSupers.prototype.looseHandle = function looseHandle(path) {
+ var node = path.node;
+ if (path.isSuper()) {
+ return this.getLooseSuperProperty(node, path.parent);
+ } else if (path.isCallExpression()) {
+ var callee = node.callee;
+ if (!t.isMemberExpression(callee)) return;
+ if (!t.isSuper(callee.object)) return;
+
+ // super.test(); -> objectRef.prototype.MethodName.call(this);
+ t.appendToMemberExpression(callee, t.identifier("call"));
+ node.arguments.unshift(t.thisExpression());
+ return true;
+ }
+ };
+
+ ReplaceSupers.prototype.specHandleAssignmentExpression = function specHandleAssignmentExpression(ref, path, node) {
+ if (node.operator === "=") {
+ // super.name = "val"; -> _set(Object.getPrototypeOf(objectRef.prototype), "name", this);
+ return this.setSuperProperty(node.left.property, node.right, node.left.computed);
+ } else {
+ // super.age += 2; -> let _ref = super.age; super.age = _ref + 2;
+ ref = ref || path.scope.generateUidIdentifier("ref");
+ return [t.variableDeclaration("var", [t.variableDeclarator(ref, node.left)]), t.expressionStatement(t.assignmentExpression("=", node.left, t.binaryExpression(node.operator[0], ref, node.right)))];
+ }
+ };
+
+ ReplaceSupers.prototype.specHandle = function specHandle(path) {
+ var property = undefined;
+ var computed = undefined;
+ var args = undefined;
+ var thisReference = undefined;
+
+ var parent = path.parent;
+ var node = path.node;
+
+ if (isIllegalBareSuper(node, parent)) {
+ throw path.buildCodeFrameError(messages.get("classesIllegalBareSuper"));
+ }
+
+ if (t.isCallExpression(node)) {
+ var callee = node.callee;
+ if (t.isSuper(callee)) {
+ return;
+ } else if (isMemberExpressionSuper(callee)) {
+ // super.test(); -> _get(Object.getPrototypeOf(objectRef.prototype), "test", this).call(this);
+ property = callee.property;
+ computed = callee.computed;
+ args = node.arguments;
+ }
+ } else if (t.isMemberExpression(node) && t.isSuper(node.object)) {
+ // super.name; -> _get(Object.getPrototypeOf(objectRef.prototype), "name", this);
+ property = node.property;
+ computed = node.computed;
+ } else if (t.isUpdateExpression(node) && isMemberExpressionSuper(node.argument)) {
+ var binary = t.binaryExpression(node.operator[0], node.argument, t.numericLiteral(1));
+ if (node.prefix) {
+ // ++super.foo; -> super.foo += 1;
+ return this.specHandleAssignmentExpression(null, path, binary);
+ } else {
+ // super.foo++; -> let _ref = super.foo; super.foo = _ref + 1;
+ var ref = path.scope.generateUidIdentifier("ref");
+ return this.specHandleAssignmentExpression(ref, path, binary).concat(t.expressionStatement(ref));
+ }
+ } else if (t.isAssignmentExpression(node) && isMemberExpressionSuper(node.left)) {
+ return this.specHandleAssignmentExpression(null, path, node);
+ }
+
+ if (!property) return;
+
+ var superProperty = this.getSuperProperty(property, computed, thisReference);
+
+ if (args) {
+ return this.optimiseCall(superProperty, args);
+ } else {
+ return superProperty;
+ }
+ };
+
+ ReplaceSupers.prototype.optimiseCall = function optimiseCall(callee, args) {
+ var thisNode = t.thisExpression();
+ thisNode[HARDCORE_THIS_REF] = true;
+ return _babelHelperOptimiseCallExpression2["default"](callee, thisNode, args);
+ };
+
+ return ReplaceSupers;
+})();
+
+exports["default"] = ReplaceSupers;
+module.exports = exports["default"];
\ No newline at end of file
diff --git a/node_modules/babel-helper-replace-supers/package.json b/node_modules/babel-helper-replace-supers/package.json
new file mode 100644
index 0000000..763188e
--- /dev/null
+++ b/node_modules/babel-helper-replace-supers/package.json
@@ -0,0 +1,93 @@
+{
+ "_args": [
+ [
+ "babel-helper-replace-supers@^6.6.5",
+ "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-plugin-transform-es2015-classes"
+ ]
+ ],
+ "_from": "babel-helper-replace-supers@>=6.6.5 <7.0.0",
+ "_id": "babel-helper-replace-supers@6.7.0",
+ "_inCache": true,
+ "_installable": true,
+ "_location": "/babel-helper-replace-supers",
+ "_nodeVersion": "5.5.0",
+ "_npmOperationalInternal": {
+ "host": "packages-12-west.internal.npmjs.com",
+ "tmp": "tmp/babel-helper-replace-supers-6.7.0.tgz_1457484773793_0.6098962088581175"
+ },
+ "_npmUser": {
+ "email": "amjad.masad@gmail.com",
+ "name": "amasad"
+ },
+ "_npmVersion": "3.3.12",
+ "_phantomChildren": {},
+ "_requested": {
+ "name": "babel-helper-replace-supers",
+ "raw": "babel-helper-replace-supers@^6.6.5",
+ "rawSpec": "^6.6.5",
+ "scope": null,
+ "spec": ">=6.6.5 <7.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/babel-plugin-transform-es2015-classes",
+ "/babel-plugin-transform-es2015-object-super"
+ ],
+ "_resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.7.0.tgz",
+ "_shasum": "517426656a4199ddc87c8c09ebbf70c58fb1a07b",
+ "_shrinkwrap": null,
+ "_spec": "babel-helper-replace-supers@^6.6.5",
+ "_where": "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-plugin-transform-es2015-classes",
+ "dependencies": {
+ "babel-helper-optimise-call-expression": "^6.6.0",
+ "babel-messages": "^6.6.5",
+ "babel-runtime": "^5.0.0",
+ "babel-template": "^6.7.0",
+ "babel-traverse": "^6.7.0",
+ "babel-types": "^6.7.0"
+ },
+ "description": "## Usage",
+ "devDependencies": {},
+ "directories": {},
+ "dist": {
+ "shasum": "517426656a4199ddc87c8c09ebbf70c58fb1a07b",
+ "tarball": "http://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.7.0.tgz"
+ },
+ "license": "MIT",
+ "main": "lib/index.js",
+ "maintainers": [
+ {
+ "name": "amasad",
+ "email": "amjad.masad@gmail.com"
+ },
+ {
+ "name": "hzoo",
+ "email": "hi@henryzoo.com"
+ },
+ {
+ "name": "jmm",
+ "email": "npm-public@jessemccarthy.net"
+ },
+ {
+ "name": "loganfsmyth",
+ "email": "loganfsmyth@gmail.com"
+ },
+ {
+ "name": "sebmck",
+ "email": "sebmck@gmail.com"
+ },
+ {
+ "name": "thejameskyle",
+ "email": "me@thejameskyle.com"
+ }
+ ],
+ "name": "babel-helper-replace-supers",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel/tree/master/packages/babel-helper-replace-supers"
+ },
+ "scripts": {},
+ "version": "6.7.0"
+}
diff --git a/node_modules/babel-helpers/.npmignore b/node_modules/babel-helpers/.npmignore
new file mode 100644
index 0000000..47cdd2c
--- /dev/null
+++ b/node_modules/babel-helpers/.npmignore
@@ -0,0 +1,3 @@
+src
+test
+node_modules
diff --git a/node_modules/babel-helpers/README.md b/node_modules/babel-helpers/README.md
new file mode 100644
index 0000000..c4a927f
--- /dev/null
+++ b/node_modules/babel-helpers/README.md
@@ -0,0 +1,21 @@
+# babel-helpers
+
+> Collection of helper functions used by Babel transforms.
+
+## Install
+
+```js
+$ npm install babel-helpers
+```
+
+## Usage
+
+```js
+import * as helpers from 'babel-helpers';
+import * as t from 'babel-types';
+
+const typeofHelper = helpers.get('typeof');
+
+t.isExpressionStatement(typeofHelper);
+// true
+```
diff --git a/node_modules/babel-helpers/lib/helpers.js b/node_modules/babel-helpers/lib/helpers.js
new file mode 100644
index 0000000..ef5e3a5
--- /dev/null
+++ b/node_modules/babel-helpers/lib/helpers.js
@@ -0,0 +1,71 @@
+/* eslint max-len: 0 */
+
+"use strict";
+
+var _interopRequireDefault = require("babel-runtime/helpers/interop-require-default")["default"];
+
+exports.__esModule = true;
+
+var _babelTemplate = require("babel-template");
+
+var _babelTemplate2 = _interopRequireDefault(_babelTemplate);
+
+var helpers = {};
+exports["default"] = helpers;
+
+helpers["typeof"] = _babelTemplate2["default"]("\n (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\")\n ? function (obj) { return typeof obj; }\n : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol ? \"symbol\" : typeof obj; };\n");
+
+helpers.jsx = _babelTemplate2["default"]("\n (function () {\n var REACT_ELEMENT_TYPE = (typeof Symbol === \"function\" && Symbol.for && Symbol.for(\"react.element\")) || 0xeac7;\n\n return function createRawReactElement (type, props, key, children) {\n var defaultProps = type && type.defaultProps;\n var childrenLength = arguments.length - 3;\n\n if (!props && childrenLength !== 0) {\n // If we're going to assign props.children, we create a new object now\n // to avoid mutating defaultProps.\n props = {};\n }\n if (props && defaultProps) {\n for (var propName in defaultProps) {\n if (props[propName] === void 0) {\n props[propName] = defaultProps[propName];\n }\n }\n } else if (!props) {\n props = defaultProps || {};\n }\n\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 3];\n }\n props.children = childArray;\n }\n\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key === undefined ? null : '' + key,\n ref: null,\n props: props,\n _owner: null,\n };\n };\n\n })()\n");
+
+helpers.asyncToGenerator = _babelTemplate2["default"]("\n (function (fn) {\n return function () {\n var gen = fn.apply(this, arguments);\n return new Promise(function (resolve, reject) {\n function step(key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n return Promise.resolve(value).then(function (value) {\n return step(\"next\", value);\n }, function (err) {\n return step(\"throw\", err);\n });\n }\n }\n\n return step(\"next\");\n });\n };\n })\n");
+
+helpers.classCallCheck = _babelTemplate2["default"]("\n (function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n });\n");
+
+helpers.createClass = _babelTemplate2["default"]("\n (function() {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i ++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n })()\n");
+
+helpers.defineEnumerableProperties = _babelTemplate2["default"]("\n (function (obj, descs) {\n for (var key in descs) {\n var desc = descs[key];\n desc.configurable = desc.enumerable = true;\n if (\"value\" in desc) desc.writable = true;\n Object.defineProperty(obj, key, desc);\n }\n return obj;\n })\n");
+
+helpers.defaults = _babelTemplate2["default"]("\n (function (obj, defaults) {\n var keys = Object.getOwnPropertyNames(defaults);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var value = Object.getOwnPropertyDescriptor(defaults, key);\n if (value && value.configurable && obj[key] === undefined) {\n Object.defineProperty(obj, key, value);\n }\n }\n return obj;\n })\n");
+
+helpers.defineProperty = _babelTemplate2["default"]("\n (function (obj, key, value) {\n // Shortcircuit the slow defineProperty path when possible.\n // We are trying to avoid issues where setters defined on the\n // prototype cause side effects under the fast path of simple\n // assignment. By checking for existence of the property with\n // the in operator, we can optimize most of this overhead away.\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n });\n");
+
+helpers["extends"] = _babelTemplate2["default"]("\n Object.assign || (function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n })\n");
+
+helpers.get = _babelTemplate2["default"]("\n (function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n });\n");
+
+helpers.inherits = _babelTemplate2["default"]("\n (function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n })\n");
+
+helpers["instanceof"] = _babelTemplate2["default"]("\n (function (left, right) {\n if (right != null && typeof Symbol !== \"undefined\" && right[Symbol.hasInstance]) {\n return right[Symbol.hasInstance](left);\n } else {\n return left instanceof right;\n }\n });\n");
+
+helpers.interopRequireDefault = _babelTemplate2["default"]("\n (function (obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n })\n");
+
+helpers.interopRequireWildcard = _babelTemplate2["default"]("\n (function (obj) {\n if (obj && obj.__esModule) {\n return obj;\n } else {\n var newObj = {};\n if (obj != null) {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key];\n }\n }\n newObj.default = obj;\n return newObj;\n }\n })\n");
+
+helpers.newArrowCheck = _babelTemplate2["default"]("\n (function (innerThis, boundThis) {\n if (innerThis !== boundThis) {\n throw new TypeError(\"Cannot instantiate an arrow function\");\n }\n });\n");
+
+helpers.objectDestructuringEmpty = _babelTemplate2["default"]("\n (function (obj) {\n if (obj == null) throw new TypeError(\"Cannot destructure undefined\");\n });\n");
+
+helpers.objectWithoutProperties = _babelTemplate2["default"]("\n (function (obj, keys) {\n var target = {};\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n return target;\n })\n");
+
+helpers.possibleConstructorReturn = _babelTemplate2["default"]("\n (function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n });\n");
+
+helpers.selfGlobal = _babelTemplate2["default"]("\n typeof global === \"undefined\" ? self : global\n");
+
+helpers.set = _babelTemplate2["default"]("\n (function set(object, property, value, receiver) {\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent !== null) {\n set(parent, property, value, receiver);\n }\n } else if (\"value\" in desc && desc.writable) {\n desc.value = value;\n } else {\n var setter = desc.set;\n\n if (setter !== undefined) {\n setter.call(receiver, value);\n }\n }\n\n return value;\n });\n");
+
+helpers.slicedToArray = _babelTemplate2["default"]("\n (function () {\n // Broken out into a separate function to avoid deoptimizations due to the try/catch for the\n // array iterator case.\n function sliceIterator(arr, i) {\n // this is an expanded form of `for...of` that properly supports abrupt completions of\n // iterators etc. variable names have been minimised to reduce the size of this massive\n // helper. sometimes spec compliancy is annoying :(\n //\n // _n = _iteratorNormalCompletion\n // _d = _didIteratorError\n // _e = _iteratorError\n // _i = _iterator\n // _s = _step\n\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n })();\n");
+
+helpers.slicedToArrayLoose = _babelTemplate2["default"]("\n (function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n var _arr = [];\n for (var _iterator = arr[Symbol.iterator](), _step; !(_step = _iterator.next()).done;) {\n _arr.push(_step.value);\n if (i && _arr.length === i) break;\n }\n return _arr;\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n });\n");
+
+helpers.taggedTemplateLiteral = _babelTemplate2["default"]("\n (function (strings, raw) {\n return Object.freeze(Object.defineProperties(strings, {\n raw: { value: Object.freeze(raw) }\n }));\n });\n");
+
+helpers.taggedTemplateLiteralLoose = _babelTemplate2["default"]("\n (function (strings, raw) {\n strings.raw = raw;\n return strings;\n });\n");
+
+helpers.temporalRef = _babelTemplate2["default"]("\n (function (val, name, undef) {\n if (val === undef) {\n throw new ReferenceError(name + \" is not defined - temporal dead zone\");\n } else {\n return val;\n }\n })\n");
+
+helpers.temporalUndefined = _babelTemplate2["default"]("\n ({})\n");
+
+helpers.toArray = _babelTemplate2["default"]("\n (function (arr) {\n return Array.isArray(arr) ? arr : Array.from(arr);\n });\n");
+
+helpers.toConsumableArray = _babelTemplate2["default"]("\n (function (arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n return arr2;\n } else {\n return Array.from(arr);\n }\n });\n");
+module.exports = exports["default"];
\ No newline at end of file
diff --git a/node_modules/babel-helpers/lib/index.js b/node_modules/babel-helpers/lib/index.js
new file mode 100644
index 0000000..35459b7
--- /dev/null
+++ b/node_modules/babel-helpers/lib/index.js
@@ -0,0 +1,30 @@
+/* eslint no-confusing-arrow: 0 */
+
+"use strict";
+
+var _Object$keys = require("babel-runtime/core-js/object/keys")["default"];
+
+var _interopRequireDefault = require("babel-runtime/helpers/interop-require-default")["default"];
+
+exports.__esModule = true;
+exports.get = get;
+
+var _helpers = require("./helpers");
+
+var _helpers2 = _interopRequireDefault(_helpers);
+
+function get(name) {
+ var fn = _helpers2["default"][name];
+ if (!fn) throw new ReferenceError("Unknown helper " + name);
+
+ return fn().expression;
+}
+
+var list = _Object$keys(_helpers2["default"]).map(function (name) {
+ return name[0] === "_" ? name.slice(1) : name;
+}).filter(function (name) {
+ return name !== "__esModule";
+});
+
+exports.list = list;
+exports["default"] = get;
\ No newline at end of file
diff --git a/node_modules/babel-helpers/package.json b/node_modules/babel-helpers/package.json
new file mode 100644
index 0000000..4ba6822
--- /dev/null
+++ b/node_modules/babel-helpers/package.json
@@ -0,0 +1,93 @@
+{
+ "_args": [
+ [
+ "babel-helpers@^6.6.0",
+ "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-core"
+ ]
+ ],
+ "_from": "babel-helpers@>=6.6.0 <7.0.0",
+ "_id": "babel-helpers@6.6.0",
+ "_inCache": true,
+ "_installable": true,
+ "_location": "/babel-helpers",
+ "_nodeVersion": "5.1.0",
+ "_npmOperationalInternal": {
+ "host": "packages-5-east.internal.npmjs.com",
+ "tmp": "tmp/babel-helpers-6.6.0.tgz_1456780353970_0.22683173697441816"
+ },
+ "_npmUser": {
+ "email": "hi@henryzoo.com",
+ "name": "hzoo"
+ },
+ "_npmVersion": "3.6.0",
+ "_phantomChildren": {},
+ "_requested": {
+ "name": "babel-helpers",
+ "raw": "babel-helpers@^6.6.0",
+ "rawSpec": "^6.6.0",
+ "scope": null,
+ "spec": ">=6.6.0 <7.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/babel-core"
+ ],
+ "_resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.6.0.tgz",
+ "_shasum": "4fb005326569eeec9f5990176b539ea3a424b71c",
+ "_shrinkwrap": null,
+ "_spec": "babel-helpers@^6.6.0",
+ "_where": "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-core",
+ "author": {
+ "email": "sebmck@gmail.com",
+ "name": "Sebastian McKenzie"
+ },
+ "dependencies": {
+ "babel-runtime": "^5.0.0",
+ "babel-template": "^6.6.0"
+ },
+ "description": "Collection of helper functions used by Babel transforms.",
+ "devDependencies": {},
+ "directories": {},
+ "dist": {
+ "shasum": "4fb005326569eeec9f5990176b539ea3a424b71c",
+ "tarball": "http://registry.npmjs.org/babel-helpers/-/babel-helpers-6.6.0.tgz"
+ },
+ "homepage": "https://babeljs.io/",
+ "license": "MIT",
+ "main": "lib/index.js",
+ "maintainers": [
+ {
+ "name": "amasad",
+ "email": "amjad.masad@gmail.com"
+ },
+ {
+ "name": "hzoo",
+ "email": "hi@henryzoo.com"
+ },
+ {
+ "name": "jmm",
+ "email": "npm-public@jessemccarthy.net"
+ },
+ {
+ "name": "loganfsmyth",
+ "email": "loganfsmyth@gmail.com"
+ },
+ {
+ "name": "sebmck",
+ "email": "sebmck@gmail.com"
+ },
+ {
+ "name": "thejameskyle",
+ "email": "me@thejameskyle.com"
+ }
+ ],
+ "name": "babel-helpers",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel/tree/master/packages/babel-helpers"
+ },
+ "scripts": {},
+ "version": "6.6.0"
+}
diff --git a/node_modules/babel-loader/CHANGELOG.md b/node_modules/babel-loader/CHANGELOG.md
new file mode 100644
index 0000000..2786577
--- /dev/null
+++ b/node_modules/babel-loader/CHANGELOG.md
@@ -0,0 +1,37 @@
+# Changelog
+
+## v6.2.2
+ * Update peerDependencies to accept webpack 2 [#208](https://github.com/babel/babel-loader/pull/208)
+ * Remove duplicated dependencies
+
+## v6.2.0
+ * Pass true filenames [#106](https://github.com/babel/babel-loader/issues/106)
+ * Remove babel-core from devDependencies
+
+## v6.1.0
+
+ * Merge [PR #146](https://github.com/babel/babel-loader/pull/146) Set source file name relative to options.sourceRoot
+ * Merge [PR #136](https://github.com/babel/babel-loader/pull/136) use container-based infrastructure for faster build
+ * Merge [PR #121](https://github.com/babel/babel-loader/pull/121) Make babelrc configurable
+ * Merge [PR #113](https://github.com/babel/babel-loader/pull/113) Include BABEL_ENV || NODE_ENV in cacheIdentifier
+
+## v6.0.1
+
+ * Update to babel v6.
+
+## v5.3.1
+
+ * Merge [PR #85](https://github.com/babel/babel-loader/pull/85) - Don't override sourcemap if sourcesContent already exists.
+
+
+## v5.3.1
+
+ * Merge [PR #82](https://github.com/babel/babel-loader/pull/82) - Fallback global options to empty object to avoid conflicts with object-assign polyfill.
+
+## v5.3.0
+
+ * Merge [PR #79](https://github.com/babel/babel-loader/pull/79) - This should allow babel-loader to work with [enhanced-require](https://github.com/webpack/enhanced-require).
+
+## v5.2.0
+
+ * Include `.babelrc` file into the `cacheIdentifier` if it exists
diff --git a/node_modules/babel-loader/LICENSE b/node_modules/babel-loader/LICENSE
new file mode 100644
index 0000000..c9d38e2
--- /dev/null
+++ b/node_modules/babel-loader/LICENSE
@@ -0,0 +1,22 @@
+Copyright (c) 2014-2016 Luís Couto
+
+MIT License
+
+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.
diff --git a/node_modules/babel-loader/README.md b/node_modules/babel-loader/README.md
new file mode 100644
index 0000000..a7a31a5
--- /dev/null
+++ b/node_modules/babel-loader/README.md
@@ -0,0 +1,225 @@
+# babel-loader [](https://travis-ci.org/babel/babel-loader)
+ > Babel is a compiler for writing next generation JavaScript.
+
+ This package allows transpiling JavaScript files using [Babel](https://github.com/babel/babel) and [webpack](https://github.com/webpack/webpack).
+
+ __Notes:__ Issues with the output should be reported on the babel [issue tracker](https://github.com/babel/babel/issues);
+
+## Installation
+
+```bash
+npm install babel-loader babel-core babel-preset-es2015 babel-preset-react --save-dev
+```
+
+__Note:__ [npm](https://npmjs.com) deprecated [auto-installing of peerDependencies](https://github.com/npm/npm/issues/6565) since npm@3, so required peer dependencies like babel-core and webpack must be listed explicitly in your `package.json`.
+
+__Note:__ If you're upgrading from babel 5 to babel 6, please take a look [at this guide](https://medium.com/@malyw/how-to-update-babel-5-x-6-x-d828c230ec53#.yqxukuzdk).
+
+## Usage
+
+[Documentation: Using loaders](http://webpack.github.io/docs/using-loaders.html)
+
+ Within your webpack configuration object, you'll need to add the babel-loader to the list of modules, like so:
+
+ ```javascript
+module: {
+ loaders: [
+ {
+ test: /\.jsx?$/,
+ exclude: /(node_modules|bower_components)/,
+ loader: 'babel', // 'babel-loader' is also a legal name to reference
+ query: {
+ presets: ['react', 'es2015']
+ }
+ }
+ ]
+}
+ ```
+
+### Options
+
+See the `babel` [options](http://babeljs.io/docs/usage/options/).
+
+You can pass options to the loader by writing them as a [query string](https://github.com/webpack/loader-utils):
+
+ ```javascript
+module: {
+ loaders: [
+ {
+ test: /\.jsx?$/,
+ exclude: /(node_modules|bower_components)/,
+ loader: 'babel?presets[]=react,presets[]=es2015'
+ }
+ ]
+}
+ ```
+
+ or by using the query property:
+
+ ```javascript
+module: {
+ loaders: [
+ {
+ test: /\.jsx?$/,
+ exclude: /(node_modules|bower_components)/,
+ loader: 'babel',
+ query: {
+ presets: ['react', 'es2015']
+ }
+ }
+ ]
+}
+ ```
+
+ This loader also supports the following loader-specific option:
+
+ * `cacheDirectory`: Default `false`. When set, the given directory will be used to cache the results of the loader. Future webpack builds will attempt to read from the cache to avoid needing to run the potentially expensive Babel recompilation process on each run. If the value is blank (`loader: 'babel-loader?cacheDirectory'`) the loader will use the default OS temporary file directory.
+
+ * `cacheIdentifier`: Default is a string composed by the babel-core's version, the babel-loader's version and the contents of .babelrc file if it exists. This can set to a custom value to force cache busting if the identifier changes.
+
+
+ __Note:__ The `sourceMap` option is ignored, instead sourceMaps are automatically enabled when webpack is configured to use them (via the `devtool` config option).
+
+## Troubleshooting
+
+### babel-loader is slow!
+
+ Make sure you are transforming as few files as possible. Because you are probably
+ matching `/\.js$/`, you might be transforming the `node_modules` folder or other unwanted
+ source.
+
+ To exclude `node_modules`, see the `exclude` option in the `loaders` config as documented above.
+
+ You can also speed up babel-loader by as much as 2x by using the `cacheDirectory` option.
+ This will cache transformations to the filesystem.
+
+### babel is injecting helpers into each file and bloating my code!
+
+ babel uses very small helpers for common functions such as `_extend`. By default
+ this will be added to every file that requires it.
+
+ You can instead require the babel runtime as a separate module to avoid the duplication.
+
+ The following configuration disables automatic per-file runtime injection in babel, instead
+ requiring `babel-plugin-transform-runtime` and making all helper references use it.
+
+ See the [docs](http://babeljs.io/docs/plugins/transform-runtime/) for more information.
+
+ **NOTE:** You must run `npm install babel-plugin-transform-runtime --save` to include this in your project.
+
+```javascript
+loaders: [
+ // the 'transform-runtime' plugin tells babel to require the runtime
+ // instead of inlining it.
+ {
+ test: /\.jsx?$/,
+ exclude: /(node_modules|bower_components)/,
+ loader: 'babel',
+ query: {
+ presets: ['react', 'es2015'],
+ plugins: ['transform-runtime']
+ }
+ }
+]
+```
+
+### using `cacheDirectory` fails with ENOENT Error
+
+If using cacheDirectory results in an error similar to the following:
+
+```
+ERROR in ./frontend/src/main.jsx
+Module build failed: Error: ENOENT, open 'true/350c59cae6b7bce3bb58c8240147581bfdc9cccc.json.gzip'
+ @ multi app
+```
+(notice the `true/` in the filepath)
+
+That means that most likely, you're not setting the options correctly, and you're doing something similar to:
+
+```javascript
+loaders: [
+ {
+ test: /\.jsx?$/,
+ exclude: /(node_modules|bower_components)/,
+ loader: 'babel?cacheDirectory=true'
+ }
+]
+```
+
+That's not the correct way of setting boolean values. You should do instead:
+
+```javascript
+loaders: [
+ {
+ test: /\.jsx?$/,
+ exclude: /(node_modules|bower_components)/,
+ loader: 'babel?cacheDirectory'
+ }
+]
+```
+
+or use the [query](https://webpack.github.io/docs/using-loaders.html#query-parameters) property:
+
+```javascript
+loaders: [
+ // the optional 'runtime' transformer tells babel to require the runtime
+ // instead of inlining it.
+ {
+ test: /\.jsx?$/,
+ exclude: /(node_modules|bower_components)/,
+ loader: 'babel',
+ query: {
+ cacheDirectory: true
+ }
+ }
+]
+```
+
+
+### custom polyfills (e.g. Promise library)
+
+Since Babel includes a polyfill that includes a custom [regenerator runtime](https://github.com/facebook/regenerator/blob/master/runtime.js) and [core.js](https://github.com/zloirock/core-js), the following usual shimming method using `webpack.ProvidePlugin` will not work:
+
+```javascript
+// ...
+ new webpack.ProvidePlugin({
+ 'Promise': 'bluebird'
+ }),
+// ...
+```
+
+The following approach will not work either:
+
+```javascript
+require('babel-runtime/core-js/promise').default = require('bluebird');
+
+var promise = new Promise;
+```
+
+which outputs to (using `runtime`):
+
+```javascript
+'use strict';
+
+var _Promise = require('babel-runtime/core-js/promise')['default'];
+
+require('babel-runtime/core-js/promise')['default'] = require('bluebird');
+
+var promise = new _Promise();
+```
+
+The previous `Promise` library is referenced and used before it is overridden.
+
+One approach is to have a "bootstrap" step in your application that would first override the default globals before your application:
+
+```javascript
+// bootstrap.js
+
+require('babel-runtime/core-js/promise').default = require('bluebird');
+
+// ...
+
+require('./app');
+```
+
+## [License](http://couto.mit-license.org/)
diff --git a/node_modules/babel-loader/index.js b/node_modules/babel-loader/index.js
new file mode 100644
index 0000000..86f4862
--- /dev/null
+++ b/node_modules/babel-loader/index.js
@@ -0,0 +1,90 @@
+'use strict';
+
+var assign = require('object-assign');
+var babel = require('babel-core');
+var loaderUtils = require('loader-utils');
+var cache = require('./lib/fs-cache.js');
+var exists = require('./lib/helpers/exists')();
+var read = require('./lib/helpers/read')();
+var resolveRc = require('./lib/resolve-rc.js');
+var pkg = require('./package.json');
+var path = require('path');
+
+var transpile = function(source, options) {
+ var result = babel.transform(source, options);
+ var code = result.code;
+ var map = result.map;
+
+ if (map && (!map.sourcesContent || !map.sourcesContent.length)) {
+ map.sourcesContent = [source];
+ }
+
+ return {
+ code: code,
+ map: map,
+ };
+};
+
+module.exports = function(source, inputSourceMap) {
+ var result = {};
+
+ // Handle filenames (#106)
+ var webpackRemainingChain = loaderUtils.getRemainingRequest(this).split('!');
+ var filename = webpackRemainingChain[webpackRemainingChain.length - 1];
+
+ // Handle options
+ var globalOptions = this.options.babel || {};
+ var loaderOptions = loaderUtils.parseQuery(this.query);
+ var userOptions = assign({}, globalOptions, loaderOptions);
+ var defaultOptions = {
+ inputSourceMap: inputSourceMap,
+ sourceRoot: process.cwd(),
+ filename: filename,
+ cacheIdentifier: JSON.stringify({
+ 'babel-loader': pkg.version,
+ 'babel-core': babel.version,
+ babelrc: exists(userOptions.babelrc) ?
+ read(userOptions.babelrc) :
+ resolveRc(process.cwd()),
+ env: process.env.BABEL_ENV || process.env.NODE_ENV,
+ }),
+ };
+
+ var options = assign({}, defaultOptions, userOptions);
+
+ if (userOptions.sourceMap === undefined) {
+ options.sourceMap = this.sourceMap;
+ }
+
+ if (options.sourceFileName === undefined) {
+ options.sourceFileName = path.relative(
+ options.sourceRoot,
+ options.filename
+ );
+ }
+
+ var cacheDirectory = options.cacheDirectory;
+ var cacheIdentifier = options.cacheIdentifier;
+
+ delete options.cacheDirectory;
+ delete options.cacheIdentifier;
+
+ this.cacheable();
+
+ if (cacheDirectory) {
+ var callback = this.async();
+ return cache({
+ directory: cacheDirectory,
+ identifier: cacheIdentifier,
+ source: source,
+ options: options,
+ transform: transpile,
+ }, function(err, result) {
+ if (err) { return callback(err); }
+ return callback(null, result.code, result.map);
+ });
+ }
+
+ result = transpile(source, options);
+ this.callback(null, result.code, result.map);
+};
diff --git a/node_modules/babel-loader/lib/fs-cache.js b/node_modules/babel-loader/lib/fs-cache.js
new file mode 100644
index 0000000..e7e3437
--- /dev/null
+++ b/node_modules/babel-loader/lib/fs-cache.js
@@ -0,0 +1,155 @@
+'use strict';
+
+/**
+ * Filesystem cache
+ *
+ * Given a file and a transform function, cache the result into files
+ * or retrieve the previously cached files if the given file is already known.
+ *
+ * @see https://github.com/babel/babel-loader/issues/34
+ * @see https://github.com/babel/babel-loader/pull/41
+ */
+var crypto = require('crypto');
+var mkdirp = require('mkdirp');
+var fs = require('fs');
+var os = require('os');
+var path = require('path');
+var zlib = require('zlib');
+
+/**
+ * Read the contents from the compressed file.
+ *
+ * @async
+ * @params {String} filename
+ * @params {Function} callback
+ */
+var read = function(filename, callback) {
+ return fs.readFile(filename, function(err, data) {
+ if (err) { return callback(err); }
+
+ return zlib.gunzip(data, function(err, content) {
+ var result = {};
+
+ if (err) { return callback(err); }
+
+ try {
+ result = JSON.parse(content);
+ } catch (e) {
+ return callback(e);
+ }
+
+ return callback(null, result);
+ });
+ });
+};
+
+
+/**
+ * Write contents into a compressed file.
+ *
+ * @async
+ * @params {String} filename
+ * @params {String} result
+ * @params {Function} callback
+ */
+var write = function(filename, result, callback) {
+ var content = JSON.stringify(result);
+
+ return zlib.gzip(content, function(err, data) {
+ if (err) { return callback(err); }
+
+ return fs.writeFile(filename, data, callback);
+ });
+};
+
+
+/**
+ * Build the filename for the cached file
+ *
+ * @params {String} source File source code
+ * @params {Object} options Options used
+ *
+ * @return {String}
+ */
+var filename = function(source, identifier, options) {
+ var hash = crypto.createHash('SHA1');
+ var contents = JSON.stringify({
+ source: source,
+ options: options,
+ identifier: identifier,
+ });
+
+ hash.end(contents);
+
+ return hash.read().toString('hex') + '.json.gzip';
+};
+
+/**
+ * Retrieve file from cache, or create a new one for future reads
+ *
+ * @async
+ * @param {Object} params
+ * @param {String} params.directory Directory to store cached files
+ * @param {String} params.identifier Unique identifier to bust cache
+ * @param {String} params.source Original contents of the file to be cached
+ * @param {Object} params.options Options to be given to the transform fn
+ * @param {Function} params.transform Function that will transform the
+ * original file and whose result will be
+ * cached
+ *
+ * @param {Function} callback
+ *
+ * @example
+ *
+ * cache({
+ * directory: '.tmp/cache',
+ * identifier: 'babel-loader-cachefile',
+ * source: *source code from file*,
+ * options: {
+ * experimental: true,
+ * runtime: true
+ * },
+ * transform: function(source, options) {
+ * var content = *do what you need with the source*
+ * return content;
+ * }
+ * }, function(err, result) {
+ *
+ * });
+ */
+var cache = module.exports = function(params, callback) {
+ // Spread params into named variables
+ // Forgive user whenever possible
+ var source = params.source;
+ var options = params.options || {};
+ var transform = params.transform;
+ var identifier = params.identifier;
+ var directory = (typeof params.directory === 'string') ?
+ params.directory :
+ os.tmpdir();
+ var file = path.join(directory, filename(source, identifier, options));
+
+ // Make sure the directory exists.
+ return mkdirp(directory, function(err) {
+ if (err) { return callback(err); }
+
+ return read(file, function(err, content) {
+ var result = {};
+ // No errors mean that the file was previously cached
+ // we just need to return it
+ if (!err) { return callback(null, content); }
+
+ // Otherwise just transform the file
+ // return it to the user asap and write it in cache
+ try {
+ result = transform(source, options);
+ } catch (error) {
+ return callback(error);
+ }
+
+ return write(file, result, function(err) {
+ return callback(err, result);
+ });
+ });
+ });
+};
diff --git a/node_modules/babel-loader/lib/helpers/exists.js b/node_modules/babel-loader/lib/helpers/exists.js
new file mode 100644
index 0000000..35e08ba
--- /dev/null
+++ b/node_modules/babel-loader/lib/helpers/exists.js
@@ -0,0 +1,23 @@
+'use strict';
+
+var fs = require('fs');
+/**
+ * Check if file exists and cache the result
+ * return the result in cache
+ *
+ * @example
+ * var exists = require('./helpers/fsExists')({});
+ * exists('.babelrc'); // false
+ */
+module.exports = function(cache) {
+ cache = cache || {};
+
+ return function(filename) {
+
+ if (!filename) { return false; }
+
+ cache[filename] = cache[filename] || fs.existsSync(filename);
+
+ return cache[filename];
+ };
+};
diff --git a/node_modules/babel-loader/lib/helpers/read.js b/node_modules/babel-loader/lib/helpers/read.js
new file mode 100644
index 0000000..6de7e5c
--- /dev/null
+++ b/node_modules/babel-loader/lib/helpers/read.js
@@ -0,0 +1,25 @@
+'use strict';
+
+var fs = require('fs');
+/**
+ * Read the file and cache the result
+ * return the result in cache
+ *
+ * @example
+ * var read = require('./helpers/fsExists')({});
+ * read('.babelrc'); // file contents...
+ */
+module.exports = function(cache) {
+ cache = cache || {};
+
+ return function(filename) {
+
+ if (!filename) {
+ throw new Error('filename must be a string');
+ }
+
+ cache[filename] = cache[filename] || fs.readFileSync(filename, 'utf8');
+
+ return cache[filename];
+ };
+};
diff --git a/node_modules/babel-loader/lib/resolve-rc.js b/node_modules/babel-loader/lib/resolve-rc.js
new file mode 100644
index 0000000..b1ac220
--- /dev/null
+++ b/node_modules/babel-loader/lib/resolve-rc.js
@@ -0,0 +1,37 @@
+'use strict';
+
+/**
+ * The purpose of this module, is to find the project's .babelrc and
+ * use its contents to bust the babel-loader's internal cache whenever an option
+ * changes.
+ *
+ * @see https://github.com/babel/babel-loader/issues/62
+ * @see http://git.io/vLEvu
+ */
+var fs = require('fs');
+var path = require('path');
+var assign = require('object-assign');
+var exists = require('./helpers/exists')({});
+var read = require('./helpers/read')({});
+
+var find = function find(start, rel) {
+ var file = path.join(start, rel);
+ var opts = {};
+ var up = '';
+
+ if (exists(file)) {
+ return read(file);
+ }
+
+ up = path.dirname(start);
+ if (up !== start) {
+ // Reached root
+ return find(up, rel);
+ }
+
+};
+
+module.exports = function(loc, rel) {
+ rel = rel || '.babelrc';
+ return find(loc, rel);
+};
diff --git a/node_modules/babel-loader/package.json b/node_modules/babel-loader/package.json
new file mode 100644
index 0000000..84e2554
--- /dev/null
+++ b/node_modules/babel-loader/package.json
@@ -0,0 +1,111 @@
+{
+ "_args": [
+ [
+ "babel-loader@^6.2.2",
+ "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial"
+ ]
+ ],
+ "_from": "babel-loader@>=6.2.2 <7.0.0",
+ "_id": "babel-loader@6.2.4",
+ "_inCache": true,
+ "_installable": true,
+ "_location": "/babel-loader",
+ "_nodeVersion": "5.6.0",
+ "_npmOperationalInternal": {
+ "host": "packages-6-west.internal.npmjs.com",
+ "tmp": "tmp/babel-loader-6.2.4.tgz_1456567898502_0.7956836845260113"
+ },
+ "_npmUser": {
+ "email": "hello@luiscouto.pt",
+ "name": "couto"
+ },
+ "_npmVersion": "3.7.2",
+ "_phantomChildren": {},
+ "_requested": {
+ "name": "babel-loader",
+ "raw": "babel-loader@^6.2.2",
+ "rawSpec": "^6.2.2",
+ "scope": null,
+ "spec": ">=6.2.2 <7.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "#DEV:/"
+ ],
+ "_resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-6.2.4.tgz",
+ "_shasum": "aa70aff8ddc223a5952e839a43a6c3a4c8bfa1e9",
+ "_shrinkwrap": null,
+ "_spec": "babel-loader@^6.2.2",
+ "_where": "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial",
+ "author": {
+ "email": "hello@luiscouto.pt",
+ "name": "Luis Couto"
+ },
+ "bugs": {
+ "url": "https://github.com/babel/babel-loader/issues"
+ },
+ "dependencies": {
+ "loader-utils": "^0.2.11",
+ "mkdirp": "^0.5.1",
+ "object-assign": "^4.0.1"
+ },
+ "description": "babel module loader for webpack",
+ "devDependencies": {
+ "expect.js": "^0.3.1",
+ "istanbul": "^0.4.0",
+ "jscs": "^2.5.0",
+ "jshint": "^2.8.0",
+ "mocha": "^2.3.3",
+ "rimraf": "^2.4.3",
+ "webpack": "^1.12.2"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "aa70aff8ddc223a5952e839a43a6c3a4c8bfa1e9",
+ "tarball": "http://registry.npmjs.org/babel-loader/-/babel-loader-6.2.4.tgz"
+ },
+ "files": [
+ "index.js",
+ "lib"
+ ],
+ "gitHead": "28e76e3b5b4b1526ea89126a83588619c2ac1638",
+ "homepage": "https://github.com/babel/babel-loader",
+ "keywords": [
+ "6to5",
+ "babel",
+ "es6",
+ "loader",
+ "module",
+ "transpiler",
+ "webpack"
+ ],
+ "license": "MIT",
+ "maintainers": [
+ {
+ "name": "sebmck",
+ "email": "sebmck@gmail.com"
+ },
+ {
+ "name": "couto",
+ "email": "couto@15minuteslate.net"
+ }
+ ],
+ "name": "babel-loader",
+ "optionalDependencies": {},
+ "peerDependencies": {
+ "babel-core": "^6.0.0",
+ "webpack": "1 || ^2.1.0-beta"
+ },
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/babel/babel-loader.git"
+ },
+ "scripts": {
+ "cov": "istanbul cover ./node_modules/.bin/_mocha -- test/*.test.js",
+ "cs": "jscs --config .jscsrc index.js lib/* test/*",
+ "hint": "jshint --config .jshintrc index.js lib/* test/*",
+ "test": "npm run hint && npm run cs && npm run cov"
+ },
+ "version": "6.2.4"
+}
diff --git a/node_modules/babel-messages/.npmignore b/node_modules/babel-messages/.npmignore
new file mode 100644
index 0000000..47cdd2c
--- /dev/null
+++ b/node_modules/babel-messages/.npmignore
@@ -0,0 +1,3 @@
+src
+test
+node_modules
diff --git a/node_modules/babel-messages/README.md b/node_modules/babel-messages/README.md
new file mode 100644
index 0000000..297cd0c
--- /dev/null
+++ b/node_modules/babel-messages/README.md
@@ -0,0 +1,18 @@
+# babel-messages
+
+> Collection of debug messages used by Babel.
+
+## Install
+
+```sh
+$ npm install babel-messages
+```
+
+## Usage
+
+```js
+import * as messages from 'babel-messages';
+
+messages.get('tailCallReassignmentDeopt');
+// > "Function reference has been..."
+```
diff --git a/node_modules/babel-messages/lib/index.js b/node_modules/babel-messages/lib/index.js
new file mode 100644
index 0000000..42fdf45
--- /dev/null
+++ b/node_modules/babel-messages/lib/index.js
@@ -0,0 +1,94 @@
+/* eslint max-len: 0 */
+
+"use strict";
+
+var _interopRequireWildcard = require("babel-runtime/helpers/interop-require-wildcard")["default"];
+
+exports.__esModule = true;
+exports.get = get;
+exports.parseArgs = parseArgs;
+
+var _util = require("util");
+
+var util = _interopRequireWildcard(_util);
+
+/**
+ * Mapping of messages to be used in Babel.
+ * Messages can include $0-style placeholders.
+ */
+
+var MESSAGES = {
+ tailCallReassignmentDeopt: "Function reference has been reassigned, so it will probably be dereferenced, therefore we can't optimise this with confidence",
+ classesIllegalBareSuper: "Illegal use of bare super",
+ classesIllegalSuperCall: "Direct super call is illegal in non-constructor, use super.$1() instead",
+ scopeDuplicateDeclaration: "Duplicate declaration $1",
+ settersNoRest: "Setters aren't allowed to have a rest",
+ noAssignmentsInForHead: "No assignments allowed in for-in/of head",
+ expectedMemberExpressionOrIdentifier: "Expected type MemberExpression or Identifier",
+ invalidParentForThisNode: "We don't know how to handle this node within the current parent - please open an issue",
+ readOnly: "$1 is read-only",
+ unknownForHead: "Unknown node type $1 in ForStatement",
+ didYouMean: "Did you mean $1?",
+ codeGeneratorDeopt: "Note: The code generator has deoptimised the styling of $1 as it exceeds the max of $2.",
+ missingTemplatesDirectory: "no templates directory - this is most likely the result of a broken `npm publish`. Please report to https://github.com/babel/babel/issues",
+ unsupportedOutputType: "Unsupported output type $1",
+ illegalMethodName: "Illegal method name $1",
+ lostTrackNodePath: "We lost track of this node's position, likely because the AST was directly manipulated",
+
+ modulesIllegalExportName: "Illegal export $1",
+ modulesDuplicateDeclarations: "Duplicate module declarations with the same source but in different scopes",
+
+ undeclaredVariable: "Reference to undeclared variable $1",
+ undeclaredVariableType: "Referencing a type alias outside of a type annotation",
+ undeclaredVariableSuggestion: "Reference to undeclared variable $1 - did you mean $2?",
+
+ traverseNeedsParent: "You must pass a scope and parentPath unless traversing a Program/File. Instead of that you tried to traverse a $1 node without passing scope and parentPath.",
+ traverseVerifyRootFunction: "You passed `traverse()` a function when it expected a visitor object, are you sure you didn't mean `{ enter: Function }`?",
+ traverseVerifyVisitorProperty: "You passed `traverse()` a visitor object with the property $1 that has the invalid property $2",
+ traverseVerifyNodeType: "You gave us a visitor for the node type $1 but it's not a valid type",
+
+ pluginNotObject: "Plugin $2 specified in $1 was expected to return an object when invoked but returned $3",
+ pluginNotFunction: "Plugin $2 specified in $1 was expected to return a function but returned $3",
+ pluginUnknown: "Unknown plugin $1 specified in $2 at $3, attempted to resolve relative to $4",
+ pluginInvalidProperty: "Plugin $2 specified in $1 provided an invalid property of $3"
+};
+
+exports.MESSAGES = MESSAGES;
+/**
+ * Get a message with $0 placeholders replaced by arguments.
+ */
+
+function get(key) {
+ for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
+ args[_key - 1] = arguments[_key];
+ }
+
+ var msg = MESSAGES[key];
+ if (!msg) throw new ReferenceError("Unknown message " + JSON.stringify(key));
+
+ // stringify args
+ args = parseArgs(args);
+
+ // replace $0 placeholders with args
+ return msg.replace(/\$(\d+)/g, function (str, i) {
+ return args[i - 1];
+ });
+}
+
+/**
+ * Stingify arguments to be used inside messages.
+ */
+
+function parseArgs(args) {
+ return args.map(function (val) {
+ if (val != null && val.inspect) {
+ return val.inspect();
+ } else {
+ try {
+ return JSON.stringify(val) || val + "";
+ } catch (e) {
+ return util.inspect(val);
+ }
+ }
+ });
+}
\ No newline at end of file
diff --git a/node_modules/babel-messages/package.json b/node_modules/babel-messages/package.json
new file mode 100644
index 0000000..b940bc8
--- /dev/null
+++ b/node_modules/babel-messages/package.json
@@ -0,0 +1,96 @@
+{
+ "_args": [
+ [
+ "babel-messages@^6.7.2",
+ "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-core"
+ ]
+ ],
+ "_from": "babel-messages@>=6.7.2 <7.0.0",
+ "_id": "babel-messages@6.7.2",
+ "_inCache": true,
+ "_installable": true,
+ "_location": "/babel-messages",
+ "_nodeVersion": "5.5.0",
+ "_npmOperationalInternal": {
+ "host": "packages-12-west.internal.npmjs.com",
+ "tmp": "tmp/babel-messages-6.7.2.tgz_1457649689408_0.05176954669877887"
+ },
+ "_npmUser": {
+ "email": "amjad.masad@gmail.com",
+ "name": "amasad"
+ },
+ "_npmVersion": "3.3.12",
+ "_phantomChildren": {},
+ "_requested": {
+ "name": "babel-messages",
+ "raw": "babel-messages@^6.7.2",
+ "rawSpec": "^6.7.2",
+ "scope": null,
+ "spec": ">=6.7.2 <7.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/babel-core",
+ "/babel-generator",
+ "/babel-helper-replace-supers",
+ "/babel-plugin-transform-es2015-classes",
+ "/babel-traverse"
+ ],
+ "_resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.7.2.tgz",
+ "_shasum": "d46dbfc69da4c27e0e145c17441fc617cf76af71",
+ "_shrinkwrap": null,
+ "_spec": "babel-messages@^6.7.2",
+ "_where": "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-core",
+ "author": {
+ "email": "sebmck@gmail.com",
+ "name": "Sebastian McKenzie"
+ },
+ "dependencies": {
+ "babel-runtime": "^5.0.0"
+ },
+ "description": "Collection of debug messages used by Babel.",
+ "devDependencies": {},
+ "directories": {},
+ "dist": {
+ "shasum": "d46dbfc69da4c27e0e145c17441fc617cf76af71",
+ "tarball": "http://registry.npmjs.org/babel-messages/-/babel-messages-6.7.2.tgz"
+ },
+ "homepage": "https://babeljs.io/",
+ "license": "MIT",
+ "main": "lib/index.js",
+ "maintainers": [
+ {
+ "name": "amasad",
+ "email": "amjad.masad@gmail.com"
+ },
+ {
+ "name": "hzoo",
+ "email": "hi@henryzoo.com"
+ },
+ {
+ "name": "jmm",
+ "email": "npm-public@jessemccarthy.net"
+ },
+ {
+ "name": "loganfsmyth",
+ "email": "loganfsmyth@gmail.com"
+ },
+ {
+ "name": "sebmck",
+ "email": "sebmck@gmail.com"
+ },
+ {
+ "name": "thejameskyle",
+ "email": "me@thejameskyle.com"
+ }
+ ],
+ "name": "babel-messages",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel/tree/master/packages/babel-messages"
+ },
+ "scripts": {},
+ "version": "6.7.2"
+}
diff --git a/node_modules/babel-plugin-check-es2015-constants/.npmignore b/node_modules/babel-plugin-check-es2015-constants/.npmignore
new file mode 100644
index 0000000..3185290
--- /dev/null
+++ b/node_modules/babel-plugin-check-es2015-constants/.npmignore
@@ -0,0 +1,4 @@
+node_modules
+*.log
+src
+test
diff --git a/node_modules/babel-plugin-check-es2015-constants/README.md b/node_modules/babel-plugin-check-es2015-constants/README.md
new file mode 100644
index 0000000..0401a3f
--- /dev/null
+++ b/node_modules/babel-plugin-check-es2015-constants/README.md
@@ -0,0 +1,39 @@
+# babel-plugin-check-es2015-constants
+
+Validate ES2015 constants
+
+## Installation
+
+```sh
+$ npm install babel-plugin-check-es2015-constants
+```
+
+## Usage
+
+### Via `.babelrc` (Recommended)
+
+**.babelrc**
+
+```json
+{
+ "plugins": ["check-es2015-constants"]
+}
+```
+
+### Via CLI
+
+```sh
+$ babel --plugins check-es2015-constants script.js
+```
+
+### Via Node API
+
+```javascript
+require("babel-core").transform("code", {
+ plugins: ["check-es2015-constants"]
+});
+```
+
+## Note
+
+This check will only validate consts. If you need it to compile down to `var` then you must also install and enable [`transform-es2015-block-scoping`](../babel-plugin-transform-es2015-block-scoping).
diff --git a/node_modules/babel-plugin-check-es2015-constants/lib/index.js b/node_modules/babel-plugin-check-es2015-constants/lib/index.js
new file mode 100644
index 0000000..bcbc14f
--- /dev/null
+++ b/node_modules/babel-plugin-check-es2015-constants/lib/index.js
@@ -0,0 +1,28 @@
+"use strict";
+
+exports.__esModule = true;
+
+exports["default"] = function (_ref) {
+ var messages = _ref.messages;
+
+ return {
+ visitor: {
+ Scope: function Scope(_ref2) {
+ var scope = _ref2.scope;
+
+ for (var _name in scope.bindings) {
+ var binding = scope.bindings[_name];
+ if (binding.kind !== "const" && binding.kind !== "module") continue;
+
+ var _arr = binding.constantViolations;
+ for (var _i = 0; _i < _arr.length; _i++) {
+ var violation = _arr[_i];
+ throw violation.buildCodeFrameError(messages.get("readOnly", _name));
+ }
+ }
+ }
+ }
+ };
+};
+
+module.exports = exports["default"];
\ No newline at end of file
diff --git a/node_modules/babel-plugin-check-es2015-constants/package.json b/node_modules/babel-plugin-check-es2015-constants/package.json
new file mode 100644
index 0000000..f8596bf
--- /dev/null
+++ b/node_modules/babel-plugin-check-es2015-constants/package.json
@@ -0,0 +1,92 @@
+{
+ "_args": [
+ [
+ "babel-plugin-check-es2015-constants@^6.3.13",
+ "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-preset-es2015"
+ ]
+ ],
+ "_from": "babel-plugin-check-es2015-constants@>=6.3.13 <7.0.0",
+ "_id": "babel-plugin-check-es2015-constants@6.7.2",
+ "_inCache": true,
+ "_installable": true,
+ "_location": "/babel-plugin-check-es2015-constants",
+ "_nodeVersion": "5.5.0",
+ "_npmOperationalInternal": {
+ "host": "packages-12-west.internal.npmjs.com",
+ "tmp": "tmp/babel-plugin-check-es2015-constants-6.7.2.tgz_1457649691924_0.6701595187187195"
+ },
+ "_npmUser": {
+ "email": "amjad.masad@gmail.com",
+ "name": "amasad"
+ },
+ "_npmVersion": "3.3.12",
+ "_phantomChildren": {},
+ "_requested": {
+ "name": "babel-plugin-check-es2015-constants",
+ "raw": "babel-plugin-check-es2015-constants@^6.3.13",
+ "rawSpec": "^6.3.13",
+ "scope": null,
+ "spec": ">=6.3.13 <7.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/babel-preset-es2015"
+ ],
+ "_resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.7.2.tgz",
+ "_shasum": "c991c266ee3ce690dc573feb65c06ea6768e5f48",
+ "_shrinkwrap": null,
+ "_spec": "babel-plugin-check-es2015-constants@^6.3.13",
+ "_where": "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-preset-es2015",
+ "dependencies": {
+ "babel-runtime": "^5.0.0"
+ },
+ "description": "Compile ES2015 constants to ES5",
+ "devDependencies": {
+ "babel-helper-plugin-test-runner": "^6.3.13"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "c991c266ee3ce690dc573feb65c06ea6768e5f48",
+ "tarball": "http://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.7.2.tgz"
+ },
+ "keywords": [
+ "babel-plugin"
+ ],
+ "license": "MIT",
+ "main": "lib/index.js",
+ "maintainers": [
+ {
+ "name": "amasad",
+ "email": "amjad.masad@gmail.com"
+ },
+ {
+ "name": "hzoo",
+ "email": "hi@henryzoo.com"
+ },
+ {
+ "name": "jmm",
+ "email": "npm-public@jessemccarthy.net"
+ },
+ {
+ "name": "loganfsmyth",
+ "email": "loganfsmyth@gmail.com"
+ },
+ {
+ "name": "sebmck",
+ "email": "sebmck@gmail.com"
+ },
+ {
+ "name": "thejameskyle",
+ "email": "me@thejameskyle.com"
+ }
+ ],
+ "name": "babel-plugin-check-es2015-constants",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel/tree/master/packages/babel-plugin-check-es2015-constants"
+ },
+ "scripts": {},
+ "version": "6.7.2"
+}
diff --git a/node_modules/babel-plugin-syntax-async-functions/.npmignore b/node_modules/babel-plugin-syntax-async-functions/.npmignore
new file mode 100644
index 0000000..cace0d6
--- /dev/null
+++ b/node_modules/babel-plugin-syntax-async-functions/.npmignore
@@ -0,0 +1,3 @@
+node_modules
+*.log
+src
diff --git a/node_modules/babel-plugin-syntax-async-functions/README.md b/node_modules/babel-plugin-syntax-async-functions/README.md
new file mode 100644
index 0000000..a2c13f5
--- /dev/null
+++ b/node_modules/babel-plugin-syntax-async-functions/README.md
@@ -0,0 +1,35 @@
+# babel-plugin-syntax-async-functions
+
+Allow parsing of async functions.
+
+## Installation
+
+```sh
+$ npm install babel-plugin-syntax-async-functions
+```
+
+## Usage
+
+### Via `.babelrc` (Recommended)
+
+**.babelrc**
+
+```json
+{
+ "plugins": ["syntax-async-functions"]
+}
+```
+
+### Via CLI
+
+```sh
+$ babel --plugins syntax-async-functions script.js
+```
+
+### Via Node API
+
+```javascript
+require("babel-core").transform("code", {
+ plugins: ["syntax-async-functions"]
+});
+```
diff --git a/node_modules/babel-plugin-syntax-async-functions/lib/index.js b/node_modules/babel-plugin-syntax-async-functions/lib/index.js
new file mode 100644
index 0000000..0d2be53
--- /dev/null
+++ b/node_modules/babel-plugin-syntax-async-functions/lib/index.js
@@ -0,0 +1,13 @@
+"use strict";
+
+exports.__esModule = true;
+
+exports["default"] = function () {
+ return {
+ manipulateOptions: function manipulateOptions(opts, parserOpts) {
+ parserOpts.plugins.push("asyncFunctions");
+ }
+ };
+};
+
+module.exports = exports["default"];
\ No newline at end of file
diff --git a/node_modules/babel-plugin-syntax-async-functions/package.json b/node_modules/babel-plugin-syntax-async-functions/package.json
new file mode 100644
index 0000000..6976ab4
--- /dev/null
+++ b/node_modules/babel-plugin-syntax-async-functions/package.json
@@ -0,0 +1,92 @@
+{
+ "_args": [
+ [
+ "babel-plugin-syntax-async-functions@^6.3.13",
+ "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-plugin-transform-regenerator"
+ ]
+ ],
+ "_from": "babel-plugin-syntax-async-functions@>=6.3.13 <7.0.0",
+ "_id": "babel-plugin-syntax-async-functions@6.5.0",
+ "_inCache": true,
+ "_installable": true,
+ "_location": "/babel-plugin-syntax-async-functions",
+ "_nodeVersion": "5.1.0",
+ "_npmOperationalInternal": {
+ "host": "packages-5-east.internal.npmjs.com",
+ "tmp": "tmp/babel-plugin-syntax-async-functions-6.5.0.tgz_1454803629430_0.007293506525456905"
+ },
+ "_npmUser": {
+ "email": "hi@henryzoo.com",
+ "name": "hzoo"
+ },
+ "_npmVersion": "3.6.0",
+ "_phantomChildren": {},
+ "_requested": {
+ "name": "babel-plugin-syntax-async-functions",
+ "raw": "babel-plugin-syntax-async-functions@^6.3.13",
+ "rawSpec": "^6.3.13",
+ "scope": null,
+ "spec": ">=6.3.13 <7.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/babel-plugin-transform-regenerator"
+ ],
+ "_resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.5.0.tgz",
+ "_shasum": "90a5ce81d450f3cba176db5f7412a5c5d80727c0",
+ "_shrinkwrap": null,
+ "_spec": "babel-plugin-syntax-async-functions@^6.3.13",
+ "_where": "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-plugin-transform-regenerator",
+ "dependencies": {
+ "babel-runtime": "^5.0.0"
+ },
+ "description": "Allow parsing of async functions",
+ "devDependencies": {
+ "babel-helper-plugin-test-runner": "^6.3.13"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "90a5ce81d450f3cba176db5f7412a5c5d80727c0",
+ "tarball": "http://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.5.0.tgz"
+ },
+ "keywords": [
+ "babel-plugin"
+ ],
+ "license": "MIT",
+ "main": "lib/index.js",
+ "maintainers": [
+ {
+ "name": "amasad",
+ "email": "amjad.masad@gmail.com"
+ },
+ {
+ "name": "hzoo",
+ "email": "hi@henryzoo.com"
+ },
+ {
+ "name": "jmm",
+ "email": "npm-public@jessemccarthy.net"
+ },
+ {
+ "name": "loganfsmyth",
+ "email": "loganfsmyth@gmail.com"
+ },
+ {
+ "name": "sebmck",
+ "email": "sebmck@gmail.com"
+ },
+ {
+ "name": "thejameskyle",
+ "email": "me@thejameskyle.com"
+ }
+ ],
+ "name": "babel-plugin-syntax-async-functions",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-async-functions"
+ },
+ "scripts": {},
+ "version": "6.5.0"
+}
diff --git a/node_modules/babel-plugin-syntax-flow/.npmignore b/node_modules/babel-plugin-syntax-flow/.npmignore
new file mode 100644
index 0000000..cace0d6
--- /dev/null
+++ b/node_modules/babel-plugin-syntax-flow/.npmignore
@@ -0,0 +1,3 @@
+node_modules
+*.log
+src
diff --git a/node_modules/babel-plugin-syntax-flow/README.md b/node_modules/babel-plugin-syntax-flow/README.md
new file mode 100644
index 0000000..0e4691f
--- /dev/null
+++ b/node_modules/babel-plugin-syntax-flow/README.md
@@ -0,0 +1,35 @@
+# babel-plugin-syntax-flow
+
+
+
+## Installation
+
+```sh
+$ npm install babel-plugin-syntax-flow
+```
+
+## Usage
+
+### Via `.babelrc` (Recommended)
+
+**.babelrc**
+
+```json
+{
+ "plugins": ["syntax-flow"]
+}
+```
+
+### Via CLI
+
+```sh
+$ babel --plugins syntax-flow script.js
+```
+
+### Via Node API
+
+```javascript
+require("babel-core").transform("code", {
+ plugins: ["syntax-flow"]
+});
+```
diff --git a/node_modules/babel-plugin-syntax-flow/lib/index.js b/node_modules/babel-plugin-syntax-flow/lib/index.js
new file mode 100644
index 0000000..5399b9e
--- /dev/null
+++ b/node_modules/babel-plugin-syntax-flow/lib/index.js
@@ -0,0 +1,13 @@
+"use strict";
+
+exports.__esModule = true;
+
+exports["default"] = function () {
+ return {
+ manipulateOptions: function manipulateOptions(opts, parserOpts) {
+ parserOpts.plugins.push("flow");
+ }
+ };
+};
+
+module.exports = exports["default"];
\ No newline at end of file
diff --git a/node_modules/babel-plugin-syntax-flow/package.json b/node_modules/babel-plugin-syntax-flow/package.json
new file mode 100644
index 0000000..7fd2cd7
--- /dev/null
+++ b/node_modules/babel-plugin-syntax-flow/package.json
@@ -0,0 +1,93 @@
+{
+ "_args": [
+ [
+ "babel-plugin-syntax-flow@^6.3.13",
+ "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-preset-react"
+ ]
+ ],
+ "_from": "babel-plugin-syntax-flow@>=6.3.13 <7.0.0",
+ "_id": "babel-plugin-syntax-flow@6.5.0",
+ "_inCache": true,
+ "_installable": true,
+ "_location": "/babel-plugin-syntax-flow",
+ "_nodeVersion": "5.1.0",
+ "_npmOperationalInternal": {
+ "host": "packages-5-east.internal.npmjs.com",
+ "tmp": "tmp/babel-plugin-syntax-flow-6.5.0.tgz_1454803636839_0.2558803544379771"
+ },
+ "_npmUser": {
+ "email": "hi@henryzoo.com",
+ "name": "hzoo"
+ },
+ "_npmVersion": "3.6.0",
+ "_phantomChildren": {},
+ "_requested": {
+ "name": "babel-plugin-syntax-flow",
+ "raw": "babel-plugin-syntax-flow@^6.3.13",
+ "rawSpec": "^6.3.13",
+ "scope": null,
+ "spec": ">=6.3.13 <7.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/babel-plugin-transform-flow-strip-types",
+ "/babel-preset-react"
+ ],
+ "_resolved": "https://registry.npmjs.org/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.5.0.tgz",
+ "_shasum": "07dfe735b45fce8905296296a40072afce82b215",
+ "_shrinkwrap": null,
+ "_spec": "babel-plugin-syntax-flow@^6.3.13",
+ "_where": "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-preset-react",
+ "dependencies": {
+ "babel-runtime": "^5.0.0"
+ },
+ "description": "",
+ "devDependencies": {
+ "babel-helper-plugin-test-runner": "^6.3.13"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "07dfe735b45fce8905296296a40072afce82b215",
+ "tarball": "http://registry.npmjs.org/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.5.0.tgz"
+ },
+ "keywords": [
+ "babel-plugin"
+ ],
+ "license": "MIT",
+ "main": "lib/index.js",
+ "maintainers": [
+ {
+ "name": "amasad",
+ "email": "amjad.masad@gmail.com"
+ },
+ {
+ "name": "hzoo",
+ "email": "hi@henryzoo.com"
+ },
+ {
+ "name": "jmm",
+ "email": "npm-public@jessemccarthy.net"
+ },
+ {
+ "name": "loganfsmyth",
+ "email": "loganfsmyth@gmail.com"
+ },
+ {
+ "name": "sebmck",
+ "email": "sebmck@gmail.com"
+ },
+ {
+ "name": "thejameskyle",
+ "email": "me@thejameskyle.com"
+ }
+ ],
+ "name": "babel-plugin-syntax-flow",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-flow"
+ },
+ "scripts": {},
+ "version": "6.5.0"
+}
diff --git a/node_modules/babel-plugin-syntax-jsx/.npmignore b/node_modules/babel-plugin-syntax-jsx/.npmignore
new file mode 100644
index 0000000..cace0d6
--- /dev/null
+++ b/node_modules/babel-plugin-syntax-jsx/.npmignore
@@ -0,0 +1,3 @@
+node_modules
+*.log
+src
diff --git a/node_modules/babel-plugin-syntax-jsx/README.md b/node_modules/babel-plugin-syntax-jsx/README.md
new file mode 100644
index 0000000..e8c7e6b
--- /dev/null
+++ b/node_modules/babel-plugin-syntax-jsx/README.md
@@ -0,0 +1,35 @@
+# babel-plugin-syntax-jsx
+
+
+
+## Installation
+
+```sh
+$ npm install babel-plugin-syntax-jsx
+```
+
+## Usage
+
+### Via `.babelrc` (Recommended)
+
+**.babelrc**
+
+```json
+{
+ "plugins": ["syntax-jsx"]
+}
+```
+
+### Via CLI
+
+```sh
+$ babel --plugins syntax-jsx script.js
+```
+
+### Via Node API
+
+```javascript
+require("babel-core").transform("code", {
+ plugins: ["syntax-jsx"]
+});
+```
diff --git a/node_modules/babel-plugin-syntax-jsx/lib/index.js b/node_modules/babel-plugin-syntax-jsx/lib/index.js
new file mode 100644
index 0000000..c9fbcd5
--- /dev/null
+++ b/node_modules/babel-plugin-syntax-jsx/lib/index.js
@@ -0,0 +1,13 @@
+"use strict";
+
+exports.__esModule = true;
+
+exports["default"] = function () {
+ return {
+ manipulateOptions: function manipulateOptions(opts, parserOpts) {
+ parserOpts.plugins.push("jsx");
+ }
+ };
+};
+
+module.exports = exports["default"];
\ No newline at end of file
diff --git a/node_modules/babel-plugin-syntax-jsx/package.json b/node_modules/babel-plugin-syntax-jsx/package.json
new file mode 100644
index 0000000..6261d15
--- /dev/null
+++ b/node_modules/babel-plugin-syntax-jsx/package.json
@@ -0,0 +1,94 @@
+{
+ "_args": [
+ [
+ "babel-plugin-syntax-jsx@^6.3.13",
+ "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-preset-react"
+ ]
+ ],
+ "_from": "babel-plugin-syntax-jsx@>=6.3.13 <7.0.0",
+ "_id": "babel-plugin-syntax-jsx@6.5.0",
+ "_inCache": true,
+ "_installable": true,
+ "_location": "/babel-plugin-syntax-jsx",
+ "_nodeVersion": "5.1.0",
+ "_npmOperationalInternal": {
+ "host": "packages-5-east.internal.npmjs.com",
+ "tmp": "tmp/babel-plugin-syntax-jsx-6.5.0.tgz_1454803639252_0.10849612834863365"
+ },
+ "_npmUser": {
+ "email": "hi@henryzoo.com",
+ "name": "hzoo"
+ },
+ "_npmVersion": "3.6.0",
+ "_phantomChildren": {},
+ "_requested": {
+ "name": "babel-plugin-syntax-jsx",
+ "raw": "babel-plugin-syntax-jsx@^6.3.13",
+ "rawSpec": "^6.3.13",
+ "scope": null,
+ "spec": ">=6.3.13 <7.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/babel-plugin-transform-react-jsx",
+ "/babel-plugin-transform-react-jsx-source",
+ "/babel-preset-react"
+ ],
+ "_resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.5.0.tgz",
+ "_shasum": "fa708c5761d13ec39128a4ba24abfe8be6ad8170",
+ "_shrinkwrap": null,
+ "_spec": "babel-plugin-syntax-jsx@^6.3.13",
+ "_where": "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-preset-react",
+ "dependencies": {
+ "babel-runtime": "^5.0.0"
+ },
+ "description": "",
+ "devDependencies": {
+ "babel-helper-plugin-test-runner": "^6.3.13"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "fa708c5761d13ec39128a4ba24abfe8be6ad8170",
+ "tarball": "http://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.5.0.tgz"
+ },
+ "keywords": [
+ "babel-plugin"
+ ],
+ "license": "MIT",
+ "main": "lib/index.js",
+ "maintainers": [
+ {
+ "name": "amasad",
+ "email": "amjad.masad@gmail.com"
+ },
+ {
+ "name": "hzoo",
+ "email": "hi@henryzoo.com"
+ },
+ {
+ "name": "jmm",
+ "email": "npm-public@jessemccarthy.net"
+ },
+ {
+ "name": "loganfsmyth",
+ "email": "loganfsmyth@gmail.com"
+ },
+ {
+ "name": "sebmck",
+ "email": "sebmck@gmail.com"
+ },
+ {
+ "name": "thejameskyle",
+ "email": "me@thejameskyle.com"
+ }
+ ],
+ "name": "babel-plugin-syntax-jsx",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-jsx"
+ },
+ "scripts": {},
+ "version": "6.5.0"
+}
diff --git a/node_modules/babel-plugin-transform-es2015-arrow-functions/.npmignore b/node_modules/babel-plugin-transform-es2015-arrow-functions/.npmignore
new file mode 100644
index 0000000..3185290
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-arrow-functions/.npmignore
@@ -0,0 +1,4 @@
+node_modules
+*.log
+src
+test
diff --git a/node_modules/babel-plugin-transform-es2015-arrow-functions/README.md b/node_modules/babel-plugin-transform-es2015-arrow-functions/README.md
new file mode 100644
index 0000000..80a12d3
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-arrow-functions/README.md
@@ -0,0 +1,43 @@
+# babel-plugin-transform-es2015-arrow-functions
+
+Compile ES2015 arrow functions to ES5
+
+## Installation
+
+```sh
+$ npm install babel-plugin-transform-es2015-arrow-functions
+```
+
+## Usage
+
+### Via `.babelrc` (Recommended)
+
+**.babelrc**
+
+```js
+// without options
+{
+ "plugins": ["transform-es2015-arrow-functions"]
+}
+
+// with options
+{
+ "plugins": [
+ ["transform-es2015-arrow-functions", { "spec": true }]
+ ]
+}
+```
+
+### Via CLI
+
+```sh
+$ babel --plugins transform-es2015-arrow-functions script.js
+```
+
+### Via Node API
+
+```javascript
+require("babel-core").transform("code", {
+ plugins: ["transform-es2015-arrow-functions"]
+});
+```
diff --git a/node_modules/babel-plugin-transform-es2015-arrow-functions/lib/index.js b/node_modules/babel-plugin-transform-es2015-arrow-functions/lib/index.js
new file mode 100644
index 0000000..440f2c7
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-arrow-functions/lib/index.js
@@ -0,0 +1,35 @@
+"use strict";
+
+exports.__esModule = true;
+
+exports["default"] = function (_ref) {
+ var t = _ref.types;
+
+ return {
+ visitor: {
+ ArrowFunctionExpression: function ArrowFunctionExpression(path, state) {
+ if (state.opts.spec) {
+ var node = path.node;
+
+ if (node.shadow) return;
+
+ node.shadow = { "this": false };
+ node.type = "FunctionExpression";
+
+ var boundThis = t.thisExpression();
+ boundThis._forceShadow = path;
+
+ // make sure that arrow function won't be instantiated
+ path.ensureBlock();
+ path.get("body").unshiftContainer("body", t.expressionStatement(t.callExpression(state.addHelper("newArrowCheck"), [t.thisExpression(), boundThis])));
+
+ path.replaceWith(t.callExpression(t.memberExpression(node, t.identifier("bind")), [t.thisExpression()]));
+ } else {
+ path.arrowFunctionToShadowed();
+ }
+ }
+ }
+ };
+};
+
+module.exports = exports["default"];
\ No newline at end of file
diff --git a/node_modules/babel-plugin-transform-es2015-arrow-functions/package.json b/node_modules/babel-plugin-transform-es2015-arrow-functions/package.json
new file mode 100644
index 0000000..df935a2
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-arrow-functions/package.json
@@ -0,0 +1,92 @@
+{
+ "_args": [
+ [
+ "babel-plugin-transform-es2015-arrow-functions@^6.3.13",
+ "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-preset-es2015"
+ ]
+ ],
+ "_from": "babel-plugin-transform-es2015-arrow-functions@>=6.3.13 <7.0.0",
+ "_id": "babel-plugin-transform-es2015-arrow-functions@6.5.2",
+ "_inCache": true,
+ "_installable": true,
+ "_location": "/babel-plugin-transform-es2015-arrow-functions",
+ "_nodeVersion": "5.1.0",
+ "_npmOperationalInternal": {
+ "host": "packages-5-east.internal.npmjs.com",
+ "tmp": "tmp/babel-plugin-transform-es2015-arrow-functions-6.5.2.tgz_1455294605097_0.8632690703961998"
+ },
+ "_npmUser": {
+ "email": "hi@henryzoo.com",
+ "name": "hzoo"
+ },
+ "_npmVersion": "3.6.0",
+ "_phantomChildren": {},
+ "_requested": {
+ "name": "babel-plugin-transform-es2015-arrow-functions",
+ "raw": "babel-plugin-transform-es2015-arrow-functions@^6.3.13",
+ "rawSpec": "^6.3.13",
+ "scope": null,
+ "spec": ">=6.3.13 <7.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/babel-preset-es2015"
+ ],
+ "_resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.5.2.tgz",
+ "_shasum": "054405840d5d70d911c8f5acab4f36b38170c79c",
+ "_shrinkwrap": null,
+ "_spec": "babel-plugin-transform-es2015-arrow-functions@^6.3.13",
+ "_where": "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-preset-es2015",
+ "dependencies": {
+ "babel-runtime": "^5.0.0"
+ },
+ "description": "Compile ES2015 arrow functions to ES5",
+ "devDependencies": {
+ "babel-helper-plugin-test-runner": "^6.3.13"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "054405840d5d70d911c8f5acab4f36b38170c79c",
+ "tarball": "http://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.5.2.tgz"
+ },
+ "keywords": [
+ "babel-plugin"
+ ],
+ "license": "MIT",
+ "main": "lib/index.js",
+ "maintainers": [
+ {
+ "name": "amasad",
+ "email": "amjad.masad@gmail.com"
+ },
+ {
+ "name": "hzoo",
+ "email": "hi@henryzoo.com"
+ },
+ {
+ "name": "jmm",
+ "email": "npm-public@jessemccarthy.net"
+ },
+ {
+ "name": "loganfsmyth",
+ "email": "loganfsmyth@gmail.com"
+ },
+ {
+ "name": "sebmck",
+ "email": "sebmck@gmail.com"
+ },
+ {
+ "name": "thejameskyle",
+ "email": "me@thejameskyle.com"
+ }
+ ],
+ "name": "babel-plugin-transform-es2015-arrow-functions",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel/tree/master/packages/babel-plugin-transform-es2015-arrow-functions"
+ },
+ "scripts": {},
+ "version": "6.5.2"
+}
diff --git a/node_modules/babel-plugin-transform-es2015-block-scoped-functions/.npmignore b/node_modules/babel-plugin-transform-es2015-block-scoped-functions/.npmignore
new file mode 100644
index 0000000..3185290
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-block-scoped-functions/.npmignore
@@ -0,0 +1,4 @@
+node_modules
+*.log
+src
+test
diff --git a/node_modules/babel-plugin-transform-es2015-block-scoped-functions/README.md b/node_modules/babel-plugin-transform-es2015-block-scoped-functions/README.md
new file mode 100644
index 0000000..fa4eb2d
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-block-scoped-functions/README.md
@@ -0,0 +1,35 @@
+# babel-plugin-transform-es2015-block-scoped-functions
+
+Babel plugin to ensure function declarations at the block level are block scoped.
+
+## Installation
+
+```sh
+$ npm install babel-plugin-transform-es2015-block-scoped-functions
+```
+
+## Usage
+
+### Via `.babelrc` (Recommended)
+
+**.babelrc**
+
+```json
+{
+ "plugins": ["transform-es2015-block-scoped-functions"]
+}
+```
+
+### Via CLI
+
+```sh
+$ babel --plugins transform-es2015-block-scoped-functions script.js
+```
+
+### Via Node API
+
+```javascript
+require("babel-core").transform("code", {
+ plugins: ["transform-es2015-block-scoped-functions"]
+});
+```
diff --git a/node_modules/babel-plugin-transform-es2015-block-scoped-functions/lib/index.js b/node_modules/babel-plugin-transform-es2015-block-scoped-functions/lib/index.js
new file mode 100644
index 0000000..f087878
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-block-scoped-functions/lib/index.js
@@ -0,0 +1,48 @@
+"use strict";
+
+exports.__esModule = true;
+
+exports["default"] = function (_ref) {
+ var t = _ref.types;
+
+ function statementList(key, path) {
+ var paths = path.get(key);
+
+ for (var _i = 0; _i < paths.length; _i++) {
+ var _path = paths[_i];
+ var func = _path.node;
+ if (!_path.isFunctionDeclaration()) continue;
+
+ var declar = t.variableDeclaration("let", [t.variableDeclarator(func.id, t.toExpression(func))]);
+
+ // hoist it up above everything else
+ declar._blockHoist = 2;
+
+ // todo: name this
+ func.id = null;
+
+ _path.replaceWith(declar);
+ }
+ }
+
+ return {
+ visitor: {
+ BlockStatement: function BlockStatement(path) {
+ var node = path.node;
+ var parent = path.parent;
+
+ if (t.isFunction(parent, { body: node }) || t.isExportDeclaration(parent)) {
+ return;
+ }
+
+ statementList("body", path);
+ },
+
+ SwitchCase: function SwitchCase(path) {
+ statementList("consequent", path);
+ }
+ }
+ };
+};
+
+module.exports = exports["default"];
\ No newline at end of file
diff --git a/node_modules/babel-plugin-transform-es2015-block-scoped-functions/package.json b/node_modules/babel-plugin-transform-es2015-block-scoped-functions/package.json
new file mode 100644
index 0000000..f1610bf
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-block-scoped-functions/package.json
@@ -0,0 +1,92 @@
+{
+ "_args": [
+ [
+ "babel-plugin-transform-es2015-block-scoped-functions@^6.3.13",
+ "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-preset-es2015"
+ ]
+ ],
+ "_from": "babel-plugin-transform-es2015-block-scoped-functions@>=6.3.13 <7.0.0",
+ "_id": "babel-plugin-transform-es2015-block-scoped-functions@6.6.5",
+ "_inCache": true,
+ "_installable": true,
+ "_location": "/babel-plugin-transform-es2015-block-scoped-functions",
+ "_nodeVersion": "5.1.0",
+ "_npmOperationalInternal": {
+ "host": "packages-13-west.internal.npmjs.com",
+ "tmp": "tmp/babel-plugin-transform-es2015-block-scoped-functions-6.6.5.tgz_1457133405955_0.6049373527057469"
+ },
+ "_npmUser": {
+ "email": "hi@henryzoo.com",
+ "name": "hzoo"
+ },
+ "_npmVersion": "3.6.0",
+ "_phantomChildren": {},
+ "_requested": {
+ "name": "babel-plugin-transform-es2015-block-scoped-functions",
+ "raw": "babel-plugin-transform-es2015-block-scoped-functions@^6.3.13",
+ "rawSpec": "^6.3.13",
+ "scope": null,
+ "spec": ">=6.3.13 <7.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/babel-preset-es2015"
+ ],
+ "_resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.6.5.tgz",
+ "_shasum": "640d8918a32fb2b5ee4ad205c2b5a248e1083fe6",
+ "_shrinkwrap": null,
+ "_spec": "babel-plugin-transform-es2015-block-scoped-functions@^6.3.13",
+ "_where": "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-preset-es2015",
+ "dependencies": {
+ "babel-runtime": "^5.0.0"
+ },
+ "description": "Babel plugin to ensure function declarations at the block level are block scoped",
+ "devDependencies": {
+ "babel-helper-plugin-test-runner": "^6.3.13"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "640d8918a32fb2b5ee4ad205c2b5a248e1083fe6",
+ "tarball": "http://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.6.5.tgz"
+ },
+ "keywords": [
+ "babel-plugin"
+ ],
+ "license": "MIT",
+ "main": "lib/index.js",
+ "maintainers": [
+ {
+ "name": "amasad",
+ "email": "amjad.masad@gmail.com"
+ },
+ {
+ "name": "hzoo",
+ "email": "hi@henryzoo.com"
+ },
+ {
+ "name": "jmm",
+ "email": "npm-public@jessemccarthy.net"
+ },
+ {
+ "name": "loganfsmyth",
+ "email": "loganfsmyth@gmail.com"
+ },
+ {
+ "name": "sebmck",
+ "email": "sebmck@gmail.com"
+ },
+ {
+ "name": "thejameskyle",
+ "email": "me@thejameskyle.com"
+ }
+ ],
+ "name": "babel-plugin-transform-es2015-block-scoped-functions",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel/tree/master/packages/babel-plugin-transform-es2015-block-scoped-functions"
+ },
+ "scripts": {},
+ "version": "6.6.5"
+}
diff --git a/node_modules/babel-plugin-transform-es2015-block-scoping/.npmignore b/node_modules/babel-plugin-transform-es2015-block-scoping/.npmignore
new file mode 100644
index 0000000..3185290
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-block-scoping/.npmignore
@@ -0,0 +1,4 @@
+node_modules
+*.log
+src
+test
diff --git a/node_modules/babel-plugin-transform-es2015-block-scoping/README.md b/node_modules/babel-plugin-transform-es2015-block-scoping/README.md
new file mode 100644
index 0000000..06884df
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-block-scoping/README.md
@@ -0,0 +1,35 @@
+# babel-plugin-transform-es2015-block-scoping
+
+Compile ES2015 block scoping (const and let) to ES5
+
+## Installation
+
+```sh
+$ npm install babel-plugin-transform-es2015-block-scoping
+```
+
+## Usage
+
+### Via `.babelrc` (Recommended)
+
+**.babelrc**
+
+```json
+{
+ "plugins": ["transform-es2015-block-scoping"]
+}
+```
+
+### Via CLI
+
+```sh
+$ babel --plugins transform-es2015-block-scoping script.js
+```
+
+### Via Node API
+
+```javascript
+require("babel-core").transform("code", {
+ plugins: ["transform-es2015-block-scoping"]
+});
+```
diff --git a/node_modules/babel-plugin-transform-es2015-block-scoping/lib/index.js b/node_modules/babel-plugin-transform-es2015-block-scoping/lib/index.js
new file mode 100644
index 0000000..c6f2d69
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-block-scoping/lib/index.js
@@ -0,0 +1,719 @@
+/* eslint max-len: 0 */
+
+"use strict";
+
+var _classCallCheck = require("babel-runtime/helpers/class-call-check")["default"];
+
+var _Object$create = require("babel-runtime/core-js/object/create")["default"];
+
+var _Symbol = require("babel-runtime/core-js/symbol")["default"];
+
+var _interopRequireDefault = require("babel-runtime/helpers/interop-require-default")["default"];
+
+var _interopRequireWildcard = require("babel-runtime/helpers/interop-require-wildcard")["default"];
+
+exports.__esModule = true;
+
+var _babelTraverse = require("babel-traverse");
+
+var _babelTraverse2 = _interopRequireDefault(_babelTraverse);
+
+var _tdz = require("./tdz");
+
+var _babelTypes = require("babel-types");
+
+var t = _interopRequireWildcard(_babelTypes);
+
+var _lodashObjectValues = require("lodash/object/values");
+
+var _lodashObjectValues2 = _interopRequireDefault(_lodashObjectValues);
+
+var _lodashObjectExtend = require("lodash/object/extend");
+
+var _lodashObjectExtend2 = _interopRequireDefault(_lodashObjectExtend);
+
+var _babelTemplate = require("babel-template");
+
+var _babelTemplate2 = _interopRequireDefault(_babelTemplate);
+
+exports["default"] = function () {
+ return {
+ visitor: {
+ VariableDeclaration: function VariableDeclaration(path, file) {
+ var node = path.node;
+ var parent = path.parent;
+ var scope = path.scope;
+
+ if (!isBlockScoped(node)) return;
+ convertBlockScopedToVar(path, parent, scope, true);
+
+ if (node._tdzThis) {
+ var nodes = [node];
+
+ for (var i = 0; i < node.declarations.length; i++) {
+ var decl = node.declarations[i];
+ if (decl.init) {
+ var assign = t.assignmentExpression("=", decl.id, decl.init);
+ assign._ignoreBlockScopingTDZ = true;
+ nodes.push(t.expressionStatement(assign));
+ }
+ decl.init = file.addHelper("temporalUndefined");
+ }
+
+ node._blockHoist = 2;
+
+ if (path.isCompletionRecord()) {
+ // ensure we don't break completion record semantics by returning
+ // the initialiser of the last declarator
+ nodes.push(t.expressionStatement(scope.buildUndefinedNode()));
+ }
+
+ path.replaceWithMultiple(nodes);
+ }
+ },
+
+ Loop: function Loop(path, file) {
+ var node = path.node;
+ var parent = path.parent;
+ var scope = path.scope;
+
+ t.ensureBlock(node);
+ var blockScoping = new BlockScoping(path, path.get("body"), parent, scope, file);
+ var replace = blockScoping.run();
+ if (replace) path.replaceWith(replace);
+ },
+
+ "BlockStatement|Program": function BlockStatementProgram(path, file) {
+ if (!t.isLoop(path.parent)) {
+ var blockScoping = new BlockScoping(null, path, path.parent, path.scope, file);
+ blockScoping.run();
+ }
+ }
+ }
+ };
+};
+
+var buildRetCheck = _babelTemplate2["default"]("\n if (typeof RETURN === \"object\") return RETURN.v;\n");
+
+function isBlockScoped(node) {
+ if (!t.isVariableDeclaration(node)) return false;
+ if (node[t.BLOCK_SCOPED_SYMBOL]) return true;
+ if (node.kind !== "let" && node.kind !== "const") return false;
+ return true;
+}
+
+function convertBlockScopedToVar(path, parent, scope) {
+ var moveBindingsToParent = arguments.length <= 3 || arguments[3] === undefined ? false : arguments[3];
+ var node = path.node;
+
+ // https://github.com/babel/babel/issues/255
+ if (!t.isFor(parent)) {
+ for (var i = 0; i < node.declarations.length; i++) {
+ var declar = node.declarations[i];
+ declar.init = declar.init || scope.buildUndefinedNode();
+ }
+ }
+
+ node[t.BLOCK_SCOPED_SYMBOL] = true;
+ node.kind = "var";
+
+ // Move bindings from current block scope to function scope.
+ if (moveBindingsToParent) {
+ var parentScope = scope.getFunctionParent();
+ var ids = path.getBindingIdentifiers();
+ for (var _name in ids) {
+ var binding = scope.getOwnBinding(_name);
+ if (binding) binding.kind = "var";
+ scope.moveBindingTo(_name, parentScope);
+ }
+ }
+}
+
+function isVar(node) {
+ return t.isVariableDeclaration(node, { kind: "var" }) && !isBlockScoped(node);
+}
+
+function replace(path, node, scope, remaps) {
+ var remap = remaps[node.name];
+ if (!remap) return;
+
+ var ownBinding = scope.getBindingIdentifier(node.name);
+ if (ownBinding === remap.binding) {
+ scope.rename(node.name, remap.uid);
+ } else {
+ // scope already has it's own binding that doesn't
+ // match the one we have a stored replacement for
+ if (path) path.skip();
+ }
+}
+
+var replaceVisitor = {
+ ReferencedIdentifier: function ReferencedIdentifier(path, remaps) {
+ replace(path, path.node, path.scope, remaps);
+ },
+
+ AssignmentExpression: function AssignmentExpression(path, remaps) {
+ var ids = path.getBindingIdentifiers();
+ for (var _name2 in ids) {
+ replace(null, ids[_name2], path.scope, remaps);
+ }
+ }
+};
+
+function traverseReplace(node, parent, scope, remaps) {
+ if (t.isIdentifier(node)) {
+ replace(node, parent, scope, remaps);
+ }
+
+ if (t.isAssignmentExpression(node)) {
+ var ids = t.getBindingIdentifiers(node);
+ for (var _name3 in ids) {
+ replace(ids[_name3], parent, scope, remaps);
+ }
+ }
+
+ scope.traverse(node, replaceVisitor, remaps);
+}
+
+var letReferenceBlockVisitor = _babelTraverse2["default"].visitors.merge([{
+ Function: function Function(path, state) {
+ path.traverse(letReferenceFunctionVisitor, state);
+ return path.skip();
+ }
+}, _tdz.visitor]);
+
+var letReferenceFunctionVisitor = _babelTraverse2["default"].visitors.merge([{
+ ReferencedIdentifier: function ReferencedIdentifier(path, state) {
+ var ref = state.letReferences[path.node.name];
+
+ // not a part of our scope
+ if (!ref) return;
+
+ // this scope has a variable with the same name so it couldn't belong
+ // to our let scope
+ var localBinding = path.scope.getBindingIdentifier(path.node.name);
+ if (localBinding && localBinding !== ref) return;
+
+ state.closurify = true;
+ }
+}, _tdz.visitor]);
+
+var hoistVarDeclarationsVisitor = {
+ enter: function enter(path, self) {
+ var node = path.node;
+ var parent = path.parent;
+
+ if (path.isForStatement()) {
+ if (isVar(node.init, node)) {
+ var nodes = self.pushDeclar(node.init);
+ if (nodes.length === 1) {
+ node.init = nodes[0];
+ } else {
+ node.init = t.sequenceExpression(nodes);
+ }
+ }
+ } else if (path.isFor()) {
+ if (isVar(node.left, node)) {
+ self.pushDeclar(node.left);
+ node.left = node.left.declarations[0].id;
+ }
+ } else if (isVar(node, parent)) {
+ path.replaceWithMultiple(self.pushDeclar(node).map(function (expr) {
+ return t.expressionStatement(expr);
+ }));
+ } else if (path.isFunction()) {
+ return path.skip();
+ }
+ }
+};
+
+var loopLabelVisitor = {
+ LabeledStatement: function LabeledStatement(_ref, state) {
+ var node = _ref.node;
+
+ state.innerLabels.push(node.label.name);
+ }
+};
+
+var continuationVisitor = {
+ enter: function enter(path, state) {
+ if (path.isAssignmentExpression() || path.isUpdateExpression()) {
+ var bindings = path.getBindingIdentifiers();
+ for (var _name4 in bindings) {
+ if (state.outsideReferences[_name4] !== path.scope.getBindingIdentifier(_name4)) continue;
+ state.reassignments[_name4] = true;
+ }
+ }
+ }
+};
+
+function loopNodeTo(node) {
+ if (t.isBreakStatement(node)) {
+ return "break";
+ } else if (t.isContinueStatement(node)) {
+ return "continue";
+ }
+}
+
+var loopVisitor = {
+ Loop: function Loop(path, state) {
+ var oldIgnoreLabeless = state.ignoreLabeless;
+ state.ignoreLabeless = true;
+ path.traverse(loopVisitor, state);
+ state.ignoreLabeless = oldIgnoreLabeless;
+ path.skip();
+ },
+
+ Function: function Function(path) {
+ path.skip();
+ },
+
+ SwitchCase: function SwitchCase(path, state) {
+ var oldInSwitchCase = state.inSwitchCase;
+ state.inSwitchCase = true;
+ path.traverse(loopVisitor, state);
+ state.inSwitchCase = oldInSwitchCase;
+ path.skip();
+ },
+
+ "BreakStatement|ContinueStatement|ReturnStatement": function BreakStatementContinueStatementReturnStatement(path, state) {
+ var node = path.node;
+ var parent = path.parent;
+ var scope = path.scope;
+
+ if (node[this.LOOP_IGNORE]) return;
+
+ var replace = undefined;
+ var loopText = loopNodeTo(node);
+
+ if (loopText) {
+ if (node.label) {
+ // we shouldn't be transforming this because it exists somewhere inside
+ if (state.innerLabels.indexOf(node.label.name) >= 0) {
+ return;
+ }
+
+ loopText = loopText + "|" + node.label.name;
+ } else {
+ // we shouldn't be transforming these statements because
+ // they don't refer to the actual loop we're scopifying
+ if (state.ignoreLabeless) return;
+
+ //
+ if (state.inSwitchCase) return;
+
+ // break statements mean something different in this context
+ if (t.isBreakStatement(node) && t.isSwitchCase(parent)) return;
+ }
+
+ state.hasBreakContinue = true;
+ state.map[loopText] = node;
+ replace = t.stringLiteral(loopText);
+ }
+
+ if (path.isReturnStatement()) {
+ state.hasReturn = true;
+ replace = t.objectExpression([t.objectProperty(t.identifier("v"), node.argument || scope.buildUndefinedNode())]);
+ }
+
+ if (replace) {
+ replace = t.returnStatement(replace);
+ replace[this.LOOP_IGNORE] = true;
+ path.skip();
+ path.replaceWith(t.inherits(replace, node));
+ }
+ }
+};
+
+var BlockScoping = (function () {
+ function BlockScoping(loopPath, blockPath, parent, scope, file) {
+ _classCallCheck(this, BlockScoping);
+
+ this.parent = parent;
+ this.scope = scope;
+ this.file = file;
+
+ this.blockPath = blockPath;
+ this.block = blockPath.node;
+
+ this.outsideLetReferences = _Object$create(null);
+ this.hasLetReferences = false;
+ this.letReferences = _Object$create(null);
+ this.body = [];
+
+ if (loopPath) {
+ this.loopParent = loopPath.parent;
+ this.loopLabel = t.isLabeledStatement(this.loopParent) && this.loopParent.label;
+ this.loopPath = loopPath;
+ this.loop = loopPath.node;
+ }
+ }
+
+ /**
+ * Start the ball rolling.
+ */
+
+ BlockScoping.prototype.run = function run() {
+ var block = this.block;
+ if (block._letDone) return;
+ block._letDone = true;
+
+ var needsClosure = this.getLetReferences();
+
+ // this is a block within a `Function/Program` so we can safely leave it be
+ if (t.isFunction(this.parent) || t.isProgram(this.block)) {
+ this.updateScopeInfo();
+ return;
+ }
+
+ // we can skip everything
+ if (!this.hasLetReferences) return;
+
+ if (needsClosure) {
+ this.wrapClosure();
+ } else {
+ this.remap();
+ }
+
+ this.updateScopeInfo();
+
+ if (this.loopLabel && !t.isLabeledStatement(this.loopParent)) {
+ return t.labeledStatement(this.loopLabel, this.loop);
+ }
+ };
+
+ BlockScoping.prototype.updateScopeInfo = function updateScopeInfo() {
+ var scope = this.scope;
+ var parentScope = scope.getFunctionParent();
+ var letRefs = this.letReferences;
+
+ for (var key in letRefs) {
+ var ref = letRefs[key];
+ var binding = scope.getBinding(ref.name);
+ if (!binding) continue;
+ if (binding.kind === "let" || binding.kind === "const") {
+ binding.kind = "var";
+ scope.moveBindingTo(ref.name, parentScope);
+ }
+ }
+ };
+
+ BlockScoping.prototype.remap = function remap() {
+ var hasRemaps = false;
+ var letRefs = this.letReferences;
+ var scope = this.scope;
+
+ // alright, so since we aren't wrapping this block in a closure
+ // we have to check if any of our let variables collide with
+ // those in upper scopes and then if they do, generate a uid
+ // for them and replace all references with it
+ var remaps = _Object$create(null);
+
+ for (var key in letRefs) {
+ // just an Identifier node we collected in `getLetReferences`
+ // this is the defining identifier of a declaration
+ var ref = letRefs[key];
+
+ // todo: could skip this if the colliding binding is in another function
+ if (scope.parentHasBinding(key) || scope.hasGlobal(key)) {
+ var uid = scope.generateUidIdentifier(ref.name).name;
+ ref.name = uid;
+
+ hasRemaps = true;
+ remaps[key] = remaps[uid] = {
+ binding: ref,
+ uid: uid
+ };
+ }
+ }
+
+ if (!hasRemaps) return;
+
+ //
+
+ var loop = this.loop;
+ if (loop) {
+ traverseReplace(loop.right, loop, scope, remaps);
+ traverseReplace(loop.test, loop, scope, remaps);
+ traverseReplace(loop.update, loop, scope, remaps);
+ }
+
+ this.blockPath.traverse(replaceVisitor, remaps);
+ };
+
+ BlockScoping.prototype.wrapClosure = function wrapClosure() {
+ var block = this.block;
+
+ var outsideRefs = this.outsideLetReferences;
+
+ // remap loop heads with colliding variables
+ if (this.loop) {
+ for (var _name5 in outsideRefs) {
+ var id = outsideRefs[_name5];
+
+ if (this.scope.hasGlobal(id.name) || this.scope.parentHasBinding(id.name)) {
+ delete outsideRefs[id.name];
+ delete this.letReferences[id.name];
+
+ this.scope.rename(id.name);
+
+ this.letReferences[id.name] = id;
+ outsideRefs[id.name] = id;
+ }
+ }
+ }
+
+ // if we're inside of a for loop then we search to see if there are any
+ // `break`s, `continue`s, `return`s etc
+ this.has = this.checkLoop();
+
+ // hoist let references to retain scope
+ this.hoistVarDeclarations();
+
+ // turn outsideLetReferences into an array
+ var params = _lodashObjectValues2["default"](outsideRefs);
+ var args = _lodashObjectValues2["default"](outsideRefs);
+
+ // build the closure that we're going to wrap the block with
+ var fn = t.functionExpression(null, params, t.blockStatement(block.body));
+ fn.shadow = true;
+
+ // continuation
+ this.addContinuations(fn);
+
+ // replace the current block body with the one we're going to build
+ block.body = this.body;
+
+ var ref = fn;
+
+ if (this.loop) {
+ ref = this.scope.generateUidIdentifier("loop");
+ this.loopPath.insertBefore(t.variableDeclaration("var", [t.variableDeclarator(ref, fn)]));
+ }
+
+ // build a call and a unique id that we can assign the return value to
+ var call = t.callExpression(ref, args);
+ var ret = this.scope.generateUidIdentifier("ret");
+
+ // handle generators
+ var hasYield = _babelTraverse2["default"].hasType(fn.body, this.scope, "YieldExpression", t.FUNCTION_TYPES);
+ if (hasYield) {
+ fn.generator = true;
+ call = t.yieldExpression(call, true);
+ }
+
+ // handlers async functions
+ var hasAsync = _babelTraverse2["default"].hasType(fn.body, this.scope, "AwaitExpression", t.FUNCTION_TYPES);
+ if (hasAsync) {
+ fn.async = true;
+ call = t.awaitExpression(call);
+ }
+
+ this.buildClosure(ret, call);
+ };
+
+ /**
+ * Push the closure to the body.
+ */
+
+ BlockScoping.prototype.buildClosure = function buildClosure(ret, call) {
+ var has = this.has;
+ if (has.hasReturn || has.hasBreakContinue) {
+ this.buildHas(ret, call);
+ } else {
+ this.body.push(t.expressionStatement(call));
+ }
+ };
+
+ /**
+ * If any of the outer let variables are reassigned then we need to rename them in
+ * the closure so we can get direct access to the outer variable to continue the
+ * iteration with bindings based on each iteration.
+ *
+ * Reference: https://github.com/babel/babel/issues/1078
+ */
+
+ BlockScoping.prototype.addContinuations = function addContinuations(fn) {
+ var state = {
+ reassignments: {},
+ outsideReferences: this.outsideLetReferences
+ };
+
+ this.scope.traverse(fn, continuationVisitor, state);
+
+ for (var i = 0; i < fn.params.length; i++) {
+ var param = fn.params[i];
+ if (!state.reassignments[param.name]) continue;
+
+ var newParam = this.scope.generateUidIdentifier(param.name);
+ fn.params[i] = newParam;
+
+ this.scope.rename(param.name, newParam.name, fn);
+
+ // assign outer reference as it's been modified internally and needs to be retained
+ fn.body.body.push(t.expressionStatement(t.assignmentExpression("=", param, newParam)));
+ }
+ };
+
+ BlockScoping.prototype.getLetReferences = function getLetReferences() {
+ var block = this.block;
+
+ var declarators = [];
+
+ if (this.loop) {
+ var init = this.loop.left || this.loop.init;
+ if (isBlockScoped(init)) {
+ declarators.push(init);
+ _lodashObjectExtend2["default"](this.outsideLetReferences, t.getBindingIdentifiers(init));
+ }
+ }
+
+ //
+ if (block.body) {
+ for (var i = 0; i < block.body.length; i++) {
+ var declar = block.body[i];
+ if (t.isClassDeclaration(declar) || t.isFunctionDeclaration(declar) || isBlockScoped(declar)) {
+ var declarPath = this.blockPath.get("body")[i];
+ if (isBlockScoped(declar)) {
+ convertBlockScopedToVar(declarPath, block, this.scope);
+ }
+ declarators = declarators.concat(declar.declarations || declar);
+ }
+ }
+ }
+
+ //
+ for (var i = 0; i < declarators.length; i++) {
+ var declar = declarators[i];
+ var keys = t.getBindingIdentifiers(declar);
+ _lodashObjectExtend2["default"](this.letReferences, keys);
+ this.hasLetReferences = true;
+ }
+
+ // no let references so we can just quit
+ if (!this.hasLetReferences) return;
+
+ var state = {
+ letReferences: this.letReferences,
+ closurify: false,
+ file: this.file
+ };
+
+ // traverse through this block, stopping on functions and checking if they
+ // contain any local let references
+ this.blockPath.traverse(letReferenceBlockVisitor, state);
+
+ return state.closurify;
+ };
+
+ /**
+ * If we're inside of a loop then traverse it and check if it has one of
+ * the following node types `ReturnStatement`, `BreakStatement`,
+ * `ContinueStatement` and replace it with a return value that we can track
+ * later on.
+ */
+
+ BlockScoping.prototype.checkLoop = function checkLoop() {
+ var state = {
+ hasBreakContinue: false,
+ ignoreLabeless: false,
+ inSwitchCase: false,
+ innerLabels: [],
+ hasReturn: false,
+ isLoop: !!this.loop,
+ map: {},
+ LOOP_IGNORE: _Symbol()
+ };
+
+ this.blockPath.traverse(loopLabelVisitor, state);
+ this.blockPath.traverse(loopVisitor, state);
+
+ return state;
+ };
+
+ /**
+ * Hoist all let declarations in this block to before it so they retain scope
+ * once we wrap everything in a closure.
+ */
+
+ BlockScoping.prototype.hoistVarDeclarations = function hoistVarDeclarations() {
+ this.blockPath.traverse(hoistVarDeclarationsVisitor, this);
+ };
+
+ /**
+ * Turn a `VariableDeclaration` into an array of `AssignmentExpressions` with
+ * their declarations hoisted to before the closure wrapper.
+ */
+
+ BlockScoping.prototype.pushDeclar = function pushDeclar(node) {
+ var declars = [];
+ var names = t.getBindingIdentifiers(node);
+ for (var _name6 in names) {
+ declars.push(t.variableDeclarator(names[_name6]));
+ }
+
+ this.body.push(t.variableDeclaration(node.kind, declars));
+
+ var replace = [];
+
+ for (var i = 0; i < node.declarations.length; i++) {
+ var declar = node.declarations[i];
+ if (!declar.init) continue;
+
+ var expr = t.assignmentExpression("=", declar.id, declar.init);
+ replace.push(t.inherits(expr, declar));
+ }
+
+ return replace;
+ };
+
+ BlockScoping.prototype.buildHas = function buildHas(ret, call) {
+ var body = this.body;
+
+ body.push(t.variableDeclaration("var", [t.variableDeclarator(ret, call)]));
+
+ var retCheck = undefined;
+ var has = this.has;
+ var cases = [];
+
+ if (has.hasReturn) {
+ // typeof ret === "object"
+ retCheck = buildRetCheck({
+ RETURN: ret
+ });
+ }
+
+ if (has.hasBreakContinue) {
+ for (var key in has.map) {
+ cases.push(t.switchCase(t.stringLiteral(key), [has.map[key]]));
+ }
+
+ if (has.hasReturn) {
+ cases.push(t.switchCase(null, [retCheck]));
+ }
+
+ if (cases.length === 1) {
+ var single = cases[0];
+ body.push(t.ifStatement(t.binaryExpression("===", ret, single.test), single.consequent[0]));
+ } else {
+ // https://github.com/babel/babel/issues/998
+ for (var i = 0; i < cases.length; i++) {
+ var caseConsequent = cases[i].consequent[0];
+ if (t.isBreakStatement(caseConsequent) && !caseConsequent.label) {
+ caseConsequent.label = this.loopLabel = this.loopLabel || this.scope.generateUidIdentifier("loop");
+ }
+ }
+
+ body.push(t.switchStatement(ret, cases));
+ }
+ } else {
+ if (has.hasReturn) {
+ body.push(retCheck);
+ }
+ }
+ };
+
+ return BlockScoping;
+})();
+
+module.exports = exports["default"];
\ No newline at end of file
diff --git a/node_modules/babel-plugin-transform-es2015-block-scoping/lib/tdz.js b/node_modules/babel-plugin-transform-es2015-block-scoping/lib/tdz.js
new file mode 100644
index 0000000..1e3eab6
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-block-scoping/lib/tdz.js
@@ -0,0 +1,97 @@
+"use strict";
+
+var _interopRequireWildcard = require("babel-runtime/helpers/interop-require-wildcard")["default"];
+
+exports.__esModule = true;
+
+var _babelTypes = require("babel-types");
+
+var t = _interopRequireWildcard(_babelTypes);
+
+function getTDZStatus(refPath, bindingPath) {
+ var executionStatus = bindingPath._guessExecutionStatusRelativeTo(refPath);
+
+ if (executionStatus === "before") {
+ return "inside";
+ } else if (executionStatus === "after") {
+ return "outside";
+ } else {
+ return "maybe";
+ }
+}
+
+function buildTDZAssert(node, file) {
+ return t.callExpression(file.addHelper("temporalRef"), [node, t.stringLiteral(node.name), file.addHelper("temporalUndefined")]);
+}
+
+function isReference(node, scope, state) {
+ var declared = state.letReferences[node.name];
+ if (!declared) return false;
+
+ // declared node is different in this scope
+ return scope.getBindingIdentifier(node.name) === declared;
+}
+
+var visitor = {
+ ReferencedIdentifier: function ReferencedIdentifier(path, state) {
+ if (!this.file.opts.tdz) return;
+
+ var node = path.node;
+ var parent = path.parent;
+ var scope = path.scope;
+
+ if (path.parentPath.isFor({ left: node })) return;
+ if (!isReference(node, scope, state)) return;
+
+ var bindingPath = scope.getBinding(node.name).path;
+
+ var status = getTDZStatus(path, bindingPath);
+ if (status === "inside") return;
+
+ if (status === "maybe") {
+ var assert = buildTDZAssert(node, state.file);
+
+ // add tdzThis to parent variable declarator so it's exploded
+ bindingPath.parent._tdzThis = true;
+
+ path.skip();
+
+ if (path.parentPath.isUpdateExpression()) {
+ if (parent._ignoreBlockScopingTDZ) return;
+ path.parentPath.replaceWith(t.sequenceExpression([assert, parent]));
+ } else {
+ path.replaceWith(assert);
+ }
+ } else if (status === "outside") {
+ path.replaceWith(t.throwStatement(t.inherits(t.newExpression(t.identifier("ReferenceError"), [t.stringLiteral(node.name + " is not defined - temporal dead zone")]), node)));
+ }
+ },
+
+ AssignmentExpression: {
+ exit: function exit(path, state) {
+ if (!this.file.opts.tdz) return;
+
+ var node = path.node;
+
+ if (node._ignoreBlockScopingTDZ) return;
+
+ var nodes = [];
+ var ids = path.getBindingIdentifiers();
+
+ for (var _name in ids) {
+ var id = ids[_name];
+
+ if (isReference(id, path.scope, state)) {
+ nodes.push(buildTDZAssert(id, state.file));
+ }
+ }
+
+ if (nodes.length) {
+ node._ignoreBlockScopingTDZ = true;
+ nodes.push(node);
+ path.replaceWithMultiple(nodes.map(t.expressionStatement));
+ }
+ }
+ }
+};
+exports.visitor = visitor;
\ No newline at end of file
diff --git a/node_modules/babel-plugin-transform-es2015-block-scoping/package.json b/node_modules/babel-plugin-transform-es2015-block-scoping/package.json
new file mode 100644
index 0000000..422d0e9
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-block-scoping/package.json
@@ -0,0 +1,97 @@
+{
+ "_args": [
+ [
+ "babel-plugin-transform-es2015-block-scoping@^6.6.0",
+ "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-preset-es2015"
+ ]
+ ],
+ "_from": "babel-plugin-transform-es2015-block-scoping@>=6.6.0 <7.0.0",
+ "_id": "babel-plugin-transform-es2015-block-scoping@6.7.1",
+ "_inCache": true,
+ "_installable": true,
+ "_location": "/babel-plugin-transform-es2015-block-scoping",
+ "_nodeVersion": "5.5.0",
+ "_npmOperationalInternal": {
+ "host": "packages-13-west.internal.npmjs.com",
+ "tmp": "tmp/babel-plugin-transform-es2015-block-scoping-6.7.1.tgz_1457561030513_0.903439304092899"
+ },
+ "_npmUser": {
+ "email": "amjad.masad@gmail.com",
+ "name": "amasad"
+ },
+ "_npmVersion": "3.3.12",
+ "_phantomChildren": {},
+ "_requested": {
+ "name": "babel-plugin-transform-es2015-block-scoping",
+ "raw": "babel-plugin-transform-es2015-block-scoping@^6.6.0",
+ "rawSpec": "^6.6.0",
+ "scope": null,
+ "spec": ">=6.6.0 <7.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/babel-plugin-transform-regenerator",
+ "/babel-preset-es2015"
+ ],
+ "_resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.7.1.tgz",
+ "_shasum": "a5786b0671ceb6d48e44e74b45d00fce42922ba6",
+ "_shrinkwrap": null,
+ "_spec": "babel-plugin-transform-es2015-block-scoping@^6.6.0",
+ "_where": "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-preset-es2015",
+ "dependencies": {
+ "babel-runtime": "^5.0.0",
+ "babel-template": "^6.7.0",
+ "babel-traverse": "^6.7.0",
+ "babel-types": "^6.7.0",
+ "lodash": "^3.10.0"
+ },
+ "description": "Compile ES2015 block scoping (const and let) to ES5",
+ "devDependencies": {
+ "babel-helper-plugin-test-runner": "^6.3.13"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "a5786b0671ceb6d48e44e74b45d00fce42922ba6",
+ "tarball": "http://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.7.1.tgz"
+ },
+ "keywords": [
+ "babel-plugin"
+ ],
+ "license": "MIT",
+ "main": "lib/index.js",
+ "maintainers": [
+ {
+ "name": "amasad",
+ "email": "amjad.masad@gmail.com"
+ },
+ {
+ "name": "hzoo",
+ "email": "hi@henryzoo.com"
+ },
+ {
+ "name": "jmm",
+ "email": "npm-public@jessemccarthy.net"
+ },
+ {
+ "name": "loganfsmyth",
+ "email": "loganfsmyth@gmail.com"
+ },
+ {
+ "name": "sebmck",
+ "email": "sebmck@gmail.com"
+ },
+ {
+ "name": "thejameskyle",
+ "email": "me@thejameskyle.com"
+ }
+ ],
+ "name": "babel-plugin-transform-es2015-block-scoping",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel/tree/master/packages/babel-plugin-transform-es2015-block-scoping"
+ },
+ "scripts": {},
+ "version": "6.7.1"
+}
diff --git a/node_modules/babel-plugin-transform-es2015-classes/.npmignore b/node_modules/babel-plugin-transform-es2015-classes/.npmignore
new file mode 100644
index 0000000..3185290
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-classes/.npmignore
@@ -0,0 +1,4 @@
+node_modules
+*.log
+src
+test
diff --git a/node_modules/babel-plugin-transform-es2015-classes/README.md b/node_modules/babel-plugin-transform-es2015-classes/README.md
new file mode 100644
index 0000000..ab9f4ce
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-classes/README.md
@@ -0,0 +1,45 @@
+# babel-plugin-transform-es2015-classes
+
+Compile ES2015 classes to ES5
+
+## Installation
+
+```sh
+$ npm install babel-plugin-transform-es2015-classes
+```
+
+## Usage
+
+### Via `.babelrc` (Recommended)
+
+**.babelrc**
+
+```js
+// without options
+{
+ "plugins": ["transform-es2015-classes"]
+}
+
+// with options
+{
+ "plugins": [
+ ["transform-es2015-classes", {
+ "loose": true
+ }]
+ ]
+}
+```
+
+### Via CLI
+
+```sh
+$ babel --plugins transform-es2015-classes script.js
+```
+
+### Via Node API
+
+```javascript
+require("babel-core").transform("code", {
+ plugins: ["transform-es2015-classes"]
+});
+```
diff --git a/node_modules/babel-plugin-transform-es2015-classes/lib/index.js b/node_modules/babel-plugin-transform-es2015-classes/lib/index.js
new file mode 100644
index 0000000..380468e
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-classes/lib/index.js
@@ -0,0 +1,69 @@
+"use strict";
+
+var _Symbol = require("babel-runtime/core-js/symbol")["default"];
+
+var _interopRequireDefault = require("babel-runtime/helpers/interop-require-default")["default"];
+
+exports.__esModule = true;
+
+var _loose = require("./loose");
+
+var _loose2 = _interopRequireDefault(_loose);
+
+var _vanilla = require("./vanilla");
+
+var _vanilla2 = _interopRequireDefault(_vanilla);
+
+var _babelHelperFunctionName = require("babel-helper-function-name");
+
+var _babelHelperFunctionName2 = _interopRequireDefault(_babelHelperFunctionName);
+
+exports["default"] = function (_ref) {
+ var t = _ref.types;
+
+ // todo: investigate traversal requeueing
+ var VISITED = _Symbol();
+
+ return {
+ visitor: {
+ ExportDefaultDeclaration: function ExportDefaultDeclaration(path) {
+ if (!path.get("declaration").isClassDeclaration()) return;
+
+ var node = path.node;
+
+ var ref = node.declaration.id || path.scope.generateUidIdentifier("class");
+ node.declaration.id = ref;
+
+ // Split the class declaration and the export into two separate statements.
+ path.replaceWith(node.declaration);
+ path.insertAfter(t.exportDefaultDeclaration(ref));
+ },
+
+ ClassDeclaration: function ClassDeclaration(path) {
+ var node = path.node;
+
+ var ref = node.id || path.scope.generateUidIdentifier("class");
+
+ path.replaceWith(t.variableDeclaration("let", [t.variableDeclarator(ref, t.toExpression(node))]));
+ },
+
+ ClassExpression: function ClassExpression(path, state) {
+ var node = path.node;
+
+ if (node[VISITED]) return;
+
+ var inferred = _babelHelperFunctionName2["default"](path);
+ if (inferred && inferred !== node) return path.replaceWith(inferred);
+
+ node[VISITED] = true;
+
+ var Constructor = _vanilla2["default"];
+ if (state.opts.loose) Constructor = _loose2["default"];
+
+ path.replaceWith(new Constructor(path, state.file).run());
+ }
+ }
+ };
+};
+
+module.exports = exports["default"];
\ No newline at end of file
diff --git a/node_modules/babel-plugin-transform-es2015-classes/lib/lib/memoise-decorators.js b/node_modules/babel-plugin-transform-es2015-classes/lib/lib/memoise-decorators.js
new file mode 100644
index 0000000..ca5def0
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-classes/lib/lib/memoise-decorators.js
@@ -0,0 +1,41 @@
+"use strict";
+
+var _interopRequireWildcard = require("babel-runtime/helpers/interop-require-wildcard")["default"];
+
+exports.__esModule = true;
+
+var _babelTypes = require("babel-types");
+
+var t = _interopRequireWildcard(_babelTypes);
+
+exports["default"] = function (decorators, scope) {
+ for (var _i = 0; _i < decorators.length; _i++) {
+ var decorator = decorators[_i];
+ var expression = decorator.expression;
+ if (!t.isMemberExpression(expression)) continue;
+
+ var temp = scope.maybeGenerateMemoised(expression.object);
+ var ref = undefined;
+
+ var nodes = [];
+
+ if (temp) {
+ ref = temp;
+ nodes.push(t.assignmentExpression("=", temp, expression.object));
+ } else {
+ ref = expression.object;
+ }
+
+ nodes.push(t.callExpression(t.memberExpression(t.memberExpression(ref, expression.property, expression.computed), t.identifier("bind")), [ref]));
+
+ if (nodes.length === 1) {
+ decorator.expression = nodes[0];
+ } else {
+ decorator.expression = t.sequenceExpression(nodes);
+ }
+ }
+
+ return decorators;
+};
+
+module.exports = exports["default"];
\ No newline at end of file
diff --git a/node_modules/babel-plugin-transform-es2015-classes/lib/loose.js b/node_modules/babel-plugin-transform-es2015-classes/lib/loose.js
new file mode 100644
index 0000000..cefccfa
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-classes/lib/loose.js
@@ -0,0 +1,64 @@
+"use strict";
+
+var _inherits = require("babel-runtime/helpers/inherits")["default"];
+
+var _classCallCheck = require("babel-runtime/helpers/class-call-check")["default"];
+
+var _interopRequireDefault = require("babel-runtime/helpers/interop-require-default")["default"];
+
+var _interopRequireWildcard = require("babel-runtime/helpers/interop-require-wildcard")["default"];
+
+exports.__esModule = true;
+
+var _babelHelperFunctionName = require("babel-helper-function-name");
+
+var _babelHelperFunctionName2 = _interopRequireDefault(_babelHelperFunctionName);
+
+var _vanilla = require("./vanilla");
+
+var _vanilla2 = _interopRequireDefault(_vanilla);
+
+var _babelTypes = require("babel-types");
+
+var t = _interopRequireWildcard(_babelTypes);
+
+var LooseClassTransformer = (function (_VanillaTransformer) {
+ _inherits(LooseClassTransformer, _VanillaTransformer);
+
+ function LooseClassTransformer() {
+ _classCallCheck(this, LooseClassTransformer);
+
+ _VanillaTransformer.apply(this, arguments);
+ this.isLoose = true;
+ }
+
+ LooseClassTransformer.prototype._processMethod = function _processMethod(node, scope) {
+ if (!node.decorators) {
+ // use assignments instead of define properties for loose classes
+
+ var classRef = this.classRef;
+ if (!node["static"]) classRef = t.memberExpression(classRef, t.identifier("prototype"));
+ var methodName = t.memberExpression(classRef, node.key, node.computed || t.isLiteral(node.key));
+
+ var func = t.functionExpression(null, node.params, node.body, node.generator, node.async);
+ var key = t.toComputedKey(node, node.key);
+ if (t.isStringLiteral(key)) {
+ func = _babelHelperFunctionName2["default"]({
+ node: func,
+ id: key,
+ scope: scope
+ });
+ }
+
+ var expr = t.expressionStatement(t.assignmentExpression("=", methodName, func));
+ t.inheritsComments(expr, node);
+ this.body.push(expr);
+ return true;
+ }
+ };
+
+ return LooseClassTransformer;
+})(_vanilla2["default"]);
+
+exports["default"] = LooseClassTransformer;
+module.exports = exports["default"];
\ No newline at end of file
diff --git a/node_modules/babel-plugin-transform-es2015-classes/lib/vanilla.js b/node_modules/babel-plugin-transform-es2015-classes/lib/vanilla.js
new file mode 100644
index 0000000..5af7540
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-classes/lib/vanilla.js
@@ -0,0 +1,577 @@
+/* eslint max-len: 0 */
+
+"use strict";
+
+var _classCallCheck = require("babel-runtime/helpers/class-call-check")["default"];
+
+var _getIterator = require("babel-runtime/core-js/get-iterator")["default"];
+
+var _interopRequireDefault = require("babel-runtime/helpers/interop-require-default")["default"];
+
+var _interopRequireWildcard = require("babel-runtime/helpers/interop-require-wildcard")["default"];
+
+exports.__esModule = true;
+
+var _babelTraverse = require("babel-traverse");
+
+var _babelHelperReplaceSupers = require("babel-helper-replace-supers");
+
+var _babelHelperReplaceSupers2 = _interopRequireDefault(_babelHelperReplaceSupers);
+
+var _babelHelperOptimiseCallExpression = require("babel-helper-optimise-call-expression");
+
+var _babelHelperOptimiseCallExpression2 = _interopRequireDefault(_babelHelperOptimiseCallExpression);
+
+var _babelHelperDefineMap = require("babel-helper-define-map");
+
+var defineMap = _interopRequireWildcard(_babelHelperDefineMap);
+
+var _babelTemplate = require("babel-template");
+
+var _babelTemplate2 = _interopRequireDefault(_babelTemplate);
+
+var _babelTypes = require("babel-types");
+
+var t = _interopRequireWildcard(_babelTypes);
+
+var buildDerivedConstructor = _babelTemplate2["default"]("\n (function () {\n super(...arguments);\n })\n");
+
+var noMethodVisitor = {
+ "FunctionExpression|FunctionDeclaration": function FunctionExpressionFunctionDeclaration(path) {
+ if (!path.is("shadow")) {
+ path.skip();
+ }
+ },
+
+ Method: function Method(path) {
+ path.skip();
+ }
+};
+
+var verifyConstructorVisitor = _babelTraverse.visitors.merge([noMethodVisitor, {
+ Super: function Super(path) {
+ if (this.isDerived && !this.hasBareSuper && !path.parentPath.isCallExpression({ callee: path.node })) {
+ throw path.buildCodeFrameError("'super.*' is not allowed before super()");
+ }
+ },
+
+ CallExpression: {
+ exit: function exit(path) {
+ if (path.get("callee").isSuper()) {
+ this.hasBareSuper = true;
+
+ if (!this.isDerived) {
+ throw path.buildCodeFrameError("super() is only allowed in a derived constructor");
+ }
+ }
+ }
+ },
+
+ ThisExpression: function ThisExpression(path) {
+ if (this.isDerived && !this.hasBareSuper) {
+ if (!path.inShadow("this")) {
+ throw path.buildCodeFrameError("'this' is not allowed before super()");
+ }
+ }
+ }
+}]);
+
+var findThisesVisitor = _babelTraverse.visitors.merge([noMethodVisitor, {
+ ThisExpression: function ThisExpression(path) {
+ this.superThises.push(path);
+ }
+}]);
+
+var ClassTransformer = (function () {
+ function ClassTransformer(path, file) {
+ _classCallCheck(this, ClassTransformer);
+
+ this.parent = path.parent;
+ this.scope = path.scope;
+ this.node = path.node;
+ this.path = path;
+ this.file = file;
+
+ this.clearDescriptors();
+
+ this.instancePropBody = [];
+ this.instancePropRefs = {};
+ this.staticPropBody = [];
+ this.body = [];
+
+ this.bareSuperAfter = [];
+ this.bareSupers = [];
+
+ this.pushedConstructor = false;
+ this.pushedInherits = false;
+ this.isLoose = false;
+
+ this.superThises = [];
+
+ // class id
+ this.classId = this.node.id;
+
+ // this is the name of the binding that will **always** reference the class we've constructed
+ this.classRef = this.node.id || this.scope.generateUidIdentifier("class");
+
+ this.superName = this.node.superClass || t.identifier("Function");
+ this.isDerived = !!this.node.superClass;
+ }
+
+ ClassTransformer.prototype.run = function run() {
+ // istanbul ignore next
+
+ var _this = this;
+
+ var superName = this.superName;
+ var file = this.file;
+ var body = this.body;
+
+ //
+
+ var constructorBody = this.constructorBody = t.blockStatement([]);
+ this.constructor = this.buildConstructor();
+
+ //
+
+ var closureParams = [];
+ var closureArgs = [];
+
+ //
+ if (this.isDerived) {
+ closureArgs.push(superName);
+
+ superName = this.scope.generateUidIdentifierBasedOnNode(superName);
+ closureParams.push(superName);
+
+ this.superName = superName;
+ }
+
+ //
+ this.buildBody();
+
+ // make sure this class isn't directly called
+ constructorBody.body.unshift(t.expressionStatement(t.callExpression(file.addHelper("classCallCheck"), [t.thisExpression(), this.classRef])));
+
+ body = body.concat(this.staticPropBody.map(function (fn) {
+ return fn(_this.classRef);
+ }));
+
+ if (this.classId) {
+ // named class with only a constructor
+ if (body.length === 1) return t.toExpression(body[0]);
+ }
+
+ //
+ body.push(t.returnStatement(this.classRef));
+
+ var container = t.functionExpression(null, closureParams, t.blockStatement(body));
+ container.shadow = true;
+ return t.callExpression(container, closureArgs);
+ };
+
+ ClassTransformer.prototype.buildConstructor = function buildConstructor() {
+ var func = t.functionDeclaration(this.classRef, [], this.constructorBody);
+ t.inherits(func, this.node);
+ return func;
+ };
+
+ ClassTransformer.prototype.pushToMap = function pushToMap(node, enumerable, kind, scope) {
+ if (kind === undefined) kind = "value";
+
+ var mutatorMap = undefined;
+ if (node["static"]) {
+ this.hasStaticDescriptors = true;
+ mutatorMap = this.staticMutatorMap;
+ } else {
+ this.hasInstanceDescriptors = true;
+ mutatorMap = this.instanceMutatorMap;
+ }
+
+ var map = defineMap.push(mutatorMap, node, kind, this.file, scope);
+
+ if (enumerable) {
+ map.enumerable = t.booleanLiteral(true);
+ }
+
+ return map;
+ };
+
+ /**
+ * [Please add a description.]
+ * https://www.youtube.com/watch?v=fWNaR-rxAic
+ */
+
+ ClassTransformer.prototype.constructorMeMaybe = function constructorMeMaybe() {
+ var hasConstructor = false;
+ var paths = this.path.get("body.body");
+ var _arr = paths;
+ for (var _i = 0; _i < _arr.length; _i++) {
+ var path = _arr[_i];
+ hasConstructor = path.equals("kind", "constructor");
+ if (hasConstructor) break;
+ }
+ if (hasConstructor) return;
+
+ var params = undefined,
+ body = undefined;
+
+ if (this.isDerived) {
+ var _constructor = buildDerivedConstructor().expression;
+ params = _constructor.params;
+ body = _constructor.body;
+ } else {
+ params = [];
+ body = t.blockStatement([]);
+ }
+
+ this.path.get("body").unshiftContainer("body", t.classMethod("constructor", t.identifier("constructor"), params, body));
+ };
+
+ ClassTransformer.prototype.buildBody = function buildBody() {
+ this.constructorMeMaybe();
+ this.pushBody();
+ this.verifyConstructor();
+
+ if (this.userConstructor) {
+ var constructorBody = this.constructorBody;
+ constructorBody.body = constructorBody.body.concat(this.userConstructor.body.body);
+ t.inherits(this.constructor, this.userConstructor);
+ t.inherits(constructorBody, this.userConstructor.body);
+ }
+
+ this.pushDescriptors();
+ };
+
+ ClassTransformer.prototype.pushBody = function pushBody() {
+ var classBodyPaths = this.path.get("body.body");
+
+ for (var _i2 = 0; _i2 < classBodyPaths.length; _i2++) {
+ var path = classBodyPaths[_i2];
+ var node = path.node;
+
+ if (path.isClassProperty()) {
+ throw path.buildCodeFrameError("Missing class properties transform.");
+ }
+
+ if (node.decorators) {
+ throw path.buildCodeFrameError("Method has decorators, put the decorator plugin before the classes one.");
+ }
+
+ if (t.isClassMethod(node)) {
+ var isConstructor = node.kind === "constructor";
+
+ if (isConstructor) {
+ path.traverse(verifyConstructorVisitor, this);
+
+ if (!this.hasBareSuper && this.isDerived) {
+ throw path.buildCodeFrameError("missing super() call in constructor");
+ }
+ }
+
+ var replaceSupers = new _babelHelperReplaceSupers2["default"]({
+ forceSuperMemoisation: isConstructor,
+ methodPath: path,
+ methodNode: node,
+ objectRef: this.classRef,
+ superRef: this.superName,
+ isStatic: node["static"],
+ isLoose: this.isLoose,
+ scope: this.scope,
+ file: this.file
+ }, true);
+
+ replaceSupers.replace();
+
+ if (isConstructor) {
+ this.pushConstructor(replaceSupers, node, path);
+ } else {
+ this.pushMethod(node, path);
+ }
+ }
+ }
+ };
+
+ ClassTransformer.prototype.clearDescriptors = function clearDescriptors() {
+ this.hasInstanceDescriptors = false;
+ this.hasStaticDescriptors = false;
+
+ this.instanceMutatorMap = {};
+ this.staticMutatorMap = {};
+ };
+
+ ClassTransformer.prototype.pushDescriptors = function pushDescriptors() {
+ this.pushInherits();
+
+ var body = this.body;
+
+ var instanceProps = undefined;
+ var staticProps = undefined;
+
+ if (this.hasInstanceDescriptors) {
+ instanceProps = defineMap.toClassObject(this.instanceMutatorMap);
+ }
+
+ if (this.hasStaticDescriptors) {
+ staticProps = defineMap.toClassObject(this.staticMutatorMap);
+ }
+
+ if (instanceProps || staticProps) {
+ if (instanceProps) instanceProps = defineMap.toComputedObjectFromClass(instanceProps);
+ if (staticProps) staticProps = defineMap.toComputedObjectFromClass(staticProps);
+
+ var nullNode = t.nullLiteral();
+
+ // (Constructor, instanceDescriptors, staticDescriptors, instanceInitializers, staticInitializers)
+ var args = [this.classRef, nullNode, nullNode, nullNode, nullNode];
+
+ if (instanceProps) args[1] = instanceProps;
+ if (staticProps) args[2] = staticProps;
+
+ if (this.instanceInitializersId) {
+ args[3] = this.instanceInitializersId;
+ body.unshift(this.buildObjectAssignment(this.instanceInitializersId));
+ }
+
+ if (this.staticInitializersId) {
+ args[4] = this.staticInitializersId;
+ body.unshift(this.buildObjectAssignment(this.staticInitializersId));
+ }
+
+ var lastNonNullIndex = 0;
+ for (var i = 0; i < args.length; i++) {
+ if (args[i] !== nullNode) lastNonNullIndex = i;
+ }
+ args = args.slice(0, lastNonNullIndex + 1);
+
+ body.push(t.expressionStatement(t.callExpression(this.file.addHelper("createClass"), args)));
+ }
+
+ this.clearDescriptors();
+ };
+
+ ClassTransformer.prototype.buildObjectAssignment = function buildObjectAssignment(id) {
+ return t.variableDeclaration("var", [t.variableDeclarator(id, t.objectExpression([]))]);
+ };
+
+ ClassTransformer.prototype.wrapSuperCall = function wrapSuperCall(bareSuper, superRef, thisRef, body) {
+ var bareSuperNode = bareSuper.node;
+
+ if (this.isLoose) {
+ bareSuperNode.arguments.unshift(t.thisExpression());
+ if (bareSuperNode.arguments.length === 2 && t.isSpreadElement(bareSuperNode.arguments[1]) && t.isIdentifier(bareSuperNode.arguments[1].argument, { name: "arguments" })) {
+ // special case single arguments spread
+ bareSuperNode.arguments[1] = bareSuperNode.arguments[1].argument;
+ bareSuperNode.callee = t.memberExpression(superRef, t.identifier("apply"));
+ } else {
+ bareSuperNode.callee = t.memberExpression(superRef, t.identifier("call"));
+ }
+ } else {
+ bareSuperNode = _babelHelperOptimiseCallExpression2["default"](t.callExpression(t.memberExpression(t.identifier("Object"), t.identifier("getPrototypeOf")), [this.classRef]), t.thisExpression(), bareSuperNode.arguments);
+ }
+
+ var call = t.callExpression(this.file.addHelper("possibleConstructorReturn"), [t.thisExpression(), bareSuperNode]);
+
+ var bareSuperAfter = this.bareSuperAfter.map(function (fn) {
+ return fn(thisRef);
+ });
+
+ if (bareSuper.parentPath.isExpressionStatement() && bareSuper.parentPath.container === body.node.body && body.node.body.length - 1 === bareSuper.parentPath.key) {
+ // this super call is the last statement in the body so we can just straight up
+ // turn it into a return
+
+ if (this.superThises.length || bareSuperAfter.length) {
+ bareSuper.scope.push({ id: thisRef });
+ call = t.assignmentExpression("=", thisRef, call);
+ }
+
+ if (bareSuperAfter.length) {
+ call = t.toSequenceExpression([call].concat(bareSuperAfter, [thisRef]));
+ }
+
+ bareSuper.parentPath.replaceWith(t.returnStatement(call));
+ } else {
+ bareSuper.replaceWithMultiple([t.variableDeclaration("var", [t.variableDeclarator(thisRef, call)])].concat(bareSuperAfter, [t.expressionStatement(thisRef)]));
+ }
+ };
+
+ ClassTransformer.prototype.verifyConstructor = function verifyConstructor() {
+ // istanbul ignore next
+
+ var _this2 = this;
+
+ if (!this.isDerived) return;
+
+ var path = this.userConstructorPath;
+ var body = path.get("body");
+
+ path.traverse(findThisesVisitor, this);
+
+ var guaranteedSuperBeforeFinish = !!this.bareSupers.length;
+
+ var superRef = this.superName || t.identifier("Function");
+ var thisRef = path.scope.generateUidIdentifier("this");
+
+ for (var _iterator = this.bareSupers, _isArray = Array.isArray(_iterator), _i3 = 0, _iterator = _isArray ? _iterator : _getIterator(_iterator);;) {
+ var _ref;
+
+ if (_isArray) {
+ if (_i3 >= _iterator.length) break;
+ _ref = _iterator[_i3++];
+ } else {
+ _i3 = _iterator.next();
+ if (_i3.done) break;
+ _ref = _i3.value;
+ }
+
+ var bareSuper = _ref;
+
+ this.wrapSuperCall(bareSuper, superRef, thisRef, body);
+
+ if (guaranteedSuperBeforeFinish) {
+ bareSuper.find(function (parentPath) {
+ // hit top so short circuit
+ if (parentPath === path) {
+ return true;
+ }
+
+ if (parentPath.isLoop() || parentPath.isConditional()) {
+ guaranteedSuperBeforeFinish = false;
+ return true;
+ }
+ });
+ }
+ }
+
+ for (var _iterator2 = this.superThises, _isArray2 = Array.isArray(_iterator2), _i4 = 0, _iterator2 = _isArray2 ? _iterator2 : _getIterator(_iterator2);;) {
+ var _ref2;
+
+ if (_isArray2) {
+ if (_i4 >= _iterator2.length) break;
+ _ref2 = _iterator2[_i4++];
+ } else {
+ _i4 = _iterator2.next();
+ if (_i4.done) break;
+ _ref2 = _i4.value;
+ }
+
+ var thisPath = _ref2;
+
+ thisPath.replaceWith(thisRef);
+ }
+
+ var wrapReturn = function wrapReturn(returnArg) {
+ return t.callExpression(_this2.file.addHelper("possibleConstructorReturn"), [thisRef].concat(returnArg || []));
+ };
+
+ // if we have a return as the last node in the body then we've already caught that
+ // return
+ var bodyPaths = body.get("body");
+ if (bodyPaths.length && !bodyPaths.pop().isReturnStatement()) {
+ body.pushContainer("body", t.returnStatement(guaranteedSuperBeforeFinish ? thisRef : wrapReturn()));
+ }
+
+ for (var _iterator3 = this.superReturns, _isArray3 = Array.isArray(_iterator3), _i5 = 0, _iterator3 = _isArray3 ? _iterator3 : _getIterator(_iterator3);;) {
+ var _ref3;
+
+ if (_isArray3) {
+ if (_i5 >= _iterator3.length) break;
+ _ref3 = _iterator3[_i5++];
+ } else {
+ _i5 = _iterator3.next();
+ if (_i5.done) break;
+ _ref3 = _i5.value;
+ }
+
+ var returnPath = _ref3;
+
+ if (returnPath.node.argument) {
+ var ref = returnPath.scope.generateDeclaredUidIdentifier("ret");
+ returnPath.get("argument").replaceWithMultiple([t.assignmentExpression("=", ref, returnPath.node.argument), wrapReturn(ref)]);
+ } else {
+ returnPath.get("argument").replaceWith(wrapReturn());
+ }
+ }
+ };
+
+ /**
+ * Push a method to its respective mutatorMap.
+ */
+
+ ClassTransformer.prototype.pushMethod = function pushMethod(node, path) {
+ var scope = path ? path.scope : this.scope;
+
+ if (node.kind === "method") {
+ if (this._processMethod(node, scope)) return;
+ }
+
+ this.pushToMap(node, false, null, scope);
+ };
+
+ ClassTransformer.prototype._processMethod = function _processMethod() {
+ return false;
+ };
+
+ /**
+ * Replace the constructor body of our class.
+ */
+
+ ClassTransformer.prototype.pushConstructor = function pushConstructor(replaceSupers, method, path) {
+ this.bareSupers = replaceSupers.bareSupers;
+ this.superReturns = replaceSupers.returns;
+
+ // https://github.com/babel/babel/issues/1077
+ if (path.scope.hasOwnBinding(this.classRef.name)) {
+ path.scope.rename(this.classRef.name);
+ }
+
+ var construct = this.constructor;
+
+ this.userConstructorPath = path;
+ this.userConstructor = method;
+ this.hasConstructor = true;
+
+ t.inheritsComments(construct, method);
+
+ construct._ignoreUserWhitespace = true;
+ construct.params = method.params;
+
+ t.inherits(construct.body, method.body);
+ construct.body.directives = method.body.directives;
+
+ // push constructor to body
+ this._pushConstructor();
+ };
+
+ ClassTransformer.prototype._pushConstructor = function _pushConstructor() {
+ if (this.pushedConstructor) return;
+ this.pushedConstructor = true;
+
+ // we haven't pushed any descriptors yet
+ if (this.hasInstanceDescriptors || this.hasStaticDescriptors) {
+ this.pushDescriptors();
+ }
+
+ this.body.push(this.constructor);
+
+ this.pushInherits();
+ };
+
+ /**
+ * Push inherits helper to body.
+ */
+
+ ClassTransformer.prototype.pushInherits = function pushInherits() {
+ if (!this.isDerived || this.pushedInherits) return;
+
+ // Unshift to ensure that the constructor inheritance is set up before
+ // any properties can be assigned to the prototype.
+ this.pushedInherits = true;
+ this.body.unshift(t.expressionStatement(t.callExpression(this.file.addHelper("inherits"), [this.classRef, this.superName])));
+ };
+
+ return ClassTransformer;
+})();
+
+exports["default"] = ClassTransformer;
+module.exports = exports["default"];
\ No newline at end of file
diff --git a/node_modules/babel-plugin-transform-es2015-classes/package.json b/node_modules/babel-plugin-transform-es2015-classes/package.json
new file mode 100644
index 0000000..14bb24d
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-classes/package.json
@@ -0,0 +1,100 @@
+{
+ "_args": [
+ [
+ "babel-plugin-transform-es2015-classes@^6.6.0",
+ "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-preset-es2015"
+ ]
+ ],
+ "_from": "babel-plugin-transform-es2015-classes@>=6.6.0 <7.0.0",
+ "_id": "babel-plugin-transform-es2015-classes@6.6.5",
+ "_inCache": true,
+ "_installable": true,
+ "_location": "/babel-plugin-transform-es2015-classes",
+ "_nodeVersion": "5.1.0",
+ "_npmOperationalInternal": {
+ "host": "packages-12-west.internal.npmjs.com",
+ "tmp": "tmp/babel-plugin-transform-es2015-classes-6.6.5.tgz_1457133409293_0.15056378091685474"
+ },
+ "_npmUser": {
+ "email": "hi@henryzoo.com",
+ "name": "hzoo"
+ },
+ "_npmVersion": "3.6.0",
+ "_phantomChildren": {},
+ "_requested": {
+ "name": "babel-plugin-transform-es2015-classes",
+ "raw": "babel-plugin-transform-es2015-classes@^6.6.0",
+ "rawSpec": "^6.6.0",
+ "scope": null,
+ "spec": ">=6.6.0 <7.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/babel-preset-es2015"
+ ],
+ "_resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.6.5.tgz",
+ "_shasum": "b0273c58277c970d5d15517f61e45f731a65c61a",
+ "_shrinkwrap": null,
+ "_spec": "babel-plugin-transform-es2015-classes@^6.6.0",
+ "_where": "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-preset-es2015",
+ "dependencies": {
+ "babel-helper-define-map": "^6.6.5",
+ "babel-helper-function-name": "^6.6.0",
+ "babel-helper-optimise-call-expression": "^6.6.0",
+ "babel-helper-replace-supers": "^6.6.5",
+ "babel-messages": "^6.6.5",
+ "babel-runtime": "^5.0.0",
+ "babel-template": "^6.6.5",
+ "babel-traverse": "^6.6.5",
+ "babel-types": "^6.6.5"
+ },
+ "description": "Compile ES2015 classes to ES5",
+ "devDependencies": {
+ "babel-helper-plugin-test-runner": "^6.3.13"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "b0273c58277c970d5d15517f61e45f731a65c61a",
+ "tarball": "http://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.6.5.tgz"
+ },
+ "keywords": [
+ "babel-plugin"
+ ],
+ "license": "MIT",
+ "main": "lib/index.js",
+ "maintainers": [
+ {
+ "name": "amasad",
+ "email": "amjad.masad@gmail.com"
+ },
+ {
+ "name": "hzoo",
+ "email": "hi@henryzoo.com"
+ },
+ {
+ "name": "jmm",
+ "email": "npm-public@jessemccarthy.net"
+ },
+ {
+ "name": "loganfsmyth",
+ "email": "loganfsmyth@gmail.com"
+ },
+ {
+ "name": "sebmck",
+ "email": "sebmck@gmail.com"
+ },
+ {
+ "name": "thejameskyle",
+ "email": "me@thejameskyle.com"
+ }
+ ],
+ "name": "babel-plugin-transform-es2015-classes",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel/tree/master/packages/babel-plugin-transform-es2015-classes"
+ },
+ "scripts": {},
+ "version": "6.6.5"
+}
diff --git a/node_modules/babel-plugin-transform-es2015-computed-properties/.npmignore b/node_modules/babel-plugin-transform-es2015-computed-properties/.npmignore
new file mode 100644
index 0000000..3185290
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-computed-properties/.npmignore
@@ -0,0 +1,4 @@
+node_modules
+*.log
+src
+test
diff --git a/node_modules/babel-plugin-transform-es2015-computed-properties/README.md b/node_modules/babel-plugin-transform-es2015-computed-properties/README.md
new file mode 100644
index 0000000..1501ec5
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-computed-properties/README.md
@@ -0,0 +1,45 @@
+# babel-plugin-transform-es2015-computed-properties
+
+Compile ES2015 computed properties to ES5
+
+## Installation
+
+```sh
+$ npm install babel-plugin-transform-es2015-computed-properties
+```
+
+## Usage
+
+### Via `.babelrc` (Recommended)
+
+**.babelrc**
+
+```js
+// without options
+{
+ "plugins": ["transform-es2015-computed-properties"]
+}
+
+// with options
+{
+ "plugins": [
+ ["transform-es2015-computed-properties", {
+ "loose": true
+ }]
+ ]
+}
+```
+
+### Via CLI
+
+```sh
+$ babel --plugins transform-es2015-computed-properties script.js
+```
+
+### Via Node API
+
+```javascript
+require("babel-core").transform("code", {
+ plugins: ["transform-es2015-computed-properties"]
+});
+```
diff --git a/node_modules/babel-plugin-transform-es2015-computed-properties/lib/index.js b/node_modules/babel-plugin-transform-es2015-computed-properties/lib/index.js
new file mode 100644
index 0000000..52737d7
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-computed-properties/lib/index.js
@@ -0,0 +1,206 @@
+"use strict";
+
+var _getIterator = require("babel-runtime/core-js/get-iterator")["default"];
+
+exports.__esModule = true;
+
+exports["default"] = function (_ref4) {
+ var t = _ref4.types;
+ var template = _ref4.template;
+
+ var buildMutatorMapAssign = template("\n MUTATOR_MAP_REF[KEY] = MUTATOR_MAP_REF[KEY] || {};\n MUTATOR_MAP_REF[KEY].KIND = VALUE;\n ");
+
+ function getValue(prop) {
+ if (t.isObjectProperty(prop)) {
+ return prop.value;
+ } else if (t.isObjectMethod(prop)) {
+ return t.functionExpression(null, prop.params, prop.body, prop.generator, prop.async);
+ }
+ }
+
+ function pushAssign(objId, prop, body) {
+ if (prop.kind === "get" && prop.kind === "set") {
+ pushMutatorDefine(objId, prop, body);
+ } else {
+ body.push(t.expressionStatement(t.assignmentExpression("=", t.memberExpression(objId, prop.key, prop.computed || t.isLiteral(prop.key)), getValue(prop))));
+ }
+ }
+
+ function pushMutatorDefine(_ref5, prop) {
+ var objId = _ref5.objId;
+ var body = _ref5.body;
+ var getMutatorId = _ref5.getMutatorId;
+ var scope = _ref5.scope;
+
+ var key = !prop.computed && t.isIdentifier(prop.key) ? t.stringLiteral(prop.key.name) : prop.key;
+
+ var maybeMemoise = scope.maybeGenerateMemoised(key);
+ if (maybeMemoise) {
+ body.push(t.expressionStatement(t.assignmentExpression("=", maybeMemoise, key)));
+ key = maybeMemoise;
+ }
+
+ body.push.apply(body, buildMutatorMapAssign({
+ MUTATOR_MAP_REF: getMutatorId(),
+ KEY: key,
+ VALUE: getValue(prop),
+ KIND: t.identifier(prop.kind)
+ }));
+ }
+
+ function loose(info) {
+ for (var _iterator = info.computedProps, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _getIterator(_iterator);;) {
+ var _ref;
+
+ if (_isArray) {
+ if (_i >= _iterator.length) break;
+ _ref = _iterator[_i++];
+ } else {
+ _i = _iterator.next();
+ if (_i.done) break;
+ _ref = _i.value;
+ }
+
+ var prop = _ref;
+
+ if (prop.kind === "get" || prop.kind === "set") {
+ pushMutatorDefine(info, prop);
+ } else {
+ pushAssign(info.objId, prop, info.body);
+ }
+ }
+ }
+
+ function spec(info) {
+ var objId = info.objId;
+ var body = info.body;
+ var computedProps = info.computedProps;
+ var state = info.state;
+
+ for (var _iterator2 = computedProps, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _getIterator(_iterator2);;) {
+ var _ref2;
+
+ if (_isArray2) {
+ if (_i2 >= _iterator2.length) break;
+ _ref2 = _iterator2[_i2++];
+ } else {
+ _i2 = _iterator2.next();
+ if (_i2.done) break;
+ _ref2 = _i2.value;
+ }
+
+ var prop = _ref2;
+
+ var key = t.toComputedKey(prop);
+
+ if (prop.kind === "get" || prop.kind === "set") {
+ pushMutatorDefine(info, prop);
+ } else if (t.isStringLiteral(key, { value: "__proto__" })) {
+ pushAssign(objId, prop, body);
+ } else {
+ if (computedProps.length === 1) {
+ return t.callExpression(state.addHelper("defineProperty"), [info.initPropExpression, key, getValue(prop)]);
+ } else {
+ body.push(t.expressionStatement(t.callExpression(state.addHelper("defineProperty"), [objId, key, getValue(prop)])));
+ }
+ }
+ }
+ }
+
+ return {
+ visitor: {
+ ObjectExpression: {
+ exit: function exit(path, state) {
+ var node = path.node;
+ var parent = path.parent;
+ var scope = path.scope;
+
+ var hasComputed = false;
+ var _arr = node.properties;
+ for (var _i3 = 0; _i3 < _arr.length; _i3++) {
+ var prop = _arr[_i3];
+ hasComputed = prop.computed === true;
+ if (hasComputed) break;
+ }
+ if (!hasComputed) return;
+
+ // put all getters/setters into the first object expression as well as all initialisers up
+ // to the first computed property
+
+ var initProps = [];
+ var computedProps = [];
+ var foundComputed = false;
+
+ for (var _iterator3 = node.properties, _isArray3 = Array.isArray(_iterator3), _i4 = 0, _iterator3 = _isArray3 ? _iterator3 : _getIterator(_iterator3);;) {
+ var _ref3;
+
+ if (_isArray3) {
+ if (_i4 >= _iterator3.length) break;
+ _ref3 = _iterator3[_i4++];
+ } else {
+ _i4 = _iterator3.next();
+ if (_i4.done) break;
+ _ref3 = _i4.value;
+ }
+
+ var prop = _ref3;
+
+ if (prop.computed) {
+ foundComputed = true;
+ }
+
+ if (foundComputed) {
+ computedProps.push(prop);
+ } else {
+ initProps.push(prop);
+ }
+ }
+
+ var objId = scope.generateUidIdentifierBasedOnNode(parent);
+ var initPropExpression = t.objectExpression(initProps);
+ var body = [];
+
+ body.push(t.variableDeclaration("var", [t.variableDeclarator(objId, initPropExpression)]));
+
+ var callback = spec;
+ if (state.opts.loose) callback = loose;
+
+ var mutatorRef = undefined;
+
+ var getMutatorId = function getMutatorId() {
+ if (!mutatorRef) {
+ mutatorRef = scope.generateUidIdentifier("mutatorMap");
+
+ body.push(t.variableDeclaration("var", [t.variableDeclarator(mutatorRef, t.objectExpression([]))]));
+ }
+
+ return mutatorRef;
+ };
+
+ var single = callback({
+ scope: scope,
+ objId: objId,
+ body: body,
+ computedProps: computedProps,
+ initPropExpression: initPropExpression,
+ getMutatorId: getMutatorId,
+ state: state
+ });
+
+ if (mutatorRef) {
+ body.push(t.expressionStatement(t.callExpression(state.addHelper("defineEnumerableProperties"), [objId, mutatorRef])));
+ }
+
+ if (single) {
+ path.replaceWith(single);
+ } else {
+ body.push(t.expressionStatement(objId));
+ path.replaceWithMultiple(body);
+ }
+ }
+ }
+ }
+ };
+};
+
+module.exports = exports["default"];
\ No newline at end of file
diff --git a/node_modules/babel-plugin-transform-es2015-computed-properties/package.json b/node_modules/babel-plugin-transform-es2015-computed-properties/package.json
new file mode 100644
index 0000000..287c583
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-computed-properties/package.json
@@ -0,0 +1,94 @@
+{
+ "_args": [
+ [
+ "babel-plugin-transform-es2015-computed-properties@^6.3.13",
+ "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-preset-es2015"
+ ]
+ ],
+ "_from": "babel-plugin-transform-es2015-computed-properties@>=6.3.13 <7.0.0",
+ "_id": "babel-plugin-transform-es2015-computed-properties@6.6.5",
+ "_inCache": true,
+ "_installable": true,
+ "_location": "/babel-plugin-transform-es2015-computed-properties",
+ "_nodeVersion": "5.1.0",
+ "_npmOperationalInternal": {
+ "host": "packages-12-west.internal.npmjs.com",
+ "tmp": "tmp/babel-plugin-transform-es2015-computed-properties-6.6.5.tgz_1457133409723_0.3796667205169797"
+ },
+ "_npmUser": {
+ "email": "hi@henryzoo.com",
+ "name": "hzoo"
+ },
+ "_npmVersion": "3.6.0",
+ "_phantomChildren": {},
+ "_requested": {
+ "name": "babel-plugin-transform-es2015-computed-properties",
+ "raw": "babel-plugin-transform-es2015-computed-properties@^6.3.13",
+ "rawSpec": "^6.3.13",
+ "scope": null,
+ "spec": ">=6.3.13 <7.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/babel-preset-es2015"
+ ],
+ "_resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.6.5.tgz",
+ "_shasum": "cedf487857aa1ae25d5c1795402e78a45fd98a0f",
+ "_shrinkwrap": null,
+ "_spec": "babel-plugin-transform-es2015-computed-properties@^6.3.13",
+ "_where": "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-preset-es2015",
+ "dependencies": {
+ "babel-helper-define-map": "^6.6.5",
+ "babel-runtime": "^5.0.0",
+ "babel-template": "^6.6.5"
+ },
+ "description": "Compile ES2015 computed properties to ES5",
+ "devDependencies": {
+ "babel-helper-plugin-test-runner": "^6.3.13"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "cedf487857aa1ae25d5c1795402e78a45fd98a0f",
+ "tarball": "http://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.6.5.tgz"
+ },
+ "keywords": [
+ "babel-plugin"
+ ],
+ "license": "MIT",
+ "main": "lib/index.js",
+ "maintainers": [
+ {
+ "name": "amasad",
+ "email": "amjad.masad@gmail.com"
+ },
+ {
+ "name": "hzoo",
+ "email": "hi@henryzoo.com"
+ },
+ {
+ "name": "jmm",
+ "email": "npm-public@jessemccarthy.net"
+ },
+ {
+ "name": "loganfsmyth",
+ "email": "loganfsmyth@gmail.com"
+ },
+ {
+ "name": "sebmck",
+ "email": "sebmck@gmail.com"
+ },
+ {
+ "name": "thejameskyle",
+ "email": "me@thejameskyle.com"
+ }
+ ],
+ "name": "babel-plugin-transform-es2015-computed-properties",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel/tree/master/packages/babel-plugin-transform-es2015-computed-properties"
+ },
+ "scripts": {},
+ "version": "6.6.5"
+}
diff --git a/node_modules/babel-plugin-transform-es2015-destructuring/.npmignore b/node_modules/babel-plugin-transform-es2015-destructuring/.npmignore
new file mode 100644
index 0000000..3185290
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-destructuring/.npmignore
@@ -0,0 +1,4 @@
+node_modules
+*.log
+src
+test
diff --git a/node_modules/babel-plugin-transform-es2015-destructuring/README.md b/node_modules/babel-plugin-transform-es2015-destructuring/README.md
new file mode 100644
index 0000000..77e3e48
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-destructuring/README.md
@@ -0,0 +1,35 @@
+# babel-plugin-transform-es2015-destructuring
+
+Compile ES2015 destructuring to ES5
+
+## Installation
+
+```sh
+$ npm install babel-plugin-transform-es2015-destructuring
+```
+
+## Usage
+
+### Via `.babelrc` (Recommended)
+
+**.babelrc**
+
+```json
+{
+ "plugins": ["transform-es2015-destructuring"]
+}
+```
+
+### Via CLI
+
+```sh
+$ babel --plugins transform-es2015-destructuring script.js
+```
+
+### Via Node API
+
+```javascript
+require("babel-core").transform("code", {
+ plugins: ["transform-es2015-destructuring"]
+});
+```
diff --git a/node_modules/babel-plugin-transform-es2015-destructuring/lib/index.js b/node_modules/babel-plugin-transform-es2015-destructuring/lib/index.js
new file mode 100644
index 0000000..d8684af
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-destructuring/lib/index.js
@@ -0,0 +1,503 @@
+/* eslint max-len: 0 */
+
+"use strict";
+
+var _classCallCheck = require("babel-runtime/helpers/class-call-check")["default"];
+
+exports.__esModule = true;
+
+exports["default"] = function (_ref) {
+ var t = _ref.types;
+
+ /**
+ * Test if a VariableDeclaration's declarations contains any Patterns.
+ */
+
+ function variableDeclarationHasPattern(node) {
+ var _arr = node.declarations;
+
+ for (var _i = 0; _i < _arr.length; _i++) {
+ var declar = _arr[_i];
+ if (t.isPattern(declar.id)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Test if an ArrayPattern's elements contain any RestElements.
+ */
+
+ function hasRest(pattern) {
+ var _arr2 = pattern.elements;
+
+ for (var _i2 = 0; _i2 < _arr2.length; _i2++) {
+ var elem = _arr2[_i2];
+ if (t.isRestElement(elem)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ var arrayUnpackVisitor = {
+ ReferencedIdentifier: function ReferencedIdentifier(path, state) {
+ if (state.bindings[path.node.name]) {
+ state.deopt = true;
+ path.stop();
+ }
+ }
+ };
+
+ var DestructuringTransformer = (function () {
+ function DestructuringTransformer(opts) {
+ _classCallCheck(this, DestructuringTransformer);
+
+ this.blockHoist = opts.blockHoist;
+ this.operator = opts.operator;
+ this.arrays = {};
+ this.nodes = opts.nodes || [];
+ this.scope = opts.scope;
+ this.file = opts.file;
+ this.kind = opts.kind;
+ }
+
+ DestructuringTransformer.prototype.buildVariableAssignment = function buildVariableAssignment(id, init) {
+ var op = this.operator;
+ if (t.isMemberExpression(id)) op = "=";
+
+ var node = undefined;
+
+ if (op) {
+ node = t.expressionStatement(t.assignmentExpression(op, id, init));
+ } else {
+ node = t.variableDeclaration(this.kind, [t.variableDeclarator(id, init)]);
+ }
+
+ node._blockHoist = this.blockHoist;
+
+ return node;
+ };
+
+ DestructuringTransformer.prototype.buildVariableDeclaration = function buildVariableDeclaration(id, init) {
+ var declar = t.variableDeclaration("var", [t.variableDeclarator(id, init)]);
+ declar._blockHoist = this.blockHoist;
+ return declar;
+ };
+
+ DestructuringTransformer.prototype.push = function push(id, init) {
+ if (t.isObjectPattern(id)) {
+ this.pushObjectPattern(id, init);
+ } else if (t.isArrayPattern(id)) {
+ this.pushArrayPattern(id, init);
+ } else if (t.isAssignmentPattern(id)) {
+ this.pushAssignmentPattern(id, init);
+ } else {
+ this.nodes.push(this.buildVariableAssignment(id, init));
+ }
+ };
+
+ DestructuringTransformer.prototype.toArray = function toArray(node, count) {
+ if (this.file.opts.loose || t.isIdentifier(node) && this.arrays[node.name]) {
+ return node;
+ } else {
+ return this.scope.toArray(node, count);
+ }
+ };
+
+ DestructuringTransformer.prototype.pushAssignmentPattern = function pushAssignmentPattern(pattern, valueRef) {
+ // we need to assign the current value of the assignment to avoid evaluating
+ // it more than once
+
+ var tempValueRef = this.scope.generateUidIdentifierBasedOnNode(valueRef);
+
+ var declar = t.variableDeclaration("var", [t.variableDeclarator(tempValueRef, valueRef)]);
+ declar._blockHoist = this.blockHoist;
+ this.nodes.push(declar);
+
+ //
+
+ var tempConditional = t.conditionalExpression(t.binaryExpression("===", tempValueRef, t.identifier("undefined")), pattern.right, tempValueRef);
+
+ var left = pattern.left;
+ if (t.isPattern(left)) {
+ var tempValueDefault = t.expressionStatement(t.assignmentExpression("=", tempValueRef, tempConditional));
+ tempValueDefault._blockHoist = this.blockHoist;
+
+ this.nodes.push(tempValueDefault);
+ this.push(left, tempValueRef);
+ } else {
+ this.nodes.push(this.buildVariableAssignment(left, tempConditional));
+ }
+ };
+
+ DestructuringTransformer.prototype.pushObjectRest = function pushObjectRest(pattern, objRef, spreadProp, spreadPropIndex) {
+ // get all the keys that appear in this object before the current spread
+
+ var keys = [];
+
+ for (var i = 0; i < pattern.properties.length; i++) {
+ var prop = pattern.properties[i];
+
+ // we've exceeded the index of the spread property to all properties to the
+ // right need to be ignored
+ if (i >= spreadPropIndex) break;
+
+ // ignore other spread properties
+ if (t.isRestProperty(prop)) continue;
+
+ var key = prop.key;
+ if (t.isIdentifier(key) && !prop.computed) key = t.stringLiteral(prop.key.name);
+ keys.push(key);
+ }
+
+ keys = t.arrayExpression(keys);
+
+ //
+
+ var value = t.callExpression(this.file.addHelper("objectWithoutProperties"), [objRef, keys]);
+ this.nodes.push(this.buildVariableAssignment(spreadProp.argument, value));
+ };
+
+ DestructuringTransformer.prototype.pushObjectProperty = function pushObjectProperty(prop, propRef) {
+ if (t.isLiteral(prop.key)) prop.computed = true;
+
+ var pattern = prop.value;
+ var objRef = t.memberExpression(propRef, prop.key, prop.computed);
+
+ if (t.isPattern(pattern)) {
+ this.push(pattern, objRef);
+ } else {
+ this.nodes.push(this.buildVariableAssignment(pattern, objRef));
+ }
+ };
+
+ DestructuringTransformer.prototype.pushObjectPattern = function pushObjectPattern(pattern, objRef) {
+ // https://github.com/babel/babel/issues/681
+
+ if (!pattern.properties.length) {
+ this.nodes.push(t.expressionStatement(t.callExpression(this.file.addHelper("objectDestructuringEmpty"), [objRef])));
+ }
+
+ // if we have more than one properties in this pattern and the objectRef is a
+ // member expression then we need to assign it to a temporary variable so it's
+ // only evaluated once
+
+ if (pattern.properties.length > 1 && !this.scope.isStatic(objRef)) {
+ var temp = this.scope.generateUidIdentifierBasedOnNode(objRef);
+ this.nodes.push(this.buildVariableDeclaration(temp, objRef));
+ objRef = temp;
+ }
+
+ //
+
+ for (var i = 0; i < pattern.properties.length; i++) {
+ var prop = pattern.properties[i];
+ if (t.isRestProperty(prop)) {
+ this.pushObjectRest(pattern, objRef, prop, i);
+ } else {
+ this.pushObjectProperty(prop, objRef);
+ }
+ }
+ };
+
+ DestructuringTransformer.prototype.canUnpackArrayPattern = function canUnpackArrayPattern(pattern, arr) {
+ // not an array so there's no way we can deal with this
+ if (!t.isArrayExpression(arr)) return false;
+
+ // pattern has less elements than the array and doesn't have a rest so some
+ // elements wont be evaluated
+ if (pattern.elements.length > arr.elements.length) return;
+ if (pattern.elements.length < arr.elements.length && !hasRest(pattern)) return false;
+
+ var _arr3 = pattern.elements;
+ for (var _i3 = 0; _i3 < _arr3.length; _i3++) {
+ var elem = _arr3[_i3];
+ // deopt on holes
+ if (!elem) return false;
+
+ // deopt on member expressions as they may be included in the RHS
+ if (t.isMemberExpression(elem)) return false;
+ }
+
+ var _arr4 = arr.elements;
+ for (var _i4 = 0; _i4 < _arr4.length; _i4++) {
+ var elem = _arr4[_i4];
+ // deopt on spread elements
+ if (t.isSpreadElement(elem)) return false;
+ }
+
+ // deopt on reference to left side identifiers
+ var bindings = t.getBindingIdentifiers(pattern);
+ var state = { deopt: false, bindings: bindings };
+ this.scope.traverse(arr, arrayUnpackVisitor, state);
+ return !state.deopt;
+ };
+
+ DestructuringTransformer.prototype.pushUnpackedArrayPattern = function pushUnpackedArrayPattern(pattern, arr) {
+ for (var i = 0; i < pattern.elements.length; i++) {
+ var elem = pattern.elements[i];
+ if (t.isRestElement(elem)) {
+ this.push(elem.argument, t.arrayExpression(arr.elements.slice(i)));
+ } else {
+ this.push(elem, arr.elements[i]);
+ }
+ }
+ };
+
+ DestructuringTransformer.prototype.pushArrayPattern = function pushArrayPattern(pattern, arrayRef) {
+ if (!pattern.elements) return;
+
+ // optimise basic array destructuring of an array expression
+ //
+ // we can't do this to a pattern of unequal size to it's right hand
+ // array expression as then there will be values that wont be evaluated
+ //
+ // eg: let [a, b] = [1, 2];
+
+ if (this.canUnpackArrayPattern(pattern, arrayRef)) {
+ return this.pushUnpackedArrayPattern(pattern, arrayRef);
+ }
+
+ // if we have a rest then we need all the elements so don't tell
+ // `scope.toArray` to only get a certain amount
+
+ var count = !hasRest(pattern) && pattern.elements.length;
+
+ // so we need to ensure that the `arrayRef` is an array, `scope.toArray` will
+ // return a locally bound identifier if it's been inferred to be an array,
+ // otherwise it'll be a call to a helper that will ensure it's one
+
+ var toArray = this.toArray(arrayRef, count);
+
+ if (t.isIdentifier(toArray)) {
+ // we've been given an identifier so it must have been inferred to be an
+ // array
+ arrayRef = toArray;
+ } else {
+ arrayRef = this.scope.generateUidIdentifierBasedOnNode(arrayRef);
+ this.arrays[arrayRef.name] = true;
+ this.nodes.push(this.buildVariableDeclaration(arrayRef, toArray));
+ }
+
+ //
+
+ for (var i = 0; i < pattern.elements.length; i++) {
+ var elem = pattern.elements[i];
+
+ // hole
+ if (!elem) continue;
+
+ var elemRef = undefined;
+
+ if (t.isRestElement(elem)) {
+ elemRef = this.toArray(arrayRef);
+
+ if (i > 0) {
+ elemRef = t.callExpression(t.memberExpression(elemRef, t.identifier("slice")), [t.numericLiteral(i)]);
+ }
+
+ // set the element to the rest element argument since we've dealt with it
+ // being a rest already
+ elem = elem.argument;
+ } else {
+ elemRef = t.memberExpression(arrayRef, t.numericLiteral(i), true);
+ }
+
+ this.push(elem, elemRef);
+ }
+ };
+
+ DestructuringTransformer.prototype.init = function init(pattern, ref) {
+ // trying to destructure a value that we can't evaluate more than once so we
+ // need to save it to a variable
+
+ if (!t.isArrayExpression(ref) && !t.isMemberExpression(ref)) {
+ var memo = this.scope.maybeGenerateMemoised(ref, true);
+ if (memo) {
+ this.nodes.push(this.buildVariableDeclaration(memo, ref));
+ ref = memo;
+ }
+ }
+
+ //
+
+ this.push(pattern, ref);
+
+ return this.nodes;
+ };
+
+ return DestructuringTransformer;
+ })();
+
+ return {
+ visitor: {
+ ExportNamedDeclaration: function ExportNamedDeclaration(path) {
+ var declaration = path.get("declaration");
+ if (!declaration.isVariableDeclaration()) return;
+ if (!variableDeclarationHasPattern(declaration.node)) return;
+
+ var specifiers = [];
+
+ for (var _name in path.getOuterBindingIdentifiers(path)) {
+ var id = t.identifier(_name);
+ specifiers.push(t.exportSpecifier(id, id));
+ }
+
+ // Split the declaration and export list into two declarations so that the variable
+ // declaration can be split up later without needing to worry about not being a
+ // top-level statement.
+ path.replaceWith(declaration.node);
+ path.insertAfter(t.exportNamedDeclaration(null, specifiers));
+ },
+
+ ForXStatement: function ForXStatement(path, file) {
+ var node = path.node;
+ var scope = path.scope;
+
+ var left = node.left;
+
+ if (t.isPattern(left)) {
+ // for ({ length: k } in { abc: 3 });
+
+ var temp = scope.generateUidIdentifier("ref");
+
+ node.left = t.variableDeclaration("var", [t.variableDeclarator(temp)]);
+
+ path.ensureBlock();
+
+ node.body.body.unshift(t.variableDeclaration("var", [t.variableDeclarator(left, temp)]));
+
+ return;
+ }
+
+ if (!t.isVariableDeclaration(left)) return;
+
+ var pattern = left.declarations[0].id;
+ if (!t.isPattern(pattern)) return;
+
+ var key = scope.generateUidIdentifier("ref");
+ node.left = t.variableDeclaration(left.kind, [t.variableDeclarator(key, null)]);
+
+ var nodes = [];
+
+ var destructuring = new DestructuringTransformer({
+ kind: left.kind,
+ file: file,
+ scope: scope,
+ nodes: nodes
+ });
+
+ destructuring.init(pattern, key);
+
+ path.ensureBlock();
+
+ var block = node.body;
+ block.body = nodes.concat(block.body);
+ },
+
+ CatchClause: function CatchClause(_ref2, file) {
+ var node = _ref2.node;
+ var scope = _ref2.scope;
+
+ var pattern = node.param;
+ if (!t.isPattern(pattern)) return;
+
+ var ref = scope.generateUidIdentifier("ref");
+ node.param = ref;
+
+ var nodes = [];
+
+ var destructuring = new DestructuringTransformer({
+ kind: "let",
+ file: file,
+ scope: scope,
+ nodes: nodes
+ });
+ destructuring.init(pattern, ref);
+
+ node.body.body = nodes.concat(node.body.body);
+ },
+
+ AssignmentExpression: function AssignmentExpression(path, file) {
+ var node = path.node;
+ var scope = path.scope;
+
+ if (!t.isPattern(node.left)) return;
+
+ var nodes = [];
+
+ var destructuring = new DestructuringTransformer({
+ operator: node.operator,
+ file: file,
+ scope: scope,
+ nodes: nodes
+ });
+
+ var ref = undefined;
+ if (path.isCompletionRecord() || !path.parentPath.isExpressionStatement()) {
+ ref = scope.generateUidIdentifierBasedOnNode(node.right, "ref");
+
+ nodes.push(t.variableDeclaration("var", [t.variableDeclarator(ref, node.right)]));
+
+ if (t.isArrayExpression(node.right)) {
+ destructuring.arrays[ref.name] = true;
+ }
+ }
+
+ destructuring.init(node.left, ref || node.right);
+
+ if (ref) {
+ nodes.push(t.expressionStatement(ref));
+ }
+
+ path.replaceWithMultiple(nodes);
+ },
+
+ VariableDeclaration: function VariableDeclaration(path, file) {
+ var node = path.node;
+ var scope = path.scope;
+ var parent = path.parent;
+
+ if (t.isForXStatement(parent)) return;
+ if (!parent || !path.container) return; // i don't know why this is necessary - TODO
+ if (!variableDeclarationHasPattern(node)) return;
+
+ var nodes = [];
+ var declar = undefined;
+
+ for (var i = 0; i < node.declarations.length; i++) {
+ declar = node.declarations[i];
+
+ var patternId = declar.init;
+ var pattern = declar.id;
+
+ var destructuring = new DestructuringTransformer({
+ blockHoist: node._blockHoist,
+ nodes: nodes,
+ scope: scope,
+ kind: node.kind,
+ file: file
+ });
+
+ if (t.isPattern(pattern)) {
+ destructuring.init(pattern, patternId);
+
+ if (+i !== node.declarations.length - 1) {
+ // we aren't the last declarator so let's just make the
+ // last transformed node inherit from us
+ t.inherits(nodes[nodes.length - 1], declar);
+ }
+ } else {
+ nodes.push(t.inherits(destructuring.buildVariableAssignment(declar.id, declar.init), declar));
+ }
+ }
+
+ path.replaceWithMultiple(nodes);
+ }
+ }
+ };
+};
+
+module.exports = exports["default"];
\ No newline at end of file
diff --git a/node_modules/babel-plugin-transform-es2015-destructuring/package.json b/node_modules/babel-plugin-transform-es2015-destructuring/package.json
new file mode 100644
index 0000000..8bcf3b2
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-destructuring/package.json
@@ -0,0 +1,92 @@
+{
+ "_args": [
+ [
+ "babel-plugin-transform-es2015-destructuring@^6.6.0",
+ "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-preset-es2015"
+ ]
+ ],
+ "_from": "babel-plugin-transform-es2015-destructuring@>=6.6.0 <7.0.0",
+ "_id": "babel-plugin-transform-es2015-destructuring@6.6.5",
+ "_inCache": true,
+ "_installable": true,
+ "_location": "/babel-plugin-transform-es2015-destructuring",
+ "_nodeVersion": "5.1.0",
+ "_npmOperationalInternal": {
+ "host": "packages-13-west.internal.npmjs.com",
+ "tmp": "tmp/babel-plugin-transform-es2015-destructuring-6.6.5.tgz_1457133410610_0.053517414489760995"
+ },
+ "_npmUser": {
+ "email": "hi@henryzoo.com",
+ "name": "hzoo"
+ },
+ "_npmVersion": "3.6.0",
+ "_phantomChildren": {},
+ "_requested": {
+ "name": "babel-plugin-transform-es2015-destructuring",
+ "raw": "babel-plugin-transform-es2015-destructuring@^6.6.0",
+ "rawSpec": "^6.6.0",
+ "scope": null,
+ "spec": ">=6.6.0 <7.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/babel-preset-es2015"
+ ],
+ "_resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.6.5.tgz",
+ "_shasum": "6ccb14e245f80a015ee219b0143cf1df59ecd223",
+ "_shrinkwrap": null,
+ "_spec": "babel-plugin-transform-es2015-destructuring@^6.6.0",
+ "_where": "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-preset-es2015",
+ "dependencies": {
+ "babel-runtime": "^5.0.0"
+ },
+ "description": "Compile ES2015 destructuring to ES5",
+ "devDependencies": {
+ "babel-helper-plugin-test-runner": "^6.3.13"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "6ccb14e245f80a015ee219b0143cf1df59ecd223",
+ "tarball": "http://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.6.5.tgz"
+ },
+ "keywords": [
+ "babel-plugin"
+ ],
+ "license": "MIT",
+ "main": "lib/index.js",
+ "maintainers": [
+ {
+ "name": "amasad",
+ "email": "amjad.masad@gmail.com"
+ },
+ {
+ "name": "hzoo",
+ "email": "hi@henryzoo.com"
+ },
+ {
+ "name": "jmm",
+ "email": "npm-public@jessemccarthy.net"
+ },
+ {
+ "name": "loganfsmyth",
+ "email": "loganfsmyth@gmail.com"
+ },
+ {
+ "name": "sebmck",
+ "email": "sebmck@gmail.com"
+ },
+ {
+ "name": "thejameskyle",
+ "email": "me@thejameskyle.com"
+ }
+ ],
+ "name": "babel-plugin-transform-es2015-destructuring",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel/tree/master/packages/babel-plugin-transform-es2015-destructuring"
+ },
+ "scripts": {},
+ "version": "6.6.5"
+}
diff --git a/node_modules/babel-plugin-transform-es2015-duplicate-keys/.npmignore b/node_modules/babel-plugin-transform-es2015-duplicate-keys/.npmignore
new file mode 100644
index 0000000..246c4aa
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-duplicate-keys/.npmignore
@@ -0,0 +1,3 @@
+node_modules
+src
+test
diff --git a/node_modules/babel-plugin-transform-es2015-duplicate-keys/README.md b/node_modules/babel-plugin-transform-es2015-duplicate-keys/README.md
new file mode 100644
index 0000000..0e5c9e8
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-duplicate-keys/README.md
@@ -0,0 +1,40 @@
+# babel-plugin-transform-es2015-duplicate-keys
+
+Compile objects with duplicate keys to valid strict ES5.
+
+This plugin actually converts duplicate keys in objects to be computed
+properties, which then must be handled by the
+transform-es2015-computed-properties plugin. The final result won't contain any
+object literals with duplicate keys.
+
+## Installation
+
+```sh
+$ npm install babel-plugin-transform-es2015-duplicate-keys
+```
+
+## Usage
+
+### Via `.babelrc` (Recommended)
+
+**.babelrc**
+
+```json
+{
+ "plugins": ["transform-es2015-duplicate-keys"]
+}
+```
+
+### Via CLI
+
+```sh
+$ babel --plugins transform-es2015-duplicate-keys script.js
+```
+
+### Via Node API
+
+```javascript
+require("babel-core").transform("code", {
+ plugins: ["transform-es2015-duplicate-keys"]
+});
+```
diff --git a/node_modules/babel-plugin-transform-es2015-duplicate-keys/lib/index.js b/node_modules/babel-plugin-transform-es2015-duplicate-keys/lib/index.js
new file mode 100644
index 0000000..741512c
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-duplicate-keys/lib/index.js
@@ -0,0 +1,92 @@
+"use strict";
+
+var _Object$create = require("babel-runtime/core-js/object/create")["default"];
+
+var _getIterator = require("babel-runtime/core-js/get-iterator")["default"];
+
+var _interopRequireWildcard = require("babel-runtime/helpers/interop-require-wildcard")["default"];
+
+exports.__esModule = true;
+
+var _babelTypes = require("babel-types");
+
+var t = _interopRequireWildcard(_babelTypes);
+
+function getName(key) {
+ if (t.isIdentifier(key)) {
+ return key.name;
+ }
+ return key.value.toString();
+}
+
+exports["default"] = function () {
+ return {
+ visitor: {
+ ObjectExpression: function ObjectExpression(path) {
+ var node = path.node;
+
+ var plainProps = node.properties.filter(function (prop) {
+ return !t.isSpreadProperty(prop) && !prop.computed;
+ });
+
+ // A property is a duplicate key if:
+ // * the property is a data property, and is preceeded by a data,
+ // getter, or setter property of the same name.
+ // * the property is a getter property, and is preceeded by a data or
+ // getter property of the same name.
+ // * the property is a setter property, and is preceeded by a data or
+ // setter property of the same name.
+
+ var alreadySeenData = _Object$create(null);
+ var alreadySeenGetters = _Object$create(null);
+ var alreadySeenSetters = _Object$create(null);
+
+ for (var _iterator = plainProps, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _getIterator(_iterator);;) {
+ var _ref;
+
+ if (_isArray) {
+ if (_i >= _iterator.length) break;
+ _ref = _iterator[_i++];
+ } else {
+ _i = _iterator.next();
+ if (_i.done) break;
+ _ref = _i.value;
+ }
+
+ var prop = _ref;
+
+ var _name = getName(prop.key);
+ var isDuplicate = false;
+ switch (prop.kind) {
+ case "get":
+ if (alreadySeenData[_name] || alreadySeenGetters[_name]) {
+ isDuplicate = true;
+ }
+ alreadySeenGetters[_name] = true;
+ break;
+ case "set":
+ if (alreadySeenData[_name] || alreadySeenSetters[_name]) {
+ isDuplicate = true;
+ }
+ alreadySeenSetters[_name] = true;
+ break;
+ default:
+ if (alreadySeenData[_name] || alreadySeenGetters[_name] || alreadySeenSetters[_name]) {
+ isDuplicate = true;
+ }
+ alreadySeenData[_name] = true;
+ }
+
+ if (isDuplicate) {
+ // Rely on the computed properties transform to split the property
+ // assignment out of the object literal.
+ prop.computed = true;
+ prop.key = t.stringLiteral(_name);
+ }
+ }
+ }
+ }
+ };
+};
+
+module.exports = exports["default"];
\ No newline at end of file
diff --git a/node_modules/babel-plugin-transform-es2015-duplicate-keys/package.json b/node_modules/babel-plugin-transform-es2015-duplicate-keys/package.json
new file mode 100644
index 0000000..a09e917
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-duplicate-keys/package.json
@@ -0,0 +1,93 @@
+{
+ "_args": [
+ [
+ "babel-plugin-transform-es2015-duplicate-keys@^6.6.0",
+ "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-preset-es2015"
+ ]
+ ],
+ "_from": "babel-plugin-transform-es2015-duplicate-keys@>=6.6.0 <7.0.0",
+ "_id": "babel-plugin-transform-es2015-duplicate-keys@6.6.4",
+ "_inCache": true,
+ "_installable": true,
+ "_location": "/babel-plugin-transform-es2015-duplicate-keys",
+ "_nodeVersion": "5.1.0",
+ "_npmOperationalInternal": {
+ "host": "packages-12-west.internal.npmjs.com",
+ "tmp": "tmp/babel-plugin-transform-es2015-duplicate-keys-6.6.4.tgz_1456954183109_0.42977921618148685"
+ },
+ "_npmUser": {
+ "email": "hi@henryzoo.com",
+ "name": "hzoo"
+ },
+ "_npmVersion": "3.6.0",
+ "_phantomChildren": {},
+ "_requested": {
+ "name": "babel-plugin-transform-es2015-duplicate-keys",
+ "raw": "babel-plugin-transform-es2015-duplicate-keys@^6.6.0",
+ "rawSpec": "^6.6.0",
+ "scope": null,
+ "spec": ">=6.6.0 <7.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/babel-preset-es2015"
+ ],
+ "_resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.6.4.tgz",
+ "_shasum": "90a332b9441633431d871df693f188875cfc5065",
+ "_shrinkwrap": null,
+ "_spec": "babel-plugin-transform-es2015-duplicate-keys@^6.6.0",
+ "_where": "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-preset-es2015",
+ "dependencies": {
+ "babel-runtime": "^5.0.0",
+ "babel-types": "^6.6.4"
+ },
+ "description": "Compile objects with duplicate keys to valid strict ES5",
+ "devDependencies": {
+ "babel-helper-plugin-test-runner": "^6.3.13"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "90a332b9441633431d871df693f188875cfc5065",
+ "tarball": "http://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.6.4.tgz"
+ },
+ "keywords": [
+ "babel-plugin"
+ ],
+ "license": "MIT",
+ "main": "lib/index.js",
+ "maintainers": [
+ {
+ "name": "amasad",
+ "email": "amjad.masad@gmail.com"
+ },
+ {
+ "name": "hzoo",
+ "email": "hi@henryzoo.com"
+ },
+ {
+ "name": "jmm",
+ "email": "npm-public@jessemccarthy.net"
+ },
+ {
+ "name": "loganfsmyth",
+ "email": "loganfsmyth@gmail.com"
+ },
+ {
+ "name": "sebmck",
+ "email": "sebmck@gmail.com"
+ },
+ {
+ "name": "thejameskyle",
+ "email": "me@thejameskyle.com"
+ }
+ ],
+ "name": "babel-plugin-transform-es2015-duplicate-keys",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel/tree/master/packages/babel-plugin-transform-es2015-duplicate-keys"
+ },
+ "scripts": {},
+ "version": "6.6.4"
+}
diff --git a/node_modules/babel-plugin-transform-es2015-for-of/.npmignore b/node_modules/babel-plugin-transform-es2015-for-of/.npmignore
new file mode 100644
index 0000000..3185290
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-for-of/.npmignore
@@ -0,0 +1,4 @@
+node_modules
+*.log
+src
+test
diff --git a/node_modules/babel-plugin-transform-es2015-for-of/README.md b/node_modules/babel-plugin-transform-es2015-for-of/README.md
new file mode 100644
index 0000000..ec5840f
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-for-of/README.md
@@ -0,0 +1,45 @@
+# babel-plugin-transform-es2015-for-of
+
+Compile ES2015 for...of to ES5
+
+## Installation
+
+```sh
+$ npm install babel-plugin-transform-es2015-for-of
+```
+
+## Usage
+
+### Via `.babelrc` (Recommended)
+
+**.babelrc**
+
+```js
+// without options
+{
+ "plugins": ["transform-es2015-for-of"]
+}
+
+// with options
+{
+ "plugins": [
+ ["transform-es2015-for-of", {
+ "loose": true
+ }]
+ ]
+}
+```
+
+### Via CLI
+
+```sh
+$ babel --plugins transform-es2015-for-of script.js
+```
+
+### Via Node API
+
+```javascript
+require("babel-core").transform("code", {
+ plugins: ["transform-es2015-for-of"]
+});
+```
diff --git a/node_modules/babel-plugin-transform-es2015-for-of/lib/index.js b/node_modules/babel-plugin-transform-es2015-for-of/lib/index.js
new file mode 100644
index 0000000..e6a2731
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-for-of/lib/index.js
@@ -0,0 +1,202 @@
+/* eslint max-len: 0 */
+
+"use strict";
+
+exports.__esModule = true;
+
+exports["default"] = function (_ref) {
+ var messages = _ref.messages;
+ var template = _ref.template;
+ var t = _ref.types;
+
+ var buildForOfArray = template("\n for (var KEY = 0; KEY < ARR.length; KEY++) BODY;\n ");
+
+ var buildForOfLoose = template("\n for (var LOOP_OBJECT = OBJECT,\n IS_ARRAY = Array.isArray(LOOP_OBJECT),\n INDEX = 0,\n LOOP_OBJECT = IS_ARRAY ? LOOP_OBJECT : LOOP_OBJECT[Symbol.iterator]();;) {\n var ID;\n if (IS_ARRAY) {\n if (INDEX >= LOOP_OBJECT.length) break;\n ID = LOOP_OBJECT[INDEX++];\n } else {\n INDEX = LOOP_OBJECT.next();\n if (INDEX.done) break;\n ID = INDEX.value;\n }\n }\n ");
+
+ var buildForOf = template("\n var ITERATOR_COMPLETION = true;\n var ITERATOR_HAD_ERROR_KEY = false;\n var ITERATOR_ERROR_KEY = undefined;\n try {\n for (var ITERATOR_KEY = OBJECT[Symbol.iterator](), STEP_KEY; !(ITERATOR_COMPLETION = (STEP_KEY = ITERATOR_KEY.next()).done); ITERATOR_COMPLETION = true) {\n }\n } catch (err) {\n ITERATOR_HAD_ERROR_KEY = true;\n ITERATOR_ERROR_KEY = err;\n } finally {\n try {\n if (!ITERATOR_COMPLETION && ITERATOR_KEY.return) {\n ITERATOR_KEY.return();\n }\n } finally {\n if (ITERATOR_HAD_ERROR_KEY) {\n throw ITERATOR_ERROR_KEY;\n }\n }\n }\n ");
+
+ function _ForOfStatementArray(path) {
+ var node = path.node;
+ var scope = path.scope;
+
+ var nodes = [];
+ var right = node.right;
+
+ if (!t.isIdentifier(right) || !scope.hasBinding(right.name)) {
+ var uid = scope.generateUidIdentifier("arr");
+ nodes.push(t.variableDeclaration("var", [t.variableDeclarator(uid, right)]));
+ right = uid;
+ }
+
+ var iterationKey = scope.generateUidIdentifier("i");
+
+ var loop = buildForOfArray({
+ BODY: node.body,
+ KEY: iterationKey,
+ ARR: right
+ });
+
+ t.inherits(loop, node);
+ t.ensureBlock(loop);
+
+ var iterationValue = t.memberExpression(right, iterationKey, true);
+
+ var left = node.left;
+ if (t.isVariableDeclaration(left)) {
+ left.declarations[0].init = iterationValue;
+ loop.body.body.unshift(left);
+ } else {
+ loop.body.body.unshift(t.expressionStatement(t.assignmentExpression("=", left, iterationValue)));
+ }
+
+ if (path.parentPath.isLabeledStatement()) {
+ loop = t.labeledStatement(path.parentPath.node.label, loop);
+ }
+
+ nodes.push(loop);
+
+ return nodes;
+ }
+
+ return {
+ visitor: {
+ ForOfStatement: function ForOfStatement(path, state) {
+ if (path.get("right").isArrayExpression()) {
+ return path.replaceWithMultiple(_ForOfStatementArray.call(this, path, state));
+ }
+
+ var callback = spec;
+ if (state.opts.loose) callback = loose;
+
+ var node = path.node;
+
+ var build = callback(path, state);
+ var declar = build.declar;
+ var loop = build.loop;
+ var block = loop.body;
+
+ // ensure that it's a block so we can take all its statements
+ path.ensureBlock();
+
+ // add the value declaration to the new loop body
+ if (declar) {
+ block.body.push(declar);
+ }
+
+ // push the rest of the original loop body onto our new body
+ block.body = block.body.concat(node.body.body);
+
+ t.inherits(loop, node);
+ t.inherits(loop.body, node.body);
+
+ if (build.replaceParent) {
+ path.parentPath.replaceWithMultiple(build.node);
+ path.remove();
+ } else {
+ path.replaceWithMultiple(build.node);
+ }
+ }
+ }
+ };
+
+ function loose(path, file) {
+ var node = path.node;
+ var scope = path.scope;
+
+ var left = node.left;
+ var declar = undefined,
+ id = undefined;
+
+ if (t.isIdentifier(left) || t.isPattern(left) || t.isMemberExpression(left)) {
+ // for (i of test), for ({ i } of test)
+ id = left;
+ } else if (t.isVariableDeclaration(left)) {
+ // for (let i of test)
+ id = scope.generateUidIdentifier("ref");
+ declar = t.variableDeclaration(left.kind, [t.variableDeclarator(left.declarations[0].id, id)]);
+ } else {
+ throw file.buildCodeFrameError(left, messages.get("unknownForHead", left.type));
+ }
+
+ var iteratorKey = scope.generateUidIdentifier("iterator");
+ var isArrayKey = scope.generateUidIdentifier("isArray");
+
+ var loop = buildForOfLoose({
+ LOOP_OBJECT: iteratorKey,
+ IS_ARRAY: isArrayKey,
+ OBJECT: node.right,
+ INDEX: scope.generateUidIdentifier("i"),
+ ID: id
+ });
+
+ if (!declar) {
+ // no declaration so we need to remove the variable declaration at the top of
+ // the for-of-loose template
+ loop.body.body.shift();
+ }
+
+ //
+
+ return {
+ declar: declar,
+ node: loop,
+ loop: loop
+ };
+ }
+
+ function spec(path, file) {
+ var node = path.node;
+ var scope = path.scope;
+ var parent = path.parent;
+
+ var left = node.left;
+ var declar = undefined;
+
+ var stepKey = scope.generateUidIdentifier("step");
+ var stepValue = t.memberExpression(stepKey, t.identifier("value"));
+
+ if (t.isIdentifier(left) || t.isPattern(left) || t.isMemberExpression(left)) {
+ // for (i of test), for ({ i } of test)
+ declar = t.expressionStatement(t.assignmentExpression("=", left, stepValue));
+ } else if (t.isVariableDeclaration(left)) {
+ // for (let i of test)
+ declar = t.variableDeclaration(left.kind, [t.variableDeclarator(left.declarations[0].id, stepValue)]);
+ } else {
+ throw file.buildCodeFrameError(left, messages.get("unknownForHead", left.type));
+ }
+
+ //
+
+ var iteratorKey = scope.generateUidIdentifier("iterator");
+
+ var template = buildForOf({
+ ITERATOR_HAD_ERROR_KEY: scope.generateUidIdentifier("didIteratorError"),
+ ITERATOR_COMPLETION: scope.generateUidIdentifier("iteratorNormalCompletion"),
+ ITERATOR_ERROR_KEY: scope.generateUidIdentifier("iteratorError"),
+ ITERATOR_KEY: iteratorKey,
+ STEP_KEY: stepKey,
+ OBJECT: node.right,
+ BODY: null
+ });
+
+ var isLabeledParent = t.isLabeledStatement(parent);
+
+ var tryBody = template[3].block.body;
+ var loop = tryBody[0];
+
+ if (isLabeledParent) {
+ tryBody[0] = t.labeledStatement(parent.label, loop);
+ }
+
+ //
+
+ return {
+ replaceParent: isLabeledParent,
+ declar: declar,
+ loop: loop,
+ node: template
+ };
+ }
+};
+
+module.exports = exports["default"];
\ No newline at end of file
diff --git a/node_modules/babel-plugin-transform-es2015-for-of/package.json b/node_modules/babel-plugin-transform-es2015-for-of/package.json
new file mode 100644
index 0000000..2a15c74
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-for-of/package.json
@@ -0,0 +1,93 @@
+{
+ "_args": [
+ [
+ "babel-plugin-transform-es2015-for-of@^6.6.0",
+ "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-preset-es2015"
+ ]
+ ],
+ "_from": "babel-plugin-transform-es2015-for-of@>=6.6.0 <7.0.0",
+ "_id": "babel-plugin-transform-es2015-for-of@6.6.0",
+ "_inCache": true,
+ "_installable": true,
+ "_location": "/babel-plugin-transform-es2015-for-of",
+ "_nodeVersion": "5.1.0",
+ "_npmOperationalInternal": {
+ "host": "packages-5-east.internal.npmjs.com",
+ "tmp": "tmp/babel-plugin-transform-es2015-for-of-6.6.0.tgz_1456780362924_0.6019125843886286"
+ },
+ "_npmUser": {
+ "email": "hi@henryzoo.com",
+ "name": "hzoo"
+ },
+ "_npmVersion": "3.6.0",
+ "_phantomChildren": {},
+ "_requested": {
+ "name": "babel-plugin-transform-es2015-for-of",
+ "raw": "babel-plugin-transform-es2015-for-of@^6.6.0",
+ "rawSpec": "^6.6.0",
+ "scope": null,
+ "spec": ">=6.6.0 <7.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/babel-plugin-transform-regenerator",
+ "/babel-preset-es2015"
+ ],
+ "_resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.6.0.tgz",
+ "_shasum": "9b14ed6e95293bcc5b624fdc5fbab39902834758",
+ "_shrinkwrap": null,
+ "_spec": "babel-plugin-transform-es2015-for-of@^6.6.0",
+ "_where": "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-preset-es2015",
+ "dependencies": {
+ "babel-runtime": "^5.0.0"
+ },
+ "description": "Compile ES2015 for...of to ES5",
+ "devDependencies": {
+ "babel-helper-plugin-test-runner": "^6.3.13"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "9b14ed6e95293bcc5b624fdc5fbab39902834758",
+ "tarball": "http://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.6.0.tgz"
+ },
+ "keywords": [
+ "babel-plugin"
+ ],
+ "license": "MIT",
+ "main": "lib/index.js",
+ "maintainers": [
+ {
+ "name": "amasad",
+ "email": "amjad.masad@gmail.com"
+ },
+ {
+ "name": "hzoo",
+ "email": "hi@henryzoo.com"
+ },
+ {
+ "name": "jmm",
+ "email": "npm-public@jessemccarthy.net"
+ },
+ {
+ "name": "loganfsmyth",
+ "email": "loganfsmyth@gmail.com"
+ },
+ {
+ "name": "sebmck",
+ "email": "sebmck@gmail.com"
+ },
+ {
+ "name": "thejameskyle",
+ "email": "me@thejameskyle.com"
+ }
+ ],
+ "name": "babel-plugin-transform-es2015-for-of",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel/tree/master/packages/babel-plugin-transform-es2015-for-of"
+ },
+ "scripts": {},
+ "version": "6.6.0"
+}
diff --git a/node_modules/babel-plugin-transform-es2015-function-name/.npmignore b/node_modules/babel-plugin-transform-es2015-function-name/.npmignore
new file mode 100644
index 0000000..3185290
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-function-name/.npmignore
@@ -0,0 +1,4 @@
+node_modules
+*.log
+src
+test
diff --git a/node_modules/babel-plugin-transform-es2015-function-name/README.md b/node_modules/babel-plugin-transform-es2015-function-name/README.md
new file mode 100644
index 0000000..57b690f
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-function-name/README.md
@@ -0,0 +1,35 @@
+# babel-plugin-transform-es2015-function-name
+
+Apply ES2015 function.name semantics to all functions
+
+## Installation
+
+```sh
+$ npm install babel-plugin-transform-es2015-function-name
+```
+
+## Usage
+
+### Via `.babelrc` (Recommended)
+
+**.babelrc**
+
+```json
+{
+ "plugins": ["transform-es2015-function-name"]
+}
+```
+
+### Via CLI
+
+```sh
+$ babel --plugins transform-es2015-function-name script.js
+```
+
+### Via Node API
+
+```javascript
+require("babel-core").transform("code", {
+ plugins: ["transform-es2015-function-name"]
+});
+```
diff --git a/node_modules/babel-plugin-transform-es2015-function-name/lib/index.js b/node_modules/babel-plugin-transform-es2015-function-name/lib/index.js
new file mode 100644
index 0000000..40abc6f
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-function-name/lib/index.js
@@ -0,0 +1,34 @@
+"use strict";
+
+var _interopRequireDefault = require("babel-runtime/helpers/interop-require-default")["default"];
+
+exports.__esModule = true;
+
+var _babelHelperFunctionName = require("babel-helper-function-name");
+
+var _babelHelperFunctionName2 = _interopRequireDefault(_babelHelperFunctionName);
+
+exports["default"] = function () {
+ return {
+ visitor: {
+ "ArrowFunctionExpression|FunctionExpression": {
+ exit: function exit(path) {
+ if (path.key !== "value" && !path.parentPath.isObjectProperty()) {
+ var replacement = _babelHelperFunctionName2["default"](path);
+ if (replacement) path.replaceWith(replacement);
+ }
+ }
+ },
+
+ ObjectProperty: function ObjectProperty(path) {
+ var value = path.get("value");
+ if (value.isFunction()) {
+ var newNode = _babelHelperFunctionName2["default"](value);
+ if (newNode) value.replaceWith(newNode);
+ }
+ }
+ }
+ };
+};
+
+module.exports = exports["default"];
\ No newline at end of file
diff --git a/node_modules/babel-plugin-transform-es2015-function-name/package.json b/node_modules/babel-plugin-transform-es2015-function-name/package.json
new file mode 100644
index 0000000..68e0427
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-function-name/package.json
@@ -0,0 +1,94 @@
+{
+ "_args": [
+ [
+ "babel-plugin-transform-es2015-function-name@^6.3.13",
+ "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-preset-es2015"
+ ]
+ ],
+ "_from": "babel-plugin-transform-es2015-function-name@>=6.3.13 <7.0.0",
+ "_id": "babel-plugin-transform-es2015-function-name@6.5.0",
+ "_inCache": true,
+ "_installable": true,
+ "_location": "/babel-plugin-transform-es2015-function-name",
+ "_nodeVersion": "5.1.0",
+ "_npmOperationalInternal": {
+ "host": "packages-9-west.internal.npmjs.com",
+ "tmp": "tmp/babel-plugin-transform-es2015-function-name-6.5.0.tgz_1454803654842_0.8543756175786257"
+ },
+ "_npmUser": {
+ "email": "hi@henryzoo.com",
+ "name": "hzoo"
+ },
+ "_npmVersion": "3.6.0",
+ "_phantomChildren": {},
+ "_requested": {
+ "name": "babel-plugin-transform-es2015-function-name",
+ "raw": "babel-plugin-transform-es2015-function-name@^6.3.13",
+ "rawSpec": "^6.3.13",
+ "scope": null,
+ "spec": ">=6.3.13 <7.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/babel-preset-es2015"
+ ],
+ "_resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.5.0.tgz",
+ "_shasum": "2939dc437acac705e3c9468542b6e4ac05179088",
+ "_shrinkwrap": null,
+ "_spec": "babel-plugin-transform-es2015-function-name@^6.3.13",
+ "_where": "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-preset-es2015",
+ "dependencies": {
+ "babel-helper-function-name": "^6.4.0",
+ "babel-runtime": "^5.0.0",
+ "babel-types": "^6.4.0"
+ },
+ "description": "Apply ES2015 function.name semantics to all functions",
+ "devDependencies": {
+ "babel-helper-plugin-test-runner": "^6.3.13"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "2939dc437acac705e3c9468542b6e4ac05179088",
+ "tarball": "http://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.5.0.tgz"
+ },
+ "keywords": [
+ "babel-plugin"
+ ],
+ "license": "MIT",
+ "main": "lib/index.js",
+ "maintainers": [
+ {
+ "name": "amasad",
+ "email": "amjad.masad@gmail.com"
+ },
+ {
+ "name": "hzoo",
+ "email": "hi@henryzoo.com"
+ },
+ {
+ "name": "jmm",
+ "email": "npm-public@jessemccarthy.net"
+ },
+ {
+ "name": "loganfsmyth",
+ "email": "loganfsmyth@gmail.com"
+ },
+ {
+ "name": "sebmck",
+ "email": "sebmck@gmail.com"
+ },
+ {
+ "name": "thejameskyle",
+ "email": "me@thejameskyle.com"
+ }
+ ],
+ "name": "babel-plugin-transform-es2015-function-name",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel/tree/master/packages/babel-plugin-transform-es2015-function-name"
+ },
+ "scripts": {},
+ "version": "6.5.0"
+}
diff --git a/node_modules/babel-plugin-transform-es2015-literals/.npmignore b/node_modules/babel-plugin-transform-es2015-literals/.npmignore
new file mode 100644
index 0000000..3185290
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-literals/.npmignore
@@ -0,0 +1,4 @@
+node_modules
+*.log
+src
+test
diff --git a/node_modules/babel-plugin-transform-es2015-literals/README.md b/node_modules/babel-plugin-transform-es2015-literals/README.md
new file mode 100644
index 0000000..ec81710
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-literals/README.md
@@ -0,0 +1,35 @@
+# babel-plugin-transform-es2015-literals
+
+Compile ES2015 unicode string and number literals to ES5
+
+## Installation
+
+```sh
+$ npm install babel-plugin-transform-es2015-literals
+```
+
+## Usage
+
+### Via `.babelrc` (Recommended)
+
+**.babelrc**
+
+```json
+{
+ "plugins": ["transform-es2015-literals"]
+}
+```
+
+### Via CLI
+
+```sh
+$ babel --plugins transform-es2015-literals script.js
+```
+
+### Via Node API
+
+```javascript
+require("babel-core").transform("code", {
+ plugins: ["transform-es2015-literals"]
+});
+```
diff --git a/node_modules/babel-plugin-transform-es2015-literals/lib/index.js b/node_modules/babel-plugin-transform-es2015-literals/lib/index.js
new file mode 100644
index 0000000..9665476
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-literals/lib/index.js
@@ -0,0 +1,29 @@
+"use strict";
+
+exports.__esModule = true;
+
+exports["default"] = function () {
+ return {
+ visitor: {
+ NumericLiteral: function NumericLiteral(_ref) {
+ var node = _ref.node;
+
+ // number octal like 0b10 or 0o70
+ if (node.extra && /^0[ob]/i.test(node.extra.raw)) {
+ node.extra = undefined;
+ }
+ },
+
+ StringLiteral: function StringLiteral(_ref2) {
+ var node = _ref2.node;
+
+ // unicode escape
+ if (node.extra && /\\[u]/gi.test(node.extra.raw)) {
+ node.extra = undefined;
+ }
+ }
+ }
+ };
+};
+
+module.exports = exports["default"];
\ No newline at end of file
diff --git a/node_modules/babel-plugin-transform-es2015-literals/package.json b/node_modules/babel-plugin-transform-es2015-literals/package.json
new file mode 100644
index 0000000..9a3ce51
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-literals/package.json
@@ -0,0 +1,92 @@
+{
+ "_args": [
+ [
+ "babel-plugin-transform-es2015-literals@^6.3.13",
+ "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-preset-es2015"
+ ]
+ ],
+ "_from": "babel-plugin-transform-es2015-literals@>=6.3.13 <7.0.0",
+ "_id": "babel-plugin-transform-es2015-literals@6.5.0",
+ "_inCache": true,
+ "_installable": true,
+ "_location": "/babel-plugin-transform-es2015-literals",
+ "_nodeVersion": "5.1.0",
+ "_npmOperationalInternal": {
+ "host": "packages-5-east.internal.npmjs.com",
+ "tmp": "tmp/babel-plugin-transform-es2015-literals-6.5.0.tgz_1454803655428_0.14492700155824423"
+ },
+ "_npmUser": {
+ "email": "hi@henryzoo.com",
+ "name": "hzoo"
+ },
+ "_npmVersion": "3.6.0",
+ "_phantomChildren": {},
+ "_requested": {
+ "name": "babel-plugin-transform-es2015-literals",
+ "raw": "babel-plugin-transform-es2015-literals@^6.3.13",
+ "rawSpec": "^6.3.13",
+ "scope": null,
+ "spec": ">=6.3.13 <7.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/babel-preset-es2015"
+ ],
+ "_resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.5.0.tgz",
+ "_shasum": "5c467a07ebb05db4d42bdb7980a83227368aad00",
+ "_shrinkwrap": null,
+ "_spec": "babel-plugin-transform-es2015-literals@^6.3.13",
+ "_where": "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-preset-es2015",
+ "dependencies": {
+ "babel-runtime": "^5.0.0"
+ },
+ "description": "Compile ES2015 unicode string and number literals to ES5",
+ "devDependencies": {
+ "babel-helper-plugin-test-runner": "^6.3.13"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "5c467a07ebb05db4d42bdb7980a83227368aad00",
+ "tarball": "http://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.5.0.tgz"
+ },
+ "keywords": [
+ "babel-plugin"
+ ],
+ "license": "MIT",
+ "main": "lib/index.js",
+ "maintainers": [
+ {
+ "name": "amasad",
+ "email": "amjad.masad@gmail.com"
+ },
+ {
+ "name": "hzoo",
+ "email": "hi@henryzoo.com"
+ },
+ {
+ "name": "jmm",
+ "email": "npm-public@jessemccarthy.net"
+ },
+ {
+ "name": "loganfsmyth",
+ "email": "loganfsmyth@gmail.com"
+ },
+ {
+ "name": "sebmck",
+ "email": "sebmck@gmail.com"
+ },
+ {
+ "name": "thejameskyle",
+ "email": "me@thejameskyle.com"
+ }
+ ],
+ "name": "babel-plugin-transform-es2015-literals",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel/tree/master/packages/babel-plugin-transform-es2015-literals"
+ },
+ "scripts": {},
+ "version": "6.5.0"
+}
diff --git a/node_modules/babel-plugin-transform-es2015-modules-commonjs/.npmignore b/node_modules/babel-plugin-transform-es2015-modules-commonjs/.npmignore
new file mode 100644
index 0000000..3185290
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-modules-commonjs/.npmignore
@@ -0,0 +1,4 @@
+node_modules
+*.log
+src
+test
diff --git a/node_modules/babel-plugin-transform-es2015-modules-commonjs/README.md b/node_modules/babel-plugin-transform-es2015-modules-commonjs/README.md
new file mode 100644
index 0000000..95ea03c
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-modules-commonjs/README.md
@@ -0,0 +1,43 @@
+# babel-plugin-transform-es2015-modules-commonjs
+
+## Installation
+
+```sh
+$ npm install babel-plugin-transform-es2015-modules-commonjs
+```
+
+## Usage
+
+### Via `.babelrc` (Recommended)
+
+**.babelrc**
+
+```js
+// without options
+{
+ "plugins": ["transform-es2015-modules-commonjs"]
+}
+
+// with options
+{
+ "plugins": [
+ ["transform-es2015-modules-commonjs", {
+ "allowTopLevelThis": true
+ }]
+ ]
+}
+```
+
+### Via CLI
+
+```sh
+$ babel --plugins transform-es2015-modules-commonjs script.js
+```
+
+### Via Node API
+
+```javascript
+require("babel-core").transform("code", {
+ plugins: ["transform-es2015-modules-commonjs"]
+});
+```
diff --git a/node_modules/babel-plugin-transform-es2015-modules-commonjs/lib/index.js b/node_modules/babel-plugin-transform-es2015-modules-commonjs/lib/index.js
new file mode 100644
index 0000000..8591da7
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-modules-commonjs/lib/index.js
@@ -0,0 +1,527 @@
+/* eslint max-len: 0 */
+
+"use strict";
+
+var _Symbol = require("babel-runtime/core-js/symbol")["default"];
+
+var _getIterator = require("babel-runtime/core-js/get-iterator")["default"];
+
+var _Object$create = require("babel-runtime/core-js/object/create")["default"];
+
+var _Object$keys = require("babel-runtime/core-js/object/keys")["default"];
+
+var _interopRequireDefault = require("babel-runtime/helpers/interop-require-default")["default"];
+
+var _interopRequireWildcard = require("babel-runtime/helpers/interop-require-wildcard")["default"];
+
+exports.__esModule = true;
+
+var _path2 = require("path");
+
+var _babelTemplate = require("babel-template");
+
+var _babelTemplate2 = _interopRequireDefault(_babelTemplate);
+
+var _babelTypes = require("babel-types");
+
+var t = _interopRequireWildcard(_babelTypes);
+
+var buildRequire = _babelTemplate2["default"]("\n require($0);\n");
+
+var buildExportsModuleDeclaration = _babelTemplate2["default"]("\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n");
+
+var buildExportsFrom = _babelTemplate2["default"]("\n Object.defineProperty(exports, $0, {\n enumerable: true,\n get: function () {\n return $1;\n }\n });\n");
+
+var buildLooseExportsModuleDeclaration = _babelTemplate2["default"]("\n exports.__esModule = true;\n");
+
+var buildExportsAssignment = _babelTemplate2["default"]("\n exports.$0 = $1;\n");
+
+var buildExportAll = _babelTemplate2["default"]("\n Object.keys(OBJECT).forEach(function (key) {\n if (key === \"default\") return;\n Object.defineProperty(exports, key, {\n enumerable: true,\n get: function () {\n return OBJECT[key];\n }\n });\n });\n");
+
+var THIS_BREAK_KEYS = ["FunctionExpression", "FunctionDeclaration", "ClassProperty", "ClassMethod", "ObjectMethod"];
+
+exports["default"] = function () {
+ var REASSIGN_REMAP_SKIP = _Symbol();
+
+ var reassignmentVisitor = {
+ ReferencedIdentifier: function ReferencedIdentifier(path) {
+ var name = path.node.name;
+ var remap = this.remaps[name];
+ if (!remap) return;
+
+ // redeclared in this scope
+ if (this.scope.getBinding(name) !== path.scope.getBinding(name)) return;
+
+ if (path.parentPath.isCallExpression({ callee: path.node })) {
+ path.replaceWith(t.sequenceExpression([t.numericLiteral(0), remap]));
+ } else {
+ path.replaceWith(remap);
+ }
+ this.requeueInParent(path);
+ },
+
+ AssignmentExpression: function AssignmentExpression(path) {
+ var node = path.node;
+ if (node[REASSIGN_REMAP_SKIP]) return;
+
+ var left = path.get("left");
+ if (!left.isIdentifier()) return;
+
+ var name = left.node.name;
+ var exports = this.exports[name];
+ if (!exports) return;
+
+ // redeclared in this scope
+ if (this.scope.getBinding(name) !== path.scope.getBinding(name)) return;
+
+ node[REASSIGN_REMAP_SKIP] = true;
+
+ for (var _iterator = exports, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _getIterator(_iterator);;) {
+ var _ref;
+
+ if (_isArray) {
+ if (_i >= _iterator.length) break;
+ _ref = _iterator[_i++];
+ } else {
+ _i = _iterator.next();
+ if (_i.done) break;
+ _ref = _i.value;
+ }
+
+ var reid = _ref;
+
+ node = buildExportsAssignment(reid, node).expression;
+ }
+
+ path.replaceWith(node);
+ this.requeueInParent(path);
+ },
+
+ UpdateExpression: function UpdateExpression(path) {
+ var arg = path.get("argument");
+ if (!arg.isIdentifier()) return;
+
+ var name = arg.node.name;
+ var exports = this.exports[name];
+ if (!exports) return;
+
+ // redeclared in this scope
+ if (this.scope.getBinding(name) !== path.scope.getBinding(name)) return;
+
+ var node = t.assignmentExpression(path.node.operator[0] + "=", arg.node, t.numericLiteral(1));
+
+ if (path.parentPath.isExpressionStatement() && !path.isCompletionRecord() || path.node.prefix) {
+ path.replaceWith(node);
+ this.requeueInParent(path);
+ return;
+ }
+
+ var nodes = [];
+ nodes.push(node);
+
+ var operator = undefined;
+ if (path.node.operator === "--") {
+ operator = "+";
+ } else {
+ // "++"
+ operator = "-";
+ }
+ nodes.push(t.binaryExpression(operator, arg.node, t.numericLiteral(1)));
+
+ var newPaths = path.replaceWithMultiple(t.sequenceExpression(nodes));
+ for (var _iterator2 = newPaths, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _getIterator(_iterator2);;) {
+ var _ref2;
+
+ if (_isArray2) {
+ if (_i2 >= _iterator2.length) break;
+ _ref2 = _iterator2[_i2++];
+ } else {
+ _i2 = _iterator2.next();
+ if (_i2.done) break;
+ _ref2 = _i2.value;
+ }
+
+ var newPath = _ref2;
+ this.requeueInParent(newPath);
+ }
+ }
+ };
+
+ return {
+ inherits: require("babel-plugin-transform-strict-mode"),
+
+ visitor: {
+ ThisExpression: function ThisExpression(path, state) {
+ // If other plugins run after this plugin's Program#exit handler, we allow them to
+ // insert top-level `this` values. This allows the AMD and UMD plugins to
+ // function properly.
+ if (this.ranCommonJS) return;
+
+ if (state.opts.allowTopLevelThis !== true && !path.findParent(function (path) {
+ return !path.is("shadow") && THIS_BREAK_KEYS.indexOf(path.type) >= 0;
+ })) {
+ path.replaceWith(t.identifier("undefined"));
+ }
+ },
+
+ Program: {
+ exit: function exit(path) {
+ this.ranCommonJS = true;
+
+ var strict = !!this.opts.strict;
+
+ var scope = path.scope;
+
+ // rename these commonjs variables if they're declared in the file
+ scope.rename("module");
+ scope.rename("exports");
+ scope.rename("require");
+
+ var hasExports = false;
+ var hasImports = false;
+
+ var body = path.get("body");
+ var imports = _Object$create(null);
+ var exports = _Object$create(null);
+
+ var nonHoistedExportNames = _Object$create(null);
+
+ var topNodes = [];
+ var remaps = _Object$create(null);
+
+ var requires = _Object$create(null);
+
+ function addRequire(source, blockHoist) {
+ var cached = requires[source];
+ if (cached) return cached;
+
+ var ref = path.scope.generateUidIdentifier(_path2.basename(source, _path2.extname(source)));
+
+ var varDecl = t.variableDeclaration("var", [t.variableDeclarator(ref, buildRequire(t.stringLiteral(source)).expression)]);
+
+ // Copy location from the original import statement for sourcemap
+ // generation.
+ if (imports[source]) {
+ varDecl.loc = imports[source].loc;
+ }
+
+ if (typeof blockHoist === "number" && blockHoist > 0) {
+ varDecl._blockHoist = blockHoist;
+ }
+
+ topNodes.push(varDecl);
+
+ return requires[source] = ref;
+ }
+
+ function addTo(obj, key, arr) {
+ var existing = obj[key] || [];
+ obj[key] = existing.concat(arr);
+ }
+
+ for (var _i3 = 0; _i3 < body.length; _i3++) {
+ var _path = body[_i3];
+ if (_path.isExportDeclaration()) {
+ hasExports = true;
+
+ var specifiers = [].concat(_path.get("declaration"), _path.get("specifiers"));
+ for (var _iterator4 = specifiers, _isArray4 = Array.isArray(_iterator4), _i5 = 0, _iterator4 = _isArray4 ? _iterator4 : _getIterator(_iterator4);;) {
+ var _ref4;
+
+ if (_isArray4) {
+ if (_i5 >= _iterator4.length) break;
+ _ref4 = _iterator4[_i5++];
+ } else {
+ _i5 = _iterator4.next();
+ if (_i5.done) break;
+ _ref4 = _i5.value;
+ }
+
+ var specifier = _ref4;
+
+ var ids = specifier.getBindingIdentifiers();
+ if (ids.__esModule) {
+ throw specifier.buildCodeFrameError("Illegal export \"__esModule\"");
+ }
+ }
+ }
+
+ if (_path.isImportDeclaration()) {
+ // istanbul ignore next
+
+ var _importsEntry$specifiers;
+
+ hasImports = true;
+
+ var key = _path.node.source.value;
+ var importsEntry = imports[key] || {
+ specifiers: [],
+ maxBlockHoist: 0,
+ loc: _path.node.loc
+ };
+
+ (_importsEntry$specifiers = importsEntry.specifiers).push.apply(_importsEntry$specifiers, _path.node.specifiers);
+
+ if (typeof _path.node._blockHoist === "number") {
+ importsEntry.maxBlockHoist = Math.max(_path.node._blockHoist, importsEntry.maxBlockHoist);
+ }
+
+ imports[key] = importsEntry;
+
+ _path.remove();
+ } else if (_path.isExportDefaultDeclaration()) {
+ var declaration = _path.get("declaration");
+ if (declaration.isFunctionDeclaration()) {
+ var id = declaration.node.id;
+ var defNode = t.identifier("default");
+ if (id) {
+ addTo(exports, id.name, defNode);
+ topNodes.push(buildExportsAssignment(defNode, id));
+ _path.replaceWith(declaration.node);
+ } else {
+ topNodes.push(buildExportsAssignment(defNode, t.toExpression(declaration.node)));
+ _path.remove();
+ }
+ } else if (declaration.isClassDeclaration()) {
+ var id = declaration.node.id;
+ var defNode = t.identifier("default");
+ if (id) {
+ addTo(exports, id.name, defNode);
+ _path.replaceWithMultiple([declaration.node, buildExportsAssignment(defNode, id)]);
+ } else {
+ _path.replaceWith(buildExportsAssignment(defNode, t.toExpression(declaration.node)));
+ }
+ } else {
+ _path.replaceWith(buildExportsAssignment(t.identifier("default"), declaration.node));
+
+ // Manualy re-queue `export default foo;` expressions so that the ES3 transform
+ // has an opportunity to convert them. Ideally this would happen automatically from the
+ // replaceWith above. See T7166 for more info.
+ _path.parentPath.requeue(_path.get("expression.left"));
+ }
+ } else if (_path.isExportNamedDeclaration()) {
+ var declaration = _path.get("declaration");
+ if (declaration.node) {
+ if (declaration.isFunctionDeclaration()) {
+ var id = declaration.node.id;
+ addTo(exports, id.name, id);
+ topNodes.push(buildExportsAssignment(id, id));
+ _path.replaceWith(declaration.node);
+ } else if (declaration.isClassDeclaration()) {
+ var id = declaration.node.id;
+ addTo(exports, id.name, id);
+ _path.replaceWithMultiple([declaration.node, buildExportsAssignment(id, id)]);
+ nonHoistedExportNames[id.name] = true;
+ } else if (declaration.isVariableDeclaration()) {
+ var declarators = declaration.get("declarations");
+ for (var _iterator5 = declarators, _isArray5 = Array.isArray(_iterator5), _i6 = 0, _iterator5 = _isArray5 ? _iterator5 : _getIterator(_iterator5);;) {
+ var _ref5;
+
+ if (_isArray5) {
+ if (_i6 >= _iterator5.length) break;
+ _ref5 = _iterator5[_i6++];
+ } else {
+ _i6 = _iterator5.next();
+ if (_i6.done) break;
+ _ref5 = _i6.value;
+ }
+
+ var decl = _ref5;
+
+ var id = decl.get("id");
+
+ var init = decl.get("init");
+ if (!init.node) init.replaceWith(t.identifier("undefined"));
+
+ if (id.isIdentifier()) {
+ addTo(exports, id.node.name, id.node);
+ init.replaceWith(buildExportsAssignment(id.node, init.node).expression);
+ nonHoistedExportNames[id.node.name] = true;
+ } else {
+ // todo
+ }
+ }
+ _path.replaceWith(declaration.node);
+ }
+ continue;
+ }
+
+ var specifiers = _path.get("specifiers");
+ if (specifiers.length) {
+ var nodes = [];
+ var source = _path.node.source;
+ if (source) {
+ var ref = addRequire(source.value, _path.node._blockHoist);
+
+ for (var _iterator6 = specifiers, _isArray6 = Array.isArray(_iterator6), _i7 = 0, _iterator6 = _isArray6 ? _iterator6 : _getIterator(_iterator6);;) {
+ var _ref6;
+
+ if (_isArray6) {
+ if (_i7 >= _iterator6.length) break;
+ _ref6 = _iterator6[_i7++];
+ } else {
+ _i7 = _iterator6.next();
+ if (_i7.done) break;
+ _ref6 = _i7.value;
+ }
+
+ var specifier = _ref6;
+
+ if (specifier.isExportNamespaceSpecifier()) {
+ // todo
+ } else if (specifier.isExportDefaultSpecifier()) {
+ // todo
+ } else if (specifier.isExportSpecifier()) {
+ if (specifier.node.local.name === "default") {
+ topNodes.push(buildExportsFrom(t.stringLiteral(specifier.node.exported.name), t.memberExpression(t.callExpression(this.addHelper("interopRequireDefault"), [ref]), specifier.node.local)));
+ } else {
+ topNodes.push(buildExportsFrom(t.stringLiteral(specifier.node.exported.name), t.memberExpression(ref, specifier.node.local)));
+ }
+ nonHoistedExportNames[specifier.node.exported.name] = true;
+ }
+ }
+ } else {
+ for (var _iterator7 = specifiers, _isArray7 = Array.isArray(_iterator7), _i8 = 0, _iterator7 = _isArray7 ? _iterator7 : _getIterator(_iterator7);;) {
+ var _ref7;
+
+ if (_isArray7) {
+ if (_i8 >= _iterator7.length) break;
+ _ref7 = _iterator7[_i8++];
+ } else {
+ _i8 = _iterator7.next();
+ if (_i8.done) break;
+ _ref7 = _i8.value;
+ }
+
+ var specifier = _ref7;
+
+ if (specifier.isExportSpecifier()) {
+ addTo(exports, specifier.node.local.name, specifier.node.exported);
+ nonHoistedExportNames[specifier.node.exported.name] = true;
+ nodes.push(buildExportsAssignment(specifier.node.exported, specifier.node.local));
+ }
+ }
+ }
+ _path.replaceWithMultiple(nodes);
+ }
+ } else if (_path.isExportAllDeclaration()) {
+ var exportNode = buildExportAll({
+ OBJECT: addRequire(_path.node.source.value, _path.node._blockHoist)
+ });
+ exportNode.loc = _path.node.loc;
+ topNodes.push(exportNode);
+ _path.remove();
+ }
+ }
+
+ for (var source in imports) {
+ var _imports$source = imports[source];
+ var specifiers = _imports$source.specifiers;
+ var maxBlockHoist = _imports$source.maxBlockHoist;
+
+ if (specifiers.length) {
+ var uid = addRequire(source, maxBlockHoist);
+
+ var wildcard = undefined;
+
+ for (var i = 0; i < specifiers.length; i++) {
+ var specifier = specifiers[i];
+ if (t.isImportNamespaceSpecifier(specifier)) {
+ if (strict) {
+ remaps[specifier.local.name] = uid;
+ } else {
+ var varDecl = t.variableDeclaration("var", [t.variableDeclarator(specifier.local, t.callExpression(this.addHelper("interopRequireWildcard"), [uid]))]);
+
+ if (maxBlockHoist > 0) {
+ varDecl._blockHoist = maxBlockHoist;
+ }
+
+ topNodes.push(varDecl);
+ }
+ wildcard = specifier.local;
+ } else if (t.isImportDefaultSpecifier(specifier)) {
+ specifiers[i] = t.importSpecifier(specifier.local, t.identifier("default"));
+ }
+ }
+
+ for (var _iterator3 = specifiers, _isArray3 = Array.isArray(_iterator3), _i4 = 0, _iterator3 = _isArray3 ? _iterator3 : _getIterator(_iterator3);;) {
+ var _ref3;
+
+ if (_isArray3) {
+ if (_i4 >= _iterator3.length) break;
+ _ref3 = _iterator3[_i4++];
+ } else {
+ _i4 = _iterator3.next();
+ if (_i4.done) break;
+ _ref3 = _i4.value;
+ }
+
+ var specifier = _ref3;
+
+ if (t.isImportSpecifier(specifier)) {
+ var target = uid;
+ if (specifier.imported.name === "default") {
+ if (wildcard) {
+ target = wildcard;
+ } else {
+ target = wildcard = path.scope.generateUidIdentifier(uid.name);
+ var varDecl = t.variableDeclaration("var", [t.variableDeclarator(target, t.callExpression(this.addHelper("interopRequireDefault"), [uid]))]);
+
+ if (maxBlockHoist > 0) {
+ varDecl._blockHoist = maxBlockHoist;
+ }
+
+ topNodes.push(varDecl);
+ }
+ }
+ remaps[specifier.local.name] = t.memberExpression(target, t.cloneWithoutLoc(specifier.imported));
+ }
+ }
+ } else {
+ // bare import
+ var requireNode = buildRequire(t.stringLiteral(source));
+ requireNode.loc = imports[source].loc;
+ topNodes.push(requireNode);
+ }
+ }
+
+ if (hasImports && _Object$keys(nonHoistedExportNames).length) {
+ var hoistedExportsNode = t.identifier("undefined");
+
+ for (var _name in nonHoistedExportNames) {
+ hoistedExportsNode = buildExportsAssignment(t.identifier(_name), hoistedExportsNode).expression;
+ }
+
+ var node = t.expressionStatement(hoistedExportsNode);
+ node._blockHoist = 3;
+
+ topNodes.unshift(node);
+ }
+
+ // add __esModule declaration if this file has any exports
+ if (hasExports && !strict) {
+ var buildTemplate = buildExportsModuleDeclaration;
+ if (this.opts.loose) buildTemplate = buildLooseExportsModuleDeclaration;
+
+ var declar = buildTemplate();
+ declar._blockHoist = 3;
+
+ topNodes.unshift(declar);
+ }
+
+ path.unshiftContainer("body", topNodes);
+ path.traverse(reassignmentVisitor, {
+ remaps: remaps,
+ scope: scope,
+ exports: exports,
+ requeueInParent: function requeueInParent(newPath) {
+ return path.requeue(newPath);
+ }
+ });
+ }
+ }
+ }
+ };
+};
+
+module.exports = exports["default"];
\ No newline at end of file
diff --git a/node_modules/babel-plugin-transform-es2015-modules-commonjs/package.json b/node_modules/babel-plugin-transform-es2015-modules-commonjs/package.json
new file mode 100644
index 0000000..2c3bd23
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-modules-commonjs/package.json
@@ -0,0 +1,95 @@
+{
+ "_args": [
+ [
+ "babel-plugin-transform-es2015-modules-commonjs@^6.6.0",
+ "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-preset-es2015"
+ ]
+ ],
+ "_from": "babel-plugin-transform-es2015-modules-commonjs@>=6.6.0 <7.0.0",
+ "_id": "babel-plugin-transform-es2015-modules-commonjs@6.7.0",
+ "_inCache": true,
+ "_installable": true,
+ "_location": "/babel-plugin-transform-es2015-modules-commonjs",
+ "_nodeVersion": "5.5.0",
+ "_npmOperationalInternal": {
+ "host": "packages-12-west.internal.npmjs.com",
+ "tmp": "tmp/babel-plugin-transform-es2015-modules-commonjs-6.7.0.tgz_1457484781500_0.6568124517798424"
+ },
+ "_npmUser": {
+ "email": "amjad.masad@gmail.com",
+ "name": "amasad"
+ },
+ "_npmVersion": "3.3.12",
+ "_phantomChildren": {},
+ "_requested": {
+ "name": "babel-plugin-transform-es2015-modules-commonjs",
+ "raw": "babel-plugin-transform-es2015-modules-commonjs@^6.6.0",
+ "rawSpec": "^6.6.0",
+ "scope": null,
+ "spec": ">=6.6.0 <7.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/babel-preset-es2015"
+ ],
+ "_resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.7.0.tgz",
+ "_shasum": "6a141940c8e0c3fce7d010444b52c1a9753f6fdc",
+ "_shrinkwrap": null,
+ "_spec": "babel-plugin-transform-es2015-modules-commonjs@^6.6.0",
+ "_where": "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-preset-es2015",
+ "dependencies": {
+ "babel-plugin-transform-strict-mode": "^6.6.5",
+ "babel-runtime": "^5.0.0",
+ "babel-template": "^6.7.0",
+ "babel-types": "^6.7.0"
+ },
+ "description": "## Installation",
+ "devDependencies": {
+ "babel-helper-plugin-test-runner": "^6.3.13"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "6a141940c8e0c3fce7d010444b52c1a9753f6fdc",
+ "tarball": "http://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.7.0.tgz"
+ },
+ "keywords": [
+ "babel-plugin"
+ ],
+ "license": "MIT",
+ "main": "lib/index.js",
+ "maintainers": [
+ {
+ "name": "amasad",
+ "email": "amjad.masad@gmail.com"
+ },
+ {
+ "name": "hzoo",
+ "email": "hi@henryzoo.com"
+ },
+ {
+ "name": "jmm",
+ "email": "npm-public@jessemccarthy.net"
+ },
+ {
+ "name": "loganfsmyth",
+ "email": "loganfsmyth@gmail.com"
+ },
+ {
+ "name": "sebmck",
+ "email": "sebmck@gmail.com"
+ },
+ {
+ "name": "thejameskyle",
+ "email": "me@thejameskyle.com"
+ }
+ ],
+ "name": "babel-plugin-transform-es2015-modules-commonjs",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel/tree/master/packages/babel-plugin-transform-es2015-modules-commonjs"
+ },
+ "scripts": {},
+ "version": "6.7.0"
+}
diff --git a/node_modules/babel-plugin-transform-es2015-object-super/.npmignore b/node_modules/babel-plugin-transform-es2015-object-super/.npmignore
new file mode 100644
index 0000000..3185290
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-object-super/.npmignore
@@ -0,0 +1,4 @@
+node_modules
+*.log
+src
+test
diff --git a/node_modules/babel-plugin-transform-es2015-object-super/README.md b/node_modules/babel-plugin-transform-es2015-object-super/README.md
new file mode 100644
index 0000000..ea5bf50
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-object-super/README.md
@@ -0,0 +1,35 @@
+# babel-plugin-transform-es2015-object-super
+
+Compile ES2015 object super to ES5
+
+## Installation
+
+```sh
+$ npm install babel-plugin-transform-es2015-object-super
+```
+
+## Usage
+
+### Via `.babelrc` (Recommended)
+
+**.babelrc**
+
+```json
+{
+ "plugins": ["transform-es2015-object-super"]
+}
+```
+
+### Via CLI
+
+```sh
+$ babel --plugins transform-es2015-object-super script.js
+```
+
+### Via Node API
+
+```javascript
+require("babel-core").transform("code", {
+ plugins: ["transform-es2015-object-super"]
+});
+```
diff --git a/node_modules/babel-plugin-transform-es2015-object-super/lib/index.js b/node_modules/babel-plugin-transform-es2015-object-super/lib/index.js
new file mode 100644
index 0000000..c9b59f1
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-object-super/lib/index.js
@@ -0,0 +1,66 @@
+"use strict";
+
+var _Symbol = require("babel-runtime/core-js/symbol")["default"];
+
+var _interopRequireDefault = require("babel-runtime/helpers/interop-require-default")["default"];
+
+exports.__esModule = true;
+
+var _babelHelperReplaceSupers = require("babel-helper-replace-supers");
+
+var _babelHelperReplaceSupers2 = _interopRequireDefault(_babelHelperReplaceSupers);
+
+exports["default"] = function (_ref) {
+ var t = _ref.types;
+
+ function Property(path, node, scope, getObjectRef, file) {
+ var replaceSupers = new _babelHelperReplaceSupers2["default"]({
+ getObjectRef: getObjectRef,
+ methodNode: node,
+ methodPath: path,
+ isStatic: true,
+ scope: scope,
+ file: file
+ });
+
+ replaceSupers.replace();
+ }
+
+ var CONTAINS_SUPER = _Symbol();
+
+ return {
+ visitor: {
+ Super: function Super(path) {
+ var parentObj = path.findParent(function (path) {
+ return path.isObjectExpression();
+ });
+ if (parentObj) parentObj.node[CONTAINS_SUPER] = true;
+ },
+
+ ObjectExpression: {
+ exit: function exit(path, file) {
+ if (!path.node[CONTAINS_SUPER]) return;
+
+ var objectRef = undefined;
+ var getObjectRef = function getObjectRef() {
+ return objectRef = objectRef || path.scope.generateUidIdentifier("obj");
+ };
+
+ var propPaths = path.get("properties");
+ for (var _i = 0; _i < propPaths.length; _i++) {
+ var propPath = propPaths[_i];
+ if (propPath.isObjectProperty()) propPath = propPath.get("value");
+ Property(propPath, propPath.node, path.scope, getObjectRef, file);
+ }
+
+ if (objectRef) {
+ path.scope.push({ id: objectRef });
+ path.replaceWith(t.assignmentExpression("=", objectRef, path.node));
+ }
+ }
+ }
+ }
+ };
+};
+
+module.exports = exports["default"];
\ No newline at end of file
diff --git a/node_modules/babel-plugin-transform-es2015-object-super/package.json b/node_modules/babel-plugin-transform-es2015-object-super/package.json
new file mode 100644
index 0000000..61a9446
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-object-super/package.json
@@ -0,0 +1,93 @@
+{
+ "_args": [
+ [
+ "babel-plugin-transform-es2015-object-super@^6.3.13",
+ "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-preset-es2015"
+ ]
+ ],
+ "_from": "babel-plugin-transform-es2015-object-super@>=6.3.13 <7.0.0",
+ "_id": "babel-plugin-transform-es2015-object-super@6.6.5",
+ "_inCache": true,
+ "_installable": true,
+ "_location": "/babel-plugin-transform-es2015-object-super",
+ "_nodeVersion": "5.1.0",
+ "_npmOperationalInternal": {
+ "host": "packages-13-west.internal.npmjs.com",
+ "tmp": "tmp/babel-plugin-transform-es2015-object-super-6.6.5.tgz_1457133417645_0.757795168319717"
+ },
+ "_npmUser": {
+ "email": "hi@henryzoo.com",
+ "name": "hzoo"
+ },
+ "_npmVersion": "3.6.0",
+ "_phantomChildren": {},
+ "_requested": {
+ "name": "babel-plugin-transform-es2015-object-super",
+ "raw": "babel-plugin-transform-es2015-object-super@^6.3.13",
+ "rawSpec": "^6.3.13",
+ "scope": null,
+ "spec": ">=6.3.13 <7.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/babel-preset-es2015"
+ ],
+ "_resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.6.5.tgz",
+ "_shasum": "ed29ca5b175d97e8acdadc258bcf40a564e906a4",
+ "_shrinkwrap": null,
+ "_spec": "babel-plugin-transform-es2015-object-super@^6.3.13",
+ "_where": "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-preset-es2015",
+ "dependencies": {
+ "babel-helper-replace-supers": "^6.6.5",
+ "babel-runtime": "^5.0.0"
+ },
+ "description": "Compile ES2015 object super to ES5",
+ "devDependencies": {
+ "babel-helper-plugin-test-runner": "^6.3.13"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "ed29ca5b175d97e8acdadc258bcf40a564e906a4",
+ "tarball": "http://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.6.5.tgz"
+ },
+ "keywords": [
+ "babel-plugin"
+ ],
+ "license": "MIT",
+ "main": "lib/index.js",
+ "maintainers": [
+ {
+ "name": "amasad",
+ "email": "amjad.masad@gmail.com"
+ },
+ {
+ "name": "hzoo",
+ "email": "hi@henryzoo.com"
+ },
+ {
+ "name": "jmm",
+ "email": "npm-public@jessemccarthy.net"
+ },
+ {
+ "name": "loganfsmyth",
+ "email": "loganfsmyth@gmail.com"
+ },
+ {
+ "name": "sebmck",
+ "email": "sebmck@gmail.com"
+ },
+ {
+ "name": "thejameskyle",
+ "email": "me@thejameskyle.com"
+ }
+ ],
+ "name": "babel-plugin-transform-es2015-object-super",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel/tree/master/packages/babel-plugin-transform-es2015-object-super"
+ },
+ "scripts": {},
+ "version": "6.6.5"
+}
diff --git a/node_modules/babel-plugin-transform-es2015-parameters/.npmignore b/node_modules/babel-plugin-transform-es2015-parameters/.npmignore
new file mode 100644
index 0000000..3185290
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-parameters/.npmignore
@@ -0,0 +1,4 @@
+node_modules
+*.log
+src
+test
diff --git a/node_modules/babel-plugin-transform-es2015-parameters/README.md b/node_modules/babel-plugin-transform-es2015-parameters/README.md
new file mode 100644
index 0000000..e443bbb
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-parameters/README.md
@@ -0,0 +1,35 @@
+# babel-plugin-transform-es2015-parameters
+
+Compile ES2015 default and rest parameters to ES5
+
+## Installation
+
+```sh
+$ npm install babel-plugin-transform-es2015-parameters
+```
+
+## Usage
+
+### Via `.babelrc` (Recommended)
+
+**.babelrc**
+
+```json
+{
+ "plugins": ["transform-es2015-parameters"]
+}
+```
+
+### Via CLI
+
+```sh
+$ babel --plugins transform-es2015-parameters script.js
+```
+
+### Via Node API
+
+```javascript
+require("babel-core").transform("code", {
+ plugins: ["transform-es2015-parameters"]
+});
+```
diff --git a/node_modules/babel-plugin-transform-es2015-parameters/lib/default.js b/node_modules/babel-plugin-transform-es2015-parameters/lib/default.js
new file mode 100644
index 0000000..5025653
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-parameters/lib/default.js
@@ -0,0 +1,166 @@
+/* eslint max-len: 0 */
+
+"use strict";
+
+var _interopRequireDefault = require("babel-runtime/helpers/interop-require-default")["default"];
+
+var _interopRequireWildcard = require("babel-runtime/helpers/interop-require-wildcard")["default"];
+
+exports.__esModule = true;
+
+var _babelHelperGetFunctionArity = require("babel-helper-get-function-arity");
+
+var _babelHelperGetFunctionArity2 = _interopRequireDefault(_babelHelperGetFunctionArity);
+
+var _babelHelperCallDelegate = require("babel-helper-call-delegate");
+
+var _babelHelperCallDelegate2 = _interopRequireDefault(_babelHelperCallDelegate);
+
+var _babelTemplate = require("babel-template");
+
+var _babelTemplate2 = _interopRequireDefault(_babelTemplate);
+
+var _babelTypes = require("babel-types");
+
+var t = _interopRequireWildcard(_babelTypes);
+
+var buildDefaultParam = _babelTemplate2["default"]("\n let VARIABLE_NAME =\n ARGUMENTS.length <= ARGUMENT_KEY || ARGUMENTS[ARGUMENT_KEY] === undefined ?\n DEFAULT_VALUE\n :\n ARGUMENTS[ARGUMENT_KEY];\n");
+
+var buildDefaultParamAssign = _babelTemplate2["default"]("\n if (VARIABLE_NAME === undefined) VARIABLE_NAME = DEFAULT_VALUE;\n");
+
+var buildCutOff = _babelTemplate2["default"]("\n let $0 = $1[$2];\n");
+
+function hasDefaults(node) {
+ var _arr = node.params;
+
+ for (var _i = 0; _i < _arr.length; _i++) {
+ var param = _arr[_i];
+ if (!t.isIdentifier(param)) return true;
+ }
+ return false;
+}
+
+var iifeVisitor = {
+ ReferencedIdentifier: function ReferencedIdentifier(path, state) {
+ var name = path.node.name;
+ if (name === "eval" || path.scope.hasOwnBinding(name) && path.scope.getOwnBinding(name).kind !== "param") {
+ state.iife = true;
+ path.stop();
+ }
+ },
+
+ Scope: function Scope(path) {
+ // different bindings
+ path.skip();
+ }
+};
+
+var visitor = {
+ Function: function Function(path) {
+ var node = path.node;
+ var scope = path.scope;
+
+ if (!hasDefaults(node)) return;
+
+ // ensure it's a block, useful for arrow functions
+ path.ensureBlock();
+
+ var state = {
+ iife: false,
+ scope: scope
+ };
+
+ var body = [];
+
+ //
+ var argsIdentifier = t.identifier("arguments");
+ argsIdentifier._shadowedFunctionLiteral = path;
+
+ // push a default parameter definition
+ function pushDefNode(left, right, i) {
+ var defNode = undefined;
+ if (exceedsLastNonDefault(i) || t.isPattern(left)) {
+ defNode = buildDefaultParam({
+ VARIABLE_NAME: left,
+ DEFAULT_VALUE: right,
+ ARGUMENT_KEY: t.numericLiteral(i),
+ ARGUMENTS: argsIdentifier
+ });
+ } else {
+ defNode = buildDefaultParamAssign({
+ VARIABLE_NAME: left,
+ DEFAULT_VALUE: right
+ });
+ }
+ defNode._blockHoist = node.params.length - i;
+ body.push(defNode);
+ }
+
+ // check if an index exceeds the functions arity
+ function exceedsLastNonDefault(i) {
+ return i + 1 > lastNonDefaultParam;
+ }
+
+ //
+ var lastNonDefaultParam = _babelHelperGetFunctionArity2["default"](node);
+
+ //
+ var params = path.get("params");
+ for (var i = 0; i < params.length; i++) {
+ var param = params[i];
+
+ if (!param.isAssignmentPattern()) {
+ if (!param.isIdentifier()) {
+ param.traverse(iifeVisitor, state);
+ }
+
+ continue;
+ }
+
+ var left = param.get("left");
+ var right = param.get("right");
+
+ //
+ if (exceedsLastNonDefault(i) || left.isPattern()) {
+ var placeholder = scope.generateUidIdentifier("x");
+ placeholder._isDefaultPlaceholder = true;
+ node.params[i] = placeholder;
+ } else {
+ node.params[i] = left.node;
+ }
+
+ //
+ if (!state.iife) {
+ if (right.isIdentifier() && scope.hasOwnBinding(right.node.name) && scope.getOwnBinding(right.node.name).kind !== "param") {
+ // the right hand side references a parameter
+ state.iife = true;
+ } else {
+ right.traverse(iifeVisitor, state);
+ }
+ }
+
+ pushDefNode(left.node, right.node, i);
+ }
+
+ // add declarations for trailing parameters
+ for (var i = lastNonDefaultParam + 1; i < node.params.length; i++) {
+ var param = node.params[i];
+ if (param._isDefaultPlaceholder) continue;
+
+ var declar = buildCutOff(param, argsIdentifier, t.numericLiteral(i));
+ declar._blockHoist = node.params.length - i;
+ body.push(declar);
+ }
+
+ // we need to cut off all trailing parameters
+ node.params = node.params.slice(0, lastNonDefaultParam);
+
+ if (state.iife) {
+ body.push(_babelHelperCallDelegate2["default"](path, scope));
+ path.set("body", t.blockStatement(body));
+ } else {
+ path.get("body").unshiftContainer("body", body);
+ }
+ }
+};
+exports.visitor = visitor;
\ No newline at end of file
diff --git a/node_modules/babel-plugin-transform-es2015-parameters/lib/destructuring.js b/node_modules/babel-plugin-transform-es2015-parameters/lib/destructuring.js
new file mode 100644
index 0000000..06ac1cc
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-parameters/lib/destructuring.js
@@ -0,0 +1,36 @@
+"use strict";
+
+var _interopRequireWildcard = require("babel-runtime/helpers/interop-require-wildcard")["default"];
+
+exports.__esModule = true;
+
+var _babelTypes = require("babel-types");
+
+var t = _interopRequireWildcard(_babelTypes);
+
+var visitor = {
+ Function: function Function(path) {
+ var params = path.get("params");
+
+ // If there's a rest param, no need to loop through it. Also, we need to
+ // hoist one more level to get `declar` at the right spot.
+ var hoistTweak = t.isRestElement(params[params.length - 1]) ? 1 : 0;
+ var outputParamsLength = params.length - hoistTweak;
+
+ for (var i = 0; i < outputParamsLength; i++) {
+ var param = params[i];
+ if (param.isArrayPattern() || param.isObjectPattern()) {
+ var uid = path.scope.generateUidIdentifier("ref");
+
+ var declar = t.variableDeclaration("let", [t.variableDeclarator(param.node, uid)]);
+ declar._blockHoist = outputParamsLength - i;
+
+ path.ensureBlock();
+ path.get("body").unshiftContainer("body", declar);
+
+ param.replaceWith(uid);
+ }
+ }
+ }
+};
+exports.visitor = visitor;
\ No newline at end of file
diff --git a/node_modules/babel-plugin-transform-es2015-parameters/lib/index.js b/node_modules/babel-plugin-transform-es2015-parameters/lib/index.js
new file mode 100644
index 0000000..67f3901
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-parameters/lib/index.js
@@ -0,0 +1,39 @@
+"use strict";
+
+var _interopRequireWildcard = require("babel-runtime/helpers/interop-require-wildcard")["default"];
+
+exports.__esModule = true;
+
+var _babelTraverse = require("babel-traverse");
+
+var _destructuring = require("./destructuring");
+
+var destructuring = _interopRequireWildcard(_destructuring);
+
+var _default = require("./default");
+
+var def = _interopRequireWildcard(_default);
+
+var _rest = require("./rest");
+
+var rest = _interopRequireWildcard(_rest);
+
+exports["default"] = function () {
+ return {
+ visitor: _babelTraverse.visitors.merge([{
+ ArrowFunctionExpression: function ArrowFunctionExpression(path) {
+ // default/rest visitors require access to `arguments`
+ var params = path.get("params");
+ for (var _i = 0; _i < params.length; _i++) {
+ var param = params[_i];
+ if (param.isRestElement() || param.isAssignmentPattern()) {
+ path.arrowFunctionToShadowed();
+ break;
+ }
+ }
+ }
+ }, destructuring.visitor, rest.visitor, def.visitor])
+ };
+};
+
+module.exports = exports["default"];
\ No newline at end of file
diff --git a/node_modules/babel-plugin-transform-es2015-parameters/lib/rest.js b/node_modules/babel-plugin-transform-es2015-parameters/lib/rest.js
new file mode 100644
index 0000000..745cb5f
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-parameters/lib/rest.js
@@ -0,0 +1,297 @@
+/* eslint indent: 0 */
+
+"use strict";
+
+var _interopRequireDefault = require("babel-runtime/helpers/interop-require-default")["default"];
+
+var _interopRequireWildcard = require("babel-runtime/helpers/interop-require-wildcard")["default"];
+
+exports.__esModule = true;
+
+var _babelTemplate = require("babel-template");
+
+var _babelTemplate2 = _interopRequireDefault(_babelTemplate);
+
+var _babelTypes = require("babel-types");
+
+var t = _interopRequireWildcard(_babelTypes);
+
+var buildRest = _babelTemplate2["default"]("\n for (var LEN = ARGUMENTS.length,\n ARRAY = Array(ARRAY_LEN),\n KEY = START;\n KEY < LEN;\n KEY++) {\n ARRAY[ARRAY_KEY] = ARGUMENTS[KEY];\n }\n");
+
+var loadRest = _babelTemplate2["default"]("\n ARGUMENTS.length <= INDEX ? undefined : ARGUMENTS[INDEX]\n");
+
+var memberExpressionOptimisationVisitor = {
+ Scope: function Scope(path, state) {
+ // check if this scope has a local binding that will shadow the rest parameter
+ if (!path.scope.bindingIdentifierEquals(state.name, state.outerBinding)) {
+ path.skip();
+ }
+ },
+
+ Flow: function Flow(path) {
+ // don't touch reference in type annotations
+ path.skip();
+ },
+
+ Function: function Function(path, state) {
+ // Detect whether any reference to rest is contained in nested functions to
+ // determine if deopt is necessary.
+ var oldNoOptimise = state.noOptimise;
+ state.noOptimise = true;
+ path.traverse(memberExpressionOptimisationVisitor, state);
+ state.noOptimise = oldNoOptimise;
+
+ // Skip because optimizing references to rest would refer to the `arguments`
+ // of the nested function.
+ path.skip();
+ },
+
+ ReferencedIdentifier: function ReferencedIdentifier(path, state) {
+ var node = path.node;
+
+ // we can't guarantee the purity of arguments
+ if (node.name === "arguments") {
+ state.deopted = true;
+ }
+
+ // is this a referenced identifier and is it referencing the rest parameter?
+ if (node.name !== state.name) return;
+
+ if (state.noOptimise) {
+ state.deopted = true;
+ } else {
+ var parentPath = path.parentPath;
+
+ // ex: `args[0]`
+ // ex: `args.whatever`
+ if (parentPath.isMemberExpression({ object: node })) {
+ var grandparentPath = parentPath.parentPath;
+
+ var argsOptEligible = !state.deopted && !(
+ // ex: `args[0] = "whatever"`
+ grandparentPath.isAssignmentExpression() && parentPath.node === grandparentPath.node.left ||
+
+ // ex: `[args[0]] = ["whatever"]`
+ grandparentPath.isLVal() ||
+
+ // ex: `for (rest[0] in this)`
+ // ex: `for (rest[0] of this)`
+ grandparentPath.isForXStatement() ||
+
+ // ex: `++args[0]`
+ // ex: `args[0]--`
+ grandparentPath.isUpdateExpression() ||
+
+ // ex: `delete args[0]`
+ grandparentPath.isUnaryExpression({ operator: "delete" }) ||
+
+ // ex: `args[0]()`
+ // ex: `new args[0]()`
+ // ex: `new args[0]`
+ (grandparentPath.isCallExpression() || grandparentPath.isNewExpression()) && parentPath.node === grandparentPath.node.callee);
+
+ if (argsOptEligible) {
+ if (parentPath.node.computed) {
+ // if we know that this member expression is referencing a number then
+ // we can safely optimise it
+ if (parentPath.get("property").isBaseType("number")) {
+ state.candidates.push({ cause: "indexGetter", path: path });
+ return;
+ }
+ }
+ // args.length
+ else if (parentPath.node.property.name === "length") {
+ state.candidates.push({ cause: "lengthGetter", path: path });
+ return;
+ }
+ }
+ }
+
+ // we can only do these optimizations if the rest variable would match
+ // the arguments exactly
+ // optimise single spread args in calls
+ // ex: fn(...args)
+ if (state.offset === 0 && parentPath.isSpreadElement()) {
+ var call = parentPath.parentPath;
+ if (call.isCallExpression() && call.node.arguments.length === 1) {
+ state.candidates.push({ cause: "argSpread", path: path });
+ return;
+ }
+ }
+
+ state.references.push(path);
+ }
+ },
+
+ /**
+ * Deopt on use of a binding identifier with the same name as our rest param.
+ *
+ * See https://github.com/babel/babel/issues/2091
+ */
+
+ BindingIdentifier: function BindingIdentifier(_ref, state) {
+ var node = _ref.node;
+
+ if (node.name === state.name) {
+ state.deopted = true;
+ }
+ }
+};
+function hasRest(node) {
+ return t.isRestElement(node.params[node.params.length - 1]);
+}
+
+function optimiseIndexGetter(path, argsId, offset) {
+ var index = undefined;
+
+ if (t.isNumericLiteral(path.parent.property)) {
+ index = t.numericLiteral(path.parent.property.value + offset);
+ } else {
+ index = t.binaryExpression("+", path.parent.property, t.numericLiteral(offset));
+ }
+
+ path.parentPath.replaceWith(loadRest({
+ ARGUMENTS: argsId,
+ INDEX: index
+ }));
+}
+
+function optimiseLengthGetter(path, argsLengthExpression, argsId, offset) {
+ if (offset) {
+ path.parentPath.replaceWith(t.binaryExpression("-", argsLengthExpression, t.numericLiteral(offset)));
+ } else {
+ path.replaceWith(argsId);
+ }
+}
+
+var visitor = {
+ Function: function Function(path) {
+ var node = path.node;
+ var scope = path.scope;
+
+ if (!hasRest(node)) return;
+
+ var rest = node.params.pop().argument;
+
+ var argsId = t.identifier("arguments");
+ var argsLengthExpression = t.memberExpression(argsId, t.identifier("length"));
+
+ // otherwise `arguments` will be remapped in arrow functions
+ argsId._shadowedFunctionLiteral = path;
+
+ // check and optimise for extremely common cases
+ var state = {
+ references: [],
+ offset: node.params.length,
+
+ argumentsNode: argsId,
+ outerBinding: scope.getBindingIdentifier(rest.name),
+
+ // candidate member expressions we could optimise if there are no other references
+ candidates: [],
+
+ // local rest binding name
+ name: rest.name,
+
+ /*
+ It may be possible to optimize the output code in certain ways, such as
+ not generating code to initialize an array (perhaps substituting direct
+ references to arguments[i] or arguments.length for reads of the
+ corresponding rest parameter property) or positioning the initialization
+ code so that it may not have to execute depending on runtime conditions.
+ This property tracks eligibility for optimization. "deopted" means give up
+ and don't perform optimization. For example, when any of rest's elements /
+ properties is assigned to at the top level, or referenced at all in a
+ nested function.
+ */
+ deopted: false
+ };
+
+ path.traverse(memberExpressionOptimisationVisitor, state);
+
+ // There are only "shorthand" references
+ if (!state.deopted && !state.references.length) {
+ var _arr = state.candidates;
+
+ for (var _i = 0; _i < _arr.length; _i++) {
+ var _arr$_i = _arr[_i];
+ var _path = _arr$_i.path;
+ var cause = _arr$_i.cause;
+
+ switch (cause) {
+ case "indexGetter":
+ optimiseIndexGetter(_path, argsId, state.offset);
+ break;
+ case "lengthGetter":
+ optimiseLengthGetter(_path, argsLengthExpression, argsId, state.offset);
+ break;
+ default:
+ _path.replaceWith(argsId);
+ }
+ }
+ return;
+ }
+
+ state.references = state.references.concat(state.candidates.map(function (_ref2) {
+ var path = _ref2.path;
+ return path;
+ }));
+
+ // deopt shadowed functions as transforms like regenerator may try touch the allocation loop
+ state.deopted = state.deopted || !!node.shadow;
+
+ var start = t.numericLiteral(node.params.length);
+ var key = scope.generateUidIdentifier("key");
+ var len = scope.generateUidIdentifier("len");
+
+ var arrKey = key;
+ var arrLen = len;
+ if (node.params.length) {
+ // this method has additional params, so we need to subtract
+ // the index of the current argument position from the
+ // position in the array that we want to populate
+ arrKey = t.binaryExpression("-", key, start);
+
+ // we need to work out the size of the array that we're
+ // going to store all the rest parameters
+ //
+ // we need to add a check to avoid constructing the array
+ // with <0 if there are less arguments than params as it'll
+ // cause an error
+ arrLen = t.conditionalExpression(t.binaryExpression(">", len, start), t.binaryExpression("-", len, start), t.numericLiteral(0));
+ }
+
+ var loop = buildRest({
+ ARGUMENTS: argsId,
+ ARRAY_KEY: arrKey,
+ ARRAY_LEN: arrLen,
+ START: start,
+ ARRAY: rest,
+ KEY: key,
+ LEN: len
+ });
+
+ if (state.deopted) {
+ loop._blockHoist = node.params.length + 1;
+ node.body.body.unshift(loop);
+ } else {
+ // perform allocation at the lowest common ancestor of all references
+ loop._blockHoist = 1;
+
+ var target = path.getEarliestCommonAncestorFrom(state.references).getStatementParent();
+
+ // don't perform the allocation inside a loop
+ target.findParent(function (path) {
+ if (path.isLoop()) {
+ target = path;
+ } else {
+ // Stop crawling up if this is a function.
+ return path.isFunction();
+ }
+ });
+
+ target.insertBefore(loop);
+ }
+ }
+};
+exports.visitor = visitor;
\ No newline at end of file
diff --git a/node_modules/babel-plugin-transform-es2015-parameters/package.json b/node_modules/babel-plugin-transform-es2015-parameters/package.json
new file mode 100644
index 0000000..b00b1a8
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-parameters/package.json
@@ -0,0 +1,97 @@
+{
+ "_args": [
+ [
+ "babel-plugin-transform-es2015-parameters@^6.6.0",
+ "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-preset-es2015"
+ ]
+ ],
+ "_from": "babel-plugin-transform-es2015-parameters@>=6.6.0 <7.0.0",
+ "_id": "babel-plugin-transform-es2015-parameters@6.7.0",
+ "_inCache": true,
+ "_installable": true,
+ "_location": "/babel-plugin-transform-es2015-parameters",
+ "_nodeVersion": "5.5.0",
+ "_npmOperationalInternal": {
+ "host": "packages-12-west.internal.npmjs.com",
+ "tmp": "tmp/babel-plugin-transform-es2015-parameters-6.7.0.tgz_1457484779643_0.7425930625759065"
+ },
+ "_npmUser": {
+ "email": "amjad.masad@gmail.com",
+ "name": "amasad"
+ },
+ "_npmVersion": "3.3.12",
+ "_phantomChildren": {},
+ "_requested": {
+ "name": "babel-plugin-transform-es2015-parameters",
+ "raw": "babel-plugin-transform-es2015-parameters@^6.6.0",
+ "rawSpec": "^6.6.0",
+ "scope": null,
+ "spec": ">=6.6.0 <7.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/babel-preset-es2015"
+ ],
+ "_resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.7.0.tgz",
+ "_shasum": "5d993482ea432934d4918de6065fc330b56cbcb7",
+ "_shrinkwrap": null,
+ "_spec": "babel-plugin-transform-es2015-parameters@^6.6.0",
+ "_where": "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-preset-es2015",
+ "dependencies": {
+ "babel-helper-call-delegate": "^6.6.5",
+ "babel-helper-get-function-arity": "^6.6.5",
+ "babel-runtime": "^5.0.0",
+ "babel-template": "^6.7.0",
+ "babel-traverse": "^6.7.0",
+ "babel-types": "^6.7.0"
+ },
+ "description": "Compile ES2015 default and rest parameters to ES5",
+ "devDependencies": {
+ "babel-helper-plugin-test-runner": "^6.3.13"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "5d993482ea432934d4918de6065fc330b56cbcb7",
+ "tarball": "http://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.7.0.tgz"
+ },
+ "keywords": [
+ "babel-plugin"
+ ],
+ "license": "MIT",
+ "main": "lib/index.js",
+ "maintainers": [
+ {
+ "name": "amasad",
+ "email": "amjad.masad@gmail.com"
+ },
+ {
+ "name": "hzoo",
+ "email": "hi@henryzoo.com"
+ },
+ {
+ "name": "jmm",
+ "email": "npm-public@jessemccarthy.net"
+ },
+ {
+ "name": "loganfsmyth",
+ "email": "loganfsmyth@gmail.com"
+ },
+ {
+ "name": "sebmck",
+ "email": "sebmck@gmail.com"
+ },
+ {
+ "name": "thejameskyle",
+ "email": "me@thejameskyle.com"
+ }
+ ],
+ "name": "babel-plugin-transform-es2015-parameters",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel/tree/master/packages/babel-plugin-transform-es2015-parameters"
+ },
+ "scripts": {},
+ "version": "6.7.0"
+}
diff --git a/node_modules/babel-plugin-transform-es2015-shorthand-properties/.npmignore b/node_modules/babel-plugin-transform-es2015-shorthand-properties/.npmignore
new file mode 100644
index 0000000..3185290
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-shorthand-properties/.npmignore
@@ -0,0 +1,4 @@
+node_modules
+*.log
+src
+test
diff --git a/node_modules/babel-plugin-transform-es2015-shorthand-properties/README.md b/node_modules/babel-plugin-transform-es2015-shorthand-properties/README.md
new file mode 100644
index 0000000..8fc11b0
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-shorthand-properties/README.md
@@ -0,0 +1,35 @@
+# babel-plugin-transform-es2015-shorthand-properties
+
+Compile ES2015 shorthand properties to ES5
+
+## Installation
+
+```sh
+$ npm install babel-plugin-transform-es2015-shorthand-properties
+```
+
+## Usage
+
+### Via `.babelrc` (Recommended)
+
+**.babelrc**
+
+```json
+{
+ "plugins": ["transform-es2015-shorthand-properties"]
+}
+```
+
+### Via CLI
+
+```sh
+$ babel --plugins transform-es2015-shorthand-properties script.js
+```
+
+### Via Node API
+
+```javascript
+require("babel-core").transform("code", {
+ plugins: ["transform-es2015-shorthand-properties"]
+});
+```
diff --git a/node_modules/babel-plugin-transform-es2015-shorthand-properties/lib/index.js b/node_modules/babel-plugin-transform-es2015-shorthand-properties/lib/index.js
new file mode 100644
index 0000000..1649647
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-shorthand-properties/lib/index.js
@@ -0,0 +1,33 @@
+"use strict";
+
+var _interopRequireWildcard = require("babel-runtime/helpers/interop-require-wildcard")["default"];
+
+exports.__esModule = true;
+
+var _babelTypes = require("babel-types");
+
+var t = _interopRequireWildcard(_babelTypes);
+
+exports["default"] = function () {
+ return {
+ visitor: {
+ ObjectMethod: function ObjectMethod(path) {
+ var node = path.node;
+
+ if (node.kind === "method") {
+ path.replaceWith(t.objectProperty(node.key, t.functionExpression(null, node.params, node.body, node.generator, node.async), node.computed));
+ }
+ },
+
+ ObjectProperty: function ObjectProperty(_ref) {
+ var node = _ref.node;
+
+ if (node.shorthand) {
+ node.shorthand = false;
+ }
+ }
+ }
+ };
+};
+
+module.exports = exports["default"];
\ No newline at end of file
diff --git a/node_modules/babel-plugin-transform-es2015-shorthand-properties/package.json b/node_modules/babel-plugin-transform-es2015-shorthand-properties/package.json
new file mode 100644
index 0000000..c088519
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-shorthand-properties/package.json
@@ -0,0 +1,93 @@
+{
+ "_args": [
+ [
+ "babel-plugin-transform-es2015-shorthand-properties@^6.3.13",
+ "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-preset-es2015"
+ ]
+ ],
+ "_from": "babel-plugin-transform-es2015-shorthand-properties@>=6.3.13 <7.0.0",
+ "_id": "babel-plugin-transform-es2015-shorthand-properties@6.5.0",
+ "_inCache": true,
+ "_installable": true,
+ "_location": "/babel-plugin-transform-es2015-shorthand-properties",
+ "_nodeVersion": "5.1.0",
+ "_npmOperationalInternal": {
+ "host": "packages-9-west.internal.npmjs.com",
+ "tmp": "tmp/babel-plugin-transform-es2015-shorthand-properties-6.5.0.tgz_1454803662106_0.7431083004921675"
+ },
+ "_npmUser": {
+ "email": "hi@henryzoo.com",
+ "name": "hzoo"
+ },
+ "_npmVersion": "3.6.0",
+ "_phantomChildren": {},
+ "_requested": {
+ "name": "babel-plugin-transform-es2015-shorthand-properties",
+ "raw": "babel-plugin-transform-es2015-shorthand-properties@^6.3.13",
+ "rawSpec": "^6.3.13",
+ "scope": null,
+ "spec": ">=6.3.13 <7.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/babel-preset-es2015"
+ ],
+ "_resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.5.0.tgz",
+ "_shasum": "8d7c8fa332826546c86c94b83faf226ad0182559",
+ "_shrinkwrap": null,
+ "_spec": "babel-plugin-transform-es2015-shorthand-properties@^6.3.13",
+ "_where": "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-preset-es2015",
+ "dependencies": {
+ "babel-runtime": "^5.0.0",
+ "babel-types": "^6.3.13"
+ },
+ "description": "Compile ES2015 shorthand properties to ES5",
+ "devDependencies": {
+ "babel-helper-plugin-test-runner": "^6.3.13"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "8d7c8fa332826546c86c94b83faf226ad0182559",
+ "tarball": "http://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.5.0.tgz"
+ },
+ "keywords": [
+ "babel-plugin"
+ ],
+ "license": "MIT",
+ "main": "lib/index.js",
+ "maintainers": [
+ {
+ "name": "amasad",
+ "email": "amjad.masad@gmail.com"
+ },
+ {
+ "name": "hzoo",
+ "email": "hi@henryzoo.com"
+ },
+ {
+ "name": "jmm",
+ "email": "npm-public@jessemccarthy.net"
+ },
+ {
+ "name": "loganfsmyth",
+ "email": "loganfsmyth@gmail.com"
+ },
+ {
+ "name": "sebmck",
+ "email": "sebmck@gmail.com"
+ },
+ {
+ "name": "thejameskyle",
+ "email": "me@thejameskyle.com"
+ }
+ ],
+ "name": "babel-plugin-transform-es2015-shorthand-properties",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel/tree/master/packages/babel-plugin-transform-es2015-shorthand-properties"
+ },
+ "scripts": {},
+ "version": "6.5.0"
+}
diff --git a/node_modules/babel-plugin-transform-es2015-spread/.npmignore b/node_modules/babel-plugin-transform-es2015-spread/.npmignore
new file mode 100644
index 0000000..3185290
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-spread/.npmignore
@@ -0,0 +1,4 @@
+node_modules
+*.log
+src
+test
diff --git a/node_modules/babel-plugin-transform-es2015-spread/README.md b/node_modules/babel-plugin-transform-es2015-spread/README.md
new file mode 100644
index 0000000..62e9b38
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-spread/README.md
@@ -0,0 +1,45 @@
+# babel-plugin-transform-es2015-spread
+
+Compile ES2015 spread to ES5
+
+## Installation
+
+```sh
+$ npm install babel-plugin-transform-es2015-spread
+```
+
+## Usage
+
+### Via `.babelrc` (Recommended)
+
+**.babelrc**
+
+```js
+// without options
+{
+ "plugins": ["transform-es2015-spread"]
+}
+
+// with options
+{
+ "plugins": [
+ ["transform-es2015-spread", {
+ "loose": true
+ }]
+ ]
+}
+```
+
+### Via CLI
+
+```sh
+$ babel --plugins transform-es2015-spread script.js
+```
+
+### Via Node API
+
+```javascript
+require("babel-core").transform("code", {
+ plugins: ["transform-es2015-spread"]
+});
+```
diff --git a/node_modules/babel-plugin-transform-es2015-spread/lib/index.js b/node_modules/babel-plugin-transform-es2015-spread/lib/index.js
new file mode 100644
index 0000000..c7ba8dc
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-spread/lib/index.js
@@ -0,0 +1,140 @@
+"use strict";
+
+exports.__esModule = true;
+
+exports["default"] = function (_ref) {
+ var t = _ref.types;
+
+ function getSpreadLiteral(spread, scope, state) {
+ if (state.opts.loose && !t.isIdentifier(spread.argument, { name: "arguments" })) {
+ return spread.argument;
+ } else {
+ return scope.toArray(spread.argument, true);
+ }
+ }
+
+ function hasSpread(nodes) {
+ for (var i = 0; i < nodes.length; i++) {
+ if (t.isSpreadElement(nodes[i])) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ function build(props, scope, state) {
+ var nodes = [];
+
+ var _props = [];
+
+ function push() {
+ if (!_props.length) return;
+ nodes.push(t.arrayExpression(_props));
+ _props = [];
+ }
+
+ for (var _i = 0; _i < props.length; _i++) {
+ var prop = props[_i];
+ if (t.isSpreadElement(prop)) {
+ push();
+ nodes.push(getSpreadLiteral(prop, scope, state));
+ } else {
+ _props.push(prop);
+ }
+ }
+
+ push();
+
+ return nodes;
+ }
+
+ return {
+ visitor: {
+ ArrayExpression: function ArrayExpression(path, state) {
+ var node = path.node;
+ var scope = path.scope;
+
+ var elements = node.elements;
+ if (!hasSpread(elements)) return;
+
+ var nodes = build(elements, scope, state);
+ var first = nodes.shift();
+
+ if (!t.isArrayExpression(first)) {
+ nodes.unshift(first);
+ first = t.arrayExpression([]);
+ }
+
+ path.replaceWith(t.callExpression(t.memberExpression(first, t.identifier("concat")), nodes));
+ },
+
+ CallExpression: function CallExpression(path, state) {
+ var node = path.node;
+ var scope = path.scope;
+
+ var args = node.arguments;
+ if (!hasSpread(args)) return;
+
+ var calleePath = path.get("callee");
+ if (calleePath.isSuper()) return;
+
+ var contextLiteral = t.identifier("undefined");
+
+ node.arguments = [];
+
+ var nodes = undefined;
+ if (args.length === 1 && args[0].argument.name === "arguments") {
+ nodes = [args[0].argument];
+ } else {
+ nodes = build(args, scope, state);
+ }
+
+ var first = nodes.shift();
+ if (nodes.length) {
+ node.arguments.push(t.callExpression(t.memberExpression(first, t.identifier("concat")), nodes));
+ } else {
+ node.arguments.push(first);
+ }
+
+ var callee = node.callee;
+
+ if (calleePath.isMemberExpression()) {
+ var temp = scope.maybeGenerateMemoised(callee.object);
+ if (temp) {
+ callee.object = t.assignmentExpression("=", temp, callee.object);
+ contextLiteral = temp;
+ } else {
+ contextLiteral = callee.object;
+ }
+ t.appendToMemberExpression(callee, t.identifier("apply"));
+ } else {
+ node.callee = t.memberExpression(node.callee, t.identifier("apply"));
+ }
+
+ if (t.isSuper(contextLiteral)) {
+ contextLiteral = t.thisExpression();
+ }
+
+ node.arguments.unshift(contextLiteral);
+ },
+
+ NewExpression: function NewExpression(path, state) {
+ var node = path.node;
+ var scope = path.scope;
+
+ var args = node.arguments;
+ if (!hasSpread(args)) return;
+
+ var nodes = build(args, scope, state);
+
+ var context = t.arrayExpression([t.nullLiteral()]);
+
+ args = t.callExpression(t.memberExpression(context, t.identifier("concat")), nodes);
+
+ path.replaceWith(t.newExpression(t.callExpression(t.memberExpression(t.memberExpression(t.memberExpression(t.identifier("Function"), t.identifier("prototype")), t.identifier("bind")), t.identifier("apply")), [node.callee, args]), []));
+ }
+ }
+ };
+};
+
+module.exports = exports["default"];
\ No newline at end of file
diff --git a/node_modules/babel-plugin-transform-es2015-spread/package.json b/node_modules/babel-plugin-transform-es2015-spread/package.json
new file mode 100644
index 0000000..d8e20f0
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-spread/package.json
@@ -0,0 +1,92 @@
+{
+ "_args": [
+ [
+ "babel-plugin-transform-es2015-spread@^6.3.13",
+ "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-preset-es2015"
+ ]
+ ],
+ "_from": "babel-plugin-transform-es2015-spread@>=6.3.13 <7.0.0",
+ "_id": "babel-plugin-transform-es2015-spread@6.6.5",
+ "_inCache": true,
+ "_installable": true,
+ "_location": "/babel-plugin-transform-es2015-spread",
+ "_nodeVersion": "5.1.0",
+ "_npmOperationalInternal": {
+ "host": "packages-13-west.internal.npmjs.com",
+ "tmp": "tmp/babel-plugin-transform-es2015-spread-6.6.5.tgz_1457133419293_0.46392561472021043"
+ },
+ "_npmUser": {
+ "email": "hi@henryzoo.com",
+ "name": "hzoo"
+ },
+ "_npmVersion": "3.6.0",
+ "_phantomChildren": {},
+ "_requested": {
+ "name": "babel-plugin-transform-es2015-spread",
+ "raw": "babel-plugin-transform-es2015-spread@^6.3.13",
+ "rawSpec": "^6.3.13",
+ "scope": null,
+ "spec": ">=6.3.13 <7.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/babel-preset-es2015"
+ ],
+ "_resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.6.5.tgz",
+ "_shasum": "e1a496c686cc4710f40bc80465841dc1fac80511",
+ "_shrinkwrap": null,
+ "_spec": "babel-plugin-transform-es2015-spread@^6.3.13",
+ "_where": "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-preset-es2015",
+ "dependencies": {
+ "babel-runtime": "^5.0.0"
+ },
+ "description": "Compile ES2015 spread to ES5",
+ "devDependencies": {
+ "babel-helper-plugin-test-runner": "^6.3.13"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "e1a496c686cc4710f40bc80465841dc1fac80511",
+ "tarball": "http://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.6.5.tgz"
+ },
+ "keywords": [
+ "babel-plugin"
+ ],
+ "license": "MIT",
+ "main": "lib/index.js",
+ "maintainers": [
+ {
+ "name": "amasad",
+ "email": "amjad.masad@gmail.com"
+ },
+ {
+ "name": "hzoo",
+ "email": "hi@henryzoo.com"
+ },
+ {
+ "name": "jmm",
+ "email": "npm-public@jessemccarthy.net"
+ },
+ {
+ "name": "loganfsmyth",
+ "email": "loganfsmyth@gmail.com"
+ },
+ {
+ "name": "sebmck",
+ "email": "sebmck@gmail.com"
+ },
+ {
+ "name": "thejameskyle",
+ "email": "me@thejameskyle.com"
+ }
+ ],
+ "name": "babel-plugin-transform-es2015-spread",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel/tree/master/packages/babel-plugin-transform-es2015-spread"
+ },
+ "scripts": {},
+ "version": "6.6.5"
+}
diff --git a/node_modules/babel-plugin-transform-es2015-sticky-regex/.npmignore b/node_modules/babel-plugin-transform-es2015-sticky-regex/.npmignore
new file mode 100644
index 0000000..3185290
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-sticky-regex/.npmignore
@@ -0,0 +1,4 @@
+node_modules
+*.log
+src
+test
diff --git a/node_modules/babel-plugin-transform-es2015-sticky-regex/README.md b/node_modules/babel-plugin-transform-es2015-sticky-regex/README.md
new file mode 100644
index 0000000..61d17b5
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-sticky-regex/README.md
@@ -0,0 +1,35 @@
+# babel-plugin-transform-es2015-sticky-regex
+
+Compile ES2015 sticky regex to an ES5 RegExp constructor
+
+## Installation
+
+```sh
+$ npm install babel-plugin-transform-es2015-sticky-regex
+```
+
+## Usage
+
+### Via `.babelrc` (Recommended)
+
+**.babelrc**
+
+```json
+{
+ "plugins": ["transform-es2015-sticky-regex"]
+}
+```
+
+### Via CLI
+
+```sh
+$ babel --plugins transform-es2015-sticky-regex script.js
+```
+
+### Via Node API
+
+```javascript
+require("babel-core").transform("code", {
+ plugins: ["transform-es2015-sticky-regex"]
+});
+```
diff --git a/node_modules/babel-plugin-transform-es2015-sticky-regex/lib/index.js b/node_modules/babel-plugin-transform-es2015-sticky-regex/lib/index.js
new file mode 100644
index 0000000..fb67b30
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-sticky-regex/lib/index.js
@@ -0,0 +1,29 @@
+"use strict";
+
+var _interopRequireWildcard = require("babel-runtime/helpers/interop-require-wildcard")["default"];
+
+exports.__esModule = true;
+
+var _babelHelperRegex = require("babel-helper-regex");
+
+var regex = _interopRequireWildcard(_babelHelperRegex);
+
+var _babelTypes = require("babel-types");
+
+var t = _interopRequireWildcard(_babelTypes);
+
+exports["default"] = function () {
+ return {
+ visitor: {
+ RegExpLiteral: function RegExpLiteral(path) {
+ var node = path.node;
+
+ if (!regex.is(node, "y")) return;
+
+ path.replaceWith(t.newExpression(t.identifier("RegExp"), [t.stringLiteral(node.pattern), t.stringLiteral(node.flags)]));
+ }
+ }
+ };
+};
+
+module.exports = exports["default"];
\ No newline at end of file
diff --git a/node_modules/babel-plugin-transform-es2015-sticky-regex/package.json b/node_modules/babel-plugin-transform-es2015-sticky-regex/package.json
new file mode 100644
index 0000000..ddfb95a
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-sticky-regex/package.json
@@ -0,0 +1,94 @@
+{
+ "_args": [
+ [
+ "babel-plugin-transform-es2015-sticky-regex@^6.3.13",
+ "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-preset-es2015"
+ ]
+ ],
+ "_from": "babel-plugin-transform-es2015-sticky-regex@>=6.3.13 <7.0.0",
+ "_id": "babel-plugin-transform-es2015-sticky-regex@6.5.0",
+ "_inCache": true,
+ "_installable": true,
+ "_location": "/babel-plugin-transform-es2015-sticky-regex",
+ "_nodeVersion": "5.1.0",
+ "_npmOperationalInternal": {
+ "host": "packages-9-west.internal.npmjs.com",
+ "tmp": "tmp/babel-plugin-transform-es2015-sticky-regex-6.5.0.tgz_1454803663357_0.29958560317754745"
+ },
+ "_npmUser": {
+ "email": "hi@henryzoo.com",
+ "name": "hzoo"
+ },
+ "_npmVersion": "3.6.0",
+ "_phantomChildren": {},
+ "_requested": {
+ "name": "babel-plugin-transform-es2015-sticky-regex",
+ "raw": "babel-plugin-transform-es2015-sticky-regex@^6.3.13",
+ "rawSpec": "^6.3.13",
+ "scope": null,
+ "spec": ">=6.3.13 <7.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/babel-preset-es2015"
+ ],
+ "_resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.5.0.tgz",
+ "_shasum": "eb8bb6b474d2c0a4d8855f05fe4f5b197c45b49c",
+ "_shrinkwrap": null,
+ "_spec": "babel-plugin-transform-es2015-sticky-regex@^6.3.13",
+ "_where": "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-preset-es2015",
+ "dependencies": {
+ "babel-helper-regex": "^6.3.13",
+ "babel-runtime": "^5.0.0",
+ "babel-types": "^6.3.13"
+ },
+ "description": "Compile ES2015 sticky regex to an ES5 RegExp constructor",
+ "devDependencies": {
+ "babel-helper-plugin-test-runner": "^6.3.13"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "eb8bb6b474d2c0a4d8855f05fe4f5b197c45b49c",
+ "tarball": "http://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.5.0.tgz"
+ },
+ "keywords": [
+ "babel-plugin"
+ ],
+ "license": "MIT",
+ "main": "lib/index.js",
+ "maintainers": [
+ {
+ "name": "amasad",
+ "email": "amjad.masad@gmail.com"
+ },
+ {
+ "name": "hzoo",
+ "email": "hi@henryzoo.com"
+ },
+ {
+ "name": "jmm",
+ "email": "npm-public@jessemccarthy.net"
+ },
+ {
+ "name": "loganfsmyth",
+ "email": "loganfsmyth@gmail.com"
+ },
+ {
+ "name": "sebmck",
+ "email": "sebmck@gmail.com"
+ },
+ {
+ "name": "thejameskyle",
+ "email": "me@thejameskyle.com"
+ }
+ ],
+ "name": "babel-plugin-transform-es2015-sticky-regex",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel/tree/master/packages/babel-plugin-transform-es2015-sticky-regex"
+ },
+ "scripts": {},
+ "version": "6.5.0"
+}
diff --git a/node_modules/babel-plugin-transform-es2015-template-literals/.npmignore b/node_modules/babel-plugin-transform-es2015-template-literals/.npmignore
new file mode 100644
index 0000000..3185290
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-template-literals/.npmignore
@@ -0,0 +1,4 @@
+node_modules
+*.log
+src
+test
diff --git a/node_modules/babel-plugin-transform-es2015-template-literals/README.md b/node_modules/babel-plugin-transform-es2015-template-literals/README.md
new file mode 100644
index 0000000..ef61c1b
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-template-literals/README.md
@@ -0,0 +1,46 @@
+# babel-plugin-transform-es2015-template-literals
+
+Compile ES2015 template literals to ES5
+
+## Installation
+
+```sh
+$ npm install babel-plugin-transform-es2015-template-literals
+```
+
+## Usage
+
+### Via `.babelrc` (Recommended)
+
+**.babelrc**
+
+```js
+// without options
+{
+ "plugins": ["transform-es2015-template-literals"]
+}
+
+// with options
+{
+ "plugins": [
+ ["transform-es2015-template-literals", {
+ "loose": true,
+ "spec": true
+ }]
+ ]
+}
+```
+
+### Via CLI
+
+```sh
+$ babel --plugins transform-es2015-template-literals script.js
+```
+
+### Via Node API
+
+```javascript
+require("babel-core").transform("code", {
+ plugins: ["transform-es2015-template-literals"]
+});
+```
diff --git a/node_modules/babel-plugin-transform-es2015-template-literals/lib/index.js b/node_modules/babel-plugin-transform-es2015-template-literals/lib/index.js
new file mode 100644
index 0000000..c820430
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-template-literals/lib/index.js
@@ -0,0 +1,96 @@
+"use strict";
+
+exports.__esModule = true;
+
+exports["default"] = function (_ref) {
+ var t = _ref.types;
+
+ function isString(node) {
+ return t.isLiteral(node) && typeof node.value === "string";
+ }
+
+ function buildBinaryExpression(left, right) {
+ return t.binaryExpression("+", left, right);
+ }
+
+ return {
+ visitor: {
+ TaggedTemplateExpression: function TaggedTemplateExpression(path, state) {
+ var node = path.node;
+
+ var quasi = node.quasi;
+ var args = [];
+
+ var strings = [];
+ var raw = [];
+
+ var _arr = quasi.quasis;
+ for (var _i = 0; _i < _arr.length; _i++) {
+ var elem = _arr[_i];
+ strings.push(t.stringLiteral(elem.value.cooked));
+ raw.push(t.stringLiteral(elem.value.raw));
+ }
+
+ strings = t.arrayExpression(strings);
+ raw = t.arrayExpression(raw);
+
+ var templateName = "taggedTemplateLiteral";
+ if (state.opts.loose) templateName += "Loose";
+
+ var templateObject = state.file.addTemplateObject(templateName, strings, raw);
+ args.push(templateObject);
+
+ args = args.concat(quasi.expressions);
+
+ path.replaceWith(t.callExpression(node.tag, args));
+ },
+
+ TemplateLiteral: function TemplateLiteral(path, state) {
+ var nodes = [];
+
+ var expressions = path.get("expressions");
+
+ var _arr2 = path.node.quasis;
+ for (var _i2 = 0; _i2 < _arr2.length; _i2++) {
+ var elem = _arr2[_i2];
+ nodes.push(t.stringLiteral(elem.value.cooked));
+
+ var expr = expressions.shift();
+ if (expr) {
+ if (state.opts.spec && !expr.isBaseType("string") && !expr.isBaseType("number")) {
+ nodes.push(t.callExpression(t.identifier("String"), [expr.node]));
+ } else {
+ nodes.push(expr.node);
+ }
+ }
+ }
+
+ // filter out empty string literals
+ nodes = nodes.filter(function (n) {
+ return !t.isLiteral(n, { value: "" });
+ });
+
+ // since `+` is left-to-right associative
+ // ensure the first node is a string if first/second isn't
+ if (!isString(nodes[0]) && !isString(nodes[1])) {
+ nodes.unshift(t.stringLiteral(""));
+ }
+
+ if (nodes.length > 1) {
+ var root = buildBinaryExpression(nodes.shift(), nodes.shift());
+
+ for (var _i3 = 0; _i3 < nodes.length; _i3++) {
+ var node = nodes[_i3];
+ root = buildBinaryExpression(root, node);
+ }
+
+ path.replaceWith(root);
+ } else {
+ path.replaceWith(nodes[0]);
+ }
+ }
+ }
+ };
+};
+
+module.exports = exports["default"];
\ No newline at end of file
diff --git a/node_modules/babel-plugin-transform-es2015-template-literals/package.json b/node_modules/babel-plugin-transform-es2015-template-literals/package.json
new file mode 100644
index 0000000..ddd5c7a
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-template-literals/package.json
@@ -0,0 +1,92 @@
+{
+ "_args": [
+ [
+ "babel-plugin-transform-es2015-template-literals@^6.6.0",
+ "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-preset-es2015"
+ ]
+ ],
+ "_from": "babel-plugin-transform-es2015-template-literals@>=6.6.0 <7.0.0",
+ "_id": "babel-plugin-transform-es2015-template-literals@6.6.5",
+ "_inCache": true,
+ "_installable": true,
+ "_location": "/babel-plugin-transform-es2015-template-literals",
+ "_nodeVersion": "5.1.0",
+ "_npmOperationalInternal": {
+ "host": "packages-13-west.internal.npmjs.com",
+ "tmp": "tmp/babel-plugin-transform-es2015-template-literals-6.6.5.tgz_1457133419865_0.9353867066092789"
+ },
+ "_npmUser": {
+ "email": "hi@henryzoo.com",
+ "name": "hzoo"
+ },
+ "_npmVersion": "3.6.0",
+ "_phantomChildren": {},
+ "_requested": {
+ "name": "babel-plugin-transform-es2015-template-literals",
+ "raw": "babel-plugin-transform-es2015-template-literals@^6.6.0",
+ "rawSpec": "^6.6.0",
+ "scope": null,
+ "spec": ">=6.6.0 <7.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/babel-preset-es2015"
+ ],
+ "_resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.6.5.tgz",
+ "_shasum": "f403aa2651e29606cf02884c3ca09bd8d2163c5e",
+ "_shrinkwrap": null,
+ "_spec": "babel-plugin-transform-es2015-template-literals@^6.6.0",
+ "_where": "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-preset-es2015",
+ "dependencies": {
+ "babel-runtime": "^5.0.0"
+ },
+ "description": "Compile ES2015 template literals to ES5",
+ "devDependencies": {
+ "babel-helper-plugin-test-runner": "^6.3.13"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "f403aa2651e29606cf02884c3ca09bd8d2163c5e",
+ "tarball": "http://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.6.5.tgz"
+ },
+ "keywords": [
+ "babel-plugin"
+ ],
+ "license": "MIT",
+ "main": "lib/index.js",
+ "maintainers": [
+ {
+ "name": "amasad",
+ "email": "amjad.masad@gmail.com"
+ },
+ {
+ "name": "hzoo",
+ "email": "hi@henryzoo.com"
+ },
+ {
+ "name": "jmm",
+ "email": "npm-public@jessemccarthy.net"
+ },
+ {
+ "name": "loganfsmyth",
+ "email": "loganfsmyth@gmail.com"
+ },
+ {
+ "name": "sebmck",
+ "email": "sebmck@gmail.com"
+ },
+ {
+ "name": "thejameskyle",
+ "email": "me@thejameskyle.com"
+ }
+ ],
+ "name": "babel-plugin-transform-es2015-template-literals",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel/tree/master/packages/babel-plugin-transform-es2015-template-literals"
+ },
+ "scripts": {},
+ "version": "6.6.5"
+}
diff --git a/node_modules/babel-plugin-transform-es2015-typeof-symbol/.npmignore b/node_modules/babel-plugin-transform-es2015-typeof-symbol/.npmignore
new file mode 100644
index 0000000..47cdd2c
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-typeof-symbol/.npmignore
@@ -0,0 +1,3 @@
+src
+test
+node_modules
diff --git a/node_modules/babel-plugin-transform-es2015-typeof-symbol/README.md b/node_modules/babel-plugin-transform-es2015-typeof-symbol/README.md
new file mode 100644
index 0000000..63fe821
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-typeof-symbol/README.md
@@ -0,0 +1,33 @@
+# babel-plugin-transform-es2015-typeof-symbol
+
+## Installation
+
+```sh
+$ npm install babel-plugin-transform-es2015-typeof-symbol
+```
+
+## Usage
+
+### Via `.babelrc` (Recommended)
+
+**.babelrc**
+
+```json
+{
+ "plugins": ["transform-es2015-typeof-symbol"]
+}
+```
+
+### Via CLI
+
+```sh
+$ babel --plugins transform-es2015-typeof-symbol script.js
+```
+
+### Via Node API
+
+```javascript
+require("babel-core").transform("code", {
+ plugins: ["transform-es2015-typeof-symbol"]
+});
+```
diff --git a/node_modules/babel-plugin-transform-es2015-typeof-symbol/lib/index.js b/node_modules/babel-plugin-transform-es2015-typeof-symbol/lib/index.js
new file mode 100644
index 0000000..5fa0d6a
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-typeof-symbol/lib/index.js
@@ -0,0 +1,59 @@
+/* eslint max-len: 0 */
+
+"use strict";
+
+var _Symbol = require("babel-runtime/core-js/symbol")["default"];
+
+exports.__esModule = true;
+
+exports["default"] = function (_ref) {
+ var t = _ref.types;
+
+ var IGNORE = _Symbol();
+
+ return {
+ visitor: {
+ Scope: function Scope(_ref2) {
+ var scope = _ref2.scope;
+
+ if (!scope.getBinding("Symbol")) {
+ return;
+ }
+
+ scope.rename("Symbol");
+ },
+
+ UnaryExpression: function UnaryExpression(path) {
+ var node = path.node;
+ var parent = path.parent;
+
+ if (node[IGNORE]) return;
+ if (path.find(function (path) {
+ return path.node && !!path.node._generated;
+ })) return;
+
+ if (path.parentPath.isBinaryExpression() && t.EQUALITY_BINARY_OPERATORS.indexOf(parent.operator) >= 0) {
+ // optimise `typeof foo === "string"` since we can determine that they'll never need to handle symbols
+ var opposite = path.getOpposite();
+ if (opposite.isLiteral() && opposite.node.value !== "symbol" && opposite.node.value !== "object") {
+ return;
+ }
+ }
+
+ if (node.operator === "typeof") {
+ var call = t.callExpression(this.addHelper("typeof"), [node.argument]);
+ if (path.get("argument").isIdentifier()) {
+ var undefLiteral = t.stringLiteral("undefined");
+ var unary = t.unaryExpression("typeof", node.argument);
+ unary[IGNORE] = true;
+ path.replaceWith(t.conditionalExpression(t.binaryExpression("===", unary, undefLiteral), undefLiteral, call));
+ } else {
+ path.replaceWith(call);
+ }
+ }
+ }
+ }
+ };
+};
+
+module.exports = exports["default"];
\ No newline at end of file
diff --git a/node_modules/babel-plugin-transform-es2015-typeof-symbol/package.json b/node_modules/babel-plugin-transform-es2015-typeof-symbol/package.json
new file mode 100644
index 0000000..ef300b9
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-typeof-symbol/package.json
@@ -0,0 +1,92 @@
+{
+ "_args": [
+ [
+ "babel-plugin-transform-es2015-typeof-symbol@^6.6.0",
+ "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-preset-es2015"
+ ]
+ ],
+ "_from": "babel-plugin-transform-es2015-typeof-symbol@>=6.6.0 <7.0.0",
+ "_id": "babel-plugin-transform-es2015-typeof-symbol@6.6.0",
+ "_inCache": true,
+ "_installable": true,
+ "_location": "/babel-plugin-transform-es2015-typeof-symbol",
+ "_nodeVersion": "5.1.0",
+ "_npmOperationalInternal": {
+ "host": "packages-5-east.internal.npmjs.com",
+ "tmp": "tmp/babel-plugin-transform-es2015-typeof-symbol-6.6.0.tgz_1456780371882_0.526786234928295"
+ },
+ "_npmUser": {
+ "email": "hi@henryzoo.com",
+ "name": "hzoo"
+ },
+ "_npmVersion": "3.6.0",
+ "_phantomChildren": {},
+ "_requested": {
+ "name": "babel-plugin-transform-es2015-typeof-symbol",
+ "raw": "babel-plugin-transform-es2015-typeof-symbol@^6.6.0",
+ "rawSpec": "^6.6.0",
+ "scope": null,
+ "spec": ">=6.6.0 <7.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/babel-preset-es2015"
+ ],
+ "_resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.6.0.tgz",
+ "_shasum": "479d66f966047ff1c18af233c3d12d4d0679dd38",
+ "_shrinkwrap": null,
+ "_spec": "babel-plugin-transform-es2015-typeof-symbol@^6.6.0",
+ "_where": "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-preset-es2015",
+ "dependencies": {
+ "babel-runtime": "^5.0.0"
+ },
+ "description": "## Installation",
+ "devDependencies": {
+ "babel-helper-plugin-test-runner": "^6.3.13"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "479d66f966047ff1c18af233c3d12d4d0679dd38",
+ "tarball": "http://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.6.0.tgz"
+ },
+ "keywords": [
+ "babel-plugin"
+ ],
+ "license": "MIT",
+ "main": "lib/index.js",
+ "maintainers": [
+ {
+ "name": "amasad",
+ "email": "amjad.masad@gmail.com"
+ },
+ {
+ "name": "hzoo",
+ "email": "hi@henryzoo.com"
+ },
+ {
+ "name": "jmm",
+ "email": "npm-public@jessemccarthy.net"
+ },
+ {
+ "name": "loganfsmyth",
+ "email": "loganfsmyth@gmail.com"
+ },
+ {
+ "name": "sebmck",
+ "email": "sebmck@gmail.com"
+ },
+ {
+ "name": "thejameskyle",
+ "email": "me@thejameskyle.com"
+ }
+ ],
+ "name": "babel-plugin-transform-es2015-typeof-symbol",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel/tree/master/packages/babel-plugin-transform-es2015-typeof-symbol"
+ },
+ "scripts": {},
+ "version": "6.6.0"
+}
diff --git a/node_modules/babel-plugin-transform-es2015-unicode-regex/.npmignore b/node_modules/babel-plugin-transform-es2015-unicode-regex/.npmignore
new file mode 100644
index 0000000..3185290
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-unicode-regex/.npmignore
@@ -0,0 +1,4 @@
+node_modules
+*.log
+src
+test
diff --git a/node_modules/babel-plugin-transform-es2015-unicode-regex/README.md b/node_modules/babel-plugin-transform-es2015-unicode-regex/README.md
new file mode 100644
index 0000000..99a694c
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-unicode-regex/README.md
@@ -0,0 +1,35 @@
+# babel-plugin-transform-es2015-unicode-regex
+
+Compile ES2015 unicode regex to ES5
+
+## Installation
+
+```sh
+$ npm install babel-plugin-transform-es2015-unicode-regex
+```
+
+## Usage
+
+### Via `.babelrc` (Recommended)
+
+**.babelrc**
+
+```json
+{
+ "plugins": ["transform-es2015-unicode-regex"]
+}
+```
+
+### Via CLI
+
+```sh
+$ babel --plugins transform-es2015-unicode-regex script.js
+```
+
+### Via Node API
+
+```javascript
+require("babel-core").transform("code", {
+ plugins: ["transform-es2015-unicode-regex"]
+});
+```
diff --git a/node_modules/babel-plugin-transform-es2015-unicode-regex/lib/index.js b/node_modules/babel-plugin-transform-es2015-unicode-regex/lib/index.js
new file mode 100644
index 0000000..228e47a
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-unicode-regex/lib/index.js
@@ -0,0 +1,31 @@
+"use strict";
+
+var _interopRequireDefault = require("babel-runtime/helpers/interop-require-default")["default"];
+
+var _interopRequireWildcard = require("babel-runtime/helpers/interop-require-wildcard")["default"];
+
+exports.__esModule = true;
+
+var _regexpuCore = require("regexpu-core");
+
+var _regexpuCore2 = _interopRequireDefault(_regexpuCore);
+
+var _babelHelperRegex = require("babel-helper-regex");
+
+var regex = _interopRequireWildcard(_babelHelperRegex);
+
+exports["default"] = function () {
+ return {
+ visitor: {
+ RegExpLiteral: function RegExpLiteral(_ref) {
+ var node = _ref.node;
+
+ if (!regex.is(node, "u")) return;
+ node.pattern = _regexpuCore2["default"](node.pattern, node.flags);
+ regex.pullFlag(node, "u");
+ }
+ }
+ };
+};
+
+module.exports = exports["default"];
\ No newline at end of file
diff --git a/node_modules/babel-plugin-transform-es2015-unicode-regex/package.json b/node_modules/babel-plugin-transform-es2015-unicode-regex/package.json
new file mode 100644
index 0000000..7284123
--- /dev/null
+++ b/node_modules/babel-plugin-transform-es2015-unicode-regex/package.json
@@ -0,0 +1,94 @@
+{
+ "_args": [
+ [
+ "babel-plugin-transform-es2015-unicode-regex@^6.3.13",
+ "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-preset-es2015"
+ ]
+ ],
+ "_from": "babel-plugin-transform-es2015-unicode-regex@>=6.3.13 <7.0.0",
+ "_id": "babel-plugin-transform-es2015-unicode-regex@6.5.0",
+ "_inCache": true,
+ "_installable": true,
+ "_location": "/babel-plugin-transform-es2015-unicode-regex",
+ "_nodeVersion": "5.1.0",
+ "_npmOperationalInternal": {
+ "host": "packages-9-west.internal.npmjs.com",
+ "tmp": "tmp/babel-plugin-transform-es2015-unicode-regex-6.5.0.tgz_1454803665895_0.8708328858483583"
+ },
+ "_npmUser": {
+ "email": "hi@henryzoo.com",
+ "name": "hzoo"
+ },
+ "_npmVersion": "3.6.0",
+ "_phantomChildren": {},
+ "_requested": {
+ "name": "babel-plugin-transform-es2015-unicode-regex",
+ "raw": "babel-plugin-transform-es2015-unicode-regex@^6.3.13",
+ "rawSpec": "^6.3.13",
+ "scope": null,
+ "spec": ">=6.3.13 <7.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/babel-preset-es2015"
+ ],
+ "_resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.5.0.tgz",
+ "_shasum": "f53143d2df3db96b830c8162510b36758016ddef",
+ "_shrinkwrap": null,
+ "_spec": "babel-plugin-transform-es2015-unicode-regex@^6.3.13",
+ "_where": "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-preset-es2015",
+ "dependencies": {
+ "babel-helper-regex": "^6.3.13",
+ "babel-runtime": "^5.0.0",
+ "regexpu-core": "^1.0.0"
+ },
+ "description": "Compile ES2015 unicode regex to ES5",
+ "devDependencies": {
+ "babel-helper-plugin-test-runner": "^6.3.13"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "f53143d2df3db96b830c8162510b36758016ddef",
+ "tarball": "http://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.5.0.tgz"
+ },
+ "keywords": [
+ "babel-plugin"
+ ],
+ "license": "MIT",
+ "main": "lib/index.js",
+ "maintainers": [
+ {
+ "name": "amasad",
+ "email": "amjad.masad@gmail.com"
+ },
+ {
+ "name": "hzoo",
+ "email": "hi@henryzoo.com"
+ },
+ {
+ "name": "jmm",
+ "email": "npm-public@jessemccarthy.net"
+ },
+ {
+ "name": "loganfsmyth",
+ "email": "loganfsmyth@gmail.com"
+ },
+ {
+ "name": "sebmck",
+ "email": "sebmck@gmail.com"
+ },
+ {
+ "name": "thejameskyle",
+ "email": "me@thejameskyle.com"
+ }
+ ],
+ "name": "babel-plugin-transform-es2015-unicode-regex",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel/tree/master/packages/babel-plugin-transform-es2015-unicode-regex"
+ },
+ "scripts": {},
+ "version": "6.5.0"
+}
diff --git a/node_modules/babel-plugin-transform-flow-strip-types/.npmignore b/node_modules/babel-plugin-transform-flow-strip-types/.npmignore
new file mode 100644
index 0000000..3185290
--- /dev/null
+++ b/node_modules/babel-plugin-transform-flow-strip-types/.npmignore
@@ -0,0 +1,4 @@
+node_modules
+*.log
+src
+test
diff --git a/node_modules/babel-plugin-transform-flow-strip-types/README.md b/node_modules/babel-plugin-transform-flow-strip-types/README.md
new file mode 100644
index 0000000..f846bd2
--- /dev/null
+++ b/node_modules/babel-plugin-transform-flow-strip-types/README.md
@@ -0,0 +1,35 @@
+# babel-plugin-transform-flow-strip-types
+
+Strip flow type annotations from your output code.
+
+## Installation
+
+```sh
+$ npm install babel-plugin-transform-flow-strip-types
+```
+
+## Usage
+
+### Via `.babelrc` (Recommended)
+
+**.babelrc**
+
+```json
+{
+ "plugins": ["transform-flow-strip-types"]
+}
+```
+
+### Via CLI
+
+```sh
+$ babel --plugins transform-flow-strip-types script.js
+```
+
+### Via Node API
+
+```javascript
+require("babel-core").transform("code", {
+ plugins: ["transform-flow-strip-types"]
+});
+```
diff --git a/node_modules/babel-plugin-transform-flow-strip-types/lib/index.js b/node_modules/babel-plugin-transform-flow-strip-types/lib/index.js
new file mode 100644
index 0000000..d472903
--- /dev/null
+++ b/node_modules/babel-plugin-transform-flow-strip-types/lib/index.js
@@ -0,0 +1,66 @@
+"use strict";
+
+exports.__esModule = true;
+
+exports["default"] = function (_ref) {
+ var t = _ref.types;
+
+ var FLOW_DIRECTIVE = "@flow";
+
+ return {
+ inherits: require("babel-plugin-syntax-flow"),
+
+ visitor: {
+ Program: function Program(path, _ref2) {
+ var comments = _ref2.file.ast.comments;
+ var _arr = comments;
+
+ for (var _i = 0; _i < _arr.length; _i++) {
+ var comment = _arr[_i];
+ if (comment.value.indexOf(FLOW_DIRECTIVE) >= 0) {
+ // remove flow directive
+ comment.value = comment.value.replace(FLOW_DIRECTIVE, "");
+
+ // remove the comment completely if it only consists of whitespace and/or stars
+ if (!comment.value.replace(/\*/g, "").trim()) comment.ignore = true;
+ }
+ }
+ },
+
+ Flow: function Flow(path) {
+ path.remove();
+ },
+
+ ClassProperty: function ClassProperty(path) {
+ path.node.typeAnnotation = null;
+ if (!path.node.value) path.remove();
+ },
+
+ Class: function Class(_ref3) {
+ var node = _ref3.node;
+
+ node["implements"] = null;
+ },
+
+ Function: function Function(_ref4) {
+ var node = _ref4.node;
+
+ for (var i = 0; i < node.params.length; i++) {
+ var param = node.params[i];
+ param.optional = false;
+ }
+ },
+
+ TypeCastExpression: function TypeCastExpression(path) {
+ var node = path.node;
+
+ do {
+ node = node.expression;
+ } while (t.isTypeCastExpression(node));
+ path.replaceWith(node);
+ }
+ }
+ };
+};
+
+module.exports = exports["default"];
\ No newline at end of file
diff --git a/node_modules/babel-plugin-transform-flow-strip-types/package.json b/node_modules/babel-plugin-transform-flow-strip-types/package.json
new file mode 100644
index 0000000..b704ff6
--- /dev/null
+++ b/node_modules/babel-plugin-transform-flow-strip-types/package.json
@@ -0,0 +1,93 @@
+{
+ "_args": [
+ [
+ "babel-plugin-transform-flow-strip-types@^6.3.13",
+ "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-preset-react"
+ ]
+ ],
+ "_from": "babel-plugin-transform-flow-strip-types@>=6.3.13 <7.0.0",
+ "_id": "babel-plugin-transform-flow-strip-types@6.7.0",
+ "_inCache": true,
+ "_installable": true,
+ "_location": "/babel-plugin-transform-flow-strip-types",
+ "_nodeVersion": "5.5.0",
+ "_npmOperationalInternal": {
+ "host": "packages-12-west.internal.npmjs.com",
+ "tmp": "tmp/babel-plugin-transform-flow-strip-types-6.7.0.tgz_1457484781821_0.697082552826032"
+ },
+ "_npmUser": {
+ "email": "amjad.masad@gmail.com",
+ "name": "amasad"
+ },
+ "_npmVersion": "3.3.12",
+ "_phantomChildren": {},
+ "_requested": {
+ "name": "babel-plugin-transform-flow-strip-types",
+ "raw": "babel-plugin-transform-flow-strip-types@^6.3.13",
+ "rawSpec": "^6.3.13",
+ "scope": null,
+ "spec": ">=6.3.13 <7.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/babel-preset-react"
+ ],
+ "_resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.7.0.tgz",
+ "_shasum": "ebbdc8e44320b875bdb3c1c12b2e317f21f49837",
+ "_shrinkwrap": null,
+ "_spec": "babel-plugin-transform-flow-strip-types@^6.3.13",
+ "_where": "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-preset-react",
+ "dependencies": {
+ "babel-plugin-syntax-flow": "^6.3.13",
+ "babel-runtime": "^5.0.0"
+ },
+ "description": "Strip flow type annotations from your output code.",
+ "devDependencies": {
+ "babel-helper-plugin-test-runner": "^6.3.13"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "ebbdc8e44320b875bdb3c1c12b2e317f21f49837",
+ "tarball": "http://registry.npmjs.org/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.7.0.tgz"
+ },
+ "keywords": [
+ "babel-plugin"
+ ],
+ "license": "MIT",
+ "main": "lib/index.js",
+ "maintainers": [
+ {
+ "name": "amasad",
+ "email": "amjad.masad@gmail.com"
+ },
+ {
+ "name": "hzoo",
+ "email": "hi@henryzoo.com"
+ },
+ {
+ "name": "jmm",
+ "email": "npm-public@jessemccarthy.net"
+ },
+ {
+ "name": "loganfsmyth",
+ "email": "loganfsmyth@gmail.com"
+ },
+ {
+ "name": "sebmck",
+ "email": "sebmck@gmail.com"
+ },
+ {
+ "name": "thejameskyle",
+ "email": "me@thejameskyle.com"
+ }
+ ],
+ "name": "babel-plugin-transform-flow-strip-types",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel/tree/master/packages/babel-plugin-transform-flow-strip-types"
+ },
+ "scripts": {},
+ "version": "6.7.0"
+}
diff --git a/node_modules/babel-plugin-transform-react-display-name/.npmignore b/node_modules/babel-plugin-transform-react-display-name/.npmignore
new file mode 100644
index 0000000..3185290
--- /dev/null
+++ b/node_modules/babel-plugin-transform-react-display-name/.npmignore
@@ -0,0 +1,4 @@
+node_modules
+*.log
+src
+test
diff --git a/node_modules/babel-plugin-transform-react-display-name/README.md b/node_modules/babel-plugin-transform-react-display-name/README.md
new file mode 100644
index 0000000..1eeb49c
--- /dev/null
+++ b/node_modules/babel-plugin-transform-react-display-name/README.md
@@ -0,0 +1,35 @@
+# babel-plugin-transform-react-display-name
+
+Add displayName to React.createClass calls
+
+## Installation
+
+```sh
+$ npm install babel-plugin-transform-react-display-name
+```
+
+## Usage
+
+### Via `.babelrc` (Recommended)
+
+**.babelrc**
+
+```json
+{
+ "plugins": ["transform-react-display-name"]
+}
+```
+
+### Via CLI
+
+```sh
+$ babel --plugins transform-react-display-name script.js
+```
+
+### Via Node API
+
+```javascript
+require("babel-core").transform("code", {
+ plugins: ["transform-react-display-name"]
+});
+```
diff --git a/node_modules/babel-plugin-transform-react-display-name/lib/index.js b/node_modules/babel-plugin-transform-react-display-name/lib/index.js
new file mode 100644
index 0000000..1281432
--- /dev/null
+++ b/node_modules/babel-plugin-transform-react-display-name/lib/index.js
@@ -0,0 +1,109 @@
+"use strict";
+
+var _interopRequireDefault = require("babel-runtime/helpers/interop-require-default")["default"];
+
+exports.__esModule = true;
+
+var _path = require("path");
+
+var _path2 = _interopRequireDefault(_path);
+
+exports["default"] = function (_ref) {
+ var t = _ref.types;
+
+ function addDisplayName(id, call) {
+ var props = call.arguments[0].properties;
+ var safe = true;
+
+ for (var i = 0; i < props.length; i++) {
+ var prop = props[i];
+ var key = t.toComputedKey(prop);
+ if (t.isLiteral(key, { value: "displayName" })) {
+ safe = false;
+ break;
+ }
+ }
+
+ if (safe) {
+ props.unshift(t.objectProperty(t.identifier("displayName"), t.stringLiteral(id)));
+ }
+ }
+
+ var isCreateClassCallExpression = t.buildMatchMemberExpression("React.createClass");
+
+ function isCreateClass(node) {
+ if (!node || !t.isCallExpression(node)) return false;
+
+ // not React.createClass call member object
+ if (!isCreateClassCallExpression(node.callee)) return false;
+
+ // no call arguments
+ var args = node.arguments;
+ if (args.length !== 1) return false;
+
+ // first node arg is not an object
+ var first = args[0];
+ if (!t.isObjectExpression(first)) return false;
+
+ return true;
+ }
+
+ return {
+ visitor: {
+ ExportDefaultDeclaration: function ExportDefaultDeclaration(_ref2, state) {
+ var node = _ref2.node;
+
+ if (isCreateClass(node.declaration)) {
+ var displayName = state.file.opts.basename;
+
+ // ./{module name}/index.js
+ if (displayName === "index") {
+ displayName = _path2["default"].basename(_path2["default"].dirname(state.file.opts.filename));
+ }
+
+ addDisplayName(displayName, node.declaration);
+ }
+ },
+
+ CallExpression: function CallExpression(path) {
+ var node = path.node;
+
+ if (!isCreateClass(node)) return;
+
+ var id = undefined;
+
+ // crawl up the ancestry looking for possible candidates for displayName inference
+ path.find(function (path) {
+ if (path.isAssignmentExpression()) {
+ id = path.node.left;
+ } else if (path.isObjectProperty()) {
+ id = path.node.key;
+ } else if (path.isVariableDeclarator()) {
+ id = path.node.id;
+ } else if (path.isStatement()) {
+ // we've hit a statement, we should stop crawling up
+ return true;
+ }
+
+ // we've got an id! no need to continue
+ if (id) return true;
+ });
+
+ // ensure that we have an identifier we can inherit from
+ if (!id) return;
+
+ // foo.bar -> bar
+ if (t.isMemberExpression(id)) {
+ id = id.property;
+ }
+
+ // identifiers are the only thing we can reliably get a name from
+ if (t.isIdentifier(id)) {
+ addDisplayName(id.name, node);
+ }
+ }
+ }
+ };
+};
+
+module.exports = exports["default"];
\ No newline at end of file
diff --git a/node_modules/babel-plugin-transform-react-display-name/package.json b/node_modules/babel-plugin-transform-react-display-name/package.json
new file mode 100644
index 0000000..94fb583
--- /dev/null
+++ b/node_modules/babel-plugin-transform-react-display-name/package.json
@@ -0,0 +1,92 @@
+{
+ "_args": [
+ [
+ "babel-plugin-transform-react-display-name@^6.3.13",
+ "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-preset-react"
+ ]
+ ],
+ "_from": "babel-plugin-transform-react-display-name@>=6.3.13 <7.0.0",
+ "_id": "babel-plugin-transform-react-display-name@6.5.0",
+ "_inCache": true,
+ "_installable": true,
+ "_location": "/babel-plugin-transform-react-display-name",
+ "_nodeVersion": "5.1.0",
+ "_npmOperationalInternal": {
+ "host": "packages-9-west.internal.npmjs.com",
+ "tmp": "tmp/babel-plugin-transform-react-display-name-6.5.0.tgz_1454803685937_0.3640021972823888"
+ },
+ "_npmUser": {
+ "email": "hi@henryzoo.com",
+ "name": "hzoo"
+ },
+ "_npmVersion": "3.6.0",
+ "_phantomChildren": {},
+ "_requested": {
+ "name": "babel-plugin-transform-react-display-name",
+ "raw": "babel-plugin-transform-react-display-name@^6.3.13",
+ "rawSpec": "^6.3.13",
+ "scope": null,
+ "spec": ">=6.3.13 <7.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/babel-preset-react"
+ ],
+ "_resolved": "https://registry.npmjs.org/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.5.0.tgz",
+ "_shasum": "99bf7794e324aaf14983c01375db4f8cdef84bb7",
+ "_shrinkwrap": null,
+ "_spec": "babel-plugin-transform-react-display-name@^6.3.13",
+ "_where": "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-preset-react",
+ "dependencies": {
+ "babel-runtime": "^5.0.0"
+ },
+ "description": "Add displayName to React.createClass calls",
+ "devDependencies": {
+ "babel-helper-plugin-test-runner": "^6.3.13"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "99bf7794e324aaf14983c01375db4f8cdef84bb7",
+ "tarball": "http://registry.npmjs.org/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.5.0.tgz"
+ },
+ "keywords": [
+ "babel-plugin"
+ ],
+ "license": "MIT",
+ "main": "lib/index.js",
+ "maintainers": [
+ {
+ "name": "amasad",
+ "email": "amjad.masad@gmail.com"
+ },
+ {
+ "name": "hzoo",
+ "email": "hi@henryzoo.com"
+ },
+ {
+ "name": "jmm",
+ "email": "npm-public@jessemccarthy.net"
+ },
+ {
+ "name": "loganfsmyth",
+ "email": "loganfsmyth@gmail.com"
+ },
+ {
+ "name": "sebmck",
+ "email": "sebmck@gmail.com"
+ },
+ {
+ "name": "thejameskyle",
+ "email": "me@thejameskyle.com"
+ }
+ ],
+ "name": "babel-plugin-transform-react-display-name",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel/tree/master/packages/babel-plugin-transform-display-name"
+ },
+ "scripts": {},
+ "version": "6.5.0"
+}
diff --git a/node_modules/babel-plugin-transform-react-jsx-source/.npmignore b/node_modules/babel-plugin-transform-react-jsx-source/.npmignore
new file mode 100644
index 0000000..3185290
--- /dev/null
+++ b/node_modules/babel-plugin-transform-react-jsx-source/.npmignore
@@ -0,0 +1,4 @@
+node_modules
+*.log
+src
+test
diff --git a/node_modules/babel-plugin-transform-react-jsx-source/README.md b/node_modules/babel-plugin-transform-react-jsx-source/README.md
new file mode 100644
index 0000000..002c1ad
--- /dev/null
+++ b/node_modules/babel-plugin-transform-react-jsx-source/README.md
@@ -0,0 +1,48 @@
+# babel-plugin-transform-react-jsx-source
+
+Adds source file and line number to JSX elements.
+
+## Example
+
+###In
+
+```
+
+```
+###Out
+
+```
+
+```
+
+## Installation
+
+```sh
+$ npm install babel-plugin-transform-react-jsx-source
+```
+
+## Usage
+
+### Via `.babelrc` (Recommended)
+
+**.babelrc**
+
+```json
+{
+ "plugins": ["transform-react-jsx-source"]
+}
+```
+
+### Via CLI
+
+```sh
+$ babel --plugins transform-react-jsx-source script.js
+```
+
+### Via Node API
+
+```javascript
+require("babel-core").transform("code", {
+ plugins: ["transform-react-jsx-source"]
+});
+```
diff --git a/node_modules/babel-plugin-transform-react-jsx-source/lib/index.js b/node_modules/babel-plugin-transform-react-jsx-source/lib/index.js
new file mode 100644
index 0000000..d2296f0
--- /dev/null
+++ b/node_modules/babel-plugin-transform-react-jsx-source/lib/index.js
@@ -0,0 +1,57 @@
+
+/**
+* This adds {fileName, lineNumber} annotations to React component definitions
+* and to jsx tag literals.
+*
+*
+* == JSX Literals ==
+*
+*
+*
+* becomes:
+*
+* var __jsxFileName = 'this/file.js';
+*
+*/
+
+"use strict";
+
+exports.__esModule = true;
+var TRACE_ID = "__source";
+var FILE_NAME_VAR = "_jsxFileName";
+
+exports["default"] = function (_ref) {
+ var t = _ref.types;
+
+ function makeTrace(fileNameIdentifier, lineNumber) {
+ var fileLineLiteral = lineNumber != null ? t.numericLiteral(lineNumber) : t.nullLiteral();
+ var fileNameProperty = t.objectProperty(t.identifier("fileName"), fileNameIdentifier);
+ var lineNumberProperty = t.objectProperty(t.identifier("lineNumber"), fileLineLiteral);
+ return t.objectExpression([fileNameProperty, lineNumberProperty]);
+ }
+
+ var visitor = {
+ JSXOpeningElement: function JSXOpeningElement(path, state) {
+ if (!state.fileNameIdentifier) {
+ var fileName = state.file.log.filename !== "unknown" ? state.file.log.filename : null;
+
+ var fileNameIdentifier = path.scope.generateUidIdentifier(FILE_NAME_VAR);
+ path.hub.file.scope.push({ id: fileNameIdentifier, init: t.stringLiteral(fileName) });
+ state.fileNameIdentifier = fileNameIdentifier;
+ }
+
+ var id = t.jSXIdentifier(TRACE_ID);
+ var location = path.container.openingElement.loc; // undefined for generated elements
+ if (location) {
+ var trace = makeTrace(state.fileNameIdentifier, location.start.line);
+ path.container.openingElement.attributes.push(t.jSXAttribute(id, t.jSXExpressionContainer(trace)));
+ }
+ }
+ };
+
+ return {
+ visitor: visitor
+ };
+};
+
+module.exports = exports["default"];
\ No newline at end of file
diff --git a/node_modules/babel-plugin-transform-react-jsx-source/package.json b/node_modules/babel-plugin-transform-react-jsx-source/package.json
new file mode 100644
index 0000000..b1a7e4e
--- /dev/null
+++ b/node_modules/babel-plugin-transform-react-jsx-source/package.json
@@ -0,0 +1,93 @@
+{
+ "_args": [
+ [
+ "babel-plugin-transform-react-jsx-source@^6.3.13",
+ "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-preset-react"
+ ]
+ ],
+ "_from": "babel-plugin-transform-react-jsx-source@>=6.3.13 <7.0.0",
+ "_id": "babel-plugin-transform-react-jsx-source@6.5.0",
+ "_inCache": true,
+ "_installable": true,
+ "_location": "/babel-plugin-transform-react-jsx-source",
+ "_nodeVersion": "5.1.0",
+ "_npmOperationalInternal": {
+ "host": "packages-5-east.internal.npmjs.com",
+ "tmp": "tmp/babel-plugin-transform-react-jsx-source-6.5.0.tgz_1454803689958_0.5949466982856393"
+ },
+ "_npmUser": {
+ "email": "hi@henryzoo.com",
+ "name": "hzoo"
+ },
+ "_npmVersion": "3.6.0",
+ "_phantomChildren": {},
+ "_requested": {
+ "name": "babel-plugin-transform-react-jsx-source",
+ "raw": "babel-plugin-transform-react-jsx-source@^6.3.13",
+ "rawSpec": "^6.3.13",
+ "scope": null,
+ "spec": ">=6.3.13 <7.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/babel-preset-react"
+ ],
+ "_resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.5.0.tgz",
+ "_shasum": "b6cf9225754a4495a712cd59145cea41f5bbe477",
+ "_shrinkwrap": null,
+ "_spec": "babel-plugin-transform-react-jsx-source@^6.3.13",
+ "_where": "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-preset-react",
+ "dependencies": {
+ "babel-plugin-syntax-jsx": "^6.3.13",
+ "babel-runtime": "^5.0.0"
+ },
+ "description": "Add a __source prop to all JSX Elements",
+ "devDependencies": {
+ "babel-helper-plugin-test-runner": "^6.3.13"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "b6cf9225754a4495a712cd59145cea41f5bbe477",
+ "tarball": "http://registry.npmjs.org/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.5.0.tgz"
+ },
+ "keywords": [
+ "babel-plugin"
+ ],
+ "license": "MIT",
+ "main": "lib/index.js",
+ "maintainers": [
+ {
+ "name": "amasad",
+ "email": "amjad.masad@gmail.com"
+ },
+ {
+ "name": "hzoo",
+ "email": "hi@henryzoo.com"
+ },
+ {
+ "name": "jmm",
+ "email": "npm-public@jessemccarthy.net"
+ },
+ {
+ "name": "loganfsmyth",
+ "email": "loganfsmyth@gmail.com"
+ },
+ {
+ "name": "sebmck",
+ "email": "sebmck@gmail.com"
+ },
+ {
+ "name": "thejameskyle",
+ "email": "me@thejameskyle.com"
+ }
+ ],
+ "name": "babel-plugin-transform-react-jsx-source",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel/tree/master/packages/babel-plugin-transform-react-jsx-source"
+ },
+ "scripts": {},
+ "version": "6.5.0"
+}
diff --git a/node_modules/babel-plugin-transform-react-jsx/.npmignore b/node_modules/babel-plugin-transform-react-jsx/.npmignore
new file mode 100644
index 0000000..3185290
--- /dev/null
+++ b/node_modules/babel-plugin-transform-react-jsx/.npmignore
@@ -0,0 +1,4 @@
+node_modules
+*.log
+src
+test
diff --git a/node_modules/babel-plugin-transform-react-jsx/README.md b/node_modules/babel-plugin-transform-react-jsx/README.md
new file mode 100644
index 0000000..7534e19
--- /dev/null
+++ b/node_modules/babel-plugin-transform-react-jsx/README.md
@@ -0,0 +1,44 @@
+# babel-plugin-transform-react-jsx
+
+Turn JSX into React function calls
+
+## Installation
+
+```sh
+$ npm install babel-plugin-transform-react-jsx
+```
+
+## Usage
+
+### Via `.babelrc` (Recommended)
+
+**.babelrc**
+
+```js
+// without options
+{
+ "plugins": ["transform-react-jsx"]
+}
+// with options
+{
+ "plugins": [
+ ["transform-react-jsx", {
+ "pragma": "dom" // default pragma is React.createElement
+ }]
+ ]
+}
+```
+
+### Via CLI
+
+```sh
+$ babel --plugins transform-react-jsx script.js
+```
+
+### Via Node API
+
+```javascript
+require("babel-core").transform("code", {
+ plugins: ["transform-react-jsx"]
+});
+```
diff --git a/node_modules/babel-plugin-transform-react-jsx/lib/index.js b/node_modules/babel-plugin-transform-react-jsx/lib/index.js
new file mode 100644
index 0000000..db7285d
--- /dev/null
+++ b/node_modules/babel-plugin-transform-react-jsx/lib/index.js
@@ -0,0 +1,60 @@
+/* eslint max-len: 0 */
+
+"use strict";
+
+exports.__esModule = true;
+
+exports["default"] = function (_ref) {
+ var t = _ref.types;
+
+ var JSX_ANNOTATION_REGEX = /\*?\s*@jsx\s+([^\s]+)/;
+
+ var visitor = require("babel-helper-builder-react-jsx")({
+ pre: function pre(state) {
+ var tagName = state.tagName;
+ var args = state.args;
+ if (t.react.isCompatTag(tagName)) {
+ args.push(t.stringLiteral(tagName));
+ } else {
+ args.push(state.tagExpr);
+ }
+ },
+
+ post: function post(state, pass) {
+ state.callee = pass.get("jsxIdentifier");
+ }
+ });
+
+ visitor.Program = function (path, state) {
+ var file = state.file;
+
+ var id = state.opts.pragma || "React.createElement";
+
+ var _arr = file.ast.comments;
+ for (var _i = 0; _i < _arr.length; _i++) {
+ var comment = _arr[_i];
+ var matches = JSX_ANNOTATION_REGEX.exec(comment.value);
+ if (matches) {
+ id = matches[1];
+ if (id === "React.DOM") {
+ throw file.buildCodeFrameError(comment, "The @jsx React.DOM pragma has been deprecated as of React 0.12");
+ } else {
+ break;
+ }
+ }
+ }
+
+ state.set("jsxIdentifier", id.split(".").map(function (name) {
+ return t.identifier(name);
+ }).reduce(function (object, property) {
+ return t.memberExpression(object, property);
+ }));
+ };
+
+ return {
+ inherits: require("babel-plugin-syntax-jsx"),
+ visitor: visitor
+ };
+};
+
+module.exports = exports["default"];
\ No newline at end of file
diff --git a/node_modules/babel-plugin-transform-react-jsx/package.json b/node_modules/babel-plugin-transform-react-jsx/package.json
new file mode 100644
index 0000000..76cb5e3
--- /dev/null
+++ b/node_modules/babel-plugin-transform-react-jsx/package.json
@@ -0,0 +1,94 @@
+{
+ "_args": [
+ [
+ "babel-plugin-transform-react-jsx@^6.3.13",
+ "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-preset-react"
+ ]
+ ],
+ "_from": "babel-plugin-transform-react-jsx@>=6.3.13 <7.0.0",
+ "_id": "babel-plugin-transform-react-jsx@6.6.5",
+ "_inCache": true,
+ "_installable": true,
+ "_location": "/babel-plugin-transform-react-jsx",
+ "_nodeVersion": "5.1.0",
+ "_npmOperationalInternal": {
+ "host": "packages-12-west.internal.npmjs.com",
+ "tmp": "tmp/babel-plugin-transform-react-jsx-6.6.5.tgz_1457133428659_0.8506939858198166"
+ },
+ "_npmUser": {
+ "email": "hi@henryzoo.com",
+ "name": "hzoo"
+ },
+ "_npmVersion": "3.6.0",
+ "_phantomChildren": {},
+ "_requested": {
+ "name": "babel-plugin-transform-react-jsx",
+ "raw": "babel-plugin-transform-react-jsx@^6.3.13",
+ "rawSpec": "^6.3.13",
+ "scope": null,
+ "spec": ">=6.3.13 <7.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/babel-preset-react"
+ ],
+ "_resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.6.5.tgz",
+ "_shasum": "8484397b9fe3a8384c75e1587aab503491793173",
+ "_shrinkwrap": null,
+ "_spec": "babel-plugin-transform-react-jsx@^6.3.13",
+ "_where": "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-preset-react",
+ "dependencies": {
+ "babel-helper-builder-react-jsx": "^6.6.5",
+ "babel-plugin-syntax-jsx": "^6.3.13",
+ "babel-runtime": "^5.0.0"
+ },
+ "description": "Turn JSX into React function calls",
+ "devDependencies": {
+ "babel-helper-plugin-test-runner": "^6.3.13"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "8484397b9fe3a8384c75e1587aab503491793173",
+ "tarball": "http://registry.npmjs.org/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.6.5.tgz"
+ },
+ "keywords": [
+ "babel-plugin"
+ ],
+ "license": "MIT",
+ "main": "lib/index.js",
+ "maintainers": [
+ {
+ "name": "amasad",
+ "email": "amjad.masad@gmail.com"
+ },
+ {
+ "name": "hzoo",
+ "email": "hi@henryzoo.com"
+ },
+ {
+ "name": "jmm",
+ "email": "npm-public@jessemccarthy.net"
+ },
+ {
+ "name": "loganfsmyth",
+ "email": "loganfsmyth@gmail.com"
+ },
+ {
+ "name": "sebmck",
+ "email": "sebmck@gmail.com"
+ },
+ {
+ "name": "thejameskyle",
+ "email": "me@thejameskyle.com"
+ }
+ ],
+ "name": "babel-plugin-transform-react-jsx",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel/tree/master/packages/babel-plugin-transform-jsx"
+ },
+ "scripts": {},
+ "version": "6.6.5"
+}
diff --git a/node_modules/babel-plugin-transform-regenerator/.npmignore b/node_modules/babel-plugin-transform-regenerator/.npmignore
new file mode 100644
index 0000000..e216ae5
--- /dev/null
+++ b/node_modules/babel-plugin-transform-regenerator/.npmignore
@@ -0,0 +1,2 @@
+/node_modules
+/test
diff --git a/node_modules/babel-plugin-transform-regenerator/.test/async.es6.js b/node_modules/babel-plugin-transform-regenerator/.test/async.es6.js
new file mode 100644
index 0000000..587e9b5
--- /dev/null
+++ b/node_modules/babel-plugin-transform-regenerator/.test/async.es6.js
@@ -0,0 +1,493 @@
+/**
+ * Copyright (c) 2014, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * https://raw.github.com/facebook/regenerator/master/LICENSE file. An
+ * additional grant of patent rights can be found in the PATENTS file in
+ * the same directory.
+ */
+
+var assert = require("assert");
+
+describe("async functions and await expressions", function() {
+ Promise = require("promise");
+
+ describe("regeneratorRuntime", function() {
+ it("should be defined globally", function() {
+ var global = Function("return this")();
+ assert.ok("regeneratorRuntime" in global);
+ assert.strictEqual(global.regeneratorRuntime, regeneratorRuntime);
+ });
+
+ it("should have a .wrap method", function() {
+ assert.strictEqual(typeof regeneratorRuntime.wrap, "function");
+ });
+ });
+
+ describe("Promise", function() {
+ it("should be defined globally", function() {
+ var global = Function("return this")();
+ assert.ok("Promise" in global);
+ assert.strictEqual(global.Promise, Promise);
+ });
+
+ it("should be a function", function() {
+ assert.strictEqual(typeof Promise, "function");
+ });
+ });
+
+ describe("no-await async function", function() {
+ it("should return a Promise", function(done) {
+ var called = false;
+
+ async function noAwait(value) {
+ called = true;
+ return value;
+ }
+
+ var promise = noAwait("asdf");
+ assert.strictEqual(called, true);
+
+ promise.then(function(value) {
+ assert.strictEqual(called, true);
+ assert.strictEqual(value, "asdf");
+ done();
+ }).catch(done);
+ });
+ });
+
+ describe("one-await async function", function() {
+ it("should finish asynchronously", function(done) {
+ var flag1 = false;
+ var flag2 = false;
+
+ async function oneAwait(value) {
+ flag1 = true;
+ var result = await value;
+ flag2 = true;
+ return result;
+ }
+
+ var promise = oneAwait("asdf");
+ assert.strictEqual(flag1, true);
+ assert.strictEqual(flag2, false);
+
+ promise.then(function(value) {
+ assert.strictEqual(flag2, true);
+ assert.strictEqual(value, "asdf");
+ done();
+ }).catch(done);
+ });
+ });
+
+ describe("nested async function calls", function() {
+ it("should evaluate in the right order", function(done) {
+ var markers = [];
+
+ async function innerMost(marker) {
+ markers.push(marker);
+ return await marker;
+ }
+
+ async function inner(marker) {
+ markers.push(marker);
+
+ assert.strictEqual(
+ await innerMost(marker + 1),
+ marker + 1
+ );
+
+ markers.push(marker + 2);
+
+ assert.strictEqual(
+ await innerMost(marker + 3),
+ marker + 3
+ );
+
+ markers.push(marker + 4);
+ }
+
+ async function outer() {
+ markers.push(0);
+ await inner(1);
+ markers.push(6);
+ await inner(7);
+ markers.push(12);
+ }
+
+ outer().then(function() {
+ var expected = [];
+ for (var i = 0; i <= 12; ++i)
+ expected.push(i);
+ assert.deepEqual(markers, expected);
+ done();
+ }).catch(done);
+ });
+ });
+
+ describe("dependent promises", function() {
+ it("should be awaitable out of order", function(done) {
+ async function outer(value) {
+ var resolved = false;
+ var p1 = new Promise(function(resolve) {
+ setTimeout(function() {
+ resolve(value + 1);
+ resolved = true;
+ }, 0);
+ });
+
+ assert.strictEqual(resolved, false);
+
+ var v2 = await p1.then(function(value) {
+ return value + 1;
+ });
+
+ assert.strictEqual(resolved, true);
+
+ var v1 = await p1;
+
+ return [v1, v2];
+ }
+
+ outer(1).then(function(pair) {
+ assert.deepEqual(pair, [2, 3]);
+ done();
+ }).catch(done);
+ });
+ });
+
+ describe("rejected promises", function() {
+ it("should cause await expressions to throw", function(done) {
+ var error = new Error("rejected");
+
+ async function f(arg) {
+ try {
+ return await arg;
+ } catch (e) {
+ assert.strictEqual(e, error);
+ return "did throw";
+ }
+ }
+
+ Promise.all([
+ f(Promise.reject(error)),
+ f(Promise.resolve("did not throw"))
+ ]).then(function(results) {
+ assert.deepEqual(results, [
+ "did throw",
+ "did not throw"
+ ]);
+ done();
+ }).catch(done);
+ });
+
+ it("should be returned by exceptional async functions", function(done) {
+ var error = new Error("rejected");
+
+ async function e(arg) {
+ if (arg) {
+ throw arg;
+ }
+ return "did not throw";
+ }
+
+ async function f(arg) {
+ return await e(arg);
+ }
+
+ async function g(arg) {
+ return await f(arg);
+ }
+
+ async function h(arg) {
+ return await Promise.all([
+ g(arg),
+ Promise.resolve("dummy")
+ ]);
+ }
+
+ Promise.all([
+ h(error).then(function() {
+ done(new Error("should not have resolved"));
+ }, function(e) {
+ assert.strictEqual(e, error);
+ return "ok1";
+ }),
+ h(null).then(function(result) {
+ assert.deepEqual(result, [
+ "did not throw",
+ "dummy"
+ ]);
+ return "ok2";
+ })
+ ]).then(function(results) {
+ assert.deepEqual(results, ["ok1", "ok2"]);
+ done();
+ }).catch(done);
+ });
+
+ it("should propagate failure when returned", function() {
+ var rejection = new Error("rejection");
+
+ async function f() {
+ return new Promise(function(resolve, reject) {
+ reject(rejection);
+ });
+ }
+
+ return f().then(function(result) {
+ assert.ok(false, "should have been rejected");
+ }, function(error) {
+ assert.strictEqual(error, rejection);
+ });
+ });
+ });
+
+ describe("async function expressions", function() {
+ it("should be allowed", function(done) {
+ (async function(arg) {
+ return await arg;
+ })(Promise.resolve(1234)).then(function(value) {
+ assert.strictEqual(value, 1234);
+ done();
+ }).catch(done);
+ });
+ });
+});
+
+describe("async generator functions", function() {
+ it("should return a working AsyncIterator", function() {
+ var markers = [];
+
+ async function *gen(arg) {
+ markers.push(0);
+ var sent = yield arg;
+ markers.push(1);
+ var result = await sent;
+ markers.push(2);
+ assert.strictEqual(await (yield "second"), "sent after second");
+ markers.push(3);
+ return result;
+ }
+
+ var iter = gen("initial argument");
+ assert.deepEqual(markers, []);
+
+ var firstPromise = iter.next();
+ assert.deepEqual(markers, [0]);
+
+ return firstPromise.then(function(firstResult) {
+ assert.deepEqual(firstResult, {
+ value: "initial argument",
+ done: false
+ });
+
+ assert.deepEqual(markers, [0]);
+
+ return iter.next(new Promise(function(resolve) {
+ setTimeout(resolve, 100);
+ }).then(function() {
+ assert.deepEqual(markers, [0, 1]);
+ return "will become final result";
+ }));
+
+ }).then(function(secondResult) {
+ assert.deepEqual(secondResult, {
+ value: "second",
+ done: false
+ });
+
+ assert.deepEqual(markers, [0, 1, 2]);
+
+ return iter.next("sent after second");
+
+ }).then(function(finalResult) {
+ assert.deepEqual(markers, [0, 1, 2, 3]);
+ assert.deepEqual(finalResult, {
+ value: "will become final result",
+ done: true
+ });
+ });
+ });
+
+ it("should keep results in order", function() {
+ async function *range(limit) {
+ var before = [];
+ var after = [];
+ for (var i = 0; i < limit; ++i) {
+ before.push(i);
+ yield i;
+ after.push(i);
+ }
+ assert.deepEqual(before, after);
+ return before;
+ }
+
+ var limit = 10;
+ var iter = range(limit);
+ var promises = [];
+ var results = [];
+
+ for (var i = 0; i < limit; ++i) {
+ var promise = iter.next();
+ promises.push(promise);
+
+ promise.then(function(result) {
+ assert.strictEqual(result.done, false);
+ results.push(result);
+ });
+ }
+
+ assert.deepEqual(results, []);
+
+ return Promise.all(promises).then(function(promiseResults) {
+ assert.deepEqual(results, promiseResults);
+
+ return iter.next();
+
+ }).then(function(finalResult) {
+ assert.deepEqual(results.map(function(result) {
+ return result.value;
+ }), finalResult.value);
+
+ assert.strictEqual(finalResult.done, true);
+ });
+ });
+
+ it("should be able to handle many awaits", function() {
+ var awaitCount = 0;
+
+ function countAwait(i) {
+ return Promise.resolve(i).then(function() {
+ ++awaitCount;
+ });
+ }
+
+ async function *gen(limit) {
+ await countAwait(0);
+ yield 1;
+ await countAwait(2);
+ await countAwait(3);
+ yield 4;
+ await countAwait(5);
+ await countAwait(6);
+ await countAwait(7);
+ yield 8;
+ for (var i = 0; i < limit; ++i) {
+ await countAwait(i);
+ }
+ return "done";
+ }
+
+ var iter = gen(100);
+
+ return iter.next().then(function(result) {
+ assert.strictEqual(awaitCount, 1);
+
+ assert.deepEqual(result, {
+ value: 1,
+ done: false
+ });
+
+ return iter.next();
+
+ }).then(function(result) {
+ assert.strictEqual(awaitCount, 3);
+
+ assert.deepEqual(result, {
+ value: 4,
+ done: false
+ });
+
+ return iter.next();
+
+ }).then(function(result) {
+ assert.strictEqual(awaitCount, 6);
+
+ assert.deepEqual(result, {
+ value: 8,
+ done: false
+ });
+
+ return iter.next();
+
+ }).then(function(result) {
+ assert.strictEqual(awaitCount, 6 + 100);
+
+ assert.deepEqual(result, {
+ value: "done",
+ done: true
+ });
+
+ return iter.next();
+
+ }).then(function(result) {
+ assert.deepEqual(result, {
+ value: void 0,
+ done: true
+ });
+ });
+ });
+
+ it("should not propagate exceptions between iterations", function() {
+ async function *gen() {
+ yield 1;
+ yield 2;
+ }
+
+ var iter = gen();
+
+ return iter.next().then(function(result) {
+ assert.deepEqual(result, {
+ value: 1,
+ done: false
+ });
+
+ return iter.throw(new Error("thrown from first yield"));
+
+ }).then(function() {
+ throw new Error("should have thrown");
+
+ }, function(error) {
+ assert.strictEqual(error.message, "thrown from first yield");
+ return iter.next();
+
+ }).then(function(result) {
+ assert.deepEqual(result, {
+ value: void 0,
+ done: true
+ });
+ });
+ });
+
+ it("should allow yielding a rejected Promise", function() {
+ var yielded = new Error("yielded rejection");
+ var returned = new Error("returned rejection");
+
+ async function *gen() {
+ assert.strictEqual(yield Promise.reject(yielded), "first sent");
+ assert.strictEqual(yield "middle", "second sent");
+ return Promise.reject(returned);
+ }
+
+ var iter = gen();
+
+ return iter.next().then(function(result) {
+ assert.ok(false, "should have yielded a rejected Promise");
+ }, function(error) {
+ assert.strictEqual(error, yielded);
+ return iter.next("first sent");
+ }).then(function(result) {
+ assert.deepEqual(result, {
+ value: "middle",
+ done: false
+ });
+ return iter.next("second sent");
+ }).then(function(result) {
+ assert.ok(false, "should have returned a rejected Promise");
+ }, function(error) {
+ assert.strictEqual(error, returned);
+ });
+ });
+});
diff --git a/node_modules/babel-plugin-transform-regenerator/.test/tests.es6.js b/node_modules/babel-plugin-transform-regenerator/.test/tests.es6.js
new file mode 100644
index 0000000..3df59e7
--- /dev/null
+++ b/node_modules/babel-plugin-transform-regenerator/.test/tests.es6.js
@@ -0,0 +1,2560 @@
+/**
+ * Copyright (c) 2014, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * https://raw.github.com/facebook/regenerator/master/LICENSE file. An
+ * additional grant of patent rights can be found in the PATENTS file in
+ * the same directory.
+ */
+
+var assert = require("assert");
+var runningInTranslation = /\.wrap\(/.test(function*(){});
+var iteratorSymbol = typeof Symbol === "function"
+ && Symbol.iterator
+ || "@@iterator";
+
+function check(g, yields, returnValue) {
+ for (var i = 0; i < yields.length; ++i) {
+ var info = g.next(i);
+ assert.deepEqual(info.value, yields[i]);
+ assert.strictEqual(info.done, false);
+ }
+
+ assert.deepEqual(
+ i > 0 ? g.next(i) : g.next(),
+ { value: returnValue, done: true }
+ );
+}
+
+// A version of `throw` whose behavior can't be statically analyzed.
+// Useful for testing dynamic exception dispatching.
+function raise(argument) {
+ throw argument;
+}
+
+function assertAlreadyFinished(generator) {
+ assert.deepEqual(generator.next(), {
+ value: void 0,
+ done: true
+ });
+}
+
+describe("regeneratorRuntime", function() {
+ it("should be defined globally", function() {
+ var global = Function("return this")();
+ assert.ok("regeneratorRuntime" in global);
+ assert.strictEqual(global.regeneratorRuntime, regeneratorRuntime);
+ });
+
+ it("should have a .wrap method", function() {
+ assert.strictEqual(typeof regeneratorRuntime.wrap, "function");
+ });
+
+ it("should have a .mark method", function() {
+ assert.strictEqual(typeof regeneratorRuntime.mark, "function");
+ });
+
+ it("should be the object name returned by util.runtimeProperty", function() {
+ assert.strictEqual(
+ require("../lib/util").runtimeProperty("foo").object.name,
+ "regeneratorRuntime"
+ );
+ });
+});
+
+(runningInTranslation ? describe : xdescribe)("@@iterator", function() {
+ it("is defined on Generator.prototype and returns this", function() {
+ function *gen(){}
+ var iterator = gen();
+ assert.ok(!iterator.hasOwnProperty(iteratorSymbol));
+ assert.ok(!Object.getPrototypeOf(iterator).hasOwnProperty(iteratorSymbol));
+ assert.ok(Object.getPrototypeOf(
+ Object.getPrototypeOf(iterator)
+ ).hasOwnProperty(iteratorSymbol));
+ assert.strictEqual(iterator[iteratorSymbol](), iterator);
+ });
+});
+
+describe("simple argument yielder", function() {
+ it("should yield only its first argument", function() {
+ function *gen(x) {
+ yield x;
+ }
+
+ check(gen("oyez"), ["oyez"]);
+ check(gen("foo", "bar"), ["foo"]);
+ });
+
+ it("should support multiple yields in expression", function() {
+ function *gen() { return (yield 0) + (yield 0); }
+ var itr = gen();
+ itr.next();
+ itr.next(1);
+ assert.equal(itr.next(2).value, 3);
+ });
+});
+
+function *range(n) {
+ for (var i = 0; i < n; ++i) {
+ yield i;
+ }
+}
+
+describe("range generator", function() {
+ it("should yield the empty range", function() {
+ check(range(0), []);
+ })
+
+ it("should yield the range 0..n-1", function() {
+ check(range(5), [0, 1, 2, 3, 4]);
+ });
+});
+
+describe("collatz generator", function() {
+ function *gen(n) {
+ var count = 0;
+
+ yield n;
+
+ while (n !== 1) {
+ count += 1;
+
+ if (n % 2) {
+ yield n = n * 3 + 1;
+ } else {
+ yield n >>= 1;
+ }
+ }
+
+ return count;
+ }
+
+ function collatz(n) {
+ var result = [n];
+
+ while (n !== 1) {
+ if (n % 2) {
+ n *= 3;
+ n += 1;
+ } else {
+ n >>= 1;
+ }
+
+ result.push(n);
+ }
+
+ return result;
+ }
+
+ var seven = collatz(7);
+ var fiftyTwo = seven.slice(seven.indexOf(52));
+ var eightyTwo = collatz(82);
+
+ it("seven", function() {
+ check(gen(7), seven, 16);
+ });
+
+ it("fifty two", function() {
+ check(gen(52), fiftyTwo, 11);
+ });
+
+ it("eighty two", function() {
+ check(gen(82), eightyTwo, 110);
+ });
+});
+
+describe("throw", function() {
+ (runningInTranslation ? it : xit)("should complete generator", function() {
+ function *gen(x) {
+ throw 1;
+ }
+
+ var u = gen();
+
+ try {
+ u.next();
+ } catch (err) {
+ assert.strictEqual(err, 1);
+ }
+
+ assertAlreadyFinished(u);
+ });
+});
+
+describe("try-catch generator", function() {
+ function *usingThrow(x) {
+ yield 0;
+ try {
+ yield 1;
+ if (x % 2 === 0)
+ throw 2;
+ yield x;
+ } catch (x) {
+ yield x;
+ }
+ yield 3;
+ }
+
+ function *usingRaise(x) {
+ yield 0;
+ try {
+ yield 1;
+ if (x % 2 === 0)
+ raise(2);
+ yield x;
+ } catch (x) {
+ yield x;
+ }
+ yield 3;
+ }
+
+ it("should catch static exceptions properly", function() {
+ check(usingThrow(4), [0, 1, 2, 3]);
+ check(usingThrow(5), [0, 1, 5, 3]);
+ });
+
+ it("should catch dynamic exceptions properly", function() {
+ check(usingRaise(4), [0, 1, 2, 3]);
+ check(usingRaise(5), [0, 1, 5, 3]);
+ });
+});
+
+describe("nested generators in try-catch", function() {
+ function *gen() {
+ try {
+ nonExistent;
+ } catch (e) {
+ yield function* () {
+ yield e;
+ }
+ }
+ }
+
+ it('should get a reference to the caught error', function () {
+ var genFun2 = gen().next().value;
+ assert.ok(regeneratorRuntime.isGeneratorFunction(genFun2));
+ var gen2 = genFun2();
+ var res = gen2.next();
+ assert.ok(res.value instanceof ReferenceError);
+ // Note that we don't do strict equality over the message because it varies
+ // across browsers (if we ever want to run tests in browsers).
+ assert.ok(res.value.message.match(/nonExistent/));
+ });
+
+});
+
+describe("try-finally generator", function() {
+ function *usingThrow(condition) {
+ yield 0;
+ try {
+ yield 1;
+ throw 2;
+ yield 3;
+ } finally {
+ if (condition) {
+ yield 4;
+ return 5;
+ }
+ yield 6;
+ return 7;
+ }
+ }
+
+ function *usingRaise(condition) {
+ yield 0;
+ try {
+ yield 1;
+ raise(2);
+ yield 3;
+ } finally {
+ if (condition) {
+ yield 4;
+ return 5;
+ }
+ yield 6;
+ return 7;
+ }
+ }
+
+ function *usingAbrupt(abruptType, finallyAbruptType) {
+ yield 0;
+ for (;;) {
+ try {
+ yield 1;
+ if (abruptType === "return") {
+ return 2;
+ } else if (abruptType === "break") {
+ break;
+ } else if (abruptType === "continue") {
+ abruptType = "return";
+ continue;
+ }
+ }
+ finally {
+ yield 3;
+ if (finallyAbruptType === "return") {
+ return 4;
+ } else if (finallyAbruptType === "break") {
+ break;
+ } else if (finallyAbruptType === "continue") {
+ finallyAbruptType = null;
+ continue;
+ }
+ }
+ }
+ return 5;
+ }
+
+ it("should honor return", function() {
+ check(usingAbrupt("return", null), [0, 1, 3], 2);
+ });
+
+ it("should honor break", function() {
+ check(usingAbrupt("break", null), [0, 1, 3], 5);
+ });
+
+ it("should honor continue", function() {
+ check(usingAbrupt("continue", null), [0, 1, 3, 1, 3], 2);
+ });
+
+ it("should override abrupt with return", function() {
+ check(usingAbrupt("return", "return"), [0, 1, 3], 4);
+ check(usingAbrupt("break", "return"), [0, 1, 3], 4);
+ check(usingAbrupt("continue", "return"), [0, 1, 3], 4);
+ });
+
+ it("should override abrupt with break", function() {
+ check(usingAbrupt("return", "break"), [0, 1, 3], 5);
+ check(usingAbrupt("break", "break"), [0, 1, 3], 5);
+ check(usingAbrupt("continue", "break"), [0, 1, 3], 5);
+ });
+
+ it("should override abrupt with continue", function() {
+ check(usingAbrupt("return", "continue"), [0, 1, 3, 1, 3], 2);
+ check(usingAbrupt("break", "continue"), [0, 1, 3, 1, 3], 5);
+ check(usingAbrupt("continue", "continue"), [0, 1, 3, 1, 3], 2);
+ });
+
+ it("should execute finally blocks statically", function() {
+ check(usingThrow(true), [0, 1, 4], 5);
+ check(usingThrow(false), [0, 1, 6], 7);
+ });
+
+ it("should execute finally blocks dynamically", function() {
+ check(usingRaise(true), [0, 1, 4], 5);
+ check(usingRaise(false), [0, 1, 6], 7);
+ });
+
+ it("should execute finally blocks before throwing", function() {
+ var uncaughtError = new Error("uncaught");
+
+ function *uncaught(condition) {
+ try {
+ yield 0;
+ if (condition) {
+ yield 1;
+ raise(uncaughtError);
+ }
+ yield 2;
+ } finally {
+ yield 3;
+ }
+ yield 4;
+ }
+
+ check(uncaught(false), [0, 2, 3, 4]);
+
+ var u = uncaught(true);
+
+ assert.deepEqual(u.next(), { value: 0, done: false });
+ assert.deepEqual(u.next(), { value: 1, done: false });
+ assert.deepEqual(u.next(), { value: 3, done: false });
+
+ try {
+ u.next();
+ assert.ok(false, "should have thrown an exception");
+ } catch (err) {
+ assert.strictEqual(err, uncaughtError);
+ }
+ });
+
+ it("should throw correct error when finally contains catch", function() {
+ var right = new Error("right");
+ var wrong = new Error("wrong");
+
+ function *gen() {
+ try {
+ yield 0;
+ raise(right);
+ } finally {
+ yield 1;
+ try {
+ raise(wrong);
+ } catch (err) {
+ assert.strictEqual(err, wrong);
+ yield 2;
+ }
+ }
+ }
+
+ var g = gen();
+
+ assert.deepEqual(g.next(), {
+ value: 0,
+ done: false
+ });
+
+ assert.deepEqual(g.next(), {
+ value: 1,
+ done: false
+ });
+
+ assert.deepEqual(g.next(), {
+ value: 2,
+ done: false
+ });
+
+ try {
+ g.next();
+ assert.ok(false, "should have thrown an exception");
+ } catch (err) {
+ assert.strictEqual(err, right);
+ }
+ });
+
+ it("should run finally after break within try", function() {
+ function *gen() {
+ try {
+ yield 0;
+ while (true) {
+ yield 1;
+ break;
+ }
+ } finally {
+ yield 2;
+ }
+ yield 3;
+ }
+
+ check(gen(), [0, 1, 2, 3]);
+ });
+});
+
+describe("try-catch-finally generator", function() {
+ function *usingThrow() {
+ yield 0;
+ try {
+ try {
+ yield 1;
+ throw 2;
+ yield 3;
+ } catch (x) {
+ throw yield x;
+ } finally {
+ yield 5;
+ }
+ } catch (thrown) {
+ yield thrown;
+ }
+ yield 6;
+ }
+
+ function *usingRaise() {
+ yield 0;
+ try {
+ try {
+ yield 1;
+ raise(2);
+ yield 3;
+ } catch (x) {
+ throw yield x;
+ } finally {
+ yield 5;
+ }
+ } catch (thrown) {
+ yield thrown;
+ }
+ yield 6;
+ }
+
+ it("should statically catch and then finalize", function() {
+ check(usingThrow(), [0, 1, 2, 5, 3, 6]);
+ });
+
+ it("should dynamically catch and then finalize", function() {
+ check(usingRaise(), [0, 1, 2, 5, 3, 6]);
+ });
+
+ it("should execute catch and finally blocks at most once", function() {
+ var error = new Error();
+
+ function *gen() {
+ try {
+ switch (1) {
+ case 1:
+ yield "a";
+ break;
+ default:
+ break;
+ }
+ throw error;
+ } catch (e) {
+ assert.strictEqual(e, error);
+ yield "b";
+ do {
+ do {
+ yield "c";
+ break;
+ } while (false);
+ yield "d";
+ break;
+ } while (false);
+ yield "e";
+ } finally {
+ yield "f";
+ }
+ }
+
+ check(gen(), ["a", "b", "c", "d", "e", "f"]);
+ });
+
+ it("should handle backwards jumps in labeled loops", function() {
+ function *gen() {
+ var firstTime = true;
+ outer:
+ while (true) {
+ yield 0;
+ try {
+ while (true) {
+ yield 1;
+ if (firstTime) {
+ firstTime = false;
+ yield 2;
+ continue outer;
+ } else {
+ yield 3;
+ break;
+ }
+ }
+ yield 4;
+ break;
+ } finally {
+ yield 5;
+ }
+ yield 6;
+ }
+ yield 7;
+ }
+
+ check(gen(), [0, 1, 2, 5, 0, 1, 3, 4, 5, 7]);
+ });
+
+ it("should handle loop continue statements properly", function() {
+ var error = new Error("thrown");
+ var markers = [];
+
+ function *gen() {
+ var c = 2;
+ while (c > 0) {
+ try {
+ markers.push("try");
+ yield c;
+ } catch (e) {
+ assert.strictEqual(e, error);
+ markers.push("catch");
+ continue;
+ } finally {
+ markers.push("finally");
+ }
+ markers.push("decrement");
+ --c;
+ }
+ }
+
+ var g = gen();
+
+ assert.deepEqual(g.next(), { value: 2, done: false });
+ assert.deepEqual(g.throw(error), { value: 2, done: false });
+ assert.deepEqual(g.next(), { value: 1, done: false });
+ assert.deepEqual(g.next(), { value: void 0, done: true });
+
+ assert.deepEqual(markers, [
+ "try",
+ "catch",
+ "finally",
+ "try",
+ "finally",
+ "decrement",
+ "try",
+ "finally",
+ "decrement"
+ ]);
+ });
+});
+
+describe("dynamic exception", function() {
+ function *gen(x, fname) {
+ try {
+ return fns[fname](x);
+ } catch (thrown) {
+ yield thrown;
+ }
+ }
+
+ var fns = {
+ f: function(x) {
+ throw x;
+ },
+
+ g: function(x) {
+ return x;
+ }
+ };
+
+ it("should be dispatched correctly", function() {
+ check(gen("asdf", "f"), ["asdf"]);
+ check(gen("asdf", "g"), [], "asdf");
+ });
+});
+
+describe("nested finally blocks", function() {
+ function *usingThrow() {
+ try {
+ try {
+ try {
+ throw "thrown";
+ } finally {
+ yield 1;
+ }
+ } catch (thrown) {
+ yield thrown;
+ } finally {
+ yield 2;
+ }
+ } finally {
+ yield 3;
+ }
+ }
+
+ function *usingRaise() {
+ try {
+ try {
+ try {
+ raise("thrown");
+ } finally {
+ yield 1;
+ }
+ } catch (thrown) {
+ yield thrown;
+ } finally {
+ yield 2;
+ }
+ } finally {
+ yield 3;
+ }
+ }
+
+ it("should statically execute in order", function() {
+ check(usingThrow(), [1, "thrown", 2, 3]);
+ });
+
+ it("should dynamically execute in order", function() {
+ check(usingRaise(), [1, "thrown", 2, 3]);
+ });
+});
+
+describe("for-in loop generator", function() {
+ it("should handle the simple case", function() {
+ function *gen() {
+ var count = 0;
+ var obj = {foo: 1, bar: 2};
+ for (var key in obj) {
+ assert(obj.hasOwnProperty(key), key + " must be own property");
+ yield [key, obj[key]];
+ count += 1;
+ }
+ return count;
+ }
+
+ check(gen(), [["foo", 1], ["bar", 2]], 2);
+ });
+
+ it("should handle break in loop", function() {
+ function *gen(obj) {
+ var count = 0;
+ for (var key in (yield "why not", obj)) {
+ if (obj.hasOwnProperty(key)) {
+ if (key === "skip") {
+ break;
+ }
+ count += 1;
+ yield [key, obj[key]];
+ }
+ }
+ return count;
+ }
+
+ check(
+ gen({ a: 1, b: 2, skip: 3, c: 4 }),
+ ["why not", ["a", 1], ["b", 2]],
+ 2
+ );
+ });
+
+ it("should handle property deletion in loop", function() {
+ function *gen() {
+ var count = 0;
+ var obj = {foo: 1, bar: 2};
+ for (var key in obj) {
+ assert(obj.hasOwnProperty(key), key + " must be own property");
+ yield [key, obj[key]];
+ delete obj.bar;
+ count += 1;
+ }
+ return count;
+ }
+
+ check(gen(), [["foo", 1]], 1);
+ });
+
+ it("should loop over inherited properties", function() {
+ function *gen() {
+ var count = 0;
+ function Foo() {
+ this.baz = 1
+ }
+ Foo.prototype.bar = 2;
+
+ var foo = new Foo();
+ for (var key in foo) {
+ yield [key, foo[key]];
+ count += 1;
+ }
+ return count;
+ }
+
+ check(gen(), [["baz", 1], ["bar", 2]], 2);
+ });
+
+ it("should handle risky object expressions", function() {
+ function a(sent) {
+ assert.strictEqual(sent, 1);
+ a.called = true;
+ }
+
+ function b(sent) {
+ assert.strictEqual(sent, 2);
+ b.called = true;
+ return { callee: b };
+ }
+
+ function *gen() {
+ assert.ok(!a.called);
+ assert.ok(!b.called);
+ for (var key in a(yield 0), b(yield 1)) {
+ assert.ok(a.called);
+ assert.ok(b.called);
+ assert.strictEqual(yield key, 3);
+ }
+
+ for (var key in a(1), { foo: "foo", bar: "bar" }) {
+ yield key;
+ }
+ }
+
+ check(gen(), [0, 1, "callee", "foo", "bar"]);
+ });
+
+ it("should allow non-Identifier left-hand expressions", function() {
+ var obj = {};
+ var baz = { a: 1, b: 2, c: 3 };
+ var markers = [];
+
+ function foo() {
+ markers.push("called foo");
+ return obj;
+ }
+
+ function *gen() {
+ for (foo().bar in baz) {
+ markers.push(obj.bar);
+ yield obj.bar;
+ }
+ }
+
+ check(gen(), ["a", "b", "c"]);
+
+ assert.deepEqual(markers, [
+ "called foo",
+ "a",
+ "called foo",
+ "b",
+ "called foo",
+ "c"
+ ]);
+ });
+});
+
+describe("yield chain", function() {
+ function *gen(n) {
+ return yield yield yield yield n;
+ }
+
+ it("should have correct associativity", function() {
+ check(gen(5), [5, 1, 2, 3], 4);
+ check(gen("asdf"), ["asdf", 1, 2, 3], 4);
+ });
+});
+
+describe("object literal generator", function() {
+ function *gen(a, b) {
+ yield {
+ a: a - (yield a),
+ b: yield b
+ };
+ }
+
+ it("should yield the correct object", function() {
+ check(gen(1, 2), [1, 2, { a: 0, b: 2 }]);
+ check(gen(4, 2), [4, 2, { a: 3, b: 2 }]);
+ });
+});
+
+describe("switch statement generator", function() {
+ function *gen(a) {
+ switch (yield a) {
+ case (yield "x") - a:
+ return "first case";
+ case (yield "y") - a:
+ return "second case";
+ }
+ }
+
+ it("should jump to the correct cases", function() {
+ check(gen(1), [1, "x"], "first case");
+ check(gen(2), [2, "x", "y"], "second case");
+ });
+});
+
+describe("infinite sequence generator", function() {
+ function *gen(start, step) {
+ step = step || 1;
+ while (true) {
+ yield start;
+ start += step;
+ }
+ }
+
+ function *limit(g, stop) {
+ while (true) {
+ var info = g.next();
+ if (info.done) {
+ return;
+ } else if (info.value < stop) {
+ yield info.value;
+ } else {
+ return;
+ }
+ }
+ }
+
+ it("should generate a lot of plausible values", function() {
+ var g = gen(10, 2);
+
+ assert.deepEqual(g.next(), { value: 10, done: false });
+ assert.deepEqual(g.next(), { value: 12, done: false });
+ assert.deepEqual(g.next(), { value: 14, done: false });
+ assert.deepEqual(g.next(), { value: 16, done: false });
+
+ var sum = 10 + 12 + 14 + 16;
+
+ for (var n = 0; n < 1000; ++n) {
+ var info = g.next();
+ sum += info.value;
+ assert.strictEqual(info.done, false);
+ }
+
+ assert.strictEqual(sum, 1017052);
+ });
+
+ it("should allow limiting", function() {
+ check(limit(gen(10, 3), 20), [10, 13, 16, 19]);
+ });
+});
+
+describe("generator function expression", function() {
+ it("should behave just like a declared generator", function() {
+ check(function *(x, y) {
+ yield x;
+ yield y;
+ yield x + y;
+ return x * y;
+ }(3, 7), [3, 7, 10], 21);
+ })
+});
+
+describe("generator reentry attempt", function() {
+ function *gen(x) {
+ try {
+ (yield x).next(x);
+ } catch (err) {
+ yield err;
+ }
+ return x + 1;
+ }
+
+ it("should complain with a TypeError", function() {
+ var g = gen(3);
+ assert.deepEqual(g.next(), { value: 3, done: false });
+ var complaint = g.next(g); // Sending the generator to itself.
+ assert.ok(complaint.value instanceof Error);
+ assert.strictEqual(
+ complaint.value.message,
+ "Generator is already running"
+ );
+ assert.deepEqual(g.next(), { value: 4, done: true });
+ });
+});
+
+describe("completed generator", function() {
+ function *gen() {
+ return "ALL DONE";
+ }
+
+ (runningInTranslation ? it : xit)
+ ("should refuse to resume", function() {
+ var g = gen();
+
+ assert.deepEqual(g.next(), {
+ value: "ALL DONE", done: true
+ });
+
+ assertAlreadyFinished(g);
+ });
+});
+
+describe("delegated yield", function() {
+ it("should delegate correctly", function() {
+ function *gen(condition) {
+ yield 0;
+ if (condition) {
+ yield 1;
+ yield* gen(false);
+ yield 2;
+ }
+ yield 3;
+ }
+
+ check(gen(true), [0, 1, 0, 3, 2, 3]);
+ check(gen(false), [0, 3]);
+ });
+
+ it("should cope with empty delegatees", function() {
+ function *gen(condition) {
+ if (condition) {
+ yield 0;
+ yield* gen(false);
+ yield 1;
+ }
+ }
+
+ check(gen(true), [0, 1]);
+ check(gen(false), []);
+ });
+
+ it("should support deeper nesting", function() {
+ function *outer(n) {
+ yield n;
+ yield* middle(n - 1, inner(n + 10));
+ yield n + 1;
+ }
+
+ function *middle(n, plusTen) {
+ yield n;
+ yield* inner(n - 1);
+ yield n + 1;
+ yield* plusTen;
+ }
+
+ function *inner(n) {
+ yield n;
+ }
+
+ check(outer(5), [5, 4, 3, 5, 15, 6]);
+ });
+
+ it("should pass sent values through", function() {
+ function *outer(n) {
+ yield* inner(n << 1);
+ yield "zxcv";
+ }
+
+ function *inner(n) {
+ return yield yield yield n;
+ }
+
+ var g = outer(3);
+ assert.deepEqual(g.next(), { value: 6, done: false });
+ assert.deepEqual(g.next(1), { value: 1, done: false });
+ assert.deepEqual(g.next(2), { value: 2, done: false });
+ assert.deepEqual(g.next(4), { value: "zxcv", done: false });
+ assert.deepEqual(g.next(5), { value: void 0, done: true });
+ });
+
+ it("should be governed by enclosing try statements", function() {
+ var error = new Error("thrown");
+
+ function *outer(n) {
+ try {
+ yield 0;
+ yield* inner(n);
+ yield 1;
+ } catch (err) {
+ yield err.message;
+ }
+ yield 4;
+ }
+
+ function *inner(n) {
+ while (n --> 0) {
+ try {
+ if (n === 3) {
+ raise(error);
+ }
+ } finally {
+ yield n;
+ }
+ }
+ }
+
+ check(outer(3), [0, 2, 1, 0, 1, 4]);
+ check(outer(5), [0, 4, 3, "thrown", 4]);
+ });
+
+ it("should dispatch .thrown exceptions correctly", function() {
+ var count = 0;
+
+ function *gen() {
+ yield* inner();
+ try {
+ yield* inner();
+ } catch (err) {
+ // pass
+ }
+ return yield* inner();
+ }
+
+ function *inner() {
+ return yield count++;
+ }
+
+ var g = gen();
+
+ assert.deepEqual(g.next(), {
+ value: 0,
+ done: false
+ });
+
+ assert.deepEqual(g.next(), {
+ value: 1,
+ done: false
+ });
+
+ assert.deepEqual(g.throw(new Error("lol")), {
+ value: 2,
+ done: false,
+ });
+
+ assert.deepEqual(g.next("sent"), {
+ value: "sent",
+ done: true
+ });
+ });
+
+ it("should call .return methods of delegate iterators", function() {
+ var throwee = new Error("argument to gen.throw");
+ var thrownFromThrow = new Error("thrown from throw method");
+ var thrownFromReturn = new Error("thrown from return method");
+
+ function *gen(delegate) {
+ try {
+ return yield* delegate;
+ } catch (err) {
+ return err;
+ }
+ }
+
+ function check(throwMethod, returnMethod) {
+ var throwCalled = false;
+ var returnCalled = false;
+ var count = 0;
+ var iterator = {
+ next: function() {
+ return { value: count++, done: false };
+ }
+ };
+
+ iterator[iteratorSymbol] = function() {
+ return this;
+ };
+
+ if (throwMethod) {
+ iterator["throw"] = function() {
+ throwCalled = true;
+ return throwMethod.apply(this, arguments);
+ };
+ }
+
+ if (returnMethod) {
+ iterator["return"] = function() {
+ returnCalled = true;
+ return returnMethod.apply(this, arguments);
+ };
+ }
+
+ var g = gen(iterator);
+
+ assert.deepEqual(g.next(), { value: 0, done: false });
+ assert.deepEqual(g.next(), { value: 1, done: false });
+ assert.deepEqual(g.next(), { value: 2, done: false });
+ assert.deepEqual(g.next(), { value: 3, done: false });
+
+ assert.strictEqual(throwCalled, false);
+ assert.strictEqual(returnCalled, false);
+
+ var result = {};
+
+ result.throwResult = g.throw(throwee);
+ result.throwCalled = throwCalled;
+ result.returnCalled = returnCalled;
+
+ return result;
+ }
+
+ var checkResult = check(undefined, function() {
+ throw thrownFromReturn;
+ });
+ if (runningInTranslation) {
+ // BUG: Node v0.11 and v0.12 neglect to call .return here.
+ assert.strictEqual(checkResult.throwResult.value, thrownFromReturn);
+ } else {
+ // This is the TypeError that results from trying to call the
+ // undefined .throw method of the iterator.
+ assert.ok(checkResult.throwResult.value instanceof TypeError);
+ }
+ assert.strictEqual(checkResult.throwResult.done, true);
+ assert.strictEqual(checkResult.throwCalled, false);
+ // BUG: Node v0.11 and v0.12 neglect to call .return here.
+ assert.strictEqual(checkResult.returnCalled, runningInTranslation);
+
+ checkResult = check(undefined, function() {
+ return { value: "from return", done: true };
+ });
+ assert.notStrictEqual(checkResult.throwResult.value, throwee);
+ // This is the TypeError that results from trying to call the
+ // undefined .throw method of the iterator.
+ assert.ok(checkResult.throwResult.value instanceof TypeError);
+ assert.strictEqual(checkResult.throwResult.done, true);
+ assert.strictEqual(checkResult.throwCalled, false);
+ // BUG: Node v0.11 and v0.12 neglect to call .return here.
+ assert.strictEqual(checkResult.returnCalled, runningInTranslation);
+
+ var checkResult = check(function(thrown) {
+ return { value: "from throw", done: true };
+ }, function() {
+ throw thrownFromReturn;
+ });
+ assert.strictEqual(checkResult.throwResult.value, "from throw");
+ assert.strictEqual(checkResult.throwResult.done, true);
+ assert.strictEqual(checkResult.throwCalled, true);
+ assert.strictEqual(checkResult.returnCalled, false);
+
+ var checkResult = check(function(thrown) {
+ throw thrownFromThrow;
+ }, function() {
+ throw thrownFromReturn;
+ });
+ assert.strictEqual(checkResult.throwResult.value, thrownFromThrow);
+ assert.strictEqual(checkResult.throwResult.done, true);
+ assert.strictEqual(checkResult.throwCalled, true);
+ assert.strictEqual(checkResult.returnCalled, false);
+
+ var checkResult = check(undefined, undefined);
+ assert.notStrictEqual(checkResult.throwResult.value, throwee);
+ // This is the TypeError that results from trying to call the
+ // undefined .throw method of the iterator.
+ assert.ok(checkResult.throwResult.value instanceof TypeError);
+ assert.strictEqual(checkResult.throwResult.done, true);
+ assert.strictEqual(checkResult.throwCalled, false);
+ assert.strictEqual(checkResult.returnCalled, false);
+ });
+
+ it("should not be required to have a .return method", function() {
+ function *gen(delegate) {
+ return yield* delegate;
+ }
+
+ var inner = range(5);
+ var iterator = { next: inner.next.bind(inner) };
+ iterator[iteratorSymbol] = function() {
+ return this;
+ };
+
+ var g = gen(iterator);
+ assert.deepEqual(g.next(), { value: 0, done: false });
+ assert.deepEqual(g.next(), { value: 1, done: false });
+ assert.deepEqual(g.next(), { value: 2, done: false });
+
+ if (typeof g.return === "function") {
+ assert.deepEqual(g.return(-1), { value: -1, done: true });
+ assert.deepEqual(g.next(), { value: void 0, done: true });
+ }
+ });
+
+ (runningInTranslation ? it : xit)
+ ("should support any iterable argument", function() {
+ function *gen() {
+ yield 0;
+ yield* [
+ yield "one",
+ yield "two",
+ yield "three"
+ ];
+ yield 5;
+ }
+
+ check(gen(), [0, "one", "two", "three", 2, 3, 4, 5]);
+
+ function *string() {
+ return yield* "asdf";
+ }
+
+ check(string(), ["a", "s", "d", "f"]);
+ });
+
+ it("should evaluate to the return value of the delegate", function() {
+ function *inner() {
+ yield 1;
+ return 2;
+ }
+
+ function *outer(delegate) {
+ return yield* delegate;
+ }
+
+ check(outer(inner()), [1], 2);
+
+ var arrayDelegate = [3, 4];
+ if (!runningInTranslation) {
+ // Node v0.11 doesn't know how to turn arrays into iterators over
+ // their elements without a little help.
+ arrayDelegate = regeneratorRuntime.values(arrayDelegate);
+ }
+ check(outer(arrayDelegate), [3, 4], void 0); // See issue #143.
+
+ if (!runningInTranslation) {
+ return;
+ }
+
+ check(outer({
+ next: function() {
+ return { value: "oyez", done: true };
+ }
+ }), [], "oyez");
+ });
+
+ it("should work as a subexpression", function() {
+ function *inner(arg) {
+ return arg;
+ }
+
+ function *gen(delegate) {
+ // Unfortunately these parentheses appear to be necessary.
+ return 1 + (yield* delegate);
+ }
+
+ check(gen(inner(2)), [], 3);
+ check(gen(inner(3)), [], 4);
+
+ if (!runningInTranslation) {
+ return;
+ }
+
+ check(gen({
+ next: function() {
+ return { value: "foo", done: true };
+ }
+ }), [], "1foo");
+ });
+});
+
+describe("function declaration hoisting", function() {
+ it("should work even if the declarations are out of order", function() {
+ function *gen(n) {
+ yield increment(n);
+
+ function increment(x) {
+ return x + 1;
+ }
+
+ if (n % 2) {
+ yield halve(decrement(n));
+
+ function halve(x) {
+ return x >> 1;
+ }
+
+ function decrement(x) {
+ return x - 1;
+ }
+ } else {
+ // The behavior of function declarations nested inside conditional
+ // blocks is notoriously underspecified, and in V8 it appears the
+ // halve function is still defined when we take this branch, so
+ // "undefine" it for consistency with regenerator semantics.
+ halve = void 0;
+ }
+
+ yield typeof halve;
+
+ yield increment(increment(n));
+ }
+
+ check(gen(3), [4, 1, "function", 5]);
+ check(gen(4), [5, "undefined", 6]);
+ });
+
+ it("should work for nested generator function declarations", function() {
+ function *outer(n) {
+ yield 0;
+ assert.ok(regeneratorRuntime.isGeneratorFunction(inner));
+ return yield* inner(n);
+
+ // Note that this function declaration comes after everything else
+ // in the outer function, but needs to be fully available above.
+ function *inner(n) {
+ yield n - 1;
+ yield n;
+ return yield n + 1;
+ }
+ }
+
+ check(outer(2), [0, 1, 2, 3], 4);
+ });
+
+ it("should not interfere with function rebinding", function() {
+ function rebindTo(value) {
+ var oldValue = toBeRebound;
+ toBeRebound = value;
+ return oldValue;
+ }
+
+ function *toBeRebound() {
+ var originalValue = toBeRebound;
+ yield toBeRebound;
+ assert.strictEqual(rebindTo(42), originalValue);
+ yield toBeRebound;
+ assert.strictEqual(rebindTo("asdf"), 42);
+ yield toBeRebound;
+ }
+
+ var original = toBeRebound;
+ check(toBeRebound(), [original, 42, "asdf"]);
+
+ function attemptToRebind(value) {
+ var oldValue = safe;
+ safe = value;
+ return oldValue;
+ }
+
+ var safe = function *safe() {
+ var originalValue = safe;
+ yield safe;
+ assert.strictEqual(attemptToRebind(42), originalValue);
+ yield safe;
+ assert.strictEqual(attemptToRebind("asdf"), 42);
+ yield safe;
+ }
+
+ original = safe;
+ check(safe(), [safe, safe, safe]);
+ });
+});
+
+describe("the arguments object", function() {
+ it("should work in simple variadic functions", function() {
+ function *sum() {
+ var result = 0;
+
+ for (var i = 0; i < arguments.length; ++i) {
+ yield result += arguments[i];
+ }
+
+ return result;
+ }
+
+ check(sum(1, 2, 3), [1, 3, 6], 6);
+ check(sum(9, -5, 3, 0, 2), [9, 4, 7, 7, 9], 9);
+ });
+
+ it("should alias function parameters", function() {
+ function *gen(x, y) {
+ yield x;
+ ++arguments[0];
+ yield x;
+
+ yield y;
+ --arguments[1];
+ yield y;
+
+ var temp = y;
+ y = x;
+ x = temp;
+
+ yield x;
+ yield y;
+ }
+
+ check(gen(3, 7), [3, 4, 7, 6, 6, 4]);
+ check(gen(10, -5), [10, 11, -5, -6, -6, 11]);
+ });
+
+ it("should be shadowable by explicit declarations", function() {
+ function *asParameter(x, arguments) {
+ arguments = arguments + 1;
+ yield x + arguments;
+ }
+
+ check(asParameter(4, 5), [10]);
+ check(asParameter("asdf", "zxcv"), ["asdfzxcv1"]);
+
+ function *asVariable(x) {
+ // TODO References to arguments before the variable declaration
+ // seem to see the object instead of the undefined value.
+ var arguments = x + 1;
+ yield arguments;
+ }
+
+ check(asVariable(4), [5]);
+ check(asVariable("asdf"), ["asdf1"]);
+ });
+
+ it("should not get confused by properties", function() {
+ function *gen(args) {
+ var obj = { arguments: args };
+ yield obj.arguments;
+ obj.arguments = "oyez";
+ yield obj;
+ }
+
+ check(gen(42), [42, { arguments: "oyez" }]);
+ });
+
+ it("supports .callee", function() {
+ function *gen(doYield) {
+ yield 1;
+ if (doYield) {
+ yield 2;
+ } else {
+ yield 3
+ yield* arguments.callee(true);
+ yield 4
+ }
+ yield 5;
+ }
+
+ check(gen(false), [1, 3, 1, 2, 5, 4, 5]);
+ });
+});
+
+describe("catch parameter shadowing", function() {
+ it("should leave outer variables unmodified", function() {
+ function *gen(x) {
+ var y = x + 1;
+ try {
+ throw x + 2;
+ } catch (x) {
+ yield x;
+ x += 1;
+ yield x;
+ }
+ yield x;
+ try {
+ throw x + 3;
+ } catch (y) {
+ yield y;
+ y *= 2;
+ yield y;
+ }
+ yield y;
+ }
+
+ check(gen(1), [3, 4, 1, 4, 8, 2]);
+ check(gen(2), [4, 5, 2, 5, 10, 3]);
+ });
+
+ it("should not replace variables defined in inner scopes", function() {
+ function *gen(x) {
+ try {
+ throw x;
+ } catch (x) {
+ yield x;
+
+ yield (function(x) {
+ return x += 1;
+ }(x + 1));
+
+ yield (function() {
+ var x = arguments[0];
+ return x * 2;
+ }(x + 2));
+
+ yield (function() {
+ function notCalled(x) {
+ throw x;
+ }
+
+ x >>= 1;
+ return x;
+ }());
+
+ yield x -= 1;
+ }
+
+ yield x;
+ }
+
+ check(gen(10), [10, 12, 24, 5, 4, 10]);
+ check(gen(11), [11, 13, 26, 5, 4, 11]);
+ });
+
+ it("should allow nested catch parameters of the same name", function() {
+ function *gen() {
+ try {
+ raise("e1");
+ } catch (e) {
+ yield e;
+ try {
+ raise("e2");
+ } catch (e) {
+ yield e;
+ }
+ yield e;
+ }
+ }
+
+ check(gen(), ["e1", "e2", "e1"]);
+ });
+
+ it("should not interfere with non-referential identifiers", function() {
+ function *gen() {
+ try {
+ yield 1;
+ raise(new Error("oyez"));
+ yield 2;
+ } catch (e) {
+ yield 3;
+ e.e = "e.e";
+ e[e.message] = "e.oyez";
+ return {
+ e: e,
+ identity: function(x) {
+ var e = x;
+ return e;
+ }
+ };
+ }
+ yield 4;
+ }
+
+ var g = gen();
+ assert.deepEqual(g.next(), { value: 1, done: false });
+ assert.deepEqual(g.next(), { value: 3, done: false });
+
+ var info = g.next();
+ assert.strictEqual(info.done, true);
+ assert.strictEqual(info.value.e.message, "oyez");
+ assert.strictEqual(info.value.e.e, "e.e");
+ assert.strictEqual(info.value.e.oyez, "e.oyez");
+ assert.strictEqual(info.value.identity("same"), "same");
+ });
+});
+
+describe("empty while loops", function() {
+ it("should be preserved in generated code", function() {
+ function *gen(x) {
+ while (x) {
+ // empty while loop
+ }
+
+ do {
+ // empty do-while loop
+ } while (x);
+
+ return gen.toString();
+ }
+
+ var info = gen(false).next();
+ assert.strictEqual(info.done, true);
+ assert.ok(/empty while loop/.test(info.value));
+ assert.ok(/empty do-while loop/.test(info.value));
+ });
+});
+
+describe("object literals with multiple yields", function() {
+ it("should receive different sent values", function() {
+ function *gen(fn) {
+ return {
+ a: yield "a",
+ b: yield "b",
+ c: fn(yield "c", yield "d"),
+ d: [yield "e", yield "f"]
+ };
+ }
+
+ check(gen(function sum(x, y) {
+ return x + y;
+ }), ["a", "b", "c", "d", "e", "f"], {
+ a: 1,
+ b: 2,
+ c: 3 + 4,
+ d: [5, 6]
+ });
+ });
+});
+
+describe("generator .throw method", function() {
+ (runningInTranslation ? it : xit)("should complete generator", function() {
+ function *gen(x) {
+ yield 2;
+ throw 1;
+ }
+
+ var u = gen();
+
+ u.next();
+
+ try {
+ u.throw(2);
+ } catch (err) {
+ assert.strictEqual(err, 2);
+ }
+
+ assertAlreadyFinished(u);
+ });
+
+ it("should work after the final call to .next", function() {
+ function *gen() {
+ yield 1;
+ }
+
+ var g = gen();
+ assert.deepEqual(g.next(), { value: 1, done: false });
+
+ var exception = new Error("unhandled exception");
+ try {
+ g.throw(exception);
+ assert.ok(false, "should have thrown an exception");
+ } catch (err) {
+ assert.strictEqual(err, exception);
+ }
+ });
+
+ it("should immediately complete a new-born generator", function() {
+ var began = false;
+
+ function *gen() {
+ began = true;
+ yield 1;
+ }
+
+ var g = gen();
+ var exception = new Error("unhandled exception");
+ try {
+ g.throw(exception);
+ assert.ok(false, "should have thrown an exception");
+ } catch (err) {
+ assert.strictEqual(err, exception);
+ assert.strictEqual(began, false);
+ }
+ });
+
+ it("should not propagate errors handled inside a delegate", function() {
+ function *outer() {
+ try {
+ yield* inner();
+ } catch (err) {
+ return -1;
+ }
+ return 1;
+ }
+
+ function *inner() {
+ try {
+ yield void 0;
+ } catch (e) {
+ return;
+ }
+ }
+
+ var g = outer();
+ g.next();
+ assert.equal(g.throw(new Error('foo')).value, 1);
+ });
+
+ it("should propagate errors unhandled inside a delegate", function() {
+ function *outer() {
+ try {
+ yield* inner();
+ } catch (err) {
+ return -1;
+ }
+ return 1;
+ }
+
+ function *inner() {
+ yield void 0;
+ }
+
+ var g = outer();
+ g.next();
+ assert.equal(g.throw(new Error('foo')).value, -1);
+ });
+});
+
+describe("unqualified function calls", function() {
+ it("should have a global `this` object", function() {
+ function getThis() {
+ return this;
+ }
+
+ // This is almost certainly the global object, but there's a chance it
+ // might be null or undefined (in strict mode).
+ var unqualifiedThis = getThis();
+
+ function *invoke() {
+ // It seems like a bug in the ES6 spec that we have to yield an
+ // argument instead of just calling (yield)().
+ return (yield "dummy")();
+ }
+
+ var g = invoke();
+ var info = g.next();
+
+ assert.deepEqual(info, { value: "dummy", done: false });
+
+ info = g.next(getThis);
+
+ // Avoid using assert.strictEqual when the arguments might equal the
+ // global object, since JSON.stringify chokes on circular structures.
+ assert.ok(info.value === unqualifiedThis);
+
+ assert.strictEqual(info.done, true);
+ });
+});
+
+describe("yield* expression results", function () {
+ it("have correct values", function () {
+ function* foo() {
+ yield 0;
+ return yield* bar();
+ }
+
+ function* bar() {
+ yield 1;
+ return 2;
+ }
+
+ check(foo(), [0, 1], 2);
+ });
+
+ it("can be used in complex expressions", function () {
+ function pumpNumber(gen) {
+ var n = 0;
+
+ while (true) {
+ var res = n > 0 ? gen.next(n) : gen.next();
+ n = res.value;
+ if (res.done) {
+ return n;
+ }
+ }
+ }
+
+ function* foo() {
+ return (yield* bar()) + (yield* bar());
+ }
+
+ function* bar() {
+ return (yield 2) + (yield 3);
+ }
+
+ assert.strictEqual(pumpNumber(bar()), 5);
+ assert.strictEqual(pumpNumber(foo()), 10);
+ });
+});
+
+describe("isGeneratorFunction", function() {
+ it("should work for function declarations", function() {
+ // Do the assertions up here to make sure the generator function is
+ // marked at the beginning of the block the function is declared in.
+ assert.strictEqual(
+ regeneratorRuntime.isGeneratorFunction(genFun),
+ true
+ );
+
+ assert.strictEqual(
+ regeneratorRuntime.isGeneratorFunction(normalFun),
+ false
+ );
+
+ function normalFun() {
+ return 0;
+ }
+
+ function *genFun() {
+ yield 0;
+ }
+ });
+
+ it("should work for function expressions", function() {
+ assert.strictEqual(
+ regeneratorRuntime.isGeneratorFunction(function *genFun() {
+ yield 0;
+ }),
+ true
+ );
+
+ assert.strictEqual(
+ regeneratorRuntime.isGeneratorFunction(function normalFun() {
+ return 0;
+ }),
+ false
+ );
+ });
+});
+
+describe("new expressions", function() {
+ it("should be able to contain yield sub-expressions", function() {
+ function A(first, second) {
+ this.first = first;
+ this.second = second;
+ }
+
+ function *gen() {
+ return yield new (yield 0)(yield 1, yield 2);
+ }
+
+ var g = gen();
+
+ assert.deepEqual(g.next(), { value: 0, done: false });
+ assert.deepEqual(g.next(A), { value: 1, done: false });
+ assert.deepEqual(g.next("asdf"), { value: 2, done: false });
+
+ var info = g.next("zxcv");
+ assert.strictEqual(info.done, false);
+ assert.ok(info.value instanceof A);
+ assert.strictEqual(info.value.first, "asdf");
+ assert.strictEqual(info.value.second, "zxcv");
+
+ assert.deepEqual(g.next("qwer"), { value: "qwer", done: true });
+ });
+});
+
+describe("block binding", function() {
+ it("should translate block binding correctly", function() {
+ "use strict";
+
+ function *gen() {
+ var a$0 = 0, a$1 = 1;
+
+ let a = 3;
+
+ {
+ let a = 1;
+ yield a + a$0;
+ }
+
+ {
+ let a = 2;
+ yield a - 1 + a$1;
+ }
+
+ yield a;
+ }
+
+ var g = gen();
+
+ assert.deepEqual(g.next(), { value: 1, done: false });
+ assert.deepEqual(g.next(), { value: 2, done: false });
+ assert.deepEqual(g.next(), { value: 3, done: false });
+ assert.deepEqual(g.next(), { value: void 0, done: true });
+ });
+
+ it("should translate block binding with iife correctly", function() {
+ "use strict";
+
+ function *gen() {
+ let arr = [];
+
+ for (let x = 0; x < 3; x++) {
+ let y = x;
+ arr.push(function() { return y; });
+ }
+
+ {
+ let x;
+ while( x = arr.pop() ) {
+ yield x;
+ }
+ }
+ }
+
+ var g = gen();
+
+ assert.equal(g.next().value(), 2);
+ assert.equal(g.next().value(), 1);
+ assert.equal(g.next().value(), 0);
+ assert.deepEqual(g.next(), { value: void 0, done: true });
+ });
+});
+
+describe("newborn generators", function() {
+ it("should be able to yield* non-newborn generators", function() {
+ function *inner() {
+ return [yield 1, yield 2];
+ }
+
+ function *outer(delegate) {
+ return yield* delegate;
+ }
+
+ var n = inner();
+
+ assert.deepEqual(n.next(), {
+ value: 1,
+ done: false
+ });
+
+ var g = outer(n);
+
+ // I would really like to be able to pass 3 to g.next here, but V8
+ // ignores values sent to newborn generators, and SpiderMonkey throws
+ // a TypeError.
+ assert.deepEqual(g.next(), {
+ value: 2,
+ done: false
+ });
+
+ assert.deepEqual(g.next(4), {
+ value: [void 0, 4],
+ done: true
+ });
+ });
+
+ it("should support the ignore-initial-yield wrapper idiom", function() {
+ var markers = [];
+
+ function *inner() {
+ markers.push(0);
+ var sent1 = yield 1;
+ markers.push(2);
+ var sent2 = yield 2;
+ markers.push(3);
+ return [sent1, sent2];
+ }
+
+ function wrapper(delegate) {
+ var gen = (function*() {
+ // This yield is the "initial yield" whose argument we ignore.
+ var sent = yield "ignored", info;
+
+ markers.push(1);
+
+ while (!(info = delegate.next(sent)).done) {
+ sent = yield info.value;
+ }
+
+ markers.push(4);
+
+ return info.value;
+ })();
+
+ // Ensure that gen is not newborn and that the next invocation of
+ // gen.next(value) can send value to the initial yield expression.
+ gen.next();
+
+ return gen;
+ }
+
+ var n = inner();
+
+ assert.deepEqual(n.next(), {
+ value: 1,
+ done: false
+ });
+
+ var g = wrapper(n);
+
+ // Unlike in the previous spec, it's fine to pass 3 to g.next here,
+ // because g is not newborn, because g.next was already called once
+ // before g was returned from the wrapper function.
+ assert.deepEqual(g.next(3), {
+ value: 2,
+ done: false
+ });
+
+ assert.deepEqual(g.next(4), {
+ value: [3, 4],
+ done: true
+ });
+
+ // Ensure we encountered the marker points in the expected order.
+ assert.deepEqual(markers, [0, 1, 2, 3, 4]);
+ });
+
+ it("should allow chaining newborn and non-newborn generators", function() {
+ function *range(n) {
+ for (var i = 0; i < n; ++i) {
+ yield i;
+ }
+ }
+
+ function *chain(a, b) {
+ yield* a;
+ yield* b;
+ }
+
+ check(chain(range(3), range(5)), [0, 1, 2, 0, 1, 2, 3, 4]);
+
+ function *y3(x) {
+ return yield yield yield x;
+ }
+
+ function *y5(x) {
+ return yield yield yield yield yield x;
+ }
+
+ check(
+ chain(y3("foo"), y5("bar")),
+ ["foo", 1, 2, "bar", 4, 5, 6, 7]
+ );
+
+ var g3 = y3("three");
+ assert.deepEqual(g3.next(), {
+ value: "three",
+ done: false
+ });
+
+ var g5 = y5("five");
+ assert.deepEqual(g5.next(), {
+ value: "five",
+ done: false
+ });
+
+ var undef; // A little easier to read than void 0.
+ check(chain(g3, g5), [undef, 1, undef, 3, 4, 5]);
+ });
+});
+
+describe("labeled break and continue statements", function() {
+ it("should be able to exit multiple try statements", function() {
+ var e1 = "first";
+ var e2 = "second";
+ var e3 = "third";
+ var e4 = "fourth";
+
+ function *gen(n, which) {
+ try {
+ yield 0;
+ raise(e1);
+
+ } finally {
+ yield 1;
+
+ loop:
+ for (var i = 0; i < n; ++i) {
+ yield i;
+
+ try {
+ raise(e2);
+ } finally {
+ yield 2;
+
+ try {
+ raise(e3);
+ } finally {
+ yield 3;
+
+ try {
+ raise(e4);
+ } finally {
+ yield 4;
+
+ if (which === "break") {
+ yield "breaking";
+ break loop;
+ }
+
+ if (which === "continue") {
+ yield "continuing";
+ continue loop;
+ }
+
+ yield 5;
+ }
+ }
+ }
+ }
+
+ yield 6;
+ }
+ }
+
+ try {
+ check(gen(1, "break"), [
+ 0, 1, 0, 2, 3, 4, "breaking", 6
+ ]);
+ assert.ok(false, "should have thrown an exception");
+ } catch (err) {
+ assert.strictEqual(err, e1);
+ }
+
+ try {
+ check(gen(3, "continue"), [
+ 0, 1, 0, 2, 3, 4, "continuing",
+ 1, 2, 3, 4, "continuing",
+ 2, 2, 3, 4, "continuing",
+ 6 // Loop finished naturally.
+ ]);
+ assert.ok(false, "should have thrown an exception");
+ } catch (err) {
+ assert.strictEqual(err, e1);
+ }
+
+ try {
+ check(gen(3, "neither"), [
+ 0, 1, 0, 2, 3, 4, 5
+ ]);
+ assert.ok(false, "should have thrown an exception");
+ } catch (err) {
+ assert.strictEqual(err, e4);
+ }
+ });
+
+ it("should allow breaking from any labeled statement", function() {
+ function* gen(limit) {
+ yield 0;
+
+ for (var i = 0; i < limit; ++i) {
+ yield 1;
+
+ label1: {
+ yield 2;
+ break label1;
+ yield 3;
+ }
+
+ label2:
+ if (limit === 3) label3: {
+ yield 4;
+ if (i === 0) break label2;
+ yield 5;
+ if (i === 1) break label3;
+ label4: yield 6;
+ // This should break from the for-loop.
+ if (i === 2) xxx: break;
+ yield 7;
+ }
+
+ // This should be a no-op.
+ xxx: break xxx;
+
+ yield 8
+ }
+
+ yield 9;
+ }
+
+ check(gen(0), [0, 9]);
+ check(gen(1), [0, 1, 2, 8, 9]);
+ check(gen(2), [0, 1, 2, 8, 1, 2, 8, 9]);
+ check(gen(3), [0, 1, 2, 4, 8, 1, 2, 4, 5, 8, 1, 2, 4, 5, 6, 9]);
+ });
+});
+
+describe("for loop with var decl and no update expression", function() {
+ // https://github.com/facebook/regenerator/issues/103
+ function *range() {
+ for (var i = 0; false; ) {
+ }
+ }
+
+ it("should compile and run", function() {
+ check(range(), []);
+ });
+});
+
+describe("generator function prototype", function() {
+ function getProto(obj) {
+ return Object.getPrototypeOf
+ ? Object.getPrototypeOf(obj)
+ : obj.__proto__;
+ }
+
+ it("should follow the expected object model", function() {
+ var GeneratorFunctionPrototype = getProto(f);
+ var GeneratorFunction = GeneratorFunctionPrototype.constructor;
+
+ assert.strictEqual(GeneratorFunction.name, 'GeneratorFunction');
+ assert.strictEqual(GeneratorFunction.prototype,
+ GeneratorFunctionPrototype);
+ assert.strictEqual(GeneratorFunctionPrototype.prototype.constructor,
+ GeneratorFunctionPrototype);
+ assert.strictEqual(GeneratorFunctionPrototype.prototype,
+ getProto(f.prototype));
+ assert.strictEqual(getProto(GeneratorFunctionPrototype),
+ Function.prototype);
+
+ if (typeof process === "undefined" ||
+ process.version.slice(1, 3) === "0.") {
+ // Node version strings start with 0.
+ assert.strictEqual(GeneratorFunctionPrototype.name,
+ "GeneratorFunctionPrototype");
+ } else if (process.version.slice(1, 3) === "1.") {
+ // iojs version strings start with 1., and iojs gets this .name
+ // property wrong. TODO report this?
+ assert.strictEqual(GeneratorFunctionPrototype.name, "");
+ }
+
+ assert.strictEqual(typeof f2, "function");
+ assert.strictEqual(f2.constructor, GeneratorFunction);
+ assert.ok(f2 instanceof GeneratorFunction);
+ assert.strictEqual(f2.name, "f2");
+
+ var g = f();
+ assert.ok(g instanceof f);
+ assert.strictEqual(getProto(g), f.prototype);
+
+ assert.deepEqual([], Object.getOwnPropertyNames(f.prototype));
+ // assert.deepEqual([], Object.getOwnPropertyNames(g));
+
+ f.prototype.x = 42;
+
+ var g2 = f();
+ assert.strictEqual(g2.x, 42);
+
+ var g3 = new f();
+ assert.strictEqual(g3.x, 42);
+
+ function* f2() {
+ yield 1;
+ }
+
+ assert.strictEqual(getProto(f), getProto(f2));
+ assert.strictEqual(f.hasOwnProperty('constructor'), false);
+ assert.strictEqual(getProto(f).constructor.name, 'GeneratorFunction');
+
+ // Intentionally at the end to test hoisting.
+ function* f() {
+ yield this;
+ }
+
+ function* f() {
+ yield 1;
+ }
+
+ var f2 = f;
+ f = 42;
+ var g = f2();
+
+ assert.deepEqual(g.next(), { value: 1, done: false });
+ assert.deepEqual(g.next(), { value: void 0, done: true });
+ assert.ok(g instanceof f2);
+ });
+});
+
+describe("for-of loops", function() {
+ (runningInTranslation ? it : xit)
+ ("should work for Arrays", function() {
+ var sum = 0;
+ for (var x of [1, 2].concat(3)) {
+ sum += x;
+ }
+ assert.strictEqual(sum, 6);
+ });
+
+ it("should work for generators", function() {
+ var value, values = [];
+ for (value of range(3))
+ values.push(value);
+ assert.deepEqual(values, [0, 1, 2]);
+ });
+
+ it("should work inside of generators", function() {
+ function *yieldPermutations(list) {
+ if (list.length < 2) {
+ yield list;
+ return 1;
+ }
+
+ var count = 0;
+ var first = list.slice(0, 1);
+ var genRest = yieldPermutations(list.slice(1));
+
+ for (var perm of genRest) {
+ for (var i = 0; i < list.length; ++i) {
+ var prefix = perm.slice(0, i);
+ var suffix = perm.slice(i);
+ yield prefix.concat(first, suffix);
+ }
+
+ count += i;
+ }
+
+ return count;
+ }
+
+ var count = 0;
+ for (var perm of yieldPermutations([])) {
+ assert.deepEqual(perm, []);
+ ++count;
+ }
+ assert.strictEqual(count, 1);
+
+ check(yieldPermutations([1]), [[1]], 1);
+
+ check(yieldPermutations([2, 1]), [
+ [2, 1],
+ [1, 2]
+ ], 2);
+
+ check(yieldPermutations([1,3,2]), [
+ [1, 3, 2],
+ [3, 1, 2],
+ [3, 2, 1],
+ [1, 2, 3],
+ [2, 1, 3],
+ [2, 3, 1]
+ ], 6);
+ });
+});
+
+describe("generator return method", function() {
+ if (!runningInTranslation) {
+ // The return method has not been specified or implemented natively,
+ // yet, so these tests need only pass in translation.
+ return;
+ }
+
+ it("should work with newborn generators", function() {
+ function *gen() {
+ yield 0;
+ }
+
+ var g = gen();
+
+ assert.deepEqual(g.return("argument"), {
+ value: "argument",
+ done: true
+ });
+
+ assertAlreadyFinished(g);
+ });
+
+ it("should behave as if generator actually returned", function() {
+ var executedFinally = false;
+
+ function *gen() {
+ try {
+ yield 0;
+ } catch (err) {
+ assert.ok(false, "should not have executed the catch handler");
+ } finally {
+ executedFinally = true;
+ }
+ }
+
+ var g = gen();
+ assert.deepEqual(g.next(), { value: 0, done: false });
+
+ assert.deepEqual(g.return("argument"), {
+ value: "argument",
+ done: true
+ });
+
+ assert.strictEqual(executedFinally, true);
+ assertAlreadyFinished(g);
+ });
+
+ it("should return both delegate and delegator", function() {
+ var checkpoints = [];
+
+ function* callee(errorToThrow) {
+ try {
+ yield 1;
+ yield 2;
+ } finally {
+ checkpoints.push("callee finally");
+ if (errorToThrow) {
+ throw errorToThrow;
+ }
+ }
+ }
+
+ function* caller(errorToThrow) {
+ try {
+ yield 0;
+ yield* callee(errorToThrow);
+ yield 3;
+ } finally {
+ checkpoints.push("caller finally");
+ }
+ }
+
+ var g1 = caller();
+
+ assert.deepEqual(g1.next(), { value: 0, done: false });
+ assert.deepEqual(g1.next(), { value: 1, done: false });
+ assert.deepEqual(g1.return(-1), { value: -1, done: true });
+ assert.deepEqual(checkpoints, [
+ "callee finally",
+ "caller finally"
+ ]);
+
+ var error = new Error("thrown from callee");
+ var g2 = caller(error);
+
+ assert.deepEqual(g2.next(), { value: 0, done: false });
+ assert.deepEqual(g2.next(), { value: 1, done: false });
+
+ try {
+ g2.return(-1);
+ assert.ok(false, "should have thrown an exception");
+ } catch (thrown) {
+ assert.strictEqual(thrown, error);
+ }
+
+ assert.deepEqual(checkpoints, [
+ "callee finally",
+ "caller finally",
+ "callee finally",
+ "caller finally"
+ ]);
+ });
+});
+
+describe("expressions containing yield subexpressions", function() {
+ it("should evaluate all subexpressions before yielding", function() {
+ function *gen(x) {
+ return x * (yield (function(y) { x = y }));
+ }
+
+ var g = gen(2);
+ var result = g.next();
+ assert.strictEqual(result.done, false);
+
+ result.value(5);
+
+ assert.deepEqual(g.next(5), {
+ value: 10,
+ done: true
+ });
+ });
+
+ it("should work even with getter member expressions", function() {
+ function *gen() {
+ return a.b + (yield "asdf");
+ }
+
+ var a = {};
+ var b = 0;
+
+ Object.defineProperty(a, "b", {
+ get: function() {
+ return ++b;
+ }
+ });
+
+ var g = gen();
+
+ assert.strictEqual(a.b, 1);
+
+ assert.deepEqual(g.next(), {
+ value: "asdf",
+ done: false
+ });
+
+ assert.strictEqual(a.b, 3);
+
+ assert.deepEqual(g.next(2), {
+ value: 4,
+ done: true
+ });
+ });
+
+ it("should evaluate all array elements before yielding", function() {
+ function *gen() {
+ return [a, yield "asdf", a];
+ }
+
+ var a = 1;
+ var g = gen();
+
+ assert.deepEqual(g.next(), {
+ value: "asdf",
+ done: false
+ });
+
+ a = 3;
+
+ assert.deepEqual(g.next(2), {
+ value: [1, 2, 3],
+ done: true
+ });
+ });
+
+ it("should handle callee member expressions correctly", function() {
+ function *gen() {
+ a = a.slice(0).concat(yield "asdf");
+ return a;
+ }
+
+ var a = [];
+ var g = gen();
+
+ assert.deepEqual(g.next(), {
+ value: "asdf",
+ done: false
+ });
+
+ a.push(1);
+
+ assert.deepEqual(g.next(2), {
+ value: [2],
+ done: true
+ });
+ });
+
+ it("should handle implicit stringification correctly", function() {
+ function *gen() {
+ return a + (yield "asdf");
+ }
+
+ var a = [1, 2];
+ var g = gen();
+
+ assert.deepEqual(g.next(), {
+ value: "asdf",
+ done: false
+ });
+
+ a = [4,5];
+
+ assert.deepEqual(g.next(",3"), {
+ value: "1,2,3",
+ done: true
+ });
+ });
+});
diff --git a/node_modules/babel-plugin-transform-regenerator/LICENSE b/node_modules/babel-plugin-transform-regenerator/LICENSE
new file mode 100644
index 0000000..187bfe2
--- /dev/null
+++ b/node_modules/babel-plugin-transform-regenerator/LICENSE
@@ -0,0 +1,14 @@
+BSD License
+
+For "regenerator" software
+
+Copyright (c) 2014, Facebook, Inc.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/node_modules/babel-plugin-transform-regenerator/PATENTS b/node_modules/babel-plugin-transform-regenerator/PATENTS
new file mode 100644
index 0000000..a2bd67d
--- /dev/null
+++ b/node_modules/babel-plugin-transform-regenerator/PATENTS
@@ -0,0 +1,33 @@
+Additional Grant of Patent Rights Version 2
+
+"Software" means the Regenerator software distributed by Facebook, Inc.
+
+Facebook, Inc. ("Facebook") hereby grants to each recipient of the Software
+("you") a perpetual, worldwide, royalty-free, non-exclusive, irrevocable
+(subject to the termination provision below) license under any Necessary
+Claims, to make, have made, use, sell, offer to sell, import, and otherwise
+transfer the Software. For avoidance of doubt, no license is granted under
+Facebook's rights in any patent claims that are infringed by (i) modifications
+to the Software made by you or any third party or (ii) the Software in
+combination with any software or other technology.
+
+The license granted hereunder will terminate, automatically and without notice,
+if you (or any of your subsidiaries, corporate affiliates or agents) initiate
+directly or indirectly, or take a direct financial interest in, any Patent
+Assertion: (i) against Facebook or any of its subsidiaries or corporate
+affiliates, (ii) against any party if such Patent Assertion arises in whole or
+in part from any software, technology, product or service of Facebook or any of
+its subsidiaries or corporate affiliates, or (iii) against any party relating
+to the Software. Notwithstanding the foregoing, if Facebook or any of its
+subsidiaries or corporate affiliates files a lawsuit alleging patent
+infringement against you in the first instance, and you respond by filing a
+patent infringement counterclaim in that lawsuit against that party that is
+unrelated to the Software, the license granted hereunder will not terminate
+under section (i) of this paragraph due to such counterclaim.
+
+A "Necessary Claim" is a claim of a patent owned by Facebook that is
+necessarily infringed by the Software standing alone.
+
+A "Patent Assertion" is any lawsuit or other action alleging direct, indirect,
+or contributory infringement or inducement to infringe any patent, including a
+cross-claim or counterclaim.
diff --git a/node_modules/babel-plugin-transform-regenerator/README.md b/node_modules/babel-plugin-transform-regenerator/README.md
new file mode 100644
index 0000000..0ee17fc
--- /dev/null
+++ b/node_modules/babel-plugin-transform-regenerator/README.md
@@ -0,0 +1,46 @@
+# babel-plugin-transform-regenerator
+
+Transform async/generator functions with [regenerator](https://github.com/facebook/regenerator)
+
+## Installation
+
+```sh
+$ npm install babel-plugin-transform-regenerator
+```
+
+## Usage
+
+### Via `.babelrc` (Recommended)
+
+**.babelrc**
+
+```js
+// without options
+{
+ "plugins": ["transform-regenerator"]
+}
+// with options
+{
+ "plugins": [
+ ["transform-regenerator", {
+ asyncGenerators: false, // true by default
+ generators: false, // true by default
+ async: false // true by default
+ }]
+ ]
+}
+```
+
+### Via CLI
+
+```sh
+$ babel --plugins transform-regenerator script.js
+```
+
+### Via Node API
+
+```javascript
+require("babel-core").transform("code", {
+ plugins: ["transform-regenerator"]
+});
+```
diff --git a/node_modules/babel-plugin-transform-regenerator/lib/emit.js b/node_modules/babel-plugin-transform-regenerator/lib/emit.js
new file mode 100644
index 0000000..4de85b5
--- /dev/null
+++ b/node_modules/babel-plugin-transform-regenerator/lib/emit.js
@@ -0,0 +1,996 @@
+/**
+ * Copyright (c) 2014, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * https://raw.github.com/facebook/regenerator/master/LICENSE file. An
+ * additional grant of patent rights can be found in the PATENTS file in
+ * the same directory.
+ */
+
+"use strict";
+
+var _interopRequireDefault = require("babel-runtime/helpers/interop-require-default")["default"];
+
+var _interopRequireWildcard = require("babel-runtime/helpers/interop-require-wildcard")["default"];
+
+var _assert = require("assert");
+
+var _assert2 = _interopRequireDefault(_assert);
+
+var _babelTypes = require("babel-types");
+
+var t = _interopRequireWildcard(_babelTypes);
+
+var _leap = require("./leap");
+
+var leap = _interopRequireWildcard(_leap);
+
+var _meta = require("./meta");
+
+var meta = _interopRequireWildcard(_meta);
+
+var _util = require("./util");
+
+var util = _interopRequireWildcard(_util);
+
+var hasOwn = Object.prototype.hasOwnProperty;
+
+function Emitter(contextId) {
+ _assert2["default"].ok(this instanceof Emitter);
+ t.assertIdentifier(contextId);
+
+ // Used to generate unique temporary names.
+ this.nextTempId = 0;
+
+ // In order to make sure the context object does not collide with
+ // anything in the local scope, we might have to rename it, so we
+ // refer to it symbolically instead of just assuming that it will be
+ // called "context".
+ this.contextId = contextId;
+
+ // An append-only list of Statements that grows each time this.emit is
+ // called.
+ this.listing = [];
+
+ // A sparse array whose keys correspond to locations in this.listing
+ // that have been marked as branch/jump targets.
+ this.marked = [true];
+
+ // The last location will be marked when this.getDispatchLoop is
+ // called.
+ this.finalLoc = loc();
+
+ // A list of all leap.TryEntry statements emitted.
+ this.tryEntries = [];
+
+ // Each time we evaluate the body of a loop, we tell this.leapManager
+ // to enter a nested loop context that determines the meaning of break
+ // and continue statements therein.
+ this.leapManager = new leap.LeapManager(this);
+}
+
+var Ep = Emitter.prototype;
+exports.Emitter = Emitter;
+
+// Offsets into this.listing that could be used as targets for branches or
+// jumps are represented as numeric Literal nodes. This representation has
+// the amazingly convenient benefit of allowing the exact value of the
+// location to be determined at any time, even after generating code that
+// refers to the location.
+function loc() {
+ return t.numericLiteral(-1);
+}
+
+// Sets the exact value of the given location to the offset of the next
+// Statement emitted.
+Ep.mark = function (loc) {
+ t.assertLiteral(loc);
+ var index = this.listing.length;
+ if (loc.value === -1) {
+ loc.value = index;
+ } else {
+ // Locations can be marked redundantly, but their values cannot change
+ // once set the first time.
+ _assert2["default"].strictEqual(loc.value, index);
+ }
+ this.marked[index] = true;
+ return loc;
+};
+
+Ep.emit = function (node) {
+ if (t.isExpression(node)) {
+ node = t.expressionStatement(node);
+ }
+
+ t.assertStatement(node);
+ this.listing.push(node);
+};
+
+// Shorthand for emitting assignment statements. This will come in handy
+// for assignments to temporary variables.
+Ep.emitAssign = function (lhs, rhs) {
+ this.emit(this.assign(lhs, rhs));
+ return lhs;
+};
+
+// Shorthand for an assignment statement.
+Ep.assign = function (lhs, rhs) {
+ return t.expressionStatement(t.assignmentExpression("=", lhs, rhs));
+};
+
+// Convenience function for generating expressions like context.next,
+// context.sent, and context.rval.
+Ep.contextProperty = function (name, computed) {
+ return t.memberExpression(this.contextId, computed ? t.stringLiteral(name) : t.identifier(name), !!computed);
+};
+
+// Shorthand for setting context.rval and jumping to `context.stop()`.
+Ep.stop = function (rval) {
+ if (rval) {
+ this.setReturnValue(rval);
+ }
+
+ this.jump(this.finalLoc);
+};
+
+Ep.setReturnValue = function (valuePath) {
+ t.assertExpression(valuePath.value);
+
+ this.emitAssign(this.contextProperty("rval"), this.explodeExpression(valuePath));
+};
+
+Ep.clearPendingException = function (tryLoc, assignee) {
+ t.assertLiteral(tryLoc);
+
+ var catchCall = t.callExpression(this.contextProperty("catch", true), [tryLoc]);
+
+ if (assignee) {
+ this.emitAssign(assignee, catchCall);
+ } else {
+ this.emit(catchCall);
+ }
+};
+
+// Emits code for an unconditional jump to the given location, even if the
+// exact value of the location is not yet known.
+Ep.jump = function (toLoc) {
+ this.emitAssign(this.contextProperty("next"), toLoc);
+ this.emit(t.breakStatement());
+};
+
+// Conditional jump.
+Ep.jumpIf = function (test, toLoc) {
+ t.assertExpression(test);
+ t.assertLiteral(toLoc);
+
+ this.emit(t.ifStatement(test, t.blockStatement([this.assign(this.contextProperty("next"), toLoc), t.breakStatement()])));
+};
+
+// Conditional jump, with the condition negated.
+Ep.jumpIfNot = function (test, toLoc) {
+ t.assertExpression(test);
+ t.assertLiteral(toLoc);
+
+ var negatedTest = undefined;
+ if (t.isUnaryExpression(test) && test.operator === "!") {
+ // Avoid double negation.
+ negatedTest = test.argument;
+ } else {
+ negatedTest = t.unaryExpression("!", test);
+ }
+
+ this.emit(t.ifStatement(negatedTest, t.blockStatement([this.assign(this.contextProperty("next"), toLoc), t.breakStatement()])));
+};
+
+// Returns a unique MemberExpression that can be used to store and
+// retrieve temporary values. Since the object of the member expression is
+// the context object, which is presumed to coexist peacefully with all
+// other local variables, and since we just increment `nextTempId`
+// monotonically, uniqueness is assured.
+Ep.makeTempVar = function () {
+ return this.contextProperty("t" + this.nextTempId++);
+};
+
+Ep.getContextFunction = function (id) {
+ return t.functionExpression(id || null, /*Anonymous*/
+ [this.contextId], t.blockStatement([this.getDispatchLoop()]), false, // Not a generator anymore!
+ false // Nor an expression.
+ );
+};
+
+// Turns this.listing into a loop of the form
+//
+// while (1) switch (context.next) {
+// case 0:
+// ...
+// case n:
+// return context.stop();
+// }
+//
+// Each marked location in this.listing will correspond to one generated
+// case statement.
+Ep.getDispatchLoop = function () {
+ var self = this;
+ var cases = [];
+ var current = undefined;
+
+ // If we encounter a break, continue, or return statement in a switch
+ // case, we can skip the rest of the statements until the next case.
+ var alreadyEnded = false;
+
+ self.listing.forEach(function (stmt, i) {
+ if (self.marked.hasOwnProperty(i)) {
+ cases.push(t.switchCase(t.numericLiteral(i), current = []));
+ alreadyEnded = false;
+ }
+
+ if (!alreadyEnded) {
+ current.push(stmt);
+ if (t.isCompletionStatement(stmt)) alreadyEnded = true;
+ }
+ });
+
+ // Now that we know how many statements there will be in this.listing,
+ // we can finally resolve this.finalLoc.value.
+ this.finalLoc.value = this.listing.length;
+
+ cases.push(t.switchCase(this.finalLoc, [
+ // Intentionally fall through to the "end" case...
+ ]),
+
+ // So that the runtime can jump to the final location without having
+ // to know its offset, we provide the "end" case as a synonym.
+ t.switchCase(t.stringLiteral("end"), [
+ // This will check/clear both context.thrown and context.rval.
+ t.returnStatement(t.callExpression(this.contextProperty("stop"), []))]));
+
+ return t.whileStatement(t.numericLiteral(1), t.switchStatement(t.assignmentExpression("=", this.contextProperty("prev"), this.contextProperty("next")), cases));
+};
+
+Ep.getTryLocsList = function () {
+ if (this.tryEntries.length === 0) {
+ // To avoid adding a needless [] to the majority of runtime.wrap
+ // argument lists, force the caller to handle this case specially.
+ return null;
+ }
+
+ var lastLocValue = 0;
+
+ return t.arrayExpression(this.tryEntries.map(function (tryEntry) {
+ var thisLocValue = tryEntry.firstLoc.value;
+ _assert2["default"].ok(thisLocValue >= lastLocValue, "try entries out of order");
+ lastLocValue = thisLocValue;
+
+ var ce = tryEntry.catchEntry;
+ var fe = tryEntry.finallyEntry;
+
+ var locs = [tryEntry.firstLoc,
+ // The null here makes a hole in the array.
+ ce ? ce.firstLoc : null];
+
+ if (fe) {
+ locs[2] = fe.firstLoc;
+ locs[3] = fe.afterLoc;
+ }
+
+ return t.arrayExpression(locs);
+ }));
+};
+
+// All side effects must be realized in order.
+
+// If any subexpression harbors a leap, all subexpressions must be
+// neutered of side effects.
+
+// No destructive modification of AST nodes.
+
+Ep.explode = function (path, ignoreResult) {
+ var node = path.node;
+ var self = this;
+
+ t.assertNode(node);
+
+ if (t.isDeclaration(node)) throw getDeclError(node);
+
+ if (t.isStatement(node)) return self.explodeStatement(path);
+
+ if (t.isExpression(node)) return self.explodeExpression(path, ignoreResult);
+
+ switch (node.type) {
+ case "Program":
+ return path.get("body").map(self.explodeStatement, self);
+
+ case "VariableDeclarator":
+ throw getDeclError(node);
+
+ // These node types should be handled by their parent nodes
+ // (ObjectExpression, SwitchStatement, and TryStatement, respectively).
+ case "Property":
+ case "SwitchCase":
+ case "CatchClause":
+ throw new Error(node.type + " nodes should be handled by their parents");
+
+ default:
+ throw new Error("unknown Node of type " + JSON.stringify(node.type));
+ }
+};
+
+function getDeclError(node) {
+ return new Error("all declarations should have been transformed into " + "assignments before the Exploder began its work: " + JSON.stringify(node));
+}
+
+Ep.explodeStatement = function (path, labelId) {
+ var stmt = path.node;
+ var self = this;
+ var before = undefined,
+ after = undefined,
+ head = undefined;
+
+ t.assertStatement(stmt);
+
+ if (labelId) {
+ t.assertIdentifier(labelId);
+ } else {
+ labelId = null;
+ }
+
+ // Explode BlockStatement nodes even if they do not contain a yield,
+ // because we don't want or need the curly braces.
+ if (t.isBlockStatement(stmt)) {
+ path.get("body").forEach(function (path) {
+ self.explodeStatement(path);
+ });
+ return;
+ }
+
+ if (!meta.containsLeap(stmt)) {
+ // Technically we should be able to avoid emitting the statement
+ // altogether if !meta.hasSideEffects(stmt), but that leads to
+ // confusing generated code (for instance, `while (true) {}` just
+ // disappears) and is probably a more appropriate job for a dedicated
+ // dead code elimination pass.
+ self.emit(stmt);
+ return;
+ }
+
+ switch (stmt.type) {
+ case "ExpressionStatement":
+ self.explodeExpression(path.get("expression"), true);
+ break;
+
+ case "LabeledStatement":
+ after = loc();
+
+ // Did you know you can break from any labeled block statement or
+ // control structure? Well, you can! Note: when a labeled loop is
+ // encountered, the leap.LabeledEntry created here will immediately
+ // enclose a leap.LoopEntry on the leap manager's stack, and both
+ // entries will have the same label. Though this works just fine, it
+ // may seem a bit redundant. In theory, we could check here to
+ // determine if stmt knows how to handle its own label; for example,
+ // stmt happens to be a WhileStatement and so we know it's going to
+ // establish its own LoopEntry when we explode it (below). Then this
+ // LabeledEntry would be unnecessary. Alternatively, we might be
+ // tempted not to pass stmt.label down into self.explodeStatement,
+ // because we've handled the label here, but that's a mistake because
+ // labeled loops may contain labeled continue statements, which is not
+ // something we can handle in this generic case. All in all, I think a
+ // little redundancy greatly simplifies the logic of this case, since
+ // it's clear that we handle all possible LabeledStatements correctly
+ // here, regardless of whether they interact with the leap manager
+ // themselves. Also remember that labels and break/continue-to-label
+ // statements are rare, and all of this logic happens at transform
+ // time, so it has no additional runtime cost.
+ self.leapManager.withEntry(new leap.LabeledEntry(after, stmt.label), function () {
+ self.explodeStatement(path.get("body"), stmt.label);
+ });
+
+ self.mark(after);
+
+ break;
+
+ case "WhileStatement":
+ before = loc();
+ after = loc();
+
+ self.mark(before);
+ self.jumpIfNot(self.explodeExpression(path.get("test")), after);
+ self.leapManager.withEntry(new leap.LoopEntry(after, before, labelId), function () {
+ self.explodeStatement(path.get("body"));
+ });
+ self.jump(before);
+ self.mark(after);
+
+ break;
+
+ case "DoWhileStatement":
+ var first = loc();
+ var test = loc();
+ after = loc();
+
+ self.mark(first);
+ self.leapManager.withEntry(new leap.LoopEntry(after, test, labelId), function () {
+ self.explode(path.get("body"));
+ });
+ self.mark(test);
+ self.jumpIf(self.explodeExpression(path.get("test")), first);
+ self.mark(after);
+
+ break;
+
+ case "ForStatement":
+ head = loc();
+ var update = loc();
+ after = loc();
+
+ if (stmt.init) {
+ // We pass true here to indicate that if stmt.init is an expression
+ // then we do not care about its result.
+ self.explode(path.get("init"), true);
+ }
+
+ self.mark(head);
+
+ if (stmt.test) {
+ self.jumpIfNot(self.explodeExpression(path.get("test")), after);
+ } else {
+ // No test means continue unconditionally.
+ }
+
+ self.leapManager.withEntry(new leap.LoopEntry(after, update, labelId), function () {
+ self.explodeStatement(path.get("body"));
+ });
+
+ self.mark(update);
+
+ if (stmt.update) {
+ // We pass true here to indicate that if stmt.update is an
+ // expression then we do not care about its result.
+ self.explode(path.get("update"), true);
+ }
+
+ self.jump(head);
+
+ self.mark(after);
+
+ break;
+
+ case "TypeCastExpression":
+ return self.explodeExpression(path.get("expression"));
+
+ case "ForInStatement":
+ head = loc();
+ after = loc();
+
+ var keyIterNextFn = self.makeTempVar();
+ self.emitAssign(keyIterNextFn, t.callExpression(util.runtimeProperty("keys"), [self.explodeExpression(path.get("right"))]));
+
+ self.mark(head);
+
+ var keyInfoTmpVar = self.makeTempVar();
+ self.jumpIf(t.memberExpression(t.assignmentExpression("=", keyInfoTmpVar, t.callExpression(keyIterNextFn, [])), t.identifier("done"), false), after);
+
+ self.emitAssign(stmt.left, t.memberExpression(keyInfoTmpVar, t.identifier("value"), false));
+
+ self.leapManager.withEntry(new leap.LoopEntry(after, head, labelId), function () {
+ self.explodeStatement(path.get("body"));
+ });
+
+ self.jump(head);
+
+ self.mark(after);
+
+ break;
+
+ case "BreakStatement":
+ self.emitAbruptCompletion({
+ type: "break",
+ target: self.leapManager.getBreakLoc(stmt.label)
+ });
+
+ break;
+
+ case "ContinueStatement":
+ self.emitAbruptCompletion({
+ type: "continue",
+ target: self.leapManager.getContinueLoc(stmt.label)
+ });
+
+ break;
+
+ case "SwitchStatement":
+ // Always save the discriminant into a temporary variable in case the
+ // test expressions overwrite values like context.sent.
+ var disc = self.emitAssign(self.makeTempVar(), self.explodeExpression(path.get("discriminant")));
+
+ after = loc();
+ var defaultLoc = loc();
+ var condition = defaultLoc;
+ var caseLocs = [];
+
+ // If there are no cases, .cases might be undefined.
+ var cases = stmt.cases || [];
+
+ for (var i = cases.length - 1; i >= 0; --i) {
+ var c = cases[i];
+ t.assertSwitchCase(c);
+
+ if (c.test) {
+ condition = t.conditionalExpression(t.binaryExpression("===", disc, c.test), caseLocs[i] = loc(), condition);
+ } else {
+ caseLocs[i] = defaultLoc;
+ }
+ }
+
+ var discriminant = path.get("discriminant");
+ discriminant.replaceWith(condition);
+ self.jump(self.explodeExpression(discriminant));
+
+ self.leapManager.withEntry(new leap.SwitchEntry(after), function () {
+ path.get("cases").forEach(function (casePath) {
+ var i = casePath.key;
+ self.mark(caseLocs[i]);
+
+ casePath.get("consequent").forEach(function (path) {
+ self.explodeStatement(path);
+ });
+ });
+ });
+
+ self.mark(after);
+ if (defaultLoc.value === -1) {
+ self.mark(defaultLoc);
+ _assert2["default"].strictEqual(after.value, defaultLoc.value);
+ }
+
+ break;
+
+ case "IfStatement":
+ var elseLoc = stmt.alternate && loc();
+ after = loc();
+
+ self.jumpIfNot(self.explodeExpression(path.get("test")), elseLoc || after);
+
+ self.explodeStatement(path.get("consequent"));
+
+ if (elseLoc) {
+ self.jump(after);
+ self.mark(elseLoc);
+ self.explodeStatement(path.get("alternate"));
+ }
+
+ self.mark(after);
+
+ break;
+
+ case "ReturnStatement":
+ self.emitAbruptCompletion({
+ type: "return",
+ value: self.explodeExpression(path.get("argument"))
+ });
+
+ break;
+
+ case "WithStatement":
+ throw new Error("WithStatement not supported in generator functions.");
+
+ case "TryStatement":
+ after = loc();
+
+ var handler = stmt.handler;
+
+ var catchLoc = handler && loc();
+ var catchEntry = catchLoc && new leap.CatchEntry(catchLoc, handler.param);
+
+ var finallyLoc = stmt.finalizer && loc();
+ var finallyEntry = finallyLoc && new leap.FinallyEntry(finallyLoc, after);
+
+ var tryEntry = new leap.TryEntry(self.getUnmarkedCurrentLoc(), catchEntry, finallyEntry);
+
+ self.tryEntries.push(tryEntry);
+ self.updateContextPrevLoc(tryEntry.firstLoc);
+
+ self.leapManager.withEntry(tryEntry, function () {
+ self.explodeStatement(path.get("block"));
+
+ if (catchLoc) {
+ (function () {
+ if (finallyLoc) {
+ // If we have both a catch block and a finally block, then
+ // because we emit the catch block first, we need to jump over
+ // it to the finally block.
+ self.jump(finallyLoc);
+ } else {
+ // If there is no finally block, then we need to jump over the
+ // catch block to the fall-through location.
+ self.jump(after);
+ }
+
+ self.updateContextPrevLoc(self.mark(catchLoc));
+
+ var bodyPath = path.get("handler.body");
+ var safeParam = self.makeTempVar();
+ self.clearPendingException(tryEntry.firstLoc, safeParam);
+
+ bodyPath.traverse(catchParamVisitor, {
+ safeParam: safeParam,
+ catchParamName: handler.param.name
+ });
+
+ self.leapManager.withEntry(catchEntry, function () {
+ self.explodeStatement(bodyPath);
+ });
+ })();
+ }
+
+ if (finallyLoc) {
+ self.updateContextPrevLoc(self.mark(finallyLoc));
+
+ self.leapManager.withEntry(finallyEntry, function () {
+ self.explodeStatement(path.get("finalizer"));
+ });
+
+ self.emit(t.returnStatement(t.callExpression(self.contextProperty("finish"), [finallyEntry.firstLoc])));
+ }
+ });
+
+ self.mark(after);
+
+ break;
+
+ case "ThrowStatement":
+ self.emit(t.throwStatement(self.explodeExpression(path.get("argument"))));
+
+ break;
+
+ default:
+ throw new Error("unknown Statement of type " + JSON.stringify(stmt.type));
+ }
+};
+
+var catchParamVisitor = {
+ Identifier: function Identifier(path, state) {
+ if (path.node.name === state.catchParamName && util.isReference(path)) {
+ path.replaceWith(state.safeParam);
+ }
+ },
+
+ Scope: function Scope(path, state) {
+ if (path.scope.hasOwnBinding(state.catchParamName)) {
+ // Don't descend into nested scopes that shadow the catch
+ // parameter with their own declarations.
+ path.skip();
+ }
+ }
+};
+
+Ep.emitAbruptCompletion = function (record) {
+ if (!isValidCompletion(record)) {
+ _assert2["default"].ok(false, "invalid completion record: " + JSON.stringify(record));
+ }
+
+ _assert2["default"].notStrictEqual(record.type, "normal", "normal completions are not abrupt");
+
+ var abruptArgs = [t.stringLiteral(record.type)];
+
+ if (record.type === "break" || record.type === "continue") {
+ t.assertLiteral(record.target);
+ abruptArgs[1] = record.target;
+ } else if (record.type === "return" || record.type === "throw") {
+ if (record.value) {
+ t.assertExpression(record.value);
+ abruptArgs[1] = record.value;
+ }
+ }
+
+ this.emit(t.returnStatement(t.callExpression(this.contextProperty("abrupt"), abruptArgs)));
+};
+
+function isValidCompletion(record) {
+ var type = record.type;
+
+ if (type === "normal") {
+ return !hasOwn.call(record, "target");
+ }
+
+ if (type === "break" || type === "continue") {
+ return !hasOwn.call(record, "value") && t.isLiteral(record.target);
+ }
+
+ if (type === "return" || type === "throw") {
+ return hasOwn.call(record, "value") && !hasOwn.call(record, "target");
+ }
+
+ return false;
+}
+
+// Not all offsets into emitter.listing are potential jump targets. For
+// example, execution typically falls into the beginning of a try block
+// without jumping directly there. This method returns the current offset
+// without marking it, so that a switch case will not necessarily be
+// generated for this offset (I say "not necessarily" because the same
+// location might end up being marked in the process of emitting other
+// statements). There's no logical harm in marking such locations as jump
+// targets, but minimizing the number of switch cases keeps the generated
+// code shorter.
+Ep.getUnmarkedCurrentLoc = function () {
+ return t.numericLiteral(this.listing.length);
+};
+
+// The context.prev property takes the value of context.next whenever we
+// evaluate the switch statement discriminant, which is generally good
+// enough for tracking the last location we jumped to, but sometimes
+// context.prev needs to be more precise, such as when we fall
+// successfully out of a try block and into a finally block without
+// jumping. This method exists to update context.prev to the freshest
+// available location. If we were implementing a full interpreter, we
+// would know the location of the current instruction with complete
+// precision at all times, but we don't have that luxury here, as it would
+// be costly and verbose to set context.prev before every statement.
+Ep.updateContextPrevLoc = function (loc) {
+ if (loc) {
+ t.assertLiteral(loc);
+
+ if (loc.value === -1) {
+ // If an uninitialized location literal was passed in, set its value
+ // to the current this.listing.length.
+ loc.value = this.listing.length;
+ } else {
+ // Otherwise assert that the location matches the current offset.
+ _assert2["default"].strictEqual(loc.value, this.listing.length);
+ }
+ } else {
+ loc = this.getUnmarkedCurrentLoc();
+ }
+
+ // Make sure context.prev is up to date in case we fell into this try
+ // statement without jumping to it. TODO Consider avoiding this
+ // assignment when we know control must have jumped here.
+ this.emitAssign(this.contextProperty("prev"), loc);
+};
+
+Ep.explodeExpression = function (path, ignoreResult) {
+ var expr = path.node;
+ if (expr) {
+ t.assertExpression(expr);
+ } else {
+ return expr;
+ }
+
+ var self = this;
+ var result = undefined; // Used optionally by several cases below.
+ var after = undefined;
+
+ function finish(expr) {
+ t.assertExpression(expr);
+ if (ignoreResult) {
+ self.emit(expr);
+ } else {
+ return expr;
+ }
+ }
+
+ // If the expression does not contain a leap, then we either emit the
+ // expression as a standalone statement or return it whole.
+ if (!meta.containsLeap(expr)) {
+ return finish(expr);
+ }
+
+ // If any child contains a leap (such as a yield or labeled continue or
+ // break statement), then any sibling subexpressions will almost
+ // certainly have to be exploded in order to maintain the order of their
+ // side effects relative to the leaping child(ren).
+ var hasLeapingChildren = meta.containsLeap.onlyChildren(expr);
+
+ // In order to save the rest of explodeExpression from a combinatorial
+ // trainwreck of special cases, explodeViaTempVar is responsible for
+ // deciding when a subexpression needs to be "exploded," which is my
+ // very technical term for emitting the subexpression as an assignment
+ // to a temporary variable and the substituting the temporary variable
+ // for the original subexpression. Think of exploded view diagrams, not
+ // Michael Bay movies. The point of exploding subexpressions is to
+ // control the precise order in which the generated code realizes the
+ // side effects of those subexpressions.
+ function explodeViaTempVar(tempVar, childPath, ignoreChildResult) {
+ _assert2["default"].ok(!ignoreChildResult || !tempVar, "Ignoring the result of a child expression but forcing it to " + "be assigned to a temporary variable?");
+
+ var result = self.explodeExpression(childPath, ignoreChildResult);
+
+ if (ignoreChildResult) {
+ // Side effects already emitted above.
+
+ } else if (tempVar || hasLeapingChildren && !t.isLiteral(result)) {
+ // If tempVar was provided, then the result will always be assigned
+ // to it, even if the result does not otherwise need to be assigned
+ // to a temporary variable. When no tempVar is provided, we have
+ // the flexibility to decide whether a temporary variable is really
+ // necessary. Unfortunately, in general, a temporary variable is
+ // required whenever any child contains a yield expression, since it
+ // is difficult to prove (at all, let alone efficiently) whether
+ // this result would evaluate to the same value before and after the
+ // yield (see #206). One narrow case where we can prove it doesn't
+ // matter (and thus we do not need a temporary variable) is when the
+ // result in question is a Literal value.
+ result = self.emitAssign(tempVar || self.makeTempVar(), result);
+ }
+ return result;
+ }
+
+ // If ignoreResult is true, then we must take full responsibility for
+ // emitting the expression with all its side effects, and we should not
+ // return a result.
+
+ switch (expr.type) {
+ case "MemberExpression":
+ return finish(t.memberExpression(self.explodeExpression(path.get("object")), expr.computed ? explodeViaTempVar(null, path.get("property")) : expr.property, expr.computed));
+
+ case "CallExpression":
+ var calleePath = path.get("callee");
+ var argsPath = path.get("arguments");
+
+ var newCallee = undefined;
+ var newArgs = [];
+
+ var hasLeapingArgs = false;
+ argsPath.forEach(function (argPath) {
+ hasLeapingArgs = hasLeapingArgs || meta.containsLeap(argPath.node);
+ });
+
+ if (t.isMemberExpression(calleePath.node)) {
+ if (hasLeapingArgs) {
+ // If the arguments of the CallExpression contained any yield
+ // expressions, then we need to be sure to evaluate the callee
+ // before evaluating the arguments, but if the callee was a member
+ // expression, then we must be careful that the object of the
+ // member expression still gets bound to `this` for the call.
+
+ var newObject = explodeViaTempVar(
+ // Assign the exploded callee.object expression to a temporary
+ // variable so that we can use it twice without reevaluating it.
+ self.makeTempVar(), calleePath.get("object"));
+
+ var newProperty = calleePath.node.computed ? explodeViaTempVar(null, calleePath.get("property")) : calleePath.node.property;
+
+ newArgs.unshift(newObject);
+
+ newCallee = t.memberExpression(t.memberExpression(newObject, newProperty, calleePath.node.computed), t.identifier("call"), false);
+ } else {
+ newCallee = self.explodeExpression(calleePath);
+ }
+ } else {
+ newCallee = self.explodeExpression(calleePath);
+
+ if (t.isMemberExpression(newCallee)) {
+ // If the callee was not previously a MemberExpression, then the
+ // CallExpression was "unqualified," meaning its `this` object
+ // should be the global object. If the exploded expression has
+ // become a MemberExpression (e.g. a context property, probably a
+ // temporary variable), then we need to force it to be unqualified
+ // by using the (0, object.property)(...) trick; otherwise, it
+ // will receive the object of the MemberExpression as its `this`
+ // object.
+ newCallee = t.sequenceExpression([t.numericLiteral(0), newCallee]);
+ }
+ }
+
+ argsPath.forEach(function (argPath) {
+ newArgs.push(explodeViaTempVar(null, argPath));
+ });
+
+ return finish(t.callExpression(newCallee, newArgs));
+
+ case "NewExpression":
+ return finish(t.newExpression(explodeViaTempVar(null, path.get("callee")), path.get("arguments").map(function (argPath) {
+ return explodeViaTempVar(null, argPath);
+ })));
+
+ case "ObjectExpression":
+ return finish(t.objectExpression(path.get("properties").map(function (propPath) {
+ if (propPath.isObjectProperty()) {
+ return t.objectProperty(propPath.node.key, explodeViaTempVar(null, propPath.get("value")), propPath.node.computed);
+ } else {
+ return propPath.node;
+ }
+ })));
+
+ case "ArrayExpression":
+ return finish(t.arrayExpression(path.get("elements").map(function (elemPath) {
+ return explodeViaTempVar(null, elemPath);
+ })));
+
+ case "SequenceExpression":
+ var lastIndex = expr.expressions.length - 1;
+
+ path.get("expressions").forEach(function (exprPath) {
+ if (exprPath.key === lastIndex) {
+ result = self.explodeExpression(exprPath, ignoreResult);
+ } else {
+ self.explodeExpression(exprPath, true);
+ }
+ });
+
+ return result;
+
+ case "LogicalExpression":
+ after = loc();
+
+ if (!ignoreResult) {
+ result = self.makeTempVar();
+ }
+
+ var left = explodeViaTempVar(result, path.get("left"));
+
+ if (expr.operator === "&&") {
+ self.jumpIfNot(left, after);
+ } else {
+ _assert2["default"].strictEqual(expr.operator, "||");
+ self.jumpIf(left, after);
+ }
+
+ explodeViaTempVar(result, path.get("right"), ignoreResult);
+
+ self.mark(after);
+
+ return result;
+
+ case "ConditionalExpression":
+ var elseLoc = loc();
+ after = loc();
+ var test = self.explodeExpression(path.get("test"));
+
+ self.jumpIfNot(test, elseLoc);
+
+ if (!ignoreResult) {
+ result = self.makeTempVar();
+ }
+
+ explodeViaTempVar(result, path.get("consequent"), ignoreResult);
+ self.jump(after);
+
+ self.mark(elseLoc);
+ explodeViaTempVar(result, path.get("alternate"), ignoreResult);
+
+ self.mark(after);
+
+ return result;
+
+ case "UnaryExpression":
+ return finish(t.unaryExpression(expr.operator,
+ // Can't (and don't need to) break up the syntax of the argument.
+ // Think about delete a[b].
+ self.explodeExpression(path.get("argument")), !!expr.prefix));
+
+ case "BinaryExpression":
+ return finish(t.binaryExpression(expr.operator, explodeViaTempVar(null, path.get("left")), explodeViaTempVar(null, path.get("right"))));
+
+ case "AssignmentExpression":
+ return finish(t.assignmentExpression(expr.operator, self.explodeExpression(path.get("left")), self.explodeExpression(path.get("right"))));
+
+ case "UpdateExpression":
+ return finish(t.updateExpression(expr.operator, self.explodeExpression(path.get("argument")), expr.prefix));
+
+ case "YieldExpression":
+ after = loc();
+ var arg = expr.argument && self.explodeExpression(path.get("argument"));
+
+ if (arg && expr.delegate) {
+ var _result = self.makeTempVar();
+
+ self.emit(t.returnStatement(t.callExpression(self.contextProperty("delegateYield"), [arg, t.stringLiteral(_result.property.name), after])));
+
+ self.mark(after);
+
+ return _result;
+ }
+
+ self.emitAssign(self.contextProperty("next"), after);
+ self.emit(t.returnStatement(arg || null));
+ self.mark(after);
+
+ return self.contextProperty("sent");
+
+ default:
+ throw new Error("unknown Expression of type " + JSON.stringify(expr.type));
+ }
+};
\ No newline at end of file
diff --git a/node_modules/babel-plugin-transform-regenerator/lib/hoist.js b/node_modules/babel-plugin-transform-regenerator/lib/hoist.js
new file mode 100644
index 0000000..d05db03
--- /dev/null
+++ b/node_modules/babel-plugin-transform-regenerator/lib/hoist.js
@@ -0,0 +1,141 @@
+/**
+ * Copyright (c) 2014, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * https://raw.github.com/facebook/regenerator/master/LICENSE file. An
+ * additional grant of patent rights can be found in the PATENTS file in
+ * the same directory.
+ */
+
+"use strict";
+
+var _Object$keys = require("babel-runtime/core-js/object/keys")["default"];
+
+var _interopRequireWildcard = require("babel-runtime/helpers/interop-require-wildcard")["default"];
+
+var _babelTypes = require("babel-types");
+
+var t = _interopRequireWildcard(_babelTypes);
+
+var hasOwn = Object.prototype.hasOwnProperty;
+
+// The hoist function takes a FunctionExpression or FunctionDeclaration
+// and replaces any Declaration nodes in its body with assignments, then
+// returns a VariableDeclaration containing just the names of the removed
+// declarations.
+exports.hoist = function (funPath) {
+ t.assertFunction(funPath.node);
+
+ var vars = {};
+
+ function varDeclToExpr(vdec, includeIdentifiers) {
+ t.assertVariableDeclaration(vdec);
+ // TODO assert.equal(vdec.kind, "var");
+ var exprs = [];
+
+ vdec.declarations.forEach(function (dec) {
+ vars[dec.id.name] = dec.id;
+
+ if (dec.init) {
+ exprs.push(t.assignmentExpression("=", dec.id, dec.init));
+ } else if (includeIdentifiers) {
+ exprs.push(dec.id);
+ }
+ });
+
+ if (exprs.length === 0) return null;
+
+ if (exprs.length === 1) return exprs[0];
+
+ return t.sequenceExpression(exprs);
+ }
+
+ funPath.get("body").traverse({
+ VariableDeclaration: {
+ exit: function exit(path) {
+ var expr = varDeclToExpr(path.node, false);
+ if (expr === null) {
+ path.remove();
+ } else {
+ // We don't need to traverse this expression any further because
+ // there can't be any new declarations inside an expression.
+ path.replaceWith(t.expressionStatement(expr));
+ }
+
+ // Since the original node has been either removed or replaced,
+ // avoid traversing it any further.
+ path.skip();
+ }
+ },
+
+ ForStatement: function ForStatement(path) {
+ var init = path.node.init;
+ if (t.isVariableDeclaration(init)) {
+ path.get("init").replaceWith(varDeclToExpr(init, false));
+ }
+ },
+
+ ForXStatement: function ForXStatement(path) {
+ var left = path.get("left");
+ if (left.isVariableDeclaration()) {
+ left.replaceWith(varDeclToExpr(left.node, true));
+ }
+ },
+
+ FunctionDeclaration: function FunctionDeclaration(path) {
+ var node = path.node;
+ vars[node.id.name] = node.id;
+
+ var assignment = t.expressionStatement(t.assignmentExpression("=", node.id, t.functionExpression(node.id, node.params, node.body, node.generator, node.expression)));
+
+ if (path.parentPath.isBlockStatement()) {
+ // Insert the assignment form before the first statement in the
+ // enclosing block.
+ path.parentPath.unshiftContainer("body", assignment);
+
+ // Remove the function declaration now that we've inserted the
+ // equivalent assignment form at the beginning of the block.
+ path.remove();
+ } else {
+ // If the parent node is not a block statement, then we can just
+ // replace the declaration with the equivalent assignment form
+ // without worrying about hoisting it.
+ path.replaceWith(assignment);
+ }
+
+ // Don't hoist variables out of inner functions.
+ path.skip();
+ },
+
+ FunctionExpression: function FunctionExpression(path) {
+ // Don't descend into nested function expressions.
+ path.skip();
+ }
+ });
+
+ var paramNames = {};
+ funPath.get("params").forEach(function (paramPath) {
+ var param = paramPath.node;
+ if (t.isIdentifier(param)) {
+ paramNames[param.name] = param;
+ } else {
+ // Variables declared by destructuring parameter patterns will be
+ // harmlessly re-declared.
+ }
+ });
+
+ var declarations = [];
+
+ _Object$keys(vars).forEach(function (name) {
+ if (!hasOwn.call(paramNames, name)) {
+ declarations.push(t.variableDeclarator(vars[name], null));
+ }
+ });
+
+ if (declarations.length === 0) {
+ return null; // Be sure to handle this case!
+ }
+
+ return t.variableDeclaration("var", declarations);
+};
\ No newline at end of file
diff --git a/node_modules/babel-plugin-transform-regenerator/lib/index.js b/node_modules/babel-plugin-transform-regenerator/lib/index.js
new file mode 100644
index 0000000..659cd15
--- /dev/null
+++ b/node_modules/babel-plugin-transform-regenerator/lib/index.js
@@ -0,0 +1,19 @@
+/**
+ * Copyright (c) 2014, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * https://raw.github.com/facebook/regenerator/master/LICENSE file. An
+ * additional grant of patent rights can be found in the PATENTS file in
+ * the same directory.
+ */
+
+"use strict";
+
+exports.__esModule = true;
+
+exports["default"] = function () {
+ return require("./visit");
+};
+
+module.exports = exports["default"];
\ No newline at end of file
diff --git a/node_modules/babel-plugin-transform-regenerator/lib/leap.js b/node_modules/babel-plugin-transform-regenerator/lib/leap.js
new file mode 100644
index 0000000..011e9a9
--- /dev/null
+++ b/node_modules/babel-plugin-transform-regenerator/lib/leap.js
@@ -0,0 +1,185 @@
+/**
+ * Copyright (c) 2014, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * https://raw.github.com/facebook/regenerator/master/LICENSE file. An
+ * additional grant of patent rights can be found in the PATENTS file in
+ * the same directory.
+ */
+
+"use strict";
+
+var _interopRequireDefault = require("babel-runtime/helpers/interop-require-default")["default"];
+
+var _interopRequireWildcard = require("babel-runtime/helpers/interop-require-wildcard")["default"];
+
+var _assert = require("assert");
+
+var _assert2 = _interopRequireDefault(_assert);
+
+var _babelTypes = require("babel-types");
+
+var t = _interopRequireWildcard(_babelTypes);
+
+var _util = require("util");
+
+function Entry() {
+ _assert2["default"].ok(this instanceof Entry);
+}
+
+function FunctionEntry(returnLoc) {
+ Entry.call(this);
+ t.assertLiteral(returnLoc);
+ this.returnLoc = returnLoc;
+}
+
+_util.inherits(FunctionEntry, Entry);
+exports.FunctionEntry = FunctionEntry;
+
+function LoopEntry(breakLoc, continueLoc, label) {
+ Entry.call(this);
+
+ t.assertLiteral(breakLoc);
+ t.assertLiteral(continueLoc);
+
+ if (label) {
+ t.assertIdentifier(label);
+ } else {
+ label = null;
+ }
+
+ this.breakLoc = breakLoc;
+ this.continueLoc = continueLoc;
+ this.label = label;
+}
+
+_util.inherits(LoopEntry, Entry);
+exports.LoopEntry = LoopEntry;
+
+function SwitchEntry(breakLoc) {
+ Entry.call(this);
+ t.assertLiteral(breakLoc);
+ this.breakLoc = breakLoc;
+}
+
+_util.inherits(SwitchEntry, Entry);
+exports.SwitchEntry = SwitchEntry;
+
+function TryEntry(firstLoc, catchEntry, finallyEntry) {
+ Entry.call(this);
+
+ t.assertLiteral(firstLoc);
+
+ if (catchEntry) {
+ _assert2["default"].ok(catchEntry instanceof CatchEntry);
+ } else {
+ catchEntry = null;
+ }
+
+ if (finallyEntry) {
+ _assert2["default"].ok(finallyEntry instanceof FinallyEntry);
+ } else {
+ finallyEntry = null;
+ }
+
+ // Have to have one or the other (or both).
+ _assert2["default"].ok(catchEntry || finallyEntry);
+
+ this.firstLoc = firstLoc;
+ this.catchEntry = catchEntry;
+ this.finallyEntry = finallyEntry;
+}
+
+_util.inherits(TryEntry, Entry);
+exports.TryEntry = TryEntry;
+
+function CatchEntry(firstLoc, paramId) {
+ Entry.call(this);
+
+ t.assertLiteral(firstLoc);
+ t.assertIdentifier(paramId);
+
+ this.firstLoc = firstLoc;
+ this.paramId = paramId;
+}
+
+_util.inherits(CatchEntry, Entry);
+exports.CatchEntry = CatchEntry;
+
+function FinallyEntry(firstLoc, afterLoc) {
+ Entry.call(this);
+ t.assertLiteral(firstLoc);
+ t.assertLiteral(afterLoc);
+ this.firstLoc = firstLoc;
+ this.afterLoc = afterLoc;
+}
+
+_util.inherits(FinallyEntry, Entry);
+exports.FinallyEntry = FinallyEntry;
+
+function LabeledEntry(breakLoc, label) {
+ Entry.call(this);
+
+ t.assertLiteral(breakLoc);
+ t.assertIdentifier(label);
+
+ this.breakLoc = breakLoc;
+ this.label = label;
+}
+
+_util.inherits(LabeledEntry, Entry);
+exports.LabeledEntry = LabeledEntry;
+
+function LeapManager(emitter) {
+ _assert2["default"].ok(this instanceof LeapManager);
+
+ var Emitter = require("./emit").Emitter;
+ _assert2["default"].ok(emitter instanceof Emitter);
+
+ this.emitter = emitter;
+ this.entryStack = [new FunctionEntry(emitter.finalLoc)];
+}
+
+var LMp = LeapManager.prototype;
+exports.LeapManager = LeapManager;
+
+LMp.withEntry = function (entry, callback) {
+ _assert2["default"].ok(entry instanceof Entry);
+ this.entryStack.push(entry);
+ try {
+ callback.call(this.emitter);
+ } finally {
+ var popped = this.entryStack.pop();
+ _assert2["default"].strictEqual(popped, entry);
+ }
+};
+
+LMp._findLeapLocation = function (property, label) {
+ for (var i = this.entryStack.length - 1; i >= 0; --i) {
+ var entry = this.entryStack[i];
+ var loc = entry[property];
+ if (loc) {
+ if (label) {
+ if (entry.label && entry.label.name === label.name) {
+ return loc;
+ }
+ } else if (entry instanceof LabeledEntry) {
+ // Ignore LabeledEntry entries unless we are actually breaking to
+ // a label.
+ } else {
+ return loc;
+ }
+ }
+ }
+
+ return null;
+};
+
+LMp.getBreakLoc = function (label) {
+ return this._findLeapLocation("breakLoc", label);
+};
+
+LMp.getContinueLoc = function (label) {
+ return this._findLeapLocation("continueLoc", label);
+};
\ No newline at end of file
diff --git a/node_modules/babel-plugin-transform-regenerator/lib/meta.js b/node_modules/babel-plugin-transform-regenerator/lib/meta.js
new file mode 100644
index 0000000..3412dd5
--- /dev/null
+++ b/node_modules/babel-plugin-transform-regenerator/lib/meta.js
@@ -0,0 +1,113 @@
+/**
+ * Copyright (c) 2014, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * https://raw.github.com/facebook/regenerator/master/LICENSE file. An
+ * additional grant of patent rights can be found in the PATENTS file in
+ * the same directory.
+ */
+
+"use strict";
+
+var _interopRequireDefault = require("babel-runtime/helpers/interop-require-default")["default"];
+
+var _interopRequireWildcard = require("babel-runtime/helpers/interop-require-wildcard")["default"];
+
+var _assert = require("assert");
+
+var _assert2 = _interopRequireDefault(_assert);
+
+var _babelTypes = require("babel-types");
+
+var t = _interopRequireWildcard(_babelTypes);
+
+var m = require("private").makeAccessor();
+
+var hasOwn = Object.prototype.hasOwnProperty;
+
+function makePredicate(propertyName, knownTypes) {
+ function onlyChildren(node) {
+ t.assertNode(node);
+
+ // Assume no side effects until we find out otherwise.
+ var result = false;
+
+ function check(child) {
+ if (result) {
+ // Do nothing.
+ } else if (Array.isArray(child)) {
+ child.some(check);
+ } else if (t.isNode(child)) {
+ _assert2["default"].strictEqual(result, false);
+ result = predicate(child);
+ }
+ return result;
+ }
+
+ var keys = t.VISITOR_KEYS[node.type];
+ if (keys) {
+ for (var i = 0; i < keys.length; i++) {
+ var key = keys[i];
+ var child = node[key];
+ check(child);
+ }
+ }
+
+ return result;
+ }
+
+ function predicate(node) {
+ t.assertNode(node);
+
+ var meta = m(node);
+ if (hasOwn.call(meta, propertyName)) return meta[propertyName];
+
+ // Certain types are "opaque," which means they have no side
+ // effects or leaps and we don't care about their subexpressions.
+ if (hasOwn.call(opaqueTypes, node.type)) return meta[propertyName] = false;
+
+ if (hasOwn.call(knownTypes, node.type)) return meta[propertyName] = true;
+
+ return meta[propertyName] = onlyChildren(node);
+ }
+
+ predicate.onlyChildren = onlyChildren;
+
+ return predicate;
+}
+
+var opaqueTypes = {
+ FunctionExpression: true
+};
+
+// These types potentially have side effects regardless of what side
+// effects their subexpressions have.
+var sideEffectTypes = {
+ CallExpression: true, // Anything could happen!
+ ForInStatement: true, // Modifies the key variable.
+ UnaryExpression: true, // Think delete.
+ BinaryExpression: true, // Might invoke .toString() or .valueOf().
+ AssignmentExpression: true, // Side-effecting by definition.
+ UpdateExpression: true, // Updates are essentially assignments.
+ NewExpression: true // Similar to CallExpression.
+};
+
+// These types are the direct cause of all leaps in control flow.
+var leapTypes = {
+ YieldExpression: true,
+ BreakStatement: true,
+ ContinueStatement: true,
+ ReturnStatement: true,
+ ThrowStatement: true
+};
+
+// All leap types are also side effect types.
+for (var type in leapTypes) {
+ if (hasOwn.call(leapTypes, type)) {
+ sideEffectTypes[type] = leapTypes[type];
+ }
+}
+
+exports.hasSideEffects = makePredicate("hasSideEffects", sideEffectTypes);
+exports.containsLeap = makePredicate("containsLeap", leapTypes);
\ No newline at end of file
diff --git a/node_modules/babel-plugin-transform-regenerator/lib/util.js b/node_modules/babel-plugin-transform-regenerator/lib/util.js
new file mode 100644
index 0000000..e5f709a
--- /dev/null
+++ b/node_modules/babel-plugin-transform-regenerator/lib/util.js
@@ -0,0 +1,29 @@
+/**
+ * Copyright (c) 2014, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * https://raw.github.com/facebook/regenerator/master/LICENSE file. An
+ * additional grant of patent rights can be found in the PATENTS file in
+ * the same directory.
+ */
+
+"use strict";
+
+var _interopRequireWildcard = require("babel-runtime/helpers/interop-require-wildcard")["default"];
+
+exports.__esModule = true;
+exports.runtimeProperty = runtimeProperty;
+exports.isReference = isReference;
+
+var _babelTypes = require("babel-types");
+
+var t = _interopRequireWildcard(_babelTypes);
+
+function runtimeProperty(name) {
+ return t.memberExpression(t.identifier("regeneratorRuntime"), t.identifier(name), false);
+}
+
+function isReference(path) {
+ return path.isReferenced() || path.parentPath.isAssignmentExpression({ left: path.node });
+}
\ No newline at end of file
diff --git a/node_modules/babel-plugin-transform-regenerator/lib/visit.js b/node_modules/babel-plugin-transform-regenerator/lib/visit.js
new file mode 100644
index 0000000..365bf17
--- /dev/null
+++ b/node_modules/babel-plugin-transform-regenerator/lib/visit.js
@@ -0,0 +1,255 @@
+/**
+ * Copyright (c) 2014, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * https://raw.github.com/facebook/regenerator/master/LICENSE file. An
+ * additional grant of patent rights can be found in the PATENTS file in
+ * the same directory.
+ */
+
+"use strict";
+
+var _interopRequireDefault = require("babel-runtime/helpers/interop-require-default")["default"];
+
+var _interopRequireWildcard = require("babel-runtime/helpers/interop-require-wildcard")["default"];
+
+var _assert = require("assert");
+
+var _assert2 = _interopRequireDefault(_assert);
+
+var _babelTypes = require("babel-types");
+
+var t = _interopRequireWildcard(_babelTypes);
+
+var _hoist = require("./hoist");
+
+var _emit = require("./emit");
+
+var _util = require("./util");
+
+var util = _interopRequireWildcard(_util);
+
+var getMarkInfo = require("private").makeAccessor();
+
+exports.visitor = {
+ Function: {
+ exit: function exit(path, state) {
+ var node = path.node;
+
+ if (node.generator) {
+ if (node.async) {
+ // Async generator
+ if (state.opts.asyncGenerators === false) return;
+ } else {
+ // Plain generator
+ if (state.opts.generators === false) return;
+ }
+ } else if (node.async) {
+ // Async function
+ if (state.opts.async === false) return;
+ } else {
+ // Not a generator or async function.
+ return;
+ }
+
+ var contextId = path.scope.generateUidIdentifier("context");
+ var argsId = path.scope.generateUidIdentifier("args");
+
+ path.ensureBlock();
+ var bodyBlockPath = path.get("body");
+
+ if (node.async) {
+ bodyBlockPath.traverse(awaitVisitor);
+ }
+
+ bodyBlockPath.traverse(functionSentVisitor, {
+ context: contextId
+ });
+
+ var outerBody = [];
+ var innerBody = [];
+
+ bodyBlockPath.get("body").forEach(function (childPath) {
+ var node = childPath.node;
+ if (node && node._blockHoist != null) {
+ outerBody.push(node);
+ } else {
+ innerBody.push(node);
+ }
+ });
+
+ if (outerBody.length > 0) {
+ // Only replace the inner body if we actually hoisted any statements
+ // to the outer body.
+ bodyBlockPath.node.body = innerBody;
+ }
+
+ var outerFnExpr = getOuterFnExpr(path);
+ // Note that getOuterFnExpr has the side-effect of ensuring that the
+ // function has a name (so node.id will always be an Identifier), even
+ // if a temporary name has to be synthesized.
+ t.assertIdentifier(node.id);
+ var innerFnId = t.identifier(node.id.name + "$");
+
+ // Turn all declarations into vars, and replace the original
+ // declarations with equivalent assignment expressions.
+ var vars = _hoist.hoist(path);
+
+ var didRenameArguments = renameArguments(path, argsId);
+ if (didRenameArguments) {
+ vars = vars || t.variableDeclaration("var", []);
+ vars.declarations.push(t.variableDeclarator(argsId, t.identifier("arguments")));
+ }
+
+ var emitter = new _emit.Emitter(contextId);
+ emitter.explode(path.get("body"));
+
+ if (vars && vars.declarations.length > 0) {
+ outerBody.push(vars);
+ }
+
+ var wrapArgs = [emitter.getContextFunction(innerFnId),
+ // Async functions that are not generators don't care about the
+ // outer function because they don't need it to be marked and don't
+ // inherit from its .prototype.
+ node.generator ? outerFnExpr : t.nullLiteral(), t.thisExpression()];
+
+ var tryLocsList = emitter.getTryLocsList();
+ if (tryLocsList) {
+ wrapArgs.push(tryLocsList);
+ }
+
+ var wrapCall = t.callExpression(util.runtimeProperty(node.async ? "async" : "wrap"), wrapArgs);
+
+ outerBody.push(t.returnStatement(wrapCall));
+ node.body = t.blockStatement(outerBody);
+
+ var wasGeneratorFunction = node.generator;
+ if (wasGeneratorFunction) {
+ node.generator = false;
+ }
+
+ if (node.async) {
+ node.async = false;
+ }
+
+ if (wasGeneratorFunction && t.isExpression(node)) {
+ path.replaceWith(t.callExpression(util.runtimeProperty("mark"), [node]));
+ }
+
+ // Generators are processed in 'exit' handlers so that regenerator only has to run on
+ // an ES5 AST, but that means traversal will not pick up newly inserted references
+ // to things like 'regeneratorRuntime'. To avoid this, we explicitly requeue.
+ path.requeue();
+ }
+ }
+};
+
+// Given a NodePath for a Function, return an Expression node that can be
+// used to refer reliably to the function object from inside the function.
+// This expression is essentially a replacement for arguments.callee, with
+// the key advantage that it works in strict mode.
+function getOuterFnExpr(funPath) {
+ var node = funPath.node;
+ t.assertFunction(node);
+
+ if (!node.id) {
+ // Default-exported function declarations, and function expressions may not
+ // have a name to reference, so we explicitly add one.
+ node.id = funPath.scope.parent.generateUidIdentifier("callee");
+ }
+
+ if (node.generator && // Non-generator functions don't need to be marked.
+ t.isFunctionDeclaration(node)) {
+ var pp = funPath.findParent(function (path) {
+ return path.isProgram() || path.isBlockStatement();
+ });
+
+ if (!pp) {
+ return node.id;
+ }
+
+ var markDecl = getRuntimeMarkDecl(pp);
+ var markedArray = markDecl.declarations[0].id;
+ var funDeclIdArray = markDecl.declarations[0].init.callee.object;
+ t.assertArrayExpression(funDeclIdArray);
+
+ var index = funDeclIdArray.elements.length;
+ funDeclIdArray.elements.push(node.id);
+
+ return t.memberExpression(markedArray, t.numericLiteral(index), true);
+ }
+
+ return node.id;
+}
+
+function getRuntimeMarkDecl(blockPath) {
+ var block = blockPath.node;
+ _assert2["default"].ok(Array.isArray(block.body));
+
+ var info = getMarkInfo(block);
+ if (info.decl) {
+ return info.decl;
+ }
+
+ info.decl = t.variableDeclaration("var", [t.variableDeclarator(blockPath.scope.generateUidIdentifier("marked"), t.callExpression(t.memberExpression(t.arrayExpression([]), t.identifier("map"), false), [util.runtimeProperty("mark")]))]);
+
+ blockPath.unshiftContainer("body", info.decl);
+
+ return info.decl;
+}
+
+function renameArguments(funcPath, argsId) {
+ var state = {
+ didRenameArguments: false,
+ argsId: argsId
+ };
+
+ funcPath.traverse(argumentsVisitor, state);
+
+ // If the traversal replaced any arguments references, then we need to
+ // alias the outer function's arguments binding (be it the implicit
+ // arguments object or some other parameter or variable) to the variable
+ // named by argsId.
+ return state.didRenameArguments;
+}
+
+var argumentsVisitor = {
+ "FunctionExpression|FunctionDeclaration": function FunctionExpressionFunctionDeclaration(path) {
+ path.skip();
+ },
+
+ Identifier: function Identifier(path, state) {
+ if (path.node.name === "arguments" && util.isReference(path)) {
+ path.replaceWith(state.argsId);
+ state.didRenameArguments = true;
+ }
+ }
+};
+
+var functionSentVisitor = {
+ MetaProperty: function MetaProperty(path) {
+ var node = path.node;
+
+ if (node.meta.name === "function" && node.property.name === "sent") {
+ path.replaceWith(t.memberExpression(this.context, t.identifier("_sent")));
+ }
+ }
+};
+
+var awaitVisitor = {
+ Function: function Function(path) {
+ path.skip(); // Don't descend into nested function scopes.
+ },
+
+ AwaitExpression: function AwaitExpression(path) {
+ // Convert await expressions to yield expressions.
+ var argument = path.node.argument;
+
+ // Transforming `await x` to `yield regeneratorRuntime.awrap(x)`
+ // causes the argument to be wrapped in such a way that the runtime
+ // can distinguish between awaited and merely yielded values.
+ path.replaceWith(t.yieldExpression(t.callExpression(util.runtimeProperty("awrap"), [argument]), false));
+ }
+};
\ No newline at end of file
diff --git a/node_modules/babel-plugin-transform-regenerator/package.json b/node_modules/babel-plugin-transform-regenerator/package.json
new file mode 100644
index 0000000..bde812b
--- /dev/null
+++ b/node_modules/babel-plugin-transform-regenerator/package.json
@@ -0,0 +1,102 @@
+{
+ "_args": [
+ [
+ "babel-plugin-transform-regenerator@^6.6.0",
+ "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-preset-es2015"
+ ]
+ ],
+ "_from": "babel-plugin-transform-regenerator@>=6.6.0 <7.0.0",
+ "_id": "babel-plugin-transform-regenerator@6.6.5",
+ "_inCache": true,
+ "_installable": true,
+ "_location": "/babel-plugin-transform-regenerator",
+ "_nodeVersion": "5.1.0",
+ "_npmOperationalInternal": {
+ "host": "packages-13-west.internal.npmjs.com",
+ "tmp": "tmp/babel-plugin-transform-regenerator-6.6.5.tgz_1457133429543_0.737724497448653"
+ },
+ "_npmUser": {
+ "email": "hi@henryzoo.com",
+ "name": "hzoo"
+ },
+ "_npmVersion": "3.6.0",
+ "_phantomChildren": {},
+ "_requested": {
+ "name": "babel-plugin-transform-regenerator",
+ "raw": "babel-plugin-transform-regenerator@^6.6.0",
+ "rawSpec": "^6.6.0",
+ "scope": null,
+ "spec": ">=6.6.0 <7.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/babel-preset-es2015"
+ ],
+ "_resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.6.5.tgz",
+ "_shasum": "079a982bd56e2235e31ee3b17ad54aeba898d4e7",
+ "_shrinkwrap": null,
+ "_spec": "babel-plugin-transform-regenerator@^6.6.0",
+ "_where": "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-preset-es2015",
+ "author": {
+ "email": "bn@cs.stanford.edu",
+ "name": "Ben Newman"
+ },
+ "dependencies": {
+ "babel-core": "^6.6.5",
+ "babel-plugin-syntax-async-functions": "^6.3.13",
+ "babel-plugin-transform-es2015-block-scoping": "^6.6.5",
+ "babel-plugin-transform-es2015-for-of": "^6.6.0",
+ "babel-runtime": "^5.0.0",
+ "babel-traverse": "^6.6.5",
+ "babel-types": "^6.6.5",
+ "babylon": "^6.6.5",
+ "private": "~0.1.5"
+ },
+ "description": "Explode async and generator functions into a state machine.",
+ "devDependencies": {
+ "babel-helper-plugin-test-runner": "^6.3.13"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "079a982bd56e2235e31ee3b17ad54aeba898d4e7",
+ "tarball": "http://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.6.5.tgz"
+ },
+ "homepage": "https://github.com/babel/babel/tree/master/packages/babel-plugin-transform-regenerator",
+ "license": "BSD",
+ "main": "lib/index.js",
+ "maintainers": [
+ {
+ "name": "amasad",
+ "email": "amjad.masad@gmail.com"
+ },
+ {
+ "name": "hzoo",
+ "email": "hi@henryzoo.com"
+ },
+ {
+ "name": "jmm",
+ "email": "npm-public@jessemccarthy.net"
+ },
+ {
+ "name": "loganfsmyth",
+ "email": "loganfsmyth@gmail.com"
+ },
+ {
+ "name": "sebmck",
+ "email": "sebmck@gmail.com"
+ },
+ {
+ "name": "thejameskyle",
+ "email": "me@thejameskyle.com"
+ }
+ ],
+ "name": "babel-plugin-transform-regenerator",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel/tree/master/packages/babel-plugin-transform-regenerator"
+ },
+ "scripts": {},
+ "version": "6.6.5"
+}
diff --git a/node_modules/babel-plugin-transform-regenerator/src/emit.js b/node_modules/babel-plugin-transform-regenerator/src/emit.js
new file mode 100644
index 0000000..b337886
--- /dev/null
+++ b/node_modules/babel-plugin-transform-regenerator/src/emit.js
@@ -0,0 +1,1184 @@
+/**
+ * Copyright (c) 2014, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * https://raw.github.com/facebook/regenerator/master/LICENSE file. An
+ * additional grant of patent rights can be found in the PATENTS file in
+ * the same directory.
+ */
+
+import assert from "assert";
+import * as t from "babel-types";
+import * as leap from "./leap";
+import * as meta from "./meta";
+import * as util from "./util";
+
+let hasOwn = Object.prototype.hasOwnProperty;
+
+function Emitter(contextId) {
+ assert.ok(this instanceof Emitter);
+ t.assertIdentifier(contextId);
+
+ // Used to generate unique temporary names.
+ this.nextTempId = 0;
+
+ // In order to make sure the context object does not collide with
+ // anything in the local scope, we might have to rename it, so we
+ // refer to it symbolically instead of just assuming that it will be
+ // called "context".
+ this.contextId = contextId;
+
+ // An append-only list of Statements that grows each time this.emit is
+ // called.
+ this.listing = [];
+
+ // A sparse array whose keys correspond to locations in this.listing
+ // that have been marked as branch/jump targets.
+ this.marked = [true];
+
+ // The last location will be marked when this.getDispatchLoop is
+ // called.
+ this.finalLoc = loc();
+
+ // A list of all leap.TryEntry statements emitted.
+ this.tryEntries = [];
+
+ // Each time we evaluate the body of a loop, we tell this.leapManager
+ // to enter a nested loop context that determines the meaning of break
+ // and continue statements therein.
+ this.leapManager = new leap.LeapManager(this);
+}
+
+let Ep = Emitter.prototype;
+exports.Emitter = Emitter;
+
+// Offsets into this.listing that could be used as targets for branches or
+// jumps are represented as numeric Literal nodes. This representation has
+// the amazingly convenient benefit of allowing the exact value of the
+// location to be determined at any time, even after generating code that
+// refers to the location.
+function loc() {
+ return t.numericLiteral(-1);
+}
+
+// Sets the exact value of the given location to the offset of the next
+// Statement emitted.
+Ep.mark = function(loc) {
+ t.assertLiteral(loc);
+ let index = this.listing.length;
+ if (loc.value === -1) {
+ loc.value = index;
+ } else {
+ // Locations can be marked redundantly, but their values cannot change
+ // once set the first time.
+ assert.strictEqual(loc.value, index);
+ }
+ this.marked[index] = true;
+ return loc;
+};
+
+Ep.emit = function(node) {
+ if (t.isExpression(node)) {
+ node = t.expressionStatement(node);
+ }
+
+ t.assertStatement(node);
+ this.listing.push(node);
+};
+
+// Shorthand for emitting assignment statements. This will come in handy
+// for assignments to temporary variables.
+Ep.emitAssign = function(lhs, rhs) {
+ this.emit(this.assign(lhs, rhs));
+ return lhs;
+};
+
+// Shorthand for an assignment statement.
+Ep.assign = function(lhs, rhs) {
+ return t.expressionStatement(
+ t.assignmentExpression("=", lhs, rhs));
+};
+
+// Convenience function for generating expressions like context.next,
+// context.sent, and context.rval.
+Ep.contextProperty = function(name, computed) {
+ return t.memberExpression(
+ this.contextId,
+ computed ? t.stringLiteral(name) : t.identifier(name),
+ !!computed
+ );
+};
+
+// Shorthand for setting context.rval and jumping to `context.stop()`.
+Ep.stop = function(rval) {
+ if (rval) {
+ this.setReturnValue(rval);
+ }
+
+ this.jump(this.finalLoc);
+};
+
+Ep.setReturnValue = function(valuePath) {
+ t.assertExpression(valuePath.value);
+
+ this.emitAssign(
+ this.contextProperty("rval"),
+ this.explodeExpression(valuePath)
+ );
+};
+
+Ep.clearPendingException = function(tryLoc, assignee) {
+ t.assertLiteral(tryLoc);
+
+ let catchCall = t.callExpression(
+ this.contextProperty("catch", true),
+ [tryLoc]
+ );
+
+ if (assignee) {
+ this.emitAssign(assignee, catchCall);
+ } else {
+ this.emit(catchCall);
+ }
+};
+
+// Emits code for an unconditional jump to the given location, even if the
+// exact value of the location is not yet known.
+Ep.jump = function(toLoc) {
+ this.emitAssign(this.contextProperty("next"), toLoc);
+ this.emit(t.breakStatement());
+};
+
+// Conditional jump.
+Ep.jumpIf = function(test, toLoc) {
+ t.assertExpression(test);
+ t.assertLiteral(toLoc);
+
+ this.emit(t.ifStatement(
+ test,
+ t.blockStatement([
+ this.assign(this.contextProperty("next"), toLoc),
+ t.breakStatement()
+ ])
+ ));
+};
+
+// Conditional jump, with the condition negated.
+Ep.jumpIfNot = function(test, toLoc) {
+ t.assertExpression(test);
+ t.assertLiteral(toLoc);
+
+ let negatedTest;
+ if (t.isUnaryExpression(test) &&
+ test.operator === "!") {
+ // Avoid double negation.
+ negatedTest = test.argument;
+ } else {
+ negatedTest = t.unaryExpression("!", test);
+ }
+
+ this.emit(t.ifStatement(
+ negatedTest,
+ t.blockStatement([
+ this.assign(this.contextProperty("next"), toLoc),
+ t.breakStatement()
+ ])
+ ));
+};
+
+// Returns a unique MemberExpression that can be used to store and
+// retrieve temporary values. Since the object of the member expression is
+// the context object, which is presumed to coexist peacefully with all
+// other local variables, and since we just increment `nextTempId`
+// monotonically, uniqueness is assured.
+Ep.makeTempVar = function() {
+ return this.contextProperty("t" + this.nextTempId++);
+};
+
+Ep.getContextFunction = function(id) {
+ return t.functionExpression(
+ id || null/*Anonymous*/,
+ [this.contextId],
+ t.blockStatement([this.getDispatchLoop()]),
+ false, // Not a generator anymore!
+ false // Nor an expression.
+ );
+};
+
+// Turns this.listing into a loop of the form
+//
+// while (1) switch (context.next) {
+// case 0:
+// ...
+// case n:
+// return context.stop();
+// }
+//
+// Each marked location in this.listing will correspond to one generated
+// case statement.
+Ep.getDispatchLoop = function() {
+ let self = this;
+ let cases = [];
+ let current;
+
+ // If we encounter a break, continue, or return statement in a switch
+ // case, we can skip the rest of the statements until the next case.
+ let alreadyEnded = false;
+
+ self.listing.forEach(function(stmt, i) {
+ if (self.marked.hasOwnProperty(i)) {
+ cases.push(t.switchCase(
+ t.numericLiteral(i),
+ current = []));
+ alreadyEnded = false;
+ }
+
+ if (!alreadyEnded) {
+ current.push(stmt);
+ if (t.isCompletionStatement(stmt))
+ alreadyEnded = true;
+ }
+ });
+
+ // Now that we know how many statements there will be in this.listing,
+ // we can finally resolve this.finalLoc.value.
+ this.finalLoc.value = this.listing.length;
+
+ cases.push(
+ t.switchCase(this.finalLoc, [
+ // Intentionally fall through to the "end" case...
+ ]),
+
+ // So that the runtime can jump to the final location without having
+ // to know its offset, we provide the "end" case as a synonym.
+ t.switchCase(t.stringLiteral("end"), [
+ // This will check/clear both context.thrown and context.rval.
+ t.returnStatement(
+ t.callExpression(this.contextProperty("stop"), [])
+ )
+ ])
+ );
+
+ return t.whileStatement(
+ t.numericLiteral(1),
+ t.switchStatement(
+ t.assignmentExpression(
+ "=",
+ this.contextProperty("prev"),
+ this.contextProperty("next")
+ ),
+ cases
+ )
+ );
+};
+
+Ep.getTryLocsList = function() {
+ if (this.tryEntries.length === 0) {
+ // To avoid adding a needless [] to the majority of runtime.wrap
+ // argument lists, force the caller to handle this case specially.
+ return null;
+ }
+
+ let lastLocValue = 0;
+
+ return t.arrayExpression(
+ this.tryEntries.map(function(tryEntry) {
+ let thisLocValue = tryEntry.firstLoc.value;
+ assert.ok(thisLocValue >= lastLocValue, "try entries out of order");
+ lastLocValue = thisLocValue;
+
+ let ce = tryEntry.catchEntry;
+ let fe = tryEntry.finallyEntry;
+
+ let locs = [
+ tryEntry.firstLoc,
+ // The null here makes a hole in the array.
+ ce ? ce.firstLoc : null
+ ];
+
+ if (fe) {
+ locs[2] = fe.firstLoc;
+ locs[3] = fe.afterLoc;
+ }
+
+ return t.arrayExpression(locs);
+ })
+ );
+};
+
+// All side effects must be realized in order.
+
+// If any subexpression harbors a leap, all subexpressions must be
+// neutered of side effects.
+
+// No destructive modification of AST nodes.
+
+Ep.explode = function(path, ignoreResult) {
+ let node = path.node;
+ let self = this;
+
+ t.assertNode(node);
+
+ if (t.isDeclaration(node))
+ throw getDeclError(node);
+
+ if (t.isStatement(node))
+ return self.explodeStatement(path);
+
+ if (t.isExpression(node))
+ return self.explodeExpression(path, ignoreResult);
+
+ switch (node.type) {
+ case "Program":
+ return path.get("body").map(
+ self.explodeStatement,
+ self
+ );
+
+ case "VariableDeclarator":
+ throw getDeclError(node);
+
+ // These node types should be handled by their parent nodes
+ // (ObjectExpression, SwitchStatement, and TryStatement, respectively).
+ case "Property":
+ case "SwitchCase":
+ case "CatchClause":
+ throw new Error(
+ node.type + " nodes should be handled by their parents");
+
+ default:
+ throw new Error(
+ "unknown Node of type " +
+ JSON.stringify(node.type));
+ }
+};
+
+function getDeclError(node) {
+ return new Error(
+ "all declarations should have been transformed into " +
+ "assignments before the Exploder began its work: " +
+ JSON.stringify(node));
+}
+
+Ep.explodeStatement = function(path, labelId) {
+ let stmt = path.node;
+ let self = this;
+ let before, after, head;
+
+ t.assertStatement(stmt);
+
+ if (labelId) {
+ t.assertIdentifier(labelId);
+ } else {
+ labelId = null;
+ }
+
+ // Explode BlockStatement nodes even if they do not contain a yield,
+ // because we don't want or need the curly braces.
+ if (t.isBlockStatement(stmt)) {
+ path.get("body").forEach(function (path) {
+ self.explodeStatement(path);
+ });
+ return;
+ }
+
+ if (!meta.containsLeap(stmt)) {
+ // Technically we should be able to avoid emitting the statement
+ // altogether if !meta.hasSideEffects(stmt), but that leads to
+ // confusing generated code (for instance, `while (true) {}` just
+ // disappears) and is probably a more appropriate job for a dedicated
+ // dead code elimination pass.
+ self.emit(stmt);
+ return;
+ }
+
+ switch (stmt.type) {
+ case "ExpressionStatement":
+ self.explodeExpression(path.get("expression"), true);
+ break;
+
+ case "LabeledStatement":
+ after = loc();
+
+ // Did you know you can break from any labeled block statement or
+ // control structure? Well, you can! Note: when a labeled loop is
+ // encountered, the leap.LabeledEntry created here will immediately
+ // enclose a leap.LoopEntry on the leap manager's stack, and both
+ // entries will have the same label. Though this works just fine, it
+ // may seem a bit redundant. In theory, we could check here to
+ // determine if stmt knows how to handle its own label; for example,
+ // stmt happens to be a WhileStatement and so we know it's going to
+ // establish its own LoopEntry when we explode it (below). Then this
+ // LabeledEntry would be unnecessary. Alternatively, we might be
+ // tempted not to pass stmt.label down into self.explodeStatement,
+ // because we've handled the label here, but that's a mistake because
+ // labeled loops may contain labeled continue statements, which is not
+ // something we can handle in this generic case. All in all, I think a
+ // little redundancy greatly simplifies the logic of this case, since
+ // it's clear that we handle all possible LabeledStatements correctly
+ // here, regardless of whether they interact with the leap manager
+ // themselves. Also remember that labels and break/continue-to-label
+ // statements are rare, and all of this logic happens at transform
+ // time, so it has no additional runtime cost.
+ self.leapManager.withEntry(
+ new leap.LabeledEntry(after, stmt.label),
+ function() {
+ self.explodeStatement(path.get("body"), stmt.label);
+ }
+ );
+
+ self.mark(after);
+
+ break;
+
+ case "WhileStatement":
+ before = loc();
+ after = loc();
+
+ self.mark(before);
+ self.jumpIfNot(self.explodeExpression(path.get("test")), after);
+ self.leapManager.withEntry(
+ new leap.LoopEntry(after, before, labelId),
+ function() { self.explodeStatement(path.get("body")); }
+ );
+ self.jump(before);
+ self.mark(after);
+
+ break;
+
+ case "DoWhileStatement":
+ let first = loc();
+ let test = loc();
+ after = loc();
+
+ self.mark(first);
+ self.leapManager.withEntry(
+ new leap.LoopEntry(after, test, labelId),
+ function() { self.explode(path.get("body")); }
+ );
+ self.mark(test);
+ self.jumpIf(self.explodeExpression(path.get("test")), first);
+ self.mark(after);
+
+ break;
+
+ case "ForStatement":
+ head = loc();
+ let update = loc();
+ after = loc();
+
+ if (stmt.init) {
+ // We pass true here to indicate that if stmt.init is an expression
+ // then we do not care about its result.
+ self.explode(path.get("init"), true);
+ }
+
+ self.mark(head);
+
+ if (stmt.test) {
+ self.jumpIfNot(self.explodeExpression(path.get("test")), after);
+ } else {
+ // No test means continue unconditionally.
+ }
+
+ self.leapManager.withEntry(
+ new leap.LoopEntry(after, update, labelId),
+ function() { self.explodeStatement(path.get("body")); }
+ );
+
+ self.mark(update);
+
+ if (stmt.update) {
+ // We pass true here to indicate that if stmt.update is an
+ // expression then we do not care about its result.
+ self.explode(path.get("update"), true);
+ }
+
+ self.jump(head);
+
+ self.mark(after);
+
+ break;
+
+ case "TypeCastExpression":
+ return self.explodeExpression(path.get("expression"));
+
+ case "ForInStatement":
+ head = loc();
+ after = loc();
+
+ let keyIterNextFn = self.makeTempVar();
+ self.emitAssign(
+ keyIterNextFn,
+ t.callExpression(
+ util.runtimeProperty("keys"),
+ [self.explodeExpression(path.get("right"))]
+ )
+ );
+
+ self.mark(head);
+
+ let keyInfoTmpVar = self.makeTempVar();
+ self.jumpIf(
+ t.memberExpression(
+ t.assignmentExpression(
+ "=",
+ keyInfoTmpVar,
+ t.callExpression(keyIterNextFn, [])
+ ),
+ t.identifier("done"),
+ false
+ ),
+ after
+ );
+
+ self.emitAssign(
+ stmt.left,
+ t.memberExpression(
+ keyInfoTmpVar,
+ t.identifier("value"),
+ false
+ )
+ );
+
+ self.leapManager.withEntry(
+ new leap.LoopEntry(after, head, labelId),
+ function() { self.explodeStatement(path.get("body")); }
+ );
+
+ self.jump(head);
+
+ self.mark(after);
+
+ break;
+
+ case "BreakStatement":
+ self.emitAbruptCompletion({
+ type: "break",
+ target: self.leapManager.getBreakLoc(stmt.label)
+ });
+
+ break;
+
+ case "ContinueStatement":
+ self.emitAbruptCompletion({
+ type: "continue",
+ target: self.leapManager.getContinueLoc(stmt.label)
+ });
+
+ break;
+
+ case "SwitchStatement":
+ // Always save the discriminant into a temporary variable in case the
+ // test expressions overwrite values like context.sent.
+ let disc = self.emitAssign(
+ self.makeTempVar(),
+ self.explodeExpression(path.get("discriminant"))
+ );
+
+ after = loc();
+ let defaultLoc = loc();
+ let condition = defaultLoc;
+ let caseLocs = [];
+
+ // If there are no cases, .cases might be undefined.
+ let cases = stmt.cases || [];
+
+ for (let i = cases.length - 1; i >= 0; --i) {
+ let c = cases[i];
+ t.assertSwitchCase(c);
+
+ if (c.test) {
+ condition = t.conditionalExpression(
+ t.binaryExpression("===", disc, c.test),
+ caseLocs[i] = loc(),
+ condition
+ );
+ } else {
+ caseLocs[i] = defaultLoc;
+ }
+ }
+
+ let discriminant = path.get("discriminant");
+ discriminant.replaceWith(condition);
+ self.jump(self.explodeExpression(discriminant));
+
+ self.leapManager.withEntry(
+ new leap.SwitchEntry(after),
+ function() {
+ path.get("cases").forEach(function(casePath) {
+ let i = casePath.key;
+ self.mark(caseLocs[i]);
+
+ casePath.get("consequent").forEach(function (path) {
+ self.explodeStatement(path);
+ });
+ });
+ }
+ );
+
+ self.mark(after);
+ if (defaultLoc.value === -1) {
+ self.mark(defaultLoc);
+ assert.strictEqual(after.value, defaultLoc.value);
+ }
+
+ break;
+
+ case "IfStatement":
+ let elseLoc = stmt.alternate && loc();
+ after = loc();
+
+ self.jumpIfNot(
+ self.explodeExpression(path.get("test")),
+ elseLoc || after
+ );
+
+ self.explodeStatement(path.get("consequent"));
+
+ if (elseLoc) {
+ self.jump(after);
+ self.mark(elseLoc);
+ self.explodeStatement(path.get("alternate"));
+ }
+
+ self.mark(after);
+
+ break;
+
+ case "ReturnStatement":
+ self.emitAbruptCompletion({
+ type: "return",
+ value: self.explodeExpression(path.get("argument"))
+ });
+
+ break;
+
+ case "WithStatement":
+ throw new Error("WithStatement not supported in generator functions.");
+
+ case "TryStatement":
+ after = loc();
+
+ let handler = stmt.handler;
+
+ let catchLoc = handler && loc();
+ let catchEntry = catchLoc && new leap.CatchEntry(
+ catchLoc,
+ handler.param
+ );
+
+ let finallyLoc = stmt.finalizer && loc();
+ let finallyEntry = finallyLoc &&
+ new leap.FinallyEntry(finallyLoc, after);
+
+ let tryEntry = new leap.TryEntry(
+ self.getUnmarkedCurrentLoc(),
+ catchEntry,
+ finallyEntry
+ );
+
+ self.tryEntries.push(tryEntry);
+ self.updateContextPrevLoc(tryEntry.firstLoc);
+
+ self.leapManager.withEntry(tryEntry, function() {
+ self.explodeStatement(path.get("block"));
+
+ if (catchLoc) {
+ if (finallyLoc) {
+ // If we have both a catch block and a finally block, then
+ // because we emit the catch block first, we need to jump over
+ // it to the finally block.
+ self.jump(finallyLoc);
+
+ } else {
+ // If there is no finally block, then we need to jump over the
+ // catch block to the fall-through location.
+ self.jump(after);
+ }
+
+ self.updateContextPrevLoc(self.mark(catchLoc));
+
+ let bodyPath = path.get("handler.body");
+ let safeParam = self.makeTempVar();
+ self.clearPendingException(tryEntry.firstLoc, safeParam);
+
+ bodyPath.traverse(catchParamVisitor, {
+ safeParam: safeParam,
+ catchParamName: handler.param.name
+ });
+
+ self.leapManager.withEntry(catchEntry, function() {
+ self.explodeStatement(bodyPath);
+ });
+ }
+
+ if (finallyLoc) {
+ self.updateContextPrevLoc(self.mark(finallyLoc));
+
+ self.leapManager.withEntry(finallyEntry, function() {
+ self.explodeStatement(path.get("finalizer"));
+ });
+
+ self.emit(t.returnStatement(t.callExpression(
+ self.contextProperty("finish"),
+ [finallyEntry.firstLoc]
+ )));
+ }
+ });
+
+ self.mark(after);
+
+ break;
+
+ case "ThrowStatement":
+ self.emit(t.throwStatement(
+ self.explodeExpression(path.get("argument"))
+ ));
+
+ break;
+
+ default:
+ throw new Error(
+ "unknown Statement of type " +
+ JSON.stringify(stmt.type));
+ }
+};
+
+let catchParamVisitor = {
+ Identifier: function(path, state) {
+ if (path.node.name === state.catchParamName && util.isReference(path)) {
+ path.replaceWith(state.safeParam);
+ }
+ },
+
+ Scope: function(path, state) {
+ if (path.scope.hasOwnBinding(state.catchParamName)) {
+ // Don't descend into nested scopes that shadow the catch
+ // parameter with their own declarations.
+ path.skip();
+ }
+ }
+};
+
+Ep.emitAbruptCompletion = function(record) {
+ if (!isValidCompletion(record)) {
+ assert.ok(
+ false,
+ "invalid completion record: " +
+ JSON.stringify(record)
+ );
+ }
+
+ assert.notStrictEqual(
+ record.type, "normal",
+ "normal completions are not abrupt"
+ );
+
+ let abruptArgs = [t.stringLiteral(record.type)];
+
+ if (record.type === "break" ||
+ record.type === "continue") {
+ t.assertLiteral(record.target);
+ abruptArgs[1] = record.target;
+ } else if (record.type === "return" ||
+ record.type === "throw") {
+ if (record.value) {
+ t.assertExpression(record.value);
+ abruptArgs[1] = record.value;
+ }
+ }
+
+ this.emit(
+ t.returnStatement(
+ t.callExpression(
+ this.contextProperty("abrupt"),
+ abruptArgs
+ )
+ )
+ );
+};
+
+function isValidCompletion(record) {
+ let type = record.type;
+
+ if (type === "normal") {
+ return !hasOwn.call(record, "target");
+ }
+
+ if (type === "break" ||
+ type === "continue") {
+ return !hasOwn.call(record, "value")
+ && t.isLiteral(record.target);
+ }
+
+ if (type === "return" ||
+ type === "throw") {
+ return hasOwn.call(record, "value")
+ && !hasOwn.call(record, "target");
+ }
+
+ return false;
+}
+
+
+// Not all offsets into emitter.listing are potential jump targets. For
+// example, execution typically falls into the beginning of a try block
+// without jumping directly there. This method returns the current offset
+// without marking it, so that a switch case will not necessarily be
+// generated for this offset (I say "not necessarily" because the same
+// location might end up being marked in the process of emitting other
+// statements). There's no logical harm in marking such locations as jump
+// targets, but minimizing the number of switch cases keeps the generated
+// code shorter.
+Ep.getUnmarkedCurrentLoc = function() {
+ return t.numericLiteral(this.listing.length);
+};
+
+// The context.prev property takes the value of context.next whenever we
+// evaluate the switch statement discriminant, which is generally good
+// enough for tracking the last location we jumped to, but sometimes
+// context.prev needs to be more precise, such as when we fall
+// successfully out of a try block and into a finally block without
+// jumping. This method exists to update context.prev to the freshest
+// available location. If we were implementing a full interpreter, we
+// would know the location of the current instruction with complete
+// precision at all times, but we don't have that luxury here, as it would
+// be costly and verbose to set context.prev before every statement.
+Ep.updateContextPrevLoc = function(loc) {
+ if (loc) {
+ t.assertLiteral(loc);
+
+ if (loc.value === -1) {
+ // If an uninitialized location literal was passed in, set its value
+ // to the current this.listing.length.
+ loc.value = this.listing.length;
+ } else {
+ // Otherwise assert that the location matches the current offset.
+ assert.strictEqual(loc.value, this.listing.length);
+ }
+
+ } else {
+ loc = this.getUnmarkedCurrentLoc();
+ }
+
+ // Make sure context.prev is up to date in case we fell into this try
+ // statement without jumping to it. TODO Consider avoiding this
+ // assignment when we know control must have jumped here.
+ this.emitAssign(this.contextProperty("prev"), loc);
+};
+
+Ep.explodeExpression = function(path, ignoreResult) {
+ let expr = path.node;
+ if (expr) {
+ t.assertExpression(expr);
+ } else {
+ return expr;
+ }
+
+ let self = this;
+ let result; // Used optionally by several cases below.
+ let after;
+
+ function finish(expr) {
+ t.assertExpression(expr);
+ if (ignoreResult) {
+ self.emit(expr);
+ } else {
+ return expr;
+ }
+ }
+
+ // If the expression does not contain a leap, then we either emit the
+ // expression as a standalone statement or return it whole.
+ if (!meta.containsLeap(expr)) {
+ return finish(expr);
+ }
+
+ // If any child contains a leap (such as a yield or labeled continue or
+ // break statement), then any sibling subexpressions will almost
+ // certainly have to be exploded in order to maintain the order of their
+ // side effects relative to the leaping child(ren).
+ let hasLeapingChildren = meta.containsLeap.onlyChildren(expr);
+
+ // In order to save the rest of explodeExpression from a combinatorial
+ // trainwreck of special cases, explodeViaTempVar is responsible for
+ // deciding when a subexpression needs to be "exploded," which is my
+ // very technical term for emitting the subexpression as an assignment
+ // to a temporary variable and the substituting the temporary variable
+ // for the original subexpression. Think of exploded view diagrams, not
+ // Michael Bay movies. The point of exploding subexpressions is to
+ // control the precise order in which the generated code realizes the
+ // side effects of those subexpressions.
+ function explodeViaTempVar(tempVar, childPath, ignoreChildResult) {
+ assert.ok(
+ !ignoreChildResult || !tempVar,
+ "Ignoring the result of a child expression but forcing it to " +
+ "be assigned to a temporary variable?"
+ );
+
+ let result = self.explodeExpression(childPath, ignoreChildResult);
+
+ if (ignoreChildResult) {
+ // Side effects already emitted above.
+
+ } else if (tempVar || (hasLeapingChildren &&
+ !t.isLiteral(result))) {
+ // If tempVar was provided, then the result will always be assigned
+ // to it, even if the result does not otherwise need to be assigned
+ // to a temporary variable. When no tempVar is provided, we have
+ // the flexibility to decide whether a temporary variable is really
+ // necessary. Unfortunately, in general, a temporary variable is
+ // required whenever any child contains a yield expression, since it
+ // is difficult to prove (at all, let alone efficiently) whether
+ // this result would evaluate to the same value before and after the
+ // yield (see #206). One narrow case where we can prove it doesn't
+ // matter (and thus we do not need a temporary variable) is when the
+ // result in question is a Literal value.
+ result = self.emitAssign(
+ tempVar || self.makeTempVar(),
+ result
+ );
+ }
+ return result;
+ }
+
+ // If ignoreResult is true, then we must take full responsibility for
+ // emitting the expression with all its side effects, and we should not
+ // return a result.
+
+ switch (expr.type) {
+ case "MemberExpression":
+ return finish(t.memberExpression(
+ self.explodeExpression(path.get("object")),
+ expr.computed
+ ? explodeViaTempVar(null, path.get("property"))
+ : expr.property,
+ expr.computed
+ ));
+
+ case "CallExpression":
+ let calleePath = path.get("callee");
+ let argsPath = path.get("arguments");
+
+ let newCallee;
+ let newArgs = [];
+
+ let hasLeapingArgs = false;
+ argsPath.forEach(function(argPath) {
+ hasLeapingArgs = hasLeapingArgs ||
+ meta.containsLeap(argPath.node);
+ });
+
+ if (t.isMemberExpression(calleePath.node)) {
+ if (hasLeapingArgs) {
+ // If the arguments of the CallExpression contained any yield
+ // expressions, then we need to be sure to evaluate the callee
+ // before evaluating the arguments, but if the callee was a member
+ // expression, then we must be careful that the object of the
+ // member expression still gets bound to `this` for the call.
+
+ let newObject = explodeViaTempVar(
+ // Assign the exploded callee.object expression to a temporary
+ // variable so that we can use it twice without reevaluating it.
+ self.makeTempVar(),
+ calleePath.get("object")
+ );
+
+ let newProperty = calleePath.node.computed
+ ? explodeViaTempVar(null, calleePath.get("property"))
+ : calleePath.node.property;
+
+ newArgs.unshift(newObject);
+
+ newCallee = t.memberExpression(
+ t.memberExpression(
+ newObject,
+ newProperty,
+ calleePath.node.computed
+ ),
+ t.identifier("call"),
+ false
+ );
+
+ } else {
+ newCallee = self.explodeExpression(calleePath);
+ }
+
+ } else {
+ newCallee = self.explodeExpression(calleePath);
+
+ if (t.isMemberExpression(newCallee)) {
+ // If the callee was not previously a MemberExpression, then the
+ // CallExpression was "unqualified," meaning its `this` object
+ // should be the global object. If the exploded expression has
+ // become a MemberExpression (e.g. a context property, probably a
+ // temporary variable), then we need to force it to be unqualified
+ // by using the (0, object.property)(...) trick; otherwise, it
+ // will receive the object of the MemberExpression as its `this`
+ // object.
+ newCallee = t.sequenceExpression([
+ t.numericLiteral(0),
+ newCallee
+ ]);
+ }
+ }
+
+ argsPath.forEach(function(argPath) {
+ newArgs.push(explodeViaTempVar(null, argPath));
+ });
+
+ return finish(t.callExpression(
+ newCallee,
+ newArgs
+ ));
+
+ case "NewExpression":
+ return finish(t.newExpression(
+ explodeViaTempVar(null, path.get("callee")),
+ path.get("arguments").map(function(argPath) {
+ return explodeViaTempVar(null, argPath);
+ })
+ ));
+
+ case "ObjectExpression":
+ return finish(t.objectExpression(
+ path.get("properties").map(function(propPath) {
+ if (propPath.isObjectProperty()) {
+ return t.objectProperty(
+ propPath.node.key,
+ explodeViaTempVar(null, propPath.get("value")),
+ propPath.node.computed
+ );
+ } else {
+ return propPath.node;
+ }
+ })
+ ));
+
+ case "ArrayExpression":
+ return finish(t.arrayExpression(
+ path.get("elements").map(function(elemPath) {
+ return explodeViaTempVar(null, elemPath);
+ })
+ ));
+
+ case "SequenceExpression":
+ let lastIndex = expr.expressions.length - 1;
+
+ path.get("expressions").forEach(function(exprPath) {
+ if (exprPath.key === lastIndex) {
+ result = self.explodeExpression(exprPath, ignoreResult);
+ } else {
+ self.explodeExpression(exprPath, true);
+ }
+ });
+
+ return result;
+
+ case "LogicalExpression":
+ after = loc();
+
+ if (!ignoreResult) {
+ result = self.makeTempVar();
+ }
+
+ let left = explodeViaTempVar(result, path.get("left"));
+
+ if (expr.operator === "&&") {
+ self.jumpIfNot(left, after);
+ } else {
+ assert.strictEqual(expr.operator, "||");
+ self.jumpIf(left, after);
+ }
+
+ explodeViaTempVar(result, path.get("right"), ignoreResult);
+
+ self.mark(after);
+
+ return result;
+
+ case "ConditionalExpression":
+ let elseLoc = loc();
+ after = loc();
+ let test = self.explodeExpression(path.get("test"));
+
+ self.jumpIfNot(test, elseLoc);
+
+ if (!ignoreResult) {
+ result = self.makeTempVar();
+ }
+
+ explodeViaTempVar(result, path.get("consequent"), ignoreResult);
+ self.jump(after);
+
+ self.mark(elseLoc);
+ explodeViaTempVar(result, path.get("alternate"), ignoreResult);
+
+ self.mark(after);
+
+ return result;
+
+ case "UnaryExpression":
+ return finish(t.unaryExpression(
+ expr.operator,
+ // Can't (and don't need to) break up the syntax of the argument.
+ // Think about delete a[b].
+ self.explodeExpression(path.get("argument")),
+ !!expr.prefix
+ ));
+
+ case "BinaryExpression":
+ return finish(t.binaryExpression(
+ expr.operator,
+ explodeViaTempVar(null, path.get("left")),
+ explodeViaTempVar(null, path.get("right"))
+ ));
+
+ case "AssignmentExpression":
+ return finish(t.assignmentExpression(
+ expr.operator,
+ self.explodeExpression(path.get("left")),
+ self.explodeExpression(path.get("right"))
+ ));
+
+ case "UpdateExpression":
+ return finish(t.updateExpression(
+ expr.operator,
+ self.explodeExpression(path.get("argument")),
+ expr.prefix
+ ));
+
+ case "YieldExpression":
+ after = loc();
+ let arg = expr.argument && self.explodeExpression(path.get("argument"));
+
+ if (arg && expr.delegate) {
+ let result = self.makeTempVar();
+
+ self.emit(t.returnStatement(t.callExpression(
+ self.contextProperty("delegateYield"), [
+ arg,
+ t.stringLiteral(result.property.name),
+ after
+ ]
+ )));
+
+ self.mark(after);
+
+ return result;
+ }
+
+ self.emitAssign(self.contextProperty("next"), after);
+ self.emit(t.returnStatement(arg || null));
+ self.mark(after);
+
+ return self.contextProperty("sent");
+
+ default:
+ throw new Error(
+ "unknown Expression of type " +
+ JSON.stringify(expr.type));
+ }
+};
diff --git a/node_modules/babel-plugin-transform-regenerator/src/hoist.js b/node_modules/babel-plugin-transform-regenerator/src/hoist.js
new file mode 100644
index 0000000..222b0c6
--- /dev/null
+++ b/node_modules/babel-plugin-transform-regenerator/src/hoist.js
@@ -0,0 +1,148 @@
+/**
+ * Copyright (c) 2014, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * https://raw.github.com/facebook/regenerator/master/LICENSE file. An
+ * additional grant of patent rights can be found in the PATENTS file in
+ * the same directory.
+ */
+
+import * as t from "babel-types";
+let hasOwn = Object.prototype.hasOwnProperty;
+
+// The hoist function takes a FunctionExpression or FunctionDeclaration
+// and replaces any Declaration nodes in its body with assignments, then
+// returns a VariableDeclaration containing just the names of the removed
+// declarations.
+exports.hoist = function(funPath) {
+ t.assertFunction(funPath.node);
+
+ let vars = {};
+
+ function varDeclToExpr(vdec, includeIdentifiers) {
+ t.assertVariableDeclaration(vdec);
+ // TODO assert.equal(vdec.kind, "var");
+ let exprs = [];
+
+ vdec.declarations.forEach(function(dec) {
+ vars[dec.id.name] = dec.id;
+
+ if (dec.init) {
+ exprs.push(t.assignmentExpression(
+ "=", dec.id, dec.init
+ ));
+ } else if (includeIdentifiers) {
+ exprs.push(dec.id);
+ }
+ });
+
+ if (exprs.length === 0)
+ return null;
+
+ if (exprs.length === 1)
+ return exprs[0];
+
+ return t.sequenceExpression(exprs);
+ }
+
+ funPath.get("body").traverse({
+ VariableDeclaration: {
+ exit: function(path) {
+ let expr = varDeclToExpr(path.node, false);
+ if (expr === null) {
+ path.remove();
+ } else {
+ // We don't need to traverse this expression any further because
+ // there can't be any new declarations inside an expression.
+ path.replaceWith(t.expressionStatement(expr));
+ }
+
+ // Since the original node has been either removed or replaced,
+ // avoid traversing it any further.
+ path.skip();
+ }
+ },
+
+ ForStatement: function(path) {
+ let init = path.node.init;
+ if (t.isVariableDeclaration(init)) {
+ path.get("init").replaceWith(varDeclToExpr(init, false));
+ }
+ },
+
+ ForXStatement: function(path) {
+ let left = path.get("left");
+ if (left.isVariableDeclaration()) {
+ left.replaceWith(varDeclToExpr(left.node, true));
+ }
+ },
+
+ FunctionDeclaration: function(path) {
+ let node = path.node;
+ vars[node.id.name] = node.id;
+
+ let assignment = t.expressionStatement(
+ t.assignmentExpression(
+ "=",
+ node.id,
+ t.functionExpression(
+ node.id,
+ node.params,
+ node.body,
+ node.generator,
+ node.expression
+ )
+ )
+ );
+
+ if (path.parentPath.isBlockStatement()) {
+ // Insert the assignment form before the first statement in the
+ // enclosing block.
+ path.parentPath.unshiftContainer("body", assignment);
+
+ // Remove the function declaration now that we've inserted the
+ // equivalent assignment form at the beginning of the block.
+ path.remove();
+ } else {
+ // If the parent node is not a block statement, then we can just
+ // replace the declaration with the equivalent assignment form
+ // without worrying about hoisting it.
+ path.replaceWith(assignment);
+ }
+
+ // Don't hoist variables out of inner functions.
+ path.skip();
+ },
+
+ FunctionExpression: function(path) {
+ // Don't descend into nested function expressions.
+ path.skip();
+ }
+ });
+
+ let paramNames = {};
+ funPath.get("params").forEach(function(paramPath) {
+ let param = paramPath.node;
+ if (t.isIdentifier(param)) {
+ paramNames[param.name] = param;
+ } else {
+ // Variables declared by destructuring parameter patterns will be
+ // harmlessly re-declared.
+ }
+ });
+
+ let declarations = [];
+
+ Object.keys(vars).forEach(function(name) {
+ if (!hasOwn.call(paramNames, name)) {
+ declarations.push(t.variableDeclarator(vars[name], null));
+ }
+ });
+
+ if (declarations.length === 0) {
+ return null; // Be sure to handle this case!
+ }
+
+ return t.variableDeclaration("var", declarations);
+};
diff --git a/node_modules/babel-plugin-transform-regenerator/src/index.js b/node_modules/babel-plugin-transform-regenerator/src/index.js
new file mode 100644
index 0000000..34fea7a
--- /dev/null
+++ b/node_modules/babel-plugin-transform-regenerator/src/index.js
@@ -0,0 +1,13 @@
+/**
+ * Copyright (c) 2014, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * https://raw.github.com/facebook/regenerator/master/LICENSE file. An
+ * additional grant of patent rights can be found in the PATENTS file in
+ * the same directory.
+ */
+
+export default function () {
+ return require("./visit");
+}
diff --git a/node_modules/babel-plugin-transform-regenerator/src/leap.js b/node_modules/babel-plugin-transform-regenerator/src/leap.js
new file mode 100644
index 0000000..047a2bf
--- /dev/null
+++ b/node_modules/babel-plugin-transform-regenerator/src/leap.js
@@ -0,0 +1,174 @@
+/**
+ * Copyright (c) 2014, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * https://raw.github.com/facebook/regenerator/master/LICENSE file. An
+ * additional grant of patent rights can be found in the PATENTS file in
+ * the same directory.
+ */
+
+import assert from "assert";
+import * as t from "babel-types";
+import { inherits } from "util";
+
+function Entry() {
+ assert.ok(this instanceof Entry);
+}
+
+function FunctionEntry(returnLoc) {
+ Entry.call(this);
+ t.assertLiteral(returnLoc);
+ this.returnLoc = returnLoc;
+}
+
+inherits(FunctionEntry, Entry);
+exports.FunctionEntry = FunctionEntry;
+
+function LoopEntry(breakLoc, continueLoc, label) {
+ Entry.call(this);
+
+ t.assertLiteral(breakLoc);
+ t.assertLiteral(continueLoc);
+
+ if (label) {
+ t.assertIdentifier(label);
+ } else {
+ label = null;
+ }
+
+ this.breakLoc = breakLoc;
+ this.continueLoc = continueLoc;
+ this.label = label;
+}
+
+inherits(LoopEntry, Entry);
+exports.LoopEntry = LoopEntry;
+
+function SwitchEntry(breakLoc) {
+ Entry.call(this);
+ t.assertLiteral(breakLoc);
+ this.breakLoc = breakLoc;
+}
+
+inherits(SwitchEntry, Entry);
+exports.SwitchEntry = SwitchEntry;
+
+function TryEntry(firstLoc, catchEntry, finallyEntry) {
+ Entry.call(this);
+
+ t.assertLiteral(firstLoc);
+
+ if (catchEntry) {
+ assert.ok(catchEntry instanceof CatchEntry);
+ } else {
+ catchEntry = null;
+ }
+
+ if (finallyEntry) {
+ assert.ok(finallyEntry instanceof FinallyEntry);
+ } else {
+ finallyEntry = null;
+ }
+
+ // Have to have one or the other (or both).
+ assert.ok(catchEntry || finallyEntry);
+
+ this.firstLoc = firstLoc;
+ this.catchEntry = catchEntry;
+ this.finallyEntry = finallyEntry;
+}
+
+inherits(TryEntry, Entry);
+exports.TryEntry = TryEntry;
+
+function CatchEntry(firstLoc, paramId) {
+ Entry.call(this);
+
+ t.assertLiteral(firstLoc);
+ t.assertIdentifier(paramId);
+
+ this.firstLoc = firstLoc;
+ this.paramId = paramId;
+}
+
+inherits(CatchEntry, Entry);
+exports.CatchEntry = CatchEntry;
+
+function FinallyEntry(firstLoc, afterLoc) {
+ Entry.call(this);
+ t.assertLiteral(firstLoc);
+ t.assertLiteral(afterLoc);
+ this.firstLoc = firstLoc;
+ this.afterLoc = afterLoc;
+}
+
+inherits(FinallyEntry, Entry);
+exports.FinallyEntry = FinallyEntry;
+
+function LabeledEntry(breakLoc, label) {
+ Entry.call(this);
+
+ t.assertLiteral(breakLoc);
+ t.assertIdentifier(label);
+
+ this.breakLoc = breakLoc;
+ this.label = label;
+}
+
+inherits(LabeledEntry, Entry);
+exports.LabeledEntry = LabeledEntry;
+
+function LeapManager(emitter) {
+ assert.ok(this instanceof LeapManager);
+
+ let Emitter = require("./emit").Emitter;
+ assert.ok(emitter instanceof Emitter);
+
+ this.emitter = emitter;
+ this.entryStack = [new FunctionEntry(emitter.finalLoc)];
+}
+
+let LMp = LeapManager.prototype;
+exports.LeapManager = LeapManager;
+
+LMp.withEntry = function(entry, callback) {
+ assert.ok(entry instanceof Entry);
+ this.entryStack.push(entry);
+ try {
+ callback.call(this.emitter);
+ } finally {
+ let popped = this.entryStack.pop();
+ assert.strictEqual(popped, entry);
+ }
+};
+
+LMp._findLeapLocation = function(property, label) {
+ for (let i = this.entryStack.length - 1; i >= 0; --i) {
+ let entry = this.entryStack[i];
+ let loc = entry[property];
+ if (loc) {
+ if (label) {
+ if (entry.label &&
+ entry.label.name === label.name) {
+ return loc;
+ }
+ } else if (entry instanceof LabeledEntry) {
+ // Ignore LabeledEntry entries unless we are actually breaking to
+ // a label.
+ } else {
+ return loc;
+ }
+ }
+ }
+
+ return null;
+};
+
+LMp.getBreakLoc = function(label) {
+ return this._findLeapLocation("breakLoc", label);
+};
+
+LMp.getContinueLoc = function(label) {
+ return this._findLeapLocation("continueLoc", label);
+};
diff --git a/node_modules/babel-plugin-transform-regenerator/src/meta.js b/node_modules/babel-plugin-transform-regenerator/src/meta.js
new file mode 100644
index 0000000..dc7ffcd
--- /dev/null
+++ b/node_modules/babel-plugin-transform-regenerator/src/meta.js
@@ -0,0 +1,103 @@
+/**
+ * Copyright (c) 2014, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * https://raw.github.com/facebook/regenerator/master/LICENSE file. An
+ * additional grant of patent rights can be found in the PATENTS file in
+ * the same directory.
+ */
+
+import assert from "assert";
+let m = require("private").makeAccessor();
+import * as t from "babel-types";
+let hasOwn = Object.prototype.hasOwnProperty;
+
+function makePredicate(propertyName, knownTypes) {
+ function onlyChildren(node) {
+ t.assertNode(node);
+
+ // Assume no side effects until we find out otherwise.
+ let result = false;
+
+ function check(child) {
+ if (result) {
+ // Do nothing.
+ } else if (Array.isArray(child)) {
+ child.some(check);
+ } else if (t.isNode(child)) {
+ assert.strictEqual(result, false);
+ result = predicate(child);
+ }
+ return result;
+ }
+
+ let keys = t.VISITOR_KEYS[node.type];
+ if (keys) {
+ for (let i = 0; i < keys.length; i++) {
+ let key = keys[i];
+ let child = node[key];
+ check(child);
+ }
+ }
+
+ return result;
+ }
+
+ function predicate(node) {
+ t.assertNode(node);
+
+ let meta = m(node);
+ if (hasOwn.call(meta, propertyName))
+ return meta[propertyName];
+
+ // Certain types are "opaque," which means they have no side
+ // effects or leaps and we don't care about their subexpressions.
+ if (hasOwn.call(opaqueTypes, node.type))
+ return meta[propertyName] = false;
+
+ if (hasOwn.call(knownTypes, node.type))
+ return meta[propertyName] = true;
+
+ return meta[propertyName] = onlyChildren(node);
+ }
+
+ predicate.onlyChildren = onlyChildren;
+
+ return predicate;
+}
+
+let opaqueTypes = {
+ FunctionExpression: true
+};
+
+// These types potentially have side effects regardless of what side
+// effects their subexpressions have.
+let sideEffectTypes = {
+ CallExpression: true, // Anything could happen!
+ ForInStatement: true, // Modifies the key variable.
+ UnaryExpression: true, // Think delete.
+ BinaryExpression: true, // Might invoke .toString() or .valueOf().
+ AssignmentExpression: true, // Side-effecting by definition.
+ UpdateExpression: true, // Updates are essentially assignments.
+ NewExpression: true // Similar to CallExpression.
+};
+
+// These types are the direct cause of all leaps in control flow.
+let leapTypes = {
+ YieldExpression: true,
+ BreakStatement: true,
+ ContinueStatement: true,
+ ReturnStatement: true,
+ ThrowStatement: true
+};
+
+// All leap types are also side effect types.
+for (let type in leapTypes) {
+ if (hasOwn.call(leapTypes, type)) {
+ sideEffectTypes[type] = leapTypes[type];
+ }
+}
+
+exports.hasSideEffects = makePredicate("hasSideEffects", sideEffectTypes);
+exports.containsLeap = makePredicate("containsLeap", leapTypes);
diff --git a/node_modules/babel-plugin-transform-regenerator/src/util.js b/node_modules/babel-plugin-transform-regenerator/src/util.js
new file mode 100644
index 0000000..78bfa0f
--- /dev/null
+++ b/node_modules/babel-plugin-transform-regenerator/src/util.js
@@ -0,0 +1,23 @@
+/**
+ * Copyright (c) 2014, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * https://raw.github.com/facebook/regenerator/master/LICENSE file. An
+ * additional grant of patent rights can be found in the PATENTS file in
+ * the same directory.
+ */
+
+import * as t from "babel-types";
+
+export function runtimeProperty(name) {
+ return t.memberExpression(
+ t.identifier("regeneratorRuntime"),
+ t.identifier(name),
+ false
+ );
+}
+
+export function isReference(path) {
+ return path.isReferenced() || path.parentPath.isAssignmentExpression({ left: path.node });
+}
diff --git a/node_modules/babel-plugin-transform-regenerator/src/visit.js b/node_modules/babel-plugin-transform-regenerator/src/visit.js
new file mode 100644
index 0000000..6d7468f
--- /dev/null
+++ b/node_modules/babel-plugin-transform-regenerator/src/visit.js
@@ -0,0 +1,269 @@
+/**
+ * Copyright (c) 2014, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * https://raw.github.com/facebook/regenerator/master/LICENSE file. An
+ * additional grant of patent rights can be found in the PATENTS file in
+ * the same directory.
+ */
+
+import assert from "assert";
+import * as t from "babel-types";
+import { hoist } from "./hoist";
+import { Emitter } from "./emit";
+import * as util from "./util";
+
+let getMarkInfo = require("private").makeAccessor();
+
+exports.visitor = {
+ Function: {
+ exit: function(path, state) {
+ let node = path.node;
+
+ if (node.generator) {
+ if (node.async) {
+ // Async generator
+ if (state.opts.asyncGenerators === false) return;
+ } else {
+ // Plain generator
+ if (state.opts.generators === false) return;
+ }
+ } else if (node.async) {
+ // Async function
+ if (state.opts.async === false) return;
+ } else {
+ // Not a generator or async function.
+ return;
+ }
+
+ let contextId = path.scope.generateUidIdentifier("context");
+ let argsId = path.scope.generateUidIdentifier("args");
+
+ path.ensureBlock();
+ let bodyBlockPath = path.get("body");
+
+ if (node.async) {
+ bodyBlockPath.traverse(awaitVisitor);
+ }
+
+ bodyBlockPath.traverse(functionSentVisitor, {
+ context: contextId
+ });
+
+ let outerBody = [];
+ let innerBody = [];
+
+ bodyBlockPath.get("body").forEach(function(childPath) {
+ let node = childPath.node;
+ if (node && node._blockHoist != null) {
+ outerBody.push(node);
+ } else {
+ innerBody.push(node);
+ }
+ });
+
+ if (outerBody.length > 0) {
+ // Only replace the inner body if we actually hoisted any statements
+ // to the outer body.
+ bodyBlockPath.node.body = innerBody;
+ }
+
+ let outerFnExpr = getOuterFnExpr(path);
+ // Note that getOuterFnExpr has the side-effect of ensuring that the
+ // function has a name (so node.id will always be an Identifier), even
+ // if a temporary name has to be synthesized.
+ t.assertIdentifier(node.id);
+ let innerFnId = t.identifier(node.id.name + "$");
+
+ // Turn all declarations into vars, and replace the original
+ // declarations with equivalent assignment expressions.
+ let vars = hoist(path);
+
+ let didRenameArguments = renameArguments(path, argsId);
+ if (didRenameArguments) {
+ vars = vars || t.variableDeclaration("var", []);
+ vars.declarations.push(t.variableDeclarator(
+ argsId, t.identifier("arguments")
+ ));
+ }
+
+ let emitter = new Emitter(contextId);
+ emitter.explode(path.get("body"));
+
+ if (vars && vars.declarations.length > 0) {
+ outerBody.push(vars);
+ }
+
+ let wrapArgs = [
+ emitter.getContextFunction(innerFnId),
+ // Async functions that are not generators don't care about the
+ // outer function because they don't need it to be marked and don't
+ // inherit from its .prototype.
+ node.generator ? outerFnExpr : t.nullLiteral(),
+ t.thisExpression()
+ ];
+
+ let tryLocsList = emitter.getTryLocsList();
+ if (tryLocsList) {
+ wrapArgs.push(tryLocsList);
+ }
+
+ let wrapCall = t.callExpression(
+ util.runtimeProperty(node.async ? "async" : "wrap"),
+ wrapArgs
+ );
+
+ outerBody.push(t.returnStatement(wrapCall));
+ node.body = t.blockStatement(outerBody);
+
+ let wasGeneratorFunction = node.generator;
+ if (wasGeneratorFunction) {
+ node.generator = false;
+ }
+
+ if (node.async) {
+ node.async = false;
+ }
+
+ if (wasGeneratorFunction && t.isExpression(node)) {
+ path.replaceWith(t.callExpression(util.runtimeProperty("mark"), [node]));
+ }
+
+ // Generators are processed in 'exit' handlers so that regenerator only has to run on
+ // an ES5 AST, but that means traversal will not pick up newly inserted references
+ // to things like 'regeneratorRuntime'. To avoid this, we explicitly requeue.
+ path.requeue();
+ }
+ }
+};
+
+// Given a NodePath for a Function, return an Expression node that can be
+// used to refer reliably to the function object from inside the function.
+// This expression is essentially a replacement for arguments.callee, with
+// the key advantage that it works in strict mode.
+function getOuterFnExpr(funPath) {
+ let node = funPath.node;
+ t.assertFunction(node);
+
+ if (!node.id){
+ // Default-exported function declarations, and function expressions may not
+ // have a name to reference, so we explicitly add one.
+ node.id = funPath.scope.parent.generateUidIdentifier("callee");
+ }
+
+ if (node.generator && // Non-generator functions don't need to be marked.
+ t.isFunctionDeclaration(node)) {
+ let pp = funPath.findParent(function (path) {
+ return path.isProgram() || path.isBlockStatement();
+ });
+
+ if (!pp) {
+ return node.id;
+ }
+
+ let markDecl = getRuntimeMarkDecl(pp);
+ let markedArray = markDecl.declarations[0].id;
+ let funDeclIdArray = markDecl.declarations[0].init.callee.object;
+ t.assertArrayExpression(funDeclIdArray);
+
+ let index = funDeclIdArray.elements.length;
+ funDeclIdArray.elements.push(node.id);
+
+ return t.memberExpression(
+ markedArray,
+ t.numericLiteral(index),
+ true
+ );
+ }
+
+ return node.id;
+}
+
+function getRuntimeMarkDecl(blockPath) {
+ let block = blockPath.node;
+ assert.ok(Array.isArray(block.body));
+
+ let info = getMarkInfo(block);
+ if (info.decl) {
+ return info.decl;
+ }
+
+ info.decl = t.variableDeclaration("var", [
+ t.variableDeclarator(
+ blockPath.scope.generateUidIdentifier("marked"),
+ t.callExpression(
+ t.memberExpression(
+ t.arrayExpression([]),
+ t.identifier("map"),
+ false
+ ),
+ [util.runtimeProperty("mark")]
+ )
+ )
+ ]);
+
+ blockPath.unshiftContainer("body", info.decl);
+
+ return info.decl;
+}
+
+function renameArguments(funcPath, argsId) {
+ let state = {
+ didRenameArguments: false,
+ argsId: argsId
+ };
+
+ funcPath.traverse(argumentsVisitor, state);
+
+ // If the traversal replaced any arguments references, then we need to
+ // alias the outer function's arguments binding (be it the implicit
+ // arguments object or some other parameter or variable) to the variable
+ // named by argsId.
+ return state.didRenameArguments;
+}
+
+let argumentsVisitor = {
+ "FunctionExpression|FunctionDeclaration": function(path) {
+ path.skip();
+ },
+
+ Identifier: function(path, state) {
+ if (path.node.name === "arguments" && util.isReference(path)) {
+ path.replaceWith(state.argsId);
+ state.didRenameArguments = true;
+ }
+ }
+};
+
+let functionSentVisitor = {
+ MetaProperty(path) {
+ let { node } = path;
+
+ if (node.meta.name === "function" && node.property.name === "sent") {
+ path.replaceWith(t.memberExpression(this.context, t.identifier("_sent")));
+ }
+ }
+};
+
+let awaitVisitor = {
+ Function: function(path) {
+ path.skip(); // Don't descend into nested function scopes.
+ },
+
+ AwaitExpression: function(path) {
+ // Convert await expressions to yield expressions.
+ let argument = path.node.argument;
+
+ // Transforming `await x` to `yield regeneratorRuntime.awrap(x)`
+ // causes the argument to be wrapped in such a way that the runtime
+ // can distinguish between awaited and merely yielded values.
+ path.replaceWith(t.yieldExpression(
+ t.callExpression(
+ util.runtimeProperty("awrap"),
+ [argument]
+ ),
+ false
+ ));
+ }
+};
diff --git a/node_modules/babel-plugin-transform-strict-mode/.npmignore b/node_modules/babel-plugin-transform-strict-mode/.npmignore
new file mode 100644
index 0000000..47cdd2c
--- /dev/null
+++ b/node_modules/babel-plugin-transform-strict-mode/.npmignore
@@ -0,0 +1,3 @@
+src
+test
+node_modules
diff --git a/node_modules/babel-plugin-transform-strict-mode/README.md b/node_modules/babel-plugin-transform-strict-mode/README.md
new file mode 100644
index 0000000..34f27d8
--- /dev/null
+++ b/node_modules/babel-plugin-transform-strict-mode/README.md
@@ -0,0 +1,45 @@
+# babel-plugin-transform-strict-mode
+
+TODO
+
+## Installation
+
+```sh
+$ npm install babel-plugin-transform-strict-mode
+```
+
+## Usage
+
+### Via `.babelrc` (Recommended)
+
+**.babelrc**
+
+```js
+// without options
+{
+ "plugins": ["transform-strict-mode"]
+}
+
+// with options
+{
+ "plugins": [
+ ["transform-strict-mode", {
+ "strict": true
+ }]
+ ]
+}
+```
+
+### Via CLI
+
+```sh
+$ babel --plugins transform-strict-mode script.js
+```
+
+### Via Node API
+
+```javascript
+require("babel-core").transform("code", {
+ plugins: ["transform-strict-mode"]
+});
+```
diff --git a/node_modules/babel-plugin-transform-strict-mode/lib/index.js b/node_modules/babel-plugin-transform-strict-mode/lib/index.js
new file mode 100644
index 0000000..9bc1ad9
--- /dev/null
+++ b/node_modules/babel-plugin-transform-strict-mode/lib/index.js
@@ -0,0 +1,31 @@
+"use strict";
+
+var _interopRequireWildcard = require("babel-runtime/helpers/interop-require-wildcard")["default"];
+
+exports.__esModule = true;
+
+var _babelTypes = require("babel-types");
+
+var t = _interopRequireWildcard(_babelTypes);
+
+exports["default"] = function () {
+ return {
+ visitor: {
+ Program: function Program(path, state) {
+ if (state.opts.strict === false) return;
+
+ var node = path.node;
+ var _arr = node.directives;
+
+ for (var _i = 0; _i < _arr.length; _i++) {
+ var directive = _arr[_i];
+ if (directive.value.value === "use strict") return;
+ }
+
+ path.unshiftContainer("directives", t.directive(t.directiveLiteral("use strict")));
+ }
+ }
+ };
+};
+
+module.exports = exports["default"];
\ No newline at end of file
diff --git a/node_modules/babel-plugin-transform-strict-mode/package.json b/node_modules/babel-plugin-transform-strict-mode/package.json
new file mode 100644
index 0000000..e947400
--- /dev/null
+++ b/node_modules/babel-plugin-transform-strict-mode/package.json
@@ -0,0 +1,93 @@
+{
+ "_args": [
+ [
+ "babel-plugin-transform-strict-mode@^6.6.5",
+ "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-plugin-transform-es2015-modules-commonjs"
+ ]
+ ],
+ "_from": "babel-plugin-transform-strict-mode@>=6.6.5 <7.0.0",
+ "_id": "babel-plugin-transform-strict-mode@6.6.5",
+ "_inCache": true,
+ "_installable": true,
+ "_location": "/babel-plugin-transform-strict-mode",
+ "_nodeVersion": "5.1.0",
+ "_npmOperationalInternal": {
+ "host": "packages-12-west.internal.npmjs.com",
+ "tmp": "tmp/babel-plugin-transform-strict-mode-6.6.5.tgz_1457133429788_0.5075037514325231"
+ },
+ "_npmUser": {
+ "email": "hi@henryzoo.com",
+ "name": "hzoo"
+ },
+ "_npmVersion": "3.6.0",
+ "_phantomChildren": {},
+ "_requested": {
+ "name": "babel-plugin-transform-strict-mode",
+ "raw": "babel-plugin-transform-strict-mode@^6.6.5",
+ "rawSpec": "^6.6.5",
+ "scope": null,
+ "spec": ">=6.6.5 <7.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/babel-plugin-transform-es2015-modules-commonjs"
+ ],
+ "_resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.6.5.tgz",
+ "_shasum": "23c5a8b9af75609d1422ef16e13c96dec29a025f",
+ "_shrinkwrap": null,
+ "_spec": "babel-plugin-transform-strict-mode@^6.6.5",
+ "_where": "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-plugin-transform-es2015-modules-commonjs",
+ "dependencies": {
+ "babel-runtime": "^5.0.0",
+ "babel-types": "^6.6.5"
+ },
+ "description": "TODO",
+ "devDependencies": {
+ "babel-helper-plugin-test-runner": "^6.3.13"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "23c5a8b9af75609d1422ef16e13c96dec29a025f",
+ "tarball": "http://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.6.5.tgz"
+ },
+ "keywords": [
+ "babel-plugin"
+ ],
+ "license": "MIT",
+ "main": "lib/index.js",
+ "maintainers": [
+ {
+ "name": "amasad",
+ "email": "amjad.masad@gmail.com"
+ },
+ {
+ "name": "hzoo",
+ "email": "hi@henryzoo.com"
+ },
+ {
+ "name": "jmm",
+ "email": "npm-public@jessemccarthy.net"
+ },
+ {
+ "name": "loganfsmyth",
+ "email": "loganfsmyth@gmail.com"
+ },
+ {
+ "name": "sebmck",
+ "email": "sebmck@gmail.com"
+ },
+ {
+ "name": "thejameskyle",
+ "email": "me@thejameskyle.com"
+ }
+ ],
+ "name": "babel-plugin-transform-strict-mode",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel/tree/master/packages/babel-plugin-transform-strict-mode"
+ },
+ "scripts": {},
+ "version": "6.6.5"
+}
diff --git a/node_modules/babel-preset-es2015/.npmignore b/node_modules/babel-preset-es2015/.npmignore
new file mode 100644
index 0000000..47cdd2c
--- /dev/null
+++ b/node_modules/babel-preset-es2015/.npmignore
@@ -0,0 +1,3 @@
+src
+test
+node_modules
diff --git a/node_modules/babel-preset-es2015/README.md b/node_modules/babel-preset-es2015/README.md
new file mode 100644
index 0000000..f83d527
--- /dev/null
+++ b/node_modules/babel-preset-es2015/README.md
@@ -0,0 +1,35 @@
+# babel-preset-es2015
+
+> Babel preset for all es2015 plugins.
+
+## Install
+
+```sh
+$ npm install --save-dev babel-preset-es2015
+```
+
+## Usage
+
+### Via `.babelrc` (Recommended)
+
+**.babelrc**
+
+```json
+{
+ "presets": ["es2015"]
+}
+```
+
+### Via CLI
+
+```sh
+$ babel script.js --presets es2015
+```
+
+### Via Node API
+
+```javascript
+require("babel-core").transform("code", {
+ presets: ["es2015"]
+});
+```
diff --git a/node_modules/babel-preset-es2015/index.js b/node_modules/babel-preset-es2015/index.js
new file mode 100644
index 0000000..d9b84f6
--- /dev/null
+++ b/node_modules/babel-preset-es2015/index.js
@@ -0,0 +1,25 @@
+module.exports = {
+ plugins: [
+ require("babel-plugin-transform-es2015-template-literals"),
+ require("babel-plugin-transform-es2015-literals"),
+ require("babel-plugin-transform-es2015-function-name"),
+ require("babel-plugin-transform-es2015-arrow-functions"),
+ require("babel-plugin-transform-es2015-block-scoped-functions"),
+ require("babel-plugin-transform-es2015-classes"),
+ require("babel-plugin-transform-es2015-object-super"),
+ require("babel-plugin-transform-es2015-shorthand-properties"),
+ require("babel-plugin-transform-es2015-duplicate-keys"),
+ require("babel-plugin-transform-es2015-computed-properties"),
+ require("babel-plugin-transform-es2015-for-of"),
+ require("babel-plugin-transform-es2015-sticky-regex"),
+ require("babel-plugin-transform-es2015-unicode-regex"),
+ require("babel-plugin-check-es2015-constants"),
+ require("babel-plugin-transform-es2015-spread"),
+ require("babel-plugin-transform-es2015-parameters"),
+ require("babel-plugin-transform-es2015-destructuring"),
+ require("babel-plugin-transform-es2015-block-scoping"),
+ require("babel-plugin-transform-es2015-typeof-symbol"),
+ require("babel-plugin-transform-es2015-modules-commonjs"),
+ [require("babel-plugin-transform-regenerator"), { async: false, asyncGenerators: false }],
+ ]
+};
diff --git a/node_modules/babel-preset-es2015/package.json b/node_modules/babel-preset-es2015/package.json
new file mode 100644
index 0000000..3a40558
--- /dev/null
+++ b/node_modules/babel-preset-es2015/package.json
@@ -0,0 +1,114 @@
+{
+ "_args": [
+ [
+ "babel-preset-es2015@^6.5.0",
+ "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial"
+ ]
+ ],
+ "_from": "babel-preset-es2015@>=6.5.0 <7.0.0",
+ "_id": "babel-preset-es2015@6.6.0",
+ "_inCache": true,
+ "_installable": true,
+ "_location": "/babel-preset-es2015",
+ "_nodeVersion": "5.1.0",
+ "_npmOperationalInternal": {
+ "host": "packages-5-east.internal.npmjs.com",
+ "tmp": "tmp/babel-preset-es2015-6.6.0.tgz_1456780384602_0.3743636200670153"
+ },
+ "_npmUser": {
+ "email": "hi@henryzoo.com",
+ "name": "hzoo"
+ },
+ "_npmVersion": "3.6.0",
+ "_phantomChildren": {},
+ "_requested": {
+ "name": "babel-preset-es2015",
+ "raw": "babel-preset-es2015@^6.5.0",
+ "rawSpec": "^6.5.0",
+ "scope": null,
+ "spec": ">=6.5.0 <7.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "#DEV:/"
+ ],
+ "_resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.6.0.tgz",
+ "_shasum": "88b33e58fec94c6ebde58dc65ece5d14e0ec2568",
+ "_shrinkwrap": null,
+ "_spec": "babel-preset-es2015@^6.5.0",
+ "_where": "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial",
+ "author": {
+ "email": "sebmck@gmail.com",
+ "name": "Sebastian McKenzie"
+ },
+ "dependencies": {
+ "babel-plugin-check-es2015-constants": "^6.3.13",
+ "babel-plugin-transform-es2015-arrow-functions": "^6.3.13",
+ "babel-plugin-transform-es2015-block-scoped-functions": "^6.3.13",
+ "babel-plugin-transform-es2015-block-scoping": "^6.6.0",
+ "babel-plugin-transform-es2015-classes": "^6.6.0",
+ "babel-plugin-transform-es2015-computed-properties": "^6.3.13",
+ "babel-plugin-transform-es2015-destructuring": "^6.6.0",
+ "babel-plugin-transform-es2015-duplicate-keys": "^6.6.0",
+ "babel-plugin-transform-es2015-for-of": "^6.6.0",
+ "babel-plugin-transform-es2015-function-name": "^6.3.13",
+ "babel-plugin-transform-es2015-literals": "^6.3.13",
+ "babel-plugin-transform-es2015-modules-commonjs": "^6.6.0",
+ "babel-plugin-transform-es2015-object-super": "^6.3.13",
+ "babel-plugin-transform-es2015-parameters": "^6.6.0",
+ "babel-plugin-transform-es2015-shorthand-properties": "^6.3.13",
+ "babel-plugin-transform-es2015-spread": "^6.3.13",
+ "babel-plugin-transform-es2015-sticky-regex": "^6.3.13",
+ "babel-plugin-transform-es2015-template-literals": "^6.6.0",
+ "babel-plugin-transform-es2015-typeof-symbol": "^6.6.0",
+ "babel-plugin-transform-es2015-unicode-regex": "^6.3.13",
+ "babel-plugin-transform-regenerator": "^6.6.0"
+ },
+ "description": "Babel preset for all es2015 plugins.",
+ "devDependencies": {
+ "babel-helper-transform-fixture-test-runner": "^6.3.13"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "88b33e58fec94c6ebde58dc65ece5d14e0ec2568",
+ "tarball": "http://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.6.0.tgz"
+ },
+ "homepage": "https://babeljs.io/",
+ "license": "MIT",
+ "main": "index.js",
+ "maintainers": [
+ {
+ "name": "amasad",
+ "email": "amjad.masad@gmail.com"
+ },
+ {
+ "name": "hzoo",
+ "email": "hi@henryzoo.com"
+ },
+ {
+ "name": "jmm",
+ "email": "npm-public@jessemccarthy.net"
+ },
+ {
+ "name": "loganfsmyth",
+ "email": "loganfsmyth@gmail.com"
+ },
+ {
+ "name": "sebmck",
+ "email": "sebmck@gmail.com"
+ },
+ {
+ "name": "thejameskyle",
+ "email": "me@thejameskyle.com"
+ }
+ ],
+ "name": "babel-preset-es2015",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel/tree/master/packages/babel-preset-es2015"
+ },
+ "scripts": {},
+ "version": "6.6.0"
+}
diff --git a/node_modules/babel-preset-react/.npmignore b/node_modules/babel-preset-react/.npmignore
new file mode 100644
index 0000000..47cdd2c
--- /dev/null
+++ b/node_modules/babel-preset-react/.npmignore
@@ -0,0 +1,3 @@
+src
+test
+node_modules
diff --git a/node_modules/babel-preset-react/README.md b/node_modules/babel-preset-react/README.md
new file mode 100644
index 0000000..f09fc56
--- /dev/null
+++ b/node_modules/babel-preset-react/README.md
@@ -0,0 +1,35 @@
+# babel-preset-react
+
+> Babel preset for all React plugins.
+
+## Install
+
+```sh
+$ npm install --save-dev babel-preset-react
+```
+
+## Usage
+
+### Via `.babelrc` (Recommended)
+
+**.babelrc**
+
+```json
+{
+ "presets": ["react"]
+}
+```
+
+### Via CLI
+
+```sh
+$ babel script.js --presets react
+```
+
+### Via Node API
+
+```javascript
+require("babel-core").transform("code", {
+ presets: ["react"]
+});
+```
diff --git a/node_modules/babel-preset-react/index.js b/node_modules/babel-preset-react/index.js
new file mode 100644
index 0000000..89f691a
--- /dev/null
+++ b/node_modules/babel-preset-react/index.js
@@ -0,0 +1,16 @@
+module.exports = {
+ plugins: [
+ require("babel-plugin-transform-react-jsx"),
+ require("babel-plugin-transform-flow-strip-types"),
+ require("babel-plugin-syntax-flow"),
+ require("babel-plugin-syntax-jsx"),
+ require("babel-plugin-transform-react-display-name"),
+ ],
+ /*env: {
+ development: {
+ plugins: [
+ require("babel-plugin-transform-react-jsx-source")
+ ]
+ }
+ }*/
+};
diff --git a/node_modules/babel-preset-react/package.json b/node_modules/babel-preset-react/package.json
new file mode 100644
index 0000000..a2edda1
--- /dev/null
+++ b/node_modules/babel-preset-react/package.json
@@ -0,0 +1,97 @@
+{
+ "_args": [
+ [
+ "babel-preset-react@^6.5.0",
+ "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial"
+ ]
+ ],
+ "_from": "babel-preset-react@>=6.5.0 <7.0.0",
+ "_id": "babel-preset-react@6.5.0",
+ "_inCache": true,
+ "_installable": true,
+ "_location": "/babel-preset-react",
+ "_nodeVersion": "5.1.0",
+ "_npmOperationalInternal": {
+ "host": "packages-9-west.internal.npmjs.com",
+ "tmp": "tmp/babel-preset-react-6.5.0.tgz_1454803698646_0.6049495777115226"
+ },
+ "_npmUser": {
+ "email": "hi@henryzoo.com",
+ "name": "hzoo"
+ },
+ "_npmVersion": "3.6.0",
+ "_phantomChildren": {},
+ "_requested": {
+ "name": "babel-preset-react",
+ "raw": "babel-preset-react@^6.5.0",
+ "rawSpec": "^6.5.0",
+ "scope": null,
+ "spec": ">=6.5.0 <7.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "#DEV:/"
+ ],
+ "_resolved": "https://registry.npmjs.org/babel-preset-react/-/babel-preset-react-6.5.0.tgz",
+ "_shasum": "d3289aa0e308dbd48b7210f9977101f0f96ebe1f",
+ "_shrinkwrap": null,
+ "_spec": "babel-preset-react@^6.5.0",
+ "_where": "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial",
+ "author": {
+ "email": "sebmck@gmail.com",
+ "name": "Sebastian McKenzie"
+ },
+ "dependencies": {
+ "babel-plugin-syntax-flow": "^6.3.13",
+ "babel-plugin-syntax-jsx": "^6.3.13",
+ "babel-plugin-transform-flow-strip-types": "^6.3.13",
+ "babel-plugin-transform-react-display-name": "^6.3.13",
+ "babel-plugin-transform-react-jsx": "^6.3.13",
+ "babel-plugin-transform-react-jsx-source": "^6.3.13"
+ },
+ "description": "Babel preset for all React plugins.",
+ "devDependencies": {},
+ "directories": {},
+ "dist": {
+ "shasum": "d3289aa0e308dbd48b7210f9977101f0f96ebe1f",
+ "tarball": "http://registry.npmjs.org/babel-preset-react/-/babel-preset-react-6.5.0.tgz"
+ },
+ "homepage": "https://babeljs.io/",
+ "license": "MIT",
+ "main": "index.js",
+ "maintainers": [
+ {
+ "name": "amasad",
+ "email": "amjad.masad@gmail.com"
+ },
+ {
+ "name": "hzoo",
+ "email": "hi@henryzoo.com"
+ },
+ {
+ "name": "jmm",
+ "email": "npm-public@jessemccarthy.net"
+ },
+ {
+ "name": "loganfsmyth",
+ "email": "loganfsmyth@gmail.com"
+ },
+ {
+ "name": "sebmck",
+ "email": "sebmck@gmail.com"
+ },
+ {
+ "name": "thejameskyle",
+ "email": "me@thejameskyle.com"
+ }
+ ],
+ "name": "babel-preset-react",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel/tree/master/packages/babel-preset-react"
+ },
+ "scripts": {},
+ "version": "6.5.0"
+}
diff --git a/node_modules/babel-register/.npmignore b/node_modules/babel-register/.npmignore
new file mode 100644
index 0000000..47cdd2c
--- /dev/null
+++ b/node_modules/babel-register/.npmignore
@@ -0,0 +1,3 @@
+src
+test
+node_modules
diff --git a/node_modules/babel-register/README.md b/node_modules/babel-register/README.md
new file mode 100644
index 0000000..13f79b2
--- /dev/null
+++ b/node_modules/babel-register/README.md
@@ -0,0 +1,19 @@
+# babel-register
+
+The require hook will bind itself to node's require and automatically compile files on the fly.
+
+## Install
+
+```
+$ npm install babel-register
+```
+
+## Usage
+
+```js
+require("babel-register");
+```
+
+All subsequent files required by node with the extensions `.es6`, `.es`, `.jsx` and `.js` will be transformed by Babel.
+
+See [documentation](http://babeljs.io/docs/usage/require/) for details.
diff --git a/node_modules/babel-register/lib/browser.js b/node_modules/babel-register/lib/browser.js
new file mode 100644
index 0000000..b60e26c
--- /dev/null
+++ b/node_modules/babel-register/lib/browser.js
@@ -0,0 +1,9 @@
+// required to safely use babel/register within a browserify codebase
+
+"use strict";
+
+exports.__esModule = true;
+
+exports["default"] = function () {};
+
+module.exports = exports["default"];
\ No newline at end of file
diff --git a/node_modules/babel-register/lib/cache.js b/node_modules/babel-register/lib/cache.js
new file mode 100644
index 0000000..c816439
--- /dev/null
+++ b/node_modules/babel-register/lib/cache.js
@@ -0,0 +1,76 @@
+"use strict";
+
+var _interopRequireDefault = require("babel-runtime/helpers/interop-require-default")["default"];
+
+exports.__esModule = true;
+exports.save = save;
+exports.load = load;
+exports.get = get;
+
+var _path = require("path");
+
+var _path2 = _interopRequireDefault(_path);
+
+var _fs = require("fs");
+
+var _fs2 = _interopRequireDefault(_fs);
+
+var _mkdirp = require("mkdirp");
+
+var _homeOrTmp = require("home-or-tmp");
+
+var _homeOrTmp2 = _interopRequireDefault(_homeOrTmp);
+
+var _pathExists = require("path-exists");
+
+var _pathExists2 = _interopRequireDefault(_pathExists);
+
+var FILENAME = process.env.BABEL_CACHE_PATH || _path2["default"].join(_homeOrTmp2["default"], ".babel.json");
+var data = {};
+
+/**
+ * Write stringified cache to disk.
+ */
+
+function save() {
+ var serialised = {};
+ try {
+ serialised = JSON.stringify(data, null, " ");
+ } catch (err) {
+ if (err.message === "Invalid string length") {
+ err.message = "Cache too large so it's been cleared.";
+ console.error(err.stack);
+ } else {
+ throw err;
+ }
+ }
+ _mkdirp.sync(_path2["default"].dirname(FILENAME));
+ _fs2["default"].writeFileSync(FILENAME, serialised);
+}
+
+/**
+ * Load cache from disk and parse.
+ */
+
+function load() {
+ if (process.env.BABEL_DISABLE_CACHE) return;
+
+ process.on("exit", save);
+ process.nextTick(save);
+
+ if (!_pathExists2["default"].sync(FILENAME)) return;
+
+ try {
+ data = JSON.parse(_fs2["default"].readFileSync(FILENAME));
+ } catch (err) {
+ return;
+ }
+}
+
+/**
+ * Retrieve data from cache.
+ */
+
+function get() {
+ return data;
+}
\ No newline at end of file
diff --git a/node_modules/babel-register/lib/node.js b/node_modules/babel-register/lib/node.js
new file mode 100644
index 0000000..6132e6a
--- /dev/null
+++ b/node_modules/babel-register/lib/node.js
@@ -0,0 +1,178 @@
+"use strict";
+
+var _interopRequireDefault = require("babel-runtime/helpers/interop-require-default")["default"];
+
+var _interopRequireWildcard = require("babel-runtime/helpers/interop-require-wildcard")["default"];
+
+exports.__esModule = true;
+
+var _lodashLangCloneDeep = require("lodash/lang/cloneDeep");
+
+var _lodashLangCloneDeep2 = _interopRequireDefault(_lodashLangCloneDeep);
+
+var _sourceMapSupport = require("source-map-support");
+
+var _sourceMapSupport2 = _interopRequireDefault(_sourceMapSupport);
+
+var _cache = require("./cache");
+
+var registerCache = _interopRequireWildcard(_cache);
+
+var _lodashObjectExtend = require("lodash/object/extend");
+
+var _lodashObjectExtend2 = _interopRequireDefault(_lodashObjectExtend);
+
+var _babelCore = require("babel-core");
+
+var babel = _interopRequireWildcard(_babelCore);
+
+var _lodashCollectionEach = require("lodash/collection/each");
+
+var _lodashCollectionEach2 = _interopRequireDefault(_lodashCollectionEach);
+
+var _fs = require("fs");
+
+var _fs2 = _interopRequireDefault(_fs);
+
+var _path = require("path");
+
+var _path2 = _interopRequireDefault(_path);
+
+_sourceMapSupport2["default"].install({
+ handleUncaughtExceptions: false,
+ retrieveSourceMap: function retrieveSourceMap(source) {
+ var map = maps && maps[source];
+ if (map) {
+ return {
+ url: null,
+ map: map
+ };
+ } else {
+ return null;
+ }
+ }
+});
+
+registerCache.load();
+var cache = registerCache.get();
+
+var transformOpts = {};
+
+var ignore = undefined;
+var only = undefined;
+
+var oldHandlers = {};
+var maps = {};
+
+var cwd = process.cwd();
+
+function getRelativePath(filename) {
+ return _path2["default"].relative(cwd, filename);
+}
+
+function mtime(filename) {
+ return +_fs2["default"].statSync(filename).mtime;
+}
+
+function compile(filename) {
+ var result = undefined;
+
+ // merge in base options and resolve all the plugins and presets relative to this file
+ var opts = new _babelCore.OptionManager().init(_lodashObjectExtend2["default"](_lodashLangCloneDeep2["default"](transformOpts), {
+ filename: filename
+ }));
+
+ var cacheKey = JSON.stringify(opts) + ":" + babel.version;
+
+ var env = process.env.BABEL_ENV || process.env.NODE_ENV;
+ if (env) cacheKey += ":" + env;
+
+ if (cache) {
+ var cached = cache[cacheKey];
+ if (cached && cached.mtime === mtime(filename)) {
+ result = cached;
+ }
+ }
+
+ if (!result) {
+ result = babel.transformFileSync(filename, _lodashObjectExtend2["default"](opts, {
+ // Do not process config files since has already been done with the OptionManager
+ // calls above and would introduce duplicates.
+ babelrc: false,
+ sourceMap: "both",
+ ast: false
+ }));
+ }
+
+ if (cache) {
+ cache[cacheKey] = result;
+ result.mtime = mtime(filename);
+ }
+
+ maps[filename] = result.map;
+
+ return result.code;
+}
+
+function shouldIgnore(filename) {
+ if (!ignore && !only) {
+ return getRelativePath(filename).split(_path2["default"].sep).indexOf("node_modules") >= 0;
+ } else {
+ return _babelCore.util.shouldIgnore(filename, ignore || [], only);
+ }
+}
+
+function loader(m, filename) {
+ m._compile(compile(filename), filename);
+}
+
+function registerExtension(ext) {
+ var old = oldHandlers[ext] || oldHandlers[".js"] || require.extensions[".js"];
+
+ require.extensions[ext] = function (m, filename) {
+ if (shouldIgnore(filename)) {
+ old(m, filename);
+ } else {
+ loader(m, filename, old);
+ }
+ };
+}
+
+function hookExtensions(_exts) {
+ _lodashCollectionEach2["default"](oldHandlers, function (old, ext) {
+ if (old === undefined) {
+ delete require.extensions[ext];
+ } else {
+ require.extensions[ext] = old;
+ }
+ });
+
+ oldHandlers = {};
+
+ _lodashCollectionEach2["default"](_exts, function (ext) {
+ oldHandlers[ext] = require.extensions[ext];
+ registerExtension(ext);
+ });
+}
+
+hookExtensions(_babelCore.util.canCompile.EXTENSIONS);
+
+exports["default"] = function () {
+ var opts = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
+
+ if (opts.only != null) only = _babelCore.util.arrayify(opts.only, _babelCore.util.regexify);
+ if (opts.ignore != null) ignore = _babelCore.util.arrayify(opts.ignore, _babelCore.util.regexify);
+
+ if (opts.extensions) hookExtensions(_babelCore.util.arrayify(opts.extensions));
+
+ if (opts.cache === false) cache = null;
+
+ delete opts.extensions;
+ delete opts.ignore;
+ delete opts.cache;
+ delete opts.only;
+
+ _lodashObjectExtend2["default"](transformOpts, opts);
+};
+
+module.exports = exports["default"];
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/CHANGELOG.md b/node_modules/babel-register/node_modules/core-js/CHANGELOG.md
new file mode 100644
index 0000000..7f39dc5
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/CHANGELOG.md
@@ -0,0 +1,528 @@
+## Changelog
+##### 2.2.0 - 2016.03.15
+- Added `String#matchAll`, [proposal](https://github.com/tc39/String.prototype.matchAll)
+- Added `Object#__(define|lookup)[GS]etter__`, [annex B ES2017](https://github.com/tc39/ecma262/pull/381)
+- Added `@@toPrimitive` methods to `Date` and `Symbol`
+- Fixed `%TypedArray%#slice` in Edge ~ 13 (throws with `@@species` and wrapped / inherited constructor)
+- Some other minor fixes
+
+##### 2.1.5 - 2016.03.12
+- Improved support NodeJS domains in `Promise#then`, [#180](https://github.com/zloirock/core-js/issues/180)
+- Added fallback for `Date#toJSON` bug in Qt Script, [#173](https://github.com/zloirock/core-js/issues/173#issuecomment-193972502)
+
+##### 2.1.4 - 2016.03.08
+- Added fallback for `Symbol` polyfill in Qt Script, [#173](https://github.com/zloirock/core-js/issues/173)
+- Added one more fallback for IE11 `Script Access Denied` error with iframes, [#165](https://github.com/zloirock/core-js/issues/165)
+
+##### 2.1.3 - 2016.02.29
+- Added fallback for [`es6-promise` package bug](https://github.com/stefanpenner/es6-promise/issues/169), [#176](https://github.com/zloirock/core-js/issues/176)
+
+##### 2.1.2 - 2016.02.29
+- Some minor `Promise` fixes:
+ - Browsers `rejectionhandled` event better HTML spec complaint
+ - Errors in unhandled rejection handlers should not cause any problems
+ - Fixed typo in feature detection
+
+##### 2.1.1 - 2016.02.22
+- Some `Promise` improvements:
+ - Feature detection:
+ - **Added detection unhandled rejection tracking support - now it's available everywhere**, [#140](https://github.com/zloirock/core-js/issues/140)
+ - Added detection `@@species` pattern support for completely correct subclassing
+ - Removed usage `Object.setPrototypeOf` from feature detection and noisy console message about it in FF
+ - `Promise.all` fixed for some very specific cases
+
+##### 2.1.0 - 2016.02.09
+- **API**:
+ - ES5 polyfills are split and logic, used in other polyfills, moved to internal modules
+ - **All entry point works in ES3 environment like IE8- without `core-js/(library/)es5`**
+ - **Added all missed single entry points for ES5 polyfills**
+ - Separated ES5 polyfills moved to the ES6 namespace. Why?
+ - Mainly, for prevent duplication features in different namespaces - logic of most required ES5 polyfills changed in ES6+:
+ - Already added changes for: `Object` statics - should accept primitives, new whitespaces lists in `String#trim`, `parse(Int|float)`, `RegExp#toString` logic, `String#split`, etc
+ - Should be changed in the future: `@@species` and `ToLength` logic in `Array` methods, `Date` parsing, `Function#bind`, etc
+ - Should not be changed only several features like `Array.isArray` and `Date.now`
+ - Some ES5 polyfills required for modern engines
+ - All old entry points should work fine, but in the next major release API can be changed
+ - `Object.getOwnPropertyDescriptors` moved to the stage 3, [January TC39 meeting](https://github.com/rwaldron/tc39-notes/blob/master/es7/2016-01/2016-01-28.md#objectgetownpropertydescriptors-to-stage-3-jordan-harband-low-priority-but-super-quick)
+ - Added `umd` option for [custom build process](https://github.com/zloirock/core-js#custom-build-from-external-scripts), [#169](https://github.com/zloirock/core-js/issues/169)
+ - Returned entry points for `Array` statics, removed in `2.0`, for compatibility with `babel` `6` and for future fixes
+- **Deprecated**:
+ - `Reflect.enumerate` deprecated and will be removed from the next major release, [January TC39 meeting](https://github.com/rwaldron/tc39-notes/blob/master/es7/2016-01/2016-01-28.md#5xix-revisit-proxy-enumerate---revisit-decision-to-exhaust-iterator)
+- **New Features**:
+ - Added [`Reflect` metadata API](https://github.com/jonathandturner/decorators/blob/master/specs/metadata.md) as a pre-strawman feature, [#152](https://github.com/zloirock/core-js/issues/152):
+ - `Reflect.defineMetadata`
+ - `Reflect.deleteMetadata`
+ - `Reflect.getMetadata`
+ - `Reflect.getMetadataKeys`
+ - `Reflect.getOwnMetadata`
+ - `Reflect.getOwnMetadataKeys`
+ - `Reflect.hasMetadata`
+ - `Reflect.hasOwnMetadata`
+ - `Reflect.metadata`
+ - Implementation / fixes `Date#toJSON`
+ - Fixes for `parseInt` and `Number.parseInt`
+ - Fixes for `parseFloat` and `Number.parseFloat`
+ - Fixes for `RegExp#toString`
+ - Fixes for `Array#sort`
+ - Fixes for `Number#toFixed`
+ - Fixes for `Number#toPrecision`
+ - Additional fixes for `String#split` (`RegExp#@@split`)
+- **Improvements**:
+ - Correct subclassing wrapped collections, `Number` and `RegExp` constructors with native class syntax
+ - Correct support `SharedArrayBuffer` and buffers from other realms in typed arrays wrappers
+ - Additional validations for `Object.{defineProperty, getOwnPropertyDescriptor}` and `Reflect.defineProperty`
+- **Bug Fixes**:
+ - Fixed some cases `Array#lastIndexOf` with negative second argument
+
+##### 2.0.3 - 2016.01.11
+- Added fallback for V8 ~ Chrome 49 `Promise` subclassing bug causes unhandled rejection on feature detection, [#159](https://github.com/zloirock/core-js/issues/159)
+- Added fix for very specific environments with global `window === null`
+
+##### 2.0.2 - 2016.01.04
+- Temporarily removed `length` validation from `Uint8Array` constructor wrapper. Reason - [bug in `ws` module](https://github.com/websockets/ws/pull/645) (-> `socket.io`) which passes to `Buffer` constructor -> `Uint8Array` float and uses [the `V8` bug](https://code.google.com/p/v8/issues/detail?id=4552) for conversion to int (by the spec should be thrown an error). [It creates problems for many people.](https://github.com/karma-runner/karma/issues/1768) I hope, it will be returned after fixing this bug in `V8`.
+
+##### 2.0.1 - 2015.12.31
+- forced usage `Promise.resolve` polyfill in the `library` version for correct work with wrapper
+- `Object.assign` should be defined in the strict mode -> throw an error on extension non-extensible objects, [#154](https://github.com/zloirock/core-js/issues/154)
+
+##### 2.0.0 - 2015.12.24
+- added implementations and fixes [Typed Arrays](https://github.com/zloirock/core-js#ecmascript-6-typed-arrays)-related features
+ - `ArrayBuffer`, `ArrayBuffer.isView`, `ArrayBuffer#slice`
+ - `DataView` with all getter / setter methods
+ - `Int8Array`, `Uint8Array`, `Uint8ClampedArray`, `Int16Array`, `Uint16Array`, `Int32Array`, `Uint32Array`, `Float32Array` and `Float64Array` constructors
+ - `%TypedArray%.{for, of}`, `%TypedArray%#{copyWithin, every, fill, filter, find, findIndex, forEach, indexOf, includes, join, lastIndexOf, map, reduce, reduceRight, reverse, set, slice, some, sort, subarray, values, keys, entries, @@iterator, ...}`
+- added [`System.global`](https://github.com/zloirock/core-js#ecmascript-7-proposals), [proposal](https://github.com/tc39/proposal-global), [November TC39 meeting](https://github.com/rwaldron/tc39-notes/tree/master/es7/2015-11/nov-19.md#systemglobal-jhd)
+- added [`Error.isError`](https://github.com/zloirock/core-js#ecmascript-7-proposals), [proposal](https://github.com/ljharb/proposal-is-error), [November TC39 meeting](https://github.com/rwaldron/tc39-notes/tree/master/es7/2015-11/nov-19.md#jhd-erroriserror)
+- added [`Math.{iaddh, isubh, imulh, umulh}`](https://github.com/zloirock/core-js#ecmascript-7-proposals), [proposal](https://gist.github.com/BrendanEich/4294d5c212a6d2254703)
+- `RegExp.escape` moved from the `es7` to the non-standard `core` namespace, [July TC39 meeting](https://github.com/rwaldron/tc39-notes/blob/master/es7/2015-07/july-28.md#62-regexpescape) - too slow, but it's condition of stability, [#116](https://github.com/zloirock/core-js/issues/116)
+- [`Promise`](https://github.com/zloirock/core-js#ecmascript-6-promise)
+ - some performance optimisations
+ - added basic support [`rejectionHandled` event / `onrejectionhandled` handler](https://github.com/zloirock/core-js#unhandled-rejection-tracking) to the polyfill
+ - removed usage `@@species` from `Promise.{all, race}`, [November TC39 meeting](https://github.com/rwaldron/tc39-notes/tree/master/es7/2015-11/nov-18.md#conclusionresolution-2)
+- some improvements [collections polyfills](https://github.com/zloirock/core-js#ecmascript-6-collections)
+ - `O(1)` and preventing possible leaks with frozen keys, [#134](https://github.com/zloirock/core-js/issues/134)
+ - correct observable state object keys
+- renamed `String#{padLeft, padRight}` -> [`String#{padStart, padEnd}`](https://github.com/zloirock/core-js#ecmascript-7-proposals), [proposal](https://github.com/tc39/proposal-string-pad-start-end), [November TC39 meeting](https://github.com/rwaldron/tc39-notes/tree/master/es7/2015-11/nov-17.md#conclusionresolution-2) (they want to rename it on each meeting?O_o), [#132](https://github.com/zloirock/core-js/issues/132)
+- added [`String#{trimStart, trimEnd}` as aliases for `String#{trimLeft, trimRight}`](https://github.com/zloirock/core-js#ecmascript-7-proposals), [proposal](https://github.com/sebmarkbage/ecmascript-string-left-right-trim), [November TC39 meeting](https://github.com/rwaldron/tc39-notes/tree/master/es7/2015-11/nov-17.md#conclusionresolution-2)
+- added [annex B HTML methods](https://github.com/zloirock/core-js#ecmascript-6-string) - ugly, but also [the part of the spec](http://www.ecma-international.org/ecma-262/6.0/#sec-string.prototype.anchor)
+- added little fix for [`Date#toString`](https://github.com/zloirock/core-js#ecmascript-6-date) - `new Date(NaN).toString()` [should be `'Invalid Date'`](http://www.ecma-international.org/ecma-262/6.0/#sec-todatestring)
+- added [`{keys, values, entries, @@iterator}` methods to DOM collections](https://github.com/zloirock/core-js#iterable-dom-collections) which should have [iterable interface](https://heycam.github.io/webidl/#idl-iterable) or should be [inherited from `Array`](https://heycam.github.io/webidl/#LegacyArrayClass) - `NodeList`, `DOMTokenList`, `MediaList`, `StyleSheetList`, `CSSRuleList`.
+- removed Mozilla `Array` generics - [deprecated and will be removed from FF](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array#Array_generic_methods), [looks like strawman is dead](http://wiki.ecmascript.org/doku.php?id=strawman:array_statics), available [alternative shim](https://github.com/plusdude/array-generics)
+- removed `core.log` module
+- CommonJS API
+ - added entry points for [virtual methods](https://github.com/zloirock/core-js#commonjs-and-prototype-methods-without-global-namespace-pollution)
+ - added entry points for [stages proposals](https://github.com/zloirock/core-js#ecmascript-7-proposals)
+ - some other minor changes
+- [custom build from external scripts](https://github.com/zloirock/core-js#custom-build-from-external-scripts) moved to the separate package for preventing problems with dependencies
+- changed `$` prefix for internal modules file names because Team Foundation Server does not support it, [#129](https://github.com/zloirock/core-js/issues/129)
+- additional fix for `SameValueZero` in V8 ~ Chromium 39-42 collections
+- additional fix for FF27 `Array` iterator
+- removed usage shortcuts for `arguments` object - old WebKit bug, [#150](https://github.com/zloirock/core-js/issues/150)
+- `{Map, Set}#forEach` non-generic, [#144](https://github.com/zloirock/core-js/issues/144)
+- many other improvements
+
+##### 1.2.6 - 2015.11.09
+* reject with `TypeError` on attempt resolve promise itself
+* correct behavior with broken `Promise` subclass constructors / methods
+* added `Promise`-based fallback for microtask
+* fixed V8 and FF `Array#{values, @@iterator}.name`
+* fixed IE7- `[1, 2].join(undefined) -> '1,2'`
+* some other fixes / improvements / optimizations
+
+##### 1.2.5 - 2015.11.02
+* some more `Number` constructor fixes:
+ * fixed V8 ~ Node 0.8 bug: `Number('+0x1')` should be `NaN`
+ * fixed `Number(' 0b1\n')` case, should be `1`
+ * fixed `Number()` case, should be `0`
+
+##### 1.2.4 - 2015.11.01
+* fixed `Number('0b12') -> NaN` case in the shim
+* fixed V8 ~ Chromium 40- bug - `Weak(Map|Set)#{delete, get, has}` should not throw errors [#124](https://github.com/zloirock/core-js/issues/124)
+* some other fixes and optimizations
+
+##### 1.2.3 - 2015.10.23
+* fixed some problems related old V8 bug `Object('a').propertyIsEnumerable(0) // => false`, for example, `Object.assign({}, 'qwe')` from the last release
+* fixed `.name` property and `Function#toString` conversion some polyfilled methods
+* fixed `Math.imul` arity in Safari 8-
+
+##### 1.2.2 - 2015.10.18
+* improved optimisations for V8
+* fixed build process from external packages, [#120](https://github.com/zloirock/core-js/pull/120)
+* one more `Object.{assign, values, entries}` fix for [**very** specific case](https://github.com/ljharb/proposal-object-values-entries/issues/5)
+
+##### 1.2.1 - 2015.10.02
+* replaced fix `JSON.stringify` + `Symbol` behavior from `.toJSON` method to wrapping `JSON.stringify` - little more correct, [compat-table/642](https://github.com/kangax/compat-table/pull/642)
+* fixed typo which broke tasks scheduler in WebWorkers in old FF, [#114](https://github.com/zloirock/core-js/pull/114)
+
+##### 1.2.0 - 2015.09.27
+* added browser [`Promise` rejection hook](#unhandled-rejection-tracking), [#106](https://github.com/zloirock/core-js/issues/106)
+* added correct [`IsRegExp`](http://www.ecma-international.org/ecma-262/6.0/#sec-isregexp) logic to [`String#{includes, startsWith, endsWith}`](https://github.com/zloirock/core-js/#ecmascript-6-string) and [`RegExp` constructor](https://github.com/zloirock/core-js/#ecmascript-6-regexp), `@@match` case, [example](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/match#Disabling_the_isRegExp_check)
+* updated [`String#leftPad`](https://github.com/zloirock/core-js/#ecmascript-7-proposals) [with proposal](https://github.com/ljharb/proposal-string-pad-left-right/issues/6): string filler truncated from the right side
+* replaced V8 [`Object.assign`](https://github.com/zloirock/core-js/#ecmascript-6-object) - its properties order not only [incorrect](https://github.com/sindresorhus/object-assign/issues/22), it is non-deterministic and it causes some problems
+* fixed behavior with deleted in getters properties for `Object.{`[`assign`](https://github.com/zloirock/core-js/#ecmascript-6-object)`, `[`entries, values`](https://github.com/zloirock/core-js/#ecmascript-7-proposals)`}`, [example](http://goo.gl/iQE01c)
+* fixed [`Math.sinh`](https://github.com/zloirock/core-js/#ecmascript-6-math) with very small numbers in V8 near Chromium 38
+* some other fixes and optimizations
+
+##### 1.1.4 - 2015.09.05
+* fixed support symbols in FF34-35 [`Object.assign`](https://github.com/zloirock/core-js/#ecmascript-6-object)
+* fixed [collections iterators](https://github.com/zloirock/core-js/#ecmascript-6-iterators) in FF25-26
+* fixed non-generic WebKit [`Array.of`](https://github.com/zloirock/core-js/#ecmascript-6-array)
+* some other fixes and optimizations
+
+##### 1.1.3 - 2015.08.29
+* fixed support Node.js domains in [`Promise`](https://github.com/zloirock/core-js/#ecmascript-6-promise), [#103](https://github.com/zloirock/core-js/issues/103)
+
+##### 1.1.2 - 2015.08.28
+* added `toJSON` method to [`Symbol`](https://github.com/zloirock/core-js/#ecmascript-6-symbol) polyfill and to MS Edge implementation for expected `JSON.stringify` result w/o patching this method
+* replaced [`Reflect.construct`](https://github.com/zloirock/core-js/#ecmascript-6-reflect) implementations w/o correct support third argument
+* fixed `global` detection with changed `document.domain` in ~IE8, [#100](https://github.com/zloirock/core-js/issues/100)
+
+##### 1.1.1 - 2015.08.20
+* added more correct microtask implementation for [`Promise`](#ecmascript-6-promise)
+
+##### 1.1.0 - 2015.08.17
+* updated [string padding](https://github.com/zloirock/core-js/#ecmascript-7-proposals) to [actual proposal](https://github.com/ljharb/proposal-string-pad-left-right) - renamed, minor internal changes:
+ * `String#lpad` -> `String#padLeft`
+ * `String#rpad` -> `String#padRight`
+* added [string trim functions](#ecmascript-7-proposals) - [proposal](https://github.com/sebmarkbage/ecmascript-string-left-right-trim), defacto standard - required only for IE11- and fixed for some old engines:
+ * `String#trimLeft`
+ * `String#trimRight`
+* [`String#trim`](https://github.com/zloirock/core-js/#ecmascript-6-string) fixed for some engines by es6 spec and moved from `es5` to single `es6` module
+* splitted [`es6.object.statics-accept-primitives`](https://github.com/zloirock/core-js/#ecmascript-6-object)
+* caps for `freeze`-family `Object` methods moved from `es5` to `es6` namespace and joined with [es6 wrappers](https://github.com/zloirock/core-js/#ecmascript-6-object)
+* `es5` [namespace](https://github.com/zloirock/core-js/#commonjs) also includes modules, moved to `es6` namespace - you can use it as before
+* increased `MessageChannel` priority in `$.task`, [#95](https://github.com/zloirock/core-js/issues/95)
+* does not get `global.Symbol` on each getting iterator, if you wanna use alternative `Symbol` shim - add it before `core-js`
+* [`Reflect.construct`](https://github.com/zloirock/core-js/#ecmascript-6-reflect) optimized and fixed for some cases
+* simplified [`Reflect.enumerate`](https://github.com/zloirock/core-js/#ecmascript-6-reflect), see [this question](https://esdiscuss.org/topic/question-about-enumerate-and-property-decision-timing)
+* some corrections in [`Math.acosh`](https://github.com/zloirock/core-js/#ecmascript-6-math)
+* fixed [`Math.imul`](https://github.com/zloirock/core-js/#ecmascript-6-math) for old WebKit
+* some fixes in string / RegExp [well-known symbols](https://github.com/zloirock/core-js/#ecmascript-6-regexp) logic
+* some other fixes and optimizations
+
+##### 1.0.1 - 2015.07.31
+* some fixes for final MS Edge, replaced broken native `Reflect.defineProperty`
+* some minor fixes and optimizations
+* changed compression `client/*.min.js` options for safe `Function#name` and `Function#length`, should be fixed [#92](https://github.com/zloirock/core-js/issues/92)
+
+##### 1.0.0 - 2015.07.22
+* added logic for [well-known symbols](https://github.com/zloirock/core-js/#ecmascript-6-regexp):
+ * `Symbol.match`
+ * `Symbol.replace`
+ * `Symbol.split`
+ * `Symbol.search`
+* actualized and optimized work with iterables:
+ * optimized [`Map`, `Set`, `WeakMap`, `WeakSet` constructors](https://github.com/zloirock/core-js/#ecmascript-6-collections), [`Promise.all`, `Promise.race`](https://github.com/zloirock/core-js/#ecmascript-6-promise) for default `Array Iterator`
+ * optimized [`Array.from`](https://github.com/zloirock/core-js/#ecmascript-6-array) for default `Array Iterator`
+ * added [`core.getIteratorMethod`](https://github.com/zloirock/core-js/#ecmascript-6-iterators) helper
+* uses enumerable properties in shimmed instances - collections, iterators, etc for optimize performance
+* added support native constructors to [`Reflect.construct`](https://github.com/zloirock/core-js/#ecmascript-6-reflect) with 2 arguments
+* added support native constructors to [`Function#bind`](https://github.com/zloirock/core-js/#ecmascript-5) shim with `new`
+* removed obsolete `.clear` methods native [`Weak`-collections](https://github.com/zloirock/core-js/#ecmascript-6-collections)
+* maximum modularity, reduced minimal custom build size, separated into submodules:
+ * [`es6.reflect`](https://github.com/zloirock/core-js/#ecmascript-6-reflect)
+ * [`es6.regexp`](https://github.com/zloirock/core-js/#ecmascript-6-regexp)
+ * [`es6.math`](https://github.com/zloirock/core-js/#ecmascript-6-math)
+ * [`es6.number`](https://github.com/zloirock/core-js/#ecmascript-6-number)
+ * [`es7.object.to-array`](https://github.com/zloirock/core-js/#ecmascript-7-proposals)
+ * [`core.object`](https://github.com/zloirock/core-js/#object)
+ * [`core.string`](https://github.com/zloirock/core-js/#escaping-strings)
+ * [`core.iter-helpers`](https://github.com/zloirock/core-js/#ecmascript-6-iterators)
+ * internal modules (`$`, `$.iter`, etc)
+* many other optimizations
+* final cleaning non-standard features
+ * moved `$for` to [separate library](https://github.com/zloirock/forof). This work for syntax - `for-of` loop and comprehensions
+ * moved `Date#{format, formatUTC}` to [separate library](https://github.com/zloirock/dtf). Standard way for this - `ECMA-402`
+ * removed `Math` methods from `Number.prototype`. Slight sugar for simple `Math` methods calling
+ * removed `{Array#, Array, Dict}.turn`
+ * removed `core.global`
+* uses `ToNumber` instead of `ToLength` in [`Number Iterator`](https://github.com/zloirock/core-js/#number-iterator), `Array.from(2.5)` will be `[0, 1, 2]` instead of `[0, 1]`
+* fixed [#85](https://github.com/zloirock/core-js/issues/85) - invalid `Promise` unhandled rejection message in nested `setTimeout`
+* fixed [#86](https://github.com/zloirock/core-js/issues/86) - support FF extensions
+* fixed [#89](https://github.com/zloirock/core-js/issues/89) - behavior `Number` constructor in strange case
+
+##### 0.9.18 - 2015.06.17
+* removed `/` from [`RegExp.escape`](https://github.com/zloirock/core-js/#ecmascript-7-proposals) escaped characters
+
+##### 0.9.17 - 2015.06.14
+* updated [`RegExp.escape`](https://github.com/zloirock/core-js/#ecmascript-7-proposals) to the [latest proposal](https://github.com/benjamingr/RexExp.escape)
+* fixed conflict with webpack dev server + IE buggy behavior
+
+##### 0.9.16 - 2015.06.11
+* more correct order resolving thenable in [`Promise`](https://github.com/zloirock/core-js/#ecmascript-6-promise) polyfill
+* uses polyfill instead of [buggy V8 `Promise`](https://github.com/zloirock/core-js/issues/78)
+
+##### 0.9.15 - 2015.06.09
+* [collections](https://github.com/zloirock/core-js/#ecmascript-6-collections) from `library` version return wrapped native instances
+* fixed collections prototype methods in `library` version
+* optimized [`Math.hypot`](https://github.com/zloirock/core-js/#ecmascript-6-math)
+
+##### 0.9.14 - 2015.06.04
+* updated [`Promise.resolve` behavior](https://esdiscuss.org/topic/fixing-promise-resolve)
+* added fallback for IE11 buggy `Object.getOwnPropertyNames` + iframe
+* some other fixes
+
+##### 0.9.13 - 2015.05.25
+* added fallback for [`Symbol` polyfill](https://github.com/zloirock/core-js/#ecmascript-6-symbol) for old Android
+* some other fixes
+
+##### 0.9.12 - 2015.05.24
+* different instances `core-js` should use / recognize the same symbols
+* some fixes
+
+##### 0.9.11 - 2015.05.18
+* simplified [custom build](https://github.com/zloirock/core-js/#custom-build)
+ * add custom build js api
+ * added `grunt-cli` to `devDependencies` for `npm run grunt`
+* some fixes
+
+##### 0.9.10 - 2015.05.16
+* wrapped `Function#toString` for correct work wrapped methods / constructors with methods similar to the [`lodash` `isNative`](https://github.com/lodash/lodash/issues/1197)
+* added proto versions of methods to export object in `default` version for consistency with `library` version
+
+##### 0.9.9 - 2015.05.14
+* wrapped `Object#propertyIsEnumerable` for [`Symbol` polyfill](https://github.com/zloirock/core-js/#ecmascript-6-symbol)
+* [added proto versions of methods to `library` for ES7 bind syntax](https://github.com/zloirock/core-js/issues/65)
+* some other fixes
+
+##### 0.9.8 - 2015.05.12
+* fixed [`Math.hypot`](https://github.com/zloirock/core-js/#ecmascript-6-math) with negative arguments
+* added `Object#toString.toString` as fallback for [`lodash` `isNative`](https://github.com/lodash/lodash/issues/1197)
+
+##### 0.9.7 - 2015.05.07
+* added [support DOM collections](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/slice#Streamlining_cross-browser_behavior) to IE8- `Array#slice`
+
+##### 0.9.6 - 2015.05.01
+* added [`String#lpad`, `String#rpad`](https://github.com/zloirock/core-js/#ecmascript-7-proposals)
+
+##### 0.9.5 - 2015.04.30
+* added cap for `Function#@@hasInstance`
+* some fixes and optimizations
+
+##### 0.9.4 - 2015.04.27
+* fixed `RegExp` constructor
+
+##### 0.9.3 - 2015.04.26
+* some fixes and optimizations
+
+##### 0.9.2 - 2015.04.25
+* more correct [`Promise`](https://github.com/zloirock/core-js/#ecmascript-6-promise) unhandled rejection tracking and resolving / rejection priority
+
+##### 0.9.1 - 2015.04.25
+* fixed `__proto__`-based [`Promise`](https://github.com/zloirock/core-js/#ecmascript-6-promise) subclassing in some environments
+
+##### 0.9.0 - 2015.04.24
+* added correct [symbols](https://github.com/zloirock/core-js/#ecmascript-6-symbol) descriptors
+ * fixed behavior `Object.{assign, create, defineProperty, defineProperties, getOwnPropertyDescriptor, getOwnPropertyDescriptors}` with symbols
+ * added [single entry points](https://github.com/zloirock/core-js/#commonjs) for `Object.{create, defineProperty, defineProperties}`
+* added [`Map#toJSON`](https://github.com/zloirock/core-js/#ecmascript-7-proposals)
+* removed non-standard methods `Object#[_]` and `Function#only` - they solves syntax problems, but now in compilers available arrows and ~~in near future will be available~~ [available](http://babeljs.io/blog/2015/05/14/function-bind/) [bind syntax](https://github.com/zenparsing/es-function-bind)
+* removed non-standard undocumented methods `Symbol.{pure, set}`
+* some fixes and internal changes
+
+##### 0.8.4 - 2015.04.18
+* uses `webpack` instead of `browserify` for browser builds - more compression-friendly result
+
+##### 0.8.3 - 2015.04.14
+* fixed `Array` statics with single entry points
+
+##### 0.8.2 - 2015.04.13
+* [`Math.fround`](https://github.com/zloirock/core-js/#ecmascript-6-math) now also works in IE9-
+* added [`Set#toJSON`](https://github.com/zloirock/core-js/#ecmascript-7-proposals)
+* some optimizations and fixes
+
+##### 0.8.1 - 2015.04.03
+* fixed `Symbol.keyFor`
+
+##### 0.8.0 - 2015.04.02
+* changed [CommonJS API](https://github.com/zloirock/core-js/#commonjs)
+* splitted and renamed some modules
+* added support ES3 environment (ES5 polyfill) to **all** default versions - size increases slightly (+ ~4kb w/o gzip), many issues disappear, if you don't need it - [simply include only required namespaces / features / modules](https://github.com/zloirock/core-js/#commonjs)
+* removed [abstract references](https://github.com/zenparsing/es-abstract-refs) support - proposal has been superseded =\
+* [`$for.isIterable` -> `core.isIterable`, `$for.getIterator` -> `core.getIterator`](https://github.com/zloirock/core-js/#ecmascript-6-iterators), temporary available in old namespace
+* fixed iterators support in v8 `Promise.all` and `Promise.race`
+* many other fixes
+
+##### 0.7.2 - 2015.03.09
+* some fixes
+
+##### 0.7.1 - 2015.03.07
+* some fixes
+
+##### 0.7.0 - 2015.03.06
+* rewritten and splitted into [CommonJS modules](https://github.com/zloirock/core-js/#commonjs)
+
+##### 0.6.1 - 2015.02.24
+* fixed support [`Object.defineProperty`](https://github.com/zloirock/core-js/#ecmascript-5) with accessors on DOM elements on IE8
+
+##### 0.6.0 - 2015.02.23
+* added support safe closing iteration - calling `iterator.return` on abort iteration, if it exists
+* added basic support [`Promise`](https://github.com/zloirock/core-js/#ecmascript-6-promise) unhandled rejection tracking in shim
+* added [`Object.getOwnPropertyDescriptors`](https://github.com/zloirock/core-js/#ecmascript-7-proposals)
+* removed `console` cap - creates too many problems
+* restructuring [namespaces](https://github.com/zloirock/core-js/#custom-build)
+* some fixes
+
+##### 0.5.4 - 2015.02.15
+* some fixes
+
+##### 0.5.3 - 2015.02.14
+* added [support binary and octal literals](https://github.com/zloirock/core-js/#ecmascript-6-number) to `Number` constructor
+* added [`Date#toISOString`](https://github.com/zloirock/core-js/#ecmascript-5)
+
+##### 0.5.2 - 2015.02.10
+* some fixes
+
+##### 0.5.1 - 2015.02.09
+* some fixes
+
+##### 0.5.0 - 2015.02.08
+* systematization of modules
+* splitted [`es6` module](https://github.com/zloirock/core-js/#ecmascript-6)
+* splitted `console` module: `web.console` - only cap for missing methods, `core.log` - bound methods & additional features
+* added [`delay` method](https://github.com/zloirock/core-js/#delay)
+* some fixes
+
+##### 0.4.10 - 2015.01.28
+* [`Object.getOwnPropertySymbols`](https://github.com/zloirock/core-js/#ecmascript-6-symbol) polyfill returns array of wrapped keys
+
+##### 0.4.9 - 2015.01.27
+* FF20-24 fix
+
+##### 0.4.8 - 2015.01.25
+* some [collections](https://github.com/zloirock/core-js/#ecmascript-6-collections) fixes
+
+##### 0.4.7 - 2015.01.25
+* added support frozen objects as [collections](https://github.com/zloirock/core-js/#ecmascript-6-collections) keys
+
+##### 0.4.6 - 2015.01.21
+* added [`Object.getOwnPropertySymbols`](https://github.com/zloirock/core-js/#ecmascript-6-symbol)
+* added [`NodeList.prototype[@@iterator]`](https://github.com/zloirock/core-js/#ecmascript-6-iterators)
+* added basic `@@species` logic - getter in native constructors
+* removed `Function#by`
+* some fixes
+
+##### 0.4.5 - 2015.01.16
+* some fixes
+
+##### 0.4.4 - 2015.01.11
+* enabled CSP support
+
+##### 0.4.3 - 2015.01.10
+* added `Function` instances `name` property for IE9+
+
+##### 0.4.2 - 2015.01.10
+* `Object` static methods accept primitives
+* `RegExp` constructor can alter flags (IE9+)
+* added `Array.prototype[Symbol.unscopables]`
+
+##### 0.4.1 - 2015.01.05
+* some fixes
+
+##### 0.4.0 - 2015.01.03
+* added [`es6.reflect`](https://github.com/zloirock/core-js/#ecmascript-6-reflect) module:
+ * added `Reflect.apply`
+ * added `Reflect.construct`
+ * added `Reflect.defineProperty`
+ * added `Reflect.deleteProperty`
+ * added `Reflect.enumerate`
+ * added `Reflect.get`
+ * added `Reflect.getOwnPropertyDescriptor`
+ * added `Reflect.getPrototypeOf`
+ * added `Reflect.has`
+ * added `Reflect.isExtensible`
+ * added `Reflect.preventExtensions`
+ * added `Reflect.set`
+ * added `Reflect.setPrototypeOf`
+* `core-js` methods now can use external `Symbol.iterator` polyfill
+* some fixes
+
+##### 0.3.3 - 2014.12.28
+* [console cap](https://github.com/zloirock/core-js/#console) excluded from node.js default builds
+
+##### 0.3.2 - 2014.12.25
+* added cap for [ES5](https://github.com/zloirock/core-js/#ecmascript-5) freeze-family methods
+* fixed `console` bug
+
+##### 0.3.1 - 2014.12.23
+* some fixes
+
+##### 0.3.0 - 2014.12.23
+* Optimize [`Map` & `Set`](https://github.com/zloirock/core-js/#ecmascript-6-collections):
+ * use entries chain on hash table
+ * fast & correct iteration
+ * iterators moved to [`es6`](https://github.com/zloirock/core-js/#ecmascript-6) and [`es6.collections`](https://github.com/zloirock/core-js/#ecmascript-6-collections) modules
+
+##### 0.2.5 - 2014.12.20
+* `console` no longer shortcut for `console.log` (compatibility problems)
+* some fixes
+
+##### 0.2.4 - 2014.12.17
+* better compliance of ES6
+* added [`Math.fround`](https://github.com/zloirock/core-js/#ecmascript-6-math) (IE10+)
+* some fixes
+
+##### 0.2.3 - 2014.12.15
+* [Symbols](https://github.com/zloirock/core-js/#ecmascript-6-symbol):
+ * added option to disable addition setter to `Object.prototype` for Symbol polyfill:
+ * added `Symbol.useSimple`
+ * added `Symbol.useSetter`
+ * added cap for well-known Symbols:
+ * added `Symbol.hasInstance`
+ * added `Symbol.isConcatSpreadable`
+ * added `Symbol.match`
+ * added `Symbol.replace`
+ * added `Symbol.search`
+ * added `Symbol.species`
+ * added `Symbol.split`
+ * added `Symbol.toPrimitive`
+ * added `Symbol.unscopables`
+
+##### 0.2.2 - 2014.12.13
+* added [`RegExp#flags`](https://github.com/zloirock/core-js/#ecmascript-6-regexp) ([December 2014 Draft Rev 29](http://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts#december_6_2014_draft_rev_29))
+* added [`String.raw`](https://github.com/zloirock/core-js/#ecmascript-6-string)
+
+##### 0.2.1 - 2014.12.12
+* repair converting -0 to +0 in [native collections](https://github.com/zloirock/core-js/#ecmascript-6-collections)
+
+##### 0.2.0 - 2014.12.06
+* added [`es7.proposals`](https://github.com/zloirock/core-js/#ecmascript-7-proposals) and [`es7.abstract-refs`](https://github.com/zenparsing/es-abstract-refs) modules
+* added [`String#at`](https://github.com/zloirock/core-js/#ecmascript-7-proposals)
+* added real [`String Iterator`](https://github.com/zloirock/core-js/#ecmascript-6-iterators), older versions used Array Iterator
+* added abstract references support:
+ * added `Symbol.referenceGet`
+ * added `Symbol.referenceSet`
+ * added `Symbol.referenceDelete`
+ * added `Function#@@referenceGet`
+ * added `Map#@@referenceGet`
+ * added `Map#@@referenceSet`
+ * added `Map#@@referenceDelete`
+ * added `WeakMap#@@referenceGet`
+ * added `WeakMap#@@referenceSet`
+ * added `WeakMap#@@referenceDelete`
+ * added `Dict.{...methods}[@@referenceGet]`
+* removed deprecated `.contains` methods
+* some fixes
+
+##### 0.1.5 - 2014.12.01
+* added [`Array#copyWithin`](https://github.com/zloirock/core-js/#ecmascript-6-array)
+* added [`String#codePointAt`](https://github.com/zloirock/core-js/#ecmascript-6-string)
+* added [`String.fromCodePoint`](https://github.com/zloirock/core-js/#ecmascript-6-string)
+
+##### 0.1.4 - 2014.11.27
+* added [`Dict.mapPairs`](https://github.com/zloirock/core-js/#dict)
+
+##### 0.1.3 - 2014.11.20
+* [TC39 November meeting](https://github.com/rwaldron/tc39-notes/tree/master/es6/2014-11):
+ * [`.contains` -> `.includes`](https://github.com/rwaldron/tc39-notes/blob/master/es6/2014-11/nov-18.md#51--44-arrayprototypecontains-and-stringprototypecontains)
+ * `String#contains` -> [`String#includes`](https://github.com/zloirock/core-js/#ecmascript-6-string)
+ * `Array#contains` -> [`Array#includes`](https://github.com/zloirock/core-js/#ecmascript-7-proposals)
+ * `Dict.contains` -> [`Dict.includes`](https://github.com/zloirock/core-js/#dict)
+ * [removed `WeakMap#clear`](https://github.com/rwaldron/tc39-notes/blob/master/es6/2014-11/nov-19.md#412-should-weakmapweakset-have-a-clear-method-markm)
+ * [removed `WeakSet#clear`](https://github.com/rwaldron/tc39-notes/blob/master/es6/2014-11/nov-19.md#412-should-weakmapweakset-have-a-clear-method-markm)
+
+##### 0.1.2 - 2014.11.19
+* `Map` & `Set` bug fix
+
+##### 0.1.1 - 2014.11.18
+* public release
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/Gruntfile.js b/node_modules/babel-register/node_modules/core-js/Gruntfile.js
new file mode 100644
index 0000000..afbcd94
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/Gruntfile.js
@@ -0,0 +1,2 @@
+require('LiveScript');
+module.exports = require('./build/Gruntfile');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/LICENSE b/node_modules/babel-register/node_modules/core-js/LICENSE
new file mode 100644
index 0000000..c99b842
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2014-2016 Denis Pushkarev
+
+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.
diff --git a/node_modules/babel-register/node_modules/core-js/README.md b/node_modules/babel-register/node_modules/core-js/README.md
new file mode 100644
index 0000000..ec09039
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/README.md
@@ -0,0 +1,1981 @@
+# core-js
+
+[](https://gitter.im/zloirock/core-js?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [](https://www.npmjs.com/package/core-js) [](http://npm-stat.com/charts.html?package=core-js&author=&from=2014-11-18&to=2114-11-18) [](https://travis-ci.org/zloirock/core-js) [](https://david-dm.org/zloirock/core-js#info=devDependencies)
+#### As advertising: the author is looking for a good job :)
+
+Modular standard library for JavaScript. Includes polyfills for [ECMAScript 5](#ecmascript-5), [ECMAScript 6](#ecmascript-6): [promises](#ecmascript-6-promise), [symbols](#ecmascript-6-symbol), [collections](#ecmascript-6-collections), iterators, [typed arrays](#ecmascript-6-typed-arrays), [ECMAScript 7+ proposals](#ecmascript-7-proposals), [setImmediate](#setimmediate), etc. Some additional features such as [dictionaries](#dict) or [extended partial application](#partial-application). You can require only needed features or use it without global namespace pollution.
+
+[*Example*](http://goo.gl/a2xexl):
+```js
+Array.from(new Set([1, 2, 3, 2, 1])); // => [1, 2, 3]
+'*'.repeat(10); // => '**********'
+Promise.resolve(32).then(x => console.log(x)); // => 32
+setImmediate(x => console.log(x), 42); // => 42
+```
+
+[*Without global namespace pollution*](http://goo.gl/paOHb0):
+```js
+var core = require('core-js/library'); // With a modular system, otherwise use global `core`
+core.Array.from(new core.Set([1, 2, 3, 2, 1])); // => [1, 2, 3]
+core.String.repeat('*', 10); // => '**********'
+core.Promise.resolve(32).then(x => console.log(x)); // => 32
+core.setImmediate(x => console.log(x), 42); // => 42
+```
+
+- [Usage](#usage)
+ - [Basic](#basic)
+ - [CommonJS](#commonjs)
+ - [Custom build](#custom-build-from-the-command-line)
+- [Supported engines](#supported-engines)
+- [Features](#features)
+ - [ECMAScript 5](#ecmascript-5)
+ - [ECMAScript 6](#ecmascript-6)
+ - [ECMAScript 6: Object](#ecmascript-6-object)
+ - [ECMAScript 6: Function](#ecmascript-6-function)
+ - [ECMAScript 6: Array](#ecmascript-6-array)
+ - [ECMAScript 6: String](#ecmascript-6-string)
+ - [ECMAScript 6: RegExp](#ecmascript-6-regexp)
+ - [ECMAScript 6: Number](#ecmascript-6-number)
+ - [ECMAScript 6: Math](#ecmascript-6-math)
+ - [ECMAScript 6: Date](#ecmascript-6-date)
+ - [ECMAScript 6: Promise](#ecmascript-6-promise)
+ - [ECMAScript 6: Symbol](#ecmascript-6-symbol)
+ - [ECMAScript 6: Collections](#ecmascript-6-collections)
+ - [ECMAScript 6: Typed Arrays](#ecmascript-6-typed-arrays)
+ - [ECMAScript 6: Reflect](#ecmascript-6-reflect)
+ - [ECMAScript 7+ proposals](#ecmascript-7-proposals)
+ - [Web standards](#web-standards)
+ - [setTimeout / setInterval](#settimeout--setinterval)
+ - [setImmediate](#setimmediate)
+ - [Iterable DOM collections](#iterable-dom-collections)
+ - [Non-standard](#non-standard)
+ - [Object](#object)
+ - [Dict](#dict)
+ - [Partial application](#partial-application)
+ - [Number Iterator](#number-iterator)
+ - [Escaping strings](#escaping-strings)
+ - [delay](#delay)
+ - [Helpers for iterators](#helpers-for-iterators)
+- [Missing polyfills](#missing-polyfills)
+- [Changelog](./CHANGELOG.md)
+
+## Usage
+### Basic
+```
+npm i core-js
+bower install core.js
+```
+
+```js
+// Default
+require('core-js');
+// Without global namespace pollution
+var core = require('core-js/library');
+// Shim only
+require('core-js/shim');
+```
+If you need complete build for browser, use builds from `core-js/client` path:
+
+* [default](https://raw.githack.com/zloirock/core-js/v2.2.0/client/core.min.js): Includes all features, standard and non-standard.
+* [as a library](https://raw.githack.com/zloirock/core-js/v2.2.0/client/library.min.js): Like "default", but does not pollute the global namespace (see [2nd example at the top](#core-js)).
+* [shim only](https://raw.githack.com/zloirock/core-js/v2.2.0/client/shim.min.js): Only includes the standard methods.
+
+Warning: if you use `core-js` with the extension of native objects, require all needed `core-js` modules at the beginning of entry point of your application, otherwise, conflicts may occur.
+
+### CommonJS
+You can require only needed modules.
+
+```js
+require('core-js/fn/set');
+require('core-js/fn/array/from');
+require('core-js/fn/array/find-index');
+Array.from(new Set([1, 2, 3, 2, 1])); // => [1, 2, 3]
+[1, 2, NaN, 3, 4].findIndex(isNaN); // => 2
+
+// or, w/o global namespace pollution:
+
+var Set = require('core-js/library/fn/set');
+var from = require('core-js/library/fn/array/from');
+var findIndex = require('core-js/library/fn/array/find-index');
+from(new Set([1, 2, 3, 2, 1])); // => [1, 2, 3]
+findIndex([1, 2, NaN, 3, 4], isNaN); // => 2
+```
+Available entry points for methods / constructors, as above examples, and namespaces: for example, `core-js/es6/array` (`core-js/library/es6/array`) contains all [ES6 `Array` features](#ecmascript-6-array), `core-js/es6` (`core-js/library/es6`) contains all ES6 features.
+
+##### Caveats when using CommonJS API:
+
+* `modules` path is internal API, does not inject all required dependencies and can be changed in minor or patch releases. Use it only for a custom build and / or if you know what are you doing.
+* `core-js` is extremely modular and uses a lot of very tiny modules, because of that for usage in browsers bundle up `core-js` instead of usage loader for each file, otherwise, you will have hundreds of requests.
+
+#### CommonJS and prototype methods without global namespace pollution
+In the `library` version, we can't pollute prototypes of native constructors. Because of that, prototype methods transformed to static methods like in examples above. `babel` `runtime` transformer also can't transform them. But with transpilers we can use one more trick - [bind operator and virtual methods](https://github.com/zenparsing/es-function-bind). Special for that, available `/virtual/` entry points. Example:
+```js
+import fill from 'core-js/library/fn/array/virtual/fill';
+import findIndex from 'core-js/library/fn/array/virtual/find-index';
+
+Array(10)::fill(0).map((a, b) => b * b)::findIndex(it => it && !(it % 8)); // => 4
+
+// or
+
+import {fill, findIndex} from 'core-js/library/fn/array/virtual';
+
+Array(10)::fill(0).map((a, b) => b * b)::findIndex(it => it && !(it % 8)); // => 4
+
+```
+
+### Custom build (from the command-line)
+```
+npm i core-js && cd node_modules/core-js && npm i
+npm run grunt build:core.dict,es6 -- --blacklist=es6.promise,es6.math --library=on --path=custom uglify
+```
+Where `core.dict` and `es6` are modules (namespaces) names, which will be added to the build, `es6.promise` and `es6.math` are modules (namespaces) names, which will be excluded from the build, `--library=on` is flag for build without global namespace pollution and `custom` is target file name.
+
+Available namespaces: for example, `es6.array` contains [ES6 `Array` features](#ecmascript-6-array), `es6` contains all modules whose names start with `es6`.
+
+### Custom build (from external scripts)
+
+[`core-js-builder`](https://www.npmjs.com/package/core-js-builder) package exports a function that takes the same parameters as the `build` target from the previous section. This will conditionally include or exclude certain parts of `core-js`:
+
+```js
+require('core-js-builder')({
+ modules: ['es6', 'core.dict'], // modules / namespaces
+ blacklist: ['es6.reflect'], // blacklist of modules / namespaces, by default - empty list
+ library: false, // flag for build without global namespace pollution, by default - false
+ umd: true // use UMD wrapper for export `core` object, by default - true
+}).then(code => {
+ // ...
+}).catch(error => {
+ // ...
+});
+```
+## Supported engines
+**Tested in:**
+- Chrome 26+
+- Firefox 4+
+- Safari 5+
+- Opera 12+
+- Internet Explorer 6+ (sure, IE8- with ES3 limitations)
+- Edge
+- Android Browser 2.3+
+- iOS Safari 5.1+
+- PhantomJS 1.9 / 2.1
+- NodeJS 0.8+
+
+...and it doesn't mean `core-js` will not work in other engines, they just have not been tested.
+
+## Features:
+[*CommonJS entry points:*](#commonjs)
+```
+core-js(/library) <- all features
+core-js(/library)/shim <- only polyfills
+```
+### ECMAScript 5
+All features moved to the [`es6` namespace](#ecmascript-6), here just a list of features:
+```js
+Object
+ .create(proto | null, descriptors?) -> object
+ .getPrototypeOf(object) -> proto | null
+ .defineProperty(target, key, desc) -> target, cap for ie8-
+ .defineProperties(target, descriptors) -> target, cap for ie8-
+ .getOwnPropertyDescriptor(object, key) -> desc
+ .getOwnPropertyNames(object) -> array
+ .keys(object) -> array
+ .seal(object) -> object, cap for ie8-
+ .freeze(object) -> object, cap for ie8-
+ .preventExtensions(object) -> object, cap for ie8-
+ .isSealed(object) -> bool, cap for ie8-
+ .isFrozen(object) -> bool, cap for ie8-
+ .isExtensible(object) -> bool, cap for ie8-
+Array
+ .isArray(var) -> bool
+ #slice(start?, end?) -> array, fix for ie7-
+ #join(string = ',') -> string, fix for ie7-
+ #indexOf(var, from?) -> int
+ #lastIndexOf(var, from?) -> int
+ #every(fn(val, index, @), that) -> bool
+ #some(fn(val, index, @), that) -> bool
+ #forEach(fn(val, index, @), that) -> void
+ #map(fn(val, index, @), that) -> array
+ #filter(fn(val, index, @), that) -> array
+ #reduce(fn(memo, val, index, @), memo?) -> var
+ #reduceRight(fn(memo, val, index, @), memo?) -> var
+ #sort(fn?) -> @, fixes for some engines
+Function
+ #bind(object, ...args) -> boundFn(...args)
+String
+ #split(separator, limit) -> array
+ #trim() -> str
+RegExp
+ #toString() -> str
+Number
+ #toFixed(digits) -> string
+ #toPrecision(precision) -> string
+parseInt(str, radix) -> int
+parseFloat(str) -> num
+Date
+ .now() -> int
+ #toISOString() -> string
+ #toJSON() -> string
+```
+[*CommonJS entry points:*](#commonjs)
+```
+core-js(/library)/es5
+```
+
+### ECMAScript 6
+[*CommonJS entry points:*](#commonjs)
+```
+core-js(/library)/es6
+```
+#### ECMAScript 6: Object
+Modules [`es6.object.assign`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.object.assign.js), [`es6.object.is`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.object.is.js), [`es6.object.set-prototype-of`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.object.set-prototype-of.js) and [`es6.object.to-string`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.object.to-string.js).
+
+In ES6 most `Object` static methods should work with primitives. Modules [`es6.object.freeze`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.object.freeze.js), [`es6.object.seal`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.object.seal.js), [`es6.object.prevent-extensions`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.object.prevent-extensions.js), [`es6.object.is-frozen`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.object.is-frozen.js), [`es6.object.is-sealed`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.object.is-sealed.js), [`es6.object.is-extensible`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.object.is-extensible.js), [`es6.object.get-own-property-descriptor`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.object.get-own-property-descriptor.js), [`es6.object.get-prototype-of`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.object.get-prototype-of.js), [`es6.object.keys`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.object.keys.js) and [`es6.object.get-own-property-names`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.object.get-own-property-names.js).
+
+Just ES5 features: [`es6.object.create`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.object.create.js), [`es6.object.define-property`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.object.define-property.js) and [`es6.object.define-properties`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.object.es6.object.define-properties.js).
+```js
+Object
+ .assign(target, ...src) -> target
+ .is(a, b) -> bool
+ .setPrototypeOf(target, proto | null) -> target (required __proto__ - IE11+)
+ .create(object | null, descriptors?) -> object
+ .getPrototypeOf(var) -> object | null
+ .defineProperty(object, key, desc) -> target
+ .defineProperties(object, descriptors) -> target
+ .getOwnPropertyDescriptor(var, key) -> desc | undefined
+ .keys(var) -> array
+ .getOwnPropertyNames(var) -> array
+ .freeze(var) -> var
+ .seal(var) -> var
+ .preventExtensions(var) -> var
+ .isFrozen(var) -> bool
+ .isSealed(var) -> bool
+ .isExtensible(var) -> bool
+ #toString() -> string, ES6 fix: @@toStringTag support
+```
+[*CommonJS entry points:*](#commonjs)
+```
+core-js(/library)/es6/object
+core-js(/library)/fn/object/assign
+core-js(/library)/fn/object/is
+core-js(/library)/fn/object/set-prototype-of
+core-js(/library)/fn/object/get-prototype-of
+core-js(/library)/fn/object/create
+core-js(/library)/fn/object/define-property
+core-js(/library)/fn/object/define-properties
+core-js(/library)/fn/object/get-own-property-descriptor
+core-js(/library)/fn/object/keys
+core-js(/library)/fn/object/get-own-property-names
+core-js(/library)/fn/object/freeze
+core-js(/library)/fn/object/seal
+core-js(/library)/fn/object/prevent-extensions
+core-js(/library)/fn/object/is-frozen
+core-js(/library)/fn/object/is-sealed
+core-js(/library)/fn/object/is-extensible
+core-js/fn/object/to-string
+```
+[*Examples*](http://goo.gl/ywdwPz):
+```js
+var foo = {q: 1, w: 2}
+ , bar = {e: 3, r: 4}
+ , baz = {t: 5, y: 6};
+Object.assign(foo, bar, baz); // => foo = {q: 1, w: 2, e: 3, r: 4, t: 5, y: 6}
+
+Object.is(NaN, NaN); // => true
+Object.is(0, -0); // => false
+Object.is(42, 42); // => true
+Object.is(42, '42'); // => false
+
+function Parent(){}
+function Child(){}
+Object.setPrototypeOf(Child.prototype, Parent.prototype);
+new Child instanceof Child; // => true
+new Child instanceof Parent; // => true
+
+var O = {};
+O[Symbol.toStringTag] = 'Foo';
+'' + O; // => '[object Foo]'
+
+Object.keys('qwe'); // => ['0', '1', '2']
+Object.getPrototypeOf('qwe') === String.prototype; // => true
+```
+#### ECMAScript 6: Function
+Modules [`es6.function.name`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.function.name.js), [`es6.function.has-instance`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.function.has-instance.js). Just ES5: [`es6.function.bind`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.function.bind.js).
+```js
+Function
+ #bind(object, ...args) -> boundFn(...args)
+ #name -> string (IE9+)
+ #@@hasInstance(var) -> bool
+```
+[*CommonJS entry points:*](#commonjs)
+```
+core-js/es6/function
+core-js/fn/function/name
+core-js/fn/function/has-instance
+core-js/fn/function/bind
+core-js/fn/function/virtual/bind
+```
+[*Example*](http://goo.gl/zqu3Wp):
+```js
+(function foo(){}).name // => 'foo'
+
+console.log.bind(console, 42)(43); // => 42 43
+```
+#### ECMAScript 6: Array
+Modules [`es6.array.from`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.array.from.js), [`es6.array.of`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.array.of.js), [`es6.array.copy-within`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.array.copy-within.js), [`es6.array.fill`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.array.fill.js), [`es6.array.find`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.array.find.js), [`es6.array.find-index`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.array.find-index.js), [`es6.array.iterator`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.array.iterator.js). ES5 features with fixes: [`es6.array.is-array`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.array.is-array.js), [`es6.array.slice`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.array.slice.js), [`es6.array.join`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.array.join.js), [`es6.array.index-of`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.array.index-of.js), [`es6.array.last-index-of`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.array.last-index-of.js), [`es6.array.every`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.array.every.js), [`es6.array.some`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.array.some.js), [`es6.array.for-each`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.array.for-each.js), [`es6.array.map`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.array.map.js), [`es6.array.filter`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.array.filter.js), [`es6.array.reduce`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.array.reduce.js), [`es6.array.reduce-right`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.array.reduce-right.js), [`es6.array.sort`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.array.sort.js).
+```js
+Array
+ .from(iterable | array-like, mapFn(val, index)?, that) -> array
+ .of(...args) -> array
+ .isArray(var) -> bool
+ #copyWithin(target = 0, start = 0, end = @length) -> @
+ #fill(val, start = 0, end = @length) -> @
+ #find(fn(val, index, @), that) -> val
+ #findIndex(fn(val, index, @), that) -> index | -1
+ #values() -> iterator
+ #keys() -> iterator
+ #entries() -> iterator
+ #join(string = ',') -> string, fix for ie7-
+ #slice(start?, end?) -> array, fix for ie7-
+ #indexOf(var, from?) -> index | -1
+ #lastIndexOf(var, from?) -> index | -1
+ #every(fn(val, index, @), that) -> bool
+ #some(fn(val, index, @), that) -> bool
+ #forEach(fn(val, index, @), that) -> void
+ #map(fn(val, index, @), that) -> array
+ #filter(fn(val, index, @), that) -> array
+ #reduce(fn(memo, val, index, @), memo?) -> var
+ #reduceRight(fn(memo, val, index, @), memo?) -> var
+ #sort(fn?) -> @, invalid arguments fix
+ #@@iterator() -> iterator (values)
+ #@@unscopables -> object (cap)
+Arguments
+ #@@iterator() -> iterator (values, available only in core-js methods)
+```
+[*CommonJS entry points:*](#commonjs)
+```
+core-js(/library)/es6/array
+core-js(/library)/fn/array/from
+core-js(/library)/fn/array/of
+core-js(/library)/fn/array/is-array
+core-js(/library)/fn/array/iterator
+core-js(/library)/fn/array/copy-within
+core-js(/library)/fn/array/fill
+core-js(/library)/fn/array/find
+core-js(/library)/fn/array/find-index
+core-js(/library)/fn/array/values
+core-js(/library)/fn/array/keys
+core-js(/library)/fn/array/entries
+core-js(/library)/fn/array/slice
+core-js(/library)/fn/array/join
+core-js(/library)/fn/array/index-of
+core-js(/library)/fn/array/last-index-of
+core-js(/library)/fn/array/every
+core-js(/library)/fn/array/some
+core-js(/library)/fn/array/for-each
+core-js(/library)/fn/array/map
+core-js(/library)/fn/array/filter
+core-js(/library)/fn/array/reduce
+core-js(/library)/fn/array/reduce-right
+core-js(/library)/fn/array/sort
+core-js(/library)/fn/array/virtual/iterator
+core-js(/library)/fn/array/virtual/copy-within
+core-js(/library)/fn/array/virtual/fill
+core-js(/library)/fn/array/virtual/find
+core-js(/library)/fn/array/virtual/find-index
+core-js(/library)/fn/array/virtual/values
+core-js(/library)/fn/array/virtual/keys
+core-js(/library)/fn/array/virtual/entries
+core-js(/library)/fn/array/virtual/slice
+core-js(/library)/fn/array/virtual/join
+core-js(/library)/fn/array/virtual/index-of
+core-js(/library)/fn/array/virtual/last-index-of
+core-js(/library)/fn/array/virtual/every
+core-js(/library)/fn/array/virtual/some
+core-js(/library)/fn/array/virtual/for-each
+core-js(/library)/fn/array/virtual/map
+core-js(/library)/fn/array/virtual/filter
+core-js(/library)/fn/array/virtual/reduce
+core-js(/library)/fn/array/virtual/reduce-right
+core-js(/library)/fn/array/virtual/sort
+```
+[*Examples*](http://goo.gl/oaUFUf):
+```js
+Array.from(new Set([1, 2, 3, 2, 1])); // => [1, 2, 3]
+Array.from({0: 1, 1: 2, 2: 3, length: 3}); // => [1, 2, 3]
+Array.from('123', Number); // => [1, 2, 3]
+Array.from('123', function(it){
+ return it * it;
+}); // => [1, 4, 9]
+
+Array.of(1); // => [1]
+Array.of(1, 2, 3); // => [1, 2, 3]
+
+var array = ['a', 'b', 'c'];
+
+for(var val of array)console.log(val); // => 'a', 'b', 'c'
+for(var val of array.values())console.log(val); // => 'a', 'b', 'c'
+for(var key of array.keys())console.log(key); // => 0, 1, 2
+for(var [key, val] of array.entries()){
+ console.log(key); // => 0, 1, 2
+ console.log(val); // => 'a', 'b', 'c'
+}
+
+function isOdd(val){
+ return val % 2;
+}
+[4, 8, 15, 16, 23, 42].find(isOdd); // => 15
+[4, 8, 15, 16, 23, 42].findIndex(isOdd); // => 2
+[4, 8, 15, 16, 23, 42].find(isNaN); // => undefined
+[4, 8, 15, 16, 23, 42].findIndex(isNaN); // => -1
+
+Array(5).fill(42); // => [42, 42, 42, 42, 42]
+
+[1, 2, 3, 4, 5].copyWithin(0, 3); // => [4, 5, 3, 4, 5]
+```
+#### ECMAScript 6: String
+Modules [`es6.string.from-code-point`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.string.from-code-point.js), [`es6.string.raw`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.string.raw.js), [`es6.string.iterator`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.string.iterator.js), [`es6.string.code-point-at`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.string.code-point-at.js), [`es6.string.ends-with`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.string.ends-with.js), [`es6.string.includes`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.string.includes.js), [`es6.string.repeat`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.string.repeat.js), [`es6.string.starts-with`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.string.starts-with.js) and [`es6.string.trim`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.string.trim.js).
+
+Annex B HTML methods. Ugly, but it's also the part of the spec. Modules [`es6.string.anchor`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.string.anchor.js), [`es6.string.big`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.string.big.js), [`es6.string.blink`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.string.blink.js), [`es6.string.bold`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.string.bold.js), [`es6.string.fixed`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.string.fixed.js), [`es6.string.fontcolor`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.string.fontcolor.js), [`es6.string.fontsize`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.string.fontsize.js), [`es6.string.italics`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.string.italics.js), [`es6.string.link`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.string.link.js), [`es6.string.small`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.string.small.js), [`es6.string.strike`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.string.strike.js), [`es6.string.sub`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.string.sub.js) and [`es6.string.sup`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.string.sup.js).
+```js
+String
+ .fromCodePoint(...codePoints) -> str
+ .raw({raw}, ...substitutions) -> str
+ #includes(str, from?) -> bool
+ #startsWith(str, from?) -> bool
+ #endsWith(str, from?) -> bool
+ #repeat(num) -> str
+ #codePointAt(pos) -> uint
+ #trim() -> str, ES6 fix
+ #anchor(name) -> str
+ #big() -> str
+ #blink() -> str
+ #bold() -> str
+ #fixed() -> str
+ #fontcolor(color) -> str
+ #fontsize(size) -> str
+ #italics() -> str
+ #link(url) -> str
+ #small() -> str
+ #strike() -> str
+ #sub() -> str
+ #sup() -> str
+ #@@iterator() -> iterator (code points)
+```
+[*CommonJS entry points:*](#commonjs)
+```
+core-js(/library)/es6/string
+core-js(/library)/fn/string/from-code-point
+core-js(/library)/fn/string/raw
+core-js(/library)/fn/string/includes
+core-js(/library)/fn/string/starts-with
+core-js(/library)/fn/string/ends-with
+core-js(/library)/fn/string/repeat
+core-js(/library)/fn/string/code-point-at
+core-js(/library)/fn/string/trim
+core-js(/library)/fn/string/anchor
+core-js(/library)/fn/string/big
+core-js(/library)/fn/string/blink
+core-js(/library)/fn/string/bold
+core-js(/library)/fn/string/fixed
+core-js(/library)/fn/string/fontcolor
+core-js(/library)/fn/string/fontsize
+core-js(/library)/fn/string/italics
+core-js(/library)/fn/string/link
+core-js(/library)/fn/string/small
+core-js(/library)/fn/string/strike
+core-js(/library)/fn/string/sub
+core-js(/library)/fn/string/sup
+core-js(/library)/fn/string/iterator
+core-js(/library)/fn/string/virtual/includes
+core-js(/library)/fn/string/virtual/starts-with
+core-js(/library)/fn/string/virtual/ends-with
+core-js(/library)/fn/string/virtual/repeat
+core-js(/library)/fn/string/virtual/code-point-at
+core-js(/library)/fn/string/virtual/trim
+core-js(/library)/fn/string/virtual/anchor
+core-js(/library)/fn/string/virtual/big
+core-js(/library)/fn/string/virtual/blink
+core-js(/library)/fn/string/virtual/bold
+core-js(/library)/fn/string/virtual/fixed
+core-js(/library)/fn/string/virtual/fontcolor
+core-js(/library)/fn/string/virtual/fontsize
+core-js(/library)/fn/string/virtual/italics
+core-js(/library)/fn/string/virtual/link
+core-js(/library)/fn/string/virtual/small
+core-js(/library)/fn/string/virtual/strike
+core-js(/library)/fn/string/virtual/sub
+core-js(/library)/fn/string/virtual/sup
+core-js(/library)/fn/string/virtual/iterator
+```
+[*Examples*](http://goo.gl/3UaQ93):
+```js
+for(var val of 'a𠮷b'){
+ console.log(val); // => 'a', '𠮷', 'b'
+}
+
+'foobarbaz'.includes('bar'); // => true
+'foobarbaz'.includes('bar', 4); // => false
+'foobarbaz'.startsWith('foo'); // => true
+'foobarbaz'.startsWith('bar', 3); // => true
+'foobarbaz'.endsWith('baz'); // => true
+'foobarbaz'.endsWith('bar', 6); // => true
+
+'string'.repeat(3); // => 'stringstringstring'
+
+'𠮷'.codePointAt(0); // => 134071
+String.fromCodePoint(97, 134071, 98); // => 'a𠮷b'
+
+var name = 'Bob';
+String.raw`Hi\n${name}!`; // => 'Hi\\nBob!' (ES6 template string syntax)
+String.raw({raw: 'test'}, 0, 1, 2); // => 't0e1s2t'
+
+'foo'.bold(); // => 'foo '
+'bar'.anchor('a"b'); // => 'bar '
+'baz'.link('http://example.com'); // => 'baz '
+```
+#### ECMAScript 6: RegExp
+Modules [`es6.regexp.constructor`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.regexp.constructor.js) and [`es6.regexp.flags`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.regexp.flags.js).
+
+Support well-known [symbols](#ecmascript-6-symbol) `@@match`, `@@replace`, `@@search` and `@@split`, modules [`es6.regexp.match`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.regexp.match.js), [`es6.regexp.replace`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.regexp.replace.js), [`es6.regexp.search`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.regexp.search.js) and [`es6.regexp.split`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.regexp.split.js).
+```
+[new] RegExp(pattern, flags?) -> regexp, ES6 fix: can alter flags (IE9+)
+ #flags -> str (IE9+)
+ #toString() -> str, ES6 fixes
+ #@@match(str) -> array | null
+ #@@replace(str, replacer) -> string
+ #@@search(str) -> index
+ #@@split(str, limit) -> array
+String
+ #match(tpl) -> var, ES6 fix for support @@match
+ #replace(tpl, replacer) -> var, ES6 fix for support @@replace
+ #search(tpl) -> var, ES6 fix for support @@search
+ #split(tpl, limit) -> var, ES6 fix for support @@split, some fixes for old engines
+```
+[*CommonJS entry points:*](#commonjs)
+```
+core-js/es6/regexp
+core-js/fn/regexp/constructor
+core-js(/library)/fn/regexp/flags
+core-js/fn/regexp/to-string
+core-js/fn/regexp/match
+core-js/fn/regexp/replace
+core-js/fn/regexp/search
+core-js/fn/regexp/split
+```
+[*Examples*](http://goo.gl/PiJxBD):
+```js
+RegExp(/./g, 'm'); // => /./m
+
+/foo/.flags; // => ''
+/foo/gim.flags; // => 'gim'
+
+'foo'.match({[Symbol.match]: _ => 1}); // => 1
+'foo'.replace({[Symbol.replace]: _ => 2}); // => 2
+'foo'.search({[Symbol.search]: _ => 3}); // => 3
+'foo'.split({[Symbol.split]: _ => 4}); // => 4
+
+RegExp.prototype.toString.call({source: 'foo', flags: 'bar'}); // => '/foo/bar'
+```
+#### ECMAScript 6: Number
+Module [`es6.number.constructor`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.number.constructor.js). `Number` constructor support binary and octal literals, [*example*](http://goo.gl/jRd6b3):
+```js
+Number('0b1010101'); // => 85
+Number('0o7654321'); // => 2054353
+```
+Modules [`es6.number.epsilon`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.number.epsilon.js), [`es6.number.is-finite`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.number.is-finite.js), [`es6.number.is-integer`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.number.is-integer.js), [`es6.number.is-nan`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.number.is-nan.js), [`es6.number.is-safe-integer`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.number.is-safe-integer.js), [`es6.number.max-safe-integer`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.number.max-safe-integer.js), [`es6.number.min-safe-integer`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.number.min-safe-integer.js), [`es6.number.parse-float`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.number.parse-float.js), [`es6.number.parse-int`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.number.parse-int.js), [`es6.number.to-fixed`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.number.to-fixed.js), [`es6.number.to-precision`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.number.to-precision.js), [`es6.parse-int`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.parse-int.js), [`es6.parse-float`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.parse-float.js).
+```js
+[new] Number(var) -> number | number object
+ .isFinite(num) -> bool
+ .isNaN(num) -> bool
+ .isInteger(num) -> bool
+ .isSafeInteger(num) -> bool
+ .parseFloat(str) -> num
+ .parseInt(str) -> int
+ .EPSILON -> num
+ .MAX_SAFE_INTEGER -> int
+ .MIN_SAFE_INTEGER -> int
+ #toFixed(digits) -> string, fixes
+ #toPrecision(precision) -> string, fixes
+parseFloat(str) -> num, fixes
+parseInt(str) -> int, fixes
+```
+[*CommonJS entry points:*](#commonjs)
+```
+core-js(/library)/es6/number
+core-js/es6/number/constructor
+core-js(/library)/fn/number/is-finite
+core-js(/library)/fn/number/is-nan
+core-js(/library)/fn/number/is-integer
+core-js(/library)/fn/number/is-safe-integer
+core-js(/library)/fn/number/parse-float
+core-js(/library)/fn/number/parse-int
+core-js(/library)/fn/number/epsilon
+core-js(/library)/fn/number/max-safe-integer
+core-js(/library)/fn/number/min-safe-integer
+core-js(/library)/fn/number/to-fixed
+core-js(/library)/fn/number/to-precision
+core-js(/library)/fn/parse-float
+core-js(/library)/fn/parse-int
+```
+#### ECMAScript 6: Math
+Modules [`es6.math.acosh`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.math.acosh.js), [`es6.math.asinh`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.math.asinh.js), [`es6.math.atanh`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.math.atanh.js), [`es6.math.cbrt`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.math.cbrt.js), [`es6.math.clz32`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.math.clz32.js), [`es6.math.cosh`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.math.cosh.js), [`es6.math.expm1`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.math.expm1.js), [`es6.math.fround`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.math.fround.js), [`es6.math.hypot`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.math.hypot.js), [`es6.math.imul`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.math.imul.js), [`es6.math.log10`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.math.log10.js), [`es6.math.log1p`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.math.log1p.js), [`es6.math.log2`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.math.log2.js), [`es6.math.sign`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.math.sign.js), [`es6.math.sinh`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.math.sinh.js), [`es6.math.tanh`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.math.tanh.js), [`es6.math.trunc`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.math.trunc.js).
+```js
+Math
+ .acosh(num) -> num
+ .asinh(num) -> num
+ .atanh(num) -> num
+ .cbrt(num) -> num
+ .clz32(num) -> uint
+ .cosh(num) -> num
+ .expm1(num) -> num
+ .fround(num) -> num
+ .hypot(...args) -> num
+ .imul(num, num) -> int
+ .log1p(num) -> num
+ .log10(num) -> num
+ .log2(num) -> num
+ .sign(num) -> 1 | -1 | 0 | -0 | NaN
+ .sinh(num) -> num
+ .tanh(num) -> num
+ .trunc(num) -> num
+```
+[*CommonJS entry points:*](#commonjs)
+```
+core-js(/library)/es6/math
+core-js(/library)/fn/math/acosh
+core-js(/library)/fn/math/asinh
+core-js(/library)/fn/math/atanh
+core-js(/library)/fn/math/cbrt
+core-js(/library)/fn/math/clz32
+core-js(/library)/fn/math/cosh
+core-js(/library)/fn/math/expm1
+core-js(/library)/fn/math/fround
+core-js(/library)/fn/math/hypot
+core-js(/library)/fn/math/imul
+core-js(/library)/fn/math/log1p
+core-js(/library)/fn/math/log10
+core-js(/library)/fn/math/log2
+core-js(/library)/fn/math/sign
+core-js(/library)/fn/math/sinh
+core-js(/library)/fn/math/tanh
+core-js(/library)/fn/math/trunc
+```
+#### ECMAScript 6: Date
+Modules [`es6.date.to-string`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.date.to-string.js), ES5 features with fixes: [`es6.date.now`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.date.now.js), [`es6.date.to-iso-string`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.date.to-iso-string.js), [`es6.date.to-json`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.date.to-json.js) and [`es6.date.to-primitive`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.date.to-primitive.js).
+```js
+Date
+ .now() -> int
+ #toISOString() -> string
+ #toJSON() -> string
+ #toString() -> string
+ #@@toPrimitive(hint) -> primitive
+```
+[*CommonJS entry points:*](#commonjs)
+```
+core-js/es6/date
+core-js/fn/date/to-string
+core-js(/library)/fn/date/now
+core-js(/library)/fn/date/to-iso-string
+core-js(/library)/fn/date/to-json
+core-js(/library)/fn/date/to-primitive
+```
+[*Example*](http://goo.gl/haeHLR):
+```js
+new Date(NaN).toString(); // => 'Invalid Date'
+```
+
+#### ECMAScript 6: Promise
+Module [`es6.promise`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.promise.js).
+```js
+new Promise(executor(resolve(var), reject(var))) -> promise
+ #then(resolved(var), rejected(var)) -> promise
+ #catch(rejected(var)) -> promise
+ .resolve(promise | var) -> promise
+ .reject(var) -> promise
+ .all(iterable) -> promise
+ .race(iterable) -> promise
+```
+[*CommonJS entry points:*](#commonjs)
+```
+core-js(/library)/es6/promise
+core-js(/library)/fn/promise
+```
+Basic [*example*](http://goo.gl/vGrtUC):
+```js
+function sleepRandom(time){
+ return new Promise(function(resolve, reject){
+ setTimeout(resolve, time * 1e3, 0 | Math.random() * 1e3);
+ });
+}
+
+console.log('Run'); // => Run
+sleepRandom(5).then(function(result){
+ console.log(result); // => 869, after 5 sec.
+ return sleepRandom(10);
+}).then(function(result){
+ console.log(result); // => 202, after 10 sec.
+}).then(function(){
+ console.log('immediately after'); // => immediately after
+ throw Error('Irror!');
+}).then(function(){
+ console.log('will not be displayed');
+}).catch(x => console.log(x)); // => => Error: Irror!
+```
+`Promise.resolve` and `Promise.reject` [*example*](http://goo.gl/vr8TN3):
+```js
+Promise.resolve(42).then(x => console.log(x)); // => 42
+Promise.reject(42).catch(x => console.log(x)); // => 42
+
+Promise.resolve($.getJSON('/data.json')); // => ES6 promise
+```
+`Promise.all` [*example*](http://goo.gl/RdoDBZ):
+```js
+Promise.all([
+ 'foo',
+ sleepRandom(5),
+ sleepRandom(15),
+ sleepRandom(10) // after 15 sec:
+]).then(x => console.log(x)); // => ['foo', 956, 85, 382]
+```
+`Promise.race` [*example*](http://goo.gl/L8ovkJ):
+```js
+function timeLimit(promise, time){
+ return Promise.race([promise, new Promise(function(resolve, reject){
+ setTimeout(reject, time * 1e3, Error('Await > ' + time + ' sec'));
+ })]);
+}
+
+timeLimit(sleepRandom(5), 10).then(x => console.log(x)); // => 853, after 5 sec.
+timeLimit(sleepRandom(15), 10).catch(x => console.log(x)); // Error: Await > 10 sec
+```
+ECMAScript 7 [async functions](https://tc39.github.io/ecmascript-asyncawait) [example](http://goo.gl/wnQS4j):
+```js
+var delay = time => new Promise(resolve => setTimeout(resolve, time))
+
+async function sleepRandom(time){
+ await delay(time * 1e3);
+ return 0 | Math.random() * 1e3;
+};
+async function sleepError(time, msg){
+ await delay(time * 1e3);
+ throw Error(msg);
+};
+
+(async () => {
+ try {
+ console.log('Run'); // => Run
+ console.log(await sleepRandom(5)); // => 936, after 5 sec.
+ var [a, b, c] = await Promise.all([
+ sleepRandom(5),
+ sleepRandom(15),
+ sleepRandom(10)
+ ]);
+ console.log(a, b, c); // => 210 445 71, after 15 sec.
+ await sleepError(5, 'Irror!');
+ console.log('Will not be displayed');
+ } catch(e){
+ console.log(e); // => Error: 'Irror!', after 5 sec.
+ }
+})();
+```
+
+##### Unhandled rejection tracking
+
+In Node.js, like in native implementation, available events [`unhandledRejection`](https://nodejs.org/api/process.html#process_event_unhandledrejection) and [`rejectionHandled`](https://nodejs.org/api/process.html#process_event_rejectionhandled):
+```js
+process.on('unhandledRejection', (reason, promise) => console.log('unhandled', reason, promise));
+process.on('rejectionHandled', (promise) => console.log('handled', promise));
+
+var p = Promise.reject(42);
+// unhandled 42 [object Promise]
+
+setTimeout(() => p.catch(_ => _), 1e3);
+// handled [object Promise]
+```
+In a browser on rejection, by default, you will see notify in the console, or you can add a custom handler and a handler on handling unhandled, [*example*](http://goo.gl/Wozskl):
+```js
+window.onunhandledrejection = e => console.log('unhandled', e.reason, e.promise);
+window.onrejectionhandled = e => console.log('handled', e.reason, e.promise);
+
+var p = Promise.reject(42);
+// unhandled 42 [object Promise]
+
+setTimeout(() => p.catch(_ => _), 1e3);
+// handled 42 [object Promise]
+```
+
+#### ECMAScript 6: Symbol
+Module [`es6.symbol`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.symbol.js).
+```js
+Symbol(description?) -> symbol
+ .hasInstance -> @@hasInstance
+ .isConcatSpreadable -> @@isConcatSpreadable
+ .iterator -> @@iterator
+ .match -> @@match
+ .replace -> @@replace
+ .search -> @@search
+ .species -> @@species
+ .split -> @@split
+ .toPrimitive -> @@toPrimitive
+ .toStringTag -> @@toStringTag
+ .unscopables -> @@unscopables
+ .for(key) -> symbol
+ .keyFor(symbol) -> key
+ .useSimple() -> void
+ .useSetter() -> void
+Object
+ .getOwnPropertySymbols(object) -> array
+```
+Also wrapped some methods for correct work with `Symbol` polyfill.
+```js
+Object
+ .create(proto | null, descriptors?) -> object
+ .defineProperty(target, key, desc) -> target
+ .defineProperties(target, descriptors) -> target
+ .getOwnPropertyDescriptor(var, key) -> desc | undefined
+ .getOwnPropertyNames(var) -> array
+ #propertyIsEnumerable(key) -> bool
+JSON
+ .stringify(target, replacer?, space?) -> string | undefined
+```
+[*CommonJS entry points:*](#commonjs)
+```
+core-js(/library)/es6/symbol
+core-js(/library)/fn/symbol
+core-js(/library)/fn/symbol/has-instance
+core-js(/library)/fn/symbol/is-concat-spreadable
+core-js(/library)/fn/symbol/iterator
+core-js(/library)/fn/symbol/match
+core-js(/library)/fn/symbol/replace
+core-js(/library)/fn/symbol/search
+core-js(/library)/fn/symbol/species
+core-js(/library)/fn/symbol/split
+core-js(/library)/fn/symbol/to-primitive
+core-js(/library)/fn/symbol/to-string-tag
+core-js(/library)/fn/symbol/unscopables
+core-js(/library)/fn/symbol/for
+core-js(/library)/fn/symbol/key-for
+```
+[*Basic example*](http://goo.gl/BbvWFc):
+```js
+var Person = (function(){
+ var NAME = Symbol('name');
+ function Person(name){
+ this[NAME] = name;
+ }
+ Person.prototype.getName = function(){
+ return this[NAME];
+ };
+ return Person;
+})();
+
+var person = new Person('Vasya');
+console.log(person.getName()); // => 'Vasya'
+console.log(person['name']); // => undefined
+console.log(person[Symbol('name')]); // => undefined, symbols are uniq
+for(var key in person)console.log(key); // => only 'getName', symbols are not enumerable
+```
+`Symbol.for` & `Symbol.keyFor` [*example*](http://goo.gl/0pdJjX):
+```js
+var symbol = Symbol.for('key');
+symbol === Symbol.for('key'); // true
+Symbol.keyFor(symbol); // 'key'
+```
+[*Example*](http://goo.gl/mKVOQJ) with methods for getting own object keys:
+```js
+var O = {a: 1};
+Object.defineProperty(O, 'b', {value: 2});
+O[Symbol('c')] = 3;
+Object.keys(O); // => ['a']
+Object.getOwnPropertyNames(O); // => ['a', 'b']
+Object.getOwnPropertySymbols(O); // => [Symbol(c)]
+Reflect.ownKeys(O); // => ['a', 'b', Symbol(c)]
+```
+##### Caveats when using `Symbol` polyfill:
+
+* We can't add new primitive type, `Symbol` returns object.
+* `Symbol.for` and `Symbol.keyFor` can't be shimmed cross-realm.
+* By default, to hide the keys, `Symbol` polyfill defines setter in `Object.prototype`. For this reason, uncontrolled creation of symbols can cause memory leak and the `in` operator is not working correctly with `Symbol` polyfill: `Symbol() in {} // => true`.
+
+You can disable defining setters in `Object.prototype`. [Example](http://goo.gl/N5UD7J):
+```js
+Symbol.useSimple();
+var s1 = Symbol('s1')
+ , o1 = {};
+o1[s1] = true;
+for(var key in o1)console.log(key); // => 'Symbol(s1)_t.qamkg9f3q', w/o native Symbol
+
+Symbol.useSetter();
+var s2 = Symbol('s2')
+ , o2 = {};
+o2[s2] = true;
+for(var key in o2)console.log(key); // nothing
+```
+* Currently, `core-js` not adds setters to `Object.prototype` for well-known symbols for correct work something like `Symbol.iterator in foo`. It can cause problems with their enumerability.
+* Some problems possible with environment exotic objects (for example, IE `localStorage`).
+
+#### ECMAScript 6: Collections
+`core-js` uses native collections in most case, just fixes methods / constructor, if it's required, and in old environment uses fast polyfill (O(1) lookup).
+#### Map
+Module [`es6.map`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.map.js).
+```js
+new Map(iterable (entries) ?) -> map
+ #clear() -> void
+ #delete(key) -> bool
+ #forEach(fn(val, key, @), that) -> void
+ #get(key) -> val
+ #has(key) -> bool
+ #set(key, val) -> @
+ #size -> uint
+ #values() -> iterator
+ #keys() -> iterator
+ #entries() -> iterator
+ #@@iterator() -> iterator (entries)
+```
+[*CommonJS entry points:*](#commonjs)
+```
+core-js(/library)/es6/map
+core-js(/library)/fn/map
+```
+[*Examples*](http://goo.gl/GWR7NI):
+```js
+var a = [1];
+
+var map = new Map([['a', 1], [42, 2]]);
+map.set(a, 3).set(true, 4);
+
+console.log(map.size); // => 4
+console.log(map.has(a)); // => true
+console.log(map.has([1])); // => false
+console.log(map.get(a)); // => 3
+map.forEach(function(val, key){
+ console.log(val); // => 1, 2, 3, 4
+ console.log(key); // => 'a', 42, [1], true
+});
+map.delete(a);
+console.log(map.size); // => 3
+console.log(map.get(a)); // => undefined
+console.log(Array.from(map)); // => [['a', 1], [42, 2], [true, 4]]
+
+var map = new Map([['a', 1], ['b', 2], ['c', 3]]);
+
+for(var [key, val] of map){
+ console.log(key); // => 'a', 'b', 'c'
+ console.log(val); // => 1, 2, 3
+}
+for(var val of map.values())console.log(val); // => 1, 2, 3
+for(var key of map.keys())console.log(key); // => 'a', 'b', 'c'
+for(var [key, val] of map.entries()){
+ console.log(key); // => 'a', 'b', 'c'
+ console.log(val); // => 1, 2, 3
+}
+```
+#### Set
+Module [`es6.set`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.set.js).
+```js
+new Set(iterable?) -> set
+ #add(key) -> @
+ #clear() -> void
+ #delete(key) -> bool
+ #forEach(fn(el, el, @), that) -> void
+ #has(key) -> bool
+ #size -> uint
+ #values() -> iterator
+ #keys() -> iterator
+ #entries() -> iterator
+ #@@iterator() -> iterator (values)
+```
+[*CommonJS entry points:*](#commonjs)
+```
+core-js(/library)/es6/set
+core-js(/library)/fn/set
+```
+[*Examples*](http://goo.gl/bmhLwg):
+```js
+var set = new Set(['a', 'b', 'a', 'c']);
+set.add('d').add('b').add('e');
+console.log(set.size); // => 5
+console.log(set.has('b')); // => true
+set.forEach(function(it){
+ console.log(it); // => 'a', 'b', 'c', 'd', 'e'
+});
+set.delete('b');
+console.log(set.size); // => 4
+console.log(set.has('b')); // => false
+console.log(Array.from(set)); // => ['a', 'c', 'd', 'e']
+
+var set = new Set([1, 2, 3, 2, 1]);
+
+for(var val of set)console.log(val); // => 1, 2, 3
+for(var val of set.values())console.log(val); // => 1, 2, 3
+for(var key of set.keys())console.log(key); // => 1, 2, 3
+for(var [key, val] of set.entries()){
+ console.log(key); // => 1, 2, 3
+ console.log(val); // => 1, 2, 3
+}
+```
+#### WeakMap
+Module [`es6.weak-map`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.weak-map.js).
+```js
+new WeakMap(iterable (entries) ?) -> weakmap
+ #delete(key) -> bool
+ #get(key) -> val
+ #has(key) -> bool
+ #set(key, val) -> @
+```
+[*CommonJS entry points:*](#commonjs)
+```
+core-js(/library)/es6/weak-map
+core-js(/library)/fn/weak-map
+```
+[*Examples*](http://goo.gl/SILXyw):
+```js
+var a = [1]
+ , b = [2]
+ , c = [3];
+
+var wmap = new WeakMap([[a, 1], [b, 2]]);
+wmap.set(c, 3).set(b, 4);
+console.log(wmap.has(a)); // => true
+console.log(wmap.has([1])); // => false
+console.log(wmap.get(a)); // => 1
+wmap.delete(a);
+console.log(wmap.get(a)); // => undefined
+
+// Private properties store:
+var Person = (function(){
+ var names = new WeakMap;
+ function Person(name){
+ names.set(this, name);
+ }
+ Person.prototype.getName = function(){
+ return names.get(this);
+ };
+ return Person;
+})();
+
+var person = new Person('Vasya');
+console.log(person.getName()); // => 'Vasya'
+for(var key in person)console.log(key); // => only 'getName'
+```
+#### WeakSet
+Module [`es6.weak-set`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.weak-set.js).
+```js
+new WeakSet(iterable?) -> weakset
+ #add(key) -> @
+ #delete(key) -> bool
+ #has(key) -> bool
+```
+[*CommonJS entry points:*](#commonjs)
+```
+core-js(/library)/es6/weak-set
+core-js(/library)/fn/weak-set
+```
+[*Examples*](http://goo.gl/TdFbEx):
+```js
+var a = [1]
+ , b = [2]
+ , c = [3];
+
+var wset = new WeakSet([a, b, a]);
+wset.add(c).add(b).add(c);
+console.log(wset.has(b)); // => true
+console.log(wset.has([2])); // => false
+wset.delete(b);
+console.log(wset.has(b)); // => false
+```
+##### Caveats when using collections polyfill:
+
+* Weak-collections polyfill stores values as hidden properties of keys. It works correct and not leak in most cases. However, it is desirable to store a collection longer than its keys.
+
+#### ECMAScript 6: Typed Arrays
+Implementations and fixes `ArrayBuffer`, `DataView`, typed arrays constructors, static and prototype methods. Typed Arrays work only in environments with support descriptors (IE9+), `ArrayBuffer` and `DataView` should work anywhere.
+
+Modules [`es6.typed.array-buffer`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.typed.array-buffer.js), [`es6.typed.data-view`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.typed.data-view.js), [`es6.typed.int8-array`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.typed.int8-array.js), [`es6.typed.uint8-array`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.typed.uint8-array.js), [`es6.typed.uint8-clamped-array`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.typed.uint8-clamped-array.js), [`es6.typed.int16-array`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.typed.int16-array.js), [`es6.typed.uint16-array`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.typed.uint16-array.js), [`es6.typed.int32-array`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.typed.int32-array.js), [`es6.typed.uint32-array`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.typed.uint32-array.js), [`es6.typed.float32-array`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.typed.float32-array.js) and [`es6.typed.float64-array`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.typed.float64-array.js).
+```js
+new ArrayBuffer(length) -> buffer
+ .isView(var) -> bool
+ #slice(start = 0, end = @length) -> buffer
+ #byteLength -> uint
+
+new DataView(buffer, byteOffset = 0, byteLength = buffer.byteLength - byteOffset) -> view
+ #getInt8(offset) -> int8
+ #getUint8(offset) -> uint8
+ #getInt16(offset, littleEndian = false) -> int16
+ #getUint16(offset, littleEndian = false) -> uint16
+ #getInt32(offset, littleEndian = false) -> int32
+ #getUint32(offset, littleEndian = false) -> uint32
+ #getFloat32(offset, littleEndian = false) -> float32
+ #getFloat64(offset, littleEndian = false) -> float64
+ #setInt8(offset, value) -> void
+ #setUint8(offset, value) -> void
+ #setInt16(offset, value, littleEndian = false) -> void
+ #setUint16(offset, value, littleEndian = false) -> void
+ #setInt32(offset, value, littleEndian = false) -> void
+ #setUint32(offset, value, littleEndian = false) -> void
+ #setFloat32(offset, value, littleEndian = false) -> void
+ #setFloat64(offset, value, littleEndian = false) -> void
+ #buffer -> buffer
+ #byteLength -> uint
+ #byteOffset -> uint
+
+{
+ Int8Array,
+ Uint8Array,
+ Uint8ClampedArray,
+ Int16Array,
+ Uint16Array,
+ Int32Array,
+ Uint32Array,
+ Float32Array,
+ Float64Array
+}
+ new %TypedArray%(length) -> typed
+ new %TypedArray%(typed) -> typed
+ new %TypedArray%(arrayLike) -> typed
+ new %TypedArray%(iterable) -> typed
+ new %TypedArray%(buffer, byteOffset = 0, length = (buffer.byteLength - byteOffset) / @BYTES_PER_ELEMENT) -> typed
+ .BYTES_PER_ELEMENT -> uint
+ .from(arrayLike | iterable, mapFn(val, index)?, that) -> typed
+ .of(...args) -> typed
+ #BYTES_PER_ELEMENT -> uint
+ #copyWithin(target = 0, start = 0, end = @length) -> @
+ #every(fn(val, index, @), that) -> bool
+ #fill(val, start = 0, end = @length) -> @
+ #filter(fn(val, index, @), that) -> typed
+ #find(fn(val, index, @), that) -> val
+ #findIndex(fn(val, index, @), that) -> index
+ #forEach(fn(val, index, @), that) -> void
+ #indexOf(var, from?) -> int
+ #includes(var, from?) -> bool
+ #join(string = ',') -> string
+ #lastIndexOf(var, from?) -> int
+ #map(fn(val, index, @), that) -> typed
+ #reduce(fn(memo, val, index, @), memo?) -> var
+ #reduceRight(fn(memo, val, index, @), memo?) -> var
+ #reverse() -> @
+ #set(arrayLike, offset = 0) -> void
+ #slice(start = 0, end = @length) -> typed
+ #some(fn(val, index, @), that) -> bool
+ #sort(fn(a, b)?) -> @
+ #subarray(start = 0, end = @length) -> typed
+ #toString() -> string
+ #toLocaleString() -> string
+ #values() -> iterator
+ #keys() -> iterator
+ #entries() -> iterator
+ #@@iterator() -> iterator (values)
+ #buffer -> buffer
+ #byteLength -> uint
+ #byteOffset -> uint
+ #length -> uint
+```
+[*CommonJS entry points:*](#commonjs)
+```
+core-js(/library)/es6/typed
+core-js(/library)/fn/typed
+core-js(/library)/fn/typed/array-buffer
+core-js(/library)/fn/typed/data-view
+core-js(/library)/fn/typed/int8-array
+core-js(/library)/fn/typed/uint8-array
+core-js(/library)/fn/typed/uint8-clamped-array
+core-js(/library)/fn/typed/int16-array
+core-js(/library)/fn/typed/uint16-array
+core-js(/library)/fn/typed/int32-array
+core-js(/library)/fn/typed/uint32-array
+core-js(/library)/fn/typed/float32-array
+core-js(/library)/fn/typed/float64-array
+```
+[*Examples*](http://goo.gl/yla75z):
+```js
+new Int32Array(4); // => [0, 0, 0, 0]
+new Uint8ClampedArray([1, 2, 3, 666]); // => [1, 2, 3, 255]
+new Float32Array(new Set([1, 2, 3, 2, 1])); // => [1, 2, 3]
+
+var buffer = new ArrayBuffer(8);
+var view = new DataView(buffer);
+view.setFloat64(0, 123.456, true);
+new Uint8Array(buffer.slice(4)); // => [47, 221, 94, 64]
+
+Int8Array.of(1, 1.5, 5.7, 745); // => [1, 1, 5, -23]
+Uint8Array.from([1, 1.5, 5.7, 745]); // => [1, 1, 5, 233]
+
+var typed = new Uint8Array([1, 2, 3]);
+
+var a = typed.slice(1); // => [2, 3]
+typed.buffer === a.buffer; // => false
+var b = typed.subarray(1); // => [2, 3]
+typed.buffer === b.buffer; // => true
+
+typed.filter(it => it % 2); // => [1, 3]
+typed.map(it => it * 1.5); // => [1, 3, 4]
+
+for(var val of typed)console.log(val); // => 1, 2, 3
+for(var val of typed.values())console.log(val); // => 1, 2, 3
+for(var key of typed.keys())console.log(key); // => 0, 1, 2
+for(var [key, val] of typed.entries()){
+ console.log(key); // => 0, 1, 2
+ console.log(val); // => 1, 2, 3
+}
+```
+##### Caveats when using typed arrays:
+
+* Typed Arrays polyfills works completely how should work by the spec, but because of internal use getter / setters on each instance, is slow and consumes significant memory. However, typed arrays polyfills required mainly for IE9 (and for `Uint8ClampedArray` in IE10 and early IE11), all modern engines have native typed arrays and requires only constructors fixes and methods.
+* The current version hasn't special entry points for methods, they can be added only with constructors. It can be added in the future.
+* In the `library` version we can't pollute native prototypes, so prototype methods available as constructors static.
+
+#### ECMAScript 6: Reflect
+Modules [`es6.reflect.apply`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.reflect.apply.js), [`es6.reflect.construct`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.reflect.construct.js), [`es6.reflect.define-property`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.reflect.define-property.js), [`es6.reflect.delete-property`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.reflect.delete-property.js), [`es6.reflect.enumerate`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.reflect.enumerate.js), [`es6.reflect.get`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.reflect.get.js), [`es6.reflect.get-own-property-descriptor`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.reflect.get-own-property-descriptor.js), [`es6.reflect.get-prototype-of`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.reflect.get-prototype-of.js), [`es6.reflect.has`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.reflect.has.js), [`es6.reflect.is-extensible`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.reflect.is-extensible.js), [`es6.reflect.own-keys`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.reflect.own-keys.js), [`es6.reflect.prevent-extensions`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.reflect.prevent-extensions.js), [`es6.reflect.set`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.reflect.set.js), [`es6.reflect.set-prototype-of`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es6.reflect.set-prototype-of.js).
+```js
+Reflect
+ .apply(target, thisArgument, argumentsList) -> var
+ .construct(target, argumentsList, newTarget?) -> object
+ .defineProperty(target, propertyKey, attributes) -> bool
+ .deleteProperty(target, propertyKey) -> bool
+ .enumerate(target) -> iterator (deprecated and will be removed from the next major release)
+ .get(target, propertyKey, receiver?) -> var
+ .getOwnPropertyDescriptor(target, propertyKey) -> desc
+ .getPrototypeOf(target) -> object | null
+ .has(target, propertyKey) -> bool
+ .isExtensible(target) -> bool
+ .ownKeys(target) -> array
+ .preventExtensions(target) -> bool
+ .set(target, propertyKey, V, receiver?) -> bool
+ .setPrototypeOf(target, proto) -> bool (required __proto__ - IE11+)
+```
+[*CommonJS entry points:*](#commonjs)
+```
+core-js(/library)/es6/reflect
+core-js(/library)/fn/reflect
+core-js(/library)/fn/reflect/apply
+core-js(/library)/fn/reflect/construct
+core-js(/library)/fn/reflect/define-property
+core-js(/library)/fn/reflect/delete-property
+core-js(/library)/fn/reflect/enumerate (deprecated and will be removed from the next major release)
+core-js(/library)/fn/reflect/get
+core-js(/library)/fn/reflect/get-own-property-descriptor
+core-js(/library)/fn/reflect/get-prototype-of
+core-js(/library)/fn/reflect/has
+core-js(/library)/fn/reflect/is-extensible
+core-js(/library)/fn/reflect/own-keys
+core-js(/library)/fn/reflect/prevent-extensions
+core-js(/library)/fn/reflect/set
+core-js(/library)/fn/reflect/set-prototype-of
+```
+[*Examples*](http://goo.gl/gVT0cH):
+```js
+var O = {a: 1};
+Object.defineProperty(O, 'b', {value: 2});
+O[Symbol('c')] = 3;
+Reflect.ownKeys(O); // => ['a', 'b', Symbol(c)]
+
+function C(a, b){
+ this.c = a + b;
+}
+
+var instance = Reflect.construct(C, [20, 22]);
+instance.c; // => 42
+```
+### ECMAScript 7+ proposals
+[The TC39 process.](https://tc39.github.io/process-document/)
+
+[*CommonJS entry points:*](#commonjs)
+```
+core-js(/library)/es7
+core-js(/library)/es7/array
+core-js(/library)/es7/string
+core-js(/library)/es7/map
+core-js(/library)/es7/set
+core-js(/library)/es7/math
+core-js(/library)/es7/system
+core-js(/library)/es7/error
+core-js(/library)/es7/reflect
+```
+`core-js/stage/4` entry point contains only stage 4 proposals, `core-js/stage/3` - stage 3 and stage 4, etc.
+##### Stage 4:
+* `{Array, %TypedArray%}#includes` [proposal](https://github.com/tc39/Array.prototype.includes) - module [`es7.array.includes`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es7.array.includes.js), `%TypedArray%` version in modules from [this section](#ecmascript-6-typed-arrays).
+* `Object#__(define|lookup)[GS]etter__`, [annex B ES2017](https://github.com/tc39/ecma262/pull/381), but we haven't special namespace for that - modules [`es7.object.define-setter`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es7.object.define-setter.js), [`es7.object.define-getter`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es7.object.define-getter.js), [`es7.object.lookup-setter`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es7.object.lookup-setter.js) and [`es7.object.lookup-getter`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es7.object.lookup-getter.js).
+
+[*CommonJS entry points:*](#commonjs)
+```js
+core-js(/library)/stage/4
+core-js(/library)/fn/array/includes
+core-js(/library)/fn/object/define-getter
+core-js(/library)/fn/object/define-setter
+core-js(/library)/fn/object/lookup-getter
+core-js(/library)/fn/object/lookup-setter
+```
+
+##### Stage 3:
+* `Object.values`, `Object.entries` [proposal](https://github.com/tc39/proposal-object-values-entries) - modules [`es7.object.values`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es7.object.values.js), [`es7.object.entries`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es7.object.entries.js)
+* `Object.getOwnPropertyDescriptors` [proposal](https://github.com/tc39/proposal-object-getownpropertydescriptors) - module [`es7.object.get-own-property-descriptors`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es7.object.get-own-property-descriptors.js)
+* `String#padStart`, `String#padEnd` [proposal](https://github.com/tc39/proposal-string-pad-start-end) - modules [`es7.string.pad-left`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es7.string.pad-left.js), [`es7.string.pad-right`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es7.string.pad-right.js)
+
+[*CommonJS entry points:*](#commonjs)
+```js
+core-js(/library)/stage/3
+core-js(/library)/fn/object/values
+core-js(/library)/fn/object/entries
+core-js(/library)/fn/string/pad-start
+core-js(/library)/fn/string/pad-end
+core-js(/library)/fn/string/virtual/pad-start
+core-js(/library)/fn/string/virtual/pad-end
+```
+
+##### Stage 2:
+None.
+
+[*CommonJS entry points:*](#commonjs)
+```js
+core-js(/library)/stage/2
+```
+
+##### Stage 1:
+* `String#trimLeft`, `String#trimRight` / `String#trimStart`, `String#trimEnd` [proposal](https://github.com/sebmarkbage/ecmascript-string-left-right-trim) - modules [`es7.string.trim-left`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es7.string.trim-right.js), [`es7.string.trim-right`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es7.string.trim-right.js)
+* `String#matchAll` [proposal](https://github.com/tc39/String.prototype.matchAll) - module [`es7.string.match-all`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es7.string.match-all.js)
+* `System.global` [proposal](https://github.com/tc39/proposal-global) - module [`es7.system.global`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es7.system.global.js)
+
+[*CommonJS entry points:*](#commonjs)
+```js
+core-js(/library)/stage/1
+core-js(/library)/fn/string/trim-start
+core-js(/library)/fn/string/trim-end
+core-js(/library)/fn/string/trim-left
+core-js(/library)/fn/string/trim-right
+core-js(/library)/fn/string/match-all
+core-js(/library)/fn/string/virtual/trim-start
+core-js(/library)/fn/string/virtual/trim-end
+core-js(/library)/fn/string/virtual/trim-left
+core-js(/library)/fn/string/virtual/trim-right
+core-js(/library)/fn/string/virtual/match-all
+core-js(/library)/fn/system/global
+```
+
+##### Stage 0:
+* `String#at` [proposal](https://github.com/mathiasbynens/String.prototype.at) - module [`es7.string.at`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es7.string.at.js)
+* `Map#toJSON`, `Set#toJSON` [proposal](https://github.com/DavidBruant/Map-Set.prototype.toJSON) - modules [`es7.map.to-json`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es7.map.to-json.js), [`es7.set.to-json`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es7.set.to-json.js)
+* `Error.isError` [proposal](https://github.com/ljharb/proposal-is-error) - module [`es7.error.is-error`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es7.error.is-error.js)
+* `Math.{iaddh, isubh, imulh, umulh}` [proposal](https://gist.github.com/BrendanEich/4294d5c212a6d2254703) - modules [`es7.math.iaddh`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es7.math.iaddh.js), [`es7.math.isubh`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es7.math.isubh.js), [`es7.math.imulh`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es7.math.imulh.js) and [`es7.math.umulh`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es7.math.umulh.js).
+
+[*CommonJS entry points:*](#commonjs)
+```js
+core-js(/library)/stage/0
+core-js(/library)/fn/string/at
+core-js(/library)/fn/string/virtual/at
+core-js(/library)/fn/object/get-own-property-descriptors
+core-js(/library)/fn/map
+core-js(/library)/fn/set
+core-js(/library)/fn/error/is-error
+core-js(/library)/fn/math/iaddh
+core-js(/library)/fn/math/isubh
+core-js(/library)/fn/math/imulh
+core-js(/library)/fn/math/umulh
+```
+
+##### Pre-stage 0 proposals:
+* `Reflect` metadata [proposal](https://github.com/jonathandturner/decorators/blob/master/specs/metadata.md) - modules [`es7.reflect.define-metadata`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es7.reflect.define-metadata.js), [`es7.reflect.delete-metadata`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es7.reflect.delete-metadata.js), [`es7.reflect.get-metadata`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es7.reflect.get-metadata.js), [`es7.reflect.get-metadata-keys`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es7.reflect.get-metadata-keys.js), [`es7.reflect.get-own-metadata`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es7.reflect.get-own-metadata.js), [`es7.reflect.get-own-metadata-keys`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es7.reflect.get-own-metadata-keys.js), [`es7.reflect.has-metadata`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es7.reflect.has-metadata.js), [`es7.reflect.has-own-metadata`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es7.reflect.has-own-metadata.js) and [`es7.reflect.metadata`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/es7.reflect.metadata.js).
+
+[*CommonJS entry points:*](#commonjs)
+```js
+core-js(/library)/stage/pre
+core-js(/library)/fn/reflect/define-metadata
+core-js(/library)/fn/reflect/delete-metadata
+core-js(/library)/fn/reflect/get-metadata
+core-js(/library)/fn/reflect/get-metadata-keys
+core-js(/library)/fn/reflect/get-own-metadata
+core-js(/library)/fn/reflect/get-own-metadata-keys
+core-js(/library)/fn/reflect/has-metadata
+core-js(/library)/fn/reflect/has-own-metadata
+core-js(/library)/fn/reflect/metadata
+```
+
+```js
+Array
+ #includes(var, from?) -> bool
+String
+ #at(index) -> string
+ #padStart(length, fillStr = ' ') -> string
+ #padEnd(length, fillStr = ' ') -> string
+ #trimLeft() -> string
+ #trimRight() -> string
+ #trimStart() -> string
+ #trimEnd() -> string
+ #marchAll(regexp) -> iterator
+Object
+ .values(object) -> array
+ .entries(object) -> array
+ .getOwnPropertyDescriptors(object) -> object
+ #__defineSetter__(key, fn) -> void
+ #__defineGetter__(key, fn) -> void
+ #__lookupSetter__(key) -> fn | void
+ #__lookupGetter__(key) -> fn | void
+RegExp
+ .escape(str) -> str
+Map
+ #toJSON() -> array
+Set
+ #toJSON() -> array
+System
+ .global -> object
+Error
+ .isError(it) -> bool
+Math
+ .iaddh(lo0, hi0, lo1, hi1) -> int32
+ .isubh(lo0, hi0, lo1, hi1) -> int32
+ .imulh(a, b) -> int32
+ .umulh(a, b) -> uint32
+Reflect
+ .defineMetadata(metadataKey, metadataValue, target, propertyKey?) -> void
+ .getMetadata(metadataKey, target, propertyKey?) -> var
+ .getOwnMetadata(metadataKey, target, propertyKey?) -> var
+ .hasMetadata(metadataKey, target, propertyKey?) -> bool
+ .hasOwnMetadata(metadataKey, target, propertyKey?) -> bool
+ .deleteMetadata(metadataKey, target, propertyKey?) -> bool
+ .getMetadataKeys(target, propertyKey?) -> array
+ .getOwnMetadataKeys(target, propertyKey?) -> array
+ .metadata(metadataKey, metadataValue) -> decorator(target, targetKey?) -> void
+```
+[*Examples*](http://goo.gl/vwciqF):
+```js
+[1, 2, 3].includes(2); // => true
+[1, 2, 3].includes(4); // => false
+[1, 2, 3].includes(2, 2); // => false
+
+[NaN].indexOf(NaN); // => -1
+[NaN].includes(NaN); // => true
+Array(1).indexOf(undefined); // => -1
+Array(1).includes(undefined); // => true
+
+'a𠮷b'.at(1); // => '𠮷'
+'a𠮷b'.at(1).length; // => 2
+
+'hello'.padStart(10); // => ' hello'
+'hello'.padStart(10, '1234'); // => '12341hello'
+'hello'.padEnd(10); // => 'hello '
+'hello'.padEnd(10, '1234'); // => 'hello12341'
+
+' hello '.trimLeft(); // => 'hello '
+' hello '.trimRight(); // => ' hello'
+
+for(let [_, d, D] of '1111a2b3cccc'.matchAll(/(\d)(\D)/)){
+ console.log(d, D); // => 1 a, 2 b, 3 c
+}
+
+Object.values({a: 1, b: 2, c: 3}); // => [1, 2, 3]
+Object.entries({a: 1, b: 2, c: 3}); // => [['a', 1], ['b', 2], ['c', 3]]
+
+// Shallow object cloning with prototype and descriptors:
+var copy = Object.create(Object.getPrototypeOf(O), Object.getOwnPropertyDescriptors(O));
+// Mixin:
+Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
+
+JSON.stringify(new Map([['a', 'b'], ['c', 'd']])); // => '[["a","b"],["c","d"]]'
+JSON.stringify(new Set([1, 2, 3, 2, 1])); // => '[1,2,3]'
+
+System.global.Array === Array; // => true
+
+Error.isError(new TypeError); // => true
+
+var O = {};
+Reflect.defineMetadata('foo', 'bar', O);
+Reflect.ownKeys(O); // => []
+Reflect.getOwnMetadataKeys(O); // => ['foo']
+Reflect.getOwnMetadata('foo', O); // => 'bar'
+```
+### Web standards
+[*CommonJS entry points:*](#commonjs)
+```js
+core-js(/library)/web
+```
+#### setTimeout / setInterval
+Module [`web.timers`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/web.timers.js). Additional arguments fix for IE9-.
+```js
+setTimeout(fn(...args), time, ...args) -> id
+setInterval(fn(...args), time, ...args) -> id
+```
+[*CommonJS entry points:*](#commonjs)
+```js
+core-js(/library)/web/timers
+core-js(/library)/fn/set-timeout
+core-js(/library)/fn/set-interval
+```
+```js
+// Before:
+setTimeout(log.bind(null, 42), 1000);
+// After:
+setTimeout(log, 1000, 42);
+```
+#### setImmediate
+Module [`web.immediate`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/web.immediate.js). [`setImmediate` proposal](https://developer.mozilla.org/en-US/docs/Web/API/Window.setImmediate) polyfill.
+```js
+setImmediate(fn(...args), ...args) -> id
+clearImmediate(id) -> void
+```
+[*CommonJS entry points:*](#commonjs)
+```js
+core-js(/library)/web/immediate
+core-js(/library)/fn/set-immediate
+core-js(/library)/fn/clear-immediate
+```
+[*Examples*](http://goo.gl/6nXGrx):
+```js
+setImmediate(function(arg1, arg2){
+ console.log(arg1, arg2); // => Message will be displayed with minimum delay
+}, 'Message will be displayed', 'with minimum delay');
+
+clearImmediate(setImmediate(function(){
+ console.log('Message will not be displayed');
+}));
+```
+#### Iterable DOM collections
+Some DOM collections should have [iterable interface](https://heycam.github.io/webidl/#idl-iterable) or should be [inherited from `Array`](https://heycam.github.io/webidl/#LegacyArrayClass). That mean they should have `keys`, `values`, `entries` and `@@iterator` methods for iteration. So add them. Module [`web.dom.iterable`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/web.dom.iterable.js):
+```js
+{
+ NodeList,
+ DOMTokenList,
+ MediaList,
+ StyleSheetList,
+ CSSRuleList
+}
+ #values() -> iterator
+ #keys() -> iterator
+ #entries() -> iterator
+ #@@iterator() -> iterator (values)
+```
+[*CommonJS entry points:*](#commonjs)
+```js
+core-js(/library)/web/dom-collections
+core-js(/library)/fn/dom-collections/iterator
+```
+[*Examples*](http://goo.gl/lfXVFl):
+```js
+for(var {id} of document.querySelectorAll('*')){
+ if(id)console.log(id);
+}
+
+for(var [index, {id}] of document.querySelectorAll('*').entries()){
+ if(id)console.log(index, id);
+}
+```
+### Non-standard
+[*CommonJS entry points:*](#commonjs)
+```js
+core-js(/library)/core
+```
+#### Object
+Modules [`core.object.is-object`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/core.object.is-object.js), [`core.object.classof`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/core.object.classof.js), [`core.object.define`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/core.object.define.js), [`core.object.make`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/core.object.make.js).
+```js
+Object
+ .isObject(var) -> bool
+ .classof(var) -> string
+ .define(target, mixin) -> target
+ .make(proto | null, mixin?) -> object
+```
+
+[*CommonJS entry points:*](#commonjs)
+```js
+core-js(/library)/core/object
+core-js(/library)/fn/object/is-object
+core-js(/library)/fn/object/define
+core-js(/library)/fn/object/make
+```
+Object classify [*examples*](http://goo.gl/YZQmGo):
+```js
+Object.isObject({}); // => true
+Object.isObject(isNaN); // => true
+Object.isObject(null); // => false
+
+var classof = Object.classof;
+
+classof(null); // => 'Null'
+classof(undefined); // => 'Undefined'
+classof(1); // => 'Number'
+classof(true); // => 'Boolean'
+classof('string'); // => 'String'
+classof(Symbol()); // => 'Symbol'
+
+classof(new Number(1)); // => 'Number'
+classof(new Boolean(true)); // => 'Boolean'
+classof(new String('string')); // => 'String'
+
+var fn = function(){}
+ , list = (function(){return arguments})(1, 2, 3);
+
+classof({}); // => 'Object'
+classof(fn); // => 'Function'
+classof([]); // => 'Array'
+classof(list); // => 'Arguments'
+classof(/./); // => 'RegExp'
+classof(new TypeError); // => 'Error'
+
+classof(new Set); // => 'Set'
+classof(new Map); // => 'Map'
+classof(new WeakSet); // => 'WeakSet'
+classof(new WeakMap); // => 'WeakMap'
+classof(new Promise(fn)); // => 'Promise'
+
+classof([].values()); // => 'Array Iterator'
+classof(new Set().values()); // => 'Set Iterator'
+classof(new Map().values()); // => 'Map Iterator'
+
+classof(Math); // => 'Math'
+classof(JSON); // => 'JSON'
+
+function Example(){}
+Example.prototype[Symbol.toStringTag] = 'Example';
+
+classof(new Example); // => 'Example'
+```
+`Object.define` and `Object.make` [*examples*](http://goo.gl/rtpD5Z):
+```js
+// Before:
+Object.defineProperty(target, 'c', {
+ enumerable: true,
+ configurable: true,
+ get: function(){
+ return this.a + this.b;
+ }
+});
+
+// After:
+Object.define(target, {
+ get c(){
+ return this.a + this.b;
+ }
+});
+
+// Shallow object cloning with prototype and descriptors:
+var copy = Object.make(Object.getPrototypeOf(src), src);
+
+// Simple inheritance:
+function Vector2D(x, y){
+ this.x = x;
+ this.y = y;
+}
+Object.define(Vector2D.prototype, {
+ get xy(){
+ return Math.hypot(this.x, this.y);
+ }
+});
+function Vector3D(x, y, z){
+ Vector2D.apply(this, arguments);
+ this.z = z;
+}
+Vector3D.prototype = Object.make(Vector2D.prototype, {
+ constructor: Vector3D,
+ get xyz(){
+ return Math.hypot(this.x, this.y, this.z);
+ }
+});
+
+var vector = new Vector3D(9, 12, 20);
+console.log(vector.xy); // => 15
+console.log(vector.xyz); // => 25
+vector.y++;
+console.log(vector.xy); // => 15.811388300841896
+console.log(vector.xyz); // => 25.495097567963924
+```
+#### Dict
+Module [`core.dict`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/core.dict.js). Based on [TC39 discuss](https://github.com/rwaldron/tc39-notes/blob/master/es6/2012-11/nov-29.md#collection-apis-review) / [strawman](http://wiki.ecmascript.org/doku.php?id=harmony:modules_standard#dictionaries).
+```js
+[new] Dict(iterable (entries) | object ?) -> dict
+ .isDict(var) -> bool
+ .values(object) -> iterator
+ .keys(object) -> iterator
+ .entries(object) -> iterator (entries)
+ .has(object, key) -> bool
+ .get(object, key) -> val
+ .set(object, key, value) -> object
+ .forEach(object, fn(val, key, @), that) -> void
+ .map(object, fn(val, key, @), that) -> new @
+ .mapPairs(object, fn(val, key, @), that) -> new @
+ .filter(object, fn(val, key, @), that) -> new @
+ .some(object, fn(val, key, @), that) -> bool
+ .every(object, fn(val, key, @), that) -> bool
+ .find(object, fn(val, key, @), that) -> val
+ .findKey(object, fn(val, key, @), that) -> key
+ .keyOf(object, var) -> key
+ .includes(object, var) -> bool
+ .reduce(object, fn(memo, val, key, @), memo?) -> var
+```
+
+[*CommonJS entry points:*](#commonjs)
+```js
+core-js(/library)/core/dict
+core-js(/library)/fn/dict
+```
+`Dict` create object without prototype from iterable or simple object.
+
+[*Examples*](http://goo.gl/pnp8Vr):
+```js
+var map = new Map([['a', 1], ['b', 2], ['c', 3]]);
+
+Dict(); // => {__proto__: null}
+Dict({a: 1, b: 2, c: 3}); // => {__proto__: null, a: 1, b: 2, c: 3}
+Dict(map); // => {__proto__: null, a: 1, b: 2, c: 3}
+Dict([1, 2, 3].entries()); // => {__proto__: null, 0: 1, 1: 2, 2: 3}
+
+var dict = Dict({a: 42});
+dict instanceof Object; // => false
+dict.a; // => 42
+dict.toString; // => undefined
+'a' in dict; // => true
+'hasOwnProperty' in dict; // => false
+
+Dict.isDict({}); // => false
+Dict.isDict(Dict()); // => true
+```
+`Dict.keys`, `Dict.values` and `Dict.entries` returns iterators for objects.
+
+[*Examples*](http://goo.gl/xAvECH):
+```js
+var dict = {a: 1, b: 2, c: 3};
+
+for(var key of Dict.keys(dict))console.log(key); // => 'a', 'b', 'c'
+
+for(var val of Dict.values(dict))console.log(val); // => 1, 2, 3
+
+for(var [key, val] of Dict.entries(dict)){
+ console.log(key); // => 'a', 'b', 'c'
+ console.log(val); // => 1, 2, 3
+}
+
+new Map(Dict.entries(dict)); // => Map {a: 1, b: 2, c: 3}
+```
+Basic dict operations for objects with prototype [*examples*](http://goo.gl/B28UnG):
+```js
+'q' in {q: 1}; // => true
+'toString' in {}; // => true
+
+Dict.has({q: 1}, 'q'); // => true
+Dict.has({}, 'toString'); // => false
+
+({q: 1})['q']; // => 1
+({}).toString; // => function toString(){ [native code] }
+
+Dict.get({q: 1}, 'q'); // => 1
+Dict.get({}, 'toString'); // => undefined
+
+var O = {};
+O['q'] = 1;
+O['q']; // => 1
+O['__proto__'] = {w: 2};
+O['__proto__']; // => {w: 2}
+O['w']; // => 2
+
+var O = {};
+Dict.set(O, 'q', 1);
+O['q']; // => 1
+Dict.set(O, '__proto__', {w: 2});
+O['__proto__']; // => {w: 2}
+O['w']; // => undefined
+```
+Other methods of `Dict` module are static equialents of `Array.prototype` methods for dictionaries.
+
+[*Examples*](http://goo.gl/xFi1RH):
+```js
+var dict = {a: 1, b: 2, c: 3};
+
+Dict.forEach(dict, console.log, console);
+// => 1, 'a', {a: 1, b: 2, c: 3}
+// => 2, 'b', {a: 1, b: 2, c: 3}
+// => 3, 'c', {a: 1, b: 2, c: 3}
+
+Dict.map(dict, function(it){
+ return it * it;
+}); // => {a: 1, b: 4, c: 9}
+
+Dict.mapPairs(dict, function(val, key){
+ if(key != 'b')return [key + key, val * val];
+}); // => {aa: 1, cc: 9}
+
+Dict.filter(dict, function(it){
+ return it % 2;
+}); // => {a: 1, c: 3}
+
+Dict.some(dict, function(it){
+ return it === 2;
+}); // => true
+
+Dict.every(dict, function(it){
+ return it === 2;
+}); // => false
+
+Dict.find(dict, function(it){
+ return it > 2;
+}); // => 3
+Dict.find(dict, function(it){
+ return it > 4;
+}); // => undefined
+
+Dict.findKey(dict, function(it){
+ return it > 2;
+}); // => 'c'
+Dict.findKey(dict, function(it){
+ return it > 4;
+}); // => undefined
+
+Dict.keyOf(dict, 2); // => 'b'
+Dict.keyOf(dict, 4); // => undefined
+
+Dict.includes(dict, 2); // => true
+Dict.includes(dict, 4); // => false
+
+Dict.reduce(dict, function(memo, it){
+ return memo + it;
+}); // => 6
+Dict.reduce(dict, function(memo, it){
+ return memo + it;
+}, ''); // => '123'
+```
+#### Partial application
+Module [`core.function.part`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/core.function.part.js).
+```js
+Function
+ #part(...args | _) -> fn(...args)
+```
+
+[*CommonJS entry points:*](#commonjs)
+```js
+core-js/core/function
+core-js(/library)/fn/function/part
+core-js(/library)/fn/function/virtual/part
+core-js(/library)/fn/_
+```
+`Function#part` partial apply function without `this` binding. Uses global variable `_` (`core._` for builds without global namespace pollution) as placeholder and not conflict with `Underscore` / `LoDash`.
+
+[*Examples*](http://goo.gl/p9ZJ8K):
+```js
+var fn1 = log.part(1, 2);
+fn1(3, 4); // => 1, 2, 3, 4
+
+var fn2 = log.part(_, 2, _, 4);
+fn2(1, 3); // => 1, 2, 3, 4
+
+var fn3 = log.part(1, _, _, 4);
+fn3(2, 3); // => 1, 2, 3, 4
+
+fn2(1, 3, 5); // => 1, 2, 3, 4, 5
+fn2(1); // => 1, 2, undefined, 4
+```
+#### Number Iterator
+Module [`core.number.iterator`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/core.number.iterator.js).
+```js
+Number
+ #@@iterator() -> iterator
+```
+
+[*CommonJS entry points:*](#commonjs)
+```js
+core-js(/library)/core/number
+core-js(/library)/fn/number/iterator
+core-js(/library)/fn/number/virtual/iterator
+```
+[*Examples*](http://goo.gl/o45pCN):
+```js
+for(var i of 3)console.log(i); // => 0, 1, 2
+
+[...10]; // => [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
+
+Array.from(10, Math.random); // => [0.9817775336559862, 0.02720663254149258, ...]
+
+Array.from(10, function(it){
+ return this + it * it;
+}, .42); // => [0.42, 1.42, 4.42, 9.42, 16.42, 25.42, 36.42, 49.42, 64.42, 81.42]
+```
+#### Escaping strings
+Modules [`core.regexp.escape`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/core.regexp.escape.js), [`core.string.escape-html`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/core.string.escape-html.js) and [`core.string.unescape-html`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/core.string.unescape-html.js).
+```js
+RegExp
+ .escape(str) -> str
+String
+ #escapeHTML() -> str
+ #unescapeHTML() -> str
+```
+[*CommonJS entry points:*](#commonjs)
+```js
+core-js(/library)/core/regexp
+core-js(/library)/core/string
+core-js(/library)/fn/regexp/escape
+core-js(/library)/fn/string/escape-html
+core-js(/library)/fn/string/unescape-html
+core-js(/library)/fn/string/virtual/escape-html
+core-js(/library)/fn/string/virtual/unescape-html
+```
+[*Examples*](http://goo.gl/6bOvsQ):
+```js
+RegExp.escape('Hello, []{}()*+?.\\^$|!'); // => 'Hello, \[\]\{\}\(\)\*\+\?\.\\\^\$\|!'
+
+''.escapeHTML(); // => '<script>doSomething();</script>'
+'<script>doSomething();</script>'.unescapeHTML(); // => ''
+```
+#### delay
+Module [`core.delay`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/core.delay.js). [Promise](#ecmascript-6-promise)-returning delay function, [esdiscuss](https://esdiscuss.org/topic/promise-returning-delay-function).
+```js
+delay(ms) -> promise
+```
+[*CommonJS entry points:*](#commonjs)
+```js
+core-js(/library)/core/delay
+core-js(/library)/fn/delay
+```
+[*Examples*](http://goo.gl/lbucba):
+```js
+delay(1e3).then(() => console.log('after 1 sec'));
+
+(async () => {
+ await delay(3e3);
+ console.log('after 3 sec');
+
+ while(await delay(3e3))console.log('each 3 sec');
+})();
+```
+#### Helpers for iterators
+Modules [`core.is-iterable`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/core.is-iterable.js), [`core.get-iterator`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/core.get-iterator.js), [`core.get-iterator-method`](https://github.com/zloirock/core-js/blob/v2.2.0/modules/core.get-iterator-method.js) - helpers for check iterability / get iterator in the `library` version or, for example, for `arguments` object:
+```js
+core
+ .isIterable(var) -> bool
+ .getIterator(iterable) -> iterator
+ .getIteratorMethod(var) -> function | undefined
+```
+[*CommonJS entry points:*](#commonjs)
+```js
+core-js(/library)/fn/is-iterable
+core-js(/library)/fn/get-iterator
+core-js(/library)/fn/get-iterator-method
+```
+[*Examples*](http://goo.gl/SXsM6D):
+```js
+var list = (function(){
+ return arguments;
+})(1, 2, 3);
+
+console.log(core.isIterable(list)); // true;
+
+var iter = core.getIterator(list);
+console.log(iter.next().value); // 1
+console.log(iter.next().value); // 2
+console.log(iter.next().value); // 3
+console.log(iter.next().value); // undefined
+
+core.getIterator({}); // TypeError: [object Object] is not iterable!
+
+var iterFn = core.getIteratorMethod(list);
+console.log(typeof iterFn); // 'function'
+var iter = iterFn.call(list);
+console.log(iter.next().value); // 1
+console.log(iter.next().value); // 2
+console.log(iter.next().value); // 3
+console.log(iter.next().value); // undefined
+
+console.log(core.getIteratorMethod({})); // undefined
+```
+
+## Missing polyfills
+- ES5 `JSON` is missing now only in IE7- and never will it be added to `core-js`, if you need it in these old browsers, many implementations are available, for example, [json3](https://github.com/bestiejs/json3).
+- ES6 `String#normalize` is not a very useful feature, but this polyfill will be very large. If you need it, you can use [unorm](https://github.com/walling/unorm/).
+- ES6 `Proxy` can't be polyfilled, but for Node.js / Chromium with additional flags you can try [harmony-reflect](https://github.com/tvcutsem/harmony-reflect) for adapt old style `Proxy` API to final ES6 version.
+- ES6 logic for `@@isConcatSpreadable` and `@@species` (in most places) can be polyfilled without problems, but it will cause a serious slowdown in popular cases in some engines. It will be polyfilled when it will be implemented in modern engines.
+- ES7 `SIMD`. `core-js` doesn't add polyfill of this feature because of large size and some other reasons. You can use [this polyfill](https://github.com/tc39/ecmascript_simd/blob/master/src/ecmascript_simd.js).
+- `window.fetch` is not a cross-platform feature, in some environments it make no sense. For this reason, I don't think it should be in `core-js`. Looking at a large number of requests it *may be* added in the future. Now you can use, for example, [this polyfill](https://github.com/github/fetch).
diff --git a/node_modules/babel-register/node_modules/core-js/bower.json b/node_modules/babel-register/node_modules/core-js/bower.json
new file mode 100644
index 0000000..d63e877
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/bower.json
@@ -0,0 +1,47 @@
+{
+ "name": "core.js",
+ "main": "client/core.js",
+ "version": "2.2.0",
+ "description": "Standard Library",
+ "keywords": [
+ "ES3",
+ "ECMAScript 3",
+ "ES5",
+ "ECMAScript 5",
+ "ES6",
+ "ES2015",
+ "ECMAScript 6",
+ "ECMAScript 2015",
+ "ES7",
+ "ES2016",
+ "ECMAScript 7",
+ "ECMAScript 2016",
+ "Harmony",
+ "Strawman",
+ "Map",
+ "Set",
+ "WeakMap",
+ "WeakSet",
+ "Promise",
+ "Symbol",
+ "TypedArray",
+ "setImmediate",
+ "Dict",
+ "polyfill",
+ "shim"
+ ],
+ "authors": [
+ "Denis Pushkarev (http://zloirock.ru/)"
+ ],
+ "license": "MIT",
+ "homepage": "https://github.com/zloirock/core-js",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/zloirock/core-js.git"
+ },
+ "ignore": [
+ "build",
+ "node_modules",
+ "tests"
+ ]
+}
diff --git a/node_modules/babel-register/node_modules/core-js/build/Gruntfile.ls b/node_modules/babel-register/node_modules/core-js/build/Gruntfile.ls
new file mode 100644
index 0000000..f4b5380
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/build/Gruntfile.ls
@@ -0,0 +1,84 @@
+require! <[./build fs ./config]>
+module.exports = (grunt)->
+ grunt.loadNpmTasks \grunt-contrib-clean
+ grunt.loadNpmTasks \grunt-contrib-copy
+ grunt.loadNpmTasks \grunt-contrib-uglify
+ grunt.loadNpmTasks \grunt-contrib-watch
+ grunt.loadNpmTasks \grunt-livescript
+ grunt.loadNpmTasks \grunt-karma
+ grunt.initConfig do
+ pkg: grunt.file.readJSON './package.json'
+ uglify: build:
+ files: '<%=grunt.option("path")%>.min.js': '<%=grunt.option("path")%>.js'
+ options:
+ mangle: {+sort, +keep_fnames}
+ compress: {+pure_getters, +keep_fargs, +keep_fnames}
+ sourceMap: on
+ banner: config.banner
+ livescript: src: files:
+ './tests/helpers.js': './tests/helpers/*'
+ './tests/tests.js': './tests/tests/*'
+ './tests/library.js': './tests/library/*'
+ './tests/es.js': './tests/tests/es*'
+ './tests/experimental.js': './tests/experimental/*'
+ './build/index.js': './build/build.ls*'
+ clean: <[./library]>
+ copy: lib: files:
+ * expand: on
+ cwd: './'
+ src: <[es5/** es6/** es7/** stage/** web/** core/** fn/** index.js shim.js]>
+ dest: './library/'
+ * expand: on
+ cwd: './'
+ src: <[modules/*]>
+ dest: './library/'
+ filter: \isFile
+ * expand: on
+ cwd: './modules/library/'
+ src: '*'
+ dest: './library/modules/'
+ watch:
+ core:
+ files: './modules/*'
+ tasks: \default
+ tests:
+ files: './tests/tests/*'
+ tasks: \livescript
+ karma:
+ 'options':
+ configFile: './tests/karma.conf.js'
+ browsers: <[PhantomJS]>
+ singleRun: on
+ 'default': {}
+ 'library': files: <[client/library.js tests/helpers.js tests/library.js]>map -> src: it
+ grunt.registerTask \build (options)->
+ done = @async!
+ build {
+ modules: (options || 'es5,es6,es7,js,web,core')split \,
+ blacklist: (grunt.option(\blacklist) || '')split \,
+ library: grunt.option(\library) in <[yes on true]>
+ umd: grunt.option(\umd) not in <[no off false]>
+ }
+ .then !->
+ grunt.option(\path) || grunt.option(\path, './custom')
+ fs.writeFile grunt.option(\path) + '.js', it, done
+ .catch !->
+ console.error it
+ process.exit 1
+ grunt.registerTask \client ->
+ grunt.option \library ''
+ grunt.option \path './client/core'
+ grunt.task.run <[build:es5,es6,es7,js,web,core uglify]>
+ grunt.registerTask \library ->
+ grunt.option \library 'true'
+ grunt.option \path './client/library'
+ grunt.task.run <[build:es5,es6,es7,js,web,core uglify]>
+ grunt.registerTask \shim ->
+ grunt.option \library ''
+ grunt.option \path './client/shim'
+ grunt.task.run <[build:es5,es6,es7,js,web uglify]>
+ grunt.registerTask \e ->
+ grunt.option \library ''>
+ grunt.option \path './client/core'
+ grunt.task.run <[build:es5,es6,es7,js,web,core,exp uglify]>
+ grunt.registerTask \default <[clean copy client library shim]>
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/build/build.ls b/node_modules/babel-register/node_modules/core-js/build/build.ls
new file mode 100644
index 0000000..0cf210d
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/build/build.ls
@@ -0,0 +1,62 @@
+require! {
+ '../library/fn/promise': Promise
+ './config': {list, experimental, libraryBlacklist, es5SpecialCase, banner}
+ fs: {readFile, writeFile, unlink}
+ path: {join}
+ webpack, temp
+}
+
+module.exports = ({modules = [], blacklist = [], library = no, umd = on})->
+ resolve, reject <~! new Promise _
+ let @ = modules.reduce ((memo, it)-> memo[it] = on; memo), {}
+ if @exp => for experimental => @[..] = on
+ if @es5 => for es5SpecialCase => @[..] = on
+ for ns of @
+ if @[ns]
+ for name in list
+ if name.indexOf("#ns.") is 0 and name not in experimental
+ @[name] = on
+
+ if library => blacklist ++= libraryBlacklist
+ for ns in blacklist
+ for name in list
+ if name is ns or name.indexOf("#ns.") is 0
+ @[name] = no
+
+ TARGET = temp.path {suffix: '.js'}
+
+ err, info <~! webpack do
+ entry: list.filter(~> @[it]).map ~>
+ if library => join __dirname, '..', 'library', 'modules', it
+ else join __dirname, '..', 'modules', it
+ output:
+ path: ''
+ filename: TARGET
+ if err => return reject err
+
+ err, script <~! readFile TARGET
+ if err => return reject err
+
+ err <~! unlink TARGET
+ if err => return reject err
+
+ if umd
+ exportScript = """
+ // CommonJS export
+ if(typeof module != 'undefined' && module.exports)module.exports = __e;
+ // RequireJS export
+ else if(typeof define == 'function' && define.amd)define(function(){return __e});
+ // Export to global object
+ else __g.core = __e;
+ """
+ else
+ exportScript = ""
+
+ resolve """
+ #banner
+ !function(__e, __g, undefined){
+ 'use strict';
+ #script
+ #exportScript
+ }(1, 1);
+ """
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/build/config.js b/node_modules/babel-register/node_modules/core-js/build/config.js
new file mode 100644
index 0000000..9e364fa
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/build/config.js
@@ -0,0 +1,249 @@
+module.exports = {
+ list: [
+ 'es6.symbol',
+ 'es6.object.define-property',
+ 'es6.object.define-properties',
+ 'es6.object.get-own-property-descriptor',
+ 'es6.object.create',
+ 'es6.object.get-prototype-of',
+ 'es6.object.keys',
+ 'es6.object.get-own-property-names',
+ 'es6.object.freeze',
+ 'es6.object.seal',
+ 'es6.object.prevent-extensions',
+ 'es6.object.is-frozen',
+ 'es6.object.is-sealed',
+ 'es6.object.is-extensible',
+ 'es6.object.assign',
+ 'es6.object.is',
+ 'es6.object.set-prototype-of',
+ 'es6.object.to-string',
+ 'es6.function.bind',
+ 'es6.function.name',
+ 'es6.function.has-instance',
+ 'es6.number.constructor',
+ 'es6.number.to-fixed',
+ 'es6.number.to-precision',
+ 'es6.number.epsilon',
+ 'es6.number.is-finite',
+ 'es6.number.is-integer',
+ 'es6.number.is-nan',
+ 'es6.number.is-safe-integer',
+ 'es6.number.max-safe-integer',
+ 'es6.number.min-safe-integer',
+ 'es6.number.parse-float',
+ 'es6.number.parse-int',
+ 'es6.parse-int',
+ 'es6.parse-float',
+ 'es6.math.acosh',
+ 'es6.math.asinh',
+ 'es6.math.atanh',
+ 'es6.math.cbrt',
+ 'es6.math.clz32',
+ 'es6.math.cosh',
+ 'es6.math.expm1',
+ 'es6.math.fround',
+ 'es6.math.hypot',
+ 'es6.math.imul',
+ 'es6.math.log10',
+ 'es6.math.log1p',
+ 'es6.math.log2',
+ 'es6.math.sign',
+ 'es6.math.sinh',
+ 'es6.math.tanh',
+ 'es6.math.trunc',
+ 'es6.string.from-code-point',
+ 'es6.string.raw',
+ 'es6.string.trim',
+ 'es6.string.code-point-at',
+ 'es6.string.ends-with',
+ 'es6.string.includes',
+ 'es6.string.repeat',
+ 'es6.string.starts-with',
+ 'es6.string.iterator',
+ 'es6.string.anchor',
+ 'es6.string.big',
+ 'es6.string.blink',
+ 'es6.string.bold',
+ 'es6.string.fixed',
+ 'es6.string.fontcolor',
+ 'es6.string.fontsize',
+ 'es6.string.italics',
+ 'es6.string.link',
+ 'es6.string.small',
+ 'es6.string.strike',
+ 'es6.string.sub',
+ 'es6.string.sup',
+ 'es6.array.is-array',
+ 'es6.array.from',
+ 'es6.array.of',
+ 'es6.array.join',
+ 'es6.array.slice',
+ 'es6.array.sort',
+ 'es6.array.for-each',
+ 'es6.array.map',
+ 'es6.array.filter',
+ 'es6.array.some',
+ 'es6.array.every',
+ 'es6.array.reduce',
+ 'es6.array.reduce-right',
+ 'es6.array.index-of',
+ 'es6.array.last-index-of',
+ 'es6.array.copy-within',
+ 'es6.array.fill',
+ 'es6.array.find',
+ 'es6.array.find-index',
+ 'es6.array.iterator',
+ 'es6.array.species',
+ 'es6.regexp.constructor',
+ 'es6.regexp.to-string',
+ 'es6.regexp.flags',
+ 'es6.regexp.match',
+ 'es6.regexp.replace',
+ 'es6.regexp.search',
+ 'es6.regexp.split',
+ 'es6.promise',
+ 'es6.map',
+ 'es6.set',
+ 'es6.weak-map',
+ 'es6.weak-set',
+ 'es6.reflect.apply',
+ 'es6.reflect.construct',
+ 'es6.reflect.define-property',
+ 'es6.reflect.delete-property',
+ 'es6.reflect.enumerate',
+ 'es6.reflect.get',
+ 'es6.reflect.get-own-property-descriptor',
+ 'es6.reflect.get-prototype-of',
+ 'es6.reflect.has',
+ 'es6.reflect.is-extensible',
+ 'es6.reflect.own-keys',
+ 'es6.reflect.prevent-extensions',
+ 'es6.reflect.set',
+ 'es6.reflect.set-prototype-of',
+ 'es6.date.now',
+ 'es6.date.to-json',
+ 'es6.date.to-iso-string',
+ 'es6.date.to-string',
+ 'es6.date.to-primitive',
+ 'es6.typed.array-buffer',
+ 'es6.typed.data-view',
+ 'es6.typed.int8-array',
+ 'es6.typed.uint8-array',
+ 'es6.typed.uint8-clamped-array',
+ 'es6.typed.int16-array',
+ 'es6.typed.uint16-array',
+ 'es6.typed.int32-array',
+ 'es6.typed.uint32-array',
+ 'es6.typed.float32-array',
+ 'es6.typed.float64-array',
+ 'es7.array.includes',
+ 'es7.string.at',
+ 'es7.string.pad-start',
+ 'es7.string.pad-end',
+ 'es7.string.trim-left',
+ 'es7.string.trim-right',
+ 'es7.string.match-all',
+ 'es7.object.get-own-property-descriptors',
+ 'es7.object.values',
+ 'es7.object.entries',
+ 'es7.object.define-getter',
+ 'es7.object.define-setter',
+ 'es7.object.lookup-getter',
+ 'es7.object.lookup-setter',
+ 'es7.map.to-json',
+ 'es7.set.to-json',
+ 'es7.system.global',
+ 'es7.error.is-error',
+ 'es7.math.iaddh',
+ 'es7.math.isubh',
+ 'es7.math.imulh',
+ 'es7.math.umulh',
+ 'es7.reflect.define-metadata',
+ 'es7.reflect.delete-metadata',
+ 'es7.reflect.get-metadata',
+ 'es7.reflect.get-metadata-keys',
+ 'es7.reflect.get-own-metadata',
+ 'es7.reflect.get-own-metadata-keys',
+ 'es7.reflect.has-metadata',
+ 'es7.reflect.has-own-metadata',
+ 'es7.reflect.metadata',
+ 'web.immediate',
+ 'web.dom.iterable',
+ 'web.timers',
+ 'core.dict',
+ 'core.get-iterator-method',
+ 'core.get-iterator',
+ 'core.is-iterable',
+ 'core.delay',
+ 'core.function.part',
+ 'core.object.is-object',
+ 'core.object.classof',
+ 'core.object.define',
+ 'core.object.make',
+ 'core.number.iterator',
+ 'core.regexp.escape',
+ 'core.string.escape-html',
+ 'core.string.unescape-html'
+ ],
+ experimental: [
+ ],
+ libraryBlacklist: [
+ 'es6.object.to-string',
+ 'es6.function.name',
+ 'es6.regexp.constructor',
+ 'es6.regexp.to-string',
+ 'es6.regexp.flags',
+ 'es6.regexp.match',
+ 'es6.regexp.replace',
+ 'es6.regexp.search',
+ 'es6.regexp.split',
+ 'es6.number.constructor',
+ 'es6.date.to-string',
+ 'es6.date.to-primitive'
+ ],
+ es5SpecialCase: [
+ 'es6.object.create',
+ 'es6.object.define-property',
+ 'es6.object.define-properties',
+ 'es6.object.get-own-property-descriptor',
+ 'es6.object.get-prototype-of',
+ 'es6.object.keys',
+ 'es6.object.get-own-property-names',
+ 'es6.object.freeze',
+ 'es6.object.seal',
+ 'es6.object.prevent-extensions',
+ 'es6.object.is-frozen',
+ 'es6.object.is-sealed',
+ 'es6.object.is-extensible',
+ 'es6.function.bind',
+ 'es6.array.is-array',
+ 'es6.array.join',
+ 'es6.array.slice',
+ 'es6.array.sort',
+ 'es6.array.for-each',
+ 'es6.array.map',
+ 'es6.array.filter',
+ 'es6.array.some',
+ 'es6.array.every',
+ 'es6.array.reduce',
+ 'es6.array.reduce-right',
+ 'es6.array.index-of',
+ 'es6.array.last-index-of',
+ 'es6.number.to-fixed',
+ 'es6.number.to-precision',
+ 'es6.date.now',
+ 'es6.date.to-iso-string',
+ 'es6.date.to-json',
+ 'es6.string.trim',
+ 'es6.regexp.to-string',
+ 'es6.parse-int',
+ 'es6.parse-float'
+ ],
+ banner: '/**\n' +
+ ' * core-js ' + require('../package').version + '\n' +
+ ' * https://github.com/zloirock/core-js\n' +
+ ' * License: http://rock.mit-license.org\n' +
+ ' * © ' + new Date().getFullYear() + ' Denis Pushkarev\n' +
+ ' */'
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/build/index.js b/node_modules/babel-register/node_modules/core-js/build/index.js
new file mode 100644
index 0000000..26bdec4
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/build/index.js
@@ -0,0 +1,104 @@
+// Generated by LiveScript 1.4.0
+(function(){
+ var Promise, ref$, list, experimental, libraryBlacklist, es5SpecialCase, banner, readFile, writeFile, unlink, join, webpack, temp;
+ Promise = require('../library/fn/promise');
+ ref$ = require('./config'), list = ref$.list, experimental = ref$.experimental, libraryBlacklist = ref$.libraryBlacklist, es5SpecialCase = ref$.es5SpecialCase, banner = ref$.banner;
+ ref$ = require('fs'), readFile = ref$.readFile, writeFile = ref$.writeFile, unlink = ref$.unlink;
+ join = require('path').join;
+ webpack = require('webpack');
+ temp = require('temp');
+ module.exports = function(arg$){
+ var modules, ref$, blacklist, library, umd, this$ = this;
+ modules = (ref$ = arg$.modules) != null
+ ? ref$
+ : [], blacklist = (ref$ = arg$.blacklist) != null
+ ? ref$
+ : [], library = (ref$ = arg$.library) != null ? ref$ : false, umd = (ref$ = arg$.umd) != null ? ref$ : true;
+ return new Promise(function(resolve, reject){
+ (function(){
+ var i$, x$, ref$, len$, y$, ns, name, j$, len1$, TARGET, this$ = this;
+ if (this.exp) {
+ for (i$ = 0, len$ = (ref$ = experimental).length; i$ < len$; ++i$) {
+ x$ = ref$[i$];
+ this[x$] = true;
+ }
+ }
+ if (this.es5) {
+ for (i$ = 0, len$ = (ref$ = es5SpecialCase).length; i$ < len$; ++i$) {
+ y$ = ref$[i$];
+ this[y$] = true;
+ }
+ }
+ for (ns in this) {
+ if (this[ns]) {
+ for (i$ = 0, len$ = (ref$ = list).length; i$ < len$; ++i$) {
+ name = ref$[i$];
+ if (name.indexOf(ns + ".") === 0 && !in$(name, experimental)) {
+ this[name] = true;
+ }
+ }
+ }
+ }
+ if (library) {
+ blacklist = blacklist.concat(libraryBlacklist);
+ }
+ for (i$ = 0, len$ = blacklist.length; i$ < len$; ++i$) {
+ ns = blacklist[i$];
+ for (j$ = 0, len1$ = (ref$ = list).length; j$ < len1$; ++j$) {
+ name = ref$[j$];
+ if (name === ns || name.indexOf(ns + ".") === 0) {
+ this[name] = false;
+ }
+ }
+ }
+ TARGET = temp.path({
+ suffix: '.js'
+ });
+ webpack({
+ entry: list.filter(function(it){
+ return this$[it];
+ }).map(function(it){
+ if (library) {
+ return join(__dirname, '..', 'library', 'modules', it);
+ } else {
+ return join(__dirname, '..', 'modules', it);
+ }
+ }),
+ output: {
+ path: '',
+ filename: TARGET
+ }
+ }, function(err, info){
+ if (err) {
+ return reject(err);
+ }
+ readFile(TARGET, function(err, script){
+ if (err) {
+ return reject(err);
+ }
+ unlink(TARGET, function(err){
+ var exportScript;
+ if (err) {
+ return reject(err);
+ }
+ if (umd) {
+ exportScript = "// CommonJS export\nif(typeof module != 'undefined' && module.exports)module.exports = __e;\n// RequireJS export\nelse if(typeof define == 'function' && define.amd)define(function(){return __e});\n// Export to global object\nelse __g.core = __e;";
+ } else {
+ exportScript = "";
+ }
+ resolve("" + banner + "\n!function(__e, __g, undefined){\n'use strict';\n" + script + "\n" + exportScript + "\n}(1, 1);");
+ });
+ });
+ });
+ }.call(modules.reduce(function(memo, it){
+ memo[it] = true;
+ return memo;
+ }, {})));
+ });
+ };
+ function in$(x, xs){
+ var i = -1, l = xs.length >>> 0;
+ while (++i < l) if (x === xs[i]) return true;
+ return false;
+ }
+}).call(this);
diff --git a/node_modules/babel-register/node_modules/core-js/client/core.js b/node_modules/babel-register/node_modules/core-js/client/core.js
new file mode 100644
index 0000000..241b257
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/client/core.js
@@ -0,0 +1,7273 @@
+/**
+ * core-js 2.2.0
+ * https://github.com/zloirock/core-js
+ * License: http://rock.mit-license.org
+ * © 2016 Denis Pushkarev
+ */
+!function(__e, __g, undefined){
+'use strict';
+/******/ (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] = {
+/******/ exports: {},
+/******/ id: moduleId,
+/******/ loaded: false
+/******/ };
+
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+
+/******/ // Flag the module as loaded
+/******/ module.loaded = 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;
+
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ([
+/* 0 */
+/***/ function(module, exports, __webpack_require__) {
+
+ __webpack_require__(1);
+ __webpack_require__(48);
+ __webpack_require__(49);
+ __webpack_require__(50);
+ __webpack_require__(52);
+ __webpack_require__(53);
+ __webpack_require__(56);
+ __webpack_require__(57);
+ __webpack_require__(58);
+ __webpack_require__(59);
+ __webpack_require__(60);
+ __webpack_require__(61);
+ __webpack_require__(62);
+ __webpack_require__(63);
+ __webpack_require__(64);
+ __webpack_require__(66);
+ __webpack_require__(68);
+ __webpack_require__(70);
+ __webpack_require__(72);
+ __webpack_require__(75);
+ __webpack_require__(76);
+ __webpack_require__(77);
+ __webpack_require__(81);
+ __webpack_require__(85);
+ __webpack_require__(86);
+ __webpack_require__(87);
+ __webpack_require__(88);
+ __webpack_require__(90);
+ __webpack_require__(91);
+ __webpack_require__(92);
+ __webpack_require__(93);
+ __webpack_require__(94);
+ __webpack_require__(96);
+ __webpack_require__(98);
+ __webpack_require__(99);
+ __webpack_require__(100);
+ __webpack_require__(102);
+ __webpack_require__(103);
+ __webpack_require__(104);
+ __webpack_require__(106);
+ __webpack_require__(107);
+ __webpack_require__(108);
+ __webpack_require__(110);
+ __webpack_require__(111);
+ __webpack_require__(112);
+ __webpack_require__(113);
+ __webpack_require__(114);
+ __webpack_require__(115);
+ __webpack_require__(116);
+ __webpack_require__(117);
+ __webpack_require__(118);
+ __webpack_require__(119);
+ __webpack_require__(120);
+ __webpack_require__(121);
+ __webpack_require__(122);
+ __webpack_require__(123);
+ __webpack_require__(125);
+ __webpack_require__(129);
+ __webpack_require__(130);
+ __webpack_require__(131);
+ __webpack_require__(132);
+ __webpack_require__(136);
+ __webpack_require__(138);
+ __webpack_require__(139);
+ __webpack_require__(140);
+ __webpack_require__(141);
+ __webpack_require__(142);
+ __webpack_require__(143);
+ __webpack_require__(144);
+ __webpack_require__(145);
+ __webpack_require__(146);
+ __webpack_require__(147);
+ __webpack_require__(148);
+ __webpack_require__(149);
+ __webpack_require__(150);
+ __webpack_require__(151);
+ __webpack_require__(156);
+ __webpack_require__(157);
+ __webpack_require__(159);
+ __webpack_require__(160);
+ __webpack_require__(161);
+ __webpack_require__(164);
+ __webpack_require__(165);
+ __webpack_require__(166);
+ __webpack_require__(167);
+ __webpack_require__(168);
+ __webpack_require__(170);
+ __webpack_require__(171);
+ __webpack_require__(172);
+ __webpack_require__(173);
+ __webpack_require__(176);
+ __webpack_require__(178);
+ __webpack_require__(179);
+ __webpack_require__(180);
+ __webpack_require__(182);
+ __webpack_require__(184);
+ __webpack_require__(186);
+ __webpack_require__(187);
+ __webpack_require__(188);
+ __webpack_require__(190);
+ __webpack_require__(191);
+ __webpack_require__(192);
+ __webpack_require__(193);
+ __webpack_require__(199);
+ __webpack_require__(202);
+ __webpack_require__(203);
+ __webpack_require__(205);
+ __webpack_require__(206);
+ __webpack_require__(207);
+ __webpack_require__(208);
+ __webpack_require__(209);
+ __webpack_require__(210);
+ __webpack_require__(211);
+ __webpack_require__(212);
+ __webpack_require__(213);
+ __webpack_require__(214);
+ __webpack_require__(215);
+ __webpack_require__(216);
+ __webpack_require__(218);
+ __webpack_require__(219);
+ __webpack_require__(220);
+ __webpack_require__(221);
+ __webpack_require__(222);
+ __webpack_require__(223);
+ __webpack_require__(224);
+ __webpack_require__(225);
+ __webpack_require__(227);
+ __webpack_require__(230);
+ __webpack_require__(231);
+ __webpack_require__(234);
+ __webpack_require__(235);
+ __webpack_require__(236);
+ __webpack_require__(237);
+ __webpack_require__(238);
+ __webpack_require__(239);
+ __webpack_require__(240);
+ __webpack_require__(241);
+ __webpack_require__(242);
+ __webpack_require__(243);
+ __webpack_require__(244);
+ __webpack_require__(246);
+ __webpack_require__(247);
+ __webpack_require__(248);
+ __webpack_require__(249);
+ __webpack_require__(250);
+ __webpack_require__(251);
+ __webpack_require__(253);
+ __webpack_require__(254);
+ __webpack_require__(256);
+ __webpack_require__(257);
+ __webpack_require__(258);
+ __webpack_require__(259);
+ __webpack_require__(262);
+ __webpack_require__(263);
+ __webpack_require__(264);
+ __webpack_require__(265);
+ __webpack_require__(266);
+ __webpack_require__(267);
+ __webpack_require__(268);
+ __webpack_require__(269);
+ __webpack_require__(271);
+ __webpack_require__(272);
+ __webpack_require__(273);
+ __webpack_require__(274);
+ __webpack_require__(275);
+ __webpack_require__(276);
+ __webpack_require__(277);
+ __webpack_require__(278);
+ __webpack_require__(279);
+ __webpack_require__(280);
+ __webpack_require__(281);
+ __webpack_require__(284);
+ __webpack_require__(154);
+ __webpack_require__(285);
+ __webpack_require__(233);
+ __webpack_require__(286);
+ __webpack_require__(287);
+ __webpack_require__(288);
+ __webpack_require__(289);
+ __webpack_require__(290);
+ __webpack_require__(292);
+ __webpack_require__(293);
+ __webpack_require__(294);
+ __webpack_require__(296);
+ module.exports = __webpack_require__(297);
+
+
+/***/ },
+/* 1 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // ECMAScript 6 symbols shim
+ var global = __webpack_require__(2)
+ , core = __webpack_require__(3)
+ , has = __webpack_require__(4)
+ , DESCRIPTORS = __webpack_require__(5)
+ , $export = __webpack_require__(7)
+ , redefine = __webpack_require__(16)
+ , META = __webpack_require__(20).KEY
+ , $fails = __webpack_require__(6)
+ , shared = __webpack_require__(21)
+ , setToStringTag = __webpack_require__(22)
+ , uid = __webpack_require__(17)
+ , wks = __webpack_require__(23)
+ , keyOf = __webpack_require__(24)
+ , enumKeys = __webpack_require__(37)
+ , isArray = __webpack_require__(40)
+ , anObject = __webpack_require__(10)
+ , toIObject = __webpack_require__(27)
+ , toPrimitive = __webpack_require__(14)
+ , createDesc = __webpack_require__(15)
+ , _create = __webpack_require__(41)
+ , gOPNExt = __webpack_require__(44)
+ , $GOPD = __webpack_require__(46)
+ , $DP = __webpack_require__(9)
+ , gOPD = $GOPD.f
+ , dP = $DP.f
+ , gOPN = gOPNExt.f
+ , $Symbol = global.Symbol
+ , $JSON = global.JSON
+ , _stringify = $JSON && $JSON.stringify
+ , setter = false
+ , PROTOTYPE = 'prototype'
+ , HIDDEN = wks('_hidden')
+ , TO_PRIMITIVE = wks('toPrimitive')
+ , isEnum = {}.propertyIsEnumerable
+ , SymbolRegistry = shared('symbol-registry')
+ , AllSymbols = shared('symbols')
+ , ObjectProto = Object[PROTOTYPE]
+ , USE_NATIVE = typeof $Symbol == 'function'
+ , QObject = global.QObject;
+
+ // fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687
+ var setSymbolDesc = DESCRIPTORS && $fails(function(){
+ return _create(dP({}, 'a', {
+ get: function(){ return dP(this, 'a', {value: 7}).a; }
+ })).a != 7;
+ }) ? function(it, key, D){
+ var protoDesc = gOPD(ObjectProto, key);
+ if(protoDesc)delete ObjectProto[key];
+ dP(it, key, D);
+ if(protoDesc && it !== ObjectProto)dP(ObjectProto, key, protoDesc);
+ } : dP;
+
+ var wrap = function(tag){
+ var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);
+ sym._k = tag;
+ DESCRIPTORS && setter && setSymbolDesc(ObjectProto, tag, {
+ configurable: true,
+ set: function(value){
+ if(has(this, HIDDEN) && has(this[HIDDEN], tag))this[HIDDEN][tag] = false;
+ setSymbolDesc(this, tag, createDesc(1, value));
+ }
+ });
+ return sym;
+ };
+
+ var isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function(it){
+ return typeof it == 'symbol';
+ } : function(it){
+ return it instanceof $Symbol;
+ };
+
+ var $defineProperty = function defineProperty(it, key, D){
+ anObject(it);
+ key = toPrimitive(key, true);
+ anObject(D);
+ if(has(AllSymbols, key)){
+ if(!D.enumerable){
+ if(!has(it, HIDDEN))dP(it, HIDDEN, createDesc(1, {}));
+ it[HIDDEN][key] = true;
+ } else {
+ if(has(it, HIDDEN) && it[HIDDEN][key])it[HIDDEN][key] = false;
+ D = _create(D, {enumerable: createDesc(0, false)});
+ } return setSymbolDesc(it, key, D);
+ } return dP(it, key, D);
+ };
+ var $defineProperties = function defineProperties(it, P){
+ anObject(it);
+ var keys = enumKeys(P = toIObject(P))
+ , i = 0
+ , l = keys.length
+ , key;
+ while(l > i)$defineProperty(it, key = keys[i++], P[key]);
+ return it;
+ };
+ var $create = function create(it, P){
+ return P === undefined ? _create(it) : $defineProperties(_create(it), P);
+ };
+ var $propertyIsEnumerable = function propertyIsEnumerable(key){
+ var E = isEnum.call(this, key = toPrimitive(key, true));
+ return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;
+ };
+ var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key){
+ var D = gOPD(it = toIObject(it), key = toPrimitive(key, true));
+ if(D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key]))D.enumerable = true;
+ return D;
+ };
+ var $getOwnPropertyNames = function getOwnPropertyNames(it){
+ var names = gOPN(toIObject(it))
+ , result = []
+ , i = 0
+ , key;
+ while(names.length > i)if(!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META)result.push(key);
+ return result;
+ };
+ var $getOwnPropertySymbols = function getOwnPropertySymbols(it){
+ var names = gOPN(toIObject(it))
+ , result = []
+ , i = 0
+ , key;
+ while(names.length > i)if(has(AllSymbols, key = names[i++]))result.push(AllSymbols[key]);
+ return result;
+ };
+ var $stringify = function stringify(it){
+ if(it === undefined || isSymbol(it))return; // IE8 returns string on undefined
+ var args = [it]
+ , i = 1
+ , replacer, $replacer;
+ while(arguments.length > i)args.push(arguments[i++]);
+ replacer = args[1];
+ if(typeof replacer == 'function')$replacer = replacer;
+ if($replacer || !isArray(replacer))replacer = function(key, value){
+ if($replacer)value = $replacer.call(this, key, value);
+ if(!isSymbol(value))return value;
+ };
+ args[1] = replacer;
+ return _stringify.apply($JSON, args);
+ };
+ var BUGGY_JSON = $fails(function(){
+ var S = $Symbol();
+ // MS Edge converts symbol values to JSON as {}
+ // WebKit converts symbol values to JSON as null
+ // V8 throws on boxed symbols
+ return _stringify([S]) != '[null]' || _stringify({a: S}) != '{}' || _stringify(Object(S)) != '{}';
+ });
+
+ // 19.4.1.1 Symbol([description])
+ if(!USE_NATIVE){
+ $Symbol = function Symbol(){
+ if(this instanceof $Symbol)throw TypeError('Symbol is not a constructor!');
+ return wrap(uid(arguments.length > 0 ? arguments[0] : undefined));
+ };
+ redefine($Symbol[PROTOTYPE], 'toString', function toString(){
+ return this._k;
+ });
+
+ $GOPD.f = $getOwnPropertyDescriptor;
+ $DP.f = $defineProperty;
+ __webpack_require__(45).f = gOPNExt.f = $getOwnPropertyNames;
+ __webpack_require__(39).f = $propertyIsEnumerable
+ __webpack_require__(38).f = $getOwnPropertySymbols;
+
+ if(DESCRIPTORS && !__webpack_require__(47)){
+ redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);
+ }
+ }
+
+ $export($export.G + $export.W + $export.F * !USE_NATIVE, {Symbol: $Symbol});
+
+ // 19.4.2.2 Symbol.hasInstance
+ // 19.4.2.3 Symbol.isConcatSpreadable
+ // 19.4.2.4 Symbol.iterator
+ // 19.4.2.6 Symbol.match
+ // 19.4.2.8 Symbol.replace
+ // 19.4.2.9 Symbol.search
+ // 19.4.2.10 Symbol.species
+ // 19.4.2.11 Symbol.split
+ // 19.4.2.12 Symbol.toPrimitive
+ // 19.4.2.13 Symbol.toStringTag
+ // 19.4.2.14 Symbol.unscopables
+ for(var symbols = (
+ 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'
+ ).split(','), i = 0; symbols.length > i; ){
+ var key = symbols[i++]
+ , Wrapper = core.Symbol
+ , sym = wks(key);
+ if(!(key in Wrapper))dP(Wrapper, key, {value: USE_NATIVE ? sym : wrap(sym)});
+ };
+
+ // Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173
+ if(!QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild)setter = true;
+
+ $export($export.S + $export.F * !USE_NATIVE, 'Symbol', {
+ // 19.4.2.1 Symbol.for(key)
+ 'for': function(key){
+ return has(SymbolRegistry, key += '')
+ ? SymbolRegistry[key]
+ : SymbolRegistry[key] = $Symbol(key);
+ },
+ // 19.4.2.5 Symbol.keyFor(sym)
+ keyFor: function keyFor(key){
+ if(isSymbol(key))return keyOf(SymbolRegistry, key);
+ throw TypeError(key + ' is not a symbol!');
+ },
+ useSetter: function(){ setter = true; },
+ useSimple: function(){ setter = false; }
+ });
+
+ $export($export.S + $export.F * !USE_NATIVE, 'Object', {
+ // 19.1.2.2 Object.create(O [, Properties])
+ create: $create,
+ // 19.1.2.4 Object.defineProperty(O, P, Attributes)
+ defineProperty: $defineProperty,
+ // 19.1.2.3 Object.defineProperties(O, Properties)
+ defineProperties: $defineProperties,
+ // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)
+ getOwnPropertyDescriptor: $getOwnPropertyDescriptor,
+ // 19.1.2.7 Object.getOwnPropertyNames(O)
+ getOwnPropertyNames: $getOwnPropertyNames,
+ // 19.1.2.8 Object.getOwnPropertySymbols(O)
+ getOwnPropertySymbols: $getOwnPropertySymbols
+ });
+
+ // 24.3.2 JSON.stringify(value [, replacer [, space]])
+ $JSON && $export($export.S + $export.F * (!USE_NATIVE || BUGGY_JSON), 'JSON', {stringify: $stringify});
+
+ // 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)
+ $Symbol[PROTOTYPE][TO_PRIMITIVE] || __webpack_require__(8)($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);
+ // 19.4.3.5 Symbol.prototype[@@toStringTag]
+ setToStringTag($Symbol, 'Symbol');
+ // 20.2.1.9 Math[@@toStringTag]
+ setToStringTag(Math, 'Math', true);
+ // 24.3.3 JSON[@@toStringTag]
+ setToStringTag(global.JSON, 'JSON', true);
+
+/***/ },
+/* 2 */
+/***/ function(module, exports) {
+
+ // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
+ var global = module.exports = typeof window != 'undefined' && window.Math == Math
+ ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')();
+ if(typeof __g == 'number')__g = global; // eslint-disable-line no-undef
+
+/***/ },
+/* 3 */
+/***/ function(module, exports) {
+
+ var core = module.exports = {version: '2.2.0'};
+ if(typeof __e == 'number')__e = core; // eslint-disable-line no-undef
+
+/***/ },
+/* 4 */
+/***/ function(module, exports) {
+
+ var hasOwnProperty = {}.hasOwnProperty;
+ module.exports = function(it, key){
+ return hasOwnProperty.call(it, key);
+ };
+
+/***/ },
+/* 5 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // Thank's IE8 for his funny defineProperty
+ module.exports = !__webpack_require__(6)(function(){
+ return Object.defineProperty({}, 'a', {get: function(){ return 7; }}).a != 7;
+ });
+
+/***/ },
+/* 6 */
+/***/ function(module, exports) {
+
+ module.exports = function(exec){
+ try {
+ return !!exec();
+ } catch(e){
+ return true;
+ }
+ };
+
+/***/ },
+/* 7 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var global = __webpack_require__(2)
+ , core = __webpack_require__(3)
+ , hide = __webpack_require__(8)
+ , redefine = __webpack_require__(16)
+ , ctx = __webpack_require__(18)
+ , PROTOTYPE = 'prototype';
+
+ var $export = function(type, name, source){
+ var IS_FORCED = type & $export.F
+ , IS_GLOBAL = type & $export.G
+ , IS_STATIC = type & $export.S
+ , IS_PROTO = type & $export.P
+ , IS_BIND = type & $export.B
+ , target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE]
+ , exports = IS_GLOBAL ? core : core[name] || (core[name] = {})
+ , expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {})
+ , key, own, out, exp;
+ if(IS_GLOBAL)source = name;
+ for(key in source){
+ // contains in native
+ own = !IS_FORCED && target && target[key] !== undefined;
+ // export native or passed
+ out = (own ? target : source)[key];
+ // bind timers to global for call from export context
+ exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;
+ // extend global
+ if(target)redefine(target, key, out, type & $export.U);
+ // export
+ if(exports[key] != out)hide(exports, key, exp);
+ if(IS_PROTO && expProto[key] != out)expProto[key] = out;
+ }
+ };
+ global.core = core;
+ // type bitmap
+ $export.F = 1; // forced
+ $export.G = 2; // global
+ $export.S = 4; // static
+ $export.P = 8; // proto
+ $export.B = 16; // bind
+ $export.W = 32; // wrap
+ $export.U = 64; // safe
+ $export.R = 128; // real proto method for `library`
+ module.exports = $export;
+
+/***/ },
+/* 8 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var dP = __webpack_require__(9)
+ , createDesc = __webpack_require__(15);
+ module.exports = __webpack_require__(5) ? function(object, key, value){
+ return dP.f(object, key, createDesc(1, value));
+ } : function(object, key, value){
+ object[key] = value;
+ return object;
+ };
+
+/***/ },
+/* 9 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var anObject = __webpack_require__(10)
+ , IE8_DOM_DEFINE = __webpack_require__(12)
+ , toPrimitive = __webpack_require__(14)
+ , dP = Object.defineProperty;
+
+ exports.f = __webpack_require__(5) ? Object.defineProperty : function defineProperty(O, P, Attributes){
+ anObject(O);
+ P = toPrimitive(P, true);
+ anObject(Attributes);
+ if(IE8_DOM_DEFINE)try {
+ return dP(O, P, Attributes);
+ } catch(e){ /* empty */ }
+ if('get' in Attributes || 'set' in Attributes)throw TypeError('Accessors not supported!');
+ if('value' in Attributes)O[P] = Attributes.value;
+ return O;
+ };
+
+/***/ },
+/* 10 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var isObject = __webpack_require__(11);
+ module.exports = function(it){
+ if(!isObject(it))throw TypeError(it + ' is not an object!');
+ return it;
+ };
+
+/***/ },
+/* 11 */
+/***/ function(module, exports) {
+
+ module.exports = function(it){
+ return typeof it === 'object' ? it !== null : typeof it === 'function';
+ };
+
+/***/ },
+/* 12 */
+/***/ function(module, exports, __webpack_require__) {
+
+ module.exports = !__webpack_require__(5) && !__webpack_require__(6)(function(){
+ return Object.defineProperty(__webpack_require__(13)('div'), 'a', {get: function(){ return 7; }}).a != 7;
+ });
+
+/***/ },
+/* 13 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var isObject = __webpack_require__(11)
+ , document = __webpack_require__(2).document
+ // in old IE typeof document.createElement is 'object'
+ , is = isObject(document) && isObject(document.createElement);
+ module.exports = function(it){
+ return is ? document.createElement(it) : {};
+ };
+
+/***/ },
+/* 14 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 7.1.1 ToPrimitive(input [, PreferredType])
+ var isObject = __webpack_require__(11);
+ // instead of the ES6 spec version, we didn't implement @@toPrimitive case
+ // and the second argument - flag - preferred type is a string
+ module.exports = function(it, S){
+ if(!isObject(it))return it;
+ var fn, val;
+ if(S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val;
+ if(typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it)))return val;
+ if(!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val;
+ throw TypeError("Can't convert object to primitive value");
+ };
+
+/***/ },
+/* 15 */
+/***/ function(module, exports) {
+
+ module.exports = function(bitmap, value){
+ return {
+ enumerable : !(bitmap & 1),
+ configurable: !(bitmap & 2),
+ writable : !(bitmap & 4),
+ value : value
+ };
+ };
+
+/***/ },
+/* 16 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var global = __webpack_require__(2)
+ , hide = __webpack_require__(8)
+ , has = __webpack_require__(4)
+ , SRC = __webpack_require__(17)('src')
+ , TO_STRING = 'toString'
+ , $toString = Function[TO_STRING]
+ , TPL = ('' + $toString).split(TO_STRING);
+
+ __webpack_require__(3).inspectSource = function(it){
+ return $toString.call(it);
+ };
+
+ (module.exports = function(O, key, val, safe){
+ var isFunction = typeof val == 'function';
+ if(isFunction)has(val, 'name') || hide(val, 'name', key);
+ if(O[key] === val)return;
+ if(isFunction)has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));
+ if(O === global){
+ O[key] = val;
+ } else {
+ if(!safe){
+ delete O[key];
+ hide(O, key, val);
+ } else {
+ if(O[key])O[key] = val;
+ else hide(O, key, val);
+ }
+ }
+ // add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative
+ })(Function.prototype, TO_STRING, function toString(){
+ return typeof this == 'function' && this[SRC] || $toString.call(this);
+ });
+
+/***/ },
+/* 17 */
+/***/ function(module, exports) {
+
+ var id = 0
+ , px = Math.random();
+ module.exports = function(key){
+ return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));
+ };
+
+/***/ },
+/* 18 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // optional / simple context binding
+ var aFunction = __webpack_require__(19);
+ module.exports = function(fn, that, length){
+ aFunction(fn);
+ if(that === undefined)return fn;
+ switch(length){
+ case 1: return function(a){
+ return fn.call(that, a);
+ };
+ case 2: return function(a, b){
+ return fn.call(that, a, b);
+ };
+ case 3: return function(a, b, c){
+ return fn.call(that, a, b, c);
+ };
+ }
+ return function(/* ...args */){
+ return fn.apply(that, arguments);
+ };
+ };
+
+/***/ },
+/* 19 */
+/***/ function(module, exports) {
+
+ module.exports = function(it){
+ if(typeof it != 'function')throw TypeError(it + ' is not a function!');
+ return it;
+ };
+
+/***/ },
+/* 20 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var META = __webpack_require__(17)('meta')
+ , isObject = __webpack_require__(11)
+ , has = __webpack_require__(4)
+ , setDesc = __webpack_require__(9).f
+ , id = 0;
+ var isExtensible = Object.isExtensible || function(){
+ return true;
+ };
+ var FREEZE = !__webpack_require__(6)(function(){
+ return isExtensible(Object.preventExtensions({}));
+ });
+ var setMeta = function(it){
+ setDesc(it, META, {value: {
+ i: 'O' + ++id, // object ID
+ w: {} // weak collections IDs
+ }});
+ };
+ var fastKey = function(it, create){
+ // return primitive with prefix
+ if(!isObject(it))return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;
+ if(!has(it, META)){
+ // can't set metadata to uncaught frozen object
+ if(!isExtensible(it))return 'F';
+ // not necessary to add metadata
+ if(!create)return 'E';
+ // add missing metadata
+ setMeta(it);
+ // return object ID
+ } return it[META].i;
+ };
+ var getWeak = function(it, create){
+ if(!has(it, META)){
+ // can't set metadata to uncaught frozen object
+ if(!isExtensible(it))return true;
+ // not necessary to add metadata
+ if(!create)return false;
+ // add missing metadata
+ setMeta(it);
+ // return hash weak collections IDs
+ } return it[META].w;
+ };
+ // add metadata on freeze-family methods calling
+ var onFreeze = function(it){
+ if(FREEZE && meta.NEED && isExtensible(it) && !has(it, META))setMeta(it);
+ return it;
+ };
+ var meta = module.exports = {
+ KEY: META,
+ NEED: false,
+ fastKey: fastKey,
+ getWeak: getWeak,
+ onFreeze: onFreeze
+ };
+
+/***/ },
+/* 21 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var global = __webpack_require__(2)
+ , SHARED = '__core-js_shared__'
+ , store = global[SHARED] || (global[SHARED] = {});
+ module.exports = function(key){
+ return store[key] || (store[key] = {});
+ };
+
+/***/ },
+/* 22 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var def = __webpack_require__(9).f
+ , has = __webpack_require__(4)
+ , TAG = __webpack_require__(23)('toStringTag');
+
+ module.exports = function(it, tag, stat){
+ if(it && !has(it = stat ? it : it.prototype, TAG))def(it, TAG, {configurable: true, value: tag});
+ };
+
+/***/ },
+/* 23 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var store = __webpack_require__(21)('wks')
+ , uid = __webpack_require__(17)
+ , Symbol = __webpack_require__(2).Symbol
+ , USE_SYMBOL = typeof Symbol == 'function';
+ module.exports = function(name){
+ return store[name] || (store[name] =
+ USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));
+ };
+
+/***/ },
+/* 24 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var getKeys = __webpack_require__(25)
+ , toIObject = __webpack_require__(27);
+ module.exports = function(object, el){
+ var O = toIObject(object)
+ , keys = getKeys(O)
+ , length = keys.length
+ , index = 0
+ , key;
+ while(length > index)if(O[key = keys[index++]] === el)return key;
+ };
+
+/***/ },
+/* 25 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 19.1.2.14 / 15.2.3.14 Object.keys(O)
+ var $keys = __webpack_require__(26)
+ , enumBugKeys = __webpack_require__(36);
+
+ module.exports = Object.keys || function keys(O){
+ return $keys(O, enumBugKeys);
+ };
+
+/***/ },
+/* 26 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var has = __webpack_require__(4)
+ , toIObject = __webpack_require__(27)
+ , arrayIndexOf = __webpack_require__(31)(false)
+ , IE_PROTO = __webpack_require__(35)('IE_PROTO');
+
+ module.exports = function(object, names){
+ var O = toIObject(object)
+ , i = 0
+ , result = []
+ , key;
+ for(key in O)if(key != IE_PROTO)has(O, key) && result.push(key);
+ // Don't enum bug & hidden keys
+ while(names.length > i)if(has(O, key = names[i++])){
+ ~arrayIndexOf(result, key) || result.push(key);
+ }
+ return result;
+ };
+
+/***/ },
+/* 27 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // to indexed object, toObject with fallback for non-array-like ES3 strings
+ var IObject = __webpack_require__(28)
+ , defined = __webpack_require__(30);
+ module.exports = function(it){
+ return IObject(defined(it));
+ };
+
+/***/ },
+/* 28 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // fallback for non-array-like ES3 and non-enumerable old V8 strings
+ var cof = __webpack_require__(29);
+ module.exports = Object('z').propertyIsEnumerable(0) ? Object : function(it){
+ return cof(it) == 'String' ? it.split('') : Object(it);
+ };
+
+/***/ },
+/* 29 */
+/***/ function(module, exports) {
+
+ var toString = {}.toString;
+
+ module.exports = function(it){
+ return toString.call(it).slice(8, -1);
+ };
+
+/***/ },
+/* 30 */
+/***/ function(module, exports) {
+
+ // 7.2.1 RequireObjectCoercible(argument)
+ module.exports = function(it){
+ if(it == undefined)throw TypeError("Can't call method on " + it);
+ return it;
+ };
+
+/***/ },
+/* 31 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // false -> Array#indexOf
+ // true -> Array#includes
+ var toIObject = __webpack_require__(27)
+ , toLength = __webpack_require__(32)
+ , toIndex = __webpack_require__(34);
+ module.exports = function(IS_INCLUDES){
+ return function($this, el, fromIndex){
+ var O = toIObject($this)
+ , length = toLength(O.length)
+ , index = toIndex(fromIndex, length)
+ , value;
+ // Array#includes uses SameValueZero equality algorithm
+ if(IS_INCLUDES && el != el)while(length > index){
+ value = O[index++];
+ if(value != value)return true;
+ // Array#toIndex ignores holes, Array#includes - not
+ } else for(;length > index; index++)if(IS_INCLUDES || index in O){
+ if(O[index] === el)return IS_INCLUDES || index;
+ } return !IS_INCLUDES && -1;
+ };
+ };
+
+/***/ },
+/* 32 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 7.1.15 ToLength
+ var toInteger = __webpack_require__(33)
+ , min = Math.min;
+ module.exports = function(it){
+ return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991
+ };
+
+/***/ },
+/* 33 */
+/***/ function(module, exports) {
+
+ // 7.1.4 ToInteger
+ var ceil = Math.ceil
+ , floor = Math.floor;
+ module.exports = function(it){
+ return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);
+ };
+
+/***/ },
+/* 34 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var toInteger = __webpack_require__(33)
+ , max = Math.max
+ , min = Math.min;
+ module.exports = function(index, length){
+ index = toInteger(index);
+ return index < 0 ? max(index + length, 0) : min(index, length);
+ };
+
+/***/ },
+/* 35 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var shared = __webpack_require__(21)('keys')
+ , uid = __webpack_require__(17);
+ module.exports = function(key){
+ return shared[key] || (shared[key] = uid(key));
+ };
+
+/***/ },
+/* 36 */
+/***/ function(module, exports) {
+
+ // IE 8- don't enum bug keys
+ module.exports = (
+ 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'
+ ).split(',');
+
+/***/ },
+/* 37 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // all enumerable object keys, includes symbols
+ var getKeys = __webpack_require__(25)
+ , gOPS = __webpack_require__(38)
+ , pIE = __webpack_require__(39);
+ module.exports = function(it){
+ var result = getKeys(it)
+ , getSymbols = gOPS.f;
+ if(getSymbols){
+ var symbols = getSymbols(it)
+ , isEnum = pIE.f
+ , i = 0
+ , key;
+ while(symbols.length > i)if(isEnum.call(it, key = symbols[i++]))result.push(key);
+ } return result;
+ };
+
+/***/ },
+/* 38 */
+/***/ function(module, exports) {
+
+ exports.f = Object.getOwnPropertySymbols;
+
+/***/ },
+/* 39 */
+/***/ function(module, exports) {
+
+ exports.f = {}.propertyIsEnumerable;
+
+/***/ },
+/* 40 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 7.2.2 IsArray(argument)
+ var cof = __webpack_require__(29);
+ module.exports = Array.isArray || function isArray(arg){
+ return cof(arg) == 'Array';
+ };
+
+/***/ },
+/* 41 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
+ var anObject = __webpack_require__(10)
+ , dPs = __webpack_require__(42)
+ , enumBugKeys = __webpack_require__(36)
+ , IE_PROTO = __webpack_require__(35)('IE_PROTO')
+ , Empty = function(){ /* empty */ }
+ , PROTOTYPE = 'prototype';
+
+ // Create object with fake `null` prototype: use iframe Object with cleared prototype
+ var createDict = function(){
+ // Thrash, waste and sodomy: IE GC bug
+ var iframe = __webpack_require__(13)('iframe')
+ , i = enumBugKeys.length
+ , gt = '>'
+ , iframeDocument;
+ iframe.style.display = 'none';
+ __webpack_require__(43).appendChild(iframe);
+ iframe.src = 'javascript:'; // eslint-disable-line no-script-url
+ // createDict = iframe.contentWindow.Object;
+ // html.removeChild(iframe);
+ iframeDocument = iframe.contentWindow.document;
+ iframeDocument.open();
+ iframeDocument.write(' i)dP.f(O, P = keys[i++], Properties[P]);
+ return O;
+ };
+
+/***/ },
+/* 43 */
+/***/ function(module, exports, __webpack_require__) {
+
+ module.exports = __webpack_require__(2).document && document.documentElement;
+
+/***/ },
+/* 44 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window
+ var toIObject = __webpack_require__(27)
+ , gOPN = __webpack_require__(45).f
+ , toString = {}.toString;
+
+ var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames
+ ? Object.getOwnPropertyNames(window) : [];
+
+ var getWindowNames = function(it){
+ try {
+ return gOPN.f(it);
+ } catch(e){
+ return windowNames.slice();
+ }
+ };
+
+ module.exports.f = function getOwnPropertyNames(it){
+ return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));
+ };
+
+/***/ },
+/* 45 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)
+ var $keys = __webpack_require__(26)
+ , hiddenKeys = __webpack_require__(36).concat('length', 'prototype');
+
+ exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O){
+ return $keys(O, hiddenKeys);
+ };
+
+/***/ },
+/* 46 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var pIE = __webpack_require__(39)
+ , createDesc = __webpack_require__(15)
+ , toIObject = __webpack_require__(27)
+ , toPrimitive = __webpack_require__(14)
+ , has = __webpack_require__(4)
+ , IE8_DOM_DEFINE = __webpack_require__(12)
+ , gOPD = Object.getOwnPropertyDescriptor;
+
+ exports.f = __webpack_require__(5) ? gOPD : function getOwnPropertyDescriptor(O, P){
+ O = toIObject(O);
+ P = toPrimitive(P, true);
+ if(IE8_DOM_DEFINE)try {
+ return gOPD(O, P);
+ } catch(e){ /* empty */ }
+ if(has(O, P))return createDesc(!pIE.f.call(O, P), O[P]);
+ };
+
+/***/ },
+/* 47 */
+/***/ function(module, exports) {
+
+ module.exports = false;
+
+/***/ },
+/* 48 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var $export = __webpack_require__(7);
+ // 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)
+ $export($export.S + $export.F * !__webpack_require__(5), 'Object', {defineProperty: __webpack_require__(9).f});
+
+/***/ },
+/* 49 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var $export = __webpack_require__(7);
+ // 19.1.2.3 / 15.2.3.7 Object.defineProperties(O, Properties)
+ $export($export.S + $export.F * !__webpack_require__(5), 'Object', {defineProperties: __webpack_require__(42)});
+
+/***/ },
+/* 50 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)
+ var toIObject = __webpack_require__(27)
+ , $getOwnPropertyDescriptor = __webpack_require__(46).f;
+
+ __webpack_require__(51)('getOwnPropertyDescriptor', function(){
+ return function getOwnPropertyDescriptor(it, key){
+ return $getOwnPropertyDescriptor(toIObject(it), key);
+ };
+ });
+
+/***/ },
+/* 51 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // most Object methods by ES6 should accept primitives
+ var $export = __webpack_require__(7)
+ , core = __webpack_require__(3)
+ , fails = __webpack_require__(6);
+ module.exports = function(KEY, exec){
+ var fn = (core.Object || {})[KEY] || Object[KEY]
+ , exp = {};
+ exp[KEY] = exec(fn);
+ $export($export.S + $export.F * fails(function(){ fn(1); }), 'Object', exp);
+ };
+
+/***/ },
+/* 52 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var $export = __webpack_require__(7)
+ // 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
+ $export($export.S, 'Object', {create: __webpack_require__(41)});
+
+/***/ },
+/* 53 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 19.1.2.9 Object.getPrototypeOf(O)
+ var toObject = __webpack_require__(54)
+ , $getPrototypeOf = __webpack_require__(55);
+
+ __webpack_require__(51)('getPrototypeOf', function(){
+ return function getPrototypeOf(it){
+ return $getPrototypeOf(toObject(it));
+ };
+ });
+
+/***/ },
+/* 54 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 7.1.13 ToObject(argument)
+ var defined = __webpack_require__(30);
+ module.exports = function(it){
+ return Object(defined(it));
+ };
+
+/***/ },
+/* 55 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)
+ var has = __webpack_require__(4)
+ , toObject = __webpack_require__(54)
+ , IE_PROTO = __webpack_require__(35)('IE_PROTO')
+ , ObjectProto = Object.prototype;
+
+ module.exports = Object.getPrototypeOf || function(O){
+ O = toObject(O);
+ if(has(O, IE_PROTO))return O[IE_PROTO];
+ if(typeof O.constructor == 'function' && O instanceof O.constructor){
+ return O.constructor.prototype;
+ } return O instanceof Object ? ObjectProto : null;
+ };
+
+/***/ },
+/* 56 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 19.1.2.14 Object.keys(O)
+ var toObject = __webpack_require__(54)
+ , $keys = __webpack_require__(25);
+
+ __webpack_require__(51)('keys', function(){
+ return function keys(it){
+ return $keys(toObject(it));
+ };
+ });
+
+/***/ },
+/* 57 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 19.1.2.7 Object.getOwnPropertyNames(O)
+ __webpack_require__(51)('getOwnPropertyNames', function(){
+ return __webpack_require__(44).f;
+ });
+
+/***/ },
+/* 58 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 19.1.2.5 Object.freeze(O)
+ var isObject = __webpack_require__(11)
+ , meta = __webpack_require__(20).onFreeze;
+
+ __webpack_require__(51)('freeze', function($freeze){
+ return function freeze(it){
+ return $freeze && isObject(it) ? $freeze(meta(it)) : it;
+ };
+ });
+
+/***/ },
+/* 59 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 19.1.2.17 Object.seal(O)
+ var isObject = __webpack_require__(11)
+ , meta = __webpack_require__(20).onFreeze;
+
+ __webpack_require__(51)('seal', function($seal){
+ return function seal(it){
+ return $seal && isObject(it) ? $seal(meta(it)) : it;
+ };
+ });
+
+/***/ },
+/* 60 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 19.1.2.15 Object.preventExtensions(O)
+ var isObject = __webpack_require__(11)
+ , meta = __webpack_require__(20).onFreeze;
+
+ __webpack_require__(51)('preventExtensions', function($preventExtensions){
+ return function preventExtensions(it){
+ return $preventExtensions && isObject(it) ? $preventExtensions(meta(it)) : it;
+ };
+ });
+
+/***/ },
+/* 61 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 19.1.2.12 Object.isFrozen(O)
+ var isObject = __webpack_require__(11);
+
+ __webpack_require__(51)('isFrozen', function($isFrozen){
+ return function isFrozen(it){
+ return isObject(it) ? $isFrozen ? $isFrozen(it) : false : true;
+ };
+ });
+
+/***/ },
+/* 62 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 19.1.2.13 Object.isSealed(O)
+ var isObject = __webpack_require__(11);
+
+ __webpack_require__(51)('isSealed', function($isSealed){
+ return function isSealed(it){
+ return isObject(it) ? $isSealed ? $isSealed(it) : false : true;
+ };
+ });
+
+/***/ },
+/* 63 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 19.1.2.11 Object.isExtensible(O)
+ var isObject = __webpack_require__(11);
+
+ __webpack_require__(51)('isExtensible', function($isExtensible){
+ return function isExtensible(it){
+ return isObject(it) ? $isExtensible ? $isExtensible(it) : true : false;
+ };
+ });
+
+/***/ },
+/* 64 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 19.1.3.1 Object.assign(target, source)
+ var $export = __webpack_require__(7);
+
+ $export($export.S + $export.F, 'Object', {assign: __webpack_require__(65)});
+
+/***/ },
+/* 65 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // 19.1.2.1 Object.assign(target, source, ...)
+ var getKeys = __webpack_require__(25)
+ , gOPS = __webpack_require__(38)
+ , pIE = __webpack_require__(39)
+ , toObject = __webpack_require__(54)
+ , IObject = __webpack_require__(28)
+ , $assign = Object.assign;
+
+ // should work with symbols and should have deterministic property order (V8 bug)
+ module.exports = !$assign || __webpack_require__(6)(function(){
+ var A = {}
+ , B = {}
+ , S = Symbol()
+ , K = 'abcdefghijklmnopqrst';
+ A[S] = 7;
+ K.split('').forEach(function(k){ B[k] = k; });
+ return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;
+ }) ? function assign(target, source){ // eslint-disable-line no-unused-vars
+ var T = toObject(target)
+ , aLen = arguments.length
+ , index = 1
+ , getSymbols = gOPS.f
+ , isEnum = pIE.f;
+ while(aLen > index){
+ var S = IObject(arguments[index++])
+ , keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S)
+ , length = keys.length
+ , j = 0
+ , key;
+ while(length > j)if(isEnum.call(S, key = keys[j++]))T[key] = S[key];
+ } return T;
+ } : $assign;
+
+/***/ },
+/* 66 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 19.1.3.10 Object.is(value1, value2)
+ var $export = __webpack_require__(7);
+ $export($export.S, 'Object', {is: __webpack_require__(67)});
+
+/***/ },
+/* 67 */
+/***/ function(module, exports) {
+
+ // 7.2.9 SameValue(x, y)
+ module.exports = Object.is || function is(x, y){
+ return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;
+ };
+
+/***/ },
+/* 68 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 19.1.3.19 Object.setPrototypeOf(O, proto)
+ var $export = __webpack_require__(7);
+ $export($export.S, 'Object', {setPrototypeOf: __webpack_require__(69).set});
+
+/***/ },
+/* 69 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // Works with __proto__ only. Old v8 can't work with null proto objects.
+ /* eslint-disable no-proto */
+ var isObject = __webpack_require__(11)
+ , anObject = __webpack_require__(10);
+ var check = function(O, proto){
+ anObject(O);
+ if(!isObject(proto) && proto !== null)throw TypeError(proto + ": can't set as prototype!");
+ };
+ module.exports = {
+ set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line
+ function(test, buggy, set){
+ try {
+ set = __webpack_require__(18)(Function.call, __webpack_require__(46).f(Object.prototype, '__proto__').set, 2);
+ set(test, []);
+ buggy = !(test instanceof Array);
+ } catch(e){ buggy = true; }
+ return function setPrototypeOf(O, proto){
+ check(O, proto);
+ if(buggy)O.__proto__ = proto;
+ else set(O, proto);
+ return O;
+ };
+ }({}, false) : undefined),
+ check: check
+ };
+
+/***/ },
+/* 70 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // 19.1.3.6 Object.prototype.toString()
+ var classof = __webpack_require__(71)
+ , test = {};
+ test[__webpack_require__(23)('toStringTag')] = 'z';
+ if(test + '' != '[object z]'){
+ __webpack_require__(16)(Object.prototype, 'toString', function toString(){
+ return '[object ' + classof(this) + ']';
+ }, true);
+ }
+
+/***/ },
+/* 71 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // getting tag from 19.1.3.6 Object.prototype.toString()
+ var cof = __webpack_require__(29)
+ , TAG = __webpack_require__(23)('toStringTag')
+ // ES3 wrong here
+ , ARG = cof(function(){ return arguments; }()) == 'Arguments';
+
+ // fallback for IE11 Script Access Denied error
+ var tryGet = function(it, key){
+ try {
+ return it[key];
+ } catch(e){ /* empty */ }
+ };
+
+ module.exports = function(it){
+ var O, T, B;
+ return it === undefined ? 'Undefined' : it === null ? 'Null'
+ // @@toStringTag case
+ : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T
+ // builtinTag case
+ : ARG ? cof(O)
+ // ES3 arguments fallback
+ : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;
+ };
+
+/***/ },
+/* 72 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 19.2.3.2 / 15.3.4.5 Function.prototype.bind(thisArg, args...)
+ var $export = __webpack_require__(7);
+
+ $export($export.P, 'Function', {bind: __webpack_require__(73)});
+
+/***/ },
+/* 73 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var aFunction = __webpack_require__(19)
+ , isObject = __webpack_require__(11)
+ , invoke = __webpack_require__(74)
+ , arraySlice = [].slice
+ , factories = {};
+
+ var construct = function(F, len, args){
+ if(!(len in factories)){
+ for(var n = [], i = 0; i < len; i++)n[i] = 'a[' + i + ']';
+ factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')');
+ } return factories[len](F, args);
+ };
+
+ module.exports = Function.bind || function bind(that /*, args... */){
+ var fn = aFunction(this)
+ , partArgs = arraySlice.call(arguments, 1);
+ var bound = function(/* args... */){
+ var args = partArgs.concat(arraySlice.call(arguments));
+ return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that);
+ };
+ if(isObject(fn.prototype))bound.prototype = fn.prototype;
+ return bound;
+ };
+
+/***/ },
+/* 74 */
+/***/ function(module, exports) {
+
+ // fast apply, http://jsperf.lnkit.com/fast-apply/5
+ module.exports = function(fn, args, that){
+ var un = that === undefined;
+ switch(args.length){
+ case 0: return un ? fn()
+ : fn.call(that);
+ case 1: return un ? fn(args[0])
+ : fn.call(that, args[0]);
+ case 2: return un ? fn(args[0], args[1])
+ : fn.call(that, args[0], args[1]);
+ case 3: return un ? fn(args[0], args[1], args[2])
+ : fn.call(that, args[0], args[1], args[2]);
+ case 4: return un ? fn(args[0], args[1], args[2], args[3])
+ : fn.call(that, args[0], args[1], args[2], args[3]);
+ } return fn.apply(that, args);
+ };
+
+/***/ },
+/* 75 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var dP = __webpack_require__(9).f
+ , createDesc = __webpack_require__(15)
+ , has = __webpack_require__(4)
+ , FProto = Function.prototype
+ , nameRE = /^\s*function ([^ (]*)/
+ , NAME = 'name';
+ // 19.2.4.2 name
+ NAME in FProto || __webpack_require__(5) && dP(FProto, NAME, {
+ configurable: true,
+ get: function(){
+ var match = ('' + this).match(nameRE)
+ , name = match ? match[1] : '';
+ has(this, NAME) || dP(this, NAME, createDesc(5, name));
+ return name;
+ }
+ });
+
+/***/ },
+/* 76 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var isObject = __webpack_require__(11)
+ , getPrototypeOf = __webpack_require__(55)
+ , HAS_INSTANCE = __webpack_require__(23)('hasInstance')
+ , FunctionProto = Function.prototype;
+ // 19.2.3.6 Function.prototype[@@hasInstance](V)
+ if(!(HAS_INSTANCE in FunctionProto))__webpack_require__(9).f(FunctionProto, HAS_INSTANCE, {value: function(O){
+ if(typeof this != 'function' || !isObject(O))return false;
+ if(!isObject(this.prototype))return O instanceof this;
+ // for environment w/o native `@@hasInstance` logic enough `instanceof`, but add this:
+ while(O = getPrototypeOf(O))if(this.prototype === O)return true;
+ return false;
+ }});
+
+/***/ },
+/* 77 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var global = __webpack_require__(2)
+ , has = __webpack_require__(4)
+ , cof = __webpack_require__(29)
+ , inheritIfRequired = __webpack_require__(78)
+ , toPrimitive = __webpack_require__(14)
+ , fails = __webpack_require__(6)
+ , gOPN = __webpack_require__(45).f
+ , gOPD = __webpack_require__(46).f
+ , dP = __webpack_require__(9).f
+ , $trim = __webpack_require__(79).trim
+ , NUMBER = 'Number'
+ , $Number = global[NUMBER]
+ , Base = $Number
+ , proto = $Number.prototype
+ // Opera ~12 has broken Object#toString
+ , BROKEN_COF = cof(__webpack_require__(41)(proto)) == NUMBER
+ , TRIM = 'trim' in String.prototype;
+
+ // 7.1.3 ToNumber(argument)
+ var toNumber = function(argument){
+ var it = toPrimitive(argument, false);
+ if(typeof it == 'string' && it.length > 2){
+ it = TRIM ? it.trim() : $trim(it, 3);
+ var first = it.charCodeAt(0)
+ , third, radix, maxCode;
+ if(first === 43 || first === 45){
+ third = it.charCodeAt(2);
+ if(third === 88 || third === 120)return NaN; // Number('+0x1') should be NaN, old V8 fix
+ } else if(first === 48){
+ switch(it.charCodeAt(1)){
+ case 66 : case 98 : radix = 2; maxCode = 49; break; // fast equal /^0b[01]+$/i
+ case 79 : case 111 : radix = 8; maxCode = 55; break; // fast equal /^0o[0-7]+$/i
+ default : return +it;
+ }
+ for(var digits = it.slice(2), i = 0, l = digits.length, code; i < l; i++){
+ code = digits.charCodeAt(i);
+ // parseInt parses a string to a first unavailable symbol
+ // but ToNumber should return NaN if a string contains unavailable symbols
+ if(code < 48 || code > maxCode)return NaN;
+ } return parseInt(digits, radix);
+ }
+ } return +it;
+ };
+
+ if(!$Number(' 0o1') || !$Number('0b1') || $Number('+0x1')){
+ $Number = function Number(value){
+ var it = arguments.length < 1 ? 0 : value
+ , that = this;
+ return that instanceof $Number
+ // check on 1..constructor(foo) case
+ && (BROKEN_COF ? fails(function(){ proto.valueOf.call(that); }) : cof(that) != NUMBER)
+ ? inheritIfRequired(new Base(toNumber(it)), that, $Number) : toNumber(it);
+ };
+ for(var keys = __webpack_require__(5) ? gOPN(Base) : (
+ // ES3:
+ 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +
+ // ES6 (in case, if modules with ES6 Number statics required before):
+ 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +
+ 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'
+ ).split(','), j = 0, key; keys.length > j; j++){
+ if(has(Base, key = keys[j]) && !has($Number, key)){
+ dP($Number, key, gOPD(Base, key));
+ }
+ }
+ $Number.prototype = proto;
+ proto.constructor = $Number;
+ __webpack_require__(16)(global, NUMBER, $Number);
+ }
+
+/***/ },
+/* 78 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var isObject = __webpack_require__(11)
+ , setPrototypeOf = __webpack_require__(69).set;
+ module.exports = function(that, target, C){
+ var P, S = target.constructor;
+ if(S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf){
+ setPrototypeOf(that, P);
+ } return that;
+ };
+
+/***/ },
+/* 79 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var $export = __webpack_require__(7)
+ , defined = __webpack_require__(30)
+ , fails = __webpack_require__(6)
+ , spaces = __webpack_require__(80)
+ , space = '[' + spaces + ']'
+ , non = '\u200b\u0085'
+ , ltrim = RegExp('^' + space + space + '*')
+ , rtrim = RegExp(space + space + '*$');
+
+ var exporter = function(KEY, exec, ALIAS){
+ var exp = {};
+ var FORCE = fails(function(){
+ return !!spaces[KEY]() || non[KEY]() != non;
+ });
+ var fn = exp[KEY] = FORCE ? exec(trim) : spaces[KEY];
+ if(ALIAS)exp[ALIAS] = fn;
+ $export($export.P + $export.F * FORCE, 'String', exp);
+ };
+
+ // 1 -> String#trimLeft
+ // 2 -> String#trimRight
+ // 3 -> String#trim
+ var trim = exporter.trim = function(string, TYPE){
+ string = String(defined(string));
+ if(TYPE & 1)string = string.replace(ltrim, '');
+ if(TYPE & 2)string = string.replace(rtrim, '');
+ return string;
+ };
+
+ module.exports = exporter;
+
+/***/ },
+/* 80 */
+/***/ function(module, exports) {
+
+ module.exports = '\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003' +
+ '\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF';
+
+/***/ },
+/* 81 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var $export = __webpack_require__(7)
+ , anInstance = __webpack_require__(82)
+ , toInteger = __webpack_require__(33)
+ , aNumberValue = __webpack_require__(83)
+ , repeat = __webpack_require__(84)
+ , $toFixed = 1..toFixed
+ , floor = Math.floor
+ , data = [0, 0, 0, 0, 0, 0]
+ , ERROR = 'Number.toFixed: incorrect invocation!'
+ , ZERO = '0';
+
+ var multiply = function(n, c){
+ var i = -1
+ , c2 = c;
+ while(++i < 6){
+ c2 += n * data[i];
+ data[i] = c2 % 1e7;
+ c2 = floor(c2 / 1e7);
+ }
+ };
+ var divide = function(n){
+ var i = 6
+ , c = 0;
+ while(--i >= 0){
+ c += data[i];
+ data[i] = floor(c / n);
+ c = (c % n) * 1e7;
+ }
+ };
+ var numToString = function(){
+ var i = 6
+ , s = '';
+ while(--i >= 0){
+ if(s !== '' || i === 0 || data[i] !== 0){
+ var t = String(data[i]);
+ s = s === '' ? t : s + repeat.call(ZERO, 7 - t.length) + t;
+ }
+ } return s;
+ };
+ var pow = function(x, n, acc){
+ return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);
+ };
+ var log = function(x){
+ var n = 0
+ , x2 = x;
+ while(x2 >= 4096){
+ n += 12;
+ x2 /= 4096;
+ }
+ while(x2 >= 2){
+ n += 1;
+ x2 /= 2;
+ } return n;
+ };
+
+ $export($export.P + $export.F * (!!$toFixed && (
+ 0.00008.toFixed(3) !== '0.000' ||
+ 0.9.toFixed(0) !== '1' ||
+ 1.255.toFixed(2) !== '1.25' ||
+ 1000000000000000128..toFixed(0) !== '1000000000000000128'
+ ) || !__webpack_require__(6)(function(){
+ // V8 ~ Android 4.3-
+ $toFixed.call({});
+ })), 'Number', {
+ toFixed: function toFixed(fractionDigits){
+ var x = aNumberValue(this, ERROR)
+ , f = toInteger(fractionDigits)
+ , s = ''
+ , m = ZERO
+ , e, z, j, k;
+ if(f < 0 || f > 20)throw RangeError(ERROR);
+ if(x != x)return 'NaN';
+ if(x <= -1e21 || x >= 1e21)return String(x);
+ if(x < 0){
+ s = '-';
+ x = -x;
+ }
+ if(x > 1e-21){
+ e = log(x * pow(2, 69, 1)) - 69;
+ z = e < 0 ? x * pow(2, -e, 1) : x / pow(2, e, 1);
+ z *= 0x10000000000000;
+ e = 52 - e;
+ if(e > 0){
+ multiply(0, z);
+ j = f;
+ while(j >= 7){
+ multiply(1e7, 0);
+ j -= 7;
+ }
+ multiply(pow(10, j, 1), 0);
+ j = e - 1;
+ while(j >= 23){
+ divide(1 << 23);
+ j -= 23;
+ }
+ divide(1 << j);
+ multiply(1, 1);
+ divide(2);
+ m = numToString();
+ } else {
+ multiply(0, z);
+ multiply(1 << -e, 0);
+ m = numToString() + repeat.call(ZERO, f);
+ }
+ }
+ if(f > 0){
+ k = m.length;
+ m = s + (k <= f ? '0.' + repeat.call(ZERO, f - k) + m : m.slice(0, k - f) + '.' + m.slice(k - f));
+ } else {
+ m = s + m;
+ } return m;
+ }
+ });
+
+/***/ },
+/* 82 */
+/***/ function(module, exports) {
+
+ module.exports = function(it, Constructor, name, forbiddenField){
+ if(!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)){
+ throw TypeError(name + ': incorrect invocation!');
+ } return it;
+ };
+
+/***/ },
+/* 83 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var cof = __webpack_require__(29);
+ module.exports = function(it, msg){
+ if(typeof it != 'number' && cof(it) != 'Number')throw TypeError(msg);
+ return +it;
+ };
+
+/***/ },
+/* 84 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var toInteger = __webpack_require__(33)
+ , defined = __webpack_require__(30);
+
+ module.exports = function repeat(count){
+ var str = String(defined(this))
+ , res = ''
+ , n = toInteger(count);
+ if(n < 0 || n == Infinity)throw RangeError("Count can't be negative");
+ for(;n > 0; (n >>>= 1) && (str += str))if(n & 1)res += str;
+ return res;
+ };
+
+/***/ },
+/* 85 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var $export = __webpack_require__(7)
+ , $fails = __webpack_require__(6)
+ , aNumberValue = __webpack_require__(83)
+ , $toPrecision = 1..toPrecision;
+
+ $export($export.P + $export.F * ($fails(function(){
+ // IE7-
+ return $toPrecision.call(1, undefined) !== '1';
+ }) || !$fails(function(){
+ // V8 ~ Android 4.3-
+ $toPrecision.call({});
+ })), 'Number', {
+ toPrecision: function toPrecision(precision){
+ var that = aNumberValue(this, 'Number#toPrecision: incorrect invocation!');
+ return precision === undefined ? $toPrecision.call(that) : $toPrecision.call(that, precision);
+ }
+ });
+
+/***/ },
+/* 86 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.1.2.1 Number.EPSILON
+ var $export = __webpack_require__(7);
+
+ $export($export.S, 'Number', {EPSILON: Math.pow(2, -52)});
+
+/***/ },
+/* 87 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.1.2.2 Number.isFinite(number)
+ var $export = __webpack_require__(7)
+ , _isFinite = __webpack_require__(2).isFinite;
+
+ $export($export.S, 'Number', {
+ isFinite: function isFinite(it){
+ return typeof it == 'number' && _isFinite(it);
+ }
+ });
+
+/***/ },
+/* 88 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.1.2.3 Number.isInteger(number)
+ var $export = __webpack_require__(7);
+
+ $export($export.S, 'Number', {isInteger: __webpack_require__(89)});
+
+/***/ },
+/* 89 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.1.2.3 Number.isInteger(number)
+ var isObject = __webpack_require__(11)
+ , floor = Math.floor;
+ module.exports = function isInteger(it){
+ return !isObject(it) && isFinite(it) && floor(it) === it;
+ };
+
+/***/ },
+/* 90 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.1.2.4 Number.isNaN(number)
+ var $export = __webpack_require__(7);
+
+ $export($export.S, 'Number', {
+ isNaN: function isNaN(number){
+ return number != number;
+ }
+ });
+
+/***/ },
+/* 91 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.1.2.5 Number.isSafeInteger(number)
+ var $export = __webpack_require__(7)
+ , isInteger = __webpack_require__(89)
+ , abs = Math.abs;
+
+ $export($export.S, 'Number', {
+ isSafeInteger: function isSafeInteger(number){
+ return isInteger(number) && abs(number) <= 0x1fffffffffffff;
+ }
+ });
+
+/***/ },
+/* 92 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.1.2.6 Number.MAX_SAFE_INTEGER
+ var $export = __webpack_require__(7);
+
+ $export($export.S, 'Number', {MAX_SAFE_INTEGER: 0x1fffffffffffff});
+
+/***/ },
+/* 93 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.1.2.10 Number.MIN_SAFE_INTEGER
+ var $export = __webpack_require__(7);
+
+ $export($export.S, 'Number', {MIN_SAFE_INTEGER: -0x1fffffffffffff});
+
+/***/ },
+/* 94 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var $export = __webpack_require__(7)
+ , $parseFloat = __webpack_require__(95);
+ // 20.1.2.12 Number.parseFloat(string)
+ $export($export.S + $export.F * (Number.parseFloat != $parseFloat), 'Number', {parseFloat: $parseFloat});
+
+/***/ },
+/* 95 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var $parseFloat = __webpack_require__(2).parseFloat
+ , $trim = __webpack_require__(79).trim;
+
+ module.exports = 1 / $parseFloat(__webpack_require__(80) + '-0') !== -Infinity ? function parseFloat(str){
+ var string = $trim(String(str), 3)
+ , result = $parseFloat(string);
+ return result === 0 && string.charAt(0) == '-' ? -0 : result;
+ } : $parseFloat;
+
+/***/ },
+/* 96 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var $export = __webpack_require__(7)
+ , $parseInt = __webpack_require__(97);
+ // 20.1.2.13 Number.parseInt(string, radix)
+ $export($export.S + $export.F * (Number.parseInt != $parseInt), 'Number', {parseInt: $parseInt});
+
+/***/ },
+/* 97 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var $parseInt = __webpack_require__(2).parseInt
+ , $trim = __webpack_require__(79).trim
+ , ws = __webpack_require__(80)
+ , hex = /^[\-+]?0[xX]/;
+
+ module.exports = $parseInt(ws + '08') !== 8 || $parseInt(ws + '0x16') !== 22 ? function parseInt(str, radix){
+ var string = $trim(String(str), 3);
+ return $parseInt(string, (radix >>> 0) || (hex.test(string) ? 16 : 10));
+ } : $parseInt;
+
+/***/ },
+/* 98 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var $export = __webpack_require__(7)
+ , $parseInt = __webpack_require__(97);
+ // 18.2.5 parseInt(string, radix)
+ $export($export.G + $export.F * (parseInt != $parseInt), {parseInt: $parseInt});
+
+/***/ },
+/* 99 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var $export = __webpack_require__(7)
+ , $parseFloat = __webpack_require__(95);
+ // 18.2.4 parseFloat(string)
+ $export($export.G + $export.F * (parseFloat != $parseFloat), {parseFloat: $parseFloat});
+
+/***/ },
+/* 100 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.2.2.3 Math.acosh(x)
+ var $export = __webpack_require__(7)
+ , log1p = __webpack_require__(101)
+ , sqrt = Math.sqrt
+ , $acosh = Math.acosh;
+
+ // V8 bug https://code.google.com/p/v8/issues/detail?id=3509
+ $export($export.S + $export.F * !($acosh && Math.floor($acosh(Number.MAX_VALUE)) == 710), 'Math', {
+ acosh: function acosh(x){
+ return (x = +x) < 1 ? NaN : x > 94906265.62425156
+ ? Math.log(x) + Math.LN2
+ : log1p(x - 1 + sqrt(x - 1) * sqrt(x + 1));
+ }
+ });
+
+/***/ },
+/* 101 */
+/***/ function(module, exports) {
+
+ // 20.2.2.20 Math.log1p(x)
+ module.exports = Math.log1p || function log1p(x){
+ return (x = +x) > -1e-8 && x < 1e-8 ? x - x * x / 2 : Math.log(1 + x);
+ };
+
+/***/ },
+/* 102 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.2.2.5 Math.asinh(x)
+ var $export = __webpack_require__(7);
+
+ function asinh(x){
+ return !isFinite(x = +x) || x == 0 ? x : x < 0 ? -asinh(-x) : Math.log(x + Math.sqrt(x * x + 1));
+ }
+
+ $export($export.S, 'Math', {asinh: asinh});
+
+/***/ },
+/* 103 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.2.2.7 Math.atanh(x)
+ var $export = __webpack_require__(7);
+
+ $export($export.S, 'Math', {
+ atanh: function atanh(x){
+ return (x = +x) == 0 ? x : Math.log((1 + x) / (1 - x)) / 2;
+ }
+ });
+
+/***/ },
+/* 104 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.2.2.9 Math.cbrt(x)
+ var $export = __webpack_require__(7)
+ , sign = __webpack_require__(105);
+
+ $export($export.S, 'Math', {
+ cbrt: function cbrt(x){
+ return sign(x = +x) * Math.pow(Math.abs(x), 1 / 3);
+ }
+ });
+
+/***/ },
+/* 105 */
+/***/ function(module, exports) {
+
+ // 20.2.2.28 Math.sign(x)
+ module.exports = Math.sign || function sign(x){
+ return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1;
+ };
+
+/***/ },
+/* 106 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.2.2.11 Math.clz32(x)
+ var $export = __webpack_require__(7);
+
+ $export($export.S, 'Math', {
+ clz32: function clz32(x){
+ return (x >>>= 0) ? 31 - Math.floor(Math.log(x + 0.5) * Math.LOG2E) : 32;
+ }
+ });
+
+/***/ },
+/* 107 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.2.2.12 Math.cosh(x)
+ var $export = __webpack_require__(7)
+ , exp = Math.exp;
+
+ $export($export.S, 'Math', {
+ cosh: function cosh(x){
+ return (exp(x = +x) + exp(-x)) / 2;
+ }
+ });
+
+/***/ },
+/* 108 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.2.2.14 Math.expm1(x)
+ var $export = __webpack_require__(7);
+
+ $export($export.S, 'Math', {expm1: __webpack_require__(109)});
+
+/***/ },
+/* 109 */
+/***/ function(module, exports) {
+
+ // 20.2.2.14 Math.expm1(x)
+ module.exports = Math.expm1 || function expm1(x){
+ return (x = +x) == 0 ? x : x > -1e-6 && x < 1e-6 ? x + x * x / 2 : Math.exp(x) - 1;
+ };
+
+/***/ },
+/* 110 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.2.2.16 Math.fround(x)
+ var $export = __webpack_require__(7)
+ , sign = __webpack_require__(105)
+ , pow = Math.pow
+ , EPSILON = pow(2, -52)
+ , EPSILON32 = pow(2, -23)
+ , MAX32 = pow(2, 127) * (2 - EPSILON32)
+ , MIN32 = pow(2, -126);
+
+ var roundTiesToEven = function(n){
+ return n + 1 / EPSILON - 1 / EPSILON;
+ };
+
+
+ $export($export.S, 'Math', {
+ fround: function fround(x){
+ var $abs = Math.abs(x)
+ , $sign = sign(x)
+ , a, result;
+ if($abs < MIN32)return $sign * roundTiesToEven($abs / MIN32 / EPSILON32) * MIN32 * EPSILON32;
+ a = (1 + EPSILON32 / EPSILON) * $abs;
+ result = a - (a - $abs);
+ if(result > MAX32 || result != result)return $sign * Infinity;
+ return $sign * result;
+ }
+ });
+
+/***/ },
+/* 111 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.2.2.17 Math.hypot([value1[, value2[, … ]]])
+ var $export = __webpack_require__(7)
+ , abs = Math.abs;
+
+ $export($export.S, 'Math', {
+ hypot: function hypot(value1, value2){ // eslint-disable-line no-unused-vars
+ var sum = 0
+ , i = 0
+ , aLen = arguments.length
+ , larg = 0
+ , arg, div;
+ while(i < aLen){
+ arg = abs(arguments[i++]);
+ if(larg < arg){
+ div = larg / arg;
+ sum = sum * div * div + 1;
+ larg = arg;
+ } else if(arg > 0){
+ div = arg / larg;
+ sum += div * div;
+ } else sum += arg;
+ }
+ return larg === Infinity ? Infinity : larg * Math.sqrt(sum);
+ }
+ });
+
+/***/ },
+/* 112 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.2.2.18 Math.imul(x, y)
+ var $export = __webpack_require__(7)
+ , $imul = Math.imul;
+
+ // some WebKit versions fails with big numbers, some has wrong arity
+ $export($export.S + $export.F * __webpack_require__(6)(function(){
+ return $imul(0xffffffff, 5) != -5 || $imul.length != 2;
+ }), 'Math', {
+ imul: function imul(x, y){
+ var UINT16 = 0xffff
+ , xn = +x
+ , yn = +y
+ , xl = UINT16 & xn
+ , yl = UINT16 & yn;
+ return 0 | xl * yl + ((UINT16 & xn >>> 16) * yl + xl * (UINT16 & yn >>> 16) << 16 >>> 0);
+ }
+ });
+
+/***/ },
+/* 113 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.2.2.21 Math.log10(x)
+ var $export = __webpack_require__(7);
+
+ $export($export.S, 'Math', {
+ log10: function log10(x){
+ return Math.log(x) / Math.LN10;
+ }
+ });
+
+/***/ },
+/* 114 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.2.2.20 Math.log1p(x)
+ var $export = __webpack_require__(7);
+
+ $export($export.S, 'Math', {log1p: __webpack_require__(101)});
+
+/***/ },
+/* 115 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.2.2.22 Math.log2(x)
+ var $export = __webpack_require__(7);
+
+ $export($export.S, 'Math', {
+ log2: function log2(x){
+ return Math.log(x) / Math.LN2;
+ }
+ });
+
+/***/ },
+/* 116 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.2.2.28 Math.sign(x)
+ var $export = __webpack_require__(7);
+
+ $export($export.S, 'Math', {sign: __webpack_require__(105)});
+
+/***/ },
+/* 117 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.2.2.30 Math.sinh(x)
+ var $export = __webpack_require__(7)
+ , expm1 = __webpack_require__(109)
+ , exp = Math.exp;
+
+ // V8 near Chromium 38 has a problem with very small numbers
+ $export($export.S + $export.F * __webpack_require__(6)(function(){
+ return !Math.sinh(-2e-17) != -2e-17;
+ }), 'Math', {
+ sinh: function sinh(x){
+ return Math.abs(x = +x) < 1
+ ? (expm1(x) - expm1(-x)) / 2
+ : (exp(x - 1) - exp(-x - 1)) * (Math.E / 2);
+ }
+ });
+
+/***/ },
+/* 118 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.2.2.33 Math.tanh(x)
+ var $export = __webpack_require__(7)
+ , expm1 = __webpack_require__(109)
+ , exp = Math.exp;
+
+ $export($export.S, 'Math', {
+ tanh: function tanh(x){
+ var a = expm1(x = +x)
+ , b = expm1(-x);
+ return a == Infinity ? 1 : b == Infinity ? -1 : (a - b) / (exp(x) + exp(-x));
+ }
+ });
+
+/***/ },
+/* 119 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.2.2.34 Math.trunc(x)
+ var $export = __webpack_require__(7);
+
+ $export($export.S, 'Math', {
+ trunc: function trunc(it){
+ return (it > 0 ? Math.floor : Math.ceil)(it);
+ }
+ });
+
+/***/ },
+/* 120 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var $export = __webpack_require__(7)
+ , toIndex = __webpack_require__(34)
+ , fromCharCode = String.fromCharCode
+ , $fromCodePoint = String.fromCodePoint;
+
+ // length should be 1, old FF problem
+ $export($export.S + $export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', {
+ // 21.1.2.2 String.fromCodePoint(...codePoints)
+ fromCodePoint: function fromCodePoint(x){ // eslint-disable-line no-unused-vars
+ var res = []
+ , aLen = arguments.length
+ , i = 0
+ , code;
+ while(aLen > i){
+ code = +arguments[i++];
+ if(toIndex(code, 0x10ffff) !== code)throw RangeError(code + ' is not a valid code point');
+ res.push(code < 0x10000
+ ? fromCharCode(code)
+ : fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00)
+ );
+ } return res.join('');
+ }
+ });
+
+/***/ },
+/* 121 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var $export = __webpack_require__(7)
+ , toIObject = __webpack_require__(27)
+ , toLength = __webpack_require__(32);
+
+ $export($export.S, 'String', {
+ // 21.1.2.4 String.raw(callSite, ...substitutions)
+ raw: function raw(callSite){
+ var tpl = toIObject(callSite.raw)
+ , len = toLength(tpl.length)
+ , aLen = arguments.length
+ , res = []
+ , i = 0;
+ while(len > i){
+ res.push(String(tpl[i++]));
+ if(i < aLen)res.push(String(arguments[i]));
+ } return res.join('');
+ }
+ });
+
+/***/ },
+/* 122 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // 21.1.3.25 String.prototype.trim()
+ __webpack_require__(79)('trim', function($trim){
+ return function trim(){
+ return $trim(this, 3);
+ };
+ });
+
+/***/ },
+/* 123 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var $export = __webpack_require__(7)
+ , $at = __webpack_require__(124)(false);
+ $export($export.P, 'String', {
+ // 21.1.3.3 String.prototype.codePointAt(pos)
+ codePointAt: function codePointAt(pos){
+ return $at(this, pos);
+ }
+ });
+
+/***/ },
+/* 124 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var toInteger = __webpack_require__(33)
+ , defined = __webpack_require__(30);
+ // true -> String#at
+ // false -> String#codePointAt
+ module.exports = function(TO_STRING){
+ return function(that, pos){
+ var s = String(defined(that))
+ , i = toInteger(pos)
+ , l = s.length
+ , a, b;
+ if(i < 0 || i >= l)return TO_STRING ? '' : undefined;
+ a = s.charCodeAt(i);
+ return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff
+ ? TO_STRING ? s.charAt(i) : a
+ : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;
+ };
+ };
+
+/***/ },
+/* 125 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 21.1.3.6 String.prototype.endsWith(searchString [, endPosition])
+ 'use strict';
+ var $export = __webpack_require__(7)
+ , toLength = __webpack_require__(32)
+ , context = __webpack_require__(126)
+ , ENDS_WITH = 'endsWith'
+ , $endsWith = ''[ENDS_WITH];
+
+ $export($export.P + $export.F * __webpack_require__(128)(ENDS_WITH), 'String', {
+ endsWith: function endsWith(searchString /*, endPosition = @length */){
+ var that = context(this, searchString, ENDS_WITH)
+ , endPosition = arguments.length > 1 ? arguments[1] : undefined
+ , len = toLength(that.length)
+ , end = endPosition === undefined ? len : Math.min(toLength(endPosition), len)
+ , search = String(searchString);
+ return $endsWith
+ ? $endsWith.call(that, search, end)
+ : that.slice(end - search.length, end) === search;
+ }
+ });
+
+/***/ },
+/* 126 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // helper for String#{startsWith, endsWith, includes}
+ var isRegExp = __webpack_require__(127)
+ , defined = __webpack_require__(30);
+
+ module.exports = function(that, searchString, NAME){
+ if(isRegExp(searchString))throw TypeError('String#' + NAME + " doesn't accept regex!");
+ return String(defined(that));
+ };
+
+/***/ },
+/* 127 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 7.2.8 IsRegExp(argument)
+ var isObject = __webpack_require__(11)
+ , cof = __webpack_require__(29)
+ , MATCH = __webpack_require__(23)('match');
+ module.exports = function(it){
+ var isRegExp;
+ return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');
+ };
+
+/***/ },
+/* 128 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var MATCH = __webpack_require__(23)('match');
+ module.exports = function(KEY){
+ var re = /./;
+ try {
+ '/./'[KEY](re);
+ } catch(e){
+ try {
+ re[MATCH] = false;
+ return !'/./'[KEY](re);
+ } catch(f){ /* empty */ }
+ } return true;
+ };
+
+/***/ },
+/* 129 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 21.1.3.7 String.prototype.includes(searchString, position = 0)
+ 'use strict';
+ var $export = __webpack_require__(7)
+ , context = __webpack_require__(126)
+ , INCLUDES = 'includes';
+
+ $export($export.P + $export.F * __webpack_require__(128)(INCLUDES), 'String', {
+ includes: function includes(searchString /*, position = 0 */){
+ return !!~context(this, searchString, INCLUDES)
+ .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);
+ }
+ });
+
+/***/ },
+/* 130 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var $export = __webpack_require__(7);
+
+ $export($export.P, 'String', {
+ // 21.1.3.13 String.prototype.repeat(count)
+ repeat: __webpack_require__(84)
+ });
+
+/***/ },
+/* 131 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 21.1.3.18 String.prototype.startsWith(searchString [, position ])
+ 'use strict';
+ var $export = __webpack_require__(7)
+ , toLength = __webpack_require__(32)
+ , context = __webpack_require__(126)
+ , STARTS_WITH = 'startsWith'
+ , $startsWith = ''[STARTS_WITH];
+
+ $export($export.P + $export.F * __webpack_require__(128)(STARTS_WITH), 'String', {
+ startsWith: function startsWith(searchString /*, position = 0 */){
+ var that = context(this, searchString, STARTS_WITH)
+ , index = toLength(Math.min(arguments.length > 1 ? arguments[1] : undefined, that.length))
+ , search = String(searchString);
+ return $startsWith
+ ? $startsWith.call(that, search, index)
+ : that.slice(index, index + search.length) === search;
+ }
+ });
+
+/***/ },
+/* 132 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var $at = __webpack_require__(124)(true);
+
+ // 21.1.3.27 String.prototype[@@iterator]()
+ __webpack_require__(133)(String, 'String', function(iterated){
+ this._t = String(iterated); // target
+ this._i = 0; // next index
+ // 21.1.5.2.1 %StringIteratorPrototype%.next()
+ }, function(){
+ var O = this._t
+ , index = this._i
+ , point;
+ if(index >= O.length)return {value: undefined, done: true};
+ point = $at(O, index);
+ this._i += point.length;
+ return {value: point, done: false};
+ });
+
+/***/ },
+/* 133 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var LIBRARY = __webpack_require__(47)
+ , $export = __webpack_require__(7)
+ , redefine = __webpack_require__(16)
+ , hide = __webpack_require__(8)
+ , has = __webpack_require__(4)
+ , Iterators = __webpack_require__(134)
+ , $iterCreate = __webpack_require__(135)
+ , setToStringTag = __webpack_require__(22)
+ , getPrototypeOf = __webpack_require__(55)
+ , ITERATOR = __webpack_require__(23)('iterator')
+ , BUGGY = !([].keys && 'next' in [].keys()) // Safari has buggy iterators w/o `next`
+ , FF_ITERATOR = '@@iterator'
+ , KEYS = 'keys'
+ , VALUES = 'values';
+
+ var returnThis = function(){ return this; };
+
+ module.exports = function(Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED){
+ $iterCreate(Constructor, NAME, next);
+ var getMethod = function(kind){
+ if(!BUGGY && kind in proto)return proto[kind];
+ switch(kind){
+ case KEYS: return function keys(){ return new Constructor(this, kind); };
+ case VALUES: return function values(){ return new Constructor(this, kind); };
+ } return function entries(){ return new Constructor(this, kind); };
+ };
+ var TAG = NAME + ' Iterator'
+ , DEF_VALUES = DEFAULT == VALUES
+ , VALUES_BUG = false
+ , proto = Base.prototype
+ , $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT]
+ , $default = $native || getMethod(DEFAULT)
+ , $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined
+ , $anyNative = NAME == 'Array' ? proto.entries || $native : $native
+ , methods, key, IteratorPrototype;
+ // Fix native
+ if($anyNative){
+ IteratorPrototype = getPrototypeOf($anyNative.call(new Base));
+ if(IteratorPrototype !== Object.prototype){
+ // Set @@toStringTag to native iterators
+ setToStringTag(IteratorPrototype, TAG, true);
+ // fix for some old engines
+ if(!LIBRARY && !has(IteratorPrototype, ITERATOR))hide(IteratorPrototype, ITERATOR, returnThis);
+ }
+ }
+ // fix Array#{values, @@iterator}.name in V8 / FF
+ if(DEF_VALUES && $native && $native.name !== VALUES){
+ VALUES_BUG = true;
+ $default = function values(){ return $native.call(this); };
+ }
+ // Define iterator
+ if((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])){
+ hide(proto, ITERATOR, $default);
+ }
+ // Plug for library
+ Iterators[NAME] = $default;
+ Iterators[TAG] = returnThis;
+ if(DEFAULT){
+ methods = {
+ values: DEF_VALUES ? $default : getMethod(VALUES),
+ keys: IS_SET ? $default : getMethod(KEYS),
+ entries: $entries
+ };
+ if(FORCED)for(key in methods){
+ if(!(key in proto))redefine(proto, key, methods[key]);
+ } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);
+ }
+ return methods;
+ };
+
+/***/ },
+/* 134 */
+/***/ function(module, exports) {
+
+ module.exports = {};
+
+/***/ },
+/* 135 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var create = __webpack_require__(41)
+ , descriptor = __webpack_require__(15)
+ , setToStringTag = __webpack_require__(22)
+ , IteratorPrototype = {};
+
+ // 25.1.2.1.1 %IteratorPrototype%[@@iterator]()
+ __webpack_require__(8)(IteratorPrototype, __webpack_require__(23)('iterator'), function(){ return this; });
+
+ module.exports = function(Constructor, NAME, next){
+ Constructor.prototype = create(IteratorPrototype, {next: descriptor(1, next)});
+ setToStringTag(Constructor, NAME + ' Iterator');
+ };
+
+/***/ },
+/* 136 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // B.2.3.2 String.prototype.anchor(name)
+ __webpack_require__(137)('anchor', function(createHTML){
+ return function anchor(name){
+ return createHTML(this, 'a', 'name', name);
+ }
+ });
+
+/***/ },
+/* 137 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var $export = __webpack_require__(7)
+ , fails = __webpack_require__(6)
+ , defined = __webpack_require__(30)
+ , quot = /"/g;
+ // B.2.3.2.1 CreateHTML(string, tag, attribute, value)
+ var createHTML = function(string, tag, attribute, value) {
+ var S = String(defined(string))
+ , p1 = '<' + tag;
+ if(attribute !== '')p1 += ' ' + attribute + '="' + String(value).replace(quot, '"') + '"';
+ return p1 + '>' + S + '' + tag + '>';
+ };
+ module.exports = function(NAME, exec){
+ var O = {};
+ O[NAME] = exec(createHTML);
+ $export($export.P + $export.F * fails(function(){
+ var test = ''[NAME]('"');
+ return test !== test.toLowerCase() || test.split('"').length > 3;
+ }), 'String', O);
+ };
+
+/***/ },
+/* 138 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // B.2.3.3 String.prototype.big()
+ __webpack_require__(137)('big', function(createHTML){
+ return function big(){
+ return createHTML(this, 'big', '', '');
+ }
+ });
+
+/***/ },
+/* 139 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // B.2.3.4 String.prototype.blink()
+ __webpack_require__(137)('blink', function(createHTML){
+ return function blink(){
+ return createHTML(this, 'blink', '', '');
+ }
+ });
+
+/***/ },
+/* 140 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // B.2.3.5 String.prototype.bold()
+ __webpack_require__(137)('bold', function(createHTML){
+ return function bold(){
+ return createHTML(this, 'b', '', '');
+ }
+ });
+
+/***/ },
+/* 141 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // B.2.3.6 String.prototype.fixed()
+ __webpack_require__(137)('fixed', function(createHTML){
+ return function fixed(){
+ return createHTML(this, 'tt', '', '');
+ }
+ });
+
+/***/ },
+/* 142 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // B.2.3.7 String.prototype.fontcolor(color)
+ __webpack_require__(137)('fontcolor', function(createHTML){
+ return function fontcolor(color){
+ return createHTML(this, 'font', 'color', color);
+ }
+ });
+
+/***/ },
+/* 143 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // B.2.3.8 String.prototype.fontsize(size)
+ __webpack_require__(137)('fontsize', function(createHTML){
+ return function fontsize(size){
+ return createHTML(this, 'font', 'size', size);
+ }
+ });
+
+/***/ },
+/* 144 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // B.2.3.9 String.prototype.italics()
+ __webpack_require__(137)('italics', function(createHTML){
+ return function italics(){
+ return createHTML(this, 'i', '', '');
+ }
+ });
+
+/***/ },
+/* 145 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // B.2.3.10 String.prototype.link(url)
+ __webpack_require__(137)('link', function(createHTML){
+ return function link(url){
+ return createHTML(this, 'a', 'href', url);
+ }
+ });
+
+/***/ },
+/* 146 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // B.2.3.11 String.prototype.small()
+ __webpack_require__(137)('small', function(createHTML){
+ return function small(){
+ return createHTML(this, 'small', '', '');
+ }
+ });
+
+/***/ },
+/* 147 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // B.2.3.12 String.prototype.strike()
+ __webpack_require__(137)('strike', function(createHTML){
+ return function strike(){
+ return createHTML(this, 'strike', '', '');
+ }
+ });
+
+/***/ },
+/* 148 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // B.2.3.13 String.prototype.sub()
+ __webpack_require__(137)('sub', function(createHTML){
+ return function sub(){
+ return createHTML(this, 'sub', '', '');
+ }
+ });
+
+/***/ },
+/* 149 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // B.2.3.14 String.prototype.sup()
+ __webpack_require__(137)('sup', function(createHTML){
+ return function sup(){
+ return createHTML(this, 'sup', '', '');
+ }
+ });
+
+/***/ },
+/* 150 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 22.1.2.2 / 15.4.3.2 Array.isArray(arg)
+ var $export = __webpack_require__(7);
+
+ $export($export.S, 'Array', {isArray: __webpack_require__(40)});
+
+/***/ },
+/* 151 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var ctx = __webpack_require__(18)
+ , $export = __webpack_require__(7)
+ , toObject = __webpack_require__(54)
+ , call = __webpack_require__(152)
+ , isArrayIter = __webpack_require__(153)
+ , toLength = __webpack_require__(32)
+ , getIterFn = __webpack_require__(154);
+ $export($export.S + $export.F * !__webpack_require__(155)(function(iter){ Array.from(iter); }), 'Array', {
+ // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)
+ from: function from(arrayLike/*, mapfn = undefined, thisArg = undefined*/){
+ var O = toObject(arrayLike)
+ , C = typeof this == 'function' ? this : Array
+ , aLen = arguments.length
+ , mapfn = aLen > 1 ? arguments[1] : undefined
+ , mapping = mapfn !== undefined
+ , index = 0
+ , iterFn = getIterFn(O)
+ , length, result, step, iterator;
+ if(mapping)mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);
+ // if object isn't iterable or it's array with default iterator - use simple case
+ if(iterFn != undefined && !(C == Array && isArrayIter(iterFn))){
+ for(iterator = iterFn.call(O), result = new C; !(step = iterator.next()).done; index++){
+ result[index] = mapping ? call(iterator, mapfn, [step.value, index], true) : step.value;
+ }
+ } else {
+ length = toLength(O.length);
+ for(result = new C(length); length > index; index++){
+ result[index] = mapping ? mapfn(O[index], index) : O[index];
+ }
+ }
+ result.length = index;
+ return result;
+ }
+ });
+
+
+/***/ },
+/* 152 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // call something on iterator step with safe closing on error
+ var anObject = __webpack_require__(10);
+ module.exports = function(iterator, fn, value, entries){
+ try {
+ return entries ? fn(anObject(value)[0], value[1]) : fn(value);
+ // 7.4.6 IteratorClose(iterator, completion)
+ } catch(e){
+ var ret = iterator['return'];
+ if(ret !== undefined)anObject(ret.call(iterator));
+ throw e;
+ }
+ };
+
+/***/ },
+/* 153 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // check on default Array iterator
+ var Iterators = __webpack_require__(134)
+ , ITERATOR = __webpack_require__(23)('iterator')
+ , ArrayProto = Array.prototype;
+
+ module.exports = function(it){
+ return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);
+ };
+
+/***/ },
+/* 154 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var classof = __webpack_require__(71)
+ , ITERATOR = __webpack_require__(23)('iterator')
+ , Iterators = __webpack_require__(134);
+ module.exports = __webpack_require__(3).getIteratorMethod = function(it){
+ if(it != undefined)return it[ITERATOR]
+ || it['@@iterator']
+ || Iterators[classof(it)];
+ };
+
+/***/ },
+/* 155 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var ITERATOR = __webpack_require__(23)('iterator')
+ , SAFE_CLOSING = false;
+
+ try {
+ var riter = [7][ITERATOR]();
+ riter['return'] = function(){ SAFE_CLOSING = true; };
+ Array.from(riter, function(){ throw 2; });
+ } catch(e){ /* empty */ }
+
+ module.exports = function(exec, skipClosing){
+ if(!skipClosing && !SAFE_CLOSING)return false;
+ var safe = false;
+ try {
+ var arr = [7]
+ , iter = arr[ITERATOR]();
+ iter.next = function(){ safe = true; };
+ arr[ITERATOR] = function(){ return iter; };
+ exec(arr);
+ } catch(e){ /* empty */ }
+ return safe;
+ };
+
+/***/ },
+/* 156 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var $export = __webpack_require__(7);
+
+ // WebKit Array.of isn't generic
+ $export($export.S + $export.F * __webpack_require__(6)(function(){
+ function F(){}
+ return !(Array.of.call(F) instanceof F);
+ }), 'Array', {
+ // 22.1.2.3 Array.of( ...items)
+ of: function of(/* ...args */){
+ var index = 0
+ , aLen = arguments.length
+ , result = new (typeof this == 'function' ? this : Array)(aLen);
+ while(aLen > index)result[index] = arguments[index++];
+ result.length = aLen;
+ return result;
+ }
+ });
+
+/***/ },
+/* 157 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // 22.1.3.13 Array.prototype.join(separator)
+ var $export = __webpack_require__(7)
+ , toIObject = __webpack_require__(27)
+ , arrayJoin = [].join;
+
+ // fallback for not array-like strings
+ $export($export.P + $export.F * (__webpack_require__(28) != Object || !__webpack_require__(158)(arrayJoin)), 'Array', {
+ join: function join(separator){
+ return arrayJoin.call(toIObject(this), separator === undefined ? ',' : separator);
+ }
+ });
+
+/***/ },
+/* 158 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var fails = __webpack_require__(6);
+
+ module.exports = function(method, arg){
+ return !!method && fails(function(){
+ arg ? method.call(null, function(){}, 1) : method.call(null);
+ });
+ };
+
+/***/ },
+/* 159 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var $export = __webpack_require__(7)
+ , html = __webpack_require__(43)
+ , cof = __webpack_require__(29)
+ , toIndex = __webpack_require__(34)
+ , toLength = __webpack_require__(32)
+ , arraySlice = [].slice;
+
+ // fallback for not array-like ES3 strings and DOM objects
+ $export($export.P + $export.F * __webpack_require__(6)(function(){
+ if(html)arraySlice.call(html);
+ }), 'Array', {
+ slice: function slice(begin, end){
+ var len = toLength(this.length)
+ , klass = cof(this);
+ end = end === undefined ? len : end;
+ if(klass == 'Array')return arraySlice.call(this, begin, end);
+ var start = toIndex(begin, len)
+ , upTo = toIndex(end, len)
+ , size = toLength(upTo - start)
+ , cloned = Array(size)
+ , i = 0;
+ for(; i < size; i++)cloned[i] = klass == 'String'
+ ? this.charAt(start + i)
+ : this[start + i];
+ return cloned;
+ }
+ });
+
+/***/ },
+/* 160 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var $export = __webpack_require__(7)
+ , aFunction = __webpack_require__(19)
+ , toObject = __webpack_require__(54)
+ , fails = __webpack_require__(6)
+ , $sort = [].sort
+ , test = [1, 2, 3];
+
+ $export($export.P + $export.F * (fails(function(){
+ // IE8-
+ test.sort(undefined);
+ }) || !fails(function(){
+ // V8 bug
+ test.sort(null);
+ // Old WebKit
+ }) || !__webpack_require__(158)($sort)), 'Array', {
+ // 22.1.3.25 Array.prototype.sort(comparefn)
+ sort: function sort(comparefn){
+ return comparefn === undefined
+ ? $sort.call(toObject(this))
+ : $sort.call(toObject(this), aFunction(comparefn));
+ }
+ });
+
+/***/ },
+/* 161 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var $export = __webpack_require__(7)
+ , $forEach = __webpack_require__(162)(0)
+ , STRICT = __webpack_require__(158)([].forEach, true);
+
+ $export($export.P + $export.F * !STRICT, 'Array', {
+ // 22.1.3.10 / 15.4.4.18 Array.prototype.forEach(callbackfn [, thisArg])
+ forEach: function forEach(callbackfn /* , thisArg */){
+ return $forEach(this, callbackfn, arguments[1]);
+ }
+ });
+
+/***/ },
+/* 162 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 0 -> Array#forEach
+ // 1 -> Array#map
+ // 2 -> Array#filter
+ // 3 -> Array#some
+ // 4 -> Array#every
+ // 5 -> Array#find
+ // 6 -> Array#findIndex
+ var ctx = __webpack_require__(18)
+ , IObject = __webpack_require__(28)
+ , toObject = __webpack_require__(54)
+ , toLength = __webpack_require__(32)
+ , asc = __webpack_require__(163);
+ module.exports = function(TYPE, $create){
+ var IS_MAP = TYPE == 1
+ , IS_FILTER = TYPE == 2
+ , IS_SOME = TYPE == 3
+ , IS_EVERY = TYPE == 4
+ , IS_FIND_INDEX = TYPE == 6
+ , NO_HOLES = TYPE == 5 || IS_FIND_INDEX
+ , create = $create || asc;
+ return function($this, callbackfn, that){
+ var O = toObject($this)
+ , self = IObject(O)
+ , f = ctx(callbackfn, that, 3)
+ , length = toLength(self.length)
+ , index = 0
+ , result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined
+ , val, res;
+ for(;length > index; index++)if(NO_HOLES || index in self){
+ val = self[index];
+ res = f(val, index, O);
+ if(TYPE){
+ if(IS_MAP)result[index] = res; // map
+ else if(res)switch(TYPE){
+ case 3: return true; // some
+ case 5: return val; // find
+ case 6: return index; // findIndex
+ case 2: result.push(val); // filter
+ } else if(IS_EVERY)return false; // every
+ }
+ }
+ return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;
+ };
+ };
+
+/***/ },
+/* 163 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 9.4.2.3 ArraySpeciesCreate(originalArray, length)
+ var isObject = __webpack_require__(11)
+ , isArray = __webpack_require__(40)
+ , SPECIES = __webpack_require__(23)('species');
+ module.exports = function(original, length){
+ var C;
+ if(isArray(original)){
+ C = original.constructor;
+ // cross-realm fallback
+ if(typeof C == 'function' && (C === Array || isArray(C.prototype)))C = undefined;
+ if(isObject(C)){
+ C = C[SPECIES];
+ if(C === null)C = undefined;
+ }
+ } return new (C === undefined ? Array : C)(length);
+ };
+
+/***/ },
+/* 164 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var $export = __webpack_require__(7)
+ , $map = __webpack_require__(162)(1);
+
+ $export($export.P + $export.F * !__webpack_require__(158)([].map, true), 'Array', {
+ // 22.1.3.15 / 15.4.4.19 Array.prototype.map(callbackfn [, thisArg])
+ map: function map(callbackfn /* , thisArg */){
+ return $map(this, callbackfn, arguments[1]);
+ }
+ });
+
+/***/ },
+/* 165 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var $export = __webpack_require__(7)
+ , $filter = __webpack_require__(162)(2);
+
+ $export($export.P + $export.F * !__webpack_require__(158)([].filter, true), 'Array', {
+ // 22.1.3.7 / 15.4.4.20 Array.prototype.filter(callbackfn [, thisArg])
+ filter: function filter(callbackfn /* , thisArg */){
+ return $filter(this, callbackfn, arguments[1]);
+ }
+ });
+
+/***/ },
+/* 166 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var $export = __webpack_require__(7)
+ , $some = __webpack_require__(162)(3);
+
+ $export($export.P + $export.F * !__webpack_require__(158)([].some, true), 'Array', {
+ // 22.1.3.23 / 15.4.4.17 Array.prototype.some(callbackfn [, thisArg])
+ some: function some(callbackfn /* , thisArg */){
+ return $some(this, callbackfn, arguments[1]);
+ }
+ });
+
+/***/ },
+/* 167 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var $export = __webpack_require__(7)
+ , $every = __webpack_require__(162)(4);
+
+ $export($export.P + $export.F * !__webpack_require__(158)([].every, true), 'Array', {
+ // 22.1.3.5 / 15.4.4.16 Array.prototype.every(callbackfn [, thisArg])
+ every: function every(callbackfn /* , thisArg */){
+ return $every(this, callbackfn, arguments[1]);
+ }
+ });
+
+/***/ },
+/* 168 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var $export = __webpack_require__(7)
+ , $reduce = __webpack_require__(169);
+
+ $export($export.P + $export.F * !__webpack_require__(158)([].reduce, true), 'Array', {
+ // 22.1.3.18 / 15.4.4.21 Array.prototype.reduce(callbackfn [, initialValue])
+ reduce: function reduce(callbackfn /* , initialValue */){
+ return $reduce(this, callbackfn, arguments.length, arguments[1], false);
+ }
+ });
+
+/***/ },
+/* 169 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var aFunction = __webpack_require__(19)
+ , toObject = __webpack_require__(54)
+ , IObject = __webpack_require__(28)
+ , toLength = __webpack_require__(32);
+
+ module.exports = function(that, callbackfn, aLen, memo, isRight){
+ aFunction(callbackfn);
+ var O = toObject(that)
+ , self = IObject(O)
+ , length = toLength(O.length)
+ , index = isRight ? length - 1 : 0
+ , i = isRight ? -1 : 1;
+ if(aLen < 2)for(;;){
+ if(index in self){
+ memo = self[index];
+ index += i;
+ break;
+ }
+ index += i;
+ if(isRight ? index < 0 : length <= index){
+ throw TypeError('Reduce of empty array with no initial value');
+ }
+ }
+ for(;isRight ? index >= 0 : length > index; index += i)if(index in self){
+ memo = callbackfn(memo, self[index], index, O);
+ }
+ return memo;
+ };
+
+/***/ },
+/* 170 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var $export = __webpack_require__(7)
+ , $reduce = __webpack_require__(169);
+
+ $export($export.P + $export.F * !__webpack_require__(158)([].reduceRight, true), 'Array', {
+ // 22.1.3.19 / 15.4.4.22 Array.prototype.reduceRight(callbackfn [, initialValue])
+ reduceRight: function reduceRight(callbackfn /* , initialValue */){
+ return $reduce(this, callbackfn, arguments.length, arguments[1], true);
+ }
+ });
+
+/***/ },
+/* 171 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var $export = __webpack_require__(7)
+ , $indexOf = __webpack_require__(31)(false);
+
+ $export($export.P + $export.F * !__webpack_require__(158)([].indexOf), 'Array', {
+ // 22.1.3.11 / 15.4.4.14 Array.prototype.indexOf(searchElement [, fromIndex])
+ indexOf: function indexOf(searchElement /*, fromIndex = 0 */){
+ return $indexOf(this, searchElement, arguments[1]);
+ }
+ });
+
+/***/ },
+/* 172 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var $export = __webpack_require__(7)
+ , toIObject = __webpack_require__(27)
+ , toInteger = __webpack_require__(33)
+ , toLength = __webpack_require__(32);
+
+ $export($export.P + $export.F * !__webpack_require__(158)([].lastIndexOf), 'Array', {
+ // 22.1.3.14 / 15.4.4.15 Array.prototype.lastIndexOf(searchElement [, fromIndex])
+ lastIndexOf: function lastIndexOf(searchElement /*, fromIndex = @[*-1] */){
+ var O = toIObject(this)
+ , length = toLength(O.length)
+ , index = length - 1;
+ if(arguments.length > 1)index = Math.min(index, toInteger(arguments[1]));
+ if(index < 0)index = length + index;
+ for(;index >= 0; index--)if(index in O)if(O[index] === searchElement)return index;
+ return -1;
+ }
+ });
+
+/***/ },
+/* 173 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)
+ var $export = __webpack_require__(7);
+
+ $export($export.P, 'Array', {copyWithin: __webpack_require__(174)});
+
+ __webpack_require__(175)('copyWithin');
+
+/***/ },
+/* 174 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)
+ 'use strict';
+ var toObject = __webpack_require__(54)
+ , toIndex = __webpack_require__(34)
+ , toLength = __webpack_require__(32);
+
+ module.exports = [].copyWithin || function copyWithin(target/*= 0*/, start/*= 0, end = @length*/){
+ var O = toObject(this)
+ , len = toLength(O.length)
+ , to = toIndex(target, len)
+ , from = toIndex(start, len)
+ , end = arguments.length > 2 ? arguments[2] : undefined
+ , count = Math.min((end === undefined ? len : toIndex(end, len)) - from, len - to)
+ , inc = 1;
+ if(from < to && to < from + count){
+ inc = -1;
+ from += count - 1;
+ to += count - 1;
+ }
+ while(count-- > 0){
+ if(from in O)O[to] = O[from];
+ else delete O[to];
+ to += inc;
+ from += inc;
+ } return O;
+ };
+
+/***/ },
+/* 175 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 22.1.3.31 Array.prototype[@@unscopables]
+ var UNSCOPABLES = __webpack_require__(23)('unscopables')
+ , ArrayProto = Array.prototype;
+ if(ArrayProto[UNSCOPABLES] == undefined)__webpack_require__(8)(ArrayProto, UNSCOPABLES, {});
+ module.exports = function(key){
+ ArrayProto[UNSCOPABLES][key] = true;
+ };
+
+/***/ },
+/* 176 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)
+ var $export = __webpack_require__(7);
+
+ $export($export.P, 'Array', {fill: __webpack_require__(177)});
+
+ __webpack_require__(175)('fill');
+
+/***/ },
+/* 177 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)
+ 'use strict';
+ var toObject = __webpack_require__(54)
+ , toIndex = __webpack_require__(34)
+ , toLength = __webpack_require__(32);
+ module.exports = function fill(value /*, start = 0, end = @length */){
+ var O = toObject(this)
+ , length = toLength(O.length)
+ , aLen = arguments.length
+ , index = toIndex(aLen > 1 ? arguments[1] : undefined, length)
+ , end = aLen > 2 ? arguments[2] : undefined
+ , endPos = end === undefined ? length : toIndex(end, length);
+ while(endPos > index)O[index++] = value;
+ return O;
+ };
+
+/***/ },
+/* 178 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined)
+ var $export = __webpack_require__(7)
+ , $find = __webpack_require__(162)(5)
+ , KEY = 'find'
+ , forced = true;
+ // Shouldn't skip holes
+ if(KEY in [])Array(1)[KEY](function(){ forced = false; });
+ $export($export.P + $export.F * forced, 'Array', {
+ find: function find(callbackfn/*, that = undefined */){
+ return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+ }
+ });
+ __webpack_require__(175)(KEY);
+
+/***/ },
+/* 179 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // 22.1.3.9 Array.prototype.findIndex(predicate, thisArg = undefined)
+ var $export = __webpack_require__(7)
+ , $find = __webpack_require__(162)(6)
+ , KEY = 'findIndex'
+ , forced = true;
+ // Shouldn't skip holes
+ if(KEY in [])Array(1)[KEY](function(){ forced = false; });
+ $export($export.P + $export.F * forced, 'Array', {
+ findIndex: function findIndex(callbackfn/*, that = undefined */){
+ return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+ }
+ });
+ __webpack_require__(175)(KEY);
+
+/***/ },
+/* 180 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var addToUnscopables = __webpack_require__(175)
+ , step = __webpack_require__(181)
+ , Iterators = __webpack_require__(134)
+ , toIObject = __webpack_require__(27);
+
+ // 22.1.3.4 Array.prototype.entries()
+ // 22.1.3.13 Array.prototype.keys()
+ // 22.1.3.29 Array.prototype.values()
+ // 22.1.3.30 Array.prototype[@@iterator]()
+ module.exports = __webpack_require__(133)(Array, 'Array', function(iterated, kind){
+ this._t = toIObject(iterated); // target
+ this._i = 0; // next index
+ this._k = kind; // kind
+ // 22.1.5.2.1 %ArrayIteratorPrototype%.next()
+ }, function(){
+ var O = this._t
+ , kind = this._k
+ , index = this._i++;
+ if(!O || index >= O.length){
+ this._t = undefined;
+ return step(1);
+ }
+ if(kind == 'keys' )return step(0, index);
+ if(kind == 'values')return step(0, O[index]);
+ return step(0, [index, O[index]]);
+ }, 'values');
+
+ // argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)
+ Iterators.Arguments = Iterators.Array;
+
+ addToUnscopables('keys');
+ addToUnscopables('values');
+ addToUnscopables('entries');
+
+/***/ },
+/* 181 */
+/***/ function(module, exports) {
+
+ module.exports = function(done, value){
+ return {value: value, done: !!done};
+ };
+
+/***/ },
+/* 182 */
+/***/ function(module, exports, __webpack_require__) {
+
+ __webpack_require__(183)('Array');
+
+/***/ },
+/* 183 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var global = __webpack_require__(2)
+ , dP = __webpack_require__(9)
+ , DESCRIPTORS = __webpack_require__(5)
+ , SPECIES = __webpack_require__(23)('species');
+
+ module.exports = function(KEY){
+ var C = global[KEY];
+ if(DESCRIPTORS && C && !C[SPECIES])dP.f(C, SPECIES, {
+ configurable: true,
+ get: function(){ return this; }
+ });
+ };
+
+/***/ },
+/* 184 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var global = __webpack_require__(2)
+ , inheritIfRequired = __webpack_require__(78)
+ , dP = __webpack_require__(9).f
+ , gOPN = __webpack_require__(45).f
+ , isRegExp = __webpack_require__(127)
+ , $flags = __webpack_require__(185)
+ , $RegExp = global.RegExp
+ , Base = $RegExp
+ , proto = $RegExp.prototype
+ , re1 = /a/g
+ , re2 = /a/g
+ // "new" creates a new object, old webkit buggy here
+ , CORRECT_NEW = new $RegExp(re1) !== re1;
+
+ if(__webpack_require__(5) && (!CORRECT_NEW || __webpack_require__(6)(function(){
+ re2[__webpack_require__(23)('match')] = false;
+ // RegExp constructor can alter flags and IsRegExp works correct with @@match
+ return $RegExp(re1) != re1 || $RegExp(re2) == re2 || $RegExp(re1, 'i') != '/a/i';
+ }))){
+ $RegExp = function RegExp(p, f){
+ var tiRE = this instanceof $RegExp
+ , piRE = isRegExp(p)
+ , fiU = f === undefined;
+ return !tiRE && piRE && p.constructor === $RegExp && fiU ? p
+ : inheritIfRequired(CORRECT_NEW
+ ? new Base(piRE && !fiU ? p.source : p, f)
+ : Base((piRE = p instanceof $RegExp) ? p.source : p, piRE && fiU ? $flags.call(p) : f)
+ , tiRE ? this : proto, $RegExp);
+ };
+ var proxy = function(key){
+ key in $RegExp || dP($RegExp, key, {
+ configurable: true,
+ get: function(){ return Base[key]; },
+ set: function(it){ Base[key] = it; }
+ });
+ };
+ for(var keys = gOPN(Base), i = 0; keys.length > i; )proxy(keys[i++]);
+ proto.constructor = $RegExp;
+ $RegExp.prototype = proto;
+ __webpack_require__(16)(global, 'RegExp', $RegExp);
+ }
+
+ __webpack_require__(183)('RegExp');
+
+/***/ },
+/* 185 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // 21.2.5.3 get RegExp.prototype.flags
+ var anObject = __webpack_require__(10);
+ module.exports = function(){
+ var that = anObject(this)
+ , result = '';
+ if(that.global) result += 'g';
+ if(that.ignoreCase) result += 'i';
+ if(that.multiline) result += 'm';
+ if(that.unicode) result += 'u';
+ if(that.sticky) result += 'y';
+ return result;
+ };
+
+/***/ },
+/* 186 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ __webpack_require__(187);
+ var anObject = __webpack_require__(10)
+ , $flags = __webpack_require__(185)
+ , DESCRIPTORS = __webpack_require__(5)
+ , TO_STRING = 'toString'
+ , $toString = /./[TO_STRING];
+
+ var define = function(fn){
+ __webpack_require__(16)(RegExp.prototype, TO_STRING, fn, true);
+ };
+
+ // 21.2.5.14 RegExp.prototype.toString()
+ if(__webpack_require__(6)(function(){ return $toString.call({source: 'a', flags: 'b'}) != '/a/b'; })){
+ define(function toString(){
+ var R = anObject(this);
+ return '/'.concat(R.source, '/',
+ 'flags' in R ? R.flags : !DESCRIPTORS && R instanceof RegExp ? $flags.call(R) : undefined);
+ });
+ // FF44- RegExp#toString has a wrong name
+ } else if($toString.name != TO_STRING){
+ define(function toString(){
+ return $toString.call(this);
+ });
+ }
+
+/***/ },
+/* 187 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 21.2.5.3 get RegExp.prototype.flags()
+ if(__webpack_require__(5) && /./g.flags != 'g')__webpack_require__(9).f(RegExp.prototype, 'flags', {
+ configurable: true,
+ get: __webpack_require__(185)
+ });
+
+/***/ },
+/* 188 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // @@match logic
+ __webpack_require__(189)('match', 1, function(defined, MATCH, $match){
+ // 21.1.3.11 String.prototype.match(regexp)
+ return [function match(regexp){
+ 'use strict';
+ var O = defined(this)
+ , fn = regexp == undefined ? undefined : regexp[MATCH];
+ return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));
+ }, $match];
+ });
+
+/***/ },
+/* 189 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var hide = __webpack_require__(8)
+ , redefine = __webpack_require__(16)
+ , fails = __webpack_require__(6)
+ , defined = __webpack_require__(30)
+ , wks = __webpack_require__(23);
+
+ module.exports = function(KEY, length, exec){
+ var SYMBOL = wks(KEY)
+ , fns = exec(defined, SYMBOL, ''[KEY])
+ , strfn = fns[0]
+ , rxfn = fns[1];
+ if(fails(function(){
+ var O = {};
+ O[SYMBOL] = function(){ return 7; };
+ return ''[KEY](O) != 7;
+ })){
+ redefine(String.prototype, KEY, strfn);
+ hide(RegExp.prototype, SYMBOL, length == 2
+ // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)
+ // 21.2.5.11 RegExp.prototype[@@split](string, limit)
+ ? function(string, arg){ return rxfn.call(string, this, arg); }
+ // 21.2.5.6 RegExp.prototype[@@match](string)
+ // 21.2.5.9 RegExp.prototype[@@search](string)
+ : function(string){ return rxfn.call(string, this); }
+ );
+ }
+ };
+
+/***/ },
+/* 190 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // @@replace logic
+ __webpack_require__(189)('replace', 2, function(defined, REPLACE, $replace){
+ // 21.1.3.14 String.prototype.replace(searchValue, replaceValue)
+ return [function replace(searchValue, replaceValue){
+ 'use strict';
+ var O = defined(this)
+ , fn = searchValue == undefined ? undefined : searchValue[REPLACE];
+ return fn !== undefined
+ ? fn.call(searchValue, O, replaceValue)
+ : $replace.call(String(O), searchValue, replaceValue);
+ }, $replace];
+ });
+
+/***/ },
+/* 191 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // @@search logic
+ __webpack_require__(189)('search', 1, function(defined, SEARCH, $search){
+ // 21.1.3.15 String.prototype.search(regexp)
+ return [function search(regexp){
+ 'use strict';
+ var O = defined(this)
+ , fn = regexp == undefined ? undefined : regexp[SEARCH];
+ return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));
+ }, $search];
+ });
+
+/***/ },
+/* 192 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // @@split logic
+ __webpack_require__(189)('split', 2, function(defined, SPLIT, $split){
+ 'use strict';
+ var isRegExp = __webpack_require__(127)
+ , _split = $split
+ , $push = [].push
+ , $SPLIT = 'split'
+ , LENGTH = 'length'
+ , LAST_INDEX = 'lastIndex';
+ if(
+ 'abbc'[$SPLIT](/(b)*/)[1] == 'c' ||
+ 'test'[$SPLIT](/(?:)/, -1)[LENGTH] != 4 ||
+ 'ab'[$SPLIT](/(?:ab)*/)[LENGTH] != 2 ||
+ '.'[$SPLIT](/(.?)(.?)/)[LENGTH] != 4 ||
+ '.'[$SPLIT](/()()/)[LENGTH] > 1 ||
+ ''[$SPLIT](/.?/)[LENGTH]
+ ){
+ var NPCG = /()??/.exec('')[1] === undefined; // nonparticipating capturing group
+ // based on es5-shim implementation, need to rework it
+ $split = function(separator, limit){
+ var string = String(this);
+ if(separator === undefined && limit === 0)return [];
+ // If `separator` is not a regex, use native split
+ if(!isRegExp(separator))return _split.call(string, separator, limit);
+ var output = [];
+ var flags = (separator.ignoreCase ? 'i' : '') +
+ (separator.multiline ? 'm' : '') +
+ (separator.unicode ? 'u' : '') +
+ (separator.sticky ? 'y' : '');
+ var lastLastIndex = 0;
+ var splitLimit = limit === undefined ? 4294967295 : limit >>> 0;
+ // Make `global` and avoid `lastIndex` issues by working with a copy
+ var separatorCopy = new RegExp(separator.source, flags + 'g');
+ var separator2, match, lastIndex, lastLength, i;
+ // Doesn't need flags gy, but they don't hurt
+ if(!NPCG)separator2 = new RegExp('^' + separatorCopy.source + '$(?!\\s)', flags);
+ while(match = separatorCopy.exec(string)){
+ // `separatorCopy.lastIndex` is not reliable cross-browser
+ lastIndex = match.index + match[0][LENGTH];
+ if(lastIndex > lastLastIndex){
+ output.push(string.slice(lastLastIndex, match.index));
+ // Fix browsers whose `exec` methods don't consistently return `undefined` for NPCG
+ if(!NPCG && match[LENGTH] > 1)match[0].replace(separator2, function(){
+ for(i = 1; i < arguments[LENGTH] - 2; i++)if(arguments[i] === undefined)match[i] = undefined;
+ });
+ if(match[LENGTH] > 1 && match.index < string[LENGTH])$push.apply(output, match.slice(1));
+ lastLength = match[0][LENGTH];
+ lastLastIndex = lastIndex;
+ if(output[LENGTH] >= splitLimit)break;
+ }
+ if(separatorCopy[LAST_INDEX] === match.index)separatorCopy[LAST_INDEX]++; // Avoid an infinite loop
+ }
+ if(lastLastIndex === string[LENGTH]){
+ if(lastLength || !separatorCopy.test(''))output.push('');
+ } else output.push(string.slice(lastLastIndex));
+ return output[LENGTH] > splitLimit ? output.slice(0, splitLimit) : output;
+ };
+ // Chakra, V8
+ } else if('0'[$SPLIT](undefined, 0)[LENGTH]){
+ $split = function(separator, limit){
+ return separator === undefined && limit === 0 ? [] : _split.call(this, separator, limit);
+ };
+ }
+ // 21.1.3.17 String.prototype.split(separator, limit)
+ return [function split(separator, limit){
+ var O = defined(this)
+ , fn = separator == undefined ? undefined : separator[SPLIT];
+ return fn !== undefined ? fn.call(separator, O, limit) : $split.call(String(O), separator, limit);
+ }, $split];
+ });
+
+/***/ },
+/* 193 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var LIBRARY = __webpack_require__(47)
+ , global = __webpack_require__(2)
+ , ctx = __webpack_require__(18)
+ , classof = __webpack_require__(71)
+ , $export = __webpack_require__(7)
+ , isObject = __webpack_require__(11)
+ , anObject = __webpack_require__(10)
+ , aFunction = __webpack_require__(19)
+ , anInstance = __webpack_require__(82)
+ , forOf = __webpack_require__(194)
+ , setProto = __webpack_require__(69).set
+ , speciesConstructor = __webpack_require__(195)
+ , task = __webpack_require__(196).set
+ , microtask = __webpack_require__(197)
+ , PROMISE = 'Promise'
+ , TypeError = global.TypeError
+ , process = global.process
+ , $Promise = global[PROMISE]
+ , process = global.process
+ , isNode = classof(process) == 'process'
+ , empty = function(){ /* empty */ }
+ , Internal, GenericPromiseCapability, Wrapper;
+
+ var USE_NATIVE = !!function(){
+ try {
+ // correct subclassing with @@species support
+ var promise = $Promise.resolve(1)
+ , FakePromise = (promise.constructor = {})[__webpack_require__(23)('species')] = function(exec){ exec(empty, empty); };
+ // unhandled rejections tracking support, NodeJS Promise without it fails @@species test
+ return (isNode || typeof PromiseRejectionEvent == 'function') && promise.then(empty) instanceof FakePromise;
+ } catch(e){ /* empty */ }
+ }();
+
+ // helpers
+ var sameConstructor = function(a, b){
+ // with library wrapper special case
+ return a === b || a === $Promise && b === Wrapper;
+ };
+ var isThenable = function(it){
+ var then;
+ return isObject(it) && typeof (then = it.then) == 'function' ? then : false;
+ };
+ var newPromiseCapability = function(C){
+ return sameConstructor($Promise, C)
+ ? new PromiseCapability(C)
+ : new GenericPromiseCapability(C);
+ };
+ var PromiseCapability = GenericPromiseCapability = function(C){
+ var resolve, reject;
+ this.promise = new C(function($$resolve, $$reject){
+ if(resolve !== undefined || reject !== undefined)throw TypeError('Bad Promise constructor');
+ resolve = $$resolve;
+ reject = $$reject;
+ });
+ this.resolve = aFunction(resolve);
+ this.reject = aFunction(reject);
+ };
+ var perform = function(exec){
+ try {
+ exec();
+ } catch(e){
+ return {error: e};
+ }
+ };
+ var notify = function(promise, isReject){
+ if(promise._n)return;
+ promise._n = true;
+ var chain = promise._c;
+ microtask(function(){
+ var value = promise._v
+ , ok = promise._s == 1
+ , i = 0;
+ var run = function(reaction){
+ var handler = ok ? reaction.ok : reaction.fail
+ , resolve = reaction.resolve
+ , reject = reaction.reject
+ , domain = reaction.domain
+ , result, then;
+ try {
+ if(handler){
+ if(!ok){
+ if(promise._h == 2)onHandleUnhandled(promise);
+ promise._h = 1;
+ }
+ if(handler === true)result = value;
+ else {
+ if(domain)domain.enter();
+ result = handler(value);
+ if(domain)domain.exit();
+ }
+ if(result === reaction.promise){
+ reject(TypeError('Promise-chain cycle'));
+ } else if(then = isThenable(result)){
+ then.call(result, resolve, reject);
+ } else resolve(result);
+ } else reject(value);
+ } catch(e){
+ reject(e);
+ }
+ };
+ while(chain.length > i)run(chain[i++]); // variable length - can't use forEach
+ promise._c = [];
+ promise._n = false;
+ if(isReject && !promise._h)onUnhandled(promise);
+ });
+ };
+ var onUnhandled = function(promise){
+ task.call(global, function(){
+ var value = promise._v
+ , abrupt, handler, console;
+ if(isUnhandled(promise)){
+ abrupt = perform(function(){
+ if(isNode){
+ process.emit('unhandledRejection', value, promise);
+ } else if(handler = global.onunhandledrejection){
+ handler({promise: promise, reason: value});
+ } else if((console = global.console) && console.error){
+ console.error('Unhandled promise rejection', value);
+ }
+ });
+ // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should
+ promise._h = isNode || isUnhandled(promise) ? 2 : 1;
+ } promise._a = undefined;
+ if(abrupt)throw abrupt.error;
+ });
+ };
+ var isUnhandled = function(promise){
+ if(promise._h == 1)return false;
+ var chain = promise._a || promise._c
+ , i = 0
+ , reaction;
+ while(chain.length > i){
+ reaction = chain[i++];
+ if(reaction.fail || !isUnhandled(reaction.promise))return false;
+ } return true;
+ };
+ var onHandleUnhandled = function(promise){
+ task.call(global, function(){
+ var handler;
+ if(isNode){
+ process.emit('rejectionHandled', promise);
+ } else if(handler = global.onrejectionhandled){
+ handler({promise: promise, reason: promise._v});
+ }
+ });
+ };
+ var $reject = function(value){
+ var promise = this;
+ if(promise._d)return;
+ promise._d = true;
+ promise = promise._w || promise; // unwrap
+ promise._v = value;
+ promise._s = 2;
+ if(!promise._a)promise._a = promise._c.slice();
+ notify(promise, true);
+ };
+ var $resolve = function(value){
+ var promise = this
+ , then;
+ if(promise._d)return;
+ promise._d = true;
+ promise = promise._w || promise; // unwrap
+ try {
+ if(promise === value)throw TypeError("Promise can't be resolved itself");
+ if(then = isThenable(value)){
+ microtask(function(){
+ var wrapper = {_w: promise, _d: false}; // wrap
+ try {
+ then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));
+ } catch(e){
+ $reject.call(wrapper, e);
+ }
+ });
+ } else {
+ promise._v = value;
+ promise._s = 1;
+ notify(promise, false);
+ }
+ } catch(e){
+ $reject.call({_w: promise, _d: false}, e); // wrap
+ }
+ };
+
+ // constructor polyfill
+ if(!USE_NATIVE){
+ // 25.4.3.1 Promise(executor)
+ $Promise = function Promise(executor){
+ anInstance(this, $Promise, PROMISE, '_h');
+ aFunction(executor);
+ Internal.call(this);
+ try {
+ executor(ctx($resolve, this, 1), ctx($reject, this, 1));
+ } catch(err){
+ $reject.call(this, err);
+ }
+ };
+ Internal = function Promise(executor){
+ this._c = []; // <- awaiting reactions
+ this._a = undefined; // <- checked in isUnhandled reactions
+ this._s = 0; // <- state
+ this._d = false; // <- done
+ this._v = undefined; // <- value
+ this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled
+ this._n = false; // <- notify
+ };
+ Internal.prototype = __webpack_require__(198)($Promise.prototype, {
+ // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)
+ then: function then(onFulfilled, onRejected){
+ var reaction = newPromiseCapability(speciesConstructor(this, $Promise));
+ reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;
+ reaction.fail = typeof onRejected == 'function' && onRejected;
+ reaction.domain = isNode ? process.domain : undefined;
+ this._c.push(reaction);
+ if(this._a)this._a.push(reaction);
+ if(this._s)notify(this, false);
+ return reaction.promise;
+ },
+ // 25.4.5.1 Promise.prototype.catch(onRejected)
+ 'catch': function(onRejected){
+ return this.then(undefined, onRejected);
+ }
+ });
+ PromiseCapability = function(){
+ var promise = new Internal;
+ this.promise = promise;
+ this.resolve = ctx($resolve, promise, 1);
+ this.reject = ctx($reject, promise, 1);
+ };
+ }
+
+ $export($export.G + $export.W + $export.F * !USE_NATIVE, {Promise: $Promise});
+ __webpack_require__(22)($Promise, PROMISE);
+ __webpack_require__(183)(PROMISE);
+ Wrapper = __webpack_require__(3)[PROMISE];
+
+ // statics
+ $export($export.S + $export.F * !USE_NATIVE, PROMISE, {
+ // 25.4.4.5 Promise.reject(r)
+ reject: function reject(r){
+ var capability = newPromiseCapability(this)
+ , $$reject = capability.reject;
+ $$reject(r);
+ return capability.promise;
+ }
+ });
+ $export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {
+ // 25.4.4.6 Promise.resolve(x)
+ resolve: function resolve(x){
+ // instanceof instead of internal slot check because we should fix it without replacement native Promise core
+ if(x instanceof $Promise && sameConstructor(x.constructor, this))return x;
+ var capability = newPromiseCapability(this)
+ , $$resolve = capability.resolve;
+ $$resolve(x);
+ return capability.promise;
+ }
+ });
+ $export($export.S + $export.F * !(USE_NATIVE && __webpack_require__(155)(function(iter){
+ $Promise.all(iter)['catch'](empty);
+ })), PROMISE, {
+ // 25.4.4.1 Promise.all(iterable)
+ all: function all(iterable){
+ var C = this
+ , capability = newPromiseCapability(C)
+ , resolve = capability.resolve
+ , reject = capability.reject;
+ var abrupt = perform(function(){
+ var values = []
+ , index = 0
+ , remaining = 1;
+ forOf(iterable, false, function(promise){
+ var $index = index++
+ , alreadyCalled = false;
+ values.push(undefined);
+ remaining++;
+ C.resolve(promise).then(function(value){
+ if(alreadyCalled)return;
+ alreadyCalled = true;
+ values[$index] = value;
+ --remaining || resolve(values);
+ }, reject);
+ });
+ --remaining || resolve(values);
+ });
+ if(abrupt)reject(abrupt.error);
+ return capability.promise;
+ },
+ // 25.4.4.4 Promise.race(iterable)
+ race: function race(iterable){
+ var C = this
+ , capability = newPromiseCapability(C)
+ , reject = capability.reject;
+ var abrupt = perform(function(){
+ forOf(iterable, false, function(promise){
+ C.resolve(promise).then(capability.resolve, reject);
+ });
+ });
+ if(abrupt)reject(abrupt.error);
+ return capability.promise;
+ }
+ });
+
+/***/ },
+/* 194 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var ctx = __webpack_require__(18)
+ , call = __webpack_require__(152)
+ , isArrayIter = __webpack_require__(153)
+ , anObject = __webpack_require__(10)
+ , toLength = __webpack_require__(32)
+ , getIterFn = __webpack_require__(154);
+ module.exports = function(iterable, entries, fn, that, ITERATOR){
+ var iterFn = ITERATOR ? function(){ return iterable; } : getIterFn(iterable)
+ , f = ctx(fn, that, entries ? 2 : 1)
+ , index = 0
+ , length, step, iterator;
+ if(typeof iterFn != 'function')throw TypeError(iterable + ' is not iterable!');
+ // fast case for arrays with default iterator
+ if(isArrayIter(iterFn))for(length = toLength(iterable.length); length > index; index++){
+ entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);
+ } else for(iterator = iterFn.call(iterable); !(step = iterator.next()).done; ){
+ call(iterator, f, step.value, entries);
+ }
+ };
+
+/***/ },
+/* 195 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 7.3.20 SpeciesConstructor(O, defaultConstructor)
+ var anObject = __webpack_require__(10)
+ , aFunction = __webpack_require__(19)
+ , SPECIES = __webpack_require__(23)('species');
+ module.exports = function(O, D){
+ var C = anObject(O).constructor, S;
+ return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);
+ };
+
+/***/ },
+/* 196 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var ctx = __webpack_require__(18)
+ , invoke = __webpack_require__(74)
+ , html = __webpack_require__(43)
+ , cel = __webpack_require__(13)
+ , global = __webpack_require__(2)
+ , process = global.process
+ , setTask = global.setImmediate
+ , clearTask = global.clearImmediate
+ , MessageChannel = global.MessageChannel
+ , counter = 0
+ , queue = {}
+ , ONREADYSTATECHANGE = 'onreadystatechange'
+ , defer, channel, port;
+ var run = function(){
+ var id = +this;
+ if(queue.hasOwnProperty(id)){
+ var fn = queue[id];
+ delete queue[id];
+ fn();
+ }
+ };
+ var listener = function(event){
+ run.call(event.data);
+ };
+ // Node.js 0.9+ & IE10+ has setImmediate, otherwise:
+ if(!setTask || !clearTask){
+ setTask = function setImmediate(fn){
+ var args = [], i = 1;
+ while(arguments.length > i)args.push(arguments[i++]);
+ queue[++counter] = function(){
+ invoke(typeof fn == 'function' ? fn : Function(fn), args);
+ };
+ defer(counter);
+ return counter;
+ };
+ clearTask = function clearImmediate(id){
+ delete queue[id];
+ };
+ // Node.js 0.8-
+ if(__webpack_require__(29)(process) == 'process'){
+ defer = function(id){
+ process.nextTick(ctx(run, id, 1));
+ };
+ // Browsers with MessageChannel, includes WebWorkers
+ } else if(MessageChannel){
+ channel = new MessageChannel;
+ port = channel.port2;
+ channel.port1.onmessage = listener;
+ defer = ctx(port.postMessage, port, 1);
+ // Browsers with postMessage, skip WebWorkers
+ // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'
+ } else if(global.addEventListener && typeof postMessage == 'function' && !global.importScripts){
+ defer = function(id){
+ global.postMessage(id + '', '*');
+ };
+ global.addEventListener('message', listener, false);
+ // IE8-
+ } else if(ONREADYSTATECHANGE in cel('script')){
+ defer = function(id){
+ html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function(){
+ html.removeChild(this);
+ run.call(id);
+ };
+ };
+ // Rest old browsers
+ } else {
+ defer = function(id){
+ setTimeout(ctx(run, id, 1), 0);
+ };
+ }
+ }
+ module.exports = {
+ set: setTask,
+ clear: clearTask
+ };
+
+/***/ },
+/* 197 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var global = __webpack_require__(2)
+ , macrotask = __webpack_require__(196).set
+ , Observer = global.MutationObserver || global.WebKitMutationObserver
+ , process = global.process
+ , Promise = global.Promise
+ , isNode = __webpack_require__(29)(process) == 'process'
+ , head, last, notify;
+
+ var flush = function(){
+ var parent, fn;
+ if(isNode && (parent = process.domain))parent.exit();
+ while(head){
+ fn = head.fn;
+ fn(); // <- currently we use it only for Promise - try / catch not required
+ head = head.next;
+ } last = undefined;
+ if(parent)parent.enter();
+ };
+
+ // Node.js
+ if(isNode){
+ notify = function(){
+ process.nextTick(flush);
+ };
+ // browsers with MutationObserver
+ } else if(Observer){
+ var toggle = true
+ , node = document.createTextNode('');
+ new Observer(flush).observe(node, {characterData: true}); // eslint-disable-line no-new
+ notify = function(){
+ node.data = toggle = !toggle;
+ };
+ // environments with maybe non-completely correct, but existent Promise
+ } else if(Promise && Promise.resolve){
+ notify = function(){
+ Promise.resolve().then(flush);
+ };
+ // for other environments - macrotask based on:
+ // - setImmediate
+ // - MessageChannel
+ // - window.postMessag
+ // - onreadystatechange
+ // - setTimeout
+ } else {
+ notify = function(){
+ // strange IE + webpack dev server bug - use .call(global)
+ macrotask.call(global, flush);
+ };
+ }
+
+ module.exports = function(fn){
+ var task = {fn: fn, next: undefined};
+ if(last)last.next = task;
+ if(!head){
+ head = task;
+ notify();
+ } last = task;
+ };
+
+/***/ },
+/* 198 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var redefine = __webpack_require__(16);
+ module.exports = function(target, src, safe){
+ for(var key in src)redefine(target, key, src[key], safe);
+ return target;
+ };
+
+/***/ },
+/* 199 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var strong = __webpack_require__(200);
+
+ // 23.1 Map Objects
+ module.exports = __webpack_require__(201)('Map', function(get){
+ return function Map(){ return get(this, arguments.length > 0 ? arguments[0] : undefined); };
+ }, {
+ // 23.1.3.6 Map.prototype.get(key)
+ get: function get(key){
+ var entry = strong.getEntry(this, key);
+ return entry && entry.v;
+ },
+ // 23.1.3.9 Map.prototype.set(key, value)
+ set: function set(key, value){
+ return strong.def(this, key === 0 ? 0 : key, value);
+ }
+ }, strong, true);
+
+/***/ },
+/* 200 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var dP = __webpack_require__(9).f
+ , create = __webpack_require__(41)
+ , hide = __webpack_require__(8)
+ , redefineAll = __webpack_require__(198)
+ , ctx = __webpack_require__(18)
+ , anInstance = __webpack_require__(82)
+ , defined = __webpack_require__(30)
+ , forOf = __webpack_require__(194)
+ , $iterDefine = __webpack_require__(133)
+ , step = __webpack_require__(181)
+ , setSpecies = __webpack_require__(183)
+ , DESCRIPTORS = __webpack_require__(5)
+ , fastKey = __webpack_require__(20).fastKey
+ , SIZE = DESCRIPTORS ? '_s' : 'size';
+
+ var getEntry = function(that, key){
+ // fast case
+ var index = fastKey(key), entry;
+ if(index !== 'F')return that._i[index];
+ // frozen object case
+ for(entry = that._f; entry; entry = entry.n){
+ if(entry.k == key)return entry;
+ }
+ };
+
+ module.exports = {
+ getConstructor: function(wrapper, NAME, IS_MAP, ADDER){
+ var C = wrapper(function(that, iterable){
+ anInstance(that, C, NAME, '_i');
+ that._i = create(null); // index
+ that._f = undefined; // first entry
+ that._l = undefined; // last entry
+ that[SIZE] = 0; // size
+ if(iterable != undefined)forOf(iterable, IS_MAP, that[ADDER], that);
+ });
+ redefineAll(C.prototype, {
+ // 23.1.3.1 Map.prototype.clear()
+ // 23.2.3.2 Set.prototype.clear()
+ clear: function clear(){
+ for(var that = this, data = that._i, entry = that._f; entry; entry = entry.n){
+ entry.r = true;
+ if(entry.p)entry.p = entry.p.n = undefined;
+ delete data[entry.i];
+ }
+ that._f = that._l = undefined;
+ that[SIZE] = 0;
+ },
+ // 23.1.3.3 Map.prototype.delete(key)
+ // 23.2.3.4 Set.prototype.delete(value)
+ 'delete': function(key){
+ var that = this
+ , entry = getEntry(that, key);
+ if(entry){
+ var next = entry.n
+ , prev = entry.p;
+ delete that._i[entry.i];
+ entry.r = true;
+ if(prev)prev.n = next;
+ if(next)next.p = prev;
+ if(that._f == entry)that._f = next;
+ if(that._l == entry)that._l = prev;
+ that[SIZE]--;
+ } return !!entry;
+ },
+ // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)
+ // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)
+ forEach: function forEach(callbackfn /*, that = undefined */){
+ anInstance(this, C, 'forEach');
+ var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3)
+ , entry;
+ while(entry = entry ? entry.n : this._f){
+ f(entry.v, entry.k, this);
+ // revert to the last existing entry
+ while(entry && entry.r)entry = entry.p;
+ }
+ },
+ // 23.1.3.7 Map.prototype.has(key)
+ // 23.2.3.7 Set.prototype.has(value)
+ has: function has(key){
+ return !!getEntry(this, key);
+ }
+ });
+ if(DESCRIPTORS)dP(C.prototype, 'size', {
+ get: function(){
+ return defined(this[SIZE]);
+ }
+ });
+ return C;
+ },
+ def: function(that, key, value){
+ var entry = getEntry(that, key)
+ , prev, index;
+ // change existing entry
+ if(entry){
+ entry.v = value;
+ // create new entry
+ } else {
+ that._l = entry = {
+ i: index = fastKey(key, true), // <- index
+ k: key, // <- key
+ v: value, // <- value
+ p: prev = that._l, // <- previous entry
+ n: undefined, // <- next entry
+ r: false // <- removed
+ };
+ if(!that._f)that._f = entry;
+ if(prev)prev.n = entry;
+ that[SIZE]++;
+ // add to index
+ if(index !== 'F')that._i[index] = entry;
+ } return that;
+ },
+ getEntry: getEntry,
+ setStrong: function(C, NAME, IS_MAP){
+ // add .keys, .values, .entries, [@@iterator]
+ // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11
+ $iterDefine(C, NAME, function(iterated, kind){
+ this._t = iterated; // target
+ this._k = kind; // kind
+ this._l = undefined; // previous
+ }, function(){
+ var that = this
+ , kind = that._k
+ , entry = that._l;
+ // revert to the last existing entry
+ while(entry && entry.r)entry = entry.p;
+ // get next entry
+ if(!that._t || !(that._l = entry = entry ? entry.n : that._t._f)){
+ // or finish the iteration
+ that._t = undefined;
+ return step(1);
+ }
+ // return step by kind
+ if(kind == 'keys' )return step(0, entry.k);
+ if(kind == 'values')return step(0, entry.v);
+ return step(0, [entry.k, entry.v]);
+ }, IS_MAP ? 'entries' : 'values' , !IS_MAP, true);
+
+ // add [@@species], 23.1.2.2, 23.2.2.2
+ setSpecies(NAME);
+ }
+ };
+
+/***/ },
+/* 201 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var global = __webpack_require__(2)
+ , $export = __webpack_require__(7)
+ , redefine = __webpack_require__(16)
+ , redefineAll = __webpack_require__(198)
+ , meta = __webpack_require__(20)
+ , forOf = __webpack_require__(194)
+ , anInstance = __webpack_require__(82)
+ , isObject = __webpack_require__(11)
+ , fails = __webpack_require__(6)
+ , $iterDetect = __webpack_require__(155)
+ , setToStringTag = __webpack_require__(22)
+ , inheritIfRequired = __webpack_require__(78);
+
+ module.exports = function(NAME, wrapper, methods, common, IS_MAP, IS_WEAK){
+ var Base = global[NAME]
+ , C = Base
+ , ADDER = IS_MAP ? 'set' : 'add'
+ , proto = C && C.prototype
+ , O = {};
+ var fixMethod = function(KEY){
+ var fn = proto[KEY];
+ redefine(proto, KEY,
+ KEY == 'delete' ? function(a){
+ return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);
+ } : KEY == 'has' ? function has(a){
+ return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);
+ } : KEY == 'get' ? function get(a){
+ return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a);
+ } : KEY == 'add' ? function add(a){ fn.call(this, a === 0 ? 0 : a); return this; }
+ : function set(a, b){ fn.call(this, a === 0 ? 0 : a, b); return this; }
+ );
+ };
+ if(typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function(){
+ new C().entries().next();
+ }))){
+ // create collection constructor
+ C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);
+ redefineAll(C.prototype, methods);
+ meta.NEED = true;
+ } else {
+ var instance = new C
+ // early implementations not supports chaining
+ , HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance
+ // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false
+ , THROWS_ON_PRIMITIVES = fails(function(){ instance.has(1); })
+ // most early implementations doesn't supports iterables, most modern - not close it correctly
+ , ACCEPT_ITERABLES = $iterDetect(function(iter){ new C(iter); }) // eslint-disable-line no-new
+ // for early implementations -0 and +0 not the same
+ , BUGGY_ZERO = !IS_WEAK && fails(function(){
+ // V8 ~ Chromium 42- fails only with 5+ elements
+ var $instance = new C()
+ , index = 5;
+ while(index--)$instance[ADDER](index, index);
+ return !$instance.has(-0);
+ });
+ if(!ACCEPT_ITERABLES){
+ C = wrapper(function(target, iterable){
+ anInstance(target, C, NAME);
+ var that = inheritIfRequired(new Base, target, C);
+ if(iterable != undefined)forOf(iterable, IS_MAP, that[ADDER], that);
+ return that;
+ });
+ C.prototype = proto;
+ proto.constructor = C;
+ }
+ if(THROWS_ON_PRIMITIVES || BUGGY_ZERO){
+ fixMethod('delete');
+ fixMethod('has');
+ IS_MAP && fixMethod('get');
+ }
+ if(BUGGY_ZERO || HASNT_CHAINING)fixMethod(ADDER);
+ // weak collections should not contains .clear method
+ if(IS_WEAK && proto.clear)delete proto.clear;
+ }
+
+ setToStringTag(C, NAME);
+
+ O[NAME] = C;
+ $export($export.G + $export.W + $export.F * (C != Base), O);
+
+ if(!IS_WEAK)common.setStrong(C, NAME, IS_MAP);
+
+ return C;
+ };
+
+/***/ },
+/* 202 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var strong = __webpack_require__(200);
+
+ // 23.2 Set Objects
+ module.exports = __webpack_require__(201)('Set', function(get){
+ return function Set(){ return get(this, arguments.length > 0 ? arguments[0] : undefined); };
+ }, {
+ // 23.2.3.1 Set.prototype.add(value)
+ add: function add(value){
+ return strong.def(this, value = value === 0 ? 0 : value, value);
+ }
+ }, strong);
+
+/***/ },
+/* 203 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var each = __webpack_require__(162)(0)
+ , redefine = __webpack_require__(16)
+ , meta = __webpack_require__(20)
+ , assign = __webpack_require__(65)
+ , weak = __webpack_require__(204)
+ , isObject = __webpack_require__(11)
+ , has = __webpack_require__(4)
+ , getWeak = meta.getWeak
+ , isExtensible = Object.isExtensible
+ , uncaughtFrozenStore = weak.ufstore
+ , tmp = {}
+ , InternalMap;
+
+ var wrapper = function(get){
+ return function WeakMap(){
+ return get(this, arguments.length > 0 ? arguments[0] : undefined);
+ };
+ };
+
+ var methods = {
+ // 23.3.3.3 WeakMap.prototype.get(key)
+ get: function get(key){
+ if(isObject(key)){
+ var data = getWeak(key);
+ if(data === true)return uncaughtFrozenStore(this).get(key);
+ return data ? data[this._i] : undefined;
+ }
+ },
+ // 23.3.3.5 WeakMap.prototype.set(key, value)
+ set: function set(key, value){
+ return weak.def(this, key, value);
+ }
+ };
+
+ // 23.3 WeakMap Objects
+ var $WeakMap = module.exports = __webpack_require__(201)('WeakMap', wrapper, methods, weak, true, true);
+
+ // IE11 WeakMap frozen keys fix
+ if(new $WeakMap().set((Object.freeze || Object)(tmp), 7).get(tmp) != 7){
+ InternalMap = weak.getConstructor(wrapper);
+ assign(InternalMap.prototype, methods);
+ meta.NEED = true;
+ each(['delete', 'has', 'get', 'set'], function(key){
+ var proto = $WeakMap.prototype
+ , method = proto[key];
+ redefine(proto, key, function(a, b){
+ // store frozen objects on internal weakmap shim
+ if(isObject(a) && !isExtensible(a)){
+ if(!this._f)this._f = new InternalMap;
+ var result = this._f[key](a, b);
+ return key == 'set' ? this : result;
+ // store all the rest on native weakmap
+ } return method.call(this, a, b);
+ });
+ });
+ }
+
+/***/ },
+/* 204 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var redefineAll = __webpack_require__(198)
+ , getWeak = __webpack_require__(20).getWeak
+ , anObject = __webpack_require__(10)
+ , isObject = __webpack_require__(11)
+ , anInstance = __webpack_require__(82)
+ , forOf = __webpack_require__(194)
+ , createArrayMethod = __webpack_require__(162)
+ , $has = __webpack_require__(4)
+ , arrayFind = createArrayMethod(5)
+ , arrayFindIndex = createArrayMethod(6)
+ , id = 0;
+
+ // fallback for uncaught frozen keys
+ var uncaughtFrozenStore = function(that){
+ return that._l || (that._l = new UncaughtFrozenStore);
+ };
+ var UncaughtFrozenStore = function(){
+ this.a = [];
+ };
+ var findUncaughtFrozen = function(store, key){
+ return arrayFind(store.a, function(it){
+ return it[0] === key;
+ });
+ };
+ UncaughtFrozenStore.prototype = {
+ get: function(key){
+ var entry = findUncaughtFrozen(this, key);
+ if(entry)return entry[1];
+ },
+ has: function(key){
+ return !!findUncaughtFrozen(this, key);
+ },
+ set: function(key, value){
+ var entry = findUncaughtFrozen(this, key);
+ if(entry)entry[1] = value;
+ else this.a.push([key, value]);
+ },
+ 'delete': function(key){
+ var index = arrayFindIndex(this.a, function(it){
+ return it[0] === key;
+ });
+ if(~index)this.a.splice(index, 1);
+ return !!~index;
+ }
+ };
+
+ module.exports = {
+ getConstructor: function(wrapper, NAME, IS_MAP, ADDER){
+ var C = wrapper(function(that, iterable){
+ anInstance(that, C, NAME, '_i');
+ that._i = id++; // collection id
+ that._l = undefined; // leak store for uncaught frozen objects
+ if(iterable != undefined)forOf(iterable, IS_MAP, that[ADDER], that);
+ });
+ redefineAll(C.prototype, {
+ // 23.3.3.2 WeakMap.prototype.delete(key)
+ // 23.4.3.3 WeakSet.prototype.delete(value)
+ 'delete': function(key){
+ if(!isObject(key))return false;
+ var data = getWeak(key);
+ if(data === true)return uncaughtFrozenStore(this)['delete'](key);
+ return data && $has(data, this._i) && delete data[this._i];
+ },
+ // 23.3.3.4 WeakMap.prototype.has(key)
+ // 23.4.3.4 WeakSet.prototype.has(value)
+ has: function has(key){
+ if(!isObject(key))return false;
+ var data = getWeak(key);
+ if(data === true)return uncaughtFrozenStore(this).has(key);
+ return data && $has(data, this._i);
+ }
+ });
+ return C;
+ },
+ def: function(that, key, value){
+ var data = getWeak(anObject(key), true);
+ if(data === true)uncaughtFrozenStore(that).set(key, value);
+ else data[that._i] = value;
+ return that;
+ },
+ ufstore: uncaughtFrozenStore
+ };
+
+/***/ },
+/* 205 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var weak = __webpack_require__(204);
+
+ // 23.4 WeakSet Objects
+ __webpack_require__(201)('WeakSet', function(get){
+ return function WeakSet(){ return get(this, arguments.length > 0 ? arguments[0] : undefined); };
+ }, {
+ // 23.4.3.1 WeakSet.prototype.add(value)
+ add: function add(value){
+ return weak.def(this, value, true);
+ }
+ }, weak, false, true);
+
+/***/ },
+/* 206 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 26.1.1 Reflect.apply(target, thisArgument, argumentsList)
+ var $export = __webpack_require__(7)
+ , _apply = Function.apply;
+
+ $export($export.S, 'Reflect', {
+ apply: function apply(target, thisArgument, argumentsList){
+ return _apply.call(target, thisArgument, argumentsList);
+ }
+ });
+
+/***/ },
+/* 207 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 26.1.2 Reflect.construct(target, argumentsList [, newTarget])
+ var $export = __webpack_require__(7)
+ , create = __webpack_require__(41)
+ , aFunction = __webpack_require__(19)
+ , anObject = __webpack_require__(10)
+ , isObject = __webpack_require__(11)
+ , bind = __webpack_require__(73);
+
+ // MS Edge supports only 2 arguments
+ // FF Nightly sets third argument as `new.target`, but does not create `this` from it
+ $export($export.S + $export.F * __webpack_require__(6)(function(){
+ function F(){}
+ return !(Reflect.construct(function(){}, [], F) instanceof F);
+ }), 'Reflect', {
+ construct: function construct(Target, args /*, newTarget*/){
+ aFunction(Target);
+ var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);
+ if(Target == newTarget){
+ // w/o altered newTarget, optimization for 0-4 arguments
+ if(args != undefined)switch(anObject(args).length){
+ case 0: return new Target;
+ case 1: return new Target(args[0]);
+ case 2: return new Target(args[0], args[1]);
+ case 3: return new Target(args[0], args[1], args[2]);
+ case 4: return new Target(args[0], args[1], args[2], args[3]);
+ }
+ // w/o altered newTarget, lot of arguments case
+ var $args = [null];
+ $args.push.apply($args, args);
+ return new (bind.apply(Target, $args));
+ }
+ // with altered newTarget, not support built-in constructors
+ var proto = newTarget.prototype
+ , instance = create(isObject(proto) ? proto : Object.prototype)
+ , result = Function.apply.call(Target, instance, args);
+ return isObject(result) ? result : instance;
+ }
+ });
+
+/***/ },
+/* 208 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 26.1.3 Reflect.defineProperty(target, propertyKey, attributes)
+ var dP = __webpack_require__(9)
+ , $export = __webpack_require__(7)
+ , anObject = __webpack_require__(10)
+ , toPrimitive = __webpack_require__(14);
+
+ // MS Edge has broken Reflect.defineProperty - throwing instead of returning false
+ $export($export.S + $export.F * __webpack_require__(6)(function(){
+ Reflect.defineProperty(dP.f({}, 1, {value: 1}), 1, {value: 2});
+ }), 'Reflect', {
+ defineProperty: function defineProperty(target, propertyKey, attributes){
+ anObject(target);
+ propertyKey = toPrimitive(propertyKey, true);
+ anObject(attributes);
+ try {
+ dP.f(target, propertyKey, attributes);
+ return true;
+ } catch(e){
+ return false;
+ }
+ }
+ });
+
+/***/ },
+/* 209 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 26.1.4 Reflect.deleteProperty(target, propertyKey)
+ var $export = __webpack_require__(7)
+ , gOPD = __webpack_require__(46).f
+ , anObject = __webpack_require__(10);
+
+ $export($export.S, 'Reflect', {
+ deleteProperty: function deleteProperty(target, propertyKey){
+ var desc = gOPD(anObject(target), propertyKey);
+ return desc && !desc.configurable ? false : delete target[propertyKey];
+ }
+ });
+
+/***/ },
+/* 210 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // 26.1.5 Reflect.enumerate(target)
+ var $export = __webpack_require__(7)
+ , anObject = __webpack_require__(10);
+ var Enumerate = function(iterated){
+ this._t = anObject(iterated); // target
+ this._i = 0; // next index
+ var keys = this._k = [] // keys
+ , key;
+ for(key in iterated)keys.push(key);
+ };
+ __webpack_require__(135)(Enumerate, 'Object', function(){
+ var that = this
+ , keys = that._k
+ , key;
+ do {
+ if(that._i >= keys.length)return {value: undefined, done: true};
+ } while(!((key = keys[that._i++]) in that._t));
+ return {value: key, done: false};
+ });
+
+ $export($export.S, 'Reflect', {
+ enumerate: function enumerate(target){
+ return new Enumerate(target);
+ }
+ });
+
+/***/ },
+/* 211 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 26.1.6 Reflect.get(target, propertyKey [, receiver])
+ var gOPD = __webpack_require__(46)
+ , getPrototypeOf = __webpack_require__(55)
+ , has = __webpack_require__(4)
+ , $export = __webpack_require__(7)
+ , isObject = __webpack_require__(11)
+ , anObject = __webpack_require__(10);
+
+ function get(target, propertyKey/*, receiver*/){
+ var receiver = arguments.length < 3 ? target : arguments[2]
+ , desc, proto;
+ if(anObject(target) === receiver)return target[propertyKey];
+ if(desc = gOPD.f(target, propertyKey))return has(desc, 'value')
+ ? desc.value
+ : desc.get !== undefined
+ ? desc.get.call(receiver)
+ : undefined;
+ if(isObject(proto = getPrototypeOf(target)))return get(proto, propertyKey, receiver);
+ }
+
+ $export($export.S, 'Reflect', {get: get});
+
+/***/ },
+/* 212 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 26.1.7 Reflect.getOwnPropertyDescriptor(target, propertyKey)
+ var gOPD = __webpack_require__(46)
+ , $export = __webpack_require__(7)
+ , anObject = __webpack_require__(10);
+
+ $export($export.S, 'Reflect', {
+ getOwnPropertyDescriptor: function getOwnPropertyDescriptor(target, propertyKey){
+ return gOPD.f(anObject(target), propertyKey);
+ }
+ });
+
+/***/ },
+/* 213 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 26.1.8 Reflect.getPrototypeOf(target)
+ var $export = __webpack_require__(7)
+ , getProto = __webpack_require__(55)
+ , anObject = __webpack_require__(10);
+
+ $export($export.S, 'Reflect', {
+ getPrototypeOf: function getPrototypeOf(target){
+ return getProto(anObject(target));
+ }
+ });
+
+/***/ },
+/* 214 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 26.1.9 Reflect.has(target, propertyKey)
+ var $export = __webpack_require__(7);
+
+ $export($export.S, 'Reflect', {
+ has: function has(target, propertyKey){
+ return propertyKey in target;
+ }
+ });
+
+/***/ },
+/* 215 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 26.1.10 Reflect.isExtensible(target)
+ var $export = __webpack_require__(7)
+ , anObject = __webpack_require__(10)
+ , $isExtensible = Object.isExtensible;
+
+ $export($export.S, 'Reflect', {
+ isExtensible: function isExtensible(target){
+ anObject(target);
+ return $isExtensible ? $isExtensible(target) : true;
+ }
+ });
+
+/***/ },
+/* 216 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 26.1.11 Reflect.ownKeys(target)
+ var $export = __webpack_require__(7);
+
+ $export($export.S, 'Reflect', {ownKeys: __webpack_require__(217)});
+
+/***/ },
+/* 217 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // all object keys, includes non-enumerable and symbols
+ var gOPN = __webpack_require__(45)
+ , gOPS = __webpack_require__(38)
+ , anObject = __webpack_require__(10)
+ , Reflect = __webpack_require__(2).Reflect;
+ module.exports = Reflect && Reflect.ownKeys || function ownKeys(it){
+ var keys = gOPN.f(anObject(it))
+ , getSymbols = gOPS.f;
+ return getSymbols ? keys.concat(getSymbols(it)) : keys;
+ };
+
+/***/ },
+/* 218 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 26.1.12 Reflect.preventExtensions(target)
+ var $export = __webpack_require__(7)
+ , anObject = __webpack_require__(10)
+ , $preventExtensions = Object.preventExtensions;
+
+ $export($export.S, 'Reflect', {
+ preventExtensions: function preventExtensions(target){
+ anObject(target);
+ try {
+ if($preventExtensions)$preventExtensions(target);
+ return true;
+ } catch(e){
+ return false;
+ }
+ }
+ });
+
+/***/ },
+/* 219 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 26.1.13 Reflect.set(target, propertyKey, V [, receiver])
+ var dP = __webpack_require__(9)
+ , gOPD = __webpack_require__(46)
+ , getPrototypeOf = __webpack_require__(55)
+ , has = __webpack_require__(4)
+ , $export = __webpack_require__(7)
+ , createDesc = __webpack_require__(15)
+ , anObject = __webpack_require__(10)
+ , isObject = __webpack_require__(11);
+
+ function set(target, propertyKey, V/*, receiver*/){
+ var receiver = arguments.length < 4 ? target : arguments[3]
+ , ownDesc = gOPD.f(anObject(target), propertyKey)
+ , existingDescriptor, proto;
+ if(!ownDesc){
+ if(isObject(proto = getPrototypeOf(target))){
+ return set(proto, propertyKey, V, receiver);
+ }
+ ownDesc = createDesc(0);
+ }
+ if(has(ownDesc, 'value')){
+ if(ownDesc.writable === false || !isObject(receiver))return false;
+ existingDescriptor = gOPD.f(receiver, propertyKey) || createDesc(0);
+ existingDescriptor.value = V;
+ dP.f(receiver, propertyKey, existingDescriptor);
+ return true;
+ }
+ return ownDesc.set === undefined ? false : (ownDesc.set.call(receiver, V), true);
+ }
+
+ $export($export.S, 'Reflect', {set: set});
+
+/***/ },
+/* 220 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 26.1.14 Reflect.setPrototypeOf(target, proto)
+ var $export = __webpack_require__(7)
+ , setProto = __webpack_require__(69);
+
+ if(setProto)$export($export.S, 'Reflect', {
+ setPrototypeOf: function setPrototypeOf(target, proto){
+ setProto.check(target, proto);
+ try {
+ setProto.set(target, proto);
+ return true;
+ } catch(e){
+ return false;
+ }
+ }
+ });
+
+/***/ },
+/* 221 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.3.3.1 / 15.9.4.4 Date.now()
+ var $export = __webpack_require__(7);
+
+ $export($export.S, 'Date', {now: function(){ return new Date().getTime(); }});
+
+/***/ },
+/* 222 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var $export = __webpack_require__(7)
+ , toObject = __webpack_require__(54)
+ , toPrimitive = __webpack_require__(14);
+
+ $export($export.P + $export.F * __webpack_require__(6)(function(){
+ return new Date(NaN).toJSON() !== null || Date.prototype.toJSON.call({toISOString: function(){ return 1; }}) !== 1;
+ }), 'Date', {
+ toJSON: function toJSON(key){
+ var O = toObject(this)
+ , pv = toPrimitive(O);
+ return typeof pv == 'number' && !isFinite(pv) ? null : O.toISOString();
+ }
+ });
+
+/***/ },
+/* 223 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString()
+ var $export = __webpack_require__(7)
+ , fails = __webpack_require__(6)
+ , getTime = Date.prototype.getTime;
+
+ var lz = function(num){
+ return num > 9 ? num : '0' + num;
+ };
+
+ // PhantomJS / old WebKit has a broken implementations
+ $export($export.P + $export.F * (fails(function(){
+ return new Date(-5e13 - 1).toISOString() != '0385-07-25T07:06:39.999Z';
+ }) || !fails(function(){
+ new Date(NaN).toISOString();
+ })), 'Date', {
+ toISOString: function toISOString(){
+ if(!isFinite(getTime.call(this)))throw RangeError('Invalid time value');
+ var d = this
+ , y = d.getUTCFullYear()
+ , m = d.getUTCMilliseconds()
+ , s = y < 0 ? '-' : y > 9999 ? '+' : '';
+ return s + ('00000' + Math.abs(y)).slice(s ? -6 : -4) +
+ '-' + lz(d.getUTCMonth() + 1) + '-' + lz(d.getUTCDate()) +
+ 'T' + lz(d.getUTCHours()) + ':' + lz(d.getUTCMinutes()) +
+ ':' + lz(d.getUTCSeconds()) + '.' + (m > 99 ? m : '0' + lz(m)) + 'Z';
+ }
+ });
+
+/***/ },
+/* 224 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var DateProto = Date.prototype
+ , INVALID_DATE = 'Invalid Date'
+ , TO_STRING = 'toString'
+ , $toString = DateProto[TO_STRING]
+ , getTime = DateProto.getTime;
+ if(new Date(NaN) + '' != INVALID_DATE){
+ __webpack_require__(16)(DateProto, TO_STRING, function toString(){
+ var value = getTime.call(this);
+ return value === value ? $toString.call(this) : INVALID_DATE;
+ });
+ }
+
+/***/ },
+/* 225 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var TO_PRIMITIVE = __webpack_require__(23)('toPrimitive')
+ , proto = Date.prototype;
+
+ if(!(TO_PRIMITIVE in proto))__webpack_require__(8)(proto, TO_PRIMITIVE, __webpack_require__(226));
+
+/***/ },
+/* 226 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var anObject = __webpack_require__(10)
+ , toPrimitive = __webpack_require__(14)
+ , NUMBER = 'number';
+
+ module.exports = function(hint){
+ if(hint !== 'string' && hint !== NUMBER && hint !== 'default')throw TypeError('Incorrect hint');
+ return toPrimitive(anObject(this), hint != NUMBER);
+ };
+
+/***/ },
+/* 227 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var $export = __webpack_require__(7)
+ , $typed = __webpack_require__(228)
+ , buffer = __webpack_require__(229)
+ , anObject = __webpack_require__(10)
+ , toIndex = __webpack_require__(34)
+ , toLength = __webpack_require__(32)
+ , isObject = __webpack_require__(11)
+ , TYPED_ARRAY = __webpack_require__(23)('typed_array')
+ , ArrayBuffer = __webpack_require__(2).ArrayBuffer
+ , speciesConstructor = __webpack_require__(195)
+ , $ArrayBuffer = buffer.ArrayBuffer
+ , $DataView = buffer.DataView
+ , $isView = $typed.ABV && ArrayBuffer.isView
+ , $slice = $ArrayBuffer.prototype.slice
+ , VIEW = $typed.VIEW
+ , ARRAY_BUFFER = 'ArrayBuffer';
+
+ $export($export.G + $export.W + $export.F * (ArrayBuffer !== $ArrayBuffer), {ArrayBuffer: $ArrayBuffer});
+
+ $export($export.S + $export.F * !$typed.CONSTR, ARRAY_BUFFER, {
+ // 24.1.3.1 ArrayBuffer.isView(arg)
+ isView: function isView(it){
+ return $isView && $isView(it) || isObject(it) && VIEW in it;
+ }
+ });
+
+ $export($export.P + $export.U + $export.F * __webpack_require__(6)(function(){
+ return !new $ArrayBuffer(2).slice(1, undefined).byteLength;
+ }), ARRAY_BUFFER, {
+ // 24.1.4.3 ArrayBuffer.prototype.slice(start, end)
+ slice: function slice(start, end){
+ if($slice !== undefined && end === undefined)return $slice.call(anObject(this), start); // FF fix
+ var len = anObject(this).byteLength
+ , first = toIndex(start, len)
+ , final = toIndex(end === undefined ? len : end, len)
+ , result = new (speciesConstructor(this, $ArrayBuffer))(toLength(final - first))
+ , viewS = new $DataView(this)
+ , viewT = new $DataView(result)
+ , index = 0;
+ while(first < final){
+ viewT.setUint8(index++, viewS.getUint8(first++));
+ } return result;
+ }
+ });
+
+ __webpack_require__(183)(ARRAY_BUFFER);
+
+/***/ },
+/* 228 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var global = __webpack_require__(2)
+ , hide = __webpack_require__(8)
+ , uid = __webpack_require__(17)
+ , TYPED = uid('typed_array')
+ , VIEW = uid('view')
+ , ABV = !!(global.ArrayBuffer && global.DataView)
+ , CONSTR = ABV
+ , i = 0, l = 9, Typed;
+
+ var TypedArrayConstructors = (
+ 'Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array'
+ ).split(',');
+
+ while(i < l){
+ if(Typed = global[TypedArrayConstructors[i++]]){
+ hide(Typed.prototype, TYPED, true);
+ hide(Typed.prototype, VIEW, true);
+ } else CONSTR = false;
+ }
+
+ module.exports = {
+ ABV: ABV,
+ CONSTR: CONSTR,
+ TYPED: TYPED,
+ VIEW: VIEW
+ };
+
+/***/ },
+/* 229 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var global = __webpack_require__(2)
+ , DESCRIPTORS = __webpack_require__(5)
+ , LIBRARY = __webpack_require__(47)
+ , $typed = __webpack_require__(228)
+ , hide = __webpack_require__(8)
+ , redefineAll = __webpack_require__(198)
+ , fails = __webpack_require__(6)
+ , anInstance = __webpack_require__(82)
+ , toInteger = __webpack_require__(33)
+ , toLength = __webpack_require__(32)
+ , gOPN = __webpack_require__(45).f
+ , dP = __webpack_require__(9).f
+ , arrayFill = __webpack_require__(177)
+ , setToStringTag = __webpack_require__(22)
+ , ARRAY_BUFFER = 'ArrayBuffer'
+ , DATA_VIEW = 'DataView'
+ , PROTOTYPE = 'prototype'
+ , WRONG_LENGTH = 'Wrong length!'
+ , WRONG_INDEX = 'Wrong index!'
+ , $ArrayBuffer = global[ARRAY_BUFFER]
+ , $DataView = global[DATA_VIEW]
+ , Math = global.Math
+ , parseInt = global.parseInt
+ , RangeError = global.RangeError
+ , Infinity = global.Infinity
+ , BaseBuffer = $ArrayBuffer
+ , abs = Math.abs
+ , pow = Math.pow
+ , min = Math.min
+ , floor = Math.floor
+ , log = Math.log
+ , LN2 = Math.LN2
+ , BUFFER = 'buffer'
+ , BYTE_LENGTH = 'byteLength'
+ , BYTE_OFFSET = 'byteOffset'
+ , $BUFFER = DESCRIPTORS ? '_b' : BUFFER
+ , $LENGTH = DESCRIPTORS ? '_l' : BYTE_LENGTH
+ , $OFFSET = DESCRIPTORS ? '_o' : BYTE_OFFSET;
+
+ // IEEE754 conversions based on https://github.com/feross/ieee754
+ var packIEEE754 = function(value, mLen, nBytes){
+ var buffer = Array(nBytes)
+ , eLen = nBytes * 8 - mLen - 1
+ , eMax = (1 << eLen) - 1
+ , eBias = eMax >> 1
+ , rt = mLen === 23 ? pow(2, -24) - pow(2, -77) : 0
+ , i = 0
+ , s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0
+ , e, m, c;
+ value = abs(value)
+ if(value != value || value === Infinity){
+ m = value != value ? 1 : 0;
+ e = eMax;
+ } else {
+ e = floor(log(value) / LN2);
+ if(value * (c = pow(2, -e)) < 1){
+ e--;
+ c *= 2;
+ }
+ if(e + eBias >= 1){
+ value += rt / c;
+ } else {
+ value += rt * pow(2, 1 - eBias);
+ }
+ if(value * c >= 2){
+ e++;
+ c /= 2;
+ }
+ if(e + eBias >= eMax){
+ m = 0;
+ e = eMax;
+ } else if(e + eBias >= 1){
+ m = (value * c - 1) * pow(2, mLen);
+ e = e + eBias;
+ } else {
+ m = value * pow(2, eBias - 1) * pow(2, mLen);
+ e = 0;
+ }
+ }
+ for(; mLen >= 8; buffer[i++] = m & 255, m /= 256, mLen -= 8);
+ e = e << mLen | m;
+ eLen += mLen;
+ for(; eLen > 0; buffer[i++] = e & 255, e /= 256, eLen -= 8);
+ buffer[--i] |= s * 128;
+ return buffer;
+ };
+ var unpackIEEE754 = function(buffer, mLen, nBytes){
+ var eLen = nBytes * 8 - mLen - 1
+ , eMax = (1 << eLen) - 1
+ , eBias = eMax >> 1
+ , nBits = eLen - 7
+ , i = nBytes - 1
+ , s = buffer[i--]
+ , e = s & 127
+ , m;
+ s >>= 7;
+ for(; nBits > 0; e = e * 256 + buffer[i], i--, nBits -= 8);
+ m = e & (1 << -nBits) - 1;
+ e >>= -nBits;
+ nBits += mLen;
+ for(; nBits > 0; m = m * 256 + buffer[i], i--, nBits -= 8);
+ if(e === 0){
+ e = 1 - eBias;
+ } else if(e === eMax){
+ return m ? NaN : s ? -Infinity : Infinity;
+ } else {
+ m = m + pow(2, mLen);
+ e = e - eBias;
+ } return (s ? -1 : 1) * m * pow(2, e - mLen);
+ };
+
+ var unpackI32 = function(bytes){
+ return bytes[3] << 24 | bytes[2] << 16 | bytes[1] << 8 | bytes[0];
+ };
+ var packI8 = function(it){
+ return [it & 0xff];
+ };
+ var packI16 = function(it){
+ return [it & 0xff, it >> 8 & 0xff];
+ };
+ var packI32 = function(it){
+ return [it & 0xff, it >> 8 & 0xff, it >> 16 & 0xff, it >> 24 & 0xff];
+ };
+ var packF64 = function(it){
+ return packIEEE754(it, 52, 8);
+ };
+ var packF32 = function(it){
+ return packIEEE754(it, 23, 4);
+ };
+
+ var addGetter = function(C, key, internal){
+ dP(C[PROTOTYPE], key, {get: function(){ return this[internal]; }});
+ };
+
+ var get = function(view, bytes, index, isLittleEndian){
+ var numIndex = +index
+ , intIndex = toInteger(numIndex);
+ if(numIndex != intIndex || intIndex < 0 || intIndex + bytes > view[$LENGTH])throw RangeError(WRONG_INDEX);
+ var store = view[$BUFFER]._b
+ , start = intIndex + view[$OFFSET]
+ , pack = store.slice(start, start + bytes);
+ return isLittleEndian ? pack : pack.reverse();
+ };
+ var set = function(view, bytes, index, conversion, value, isLittleEndian){
+ var numIndex = +index
+ , intIndex = toInteger(numIndex);
+ if(numIndex != intIndex || intIndex < 0 || intIndex + bytes > view[$LENGTH])throw RangeError(WRONG_INDEX);
+ var store = view[$BUFFER]._b
+ , start = intIndex + view[$OFFSET]
+ , pack = conversion(+value);
+ for(var i = 0; i < bytes; i++)store[start + i] = pack[isLittleEndian ? i : bytes - i - 1];
+ };
+
+ var validateArrayBufferArguments = function(that, length){
+ anInstance(that, $ArrayBuffer, ARRAY_BUFFER);
+ var numberLength = +length
+ , byteLength = toLength(numberLength);
+ if(numberLength != byteLength)throw RangeError(WRONG_LENGTH);
+ return byteLength;
+ };
+
+ if(!$typed.ABV){
+ $ArrayBuffer = function ArrayBuffer(length){
+ var byteLength = validateArrayBufferArguments(this, length);
+ this._b = arrayFill.call(Array(byteLength), 0);
+ this[$LENGTH] = byteLength;
+ };
+
+ $DataView = function DataView(buffer, byteOffset, byteLength){
+ anInstance(this, $DataView, DATA_VIEW);
+ anInstance(buffer, $ArrayBuffer, DATA_VIEW);
+ var bufferLength = buffer[$LENGTH]
+ , offset = toInteger(byteOffset);
+ if(offset < 0 || offset > bufferLength)throw RangeError('Wrong offset!');
+ byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);
+ if(offset + byteLength > bufferLength)throw RangeError(WRONG_LENGTH);
+ this[$BUFFER] = buffer;
+ this[$OFFSET] = offset;
+ this[$LENGTH] = byteLength;
+ };
+
+ if(DESCRIPTORS){
+ addGetter($ArrayBuffer, BYTE_LENGTH, '_l');
+ addGetter($DataView, BUFFER, '_b');
+ addGetter($DataView, BYTE_LENGTH, '_l');
+ addGetter($DataView, BYTE_OFFSET, '_o');
+ }
+
+ redefineAll($DataView[PROTOTYPE], {
+ getInt8: function getInt8(byteOffset){
+ return get(this, 1, byteOffset)[0] << 24 >> 24;
+ },
+ getUint8: function getUint8(byteOffset){
+ return get(this, 1, byteOffset)[0];
+ },
+ getInt16: function getInt16(byteOffset /*, littleEndian */){
+ var bytes = get(this, 2, byteOffset, arguments[1]);
+ return (bytes[1] << 8 | bytes[0]) << 16 >> 16;
+ },
+ getUint16: function getUint16(byteOffset /*, littleEndian */){
+ var bytes = get(this, 2, byteOffset, arguments[1]);
+ return bytes[1] << 8 | bytes[0];
+ },
+ getInt32: function getInt32(byteOffset /*, littleEndian */){
+ return unpackI32(get(this, 4, byteOffset, arguments[1]));
+ },
+ getUint32: function getUint32(byteOffset /*, littleEndian */){
+ return unpackI32(get(this, 4, byteOffset, arguments[1])) >>> 0;
+ },
+ getFloat32: function getFloat32(byteOffset /*, littleEndian */){
+ return unpackIEEE754(get(this, 4, byteOffset, arguments[1]), 23, 4);
+ },
+ getFloat64: function getFloat64(byteOffset /*, littleEndian */){
+ return unpackIEEE754(get(this, 8, byteOffset, arguments[1]), 52, 8);
+ },
+ setInt8: function setInt8(byteOffset, value){
+ set(this, 1, byteOffset, packI8, value);
+ },
+ setUint8: function setUint8(byteOffset, value){
+ set(this, 1, byteOffset, packI8, value);
+ },
+ setInt16: function setInt16(byteOffset, value /*, littleEndian */){
+ set(this, 2, byteOffset, packI16, value, arguments[2]);
+ },
+ setUint16: function setUint16(byteOffset, value /*, littleEndian */){
+ set(this, 2, byteOffset, packI16, value, arguments[2]);
+ },
+ setInt32: function setInt32(byteOffset, value /*, littleEndian */){
+ set(this, 4, byteOffset, packI32, value, arguments[2]);
+ },
+ setUint32: function setUint32(byteOffset, value /*, littleEndian */){
+ set(this, 4, byteOffset, packI32, value, arguments[2]);
+ },
+ setFloat32: function setFloat32(byteOffset, value /*, littleEndian */){
+ set(this, 4, byteOffset, packF32, value, arguments[2]);
+ },
+ setFloat64: function setFloat64(byteOffset, value /*, littleEndian */){
+ set(this, 8, byteOffset, packF64, value, arguments[2]);
+ }
+ });
+ } else {
+ if(!fails(function(){
+ new $ArrayBuffer; // eslint-disable-line no-new
+ }) || !fails(function(){
+ new $ArrayBuffer(.5); // eslint-disable-line no-new
+ })){
+ $ArrayBuffer = function ArrayBuffer(length){
+ return new BaseBuffer(validateArrayBufferArguments(this, length));
+ };
+ var ArrayBufferProto = $ArrayBuffer[PROTOTYPE] = BaseBuffer[PROTOTYPE];
+ for(var keys = gOPN(BaseBuffer), j = 0, key; keys.length > j; ){
+ if(!((key = keys[j++]) in $ArrayBuffer))hide($ArrayBuffer, key, BaseBuffer[key]);
+ };
+ if(!LIBRARY)ArrayBufferProto.constructor = $ArrayBuffer;
+ }
+ // iOS Safari 7.x bug
+ var view = new $DataView(new $ArrayBuffer(2))
+ , $setInt8 = $DataView[PROTOTYPE].setInt8;
+ view.setInt8(0, 2147483648);
+ view.setInt8(1, 2147483649);
+ if(view.getInt8(0) || !view.getInt8(1))redefineAll($DataView[PROTOTYPE], {
+ setInt8: function setInt8(byteOffset, value){
+ $setInt8.call(this, byteOffset, value << 24 >> 24);
+ },
+ setUint8: function setUint8(byteOffset, value){
+ $setInt8.call(this, byteOffset, value << 24 >> 24);
+ }
+ }, true);
+ }
+ setToStringTag($ArrayBuffer, ARRAY_BUFFER);
+ setToStringTag($DataView, DATA_VIEW);
+ hide($DataView[PROTOTYPE], $typed.VIEW, true);
+ exports[ARRAY_BUFFER] = $ArrayBuffer;
+ exports[DATA_VIEW] = $DataView;
+
+/***/ },
+/* 230 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var $export = __webpack_require__(7);
+ $export($export.G + $export.W + $export.F * !__webpack_require__(228).ABV, {
+ DataView: __webpack_require__(229).DataView
+ });
+
+/***/ },
+/* 231 */
+/***/ function(module, exports, __webpack_require__) {
+
+ __webpack_require__(232)('Int8', 1, function(init){
+ return function Int8Array(data, byteOffset, length){
+ return init(this, data, byteOffset, length);
+ };
+ });
+
+/***/ },
+/* 232 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ if(__webpack_require__(5)){
+ var LIBRARY = __webpack_require__(47)
+ , global = __webpack_require__(2)
+ , fails = __webpack_require__(6)
+ , $export = __webpack_require__(7)
+ , $typed = __webpack_require__(228)
+ , $buffer = __webpack_require__(229)
+ , ctx = __webpack_require__(18)
+ , anInstance = __webpack_require__(82)
+ , propertyDesc = __webpack_require__(15)
+ , hide = __webpack_require__(8)
+ , redefineAll = __webpack_require__(198)
+ , isInteger = __webpack_require__(89)
+ , toInteger = __webpack_require__(33)
+ , toLength = __webpack_require__(32)
+ , toIndex = __webpack_require__(34)
+ , toPrimitive = __webpack_require__(14)
+ , has = __webpack_require__(4)
+ , same = __webpack_require__(67)
+ , classof = __webpack_require__(71)
+ , isObject = __webpack_require__(11)
+ , toObject = __webpack_require__(54)
+ , isArrayIter = __webpack_require__(153)
+ , create = __webpack_require__(41)
+ , getPrototypeOf = __webpack_require__(55)
+ , gOPN = __webpack_require__(45).f
+ , isIterable = __webpack_require__(233)
+ , getIterFn = __webpack_require__(154)
+ , uid = __webpack_require__(17)
+ , wks = __webpack_require__(23)
+ , createArrayMethod = __webpack_require__(162)
+ , createArrayIncludes = __webpack_require__(31)
+ , speciesConstructor = __webpack_require__(195)
+ , ArrayIterators = __webpack_require__(180)
+ , Iterators = __webpack_require__(134)
+ , $iterDetect = __webpack_require__(155)
+ , setSpecies = __webpack_require__(183)
+ , arrayFill = __webpack_require__(177)
+ , arrayCopyWithin = __webpack_require__(174)
+ , $DP = __webpack_require__(9)
+ , $GOPD = __webpack_require__(46)
+ , dP = $DP.f
+ , gOPD = $GOPD.f
+ , RangeError = global.RangeError
+ , TypeError = global.TypeError
+ , Uint8Array = global.Uint8Array
+ , ARRAY_BUFFER = 'ArrayBuffer'
+ , SHARED_BUFFER = 'Shared' + ARRAY_BUFFER
+ , BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT'
+ , PROTOTYPE = 'prototype'
+ , ArrayProto = Array[PROTOTYPE]
+ , $ArrayBuffer = $buffer.ArrayBuffer
+ , $DataView = $buffer.DataView
+ , arrayForEach = createArrayMethod(0)
+ , arrayFilter = createArrayMethod(2)
+ , arraySome = createArrayMethod(3)
+ , arrayEvery = createArrayMethod(4)
+ , arrayFind = createArrayMethod(5)
+ , arrayFindIndex = createArrayMethod(6)
+ , arrayIncludes = createArrayIncludes(true)
+ , arrayIndexOf = createArrayIncludes(false)
+ , arrayValues = ArrayIterators.values
+ , arrayKeys = ArrayIterators.keys
+ , arrayEntries = ArrayIterators.entries
+ , arrayLastIndexOf = ArrayProto.lastIndexOf
+ , arrayReduce = ArrayProto.reduce
+ , arrayReduceRight = ArrayProto.reduceRight
+ , arrayJoin = ArrayProto.join
+ , arraySort = ArrayProto.sort
+ , arraySlice = ArrayProto.slice
+ , arrayToString = ArrayProto.toString
+ , arrayToLocaleString = ArrayProto.toLocaleString
+ , ITERATOR = wks('iterator')
+ , TAG = wks('toStringTag')
+ , TYPED_CONSTRUCTOR = uid('typed_constructor')
+ , DEF_CONSTRUCTOR = uid('def_constructor')
+ , ALL_CONSTRUCTORS = $typed.CONSTR
+ , TYPED_ARRAY = $typed.TYPED
+ , VIEW = $typed.VIEW
+ , WRONG_LENGTH = 'Wrong length!';
+
+ var $map = createArrayMethod(1, function(O, length){
+ return allocate(speciesConstructor(O, O[DEF_CONSTRUCTOR]), length);
+ });
+
+ var LITTLE_ENDIAN = fails(function(){
+ return new Uint8Array(new Uint16Array([1]).buffer)[0] === 1;
+ });
+
+ var FORCED_SET = !!Uint8Array && !!Uint8Array[PROTOTYPE].set && fails(function(){
+ new Uint8Array(1).set({});
+ });
+
+ var strictToLength = function(it, SAME){
+ if(it === undefined)throw TypeError(WRONG_LENGTH);
+ var number = +it
+ , length = toLength(it);
+ if(SAME && !same(number, length))throw RangeError(WRONG_LENGTH);
+ return length;
+ };
+
+ var toOffset = function(it, BYTES){
+ var offset = toInteger(it);
+ if(offset < 0 || offset % BYTES)throw RangeError('Wrong offset!');
+ return offset;
+ };
+
+ var validate = function(it){
+ if(isObject(it) && TYPED_ARRAY in it)return it;
+ throw TypeError(it + ' is not a typed array!');
+ };
+
+ var allocate = function(C, length){
+ if(!(isObject(C) && TYPED_CONSTRUCTOR in C)){
+ throw TypeError('It is not a typed array constructor!');
+ } return new C(length);
+ };
+
+ var speciesFromList = function(O, list){
+ return fromList(speciesConstructor(O, O[DEF_CONSTRUCTOR]), list);
+ };
+
+ var fromList = function(C, list){
+ var index = 0
+ , length = list.length
+ , result = allocate(C, length);
+ while(length > index)result[index] = list[index++];
+ return result;
+ };
+
+ var addGetter = function(it, key, internal){
+ dP(it, key, {get: function(){ return this._d[internal]; }});
+ };
+
+ var $from = function from(source /*, mapfn, thisArg */){
+ var O = toObject(source)
+ , aLen = arguments.length
+ , mapfn = aLen > 1 ? arguments[1] : undefined
+ , mapping = mapfn !== undefined
+ , iterFn = getIterFn(O)
+ , i, length, values, result, step, iterator;
+ if(iterFn != undefined && !isArrayIter(iterFn)){
+ for(iterator = iterFn.call(O), values = [], i = 0; !(step = iterator.next()).done; i++){
+ values.push(step.value);
+ } O = values;
+ }
+ if(mapping && aLen > 2)mapfn = ctx(mapfn, arguments[2], 2);
+ for(i = 0, length = toLength(O.length), result = allocate(this, length); length > i; i++){
+ result[i] = mapping ? mapfn(O[i], i) : O[i];
+ }
+ return result;
+ };
+
+ var $of = function of(/*...items*/){
+ var index = 0
+ , length = arguments.length
+ , result = allocate(this, length);
+ while(length > index)result[index] = arguments[index++];
+ return result;
+ };
+
+ // iOS Safari 6.x fails here
+ var TO_LOCALE_BUG = !!Uint8Array && fails(function(){ arrayToLocaleString.call(new Uint8Array(1)); });
+
+ var $toLocaleString = function toLocaleString(){
+ return arrayToLocaleString.apply(TO_LOCALE_BUG ? arraySlice.call(validate(this)) : validate(this), arguments);
+ };
+
+ var proto = {
+ copyWithin: function copyWithin(target, start /*, end */){
+ return arrayCopyWithin.call(validate(this), target, start, arguments.length > 2 ? arguments[2] : undefined);
+ },
+ every: function every(callbackfn /*, thisArg */){
+ return arrayEvery(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+ },
+ fill: function fill(value /*, start, end */){ // eslint-disable-line no-unused-vars
+ return arrayFill.apply(validate(this), arguments);
+ },
+ filter: function filter(callbackfn /*, thisArg */){
+ return speciesFromList(this, arrayFilter(validate(this), callbackfn,
+ arguments.length > 1 ? arguments[1] : undefined));
+ },
+ find: function find(predicate /*, thisArg */){
+ return arrayFind(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);
+ },
+ findIndex: function findIndex(predicate /*, thisArg */){
+ return arrayFindIndex(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);
+ },
+ forEach: function forEach(callbackfn /*, thisArg */){
+ arrayForEach(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+ },
+ indexOf: function indexOf(searchElement /*, fromIndex */){
+ return arrayIndexOf(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);
+ },
+ includes: function includes(searchElement /*, fromIndex */){
+ return arrayIncludes(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);
+ },
+ join: function join(separator){ // eslint-disable-line no-unused-vars
+ return arrayJoin.apply(validate(this), arguments);
+ },
+ lastIndexOf: function lastIndexOf(searchElement /*, fromIndex */){ // eslint-disable-line no-unused-vars
+ return arrayLastIndexOf.apply(validate(this), arguments);
+ },
+ map: function map(mapfn /*, thisArg */){
+ return $map(validate(this), mapfn, arguments.length > 1 ? arguments[1] : undefined);
+ },
+ reduce: function reduce(callbackfn /*, initialValue */){ // eslint-disable-line no-unused-vars
+ return arrayReduce.apply(validate(this), arguments);
+ },
+ reduceRight: function reduceRight(callbackfn /*, initialValue */){ // eslint-disable-line no-unused-vars
+ return arrayReduceRight.apply(validate(this), arguments);
+ },
+ reverse: function reverse(){
+ var that = this
+ , length = validate(that).length
+ , middle = Math.floor(length / 2)
+ , index = 0
+ , value;
+ while(index < middle){
+ value = that[index];
+ that[index++] = that[--length];
+ that[length] = value;
+ } return that;
+ },
+ some: function some(callbackfn /*, thisArg */){
+ return arraySome(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+ },
+ sort: function sort(comparefn){
+ return arraySort.call(validate(this), comparefn);
+ },
+ subarray: function subarray(begin, end){
+ var O = validate(this)
+ , length = O.length
+ , $begin = toIndex(begin, length);
+ return new (speciesConstructor(O, O[DEF_CONSTRUCTOR]))(
+ O.buffer,
+ O.byteOffset + $begin * O.BYTES_PER_ELEMENT,
+ toLength((end === undefined ? length : toIndex(end, length)) - $begin)
+ );
+ }
+ };
+
+ var $slice = function slice(start, end){
+ return speciesFromList(this, arraySlice.call(validate(this), start, end));
+ };
+
+ var $set = function set(arrayLike /*, offset */){
+ validate(this);
+ var offset = toOffset(arguments[1], 1)
+ , length = this.length
+ , src = toObject(arrayLike)
+ , len = toLength(src.length)
+ , index = 0;
+ if(len + offset > length)throw RangeError(WRONG_LENGTH);
+ while(index < len)this[offset + index] = src[index++];
+ };
+
+ var $iterators = {
+ entries: function entries(){
+ return arrayEntries.call(validate(this));
+ },
+ keys: function keys(){
+ return arrayKeys.call(validate(this));
+ },
+ values: function values(){
+ return arrayValues.call(validate(this));
+ }
+ };
+
+ var isTAIndex = function(target, key){
+ return isObject(target)
+ && target[TYPED_ARRAY]
+ && typeof key != 'symbol'
+ && key in target
+ && String(+key) == String(key);
+ };
+ var $getDesc = function getOwnPropertyDescriptor(target, key){
+ return isTAIndex(target, key = toPrimitive(key, true))
+ ? propertyDesc(2, target[key])
+ : gOPD(target, key);
+ };
+ var $setDesc = function defineProperty(target, key, desc){
+ if(isTAIndex(target, key = toPrimitive(key, true))
+ && isObject(desc)
+ && has(desc, 'value')
+ && !has(desc, 'get')
+ && !has(desc, 'set')
+ // TODO: add validation descriptor w/o calling accessors
+ && !desc.configurable
+ && (!has(desc, 'writable') || desc.writable)
+ && (!has(desc, 'enumerable') || desc.enumerable)
+ ){
+ target[key] = desc.value;
+ return target;
+ } else return dP(target, key, desc);
+ };
+
+ if(!ALL_CONSTRUCTORS){
+ $GOPD.f = $getDesc;
+ $DP.f = $setDesc;
+ }
+
+ $export($export.S + $export.F * !ALL_CONSTRUCTORS, 'Object', {
+ getOwnPropertyDescriptor: $getDesc,
+ defineProperty: $setDesc
+ });
+
+ if(fails(function(){ arrayToString.call({}); })){
+ arrayToString = arrayToLocaleString = function toString(){
+ return arrayJoin.call(this);
+ }
+ }
+
+ var $TypedArrayPrototype$ = redefineAll({}, proto);
+ redefineAll($TypedArrayPrototype$, $iterators);
+ hide($TypedArrayPrototype$, ITERATOR, $iterators.values);
+ redefineAll($TypedArrayPrototype$, {
+ slice: $slice,
+ set: $set,
+ constructor: function(){ /* noop */ },
+ toString: arrayToString,
+ toLocaleString: $toLocaleString
+ });
+ addGetter($TypedArrayPrototype$, 'buffer', 'b');
+ addGetter($TypedArrayPrototype$, 'byteOffset', 'o');
+ addGetter($TypedArrayPrototype$, 'byteLength', 'l');
+ addGetter($TypedArrayPrototype$, 'length', 'e');
+ dP($TypedArrayPrototype$, TAG, {
+ get: function(){ return this[TYPED_ARRAY]; }
+ });
+
+ module.exports = function(KEY, BYTES, wrapper, CLAMPED){
+ CLAMPED = !!CLAMPED;
+ var NAME = KEY + (CLAMPED ? 'Clamped' : '') + 'Array'
+ , ISNT_UINT8 = NAME != 'Uint8Array'
+ , GETTER = 'get' + KEY
+ , SETTER = 'set' + KEY
+ , TypedArray = global[NAME]
+ , Base = TypedArray || {}
+ , TAC = TypedArray && getPrototypeOf(TypedArray)
+ , FORCED = !TypedArray || !$typed.ABV
+ , O = {}
+ , TypedArrayPrototype = TypedArray && TypedArray[PROTOTYPE];
+ var getter = function(that, index){
+ var data = that._d;
+ return data.v[GETTER](index * BYTES + data.o, LITTLE_ENDIAN);
+ };
+ var setter = function(that, index, value){
+ var data = that._d;
+ if(CLAMPED)value = (value = Math.round(value)) < 0 ? 0 : value > 0xff ? 0xff : value & 0xff;
+ data.v[SETTER](index * BYTES + data.o, value, LITTLE_ENDIAN);
+ };
+ var addElement = function(that, index){
+ dP(that, index, {
+ get: function(){
+ return getter(this, index);
+ },
+ set: function(value){
+ return setter(this, index, value);
+ },
+ enumerable: true
+ });
+ };
+ if(FORCED){
+ TypedArray = wrapper(function(that, data, $offset, $length){
+ anInstance(that, TypedArray, NAME, '_d');
+ var index = 0
+ , offset = 0
+ , buffer, byteLength, length, klass;
+ if(!isObject(data)){
+ length = strictToLength(data, true)
+ byteLength = length * BYTES;
+ buffer = new $ArrayBuffer(byteLength);
+ } else if(data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER){
+ buffer = data;
+ offset = toOffset($offset, BYTES);
+ var $len = data.byteLength;
+ if($length === undefined){
+ if($len % BYTES)throw RangeError(WRONG_LENGTH);
+ byteLength = $len - offset;
+ if(byteLength < 0)throw RangeError(WRONG_LENGTH);
+ } else {
+ byteLength = toLength($length) * BYTES;
+ if(byteLength + offset > $len)throw RangeError(WRONG_LENGTH);
+ }
+ length = byteLength / BYTES;
+ } else if(TYPED_ARRAY in data){
+ return fromList(TypedArray, data);
+ } else {
+ return $from.call(TypedArray, data);
+ }
+ hide(that, '_d', {
+ b: buffer,
+ o: offset,
+ l: byteLength,
+ e: length,
+ v: new $DataView(buffer)
+ });
+ while(index < length)addElement(that, index++);
+ });
+ TypedArrayPrototype = TypedArray[PROTOTYPE] = create($TypedArrayPrototype$);
+ hide(TypedArrayPrototype, 'constructor', TypedArray);
+ } else if(!$iterDetect(function(iter){
+ // V8 works with iterators, but fails in many other cases
+ // https://code.google.com/p/v8/issues/detail?id=4552
+ new TypedArray(null); // eslint-disable-line no-new
+ new TypedArray(iter); // eslint-disable-line no-new
+ }, true)){
+ TypedArray = wrapper(function(that, data, $offset, $length){
+ anInstance(that, TypedArray, NAME);
+ var klass;
+ // `ws` module bug, temporarily remove validation length for Uint8Array
+ // https://github.com/websockets/ws/pull/645
+ if(!isObject(data))return new Base(strictToLength(data, ISNT_UINT8));
+ if(data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER){
+ return $length !== undefined
+ ? new Base(data, toOffset($offset, BYTES), $length)
+ : $offset !== undefined
+ ? new Base(data, toOffset($offset, BYTES))
+ : new Base(data);
+ }
+ if(TYPED_ARRAY in data)return fromList(TypedArray, data);
+ return $from.call(TypedArray, data);
+ });
+ arrayForEach(TAC !== Function.prototype ? gOPN(Base).concat(gOPN(TAC)) : gOPN(Base), function(key){
+ if(!(key in TypedArray))hide(TypedArray, key, Base[key]);
+ });
+ TypedArray[PROTOTYPE] = TypedArrayPrototype;
+ if(!LIBRARY)TypedArrayPrototype.constructor = TypedArray;
+ }
+ var $nativeIterator = TypedArrayPrototype[ITERATOR]
+ , CORRECT_ITER_NAME = !!$nativeIterator && ($nativeIterator.name == 'values' || $nativeIterator.name == undefined)
+ , $iterator = $iterators.values;
+ hide(TypedArray, TYPED_CONSTRUCTOR, true);
+ hide(TypedArrayPrototype, TYPED_ARRAY, NAME);
+ hide(TypedArrayPrototype, VIEW, true);
+ hide(TypedArrayPrototype, DEF_CONSTRUCTOR, TypedArray);
+
+ if(CLAMPED ? new TypedArray(1)[TAG] != NAME : !(TAG in TypedArrayPrototype)){
+ dP(TypedArrayPrototype, TAG, {
+ get: function(){ return NAME; }
+ });
+ }
+
+ O[NAME] = TypedArray;
+
+ $export($export.G + $export.W + $export.F * (TypedArray != Base), O);
+
+ $export($export.S, NAME, {
+ BYTES_PER_ELEMENT: BYTES,
+ from: $from,
+ of: $of
+ });
+
+ if(!(BYTES_PER_ELEMENT in TypedArrayPrototype))hide(TypedArrayPrototype, BYTES_PER_ELEMENT, BYTES);
+
+ $export($export.P, NAME, proto);
+
+ setSpecies(NAME);
+
+ $export($export.P + $export.F * FORCED_SET, NAME, {set: $set});
+
+ $export($export.P + $export.F * !CORRECT_ITER_NAME, NAME, $iterators);
+
+ $export($export.P + $export.F * (TypedArrayPrototype.toString != arrayToString), NAME, {toString: arrayToString});
+
+ $export($export.P + $export.F * fails(function(){
+ new TypedArray(1).slice();
+ }), NAME, {slice: $slice});
+
+ $export($export.P + $export.F * (fails(function(){
+ return [1, 2].toLocaleString() != new TypedArray([1, 2]).toLocaleString()
+ }) || !fails(function(){
+ TypedArrayPrototype.toLocaleString.call([1, 2]);
+ })), NAME, {toLocaleString: $toLocaleString});
+
+ Iterators[NAME] = CORRECT_ITER_NAME ? $nativeIterator : $iterator;
+ if(!LIBRARY && !CORRECT_ITER_NAME)hide(TypedArrayPrototype, ITERATOR, $iterator);
+ };
+ } else module.exports = function(){ /* empty */ };
+
+/***/ },
+/* 233 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var classof = __webpack_require__(71)
+ , ITERATOR = __webpack_require__(23)('iterator')
+ , Iterators = __webpack_require__(134);
+ module.exports = __webpack_require__(3).isIterable = function(it){
+ var O = Object(it);
+ return O[ITERATOR] !== undefined
+ || '@@iterator' in O
+ || Iterators.hasOwnProperty(classof(O));
+ };
+
+/***/ },
+/* 234 */
+/***/ function(module, exports, __webpack_require__) {
+
+ __webpack_require__(232)('Uint8', 1, function(init){
+ return function Uint8Array(data, byteOffset, length){
+ return init(this, data, byteOffset, length);
+ };
+ });
+
+/***/ },
+/* 235 */
+/***/ function(module, exports, __webpack_require__) {
+
+ __webpack_require__(232)('Uint8', 1, function(init){
+ return function Uint8ClampedArray(data, byteOffset, length){
+ return init(this, data, byteOffset, length);
+ };
+ }, true);
+
+/***/ },
+/* 236 */
+/***/ function(module, exports, __webpack_require__) {
+
+ __webpack_require__(232)('Int16', 2, function(init){
+ return function Int16Array(data, byteOffset, length){
+ return init(this, data, byteOffset, length);
+ };
+ });
+
+/***/ },
+/* 237 */
+/***/ function(module, exports, __webpack_require__) {
+
+ __webpack_require__(232)('Uint16', 2, function(init){
+ return function Uint16Array(data, byteOffset, length){
+ return init(this, data, byteOffset, length);
+ };
+ });
+
+/***/ },
+/* 238 */
+/***/ function(module, exports, __webpack_require__) {
+
+ __webpack_require__(232)('Int32', 4, function(init){
+ return function Int32Array(data, byteOffset, length){
+ return init(this, data, byteOffset, length);
+ };
+ });
+
+/***/ },
+/* 239 */
+/***/ function(module, exports, __webpack_require__) {
+
+ __webpack_require__(232)('Uint32', 4, function(init){
+ return function Uint32Array(data, byteOffset, length){
+ return init(this, data, byteOffset, length);
+ };
+ });
+
+/***/ },
+/* 240 */
+/***/ function(module, exports, __webpack_require__) {
+
+ __webpack_require__(232)('Float32', 4, function(init){
+ return function Float32Array(data, byteOffset, length){
+ return init(this, data, byteOffset, length);
+ };
+ });
+
+/***/ },
+/* 241 */
+/***/ function(module, exports, __webpack_require__) {
+
+ __webpack_require__(232)('Float64', 8, function(init){
+ return function Float64Array(data, byteOffset, length){
+ return init(this, data, byteOffset, length);
+ };
+ });
+
+/***/ },
+/* 242 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // https://github.com/tc39/Array.prototype.includes
+ var $export = __webpack_require__(7)
+ , $includes = __webpack_require__(31)(true);
+
+ $export($export.P, 'Array', {
+ includes: function includes(el /*, fromIndex = 0 */){
+ return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);
+ }
+ });
+
+ __webpack_require__(175)('includes');
+
+/***/ },
+/* 243 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // https://github.com/mathiasbynens/String.prototype.at
+ var $export = __webpack_require__(7)
+ , $at = __webpack_require__(124)(true);
+
+ $export($export.P, 'String', {
+ at: function at(pos){
+ return $at(this, pos);
+ }
+ });
+
+/***/ },
+/* 244 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // https://github.com/tc39/proposal-string-pad-start-end
+ var $export = __webpack_require__(7)
+ , $pad = __webpack_require__(245);
+
+ $export($export.P, 'String', {
+ padStart: function padStart(maxLength /*, fillString = ' ' */){
+ return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, true);
+ }
+ });
+
+/***/ },
+/* 245 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // https://github.com/tc39/proposal-string-pad-start-end
+ var toLength = __webpack_require__(32)
+ , repeat = __webpack_require__(84)
+ , defined = __webpack_require__(30);
+
+ module.exports = function(that, maxLength, fillString, left){
+ var S = String(defined(that))
+ , stringLength = S.length
+ , fillStr = fillString === undefined ? ' ' : String(fillString)
+ , intMaxLength = toLength(maxLength);
+ if(intMaxLength <= stringLength)return S;
+ if(fillStr == '')fillStr = ' ';
+ var fillLen = intMaxLength - stringLength
+ , stringFiller = repeat.call(fillStr, Math.ceil(fillLen / fillStr.length));
+ if(stringFiller.length > fillLen)stringFiller = stringFiller.slice(0, fillLen);
+ return left ? stringFiller + S : S + stringFiller;
+ };
+
+
+/***/ },
+/* 246 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // https://github.com/tc39/proposal-string-pad-start-end
+ var $export = __webpack_require__(7)
+ , $pad = __webpack_require__(245);
+
+ $export($export.P, 'String', {
+ padEnd: function padEnd(maxLength /*, fillString = ' ' */){
+ return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, false);
+ }
+ });
+
+/***/ },
+/* 247 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // https://github.com/sebmarkbage/ecmascript-string-left-right-trim
+ __webpack_require__(79)('trimLeft', function($trim){
+ return function trimLeft(){
+ return $trim(this, 1);
+ };
+ }, 'trimStart');
+
+/***/ },
+/* 248 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // https://github.com/sebmarkbage/ecmascript-string-left-right-trim
+ __webpack_require__(79)('trimRight', function($trim){
+ return function trimRight(){
+ return $trim(this, 2);
+ };
+ }, 'trimEnd');
+
+/***/ },
+/* 249 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // https://tc39.github.io/String.prototype.matchAll/
+ var $export = __webpack_require__(7)
+ , defined = __webpack_require__(30)
+ , toLength = __webpack_require__(32)
+ , isRegExp = __webpack_require__(127)
+ , getFlags = __webpack_require__(185)
+ , RegExpProto = RegExp.prototype;
+
+ var $RegExpStringIterator = function(regexp, string){
+ this._r = regexp;
+ this._s = string;
+ };
+
+ __webpack_require__(135)($RegExpStringIterator, 'RegExp String', function next(){
+ var match = this._r.exec(this._s);
+ return {value: match, done: match === null};
+ });
+
+ $export($export.P, 'String', {
+ matchAll: function matchAll(regexp){
+ defined(this);
+ if(!isRegExp(regexp))throw TypeError(regexp + ' is not a regexp!');
+ var S = String(this)
+ , flags = 'flags' in RegExpProto ? String(regexp.flags) : getFlags.call(regexp)
+ , rx = new RegExp(regexp.source, ~flags.indexOf('g') ? flags : 'g' + flags);
+ rx.lastIndex = toLength(regexp.lastIndex);
+ return new $RegExpStringIterator(rx, S);
+ }
+ });
+
+/***/ },
+/* 250 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // https://github.com/tc39/proposal-object-getownpropertydescriptors
+ var $export = __webpack_require__(7)
+ , ownKeys = __webpack_require__(217)
+ , toIObject = __webpack_require__(27)
+ , createDesc = __webpack_require__(15)
+ , gOPD = __webpack_require__(46)
+ , dP = __webpack_require__(9);
+
+ $export($export.S, 'Object', {
+ getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object){
+ var O = toIObject(object)
+ , getDesc = gOPD.f
+ , keys = ownKeys(O)
+ , result = {}
+ , i = 0
+ , key, D;
+ while(keys.length > i){
+ D = getDesc(O, key = keys[i++]);
+ if(key in result)dP.f(result, key, createDesc(0, D));
+ else result[key] = D;
+ } return result;
+ }
+ });
+
+/***/ },
+/* 251 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // https://github.com/tc39/proposal-object-values-entries
+ var $export = __webpack_require__(7)
+ , $values = __webpack_require__(252)(false);
+
+ $export($export.S, 'Object', {
+ values: function values(it){
+ return $values(it);
+ }
+ });
+
+/***/ },
+/* 252 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var getKeys = __webpack_require__(25)
+ , toIObject = __webpack_require__(27)
+ , isEnum = __webpack_require__(39).f;
+ module.exports = function(isEntries){
+ return function(it){
+ var O = toIObject(it)
+ , keys = getKeys(O)
+ , length = keys.length
+ , i = 0
+ , result = []
+ , key;
+ while(length > i)if(isEnum.call(O, key = keys[i++])){
+ result.push(isEntries ? [key, O[key]] : O[key]);
+ } return result;
+ };
+ };
+
+/***/ },
+/* 253 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // https://github.com/tc39/proposal-object-values-entries
+ var $export = __webpack_require__(7)
+ , $entries = __webpack_require__(252)(true);
+
+ $export($export.S, 'Object', {
+ entries: function entries(it){
+ return $entries(it);
+ }
+ });
+
+/***/ },
+/* 254 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var $export = __webpack_require__(7)
+ , toObject = __webpack_require__(54)
+ , aFunction = __webpack_require__(19)
+ , $defineProperty = __webpack_require__(9);
+
+ // B.2.2.2 Object.prototype.__defineGetter__(P, getter)
+ __webpack_require__(5) && $export($export.P + __webpack_require__(255), 'Object', {
+ __defineGetter__: function __defineGetter__(P, getter){
+ $defineProperty.f(toObject(this), P, {get: aFunction(getter), enumerable: true, configurable: true});
+ }
+ });
+
+/***/ },
+/* 255 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // Forced replacement prototype accessors methods
+ module.exports = __webpack_require__(47)|| !__webpack_require__(6)(function(){
+ var K = Math.random();
+ // In FF throws only define methods
+ __defineSetter__.call(null, K, function(){ /* empty */});
+ delete __webpack_require__(2)[K];
+ });
+
+/***/ },
+/* 256 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var $export = __webpack_require__(7)
+ , toObject = __webpack_require__(54)
+ , aFunction = __webpack_require__(19)
+ , $defineProperty = __webpack_require__(9);
+
+ // B.2.2.3 Object.prototype.__defineSetter__(P, setter)
+ __webpack_require__(5) && $export($export.P + __webpack_require__(255), 'Object', {
+ __defineSetter__: function __defineSetter__(P, setter){
+ $defineProperty.f(toObject(this), P, {set: aFunction(setter), enumerable: true, configurable: true});
+ }
+ });
+
+/***/ },
+/* 257 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var $export = __webpack_require__(7)
+ , toObject = __webpack_require__(54)
+ , toPrimitive = __webpack_require__(14)
+ , getPrototypeOf = __webpack_require__(55)
+ , getOwnPropertyDescriptor = __webpack_require__(46).f;
+
+ // B.2.2.4 Object.prototype.__lookupGetter__(P)
+ __webpack_require__(5) && $export($export.P + __webpack_require__(255), 'Object', {
+ __lookupGetter__: function __lookupGetter__(P){
+ var O = toObject(this)
+ , K = toPrimitive(P, true)
+ , D;
+ do {
+ if(D = getOwnPropertyDescriptor(O, K))return D.get;
+ } while(O = getPrototypeOf(O));
+ }
+ });
+
+/***/ },
+/* 258 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var $export = __webpack_require__(7)
+ , toObject = __webpack_require__(54)
+ , toPrimitive = __webpack_require__(14)
+ , getPrototypeOf = __webpack_require__(55)
+ , getOwnPropertyDescriptor = __webpack_require__(46).f;
+
+ // B.2.2.5 Object.prototype.__lookupSetter__(P)
+ __webpack_require__(5) && $export($export.P + __webpack_require__(255), 'Object', {
+ __lookupSetter__: function __lookupSetter__(P){
+ var O = toObject(this)
+ , K = toPrimitive(P, true)
+ , D;
+ do {
+ if(D = getOwnPropertyDescriptor(O, K))return D.set;
+ } while(O = getPrototypeOf(O));
+ }
+ });
+
+/***/ },
+/* 259 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // https://github.com/DavidBruant/Map-Set.prototype.toJSON
+ var $export = __webpack_require__(7);
+
+ $export($export.P + $export.R, 'Map', {toJSON: __webpack_require__(260)('Map')});
+
+/***/ },
+/* 260 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // https://github.com/DavidBruant/Map-Set.prototype.toJSON
+ var classof = __webpack_require__(71)
+ , from = __webpack_require__(261);
+ module.exports = function(NAME){
+ return function toJSON(){
+ if(classof(this) != NAME)throw TypeError(NAME + "#toJSON isn't generic");
+ return from(this);
+ };
+ };
+
+/***/ },
+/* 261 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var forOf = __webpack_require__(194);
+
+ module.exports = function(iter, ITERATOR){
+ var result = [];
+ forOf(iter, false, result.push, result, ITERATOR);
+ return result;
+ };
+
+
+/***/ },
+/* 262 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // https://github.com/DavidBruant/Map-Set.prototype.toJSON
+ var $export = __webpack_require__(7);
+
+ $export($export.P + $export.R, 'Set', {toJSON: __webpack_require__(260)('Set')});
+
+/***/ },
+/* 263 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // https://github.com/ljharb/proposal-global
+ var $export = __webpack_require__(7);
+
+ $export($export.S, 'System', {global: __webpack_require__(2)});
+
+/***/ },
+/* 264 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // https://github.com/ljharb/proposal-is-error
+ var $export = __webpack_require__(7)
+ , cof = __webpack_require__(29);
+
+ $export($export.S, 'Error', {
+ isError: function isError(it){
+ return cof(it) === 'Error';
+ }
+ });
+
+/***/ },
+/* 265 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // https://gist.github.com/BrendanEich/4294d5c212a6d2254703
+ var $export = __webpack_require__(7);
+
+ $export($export.S, 'Math', {
+ iaddh: function iaddh(x0, x1, y0, y1){
+ var $x0 = x0 >>> 0
+ , $x1 = x1 >>> 0
+ , $y0 = y0 >>> 0;
+ return $x1 + (y1 >>> 0) + (($x0 & $y0 | ($x0 | $y0) & ~($x0 + $y0 >>> 0)) >>> 31) | 0;
+ }
+ });
+
+/***/ },
+/* 266 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // https://gist.github.com/BrendanEich/4294d5c212a6d2254703
+ var $export = __webpack_require__(7);
+
+ $export($export.S, 'Math', {
+ isubh: function isubh(x0, x1, y0, y1){
+ var $x0 = x0 >>> 0
+ , $x1 = x1 >>> 0
+ , $y0 = y0 >>> 0;
+ return $x1 - (y1 >>> 0) - ((~$x0 & $y0 | ~($x0 ^ $y0) & $x0 - $y0 >>> 0) >>> 31) | 0;
+ }
+ });
+
+/***/ },
+/* 267 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // https://gist.github.com/BrendanEich/4294d5c212a6d2254703
+ var $export = __webpack_require__(7);
+
+ $export($export.S, 'Math', {
+ imulh: function imulh(u, v){
+ var UINT16 = 0xffff
+ , $u = +u
+ , $v = +v
+ , u0 = $u & UINT16
+ , v0 = $v & UINT16
+ , u1 = $u >> 16
+ , v1 = $v >> 16
+ , t = (u1 * v0 >>> 0) + (u0 * v0 >>> 16);
+ return u1 * v1 + (t >> 16) + ((u0 * v1 >>> 0) + (t & UINT16) >> 16);
+ }
+ });
+
+/***/ },
+/* 268 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // https://gist.github.com/BrendanEich/4294d5c212a6d2254703
+ var $export = __webpack_require__(7);
+
+ $export($export.S, 'Math', {
+ umulh: function umulh(u, v){
+ var UINT16 = 0xffff
+ , $u = +u
+ , $v = +v
+ , u0 = $u & UINT16
+ , v0 = $v & UINT16
+ , u1 = $u >>> 16
+ , v1 = $v >>> 16
+ , t = (u1 * v0 >>> 0) + (u0 * v0 >>> 16);
+ return u1 * v1 + (t >>> 16) + ((u0 * v1 >>> 0) + (t & UINT16) >>> 16);
+ }
+ });
+
+/***/ },
+/* 269 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var metadata = __webpack_require__(270)
+ , anObject = __webpack_require__(10)
+ , toMetaKey = metadata.key
+ , ordinaryDefineOwnMetadata = metadata.set;
+
+ metadata.exp({defineMetadata: function defineMetadata(metadataKey, metadataValue, target, targetKey){
+ ordinaryDefineOwnMetadata(metadataKey, metadataValue, anObject(target), toMetaKey(targetKey));
+ }});
+
+/***/ },
+/* 270 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var Map = __webpack_require__(199)
+ , $export = __webpack_require__(7)
+ , shared = __webpack_require__(21)('metadata')
+ , store = shared.store || (shared.store = new (__webpack_require__(203)));
+
+ var getOrCreateMetadataMap = function(target, targetKey, create){
+ var targetMetadata = store.get(target);
+ if(!targetMetadata){
+ if(!create)return undefined;
+ store.set(target, targetMetadata = new Map);
+ }
+ var keyMetadata = targetMetadata.get(targetKey);
+ if(!keyMetadata){
+ if(!create)return undefined;
+ targetMetadata.set(targetKey, keyMetadata = new Map);
+ } return keyMetadata;
+ };
+ var ordinaryHasOwnMetadata = function(MetadataKey, O, P){
+ var metadataMap = getOrCreateMetadataMap(O, P, false);
+ return metadataMap === undefined ? false : metadataMap.has(MetadataKey);
+ };
+ var ordinaryGetOwnMetadata = function(MetadataKey, O, P){
+ var metadataMap = getOrCreateMetadataMap(O, P, false);
+ return metadataMap === undefined ? undefined : metadataMap.get(MetadataKey);
+ };
+ var ordinaryDefineOwnMetadata = function(MetadataKey, MetadataValue, O, P){
+ getOrCreateMetadataMap(O, P, true).set(MetadataKey, MetadataValue);
+ };
+ var ordinaryOwnMetadataKeys = function(target, targetKey){
+ var metadataMap = getOrCreateMetadataMap(target, targetKey, false)
+ , keys = [];
+ if(metadataMap)metadataMap.forEach(function(_, key){ keys.push(key); });
+ return keys;
+ };
+ var toMetaKey = function(it){
+ return it === undefined || typeof it == 'symbol' ? it : String(it);
+ };
+ var exp = function(O){
+ $export($export.S, 'Reflect', O);
+ };
+
+ module.exports = {
+ store: store,
+ map: getOrCreateMetadataMap,
+ has: ordinaryHasOwnMetadata,
+ get: ordinaryGetOwnMetadata,
+ set: ordinaryDefineOwnMetadata,
+ keys: ordinaryOwnMetadataKeys,
+ key: toMetaKey,
+ exp: exp
+ };
+
+/***/ },
+/* 271 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var metadata = __webpack_require__(270)
+ , anObject = __webpack_require__(10)
+ , toMetaKey = metadata.key
+ , getOrCreateMetadataMap = metadata.map
+ , store = metadata.store;
+
+ metadata.exp({deleteMetadata: function deleteMetadata(metadataKey, target /*, targetKey */){
+ var targetKey = arguments.length < 3 ? undefined : toMetaKey(arguments[2])
+ , metadataMap = getOrCreateMetadataMap(anObject(target), targetKey, false);
+ if(metadataMap === undefined || !metadataMap['delete'](metadataKey))return false;
+ if(metadataMap.size)return true;
+ var targetMetadata = store.get(target);
+ targetMetadata['delete'](targetKey);
+ return !!targetMetadata.size || store['delete'](target);
+ }});
+
+/***/ },
+/* 272 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var metadata = __webpack_require__(270)
+ , anObject = __webpack_require__(10)
+ , getPrototypeOf = __webpack_require__(55)
+ , ordinaryHasOwnMetadata = metadata.has
+ , ordinaryGetOwnMetadata = metadata.get
+ , toMetaKey = metadata.key;
+
+ var ordinaryGetMetadata = function(MetadataKey, O, P){
+ var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P);
+ if(hasOwn)return ordinaryGetOwnMetadata(MetadataKey, O, P);
+ var parent = getPrototypeOf(O);
+ return parent !== null ? ordinaryGetMetadata(MetadataKey, parent, P) : undefined;
+ };
+
+ metadata.exp({getMetadata: function getMetadata(metadataKey, target /*, targetKey */){
+ return ordinaryGetMetadata(metadataKey, anObject(target), arguments.length < 3 ? undefined : toMetaKey(arguments[2]));
+ }});
+
+/***/ },
+/* 273 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var Set = __webpack_require__(202)
+ , from = __webpack_require__(261)
+ , metadata = __webpack_require__(270)
+ , anObject = __webpack_require__(10)
+ , getPrototypeOf = __webpack_require__(55)
+ , ordinaryOwnMetadataKeys = metadata.keys
+ , toMetaKey = metadata.key;
+
+ var ordinaryMetadataKeys = function(O, P){
+ var oKeys = ordinaryOwnMetadataKeys(O, P)
+ , parent = getPrototypeOf(O);
+ if(parent === null)return oKeys;
+ var pKeys = ordinaryMetadataKeys(parent, P);
+ return pKeys.length ? oKeys.length ? from(new Set(oKeys.concat(pKeys))) : pKeys : oKeys;
+ };
+
+ metadata.exp({getMetadataKeys: function getMetadataKeys(target /*, targetKey */){
+ return ordinaryMetadataKeys(anObject(target), arguments.length < 2 ? undefined : toMetaKey(arguments[1]));
+ }});
+
+/***/ },
+/* 274 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var metadata = __webpack_require__(270)
+ , anObject = __webpack_require__(10)
+ , ordinaryGetOwnMetadata = metadata.get
+ , toMetaKey = metadata.key;
+
+ metadata.exp({getOwnMetadata: function getOwnMetadata(metadataKey, target /*, targetKey */){
+ return ordinaryGetOwnMetadata(metadataKey, anObject(target)
+ , arguments.length < 3 ? undefined : toMetaKey(arguments[2]));
+ }});
+
+/***/ },
+/* 275 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var metadata = __webpack_require__(270)
+ , anObject = __webpack_require__(10)
+ , ordinaryOwnMetadataKeys = metadata.keys
+ , toMetaKey = metadata.key;
+
+ metadata.exp({getOwnMetadataKeys: function getOwnMetadataKeys(target /*, targetKey */){
+ return ordinaryOwnMetadataKeys(anObject(target), arguments.length < 2 ? undefined : toMetaKey(arguments[1]));
+ }});
+
+/***/ },
+/* 276 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var metadata = __webpack_require__(270)
+ , anObject = __webpack_require__(10)
+ , getPrototypeOf = __webpack_require__(55)
+ , ordinaryHasOwnMetadata = metadata.has
+ , toMetaKey = metadata.key;
+
+ var ordinaryHasMetadata = function(MetadataKey, O, P){
+ var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P);
+ if(hasOwn)return true;
+ var parent = getPrototypeOf(O);
+ return parent !== null ? ordinaryHasMetadata(MetadataKey, parent, P) : false;
+ };
+
+ metadata.exp({hasMetadata: function hasMetadata(metadataKey, target /*, targetKey */){
+ return ordinaryHasMetadata(metadataKey, anObject(target), arguments.length < 3 ? undefined : toMetaKey(arguments[2]));
+ }});
+
+/***/ },
+/* 277 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var metadata = __webpack_require__(270)
+ , anObject = __webpack_require__(10)
+ , ordinaryHasOwnMetadata = metadata.has
+ , toMetaKey = metadata.key;
+
+ metadata.exp({hasOwnMetadata: function hasOwnMetadata(metadataKey, target /*, targetKey */){
+ return ordinaryHasOwnMetadata(metadataKey, anObject(target)
+ , arguments.length < 3 ? undefined : toMetaKey(arguments[2]));
+ }});
+
+/***/ },
+/* 278 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var metadata = __webpack_require__(270)
+ , anObject = __webpack_require__(10)
+ , aFunction = __webpack_require__(19)
+ , toMetaKey = metadata.key
+ , ordinaryDefineOwnMetadata = metadata.set;
+
+ metadata.exp({metadata: function metadata(metadataKey, metadataValue){
+ return function decorator(target, targetKey){
+ ordinaryDefineOwnMetadata(
+ metadataKey, metadataValue,
+ (targetKey !== undefined ? anObject : aFunction)(target),
+ toMetaKey(targetKey)
+ );
+ };
+ }});
+
+/***/ },
+/* 279 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var $export = __webpack_require__(7)
+ , $task = __webpack_require__(196);
+ $export($export.G + $export.B, {
+ setImmediate: $task.set,
+ clearImmediate: $task.clear
+ });
+
+/***/ },
+/* 280 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var $iterators = __webpack_require__(180)
+ , redefine = __webpack_require__(16)
+ , global = __webpack_require__(2)
+ , hide = __webpack_require__(8)
+ , Iterators = __webpack_require__(134)
+ , wks = __webpack_require__(23)
+ , ITERATOR = wks('iterator')
+ , TO_STRING_TAG = wks('toStringTag')
+ , ArrayValues = Iterators.Array;
+
+ for(var collections = ['NodeList', 'DOMTokenList', 'MediaList', 'StyleSheetList', 'CSSRuleList'], i = 0; i < 5; i++){
+ var NAME = collections[i]
+ , Collection = global[NAME]
+ , proto = Collection && Collection.prototype
+ , key;
+ if(proto){
+ if(!proto[ITERATOR])hide(proto, ITERATOR, ArrayValues);
+ if(!proto[TO_STRING_TAG])hide(proto, TO_STRING_TAG, NAME);
+ Iterators[NAME] = ArrayValues;
+ for(key in $iterators)if(!proto[key])redefine(proto, key, $iterators[key], true);
+ }
+ }
+
+/***/ },
+/* 281 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // ie9- setTimeout & setInterval additional parameters fix
+ var global = __webpack_require__(2)
+ , $export = __webpack_require__(7)
+ , invoke = __webpack_require__(74)
+ , partial = __webpack_require__(282)
+ , navigator = global.navigator
+ , MSIE = !!navigator && /MSIE .\./.test(navigator.userAgent); // <- dirty ie9- check
+ var wrap = function(set){
+ return MSIE ? function(fn, time /*, ...args */){
+ return set(invoke(
+ partial,
+ [].slice.call(arguments, 2),
+ typeof fn == 'function' ? fn : Function(fn)
+ ), time);
+ } : set;
+ };
+ $export($export.G + $export.B + $export.F * MSIE, {
+ setTimeout: wrap(global.setTimeout),
+ setInterval: wrap(global.setInterval)
+ });
+
+/***/ },
+/* 282 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var path = __webpack_require__(283)
+ , invoke = __webpack_require__(74)
+ , aFunction = __webpack_require__(19);
+ module.exports = function(/* ...pargs */){
+ var fn = aFunction(this)
+ , length = arguments.length
+ , pargs = Array(length)
+ , i = 0
+ , _ = path._
+ , holder = false;
+ while(length > i)if((pargs[i] = arguments[i++]) === _)holder = true;
+ return function(/* ...args */){
+ var that = this
+ , aLen = arguments.length
+ , j = 0, k = 0, args;
+ if(!holder && !aLen)return invoke(fn, pargs, that);
+ args = pargs.slice();
+ if(holder)for(;length > j; j++)if(args[j] === _)args[j] = arguments[k++];
+ while(aLen > k)args.push(arguments[k++]);
+ return invoke(fn, args, that);
+ };
+ };
+
+/***/ },
+/* 283 */
+/***/ function(module, exports, __webpack_require__) {
+
+ module.exports = __webpack_require__(2);
+
+/***/ },
+/* 284 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var ctx = __webpack_require__(18)
+ , $export = __webpack_require__(7)
+ , createDesc = __webpack_require__(15)
+ , assign = __webpack_require__(65)
+ , create = __webpack_require__(41)
+ , getPrototypeOf = __webpack_require__(55)
+ , getKeys = __webpack_require__(25)
+ , dP = __webpack_require__(9)
+ , keyOf = __webpack_require__(24)
+ , aFunction = __webpack_require__(19)
+ , forOf = __webpack_require__(194)
+ , isIterable = __webpack_require__(233)
+ , $iterCreate = __webpack_require__(135)
+ , step = __webpack_require__(181)
+ , isObject = __webpack_require__(11)
+ , toIObject = __webpack_require__(27)
+ , DESCRIPTORS = __webpack_require__(5)
+ , has = __webpack_require__(4);
+
+ // 0 -> Dict.forEach
+ // 1 -> Dict.map
+ // 2 -> Dict.filter
+ // 3 -> Dict.some
+ // 4 -> Dict.every
+ // 5 -> Dict.find
+ // 6 -> Dict.findKey
+ // 7 -> Dict.mapPairs
+ var createDictMethod = function(TYPE){
+ var IS_MAP = TYPE == 1
+ , IS_EVERY = TYPE == 4;
+ return function(object, callbackfn, that /* = undefined */){
+ var f = ctx(callbackfn, that, 3)
+ , O = toIObject(object)
+ , result = IS_MAP || TYPE == 7 || TYPE == 2
+ ? new (typeof this == 'function' ? this : Dict) : undefined
+ , key, val, res;
+ for(key in O)if(has(O, key)){
+ val = O[key];
+ res = f(val, key, object);
+ if(TYPE){
+ if(IS_MAP)result[key] = res; // map
+ else if(res)switch(TYPE){
+ case 2: result[key] = val; break; // filter
+ case 3: return true; // some
+ case 5: return val; // find
+ case 6: return key; // findKey
+ case 7: result[res[0]] = res[1]; // mapPairs
+ } else if(IS_EVERY)return false; // every
+ }
+ }
+ return TYPE == 3 || IS_EVERY ? IS_EVERY : result;
+ };
+ };
+ var findKey = createDictMethod(6);
+
+ var createDictIter = function(kind){
+ return function(it){
+ return new DictIterator(it, kind);
+ };
+ };
+ var DictIterator = function(iterated, kind){
+ this._t = toIObject(iterated); // target
+ this._a = getKeys(iterated); // keys
+ this._i = 0; // next index
+ this._k = kind; // kind
+ };
+ $iterCreate(DictIterator, 'Dict', function(){
+ var that = this
+ , O = that._t
+ , keys = that._a
+ , kind = that._k
+ , key;
+ do {
+ if(that._i >= keys.length){
+ that._t = undefined;
+ return step(1);
+ }
+ } while(!has(O, key = keys[that._i++]));
+ if(kind == 'keys' )return step(0, key);
+ if(kind == 'values')return step(0, O[key]);
+ return step(0, [key, O[key]]);
+ });
+
+ function Dict(iterable){
+ var dict = create(null);
+ if(iterable != undefined){
+ if(isIterable(iterable)){
+ forOf(iterable, true, function(key, value){
+ dict[key] = value;
+ });
+ } else assign(dict, iterable);
+ }
+ return dict;
+ }
+ Dict.prototype = null;
+
+ function reduce(object, mapfn, init){
+ aFunction(mapfn);
+ var O = toIObject(object)
+ , keys = getKeys(O)
+ , length = keys.length
+ , i = 0
+ , memo, key;
+ if(arguments.length < 3){
+ if(!length)throw TypeError('Reduce of empty object with no initial value');
+ memo = O[keys[i++]];
+ } else memo = Object(init);
+ while(length > i)if(has(O, key = keys[i++])){
+ memo = mapfn(memo, O[key], key, object);
+ }
+ return memo;
+ }
+
+ function includes(object, el){
+ return (el == el ? keyOf(object, el) : findKey(object, function(it){
+ return it != it;
+ })) !== undefined;
+ }
+
+ function get(object, key){
+ if(has(object, key))return object[key];
+ }
+ function set(object, key, value){
+ if(DESCRIPTORS && key in Object)dP.f(object, key, createDesc(0, value));
+ else object[key] = value;
+ return object;
+ }
+
+ function isDict(it){
+ return isObject(it) && getPrototypeOf(it) === Dict.prototype;
+ }
+
+ $export($export.G + $export.F, {Dict: Dict});
+
+ $export($export.S, 'Dict', {
+ keys: createDictIter('keys'),
+ values: createDictIter('values'),
+ entries: createDictIter('entries'),
+ forEach: createDictMethod(0),
+ map: createDictMethod(1),
+ filter: createDictMethod(2),
+ some: createDictMethod(3),
+ every: createDictMethod(4),
+ find: createDictMethod(5),
+ findKey: findKey,
+ mapPairs: createDictMethod(7),
+ reduce: reduce,
+ keyOf: keyOf,
+ includes: includes,
+ has: has,
+ get: get,
+ set: set,
+ isDict: isDict
+ });
+
+/***/ },
+/* 285 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var anObject = __webpack_require__(10)
+ , get = __webpack_require__(154);
+ module.exports = __webpack_require__(3).getIterator = function(it){
+ var iterFn = get(it);
+ if(typeof iterFn != 'function')throw TypeError(it + ' is not iterable!');
+ return anObject(iterFn.call(it));
+ };
+
+/***/ },
+/* 286 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var global = __webpack_require__(2)
+ , core = __webpack_require__(3)
+ , $export = __webpack_require__(7)
+ , partial = __webpack_require__(282);
+ // https://esdiscuss.org/topic/promise-returning-delay-function
+ $export($export.G + $export.F, {
+ delay: function delay(time){
+ return new (core.Promise || global.Promise)(function(resolve){
+ setTimeout(partial.call(resolve, true), time);
+ });
+ }
+ });
+
+/***/ },
+/* 287 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var path = __webpack_require__(283)
+ , $export = __webpack_require__(7);
+
+ // Placeholder
+ __webpack_require__(3)._ = path._ = path._ || {};
+
+ $export($export.P + $export.F, 'Function', {part: __webpack_require__(282)});
+
+/***/ },
+/* 288 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var $export = __webpack_require__(7);
+
+ $export($export.S + $export.F, 'Object', {isObject: __webpack_require__(11)});
+
+/***/ },
+/* 289 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var $export = __webpack_require__(7);
+
+ $export($export.S + $export.F, 'Object', {classof: __webpack_require__(71)});
+
+/***/ },
+/* 290 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var $export = __webpack_require__(7)
+ , define = __webpack_require__(291);
+
+ $export($export.S + $export.F, 'Object', {define: define});
+
+/***/ },
+/* 291 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var dP = __webpack_require__(9)
+ , gOPD = __webpack_require__(46)
+ , ownKeys = __webpack_require__(217)
+ , toIObject = __webpack_require__(27);
+
+ module.exports = function define(target, mixin){
+ var keys = ownKeys(toIObject(mixin))
+ , length = keys.length
+ , i = 0, key;
+ while(length > i)dP.f(target, key = keys[i++], gOPD.f(mixin, key));
+ return target;
+ };
+
+/***/ },
+/* 292 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var $export = __webpack_require__(7)
+ , define = __webpack_require__(291)
+ , create = __webpack_require__(41);
+
+ $export($export.S + $export.F, 'Object', {
+ make: function(proto, mixin){
+ return define(create(proto), mixin);
+ }
+ });
+
+/***/ },
+/* 293 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ __webpack_require__(133)(Number, 'Number', function(iterated){
+ this._l = +iterated;
+ this._i = 0;
+ }, function(){
+ var i = this._i++
+ , done = !(i < this._l);
+ return {done: done, value: done ? undefined : i};
+ });
+
+/***/ },
+/* 294 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // https://github.com/benjamingr/RexExp.escape
+ var $export = __webpack_require__(7)
+ , $re = __webpack_require__(295)(/[\\^$*+?.()|[\]{}]/g, '\\$&');
+
+ $export($export.S, 'RegExp', {escape: function escape(it){ return $re(it); }});
+
+
+/***/ },
+/* 295 */
+/***/ function(module, exports) {
+
+ module.exports = function(regExp, replace){
+ var replacer = replace === Object(replace) ? function(part){
+ return replace[part];
+ } : replace;
+ return function(it){
+ return String(it).replace(regExp, replacer);
+ };
+ };
+
+/***/ },
+/* 296 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var $export = __webpack_require__(7);
+ var $re = __webpack_require__(295)(/[&<>"']/g, {
+ '&': '&',
+ '<': '<',
+ '>': '>',
+ '"': '"',
+ "'": '''
+ });
+
+ $export($export.P + $export.F, 'String', {escapeHTML: function escapeHTML(){ return $re(this); }});
+
+/***/ },
+/* 297 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var $export = __webpack_require__(7);
+ var $re = __webpack_require__(295)(/&(?:amp|lt|gt|quot|apos);/g, {
+ '&': '&',
+ '<': '<',
+ '>': '>',
+ '"': '"',
+ ''': "'"
+ });
+
+ $export($export.P + $export.F, 'String', {unescapeHTML: function unescapeHTML(){ return $re(this); }});
+
+/***/ }
+/******/ ]);
+// CommonJS export
+if(typeof module != 'undefined' && module.exports)module.exports = __e;
+// RequireJS export
+else if(typeof define == 'function' && define.amd)define(function(){return __e});
+// Export to global object
+else __g.core = __e;
+}(1, 1);
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/client/core.min.js b/node_modules/babel-register/node_modules/core-js/client/core.min.js
new file mode 100644
index 0000000..a495145
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/client/core.min.js
@@ -0,0 +1,10 @@
+/**
+ * core-js 2.2.0
+ * https://github.com/zloirock/core-js
+ * License: http://rock.mit-license.org
+ * © 2016 Denis Pushkarev
+ */
+!function(b,c,a){"use strict";!function(b){function __webpack_require__(c){if(a[c])return a[c].exports;var d=a[c]={exports:{},id:c,loaded:!1};return b[c].call(d.exports,d,d.exports,__webpack_require__),d.loaded=!0,d.exports}var a={};return __webpack_require__.m=b,__webpack_require__.c=a,__webpack_require__.p="",__webpack_require__(0)}([function(b,c,a){a(1),a(48),a(49),a(50),a(52),a(53),a(56),a(57),a(58),a(59),a(60),a(61),a(62),a(63),a(64),a(66),a(68),a(70),a(72),a(75),a(76),a(77),a(81),a(85),a(86),a(87),a(88),a(90),a(91),a(92),a(93),a(94),a(96),a(98),a(99),a(100),a(102),a(103),a(104),a(106),a(107),a(108),a(110),a(111),a(112),a(113),a(114),a(115),a(116),a(117),a(118),a(119),a(120),a(121),a(122),a(123),a(125),a(129),a(130),a(131),a(132),a(136),a(138),a(139),a(140),a(141),a(142),a(143),a(144),a(145),a(146),a(147),a(148),a(149),a(150),a(151),a(156),a(157),a(159),a(160),a(161),a(164),a(165),a(166),a(167),a(168),a(170),a(171),a(172),a(173),a(176),a(178),a(179),a(180),a(182),a(184),a(186),a(187),a(188),a(190),a(191),a(192),a(193),a(199),a(202),a(203),a(205),a(206),a(207),a(208),a(209),a(210),a(211),a(212),a(213),a(214),a(215),a(216),a(218),a(219),a(220),a(221),a(222),a(223),a(224),a(225),a(227),a(230),a(231),a(234),a(235),a(236),a(237),a(238),a(239),a(240),a(241),a(242),a(243),a(244),a(246),a(247),a(248),a(249),a(250),a(251),a(253),a(254),a(256),a(257),a(258),a(259),a(262),a(263),a(264),a(265),a(266),a(267),a(268),a(269),a(271),a(272),a(273),a(274),a(275),a(276),a(277),a(278),a(279),a(280),a(281),a(284),a(154),a(285),a(233),a(286),a(287),a(288),a(289),a(290),a(292),a(293),a(294),a(296),b.exports=a(297)},function(fa,ea,b){var q=b(2),Y=b(3),e=b(4),t=b(5),f=b(7),U=b(16),da=b(20).KEY,J=b(6),M=b(21),x=b(22),ca=b(17),s=b(23),ba=b(24),$=b(37),Z=b(40),v=b(10),n=b(27),y=b(14),u=b(15),l=b(41),P=b(44),Q=b(46),R=b(9),T=Q.f,g=R.f,D=P.f,c=q.Symbol,o=q.JSON,p=o&&o.stringify,m=!1,h="prototype",d=s("_hidden"),K=s("toPrimitive"),aa={}.propertyIsEnumerable,r=M("symbol-registry"),i=M("symbols"),k=Object[h],j="function"==typeof c,z=q.QObject,A=t&&J(function(){return 7!=l(g({},"a",{get:function(){return g(this,"a",{value:7}).a}})).a})?function(c,a,d){var b=T(k,a);b&&delete k[a],g(c,a,d),b&&c!==k&&g(k,a,b)}:g,S=function(a){var b=i[a]=l(c[h]);return b._k=a,t&&m&&A(k,a,{configurable:!0,set:function(b){e(this,d)&&e(this[d],a)&&(this[d][a]=!1),A(this,a,u(1,b))}}),b},B=j&&"symbol"==typeof c.iterator?function(a){return"symbol"==typeof a}:function(a){return a instanceof c},C=function defineProperty(a,b,c){return v(a),b=y(b,!0),v(c),e(i,b)?(c.enumerable?(e(a,d)&&a[d][b]&&(a[d][b]=!1),c=l(c,{enumerable:u(0,!1)})):(e(a,d)||g(a,d,u(1,{})),a[d][b]=!0),A(a,b,c)):g(a,b,c)},V=function defineProperties(a,b){v(a);for(var c,d=$(b=n(b)),e=0,f=d.length;f>e;)C(a,c=d[e++],b[c]);return a},X=function create(b,c){return c===a?l(b):V(l(b),c)},L=function propertyIsEnumerable(a){var b=aa.call(this,a=y(a,!0));return b||!e(this,a)||!e(i,a)||e(this,d)&&this[d][a]?b:!0},E=function getOwnPropertyDescriptor(a,b){var c=T(a=n(a),b=y(b,!0));return!c||!e(i,b)||e(a,d)&&a[d][b]||(c.enumerable=!0),c},H=function getOwnPropertyNames(g){for(var a,b=D(n(g)),c=[],f=0;b.length>f;)e(i,a=b[f++])||a==d||a==da||c.push(a);return c},G=function getOwnPropertySymbols(f){for(var a,b=D(n(f)),c=[],d=0;b.length>d;)e(i,a=b[d++])&&c.push(i[a]);return c},_=function stringify(e){if(e!==a&&!B(e)){for(var b,c,d=[e],f=1;arguments.length>f;)d.push(arguments[f++]);return b=d[1],"function"==typeof b&&(c=b),!c&&Z(b)||(b=function(b,a){return c&&(a=c.call(this,b,a)),B(a)?void 0:a}),d[1]=b,p.apply(o,d)}},W=J(function(){var a=c();return"[null]"!=p([a])||"{}"!=p({a:a})||"{}"!=p(Object(a))});j||(c=function Symbol(){if(this instanceof c)throw TypeError("Symbol is not a constructor!");return S(ca(arguments.length>0?arguments[0]:a))},U(c[h],"toString",function toString(){return this._k}),Q.f=E,R.f=C,b(45).f=P.f=H,b(39).f=L,b(38).f=G,t&&!b(47)&&U(k,"propertyIsEnumerable",L,!0)),f(f.G+f.W+f.F*!j,{Symbol:c});for(var F="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),O=0;F.length>O;){var w=F[O++],I=Y.Symbol,N=s(w);w in I||g(I,w,{value:j?N:S(N)})}z&&z[h]&&z[h].findChild||(m=!0),f(f.S+f.F*!j,"Symbol",{"for":function(a){return e(r,a+="")?r[a]:r[a]=c(a)},keyFor:function keyFor(a){if(B(a))return ba(r,a);throw TypeError(a+" is not a symbol!")},useSetter:function(){m=!0},useSimple:function(){m=!1}}),f(f.S+f.F*!j,"Object",{create:X,defineProperty:C,defineProperties:V,getOwnPropertyDescriptor:E,getOwnPropertyNames:H,getOwnPropertySymbols:G}),o&&f(f.S+f.F*(!j||W),"JSON",{stringify:_}),c[h][K]||b(8)(c[h],K,c[h].valueOf),x(c,"Symbol"),x(Math,"Math",!0),x(q.JSON,"JSON",!0)},function(a,d){var b=a.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof c&&(c=b)},function(a,d){var c=a.exports={version:"2.2.0"};"number"==typeof b&&(b=c)},function(a,c){var b={}.hasOwnProperty;a.exports=function(a,c){return b.call(a,c)}},function(a,c,b){a.exports=!b(6)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(a,b){a.exports=function(a){try{return!!a()}catch(b){return!0}}},function(h,k,d){var c=d(2),e=d(3),i=d(8),j=d(16),g=d(18),f="prototype",b=function(k,l,o){var h,p,d,t,w=k&b.F,q=k&b.G,v=k&b.S,s=k&b.P,u=k&b.B,m=q?c:v?c[l]||(c[l]={}):(c[l]||{})[f],n=q?e:e[l]||(e[l]={}),r=n[f]||(n[f]={});q&&(o=l);for(h in o)p=!w&&m&&m[h]!==a,d=(p?m:o)[h],t=u&&p?g(d,c):s&&"function"==typeof d?g(Function.call,d):d,m&&j(m,h,d,k&b.U),n[h]!=d&&i(n,h,t),s&&r[h]!=d&&(r[h]=d)};c.core=e,b.F=1,b.G=2,b.S=4,b.P=8,b.B=16,b.W=32,b.U=64,b.R=128,h.exports=b},function(b,e,a){var c=a(9),d=a(15);b.exports=a(5)?function(a,b,e){return c.f(a,b,d(1,e))}:function(a,b,c){return a[b]=c,a}},function(g,c,a){var b=a(10),d=a(12),e=a(14),f=Object.defineProperty;c.f=a(5)?Object.defineProperty:function defineProperty(c,g,a){if(b(c),g=e(g,!0),b(a),d)try{return f(c,g,a)}catch(h){}if("get"in a||"set"in a)throw TypeError("Accessors not supported!");return"value"in a&&(c[g]=a.value),c}},function(a,d,b){var c=b(11);a.exports=function(a){if(!c(a))throw TypeError(a+" is not an object!");return a}},function(a,b){a.exports=function(a){return"object"==typeof a?null!==a:"function"==typeof a}},function(b,c,a){b.exports=!a(5)&&!a(6)(function(){return 7!=Object.defineProperty(a(13)("div"),"a",{get:function(){return 7}}).a})},function(d,f,b){var c=b(11),a=b(2).document,e=c(a)&&c(a.createElement);d.exports=function(b){return e?a.createElement(b):{}}},function(b,d,c){var a=c(11);b.exports=function(b,e){if(!a(b))return b;var c,d;if(e&&"function"==typeof(c=b.toString)&&!a(d=c.call(b)))return d;if("function"==typeof(c=b.valueOf)&&!a(d=c.call(b)))return d;if(!e&&"function"==typeof(c=b.toString)&&!a(d=c.call(b)))return d;throw TypeError("Can't convert object to primitive value")}},function(a,b){a.exports=function(a,b){return{enumerable:!(1&a),configurable:!(2&a),writable:!(4&a),value:b}}},function(g,j,a){var h=a(2),b=a(8),f=a(4),c=a(17)("src"),d="toString",e=Function[d],i=(""+e).split(d);a(3).inspectSource=function(a){return e.call(a)},(g.exports=function(d,a,e,j){var g="function"==typeof e;g&&(f(e,"name")||b(e,"name",a)),d[a]!==e&&(g&&(f(e,c)||b(e,c,d[a]?""+d[a]:i.join(String(a)))),d===h?d[a]=e:j?d[a]?d[a]=e:b(d,a,e):(delete d[a],b(d,a,e)))})(Function.prototype,d,function toString(){return"function"==typeof this&&this[c]||e.call(this)})},function(b,e){var c=0,d=Math.random();b.exports=function(b){return"Symbol(".concat(b===a?"":b,")_",(++c+d).toString(36))}},function(b,e,c){var d=c(19);b.exports=function(b,c,e){if(d(b),c===a)return b;switch(e){case 1:return function(a){return b.call(c,a)};case 2:return function(a,d){return b.call(c,a,d)};case 3:return function(a,d,e){return b.call(c,a,d,e)}}return function(){return b.apply(c,arguments)}}},function(a,b){a.exports=function(a){if("function"!=typeof a)throw TypeError(a+" is not a function!");return a}},function(k,o,b){var a=b(17)("meta"),i=b(11),d=b(4),g=b(9).f,f=0,c=Object.isExtensible||function(){return!0},j=!b(6)(function(){return c(Object.preventExtensions({}))}),e=function(b){g(b,a,{value:{i:"O"+ ++f,w:{}}})},l=function(b,f){if(!i(b))return"symbol"==typeof b?b:("string"==typeof b?"S":"P")+b;if(!d(b,a)){if(!c(b))return"F";if(!f)return"E";e(b)}return b[a].i},m=function(b,f){if(!d(b,a)){if(!c(b))return!0;if(!f)return!1;e(b)}return b[a].w},h=function(b){return j&&n.NEED&&c(b)&&!d(b,a)&&e(b),b},n=k.exports={KEY:a,NEED:!1,fastKey:l,getWeak:m,onFreeze:h}},function(d,f,e){var a=e(2),b="__core-js_shared__",c=a[b]||(a[b]={});d.exports=function(a){return c[a]||(c[a]={})}},function(c,f,a){var d=a(9).f,e=a(4),b=a(23)("toStringTag");c.exports=function(a,c,f){a&&!e(a=f?a:a.prototype,b)&&d(a,b,{configurable:!0,value:c})}},function(e,g,a){var c=a(21)("wks"),f=a(17),b=a(2).Symbol,d="function"==typeof b;e.exports=function(a){return c[a]||(c[a]=d&&b[a]||(d?b:f)("Symbol."+a))}},function(b,e,a){var c=a(25),d=a(27);b.exports=function(g,h){for(var a,b=d(g),e=c(b),i=e.length,f=0;i>f;)if(b[a=e[f++]]===h)return a}},function(b,e,a){var c=a(26),d=a(36);b.exports=Object.keys||function keys(a){return c(a,d)}},function(c,g,a){var b=a(4),d=a(27),e=a(31)(!1),f=a(35)("IE_PROTO");c.exports=function(j,h){var a,g=d(j),i=0,c=[];for(a in g)a!=f&&b(g,a)&&c.push(a);for(;h.length>i;)b(g,a=h[i++])&&(~e(c,a)||c.push(a));return c}},function(b,e,a){var c=a(28),d=a(30);b.exports=function(a){return c(d(a))}},function(a,d,b){var c=b(29);a.exports=Object("z").propertyIsEnumerable(0)?Object:function(a){return"String"==c(a)?a.split(""):Object(a)}},function(a,c){var b={}.toString;a.exports=function(a){return b.call(a).slice(8,-1)}},function(b,c){b.exports=function(b){if(b==a)throw TypeError("Can't call method on "+b);return b}},function(b,f,a){var c=a(27),d=a(32),e=a(34);b.exports=function(a){return function(j,g,k){var h,f=c(j),i=d(f.length),b=e(k,i);if(a&&g!=g){for(;i>b;)if(h=f[b++],h!=h)return!0}else for(;i>b;b++)if((a||b in f)&&f[b]===g)return a||b;return!a&&-1}}},function(a,e,b){var c=b(33),d=Math.min;a.exports=function(a){return a>0?d(c(a),9007199254740991):0}},function(a,d){var b=Math.ceil,c=Math.floor;a.exports=function(a){return isNaN(a=+a)?0:(a>0?c:b)(a)}},function(a,f,b){var c=b(33),d=Math.max,e=Math.min;a.exports=function(a,b){return a=c(a),0>a?d(a+b,0):e(a,b)}},function(c,e,a){var b=a(21)("keys"),d=a(17);c.exports=function(a){return b[a]||(b[a]=d(a))}},function(a,b){a.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(b,f,a){var c=a(25),d=a(38),e=a(39);b.exports=function(a){var b=c(a),f=d.f;if(f)for(var g,h=f(a),j=e.f,i=0;h.length>i;)j.call(a,g=h[i++])&&b.push(g);return b}},function(b,a){a.f=Object.getOwnPropertySymbols},function(b,a){a.f={}.propertyIsEnumerable},function(a,d,b){var c=b(29);a.exports=Array.isArray||function isArray(a){return"Array"==c(a)}},function(g,k,b){var h=b(10),i=b(42),f=b(36),j=b(35)("IE_PROTO"),d=function(){},e="prototype",c=function(){var a,d=b(13)("iframe"),g=f.length,h=">";for(d.style.display="none",b(43).appendChild(d),d.src="javascript:",a=d.contentWindow.document,a.open(),a.write("h;)c.f(a,f=g[h++],b[f]);return a}},function(a,c,b){a.exports=b(2).document&&document.documentElement},function(d,h,a){var e=a(27),b=a(45).f,f={}.toString,c="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],g=function(a){try{return b.f(a)}catch(d){return c.slice()}};d.exports.f=function getOwnPropertyNames(a){return c&&"[object Window]"==f.call(a)?g(a):b(e(a))}},function(e,b,a){var c=a(26),d=a(36).concat("length","prototype");b.f=Object.getOwnPropertyNames||function getOwnPropertyNames(a){return c(a,d)}},function(j,c,a){var d=a(39),e=a(15),f=a(27),g=a(14),h=a(4),i=a(12),b=Object.getOwnPropertyDescriptor;c.f=a(5)?b:function getOwnPropertyDescriptor(a,c){if(a=f(a),c=g(c,!0),i)try{return b(a,c)}catch(j){}return h(a,c)?e(!d.f.call(a,c),a[c]):void 0}},function(a,b){a.exports=!1},function(c,d,a){var b=a(7);b(b.S+b.F*!a(5),"Object",{defineProperty:a(9).f})},function(c,d,a){var b=a(7);b(b.S+b.F*!a(5),"Object",{defineProperties:a(42)})},function(d,e,a){var b=a(27),c=a(46).f;a(51)("getOwnPropertyDescriptor",function(){return function getOwnPropertyDescriptor(a,d){return c(b(a),d)}})},function(c,f,a){var b=a(7),d=a(3),e=a(6);c.exports=function(a,g){var c=(d.Object||{})[a]||Object[a],f={};f[a]=g(c),b(b.S+b.F*e(function(){c(1)}),"Object",f)}},function(c,d,a){var b=a(7);b(b.S,"Object",{create:a(41)})},function(d,e,a){var b=a(54),c=a(55);a(51)("getPrototypeOf",function(){return function getPrototypeOf(a){return c(b(a))}})},function(a,d,b){var c=b(30);a.exports=function(a){return Object(c(a))}},function(c,g,a){var d=a(4),e=a(54),b=a(35)("IE_PROTO"),f=Object.prototype;c.exports=Object.getPrototypeOf||function(a){return a=e(a),d(a,b)?a[b]:"function"==typeof a.constructor&&a instanceof a.constructor?a.constructor.prototype:a instanceof Object?f:null}},function(d,e,a){var b=a(54),c=a(25);a(51)("keys",function(){return function keys(a){return c(b(a))}})},function(b,c,a){a(51)("getOwnPropertyNames",function(){return a(44).f})},function(d,e,a){var b=a(11),c=a(20).onFreeze;a(51)("freeze",function(a){return function freeze(d){return a&&b(d)?a(c(d)):d}})},function(d,e,a){var b=a(11),c=a(20).onFreeze;a(51)("seal",function(a){return function seal(d){return a&&b(d)?a(c(d)):d}})},function(d,e,a){var b=a(11),c=a(20).onFreeze;a(51)("preventExtensions",function(a){return function preventExtensions(d){return a&&b(d)?a(c(d)):d}})},function(c,d,a){var b=a(11);a(51)("isFrozen",function(a){return function isFrozen(c){return b(c)?a?a(c):!1:!0}})},function(c,d,a){var b=a(11);a(51)("isSealed",function(a){return function isSealed(c){return b(c)?a?a(c):!1:!0}})},function(c,d,a){var b=a(11);a(51)("isExtensible",function(a){return function isExtensible(c){return b(c)?a?a(c):!0:!1}})},function(c,d,b){var a=b(7);a(a.S+a.F,"Object",{assign:b(65)})},function(d,i,a){var c=a(25),e=a(38),f=a(39),g=a(54),h=a(28),b=Object.assign;d.exports=!b||a(6)(function(){var a={},c={},d=Symbol(),e="abcdefghijklmnopqrst";return a[d]=7,e.split("").forEach(function(a){c[a]=a}),7!=b({},a)[d]||Object.keys(b({},c)).join("")!=e})?function assign(n,q){for(var i=g(n),o=arguments.length,k=1,d=e.f,m=f.f;o>k;)for(var b,a=h(arguments[k++]),l=d?c(a).concat(d(a)):c(a),p=l.length,j=0;p>j;)m.call(a,b=l[j++])&&(i[b]=a[b]);return i}:b},function(c,d,a){var b=a(7);b(b.S,"Object",{is:a(67)})},function(a,b){a.exports=Object.is||function is(a,b){return a===b?0!==a||1/a===1/b:a!=a&&b!=b}},function(c,d,a){var b=a(7);b(b.S,"Object",{setPrototypeOf:a(69).set})},function(d,g,b){var e=b(11),f=b(10),c=function(b,a){if(f(b),!e(a)&&null!==a)throw TypeError(a+": can't set as prototype!")};d.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(e,a,d){try{d=b(18)(Function.call,b(46).f(Object.prototype,"__proto__").set,2),d(e,[]),a=!(e instanceof Array)}catch(f){a=!0}return function setPrototypeOf(b,e){return c(b,e),a?b.__proto__=e:d(b,e),b}}({},!1):a),check:c}},function(d,e,a){var c=a(71),b={};b[a(23)("toStringTag")]="z",b+""!="[object z]"&&a(16)(Object.prototype,"toString",function toString(){return"[object "+c(this)+"]"},!0)},function(d,h,c){var b=c(29),e=c(23)("toStringTag"),f="Arguments"==b(function(){return arguments}()),g=function(a,b){try{return a[b]}catch(c){}};d.exports=function(d){var c,h,i;return d===a?"Undefined":null===d?"Null":"string"==typeof(h=g(c=Object(d),e))?h:f?b(c):"Object"==(i=b(c))&&"function"==typeof c.callee?"Arguments":i}},function(c,d,a){var b=a(7);b(b.P,"Function",{bind:a(73)})},function(d,i,a){var e=a(19),f=a(11),g=a(74),c=[].slice,b={},h=function(e,a,f){if(!(a in b)){for(var d=[],c=0;a>c;c++)d[c]="a["+c+"]";b[a]=Function("F,a","return new F("+d.join(",")+")")}return b[a](e,f)};d.exports=Function.bind||function bind(d){var a=e(this),i=c.call(arguments,1),b=function(){var e=i.concat(c.call(arguments));return this instanceof b?h(a,e.length,e):g(a,e,d)};return f(a.prototype)&&(b.prototype=a.prototype),b}},function(b,c){b.exports=function(c,b,d){var e=d===a;switch(b.length){case 0:return e?c():c.call(d);case 1:return e?c(b[0]):c.call(d,b[0]);case 2:return e?c(b[0],b[1]):c.call(d,b[0],b[1]);case 3:return e?c(b[0],b[1],b[2]):c.call(d,b[0],b[1],b[2]);case 4:return e?c(b[0],b[1],b[2],b[3]):c.call(d,b[0],b[1],b[2],b[3])}return c.apply(d,b)}},function(h,i,a){var c=a(9).f,e=a(15),f=a(4),d=Function.prototype,g=/^\s*function ([^ (]*)/,b="name";b in d||a(5)&&c(d,b,{configurable:!0,get:function(){var a=(""+this).match(g),d=a?a[1]:"";return f(this,b)||c(this,b,e(5,d)),d}})},function(f,g,a){var b=a(11),e=a(55),c=a(23)("hasInstance"),d=Function.prototype;c in d||a(9).f(d,c,{value:function(a){if("function"!=typeof this||!b(a))return!1;if(!b(this.prototype))return a instanceof this;for(;a=e(a);)if(this.prototype===a)return!0;return!1}})},function(w,v,b){var k=b(2),j=b(4),i=b(29),n=b(78),o=b(14),p=b(6),q=b(45).f,t=b(46).f,u=b(9).f,m=b(79).trim,c="Number",a=k[c],d=a,f=a.prototype,r=i(b(41)(f))==c,s="trim"in String.prototype,l=function(i){var a=o(i,!1);if("string"==typeof a&&a.length>2){a=s?a.trim():m(a,3);var b,c,d,e=a.charCodeAt(0);if(43===e||45===e){if(b=a.charCodeAt(2),88===b||120===b)return NaN}else if(48===e){switch(a.charCodeAt(1)){case 66:case 98:c=2,d=49;break;case 79:case 111:c=8,d=55;break;default:return+a}for(var f,g=a.slice(2),h=0,j=g.length;j>h;h++)if(f=g.charCodeAt(h),48>f||f>d)return NaN;return parseInt(g,c)}}return+a};if(!a(" 0o1")||!a("0b1")||a("+0x1")){a=function Number(g){var e=1>arguments.length?0:g,b=this;return b instanceof a&&(r?p(function(){f.valueOf.call(b)}):i(b)!=c)?n(new d(l(e)),b,a):l(e)};for(var e,h=b(5)?q(d):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","),g=0;h.length>g;g++)j(d,e=h[g])&&!j(a,e)&&u(a,e,t(d,e));a.prototype=f,f.constructor=a,b(16)(k,c,a)}},function(c,e,a){var d=a(11),b=a(69).set;c.exports=function(e,g,f){var a,c=g.constructor;return c!==f&&"function"==typeof c&&(a=c.prototype)!==f.prototype&&d(a)&&b&&b(e,a),e}},function(g,m,a){var d=a(7),h=a(30),i=a(6),c=a(80),b="["+c+"]",f="
",j=RegExp("^"+b+b+"*"),k=RegExp(b+b+"*$"),e=function(a,h,e){var b={},g=i(function(){return!!c[a]()||f[a]()!=f}),j=b[a]=g?h(l):c[a];e&&(b[e]=j),d(d.P+d.F*g,"String",b)},l=e.trim=function(a,b){return a=String(h(a)),1&b&&(a=a.replace(j,"")),2&b&&(a=a.replace(k,"")),a};g.exports=e},function(a,b){a.exports=" \n\x0B\f\r \u2028\u2029\ufeff"},function(q,p,c){var f=c(7),n=(c(82),c(33)),o=c(83),g=c(84),j=1..toFixed,i=Math.floor,a=[0,0,0,0,0,0],k="Number.toFixed: incorrect invocation!",e="0",d=function(d,e){for(var c=-1,b=e;++c<6;)b+=d*a[c],a[c]=b%1e7,b=i(b/1e7)},h=function(d){for(var c=6,b=0;--c>=0;)b+=a[c],a[c]=i(b/d),b=b%d*1e7},l=function(){for(var c=6,b="";--c>=0;)if(""!==b||0===c||0!==a[c]){var d=String(a[c]);b=""===b?d:b+g.call(e,7-d.length)+d}return b},b=function(a,c,d){return 0===c?d:c%2===1?b(a,c-1,d*a):b(a*a,c/2,d)},m=function(c){for(var b=0,a=c;a>=4096;)b+=12,a/=4096;for(;a>=2;)b+=1,a/=2;return b};f(f.P+f.F*(!!j&&("0.000"!==8e-5.toFixed(3)||"1"!==.9.toFixed(0)||"1.25"!==1.255.toFixed(2)||"1000000000000000128"!==0xde0b6b3a7640080.toFixed(0))||!c(6)(function(){j.call({})})),"Number",{toFixed:function toFixed(s){var f,q,j,p,a=o(this,k),i=n(s),r="",c=e;if(0>i||i>20)throw RangeError(k);if(a!=a)return"NaN";if(-1e21>=a||a>=1e21)return String(a);if(0>a&&(r="-",a=-a),a>1e-21)if(f=m(a*b(2,69,1))-69,q=0>f?a*b(2,-f,1):a/b(2,f,1),q*=4503599627370496,f=52-f,f>0){for(d(0,q),j=i;j>=7;)d(1e7,0),j-=7;for(d(b(10,j,1),0),j=f-1;j>=23;)h(1<<23),j-=23;h(1<0?(p=c.length,c=r+(i>=p?"0."+g.call(e,i-p)+c:c.slice(0,p-i)+"."+c.slice(p-i))):c=r+c,c}})},function(b,c){b.exports=function(b,d,e,c){if(!(b instanceof d)||c!==a&&c in b)throw TypeError(e+": incorrect invocation!");return b}},function(a,d,b){var c=b(29);a.exports=function(a,b){if("number"!=typeof a&&"Number"!=c(a))throw TypeError(b);return+a}},function(b,e,a){var c=a(33),d=a(30);b.exports=function repeat(f){var b=String(d(this)),e="",a=c(f);if(0>a||a==1/0)throw RangeError("Count can't be negative");for(;a>0;(a>>>=1)&&(b+=b))1&a&&(e+=b);return e}},function(g,h,c){var d=c(7),e=c(6),f=c(83),b=1..toPrecision;d(d.P+d.F*(e(function(){return"1"!==b.call(1,a)})||!e(function(){b.call({})})),"Number",{toPrecision:function toPrecision(c){var d=f(this,"Number#toPrecision: incorrect invocation!");return c===a?b.call(d):b.call(d,c)}})},function(c,d,b){var a=b(7);a(a.S,"Number",{EPSILON:Math.pow(2,-52)})},function(d,e,a){var b=a(7),c=a(2).isFinite;b(b.S,"Number",{isFinite:function isFinite(a){return"number"==typeof a&&c(a)}})},function(c,d,a){var b=a(7);b(b.S,"Number",{isInteger:a(89)})},function(a,e,b){var c=b(11),d=Math.floor;a.exports=function isInteger(a){return!c(a)&&isFinite(a)&&d(a)===a}},function(c,d,b){var a=b(7);a(a.S,"Number",{isNaN:function isNaN(a){return a!=a}})},function(e,f,a){var b=a(7),c=a(89),d=Math.abs;b(b.S,"Number",{isSafeInteger:function isSafeInteger(a){return c(a)&&d(a)<=9007199254740991}})},function(c,d,b){var a=b(7);a(a.S,"Number",{MAX_SAFE_INTEGER:9007199254740991})},function(c,d,b){var a=b(7);a(a.S,"Number",{MIN_SAFE_INTEGER:-9007199254740991})},function(d,e,b){var a=b(7),c=b(95);a(a.S+a.F*(Number.parseFloat!=c),"Number",{parseFloat:c})},function(c,e,a){var b=a(2).parseFloat,d=a(79).trim;c.exports=1/b(a(80)+"-0")!==-(1/0)?function parseFloat(e){var a=d(String(e),3),c=b(a);return 0===c&&"-"==a.charAt(0)?-0:c}:b},function(d,e,b){var a=b(7),c=b(97);a(a.S+a.F*(Number.parseInt!=c),"Number",{parseInt:c})},function(d,g,b){var a=b(2).parseInt,e=b(79).trim,c=b(80),f=/^[\-+]?0[xX]/;d.exports=8!==a(c+"08")||22!==a(c+"0x16")?function parseInt(c,d){var b=e(String(c),3);return a(b,d>>>0||(f.test(b)?16:10))}:a},function(d,e,b){var a=b(7),c=b(97);a(a.G+a.F*(parseInt!=c),{parseInt:c})},function(d,e,b){var a=b(7),c=b(95);a(a.G+a.F*(parseFloat!=c),{parseFloat:c})},function(f,g,b){var a=b(7),e=b(101),c=Math.sqrt,d=Math.acosh;a(a.S+a.F*!(d&&710==Math.floor(d(Number.MAX_VALUE))),"Math",{acosh:function acosh(a){return(a=+a)<1?NaN:a>94906265.62425156?Math.log(a)+Math.LN2:e(a-1+c(a-1)*c(a+1))}})},function(a,b){a.exports=Math.log1p||function log1p(a){return(a=+a)>-1e-8&&1e-8>a?a-a*a/2:Math.log(1+a)}},function(c,d,b){function asinh(a){return isFinite(a=+a)&&0!=a?0>a?-asinh(-a):Math.log(a+Math.sqrt(a*a+1)):a}var a=b(7);a(a.S,"Math",{asinh:asinh})},function(c,d,b){var a=b(7);a(a.S,"Math",{atanh:function atanh(a){return 0==(a=+a)?a:Math.log((1+a)/(1-a))/2}})},function(d,e,a){var b=a(7),c=a(105);b(b.S,"Math",{cbrt:function cbrt(a){return c(a=+a)*Math.pow(Math.abs(a),1/3)}})},function(a,b){a.exports=Math.sign||function sign(a){return 0==(a=+a)||a!=a?a:0>a?-1:1}},function(c,d,b){var a=b(7);a(a.S,"Math",{clz32:function clz32(a){return(a>>>=0)?31-Math.floor(Math.log(a+.5)*Math.LOG2E):32}})},function(d,e,c){var a=c(7),b=Math.exp;a(a.S,"Math",{cosh:function cosh(a){return(b(a=+a)+b(-a))/2}})},function(c,d,a){var b=a(7);b(b.S,"Math",{expm1:a(109)})},function(a,b){a.exports=Math.expm1||function expm1(a){return 0==(a=+a)?a:a>-1e-6&&1e-6>a?a+a*a/2:Math.exp(a)-1}},function(k,j,e){var f=e(7),g=e(105),a=Math.pow,d=a(2,-52),b=a(2,-23),i=a(2,127)*(2-b),c=a(2,-126),h=function(a){return a+1/d-1/d};f(f.S,"Math",{fround:function fround(k){var f,a,e=Math.abs(k),j=g(k);return c>e?j*h(e/c/b)*c*b:(f=(1+b/d)*e,a=f-(f-e),a>i||a!=a?j*(1/0):j*a)}})},function(d,e,b){var a=b(7),c=Math.abs;a(a.S,"Math",{hypot:function hypot(h,i){for(var a,b,e=0,f=0,g=arguments.length,d=0;g>f;)a=c(arguments[f++]),a>d?(b=d/a,e=e*b*b+1,d=a):a>0?(b=a/d,e+=b*b):e+=a;return d===1/0?1/0:d*Math.sqrt(e)}})},function(d,e,b){var a=b(7),c=Math.imul;a(a.S+a.F*b(6)(function(){return-5!=c(4294967295,5)||2!=c.length}),"Math",{imul:function imul(f,g){var a=65535,b=+f,c=+g,d=a&b,e=a&c;return 0|d*e+((a&b>>>16)*e+d*(a&c>>>16)<<16>>>0)}})},function(c,d,b){var a=b(7);a(a.S,"Math",{log10:function log10(a){return Math.log(a)/Math.LN10}})},function(c,d,a){var b=a(7);b(b.S,"Math",{log1p:a(101)})},function(c,d,b){var a=b(7);a(a.S,"Math",{log2:function log2(a){return Math.log(a)/Math.LN2}})},function(c,d,a){var b=a(7);b(b.S,"Math",{sign:a(105)})},function(e,f,a){var b=a(7),c=a(109),d=Math.exp;b(b.S+b.F*a(6)(function(){return-2e-17!=!Math.sinh(-2e-17)}),"Math",{sinh:function sinh(a){return Math.abs(a=+a)<1?(c(a)-c(-a))/2:(d(a-1)-d(-a-1))*(Math.E/2)}})},function(e,f,a){var b=a(7),c=a(109),d=Math.exp;b(b.S,"Math",{tanh:function tanh(a){var b=c(a=+a),e=c(-a);return b==1/0?1:e==1/0?-1:(b-e)/(d(a)+d(-a))}})},function(c,d,b){var a=b(7);a(a.S,"Math",{trunc:function trunc(a){return(a>0?Math.floor:Math.ceil)(a)}})},function(f,g,b){var a=b(7),e=b(34),c=String.fromCharCode,d=String.fromCodePoint;a(a.S+a.F*(!!d&&1!=d.length),"String",{fromCodePoint:function fromCodePoint(g){for(var a,b=[],f=arguments.length,d=0;f>d;){if(a=+arguments[d++],e(a,1114111)!==a)throw RangeError(a+" is not a valid code point");b.push(65536>a?c(a):c(((a-=65536)>>10)+55296,a%1024+56320))}return b.join("")}})},function(e,f,a){var b=a(7),c=a(27),d=a(32);b(b.S,"String",{raw:function raw(f){for(var e=c(f.raw),g=d(e.length),h=arguments.length,b=[],a=0;g>a;)b.push(String(e[a++])),h>a&&b.push(String(arguments[a]));return b.join("")}})},function(b,c,a){a(79)("trim",function(a){return function trim(){return a(this,3)}})},function(d,e,a){var b=a(7),c=a(124)(!1);b(b.P,"String",{codePointAt:function codePointAt(a){return c(this,a)}})},function(c,f,b){var d=b(33),e=b(30);c.exports=function(b){return function(j,k){var f,h,g=String(e(j)),c=d(k),i=g.length;return 0>c||c>=i?b?"":a:(f=g.charCodeAt(c),55296>f||f>56319||c+1===i||(h=g.charCodeAt(c+1))<56320||h>57343?b?g.charAt(c):f:b?g.slice(c,c+2):(f-55296<<10)+(h-56320)+65536)}}},function(h,i,b){var c=b(7),e=b(32),g=b(126),d="endsWith",f=""[d];c(c.P+c.F*b(128)(d),"String",{endsWith:function endsWith(i){var b=g(this,i,d),j=arguments.length>1?arguments[1]:a,k=e(b.length),c=j===a?k:Math.min(e(j),k),h=String(i);return f?f.call(b,h,c):b.slice(c-h.length,c)===h}})},function(b,e,a){var c=a(127),d=a(30);b.exports=function(a,b,e){if(c(b))throw TypeError("String#"+e+" doesn't accept regex!");return String(d(a))}},function(c,g,b){var d=b(11),e=b(29),f=b(23)("match");c.exports=function(b){var c;return d(b)&&((c=b[f])!==a?!!c:"RegExp"==e(b))}},function(a,d,b){var c=b(23)("match");a.exports=function(b){var a=/./;try{"/./"[b](a)}catch(d){try{return a[c]=!1,!"/./"[b](a)}catch(e){}}return!0}},function(f,g,b){var c=b(7),e=b(126),d="includes";c(c.P+c.F*b(128)(d),"String",{includes:function includes(b){return!!~e(this,b,d).indexOf(b,arguments.length>1?arguments[1]:a)}})},function(c,d,a){var b=a(7);b(b.P,"String",{repeat:a(84)})},function(h,i,b){var c=b(7),f=b(32),g=b(126),d="startsWith",e=""[d];c(c.P+c.F*b(128)(d),"String",{startsWith:function startsWith(i){var b=g(this,i,d),c=f(Math.min(arguments.length>1?arguments[1]:a,b.length)),h=String(i);return e?e.call(b,h,c):b.slice(c,c+h.length)===h}})},function(d,e,b){var c=b(124)(!0);b(133)(String,"String",function(a){this._t=String(a),this._i=0},function(){var b,d=this._t,e=this._i;return e>=d.length?{value:a,done:!0}:(b=c(d,e),this._i+=b.length,{value:b,done:!1})})},function(q,s,b){var h=b(47),e=b(7),o=b(16),i=b(8),n=b(4),j=b(134),r=b(135),l=b(22),m=b(55),c=b(23)("iterator"),f=!([].keys&&"next"in[].keys()),p="@@iterator",k="keys",d="values",g=function(){return this};q.exports=function(C,w,x,H,s,G,D){r(x,w,H);var v,z,u,y=function(a){if(!f&&a in b)return b[a];switch(a){case k:return function keys(){return new x(this,a)};case d:return function values(){return new x(this,a)}}return function entries(){return new x(this,a)}},E=w+" Iterator",A=s==d,B=!1,b=C.prototype,t=b[c]||b[p]||s&&b[s],q=t||y(s),I=s?A?y("entries"):q:a,F="Array"==w?b.entries||t:t;if(F&&(u=m(F.call(new C)),u!==Object.prototype&&(l(u,E,!0),h||n(u,c)||i(u,c,g))),A&&t&&t.name!==d&&(B=!0,q=function values(){return t.call(this)}),h&&!D||!f&&!B&&b[c]||i(b,c,q),j[w]=q,j[E]=g,s)if(v={values:A?q:y(d),keys:G?q:y(k),entries:I},D)for(z in v)z in b||o(b,z,v[z]);else e(e.P+e.F*(f||B),w,v);return v}},function(a,b){a.exports={}},function(c,g,a){var d=a(41),e=a(15),f=a(22),b={};a(8)(b,a(23)("iterator"),function(){return this}),c.exports=function(a,c,g){a.prototype=d(b,{next:e(1,g)}),f(a,c+" Iterator")}},function(b,c,a){a(137)("anchor",function(a){return function anchor(b){return a(this,"a","name",b)}})},function(c,h,a){var b=a(7),d=a(6),e=a(30),f=/"/g,g=function(d,a,b,g){var h=String(e(d)),c="<"+a;return""!==b&&(c+=" "+b+'="'+String(g).replace(f,""")+'"'),c+">"+h+""+a+">"};c.exports=function(a,e){var c={};c[a]=e(g),b(b.P+b.F*d(function(){var b=""[a]('"');return b!==b.toLowerCase()||b.split('"').length>3}),"String",c)}},function(b,c,a){a(137)("big",function(a){return function big(){return a(this,"big","","")}})},function(b,c,a){a(137)("blink",function(a){return function blink(){return a(this,"blink","","")}})},function(b,c,a){a(137)("bold",function(a){return function bold(){return a(this,"b","","")}})},function(b,c,a){a(137)("fixed",function(a){return function fixed(){return a(this,"tt","","")}})},function(b,c,a){a(137)("fontcolor",function(a){return function fontcolor(b){return a(this,"font","color",b)}})},function(b,c,a){a(137)("fontsize",function(a){return function fontsize(b){return a(this,"font","size",b)}})},function(b,c,a){a(137)("italics",function(a){return function italics(){return a(this,"i","","")}})},function(b,c,a){a(137)("link",function(a){return function link(b){return a(this,"a","href",b)}})},function(b,c,a){a(137)("small",function(a){return function small(){return a(this,"small","","")}})},function(b,c,a){a(137)("strike",function(a){return function strike(){return a(this,"strike","","")}})},function(b,c,a){a(137)("sub",function(a){return function sub(){return a(this,"sub","","")}})},function(b,c,a){a(137)("sup",function(a){return function sup(){return a(this,"sup","","")}})},function(c,d,a){var b=a(7);b(b.S,"Array",{isArray:a(40)})},function(j,k,b){var d=b(18),c=b(7),e=b(54),f=b(152),g=b(153),h=b(32),i=b(154);c(c.S+c.F*!b(155)(function(a){Array.from(a)}),"Array",{from:function from(s){var n,c,l,m,j=e(s),o="function"==typeof this?this:Array,r=arguments.length,k=r>1?arguments[1]:a,p=k!==a,b=0,q=i(j);if(p&&(k=d(k,r>2?arguments[2]:a,2)),q==a||o==Array&&g(q))for(n=h(j.length),c=new o(n);n>b;b++)c[b]=p?k(j[b],b):j[b];else for(m=q.call(j),c=new o;!(l=m.next()).done;b++)c[b]=p?f(m,k,[l.value,b],!0):l.value;return c.length=b,c}})},function(c,e,d){var b=d(10);c.exports=function(d,e,c,g){try{return g?e(b(c)[0],c[1]):e(c)}catch(h){var f=d["return"];throw f!==a&&b(f.call(d)),h}}},function(c,g,b){var d=b(134),e=b(23)("iterator"),f=Array.prototype;c.exports=function(b){return b!==a&&(d.Array===b||f[e]===b)}},function(c,g,b){var d=b(71),e=b(23)("iterator"),f=b(134);c.exports=b(3).getIteratorMethod=function(b){return b!=a?b[e]||b["@@iterator"]||f[d(b)]:void 0}},function(d,f,e){var a=e(23)("iterator"),b=!1;try{var c=[7][a]();c["return"]=function(){b=!0},Array.from(c,function(){throw 2})}catch(g){}d.exports=function(f,g){if(!g&&!b)return!1;var d=!1;try{var c=[7],e=c[a]();e.next=function(){d=!0},c[a]=function(){return e},f(c)}catch(h){}return d}},function(c,d,b){var a=b(7);a(a.S+a.F*b(6)(function(){function F(){}return!(Array.of.call(F)instanceof F)}),"Array",{of:function of(){for(var a=0,b=arguments.length,c=new("function"==typeof this?this:Array)(b);b>a;)c[a]=arguments[a++];return c.length=b,c}})},function(f,g,b){var c=b(7),e=b(27),d=[].join;
+c(c.P+c.F*(b(28)!=Object||!b(158)(d)),"Array",{join:function join(b){return d.call(e(this),b===a?",":b)}})},function(a,d,b){var c=b(6);a.exports=function(a,b){return!!a&&c(function(){b?a.call(null,function(){},1):a.call(null)})}},function(i,j,b){var c=b(7),d=b(43),h=b(29),e=b(34),f=b(32),g=[].slice;c(c.P+c.F*b(6)(function(){d&&g.call(d)}),"Array",{slice:function slice(j,b){var d=f(this.length),k=h(this);if(b=b===a?d:b,"Array"==k)return g.call(this,j,b);for(var i=e(j,d),n=e(b,d),l=f(n-i),m=Array(l),c=0;l>c;c++)m[c]="String"==k?this.charAt(i+c):this[i+c];return m}})},function(i,j,b){var c=b(7),h=b(19),e=b(54),f=b(6),d=[].sort,g=[1,2,3];c(c.P+c.F*(f(function(){g.sort(a)})||!f(function(){g.sort(null)})||!b(158)(d)),"Array",{sort:function sort(b){return b===a?d.call(e(this)):d.call(e(this),h(b))}})},function(e,f,a){var b=a(7),c=a(162)(0),d=a(158)([].forEach,!0);b(b.P+b.F*!d,"Array",{forEach:function forEach(a){return c(this,a,arguments[1])}})},function(c,i,b){var d=b(18),e=b(28),f=b(54),g=b(32),h=b(163);c.exports=function(b,l){var i=1==b,m=2==b,n=3==b,c=4==b,j=6==b,o=5==b||j,k=l||h;return function(p,v,x){for(var l,r,u=f(p),s=e(u),w=d(v,x,3),t=g(s.length),h=0,q=i?k(p,t):m?k(p,0):a;t>h;h++)if((o||h in s)&&(l=s[h],r=w(l,h,u),b))if(i)q[h]=r;else if(r)switch(b){case 3:return!0;case 5:return l;case 6:return h;case 2:q.push(l)}else if(c)return!1;return j?-1:n||c?c:q}}},function(d,g,b){var e=b(11),c=b(40),f=b(23)("species");d.exports=function(d,g){var b;return c(d)&&(b=d.constructor,"function"!=typeof b||b!==Array&&!c(b.prototype)||(b=a),e(b)&&(b=b[f],null===b&&(b=a))),new(b===a?Array:b)(g)}},function(d,e,a){var b=a(7),c=a(162)(1);b(b.P+b.F*!a(158)([].map,!0),"Array",{map:function map(a){return c(this,a,arguments[1])}})},function(d,e,a){var b=a(7),c=a(162)(2);b(b.P+b.F*!a(158)([].filter,!0),"Array",{filter:function filter(a){return c(this,a,arguments[1])}})},function(d,e,a){var b=a(7),c=a(162)(3);b(b.P+b.F*!a(158)([].some,!0),"Array",{some:function some(a){return c(this,a,arguments[1])}})},function(d,e,a){var b=a(7),c=a(162)(4);b(b.P+b.F*!a(158)([].every,!0),"Array",{every:function every(a){return c(this,a,arguments[1])}})},function(d,e,a){var b=a(7),c=a(169);b(b.P+b.F*!a(158)([].reduce,!0),"Array",{reduce:function reduce(a){return c(this,a,arguments.length,arguments[1],!1)}})},function(b,g,a){var c=a(19),d=a(54),e=a(28),f=a(32);b.exports=function(m,l,n,b,g){c(l);var i=d(m),h=e(i),j=f(i.length),a=g?j-1:0,k=g?-1:1;if(2>n)for(;;){if(a in h){b=h[a],a+=k;break}if(a+=k,g?0>a:a>=j)throw TypeError("Reduce of empty array with no initial value")}for(;g?a>=0:j>a;a+=k)a in h&&(b=l(b,h[a],a,i));return b}},function(d,e,a){var b=a(7),c=a(169);b(b.P+b.F*!a(158)([].reduceRight,!0),"Array",{reduceRight:function reduceRight(a){return c(this,a,arguments.length,arguments[1],!0)}})},function(d,e,a){var b=a(7),c=a(31)(!1);b(b.P+b.F*!a(158)([].indexOf),"Array",{indexOf:function indexOf(a){return c(this,a,arguments[1])}})},function(f,g,a){var b=a(7),c=a(27),d=a(33),e=a(32);b(b.P+b.F*!a(158)([].lastIndexOf),"Array",{lastIndexOf:function lastIndexOf(g){var b=c(this),f=e(b.length),a=f-1;for(arguments.length>1&&(a=Math.min(a,d(arguments[1]))),0>a&&(a=f+a);a>=0;a--)if(a in b&&b[a]===g)return a;return-1}})},function(c,d,a){var b=a(7);b(b.P,"Array",{copyWithin:a(174)}),a(175)("copyWithin")},function(d,g,b){var e=b(54),c=b(34),f=b(32);d.exports=[].copyWithin||function copyWithin(l,m){var g=e(this),h=f(g.length),b=c(l,h),d=c(m,h),k=arguments.length>2?arguments[2]:a,i=Math.min((k===a?h:c(k,h))-d,h-b),j=1;for(b>d&&d+i>b&&(j=-1,d+=i-1,b+=i-1);i-- >0;)d in g?g[b]=g[d]:delete g[b],b+=j,d+=j;return g}},function(e,f,d){var b=d(23)("unscopables"),c=Array.prototype;c[b]==a&&d(8)(c,b,{}),e.exports=function(a){c[b][a]=!0}},function(c,d,a){var b=a(7);b(b.P,"Array",{fill:a(177)}),a(175)("fill")},function(d,g,b){var e=b(54),c=b(34),f=b(32);d.exports=function fill(j){for(var b=e(this),d=f(b.length),g=arguments.length,h=c(g>1?arguments[1]:a,d),i=g>2?arguments[2]:a,k=i===a?d:c(i,d);k>h;)b[h++]=j;return b}},function(g,h,b){var c=b(7),f=b(162)(5),d="find",e=!0;d in[]&&Array(1)[d](function(){e=!1}),c(c.P+c.F*e,"Array",{find:function find(b){return f(this,b,arguments.length>1?arguments[1]:a)}}),b(175)(d)},function(g,h,b){var c=b(7),f=b(162)(6),d="findIndex",e=!0;d in[]&&Array(1)[d](function(){e=!1}),c(c.P+c.F*e,"Array",{findIndex:function findIndex(b){return f(this,b,arguments.length>1?arguments[1]:a)}}),b(175)(d)},function(f,h,b){var d=b(175),c=b(181),e=b(134),g=b(27);f.exports=b(133)(Array,"Array",function(a,b){this._t=g(a),this._i=0,this._k=b},function(){var d=this._t,e=this._k,b=this._i++;return!d||b>=d.length?(this._t=a,c(1)):"keys"==e?c(0,b):"values"==e?c(0,d[b]):c(0,[b,d[b]])},"values"),e.Arguments=e.Array,d("keys"),d("values"),d("entries")},function(a,b){a.exports=function(a,b){return{value:b,done:!!a}}},function(b,c,a){a(183)("Array")},function(c,g,a){var d=a(2),e=a(9),f=a(5),b=a(23)("species");c.exports=function(c){var a=d[c];f&&a&&!a[b]&&e.f(a,b,{configurable:!0,get:function(){return this}})}},function(s,r,c){var i=c(2),q=c(78),o=c(9).f,n=c(45).f,m=c(127),l=c(185),b=i.RegExp,e=b,g=b.prototype,d=/a/g,f=/a/g,k=new b(d)!==d;if(c(5)&&(!k||c(6)(function(){return f[c(23)("match")]=!1,b(d)!=d||b(f)==f||"/a/i"!=b(d,"i")}))){b=function RegExp(c,f){var i=this instanceof b,d=m(c),h=f===a;return!i&&d&&c.constructor===b&&h?c:q(k?new e(d&&!h?c.source:c,f):e((d=c instanceof b)?c.source:c,d&&h?l.call(c):f),i?this:g,b)};for(var p=(function(a){a in b||o(b,a,{configurable:!0,get:function(){return e[a]},set:function(b){e[a]=b}})}),j=n(e),h=0;j.length>h;)p(j[h++]);g.constructor=b,b.prototype=g,c(16)(i,"RegExp",b)}c(183)("RegExp")},function(a,d,b){var c=b(10);a.exports=function(){var b=c(this),a="";return b.global&&(a+="g"),b.ignoreCase&&(a+="i"),b.multiline&&(a+="m"),b.unicode&&(a+="u"),b.sticky&&(a+="y"),a}},function(i,j,b){b(187);var f=b(10),g=b(185),h=b(5),c="toString",d=/./[c],e=function(a){b(16)(RegExp.prototype,c,a,!0)};b(6)(function(){return"/a/b"!=d.call({source:"a",flags:"b"})})?e(function toString(){var b=f(this);return"/".concat(b.source,"/","flags"in b?b.flags:!h&&b instanceof RegExp?g.call(b):a)}):d.name!=c&&e(function toString(){return d.call(this)})},function(b,c,a){a(5)&&"g"!=/./g.flags&&a(9).f(RegExp.prototype,"flags",{configurable:!0,get:a(185)})},function(c,d,b){b(189)("match",1,function(c,b,d){return[function match(d){var e=c(this),f=d==a?a:d[b];return f!==a?f.call(d,e):new RegExp(d)[b](String(e))},d]})},function(b,h,a){var c=a(8),d=a(16),e=a(6),f=a(30),g=a(23);b.exports=function(a,j,k){var b=g(a),h=k(f,b,""[a]),l=h[0],i=h[1];e(function(){var c={};return c[b]=function(){return 7},7!=""[a](c)})&&(d(String.prototype,a,l),c(RegExp.prototype,b,2==j?function(a,b){return i.call(a,this,b)}:function(a){return i.call(a,this)}))}},function(c,d,b){b(189)("replace",2,function(c,d,b){return[function replace(e,f){var g=c(this),h=e==a?a:e[d];return h!==a?h.call(e,g,f):b.call(String(g),e,f)},b]})},function(c,d,b){b(189)("search",1,function(c,b,d){return[function search(d){var e=c(this),f=d==a?a:d[b];return f!==a?f.call(d,e):new RegExp(d)[b](String(e))},d]})},function(c,d,b){b(189)("split",2,function(i,j,e){var k=b(127),f=e,l=[].push,d="split",c="length",g="lastIndex";if("c"=="abbc"[d](/(b)*/)[1]||4!="test"[d](/(?:)/,-1)[c]||2!="ab"[d](/(?:ab)*/)[c]||4!="."[d](/(.?)(.?)/)[c]||"."[d](/()()/)[c]>1||""[d](/.?/)[c]){var h=/()??/.exec("")[1]===a;e=function(d,o){var i=String(this);if(d===a&&0===o)return[];if(!k(d))return f.call(i,d,o);var s,b,p,t,n,e=[],r=(d.ignoreCase?"i":"")+(d.multiline?"m":"")+(d.unicode?"u":"")+(d.sticky?"y":""),m=0,q=o===a?4294967295:o>>>0,j=new RegExp(d.source,r+"g");for(h||(s=new RegExp("^"+j.source+"$(?!\\s)",r));(b=j.exec(i))&&(p=b.index+b[0][c],!(p>m&&(e.push(i.slice(m,b.index)),!h&&b[c]>1&&b[0].replace(s,function(){for(n=1;arguments[c]-2>n;n++)arguments[n]===a&&(b[n]=a)}),b[c]>1&&i[c]>b.index&&l.apply(e,b.slice(1)),t=b[0][c],m=p,e[c]>=q)));)j[g]===b.index&&j[g]++;return m===i[c]?!t&&j.test("")||e.push(""):e.push(i.slice(m)),e[c]>q?e.slice(0,q):e}}else"0"[d](a,0)[c]&&(e=function(b,c){return b===a&&0===c?[]:f.call(this,b,c)});return[function split(b,c){var d=i(this),f=b==a?a:b[j];return f!==a?f.call(b,d,c):e.call(String(d),b,c)},e]})},function(K,J,b){var m,v,w,E=b(47),e=b(2),g=b(18),D=b(71),c=b(7),I=b(11),s=(b(10),b(19)),C=b(82),x=b(194),G=(b(69).set,b(195)),B=b(196).set,u=b(197),f="Promise",t=e.TypeError,n=e.process,d=e[f],n=e.process,k="process"==D(n),l=function(){},j=!!function(){try{var a=d.resolve(1),c=(a.constructor={})[b(23)("species")]=function(a){a(l,l)};return(k||"function"==typeof PromiseRejectionEvent)&&a.then(l)instanceof c}catch(e){}}(),z=function(a,b){return a===b||a===d&&b===w},A=function(a){var b;return I(a)&&"function"==typeof(b=a.then)?b:!1},i=function(a){return z(d,a)?new y(a):new v(a)},y=v=function(d){var b,c;this.promise=new d(function(d,e){if(b!==a||c!==a)throw t("Bad Promise constructor");b=d,c=e}),this.resolve=s(b),this.reject=s(c)},p=function(a){try{a()}catch(b){return{error:b}}},q=function(a,c){if(!a._n){a._n=!0;var b=a._c;u(function(){for(var d=a._v,e=1==a._s,f=0,g=function(b){var c,i,h=e?b.ok:b.fail,j=b.resolve,f=b.reject,g=b.domain;try{h?(e||(2==a._h&&H(a),a._h=1),h===!0?c=d:(g&&g.enter(),c=h(d),g&&g.exit()),c===b.promise?f(t("Promise-chain cycle")):(i=A(c))?i.call(c,j,f):j(c)):f(d)}catch(k){f(k)}};b.length>f;)g(b[f++]);a._c=[],a._n=!1,c&&!a._h&&F(a)})}},F=function(b){B.call(e,function(){var c,g,d,f=b._v;if(o(b)&&(c=p(function(){k?n.emit("unhandledRejection",f,b):(g=e.onunhandledrejection)?g({promise:b,reason:f}):(d=e.console)&&d.error&&d.error("Unhandled promise rejection",f)}),b._h=k||o(b)?2:1),b._a=a,c)throw c.error})},o=function(a){if(1==a._h)return!1;for(var b,c=a._a||a._c,d=0;c.length>d;)if(b=c[d++],b.fail||!o(b.promise))return!1;return!0},H=function(a){B.call(e,function(){var b;k?n.emit("rejectionHandled",a):(b=e.onrejectionhandled)&&b({promise:a,reason:a._v})})},h=function(b){var a=this;a._d||(a._d=!0,a=a._w||a,a._v=b,a._s=2,a._a||(a._a=a._c.slice()),q(a,!0))},r=function(b){var c,a=this;if(!a._d){a._d=!0,a=a._w||a;try{if(a===b)throw t("Promise can't be resolved itself");(c=A(b))?u(function(){var d={_w:a,_d:!1};try{c.call(b,g(r,d,1),g(h,d,1))}catch(e){h.call(d,e)}}):(a._v=b,a._s=1,q(a,!1))}catch(d){h.call({_w:a,_d:!1},d)}}};j||(d=function Promise(a){C(this,d,f,"_h"),s(a),m.call(this);try{a(g(r,this,1),g(h,this,1))}catch(b){h.call(this,b)}},m=function Promise(b){this._c=[],this._a=a,this._s=0,this._d=!1,this._v=a,this._h=0,this._n=!1},m.prototype=b(198)(d.prototype,{then:function then(c,e){var b=i(G(this,d));return b.ok="function"==typeof c?c:!0,b.fail="function"==typeof e&&e,b.domain=k?n.domain:a,this._c.push(b),this._a&&this._a.push(b),this._s&&q(this,!1),b.promise},"catch":function(b){return this.then(a,b)}}),y=function(){var a=new m;this.promise=a,this.resolve=g(r,a,1),this.reject=g(h,a,1)}),c(c.G+c.W+c.F*!j,{Promise:d}),b(22)(d,f),b(183)(f),w=b(3)[f],c(c.S+c.F*!j,f,{reject:function reject(b){var a=i(this),c=a.reject;return c(b),a.promise}}),c(c.S+c.F*(E||!j),f,{resolve:function resolve(a){if(a instanceof d&&z(a.constructor,this))return a;var b=i(this),c=b.resolve;return c(a),b.promise}}),c(c.S+c.F*!(j&&b(155)(function(a){d.all(a)["catch"](l)})),f,{all:function all(g){var c=this,b=i(c),d=b.resolve,e=b.reject,f=p(function(){var b=[],h=0,f=1;x(g,!1,function(i){var j=h++,g=!1;b.push(a),f++,c.resolve(i).then(function(a){g||(g=!0,b[j]=a,--f||d(b))},e)}),--f||d(b)});return f&&e(f.error),b.promise},race:function race(e){var b=this,a=i(b),c=a.reject,d=p(function(){x(e,!1,function(d){b.resolve(d).then(a.resolve,c)})});return d&&c(d.error),a.promise}})},function(b,i,a){var c=a(18),d=a(152),e=a(153),f=a(10),g=a(32),h=a(154);b.exports=function(a,j,q,o,p){var n,i,k,l=p?function(){return a}:h(a),m=c(q,o,j?2:1),b=0;if("function"!=typeof l)throw TypeError(a+" is not iterable!");if(e(l))for(n=g(a.length);n>b;b++)j?m(f(i=a[b])[0],i[1]):m(a[b]);else for(k=l.call(a);!(i=k.next()).done;)d(k,m,i.value,j)}},function(d,g,b){var c=b(10),e=b(19),f=b(23)("species");d.exports=function(g,h){var b,d=c(g).constructor;return d===a||(b=c(d)[f])==a?h:e(b)}},function(s,t,b){var c,g,f,k=b(18),r=b(74),n=b(43),p=b(13),a=b(2),l=a.process,h=a.setImmediate,i=a.clearImmediate,o=a.MessageChannel,j=0,d={},q="onreadystatechange",e=function(){var a=+this;if(d.hasOwnProperty(a)){var b=d[a];delete d[a],b()}},m=function(a){e.call(a.data)};h&&i||(h=function setImmediate(a){for(var b=[],e=1;arguments.length>e;)b.push(arguments[e++]);return d[++j]=function(){r("function"==typeof a?a:Function(a),b)},c(j),j},i=function clearImmediate(a){delete d[a]},"process"==b(29)(l)?c=function(a){l.nextTick(k(e,a,1))}:o?(g=new o,f=g.port2,g.port1.onmessage=m,c=k(f.postMessage,f,1)):a.addEventListener&&"function"==typeof postMessage&&!a.importScripts?(c=function(b){a.postMessage(b+"","*")},a.addEventListener("message",m,!1)):c=q in p("script")?function(a){n.appendChild(p("script"))[q]=function(){n.removeChild(this),e.call(a)}}:function(a){setTimeout(k(e,a,1),0)}),s.exports={set:h,clear:i}},function(n,p,g){var b,e,f,c=g(2),o=g(196).set,k=c.MutationObserver||c.WebKitMutationObserver,h=c.process,i=c.Promise,l="process"==g(29)(h),d=function(){var c,d;for(l&&(c=h.domain)&&c.exit();b;)d=b.fn,d(),b=b.next;e=a,c&&c.enter()};if(l)f=function(){h.nextTick(d)};else if(k){var m=!0,j=document.createTextNode("");new k(d).observe(j,{characterData:!0}),f=function(){j.data=m=!m}}else f=i&&i.resolve?function(){i.resolve().then(d)}:function(){o.call(c,d)};n.exports=function(d){var c={fn:d,next:a};e&&(e.next=c),b||(b=c,f()),e=c}},function(a,d,b){var c=b(16);a.exports=function(a,b,e){for(var d in b)c(a,d,b[d],e);return a}},function(d,e,c){var b=c(200);d.exports=c(201)("Map",function(b){return function Map(){return b(this,arguments.length>0?arguments[0]:a)}},{get:function get(c){var a=b.getEntry(this,c);return a&&a.v},set:function set(a,c){return b.def(this,0===a?0:a,c)}},b,!0)},function(i,r,b){var j=b(9).f,m=b(41),o=(b(8),b(198)),p=b(18),f=b(82),q=b(30),k=b(194),l=b(133),e=b(181),n=b(183),g=b(5),h=b(20).fastKey,c=g?"_s":"size",d=function(b,c){var a,d=h(c);if("F"!==d)return b._i[d];for(a=b._f;a;a=a.n)if(a.k==c)return a};i.exports={getConstructor:function(e,h,i,l){var b=e(function(d,e){f(d,b,h,"_i"),d._i=m(null),d._f=a,d._l=a,d[c]=0,e!=a&&k(e,i,d[l],d)});return o(b.prototype,{clear:function clear(){for(var d=this,e=d._i,b=d._f;b;b=b.n)b.r=!0,b.p&&(b.p=b.p.n=a),delete e[b.i];d._f=d._l=a,d[c]=0},"delete":function(g){var b=this,a=d(b,g);if(a){var e=a.n,f=a.p;delete b._i[a.i],a.r=!0,f&&(f.n=e),e&&(e.p=f),b._f==a&&(b._f=e),b._l==a&&(b._l=f),b[c]--}return!!a},forEach:function forEach(d){f(this,b,"forEach");for(var c,e=p(d,arguments.length>1?arguments[1]:a,3);c=c?c.n:this._f;)for(e(c.v,c.k,this);c&&c.r;)c=c.p},has:function has(a){return!!d(this,a)}}),g&&j(b.prototype,"size",{get:function(){return q(this[c])}}),b},def:function(b,f,j){var g,i,e=d(b,f);return e?e.v=j:(b._l=e={i:i=h(f,!0),k:f,v:j,p:g=b._l,n:a,r:!1},b._f||(b._f=e),g&&(g.n=e),b[c]++,"F"!==i&&(b._i[i]=e)),b},getEntry:d,setStrong:function(d,b,c){l(d,b,function(b,c){this._t=b,this._k=c,this._l=a},function(){for(var c=this,d=c._k,b=c._l;b&&b.r;)b=b.p;return c._t&&(c._l=b=b?b.n:c._t._f)?"keys"==d?e(0,b.k):"values"==d?e(0,b.v):e(0,[b.k,b.v]):(c._t=a,e(1))},c?"entries":"values",!c,!0),n(b)}}},function(m,p,b){var l=b(2),c=b(7),g=b(16),h=b(198),f=b(20),j=b(194),k=b(82),d=b(11),e=b(6),n=b(155),i=b(22),o=b(78);m.exports=function(q,y,A,x,r,m){var u=l[q],b=u,s=r?"set":"add",p=b&&b.prototype,w={},t=function(b){var c=p[b];g(p,b,"delete"==b?function(a){return m&&!d(a)?!1:c.call(this,0===a?0:a)}:"has"==b?function has(a){return m&&!d(a)?!1:c.call(this,0===a?0:a)}:"get"==b?function get(b){return m&&!d(b)?a:c.call(this,0===b?0:b)}:"add"==b?function add(a){return c.call(this,0===a?0:a),this}:function set(a,b){return c.call(this,0===a?0:a,b),this})};if("function"==typeof b&&(m||p.forEach&&!e(function(){(new b).entries().next()}))){var v=new b,B=v[s](m?{}:-0,1)!=v,C=e(function(){v.has(1)}),D=n(function(a){new b(a)}),z=!m&&e(function(){for(var c=new b,a=5;a--;)c[s](a,a);return!c.has(-0)});D||(b=y(function(d,e){k(d,b,q);var c=o(new u,d,b);return e!=a&&j(e,r,c[s],c),c}),b.prototype=p,p.constructor=b),(C||z)&&(t("delete"),t("has"),r&&t("get")),(z||B)&&t(s),m&&p.clear&&delete p.clear}else b=x.getConstructor(y,q,r,s),h(b.prototype,A),f.NEED=!0;return i(b,q),w[q]=b,c(c.G+c.W+c.F*(b!=u),w),m||x.setStrong(b,q,r),b}},function(d,e,b){var c=b(200);d.exports=b(201)("Set",function(b){return function Set(){return b(this,arguments.length>0?arguments[0]:a)}},{add:function add(a){return c.def(this,a=0===a?0:a,a)}},c)},function(q,r,b){var d,p=b(162)(0),o=b(16),h=b(20),n=b(65),c=b(204),j=b(11),k=(b(4),h.getWeak),l=Object.isExtensible,m=c.ufstore,i={},g=function(b){return function WeakMap(){return b(this,arguments.length>0?arguments[0]:a)}},f={get:function get(b){if(j(b)){var c=k(b);return c===!0?m(this).get(b):c?c[this._i]:a}},set:function set(a,b){return c.def(this,a,b)}},e=q.exports=b(201)("WeakMap",g,f,c,!0,!0);7!=(new e).set((Object.freeze||Object)(i),7).get(i)&&(d=c.getConstructor(g),n(d.prototype,f),h.NEED=!0,p(["delete","has","get","set"],function(a){var b=e.prototype,c=b[a];o(b,a,function(b,e){if(j(b)&&!l(b)){this._f||(this._f=new d);var f=this._f[a](b,e);return"set"==a?this:f}return c.call(this,b,e)})}))},function(j,r,b){var l=b(198),e=b(20).getWeak,k=b(10),f=b(11),p=b(82),q=b(194),h=b(162),i=b(4),m=h(5),n=h(6),o=0,c=function(a){return a._l||(a._l=new g)},g=function(){this.a=[]},d=function(a,b){return m(a.a,function(a){return a[0]===b})};g.prototype={get:function(b){var a=d(this,b);return a?a[1]:void 0},has:function(a){return!!d(this,a)},set:function(a,b){var c=d(this,a);c?c[1]=b:this.a.push([a,b])},"delete":function(b){var a=n(this.a,function(a){return a[0]===b});return~a&&this.a.splice(a,1),!!~a}},j.exports={getConstructor:function(d,g,h,j){var b=d(function(c,d){p(c,b,g,"_i"),c._i=o++,c._l=a,d!=a&&q(d,h,c[j],c)});return l(b.prototype,{"delete":function(b){if(!f(b))return!1;var a=e(b);return a===!0?c(this)["delete"](b):a&&i(a,this._i)&&delete a[this._i]},has:function has(a){if(!f(a))return!1;var b=e(a);return b===!0?c(this).has(a):b&&i(b,this._i)}}),b},def:function(a,b,d){var f=e(k(b),!0);return f===!0?c(a).set(b,d):f[a._i]=d,a},ufstore:c}},function(d,e,b){var c=b(204);b(201)("WeakSet",function(b){return function WeakSet(){return b(this,arguments.length>0?arguments[0]:a)}},{add:function add(a){return c.def(this,a,!0)}},c,!1,!0)},function(d,e,b){var a=b(7),c=Function.apply;a(a.S,"Reflect",{apply:function apply(a,b,d){return c.call(a,b,d)}})},function(i,j,b){var c=b(7),f=b(41),d=b(19),g=b(10),e=b(11),h=b(73);c(c.S+c.F*b(6)(function(){function F(){}return!(Reflect.construct(function(){},[],F)instanceof F)}),"Reflect",{construct:function construct(c,b){d(c);var j=3>arguments.length?c:d(arguments[2]);if(c==j){if(b!=a)switch(g(b).length){case 0:return new c;case 1:return new c(b[0]);case 2:return new c(b[0],b[1]);case 3:return new c(b[0],b[1],b[2]);case 4:return new c(b[0],b[1],b[2],b[3])}var i=[null];return i.push.apply(i,b),new(h.apply(c,i))}var k=j.prototype,l=f(e(k)?k:Object.prototype),m=Function.apply.call(c,l,b);return e(m)?m:l}})},function(f,g,a){var c=a(9),b=a(7),d=a(10),e=a(14);b(b.S+b.F*a(6)(function(){Reflect.defineProperty(c.f({},1,{value:1}),1,{value:2})}),"Reflect",{defineProperty:function defineProperty(b,a,f){d(b),a=e(a,!0),d(f);try{return c.f(b,a,f),!0}catch(g){return!1}}})},function(e,f,a){var b=a(7),c=a(46).f,d=a(10);b(b.S,"Reflect",{deleteProperty:function deleteProperty(a,b){var e=c(d(a),b);return e&&!e.configurable?!1:delete a[b]}})},function(f,g,b){var c=b(7),e=b(10),d=function(a){this._t=e(a),this._i=0;var b,c=this._k=[];for(b in a)c.push(b)};b(135)(d,"Object",function(){var c,b=this,d=b._k;do if(b._i>=d.length)return{value:a,done:!0};while(!((c=d[b._i++])in b._t));return{value:c,done:!1}}),c(c.S,"Reflect",{enumerate:function enumerate(a){return new d(a)}})},function(i,j,b){function get(b,i){var c,k,j=3>arguments.length?b:arguments[2];return h(b)===j?b[i]:(c=d.f(b,i))?f(c,"value")?c.value:c.get!==a?c.get.call(j):a:g(k=e(b))?get(k,i,j):void 0}var d=b(46),e=b(55),f=b(4),c=b(7),g=b(11),h=b(10);c(c.S,"Reflect",{get:get})},function(e,f,a){var c=a(46),b=a(7),d=a(10);b(b.S,"Reflect",{getOwnPropertyDescriptor:function getOwnPropertyDescriptor(a,b){return c.f(d(a),b)}})},function(e,f,a){var b=a(7),c=a(55),d=a(10);b(b.S,"Reflect",{getPrototypeOf:function getPrototypeOf(a){return c(d(a))}})},function(c,d,b){var a=b(7);a(a.S,"Reflect",{has:function has(a,b){return b in a}})},function(e,f,a){var b=a(7),d=a(10),c=Object.isExtensible;b(b.S,"Reflect",{isExtensible:function isExtensible(a){return d(a),c?c(a):!0}})},function(c,d,a){var b=a(7);b(b.S,"Reflect",{ownKeys:a(217)})},function(c,g,a){var d=a(45),e=a(38),f=a(10),b=a(2).Reflect;c.exports=b&&b.ownKeys||function ownKeys(a){var b=d.f(f(a)),c=e.f;return c?b.concat(c(a)):b}},function(e,f,a){var b=a(7),d=a(10),c=Object.preventExtensions;b(b.S,"Reflect",{preventExtensions:function preventExtensions(a){d(a);try{return c&&c(a),!0}catch(b){return!1}}})},function(l,k,b){function set(l,k,m){var n,o,e=4>arguments.length?l:arguments[3],b=d.f(g(l),k);if(!b){if(c(o=j(l)))return set(o,k,m,e);b=f(0)}return h(b,"value")?b.writable!==!1&&c(e)?(n=d.f(e,k)||f(0),n.value=m,i.f(e,k,n),!0):!1:b.set===a?!1:(b.set.call(e,m),!0)}var i=b(9),d=b(46),j=b(55),h=b(4),e=b(7),f=b(15),g=b(10),c=b(11);e(e.S,"Reflect",{set:set})},function(d,e,b){var c=b(7),a=b(69);a&&c(c.S,"Reflect",{setPrototypeOf:function setPrototypeOf(b,c){a.check(b,c);try{return a.set(b,c),!0}catch(d){return!1}}})},function(c,d,b){var a=b(7);a(a.S,"Date",{now:function(){return(new Date).getTime()}})},function(e,f,a){var b=a(7),c=a(54),d=a(14);b(b.P+b.F*a(6)(function(){return null!==new Date(NaN).toJSON()||1!==Date.prototype.toJSON.call({toISOString:function(){return 1}})}),"Date",{toJSON:function toJSON(e){var a=c(this),b=d(a);return"number"!=typeof b||isFinite(b)?a.toISOString():null}})},function(f,g,c){var b=c(7),d=c(6),e=Date.prototype.getTime,a=function(a){return a>9?a:"0"+a};b(b.P+b.F*(d(function(){return"0385-07-25T07:06:39.999Z"!=new Date(-5e13-1).toISOString()})||!d(function(){new Date(NaN).toISOString()})),"Date",{toISOString:function toISOString(){if(!isFinite(e.call(this)))throw RangeError("Invalid time value");var b=this,c=b.getUTCFullYear(),d=b.getUTCMilliseconds(),f=0>c?"-":c>9999?"+":"";return f+("00000"+Math.abs(c)).slice(f?-6:-4)+"-"+a(b.getUTCMonth()+1)+"-"+a(b.getUTCDate())+"T"+a(b.getUTCHours())+":"+a(b.getUTCMinutes())+":"+a(b.getUTCSeconds())+"."+(d>99?d:"0"+a(d))+"Z"}})},function(g,h,d){var a=Date.prototype,b="Invalid Date",c="toString",e=a[c],f=a.getTime;new Date(NaN)+""!=b&&d(16)(a,c,function toString(){var a=f.call(this);return a===a?e.call(this):b})},function(d,e,a){var b=a(23)("toPrimitive"),c=Date.prototype;b in c||a(8)(c,b,a(226))},function(c,f,a){var d=a(10),e=a(14),b="number";c.exports=function(a){if("string"!==a&&a!==b&&"default"!==a)throw TypeError("Incorrect hint");return e(d(this),a!=b)}},function(s,r,b){var c=b(7),f=b(228),j=b(229),g=b(10),m=b(34),n=b(32),p=b(11),i=(b(23)("typed_array"),b(2).ArrayBuffer),q=b(195),d=j.ArrayBuffer,k=j.DataView,l=f.ABV&&i.isView,h=d.prototype.slice,o=f.VIEW,e="ArrayBuffer";c(c.G+c.W+c.F*(i!==d),{ArrayBuffer:d}),c(c.S+c.F*!f.CONSTR,e,{isView:function isView(a){return l&&l(a)||p(a)&&o in a}}),c(c.P+c.U+c.F*b(6)(function(){return!new d(2).slice(1,a).byteLength}),e,{slice:function slice(f,b){if(h!==a&&b===a)return h.call(g(this),f);for(var c=g(this).byteLength,e=m(f,c),i=m(b===a?c:b,c),j=new(q(this,d))(n(i-e)),l=new k(this),o=new k(j),p=0;i>e;)o.setUint8(p++,l.getUint8(e++));return j}}),b(183)(e)},function(k,n,a){for(var b,c=a(2),e=a(8),f=a(17),d=f("typed_array"),g=f("view"),h=!(!c.ArrayBuffer||!c.DataView),i=h,j=0,l=9,m="Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array".split(",");l>j;)(b=c[m[j++]])?(e(b.prototype,d,!0),e(b.prototype,g,!0)):i=!1;k.exports={ABV:h,CONSTR:i,TYPED:d,VIEW:g}},function(da,F,c){var m=c(2),q=c(5),aa=c(47),O=c(228),N=c(8),M=c(198),E=c(6),u=c(82),t=c(33),Q=c(32),ca=c(45).f,W=c(9).f,$=c(177),D=c(22),r="ArrayBuffer",k="DataView",h="prototype",G="Wrong length!",B="Wrong index!",b=m[r],d=m[k],j=m.Math,l=m.RangeError,s=m.Infinity,n=b,ba=j.abs,e=j.pow,X=j.floor,Y=j.log,Z=j.LN2,A="buffer",v="byteLength",C="byteOffset",w=q?"_b":A,i=q?"_l":v,x=q?"_o":C,z=function(a,c,l){var b,d,g,h=Array(l),i=8*l-c-1,j=(1<>1,m=23===c?e(2,-24)-e(2,-77):0,k=0,n=0>a||0===a&&0>1/a?1:0;for(a=ba(a),a!=a||a===s?(d=a!=a?1:0,b=j):(b=X(Y(a)/Z),a*(g=e(2,-b))<1&&(b--,g*=2),a+=b+f>=1?m/g:m*e(2,1-f),a*g>=2&&(b++,g/=2),b+f>=j?(d=0,b=j):b+f>=1?(d=(a*g-1)*e(2,c),b+=f):(d=a*e(2,f-1)*e(2,c),b=0));c>=8;h[k++]=255&d,d/=256,c-=8);for(b=b<0;h[k++]=255&b,b/=256,i-=8);return h[--k]|=128*n,h},H=function(h,g,k){var c,j=8*k-g-1,l=(1<>1,b=j-7,d=k-1,f=h[d--],a=127&f;for(f>>=7;b>0;a=256*a+h[d],d--,b-=8);for(c=a&(1<<-b)-1,a>>=-b,b+=g;b>0;c=256*c+h[d],d--,b-=8);if(0===a)a=1-i;else{if(a===l)return c?NaN:f?-s:s;c+=e(2,g),a-=i}return(f?-1:1)*c*e(2,a-g)},I=function(a){return a[3]<<24|a[2]<<16|a[1]<<8|a[0]},J=function(a){return[255&a]},K=function(a){return[255&a,a>>8&255]},L=function(a){return[255&a,a>>8&255,a>>16&255,a>>24&255]},U=function(a){return z(a,52,8)},V=function(a){return z(a,23,4)},o=function(a,b,c){W(a[h],b,{get:function(){return this[c]}})},g=function(b,c,g,h){var d=+g,a=t(d);if(d!=a||0>a||a+c>b[i])throw l(B);var j=b[w]._b,e=a+b[x],f=j.slice(e,e+c);return h?f:f.reverse()},f=function(c,d,j,h,f,g){var e=+j,b=t(e);if(e!=b||0>b||b+d>c[i])throw l(B);for(var k=c[w]._b,m=b+c[x],n=h(+f),a=0;d>a;a++)k[m+a]=n[g?a:d-a-1]},P=function(d,e){u(d,b,r);var a=+e,c=Q(a);if(a!=c)throw l(G);return c};if(O.ABV){if(!E(function(){new b})||!E(function(){new b(.5)})){b=function ArrayBuffer(a){return new n(P(this,a))};for(var y,_=b[h]=n[h],R=ca(n),S=0;R.length>S;)(y=R[S++])in b||N(b,y,n[y]);aa||(_.constructor=b)}var p=new d(new b(2)),T=d[h].setInt8;p.setInt8(0,2147483648),p.setInt8(1,2147483649),!p.getInt8(0)&&p.getInt8(1)||M(d[h],{setInt8:function setInt8(a,b){T.call(this,a,b<<24>>24)},setUint8:function setUint8(a,b){T.call(this,a,b<<24>>24)}},!0)}else b=function ArrayBuffer(b){var a=P(this,b);this._b=$.call(Array(a),0),this[i]=a},d=function DataView(f,h,c){u(this,d,k),u(f,b,k);var g=f[i],e=t(h);if(0>e||e>g)throw l("Wrong offset!");if(c=c===a?g-e:Q(c),e+c>g)throw l(G);this[w]=f,this[x]=e,this[i]=c},q&&(o(b,v,"_l"),o(d,A,"_b"),o(d,v,"_l"),o(d,C,"_o")),M(d[h],{getInt8:function getInt8(a){return g(this,1,a)[0]<<24>>24},getUint8:function getUint8(a){return g(this,1,a)[0]},getInt16:function getInt16(b){var a=g(this,2,b,arguments[1]);return(a[1]<<8|a[0])<<16>>16},getUint16:function getUint16(b){var a=g(this,2,b,arguments[1]);return a[1]<<8|a[0]},getInt32:function getInt32(a){return I(g(this,4,a,arguments[1]))},getUint32:function getUint32(a){return I(g(this,4,a,arguments[1]))>>>0},getFloat32:function getFloat32(a){return H(g(this,4,a,arguments[1]),23,4)},getFloat64:function getFloat64(a){return H(g(this,8,a,arguments[1]),52,8)},setInt8:function setInt8(a,b){f(this,1,a,J,b)},setUint8:function setUint8(a,b){f(this,1,a,J,b)},setInt16:function setInt16(a,b){f(this,2,a,K,b,arguments[2])},setUint16:function setUint16(a,b){f(this,2,a,K,b,arguments[2])},setInt32:function setInt32(a,b){f(this,4,a,L,b,arguments[2])},setUint32:function setUint32(a,b){f(this,4,a,L,b,arguments[2])},setFloat32:function setFloat32(a,b){f(this,4,a,V,b,arguments[2])},setFloat64:function setFloat64(a,b){f(this,8,a,U,b,arguments[2])}});D(b,r),D(d,k),N(d[h],O.VIEW,!0),F[r]=b,F[k]=d},function(c,d,b){var a=b(7);a(a.G+a.W+a.F*!b(228).ABV,{DataView:b(229).DataView})},function(b,c,a){a(232)("Int8",1,function(a){return function Int8Array(b,c,d){return a(this,b,c,d)}})},function(N,Wa,b){if(b(5)){var T=b(47),y=b(2),h=b(6),c=b(7),x=b(228),ca=b(229),Ka=b(18),da=b(82),Ha=b(15),e=b(8),D=b(198),Ga=(b(89),b(33)),q=b(32),fa=b(34),ia=b(14),s=b(4),ya=b(67),ka=b(71),j=b(11),ma=b(54),ta=b(153),sa=b(41),ra=b(55),B=b(45).f,Ra=(b(233),b(154)),Y=b(17),V=b(23),i=b(162),U=b(31),H=b(195),I=b(180),Sa=b(134),Ta=b(155),Qa=b(183),Va=b(177),qa=b(174),O=b(9),P=b(46),p=O.f,Ua=P.f,k=y.RangeError,J=y.TypeError,l=y.Uint8Array,E="ArrayBuffer",W="Shared"+E,X="BYTES_PER_ELEMENT",r="prototype",g=Array[r],C=ca.ArrayBuffer,Pa=ca.DataView,aa=i(0),Oa=i(2),La=i(3),Ja=i(4),Ia=i(5),oa=i(6),Ea=U(!0),Ca=U(!1),Aa=I.values,xa=I.keys,wa=I.entries,va=g.lastIndexOf,ua=g.reduce,pa=g.reduceRight,na=g.join,Fa=g.sort,M=g.slice,o=g.toString,K=g.toLocaleString,G=V("iterator"),t=V("toStringTag"),la=Y("typed_constructor"),w=Y("def_constructor"),ja=x.CONSTR,m=x.TYPED,za=x.VIEW,n="Wrong length!",Ba=i(1,function(a,b){return u(H(a,a[w]),b)}),ha=h(function(){return 1===new l(new Uint16Array([1]).buffer)[0]}),Da=!!l&&!!l[r].set&&h(function(){new l(1).set({})}),ga=function(b,d){if(b===a)throw J(n);var e=+b,c=q(b);if(d&&!ya(e,c))throw k(n);return c},A=function(b,c){var a=Ga(b);if(0>a||a%c)throw k("Wrong offset!");return a},d=function(a){if(j(a)&&m in a)return a;throw J(a+" is not a typed array!")},u=function(a,b){if(!(j(a)&&la in a))throw J("It is not a typed array constructor!");return new a(b)},ea=function(a,b){return F(H(a,a[w]),b)},F=function(e,b){for(var a=0,c=b.length,d=u(e,c);c>a;)d[a]=b[a++];return d},v=function(a,b,c){p(a,b,{get:function(){return this._d[c]}})},L=function from(m){var b,f,g,h,j,i,c=ma(m),k=arguments.length,d=k>1?arguments[1]:a,l=d!==a,e=Ra(c);if(e!=a&&!ta(e)){for(i=e.call(c),g=[],b=0;!(j=i.next()).done;b++)g.push(j.value);c=g}for(l&&k>2&&(d=Ka(d,arguments[2],2)),b=0,f=q(c.length),h=u(this,f);f>b;b++)h[b]=l?d(c[b],b):c[b];return h},Ma=function of(){for(var a=0,b=arguments.length,c=u(this,b);b>a;)c[a]=arguments[a++];return c},Na=!!l&&h(function(){K.call(new l(1))}),ba=function toLocaleString(){return K.apply(Na?M.call(d(this)):d(this),arguments)},_={copyWithin:function copyWithin(b,c){return qa.call(d(this),b,c,arguments.length>2?arguments[2]:a)},every:function every(b){return Ja(d(this),b,arguments.length>1?arguments[1]:a)},fill:function fill(a){return Va.apply(d(this),arguments)},filter:function filter(b){return ea(this,Oa(d(this),b,arguments.length>1?arguments[1]:a))},find:function find(b){return Ia(d(this),b,arguments.length>1?arguments[1]:a)},findIndex:function findIndex(b){return oa(d(this),b,arguments.length>1?arguments[1]:a)},forEach:function forEach(b){aa(d(this),b,arguments.length>1?arguments[1]:a)},indexOf:function indexOf(b){return Ca(d(this),b,arguments.length>1?arguments[1]:a)},includes:function includes(b){return Ea(d(this),b,arguments.length>1?arguments[1]:a)},join:function join(a){return na.apply(d(this),arguments)},lastIndexOf:function lastIndexOf(a){return va.apply(d(this),arguments)},map:function map(b){return Ba(d(this),b,arguments.length>1?arguments[1]:a)},reduce:function reduce(a){return ua.apply(d(this),arguments)},reduceRight:function reduceRight(a){return pa.apply(d(this),arguments)},reverse:function reverse(){for(var e,a=this,b=d(a).length,f=Math.floor(b/2),c=0;f>c;)e=a[c],a[c++]=a[--b],a[b]=e;return a},some:function some(b){return La(d(this),b,arguments.length>1?arguments[1]:a)},sort:function sort(a){return Fa.call(d(this),a)},subarray:function subarray(g,e){var b=d(this),c=b.length,f=fa(g,c);return new(H(b,b[w]))(b.buffer,b.byteOffset+f*b.BYTES_PER_ELEMENT,q((e===a?c:fa(e,c))-f))}},$=function slice(a,b){return ea(this,M.call(d(this),a,b))},Z=function set(f){d(this);var b=A(arguments[1],1),g=this.length,c=ma(f),e=q(c.length),a=0;if(e+b>g)throw k(n);for(;e>a;)this[b+a]=c[a++]},z={entries:function entries(){return wa.call(d(this))},keys:function keys(){return xa.call(d(this))},values:function values(){return Aa.call(d(this))}},S=function(b,a){return j(b)&&b[m]&&"symbol"!=typeof a&&a in b&&String(+a)==String(a)},R=function getOwnPropertyDescriptor(b,a){return S(b,a=ia(a,!0))?Ha(2,b[a]):Ua(b,a)},Q=function defineProperty(b,c,a){return!(S(b,c=ia(c,!0))&&j(a)&&s(a,"value"))||s(a,"get")||s(a,"set")||a.configurable||s(a,"writable")&&!a.writable||s(a,"enumerable")&&!a.enumerable?p(b,c,a):(b[c]=a.value,
+b)};ja||(P.f=R,O.f=Q),c(c.S+c.F*!ja,"Object",{getOwnPropertyDescriptor:R,defineProperty:Q}),h(function(){o.call({})})&&(o=K=function toString(){return na.call(this)});var f=D({},_);D(f,z),e(f,G,z.values),D(f,{slice:$,set:Z,constructor:function(){},toString:o,toLocaleString:ba}),v(f,"buffer","b"),v(f,"byteOffset","o"),v(f,"byteLength","l"),v(f,"length","e"),p(f,t,{get:function(){return this[m]}}),N.exports=function(v,i,I,s){s=!!s;var d=v+(s?"Clamped":"")+"Array",S="Uint8Array"!=d,R="get"+v,N="set"+v,b=y[d],l=b||{},K=b&&ra(b),M=!b||!x.ABV,J={},g=b&&b[r],O=function(b,c){var a=b._d;return a.v[R](c*i+a.o,ha)},P=function(c,d,a){var b=c._d;s&&(a=(a=Math.round(a))<0?0:a>255?255:255&a),b.v[N](d*i+b.o,a,ha)},Q=function(b,a){p(b,a,{get:function(){return O(this,a)},set:function(b){return P(this,a,b)},enumerable:!0})};M?(b=I(function(o,c,u,r){da(o,b,d,"_d");var l,f,g,s,t=0,h=0;if(j(c)){if(!(c instanceof C||(s=ka(c))==E||s==W))return m in c?F(b,c):L.call(b,c);l=c,h=A(u,i);var p=c.byteLength;if(r===a){if(p%i)throw k(n);if(f=p-h,0>f)throw k(n)}else if(f=q(r)*i,f+h>p)throw k(n);g=f/i}else g=ga(c,!0),f=g*i,l=new C(f);for(e(o,"_d",{b:l,o:h,l:f,e:g,v:new Pa(l)});g>t;)Q(o,t++)}),g=b[r]=sa(f),e(g,"constructor",b)):Ta(function(a){new b(null),new b(a)},!0)||(b=I(function(h,c,e,f){da(h,b,d);var g;return j(c)?c instanceof C||(g=ka(c))==E||g==W?f!==a?new l(c,A(e,i),f):e!==a?new l(c,A(e,i)):new l(c):m in c?F(b,c):L.call(b,c):new l(ga(c,S))}),aa(K!==Function.prototype?B(l).concat(B(K)):B(l),function(a){a in b||e(b,a,l[a])}),b[r]=g,T||(g.constructor=b));var u=g[G],D=!!u&&("values"==u.name||u.name==a),H=z.values;e(b,la,!0),e(g,m,d),e(g,za,!0),e(g,w,b),(s?new b(1)[t]==d:t in g)||p(g,t,{get:function(){return d}}),J[d]=b,c(c.G+c.W+c.F*(b!=l),J),c(c.S,d,{BYTES_PER_ELEMENT:i,from:L,of:Ma}),X in g||e(g,X,i),c(c.P,d,_),Qa(d),c(c.P+c.F*Da,d,{set:Z}),c(c.P+c.F*!D,d,z),c(c.P+c.F*(g.toString!=o),d,{toString:o}),c(c.P+c.F*h(function(){new b(1).slice()}),d,{slice:$}),c(c.P+c.F*(h(function(){return[1,2].toLocaleString()!=new b([1,2]).toLocaleString()})||!h(function(){g.toLocaleString.call([1,2])})),d,{toLocaleString:ba}),Sa[d]=D?u:H,T||D||e(g,G,H)}}else N.exports=function(){}},function(c,g,b){var d=b(71),e=b(23)("iterator"),f=b(134);c.exports=b(3).isIterable=function(c){var b=Object(c);return b[e]!==a||"@@iterator"in b||f.hasOwnProperty(d(b))}},function(b,c,a){a(232)("Uint8",1,function(a){return function Uint8Array(b,c,d){return a(this,b,c,d)}})},function(b,c,a){a(232)("Uint8",1,function(a){return function Uint8ClampedArray(b,c,d){return a(this,b,c,d)}},!0)},function(b,c,a){a(232)("Int16",2,function(a){return function Int16Array(b,c,d){return a(this,b,c,d)}})},function(b,c,a){a(232)("Uint16",2,function(a){return function Uint16Array(b,c,d){return a(this,b,c,d)}})},function(b,c,a){a(232)("Int32",4,function(a){return function Int32Array(b,c,d){return a(this,b,c,d)}})},function(b,c,a){a(232)("Uint32",4,function(a){return function Uint32Array(b,c,d){return a(this,b,c,d)}})},function(b,c,a){a(232)("Float32",4,function(a){return function Float32Array(b,c,d){return a(this,b,c,d)}})},function(b,c,a){a(232)("Float64",8,function(a){return function Float64Array(b,c,d){return a(this,b,c,d)}})},function(e,f,b){var c=b(7),d=b(31)(!0);c(c.P,"Array",{includes:function includes(b){return d(this,b,arguments.length>1?arguments[1]:a)}}),b(175)("includes")},function(d,e,a){var b=a(7),c=a(124)(!0);b(b.P,"String",{at:function at(a){return c(this,a)}})},function(e,f,b){var c=b(7),d=b(245);c(c.P,"String",{padStart:function padStart(b){return d(this,b,arguments.length>1?arguments[1]:a,!0)}})},function(c,g,b){var d=b(32),e=b(84),f=b(30);c.exports=function(l,m,i,n){var c=String(f(l)),j=c.length,g=i===a?" ":String(i),k=d(m);if(j>=k)return c;""==g&&(g=" ");var h=k-j,b=e.call(g,Math.ceil(h/g.length));return b.length>h&&(b=b.slice(0,h)),n?b+c:c+b}},function(e,f,b){var c=b(7),d=b(245);c(c.P,"String",{padEnd:function padEnd(b){return d(this,b,arguments.length>1?arguments[1]:a,!1)}})},function(b,c,a){a(79)("trimLeft",function(a){return function trimLeft(){return a(this,1)}},"trimStart")},function(b,c,a){a(79)("trimRight",function(a){return function trimRight(){return a(this,2)}},"trimEnd")},function(i,j,a){var b=a(7),d=a(30),e=a(32),f=a(127),g=a(185),h=RegExp.prototype,c=function(a,b){this._r=a,this._s=b};a(135)(c,"RegExp String",function next(){var a=this._r.exec(this._s);return{value:a,done:null===a}}),b(b.P,"String",{matchAll:function matchAll(a){if(d(this),!f(a))throw TypeError(a+" is not a regexp!");var j=String(this),b="flags"in h?String(a.flags):g.call(a),i=new RegExp(a.source,~b.indexOf("g")?b:"g"+b);return i.lastIndex=e(a.lastIndex),new c(i,j)}})},function(h,i,a){var b=a(7),c=a(217),d=a(27),e=a(15),f=a(46),g=a(9);b(b.S,"Object",{getOwnPropertyDescriptors:function getOwnPropertyDescriptors(l){for(var a,h,i=d(l),m=f.f,j=c(i),b={},k=0;j.length>k;)h=m(i,a=j[k++]),a in b?g.f(b,a,e(0,h)):b[a]=h;return b}})},function(d,e,a){var b=a(7),c=a(252)(!1);b(b.S,"Object",{values:function values(a){return c(a)}})},function(b,f,a){var c=a(25),d=a(27),e=a(39).f;b.exports=function(a){return function(j){for(var b,f=d(j),g=c(f),k=g.length,h=0,i=[];k>h;)e.call(f,b=g[h++])&&i.push(a?[b,f[b]]:f[b]);return i}}},function(d,e,a){var b=a(7),c=a(252)(!0);b(b.S,"Object",{entries:function entries(a){return c(a)}})},function(f,g,a){var b=a(7),c=a(54),d=a(19),e=a(9);a(5)&&b(b.P+a(255),"Object",{__defineGetter__:function __defineGetter__(a,b){e.f(c(this),a,{get:d(b),enumerable:!0,configurable:!0})}})},function(b,c,a){b.exports=a(47)||!a(6)(function(){var b=Math.random();__defineSetter__.call(null,b,function(){}),delete a(2)[b]})},function(f,g,a){var b=a(7),c=a(54),d=a(19),e=a(9);a(5)&&b(b.P+a(255),"Object",{__defineSetter__:function __defineSetter__(a,b){e.f(c(this),a,{set:d(b),enumerable:!0,configurable:!0})}})},function(g,h,a){var b=a(7),c=a(54),d=a(14),e=a(55),f=a(46).f;a(5)&&b(b.P+a(255),"Object",{__lookupGetter__:function __lookupGetter__(g){var b,a=c(this),h=d(g,!0);do if(b=f(a,h))return b.get;while(a=e(a))}})},function(g,h,a){var b=a(7),c=a(54),d=a(14),e=a(55),f=a(46).f;a(5)&&b(b.P+a(255),"Object",{__lookupSetter__:function __lookupSetter__(g){var b,a=c(this),h=d(g,!0);do if(b=f(a,h))return b.set;while(a=e(a))}})},function(c,d,b){var a=b(7);a(a.P+a.R,"Map",{toJSON:b(260)("Map")})},function(b,e,a){var c=a(71),d=a(261);b.exports=function(a){return function toJSON(){if(c(this)!=a)throw TypeError(a+"#toJSON isn't generic");return d(this)}}},function(a,d,b){var c=b(194);a.exports=function(b,d){var a=[];return c(b,!1,a.push,a,d),a}},function(c,d,b){var a=b(7);a(a.P+a.R,"Set",{toJSON:b(260)("Set")})},function(c,d,a){var b=a(7);b(b.S,"System",{global:a(2)})},function(d,e,a){var b=a(7),c=a(29);b(b.S,"Error",{isError:function isError(a){return"Error"===c(a)}})},function(c,d,b){var a=b(7);a(a.S,"Math",{iaddh:function iaddh(c,d,e,f){var a=c>>>0,g=d>>>0,b=e>>>0;return g+(f>>>0)+((a&b|(a|b)&~(a+b>>>0))>>>31)|0}})},function(c,d,b){var a=b(7);a(a.S,"Math",{isubh:function isubh(c,d,e,f){var a=c>>>0,g=d>>>0,b=e>>>0;return g-(f>>>0)-((~a&b|~(a^b)&a-b>>>0)>>>31)|0}})},function(c,d,b){var a=b(7);a(a.S,"Math",{imulh:function imulh(i,j){var a=65535,e=+i,b=+j,g=e&a,h=b&a,f=e>>16,c=b>>16,d=(f*h>>>0)+(g*h>>>16);return f*c+(d>>16)+((g*c>>>0)+(d&a)>>16)}})},function(c,d,b){var a=b(7);a(a.S,"Math",{umulh:function umulh(i,j){var a=65535,e=+i,b=+j,g=e&a,h=b&a,f=e>>>16,c=b>>>16,d=(f*h>>>0)+(g*h>>>16);return f*c+(d>>>16)+((g*c>>>0)+(d&a)>>>16)}})},function(f,g,b){var a=b(270),c=b(10),d=a.key,e=a.set;a.exp({defineMetadata:function defineMetadata(a,b,f,g){e(a,b,c(f),d(g))}})},function(h,o,c){var e=c(199),f=c(7),g=c(21)("metadata"),d=g.store||(g.store=new(c(203))),b=function(f,g,h){var b=d.get(f);if(!b){if(!h)return a;d.set(f,b=new e)}var c=b.get(g);if(!c){if(!h)return a;b.set(g,c=new e)}return c},j=function(d,e,f){var c=b(e,f,!1);return c===a?!1:c.has(d)},k=function(d,e,f){var c=b(e,f,!1);return c===a?a:c.get(d)},l=function(a,c,d,e){b(d,e,!0).set(a,c)},m=function(d,e){var a=b(d,e,!1),c=[];return a&&a.forEach(function(b,a){c.push(a)}),c},i=function(b){return b===a||"symbol"==typeof b?b:String(b)},n=function(a){f(f.S,"Reflect",a)};h.exports={store:d,map:b,has:j,get:k,set:l,keys:m,key:i,exp:n}},function(h,i,c){var b=c(270),e=c(10),f=b.key,g=b.map,d=b.store;b.exp({deleteMetadata:function deleteMetadata(j,b){var h=3>arguments.length?a:f(arguments[2]),c=g(e(b),h,!1);if(c===a||!c["delete"](j))return!1;if(c.size)return!0;var i=d.get(b);return i["delete"](h),!!i.size||d["delete"](b)}})},function(j,k,c){var b=c(270),e=c(10),f=c(55),g=b.has,h=b.get,i=b.key,d=function(b,c,e){var j=g(b,c,e);if(j)return h(b,c,e);var i=f(c);return null!==i?d(b,i,e):a};b.exp({getMetadata:function getMetadata(b,c){return d(b,e(c),3>arguments.length?a:i(arguments[2]))}})},function(l,k,b){var e=b(202),f=b(261),c=b(270),g=b(10),h=b(55),i=c.keys,j=c.key,d=function(c,g){var a=i(c,g),j=h(c);if(null===j)return a;var b=d(j,g);return b.length?a.length?f(new e(a.concat(b))):b:a};c.exp({getMetadataKeys:function getMetadataKeys(b){return d(g(b),2>arguments.length?a:j(arguments[1]))}})},function(g,h,c){var b=c(270),d=c(10),e=b.get,f=b.key;b.exp({getOwnMetadata:function getOwnMetadata(b,c){return e(b,d(c),3>arguments.length?a:f(arguments[2]))}})},function(g,h,c){var b=c(270),d=c(10),e=b.keys,f=b.key;b.exp({getOwnMetadataKeys:function getOwnMetadataKeys(b){return e(d(b),2>arguments.length?a:f(arguments[1]))}})},function(i,j,b){var c=b(270),e=b(10),f=b(55),g=c.has,h=c.key,d=function(a,b,c){var h=g(a,b,c);if(h)return!0;var e=f(b);return null!==e?d(a,e,c):!1};c.exp({hasMetadata:function hasMetadata(b,c){return d(b,e(c),3>arguments.length?a:h(arguments[2]))}})},function(g,h,c){var b=c(270),d=c(10),e=b.has,f=b.key;b.exp({hasOwnMetadata:function hasOwnMetadata(b,c){return e(b,d(c),3>arguments.length?a:f(arguments[2]))}})},function(h,i,b){var c=b(270),d=b(10),e=b(19),f=c.key,g=c.set;c.exp({metadata:function metadata(b,c){return function decorator(i,h){g(b,c,(h!==a?d:e)(i),f(h))}}})},function(d,e,b){var a=b(7),c=b(196);a(a.G+a.B,{setImmediate:c.set,clearImmediate:c.clear})},function(r,q,b){for(var j=b(180),p=b(16),o=b(2),g=b(8),h=b(134),i=b(23),f=i("iterator"),k=i("toStringTag"),l=h.Array,n=["NodeList","DOMTokenList","MediaList","StyleSheetList","CSSRuleList"],e=0;5>e;e++){var c,d=n[e],m=o[d],a=m&&m.prototype;if(a){a[f]||g(a,f,l),a[k]||g(a,k,d),h[d]=l;for(c in j)a[c]||p(a,c,j[c],!0)}}},function(i,j,a){var c=a(2),b=a(7),g=a(74),h=a(282),d=c.navigator,e=!!d&&/MSIE .\./.test(d.userAgent),f=function(a){return e?function(b,c){return a(g(h,[].slice.call(arguments,2),"function"==typeof b?b:Function(b)),c)}:a};b(b.G+b.B+b.F*e,{setTimeout:f(c.setTimeout),setInterval:f(c.setInterval)})},function(c,f,a){var d=a(283),b=a(74),e=a(19);c.exports=function(){for(var h=e(this),a=arguments.length,c=Array(a),f=0,i=d._,g=!1;a>f;)(c[f]=arguments[f++])===i&&(g=!0);return function(){var d,j=this,k=arguments.length,e=0,f=0;if(!g&&!k)return b(h,c,j);if(d=c.slice(),g)for(;a>e;e++)d[e]===i&&(d[e]=arguments[f++]);for(;k>f;)d.push(arguments[f++]);return b(h,d,j)}}},function(a,c,b){a.exports=b(2)},function(z,y,b){function Dict(b){var c=u(null);return b!=a&&(t(b)?s(b,!0,function(a,b){c[a]=b}):n(c,b)),c}function reduce(g,j,l){r(j);var a,c,b=h(g),e=i(b),k=e.length,f=0;if(3>arguments.length){if(!k)throw TypeError("Reduce of empty object with no initial value");a=b[e[f++]]}else a=Object(l);for(;k>f;)d(b,c=e[f++])&&(a=j(a,b[c],c,g));return a}function includes(c,b){return(b==b?l(c,b):j(c,function(a){return a!=a}))!==a}function get(a,b){return d(a,b)?a[b]:void 0}function set(a,b,c){return x&&b in Object?p.f(a,b,q(0,c)):a[b]=c,a}function isDict(a){return w(a)&&o(a)===Dict.prototype}var v=b(18),e=b(7),q=b(15),n=b(65),u=b(41),o=b(55),i=b(25),p=b(9),l=b(24),r=b(19),s=b(194),t=b(233),m=b(135),f=b(181),w=b(11),h=b(27),x=b(5),d=b(4),c=function(b){var e=1==b,c=4==b;return function(l,m,n){var f,i,g,o=v(m,n,3),k=h(l),j=e||7==b||2==b?new("function"==typeof this?this:Dict):a;for(f in k)if(d(k,f)&&(i=k[f],g=o(i,f,l),b))if(e)j[f]=g;else if(g)switch(b){case 2:j[f]=i;break;case 3:return!0;case 5:return i;case 6:return f;case 7:j[g[0]]=g[1]}else if(c)return!1;return 3==b||c?c:j}},j=c(6),g=function(a){return function(b){return new k(b,a)}},k=function(a,b){this._t=h(a),this._a=i(a),this._i=0,this._k=b};m(k,"Dict",function(){var c,b=this,e=b._t,g=b._a,h=b._k;do if(b._i>=g.length)return b._t=a,f(1);while(!d(e,c=g[b._i++]));return"keys"==h?f(0,c):"values"==h?f(0,e[c]):f(0,[c,e[c]])}),Dict.prototype=null,e(e.G+e.F,{Dict:Dict}),e(e.S,"Dict",{keys:g("keys"),values:g("values"),entries:g("entries"),forEach:c(0),map:c(1),filter:c(2),some:c(3),every:c(4),find:c(5),findKey:j,mapPairs:c(7),reduce:reduce,keyOf:l,includes:includes,has:d,get:get,set:set,isDict:isDict})},function(b,e,a){var c=a(10),d=a(154);b.exports=a(3).getIterator=function(a){var b=d(a);if("function"!=typeof b)throw TypeError(a+" is not iterable!");return c(b.call(a))}},function(f,g,a){var c=a(2),d=a(3),b=a(7),e=a(282);b(b.G+b.F,{delay:function delay(a){return new(d.Promise||c.Promise)(function(b){setTimeout(e.call(b,!0),a)})}})},function(d,e,a){var c=a(283),b=a(7);a(3)._=c._=c._||{},b(b.P+b.F,"Function",{part:a(282)})},function(c,d,b){var a=b(7);a(a.S+a.F,"Object",{isObject:b(11)})},function(c,d,b){var a=b(7);a(a.S+a.F,"Object",{classof:b(71)})},function(d,e,b){var a=b(7),c=b(291);a(a.S+a.F,"Object",{define:c})},function(b,g,a){var c=a(9),d=a(46),e=a(217),f=a(27);b.exports=function define(a,b){for(var g,h=e(f(b)),j=h.length,i=0;j>i;)c.f(a,g=h[i++],d.f(b,g));return a}},function(e,f,a){var b=a(7),c=a(291),d=a(41);b(b.S+b.F,"Object",{make:function(a,b){return c(d(a),b)}})},function(c,d,b){b(133)(Number,"Number",function(a){this._l=+a,this._i=0},function(){var b=this._i++,c=!(this._l>b);return{done:c,value:c?a:b}})},function(d,e,a){var b=a(7),c=a(295)(/[\\^$*+?.()|[\]{}]/g,"\\$&");b(b.S,"RegExp",{escape:function escape(a){return c(a)}})},function(a,b){a.exports=function(b,a){var c=a===Object(a)?function(b){return a[b]}:a;return function(a){return String(a).replace(b,c)}}},function(d,e,b){var a=b(7),c=b(295)(/[&<>"']/g,{"&":"&","<":"<",">":">",'"':""","'":"'"});a(a.P+a.F,"String",{escapeHTML:function escapeHTML(){return c(this)}})},function(d,e,b){var a=b(7),c=b(295)(/&(?:amp|lt|gt|quot|apos);/g,{"&":"&","<":"<",">":">",""":'"',"'":"'"});a(a.P+a.F,"String",{unescapeHTML:function unescapeHTML(){return c(this)}})}]),"undefined"!=typeof module&&module.exports?module.exports=b:"function"==typeof define&&define.amd?define(function(){return b}):c.core=b}(1,1);
+//# sourceMappingURL=core.min.js.map
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/client/core.min.js.map b/node_modules/babel-register/node_modules/core-js/client/core.min.js.map
new file mode 100644
index 0000000..226e69d
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/client/core.min.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["core.js"],"names":["__e","__g","undefined","modules","__webpack_require__","moduleId","installedModules","exports","module","id","loaded","call","m","c","p","global","core","has","DESCRIPTORS","$export","redefine","META","KEY","$fails","shared","setToStringTag","uid","wks","keyOf","enumKeys","isArray","anObject","toIObject","toPrimitive","createDesc","_create","gOPNExt","$GOPD","$DP","gOPD","f","dP","gOPN","$Symbol","Symbol","$JSON","JSON","_stringify","stringify","setter","PROTOTYPE","HIDDEN","TO_PRIMITIVE","isEnum","propertyIsEnumerable","SymbolRegistry","AllSymbols","ObjectProto","Object","USE_NATIVE","QObject","setSymbolDesc","get","this","value","a","it","key","D","protoDesc","wrap","tag","sym","_k","configurable","set","isSymbol","iterator","$defineProperty","defineProperty","enumerable","$defineProperties","defineProperties","P","keys","i","l","length","$create","create","$propertyIsEnumerable","E","$getOwnPropertyDescriptor","getOwnPropertyDescriptor","$getOwnPropertyNames","getOwnPropertyNames","names","result","push","$getOwnPropertySymbols","getOwnPropertySymbols","$stringify","replacer","$replacer","args","arguments","apply","BUGGY_JSON","S","TypeError","toString","G","W","F","symbols","split","Wrapper","findChild","for","keyFor","useSetter","useSimple","valueOf","Math","window","self","Function","version","hasOwnProperty","exec","e","hide","ctx","type","name","source","own","out","exp","IS_FORCED","IS_GLOBAL","IS_STATIC","IS_PROTO","IS_BIND","B","target","expProto","U","R","object","IE8_DOM_DEFINE","O","Attributes","isObject","document","is","createElement","fn","val","bitmap","writable","SRC","TO_STRING","$toString","TPL","inspectSource","safe","isFunction","join","String","prototype","px","random","concat","aFunction","that","b","setDesc","isExtensible","FREEZE","preventExtensions","setMeta","w","fastKey","getWeak","onFreeze","meta","NEED","SHARED","store","def","TAG","stat","USE_SYMBOL","getKeys","el","index","$keys","enumBugKeys","arrayIndexOf","IE_PROTO","IObject","defined","cof","slice","toLength","toIndex","IS_INCLUDES","$this","fromIndex","toInteger","min","ceil","floor","isNaN","max","gOPS","pIE","getSymbols","Array","arg","dPs","Empty","createDict","iframeDocument","iframe","gt","style","display","appendChild","src","contentWindow","open","write","close","Properties","documentElement","windowNames","getWindowNames","hiddenKeys","fails","toObject","$getPrototypeOf","getPrototypeOf","constructor","$freeze","freeze","$seal","seal","$preventExtensions","$isFrozen","isFrozen","$isSealed","isSealed","$isExtensible","assign","$assign","A","K","forEach","k","T","aLen","j","x","y","setPrototypeOf","check","proto","test","buggy","__proto__","classof","ARG","tryGet","callee","bind","invoke","arraySlice","factories","construct","len","n","partArgs","bound","un","FProto","nameRE","NAME","match","HAS_INSTANCE","FunctionProto","inheritIfRequired","$trim","trim","NUMBER","$Number","Base","BROKEN_COF","TRIM","toNumber","argument","third","radix","maxCode","first","charCodeAt","NaN","code","digits","parseInt","Number","C","spaces","space","non","ltrim","RegExp","rtrim","exporter","ALIAS","FORCE","string","TYPE","replace","aNumberValue","repeat","$toFixed","toFixed","data","ERROR","ZERO","multiply","c2","divide","numToString","s","t","pow","acc","log","x2","fractionDigits","z","RangeError","Constructor","forbiddenField","msg","count","str","res","Infinity","$toPrecision","toPrecision","precision","EPSILON","_isFinite","isFinite","isInteger","number","abs","isSafeInteger","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","$parseFloat","parseFloat","charAt","$parseInt","ws","hex","log1p","sqrt","$acosh","acosh","MAX_VALUE","LN2","asinh","atanh","sign","cbrt","clz32","LOG2E","cosh","expm1","EPSILON32","MAX32","MIN32","roundTiesToEven","fround","$abs","$sign","hypot","value1","value2","div","sum","larg","$imul","imul","UINT16","xn","yn","xl","yl","log10","LN10","log2","sinh","tanh","trunc","fromCharCode","$fromCodePoint","fromCodePoint","raw","callSite","tpl","$at","codePointAt","pos","context","ENDS_WITH","$endsWith","endsWith","searchString","endPosition","end","search","isRegExp","MATCH","re","INCLUDES","includes","indexOf","STARTS_WITH","$startsWith","startsWith","iterated","_t","_i","point","done","LIBRARY","Iterators","$iterCreate","ITERATOR","BUGGY","FF_ITERATOR","KEYS","VALUES","returnThis","next","DEFAULT","IS_SET","FORCED","methods","IteratorPrototype","getMethod","kind","values","entries","DEF_VALUES","VALUES_BUG","$native","$default","$entries","$anyNative","descriptor","createHTML","anchor","quot","attribute","p1","toLowerCase","big","blink","bold","fixed","fontcolor","color","fontsize","size","italics","link","url","small","strike","sub","sup","isArrayIter","getIterFn","iter","from","arrayLike","step","mapfn","mapping","iterFn","ret","ArrayProto","getIteratorMethod","SAFE_CLOSING","riter","skipClosing","arr","of","arrayJoin","separator","method","html","begin","klass","start","upTo","cloned","$sort","sort","comparefn","$forEach","STRICT","callbackfn","asc","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","NO_HOLES","SPECIES","original","$map","map","$filter","filter","$some","some","$every","every","$reduce","reduce","memo","isRight","reduceRight","$indexOf","searchElement","lastIndexOf","copyWithin","to","inc","UNSCOPABLES","fill","endPos","$find","forced","find","findIndex","addToUnscopables","Arguments","$flags","$RegExp","re1","re2","CORRECT_NEW","tiRE","piRE","fiU","proxy","ignoreCase","multiline","unicode","sticky","define","flags","$match","regexp","SYMBOL","fns","strfn","rxfn","REPLACE","$replace","searchValue","replaceValue","SEARCH","$search","SPLIT","$split","_split","$push","$SPLIT","LENGTH","LAST_INDEX","NPCG","limit","separator2","lastIndex","lastLength","output","lastLastIndex","splitLimit","separatorCopy","Internal","GenericPromiseCapability","anInstance","forOf","speciesConstructor","task","microtask","PROMISE","process","$Promise","isNode","empty","promise","resolve","FakePromise","PromiseRejectionEvent","then","sameConstructor","isThenable","newPromiseCapability","PromiseCapability","reject","$$resolve","$$reject","perform","error","notify","isReject","_n","chain","_c","_v","ok","_s","run","reaction","handler","fail","domain","_h","onHandleUnhandled","enter","exit","onUnhandled","abrupt","console","isUnhandled","emit","onunhandledrejection","reason","_a","onrejectionhandled","$reject","_d","_w","$resolve","wrapper","Promise","executor","err","onFulfilled","onRejected","catch","r","capability","all","iterable","remaining","$index","alreadyCalled","race","defer","channel","port","cel","setTask","setImmediate","clearTask","clearImmediate","MessageChannel","counter","queue","ONREADYSTATECHANGE","listener","event","nextTick","port2","port1","onmessage","postMessage","addEventListener","importScripts","removeChild","setTimeout","clear","head","last","macrotask","Observer","MutationObserver","WebKitMutationObserver","flush","parent","toggle","node","createTextNode","observe","characterData","strong","Map","entry","getEntry","v","redefineAll","$iterDefine","setSpecies","SIZE","_f","getConstructor","ADDER","_l","delete","prev","setStrong","$iterDetect","common","IS_WEAK","fixMethod","add","instance","HASNT_CHAINING","THROWS_ON_PRIMITIVES","ACCEPT_ITERABLES","BUGGY_ZERO","$instance","Set","InternalMap","each","weak","uncaughtFrozenStore","ufstore","tmp","WeakMap","$WeakMap","createArrayMethod","$has","arrayFind","arrayFindIndex","UncaughtFrozenStore","findUncaughtFrozen","splice","WeakSet","_apply","thisArgument","argumentsList","Reflect","Target","newTarget","$args","propertyKey","attributes","deleteProperty","desc","Enumerate","enumerate","receiver","getProto","ownKeys","V","existingDescriptor","ownDesc","setProto","now","Date","getTime","toJSON","toISOString","pv","lz","num","d","getUTCFullYear","getUTCMilliseconds","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","DateProto","INVALID_DATE","hint","$typed","buffer","ArrayBuffer","$ArrayBuffer","$DataView","DataView","$isView","ABV","isView","$slice","VIEW","ARRAY_BUFFER","CONSTR","byteLength","final","viewS","viewT","setUint8","getUint8","Typed","TYPED","TypedArrayConstructors","arrayFill","DATA_VIEW","WRONG_LENGTH","WRONG_INDEX","BaseBuffer","BUFFER","BYTE_LENGTH","BYTE_OFFSET","$BUFFER","$LENGTH","$OFFSET","packIEEE754","mLen","nBytes","eLen","eMax","eBias","rt","unpackIEEE754","nBits","unpackI32","bytes","packI8","packI16","packI32","packF64","packF32","addGetter","internal","view","isLittleEndian","numIndex","intIndex","_b","pack","reverse","conversion","validateArrayBufferArguments","numberLength","ArrayBufferProto","$setInt8","setInt8","getInt8","byteOffset","bufferLength","offset","getInt16","getUint16","getInt32","getUint32","getFloat32","getFloat64","setInt16","setUint16","setInt32","setUint32","setFloat32","setFloat64","init","Int8Array","$buffer","propertyDesc","same","createArrayIncludes","ArrayIterators","arrayCopyWithin","Uint8Array","SHARED_BUFFER","BYTES_PER_ELEMENT","arrayForEach","arrayFilter","arraySome","arrayEvery","arrayIncludes","arrayValues","arrayKeys","arrayEntries","arrayLastIndexOf","arrayReduce","arrayReduceRight","arraySort","arrayToString","arrayToLocaleString","toLocaleString","TYPED_CONSTRUCTOR","DEF_CONSTRUCTOR","ALL_CONSTRUCTORS","TYPED_ARRAY","allocate","LITTLE_ENDIAN","Uint16Array","FORCED_SET","strictToLength","SAME","toOffset","BYTES","validate","speciesFromList","list","fromList","$from","$of","TO_LOCALE_BUG","$toLocaleString","predicate","middle","subarray","$begin","$set","$iterators","isTAIndex","$getDesc","$setDesc","$TypedArrayPrototype$","CLAMPED","ISNT_UINT8","GETTER","SETTER","TypedArray","TAC","TypedArrayPrototype","getter","o","round","addElement","$offset","$length","$len","$nativeIterator","CORRECT_ITER_NAME","$iterator","isIterable","Uint8ClampedArray","Int16Array","Int32Array","Uint32Array","Float32Array","Float64Array","$includes","at","$pad","padStart","maxLength","fillString","left","stringLength","fillStr","intMaxLength","fillLen","stringFiller","padEnd","trimLeft","trimRight","getFlags","RegExpProto","$RegExpStringIterator","_r","matchAll","rx","getOwnPropertyDescriptors","getDesc","$values","isEntries","__defineGetter__","__defineSetter__","__lookupGetter__","__lookupSetter__","isError","iaddh","x0","x1","y0","y1","$x0","$x1","$y0","isubh","imulh","u","$u","$v","u0","v0","u1","v1","umulh","metadata","toMetaKey","ordinaryDefineOwnMetadata","defineMetadata","metadataKey","metadataValue","targetKey","getOrCreateMetadataMap","targetMetadata","keyMetadata","ordinaryHasOwnMetadata","MetadataKey","metadataMap","ordinaryGetOwnMetadata","MetadataValue","ordinaryOwnMetadataKeys","_","deleteMetadata","ordinaryGetMetadata","hasOwn","getMetadata","ordinaryMetadataKeys","oKeys","pKeys","getMetadataKeys","getOwnMetadata","getOwnMetadataKeys","ordinaryHasMetadata","hasMetadata","hasOwnMetadata","decorator","$task","TO_STRING_TAG","ArrayValues","collections","Collection","partial","navigator","MSIE","userAgent","time","setInterval","path","pargs","holder","Dict","dict","findKey","isDict","createDictMethod","createDictIter","DictIterator","mapPairs","getIterator","delay","part","mixin","make","$re","escape","regExp","&","<",">","\"","'","escapeHTML","&","<",">",""","'","unescapeHTML","amd"],"mappings":";;;;;;CAMC,SAASA,EAAKC,EAAKC,GACpB,cACS,SAAUC,GAKT,QAASC,qBAAoBC,GAG5B,GAAGC,EAAiBD,GACnB,MAAOC,GAAiBD,GAAUE,OAGnC,IAAIC,GAASF,EAAiBD,IAC7BE,WACAE,GAAIJ,EACJK,QAAQ,EAUT,OANAP,GAAQE,GAAUM,KAAKH,EAAOD,QAASC,EAAQA,EAAOD,QAASH,qBAG/DI,EAAOE,QAAS,EAGTF,EAAOD,QAvBf,GAAID,KAqCJ,OATAF,qBAAoBQ,EAAIT,EAGxBC,oBAAoBS,EAAIP,EAGxBF,oBAAoBU,EAAI,GAGjBV,oBAAoB,KAK/B,SAASI,EAAQD,EAASH,GAE/BA,EAAoB,GACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBI,EAAOD,QAAUH,EAAoB,MAKhC,SAASI,GAAQD,GAASH,GAI/B,GAAIW,GAAiBX,EAAoB,GACrCY,EAAiBZ,EAAoB,GACrCa,EAAiBb,EAAoB,GACrCc,EAAiBd,EAAoB,GACrCe,EAAiBf,EAAoB,GACrCgB,EAAiBhB,EAAoB,IACrCiB,GAAiBjB,EAAoB,IAAIkB,IACzCC,EAAiBnB,EAAoB,GACrCoB,EAAiBpB,EAAoB,IACrCqB,EAAiBrB,EAAoB,IACrCsB,GAAiBtB,EAAoB,IACrCuB,EAAiBvB,EAAoB,IACrCwB,GAAiBxB,EAAoB,IACrCyB,EAAiBzB,EAAoB,IACrC0B,EAAiB1B,EAAoB,IACrC2B,EAAiB3B,EAAoB,IACrC4B,EAAiB5B,EAAoB,IACrC6B,EAAiB7B,EAAoB,IACrC8B,EAAiB9B,EAAoB,IACrC+B,EAAiB/B,EAAoB,IACrCgC,EAAiBhC,EAAoB,IACrCiC,EAAiBjC,EAAoB,IACrCkC,EAAiBlC,EAAoB,GACrCmC,EAAiBF,EAAMG,EACvBC,EAAiBH,EAAIE,EACrBE,EAAiBN,EAAQI,EACzBG,EAAiB5B,EAAO6B,OACxBC,EAAiB9B,EAAO+B,KACxBC,EAAiBF,GAASA,EAAMG,UAChCC,GAAiB,EACjBC,EAAiB,YACjBC,EAAiBxB,EAAI,WACrByB,EAAiBzB,EAAI,eACrB0B,MAAoBC,qBACpBC,EAAiB/B,EAAO,mBACxBgC,EAAiBhC,EAAO,WACxBiC,EAAiBC,OAAOR,GACxBS,EAAmC,kBAAXhB,GACxBiB,EAAiB7C,EAAO6C,QAGxBC,EAAgB3C,GAAeK,EAAO,WACxC,MAES,IAFFY,EAAQM,KAAO,KACpBqB,IAAK,WAAY,MAAOrB,GAAGsB,KAAM,KAAMC,MAAO,IAAIC,MAChDA,IACD,SAASC,EAAIC,EAAKC,GACrB,GAAIC,GAAY9B,EAAKkB,EAAaU,EAC/BE,UAAiBZ,GAAYU,GAChC1B,EAAGyB,EAAIC,EAAKC,GACTC,GAAaH,IAAOT,GAAYhB,EAAGgB,EAAaU,EAAKE,IACtD5B,EAEA6B,EAAO,SAASC,GAClB,GAAIC,GAAMhB,EAAWe,GAAOpC,EAAQQ,EAAQO,GAS5C,OARAsB,GAAIC,GAAKF,EACTrD,GAAe+B,GAAUY,EAAcJ,EAAac,GAClDG,cAAc,EACdC,IAAK,SAASX,GACT/C,EAAI8C,KAAMZ,IAAWlC,EAAI8C,KAAKZ,GAASoB,KAAKR,KAAKZ,GAAQoB,IAAO,GACnEV,EAAcE,KAAMQ,EAAKrC,EAAW,EAAG8B,OAGpCQ,GAGLI,EAAWjB,GAAyC,gBAApBhB,GAAQkC,SAAuB,SAASX,GAC1E,MAAoB,gBAANA,IACZ,SAASA,GACX,MAAOA,aAAcvB,IAGnBmC,EAAkB,QAASC,gBAAeb,EAAIC,EAAKC,GAIrD,MAHArC,GAASmC,GACTC,EAAMlC,EAAYkC,GAAK,GACvBpC,EAASqC,GACNnD,EAAIuC,EAAYW,IACbC,EAAEY,YAID/D,EAAIiD,EAAIf,IAAWe,EAAGf,GAAQgB,KAAKD,EAAGf,GAAQgB,IAAO,GACxDC,EAAIjC,EAAQiC,GAAIY,WAAY9C,EAAW,GAAG,OAJtCjB,EAAIiD,EAAIf,IAAQV,EAAGyB,EAAIf,EAAQjB,EAAW,OAC9CgC,EAAGf,GAAQgB,IAAO,GAIXN,EAAcK,EAAIC,EAAKC,IACzB3B,EAAGyB,EAAIC,EAAKC,IAEnBa,EAAoB,QAASC,kBAAiBhB,EAAIiB,GACpDpD,EAASmC,EAKT,KAJA,GAGIC,GAHAiB,EAAOvD,EAASsD,EAAInD,EAAUmD,IAC9BE,EAAO,EACPC,EAAIF,EAAKG,OAEPD,EAAID,GAAEP,EAAgBZ,EAAIC,EAAMiB,EAAKC,KAAMF,EAAEhB,GACnD,OAAOD,IAELsB,EAAU,QAASC,QAAOvB,EAAIiB,GAChC,MAAOA,KAAMjF,EAAYiC,EAAQ+B,GAAMe,EAAkB9C,EAAQ+B,GAAKiB,IAEpEO,EAAwB,QAASpC,sBAAqBa,GACxD,GAAIwB,GAAItC,GAAO1C,KAAKoD,KAAMI,EAAMlC,EAAYkC,GAAK,GACjD,OAAOwB,KAAM1E,EAAI8C,KAAMI,KAASlD,EAAIuC,EAAYW,IAAQlD,EAAI8C,KAAMZ,IAAWY,KAAKZ,GAAQgB,GAAOwB,GAAI,GAEnGC,EAA4B,QAASC,0BAAyB3B,EAAIC,GACpE,GAAIC,GAAI7B,EAAK2B,EAAKlC,EAAUkC,GAAKC,EAAMlC,EAAYkC,GAAK,GAExD,QADGC,IAAKnD,EAAIuC,EAAYW,IAAUlD,EAAIiD,EAAIf,IAAWe,EAAGf,GAAQgB,KAAMC,EAAEY,YAAa,GAC9EZ,GAEL0B,EAAuB,QAASC,qBAAoB7B,GAKtD,IAJA,GAGIC,GAHA6B,EAAStD,EAAKV,EAAUkC,IACxB+B,KACAZ,EAAS,EAEPW,EAAMT,OAASF,GAAMpE,EAAIuC,EAAYW,EAAM6B,EAAMX,OAASlB,GAAOhB,GAAUgB,GAAO9C,IAAK4E,EAAOC,KAAK/B,EACzG,OAAO8B,IAELE,EAAyB,QAASC,uBAAsBlC,GAK1D,IAJA,GAGIC,GAHA6B,EAAStD,EAAKV,EAAUkC,IACxB+B,KACAZ,EAAS,EAEPW,EAAMT,OAASF,GAAKpE,EAAIuC,EAAYW,EAAM6B,EAAMX,OAAMY,EAAOC,KAAK1C,EAAWW,GACnF,OAAO8B,IAELI,EAAa,QAASrD,WAAUkB,GAClC,GAAGA,IAAOhE,IAAa0E,EAASV,GAAhC,CAIA,IAHA,GAEIoC,GAAUC,EAFVC,GAAQtC,GACRmB,EAAO,EAELoB,UAAUlB,OAASF,GAAEmB,EAAKN,KAAKO,UAAUpB,KAQ/C,OAPAiB,GAAWE,EAAK,GACM,kBAAZF,KAAuBC,EAAYD,IAC1CC,GAAczE,EAAQwE,KAAUA,EAAW,SAASnC,EAAKH,GAE1D,MADGuC,KAAUvC,EAAQuC,EAAU5F,KAAKoD,KAAMI,EAAKH,IAC3CY,EAASZ,GAAb,OAA2BA,IAE7BwC,EAAK,GAAKF,EACHvD,EAAW2D,MAAM7D,EAAO2D,KAE7BG,EAAapF,EAAO,WACtB,GAAIqF,GAAIjE,GAIR,OAA0B,UAAnBI,GAAY6D,KAAyC,MAAtB7D,GAAYkB,EAAG2C,KAAwC,MAAzB7D,EAAWW,OAAOkD,KAIpFjD,KACFhB,EAAU,QAASC,UACjB,GAAGmB,eAAgBpB,GAAQ,KAAMkE,WAAU,+BAC3C,OAAOvC,GAAK5C,GAAI+E,UAAUlB,OAAS,EAAIkB,UAAU,GAAKvG,KAExDkB,EAASuB,EAAQO,GAAY,WAAY,QAAS4D,YAChD,MAAO/C,MAAKU,KAGdpC,EAAMG,EAAIoD,EACVtD,EAAIE,EAAMsC,EACV1E,EAAoB,IAAIoC,EAAIJ,EAAQI,EAAIsD,EACxC1F,EAAoB,IAAIoC,EAAKkD,EAC7BtF,EAAoB,IAAIoC,EAAI2D,EAEzBjF,IAAgBd,EAAoB,KACrCgB,EAASqC,EAAa,uBAAwBiC,GAAuB,IAIzEvE,EAAQA,EAAQ4F,EAAI5F,EAAQ6F,EAAI7F,EAAQ8F,GAAKtD,GAAaf,OAAQD,GAalE,KAAI,GAAIuE,GAAU,iHAEhBC,MAAM,KAAM9B,EAAI,EAAG6B,EAAQ3B,OAASF,GAAI,CACxC,GAAIlB,GAAU+C,EAAQ7B,KAClB+B,EAAUpG,EAAK4B,OACf4B,EAAU7C,EAAIwC,EACbA,KAAOiD,IAAS3E,EAAG2E,EAASjD,GAAMH,MAAOL,EAAaa,EAAMF,EAAKE,KAIpEZ,GAAYA,EAAQV,IAAeU,EAAQV,GAAWmE,YAAUpE,GAAS,GAE7E9B,EAAQA,EAAQyF,EAAIzF,EAAQ8F,GAAKtD,EAAY,UAE3C2D,MAAO,SAASnD,GACd,MAAOlD,GAAIsC,EAAgBY,GAAO,IAC9BZ,EAAeY,GACfZ,EAAeY,GAAOxB,EAAQwB,IAGpCoD,OAAQ,QAASA,QAAOpD,GACtB,GAAGS,EAAST,GAAK,MAAOvC,IAAM2B,EAAgBY,EAC9C,MAAM0C,WAAU1C,EAAM,sBAExBqD,UAAW,WAAYvE,GAAS,GAChCwE,UAAW,WAAYxE,GAAS,KAGlC9B,EAAQA,EAAQyF,EAAIzF,EAAQ8F,GAAKtD,EAAY,UAE3C8B,OAAQD,EAERT,eAAgBD,EAEhBI,iBAAkBD,EAElBY,yBAA0BD,EAE1BG,oBAAqBD,EAErBM,sBAAuBD,IAIzBtD,GAAS1B,EAAQA,EAAQyF,EAAIzF,EAAQ8F,IAAMtD,GAAcgD,GAAa,QAAS3D,UAAWqD,IAG1F1D,EAAQO,GAAWE,IAAiBhD,EAAoB,GAAGuC,EAAQO,GAAYE,EAAcT,EAAQO,GAAWwE,SAEhHjG,EAAekB,EAAS,UAExBlB,EAAekG,KAAM,QAAQ,GAE7BlG,EAAeV,EAAO+B,KAAM,QAAQ,IAI/B,SAAStC,EAAQD,GAGtB,GAAIQ,GAASP,EAAOD,QAA2B,mBAAVqH,SAAyBA,OAAOD,MAAQA,KACzEC,OAAwB,mBAARC,OAAuBA,KAAKF,MAAQA,KAAOE,KAAOC,SAAS,gBAC9D,iBAAP7H,KAAgBA,EAAMc,IAI3B,SAASP,EAAQD,GAEtB,GAAIS,GAAOR,EAAOD,SAAWwH,QAAS,QACrB,iBAAP/H,KAAgBA,EAAMgB,IAI3B,SAASR,EAAQD,GAEtB,GAAIyH,MAAoBA,cACxBxH,GAAOD,QAAU,SAAS2D,EAAIC,GAC5B,MAAO6D,GAAerH,KAAKuD,EAAIC,KAK5B,SAAS3D,EAAQD,EAASH,GAG/BI,EAAOD,SAAWH,EAAoB,GAAG,WACvC,MAA2E,IAApEsD,OAAOqB,kBAAmB,KAAMjB,IAAK,WAAY,MAAO,MAAOG,KAKnE,SAASzD,EAAQD,GAEtBC,EAAOD,QAAU,SAAS0H,GACxB,IACE,QAASA,IACT,MAAMC,GACN,OAAO,KAMN,SAAS1H,EAAQD,EAASH,GAE/B,GAAIW,GAAYX,EAAoB,GAChCY,EAAYZ,EAAoB,GAChC+H,EAAY/H,EAAoB,GAChCgB,EAAYhB,EAAoB,IAChCgI,EAAYhI,EAAoB,IAChC8C,EAAY,YAEZ/B,EAAU,SAASkH,EAAMC,EAAMC,GACjC,GAQIpE,GAAKqE,EAAKC,EAAKC,EARfC,EAAYN,EAAOlH,EAAQ8F,EAC3B2B,EAAYP,EAAOlH,EAAQ4F,EAC3B8B,EAAYR,EAAOlH,EAAQyF,EAC3BkC,EAAYT,EAAOlH,EAAQgE,EAC3B4D,EAAYV,EAAOlH,EAAQ6H,EAC3BC,EAAYL,EAAY7H,EAAS8H,EAAY9H,EAAOuH,KAAUvH,EAAOuH,QAAevH,EAAOuH,QAAapF,GACxG3C,EAAYqI,EAAY5H,EAAOA,EAAKsH,KAAUtH,EAAKsH,OACnDY,EAAY3I,EAAQ2C,KAAe3C,EAAQ2C,MAE5C0F,KAAUL,EAASD,EACtB,KAAInE,IAAOoE,GAETC,GAAOG,GAAaM,GAAUA,EAAO9E,KAASjE,EAE9CuI,GAAOD,EAAMS,EAASV,GAAQpE,GAE9BuE,EAAMK,GAAWP,EAAMJ,EAAIK,EAAK1H,GAAU+H,GAA0B,kBAAPL,GAAoBL,EAAIN,SAASnH,KAAM8H,GAAOA,EAExGQ,GAAO7H,EAAS6H,EAAQ9E,EAAKsE,EAAKJ,EAAOlH,EAAQgI,GAEjD5I,EAAQ4D,IAAQsE,GAAIN,EAAK5H,EAAS4D,EAAKuE,GACvCI,GAAYI,EAAS/E,IAAQsE,IAAIS,EAAS/E,GAAOsE,GAGxD1H,GAAOC,KAAOA,EAEdG,EAAQ8F,EAAI,EACZ9F,EAAQ4F,EAAI,EACZ5F,EAAQyF,EAAI,EACZzF,EAAQgE,EAAI,EACZhE,EAAQ6H,EAAI,GACZ7H,EAAQ6F,EAAI,GACZ7F,EAAQgI,EAAI,GACZhI,EAAQiI,EAAI,IACZ5I,EAAOD,QAAUY,GAIZ,SAASX,EAAQD,EAASH,GAE/B,GAAIqC,GAAarC,EAAoB,GACjC8B,EAAa9B,EAAoB,GACrCI,GAAOD,QAAUH,EAAoB,GAAK,SAASiJ,EAAQlF,EAAKH,GAC9D,MAAOvB,GAAGD,EAAE6G,EAAQlF,EAAKjC,EAAW,EAAG8B,KACrC,SAASqF,EAAQlF,EAAKH,GAExB,MADAqF,GAAOlF,GAAOH,EACPqF,IAKJ,SAAS7I,EAAQD,EAASH,GAE/B,GAAI2B,GAAiB3B,EAAoB,IACrCkJ,EAAiBlJ,EAAoB,IACrC6B,EAAiB7B,EAAoB,IACrCqC,EAAiBiB,OAAOqB,cAE5BxE,GAAQiC,EAAIpC,EAAoB,GAAKsD,OAAOqB,eAAiB,QAASA,gBAAewE,EAAGpE,EAAGqE,GAIzF,GAHAzH,EAASwH,GACTpE,EAAIlD,EAAYkD,GAAG,GACnBpD,EAASyH,GACNF,EAAe,IAChB,MAAO7G,GAAG8G,EAAGpE,EAAGqE,GAChB,MAAMtB,IACR,GAAG,OAASsB,IAAc,OAASA,GAAW,KAAM3C,WAAU,2BAE9D,OADG,SAAW2C,KAAWD,EAAEpE,GAAKqE,EAAWxF,OACpCuF,IAKJ,SAAS/I,EAAQD,EAASH,GAE/B,GAAIqJ,GAAWrJ,EAAoB,GACnCI,GAAOD,QAAU,SAAS2D,GACxB,IAAIuF,EAASvF,GAAI,KAAM2C,WAAU3C,EAAK,qBACtC,OAAOA,KAKJ,SAAS1D,EAAQD,GAEtBC,EAAOD,QAAU,SAAS2D,GACxB,MAAqB,gBAAPA,GAAyB,OAAPA,EAA4B,kBAAPA,KAKlD,SAAS1D,EAAQD,EAASH,GAE/BI,EAAOD,SAAWH,EAAoB,KAAOA,EAAoB,GAAG,WAClE,MAAuG,IAAhGsD,OAAOqB,eAAe3E,EAAoB,IAAI,OAAQ,KAAM0D,IAAK,WAAY,MAAO,MAAOG,KAK/F,SAASzD,EAAQD,EAASH,GAE/B,GAAIqJ,GAAWrJ,EAAoB,IAC/BsJ,EAAWtJ,EAAoB,GAAGsJ,SAElCC,EAAKF,EAASC,IAAaD,EAASC,EAASE,cACjDpJ,GAAOD,QAAU,SAAS2D,GACxB,MAAOyF,GAAKD,EAASE,cAAc1F,QAKhC,SAAS1D,EAAQD,EAASH,GAG/B,GAAIqJ,GAAWrJ,EAAoB,GAGnCI,GAAOD,QAAU,SAAS2D,EAAI0C,GAC5B,IAAI6C,EAASvF,GAAI,MAAOA,EACxB,IAAI2F,GAAIC,CACR,IAAGlD,GAAkC,mBAArBiD,EAAK3F,EAAG4C,YAA4B2C,EAASK,EAAMD,EAAGlJ,KAAKuD,IAAK,MAAO4F,EACvF,IAA+B,mBAApBD,EAAK3F,EAAGwD,WAA2B+B,EAASK,EAAMD,EAAGlJ,KAAKuD,IAAK,MAAO4F,EACjF,KAAIlD,GAAkC,mBAArBiD,EAAK3F,EAAG4C,YAA4B2C,EAASK,EAAMD,EAAGlJ,KAAKuD,IAAK,MAAO4F,EACxF,MAAMjD,WAAU,6CAKb,SAASrG,EAAQD,GAEtBC,EAAOD,QAAU,SAASwJ,EAAQ/F,GAChC,OACEgB,aAAyB,EAAT+E,GAChBrF,eAAyB,EAATqF,GAChBC,WAAyB,EAATD,GAChB/F,MAAcA,KAMb,SAASxD,EAAQD,EAASH,GAE/B,GAAIW,GAAYX,EAAoB,GAChC+H,EAAY/H,EAAoB,GAChCa,EAAYb,EAAoB,GAChC6J,EAAY7J,EAAoB,IAAI,OACpC8J,EAAY,WACZC,EAAYrC,SAASoC,GACrBE,GAAa,GAAKD,GAAWhD,MAAM+C,EAEvC9J,GAAoB,GAAGiK,cAAgB,SAASnG,GAC9C,MAAOiG,GAAUxJ,KAAKuD,KAGvB1D,EAAOD,QAAU,SAASgJ,EAAGpF,EAAK2F,EAAKQ,GACtC,GAAIC,GAA2B,kBAAPT,EACrBS,KAAWtJ,EAAI6I,EAAK,SAAW3B,EAAK2B,EAAK,OAAQ3F,IACjDoF,EAAEpF,KAAS2F,IACXS,IAAWtJ,EAAI6I,EAAKG,IAAQ9B,EAAK2B,EAAKG,EAAKV,EAAEpF,GAAO,GAAKoF,EAAEpF,GAAOiG,EAAII,KAAKC,OAAOtG,MAClFoF,IAAMxI,EACPwI,EAAEpF,GAAO2F,EAELQ,EAICf,EAAEpF,GAAKoF,EAAEpF,GAAO2F,EACd3B,EAAKoB,EAAGpF,EAAK2F,UAJXP,GAAEpF,GACTgE,EAAKoB,EAAGpF,EAAK2F,OAOhBhC,SAAS4C,UAAWR,EAAW,QAASpD,YACzC,MAAsB,kBAAR/C,OAAsBA,KAAKkG,IAAQE,EAAUxJ,KAAKoD,SAK7D,SAASvD,EAAQD,GAEtB,GAAIE,GAAK,EACLkK,EAAKhD,KAAKiD,QACdpK,GAAOD,QAAU,SAAS4D,GACxB,MAAO,UAAU0G,OAAO1G,IAAQjE,EAAY,GAAKiE,EAAK,QAAS1D,EAAKkK,GAAI7D,SAAS,OAK9E,SAAStG,EAAQD,EAASH,GAG/B,GAAI0K,GAAY1K,EAAoB,GACpCI,GAAOD,QAAU,SAASsJ,EAAIkB,EAAMxF,GAElC,GADAuF,EAAUjB,GACPkB,IAAS7K,EAAU,MAAO2J,EAC7B,QAAOtE,GACL,IAAK,GAAG,MAAO,UAAStB,GACtB,MAAO4F,GAAGlJ,KAAKoK,EAAM9G,GAEvB,KAAK,GAAG,MAAO,UAASA,EAAG+G,GACzB,MAAOnB,GAAGlJ,KAAKoK,EAAM9G,EAAG+G,GAE1B,KAAK,GAAG,MAAO,UAAS/G,EAAG+G,EAAGnK,GAC5B,MAAOgJ,GAAGlJ,KAAKoK,EAAM9G,EAAG+G,EAAGnK,IAG/B,MAAO,YACL,MAAOgJ,GAAGnD,MAAMqE,EAAMtE,cAMrB,SAASjG,EAAQD,GAEtBC,EAAOD,QAAU,SAAS2D,GACxB,GAAgB,kBAANA,GAAiB,KAAM2C,WAAU3C,EAAK,sBAChD,OAAOA,KAKJ,SAAS1D,EAAQD,EAASH,GAE/B,GAAIiB,GAAWjB,EAAoB,IAAI,QACnCqJ,EAAWrJ,EAAoB,IAC/Ba,EAAWb,EAAoB,GAC/B6K,EAAW7K,EAAoB,GAAGoC,EAClC/B,EAAW,EACXyK,EAAexH,OAAOwH,cAAgB,WACxC,OAAO,GAELC,GAAU/K,EAAoB,GAAG,WACnC,MAAO8K,GAAaxH,OAAO0H,yBAEzBC,EAAU,SAASnH,GACrB+G,EAAQ/G,EAAI7C,GAAO2C,OACjBqB,EAAG,OAAQ5E,EACX6K,SAGAC,EAAU,SAASrH,EAAIuB,GAEzB,IAAIgE,EAASvF,GAAI,MAAoB,gBAANA,GAAiBA,GAAmB,gBAANA,GAAiB,IAAM,KAAOA,CAC3F,KAAIjD,EAAIiD,EAAI7C,GAAM,CAEhB,IAAI6J,EAAahH,GAAI,MAAO,GAE5B,KAAIuB,EAAO,MAAO,GAElB4F,GAAQnH,GAER,MAAOA,GAAG7C,GAAMgE,GAEhBmG,EAAU,SAAStH,EAAIuB,GACzB,IAAIxE,EAAIiD,EAAI7C,GAAM,CAEhB,IAAI6J,EAAahH,GAAI,OAAO,CAE5B,KAAIuB,EAAO,OAAO,CAElB4F,GAAQnH,GAER,MAAOA,GAAG7C,GAAMiK,GAGhBG,EAAW,SAASvH,GAEtB,MADGiH,IAAUO,EAAKC,MAAQT,EAAahH,KAAQjD,EAAIiD,EAAI7C,IAAMgK,EAAQnH,GAC9DA,GAELwH,EAAOlL,EAAOD,SAChBe,IAAUD,EACVsK,MAAU,EACVJ,QAAUA,EACVC,QAAUA,EACVC,SAAUA,IAKP,SAASjL,EAAQD,EAASH,GAE/B,GAAIW,GAASX,EAAoB,GAC7BwL,EAAS,qBACTC,EAAS9K,EAAO6K,KAAY7K,EAAO6K,MACvCpL,GAAOD,QAAU,SAAS4D,GACxB,MAAO0H,GAAM1H,KAAS0H,EAAM1H,SAKzB,SAAS3D,EAAQD,EAASH,GAE/B,GAAI0L,GAAM1L,EAAoB,GAAGoC,EAC7BvB,EAAMb,EAAoB,GAC1B2L,EAAM3L,EAAoB,IAAI,cAElCI,GAAOD,QAAU,SAAS2D,EAAIK,EAAKyH,GAC9B9H,IAAOjD,EAAIiD,EAAK8H,EAAO9H,EAAKA,EAAGwG,UAAWqB,IAAKD,EAAI5H,EAAI6H,GAAMrH,cAAc,EAAMV,MAAOO,MAKxF,SAAS/D,EAAQD,EAASH,GAE/B,GAAIyL,GAAazL,EAAoB,IAAI,OACrCsB,EAAatB,EAAoB,IACjCwC,EAAaxC,EAAoB,GAAGwC,OACpCqJ,EAA8B,kBAAVrJ,EACxBpC,GAAOD,QAAU,SAAS+H,GACxB,MAAOuD,GAAMvD,KAAUuD,EAAMvD,GAC3B2D,GAAcrJ,EAAO0F,KAAU2D,EAAarJ,EAASlB,GAAK,UAAY4G,MAKrE,SAAS9H,EAAQD,EAASH,GAE/B,GAAI8L,GAAY9L,EAAoB,IAChC4B,EAAY5B,EAAoB,GACpCI,GAAOD,QAAU,SAAS8I,EAAQ8C,GAMhC,IALA,GAIIhI,GAJAoF,EAASvH,EAAUqH,GACnBjE,EAAS8G,EAAQ3C,GACjBhE,EAASH,EAAKG,OACd6G,EAAS,EAEP7G,EAAS6G,GAAM,GAAG7C,EAAEpF,EAAMiB,EAAKgH,QAAcD,EAAG,MAAOhI,KAK1D,SAAS3D,EAAQD,EAASH,GAG/B,GAAIiM,GAAcjM,EAAoB,IAClCkM,EAAclM,EAAoB,GAEtCI,GAAOD,QAAUmD,OAAO0B,MAAQ,QAASA,MAAKmE,GAC5C,MAAO8C,GAAM9C,EAAG+C,KAKb,SAAS9L,EAAQD,EAASH,GAE/B,GAAIa,GAAeb,EAAoB,GACnC4B,EAAe5B,EAAoB,IACnCmM,EAAenM,EAAoB,KAAI,GACvCoM,EAAepM,EAAoB,IAAI,WAE3CI,GAAOD,QAAU,SAAS8I,EAAQrD,GAChC,GAGI7B,GAHAoF,EAASvH,EAAUqH,GACnBhE,EAAS,EACTY,IAEJ,KAAI9B,IAAOoF,GAAKpF,GAAOqI,GAASvL,EAAIsI,EAAGpF,IAAQ8B,EAAOC,KAAK/B,EAE3D,MAAM6B,EAAMT,OAASF,GAAKpE,EAAIsI,EAAGpF,EAAM6B,EAAMX,SAC1CkH,EAAatG,EAAQ9B,IAAQ8B,EAAOC,KAAK/B,GAE5C,OAAO8B,KAKJ,SAASzF,EAAQD,EAASH,GAG/B,GAAIqM,GAAUrM,EAAoB,IAC9BsM,EAAUtM,EAAoB,GAClCI,GAAOD,QAAU,SAAS2D,GACxB,MAAOuI,GAAQC,EAAQxI,MAKpB,SAAS1D,EAAQD,EAASH,GAG/B,GAAIuM,GAAMvM,EAAoB,GAC9BI,GAAOD,QAAUmD,OAAO,KAAKJ,qBAAqB,GAAKI,OAAS,SAASQ,GACvE,MAAkB,UAAXyI,EAAIzI,GAAkBA,EAAGiD,MAAM,IAAMzD,OAAOQ,KAKhD,SAAS1D,EAAQD,GAEtB,GAAIuG,MAAcA,QAElBtG,GAAOD,QAAU,SAAS2D,GACxB,MAAO4C,GAASnG,KAAKuD,GAAI0I,MAAM,EAAG,MAK/B,SAASpM,EAAQD,GAGtBC,EAAOD,QAAU,SAAS2D,GACxB,GAAGA,GAAMhE,EAAU,KAAM2G,WAAU,yBAA2B3C,EAC9D,OAAOA,KAKJ,SAAS1D,EAAQD,EAASH,GAI/B,GAAI4B,GAAY5B,EAAoB,IAChCyM,EAAYzM,EAAoB,IAChC0M,EAAY1M,EAAoB,GACpCI,GAAOD,QAAU,SAASwM,GACxB,MAAO,UAASC,EAAOb,EAAIc,GACzB,GAGIjJ,GAHAuF,EAASvH,EAAUgL,GACnBzH,EAASsH,EAAStD,EAAEhE,QACpB6G,EAASU,EAAQG,EAAW1H,EAGhC,IAAGwH,GAAeZ,GAAMA,GAAG,KAAM5G,EAAS6G,GAExC,GADApI,EAAQuF,EAAE6C,KACPpI,GAASA,EAAM,OAAO,MAEpB,MAAKuB,EAAS6G,EAAOA,IAAQ,IAAGW,GAAeX,IAAS7C,KAC1DA,EAAE6C,KAAWD,EAAG,MAAOY,IAAeX,CACzC,QAAQW,GAAe,MAMxB,SAASvM,EAAQD,EAASH,GAG/B,GAAI8M,GAAY9M,EAAoB,IAChC+M,EAAYxF,KAAKwF,GACrB3M,GAAOD,QAAU,SAAS2D,GACxB,MAAOA,GAAK,EAAIiJ,EAAID,EAAUhJ,GAAK,kBAAoB,IAKpD,SAAS1D,EAAQD,GAGtB,GAAI6M,GAAQzF,KAAKyF,KACbC,EAAQ1F,KAAK0F,KACjB7M,GAAOD,QAAU,SAAS2D,GACxB,MAAOoJ,OAAMpJ,GAAMA,GAAM,GAAKA,EAAK,EAAImJ,EAAQD,GAAMlJ,KAKlD,SAAS1D,EAAQD,EAASH,GAE/B,GAAI8M,GAAY9M,EAAoB,IAChCmN,EAAY5F,KAAK4F,IACjBJ,EAAYxF,KAAKwF,GACrB3M,GAAOD,QAAU,SAAS6L,EAAO7G,GAE/B,MADA6G,GAAQc,EAAUd,GACH,EAARA,EAAYmB,EAAInB,EAAQ7G,EAAQ,GAAK4H,EAAIf,EAAO7G,KAKpD,SAAS/E,EAAQD,EAASH,GAE/B,GAAIoB,GAASpB,EAAoB,IAAI,QACjCsB,EAAStB,EAAoB,GACjCI,GAAOD,QAAU,SAAS4D,GACxB,MAAO3C,GAAO2C,KAAS3C,EAAO2C,GAAOzC,EAAIyC,MAKtC,SAAS3D,EAAQD,GAGtBC,EAAOD,QAAU,gGAEf4G,MAAM,MAIH,SAAS3G,EAAQD,EAASH,GAG/B,GAAI8L,GAAU9L,EAAoB,IAC9BoN,EAAUpN,EAAoB,IAC9BqN,EAAUrN,EAAoB,GAClCI,GAAOD,QAAU,SAAS2D,GACxB,GAAI+B,GAAaiG,EAAQhI,GACrBwJ,EAAaF,EAAKhL,CACtB,IAAGkL,EAKD,IAJA,GAGIvJ,GAHA+C,EAAUwG,EAAWxJ,GACrBb,EAAUoK,EAAIjL,EACd6C,EAAU,EAER6B,EAAQ3B,OAASF,GAAKhC,EAAO1C,KAAKuD,EAAIC,EAAM+C,EAAQ7B,OAAMY,EAAOC,KAAK/B,EAC5E,OAAO8B,KAKN,SAASzF,EAAQD,GAEtBA,EAAQiC,EAAIkB,OAAO0C,uBAId,SAAS5F,EAAQD,GAEtBA,EAAQiC,KAAOc,sBAIV,SAAS9C,EAAQD,EAASH,GAG/B,GAAIuM,GAAMvM,EAAoB,GAC9BI,GAAOD,QAAUoN,MAAM7L,SAAW,QAASA,SAAQ8L,GACjD,MAAmB,SAAZjB,EAAIiB,KAKR,SAASpN,EAAQD,EAASH,GAG/B,GAAI2B,GAAc3B,EAAoB,IAClCyN,EAAczN,EAAoB,IAClCkM,EAAclM,EAAoB,IAClCoM,EAAcpM,EAAoB,IAAI,YACtC0N,EAAc,aACd5K,EAAc,YAGd6K,EAAa,WAEf,GAGIC,GAHAC,EAAS7N,EAAoB,IAAI,UACjCiF,EAASiH,EAAY/G,OACrB2I,EAAS,GAYb,KAVAD,EAAOE,MAAMC,QAAU,OACvBhO,EAAoB,IAAIiO,YAAYJ,GACpCA,EAAOK,IAAM,cAGbN,EAAiBC,EAAOM,cAAc7E,SACtCsE,EAAeQ,OACfR,EAAeS,MAAM,oCAAsCP,GAC3DF,EAAeU,QACfX,EAAaC,EAAe/G,EACtB5B,WAAW0I,GAAW7K,GAAWoJ,EAAYjH,GACnD,OAAO0I,KAGTvN,GAAOD,QAAUmD,OAAO+B,QAAU,QAASA,QAAO8D,EAAGoF,GACnD,GAAI1I,EAQJ,OAPS,QAANsD,GACDuE,EAAM5K,GAAanB,EAASwH,GAC5BtD,EAAS,GAAI6H,GACbA,EAAM5K,GAAa,KAEnB+C,EAAOuG,GAAYjD,GACdtD,EAAS8H,IACTY,IAAezO,EAAY+F,EAAS4H,EAAI5H,EAAQ0I,KAKpD,SAASnO,EAAQD,EAASH,GAE/B,GAAIqC,GAAWrC,EAAoB,GAC/B2B,EAAW3B,EAAoB,IAC/B8L,EAAW9L,EAAoB,GAEnCI,GAAOD,QAAUH,EAAoB,GAAKsD,OAAOwB,iBAAmB,QAASA,kBAAiBqE,EAAGoF,GAC/F5M,EAASwH,EAKT,KAJA,GAGIpE,GAHAC,EAAS8G,EAAQyC,GACjBpJ,EAASH,EAAKG,OACdF,EAAI,EAEFE,EAASF,GAAE5C,EAAGD,EAAE+G,EAAGpE,EAAIC,EAAKC,KAAMsJ,EAAWxJ,GACnD,OAAOoE,KAKJ,SAAS/I,EAAQD,EAASH,GAE/BI,EAAOD,QAAUH,EAAoB,GAAGsJ,UAAYA,SAASkF,iBAIxD,SAASpO,EAAQD,EAASH,GAG/B,GAAI4B,GAAY5B,EAAoB,IAChCsC,EAAYtC,EAAoB,IAAIoC,EACpCsE,KAAeA,SAEf+H,EAA+B,gBAAVjH,SAAsBA,QAAUlE,OAAOqC,oBAC5DrC,OAAOqC,oBAAoB6B,WAE3BkH,EAAiB,SAAS5K,GAC5B,IACE,MAAOxB,GAAKF,EAAE0B,GACd,MAAMgE,GACN,MAAO2G,GAAYjC,SAIvBpM,GAAOD,QAAQiC,EAAI,QAASuD,qBAAoB7B,GAC9C,MAAO2K,IAAoC,mBAArB/H,EAASnG,KAAKuD,GAA2B4K,EAAe5K,GAAMxB,EAAKV,EAAUkC,MAKhG,SAAS1D,EAAQD,EAASH,GAG/B,GAAIiM,GAAajM,EAAoB,IACjC2O,EAAa3O,EAAoB,IAAIyK,OAAO,SAAU,YAE1DtK,GAAQiC,EAAIkB,OAAOqC,qBAAuB,QAASA,qBAAoBwD,GACrE,MAAO8C,GAAM9C,EAAGwF,KAKb,SAASvO,EAAQD,EAASH,GAE/B,GAAIqN,GAAiBrN,EAAoB,IACrC8B,EAAiB9B,EAAoB,IACrC4B,EAAiB5B,EAAoB,IACrC6B,EAAiB7B,EAAoB,IACrCa,EAAiBb,EAAoB,GACrCkJ,EAAiBlJ,EAAoB,IACrCmC,EAAiBmB,OAAOmC,wBAE5BtF,GAAQiC,EAAIpC,EAAoB,GAAKmC,EAAO,QAASsD,0BAAyB0D,EAAGpE,GAG/E,GAFAoE,EAAIvH,EAAUuH,GACdpE,EAAIlD,EAAYkD,GAAG,GAChBmE,EAAe,IAChB,MAAO/G,GAAKgH,EAAGpE,GACf,MAAM+C,IACR,MAAGjH,GAAIsI,EAAGpE,GAAUjD,GAAYuL,EAAIjL,EAAE7B,KAAK4I,EAAGpE,GAAIoE,EAAEpE,IAApD,SAKG,SAAS3E,EAAQD,GAEtBC,EAAOD,SAAU,GAIZ,SAASC,EAAQD,EAASH,GAE/B,GAAIe,GAAUf,EAAoB,EAElCe,GAAQA,EAAQyF,EAAIzF,EAAQ8F,GAAK7G,EAAoB,GAAI,UAAW2E,eAAgB3E,EAAoB,GAAGoC,KAItG,SAAShC,EAAQD,EAASH,GAE/B,GAAIe,GAAUf,EAAoB,EAElCe,GAAQA,EAAQyF,EAAIzF,EAAQ8F,GAAK7G,EAAoB,GAAI,UAAW8E,iBAAkB9E,EAAoB,OAIrG,SAASI,EAAQD,EAASH,GAG/B,GAAI4B,GAA4B5B,EAAoB,IAChDwF,EAA4BxF,EAAoB,IAAIoC,CAExDpC,GAAoB,IAAI,2BAA4B,WAClD,MAAO,SAASyF,0BAAyB3B,EAAIC,GAC3C,MAAOyB,GAA0B5D,EAAUkC,GAAKC,OAM/C,SAAS3D,EAAQD,EAASH,GAG/B,GAAIe,GAAUf,EAAoB,GAC9BY,EAAUZ,EAAoB,GAC9B4O,EAAU5O,EAAoB,EAClCI,GAAOD,QAAU,SAASe,EAAK2G,GAC7B,GAAI4B,IAAO7I,EAAK0C,YAAcpC,IAAQoC,OAAOpC,GACzCoH,IACJA,GAAIpH,GAAO2G,EAAK4B,GAChB1I,EAAQA,EAAQyF,EAAIzF,EAAQ8F,EAAI+H,EAAM,WAAYnF,EAAG,KAAQ,SAAUnB,KAKpE,SAASlI,EAAQD,EAASH,GAE/B,GAAIe,GAAUf,EAAoB,EAElCe,GAAQA,EAAQyF,EAAG,UAAWnB,OAAQrF,EAAoB,OAIrD,SAASI,EAAQD,EAASH,GAG/B,GAAI6O,GAAkB7O,EAAoB,IACtC8O,EAAkB9O,EAAoB,GAE1CA,GAAoB,IAAI,iBAAkB,WACxC,MAAO,SAAS+O,gBAAejL,GAC7B,MAAOgL,GAAgBD,EAAS/K,QAM/B,SAAS1D,EAAQD,EAASH,GAG/B,GAAIsM,GAAUtM,EAAoB,GAClCI,GAAOD,QAAU,SAAS2D,GACxB,MAAOR,QAAOgJ,EAAQxI,MAKnB,SAAS1D,EAAQD,EAASH,GAG/B,GAAIa,GAAcb,EAAoB,GAClC6O,EAAc7O,EAAoB,IAClCoM,EAAcpM,EAAoB,IAAI,YACtCqD,EAAcC,OAAOgH,SAEzBlK,GAAOD,QAAUmD,OAAOyL,gBAAkB,SAAS5F,GAEjD,MADAA,GAAI0F,EAAS1F,GACVtI,EAAIsI,EAAGiD,GAAiBjD,EAAEiD,GACF,kBAAjBjD,GAAE6F,aAA6B7F,YAAaA,GAAE6F,YAC/C7F,EAAE6F,YAAY1E,UACdnB,YAAa7F,QAASD,EAAc,OAK1C,SAASjD,EAAQD,EAASH,GAG/B,GAAI6O,GAAW7O,EAAoB,IAC/BiM,EAAWjM,EAAoB,GAEnCA,GAAoB,IAAI,OAAQ,WAC9B,MAAO,SAASgF,MAAKlB,GACnB,MAAOmI,GAAM4C,EAAS/K,QAMrB,SAAS1D,EAAQD,EAASH,GAG/BA,EAAoB,IAAI,sBAAuB,WAC7C,MAAOA,GAAoB,IAAIoC,KAK5B,SAAShC,EAAQD,EAASH,GAG/B,GAAIqJ,GAAWrJ,EAAoB,IAC/BsL,EAAWtL,EAAoB,IAAIqL,QAEvCrL,GAAoB,IAAI,SAAU,SAASiP,GACzC,MAAO,SAASC,QAAOpL,GACrB,MAAOmL,IAAW5F,EAASvF,GAAMmL,EAAQ3D,EAAKxH,IAAOA,MAMpD,SAAS1D,EAAQD,EAASH,GAG/B,GAAIqJ,GAAWrJ,EAAoB,IAC/BsL,EAAWtL,EAAoB,IAAIqL,QAEvCrL,GAAoB,IAAI,OAAQ,SAASmP,GACvC,MAAO,SAASC,MAAKtL,GACnB,MAAOqL,IAAS9F,EAASvF,GAAMqL,EAAM7D,EAAKxH,IAAOA,MAMhD,SAAS1D,EAAQD,EAASH,GAG/B,GAAIqJ,GAAWrJ,EAAoB,IAC/BsL,EAAWtL,EAAoB,IAAIqL,QAEvCrL,GAAoB,IAAI,oBAAqB,SAASqP,GACpD,MAAO,SAASrE,mBAAkBlH,GAChC,MAAOuL,IAAsBhG,EAASvF,GAAMuL,EAAmB/D,EAAKxH,IAAOA,MAM1E,SAAS1D,EAAQD,EAASH,GAG/B,GAAIqJ,GAAWrJ,EAAoB,GAEnCA,GAAoB,IAAI,WAAY,SAASsP,GAC3C,MAAO,SAASC,UAASzL,GACvB,MAAOuF,GAASvF,GAAMwL,EAAYA,EAAUxL,IAAM,GAAQ,MAMzD,SAAS1D,EAAQD,EAASH,GAG/B,GAAIqJ,GAAWrJ,EAAoB,GAEnCA,GAAoB,IAAI,WAAY,SAASwP,GAC3C,MAAO,SAASC,UAAS3L,GACvB,MAAOuF,GAASvF,GAAM0L,EAAYA,EAAU1L,IAAM,GAAQ,MAMzD,SAAS1D,EAAQD,EAASH,GAG/B,GAAIqJ,GAAWrJ,EAAoB,GAEnCA,GAAoB,IAAI,eAAgB,SAAS0P,GAC/C,MAAO,SAAS5E,cAAahH,GAC3B,MAAOuF,GAASvF,GAAM4L,EAAgBA,EAAc5L,IAAM,GAAO,MAMhE,SAAS1D,EAAQD,EAASH,GAG/B,GAAIe,GAAUf,EAAoB,EAElCe,GAAQA,EAAQyF,EAAIzF,EAAQ8F,EAAG,UAAW8I,OAAQ3P,EAAoB,OAIjE,SAASI,EAAQD,EAASH,GAI/B,GAAI8L,GAAW9L,EAAoB,IAC/BoN,EAAWpN,EAAoB,IAC/BqN,EAAWrN,EAAoB,IAC/B6O,EAAW7O,EAAoB,IAC/BqM,EAAWrM,EAAoB,IAC/B4P,EAAWtM,OAAOqM,MAGtBvP,GAAOD,SAAWyP,GAAW5P,EAAoB,GAAG,WAClD,GAAI6P,MACAjH,KACApC,EAAIhE,SACJsN,EAAI,sBAGR,OAFAD,GAAErJ,GAAK,EACPsJ,EAAE/I,MAAM,IAAIgJ,QAAQ,SAASC,GAAIpH,EAAEoH,GAAKA,IACZ,GAArBJ,KAAYC,GAAGrJ,IAAWlD,OAAO0B,KAAK4K,KAAYhH,IAAIwB,KAAK,KAAO0F,IACtE,QAASH,QAAO9G,EAAQV,GAM3B,IALA,GAAI8H,GAAQpB,EAAShG,GACjBqH,EAAQ7J,UAAUlB,OAClB6G,EAAQ,EACRsB,EAAaF,EAAKhL,EAClBa,EAAaoK,EAAIjL,EACf8N,EAAOlE,GAMX,IALA,GAIIjI,GAJAyC,EAAS6F,EAAQhG,UAAU2F,MAC3BhH,EAASsI,EAAaxB,EAAQtF,GAAGiE,OAAO6C,EAAW9G,IAAMsF,EAAQtF,GACjErB,EAASH,EAAKG,OACdgL,EAAS,EAEPhL,EAASgL,GAAKlN,EAAO1C,KAAKiG,EAAGzC,EAAMiB,EAAKmL,QAAMF,EAAElM,GAAOyC,EAAEzC,GAC/D,OAAOkM,IACPL,GAIC,SAASxP,EAAQD,EAASH,GAG/B,GAAIe,GAAUf,EAAoB,EAClCe,GAAQA,EAAQyF,EAAG,UAAW+C,GAAIvJ,EAAoB,OAIjD,SAASI,EAAQD,GAGtBC,EAAOD,QAAUmD,OAAOiG,IAAM,QAASA,IAAG6G,EAAGC,GAC3C,MAAOD,KAAMC,EAAU,IAAND,GAAW,EAAIA,IAAM,EAAIC,EAAID,GAAKA,GAAKC,GAAKA,IAK1D,SAASjQ,EAAQD,EAASH,GAG/B,GAAIe,GAAUf,EAAoB,EAClCe,GAAQA,EAAQyF,EAAG,UAAW8J,eAAgBtQ,EAAoB,IAAIuE,OAIjE,SAASnE,EAAQD,EAASH,GAI/B,GAAIqJ,GAAWrJ,EAAoB,IAC/B2B,EAAW3B,EAAoB,IAC/BuQ,EAAQ,SAASpH,EAAGqH,GAEtB,GADA7O,EAASwH,IACLE,EAASmH,IAAoB,OAAVA,EAAe,KAAM/J,WAAU+J,EAAQ,6BAEhEpQ,GAAOD,SACLoE,IAAKjB,OAAOgN,iBAAmB,gBAC7B,SAASG,EAAMC,EAAOnM,GACpB,IACEA,EAAMvE,EAAoB,IAAI0H,SAASnH,KAAMP,EAAoB,IAAIoC,EAAEkB,OAAOgH,UAAW,aAAa/F,IAAK,GAC3GA,EAAIkM,MACJC,IAAUD,YAAgBlD,QAC1B,MAAMzF,GAAI4I,GAAQ,EACpB,MAAO,SAASJ,gBAAenH,EAAGqH,GAIhC,MAHAD,GAAMpH,EAAGqH,GACNE,EAAMvH,EAAEwH,UAAYH,EAClBjM,EAAI4E,EAAGqH,GACLrH,QAEL,GAASrJ,GACjByQ,MAAOA,IAKJ,SAASnQ,EAAQD,EAASH,GAI/B,GAAI4Q,GAAU5Q,EAAoB,IAC9ByQ,IACJA,GAAKzQ,EAAoB,IAAI,gBAAkB,IAC5CyQ,EAAO,IAAM,cACdzQ,EAAoB,IAAIsD,OAAOgH,UAAW,WAAY,QAAS5D,YAC7D,MAAO,WAAakK,EAAQjN,MAAQ,MACnC,IAKA,SAASvD,EAAQD,EAASH,GAG/B,GAAIuM,GAAMvM,EAAoB,IAC1B2L,EAAM3L,EAAoB,IAAI,eAE9B6Q,EAAgD,aAA1CtE,EAAI,WAAY,MAAOlG,eAG7ByK,EAAS,SAAShN,EAAIC,GACxB,IACE,MAAOD,GAAGC,GACV,MAAM+D,KAGV1H,GAAOD,QAAU,SAAS2D,GACxB,GAAIqF,GAAG8G,EAAGrH,CACV,OAAO9E,KAAOhE,EAAY,YAAqB,OAAPgE,EAAc,OAEN,iBAApCmM,EAAIa,EAAO3H,EAAI7F,OAAOQ,GAAK6H,IAAoBsE,EAEvDY,EAAMtE,EAAIpD,GAEM,WAAfP,EAAI2D,EAAIpD,KAAsC,kBAAZA,GAAE4H,OAAuB,YAAcnI,IAK3E,SAASxI,EAAQD,EAASH,GAG/B,GAAIe,GAAUf,EAAoB,EAElCe,GAAQA,EAAQgE,EAAG,YAAaiM,KAAMhR,EAAoB,OAIrD,SAASI,EAAQD,EAASH,GAG/B,GAAI0K,GAAa1K,EAAoB,IACjCqJ,EAAarJ,EAAoB,IACjCiR,EAAajR,EAAoB,IACjCkR,KAAgB1E,MAChB2E,KAEAC,EAAY,SAASvK,EAAGwK,EAAKjL,GAC/B,KAAKiL,IAAOF,IAAW,CACrB,IAAI,GAAIG,MAAQrM,EAAI,EAAOoM,EAAJpM,EAASA,IAAIqM,EAAErM,GAAK,KAAOA,EAAI,GACtDkM,GAAUE,GAAO3J,SAAS,MAAO,gBAAkB4J,EAAElH,KAAK,KAAO,KACjE,MAAO+G,GAAUE,GAAKxK,EAAGT,GAG7BhG,GAAOD,QAAUuH,SAASsJ,MAAQ,QAASA,MAAKrG,GAC9C,GAAIlB,GAAWiB,EAAU/G,MACrB4N,EAAWL,EAAW3Q,KAAK8F,UAAW,GACtCmL,EAAQ,WACV,GAAIpL,GAAOmL,EAAS9G,OAAOyG,EAAW3Q,KAAK8F,WAC3C,OAAO1C,gBAAgB6N,GAAQJ,EAAU3H,EAAIrD,EAAKjB,OAAQiB,GAAQ6K,EAAOxH,EAAIrD,EAAMuE,GAGrF,OADGtB,GAASI,EAAGa,aAAWkH,EAAMlH,UAAYb,EAAGa,WACxCkH,IAKJ,SAASpR,EAAQD,GAGtBC,EAAOD,QAAU,SAASsJ,EAAIrD,EAAMuE,GAClC,GAAI8G,GAAK9G,IAAS7K,CAClB,QAAOsG,EAAKjB,QACV,IAAK,GAAG,MAAOsM,GAAKhI,IACAA,EAAGlJ,KAAKoK,EAC5B,KAAK,GAAG,MAAO8G,GAAKhI,EAAGrD,EAAK,IACRqD,EAAGlJ,KAAKoK,EAAMvE,EAAK,GACvC,KAAK,GAAG,MAAOqL,GAAKhI,EAAGrD,EAAK,GAAIA,EAAK,IACjBqD,EAAGlJ,KAAKoK,EAAMvE,EAAK,GAAIA,EAAK,GAChD,KAAK,GAAG,MAAOqL,GAAKhI,EAAGrD,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAC1BqD,EAAGlJ,KAAKoK,EAAMvE,EAAK,GAAIA,EAAK,GAAIA,EAAK,GACzD,KAAK,GAAG,MAAOqL,GAAKhI,EAAGrD,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IACnCqD,EAAGlJ,KAAKoK,EAAMvE,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAClE,MAAoBqD,GAAGnD,MAAMqE,EAAMvE,KAKlC,SAAShG,EAAQD,EAASH,GAE/B,GAAIqC,GAAarC,EAAoB,GAAGoC,EACpCN,EAAa9B,EAAoB,IACjCa,EAAab,EAAoB,GACjC0R,EAAahK,SAAS4C,UACtBqH,EAAa,wBACbC,EAAa,MAEjBA,KAAQF,IAAU1R,EAAoB,IAAMqC,EAAGqP,EAAQE,GACrDtN,cAAc,EACdZ,IAAK,WACH,GAAImO,IAAS,GAAKlO,MAAMkO,MAAMF,GAC1BzJ,EAAQ2J,EAAQA,EAAM,GAAK,EAE/B,OADAhR,GAAI8C,KAAMiO,IAASvP,EAAGsB,KAAMiO,EAAM9P,EAAW,EAAGoG,IACzCA,MAMN,SAAS9H,EAAQD,EAASH,GAG/B,GAAIqJ,GAAiBrJ,EAAoB,IACrC+O,EAAiB/O,EAAoB,IACrC8R,EAAiB9R,EAAoB,IAAI,eACzC+R,EAAiBrK,SAAS4C,SAEzBwH,KAAgBC,IAAe/R,EAAoB,GAAGoC,EAAE2P,EAAeD,GAAelO,MAAO,SAASuF,GACzG,GAAkB,kBAARxF,QAAuB0F,EAASF,GAAG,OAAO,CACpD,KAAIE,EAAS1F,KAAK2G,WAAW,MAAOnB,aAAaxF,KAEjD,MAAMwF,EAAI4F,EAAe5F,IAAG,GAAGxF,KAAK2G,YAAcnB,EAAE,OAAO,CAC3D,QAAO,MAKJ,SAAS/I,EAAQD,EAASH,GAG/B,GAAIW,GAAoBX,EAAoB,GACxCa,EAAoBb,EAAoB,GACxCuM,EAAoBvM,EAAoB,IACxCgS,EAAoBhS,EAAoB,IACxC6B,EAAoB7B,EAAoB,IACxC4O,EAAoB5O,EAAoB,GACxCsC,EAAoBtC,EAAoB,IAAIoC,EAC5CD,EAAoBnC,EAAoB,IAAIoC,EAC5CC,EAAoBrC,EAAoB,GAAGoC,EAC3C6P,EAAoBjS,EAAoB,IAAIkS,KAC5CC,EAAoB,SACpBC,EAAoBzR,EAAOwR,GAC3BE,EAAoBD,EACpB5B,EAAoB4B,EAAQ9H,UAE5BgI,EAAoB/F,EAAIvM,EAAoB,IAAIwQ,KAAW2B,EAC3DI,EAAoB,QAAUlI,QAAOC,UAGrCkI,EAAW,SAASC,GACtB,GAAI3O,GAAKjC,EAAY4Q,GAAU,EAC/B,IAAgB,gBAAN3O,IAAkBA,EAAGqB,OAAS,EAAE,CACxCrB,EAAKyO,EAAOzO,EAAGoO,OAASD,EAAMnO,EAAI,EAClC,IACI4O,GAAOC,EAAOC,EADdC,EAAQ/O,EAAGgP,WAAW,EAE1B,IAAa,KAAVD,GAA0B,KAAVA,GAEjB,GADAH,EAAQ5O,EAAGgP,WAAW,GACT,KAAVJ,GAA0B,MAAVA,EAAc,MAAOK,SACnC,IAAa,KAAVF,EAAa,CACrB,OAAO/O,EAAGgP,WAAW,IACnB,IAAK,IAAK,IAAK,IAAMH,EAAQ,EAAGC,EAAU,EAAI,MAC9C,KAAK,IAAK,IAAK,KAAMD,EAAQ,EAAGC,EAAU,EAAI,MAC9C,SAAU,OAAQ9O,EAEpB,IAAI,GAAoDkP,GAAhDC,EAASnP,EAAG0I,MAAM,GAAIvH,EAAI,EAAGC,EAAI+N,EAAO9N,OAAkBD,EAAJD,EAAOA,IAInE,GAHA+N,EAAOC,EAAOH,WAAW7N,GAGf,GAAP+N,GAAaA,EAAOJ,EAAQ,MAAOG,IACtC,OAAOG,UAASD,EAAQN,IAE5B,OAAQ7O,EAGZ,KAAIsO,EAAQ,UAAYA,EAAQ,QAAUA,EAAQ,QAAQ,CACxDA,EAAU,QAASe,QAAOvP,GACxB,GAAIE,GAAwB,EAAnBuC,UAAUlB,OAAa,EAAIvB,EAChC+G,EAAOhH,IACX,OAAOgH,aAAgByH,KAEjBE,EAAa1D,EAAM,WAAY4B,EAAMlJ,QAAQ/G,KAAKoK,KAAY4B,EAAI5B,IAASwH,GAC3EH,EAAkB,GAAIK,GAAKG,EAAS1O,IAAM6G,EAAMyH,GAAWI,EAAS1O,GAE5E,KAAI,GAMiBC,GANbiB,EAAOhF,EAAoB,GAAKsC,EAAK+P,GAAQ,6KAMnDtL,MAAM,KAAMoJ,EAAI,EAAQnL,EAAKG,OAASgL,EAAGA,IACtCtP,EAAIwR,EAAMtO,EAAMiB,EAAKmL,MAAQtP,EAAIuR,EAASrO,IAC3C1B,EAAG+P,EAASrO,EAAK5B,EAAKkQ,EAAMtO,GAGhCqO,GAAQ9H,UAAYkG,EACpBA,EAAMxB,YAAcoD,EACpBpS,EAAoB,IAAIW,EAAQwR,EAAQC,KAKrC,SAAShS,EAAQD,EAASH,GAE/B,GAAIqJ,GAAiBrJ,EAAoB,IACrCsQ,EAAiBtQ,EAAoB,IAAIuE,GAC7CnE,GAAOD,QAAU,SAASwK,EAAM9B,EAAQuK,GACtC,GAAIrO,GAAGyB,EAAIqC,EAAOmG,WAGhB,OAFCxI,KAAM4M,GAAiB,kBAAL5M,KAAoBzB,EAAIyB,EAAE8D,aAAe8I,EAAE9I,WAAajB,EAAStE,IAAMuL,GAC1FA,EAAe3F,EAAM5F,GACd4F,IAKN,SAASvK,EAAQD,EAASH,GAE/B,GAAIe,GAAUf,EAAoB,GAC9BsM,EAAUtM,EAAoB,IAC9B4O,EAAU5O,EAAoB,GAC9BqT,EAAUrT,EAAoB,IAC9BsT,EAAU,IAAMD,EAAS,IACzBE,EAAU,KACVC,EAAUC,OAAO,IAAMH,EAAQA,EAAQ,KACvCI,EAAUD,OAAOH,EAAQA,EAAQ,MAEjCK,EAAW,SAASzS,EAAK2G,EAAM+L,GACjC,GAAItL,MACAuL,EAAQjF,EAAM,WAChB,QAASyE,EAAOnS,MAAUqS,EAAIrS,MAAUqS,IAEtC9J,EAAKnB,EAAIpH,GAAO2S,EAAQhM,EAAKqK,GAAQmB,EAAOnS,EAC7C0S,KAAMtL,EAAIsL,GAASnK,GACtB1I,EAAQA,EAAQgE,EAAIhE,EAAQ8F,EAAIgN,EAAO,SAAUvL,IAM/C4J,EAAOyB,EAASzB,KAAO,SAAS4B,EAAQC,GAI1C,MAHAD,GAASzJ,OAAOiC,EAAQwH,IACd,EAAPC,IAASD,EAASA,EAAOE,QAAQR,EAAO,KACjC,EAAPO,IAASD,EAASA,EAAOE,QAAQN,EAAO,KACpCI,EAGT1T,GAAOD,QAAUwT,GAIZ,SAASvT,EAAQD,GAEtBC,EAAOD,QAAU,mDAKZ,SAASC,EAAQD,EAASH,GAG/B,GAAIe,GAAef,EAAoB,GAEnC8M,GADe9M,EAAoB,IACpBA,EAAoB,KACnCiU,EAAejU,EAAoB,IACnCkU,EAAelU,EAAoB,IACnCmU,EAAe,GAAGC,QAClBnH,EAAe1F,KAAK0F,MACpBoH,GAAgB,EAAG,EAAG,EAAG,EAAG,EAAG,GAC/BC,EAAe,wCACfC,EAAe,IAEfC,EAAW,SAASlD,EAAG7Q,GAGzB,IAFA,GAAIwE,GAAK,GACLwP,EAAKhU,IACDwE,EAAI,GACVwP,GAAMnD,EAAI+C,EAAKpP,GACfoP,EAAKpP,GAAKwP,EAAK,IACfA,EAAKxH,EAAMwH,EAAK,MAGhBC,EAAS,SAASpD,GAGpB,IAFA,GAAIrM,GAAI,EACJxE,EAAI,IACAwE,GAAK,GACXxE,GAAK4T,EAAKpP,GACVoP,EAAKpP,GAAKgI,EAAMxM,EAAI6Q,GACpB7Q,EAAKA,EAAI6Q,EAAK,KAGdqD,EAAc,WAGhB,IAFA,GAAI1P,GAAI,EACJ2P,EAAI,KACA3P,GAAK,GACX,GAAS,KAAN2P,GAAkB,IAAN3P,GAAuB,IAAZoP,EAAKpP,GAAS,CACtC,GAAI4P,GAAIxK,OAAOgK,EAAKpP,GACpB2P,GAAU,KAANA,EAAWC,EAAID,EAAIV,EAAO3T,KAAKgU,EAAM,EAAIM,EAAE1P,QAAU0P,EAE3D,MAAOD,IAEPE,EAAM,SAAS1E,EAAGkB,EAAGyD,GACvB,MAAa,KAANzD,EAAUyD,EAAMzD,EAAI,IAAM,EAAIwD,EAAI1E,EAAGkB,EAAI,EAAGyD,EAAM3E,GAAK0E,EAAI1E,EAAIA,EAAGkB,EAAI,EAAGyD,IAE9EC,EAAM,SAAS5E,GAGjB,IAFA,GAAIkB,GAAK,EACL2D,EAAK7E,EACH6E,GAAM,MACV3D,GAAK,GACL2D,GAAM,IAER,MAAMA,GAAM,GACV3D,GAAM,EACN2D,GAAM,CACN,OAAO3D,GAGXvQ,GAAQA,EAAQgE,EAAIhE,EAAQ8F,KAAOsN,IACV,UAAvB,KAAQC,QAAQ,IACG,MAAnB,GAAIA,QAAQ,IACS,SAArB,MAAMA,QAAQ,IACsB,wBAApC,kBAAqBA,QAAQ,MACzBpU,EAAoB,GAAG,WAE3BmU,EAAS5T,YACN,UACH6T,QAAS,QAASA,SAAQc,GACxB,GAIIpN,GAAGqN,EAAGhF,EAAGH,EAJTI,EAAI6D,EAAatQ,KAAM2Q,GACvBlS,EAAI0K,EAAUoI,GACdN,EAAI,GACJpU,EAAI+T,CAER,IAAO,EAAJnS,GAASA,EAAI,GAAG,KAAMgT,YAAWd,EACpC,IAAGlE,GAAKA,EAAE,MAAO,KACjB,IAAQ,OAALA,GAAcA,GAAK,KAAK,MAAO/F,QAAO+F,EAKzC,IAJO,EAAJA,IACDwE,EAAI,IACJxE,GAAKA,GAEJA,EAAI,MAKL,GAJAtI,EAAIkN,EAAI5E,EAAI0E,EAAI,EAAG,GAAI,IAAM,GAC7BK,EAAQ,EAAJrN,EAAQsI,EAAI0E,EAAI,GAAIhN,EAAG,GAAKsI,EAAI0E,EAAI,EAAGhN,EAAG,GAC9CqN,GAAK,iBACLrN,EAAI,GAAKA,EACNA,EAAI,EAAE,CAGP,IAFA0M,EAAS,EAAGW,GACZhF,EAAI/N,EACE+N,GAAK,GACTqE,EAAS,IAAK,GACdrE,GAAK,CAIP,KAFAqE,EAASM,EAAI,GAAI3E,EAAG,GAAI,GACxBA,EAAIrI,EAAI,EACFqI,GAAK,IACTuE,EAAO,GAAK,IACZvE,GAAK,EAEPuE,GAAO,GAAKvE,GACZqE,EAAS,EAAG,GACZE,EAAO,GACPlU,EAAImU,QAEJH,GAAS,EAAGW,GACZX,EAAS,IAAM1M,EAAG,GAClBtH,EAAImU,IAAgBT,EAAO3T,KAAKgU,EAAMnS,EAQxC,OALCA,GAAI,GACL4N,EAAIxP,EAAE2E,OACN3E,EAAIoU,GAAUxS,GAAL4N,EAAS,KAAOkE,EAAO3T,KAAKgU,EAAMnS,EAAI4N,GAAKxP,EAAIA,EAAEgM,MAAM,EAAGwD,EAAI5N,GAAK,IAAM5B,EAAEgM,MAAMwD,EAAI5N,KAE9F5B,EAAIoU,EAAIpU,EACDA,MAMR,SAASJ,EAAQD,GAEtBC,EAAOD,QAAU,SAAS2D,EAAIuR,EAAanN,EAAMoN,GAC/C,KAAKxR,YAAcuR,KAAiBC,IAAmBxV,GAAawV,IAAkBxR,GACpF,KAAM2C,WAAUyB,EAAO,0BACvB,OAAOpE,KAKN,SAAS1D,EAAQD,EAASH,GAE/B,GAAIuM,GAAMvM,EAAoB,GAC9BI,GAAOD,QAAU,SAAS2D,EAAIyR,GAC5B,GAAgB,gBAANzR,IAA6B,UAAXyI,EAAIzI,GAAgB,KAAM2C,WAAU8O,EAChE,QAAQzR,IAKL,SAAS1D,EAAQD,EAASH,GAG/B,GAAI8M,GAAY9M,EAAoB,IAChCsM,EAAYtM,EAAoB,GAEpCI,GAAOD,QAAU,QAAS+T,QAAOsB,GAC/B,GAAIC,GAAMpL,OAAOiC,EAAQ3I,OACrB+R,EAAM,GACNpE,EAAMxE,EAAU0I,EACpB,IAAO,EAAJlE,GAASA,GAAKqE,EAAAA,EAAS,KAAMP,YAAW,0BAC3C,MAAK9D,EAAI,GAAIA,KAAO,KAAOmE,GAAOA,GAAY,EAAJnE,IAAMoE,GAAOD,EACvD,OAAOC,KAKJ,SAAStV,EAAQD,EAASH,GAG/B,GAAIe,GAAef,EAAoB,GACnCmB,EAAenB,EAAoB,GACnCiU,EAAejU,EAAoB,IACnC4V,EAAe,GAAGC,WAEtB9U,GAAQA,EAAQgE,EAAIhE,EAAQ8F,GAAK1F,EAAO,WAEtC,MAA2C,MAApCyU,EAAarV,KAAK,EAAGT,OACvBqB,EAAO,WAEZyU,EAAarV,YACV,UACHsV,YAAa,QAASA,aAAYC,GAChC,GAAInL,GAAOsJ,EAAatQ,KAAM,4CAC9B,OAAOmS,KAAchW,EAAY8V,EAAarV,KAAKoK,GAAQiL,EAAarV,KAAKoK,EAAMmL,OAMlF,SAAS1V,EAAQD,EAASH,GAG/B,GAAIe,GAAUf,EAAoB,EAElCe,GAAQA,EAAQyF,EAAG,UAAWuP,QAASxO,KAAKuN,IAAI,EAAG,QAI9C,SAAS1U,EAAQD,EAASH,GAG/B,GAAIe,GAAYf,EAAoB,GAChCgW,EAAYhW,EAAoB,GAAGiW,QAEvClV,GAAQA,EAAQyF,EAAG,UACjByP,SAAU,QAASA,UAASnS,GAC1B,MAAoB,gBAANA,IAAkBkS,EAAUlS,OAMzC,SAAS1D,EAAQD,EAASH,GAG/B,GAAIe,GAAUf,EAAoB,EAElCe,GAAQA,EAAQyF,EAAG,UAAW0P,UAAWlW,EAAoB,OAIxD,SAASI,EAAQD,EAASH,GAG/B,GAAIqJ,GAAWrJ,EAAoB,IAC/BiN,EAAW1F,KAAK0F,KACpB7M,GAAOD,QAAU,QAAS+V,WAAUpS,GAClC,OAAQuF,EAASvF,IAAOmS,SAASnS,IAAOmJ,EAAMnJ,KAAQA,IAKnD,SAAS1D,EAAQD,EAASH,GAG/B,GAAIe,GAAUf,EAAoB,EAElCe,GAAQA,EAAQyF,EAAG,UACjB0G,MAAO,QAASA,OAAMiJ,GACpB,MAAOA,IAAUA,MAMhB,SAAS/V,EAAQD,EAASH,GAG/B,GAAIe,GAAYf,EAAoB,GAChCkW,EAAYlW,EAAoB,IAChCoW,EAAY7O,KAAK6O,GAErBrV,GAAQA,EAAQyF,EAAG,UACjB6P,cAAe,QAASA,eAAcF,GACpC,MAAOD,GAAUC,IAAWC,EAAID,IAAW,qBAM1C,SAAS/V,EAAQD,EAASH,GAG/B,GAAIe,GAAUf,EAAoB,EAElCe,GAAQA,EAAQyF,EAAG,UAAW8P,iBAAkB,oBAI3C,SAASlW,EAAQD,EAASH,GAG/B,GAAIe,GAAUf,EAAoB,EAElCe,GAAQA,EAAQyF,EAAG,UAAW+P,iBAAkB,qBAI3C,SAASnW,EAAQD,EAASH,GAE/B,GAAIe,GAAcf,EAAoB,GAClCwW,EAAcxW,EAAoB,GAEtCe,GAAQA,EAAQyF,EAAIzF,EAAQ8F,GAAKsM,OAAOsD,YAAcD,GAAc,UAAWC,WAAYD,KAItF,SAASpW,EAAQD,EAASH,GAE/B,GAAIwW,GAAcxW,EAAoB,GAAGyW,WACrCxE,EAAcjS,EAAoB,IAAIkS,IAE1C9R,GAAOD,QAAU,EAAIqW,EAAYxW,EAAoB,IAAM,UAAW2V,EAAAA,GAAW,QAASc,YAAWhB,GACnG,GAAI3B,GAAS7B,EAAM5H,OAAOoL,GAAM,GAC5B5P,EAAS2Q,EAAY1C,EACzB,OAAkB,KAAXjO,GAAoC,KAApBiO,EAAO4C,OAAO,IAAa,EAAI7Q,GACpD2Q,GAIC,SAASpW,EAAQD,EAASH,GAE/B,GAAIe,GAAYf,EAAoB,GAChC2W,EAAY3W,EAAoB,GAEpCe,GAAQA,EAAQyF,EAAIzF,EAAQ8F,GAAKsM,OAAOD,UAAYyD,GAAY,UAAWzD,SAAUyD,KAIhF,SAASvW,EAAQD,EAASH,GAE/B,GAAI2W,GAAY3W,EAAoB,GAAGkT,SACnCjB,EAAYjS,EAAoB,IAAIkS,KACpC0E,EAAY5W,EAAoB,IAChC6W,EAAY,cAEhBzW,GAAOD,QAAmC,IAAzBwW,EAAUC,EAAK,OAA0C,KAA3BD,EAAUC,EAAK,QAAiB,QAAS1D,UAASuC,EAAK9C,GACpG,GAAImB,GAAS7B,EAAM5H,OAAOoL,GAAM,EAChC,OAAOkB,GAAU7C,EAASnB,IAAU,IAAOkE,EAAIpG,KAAKqD,GAAU,GAAK,MACjE6C,GAIC,SAASvW,EAAQD,EAASH,GAE/B,GAAIe,GAAYf,EAAoB,GAChC2W,EAAY3W,EAAoB,GAEpCe,GAAQA,EAAQ4F,EAAI5F,EAAQ8F,GAAKqM,UAAYyD,IAAazD,SAAUyD,KAI/D,SAASvW,EAAQD,EAASH,GAE/B,GAAIe,GAAcf,EAAoB,GAClCwW,EAAcxW,EAAoB,GAEtCe,GAAQA,EAAQ4F,EAAI5F,EAAQ8F,GAAK4P,YAAcD,IAAeC,WAAYD,KAIrE,SAASpW,EAAQD,EAASH,GAG/B,GAAIe,GAAUf,EAAoB,GAC9B8W,EAAU9W,EAAoB,KAC9B+W,EAAUxP,KAAKwP,KACfC,EAAUzP,KAAK0P,KAGnBlW,GAAQA,EAAQyF,EAAIzF,EAAQ8F,IAAMmQ,GAAkD,KAAxCzP,KAAK0F,MAAM+J,EAAO7D,OAAO+D,aAAqB,QACxFD,MAAO,QAASA,OAAM7G,GACpB,OAAQA,GAAKA,GAAK,EAAI2C,IAAM3C,EAAI,kBAC5B7I,KAAKyN,IAAI5E,GAAK7I,KAAK4P,IACnBL,EAAM1G,EAAI,EAAI2G,EAAK3G,EAAI,GAAK2G,EAAK3G,EAAI,QAMxC,SAAShQ,EAAQD,GAGtBC,EAAOD,QAAUoH,KAAKuP,OAAS,QAASA,OAAM1G,GAC5C,OAAQA,GAAKA,GAAK,OAAa,KAAJA,EAAWA,EAAIA,EAAIA,EAAI,EAAI7I,KAAKyN,IAAI,EAAI5E,KAKhE,SAAShQ,EAAQD,EAASH,GAK/B,QAASoX,OAAMhH,GACb,MAAQ6F,UAAS7F,GAAKA,IAAW,GAALA,EAAiB,EAAJA,GAASgH,OAAOhH,GAAK7I,KAAKyN,IAAI5E,EAAI7I,KAAKwP,KAAK3G,EAAIA,EAAI,IAAxDA,EAHvC,GAAIrP,GAAUf,EAAoB,EAMlCe,GAAQA,EAAQyF,EAAG,QAAS4Q,MAAOA,SAI9B,SAAShX,EAAQD,EAASH,GAG/B,GAAIe,GAAUf,EAAoB,EAElCe,GAAQA,EAAQyF,EAAG,QACjB6Q,MAAO,QAASA,OAAMjH,GACpB,MAAmB,KAAXA,GAAKA,GAAUA,EAAI7I,KAAKyN,KAAK,EAAI5E,IAAM,EAAIA,IAAM,MAMxD,SAAShQ,EAAQD,EAASH,GAG/B,GAAIe,GAAUf,EAAoB,GAC9BsX,EAAUtX,EAAoB,IAElCe,GAAQA,EAAQyF,EAAG,QACjB+Q,KAAM,QAASA,MAAKnH,GAClB,MAAOkH,GAAKlH,GAAKA,GAAK7I,KAAKuN,IAAIvN,KAAK6O,IAAIhG,GAAI,EAAI,OAM/C,SAAShQ,EAAQD,GAGtBC,EAAOD,QAAUoH,KAAK+P,MAAQ,QAASA,MAAKlH,GAC1C,MAAmB,KAAXA,GAAKA,IAAWA,GAAKA,EAAIA,EAAQ,EAAJA,EAAQ,GAAK,IAK/C,SAAShQ,EAAQD,EAASH,GAG/B,GAAIe,GAAUf,EAAoB,EAElCe,GAAQA,EAAQyF,EAAG,QACjBgR,MAAO,QAASA,OAAMpH,GACpB,OAAQA,KAAO,GAAK,GAAK7I,KAAK0F,MAAM1F,KAAKyN,IAAI5E,EAAI,IAAO7I,KAAKkQ,OAAS,OAMrE,SAASrX,EAAQD,EAASH,GAG/B,GAAIe,GAAUf,EAAoB,GAC9BsI,EAAUf,KAAKe,GAEnBvH,GAAQA,EAAQyF,EAAG,QACjBkR,KAAM,QAASA,MAAKtH,GAClB,OAAQ9H,EAAI8H,GAAKA,GAAK9H,GAAK8H,IAAM,MAMhC,SAAShQ,EAAQD,EAASH,GAG/B,GAAIe,GAAUf,EAAoB,EAElCe,GAAQA,EAAQyF,EAAG,QAASmR,MAAO3X,EAAoB,QAIlD,SAASI,EAAQD,GAGtBC,EAAOD,QAAUoH,KAAKoQ,OAAS,QAASA,OAAMvH,GAC5C,MAAmB,KAAXA,GAAKA,GAAUA,EAAIA,GAAK,MAAY,KAAJA,EAAWA,EAAIA,EAAIA,EAAI,EAAI7I,KAAKe,IAAI8H,GAAK,IAK9E,SAAShQ,EAAQD,EAASH,GAG/B,GAAIe,GAAYf,EAAoB,GAChCsX,EAAYtX,EAAoB,KAChC8U,EAAYvN,KAAKuN,IACjBiB,EAAYjB,EAAI,EAAG,KACnB8C,EAAY9C,EAAI,EAAG,KACnB+C,EAAY/C,EAAI,EAAG,MAAQ,EAAI8C,GAC/BE,EAAYhD,EAAI,EAAG,MAEnBiD,EAAkB,SAASzG,GAC7B,MAAOA,GAAI,EAAIyE,EAAU,EAAIA,EAI/BhV,GAAQA,EAAQyF,EAAG,QACjBwR,OAAQ,QAASA,QAAO5H,GACtB,GAEIvM,GAAGgC,EAFHoS,EAAQ1Q,KAAK6O,IAAIhG,GACjB8H,EAAQZ,EAAKlH,EAEjB,OAAU0H,GAAPG,EAAoBC,EAAQH,EAAgBE,EAAOH,EAAQF,GAAaE,EAAQF,GACnF/T,GAAK,EAAI+T,EAAY7B,GAAWkC,EAChCpS,EAAShC,GAAKA,EAAIoU,GACfpS,EAASgS,GAAShS,GAAUA,EAAcqS,GAAQvC,EAAAA,GAC9CuC,EAAQrS,OAMd,SAASzF,EAAQD,EAASH,GAG/B,GAAIe,GAAUf,EAAoB,GAC9BoW,EAAU7O,KAAK6O,GAEnBrV,GAAQA,EAAQyF,EAAG,QACjB2R,MAAO,QAASA,OAAMC,EAAQC,GAM5B,IALA,GAII7K,GAAK8K,EAJLC,EAAO,EACPtT,EAAO,EACPiL,EAAO7J,UAAUlB,OACjBqT,EAAO,EAEDtI,EAAJjL,GACJuI,EAAM4I,EAAI/P,UAAUpB,MACVuI,EAAPgL,GACDF,EAAOE,EAAOhL,EACd+K,EAAOA,EAAMD,EAAMA,EAAM,EACzBE,EAAOhL,GACCA,EAAM,GACd8K,EAAO9K,EAAMgL,EACbD,GAAOD,EAAMA,GACRC,GAAO/K,CAEhB,OAAOgL,KAAS7C,EAAAA,EAAWA,EAAAA,EAAW6C,EAAOjR,KAAKwP,KAAKwB,OAMtD,SAASnY,EAAQD,EAASH,GAG/B,GAAIe,GAAUf,EAAoB,GAC9ByY,EAAUlR,KAAKmR,IAGnB3X,GAAQA,EAAQyF,EAAIzF,EAAQ8F,EAAI7G,EAAoB,GAAG,WACrD,MAA+B,IAAxByY,EAAM,WAAY,IAA4B,GAAhBA,EAAMtT,SACzC,QACFuT,KAAM,QAASA,MAAKtI,EAAGC,GACrB,GAAIsI,GAAS,MACTC,GAAMxI,EACNyI,GAAMxI,EACNyI,EAAKH,EAASC,EACdG,EAAKJ,EAASE,CAClB,OAAO,GAAIC,EAAKC,IAAOJ,EAASC,IAAO,IAAMG,EAAKD,GAAMH,EAASE,IAAO,KAAO,KAAO,OAMrF,SAASzY,EAAQD,EAASH,GAG/B,GAAIe,GAAUf,EAAoB,EAElCe,GAAQA,EAAQyF,EAAG,QACjBwS,MAAO,QAASA,OAAM5I,GACpB,MAAO7I,MAAKyN,IAAI5E,GAAK7I,KAAK0R,SAMzB,SAAS7Y,EAAQD,EAASH,GAG/B,GAAIe,GAAUf,EAAoB,EAElCe,GAAQA,EAAQyF,EAAG,QAASsQ,MAAO9W,EAAoB,QAIlD,SAASI,EAAQD,EAASH,GAG/B,GAAIe,GAAUf,EAAoB,EAElCe,GAAQA,EAAQyF,EAAG,QACjB0S,KAAM,QAASA,MAAK9I,GAClB,MAAO7I,MAAKyN,IAAI5E,GAAK7I,KAAK4P,QAMzB,SAAS/W,EAAQD,EAASH,GAG/B,GAAIe,GAAUf,EAAoB,EAElCe,GAAQA,EAAQyF,EAAG,QAAS8Q,KAAMtX,EAAoB,QAIjD,SAASI,EAAQD,EAASH,GAG/B,GAAIe,GAAUf,EAAoB,GAC9B2X,EAAU3X,EAAoB,KAC9BsI,EAAUf,KAAKe,GAGnBvH,GAAQA,EAAQyF,EAAIzF,EAAQ8F,EAAI7G,EAAoB,GAAG,WACrD,MAA6B,SAArBuH,KAAK4R,KAAK,UAChB,QACFA,KAAM,QAASA,MAAK/I,GAClB,MAAO7I,MAAK6O,IAAIhG,GAAKA,GAAK,GACrBuH,EAAMvH,GAAKuH,GAAOvH,IAAM,GACxB9H,EAAI8H,EAAI,GAAK9H,GAAK8H,EAAI,KAAO7I,KAAKhC,EAAI,OAM1C,SAASnF,EAAQD,EAASH,GAG/B,GAAIe,GAAUf,EAAoB,GAC9B2X,EAAU3X,EAAoB,KAC9BsI,EAAUf,KAAKe,GAEnBvH,GAAQA,EAAQyF,EAAG,QACjB4S,KAAM,QAASA,MAAKhJ,GAClB,GAAIvM,GAAI8T,EAAMvH,GAAKA,GACfxF,EAAI+M,GAAOvH,EACf,OAAOvM,IAAK8R,EAAAA,EAAW,EAAI/K,GAAK+K,EAAAA,EAAW,IAAM9R,EAAI+G,IAAMtC,EAAI8H,GAAK9H,GAAK8H,QAMxE,SAAShQ,EAAQD,EAASH,GAG/B,GAAIe,GAAUf,EAAoB,EAElCe,GAAQA,EAAQyF,EAAG,QACjB6S,MAAO,QAASA,OAAMvV,GACpB,OAAQA,EAAK,EAAIyD,KAAK0F,MAAQ1F,KAAKyF,MAAMlJ,OAMxC,SAAS1D,EAAQD,EAASH,GAE/B,GAAIe,GAAiBf,EAAoB,GACrC0M,EAAiB1M,EAAoB,IACrCsZ,EAAiBjP,OAAOiP,aACxBC,EAAiBlP,OAAOmP,aAG5BzY,GAAQA,EAAQyF,EAAIzF,EAAQ8F,KAAO0S,GAA2C,GAAzBA,EAAepU,QAAc,UAEhFqU,cAAe,QAASA,eAAcpJ,GAKpC,IAJA,GAGI4C,GAHA0C,KACAxF,EAAO7J,UAAUlB,OACjBF,EAAO,EAELiL,EAAOjL,GAAE,CAEb,GADA+N,GAAQ3M,UAAUpB,KACfyH,EAAQsG,EAAM,WAAcA,EAAK,KAAMoC,YAAWpC,EAAO,6BAC5D0C,GAAI5P,KAAY,MAAPkN,EACLsG,EAAatG,GACbsG,IAAetG,GAAQ,QAAY,IAAM,MAAQA,EAAO,KAAQ,QAEpE,MAAO0C,GAAItL,KAAK,QAMjB,SAAShK,EAAQD,EAASH,GAE/B,GAAIe,GAAYf,EAAoB,GAChC4B,EAAY5B,EAAoB,IAChCyM,EAAYzM,EAAoB,GAEpCe,GAAQA,EAAQyF,EAAG,UAEjBiT,IAAK,QAASA,KAAIC,GAMhB,IALA,GAAIC,GAAO/X,EAAU8X,EAASD,KAC1BpI,EAAO5E,EAASkN,EAAIxU,QACpB+K,EAAO7J,UAAUlB,OACjBuQ,KACAzQ,EAAO,EACLoM,EAAMpM,GACVyQ,EAAI5P,KAAKuE,OAAOsP,EAAI1U,OACbiL,EAAJjL,GAASyQ,EAAI5P,KAAKuE,OAAOhE,UAAUpB,IACtC,OAAOyQ,GAAItL,KAAK,QAMjB,SAAShK,EAAQD,EAASH,GAI/BA,EAAoB,IAAI,OAAQ,SAASiS,GACvC,MAAO,SAASC,QACd,MAAOD,GAAMtO,KAAM,OAMlB,SAASvD,EAAQD,EAASH,GAG/B,GAAIe,GAAUf,EAAoB,GAC9B4Z,EAAU5Z,EAAoB,MAAK,EACvCe,GAAQA,EAAQgE,EAAG,UAEjB8U,YAAa,QAASA,aAAYC,GAChC,MAAOF,GAAIjW,KAAMmW,OAMhB,SAAS1Z,EAAQD,EAASH,GAE/B,GAAI8M,GAAY9M,EAAoB,IAChCsM,EAAYtM,EAAoB,GAGpCI,GAAOD,QAAU,SAAS2J,GACxB,MAAO,UAASa,EAAMmP,GACpB,GAGIjW,GAAG+G,EAHHgK,EAAIvK,OAAOiC,EAAQ3B,IACnB1F,EAAI6H,EAAUgN,GACd5U,EAAI0P,EAAEzP,MAEV,OAAO,GAAJF,GAASA,GAAKC,EAAS4E,EAAY,GAAKhK,GAC3C+D,EAAI+Q,EAAE9B,WAAW7N,GACN,MAAJpB,GAAcA,EAAI,OAAUoB,EAAI,IAAMC,IAAM0F,EAAIgK,EAAE9B,WAAW7N,EAAI,IAAM,OAAU2F,EAAI,MACxFd,EAAY8K,EAAE8B,OAAOzR,GAAKpB,EAC1BiG,EAAY8K,EAAEpI,MAAMvH,EAAGA,EAAI,IAAMpB,EAAI,OAAU,KAAO+G,EAAI,OAAU,UAMvE,SAASxK,EAAQD,EAASH,GAI/B,GAAIe,GAAYf,EAAoB,GAChCyM,EAAYzM,EAAoB,IAChC+Z,EAAY/Z,EAAoB,KAChCga,EAAY,WACZC,EAAY,GAAGD,EAEnBjZ,GAAQA,EAAQgE,EAAIhE,EAAQ8F,EAAI7G,EAAoB,KAAKga,GAAY,UACnEE,SAAU,QAASA,UAASC,GAC1B,GAAIxP,GAAOoP,EAAQpW,KAAMwW,EAAcH,GACnCI,EAAc/T,UAAUlB,OAAS,EAAIkB,UAAU,GAAKvG,EACpDuR,EAAS5E,EAAS9B,EAAKxF,QACvBkV,EAASD,IAAgBta,EAAYuR,EAAM9J,KAAKwF,IAAIN,EAAS2N,GAAc/I,GAC3EiJ,EAASjQ,OAAO8P,EACpB,OAAOF,GACHA,EAAU1Z,KAAKoK,EAAM2P,EAAQD,GAC7B1P,EAAK6B,MAAM6N,EAAMC,EAAOnV,OAAQkV,KAASC,MAM5C,SAASla,EAAQD,EAASH,GAG/B,GAAIua,GAAWva,EAAoB,KAC/BsM,EAAWtM,EAAoB,GAEnCI,GAAOD,QAAU,SAASwK,EAAMwP,EAAcvI,GAC5C,GAAG2I,EAASJ,GAAc,KAAM1T,WAAU,UAAYmL,EAAO,yBAC7D,OAAOvH,QAAOiC,EAAQ3B,MAKnB,SAASvK,EAAQD,EAASH,GAG/B,GAAIqJ,GAAWrJ,EAAoB,IAC/BuM,EAAWvM,EAAoB,IAC/Bwa,EAAWxa,EAAoB,IAAI,QACvCI,GAAOD,QAAU,SAAS2D,GACxB,GAAIyW,EACJ,OAAOlR,GAASvF,MAASyW,EAAWzW,EAAG0W,MAAY1a,IAAcya,EAAsB,UAAXhO,EAAIzI,MAK7E,SAAS1D,EAAQD,EAASH,GAE/B,GAAIwa,GAAQxa,EAAoB,IAAI,QACpCI,GAAOD,QAAU,SAASe,GACxB,GAAIuZ,GAAK,GACT,KACE,MAAMvZ,GAAKuZ,GACX,MAAM3S,GACN,IAEE,MADA2S,GAAGD,IAAS,GACJ,MAAMtZ,GAAKuZ,GACnB,MAAMrY,KACR,OAAO,IAKN,SAAShC,EAAQD,EAASH,GAI/B,GAAIe,GAAWf,EAAoB,GAC/B+Z,EAAW/Z,EAAoB,KAC/B0a,EAAW,UAEf3Z,GAAQA,EAAQgE,EAAIhE,EAAQ8F,EAAI7G,EAAoB,KAAK0a,GAAW,UAClEC,SAAU,QAASA,UAASR,GAC1B,SAAUJ,EAAQpW,KAAMwW,EAAcO,GACnCE,QAAQT,EAAc9T,UAAUlB,OAAS,EAAIkB,UAAU,GAAKvG,OAM9D,SAASM,EAAQD,EAASH,GAE/B,GAAIe,GAAUf,EAAoB,EAElCe,GAAQA,EAAQgE,EAAG,UAEjBmP,OAAQlU,EAAoB,OAKzB,SAASI,EAAQD,EAASH,GAI/B,GAAIe,GAAcf,EAAoB,GAClCyM,EAAczM,EAAoB,IAClC+Z,EAAc/Z,EAAoB,KAClC6a,EAAc,aACdC,EAAc,GAAGD,EAErB9Z,GAAQA,EAAQgE,EAAIhE,EAAQ8F,EAAI7G,EAAoB,KAAK6a,GAAc,UACrEE,WAAY,QAASA,YAAWZ,GAC9B,GAAIxP,GAASoP,EAAQpW,KAAMwW,EAAcU,GACrC7O,EAASS,EAASlF,KAAKwF,IAAI1G,UAAUlB,OAAS,EAAIkB,UAAU,GAAKvG,EAAW6K,EAAKxF,SACjFmV,EAASjQ,OAAO8P,EACpB,OAAOW,GACHA,EAAYva,KAAKoK,EAAM2P,EAAQtO,GAC/BrB,EAAK6B,MAAMR,EAAOA,EAAQsO,EAAOnV,UAAYmV,MAMhD,SAASla,EAAQD,EAASH,GAG/B,GAAI4Z,GAAO5Z,EAAoB,MAAK,EAGpCA,GAAoB,KAAKqK,OAAQ,SAAU,SAAS2Q,GAClDrX,KAAKsX,GAAK5Q,OAAO2Q,GACjBrX,KAAKuX,GAAK,GAET,WACD,GAEIC,GAFAhS,EAAQxF,KAAKsX,GACbjP,EAAQrI,KAAKuX,EAEjB,OAAGlP,IAAS7C,EAAEhE,QAAevB,MAAO9D,EAAWsb,MAAM,IACrDD,EAAQvB,EAAIzQ,EAAG6C,GACfrI,KAAKuX,IAAMC,EAAMhW,QACTvB,MAAOuX,EAAOC,MAAM,OAKzB,SAAShb,EAAQD,EAASH,GAG/B,GAAIqb,GAAiBrb,EAAoB,IACrCe,EAAiBf,EAAoB,GACrCgB,EAAiBhB,EAAoB,IACrC+H,EAAiB/H,EAAoB,GACrCa,EAAiBb,EAAoB,GACrCsb,EAAiBtb,EAAoB,KACrCub,EAAiBvb,EAAoB,KACrCqB,EAAiBrB,EAAoB,IACrC+O,EAAiB/O,EAAoB,IACrCwb,EAAiBxb,EAAoB,IAAI,YACzCyb,OAAsBzW,MAAQ,WAAaA,QAC3C0W,EAAiB,aACjBC,EAAiB,OACjBC,EAAiB,SAEjBC,EAAa,WAAY,MAAOlY,MAEpCvD,GAAOD,QAAU,SAASkS,EAAMT,EAAMyD,EAAayG,EAAMC,EAASC,EAAQC,GACxEV,EAAYlG,EAAazD,EAAMkK,EAC/B,IAeII,GAASnY,EAAKoY,EAfdC,EAAY,SAASC,GACvB,IAAIZ,GAASY,IAAQ7L,GAAM,MAAOA,GAAM6L,EACxC,QAAOA,GACL,IAAKV,GAAM,MAAO,SAAS3W,QAAQ,MAAO,IAAIqQ,GAAY1R,KAAM0Y,GAChE,KAAKT,GAAQ,MAAO,SAASU,UAAU,MAAO,IAAIjH,GAAY1R,KAAM0Y,IACpE,MAAO,SAASE,WAAW,MAAO,IAAIlH,GAAY1R,KAAM0Y,KAExD1Q,EAAaiG,EAAO,YACpB4K,EAAaT,GAAWH,EACxBa,GAAa,EACbjM,EAAa6B,EAAK/H,UAClBoS,EAAalM,EAAMgL,IAAahL,EAAMkL,IAAgBK,GAAWvL,EAAMuL,GACvEY,EAAaD,GAAWN,EAAUL,GAClCa,EAAab,EAAWS,EAAwBJ,EAAU,WAArBO,EAAkC7c,EACvE+c,EAAqB,SAARjL,EAAkBpB,EAAM+L,SAAWG,EAAUA,CAwB9D,IArBGG,IACDV,EAAoBpN,EAAe8N,EAAWtc,KAAK,GAAI8R,KACpD8J,IAAsB7Y,OAAOgH,YAE9BjJ,EAAe8a,EAAmBxQ,GAAK,GAEnC0P,GAAYxa,EAAIsb,EAAmBX,IAAUzT,EAAKoU,EAAmBX,EAAUK,KAIpFW,GAAcE,GAAWA,EAAQxU,OAAS0T,IAC3Ca,GAAa,EACbE,EAAW,QAASL,UAAU,MAAOI,GAAQnc,KAAKoD,QAG/C0X,IAAWY,IAAYR,IAASgB,GAAejM,EAAMgL,IACxDzT,EAAKyI,EAAOgL,EAAUmB,GAGxBrB,EAAU1J,GAAQ+K,EAClBrB,EAAU3P,GAAQkQ,EACfE,EAMD,GALAG,GACEI,OAASE,EAAaG,EAAWP,EAAUR,GAC3C5W,KAASgX,EAAaW,EAAWP,EAAUT,GAC3CY,QAASK,GAERX,EAAO,IAAIlY,IAAOmY,GACdnY,IAAOyM,IAAOxP,EAASwP,EAAOzM,EAAKmY,EAAQnY,QAC3ChD,GAAQA,EAAQgE,EAAIhE,EAAQ8F,GAAK4U,GAASgB,GAAa7K,EAAMsK,EAEtE,OAAOA,KAKJ,SAAS9b,EAAQD,GAEtBC,EAAOD,YAIF,SAASC,EAAQD,EAASH,GAG/B,GAAIqF,GAAiBrF,EAAoB,IACrC8c,EAAiB9c,EAAoB,IACrCqB,EAAiBrB,EAAoB,IACrCmc,IAGJnc,GAAoB,GAAGmc,EAAmBnc,EAAoB,IAAI,YAAa,WAAY,MAAO2D,QAElGvD,EAAOD,QAAU,SAASkV,EAAazD,EAAMkK,GAC3CzG,EAAY/K,UAAYjF,EAAO8W,GAAoBL,KAAMgB,EAAW,EAAGhB,KACvEza,EAAegU,EAAazD,EAAO,eAKhC,SAASxR,EAAQD,EAASH,GAI/BA,EAAoB,KAAK,SAAU,SAAS+c,GAC1C,MAAO,SAASC,QAAO9U,GACrB,MAAO6U,GAAWpZ,KAAM,IAAK,OAAQuE,OAMpC,SAAS9H,EAAQD,EAASH,GAE/B,GAAIe,GAAUf,EAAoB,GAC9B4O,EAAU5O,EAAoB,GAC9BsM,EAAUtM,EAAoB,IAC9Bid,EAAU,KAEVF,EAAa,SAASjJ,EAAQ3P,EAAK+Y,EAAWtZ,GAChD,GAAI4C,GAAK6D,OAAOiC,EAAQwH,IACpBqJ,EAAK,IAAMhZ,CAEf,OADiB,KAAd+Y,IAAiBC,GAAM,IAAMD,EAAY,KAAO7S,OAAOzG,GAAOoQ,QAAQiJ,EAAM,UAAY,KACpFE,EAAK,IAAM3W,EAAI,KAAOrC,EAAM,IAErC/D,GAAOD,QAAU,SAASyR,EAAM/J,GAC9B,GAAIsB,KACJA,GAAEyI,GAAQ/J,EAAKkV,GACfhc,EAAQA,EAAQgE,EAAIhE,EAAQ8F,EAAI+H,EAAM,WACpC,GAAI6B,GAAO,GAAGmB,GAAM,IACpB,OAAOnB,KAASA,EAAK2M,eAAiB3M,EAAK1J,MAAM,KAAK5B,OAAS,IAC7D,SAAUgE,KAKX,SAAS/I,EAAQD,EAASH,GAI/BA,EAAoB,KAAK,MAAO,SAAS+c,GACvC,MAAO,SAASM,OACd,MAAON,GAAWpZ,KAAM,MAAO,GAAI,QAMlC,SAASvD,EAAQD,EAASH,GAI/BA,EAAoB,KAAK,QAAS,SAAS+c,GACzC,MAAO,SAASO,SACd,MAAOP,GAAWpZ,KAAM,QAAS,GAAI,QAMpC,SAASvD,EAAQD,EAASH,GAI/BA,EAAoB,KAAK,OAAQ,SAAS+c,GACxC,MAAO,SAASQ,QACd,MAAOR,GAAWpZ,KAAM,IAAK,GAAI,QAMhC,SAASvD,EAAQD,EAASH,GAI/BA,EAAoB,KAAK,QAAS,SAAS+c,GACzC,MAAO,SAASS,SACd,MAAOT,GAAWpZ,KAAM,KAAM,GAAI,QAMjC,SAASvD,EAAQD,EAASH,GAI/BA,EAAoB,KAAK,YAAa,SAAS+c,GAC7C,MAAO,SAASU,WAAUC,GACxB,MAAOX,GAAWpZ,KAAM,OAAQ,QAAS+Z,OAMxC,SAAStd,EAAQD,EAASH,GAI/BA,EAAoB,KAAK,WAAY,SAAS+c,GAC5C,MAAO,SAASY,UAASC,GACvB,MAAOb,GAAWpZ,KAAM,OAAQ,OAAQia,OAMvC,SAASxd,EAAQD,EAASH,GAI/BA,EAAoB,KAAK,UAAW,SAAS+c,GAC3C,MAAO,SAASc,WACd,MAAOd,GAAWpZ,KAAM,IAAK,GAAI,QAMhC,SAASvD,EAAQD,EAASH,GAI/BA,EAAoB,KAAK,OAAQ,SAAS+c,GACxC,MAAO,SAASe,MAAKC,GACnB,MAAOhB,GAAWpZ,KAAM,IAAK,OAAQoa,OAMpC,SAAS3d,EAAQD,EAASH,GAI/BA,EAAoB,KAAK,QAAS,SAAS+c,GACzC,MAAO,SAASiB,SACd,MAAOjB,GAAWpZ,KAAM,QAAS,GAAI,QAMpC,SAASvD,EAAQD,EAASH,GAI/BA,EAAoB,KAAK,SAAU,SAAS+c,GAC1C,MAAO,SAASkB,UACd,MAAOlB,GAAWpZ,KAAM,SAAU,GAAI,QAMrC,SAASvD,EAAQD,EAASH,GAI/BA,EAAoB,KAAK,MAAO,SAAS+c,GACvC,MAAO,SAASmB,OACd,MAAOnB,GAAWpZ,KAAM,MAAO,GAAI,QAMlC,SAASvD,EAAQD,EAASH,GAI/BA,EAAoB,KAAK,MAAO,SAAS+c,GACvC,MAAO,SAASoB,OACd,MAAOpB,GAAWpZ,KAAM,MAAO,GAAI,QAMlC,SAASvD,EAAQD,EAASH,GAG/B,GAAIe,GAAUf,EAAoB,EAElCe,GAAQA,EAAQyF,EAAG,SAAU9E,QAAS1B,EAAoB,OAIrD,SAASI,EAAQD,EAASH,GAG/B,GAAIgI,GAAchI,EAAoB,IAClCe,EAAcf,EAAoB,GAClC6O,EAAc7O,EAAoB,IAClCO,EAAcP,EAAoB,KAClCoe,EAAcpe,EAAoB,KAClCyM,EAAczM,EAAoB,IAClCqe,EAAcre,EAAoB,IACtCe,GAAQA,EAAQyF,EAAIzF,EAAQ8F,GAAK7G,EAAoB,KAAK,SAASse,GAAO/Q,MAAMgR,KAAKD,KAAW,SAE9FC,KAAM,QAASA,MAAKC,GAClB,GAOIrZ,GAAQU,EAAQ4Y,EAAMha,EAPtB0E,EAAU0F,EAAS2P,GACnBpL,EAAyB,kBAARzP,MAAqBA,KAAO4J,MAC7C2C,EAAU7J,UAAUlB,OACpBuZ,EAAUxO,EAAO,EAAI7J,UAAU,GAAKvG,EACpC6e,EAAUD,IAAU5e,EACpBkM,EAAU,EACV4S,EAAUP,EAAUlV,EAIxB,IAFGwV,IAAQD,EAAQ1W,EAAI0W,EAAOxO,EAAO,EAAI7J,UAAU,GAAKvG,EAAW,IAEhE8e,GAAU9e,GAAesT,GAAK7F,OAAS6Q,EAAYQ,GAMpD,IADAzZ,EAASsH,EAAStD,EAAEhE,QAChBU,EAAS,GAAIuN,GAAEjO,GAASA,EAAS6G,EAAOA,IAC1CnG,EAAOmG,GAAS2S,EAAUD,EAAMvV,EAAE6C,GAAQA,GAAS7C,EAAE6C,OANvD,KAAIvH,EAAWma,EAAOre,KAAK4I,GAAItD,EAAS,GAAIuN,KAAKqL,EAAOha,EAASqX,QAAQV,KAAMpP,IAC7EnG,EAAOmG,GAAS2S,EAAUpe,EAAKkE,EAAUia,GAAQD,EAAK7a,MAAOoI,IAAQ,GAAQyS,EAAK7a,KAStF,OADAiC,GAAOV,OAAS6G,EACTnG,MAON,SAASzF,EAAQD,EAASH,GAG/B,GAAI2B,GAAW3B,EAAoB,GACnCI,GAAOD,QAAU,SAASsE,EAAUgF,EAAI7F,EAAO2Y,GAC7C,IACE,MAAOA,GAAU9S,EAAG9H,EAASiC,GAAO,GAAIA,EAAM,IAAM6F,EAAG7F,GAEvD,MAAMkE,GACN,GAAI+W,GAAMpa,EAAS,SAEnB,MADGoa,KAAQ/e,GAAU6B,EAASkd,EAAIte,KAAKkE,IACjCqD,KAML,SAAS1H,EAAQD,EAASH,GAG/B,GAAIsb,GAAatb,EAAoB,KACjCwb,EAAaxb,EAAoB,IAAI,YACrC8e,EAAavR,MAAMjD,SAEvBlK,GAAOD,QAAU,SAAS2D,GACxB,MAAOA,KAAOhE,IAAcwb,EAAU/N,QAAUzJ,GAAMgb,EAAWtD,KAAc1X,KAK5E,SAAS1D,EAAQD,EAASH,GAE/B,GAAI4Q,GAAY5Q,EAAoB,IAChCwb,EAAYxb,EAAoB,IAAI,YACpCsb,EAAYtb,EAAoB,IACpCI,GAAOD,QAAUH,EAAoB,GAAG+e,kBAAoB,SAASjb,GACnE,MAAGA,IAAMhE,EAAiBgE,EAAG0X,IACxB1X,EAAG,eACHwX,EAAU1K,EAAQ9M,IAFvB,SAOG,SAAS1D,EAAQD,EAASH,GAE/B,GAAIwb,GAAexb,EAAoB,IAAI,YACvCgf,GAAe,CAEnB,KACE,GAAIC,IAAS,GAAGzD,IAChByD,GAAM,UAAY,WAAYD,GAAe,GAC7CzR,MAAMgR,KAAKU,EAAO,WAAY,KAAM,KACpC,MAAMnX,IAER1H,EAAOD,QAAU,SAAS0H,EAAMqX,GAC9B,IAAIA,IAAgBF,EAAa,OAAO,CACxC,IAAI9U,IAAO,CACX,KACE,GAAIiV,IAAQ,GACRb,EAAOa,EAAI3D,IACf8C,GAAKxC,KAAO,WAAY5R,GAAO,GAC/BiV,EAAI3D,GAAY,WAAY,MAAO8C,IACnCzW,EAAKsX,GACL,MAAMrX,IACR,MAAOoC,KAKJ,SAAS9J,EAAQD,EAASH,GAG/B,GAAIe,GAAUf,EAAoB,EAGlCe,GAAQA,EAAQyF,EAAIzF,EAAQ8F,EAAI7G,EAAoB,GAAG,WACrD,QAAS6G,MACT,QAAS0G,MAAM6R,GAAG7e,KAAKsG,YAAcA,MACnC,SAEFuY,GAAI,QAASA,MAIX,IAHA,GAAIpT,GAAS,EACTkE,EAAS7J,UAAUlB,OACnBU,EAAS,IAAoB,kBAARlC,MAAqBA,KAAO4J,OAAO2C,GACtDA,EAAOlE,GAAMnG,EAAOmG,GAAS3F,UAAU2F,IAE7C,OADAnG,GAAOV,OAAS+K,EACTrK,MAMN,SAASzF,EAAQD,EAASH,GAI/B,GAAIe,GAAYf,EAAoB,GAChC4B,EAAY5B,EAAoB,IAChCqf,KAAejV;AAGnBrJ,EAAQA,EAAQgE,EAAIhE,EAAQ8F,GAAK7G,EAAoB,KAAOsD,SAAWtD,EAAoB,KAAKqf,IAAa,SAC3GjV,KAAM,QAASA,MAAKkV,GAClB,MAAOD,GAAU9e,KAAKqB,EAAU+B,MAAO2b,IAAcxf,EAAY,IAAMwf,OAMtE,SAASlf,EAAQD,EAASH,GAE/B,GAAI4O,GAAQ5O,EAAoB,EAEhCI,GAAOD,QAAU,SAASof,EAAQ/R,GAChC,QAAS+R,GAAU3Q,EAAM,WACvBpB,EAAM+R,EAAOhf,KAAK,KAAM,aAAc,GAAKgf,EAAOhf,KAAK,UAMtD,SAASH,EAAQD,EAASH,GAG/B,GAAIe,GAAaf,EAAoB,GACjCwf,EAAaxf,EAAoB,IACjCuM,EAAavM,EAAoB,IACjC0M,EAAa1M,EAAoB,IACjCyM,EAAazM,EAAoB,IACjCkR,KAAgB1E,KAGpBzL,GAAQA,EAAQgE,EAAIhE,EAAQ8F,EAAI7G,EAAoB,GAAG,WAClDwf,GAAKtO,EAAW3Q,KAAKif,KACtB,SACFhT,MAAO,QAASA,OAAMiT,EAAOpF,GAC3B,GAAIhJ,GAAQ5E,EAAS9I,KAAKwB,QACtBua,EAAQnT,EAAI5I,KAEhB,IADA0W,EAAMA,IAAQva,EAAYuR,EAAMgJ,EACpB,SAATqF,EAAiB,MAAOxO,GAAW3Q,KAAKoD,KAAM8b,EAAOpF,EAMxD,KALA,GAAIsF,GAASjT,EAAQ+S,EAAOpO,GACxBuO,EAASlT,EAAQ2N,EAAKhJ,GACtBuM,EAASnR,EAASmT,EAAOD,GACzBE,EAAStS,MAAMqQ,GACf3Y,EAAS,EACH2Y,EAAJ3Y,EAAUA,IAAI4a,EAAO5a,GAAc,UAATya,EAC5B/b,KAAK+S,OAAOiJ,EAAQ1a,GACpBtB,KAAKgc,EAAQ1a,EACjB,OAAO4a,OAMN,SAASzf,EAAQD,EAASH,GAG/B,GAAIe,GAAYf,EAAoB,GAChC0K,EAAY1K,EAAoB,IAChC6O,EAAY7O,EAAoB,IAChC4O,EAAY5O,EAAoB,GAChC8f,KAAeC,KACftP,GAAa,EAAG,EAAG,EAEvB1P,GAAQA,EAAQgE,EAAIhE,EAAQ8F,GAAK+H,EAAM,WAErC6B,EAAKsP,KAAKjgB,OACL8O,EAAM,WAEX6B,EAAKsP,KAAK,UAEL/f,EAAoB,KAAK8f,IAAS,SAEvCC,KAAM,QAASA,MAAKC,GAClB,MAAOA,KAAclgB,EACjBggB,EAAMvf,KAAKsO,EAASlL,OACpBmc,EAAMvf,KAAKsO,EAASlL,MAAO+G,EAAUsV,QAMxC,SAAS5f,EAAQD,EAASH,GAG/B,GAAIe,GAAWf,EAAoB,GAC/BigB,EAAWjgB,EAAoB,KAAK,GACpCkgB,EAAWlgB,EAAoB,QAAQ+P,SAAS,EAEpDhP,GAAQA,EAAQgE,EAAIhE,EAAQ8F,GAAKqZ,EAAQ,SAEvCnQ,QAAS,QAASA,SAAQoQ,GACxB,MAAOF,GAAStc,KAAMwc,EAAY9Z,UAAU,QAM3C,SAASjG,EAAQD,EAASH,GAS/B,GAAIgI,GAAWhI,EAAoB,IAC/BqM,EAAWrM,EAAoB,IAC/B6O,EAAW7O,EAAoB,IAC/ByM,EAAWzM,EAAoB,IAC/BogB,EAAWpgB,EAAoB,IACnCI,GAAOD,QAAU,SAAS4T,EAAM3O,GAC9B,GAAIib,GAAwB,GAARtM,EAChBuM,EAAwB,GAARvM,EAChBwM,EAAwB,GAARxM,EAChByM,EAAwB,GAARzM,EAChB0M,EAAwB,GAAR1M,EAChB2M,EAAwB,GAAR3M,GAAa0M,EAC7Bpb,EAAgBD,GAAWgb,CAC/B,OAAO,UAASxT,EAAOuT,EAAYxV,GAQjC,IAPA,GAMIjB,GAAKgM,EANLvM,EAAS0F,EAASjC,GAClBnF,EAAS4E,EAAQlD,GACjB/G,EAAS4F,EAAImY,EAAYxV,EAAM,GAC/BxF,EAASsH,EAAShF,EAAKtC,QACvB6G,EAAS,EACTnG,EAASwa,EAAShb,EAAOuH,EAAOzH,GAAUmb,EAAYjb,EAAOuH,EAAO,GAAK9M,EAExEqF,EAAS6G,EAAOA,IAAQ,IAAG0U,GAAY1U,IAASvE,MACnDiC,EAAMjC,EAAKuE,GACX0J,EAAMtT,EAAEsH,EAAKsC,EAAO7C,GACjB4K,GACD,GAAGsM,EAAOxa,EAAOmG,GAAS0J,MACrB,IAAGA,EAAI,OAAO3B,GACjB,IAAK,GAAG,OAAO,CACf,KAAK,GAAG,MAAOrK,EACf,KAAK,GAAG,MAAOsC,EACf,KAAK,GAAGnG,EAAOC,KAAK4D,OACf,IAAG8W,EAAS,OAAO,CAG9B,OAAOC,GAAgB,GAAKF,GAAWC,EAAWA,EAAW3a,KAM5D,SAASzF,EAAQD,EAASH,GAG/B,GAAIqJ,GAAWrJ,EAAoB,IAC/B0B,EAAW1B,EAAoB,IAC/B2gB,EAAW3gB,EAAoB,IAAI,UACvCI,GAAOD,QAAU,SAASygB,EAAUzb,GAClC,GAAIiO,EASF,OARC1R,GAAQkf,KACTxN,EAAIwN,EAAS5R,YAEE,kBAALoE,IAAoBA,IAAM7F,QAAS7L,EAAQ0R,EAAE9I,aAAY8I,EAAItT,GACpEuJ,EAAS+J,KACVA,EAAIA,EAAEuN,GACG,OAANvN,IAAWA,EAAItT,KAEb,IAAKsT,IAAMtT,EAAYyN,MAAQ6F,GAAGjO,KAKxC,SAAS/E,EAAQD,EAASH,GAG/B,GAAIe,GAAUf,EAAoB,GAC9B6gB,EAAU7gB,EAAoB,KAAK,EAEvCe,GAAQA,EAAQgE,EAAIhE,EAAQ8F,GAAK7G,EAAoB,QAAQ8gB,KAAK,GAAO,SAEvEA,IAAK,QAASA,KAAIX,GAChB,MAAOU,GAAKld,KAAMwc,EAAY9Z,UAAU,QAMvC,SAASjG,EAAQD,EAASH,GAG/B,GAAIe,GAAUf,EAAoB,GAC9B+gB,EAAU/gB,EAAoB,KAAK,EAEvCe,GAAQA,EAAQgE,EAAIhE,EAAQ8F,GAAK7G,EAAoB,QAAQghB,QAAQ,GAAO,SAE1EA,OAAQ,QAASA,QAAOb,GACtB,MAAOY,GAAQpd,KAAMwc,EAAY9Z,UAAU,QAM1C,SAASjG,EAAQD,EAASH,GAG/B,GAAIe,GAAUf,EAAoB,GAC9BihB,EAAUjhB,EAAoB,KAAK,EAEvCe,GAAQA,EAAQgE,EAAIhE,EAAQ8F,GAAK7G,EAAoB,QAAQkhB,MAAM,GAAO,SAExEA,KAAM,QAASA,MAAKf,GAClB,MAAOc,GAAMtd,KAAMwc,EAAY9Z,UAAU,QAMxC,SAASjG,EAAQD,EAASH,GAG/B,GAAIe,GAAUf,EAAoB,GAC9BmhB,EAAUnhB,EAAoB,KAAK,EAEvCe,GAAQA,EAAQgE,EAAIhE,EAAQ8F,GAAK7G,EAAoB,QAAQohB,OAAO,GAAO,SAEzEA,MAAO,QAASA,OAAMjB,GACpB,MAAOgB,GAAOxd,KAAMwc,EAAY9Z,UAAU,QAMzC,SAASjG,EAAQD,EAASH,GAG/B,GAAIe,GAAUf,EAAoB,GAC9BqhB,EAAUrhB,EAAoB,IAElCe,GAAQA,EAAQgE,EAAIhE,EAAQ8F,GAAK7G,EAAoB,QAAQshB,QAAQ,GAAO,SAE1EA,OAAQ,QAASA,QAAOnB,GACtB,MAAOkB,GAAQ1d,KAAMwc,EAAY9Z,UAAUlB,OAAQkB,UAAU,IAAI,OAMhE,SAASjG,EAAQD,EAASH,GAE/B,GAAI0K,GAAY1K,EAAoB,IAChC6O,EAAY7O,EAAoB,IAChCqM,EAAYrM,EAAoB,IAChCyM,EAAYzM,EAAoB,GAEpCI,GAAOD,QAAU,SAASwK,EAAMwV,EAAYjQ,EAAMqR,EAAMC,GACtD9W,EAAUyV,EACV,IAAIhX,GAAS0F,EAASlE,GAClBlD,EAAS4E,EAAQlD,GACjBhE,EAASsH,EAAStD,EAAEhE,QACpB6G,EAASwV,EAAUrc,EAAS,EAAI,EAChCF,EAASuc,EAAU,GAAK,CAC5B,IAAU,EAAPtR,EAAS,OAAO,CACjB,GAAGlE,IAASvE,GAAK,CACf8Z,EAAO9Z,EAAKuE,GACZA,GAAS/G,CACT,OAGF,GADA+G,GAAS/G,EACNuc,EAAkB,EAARxV,EAAsBA,GAAV7G,EACvB,KAAMsB,WAAU,+CAGpB,KAAK+a,EAAUxV,GAAS,EAAI7G,EAAS6G,EAAOA,GAAS/G,EAAK+G,IAASvE,KACjE8Z,EAAOpB,EAAWoB,EAAM9Z,EAAKuE,GAAQA,EAAO7C,GAE9C,OAAOoY,KAKJ,SAASnhB,EAAQD,EAASH,GAG/B,GAAIe,GAAUf,EAAoB,GAC9BqhB,EAAUrhB,EAAoB,IAElCe,GAAQA,EAAQgE,EAAIhE,EAAQ8F,GAAK7G,EAAoB,QAAQyhB,aAAa,GAAO,SAE/EA,YAAa,QAASA,aAAYtB,GAChC,MAAOkB,GAAQ1d,KAAMwc,EAAY9Z,UAAUlB,OAAQkB,UAAU,IAAI,OAMhE,SAASjG,EAAQD,EAASH,GAG/B,GAAIe,GAAWf,EAAoB,GAC/B0hB,EAAW1hB,EAAoB,KAAI,EAEvCe,GAAQA,EAAQgE,EAAIhE,EAAQ8F,GAAK7G,EAAoB,QAAQ4a,SAAU,SAErEA,QAAS,QAASA,SAAQ+G,GACxB,MAAOD,GAAS/d,KAAMge,EAAetb,UAAU,QAM9C,SAASjG,EAAQD,EAASH,GAG/B,GAAIe,GAAYf,EAAoB,GAChC4B,EAAY5B,EAAoB,IAChC8M,EAAY9M,EAAoB,IAChCyM,EAAYzM,EAAoB,GAEpCe,GAAQA,EAAQgE,EAAIhE,EAAQ8F,GAAK7G,EAAoB,QAAQ4hB,aAAc,SAEzEA,YAAa,QAASA,aAAYD,GAChC,GAAIxY,GAASvH,EAAU+B,MACnBwB,EAASsH,EAAStD,EAAEhE,QACpB6G,EAAS7G,EAAS,CAGtB,KAFGkB,UAAUlB,OAAS,IAAE6G,EAAQzE,KAAKwF,IAAIf,EAAOc,EAAUzG,UAAU,MACzD,EAAR2F,IAAUA,EAAQ7G,EAAS6G,GACzBA,GAAS,EAAGA,IAAQ,GAAGA,IAAS7C,IAAKA,EAAE6C,KAAW2V,EAAc,MAAO3V,EAC5E,OAAO,OAMN,SAAS5L,EAAQD,EAASH,GAG/B,GAAIe,GAAUf,EAAoB,EAElCe,GAAQA,EAAQgE,EAAG,SAAU8c,WAAY7hB,EAAoB,OAE7DA,EAAoB,KAAK,eAIpB,SAASI,EAAQD,EAASH,GAI/B,GAAI6O,GAAW7O,EAAoB,IAC/B0M,EAAW1M,EAAoB,IAC/ByM,EAAWzM,EAAoB,GAEnCI,GAAOD,WAAa0hB,YAAc,QAASA,YAAWhZ,EAAe8W,GACnE,GAAIxW,GAAQ0F,EAASlL,MACjB0N,EAAQ5E,EAAStD,EAAEhE,QACnB2c,EAAQpV,EAAQ7D,EAAQwI,GACxBkN,EAAQ7R,EAAQiT,EAAOtO,GACvBgJ,EAAQhU,UAAUlB,OAAS,EAAIkB,UAAU,GAAKvG,EAC9C0V,EAAQjO,KAAKwF,KAAKsN,IAAQva,EAAYuR,EAAM3E,EAAQ2N,EAAKhJ,IAAQkN,EAAMlN,EAAMyQ,GAC7EC,EAAQ,CAMZ,KALUD,EAAPvD,GAAkBA,EAAO/I,EAAZsM,IACdC,EAAO,GACPxD,GAAQ/I,EAAQ,EAChBsM,GAAQtM,EAAQ,GAEZA,KAAU,GACX+I,IAAQpV,GAAEA,EAAE2Y,GAAM3Y,EAAEoV,SACXpV,GAAE2Y,GACdA,GAAQC,EACRxD,GAAQwD,CACR,OAAO5Y,KAKN,SAAS/I,EAAQD,EAASH,GAG/B,GAAIgiB,GAAchiB,EAAoB,IAAI,eACtC8e,EAAcvR,MAAMjD,SACrBwU,GAAWkD,IAAgBliB,GAAUE,EAAoB,GAAG8e,EAAYkD,MAC3E5hB,EAAOD,QAAU,SAAS4D,GACxB+a,EAAWkD,GAAaje,IAAO,IAK5B,SAAS3D,EAAQD,EAASH,GAG/B,GAAIe,GAAUf,EAAoB,EAElCe,GAAQA,EAAQgE,EAAG,SAAUkd,KAAMjiB,EAAoB,OAEvDA,EAAoB,KAAK,SAIpB,SAASI,EAAQD,EAASH,GAI/B,GAAI6O,GAAW7O,EAAoB,IAC/B0M,EAAW1M,EAAoB,IAC/ByM,EAAWzM,EAAoB,GACnCI,GAAOD,QAAU,QAAS8hB,MAAKre,GAO7B,IANA,GAAIuF,GAAS0F,EAASlL,MAClBwB,EAASsH,EAAStD,EAAEhE,QACpB+K,EAAS7J,UAAUlB,OACnB6G,EAASU,EAAQwD,EAAO,EAAI7J,UAAU,GAAKvG,EAAWqF,GACtDkV,EAASnK,EAAO,EAAI7J,UAAU,GAAKvG,EACnCoiB,EAAS7H,IAAQva,EAAYqF,EAASuH,EAAQ2N,EAAKlV,GACjD+c,EAASlW,GAAM7C,EAAE6C,KAAWpI,CAClC,OAAOuF,KAKJ,SAAS/I,EAAQD,EAASH,GAI/B,GAAIe,GAAUf,EAAoB,GAC9BmiB,EAAUniB,EAAoB,KAAK,GACnCkB,EAAU,OACVkhB,GAAU,CAEXlhB,SAAUqM,MAAM,GAAGrM,GAAK,WAAYkhB,GAAS,IAChDrhB,EAAQA,EAAQgE,EAAIhE,EAAQ8F,EAAIub,EAAQ,SACtCC,KAAM,QAASA,MAAKlC,GAClB,MAAOgC,GAAMxe,KAAMwc,EAAY9Z,UAAUlB,OAAS,EAAIkB,UAAU,GAAKvG,MAGzEE,EAAoB,KAAKkB,IAIpB,SAASd,EAAQD,EAASH,GAI/B,GAAIe,GAAUf,EAAoB,GAC9BmiB,EAAUniB,EAAoB,KAAK,GACnCkB,EAAU,YACVkhB,GAAU,CAEXlhB,SAAUqM,MAAM,GAAGrM,GAAK,WAAYkhB,GAAS,IAChDrhB,EAAQA,EAAQgE,EAAIhE,EAAQ8F,EAAIub,EAAQ,SACtCE,UAAW,QAASA,WAAUnC,GAC5B,MAAOgC,GAAMxe,KAAMwc,EAAY9Z,UAAUlB,OAAS,EAAIkB,UAAU,GAAKvG,MAGzEE,EAAoB,KAAKkB,IAIpB,SAASd,EAAQD,EAASH,GAG/B,GAAIuiB,GAAmBviB,EAAoB,KACvCye,EAAmBze,EAAoB,KACvCsb,EAAmBtb,EAAoB,KACvC4B,EAAmB5B,EAAoB,GAM3CI,GAAOD,QAAUH,EAAoB,KAAKuN,MAAO,QAAS,SAASyN,EAAUqB,GAC3E1Y,KAAKsX,GAAKrZ,EAAUoZ,GACpBrX,KAAKuX,GAAK,EACVvX,KAAKU,GAAKgY,GAET,WACD,GAAIlT,GAAQxF,KAAKsX,GACboB,EAAQ1Y,KAAKU,GACb2H,EAAQrI,KAAKuX,IACjB,QAAI/R,GAAK6C,GAAS7C,EAAEhE,QAClBxB,KAAKsX,GAAKnb,EACH2e,EAAK,IAEH,QAARpC,EAAwBoC,EAAK,EAAGzS,GACxB,UAARqQ,EAAwBoC,EAAK,EAAGtV,EAAE6C,IAC9ByS,EAAK,GAAIzS,EAAO7C,EAAE6C,MACxB,UAGHsP,EAAUkH,UAAYlH,EAAU/N,MAEhCgV,EAAiB,QACjBA,EAAiB,UACjBA,EAAiB,YAIZ,SAASniB,EAAQD,GAEtBC,EAAOD,QAAU,SAASib,EAAMxX,GAC9B,OAAQA,MAAOA,EAAOwX,OAAQA,KAK3B,SAAShb,EAAQD,EAASH,GAE/BA,EAAoB,KAAK,UAIpB,SAASI,EAAQD,EAASH,GAG/B,GAAIW,GAAcX,EAAoB,GAClCqC,EAAcrC,EAAoB,GAClCc,EAAcd,EAAoB,GAClC2gB,EAAc3gB,EAAoB,IAAI,UAE1CI,GAAOD,QAAU,SAASe,GACxB,GAAIkS,GAAIzS,EAAOO,EACZJ,IAAesS,IAAMA,EAAEuN,IAASte,EAAGD,EAAEgR,EAAGuN,GACzCrc,cAAc,EACdZ,IAAK,WAAY,MAAOC,WAMvB,SAASvD,EAAQD,EAASH,GAE/B,GAAIW,GAAoBX,EAAoB,GACxCgS,EAAoBhS,EAAoB,IACxCqC,EAAoBrC,EAAoB,GAAGoC,EAC3CE,EAAoBtC,EAAoB,IAAIoC,EAC5CmY,EAAoBva,EAAoB,KACxCyiB,EAAoBziB,EAAoB,KACxC0iB,EAAoB/hB,EAAO8S,OAC3BpB,EAAoBqQ,EACpBlS,EAAoBkS,EAAQpY,UAC5BqY,EAAoB,KACpBC,EAAoB,KAEpBC,EAAoB,GAAIH,GAAQC,KAASA,CAE7C,IAAG3iB,EAAoB,MAAQ6iB,GAAe7iB,EAAoB,GAAG,WAGnE,MAFA4iB,GAAI5iB,EAAoB,IAAI,WAAY,EAEjC0iB,EAAQC,IAAQA,GAAOD,EAAQE,IAAQA,GAA4B,QAArBF,EAAQC,EAAK,QAChE,CACFD,EAAU,QAASjP,QAAO/S,EAAG0B,GAC3B,GAAI0gB,GAAOnf,eAAgB+e,GACvBK,EAAOxI,EAAS7Z,GAChBsiB,EAAO5gB,IAAMtC,CACjB,QAAQgjB,GAAQC,GAAQriB,EAAEsO,cAAgB0T,GAAWM,EAAMtiB,EACvDsR,EAAkB6Q,EAChB,GAAIxQ,GAAK0Q,IAASC,EAAMtiB,EAAEyH,OAASzH,EAAG0B,GACtCiQ,GAAM0Q,EAAOriB,YAAagiB,IAAWhiB,EAAEyH,OAASzH,EAAGqiB,GAAQC,EAAMP,EAAOliB,KAAKG,GAAK0B,GACpF0gB,EAAOnf,KAAO6M,EAAOkS,GAS3B,KAAI,GAPAO,IAAQ,SAASlf,GACnBA,IAAO2e,IAAWrgB,EAAGqgB,EAAS3e,GAC5BO,cAAc,EACdZ,IAAK,WAAY,MAAO2O,GAAKtO,IAC7BQ,IAAK,SAAST,GAAKuO,EAAKtO,GAAOD,OAG3BkB,EAAO1C,EAAK+P,GAAOpN,EAAI,EAAGD,EAAKG,OAASF,GAAIge,EAAMje,EAAKC,KAC/DuL,GAAMxB,YAAc0T,EACpBA,EAAQpY,UAAYkG,EACpBxQ,EAAoB,IAAIW,EAAQ,SAAU+hB,GAG5C1iB,EAAoB,KAAK,WAIpB,SAASI,EAAQD,EAASH,GAI/B,GAAI2B,GAAW3B,EAAoB,GACnCI,GAAOD,QAAU,WACf,GAAIwK,GAAShJ,EAASgC,MAClBkC,EAAS,EAMb,OALG8E,GAAKhK,SAAYkF,GAAU,KAC3B8E,EAAKuY,aAAYrd,GAAU,KAC3B8E,EAAKwY,YAAYtd,GAAU,KAC3B8E,EAAKyY,UAAYvd,GAAU,KAC3B8E,EAAK0Y,SAAYxd,GAAU,KACvBA,IAKJ,SAASzF,EAAQD,EAASH,GAG/BA,EAAoB,IACpB,IAAI2B,GAAc3B,EAAoB,IAClCyiB,EAAcziB,EAAoB,KAClCc,EAAcd,EAAoB,GAClC8J,EAAc,WACdC,EAAc,IAAID,GAElBwZ,EAAS,SAAS7Z,GACpBzJ,EAAoB,IAAIyT,OAAOnJ,UAAWR,EAAWL,GAAI,GAIxDzJ,GAAoB,GAAG,WAAY,MAAoD,QAA7C+J,EAAUxJ,MAAM4H,OAAQ,IAAKob,MAAO,QAC/ED,EAAO,QAAS5c,YACd,GAAIsC,GAAIrH,EAASgC,KACjB,OAAO,IAAI8G,OAAOzB,EAAEb,OAAQ,IAC1B,SAAWa,GAAIA,EAAEua,OAASziB,GAAekI,YAAayK,QAASgP,EAAOliB,KAAKyI,GAAKlJ,KAG5EiK,EAAU7B,MAAQ4B,GAC1BwZ,EAAO,QAAS5c,YACd,MAAOqD,GAAUxJ,KAAKoD,SAMrB,SAASvD,EAAQD,EAASH,GAG5BA,EAAoB,IAAoB,KAAd,KAAKujB,OAAavjB,EAAoB,GAAGoC,EAAEqR,OAAOnJ,UAAW,SACxFhG,cAAc,EACdZ,IAAK1D,EAAoB,QAKtB,SAASI,EAAQD,EAASH,GAG/BA,EAAoB,KAAK,QAAS,EAAG,SAASsM,EAASkO,EAAOgJ,GAE5D,OAAQ,QAAS3R,OAAM4R,GAErB,GAAIta,GAAKmD,EAAQ3I,MACb8F,EAAKga,GAAU3jB,EAAYA,EAAY2jB,EAAOjJ,EAClD,OAAO/Q,KAAO3J,EAAY2J,EAAGlJ,KAAKkjB,EAAQta,GAAK,GAAIsK,QAAOgQ,GAAQjJ,GAAOnQ,OAAOlB,KAC/Eqa,MAKA,SAASpjB,EAAQD,EAASH,GAG/B,GAAI+H,GAAW/H,EAAoB,GAC/BgB,EAAWhB,EAAoB,IAC/B4O,EAAW5O,EAAoB,GAC/BsM,EAAWtM,EAAoB,IAC/BuB,EAAWvB,EAAoB,GAEnCI,GAAOD,QAAU,SAASe,EAAKiE,EAAQ0C,GACrC,GAAI6b,GAAWniB,EAAIL,GACfyiB,EAAW9b,EAAKyE,EAASoX,EAAQ,GAAGxiB,IACpC0iB,EAAWD,EAAI,GACfE,EAAWF,EAAI,EAChB/U,GAAM,WACP,GAAIzF,KAEJ,OADAA,GAAEua,GAAU,WAAY,MAAO,IACV,GAAd,GAAGxiB,GAAKiI,OAEfnI,EAASqJ,OAAOC,UAAWpJ,EAAK0iB,GAChC7b,EAAK0L,OAAOnJ,UAAWoZ,EAAkB,GAAVve,EAG3B,SAAS2O,EAAQtG,GAAM,MAAOqW,GAAKtjB,KAAKuT,EAAQnQ,KAAM6J,IAGtD,SAASsG,GAAS,MAAO+P,GAAKtjB,KAAKuT,EAAQnQ,WAO9C,SAASvD,EAAQD,EAASH,GAG/BA,EAAoB,KAAK,UAAW,EAAG,SAASsM,EAASwX,EAASC,GAEhE,OAAQ,QAAS/P,SAAQgQ,EAAaC,GAEpC,GAAI9a,GAAKmD,EAAQ3I,MACb8F,EAAKua,GAAelkB,EAAYA,EAAYkkB,EAAYF,EAC5D,OAAOra,KAAO3J,EACV2J,EAAGlJ,KAAKyjB,EAAa7a,EAAG8a,GACxBF,EAASxjB,KAAK8J,OAAOlB,GAAI6a,EAAaC,IACzCF,MAKA,SAAS3jB,EAAQD,EAASH,GAG/BA,EAAoB,KAAK,SAAU,EAAG,SAASsM,EAAS4X,EAAQC,GAE9D,OAAQ,QAAS7J,QAAOmJ,GAEtB,GAAIta,GAAKmD,EAAQ3I,MACb8F,EAAKga,GAAU3jB,EAAYA,EAAY2jB,EAAOS,EAClD,OAAOza,KAAO3J,EAAY2J,EAAGlJ,KAAKkjB,EAAQta,GAAK,GAAIsK,QAAOgQ,GAAQS,GAAQ7Z,OAAOlB,KAChFgb,MAKA,SAAS/jB,EAAQD,EAASH,GAG/BA,EAAoB,KAAK,QAAS,EAAG,SAASsM,EAAS8X,EAAOC,GAE5D,GAAI9J,GAAava,EAAoB,KACjCskB,EAAaD,EACbE,KAAgBze,KAChB0e,EAAa,QACbC,EAAa,SACbC,EAAa,WACjB,IAC+B,KAA7B,OAAOF,GAAQ,QAAQ,IACe,GAAtC,OAAOA,GAAQ,OAAQ,IAAIC,IACQ,GAAnC,KAAKD,GAAQ,WAAWC,IACW,GAAnC,IAAID,GAAQ,YAAYC,IACxB,IAAID,GAAQ,QAAQC,GAAU,GAC9B,GAAGD,GAAQ,MAAMC,GAClB,CACC,GAAIE,GAAO,OAAO9c,KAAK,IAAI,KAAO/H,CAElCukB,GAAS,SAAS/E,EAAWsF,GAC3B,GAAI9Q,GAASzJ,OAAO1G,KACpB,IAAG2b,IAAcxf,GAAuB,IAAV8kB,EAAY,QAE1C,KAAIrK,EAAS+E,GAAW,MAAOgF,GAAO/jB,KAAKuT,EAAQwL,EAAWsF,EAC9D,IASIC,GAAYhT,EAAOiT,EAAWC,EAAY9f,EAT1C+f,KACAzB,GAASjE,EAAU4D,WAAa,IAAM,KAC7B5D,EAAU6D,UAAY,IAAM,KAC5B7D,EAAU8D,QAAU,IAAM,KAC1B9D,EAAU+D,OAAS,IAAM,IAClC4B,EAAgB,EAChBC,EAAaN,IAAU9kB,EAAY,WAAa8kB,IAAU,EAE1DO,EAAgB,GAAI1R,QAAO6L,EAAUnX,OAAQob,EAAQ,IAIzD,KADIoB,IAAKE,EAAa,GAAIpR,QAAO,IAAM0R,EAAchd,OAAS,WAAYob,KACpE1R,EAAQsT,EAActd,KAAKiM,MAE/BgR,EAAYjT,EAAM7F,MAAQ6F,EAAM,GAAG4S,KAChCK,EAAYG,IACbD,EAAOlf,KAAKgO,EAAOtH,MAAMyY,EAAepT,EAAM7F,SAE1C2Y,GAAQ9S,EAAM4S,GAAU,GAAE5S,EAAM,GAAGmC,QAAQ6Q,EAAY,WACzD,IAAI5f,EAAI,EAAOoB,UAAUoe,GAAU,EAAxBxf,EAA2BA,IAAOoB,UAAUpB,KAAOnF,IAAU+R,EAAM5M,GAAKnF,KAElF+R,EAAM4S,GAAU,GAAmB3Q,EAAO2Q,GAArB5S,EAAM7F,OAAuBuY,EAAMje,MAAM0e,EAAQnT,EAAMrF,MAAM,IACrFuY,EAAalT,EAAM,GAAG4S,GACtBQ,EAAgBH,EACbE,EAAOP,IAAWS,MAEpBC,EAAcT,KAAgB7S,EAAM7F,OAAMmZ,EAAcT,IAK7D,OAHGO,KAAkBnR,EAAO2Q,IACvBM,GAAeI,EAAc1U,KAAK,KAAIuU,EAAOlf,KAAK,IAChDkf,EAAOlf,KAAKgO,EAAOtH,MAAMyY,IACzBD,EAAOP,GAAUS,EAAaF,EAAOxY,MAAM,EAAG0Y,GAAcF,OAG7D,IAAIR,GAAQ1kB,EAAW,GAAG2kB,KAClCJ,EAAS,SAAS/E,EAAWsF,GAC3B,MAAOtF,KAAcxf,GAAuB,IAAV8kB,KAAmBN,EAAO/jB,KAAKoD,KAAM2b,EAAWsF,IAItF,QAAQ,QAAS7d,OAAMuY,EAAWsF,GAChC,GAAIzb,GAAKmD,EAAQ3I,MACb8F,EAAK6V,GAAaxf,EAAYA,EAAYwf,EAAU8E,EACxD,OAAO3a,KAAO3J,EAAY2J,EAAGlJ,KAAK+e,EAAWnW,EAAGyb,GAASP,EAAO9jB,KAAK8J,OAAOlB,GAAImW,EAAWsF,IAC1FP,MAKA,SAASjkB,EAAQD,EAASH,GAG/B,GAqBIolB,GAAUC,EAA0Bre,EArBpCqU,EAAqBrb,EAAoB,IACzCW,EAAqBX,EAAoB,GACzCgI,EAAqBhI,EAAoB,IACzC4Q,EAAqB5Q,EAAoB,IACzCe,EAAqBf,EAAoB,GACzCqJ,EAAqBrJ,EAAoB,IAEzC0K,GADqB1K,EAAoB,IACpBA,EAAoB,KACzCslB,EAAqBtlB,EAAoB,IACzCulB,EAAqBvlB,EAAoB,KAEzCwlB,GADqBxlB,EAAoB,IAAIuE,IACxBvE,EAAoB,MACzCylB,EAAqBzlB,EAAoB,KAAKuE,IAC9CmhB,EAAqB1lB,EAAoB,KACzC2lB,EAAqB,UACrBlf,EAAqB9F,EAAO8F,UAC5Bmf,EAAqBjlB,EAAOilB,QAC5BC,EAAqBllB,EAAOglB,GAC5BC,EAAqBjlB,EAAOilB,QAC5BE,EAAyC,WAApBlV,EAAQgV,GAC7BG,EAAqB,aAGrBxiB,IAAe,WACjB,IAEE,GAAIyiB,GAAcH,EAASI,QAAQ,GAC/BC,GAAeF,EAAQhX,gBAAkBhP,EAAoB,IAAI,YAAc,SAAS6H,GAAOA,EAAKke,EAAOA,GAE/G,QAAQD,GAA0C,kBAAzBK,yBAAwCH,EAAQI,KAAKL,YAAkBG,GAChG,MAAMpe,QAINue,EAAkB,SAASxiB,EAAG+G,GAEhC,MAAO/G,KAAM+G,GAAK/G,IAAMgiB,GAAYjb,IAAM5D,GAExCsf,EAAa,SAASxiB,GACxB,GAAIsiB,EACJ,OAAO/c,GAASvF,IAAkC,mBAAnBsiB,EAAOtiB,EAAGsiB,MAAsBA,GAAO,GAEpEG,EAAuB,SAASnT,GAClC,MAAOiT,GAAgBR,EAAUzS,GAC7B,GAAIoT,GAAkBpT,GACtB,GAAIiS,GAAyBjS,IAE/BoT,EAAoBnB,EAA2B,SAASjS,GAC1D,GAAI6S,GAASQ,CACb9iB,MAAKqiB,QAAU,GAAI5S,GAAE,SAASsT,EAAWC,GACvC,GAAGV,IAAYnmB,GAAa2mB,IAAW3mB,EAAU,KAAM2G,GAAU,0BACjEwf,GAAUS,EACVD,EAAUE,IAEZhjB,KAAKsiB,QAAUvb,EAAUub,GACzBtiB,KAAK8iB,OAAU/b,EAAU+b,IAEvBG,EAAU,SAAS/e,GACrB,IACEA,IACA,MAAMC,GACN,OAAQ+e,MAAO/e,KAGfgf,EAAS,SAASd,EAASe,GAC7B,IAAGf,EAAQgB,GAAX,CACAhB,EAAQgB,IAAK,CACb,IAAIC,GAAQjB,EAAQkB,EACpBxB,GAAU,WAgCR,IA/BA,GAAI9hB,GAAQoiB,EAAQmB,GAChBC,EAAsB,GAAdpB,EAAQqB,GAChBpiB,EAAQ,EACRqiB,EAAM,SAASC,GACjB,GAII1hB,GAAQugB,EAJRoB,EAAUJ,EAAKG,EAASH,GAAKG,EAASE,KACtCxB,EAAUsB,EAAStB,QACnBQ,EAAUc,EAASd,OACnBiB,EAAUH,EAASG,MAEvB,KACKF,GACGJ,IACe,GAAdpB,EAAQ2B,IAAQC,EAAkB5B,GACrCA,EAAQ2B,GAAK,GAEZH,KAAY,EAAK3hB,EAASjC,GAExB8jB,GAAOA,EAAOG,QACjBhiB,EAAS2hB,EAAQ5jB,GACd8jB,GAAOA,EAAOI,QAEhBjiB,IAAW0hB,EAASvB,QACrBS,EAAOhgB,EAAU,yBACT2f,EAAOE,EAAWzgB,IAC1BugB,EAAK7lB,KAAKsF,EAAQogB,EAASQ,GACtBR,EAAQpgB,IACV4gB,EAAO7iB,GACd,MAAMkE,GACN2e,EAAO3e,KAGLmf,EAAM9hB,OAASF,GAAEqiB,EAAIL,EAAMhiB,KACjC+gB,GAAQkB,MACRlB,EAAQgB,IAAK,EACVD,IAAaf,EAAQ2B,IAAGI,EAAY/B,OAGvC+B,EAAc,SAAS/B,GACzBP,EAAKllB,KAAKI,EAAQ,WAChB,GACIqnB,GAAQR,EAASS,EADjBrkB,EAAQoiB,EAAQmB,EAepB,IAbGe,EAAYlC,KACbgC,EAASpB,EAAQ,WACZd,EACDF,EAAQuC,KAAK,qBAAsBvkB,EAAOoiB,IAClCwB,EAAU7mB,EAAOynB,sBACzBZ,GAASxB,QAASA,EAASqC,OAAQzkB,KAC1BqkB,EAAUtnB,EAAOsnB,UAAYA,EAAQpB,OAC9CoB,EAAQpB,MAAM,8BAA+BjjB,KAIjDoiB,EAAQ2B,GAAK7B,GAAUoC,EAAYlC,GAAW,EAAI,GAClDA,EAAQsC,GAAKxoB,EACZkoB,EAAO,KAAMA,GAAOnB,SAGvBqB,EAAc,SAASlC,GACzB,GAAiB,GAAdA,EAAQ2B,GAAQ,OAAO,CAI1B,KAHA,GAEIJ,GAFAN,EAAQjB,EAAQsC,IAAMtC,EAAQkB,GAC9BjiB,EAAQ,EAENgiB,EAAM9hB,OAASF,GAEnB,GADAsiB,EAAWN,EAAMhiB,KACdsiB,EAASE,OAASS,EAAYX,EAASvB,SAAS,OAAO,CAC1D,QAAO,GAEP4B,EAAoB,SAAS5B,GAC/BP,EAAKllB,KAAKI,EAAQ,WAChB,GAAI6mB,EACD1B,GACDF,EAAQuC,KAAK,mBAAoBnC,IACzBwB,EAAU7mB,EAAO4nB,qBACzBf,GAASxB,QAASA,EAASqC,OAAQrC,EAAQmB,QAI7CqB,EAAU,SAAS5kB,GACrB,GAAIoiB,GAAUriB,IACXqiB,GAAQyC,KACXzC,EAAQyC,IAAK,EACbzC,EAAUA,EAAQ0C,IAAM1C,EACxBA,EAAQmB,GAAKvjB,EACboiB,EAAQqB,GAAK,EACTrB,EAAQsC,KAAGtC,EAAQsC,GAAKtC,EAAQkB,GAAG1a,SACvCsa,EAAOd,GAAS,KAEd2C,EAAW,SAAS/kB,GACtB,GACIwiB,GADAJ,EAAUriB,IAEd,KAAGqiB,EAAQyC,GAAX,CACAzC,EAAQyC,IAAK,EACbzC,EAAUA,EAAQ0C,IAAM1C,CACxB,KACE,GAAGA,IAAYpiB,EAAM,KAAM6C,GAAU,qCAClC2f,EAAOE,EAAW1iB,IACnB8hB,EAAU,WACR,GAAIkD,IAAWF,GAAI1C,EAASyC,IAAI,EAChC,KACErC,EAAK7lB,KAAKqD,EAAOoE,EAAI2gB,EAAUC,EAAS,GAAI5gB,EAAIwgB,EAASI,EAAS,IAClE,MAAM9gB,GACN0gB,EAAQjoB,KAAKqoB,EAAS9gB,OAI1Bke,EAAQmB,GAAKvjB,EACboiB,EAAQqB,GAAK,EACbP,EAAOd,GAAS,IAElB,MAAMle,GACN0gB,EAAQjoB,MAAMmoB,GAAI1C,EAASyC,IAAI,GAAQ3gB,KAKvCvE,KAEFsiB,EAAW,QAASgD,SAAQC,GAC1BxD,EAAW3hB,KAAMkiB,EAAUF,EAAS,MACpCjb,EAAUoe,GACV1D,EAAS7kB,KAAKoD,KACd,KACEmlB,EAAS9gB,EAAI2gB,EAAUhlB,KAAM,GAAIqE,EAAIwgB,EAAS7kB,KAAM,IACpD,MAAMolB,GACNP,EAAQjoB,KAAKoD,KAAMolB,KAGvB3D,EAAW,QAASyD,SAAQC,GAC1BnlB,KAAKujB,MACLvjB,KAAK2kB,GAAKxoB,EACV6D,KAAK0jB,GAAK,EACV1jB,KAAK8kB,IAAK,EACV9kB,KAAKwjB,GAAKrnB,EACV6D,KAAKgkB,GAAK,EACVhkB,KAAKqjB,IAAK,GAEZ5B,EAAS9a,UAAYtK,EAAoB,KAAK6lB,EAASvb,WAErD8b,KAAM,QAASA,MAAK4C,EAAaC,GAC/B,GAAI1B,GAAchB,EAAqBf,EAAmB7hB,KAAMkiB,GAOhE,OANA0B,GAASH,GAA+B,kBAAf4B,GAA4BA,GAAc,EACnEzB,EAASE,KAA8B,kBAAdwB,IAA4BA,EACrD1B,EAASG,OAAS5B,EAASF,EAAQ8B,OAAS5nB,EAC5C6D,KAAKujB,GAAGphB,KAAKyhB,GACV5jB,KAAK2kB,IAAG3kB,KAAK2kB,GAAGxiB,KAAKyhB,GACrB5jB,KAAK0jB,IAAGP,EAAOnjB,MAAM,GACjB4jB,EAASvB,SAGlBkD,QAAS,SAASD,GAChB,MAAOtlB,MAAKyiB,KAAKtmB,EAAWmpB,MAGhCzC,EAAoB,WAClB,GAAIR,GAAW,GAAIZ,EACnBzhB,MAAKqiB,QAAUA,EACfriB,KAAKsiB,QAAUje,EAAI2gB,EAAU3C,EAAS,GACtCriB,KAAK8iB,OAAUze,EAAIwgB,EAASxC,EAAS,KAIzCjlB,EAAQA,EAAQ4F,EAAI5F,EAAQ6F,EAAI7F,EAAQ8F,GAAKtD,GAAaslB,QAAShD,IACnE7lB,EAAoB,IAAI6lB,EAAUF,GAClC3lB,EAAoB,KAAK2lB,GACzB3e,EAAUhH,EAAoB,GAAG2lB,GAGjC5kB,EAAQA,EAAQyF,EAAIzF,EAAQ8F,GAAKtD,EAAYoiB,GAE3Cc,OAAQ,QAASA,QAAO0C,GACtB,GAAIC,GAAa7C,EAAqB5iB,MAClCgjB,EAAayC,EAAW3C,MAE5B,OADAE,GAASwC,GACFC,EAAWpD,WAGtBjlB,EAAQA,EAAQyF,EAAIzF,EAAQ8F,GAAKwU,IAAY9X,GAAaoiB,GAExDM,QAAS,QAASA,SAAQ7V,GAExB,GAAGA,YAAayV,IAAYQ,EAAgBjW,EAAEpB,YAAarL,MAAM,MAAOyM,EACxE,IAAIgZ,GAAa7C,EAAqB5iB,MAClC+iB,EAAa0C,EAAWnD,OAE5B,OADAS,GAAUtW,GACHgZ,EAAWpD,WAGtBjlB,EAAQA,EAAQyF,EAAIzF,EAAQ8F,IAAMtD,GAAcvD,EAAoB,KAAK,SAASse,GAChFuH,EAASwD,IAAI/K,GAAM,SAASyH,MACzBJ,GAEH0D,IAAK,QAASA,KAAIC,GAChB,GAAIlW,GAAazP,KACbylB,EAAa7C,EAAqBnT,GAClC6S,EAAamD,EAAWnD,QACxBQ,EAAa2C,EAAW3C,OACxBuB,EAASpB,EAAQ,WACnB,GAAItK,MACAtQ,EAAY,EACZud,EAAY,CAChBhE,GAAM+D,GAAU,EAAO,SAAStD,GAC9B,GAAIwD,GAAgBxd,IAChByd,GAAgB,CACpBnN,GAAOxW,KAAKhG,GACZypB,IACAnW,EAAE6S,QAAQD,GAASI,KAAK,SAASxiB,GAC5B6lB,IACHA,GAAiB,EACjBnN,EAAOkN,GAAU5lB,IACf2lB,GAAatD,EAAQ3J,KACtBmK,OAEH8C,GAAatD,EAAQ3J,IAGzB,OADG0L,IAAOvB,EAAOuB,EAAOnB,OACjBuC,EAAWpD,SAGpB0D,KAAM,QAASA,MAAKJ,GAClB,GAAIlW,GAAazP,KACbylB,EAAa7C,EAAqBnT,GAClCqT,EAAa2C,EAAW3C,OACxBuB,EAASpB,EAAQ,WACnBrB,EAAM+D,GAAU,EAAO,SAAStD,GAC9B5S,EAAE6S,QAAQD,GAASI,KAAKgD,EAAWnD,QAASQ,MAIhD,OADGuB,IAAOvB,EAAOuB,EAAOnB,OACjBuC,EAAWpD,YAMjB,SAAS5lB,EAAQD,EAASH,GAE/B,GAAIgI,GAAchI,EAAoB,IAClCO,EAAcP,EAAoB,KAClCoe,EAAcpe,EAAoB,KAClC2B,EAAc3B,EAAoB,IAClCyM,EAAczM,EAAoB,IAClCqe,EAAcre,EAAoB,IACtCI,GAAOD,QAAU,SAASmpB,EAAU/M,EAAS9S,EAAIkB,EAAM6Q,GACrD,GAGIrW,GAAQsZ,EAAMha,EAHdma,EAASpD,EAAW,WAAY,MAAO8N,IAAcjL,EAAUiL,GAC/DlnB,EAAS4F,EAAIyB,EAAIkB,EAAM4R,EAAU,EAAI,GACrCvQ,EAAS,CAEb,IAAoB,kBAAV4S,GAAqB,KAAMnY,WAAU6iB,EAAW,oBAE1D,IAAGlL,EAAYQ,GAAQ,IAAIzZ,EAASsH,EAAS6c,EAASnkB,QAASA,EAAS6G,EAAOA,IAC7EuQ,EAAUna,EAAET,EAAS8c,EAAO6K,EAAStd,IAAQ,GAAIyS,EAAK,IAAMrc,EAAEknB,EAAStd,QAClE,KAAIvH,EAAWma,EAAOre,KAAK+oB,KAAa7K,EAAOha,EAASqX,QAAQV,MACrE7a,EAAKkE,EAAUrC,EAAGqc,EAAK7a,MAAO2Y,KAM7B,SAASnc,EAAQD,EAASH,GAG/B,GAAI2B,GAAY3B,EAAoB,IAChC0K,EAAY1K,EAAoB,IAChC2gB,EAAY3gB,EAAoB,IAAI,UACxCI,GAAOD,QAAU,SAASgJ,EAAGnF,GAC3B,GAAiCwC,GAA7B4M,EAAIzR,EAASwH,GAAG6F,WACpB,OAAOoE,KAAMtT,IAAc0G,EAAI7E,EAASyR,GAAGuN,KAAa7gB,EAAYkE,EAAI0G,EAAUlE,KAK/E,SAASpG,EAAQD,EAASH,GAE/B,GAYI2pB,GAAOC,EAASC,EAZhB7hB,EAAqBhI,EAAoB,IACzCiR,EAAqBjR,EAAoB,IACzCwf,EAAqBxf,EAAoB,IACzC8pB,EAAqB9pB,EAAoB,IACzCW,EAAqBX,EAAoB,GACzC4lB,EAAqBjlB,EAAOilB,QAC5BmE,EAAqBppB,EAAOqpB,aAC5BC,EAAqBtpB,EAAOupB,eAC5BC,EAAqBxpB,EAAOwpB,eAC5BC,EAAqB,EACrBC,KACAC,EAAqB,qBAErBhD,EAAM,WACR,GAAIjnB,IAAMsD,IACV,IAAG0mB,EAAMziB,eAAevH,GAAI,CAC1B,GAAIoJ,GAAK4gB,EAAMhqB,SACRgqB,GAAMhqB,GACboJ,MAGA8gB,EAAW,SAASC,GACtBlD,EAAI/mB,KAAKiqB,EAAMnW,MAGb0V,IAAYE,IACdF,EAAU,QAASC,cAAavgB,GAE9B,IADA,GAAIrD,MAAWnB,EAAI,EACboB,UAAUlB,OAASF,GAAEmB,EAAKN,KAAKO,UAAUpB,KAK/C,OAJAolB,KAAQD,GAAW,WACjBnZ,EAAoB,kBAANxH,GAAmBA,EAAK/B,SAAS+B,GAAKrD,IAEtDujB,EAAMS,GACCA,GAETH,EAAY,QAASC,gBAAe7pB,SAC3BgqB,GAAMhqB,IAGwB,WAApCL,EAAoB,IAAI4lB,GACzB+D,EAAQ,SAAStpB,GACfulB,EAAQ6E,SAASziB,EAAIsf,EAAKjnB,EAAI,KAGxB8pB,GACRP,EAAU,GAAIO,GACdN,EAAUD,EAAQc,MAClBd,EAAQe,MAAMC,UAAYL,EAC1BZ,EAAQ3hB,EAAI6hB,EAAKgB,YAAahB,EAAM,IAG5BlpB,EAAOmqB,kBAA0C,kBAAfD,eAA8BlqB,EAAOoqB,eAC/EpB,EAAQ,SAAStpB,GACfM,EAAOkqB,YAAYxqB,EAAK,GAAI,MAE9BM,EAAOmqB,iBAAiB,UAAWP,GAAU,IAG7CZ,EADQW,IAAsBR,GAAI,UAC1B,SAASzpB,GACfmf,EAAKvR,YAAY6b,EAAI,WAAWQ,GAAsB,WACpD9K,EAAKwL,YAAYrnB,MACjB2jB,EAAI/mB,KAAKF,KAKL,SAASA,GACf4qB,WAAWjjB,EAAIsf,EAAKjnB,EAAI,GAAI,KAIlCD,EAAOD,SACLoE,IAAOwlB,EACPmB,MAAOjB,IAKJ,SAAS7pB,EAAQD,EAASH,GAE/B,GAMImrB,GAAMC,EAAMtE,EANZnmB,EAAYX,EAAoB,GAChCqrB,EAAYrrB,EAAoB,KAAKuE,IACrC+mB,EAAY3qB,EAAO4qB,kBAAoB5qB,EAAO6qB,uBAC9C5F,EAAYjlB,EAAOilB,QACnBiD,EAAYloB,EAAOkoB,QACnB/C,EAAgD,WAApC9lB,EAAoB,IAAI4lB,GAGpC6F,EAAQ,WACV,GAAIC,GAAQjiB,CAEZ,KADGqc,IAAW4F,EAAS9F,EAAQ8B,SAAQgE,EAAO5D,OACxCqD,GACJ1hB,EAAK0hB,EAAK1hB,GACVA,IACA0hB,EAAOA,EAAKrP,IACZsP,GAAOtrB,EACN4rB,GAAOA,EAAO7D,QAInB,IAAG/B,EACDgB,EAAS,WACPlB,EAAQ6E,SAASgB,QAGd,IAAGH,EAAS,CACjB,GAAIK,IAAS,EACTC,EAAStiB,SAASuiB,eAAe,GACrC,IAAIP,GAASG,GAAOK,QAAQF,GAAOG,eAAe,IAClDjF,EAAS,WACP8E,EAAKvX,KAAOsX,GAAUA,OAIxB7E,GADQ+B,GAAWA,EAAQ5C,QAClB,WACP4C,EAAQ5C,UAAUG,KAAKqF,IAShB,WAEPJ,EAAU9qB,KAAKI,EAAQ8qB,GAI3BrrB,GAAOD,QAAU,SAASsJ,GACxB,GAAIgc,IAAQhc,GAAIA,EAAIqS,KAAMhc,EACvBsrB,KAAKA,EAAKtP,KAAO2J,GAChB0F,IACFA,EAAO1F,EACPqB,KACAsE,EAAO3F,IAKN,SAASrlB,EAAQD,EAASH,GAE/B,GAAIgB,GAAWhB,EAAoB,GACnCI,GAAOD,QAAU,SAAS0I,EAAQqF,EAAKhE,GACrC,IAAI,GAAInG,KAAOmK,GAAIlN,EAAS6H,EAAQ9E,EAAKmK,EAAInK,GAAMmG,EACnD,OAAOrB,KAKJ,SAASzI,EAAQD,EAASH,GAG/B,GAAIgsB,GAAShsB,EAAoB,IAGjCI,GAAOD,QAAUH,EAAoB,KAAK,MAAO,SAAS0D,GACxD,MAAO,SAASuoB,OAAO,MAAOvoB,GAAIC,KAAM0C,UAAUlB,OAAS,EAAIkB,UAAU,GAAKvG,MAG9E4D,IAAK,QAASA,KAAIK,GAChB,GAAImoB,GAAQF,EAAOG,SAASxoB,KAAMI,EAClC,OAAOmoB,IAASA,EAAME,GAGxB7nB,IAAK,QAASA,KAAIR,EAAKH,GACrB,MAAOooB,GAAOtgB,IAAI/H,KAAc,IAARI,EAAY,EAAIA,EAAKH,KAE9CooB,GAAQ,IAIN,SAAS5rB,EAAQD,EAASH,GAG/B,GAAIqC,GAAcrC,EAAoB,GAAGoC,EACrCiD,EAAcrF,EAAoB,IAElCqsB,GADcrsB,EAAoB,GACpBA,EAAoB,MAClCgI,EAAchI,EAAoB,IAClCslB,EAActlB,EAAoB,IAClCsM,EAActM,EAAoB,IAClCulB,EAAcvlB,EAAoB,KAClCssB,EAActsB,EAAoB,KAClCye,EAAcze,EAAoB,KAClCusB,EAAcvsB,EAAoB,KAClCc,EAAcd,EAAoB,GAClCmL,EAAcnL,EAAoB,IAAImL,QACtCqhB,EAAc1rB,EAAc,KAAO,OAEnCqrB,EAAW,SAASxhB,EAAM5G,GAE5B,GAA0BmoB,GAAtBlgB,EAAQb,EAAQpH,EACpB,IAAa,MAAViI,EAAc,MAAOrB,GAAKuQ,GAAGlP,EAEhC,KAAIkgB,EAAQvhB,EAAK8hB,GAAIP,EAAOA,EAAQA,EAAM5a,EACxC,GAAG4a,EAAMlc,GAAKjM,EAAI,MAAOmoB,GAI7B9rB,GAAOD,SACLusB,eAAgB,SAAS9D,EAAShX,EAAMyO,EAAQsM,GAC9C,GAAIvZ,GAAIwV,EAAQ,SAASje,EAAM2e,GAC7BhE,EAAW3a,EAAMyI,EAAGxB,EAAM,MAC1BjH,EAAKuQ,GAAK7V,EAAO,MACjBsF,EAAK8hB,GAAK3sB,EACV6K,EAAKiiB,GAAK9sB,EACV6K,EAAK6hB,GAAQ,EACVlD,GAAYxpB,GAAUylB,EAAM+D,EAAUjJ,EAAQ1V,EAAKgiB,GAAQhiB,IAsDhE,OApDA0hB,GAAYjZ,EAAE9I,WAGZ4gB,MAAO,QAASA,SACd,IAAI,GAAIvgB,GAAOhH,KAAM0Q,EAAO1J,EAAKuQ,GAAIgR,EAAQvhB,EAAK8hB,GAAIP,EAAOA,EAAQA,EAAM5a,EACzE4a,EAAM/C,GAAI,EACP+C,EAAMxrB,IAAEwrB,EAAMxrB,EAAIwrB,EAAMxrB,EAAE4Q,EAAIxR,SAC1BuU,GAAK6X,EAAMjnB,EAEpB0F,GAAK8hB,GAAK9hB,EAAKiiB,GAAK9sB,EACpB6K,EAAK6hB,GAAQ,GAIfK,SAAU,SAAS9oB,GACjB,GAAI4G,GAAQhH,KACRuoB,EAAQC,EAASxhB,EAAM5G,EAC3B,IAAGmoB,EAAM,CACP,GAAIpQ,GAAOoQ,EAAM5a,EACbwb,EAAOZ,EAAMxrB,QACViK,GAAKuQ,GAAGgR,EAAMjnB,GACrBinB,EAAM/C,GAAI,EACP2D,IAAKA,EAAKxb,EAAIwK,GACdA,IAAKA,EAAKpb,EAAIosB,GACdniB,EAAK8hB,IAAMP,IAAMvhB,EAAK8hB,GAAK3Q,GAC3BnR,EAAKiiB,IAAMV,IAAMvhB,EAAKiiB,GAAKE,GAC9BniB,EAAK6hB,KACL,QAASN,GAIbnc,QAAS,QAASA,SAAQoQ,GACxBmF,EAAW3hB,KAAMyP,EAAG,UAGpB,KAFA,GACI8Y,GADA9pB,EAAI4F,EAAImY,EAAY9Z,UAAUlB,OAAS,EAAIkB,UAAU,GAAKvG,EAAW,GAEnEosB,EAAQA,EAAQA,EAAM5a,EAAI3N,KAAK8oB,IAGnC,IAFArqB,EAAE8pB,EAAME,EAAGF,EAAMlc,EAAGrM,MAEduoB,GAASA,EAAM/C,GAAE+C,EAAQA,EAAMxrB,GAKzCG,IAAK,QAASA,KAAIkD,GAChB,QAASooB,EAASxoB,KAAMI,MAGzBjD,GAAYuB,EAAG+Q,EAAE9I,UAAW,QAC7B5G,IAAK,WACH,MAAO4I,GAAQ3I,KAAK6oB,OAGjBpZ,GAET1H,IAAK,SAASf,EAAM5G,EAAKH,GACvB,GACIkpB,GAAM9gB,EADNkgB,EAAQC,EAASxhB,EAAM5G,EAoBzB,OAjBCmoB,GACDA,EAAME,EAAIxoB,GAGV+G,EAAKiiB,GAAKV,GACRjnB,EAAG+G,EAAQb,EAAQpH,GAAK,GACxBiM,EAAGjM,EACHqoB,EAAGxoB,EACHlD,EAAGosB,EAAOniB,EAAKiiB,GACftb,EAAGxR,EACHqpB,GAAG,GAEDxe,EAAK8hB,KAAG9hB,EAAK8hB,GAAKP,GACnBY,IAAKA,EAAKxb,EAAI4a,GACjBvhB,EAAK6hB,KAEQ,MAAVxgB,IAAcrB,EAAKuQ,GAAGlP,GAASkgB,IAC3BvhB,GAEXwhB,SAAUA,EACVY,UAAW,SAAS3Z,EAAGxB,EAAMyO,GAG3BiM,EAAYlZ,EAAGxB,EAAM,SAASoJ,EAAUqB,GACtC1Y,KAAKsX,GAAKD,EACVrX,KAAKU,GAAKgY,EACV1Y,KAAKipB,GAAK9sB,GACT,WAKD,IAJA,GAAI6K,GAAQhH,KACR0Y,EAAQ1R,EAAKtG,GACb6nB,EAAQvhB,EAAKiiB,GAEXV,GAASA,EAAM/C,GAAE+C,EAAQA,EAAMxrB,CAErC,OAAIiK,GAAKsQ,KAAQtQ,EAAKiiB,GAAKV,EAAQA,EAAQA,EAAM5a,EAAI3G,EAAKsQ,GAAGwR,IAMlD,QAARpQ,EAAwBoC,EAAK,EAAGyN,EAAMlc,GAC9B,UAARqM,EAAwBoC,EAAK,EAAGyN,EAAME,GAClC3N,EAAK,GAAIyN,EAAMlc,EAAGkc,EAAME,KAN7BzhB,EAAKsQ,GAAKnb,EACH2e,EAAK,KAMb4B,EAAS,UAAY,UAAYA,GAAQ,GAG5CkM,EAAW3a,MAMV,SAASxR,EAAQD,EAASH,GAG/B,GAAIW,GAAoBX,EAAoB,GACxCe,EAAoBf,EAAoB,GACxCgB,EAAoBhB,EAAoB,IACxCqsB,EAAoBrsB,EAAoB,KACxCsL,EAAoBtL,EAAoB,IACxCulB,EAAoBvlB,EAAoB,KACxCslB,EAAoBtlB,EAAoB,IACxCqJ,EAAoBrJ,EAAoB,IACxC4O,EAAoB5O,EAAoB,GACxCgtB,EAAoBhtB,EAAoB,KACxCqB,EAAoBrB,EAAoB,IACxCgS,EAAoBhS,EAAoB,GAE5CI,GAAOD,QAAU,SAASyR,EAAMgX,EAAS1M,EAAS+Q,EAAQ5M,EAAQ6M,GAChE,GAAI7a,GAAQ1R,EAAOiR,GACfwB,EAAQf,EACRsa,EAAQtM,EAAS,MAAQ,MACzB7P,EAAQ4C,GAAKA,EAAE9I,UACfnB,KACAgkB,EAAY,SAASjsB,GACvB,GAAIuI,GAAK+G,EAAMtP,EACfF,GAASwP,EAAOtP,EACP,UAAPA,EAAkB,SAAS2C,GACzB,MAAOqpB,KAAY7jB,EAASxF,IAAK,EAAQ4F,EAAGlJ,KAAKoD,KAAY,IAANE,EAAU,EAAIA,IAC5D,OAAP3C,EAAe,QAASL,KAAIgD,GAC9B,MAAOqpB,KAAY7jB,EAASxF,IAAK,EAAQ4F,EAAGlJ,KAAKoD,KAAY,IAANE,EAAU,EAAIA,IAC5D,OAAP3C,EAAe,QAASwC,KAAIG,GAC9B,MAAOqpB,KAAY7jB,EAASxF,GAAK/D,EAAY2J,EAAGlJ,KAAKoD,KAAY,IAANE,EAAU,EAAIA,IAChE,OAAP3C,EAAe,QAASksB,KAAIvpB,GAAoC,MAAhC4F,GAAGlJ,KAAKoD,KAAY,IAANE,EAAU,EAAIA,GAAWF,MACvE,QAASY,KAAIV,EAAG+G,GAAuC,MAAnCnB,GAAGlJ,KAAKoD,KAAY,IAANE,EAAU,EAAIA,EAAG+G,GAAWjH,OAGtE,IAAe,kBAALyP,KAAqB8Z,GAAW1c,EAAMT,UAAYnB,EAAM,YAChE,GAAIwE,IAAImJ,UAAUT,UAMb,CACL,GAAIuR,GAAuB,GAAIja,GAE3Bka,EAAuBD,EAASV,GAAOO,MAAgB,EAAG,IAAMG,EAEhEE,EAAuB3e,EAAM,WAAYye,EAASxsB,IAAI,KAEtD2sB,EAAuBR,EAAY,SAAS1O,GAAO,GAAIlL,GAAEkL,KAEzDmP,GAAcP,GAAWte,EAAM,WAI/B,IAFA,GAAI8e,GAAY,GAAIta,GAChBpH,EAAY,EACVA,KAAQ0hB,EAAUf,GAAO3gB,EAAOA,EACtC,QAAQ0hB,EAAU7sB,KAAK,IAEvB2sB,KACFpa,EAAIwV,EAAQ,SAAS/f,EAAQygB,GAC3BhE,EAAWzc,EAAQuK,EAAGxB,EACtB,IAAIjH,GAAOqH,EAAkB,GAAIK,GAAMxJ,EAAQuK,EAE/C,OADGkW,IAAYxpB,GAAUylB,EAAM+D,EAAUjJ,EAAQ1V,EAAKgiB,GAAQhiB,GACvDA,IAETyI,EAAE9I,UAAYkG,EACdA,EAAMxB,YAAcoE,IAEnBma,GAAwBE,KACzBN,EAAU,UACVA,EAAU,OACV9M,GAAU8M,EAAU,SAEnBM,GAAcH,IAAeH,EAAUR,GAEvCO,GAAW1c,EAAM0a,aAAa1a,GAAM0a,UApCvC9X,GAAI6Z,EAAOP,eAAe9D,EAAShX,EAAMyO,EAAQsM,GACjDN,EAAYjZ,EAAE9I,UAAW4R,GACzB5Q,EAAKC,MAAO,CA4Cd,OAPAlK,GAAe+R,EAAGxB,GAElBzI,EAAEyI,GAAQwB,EACVrS,EAAQA,EAAQ4F,EAAI5F,EAAQ6F,EAAI7F,EAAQ8F,GAAKuM,GAAKf,GAAOlJ,GAErD+jB,GAAQD,EAAOF,UAAU3Z,EAAGxB,EAAMyO,GAE/BjN,IAKJ,SAAShT,EAAQD,EAASH,GAG/B,GAAIgsB,GAAShsB,EAAoB,IAGjCI,GAAOD,QAAUH,EAAoB,KAAK,MAAO,SAAS0D,GACxD,MAAO,SAASiqB,OAAO,MAAOjqB,GAAIC,KAAM0C,UAAUlB,OAAS,EAAIkB,UAAU,GAAKvG,MAG9EstB,IAAK,QAASA,KAAIxpB,GAChB,MAAOooB,GAAOtgB,IAAI/H,KAAMC,EAAkB,IAAVA,EAAc,EAAIA,EAAOA,KAE1DooB,IAIE,SAAS5rB,EAAQD,EAASH,GAG/B,GAWI4tB,GAXAC,EAAe7tB,EAAoB,KAAK,GACxCgB,EAAehB,EAAoB,IACnCsL,EAAetL,EAAoB,IACnC2P,EAAe3P,EAAoB,IACnC8tB,EAAe9tB,EAAoB,KACnCqJ,EAAerJ,EAAoB,IAEnCoL,GADepL,EAAoB,GACpBsL,EAAKF,SACpBN,EAAexH,OAAOwH,aACtBijB,EAAsBD,EAAKE,QAC3BC,KAGArF,EAAU,SAASllB,GACrB,MAAO,SAASwqB,WACd,MAAOxqB,GAAIC,KAAM0C,UAAUlB,OAAS,EAAIkB,UAAU,GAAKvG,KAIvDoc,GAEFxY,IAAK,QAASA,KAAIK,GAChB,GAAGsF,EAAStF,GAAK,CACf,GAAIsQ,GAAOjJ,EAAQrH,EACnB,OAAGsQ,MAAS,EAAY0Z,EAAoBpqB,MAAMD,IAAIK,GAC/CsQ,EAAOA,EAAK1Q,KAAKuX,IAAMpb,IAIlCyE,IAAK,QAASA,KAAIR,EAAKH,GACrB,MAAOkqB,GAAKpiB,IAAI/H,KAAMI,EAAKH,KAK3BuqB,EAAW/tB,EAAOD,QAAUH,EAAoB,KAAK,UAAW4oB,EAAS1M,EAAS4R,GAAM,GAAM,EAG7B,KAAlE,GAAIK,IAAW5pB,KAAKjB,OAAO4L,QAAU5L,QAAQ2qB,GAAM,GAAGvqB,IAAIuqB,KAC3DL,EAAcE,EAAKpB,eAAe9D,GAClCjZ,EAAOie,EAAYtjB,UAAW4R,GAC9B5Q,EAAKC,MAAO,EACZsiB,GAAM,SAAU,MAAO,MAAO,OAAQ,SAAS9pB,GAC7C,GAAIyM,GAAS2d,EAAS7jB,UAClBiV,EAAS/O,EAAMzM,EACnB/C,GAASwP,EAAOzM,EAAK,SAASF,EAAG+G,GAE/B,GAAGvB,EAASxF,KAAOiH,EAAajH,GAAG,CAC7BF,KAAK8oB,KAAG9oB,KAAK8oB,GAAK,GAAImB,GAC1B,IAAI/nB,GAASlC,KAAK8oB,GAAG1oB,GAAKF,EAAG+G,EAC7B,OAAc,OAAP7G,EAAeJ,KAAOkC,EAE7B,MAAO0Z,GAAOhf,KAAKoD,KAAME,EAAG+G,SAO/B,SAASxK,EAAQD,EAASH,GAG/B,GAAIqsB,GAAoBrsB,EAAoB,KACxCoL,EAAoBpL,EAAoB,IAAIoL,QAC5CzJ,EAAoB3B,EAAoB,IACxCqJ,EAAoBrJ,EAAoB,IACxCslB,EAAoBtlB,EAAoB,IACxCulB,EAAoBvlB,EAAoB,KACxCouB,EAAoBpuB,EAAoB,KACxCquB,EAAoBruB,EAAoB,GACxCsuB,EAAoBF,EAAkB,GACtCG,EAAoBH,EAAkB,GACtC/tB,EAAoB,EAGpB0tB,EAAsB,SAASpjB,GACjC,MAAOA,GAAKiiB,KAAOjiB,EAAKiiB,GAAK,GAAI4B,KAE/BA,EAAsB,WACxB7qB,KAAKE,MAEH4qB,EAAqB,SAAShjB,EAAO1H,GACvC,MAAOuqB,GAAU7iB,EAAM5H,EAAG,SAASC,GACjC,MAAOA,GAAG,KAAOC,IAGrByqB,GAAoBlkB,WAClB5G,IAAK,SAASK,GACZ,GAAImoB,GAAQuC,EAAmB9qB,KAAMI,EACrC,OAAGmoB,GAAaA,EAAM,GAAtB,QAEFrrB,IAAK,SAASkD,GACZ,QAAS0qB,EAAmB9qB,KAAMI,IAEpCQ,IAAK,SAASR,EAAKH,GACjB,GAAIsoB,GAAQuC,EAAmB9qB,KAAMI,EAClCmoB,GAAMA,EAAM,GAAKtoB,EACfD,KAAKE,EAAEiC,MAAM/B,EAAKH,KAEzBipB,SAAU,SAAS9oB,GACjB,GAAIiI,GAAQuiB,EAAe5qB,KAAKE,EAAG,SAASC,GAC1C,MAAOA,GAAG,KAAOC,GAGnB,QADIiI,GAAMrI,KAAKE,EAAE6qB,OAAO1iB,EAAO,MACrBA,IAId5L,EAAOD,SACLusB,eAAgB,SAAS9D,EAAShX,EAAMyO,EAAQsM,GAC9C,GAAIvZ,GAAIwV,EAAQ,SAASje,EAAM2e,GAC7BhE,EAAW3a,EAAMyI,EAAGxB,EAAM,MAC1BjH,EAAKuQ,GAAK7a,IACVsK,EAAKiiB,GAAK9sB,EACPwpB,GAAYxpB,GAAUylB,EAAM+D,EAAUjJ,EAAQ1V,EAAKgiB,GAAQhiB,IAoBhE,OAlBA0hB,GAAYjZ,EAAE9I,WAGZuiB,SAAU,SAAS9oB,GACjB,IAAIsF,EAAStF,GAAK,OAAO,CACzB,IAAIsQ,GAAOjJ,EAAQrH,EACnB,OAAGsQ,MAAS,EAAY0Z,EAAoBpqB,MAAM,UAAUI,GACrDsQ,GAAQga,EAAKha,EAAM1Q,KAAKuX,WAAc7G,GAAK1Q,KAAKuX,KAIzDra,IAAK,QAASA,KAAIkD,GAChB,IAAIsF,EAAStF,GAAK,OAAO,CACzB,IAAIsQ,GAAOjJ,EAAQrH,EACnB,OAAGsQ,MAAS,EAAY0Z,EAAoBpqB,MAAM9C,IAAIkD,GAC/CsQ,GAAQga,EAAKha,EAAM1Q,KAAKuX,OAG5B9H,GAET1H,IAAK,SAASf,EAAM5G,EAAKH,GACvB,GAAIyQ,GAAOjJ,EAAQzJ,EAASoC,IAAM,EAGlC,OAFGsQ,MAAS,EAAK0Z,EAAoBpjB,GAAMpG,IAAIR,EAAKH,GAC/CyQ,EAAK1J,EAAKuQ,IAAMtX,EACd+G,GAETqjB,QAASD,IAKN,SAAS3tB,EAAQD,EAASH,GAG/B,GAAI8tB,GAAO9tB,EAAoB,IAG/BA,GAAoB,KAAK,UAAW,SAAS0D,GAC3C,MAAO,SAASirB,WAAW,MAAOjrB,GAAIC,KAAM0C,UAAUlB,OAAS,EAAIkB,UAAU,GAAKvG,MAGlFstB,IAAK,QAASA,KAAIxpB,GAChB,MAAOkqB,GAAKpiB,IAAI/H,KAAMC,GAAO,KAE9BkqB,GAAM,GAAO,IAIX,SAAS1tB,EAAQD,EAASH,GAG/B,GAAIe,GAAUf,EAAoB,GAC9B4uB,EAAUlnB,SAASpB,KAEvBvF,GAAQA,EAAQyF,EAAG,WACjBF,MAAO,QAASA,OAAMuC,EAAQgmB,EAAcC,GAC1C,MAAOF,GAAOruB,KAAKsI,EAAQgmB,EAAcC,OAMxC,SAAS1uB,EAAQD,EAASH,GAG/B,GAAIe,GAAYf,EAAoB,GAChCqF,EAAYrF,EAAoB,IAChC0K,EAAY1K,EAAoB,IAChC2B,EAAY3B,EAAoB,IAChCqJ,EAAYrJ,EAAoB,IAChCgR,EAAYhR,EAAoB,GAIpCe,GAAQA,EAAQyF,EAAIzF,EAAQ8F,EAAI7G,EAAoB,GAAG,WACrD,QAAS6G,MACT,QAASkoB,QAAQ3d,UAAU,gBAAkBvK,YAAcA,MACzD,WACFuK,UAAW,QAASA,WAAU4d,EAAQ5oB,GACpCsE,EAAUskB,EACV,IAAIC,GAA+B,EAAnB5oB,UAAUlB,OAAa6pB,EAAStkB,EAAUrE,UAAU,GACpE,IAAG2oB,GAAUC,EAAU,CAErB,GAAG7oB,GAAQtG,EAAU,OAAO6B,EAASyE,GAAMjB,QACzC,IAAK,GAAG,MAAO,IAAI6pB,EACnB,KAAK,GAAG,MAAO,IAAIA,GAAO5oB,EAAK,GAC/B,KAAK,GAAG,MAAO,IAAI4oB,GAAO5oB,EAAK,GAAIA,EAAK,GACxC,KAAK,GAAG,MAAO,IAAI4oB,GAAO5oB,EAAK,GAAIA,EAAK,GAAIA,EAAK,GACjD,KAAK,GAAG,MAAO,IAAI4oB,GAAO5oB,EAAK,GAAIA,EAAK,GAAIA,EAAK,GAAIA,EAAK,IAG5D,GAAI8oB,IAAS,KAEb,OADAA,GAAMppB,KAAKQ,MAAM4oB,EAAO9oB,GACjB,IAAK4K,EAAK1K,MAAM0oB,EAAQE,IAGjC,GAAI1e,GAAWye,EAAU3kB,UACrB+iB,EAAWhoB,EAAOgE,EAASmH,GAASA,EAAQlN,OAAOgH,WACnDzE,EAAW6B,SAASpB,MAAM/F,KAAKyuB,EAAQ3B,EAAUjnB,EACrD,OAAOiD,GAASxD,GAAUA,EAASwnB,MAMlC,SAASjtB,EAAQD,EAASH,GAG/B,GAAIqC,GAAcrC,EAAoB,GAClCe,EAAcf,EAAoB,GAClC2B,EAAc3B,EAAoB,IAClC6B,EAAc7B,EAAoB,GAGtCe,GAAQA,EAAQyF,EAAIzF,EAAQ8F,EAAI7G,EAAoB,GAAG,WACrD+uB,QAAQpqB,eAAetC,EAAGD,KAAM,GAAIwB,MAAO,IAAK,GAAIA,MAAO,MACzD,WACFe,eAAgB,QAASA,gBAAekE,EAAQsmB,EAAaC,GAC3DztB,EAASkH,GACTsmB,EAActtB,EAAYstB,GAAa,GACvCxtB,EAASytB,EACT,KAEE,MADA/sB,GAAGD,EAAEyG,EAAQsmB,EAAaC,IACnB,EACP,MAAMtnB,GACN,OAAO,OAOR,SAAS1H,EAAQD,EAASH,GAG/B,GAAIe,GAAWf,EAAoB,GAC/BmC,EAAWnC,EAAoB,IAAIoC,EACnCT,EAAW3B,EAAoB,GAEnCe,GAAQA,EAAQyF,EAAG,WACjB6oB,eAAgB,QAASA,gBAAexmB,EAAQsmB,GAC9C,GAAIG,GAAOntB,EAAKR,EAASkH,GAASsmB,EAClC,OAAOG,KAASA,EAAKhrB,cAAe,QAAeuE,GAAOsmB,OAMzD,SAAS/uB,EAAQD,EAASH,GAI/B,GAAIe,GAAWf,EAAoB,GAC/B2B,EAAW3B,EAAoB,IAC/BuvB,EAAY,SAASvU,GACvBrX,KAAKsX,GAAKtZ,EAASqZ,GACnBrX,KAAKuX,GAAK,CACV,IACInX,GADAiB,EAAOrB,KAAKU,KAEhB,KAAIN,IAAOiX,GAAShW,EAAKc,KAAK/B,GAEhC/D,GAAoB,KAAKuvB,EAAW,SAAU,WAC5C,GAEIxrB,GAFA4G,EAAOhH,KACPqB,EAAO2F,EAAKtG,EAEhB,GACE,IAAGsG,EAAKuQ,IAAMlW,EAAKG,OAAO,OAAQvB,MAAO9D,EAAWsb,MAAM,YACjDrX,EAAMiB,EAAK2F,EAAKuQ,QAAUvQ,GAAKsQ,IAC1C,QAAQrX,MAAOG,EAAKqX,MAAM,KAG5Bra,EAAQA,EAAQyF,EAAG,WACjBgpB,UAAW,QAASA,WAAU3mB,GAC5B,MAAO,IAAI0mB,GAAU1mB,OAMpB,SAASzI,EAAQD,EAASH,GAU/B,QAAS0D,KAAImF,EAAQsmB,GACnB,GACIG,GAAM9e,EADNif,EAA8B,EAAnBppB,UAAUlB,OAAa0D,EAASxC,UAAU,EAEzD,OAAG1E,GAASkH,KAAY4mB,EAAgB5mB,EAAOsmB,IAC5CG,EAAOntB,EAAKC,EAAEyG,EAAQsmB,IAAoBtuB,EAAIyuB,EAAM,SACnDA,EAAK1rB,MACL0rB,EAAK5rB,MAAQ5D,EACXwvB,EAAK5rB,IAAInD,KAAKkvB,GACd3vB,EACHuJ,EAASmH,EAAQzB,EAAelG,IAAgBnF,IAAI8M,EAAO2e,EAAaM,GAA3E,OAhBF,GAAIttB,GAAiBnC,EAAoB,IACrC+O,EAAiB/O,EAAoB,IACrCa,EAAiBb,EAAoB,GACrCe,EAAiBf,EAAoB,GACrCqJ,EAAiBrJ,EAAoB,IACrC2B,EAAiB3B,EAAoB,GAczCe,GAAQA,EAAQyF,EAAG,WAAY9C,IAAKA,OAI/B,SAAStD,EAAQD,EAASH,GAG/B,GAAImC,GAAWnC,EAAoB,IAC/Be,EAAWf,EAAoB,GAC/B2B,EAAW3B,EAAoB,GAEnCe,GAAQA,EAAQyF,EAAG,WACjBf,yBAA0B,QAASA,0BAAyBoD,EAAQsmB,GAClE,MAAOhtB,GAAKC,EAAET,EAASkH,GAASsmB,OAM/B,SAAS/uB,EAAQD,EAASH,GAG/B,GAAIe,GAAWf,EAAoB,GAC/B0vB,EAAW1vB,EAAoB,IAC/B2B,EAAW3B,EAAoB,GAEnCe,GAAQA,EAAQyF,EAAG,WACjBuI,eAAgB,QAASA,gBAAelG,GACtC,MAAO6mB,GAAS/tB,EAASkH,QAMxB,SAASzI,EAAQD,EAASH,GAG/B,GAAIe,GAAUf,EAAoB,EAElCe,GAAQA,EAAQyF,EAAG,WACjB3F,IAAK,QAASA,KAAIgI,EAAQsmB,GACxB,MAAOA,KAAetmB,OAMrB,SAASzI,EAAQD,EAASH,GAG/B,GAAIe,GAAgBf,EAAoB,GACpC2B,EAAgB3B,EAAoB,IACpC0P,EAAgBpM,OAAOwH,YAE3B/J,GAAQA,EAAQyF,EAAG,WACjBsE,aAAc,QAASA,cAAajC,GAElC,MADAlH,GAASkH,GACF6G,EAAgBA,EAAc7G,IAAU,MAM9C,SAASzI,EAAQD,EAASH,GAG/B,GAAIe,GAAUf,EAAoB,EAElCe,GAAQA,EAAQyF,EAAG,WAAYmpB,QAAS3vB,EAAoB,QAIvD,SAASI,EAAQD,EAASH,GAG/B,GAAIsC,GAAWtC,EAAoB,IAC/BoN,EAAWpN,EAAoB,IAC/B2B,EAAW3B,EAAoB,IAC/B+uB,EAAW/uB,EAAoB,GAAG+uB,OACtC3uB,GAAOD,QAAU4uB,GAAWA,EAAQY,SAAW,QAASA,SAAQ7rB,GAC9D,GAAIkB,GAAa1C,EAAKF,EAAET,EAASmC,IAC7BwJ,EAAaF,EAAKhL,CACtB,OAAOkL,GAAatI,EAAKyF,OAAO6C,EAAWxJ,IAAOkB,IAK/C,SAAS5E,EAAQD,EAASH,GAG/B,GAAIe,GAAqBf,EAAoB,GACzC2B,EAAqB3B,EAAoB,IACzCqP,EAAqB/L,OAAO0H,iBAEhCjK,GAAQA,EAAQyF,EAAG,WACjBwE,kBAAmB,QAASA,mBAAkBnC,GAC5ClH,EAASkH,EACT,KAEE,MADGwG,IAAmBA,EAAmBxG,IAClC,EACP,MAAMf,GACN,OAAO,OAOR,SAAS1H,EAAQD,EAASH,GAY/B,QAASuE,KAAIsE,EAAQsmB,EAAaS,GAChC,GAEIC,GAAoBrf,EAFpBif,EAA8B,EAAnBppB,UAAUlB,OAAa0D,EAASxC,UAAU,GACrDypB,EAAW3tB,EAAKC,EAAET,EAASkH,GAASsmB,EAExC,KAAIW,EAAQ,CACV,GAAGzmB,EAASmH,EAAQzB,EAAelG,IACjC,MAAOtE,KAAIiM,EAAO2e,EAAaS,EAAGH,EAEpCK,GAAUhuB,EAAW,GAEvB,MAAGjB,GAAIivB,EAAS,SACXA,EAAQlmB,YAAa,GAAUP,EAASomB,IAC3CI,EAAqB1tB,EAAKC,EAAEqtB,EAAUN,IAAgBrtB,EAAW,GACjE+tB,EAAmBjsB,MAAQgsB,EAC3BvtB,EAAGD,EAAEqtB,EAAUN,EAAaU,IACrB,IAJqD,EAMvDC,EAAQvrB,MAAQzE,GAAY,GAASgwB,EAAQvrB,IAAIhE,KAAKkvB,EAAUG,IAAI,GA1B7E,GAAIvtB,GAAiBrC,EAAoB,GACrCmC,EAAiBnC,EAAoB,IACrC+O,EAAiB/O,EAAoB,IACrCa,EAAiBb,EAAoB,GACrCe,EAAiBf,EAAoB,GACrC8B,EAAiB9B,EAAoB,IACrC2B,EAAiB3B,EAAoB,IACrCqJ,EAAiBrJ,EAAoB,GAsBzCe,GAAQA,EAAQyF,EAAG,WAAYjC,IAAKA,OAI/B,SAASnE,EAAQD,EAASH,GAG/B,GAAIe,GAAWf,EAAoB,GAC/B+vB,EAAW/vB,EAAoB,GAEhC+vB,IAAShvB,EAAQA,EAAQyF,EAAG,WAC7B8J,eAAgB,QAASA,gBAAezH,EAAQ2H,GAC9Cuf,EAASxf,MAAM1H,EAAQ2H,EACvB,KAEE,MADAuf,GAASxrB,IAAIsE,EAAQ2H,IACd,EACP,MAAM1I,GACN,OAAO,OAOR,SAAS1H,EAAQD,EAASH,GAG/B,GAAIe,GAAUf,EAAoB,EAElCe,GAAQA,EAAQyF,EAAG,QAASwpB,IAAK,WAAY,OAAO,GAAIC,OAAOC,cAI1D,SAAS9vB,EAAQD,EAASH,GAG/B,GAAIe,GAAcf,EAAoB,GAClC6O,EAAc7O,EAAoB,IAClC6B,EAAc7B,EAAoB,GAEtCe,GAAQA,EAAQgE,EAAIhE,EAAQ8F,EAAI7G,EAAoB,GAAG,WACrD,MAAkC,QAA3B,GAAIiwB,MAAKld,KAAKod,UAA4F,IAAvEF,KAAK3lB,UAAU6lB,OAAO5vB,MAAM6vB,YAAa,WAAY,MAAO,QACpG,QACFD,OAAQ,QAASA,QAAOpsB,GACtB,GAAIoF,GAAK0F,EAASlL,MACd0sB,EAAKxuB,EAAYsH,EACrB,OAAoB,gBAANknB,IAAmBpa,SAASoa,GAAalnB,EAAEinB,cAAT,SAM/C,SAAShwB,EAAQD,EAASH,GAI/B,GAAIe,GAAUf,EAAoB,GAC9B4O,EAAU5O,EAAoB,GAC9BkwB,EAAUD,KAAK3lB,UAAU4lB,QAEzBI,EAAK,SAASC,GAChB,MAAOA,GAAM,EAAIA,EAAM,IAAMA,EAI/BxvB,GAAQA,EAAQgE,EAAIhE,EAAQ8F,GAAK+H,EAAM,WACrC,MAA4C,4BAArC,GAAIqhB,MAAK,MAAQ,GAAGG,kBACtBxhB,EAAM,WACX,GAAIqhB,MAAKld,KAAKqd,iBACX,QACHA,YAAa,QAASA,eACpB,IAAIna,SAASia,EAAQ3vB,KAAKoD,OAAO,KAAMyR,YAAW,qBAClD,IAAIob,GAAI7sB,KACJ0M,EAAImgB,EAAEC,iBACNjwB,EAAIgwB,EAAEE,qBACN9b,EAAQ,EAAJvE,EAAQ,IAAMA,EAAI,KAAO,IAAM,EACvC,OAAOuE,IAAK,QAAUrN,KAAK6O,IAAI/F,IAAI7D,MAAMoI,EAAI,GAAK,IAChD,IAAM0b,EAAGE,EAAEG,cAAgB,GAAK,IAAML,EAAGE,EAAEI,cAC3C,IAAMN,EAAGE,EAAEK,eAAiB,IAAMP,EAAGE,EAAEM,iBACvC,IAAMR,EAAGE,EAAEO,iBAAmB,KAAOvwB,EAAI,GAAKA,EAAI,IAAM8vB,EAAG9vB,IAAM,QAMlE,SAASJ,EAAQD,EAASH,GAE/B,GAAIgxB,GAAef,KAAK3lB,UACpB2mB,EAAe,eACfnnB,EAAe,WACfC,EAAeinB,EAAUlnB,GACzBomB,EAAec,EAAUd,OAC1B,IAAID,MAAKld,KAAO,IAAMke,GACvBjxB,EAAoB,IAAIgxB,EAAWlnB,EAAW,QAASpD,YACrD,GAAI9C,GAAQssB,EAAQ3vB,KAAKoD,KACzB,OAAOC,KAAUA,EAAQmG,EAAUxJ,KAAKoD,MAAQstB,KAM/C,SAAS7wB,EAAQD,EAASH,GAE/B,GAAIgD,GAAehD,EAAoB,IAAI,eACvCwQ,EAAeyf,KAAK3lB,SAEnBtH,KAAgBwN,IAAOxQ,EAAoB,GAAGwQ,EAAOxN,EAAchD,EAAoB,OAIvF,SAASI,EAAQD,EAASH,GAG/B,GAAI2B,GAAc3B,EAAoB,IAClC6B,EAAc7B,EAAoB,IAClCmS,EAAc,QAElB/R,GAAOD,QAAU,SAAS+wB,GACxB,GAAY,WAATA,GAAqBA,IAAS/e,GAAmB,YAAT+e,EAAmB,KAAMzqB,WAAU,iBAC9E,OAAO5E,GAAYF,EAASgC,MAAOutB,GAAQ/e,KAKxC,SAAS/R,EAAQD,EAASH,GAG/B,GAAIe,GAAef,EAAoB,GACnCmxB,EAAenxB,EAAoB,KACnCoxB,EAAepxB,EAAoB,KACnC2B,EAAe3B,EAAoB,IACnC0M,EAAe1M,EAAoB,IACnCyM,EAAezM,EAAoB,IACnCqJ,EAAerJ,EAAoB,IAEnCqxB,GADerxB,EAAoB,IAAI,eACxBA,EAAoB,GAAGqxB,aACtC7L,EAAqBxlB,EAAoB,KACzCsxB,EAAeF,EAAOC,YACtBE,EAAeH,EAAOI,SACtBC,EAAeN,EAAOO,KAAOL,EAAYM,OACzCC,EAAeN,EAAahnB,UAAUkC,MACtCqlB,EAAeV,EAAOU,KACtBC,EAAe,aAEnB/wB,GAAQA,EAAQ4F,EAAI5F,EAAQ6F,EAAI7F,EAAQ8F,GAAKwqB,IAAgBC,IAAgBD,YAAaC,IAE1FvwB,EAAQA,EAAQyF,EAAIzF,EAAQ8F,GAAKsqB,EAAOY,OAAQD,GAE9CH,OAAQ,QAASA,QAAO7tB,GACtB,MAAO2tB,IAAWA,EAAQ3tB,IAAOuF,EAASvF,IAAO+tB,IAAQ/tB,MAI7D/C,EAAQA,EAAQgE,EAAIhE,EAAQgI,EAAIhI,EAAQ8F,EAAI7G,EAAoB,GAAG,WACjE,OAAQ,GAAIsxB,GAAa,GAAG9kB,MAAM,EAAG1M,GAAWkyB,aAC9CF,GAEFtlB,MAAO,QAASA,OAAMmT,EAAOtF,GAC3B,GAAGuX,IAAW9xB,GAAaua,IAAQva,EAAU,MAAO8xB,GAAOrxB,KAAKoB,EAASgC,MAAOgc,EAQhF,KAPA,GAAItO,GAAS1P,EAASgC,MAAMquB,WACxBnf,EAASnG,EAAQiT,EAAOtO,GACxB4gB,EAASvlB,EAAQ2N,IAAQva,EAAYuR,EAAMgJ,EAAKhJ,GAChDxL,EAAS,IAAK2f,EAAmB7hB,KAAM2tB,IAAe7kB,EAASwlB,EAAQpf,IACvEqf,EAAS,GAAIX,GAAU5tB,MACvBwuB,EAAS,GAAIZ,GAAU1rB,GACvBmG,EAAS,EACCimB,EAARpf,GACJsf,EAAMC,SAASpmB,IAASkmB,EAAMG,SAASxf,KACvC,OAAOhN,MAIb7F,EAAoB,KAAK8xB,IAIpB,SAAS1xB,EAAQD,EAASH,GAe/B,IAbA,GAOkBsyB,GAPd3xB,EAASX,EAAoB,GAC7B+H,EAAS/H,EAAoB,GAC7BsB,EAAStB,EAAoB,IAC7BuyB,EAASjxB,EAAI,eACbuwB,EAASvwB,EAAI,QACbowB,KAAY/wB,EAAO0wB,cAAe1wB,EAAO6wB,UACzCO,EAASL,EACTzsB,EAAI,EAAGC,EAAI,EAEXstB,EAAyB,iHAE3BzrB,MAAM,KAEE7B,EAAJD,IACDqtB,EAAQ3xB,EAAO6xB,EAAuBvtB,QACvC8C,EAAKuqB,EAAMhoB,UAAWioB,GAAO,GAC7BxqB,EAAKuqB,EAAMhoB,UAAWunB,GAAM,IACvBE,GAAS,CAGlB3xB,GAAOD,SACLuxB,IAAQA,EACRK,OAAQA,EACRQ,MAAQA,EACRV,KAAQA,IAKL,SAASzxB,GAAQD,EAASH,GAG/B,GAAIW,GAAiBX,EAAoB,GACrCc,EAAiBd,EAAoB,GACrCqb,GAAiBrb,EAAoB,IACrCmxB,EAAiBnxB,EAAoB,KACrC+H,EAAiB/H,EAAoB,GACrCqsB,EAAiBrsB,EAAoB,KACrC4O,EAAiB5O,EAAoB,GACrCslB,EAAiBtlB,EAAoB,IACrC8M,EAAiB9M,EAAoB,IACrCyM,EAAiBzM,EAAoB,IACrCsC,GAAiBtC,EAAoB,IAAIoC,EACzCC,EAAiBrC,EAAoB,GAAGoC,EACxCqwB,EAAiBzyB,EAAoB,KACrCqB,EAAiBrB,EAAoB,IACrC8xB,EAAiB,cACjBY,EAAiB,WACjB5vB,EAAiB,YACjB6vB,EAAiB,gBACjBC,EAAiB,eACjBtB,EAAiB3wB,EAAOmxB,GACxBP,EAAiB5wB,EAAO+xB,GACxBnrB,EAAiB5G,EAAO4G,KAExB6N,EAAiBzU,EAAOyU,WACxBO,EAAiBhV,EAAOgV,SACxBkd,EAAiBvB,EACjBlb,GAAiB7O,EAAK6O,IACtBtB,EAAiBvN,EAAKuN,IAEtB7H,EAAiB1F,EAAK0F,MACtB+H,EAAiBzN,EAAKyN,IACtBmC,EAAiB5P,EAAK4P,IACtB2b,EAAiB,SACjBC,EAAiB,aACjBC,EAAiB,aACjBC,EAAiBnyB,EAAc,KAAOgyB,EACtCI,EAAiBpyB,EAAc,KAAOiyB,EACtCI,EAAiBryB,EAAc,KAAOkyB,EAGtCI,EAAc,SAASxvB,EAAOyvB,EAAMC,GACtC,GAOIxrB,GAAGtH,EAAGC,EAPN2wB,EAAS7jB,MAAM+lB,GACfC,EAAkB,EAATD,EAAaD,EAAO,EAC7BG,GAAU,GAAKD,GAAQ,EACvBE,EAASD,GAAQ,EACjBE,EAAkB,KAATL,EAAcve,EAAI,EAAG,KAAOA,EAAI,EAAG,KAAO,EACnD7P,EAAS,EACT2P,EAAiB,EAARhR,GAAuB,IAAVA,GAA2B,EAAZ,EAAIA,EAAY,EAAI,CAgC7D,KA9BAA,EAAQwS,GAAIxS,GACTA,GAASA,GAASA,IAAU+R,GAC7BnV,EAAIoD,GAASA,EAAQ,EAAI,EACzBkE,EAAI0rB,IAEJ1rB,EAAImF,EAAM+H,EAAIpR,GAASuT,GACpBvT,GAASnD,EAAIqU,EAAI,GAAIhN,IAAM,IAC5BA,IACArH,GAAK,GAGLmD,GADCkE,EAAI2rB,GAAS,EACLC,EAAKjzB,EAELizB,EAAK5e,EAAI,EAAG,EAAI2e,GAExB7vB,EAAQnD,GAAK,IACdqH,IACArH,GAAK,GAEJqH,EAAI2rB,GAASD,GACdhzB,EAAI,EACJsH,EAAI0rB,GACI1rB,EAAI2rB,GAAS,GACrBjzB,GAAKoD,EAAQnD,EAAI,GAAKqU,EAAI,EAAGue,GAC7BvrB,GAAQ2rB,IAERjzB,EAAIoD,EAAQkR,EAAI,EAAG2e,EAAQ,GAAK3e,EAAI,EAAGue,GACvCvrB,EAAI,IAGFurB,GAAQ,EAAGjC,EAAOnsB,KAAW,IAAJzE,EAASA,GAAK,IAAK6yB,GAAQ,GAG1D,IAFAvrB,EAAIA,GAAKurB,EAAO7yB,EAChB+yB,GAAQF,EACFE,EAAO,EAAGnC,EAAOnsB,KAAW,IAAJ6C,EAASA,GAAK,IAAKyrB,GAAQ,GAEzD,MADAnC,KAASnsB,IAAU,IAAJ2P,EACRwc,GAELuC,EAAgB,SAASvC,EAAQiC,EAAMC,GACzC,GAOI9yB,GAPA+yB,EAAiB,EAATD,EAAaD,EAAO,EAC5BG,GAAS,GAAKD,GAAQ,EACtBE,EAAQD,GAAQ,EAChBI,EAAQL,EAAO,EACftuB,EAAQquB,EAAS,EACjB1e,EAAQwc,EAAOnsB,KACf6C,EAAY,IAAJ8M,CAGZ,KADAA,IAAM,EACAgf,EAAQ,EAAG9rB,EAAQ,IAAJA,EAAUspB,EAAOnsB,GAAIA,IAAK2uB,GAAS,GAIxD,IAHApzB,EAAIsH,GAAK,IAAM8rB,GAAS,EACxB9rB,KAAO8rB,EACPA,GAASP,EACHO,EAAQ,EAAGpzB,EAAQ,IAAJA,EAAU4wB,EAAOnsB,GAAIA,IAAK2uB,GAAS,GACxD,GAAS,IAAN9rB,EACDA,EAAI,EAAI2rB,MACH,CAAA,GAAG3rB,IAAM0rB,EACd,MAAOhzB,GAAIuS,IAAM6B,GAAKe,EAAWA,CAEjCnV,IAAQsU,EAAI,EAAGue,GACfvrB,GAAQ2rB,EACR,OAAQ7e,EAAI,GAAK,GAAKpU,EAAIsU,EAAI,EAAGhN,EAAIurB,IAGrCQ,EAAY,SAASC,GACvB,MAAOA,GAAM,IAAM,GAAKA,EAAM,IAAM,GAAKA,EAAM,IAAM,EAAIA,EAAM,IAE7DC,EAAS,SAASjwB,GACpB,OAAa,IAALA,IAENkwB,EAAU,SAASlwB,GACrB,OAAa,IAALA,EAAWA,GAAM,EAAI,MAE3BmwB,EAAU,SAASnwB,GACrB,OAAa,IAALA,EAAWA,GAAM,EAAI,IAAMA,GAAM,GAAK,IAAMA,GAAM,GAAK,MAE7DowB,EAAU,SAASpwB,GACrB,MAAOsvB,GAAYtvB,EAAI,GAAI,IAEzBqwB,EAAU,SAASrwB,GACrB,MAAOsvB,GAAYtvB,EAAI,GAAI,IAGzBswB,EAAY,SAAShhB,EAAGrP,EAAKswB,GAC/BhyB,EAAG+Q,EAAEtQ,GAAYiB,GAAML,IAAK,WAAY,MAAOC,MAAK0wB,OAGlD3wB,EAAM,SAAS4wB,EAAMR,EAAO9nB,EAAOuoB,GACrC,GAAIC,IAAYxoB,EACZyoB,EAAW3nB,EAAU0nB,EACzB,IAAGA,GAAYC,GAAuB,EAAXA,GAAgBA,EAAWX,EAAQQ,EAAKpB,GAAS,KAAM9d,GAAWwd,EAC7F,IAAInnB,GAAQ6oB,EAAKrB,GAASyB,GACtB/U,EAAQ8U,EAAWH,EAAKnB,GACxBwB,EAAQlpB,EAAMe,MAAMmT,EAAOA,EAAQmU,EACvC,OAAOS,GAAiBI,EAAOA,EAAKC,WAElCrwB,EAAM,SAAS+vB,EAAMR,EAAO9nB,EAAO6oB,EAAYjxB,EAAO2wB,GACxD,GAAIC,IAAYxoB,EACZyoB,EAAW3nB,EAAU0nB,EACzB,IAAGA,GAAYC,GAAuB,EAAXA,GAAgBA,EAAWX,EAAQQ,EAAKpB,GAAS,KAAM9d,GAAWwd,EAI7F,KAAI,GAHAnnB,GAAQ6oB,EAAKrB,GAASyB,GACtB/U,EAAQ8U,EAAWH,EAAKnB,GACxBwB,EAAQE,GAAYjxB,GAChBqB,EAAI,EAAO6uB,EAAJ7uB,EAAWA,IAAIwG,EAAMkU,EAAQ1a,GAAK0vB,EAAKJ,EAAiBtvB,EAAI6uB,EAAQ7uB,EAAI,IAGrF6vB,EAA+B,SAASnqB,EAAMxF,GAChDmgB,EAAW3a,EAAM2mB,EAAcQ,EAC/B,IAAIiD,IAAgB5vB,EAChB6sB,EAAevlB,EAASsoB,EAC5B,IAAGA,GAAgB/C,EAAW,KAAM5c,GAAWud,EAC/C,OAAOX,GAGT,IAAIb,EAAOO,IA+EJ,CACL,IAAI9iB,EAAM,WACR,GAAI0iB,OACC1iB,EAAM,WACX,GAAI0iB,GAAa,MAChB,CACDA,EAAe,QAASD,aAAYlsB,GAClC,MAAO,IAAI0tB,GAAWiC,EAA6BnxB,KAAMwB,IAG3D,KAAI,GAAoCpB,GADpCixB,EAAmB1D,EAAaxuB,GAAa+vB,EAAW/vB,GACpDkC,EAAO1C,GAAKuwB,GAAa1iB,EAAI,EAAQnL,EAAKG,OAASgL,IACnDpM,EAAMiB,EAAKmL,OAASmhB,IAAcvpB,EAAKupB,EAAcvtB,EAAK8uB,EAAW9uB,GAEzEsX,MAAQ2Z,EAAiBhmB,YAAcsiB,GAG7C,GAAIgD,GAAO,GAAI/C,GAAU,GAAID,GAAa,IACtC2D,EAAW1D,EAAUzuB,GAAWoyB,OACpCZ,GAAKY,QAAQ,EAAG,YAChBZ,EAAKY,QAAQ,EAAG,aACbZ,EAAKa,QAAQ,IAAOb,EAAKa,QAAQ,IAAG9I,EAAYkF,EAAUzuB,IAC3DoyB,QAAS,QAASA,SAAQE,EAAYxxB,GACpCqxB,EAAS10B,KAAKoD,KAAMyxB,EAAYxxB,GAAS,IAAM,KAEjDwuB,SAAU,QAASA,UAASgD,EAAYxxB,GACtCqxB,EAAS10B,KAAKoD,KAAMyxB,EAAYxxB,GAAS,IAAM,OAEhD,OAzGH0tB,GAAe,QAASD,aAAYlsB,GAClC,GAAI6sB,GAAa8C,EAA6BnxB,KAAMwB,EACpDxB,MAAK+wB,GAAWjC,EAAUlyB,KAAKgN,MAAMykB,GAAa,GAClDruB,KAAKuvB,GAAWlB,GAGlBT,EAAY,QAASC,UAASJ,EAAQgE,EAAYpD,GAChD1M,EAAW3hB,KAAM4tB,EAAWmB,GAC5BpN,EAAW8L,EAAQE,EAAcoB,EACjC,IAAI2C,GAAejE,EAAO8B,GACtBoC,EAAexoB,EAAUsoB,EAC7B,IAAY,EAATE,GAAcA,EAASD,EAAa,KAAMjgB,GAAW,gBAExD,IADA4c,EAAaA,IAAelyB,EAAYu1B,EAAeC,EAAS7oB,EAASulB,GACtEsD,EAAStD,EAAaqD,EAAa,KAAMjgB,GAAWud,EACvDhvB,MAAKsvB,GAAW7B,EAChBztB,KAAKwvB,GAAWmC,EAChB3xB,KAAKuvB,GAAWlB,GAGflxB,IACDszB,EAAU9C,EAAcyB,EAAa,MACrCqB,EAAU7C,EAAWuB,EAAQ,MAC7BsB,EAAU7C,EAAWwB,EAAa,MAClCqB,EAAU7C,EAAWyB,EAAa,OAGpC3G,EAAYkF,EAAUzuB,IACpBqyB,QAAS,QAASA,SAAQC,GACxB,MAAO1xB,GAAIC,KAAM,EAAGyxB,GAAY,IAAM,IAAM,IAE9C/C,SAAU,QAASA,UAAS+C,GAC1B,MAAO1xB,GAAIC,KAAM,EAAGyxB,GAAY,IAElCG,SAAU,QAASA,UAASH,GAC1B,GAAItB,GAAQpwB,EAAIC,KAAM,EAAGyxB,EAAY/uB,UAAU,GAC/C,QAAQytB,EAAM,IAAM,EAAIA,EAAM,KAAO,IAAM,IAE7C0B,UAAW,QAASA,WAAUJ,GAC5B,GAAItB,GAAQpwB,EAAIC,KAAM,EAAGyxB,EAAY/uB,UAAU,GAC/C,OAAOytB,GAAM,IAAM,EAAIA,EAAM,IAE/B2B,SAAU,QAASA,UAASL,GAC1B,MAAOvB,GAAUnwB,EAAIC,KAAM,EAAGyxB,EAAY/uB,UAAU,MAEtDqvB,UAAW,QAASA,WAAUN,GAC5B,MAAOvB,GAAUnwB,EAAIC,KAAM,EAAGyxB,EAAY/uB,UAAU,OAAS,GAE/DsvB,WAAY,QAASA,YAAWP,GAC9B,MAAOzB,GAAcjwB,EAAIC,KAAM,EAAGyxB,EAAY/uB,UAAU,IAAK,GAAI,IAEnEuvB,WAAY,QAASA,YAAWR,GAC9B,MAAOzB,GAAcjwB,EAAIC,KAAM,EAAGyxB,EAAY/uB,UAAU,IAAK,GAAI,IAEnE6uB,QAAS,QAASA,SAAQE,EAAYxxB,GACpCW,EAAIZ,KAAM,EAAGyxB,EAAYrB,EAAQnwB,IAEnCwuB,SAAU,QAASA,UAASgD,EAAYxxB,GACtCW,EAAIZ,KAAM,EAAGyxB,EAAYrB,EAAQnwB,IAEnCiyB,SAAU,QAASA,UAAST,EAAYxxB,GACtCW,EAAIZ,KAAM,EAAGyxB,EAAYpB,EAASpwB,EAAOyC,UAAU,KAErDyvB,UAAW,QAASA,WAAUV,EAAYxxB,GACxCW,EAAIZ,KAAM,EAAGyxB,EAAYpB,EAASpwB,EAAOyC,UAAU,KAErD0vB,SAAU,QAASA,UAASX,EAAYxxB,GACtCW,EAAIZ,KAAM,EAAGyxB,EAAYnB,EAASrwB,EAAOyC,UAAU,KAErD2vB,UAAW,QAASA,WAAUZ,EAAYxxB,GACxCW,EAAIZ,KAAM,EAAGyxB,EAAYnB,EAASrwB,EAAOyC,UAAU,KAErD4vB,WAAY,QAASA,YAAWb,EAAYxxB,GAC1CW,EAAIZ,KAAM,EAAGyxB,EAAYjB,EAASvwB,EAAOyC,UAAU,KAErD6vB,WAAY,QAASA,YAAWd,EAAYxxB,GAC1CW,EAAIZ,KAAM,EAAGyxB,EAAYlB,EAAStwB,EAAOyC,UAAU,MAgCzDhF,GAAeiwB,EAAcQ,GAC7BzwB,EAAekwB,EAAWmB,GAC1B3qB,EAAKwpB,EAAUzuB,GAAYquB,EAAOU,MAAM,GACxC1xB,EAAQ2xB,GAAgBR,EACxBnxB,EAAQuyB,GAAanB,GAIhB,SAASnxB,EAAQD,EAASH,GAE/B,GAAIe,GAAUf,EAAoB,EAClCe,GAAQA,EAAQ4F,EAAI5F,EAAQ6F,EAAI7F,EAAQ8F,GAAK7G,EAAoB,KAAK0xB,KACpEF,SAAUxxB,EAAoB,KAAKwxB,YAKhC,SAASpxB,EAAQD,EAASH,GAE/BA,EAAoB,KAAK,OAAQ,EAAG,SAASm2B,GAC3C,MAAO,SAASC,WAAU/hB,EAAM+gB,EAAYjwB,GAC1C,MAAOgxB,GAAKxyB,KAAM0Q,EAAM+gB,EAAYjwB,OAMnC,SAAS/E,EAAQD,GAASH,GAG/B,GAAGA,EAAoB,GAAG,CACxB,GAAIqb,GAAsBrb,EAAoB,IAC1CW,EAAsBX,EAAoB,GAC1C4O,EAAsB5O,EAAoB,GAC1Ce,EAAsBf,EAAoB,GAC1CmxB,EAAsBnxB,EAAoB,KAC1Cq2B,GAAsBr2B,EAAoB,KAC1CgI,GAAsBhI,EAAoB,IAC1CslB,GAAsBtlB,EAAoB,IAC1Cs2B,GAAsBt2B,EAAoB,IAC1C+H,EAAsB/H,EAAoB,GAC1CqsB,EAAsBrsB,EAAoB,KAE1C8M,IADsB9M,EAAoB,IACpBA,EAAoB,KAC1CyM,EAAsBzM,EAAoB,IAC1C0M,GAAsB1M,EAAoB,IAC1C6B,GAAsB7B,EAAoB,IAC1Ca,EAAsBb,EAAoB,GAC1Cu2B,GAAsBv2B,EAAoB,IAC1C4Q,GAAsB5Q,EAAoB,IAC1CqJ,EAAsBrJ,EAAoB,IAC1C6O,GAAsB7O,EAAoB,IAC1Coe,GAAsBpe,EAAoB,KAC1CqF,GAAsBrF,EAAoB,IAC1C+O,GAAsB/O,EAAoB,IAC1CsC,EAAsBtC,EAAoB,IAAIoC,EAE9Cic,IADsBre,EAAoB,KACpBA,EAAoB,MAC1CsB,EAAsBtB,EAAoB,IAC1CuB,EAAsBvB,EAAoB,IAC1CouB,EAAsBpuB,EAAoB,KAC1Cw2B,EAAsBx2B,EAAoB,IAC1CwlB,EAAsBxlB,EAAoB,KAC1Cy2B,EAAsBz2B,EAAoB,KAC1Csb,GAAsBtb,EAAoB,KAC1CgtB,GAAsBhtB,EAAoB,KAC1CusB,GAAsBvsB,EAAoB,KAC1CyyB,GAAsBzyB,EAAoB,KAC1C02B,GAAsB12B,EAAoB,KAC1CkC,EAAsBlC,EAAoB,GAC1CiC,EAAsBjC,EAAoB,IAC1CqC,EAAsBH,EAAIE,EAC1BD,GAAsBF,EAAMG,EAC5BgT,EAAsBzU,EAAOyU,WAC7B3O,EAAsB9F,EAAO8F,UAC7BkwB,EAAsBh2B,EAAOg2B,WAC7B7E,EAAsB,cACtB8E,EAAsB,SAAW9E,EACjC+E,EAAsB,oBACtB/zB,EAAsB,YACtBgc,EAAsBvR,MAAMzK,GAC5BwuB,EAAsB+E,GAAQhF,YAC9BE,GAAsB8E,GAAQ7E,SAC9BsF,GAAsB1I,EAAkB,GACxC2I,GAAsB3I,EAAkB,GACxC4I,GAAsB5I,EAAkB,GACxC6I,GAAsB7I,EAAkB,GACxCE,GAAsBF,EAAkB,GACxCG,GAAsBH,EAAkB,GACxC8I,GAAsBV,GAAoB,GAC1CrqB,GAAsBqqB,GAAoB,GAC1CW,GAAsBV,EAAena,OACrC8a,GAAsBX,EAAezxB,KACrCqyB,GAAsBZ,EAAela,QACrC+a,GAAsBxY,EAAW8C,YACjC2V,GAAsBzY,EAAWwC,OACjCkW,GAAsB1Y,EAAW2C,YACjCpC,GAAsBP,EAAW1U,KACjCqtB,GAAsB3Y,EAAWiB,KACjC7O,EAAsB4N,EAAWtS,MACjCkrB,EAAsB5Y,EAAWpY,SACjCixB,EAAsB7Y,EAAW8Y,eACjCpc,EAAsBja,EAAI,YAC1BoK,EAAsBpK,EAAI,eAC1Bs2B,GAAsBv2B,EAAI,qBAC1Bw2B,EAAsBx2B,EAAI,mBAC1By2B,GAAsB5G,EAAOY,OAC7BiG,EAAsB7G,EAAOoB,MAC7BV,GAAsBV,EAAOU,KAC7Bc,EAAsB,gBAEtB9R,GAAOuN,EAAkB,EAAG,SAASjlB,EAAGhE,GAC1C,MAAO8yB,GAASzS,EAAmBrc,EAAGA,EAAE2uB,IAAmB3yB,KAGzD+yB,GAAgBtpB,EAAM,WACxB,MAA0D,KAAnD,GAAI+nB,GAAW,GAAIwB,cAAa,IAAI/G,QAAQ,KAGjDgH,KAAezB,KAAgBA,EAAW7zB,GAAWyB,KAAOqK,EAAM,WACpE,GAAI+nB,GAAW,GAAGpyB,UAGhB8zB,GAAiB,SAASv0B,EAAIw0B,GAChC,GAAGx0B,IAAOhE,EAAU,KAAM2G,GAAUksB,EACpC,IAAIxc,IAAUrS,EACVqB,EAASsH,EAAS3I,EACtB,IAAGw0B,IAAS/B,GAAKpgB,EAAQhR,GAAQ,KAAMiQ,GAAWud,EAClD,OAAOxtB,IAGLozB,EAAW,SAASz0B,EAAI00B,GAC1B,GAAIlD,GAASxoB,GAAUhJ,EACvB,IAAY,EAATwxB,GAAcA,EAASkD,EAAM,KAAMpjB,GAAW,gBACjD,OAAOkgB,IAGLmD,EAAW,SAAS30B,GACtB,GAAGuF,EAASvF,IAAOk0B,IAAel0B,GAAG,MAAOA,EAC5C,MAAM2C,GAAU3C,EAAK,2BAGnBm0B,EAAW,SAAS7kB,EAAGjO,GACzB,KAAKkE,EAAS+J,IAAMykB,KAAqBzkB,IACvC,KAAM3M,GAAU,uCAChB,OAAO,IAAI2M,GAAEjO,IAGbuzB,GAAkB,SAASvvB,EAAGwvB,GAChC,MAAOC,GAASpT,EAAmBrc,EAAGA,EAAE2uB,IAAmBa,IAGzDC,EAAW,SAASxlB,EAAGulB,GAIzB,IAHA,GAAI3sB,GAAS,EACT7G,EAASwzB,EAAKxzB,OACdU,EAASoyB,EAAS7kB,EAAGjO,GACnBA,EAAS6G,GAAMnG,EAAOmG,GAAS2sB,EAAK3sB,IAC1C,OAAOnG,IAGLuuB,EAAY,SAAStwB,EAAIC,EAAKswB,GAChChyB,EAAGyB,EAAIC,GAAML,IAAK,WAAY,MAAOC,MAAK8kB,GAAG4L,OAG3CwE,EAAQ,QAASta,MAAKpW,GACxB,GAKIlD,GAAGE,EAAQmX,EAAQzW,EAAQ4Y,EAAMha,EALjC0E,EAAU0F,GAAS1G,GACnB+H,EAAU7J,UAAUlB,OACpBuZ,EAAUxO,EAAO,EAAI7J,UAAU,GAAKvG,EACpC6e,EAAUD,IAAU5e,EACpB8e,EAAUP,GAAUlV,EAExB,IAAGyV,GAAU9e,IAAcse,GAAYQ,GAAQ,CAC7C,IAAIna,EAAWma,EAAOre,KAAK4I,GAAImT,KAAarX,EAAI,IAAKwZ,EAAOha,EAASqX,QAAQV,KAAMnW,IACjFqX,EAAOxW,KAAK2Y,EAAK7a,MACjBuF,GAAImT,EAGR,IADGqC,GAAWzO,EAAO,IAAEwO,EAAQ1W,GAAI0W,EAAOrY,UAAU,GAAI,IACpDpB,EAAI,EAAGE,EAASsH,EAAStD,EAAEhE,QAASU,EAASoyB,EAASt0B,KAAMwB,GAASA,EAASF,EAAGA,IACnFY,EAAOZ,GAAK0Z,EAAUD,EAAMvV,EAAElE,GAAIA,GAAKkE,EAAElE,EAE3C,OAAOY,IAGLizB,GAAM,QAAS1Z,MAIjB,IAHA,GAAIpT,GAAS,EACT7G,EAASkB,UAAUlB,OACnBU,EAASoyB,EAASt0B,KAAMwB,GACtBA,EAAS6G,GAAMnG,EAAOmG,GAAS3F,UAAU2F,IAC/C,OAAOnG,IAILkzB,KAAkBpC,GAAc/nB,EAAM,WAAY+oB,EAAoBp3B,KAAK,GAAIo2B,GAAW,MAE1FqC,GAAkB,QAASpB,kBAC7B,MAAOD,GAAoBrxB,MAAMyyB,GAAgB7nB,EAAW3Q,KAAKk4B,EAAS90B,OAAS80B,EAAS90B,MAAO0C,YAGjGmK,GACFqR,WAAY,QAASA,YAAWhZ,EAAQ8W,GACtC,MAAO+W,IAAgBn2B,KAAKk4B,EAAS90B,MAAOkF,EAAQ8W,EAAOtZ,UAAUlB,OAAS,EAAIkB,UAAU,GAAKvG,IAEnGshB,MAAO,QAASA,OAAMjB,GACpB,MAAO8W,IAAWwB,EAAS90B,MAAOwc,EAAY9Z,UAAUlB,OAAS,EAAIkB,UAAU,GAAKvG,IAEtFmiB,KAAM,QAASA,MAAKre,GAClB,MAAO6uB,IAAUnsB,MAAMmyB,EAAS90B,MAAO0C,YAEzC2a,OAAQ,QAASA,QAAOb,GACtB,MAAOuY,IAAgB/0B,KAAMozB,GAAY0B,EAAS90B,MAAOwc,EACvD9Z,UAAUlB,OAAS,EAAIkB,UAAU,GAAKvG,KAE1CuiB,KAAM,QAASA,MAAK4W,GAClB,MAAO3K,IAAUmK,EAAS90B,MAAOs1B,EAAW5yB,UAAUlB,OAAS,EAAIkB,UAAU,GAAKvG,IAEpFwiB,UAAW,QAASA,WAAU2W,GAC5B,MAAO1K,IAAekK,EAAS90B,MAAOs1B,EAAW5yB,UAAUlB,OAAS,EAAIkB,UAAU,GAAKvG,IAEzFiQ,QAAS,QAASA,SAAQoQ,GACxB2W,GAAa2B,EAAS90B,MAAOwc,EAAY9Z,UAAUlB,OAAS,EAAIkB,UAAU,GAAKvG,IAEjF8a,QAAS,QAASA,SAAQ+G,GACxB,MAAOxV,IAAassB,EAAS90B,MAAOge,EAAetb,UAAUlB,OAAS,EAAIkB,UAAU,GAAKvG,IAE3F6a,SAAU,QAASA,UAASgH,GAC1B,MAAOuV,IAAcuB,EAAS90B,MAAOge,EAAetb,UAAUlB,OAAS,EAAIkB,UAAU,GAAKvG,IAE5FsK,KAAM,QAASA,MAAKkV,GAClB,MAAOD,IAAU/Y,MAAMmyB,EAAS90B,MAAO0C,YAEzCub,YAAa,QAASA,aAAYD,GAChC,MAAO2V,IAAiBhxB,MAAMmyB,EAAS90B,MAAO0C,YAEhDya,IAAK,QAASA,KAAIpC,GAChB,MAAOmC,IAAK4X,EAAS90B,MAAO+a,EAAOrY,UAAUlB,OAAS,EAAIkB,UAAU,GAAKvG,IAE3EwhB,OAAQ,QAASA,QAAOnB,GACtB,MAAOoX,IAAYjxB,MAAMmyB,EAAS90B,MAAO0C,YAE3Cob,YAAa,QAASA,aAAYtB,GAChC,MAAOqX,IAAiBlxB,MAAMmyB,EAAS90B,MAAO0C,YAEhDuuB,QAAS,QAASA,WAMhB,IALA,GAIIhxB,GAJA+G,EAAShH,KACTwB,EAASszB,EAAS9tB,GAAMxF,OACxB+zB,EAAS3xB,KAAK0F,MAAM9H,EAAS,GAC7B6G,EAAS,EAECktB,EAARltB,GACJpI,EAAgB+G,EAAKqB,GACrBrB,EAAKqB,KAAWrB,IAAOxF,GACvBwF,EAAKxF,GAAWvB,CAChB,OAAO+G,IAEXuW,KAAM,QAASA,MAAKf,GAClB,MAAO6W,IAAUyB,EAAS90B,MAAOwc,EAAY9Z,UAAUlB,OAAS,EAAIkB,UAAU,GAAKvG,IAErFigB,KAAM,QAASA,MAAKC,GAClB,MAAOyX,IAAUl3B,KAAKk4B,EAAS90B,MAAOqc,IAExCmZ,SAAU,QAASA,UAAS1Z,EAAOpF,GACjC,GAAIlR,GAASsvB,EAAS90B,MAClBwB,EAASgE,EAAEhE,OACXi0B,EAAS1sB,GAAQ+S,EAAOta,EAC5B,OAAO,KAAKqgB,EAAmBrc,EAAGA,EAAE2uB,KAClC3uB,EAAEioB,OACFjoB,EAAEisB,WAAagE,EAASjwB,EAAE0tB,kBAC1BpqB,GAAU4N,IAAQva,EAAYqF,EAASuH,GAAQ2N,EAAKlV,IAAWi0B,MAKjExH,EAAS,QAASplB,OAAMmT,EAAOtF,GACjC,MAAOqe,IAAgB/0B,KAAMuN,EAAW3Q,KAAKk4B,EAAS90B,MAAOgc,EAAOtF,KAGlEgf,EAAO,QAAS90B,KAAIia,GACtBia,EAAS90B,KACT,IAAI2xB,GAASiD,EAASlyB,UAAU,GAAI,GAChClB,EAASxB,KAAKwB,OACd+I,EAASW,GAAS2P,GAClBnN,EAAS5E,EAASyB,EAAI/I,QACtB6G,EAAS,CACb,IAAGqF,EAAMikB,EAASnwB,EAAO,KAAMiQ,GAAWud,EAC1C,MAActhB,EAARrF,GAAYrI,KAAK2xB,EAAStpB,GAASkC,EAAIlC,MAG3CstB,GACF/c,QAAS,QAASA,WAChB,MAAO8a,IAAa92B,KAAKk4B,EAAS90B,QAEpCqB,KAAM,QAASA,QACb,MAAOoyB,IAAU72B,KAAKk4B,EAAS90B,QAEjC2Y,OAAQ,QAASA,UACf,MAAO6a,IAAY52B,KAAKk4B,EAAS90B,SAIjC41B,EAAY,SAAS1wB,EAAQ9E,GAC/B,MAAOsF,GAASR,IACXA,EAAOmvB,IACO,gBAAPj0B,IACPA,IAAO8E,IACPwB,QAAQtG,IAAQsG,OAAOtG,IAE1By1B,EAAW,QAAS/zB,0BAAyBoD,EAAQ9E,GACvD,MAAOw1B,GAAU1wB,EAAQ9E,EAAMlC,GAAYkC,GAAK,IAC5CuyB,GAAa,EAAGztB,EAAO9E,IACvB5B,GAAK0G,EAAQ9E,IAEf01B,EAAW,QAAS90B,gBAAekE,EAAQ9E,EAAKurB,GAClD,QAAGiK,EAAU1wB,EAAQ9E,EAAMlC,GAAYkC,GAAK,KACvCsF,EAASimB,IACTzuB,EAAIyuB,EAAM,WACTzuB,EAAIyuB,EAAM,QACVzuB,EAAIyuB,EAAM,QAEVA,EAAKhrB,cACJzD,EAAIyuB,EAAM,cAAeA,EAAK1lB,UAC9B/I,EAAIyuB,EAAM,gBAAiBA,EAAK1qB,WAIzBvC,EAAGwG,EAAQ9E,EAAKurB,IAF5BzmB,EAAO9E,GAAOurB,EAAK1rB;AACZiF,GAIPkvB,MACF91B,EAAMG,EAAIo3B,EACVt3B,EAAIE,EAAMq3B,GAGZ14B,EAAQA,EAAQyF,EAAIzF,EAAQ8F,GAAKkxB,GAAkB,UACjDtyB,yBAA0B+zB,EAC1B70B,eAA0B80B,IAGzB7qB,EAAM,WAAY8oB,EAAcn3B,aACjCm3B,EAAgBC,EAAsB,QAASjxB,YAC7C,MAAO2Y,IAAU9e,KAAKoD,OAI1B,IAAI+1B,GAAwBrN,KAAgB7b,EAC5C6b,GAAYqN,EAAuBJ,GACnCvxB,EAAK2xB,EAAuBle,EAAU8d,EAAWhd,QACjD+P,EAAYqN,GACVltB,MAAgBolB,EAChBrtB,IAAgB80B,EAChBrqB,YAAgB,aAChBtI,SAAgBgxB,EAChBE,eAAgBoB,KAElB5E,EAAUsF,EAAuB,SAAU,KAC3CtF,EAAUsF,EAAuB,aAAc,KAC/CtF,EAAUsF,EAAuB,aAAc,KAC/CtF,EAAUsF,EAAuB,SAAU,KAC3Cr3B,EAAGq3B,EAAuB/tB,GACxBjI,IAAK,WAAY,MAAOC,MAAKq0B,MAG/B53B,EAAOD,QAAU,SAASe,EAAKs3B,EAAO5P,EAAS+Q,GAC7CA,IAAYA,CACZ,IAAI/nB,GAAa1Q,GAAOy4B,EAAU,UAAY,IAAM,QAChDC,EAAqB,cAARhoB,EACbioB,EAAa,MAAQ34B,EACrB44B,EAAa,MAAQ54B,EACrB64B,EAAap5B,EAAOiR,GACpBS,EAAa0nB,MACbC,EAAaD,GAAchrB,GAAegrB,GAC1C9d,GAAc8d,IAAe5I,EAAOO,IACpCvoB,KACA8wB,EAAsBF,GAAcA,EAAWj3B,GAC/Co3B,EAAS,SAASvvB,EAAMqB,GAC1B,GAAIqI,GAAO1J,EAAK8d,EAChB,OAAOpU,GAAK+X,EAAEyN,GAAQ7tB,EAAQwsB,EAAQnkB,EAAK8lB,EAAGjC,KAE5Cr1B,EAAS,SAAS8H,EAAMqB,EAAOpI,GACjC,GAAIyQ,GAAO1J,EAAK8d,EACbkR,KAAQ/1B,GAASA,EAAQ2D,KAAK6yB,MAAMx2B,IAAU,EAAI,EAAIA,EAAQ,IAAO,IAAe,IAARA,GAC/EyQ,EAAK+X,EAAE0N,GAAQ9tB,EAAQwsB,EAAQnkB,EAAK8lB,EAAGv2B,EAAOs0B,KAE5CmC,EAAa,SAAS1vB,EAAMqB,GAC9B3J,EAAGsI,EAAMqB,GACPtI,IAAK,WACH,MAAOw2B,GAAOv2B,KAAMqI,IAEtBzH,IAAK,SAASX,GACZ,MAAOf,GAAOc,KAAMqI,EAAOpI,IAE7BgB,YAAY,IAGbqX,IACD8d,EAAanR,EAAQ,SAASje,EAAM0J,EAAMimB,EAASC,GACjDjV,GAAW3a,EAAMovB,EAAYnoB,EAAM,KACnC,IAEIwf,GAAQY,EAAY7sB,EAAQua,EAF5B1T,EAAS,EACTspB,EAAS,CAEb,IAAIjsB,EAASgL,GAIN,CAAA,KAAGA,YAAgBid,KAAiB5R,EAAQ9O,GAAQyD,KAAUyd,GAAgBpS,GAASkX,GAavF,MAAGoB,KAAe3jB,GAChBukB,EAASmB,EAAY1lB,GAErBwkB,EAAMt4B,KAAKw5B,EAAY1lB,EAf9B+c,GAAS/c,EACTihB,EAASiD,EAAS+B,EAAS9B,EAC3B,IAAIgC,GAAOnmB,EAAK2d,UAChB,IAAGuI,IAAYz6B,EAAU,CACvB,GAAG06B,EAAOhC,EAAM,KAAMpjB,GAAWud,EAEjC,IADAX,EAAawI,EAAOlF,EACJ,EAAbtD,EAAe,KAAM5c,GAAWud,OAGnC,IADAX,EAAavlB,EAAS8tB,GAAW/B,EAC9BxG,EAAasD,EAASkF,EAAK,KAAMplB,GAAWud,EAEjDxtB,GAAS6sB,EAAawG,MAftBrzB,GAAakzB,GAAehkB,GAAM,GAClC2d,EAAa7sB,EAASqzB,EACtBpH,EAAa,GAAIE,GAAaU,EA0BhC,KAPAjqB,EAAK4C,EAAM,MACTC,EAAGwmB,EACH+I,EAAG7E,EACHpwB,EAAG8sB,EACHlqB,EAAG3C,EACHinB,EAAG,GAAImF,IAAUH,KAELjsB,EAAR6G,GAAequB,EAAW1vB,EAAMqB,OAExCiuB,EAAsBF,EAAWj3B,GAAauC,GAAOq0B,GACrD3xB,EAAKkyB,EAAqB,cAAeF,IAChC/M,GAAY,SAAS1O,GAG9B,GAAIyb,GAAW,MACf,GAAIA,GAAWzb,KACd,KACDyb,EAAanR,EAAQ,SAASje,EAAM0J,EAAMimB,EAASC,GACjDjV,GAAW3a,EAAMovB,EAAYnoB,EAC7B,IAAI8N,EAGJ,OAAIrW,GAASgL,GACVA,YAAgBid,KAAiB5R,EAAQ9O,GAAQyD,KAAUyd,GAAgBpS,GAASkX,EAC9E2D,IAAYz6B,EACf,GAAIuS,GAAKgC,EAAMkkB,EAAS+B,EAAS9B,GAAQ+B,GACzCD,IAAYx6B,EACV,GAAIuS,GAAKgC,EAAMkkB,EAAS+B,EAAS9B,IACjC,GAAInmB,GAAKgC,GAEd2jB,IAAe3jB,GAAYukB,EAASmB,EAAY1lB,GAC5CwkB,EAAMt4B,KAAKw5B,EAAY1lB,GATJ,GAAIhC,GAAKgmB,GAAehkB,EAAMulB,MAW1D9C,GAAakD,IAAQtyB,SAAS4C,UAAYhI,EAAK+P,GAAM5H,OAAOnI,EAAK03B,IAAQ13B,EAAK+P,GAAO,SAAStO,GACvFA,IAAOg2B,IAAYhyB,EAAKgyB,EAAYh2B,EAAKsO,EAAKtO,MAErDg2B,EAAWj3B,GAAam3B,EACpB5e,IAAQ4e,EAAoBjrB,YAAc+qB,GAEhD,IAAIU,GAAoBR,EAAoBze,GACxCkf,IAAsBD,IAA4C,UAAxBA,EAAgBvyB,MAAoBuyB,EAAgBvyB,MAAQpI,GACtG66B,EAAoBrB,EAAWhd,MACnCvU,GAAKgyB,EAAYlC,IAAmB,GACpC9vB,EAAKkyB,EAAqBjC,EAAapmB,GACvC7J,EAAKkyB,EAAqBpI,IAAM,GAChC9pB,EAAKkyB,EAAqBnC,EAAiBiC,IAExCJ,EAAU,GAAII,GAAW,GAAGpuB,IAAQiG,EAASjG,IAAOsuB,KACrD53B,EAAG43B,EAAqBtuB,GACtBjI,IAAK,WAAY,MAAOkO,MAI5BzI,EAAEyI,GAAQmoB,EAEVh5B,EAAQA,EAAQ4F,EAAI5F,EAAQ6F,EAAI7F,EAAQ8F,GAAKkzB,GAAc1nB,GAAOlJ,GAElEpI,EAAQA,EAAQyF,EAAGoL,GACjBilB,kBAAmB2B,EACnBja,KAAMsa,EACNzZ,GAAI0Z,KAGDjC,IAAqBoD,IAAqBlyB,EAAKkyB,EAAqBpD,EAAmB2B,GAE5Fz3B,EAAQA,EAAQgE,EAAG6M,EAAMpB,GAEzB+b,GAAW3a,GAEX7Q,EAAQA,EAAQgE,EAAIhE,EAAQ8F,EAAIuxB,GAAYxmB,GAAOrN,IAAK80B,IAExDt4B,EAAQA,EAAQgE,EAAIhE,EAAQ8F,GAAK6zB,EAAmB9oB,EAAM0nB,GAE1Dv4B,EAAQA,EAAQgE,EAAIhE,EAAQ8F,GAAKozB,EAAoBvzB,UAAYgxB,GAAgB9lB,GAAOlL,SAAUgxB,IAElG32B,EAAQA,EAAQgE,EAAIhE,EAAQ8F,EAAI+H,EAAM,WACpC,GAAImrB,GAAW,GAAGvtB,UAChBoF,GAAOpF,MAAOolB,IAElB7wB,EAAQA,EAAQgE,EAAIhE,EAAQ8F,GAAK+H,EAAM,WACrC,OAAQ,EAAG,GAAGgpB,kBAAoB,GAAImC,IAAY,EAAG,IAAInC,qBACpDhpB,EAAM,WACXqrB,EAAoBrC,eAAer3B,MAAM,EAAG,OACzCqR,GAAOgmB,eAAgBoB,KAE5B1d,GAAU1J,GAAQ8oB,EAAoBD,EAAkBE,EACpDtf,GAAYqf,GAAkB3yB,EAAKkyB,EAAqBze,EAAUmf,QAEnEv6B,GAAOD,QAAU,cAInB,SAASC,EAAQD,EAASH,GAE/B,GAAI4Q,GAAY5Q,EAAoB,IAChCwb,EAAYxb,EAAoB,IAAI,YACpCsb,EAAYtb,EAAoB,IACpCI,GAAOD,QAAUH,EAAoB,GAAG46B,WAAa,SAAS92B,GAC5D,GAAIqF,GAAI7F,OAAOQ,EACf,OAAOqF,GAAEqS,KAAc1b,GAClB,cAAgBqJ,IAChBmS,EAAU1T,eAAegJ,EAAQzH,MAKnC,SAAS/I,EAAQD,EAASH,GAE/BA,EAAoB,KAAK,QAAS,EAAG,SAASm2B,GAC5C,MAAO,SAASQ,YAAWtiB,EAAM+gB,EAAYjwB,GAC3C,MAAOgxB,GAAKxyB,KAAM0Q,EAAM+gB,EAAYjwB,OAMnC,SAAS/E,EAAQD,EAASH,GAE/BA,EAAoB,KAAK,QAAS,EAAG,SAASm2B,GAC5C,MAAO,SAAS0E,mBAAkBxmB,EAAM+gB,EAAYjwB,GAClD,MAAOgxB,GAAKxyB,KAAM0Q,EAAM+gB,EAAYjwB,MAErC,IAIE,SAAS/E,EAAQD,EAASH,GAE/BA,EAAoB,KAAK,QAAS,EAAG,SAASm2B,GAC5C,MAAO,SAAS2E,YAAWzmB,EAAM+gB,EAAYjwB,GAC3C,MAAOgxB,GAAKxyB,KAAM0Q,EAAM+gB,EAAYjwB,OAMnC,SAAS/E,EAAQD,EAASH,GAE/BA,EAAoB,KAAK,SAAU,EAAG,SAASm2B,GAC7C,MAAO,SAASgC,aAAY9jB,EAAM+gB,EAAYjwB,GAC5C,MAAOgxB,GAAKxyB,KAAM0Q,EAAM+gB,EAAYjwB,OAMnC,SAAS/E,EAAQD,EAASH,GAE/BA,EAAoB,KAAK,QAAS,EAAG,SAASm2B,GAC5C,MAAO,SAAS4E,YAAW1mB,EAAM+gB,EAAYjwB,GAC3C,MAAOgxB,GAAKxyB,KAAM0Q,EAAM+gB,EAAYjwB,OAMnC,SAAS/E,EAAQD,EAASH,GAE/BA,EAAoB,KAAK,SAAU,EAAG,SAASm2B,GAC7C,MAAO,SAAS6E,aAAY3mB,EAAM+gB,EAAYjwB,GAC5C,MAAOgxB,GAAKxyB,KAAM0Q,EAAM+gB,EAAYjwB,OAMnC,SAAS/E,EAAQD,EAASH,GAE/BA,EAAoB,KAAK,UAAW,EAAG,SAASm2B,GAC9C,MAAO,SAAS8E,cAAa5mB,EAAM+gB,EAAYjwB,GAC7C,MAAOgxB,GAAKxyB,KAAM0Q,EAAM+gB,EAAYjwB,OAMnC,SAAS/E,EAAQD,EAASH,GAE/BA,EAAoB,KAAK,UAAW,EAAG,SAASm2B,GAC9C,MAAO,SAAS+E,cAAa7mB,EAAM+gB,EAAYjwB,GAC7C,MAAOgxB,GAAKxyB,KAAM0Q,EAAM+gB,EAAYjwB,OAMnC,SAAS/E,EAAQD,EAASH,GAI/B,GAAIe,GAAYf,EAAoB,GAChCm7B,EAAYn7B,EAAoB,KAAI,EAExCe,GAAQA,EAAQgE,EAAG,SACjB4V,SAAU,QAASA,UAAS5O,GAC1B,MAAOovB,GAAUx3B,KAAMoI,EAAI1F,UAAUlB,OAAS,EAAIkB,UAAU,GAAKvG,MAIrEE,EAAoB,KAAK,aAIpB,SAASI,EAAQD,EAASH,GAI/B,GAAIe,GAAUf,EAAoB,GAC9B4Z,EAAU5Z,EAAoB,MAAK,EAEvCe,GAAQA,EAAQgE,EAAG,UACjBq2B,GAAI,QAASA,IAAGthB,GACd,MAAOF,GAAIjW,KAAMmW,OAMhB,SAAS1Z,EAAQD,EAASH,GAI/B,GAAIe,GAAUf,EAAoB,GAC9Bq7B,EAAUr7B,EAAoB,IAElCe,GAAQA,EAAQgE,EAAG,UACjBu2B,SAAU,QAASA,UAASC,GAC1B,MAAOF,GAAK13B,KAAM43B,EAAWl1B,UAAUlB,OAAS,EAAIkB,UAAU,GAAKvG,GAAW,OAM7E,SAASM,EAAQD,EAASH,GAG/B,GAAIyM,GAAWzM,EAAoB,IAC/BkU,EAAWlU,EAAoB,IAC/BsM,EAAWtM,EAAoB,GAEnCI,GAAOD,QAAU,SAASwK,EAAM4wB,EAAWC,EAAYC,GACrD,GAAIj1B,GAAe6D,OAAOiC,EAAQ3B,IAC9B+wB,EAAel1B,EAAErB,OACjBw2B,EAAeH,IAAe17B,EAAY,IAAMuK,OAAOmxB,GACvDI,EAAenvB,EAAS8uB,EAC5B,IAAmBG,GAAhBE,EAA6B,MAAOp1B,EACzB,KAAXm1B,IAAcA,EAAU,IAC3B,IAAIE,GAAUD,EAAeF,EACzBI,EAAe5nB,EAAO3T,KAAKo7B,EAASp0B,KAAKyF,KAAK6uB,EAAUF,EAAQx2B,QAEpE,OADG22B,GAAa32B,OAAS02B,IAAQC,EAAeA,EAAatvB,MAAM,EAAGqvB,IAC/DJ,EAAOK,EAAet1B,EAAIA,EAAIs1B,IAMlC,SAAS17B,EAAQD,EAASH,GAI/B,GAAIe,GAAUf,EAAoB,GAC9Bq7B,EAAUr7B,EAAoB,IAElCe,GAAQA,EAAQgE,EAAG,UACjBg3B,OAAQ,QAASA,QAAOR,GACtB,MAAOF,GAAK13B,KAAM43B,EAAWl1B,UAAUlB,OAAS,EAAIkB,UAAU,GAAKvG,GAAW,OAM7E,SAASM,EAAQD,EAASH,GAI/BA,EAAoB,IAAI,WAAY,SAASiS,GAC3C,MAAO,SAAS+pB,YACd,MAAO/pB,GAAMtO,KAAM,KAEpB,cAIE,SAASvD,EAAQD,EAASH,GAI/BA,EAAoB,IAAI,YAAa,SAASiS,GAC5C,MAAO,SAASgqB,aACd,MAAOhqB,GAAMtO,KAAM,KAEpB,YAIE,SAASvD,EAAQD,EAASH,GAI/B,GAAIe,GAAcf,EAAoB,GAClCsM,EAActM,EAAoB,IAClCyM,EAAczM,EAAoB,IAClCua,EAAcva,EAAoB,KAClCk8B,EAAcl8B,EAAoB,KAClCm8B,EAAc1oB,OAAOnJ,UAErB8xB,EAAwB,SAAS3Y,EAAQ3P,GAC3CnQ,KAAK04B,GAAK5Y,EACV9f,KAAK0jB,GAAKvT,EAGZ9T,GAAoB,KAAKo8B,EAAuB,gBAAiB,QAAStgB,QACxE,GAAIjK,GAAQlO,KAAK04B,GAAGx0B,KAAKlE,KAAK0jB,GAC9B,QAAQzjB,MAAOiO,EAAOuJ,KAAgB,OAAVvJ,KAG9B9Q,EAAQA,EAAQgE,EAAG,UACjBu3B,SAAU,QAASA,UAAS7Y,GAE1B,GADAnX,EAAQ3I,OACJ4W,EAASkJ,GAAQ,KAAMhd,WAAUgd,EAAS,oBAC9C,IAAIjd,GAAQ6D,OAAO1G,MACf4f,EAAQ,SAAW4Y,GAAc9xB,OAAOoZ,EAAOF,OAAS2Y,EAAS37B,KAAKkjB,GACtE8Y,EAAQ,GAAI9oB,QAAOgQ,EAAOtb,QAASob,EAAM3I,QAAQ,KAAO2I,EAAQ,IAAMA,EAE1E,OADAgZ,GAAGzX,UAAYrY,EAASgX,EAAOqB,WACxB,GAAIsX,GAAsBG,EAAI/1B,OAMpC,SAASpG,EAAQD,EAASH,GAG/B,GAAIe,GAAaf,EAAoB,GACjC2vB,EAAa3vB,EAAoB,KACjC4B,EAAa5B,EAAoB,IACjC8B,EAAa9B,EAAoB,IACjCmC,EAAanC,EAAoB,IACjCqC,EAAarC,EAAoB,EAErCe,GAAQA,EAAQyF,EAAG,UACjBg2B,0BAA2B,QAASA,2BAA0BvzB,GAO5D,IANA,GAKIlF,GAAKC,EALLmF,EAAUvH,EAAUqH,GACpBwzB,EAAUt6B,EAAKC,EACf4C,EAAU2qB,EAAQxmB,GAClBtD,KACAZ,EAAU,EAERD,EAAKG,OAASF,GAClBjB,EAAIy4B,EAAQtzB,EAAGpF,EAAMiB,EAAKC,MACvBlB,IAAO8B,GAAOxD,EAAGD,EAAEyD,EAAQ9B,EAAKjC,EAAW,EAAGkC,IAC5C6B,EAAO9B,GAAOC,CACnB,OAAO6B,OAMR,SAASzF,EAAQD,EAASH,GAG/B,GAAIe,GAAUf,EAAoB,GAC9B08B,EAAU18B,EAAoB,MAAK,EAEvCe,GAAQA,EAAQyF,EAAG,UACjB8V,OAAQ,QAASA,QAAOxY,GACtB,MAAO44B,GAAQ54B,OAMd,SAAS1D,EAAQD,EAASH,GAE/B,GAAI8L,GAAY9L,EAAoB,IAChC4B,EAAY5B,EAAoB,IAChCiD,EAAYjD,EAAoB,IAAIoC,CACxChC,GAAOD,QAAU,SAASw8B,GACxB,MAAO,UAAS74B,GAOd,IANA,GAKIC,GALAoF,EAASvH,EAAUkC,GACnBkB,EAAS8G,EAAQ3C,GACjBhE,EAASH,EAAKG,OACdF,EAAS,EACTY,KAEEV,EAASF,GAAKhC,EAAO1C,KAAK4I,EAAGpF,EAAMiB,EAAKC,OAC5CY,EAAOC,KAAK62B,GAAa54B,EAAKoF,EAAEpF,IAAQoF,EAAEpF,GAC1C,OAAO8B,MAMR,SAASzF,EAAQD,EAASH,GAG/B,GAAIe,GAAWf,EAAoB,GAC/B4c,EAAW5c,EAAoB,MAAK,EAExCe,GAAQA,EAAQyF,EAAG,UACjB+V,QAAS,QAASA,SAAQzY,GACxB,MAAO8Y,GAAS9Y,OAMf,SAAS1D,EAAQD,EAASH,GAG/B,GAAIe,GAAkBf,EAAoB,GACtC6O,EAAkB7O,EAAoB,IACtC0K,EAAkB1K,EAAoB,IACtC0E,EAAkB1E,EAAoB,EAG1CA,GAAoB,IAAMe,EAAQA,EAAQgE,EAAI/E,EAAoB,KAAM,UACtE48B,iBAAkB,QAASA,kBAAiB73B,EAAGm1B,GAC7Cx1B,EAAgBtC,EAAEyM,EAASlL,MAAOoB,GAAIrB,IAAKgH,EAAUwvB,GAASt1B,YAAY,EAAMN,cAAc,QAM7F,SAASlE,EAAQD,EAASH,GAG/BI,EAAOD,QAAUH,EAAoB,MAAOA,EAAoB,GAAG,WACjE,GAAI8P,GAAIvI,KAAKiD,QAEbqyB,kBAAiBt8B,KAAK,KAAMuP,EAAG,oBACxB9P,GAAoB,GAAG8P,MAK3B,SAAS1P,EAAQD,EAASH,GAG/B,GAAIe,GAAkBf,EAAoB,GACtC6O,EAAkB7O,EAAoB,IACtC0K,EAAkB1K,EAAoB,IACtC0E,EAAkB1E,EAAoB,EAG1CA,GAAoB,IAAMe,EAAQA,EAAQgE,EAAI/E,EAAoB,KAAM,UACtE68B,iBAAkB,QAASA,kBAAiB93B,EAAGlC,GAC7C6B,EAAgBtC,EAAEyM,EAASlL,MAAOoB,GAAIR,IAAKmG,EAAU7H,GAAS+B,YAAY,EAAMN,cAAc,QAM7F,SAASlE,EAAQD,EAASH,GAG/B,GAAIe,GAA2Bf,EAAoB,GAC/C6O,EAA2B7O,EAAoB,IAC/C6B,EAA2B7B,EAAoB,IAC/C+O,EAA2B/O,EAAoB,IAC/CyF,EAA2BzF,EAAoB,IAAIoC,CAGvDpC,GAAoB,IAAMe,EAAQA,EAAQgE,EAAI/E,EAAoB,KAAM,UACtE88B,iBAAkB,QAASA,kBAAiB/3B,GAC1C,GAEIf,GAFAmF,EAAI0F,EAASlL,MACbmM,EAAIjO,EAAYkD,GAAG,EAEvB,GACE,IAAGf,EAAIyB,EAAyB0D,EAAG2G,GAAG,MAAO9L,GAAEN,UACzCyF,EAAI4F,EAAe5F,QAM1B,SAAS/I,EAAQD,EAASH,GAG/B,GAAIe,GAA2Bf,EAAoB,GAC/C6O,EAA2B7O,EAAoB,IAC/C6B,EAA2B7B,EAAoB,IAC/C+O,EAA2B/O,EAAoB,IAC/CyF,EAA2BzF,EAAoB,IAAIoC,CAGvDpC,GAAoB,IAAMe,EAAQA,EAAQgE,EAAI/E,EAAoB,KAAM,UACtE+8B,iBAAkB,QAASA,kBAAiBh4B,GAC1C,GAEIf,GAFAmF,EAAI0F,EAASlL,MACbmM,EAAIjO,EAAYkD,GAAG,EAEvB,GACE,IAAGf,EAAIyB,EAAyB0D,EAAG2G,GAAG,MAAO9L,GAAEO,UACzC4E,EAAI4F,EAAe5F,QAM1B,SAAS/I,EAAQD,EAASH,GAG/B,GAAIe,GAAWf,EAAoB,EAEnCe,GAAQA,EAAQgE,EAAIhE,EAAQiI,EAAG,OAAQmnB,OAAQnwB,EAAoB,KAAK,UAInE,SAASI,EAAQD,EAASH,GAG/B,GAAI4Q,GAAU5Q,EAAoB,IAC9Bue,EAAUve,EAAoB,IAClCI,GAAOD,QAAU,SAASyR,GACxB,MAAO,SAASue,UACd,GAAGvf,EAAQjN,OAASiO,EAAK,KAAMnL,WAAUmL,EAAO,wBAChD,OAAO2M,GAAK5a,SAMX,SAASvD,EAAQD,EAASH,GAE/B,GAAIulB,GAAQvlB,EAAoB,IAEhCI,GAAOD,QAAU,SAASme,EAAM9C,GAC9B,GAAI3V,KAEJ,OADA0f,GAAMjH,GAAM,EAAOzY,EAAOC,KAAMD,EAAQ2V,GACjC3V,IAMJ,SAASzF,EAAQD,EAASH,GAG/B,GAAIe,GAAWf,EAAoB,EAEnCe,GAAQA,EAAQgE,EAAIhE,EAAQiI,EAAG,OAAQmnB,OAAQnwB,EAAoB,KAAK,UAInE,SAASI,EAAQD,EAASH,GAG/B,GAAIe,GAAUf,EAAoB,EAElCe,GAAQA,EAAQyF,EAAG,UAAW7F,OAAQX,EAAoB,MAIrD,SAASI,EAAQD,EAASH,GAG/B,GAAIe,GAAUf,EAAoB,GAC9BuM,EAAUvM,EAAoB,GAElCe,GAAQA,EAAQyF,EAAG,SACjBw2B,QAAS,QAASA,SAAQl5B,GACxB,MAAmB,UAAZyI,EAAIzI,OAMV,SAAS1D,EAAQD,EAASH,GAG/B,GAAIe,GAAUf,EAAoB,EAElCe,GAAQA,EAAQyF,EAAG,QACjBy2B,MAAO,QAASA,OAAMC,EAAIC,EAAIC,EAAIC,GAChC,GAAIC,GAAMJ,IAAO,EACbK,EAAMJ,IAAO,EACbK,EAAMJ,IAAO,CACjB,OAAOG,IAAOF,IAAO,KAAOC,EAAME,GAAOF,EAAME,KAASF,EAAME,IAAQ,MAAQ,IAAM,MAMnF,SAASp9B,EAAQD,EAASH,GAG/B,GAAIe,GAAUf,EAAoB,EAElCe,GAAQA,EAAQyF,EAAG,QACjBi3B,MAAO,QAASA,OAAMP,EAAIC,EAAIC,EAAIC,GAChC,GAAIC,GAAMJ,IAAO,EACbK,EAAMJ,IAAO,EACbK,EAAMJ,IAAO,CACjB,OAAOG,IAAOF,IAAO,MAAQC,EAAME,IAAQF,EAAME,GAAOF,EAAME,IAAQ,KAAO,IAAM,MAMlF,SAASp9B,EAAQD,EAASH,GAG/B,GAAIe,GAAUf,EAAoB,EAElCe,GAAQA,EAAQyF,EAAG,QACjBk3B,MAAO,QAASA,OAAMC,EAAGvR,GACvB,GAAIzT,GAAS,MACTilB,GAAMD,EACNE,GAAMzR,EACN0R,EAAKF,EAAKjlB,EACVolB,EAAKF,EAAKllB,EACVqlB,EAAKJ,GAAM,GACXK,EAAKJ,GAAM,GACXhpB,GAAMmpB,EAAKD,IAAO,IAAMD,EAAKC,IAAO,GACxC,OAAOC,GAAKC,GAAMppB,GAAK,MAAQipB,EAAKG,IAAO,IAAMppB,EAAI8D,IAAW,QAM/D,SAASvY,EAAQD,EAASH,GAG/B,GAAIe,GAAUf,EAAoB,EAElCe,GAAQA,EAAQyF,EAAG,QACjB03B,MAAO,QAASA,OAAMP,EAAGvR,GACvB,GAAIzT,GAAS,MACTilB,GAAMD,EACNE,GAAMzR,EACN0R,EAAKF,EAAKjlB,EACVolB,EAAKF,EAAKllB,EACVqlB,EAAKJ,IAAO,GACZK,EAAKJ,IAAO,GACZhpB,GAAMmpB,EAAKD,IAAO,IAAMD,EAAKC,IAAO,GACxC,OAAOC,GAAKC,GAAMppB,IAAM,MAAQipB,EAAKG,IAAO,IAAMppB,EAAI8D,KAAY,QAMjE,SAASvY,EAAQD,EAASH,GAE/B,GAAIm+B,GAA4Bn+B,EAAoB,KAChD2B,EAA4B3B,EAAoB,IAChDo+B,EAA4BD,EAASp6B,IACrCs6B,EAA4BF,EAAS55B,GAEzC45B,GAAS71B,KAAKg2B,eAAgB,QAASA,gBAAeC,EAAaC,EAAe31B,EAAQ41B,GACxFJ,EAA0BE,EAAaC,EAAe78B,EAASkH,GAASu1B,EAAUK,QAK/E,SAASr+B,EAAQD,EAASH,GAE/B,GAAIisB,GAAUjsB,EAAoB,KAC9Be,EAAUf,EAAoB,GAC9BoB,EAAUpB,EAAoB,IAAI,YAClCyL,EAAUrK,EAAOqK,QAAUrK,EAAOqK,MAAQ,IAAKzL,EAAoB,OAEnE0+B,EAAyB,SAAS71B,EAAQ41B,EAAWp5B,GACvD,GAAIs5B,GAAiBlzB,EAAM/H,IAAImF,EAC/B,KAAI81B,EAAe,CACjB,IAAIt5B,EAAO,MAAOvF,EAClB2L,GAAMlH,IAAIsE,EAAQ81B,EAAiB,GAAI1S,IAEzC,GAAI2S,GAAcD,EAAej7B,IAAI+6B,EACrC,KAAIG,EAAY,CACd,IAAIv5B,EAAO,MAAOvF,EAClB6+B,GAAep6B,IAAIk6B,EAAWG,EAAc,GAAI3S,IAChD,MAAO2S,IAEPC,EAAyB,SAASC,EAAa31B,EAAGpE,GACpD,GAAIg6B,GAAcL,EAAuBv1B,EAAGpE,GAAG,EAC/C,OAAOg6B,KAAgBj/B,GAAY,EAAQi/B,EAAYl+B,IAAIi+B,IAEzDE,EAAyB,SAASF,EAAa31B,EAAGpE,GACpD,GAAIg6B,GAAcL,EAAuBv1B,EAAGpE,GAAG,EAC/C,OAAOg6B,KAAgBj/B,EAAYA,EAAYi/B,EAAYr7B,IAAIo7B,IAE7DT,EAA4B,SAASS,EAAaG,EAAe91B,EAAGpE,GACtE25B,EAAuBv1B,EAAGpE,GAAG,GAAMR,IAAIu6B,EAAaG,IAElDC,EAA0B,SAASr2B,EAAQ41B,GAC7C,GAAIM,GAAcL,EAAuB71B,EAAQ41B,GAAW,GACxDz5B,IAEJ,OADG+5B,IAAYA,EAAYhvB,QAAQ,SAASovB,EAAGp7B,GAAMiB,EAAKc,KAAK/B,KACxDiB,GAELo5B,EAAY,SAASt6B,GACvB,MAAOA,KAAOhE,GAA0B,gBAANgE,GAAiBA,EAAKuG,OAAOvG,IAE7DwE,EAAM,SAASa,GACjBpI,EAAQA,EAAQyF,EAAG,UAAW2C,GAGhC/I,GAAOD,SACLsL,MAAOA,EACPqV,IAAK4d,EACL79B,IAAKg+B,EACLn7B,IAAKs7B,EACLz6B,IAAK85B,EACLr5B,KAAMk6B,EACNn7B,IAAKq6B,EACL91B,IAAKA,IAKF,SAASlI,EAAQD,EAASH,GAE/B,GAAIm+B,GAAyBn+B,EAAoB,KAC7C2B,EAAyB3B,EAAoB,IAC7Co+B,EAAyBD,EAASp6B,IAClC26B,EAAyBP,EAASrd,IAClCrV,EAAyB0yB,EAAS1yB,KAEtC0yB,GAAS71B,KAAK82B,eAAgB,QAASA,gBAAeb,EAAa11B,GACjE,GAAI41B,GAAiC,EAAnBp4B,UAAUlB,OAAarF,EAAYs+B,EAAU/3B,UAAU,IACrE04B,EAAcL,EAAuB/8B,EAASkH,GAAS41B,GAAW,EACtE,IAAGM,IAAgBj/B,IAAci/B,EAAY,UAAUR,GAAa,OAAO,CAC3E,IAAGQ,EAAYnhB,KAAK,OAAO,CAC3B,IAAI+gB,GAAiBlzB,EAAM/H,IAAImF,EAE/B,OADA81B,GAAe,UAAUF,KAChBE,EAAe/gB,MAAQnS,EAAM,UAAU5C,OAK7C,SAASzI,EAAQD,EAASH,GAE/B,GAAIm+B,GAAyBn+B,EAAoB,KAC7C2B,EAAyB3B,EAAoB,IAC7C+O,EAAyB/O,EAAoB,IAC7C6+B,EAAyBV,EAASt9B,IAClCm+B,EAAyBb,EAASz6B,IAClC06B,EAAyBD,EAASp6B,IAElCs7B,EAAsB,SAASP,EAAa31B,EAAGpE,GACjD,GAAIu6B,GAAST,EAAuBC,EAAa31B,EAAGpE,EACpD,IAAGu6B,EAAO,MAAON,GAAuBF,EAAa31B,EAAGpE,EACxD,IAAI2mB,GAAS3c,EAAe5F,EAC5B,OAAkB,QAAXuiB,EAAkB2T,EAAoBP,EAAapT,EAAQ3mB,GAAKjF,EAGzEq+B,GAAS71B,KAAKi3B,YAAa,QAASA,aAAYhB,EAAa11B,GAC3D,MAAOw2B,GAAoBd,EAAa58B,EAASkH,GAA4B,EAAnBxC,UAAUlB,OAAarF,EAAYs+B,EAAU/3B,UAAU,SAK9G,SAASjG,EAAQD,EAASH,GAE/B,GAAI2tB,GAA0B3tB,EAAoB,KAC9Cue,EAA0Bve,EAAoB,KAC9Cm+B,EAA0Bn+B,EAAoB,KAC9C2B,EAA0B3B,EAAoB,IAC9C+O,EAA0B/O,EAAoB,IAC9Ck/B,EAA0Bf,EAASn5B,KACnCo5B,EAA0BD,EAASp6B,IAEnCy7B,EAAuB,SAASr2B,EAAGpE,GACrC,GAAI06B,GAASP,EAAwB/1B,EAAGpE,GACpC2mB,EAAS3c,EAAe5F,EAC5B,IAAc,OAAXuiB,EAAgB,MAAO+T,EAC1B,IAAIC,GAASF,EAAqB9T,EAAQ3mB,EAC1C,OAAO26B,GAAMv6B,OAASs6B,EAAMt6B,OAASoZ,EAAK,GAAIoP,GAAI8R,EAAMh1B,OAAOi1B,KAAWA,EAAQD,EAGpFtB,GAAS71B,KAAKq3B,gBAAiB,QAASA,iBAAgB92B,GACtD,MAAO22B,GAAqB79B,EAASkH,GAA4B,EAAnBxC,UAAUlB,OAAarF,EAAYs+B,EAAU/3B,UAAU,SAKlG,SAASjG,EAAQD,EAASH,GAE/B,GAAIm+B,GAAyBn+B,EAAoB,KAC7C2B,EAAyB3B,EAAoB,IAC7Cg/B,EAAyBb,EAASz6B,IAClC06B,EAAyBD,EAASp6B,GAEtCo6B,GAAS71B,KAAKs3B,eAAgB,QAASA,gBAAerB,EAAa11B,GACjE,MAAOm2B,GAAuBT,EAAa58B,EAASkH,GAC7B,EAAnBxC,UAAUlB,OAAarF,EAAYs+B,EAAU/3B,UAAU,SAKxD,SAASjG,EAAQD,EAASH,GAE/B,GAAIm+B,GAA0Bn+B,EAAoB,KAC9C2B,EAA0B3B,EAAoB,IAC9Ck/B,EAA0Bf,EAASn5B,KACnCo5B,EAA0BD,EAASp6B,GAEvCo6B,GAAS71B,KAAKu3B,mBAAoB,QAASA,oBAAmBh3B,GAC5D,MAAOq2B,GAAwBv9B,EAASkH,GAA4B,EAAnBxC,UAAUlB,OAAarF,EAAYs+B,EAAU/3B,UAAU,SAKrG,SAASjG,EAAQD,EAASH,GAE/B,GAAIm+B,GAAyBn+B,EAAoB,KAC7C2B,EAAyB3B,EAAoB,IAC7C+O,EAAyB/O,EAAoB,IAC7C6+B,EAAyBV,EAASt9B,IAClCu9B,EAAyBD,EAASp6B,IAElC+7B,EAAsB,SAAShB,EAAa31B,EAAGpE,GACjD,GAAIu6B,GAAST,EAAuBC,EAAa31B,EAAGpE,EACpD,IAAGu6B,EAAO,OAAO,CACjB,IAAI5T,GAAS3c,EAAe5F,EAC5B,OAAkB,QAAXuiB,EAAkBoU,EAAoBhB,EAAapT,EAAQ3mB,IAAK,EAGzEo5B,GAAS71B,KAAKy3B,YAAa,QAASA,aAAYxB,EAAa11B,GAC3D,MAAOi3B,GAAoBvB,EAAa58B,EAASkH,GAA4B,EAAnBxC,UAAUlB,OAAarF,EAAYs+B,EAAU/3B,UAAU,SAK9G,SAASjG,EAAQD,EAASH,GAE/B,GAAIm+B,GAAyBn+B,EAAoB,KAC7C2B,EAAyB3B,EAAoB,IAC7C6+B,EAAyBV,EAASt9B,IAClCu9B,EAAyBD,EAASp6B,GAEtCo6B,GAAS71B,KAAK03B,eAAgB,QAASA,gBAAezB,EAAa11B,GACjE,MAAOg2B,GAAuBN,EAAa58B,EAASkH,GAC7B,EAAnBxC,UAAUlB,OAAarF,EAAYs+B,EAAU/3B,UAAU,SAKxD,SAASjG,EAAQD,EAASH,GAE/B,GAAIm+B,GAA4Bn+B,EAAoB,KAChD2B,EAA4B3B,EAAoB,IAChD0K,EAA4B1K,EAAoB,IAChDo+B,EAA4BD,EAASp6B,IACrCs6B,EAA4BF,EAAS55B,GAEzC45B,GAAS71B,KAAK61B,SAAU,QAASA,UAASI,EAAaC,GACrD,MAAO,SAASyB,WAAUp3B,EAAQ41B,GAChCJ,EACEE,EAAaC,GACZC,IAAc3+B,EAAY6B,EAAW+I,GAAW7B,GACjDu1B,EAAUK,SAOX,SAASr+B,EAAQD,EAASH,GAE/B,GAAIe,GAAUf,EAAoB,GAC9BkgC,EAAUlgC,EAAoB,IAClCe,GAAQA,EAAQ4F,EAAI5F,EAAQ6H,GAC1BohB,aAAgBkW,EAAM37B,IACtB2lB,eAAgBgW,EAAMhV,SAKnB,SAAS9qB,EAAQD,EAASH,GAY/B,IAAI,GAVAs5B,GAAgBt5B,EAAoB,KACpCgB,EAAgBhB,EAAoB,IACpCW,EAAgBX,EAAoB,GACpC+H,EAAgB/H,EAAoB,GACpCsb,EAAgBtb,EAAoB,KACpCuB,EAAgBvB,EAAoB,IACpCwb,EAAgBja,EAAI,YACpB4+B,EAAgB5+B,EAAI,eACpB6+B,EAAgB9kB,EAAU/N,MAEtB8yB,GAAe,WAAY,eAAgB,YAAa,iBAAkB,eAAgBp7B,EAAI,EAAO,EAAJA,EAAOA,IAAI,CAClH,GAGIlB,GAHA6N,EAAayuB,EAAYp7B,GACzBq7B,EAAa3/B,EAAOiR,GACpBpB,EAAa8vB,GAAcA,EAAWh2B,SAE1C,IAAGkG,EAAM,CACHA,EAAMgL,IAAUzT,EAAKyI,EAAOgL,EAAU4kB,GACtC5vB,EAAM2vB,IAAep4B,EAAKyI,EAAO2vB,EAAevuB,GACpD0J,EAAU1J,GAAQwuB,CAClB,KAAIr8B,IAAOu1B,GAAe9oB,EAAMzM,IAAK/C,EAASwP,EAAOzM,EAAKu1B,EAAWv1B,IAAM,MAM1E,SAAS3D,EAAQD,EAASH,GAG/B,GAAIW,GAAaX,EAAoB,GACjCe,EAAaf,EAAoB,GACjCiR,EAAajR,EAAoB,IACjCugC,EAAavgC,EAAoB,KACjCwgC,EAAa7/B,EAAO6/B,UACpBC,IAAeD,GAAa,WAAW/vB,KAAK+vB,EAAUE,WACtDx8B,EAAO,SAASK,GAClB,MAAOk8B,GAAO,SAASh3B,EAAIk3B,GACzB,MAAOp8B,GAAI0M,EACTsvB,KACG/zB,MAAMjM,KAAK8F,UAAW,GACZ,kBAANoD,GAAmBA,EAAK/B,SAAS+B,IACvCk3B,IACDp8B,EAENxD,GAAQA,EAAQ4F,EAAI5F,EAAQ6H,EAAI7H,EAAQ8F,EAAI45B,GAC1CxV,WAAa/mB,EAAKvD,EAAOsqB,YACzB2V,YAAa18B,EAAKvD,EAAOigC,gBAKtB,SAASxgC,EAAQD,EAASH,GAG/B,GAAI6gC,GAAY7gC,EAAoB,KAChCiR,EAAYjR,EAAoB,IAChC0K,EAAY1K,EAAoB,GACpCI,GAAOD,QAAU,WAOf,IANA,GAAIsJ,GAASiB,EAAU/G,MACnBwB,EAASkB,UAAUlB,OACnB27B,EAASvzB,MAAMpI,GACfF,EAAS,EACTk6B,EAAS0B,EAAK1B,EACd4B,GAAS,EACP57B,EAASF,IAAM67B,EAAM77B,GAAKoB,UAAUpB,QAAUk6B,IAAE4B,GAAS,EAC/D,OAAO,YACL,GAEkB36B,GAFduE,EAAOhH,KACPuM,EAAO7J,UAAUlB,OACjBgL,EAAI,EAAGH,EAAI,CACf,KAAI+wB,IAAW7wB,EAAK,MAAOe,GAAOxH,EAAIq3B,EAAOn2B,EAE7C,IADAvE,EAAO06B,EAAMt0B,QACVu0B,EAAO,KAAK57B,EAASgL,EAAGA,IAAO/J,EAAK+J,KAAOgvB,IAAE/4B,EAAK+J,GAAK9J,UAAU2J,KACpE,MAAME,EAAOF,GAAE5J,EAAKN,KAAKO,UAAU2J,KACnC,OAAOiB,GAAOxH,EAAIrD,EAAMuE,MAMvB,SAASvK,EAAQD,EAASH,GAE/BI,EAAOD,QAAUH,EAAoB,IAIhC,SAASI,EAAQD,EAASH,GAsF/B,QAASghC,MAAK1X,GACZ,GAAI2X,GAAO57B,EAAO,KAQlB,OAPGikB,IAAYxpB,IACV86B,EAAWtR,GACZ/D,EAAM+D,GAAU,EAAM,SAASvlB,EAAKH,GAClCq9B,EAAKl9B,GAAOH,IAET+L,EAAOsxB,EAAM3X,IAEf2X,EAIT,QAAS3f,QAAOrY,EAAQyV,EAAOyX,GAC7BzrB,EAAUgU,EACV,IAII6C,GAAMxd,EAJNoF,EAASvH,EAAUqH,GACnBjE,EAAS8G,EAAQ3C,GACjBhE,EAASH,EAAKG,OACdF,EAAS,CAEb,IAAsB,EAAnBoB,UAAUlB,OAAW,CACtB,IAAIA,EAAO,KAAMsB,WAAU,+CAC3B8a,GAAOpY,EAAEnE,EAAKC,UACTsc,GAAOje,OAAO6yB,EACrB,MAAMhxB,EAASF,GAAKpE,EAAIsI,EAAGpF,EAAMiB,EAAKC,QACpCsc,EAAO7C,EAAM6C,EAAMpY,EAAEpF,GAAMA,EAAKkF,GAElC,OAAOsY,GAGT,QAAS5G,UAAS1R,EAAQ8C,GACxB,OAAQA,GAAMA,EAAKvK,EAAMyH,EAAQ8C,GAAMm1B,EAAQj4B,EAAQ,SAASnF,GAC9D,MAAOA,IAAMA,OACPhE,EAGV,QAAS4D,KAAIuF,EAAQlF,GACnB,MAAGlD,GAAIoI,EAAQlF,GAAYkF,EAAOlF,GAAlC,OAEF,QAASQ,KAAI0E,EAAQlF,EAAKH,GAGxB,MAFG9C,IAAeiD,IAAOT,QAAOjB,EAAGD,EAAE6G,EAAQlF,EAAKjC,EAAW,EAAG8B,IAC3DqF,EAAOlF,GAAOH,EACZqF,EAGT,QAASk4B,QAAOr9B,GACd,MAAOuF,GAASvF,IAAOiL,EAAejL,KAAQk9B,KAAK12B,UAjIrD,GAAItC,GAAiBhI,EAAoB,IACrCe,EAAiBf,EAAoB,GACrC8B,EAAiB9B,EAAoB,IACrC2P,EAAiB3P,EAAoB,IACrCqF,EAAiBrF,EAAoB,IACrC+O,EAAiB/O,EAAoB,IACrC8L,EAAiB9L,EAAoB,IACrCqC,EAAiBrC,EAAoB,GACrCwB,EAAiBxB,EAAoB,IACrC0K,EAAiB1K,EAAoB,IACrCulB,EAAiBvlB,EAAoB,KACrC46B,EAAiB56B,EAAoB,KACrCub,EAAiBvb,EAAoB,KACrCye,EAAiBze,EAAoB,KACrCqJ,EAAiBrJ,EAAoB,IACrC4B,EAAiB5B,EAAoB,IACrCc,EAAiBd,EAAoB,GACrCa,EAAiBb,EAAoB,GAUrCohC,EAAmB,SAASrtB,GAC9B,GAAIsM,GAAmB,GAARtM,EACXyM,EAAmB,GAARzM,CACf,OAAO,UAAS9K,EAAQkX,EAAYxV,GAClC,GAII5G,GAAK2F,EAAKgM,EAJVtT,EAAS4F,EAAImY,EAAYxV,EAAM,GAC/BxB,EAASvH,EAAUqH,GACnBpD,EAASwa,GAAkB,GAARtM,GAAqB,GAARA,EAC5B,IAAoB,kBAARpQ,MAAqBA,KAAOq9B,MAAQlhC,CAExD,KAAIiE,IAAOoF,GAAE,GAAGtI,EAAIsI,EAAGpF,KACrB2F,EAAMP,EAAEpF,GACR2R,EAAMtT,EAAEsH,EAAK3F,EAAKkF,GACf8K,GACD,GAAGsM,EAAOxa,EAAO9B,GAAO2R,MACnB,IAAGA,EAAI,OAAO3B,GACjB,IAAK,GAAGlO,EAAO9B,GAAO2F,CAAK,MAC3B,KAAK,GAAG,OAAO,CACf,KAAK,GAAG,MAAOA,EACf,KAAK,GAAG,MAAO3F,EACf,KAAK,GAAG8B,EAAO6P,EAAI,IAAMA,EAAI,OACxB,IAAG8K,EAAS,OAAO,CAG9B,OAAe,IAARzM,GAAayM,EAAWA,EAAW3a,IAG1Cq7B,EAAUE,EAAiB,GAE3BC,EAAiB,SAAShlB,GAC5B,MAAO,UAASvY,GACd,MAAO,IAAIw9B,GAAax9B,EAAIuY,KAG5BilB,EAAe,SAAStmB,EAAUqB,GACpC1Y,KAAKsX,GAAKrZ,EAAUoZ,GACpBrX,KAAK2kB,GAAKxc,EAAQkP,GAClBrX,KAAKuX,GAAK,EACVvX,KAAKU,GAAKgY,EAEZd,GAAY+lB,EAAc,OAAQ,WAChC,GAIIv9B,GAJA4G,EAAOhH,KACPwF,EAAOwB,EAAKsQ,GACZjW,EAAO2F,EAAK2d,GACZjM,EAAO1R,EAAKtG,EAEhB,GACE,IAAGsG,EAAKuQ,IAAMlW,EAAKG,OAEjB,MADAwF,GAAKsQ,GAAKnb,EACH2e,EAAK,UAEP5d,EAAIsI,EAAGpF,EAAMiB,EAAK2F,EAAKuQ,OAChC,OAAW,QAARmB,EAAwBoC,EAAK,EAAG1a,GACxB,UAARsY,EAAwBoC,EAAK,EAAGtV,EAAEpF,IAC9B0a,EAAK,GAAI1a,EAAKoF,EAAEpF,OAczBi9B,KAAK12B,UAAY,KAsCjBvJ,EAAQA,EAAQ4F,EAAI5F,EAAQ8F,GAAIm6B,KAAMA,OAEtCjgC,EAAQA,EAAQyF,EAAG,QACjBxB,KAAUq8B,EAAe,QACzB/kB,OAAU+kB,EAAe,UACzB9kB,QAAU8kB,EAAe,WACzBtxB,QAAUqxB,EAAiB,GAC3BtgB,IAAUsgB,EAAiB,GAC3BpgB,OAAUogB,EAAiB,GAC3BlgB,KAAUkgB,EAAiB,GAC3BhgB,MAAUggB,EAAiB,GAC3B/e,KAAU+e,EAAiB,GAC3BF,QAAUA,EACVK,SAAUH,EAAiB,GAC3B9f,OAAUA,OACV9f,MAAUA,EACVmZ,SAAUA,SACV9Z,IAAUA,EACV6C,IAAUA,IACVa,IAAUA,IACV48B,OAAUA,UAKP,SAAS/gC,EAAQD,EAASH,GAE/B,GAAI2B,GAAW3B,EAAoB,IAC/B0D,EAAW1D,EAAoB,IACnCI,GAAOD,QAAUH,EAAoB,GAAGwhC,YAAc,SAAS19B,GAC7D,GAAI8a,GAASlb,EAAII,EACjB,IAAoB,kBAAV8a,GAAqB,KAAMnY,WAAU3C,EAAK,oBACpD,OAAOnC,GAASid,EAAOre,KAAKuD,MAKzB,SAAS1D,EAAQD,EAASH,GAE/B,GAAIW,GAAUX,EAAoB,GAC9BY,EAAUZ,EAAoB,GAC9Be,EAAUf,EAAoB,GAC9BugC,EAAUvgC,EAAoB,IAElCe,GAAQA,EAAQ4F,EAAI5F,EAAQ8F,GAC1B46B,MAAO,QAASA,OAAMd,GACpB,MAAO,KAAK//B,EAAKioB,SAAWloB,EAAOkoB,SAAS,SAAS5C,GACnDgF,WAAWsV,EAAQhgC,KAAK0lB,GAAS,GAAO0a,SAOzC,SAASvgC,EAAQD,EAASH,GAE/B,GAAI6gC,GAAU7gC,EAAoB,KAC9Be,EAAUf,EAAoB,EAGlCA,GAAoB,GAAGm/B,EAAI0B,EAAK1B,EAAI0B,EAAK1B,MAEzCp+B,EAAQA,EAAQgE,EAAIhE,EAAQ8F,EAAG,YAAa66B,KAAM1hC,EAAoB,QAIjE,SAASI,EAAQD,EAASH,GAE/B,GAAIe,GAAUf,EAAoB,EAElCe,GAAQA,EAAQyF,EAAIzF,EAAQ8F,EAAG,UAAWwC,SAAUrJ,EAAoB,OAInE,SAASI,EAAQD,EAASH,GAE/B,GAAIe,GAAUf,EAAoB,EAElCe,GAAQA,EAAQyF,EAAIzF,EAAQ8F,EAAG,UAAW+J,QAAS5Q,EAAoB,OAIlE,SAASI,EAAQD,EAASH,GAE/B,GAAIe,GAAUf,EAAoB,GAC9BsjB,EAAUtjB,EAAoB,IAElCe,GAAQA,EAAQyF,EAAIzF,EAAQ8F,EAAG,UAAWyc,OAAQA,KAI7C,SAASljB,EAAQD,EAASH,GAE/B,GAAIqC,GAAYrC,EAAoB,GAChCmC,EAAYnC,EAAoB,IAChC2vB,EAAY3vB,EAAoB,KAChC4B,EAAY5B,EAAoB,GAEpCI,GAAOD,QAAU,QAASmjB,QAAOza,EAAQ84B,GAIvC,IAHA,GAEW59B,GAFPiB,EAAS2qB,EAAQ/tB,EAAU+/B,IAC3Bx8B,EAASH,EAAKG,OACdF,EAAI,EACFE,EAASF,GAAE5C,EAAGD,EAAEyG,EAAQ9E,EAAMiB,EAAKC,KAAM9C,EAAKC,EAAEu/B,EAAO59B,GAC7D,OAAO8E,KAKJ,SAASzI,EAAQD,EAASH,GAE/B,GAAIe,GAAUf,EAAoB,GAC9BsjB,EAAUtjB,EAAoB,KAC9BqF,EAAUrF,EAAoB,GAElCe,GAAQA,EAAQyF,EAAIzF,EAAQ8F,EAAG,UAC7B+6B,KAAM,SAASpxB,EAAOmxB,GACpB,MAAOre,GAAOje,EAAOmL,GAAQmxB,OAM5B,SAASvhC,EAAQD,EAASH,GAG/BA,EAAoB,KAAKmT,OAAQ,SAAU,SAAS6H,GAClDrX,KAAKipB,IAAM5R,EACXrX,KAAKuX,GAAK,GACT,WACD,GAAIjW,GAAOtB,KAAKuX,KACZE,IAAazX,KAAKipB,GAAT3nB,EACb,QAAQmW,KAAMA,EAAMxX,MAAOwX,EAAOtb,EAAYmF,MAK3C,SAAS7E,EAAQD,EAASH,GAG/B,GAAIe,GAAUf,EAAoB,GAC9B6hC,EAAU7hC,EAAoB,KAAK,sBAAuB,OAE9De,GAAQA,EAAQyF,EAAG,UAAWs7B,OAAQ,QAASA,QAAOh+B,GAAK,MAAO+9B,GAAI/9B,OAKjE,SAAS1D,EAAQD,GAEtBC,EAAOD,QAAU,SAAS4hC,EAAQ/tB,GAChC,GAAI9N,GAAW8N,IAAY1Q,OAAO0Q,GAAW,SAAS0tB,GACpD,MAAO1tB,GAAQ0tB,IACb1tB,CACJ,OAAO,UAASlQ,GACd,MAAOuG,QAAOvG,GAAIkQ,QAAQ+tB,EAAQ77B,MAMjC,SAAS9F,EAAQD,EAASH,GAG/B,GAAIe,GAAUf,EAAoB,GAC9B6hC,EAAM7hC,EAAoB,KAAK,YACjCgiC,IAAK,QACLC,IAAK,OACLC,IAAK,OACLC,IAAK,SACLC,IAAK,UAGPrhC,GAAQA,EAAQgE,EAAIhE,EAAQ8F,EAAG,UAAWw7B,WAAY,QAASA,cAAc,MAAOR,GAAIl+B,UAInF,SAASvD,EAAQD,EAASH,GAG/B,GAAIe,GAAUf,EAAoB,GAC9B6hC,EAAM7hC,EAAoB,KAAK,8BACjCsiC,QAAU,IACVC,OAAU,IACVC,OAAU,IACVC,SAAU,IACVC,SAAU,KAGZ3hC,GAAQA,EAAQgE,EAAIhE,EAAQ8F,EAAG,UAAW87B,aAAe,QAASA,gBAAgB,MAAOd,GAAIl+B,YAK1E,mBAAVvD,SAAyBA,OAAOD,QAAQC,OAAOD,QAAUP,EAE1C,kBAAV0jB,SAAwBA,OAAOsf,IAAItf,OAAO,WAAW,MAAO1jB,KAEtEC,EAAIe,KAAOhB,GACd,EAAG","file":"core.min.js"}
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/client/library.js b/node_modules/babel-register/node_modules/core-js/client/library.js
new file mode 100644
index 0000000..229d297
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/client/library.js
@@ -0,0 +1,6805 @@
+/**
+ * core-js 2.2.0
+ * https://github.com/zloirock/core-js
+ * License: http://rock.mit-license.org
+ * © 2016 Denis Pushkarev
+ */
+!function(__e, __g, undefined){
+'use strict';
+/******/ (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] = {
+/******/ exports: {},
+/******/ id: moduleId,
+/******/ loaded: false
+/******/ };
+
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+
+/******/ // Flag the module as loaded
+/******/ module.loaded = 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;
+
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ([
+/* 0 */
+/***/ function(module, exports, __webpack_require__) {
+
+ __webpack_require__(1);
+ __webpack_require__(48);
+ __webpack_require__(49);
+ __webpack_require__(50);
+ __webpack_require__(52);
+ __webpack_require__(53);
+ __webpack_require__(56);
+ __webpack_require__(57);
+ __webpack_require__(58);
+ __webpack_require__(59);
+ __webpack_require__(60);
+ __webpack_require__(61);
+ __webpack_require__(62);
+ __webpack_require__(63);
+ __webpack_require__(64);
+ __webpack_require__(66);
+ __webpack_require__(68);
+ __webpack_require__(70);
+ __webpack_require__(73);
+ __webpack_require__(74);
+ __webpack_require__(78);
+ __webpack_require__(79);
+ __webpack_require__(80);
+ __webpack_require__(81);
+ __webpack_require__(83);
+ __webpack_require__(84);
+ __webpack_require__(85);
+ __webpack_require__(86);
+ __webpack_require__(87);
+ __webpack_require__(91);
+ __webpack_require__(93);
+ __webpack_require__(94);
+ __webpack_require__(95);
+ __webpack_require__(97);
+ __webpack_require__(98);
+ __webpack_require__(99);
+ __webpack_require__(101);
+ __webpack_require__(102);
+ __webpack_require__(103);
+ __webpack_require__(105);
+ __webpack_require__(106);
+ __webpack_require__(107);
+ __webpack_require__(108);
+ __webpack_require__(109);
+ __webpack_require__(110);
+ __webpack_require__(111);
+ __webpack_require__(112);
+ __webpack_require__(113);
+ __webpack_require__(114);
+ __webpack_require__(115);
+ __webpack_require__(116);
+ __webpack_require__(117);
+ __webpack_require__(118);
+ __webpack_require__(120);
+ __webpack_require__(124);
+ __webpack_require__(125);
+ __webpack_require__(126);
+ __webpack_require__(127);
+ __webpack_require__(131);
+ __webpack_require__(133);
+ __webpack_require__(134);
+ __webpack_require__(135);
+ __webpack_require__(136);
+ __webpack_require__(137);
+ __webpack_require__(138);
+ __webpack_require__(139);
+ __webpack_require__(140);
+ __webpack_require__(141);
+ __webpack_require__(142);
+ __webpack_require__(143);
+ __webpack_require__(144);
+ __webpack_require__(145);
+ __webpack_require__(146);
+ __webpack_require__(152);
+ __webpack_require__(153);
+ __webpack_require__(155);
+ __webpack_require__(156);
+ __webpack_require__(157);
+ __webpack_require__(160);
+ __webpack_require__(161);
+ __webpack_require__(162);
+ __webpack_require__(163);
+ __webpack_require__(164);
+ __webpack_require__(166);
+ __webpack_require__(167);
+ __webpack_require__(168);
+ __webpack_require__(169);
+ __webpack_require__(172);
+ __webpack_require__(174);
+ __webpack_require__(175);
+ __webpack_require__(176);
+ __webpack_require__(178);
+ __webpack_require__(180);
+ __webpack_require__(186);
+ __webpack_require__(189);
+ __webpack_require__(190);
+ __webpack_require__(192);
+ __webpack_require__(193);
+ __webpack_require__(194);
+ __webpack_require__(195);
+ __webpack_require__(196);
+ __webpack_require__(197);
+ __webpack_require__(198);
+ __webpack_require__(199);
+ __webpack_require__(200);
+ __webpack_require__(201);
+ __webpack_require__(202);
+ __webpack_require__(203);
+ __webpack_require__(205);
+ __webpack_require__(206);
+ __webpack_require__(207);
+ __webpack_require__(208);
+ __webpack_require__(209);
+ __webpack_require__(210);
+ __webpack_require__(211);
+ __webpack_require__(214);
+ __webpack_require__(215);
+ __webpack_require__(218);
+ __webpack_require__(219);
+ __webpack_require__(220);
+ __webpack_require__(221);
+ __webpack_require__(222);
+ __webpack_require__(223);
+ __webpack_require__(224);
+ __webpack_require__(225);
+ __webpack_require__(226);
+ __webpack_require__(227);
+ __webpack_require__(228);
+ __webpack_require__(230);
+ __webpack_require__(231);
+ __webpack_require__(232);
+ __webpack_require__(233);
+ __webpack_require__(235);
+ __webpack_require__(236);
+ __webpack_require__(238);
+ __webpack_require__(239);
+ __webpack_require__(241);
+ __webpack_require__(242);
+ __webpack_require__(243);
+ __webpack_require__(244);
+ __webpack_require__(247);
+ __webpack_require__(248);
+ __webpack_require__(249);
+ __webpack_require__(250);
+ __webpack_require__(251);
+ __webpack_require__(252);
+ __webpack_require__(253);
+ __webpack_require__(254);
+ __webpack_require__(256);
+ __webpack_require__(257);
+ __webpack_require__(258);
+ __webpack_require__(259);
+ __webpack_require__(260);
+ __webpack_require__(261);
+ __webpack_require__(262);
+ __webpack_require__(263);
+ __webpack_require__(264);
+ __webpack_require__(265);
+ __webpack_require__(266);
+ __webpack_require__(269);
+ __webpack_require__(149);
+ __webpack_require__(270);
+ __webpack_require__(217);
+ __webpack_require__(271);
+ __webpack_require__(272);
+ __webpack_require__(273);
+ __webpack_require__(274);
+ __webpack_require__(275);
+ __webpack_require__(277);
+ __webpack_require__(278);
+ __webpack_require__(279);
+ __webpack_require__(281);
+ module.exports = __webpack_require__(282);
+
+
+/***/ },
+/* 1 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // ECMAScript 6 symbols shim
+ var global = __webpack_require__(2)
+ , core = __webpack_require__(3)
+ , has = __webpack_require__(4)
+ , DESCRIPTORS = __webpack_require__(5)
+ , $export = __webpack_require__(7)
+ , redefine = __webpack_require__(18)
+ , META = __webpack_require__(19).KEY
+ , $fails = __webpack_require__(6)
+ , shared = __webpack_require__(21)
+ , setToStringTag = __webpack_require__(22)
+ , uid = __webpack_require__(20)
+ , wks = __webpack_require__(23)
+ , keyOf = __webpack_require__(24)
+ , enumKeys = __webpack_require__(37)
+ , isArray = __webpack_require__(40)
+ , anObject = __webpack_require__(12)
+ , toIObject = __webpack_require__(27)
+ , toPrimitive = __webpack_require__(16)
+ , createDesc = __webpack_require__(17)
+ , _create = __webpack_require__(41)
+ , gOPNExt = __webpack_require__(44)
+ , $GOPD = __webpack_require__(46)
+ , $DP = __webpack_require__(11)
+ , gOPD = $GOPD.f
+ , dP = $DP.f
+ , gOPN = gOPNExt.f
+ , $Symbol = global.Symbol
+ , $JSON = global.JSON
+ , _stringify = $JSON && $JSON.stringify
+ , setter = false
+ , PROTOTYPE = 'prototype'
+ , HIDDEN = wks('_hidden')
+ , TO_PRIMITIVE = wks('toPrimitive')
+ , isEnum = {}.propertyIsEnumerable
+ , SymbolRegistry = shared('symbol-registry')
+ , AllSymbols = shared('symbols')
+ , ObjectProto = Object[PROTOTYPE]
+ , USE_NATIVE = typeof $Symbol == 'function'
+ , QObject = global.QObject;
+
+ // fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687
+ var setSymbolDesc = DESCRIPTORS && $fails(function(){
+ return _create(dP({}, 'a', {
+ get: function(){ return dP(this, 'a', {value: 7}).a; }
+ })).a != 7;
+ }) ? function(it, key, D){
+ var protoDesc = gOPD(ObjectProto, key);
+ if(protoDesc)delete ObjectProto[key];
+ dP(it, key, D);
+ if(protoDesc && it !== ObjectProto)dP(ObjectProto, key, protoDesc);
+ } : dP;
+
+ var wrap = function(tag){
+ var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);
+ sym._k = tag;
+ DESCRIPTORS && setter && setSymbolDesc(ObjectProto, tag, {
+ configurable: true,
+ set: function(value){
+ if(has(this, HIDDEN) && has(this[HIDDEN], tag))this[HIDDEN][tag] = false;
+ setSymbolDesc(this, tag, createDesc(1, value));
+ }
+ });
+ return sym;
+ };
+
+ var isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function(it){
+ return typeof it == 'symbol';
+ } : function(it){
+ return it instanceof $Symbol;
+ };
+
+ var $defineProperty = function defineProperty(it, key, D){
+ anObject(it);
+ key = toPrimitive(key, true);
+ anObject(D);
+ if(has(AllSymbols, key)){
+ if(!D.enumerable){
+ if(!has(it, HIDDEN))dP(it, HIDDEN, createDesc(1, {}));
+ it[HIDDEN][key] = true;
+ } else {
+ if(has(it, HIDDEN) && it[HIDDEN][key])it[HIDDEN][key] = false;
+ D = _create(D, {enumerable: createDesc(0, false)});
+ } return setSymbolDesc(it, key, D);
+ } return dP(it, key, D);
+ };
+ var $defineProperties = function defineProperties(it, P){
+ anObject(it);
+ var keys = enumKeys(P = toIObject(P))
+ , i = 0
+ , l = keys.length
+ , key;
+ while(l > i)$defineProperty(it, key = keys[i++], P[key]);
+ return it;
+ };
+ var $create = function create(it, P){
+ return P === undefined ? _create(it) : $defineProperties(_create(it), P);
+ };
+ var $propertyIsEnumerable = function propertyIsEnumerable(key){
+ var E = isEnum.call(this, key = toPrimitive(key, true));
+ return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;
+ };
+ var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key){
+ var D = gOPD(it = toIObject(it), key = toPrimitive(key, true));
+ if(D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key]))D.enumerable = true;
+ return D;
+ };
+ var $getOwnPropertyNames = function getOwnPropertyNames(it){
+ var names = gOPN(toIObject(it))
+ , result = []
+ , i = 0
+ , key;
+ while(names.length > i)if(!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META)result.push(key);
+ return result;
+ };
+ var $getOwnPropertySymbols = function getOwnPropertySymbols(it){
+ var names = gOPN(toIObject(it))
+ , result = []
+ , i = 0
+ , key;
+ while(names.length > i)if(has(AllSymbols, key = names[i++]))result.push(AllSymbols[key]);
+ return result;
+ };
+ var $stringify = function stringify(it){
+ if(it === undefined || isSymbol(it))return; // IE8 returns string on undefined
+ var args = [it]
+ , i = 1
+ , replacer, $replacer;
+ while(arguments.length > i)args.push(arguments[i++]);
+ replacer = args[1];
+ if(typeof replacer == 'function')$replacer = replacer;
+ if($replacer || !isArray(replacer))replacer = function(key, value){
+ if($replacer)value = $replacer.call(this, key, value);
+ if(!isSymbol(value))return value;
+ };
+ args[1] = replacer;
+ return _stringify.apply($JSON, args);
+ };
+ var BUGGY_JSON = $fails(function(){
+ var S = $Symbol();
+ // MS Edge converts symbol values to JSON as {}
+ // WebKit converts symbol values to JSON as null
+ // V8 throws on boxed symbols
+ return _stringify([S]) != '[null]' || _stringify({a: S}) != '{}' || _stringify(Object(S)) != '{}';
+ });
+
+ // 19.4.1.1 Symbol([description])
+ if(!USE_NATIVE){
+ $Symbol = function Symbol(){
+ if(this instanceof $Symbol)throw TypeError('Symbol is not a constructor!');
+ return wrap(uid(arguments.length > 0 ? arguments[0] : undefined));
+ };
+ redefine($Symbol[PROTOTYPE], 'toString', function toString(){
+ return this._k;
+ });
+
+ $GOPD.f = $getOwnPropertyDescriptor;
+ $DP.f = $defineProperty;
+ __webpack_require__(45).f = gOPNExt.f = $getOwnPropertyNames;
+ __webpack_require__(39).f = $propertyIsEnumerable
+ __webpack_require__(38).f = $getOwnPropertySymbols;
+
+ if(DESCRIPTORS && !__webpack_require__(47)){
+ redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);
+ }
+ }
+
+ $export($export.G + $export.W + $export.F * !USE_NATIVE, {Symbol: $Symbol});
+
+ // 19.4.2.2 Symbol.hasInstance
+ // 19.4.2.3 Symbol.isConcatSpreadable
+ // 19.4.2.4 Symbol.iterator
+ // 19.4.2.6 Symbol.match
+ // 19.4.2.8 Symbol.replace
+ // 19.4.2.9 Symbol.search
+ // 19.4.2.10 Symbol.species
+ // 19.4.2.11 Symbol.split
+ // 19.4.2.12 Symbol.toPrimitive
+ // 19.4.2.13 Symbol.toStringTag
+ // 19.4.2.14 Symbol.unscopables
+ for(var symbols = (
+ 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'
+ ).split(','), i = 0; symbols.length > i; ){
+ var key = symbols[i++]
+ , Wrapper = core.Symbol
+ , sym = wks(key);
+ if(!(key in Wrapper))dP(Wrapper, key, {value: USE_NATIVE ? sym : wrap(sym)});
+ };
+
+ // Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173
+ if(!QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild)setter = true;
+
+ $export($export.S + $export.F * !USE_NATIVE, 'Symbol', {
+ // 19.4.2.1 Symbol.for(key)
+ 'for': function(key){
+ return has(SymbolRegistry, key += '')
+ ? SymbolRegistry[key]
+ : SymbolRegistry[key] = $Symbol(key);
+ },
+ // 19.4.2.5 Symbol.keyFor(sym)
+ keyFor: function keyFor(key){
+ if(isSymbol(key))return keyOf(SymbolRegistry, key);
+ throw TypeError(key + ' is not a symbol!');
+ },
+ useSetter: function(){ setter = true; },
+ useSimple: function(){ setter = false; }
+ });
+
+ $export($export.S + $export.F * !USE_NATIVE, 'Object', {
+ // 19.1.2.2 Object.create(O [, Properties])
+ create: $create,
+ // 19.1.2.4 Object.defineProperty(O, P, Attributes)
+ defineProperty: $defineProperty,
+ // 19.1.2.3 Object.defineProperties(O, Properties)
+ defineProperties: $defineProperties,
+ // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)
+ getOwnPropertyDescriptor: $getOwnPropertyDescriptor,
+ // 19.1.2.7 Object.getOwnPropertyNames(O)
+ getOwnPropertyNames: $getOwnPropertyNames,
+ // 19.1.2.8 Object.getOwnPropertySymbols(O)
+ getOwnPropertySymbols: $getOwnPropertySymbols
+ });
+
+ // 24.3.2 JSON.stringify(value [, replacer [, space]])
+ $JSON && $export($export.S + $export.F * (!USE_NATIVE || BUGGY_JSON), 'JSON', {stringify: $stringify});
+
+ // 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)
+ $Symbol[PROTOTYPE][TO_PRIMITIVE] || __webpack_require__(10)($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);
+ // 19.4.3.5 Symbol.prototype[@@toStringTag]
+ setToStringTag($Symbol, 'Symbol');
+ // 20.2.1.9 Math[@@toStringTag]
+ setToStringTag(Math, 'Math', true);
+ // 24.3.3 JSON[@@toStringTag]
+ setToStringTag(global.JSON, 'JSON', true);
+
+/***/ },
+/* 2 */
+/***/ function(module, exports) {
+
+ // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
+ var global = module.exports = typeof window != 'undefined' && window.Math == Math
+ ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')();
+ if(typeof __g == 'number')__g = global; // eslint-disable-line no-undef
+
+/***/ },
+/* 3 */
+/***/ function(module, exports) {
+
+ var core = module.exports = {version: '2.2.0'};
+ if(typeof __e == 'number')__e = core; // eslint-disable-line no-undef
+
+/***/ },
+/* 4 */
+/***/ function(module, exports) {
+
+ var hasOwnProperty = {}.hasOwnProperty;
+ module.exports = function(it, key){
+ return hasOwnProperty.call(it, key);
+ };
+
+/***/ },
+/* 5 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // Thank's IE8 for his funny defineProperty
+ module.exports = !__webpack_require__(6)(function(){
+ return Object.defineProperty({}, 'a', {get: function(){ return 7; }}).a != 7;
+ });
+
+/***/ },
+/* 6 */
+/***/ function(module, exports) {
+
+ module.exports = function(exec){
+ try {
+ return !!exec();
+ } catch(e){
+ return true;
+ }
+ };
+
+/***/ },
+/* 7 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var global = __webpack_require__(2)
+ , core = __webpack_require__(3)
+ , ctx = __webpack_require__(8)
+ , hide = __webpack_require__(10)
+ , PROTOTYPE = 'prototype';
+
+ var $export = function(type, name, source){
+ var IS_FORCED = type & $export.F
+ , IS_GLOBAL = type & $export.G
+ , IS_STATIC = type & $export.S
+ , IS_PROTO = type & $export.P
+ , IS_BIND = type & $export.B
+ , IS_WRAP = type & $export.W
+ , exports = IS_GLOBAL ? core : core[name] || (core[name] = {})
+ , expProto = exports[PROTOTYPE]
+ , target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE]
+ , key, own, out;
+ if(IS_GLOBAL)source = name;
+ for(key in source){
+ // contains in native
+ own = !IS_FORCED && target && target[key] !== undefined;
+ if(own && key in exports)continue;
+ // export native or passed
+ out = own ? target[key] : source[key];
+ // prevent global pollution for namespaces
+ exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]
+ // bind timers to global for call from export context
+ : IS_BIND && own ? ctx(out, global)
+ // wrap global constructors for prevent change them in library
+ : IS_WRAP && target[key] == out ? (function(C){
+ var F = function(a, b, c){
+ if(this instanceof C){
+ switch(arguments.length){
+ case 0: return new C;
+ case 1: return new C(a);
+ case 2: return new C(a, b);
+ } return new C(a, b, c);
+ } return C.apply(this, arguments);
+ };
+ F[PROTOTYPE] = C[PROTOTYPE];
+ return F;
+ // make static versions for prototype methods
+ })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;
+ // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%
+ if(IS_PROTO){
+ (exports.virtual || (exports.virtual = {}))[key] = out;
+ // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%
+ if(type & $export.R && expProto && !expProto[key])hide(expProto, key, out);
+ }
+ }
+ };
+ // type bitmap
+ $export.F = 1; // forced
+ $export.G = 2; // global
+ $export.S = 4; // static
+ $export.P = 8; // proto
+ $export.B = 16; // bind
+ $export.W = 32; // wrap
+ $export.U = 64; // safe
+ $export.R = 128; // real proto method for `library`
+ module.exports = $export;
+
+/***/ },
+/* 8 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // optional / simple context binding
+ var aFunction = __webpack_require__(9);
+ module.exports = function(fn, that, length){
+ aFunction(fn);
+ if(that === undefined)return fn;
+ switch(length){
+ case 1: return function(a){
+ return fn.call(that, a);
+ };
+ case 2: return function(a, b){
+ return fn.call(that, a, b);
+ };
+ case 3: return function(a, b, c){
+ return fn.call(that, a, b, c);
+ };
+ }
+ return function(/* ...args */){
+ return fn.apply(that, arguments);
+ };
+ };
+
+/***/ },
+/* 9 */
+/***/ function(module, exports) {
+
+ module.exports = function(it){
+ if(typeof it != 'function')throw TypeError(it + ' is not a function!');
+ return it;
+ };
+
+/***/ },
+/* 10 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var dP = __webpack_require__(11)
+ , createDesc = __webpack_require__(17);
+ module.exports = __webpack_require__(5) ? function(object, key, value){
+ return dP.f(object, key, createDesc(1, value));
+ } : function(object, key, value){
+ object[key] = value;
+ return object;
+ };
+
+/***/ },
+/* 11 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var anObject = __webpack_require__(12)
+ , IE8_DOM_DEFINE = __webpack_require__(14)
+ , toPrimitive = __webpack_require__(16)
+ , dP = Object.defineProperty;
+
+ exports.f = __webpack_require__(5) ? Object.defineProperty : function defineProperty(O, P, Attributes){
+ anObject(O);
+ P = toPrimitive(P, true);
+ anObject(Attributes);
+ if(IE8_DOM_DEFINE)try {
+ return dP(O, P, Attributes);
+ } catch(e){ /* empty */ }
+ if('get' in Attributes || 'set' in Attributes)throw TypeError('Accessors not supported!');
+ if('value' in Attributes)O[P] = Attributes.value;
+ return O;
+ };
+
+/***/ },
+/* 12 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var isObject = __webpack_require__(13);
+ module.exports = function(it){
+ if(!isObject(it))throw TypeError(it + ' is not an object!');
+ return it;
+ };
+
+/***/ },
+/* 13 */
+/***/ function(module, exports) {
+
+ module.exports = function(it){
+ return typeof it === 'object' ? it !== null : typeof it === 'function';
+ };
+
+/***/ },
+/* 14 */
+/***/ function(module, exports, __webpack_require__) {
+
+ module.exports = !__webpack_require__(5) && !__webpack_require__(6)(function(){
+ return Object.defineProperty(__webpack_require__(15)('div'), 'a', {get: function(){ return 7; }}).a != 7;
+ });
+
+/***/ },
+/* 15 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var isObject = __webpack_require__(13)
+ , document = __webpack_require__(2).document
+ // in old IE typeof document.createElement is 'object'
+ , is = isObject(document) && isObject(document.createElement);
+ module.exports = function(it){
+ return is ? document.createElement(it) : {};
+ };
+
+/***/ },
+/* 16 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 7.1.1 ToPrimitive(input [, PreferredType])
+ var isObject = __webpack_require__(13);
+ // instead of the ES6 spec version, we didn't implement @@toPrimitive case
+ // and the second argument - flag - preferred type is a string
+ module.exports = function(it, S){
+ if(!isObject(it))return it;
+ var fn, val;
+ if(S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val;
+ if(typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it)))return val;
+ if(!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val;
+ throw TypeError("Can't convert object to primitive value");
+ };
+
+/***/ },
+/* 17 */
+/***/ function(module, exports) {
+
+ module.exports = function(bitmap, value){
+ return {
+ enumerable : !(bitmap & 1),
+ configurable: !(bitmap & 2),
+ writable : !(bitmap & 4),
+ value : value
+ };
+ };
+
+/***/ },
+/* 18 */
+/***/ function(module, exports, __webpack_require__) {
+
+ module.exports = __webpack_require__(10);
+
+/***/ },
+/* 19 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var META = __webpack_require__(20)('meta')
+ , isObject = __webpack_require__(13)
+ , has = __webpack_require__(4)
+ , setDesc = __webpack_require__(11).f
+ , id = 0;
+ var isExtensible = Object.isExtensible || function(){
+ return true;
+ };
+ var FREEZE = !__webpack_require__(6)(function(){
+ return isExtensible(Object.preventExtensions({}));
+ });
+ var setMeta = function(it){
+ setDesc(it, META, {value: {
+ i: 'O' + ++id, // object ID
+ w: {} // weak collections IDs
+ }});
+ };
+ var fastKey = function(it, create){
+ // return primitive with prefix
+ if(!isObject(it))return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;
+ if(!has(it, META)){
+ // can't set metadata to uncaught frozen object
+ if(!isExtensible(it))return 'F';
+ // not necessary to add metadata
+ if(!create)return 'E';
+ // add missing metadata
+ setMeta(it);
+ // return object ID
+ } return it[META].i;
+ };
+ var getWeak = function(it, create){
+ if(!has(it, META)){
+ // can't set metadata to uncaught frozen object
+ if(!isExtensible(it))return true;
+ // not necessary to add metadata
+ if(!create)return false;
+ // add missing metadata
+ setMeta(it);
+ // return hash weak collections IDs
+ } return it[META].w;
+ };
+ // add metadata on freeze-family methods calling
+ var onFreeze = function(it){
+ if(FREEZE && meta.NEED && isExtensible(it) && !has(it, META))setMeta(it);
+ return it;
+ };
+ var meta = module.exports = {
+ KEY: META,
+ NEED: false,
+ fastKey: fastKey,
+ getWeak: getWeak,
+ onFreeze: onFreeze
+ };
+
+/***/ },
+/* 20 */
+/***/ function(module, exports) {
+
+ var id = 0
+ , px = Math.random();
+ module.exports = function(key){
+ return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));
+ };
+
+/***/ },
+/* 21 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var global = __webpack_require__(2)
+ , SHARED = '__core-js_shared__'
+ , store = global[SHARED] || (global[SHARED] = {});
+ module.exports = function(key){
+ return store[key] || (store[key] = {});
+ };
+
+/***/ },
+/* 22 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var def = __webpack_require__(11).f
+ , has = __webpack_require__(4)
+ , TAG = __webpack_require__(23)('toStringTag');
+
+ module.exports = function(it, tag, stat){
+ if(it && !has(it = stat ? it : it.prototype, TAG))def(it, TAG, {configurable: true, value: tag});
+ };
+
+/***/ },
+/* 23 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var store = __webpack_require__(21)('wks')
+ , uid = __webpack_require__(20)
+ , Symbol = __webpack_require__(2).Symbol
+ , USE_SYMBOL = typeof Symbol == 'function';
+ module.exports = function(name){
+ return store[name] || (store[name] =
+ USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));
+ };
+
+/***/ },
+/* 24 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var getKeys = __webpack_require__(25)
+ , toIObject = __webpack_require__(27);
+ module.exports = function(object, el){
+ var O = toIObject(object)
+ , keys = getKeys(O)
+ , length = keys.length
+ , index = 0
+ , key;
+ while(length > index)if(O[key = keys[index++]] === el)return key;
+ };
+
+/***/ },
+/* 25 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 19.1.2.14 / 15.2.3.14 Object.keys(O)
+ var $keys = __webpack_require__(26)
+ , enumBugKeys = __webpack_require__(36);
+
+ module.exports = Object.keys || function keys(O){
+ return $keys(O, enumBugKeys);
+ };
+
+/***/ },
+/* 26 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var has = __webpack_require__(4)
+ , toIObject = __webpack_require__(27)
+ , arrayIndexOf = __webpack_require__(31)(false)
+ , IE_PROTO = __webpack_require__(35)('IE_PROTO');
+
+ module.exports = function(object, names){
+ var O = toIObject(object)
+ , i = 0
+ , result = []
+ , key;
+ for(key in O)if(key != IE_PROTO)has(O, key) && result.push(key);
+ // Don't enum bug & hidden keys
+ while(names.length > i)if(has(O, key = names[i++])){
+ ~arrayIndexOf(result, key) || result.push(key);
+ }
+ return result;
+ };
+
+/***/ },
+/* 27 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // to indexed object, toObject with fallback for non-array-like ES3 strings
+ var IObject = __webpack_require__(28)
+ , defined = __webpack_require__(30);
+ module.exports = function(it){
+ return IObject(defined(it));
+ };
+
+/***/ },
+/* 28 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // fallback for non-array-like ES3 and non-enumerable old V8 strings
+ var cof = __webpack_require__(29);
+ module.exports = Object('z').propertyIsEnumerable(0) ? Object : function(it){
+ return cof(it) == 'String' ? it.split('') : Object(it);
+ };
+
+/***/ },
+/* 29 */
+/***/ function(module, exports) {
+
+ var toString = {}.toString;
+
+ module.exports = function(it){
+ return toString.call(it).slice(8, -1);
+ };
+
+/***/ },
+/* 30 */
+/***/ function(module, exports) {
+
+ // 7.2.1 RequireObjectCoercible(argument)
+ module.exports = function(it){
+ if(it == undefined)throw TypeError("Can't call method on " + it);
+ return it;
+ };
+
+/***/ },
+/* 31 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // false -> Array#indexOf
+ // true -> Array#includes
+ var toIObject = __webpack_require__(27)
+ , toLength = __webpack_require__(32)
+ , toIndex = __webpack_require__(34);
+ module.exports = function(IS_INCLUDES){
+ return function($this, el, fromIndex){
+ var O = toIObject($this)
+ , length = toLength(O.length)
+ , index = toIndex(fromIndex, length)
+ , value;
+ // Array#includes uses SameValueZero equality algorithm
+ if(IS_INCLUDES && el != el)while(length > index){
+ value = O[index++];
+ if(value != value)return true;
+ // Array#toIndex ignores holes, Array#includes - not
+ } else for(;length > index; index++)if(IS_INCLUDES || index in O){
+ if(O[index] === el)return IS_INCLUDES || index;
+ } return !IS_INCLUDES && -1;
+ };
+ };
+
+/***/ },
+/* 32 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 7.1.15 ToLength
+ var toInteger = __webpack_require__(33)
+ , min = Math.min;
+ module.exports = function(it){
+ return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991
+ };
+
+/***/ },
+/* 33 */
+/***/ function(module, exports) {
+
+ // 7.1.4 ToInteger
+ var ceil = Math.ceil
+ , floor = Math.floor;
+ module.exports = function(it){
+ return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);
+ };
+
+/***/ },
+/* 34 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var toInteger = __webpack_require__(33)
+ , max = Math.max
+ , min = Math.min;
+ module.exports = function(index, length){
+ index = toInteger(index);
+ return index < 0 ? max(index + length, 0) : min(index, length);
+ };
+
+/***/ },
+/* 35 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var shared = __webpack_require__(21)('keys')
+ , uid = __webpack_require__(20);
+ module.exports = function(key){
+ return shared[key] || (shared[key] = uid(key));
+ };
+
+/***/ },
+/* 36 */
+/***/ function(module, exports) {
+
+ // IE 8- don't enum bug keys
+ module.exports = (
+ 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'
+ ).split(',');
+
+/***/ },
+/* 37 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // all enumerable object keys, includes symbols
+ var getKeys = __webpack_require__(25)
+ , gOPS = __webpack_require__(38)
+ , pIE = __webpack_require__(39);
+ module.exports = function(it){
+ var result = getKeys(it)
+ , getSymbols = gOPS.f;
+ if(getSymbols){
+ var symbols = getSymbols(it)
+ , isEnum = pIE.f
+ , i = 0
+ , key;
+ while(symbols.length > i)if(isEnum.call(it, key = symbols[i++]))result.push(key);
+ } return result;
+ };
+
+/***/ },
+/* 38 */
+/***/ function(module, exports) {
+
+ exports.f = Object.getOwnPropertySymbols;
+
+/***/ },
+/* 39 */
+/***/ function(module, exports) {
+
+ exports.f = {}.propertyIsEnumerable;
+
+/***/ },
+/* 40 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 7.2.2 IsArray(argument)
+ var cof = __webpack_require__(29);
+ module.exports = Array.isArray || function isArray(arg){
+ return cof(arg) == 'Array';
+ };
+
+/***/ },
+/* 41 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
+ var anObject = __webpack_require__(12)
+ , dPs = __webpack_require__(42)
+ , enumBugKeys = __webpack_require__(36)
+ , IE_PROTO = __webpack_require__(35)('IE_PROTO')
+ , Empty = function(){ /* empty */ }
+ , PROTOTYPE = 'prototype';
+
+ // Create object with fake `null` prototype: use iframe Object with cleared prototype
+ var createDict = function(){
+ // Thrash, waste and sodomy: IE GC bug
+ var iframe = __webpack_require__(15)('iframe')
+ , i = enumBugKeys.length
+ , gt = '>'
+ , iframeDocument;
+ iframe.style.display = 'none';
+ __webpack_require__(43).appendChild(iframe);
+ iframe.src = 'javascript:'; // eslint-disable-line no-script-url
+ // createDict = iframe.contentWindow.Object;
+ // html.removeChild(iframe);
+ iframeDocument = iframe.contentWindow.document;
+ iframeDocument.open();
+ iframeDocument.write(' i)dP.f(O, P = keys[i++], Properties[P]);
+ return O;
+ };
+
+/***/ },
+/* 43 */
+/***/ function(module, exports, __webpack_require__) {
+
+ module.exports = __webpack_require__(2).document && document.documentElement;
+
+/***/ },
+/* 44 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window
+ var toIObject = __webpack_require__(27)
+ , gOPN = __webpack_require__(45).f
+ , toString = {}.toString;
+
+ var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames
+ ? Object.getOwnPropertyNames(window) : [];
+
+ var getWindowNames = function(it){
+ try {
+ return gOPN.f(it);
+ } catch(e){
+ return windowNames.slice();
+ }
+ };
+
+ module.exports.f = function getOwnPropertyNames(it){
+ return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));
+ };
+
+/***/ },
+/* 45 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)
+ var $keys = __webpack_require__(26)
+ , hiddenKeys = __webpack_require__(36).concat('length', 'prototype');
+
+ exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O){
+ return $keys(O, hiddenKeys);
+ };
+
+/***/ },
+/* 46 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var pIE = __webpack_require__(39)
+ , createDesc = __webpack_require__(17)
+ , toIObject = __webpack_require__(27)
+ , toPrimitive = __webpack_require__(16)
+ , has = __webpack_require__(4)
+ , IE8_DOM_DEFINE = __webpack_require__(14)
+ , gOPD = Object.getOwnPropertyDescriptor;
+
+ exports.f = __webpack_require__(5) ? gOPD : function getOwnPropertyDescriptor(O, P){
+ O = toIObject(O);
+ P = toPrimitive(P, true);
+ if(IE8_DOM_DEFINE)try {
+ return gOPD(O, P);
+ } catch(e){ /* empty */ }
+ if(has(O, P))return createDesc(!pIE.f.call(O, P), O[P]);
+ };
+
+/***/ },
+/* 47 */
+/***/ function(module, exports) {
+
+ module.exports = true;
+
+/***/ },
+/* 48 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var $export = __webpack_require__(7);
+ // 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)
+ $export($export.S + $export.F * !__webpack_require__(5), 'Object', {defineProperty: __webpack_require__(11).f});
+
+/***/ },
+/* 49 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var $export = __webpack_require__(7);
+ // 19.1.2.3 / 15.2.3.7 Object.defineProperties(O, Properties)
+ $export($export.S + $export.F * !__webpack_require__(5), 'Object', {defineProperties: __webpack_require__(42)});
+
+/***/ },
+/* 50 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)
+ var toIObject = __webpack_require__(27)
+ , $getOwnPropertyDescriptor = __webpack_require__(46).f;
+
+ __webpack_require__(51)('getOwnPropertyDescriptor', function(){
+ return function getOwnPropertyDescriptor(it, key){
+ return $getOwnPropertyDescriptor(toIObject(it), key);
+ };
+ });
+
+/***/ },
+/* 51 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // most Object methods by ES6 should accept primitives
+ var $export = __webpack_require__(7)
+ , core = __webpack_require__(3)
+ , fails = __webpack_require__(6);
+ module.exports = function(KEY, exec){
+ var fn = (core.Object || {})[KEY] || Object[KEY]
+ , exp = {};
+ exp[KEY] = exec(fn);
+ $export($export.S + $export.F * fails(function(){ fn(1); }), 'Object', exp);
+ };
+
+/***/ },
+/* 52 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var $export = __webpack_require__(7)
+ // 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
+ $export($export.S, 'Object', {create: __webpack_require__(41)});
+
+/***/ },
+/* 53 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 19.1.2.9 Object.getPrototypeOf(O)
+ var toObject = __webpack_require__(54)
+ , $getPrototypeOf = __webpack_require__(55);
+
+ __webpack_require__(51)('getPrototypeOf', function(){
+ return function getPrototypeOf(it){
+ return $getPrototypeOf(toObject(it));
+ };
+ });
+
+/***/ },
+/* 54 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 7.1.13 ToObject(argument)
+ var defined = __webpack_require__(30);
+ module.exports = function(it){
+ return Object(defined(it));
+ };
+
+/***/ },
+/* 55 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)
+ var has = __webpack_require__(4)
+ , toObject = __webpack_require__(54)
+ , IE_PROTO = __webpack_require__(35)('IE_PROTO')
+ , ObjectProto = Object.prototype;
+
+ module.exports = Object.getPrototypeOf || function(O){
+ O = toObject(O);
+ if(has(O, IE_PROTO))return O[IE_PROTO];
+ if(typeof O.constructor == 'function' && O instanceof O.constructor){
+ return O.constructor.prototype;
+ } return O instanceof Object ? ObjectProto : null;
+ };
+
+/***/ },
+/* 56 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 19.1.2.14 Object.keys(O)
+ var toObject = __webpack_require__(54)
+ , $keys = __webpack_require__(25);
+
+ __webpack_require__(51)('keys', function(){
+ return function keys(it){
+ return $keys(toObject(it));
+ };
+ });
+
+/***/ },
+/* 57 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 19.1.2.7 Object.getOwnPropertyNames(O)
+ __webpack_require__(51)('getOwnPropertyNames', function(){
+ return __webpack_require__(44).f;
+ });
+
+/***/ },
+/* 58 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 19.1.2.5 Object.freeze(O)
+ var isObject = __webpack_require__(13)
+ , meta = __webpack_require__(19).onFreeze;
+
+ __webpack_require__(51)('freeze', function($freeze){
+ return function freeze(it){
+ return $freeze && isObject(it) ? $freeze(meta(it)) : it;
+ };
+ });
+
+/***/ },
+/* 59 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 19.1.2.17 Object.seal(O)
+ var isObject = __webpack_require__(13)
+ , meta = __webpack_require__(19).onFreeze;
+
+ __webpack_require__(51)('seal', function($seal){
+ return function seal(it){
+ return $seal && isObject(it) ? $seal(meta(it)) : it;
+ };
+ });
+
+/***/ },
+/* 60 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 19.1.2.15 Object.preventExtensions(O)
+ var isObject = __webpack_require__(13)
+ , meta = __webpack_require__(19).onFreeze;
+
+ __webpack_require__(51)('preventExtensions', function($preventExtensions){
+ return function preventExtensions(it){
+ return $preventExtensions && isObject(it) ? $preventExtensions(meta(it)) : it;
+ };
+ });
+
+/***/ },
+/* 61 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 19.1.2.12 Object.isFrozen(O)
+ var isObject = __webpack_require__(13);
+
+ __webpack_require__(51)('isFrozen', function($isFrozen){
+ return function isFrozen(it){
+ return isObject(it) ? $isFrozen ? $isFrozen(it) : false : true;
+ };
+ });
+
+/***/ },
+/* 62 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 19.1.2.13 Object.isSealed(O)
+ var isObject = __webpack_require__(13);
+
+ __webpack_require__(51)('isSealed', function($isSealed){
+ return function isSealed(it){
+ return isObject(it) ? $isSealed ? $isSealed(it) : false : true;
+ };
+ });
+
+/***/ },
+/* 63 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 19.1.2.11 Object.isExtensible(O)
+ var isObject = __webpack_require__(13);
+
+ __webpack_require__(51)('isExtensible', function($isExtensible){
+ return function isExtensible(it){
+ return isObject(it) ? $isExtensible ? $isExtensible(it) : true : false;
+ };
+ });
+
+/***/ },
+/* 64 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 19.1.3.1 Object.assign(target, source)
+ var $export = __webpack_require__(7);
+
+ $export($export.S + $export.F, 'Object', {assign: __webpack_require__(65)});
+
+/***/ },
+/* 65 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // 19.1.2.1 Object.assign(target, source, ...)
+ var getKeys = __webpack_require__(25)
+ , gOPS = __webpack_require__(38)
+ , pIE = __webpack_require__(39)
+ , toObject = __webpack_require__(54)
+ , IObject = __webpack_require__(28)
+ , $assign = Object.assign;
+
+ // should work with symbols and should have deterministic property order (V8 bug)
+ module.exports = !$assign || __webpack_require__(6)(function(){
+ var A = {}
+ , B = {}
+ , S = Symbol()
+ , K = 'abcdefghijklmnopqrst';
+ A[S] = 7;
+ K.split('').forEach(function(k){ B[k] = k; });
+ return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;
+ }) ? function assign(target, source){ // eslint-disable-line no-unused-vars
+ var T = toObject(target)
+ , aLen = arguments.length
+ , index = 1
+ , getSymbols = gOPS.f
+ , isEnum = pIE.f;
+ while(aLen > index){
+ var S = IObject(arguments[index++])
+ , keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S)
+ , length = keys.length
+ , j = 0
+ , key;
+ while(length > j)if(isEnum.call(S, key = keys[j++]))T[key] = S[key];
+ } return T;
+ } : $assign;
+
+/***/ },
+/* 66 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 19.1.3.10 Object.is(value1, value2)
+ var $export = __webpack_require__(7);
+ $export($export.S, 'Object', {is: __webpack_require__(67)});
+
+/***/ },
+/* 67 */
+/***/ function(module, exports) {
+
+ // 7.2.9 SameValue(x, y)
+ module.exports = Object.is || function is(x, y){
+ return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;
+ };
+
+/***/ },
+/* 68 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 19.1.3.19 Object.setPrototypeOf(O, proto)
+ var $export = __webpack_require__(7);
+ $export($export.S, 'Object', {setPrototypeOf: __webpack_require__(69).set});
+
+/***/ },
+/* 69 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // Works with __proto__ only. Old v8 can't work with null proto objects.
+ /* eslint-disable no-proto */
+ var isObject = __webpack_require__(13)
+ , anObject = __webpack_require__(12);
+ var check = function(O, proto){
+ anObject(O);
+ if(!isObject(proto) && proto !== null)throw TypeError(proto + ": can't set as prototype!");
+ };
+ module.exports = {
+ set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line
+ function(test, buggy, set){
+ try {
+ set = __webpack_require__(8)(Function.call, __webpack_require__(46).f(Object.prototype, '__proto__').set, 2);
+ set(test, []);
+ buggy = !(test instanceof Array);
+ } catch(e){ buggy = true; }
+ return function setPrototypeOf(O, proto){
+ check(O, proto);
+ if(buggy)O.__proto__ = proto;
+ else set(O, proto);
+ return O;
+ };
+ }({}, false) : undefined),
+ check: check
+ };
+
+/***/ },
+/* 70 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 19.2.3.2 / 15.3.4.5 Function.prototype.bind(thisArg, args...)
+ var $export = __webpack_require__(7);
+
+ $export($export.P, 'Function', {bind: __webpack_require__(71)});
+
+/***/ },
+/* 71 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var aFunction = __webpack_require__(9)
+ , isObject = __webpack_require__(13)
+ , invoke = __webpack_require__(72)
+ , arraySlice = [].slice
+ , factories = {};
+
+ var construct = function(F, len, args){
+ if(!(len in factories)){
+ for(var n = [], i = 0; i < len; i++)n[i] = 'a[' + i + ']';
+ factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')');
+ } return factories[len](F, args);
+ };
+
+ module.exports = Function.bind || function bind(that /*, args... */){
+ var fn = aFunction(this)
+ , partArgs = arraySlice.call(arguments, 1);
+ var bound = function(/* args... */){
+ var args = partArgs.concat(arraySlice.call(arguments));
+ return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that);
+ };
+ if(isObject(fn.prototype))bound.prototype = fn.prototype;
+ return bound;
+ };
+
+/***/ },
+/* 72 */
+/***/ function(module, exports) {
+
+ // fast apply, http://jsperf.lnkit.com/fast-apply/5
+ module.exports = function(fn, args, that){
+ var un = that === undefined;
+ switch(args.length){
+ case 0: return un ? fn()
+ : fn.call(that);
+ case 1: return un ? fn(args[0])
+ : fn.call(that, args[0]);
+ case 2: return un ? fn(args[0], args[1])
+ : fn.call(that, args[0], args[1]);
+ case 3: return un ? fn(args[0], args[1], args[2])
+ : fn.call(that, args[0], args[1], args[2]);
+ case 4: return un ? fn(args[0], args[1], args[2], args[3])
+ : fn.call(that, args[0], args[1], args[2], args[3]);
+ } return fn.apply(that, args);
+ };
+
+/***/ },
+/* 73 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var isObject = __webpack_require__(13)
+ , getPrototypeOf = __webpack_require__(55)
+ , HAS_INSTANCE = __webpack_require__(23)('hasInstance')
+ , FunctionProto = Function.prototype;
+ // 19.2.3.6 Function.prototype[@@hasInstance](V)
+ if(!(HAS_INSTANCE in FunctionProto))__webpack_require__(11).f(FunctionProto, HAS_INSTANCE, {value: function(O){
+ if(typeof this != 'function' || !isObject(O))return false;
+ if(!isObject(this.prototype))return O instanceof this;
+ // for environment w/o native `@@hasInstance` logic enough `instanceof`, but add this:
+ while(O = getPrototypeOf(O))if(this.prototype === O)return true;
+ return false;
+ }});
+
+/***/ },
+/* 74 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var $export = __webpack_require__(7)
+ , anInstance = __webpack_require__(75)
+ , toInteger = __webpack_require__(33)
+ , aNumberValue = __webpack_require__(76)
+ , repeat = __webpack_require__(77)
+ , $toFixed = 1..toFixed
+ , floor = Math.floor
+ , data = [0, 0, 0, 0, 0, 0]
+ , ERROR = 'Number.toFixed: incorrect invocation!'
+ , ZERO = '0';
+
+ var multiply = function(n, c){
+ var i = -1
+ , c2 = c;
+ while(++i < 6){
+ c2 += n * data[i];
+ data[i] = c2 % 1e7;
+ c2 = floor(c2 / 1e7);
+ }
+ };
+ var divide = function(n){
+ var i = 6
+ , c = 0;
+ while(--i >= 0){
+ c += data[i];
+ data[i] = floor(c / n);
+ c = (c % n) * 1e7;
+ }
+ };
+ var numToString = function(){
+ var i = 6
+ , s = '';
+ while(--i >= 0){
+ if(s !== '' || i === 0 || data[i] !== 0){
+ var t = String(data[i]);
+ s = s === '' ? t : s + repeat.call(ZERO, 7 - t.length) + t;
+ }
+ } return s;
+ };
+ var pow = function(x, n, acc){
+ return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);
+ };
+ var log = function(x){
+ var n = 0
+ , x2 = x;
+ while(x2 >= 4096){
+ n += 12;
+ x2 /= 4096;
+ }
+ while(x2 >= 2){
+ n += 1;
+ x2 /= 2;
+ } return n;
+ };
+
+ $export($export.P + $export.F * (!!$toFixed && (
+ 0.00008.toFixed(3) !== '0.000' ||
+ 0.9.toFixed(0) !== '1' ||
+ 1.255.toFixed(2) !== '1.25' ||
+ 1000000000000000128..toFixed(0) !== '1000000000000000128'
+ ) || !__webpack_require__(6)(function(){
+ // V8 ~ Android 4.3-
+ $toFixed.call({});
+ })), 'Number', {
+ toFixed: function toFixed(fractionDigits){
+ var x = aNumberValue(this, ERROR)
+ , f = toInteger(fractionDigits)
+ , s = ''
+ , m = ZERO
+ , e, z, j, k;
+ if(f < 0 || f > 20)throw RangeError(ERROR);
+ if(x != x)return 'NaN';
+ if(x <= -1e21 || x >= 1e21)return String(x);
+ if(x < 0){
+ s = '-';
+ x = -x;
+ }
+ if(x > 1e-21){
+ e = log(x * pow(2, 69, 1)) - 69;
+ z = e < 0 ? x * pow(2, -e, 1) : x / pow(2, e, 1);
+ z *= 0x10000000000000;
+ e = 52 - e;
+ if(e > 0){
+ multiply(0, z);
+ j = f;
+ while(j >= 7){
+ multiply(1e7, 0);
+ j -= 7;
+ }
+ multiply(pow(10, j, 1), 0);
+ j = e - 1;
+ while(j >= 23){
+ divide(1 << 23);
+ j -= 23;
+ }
+ divide(1 << j);
+ multiply(1, 1);
+ divide(2);
+ m = numToString();
+ } else {
+ multiply(0, z);
+ multiply(1 << -e, 0);
+ m = numToString() + repeat.call(ZERO, f);
+ }
+ }
+ if(f > 0){
+ k = m.length;
+ m = s + (k <= f ? '0.' + repeat.call(ZERO, f - k) + m : m.slice(0, k - f) + '.' + m.slice(k - f));
+ } else {
+ m = s + m;
+ } return m;
+ }
+ });
+
+/***/ },
+/* 75 */
+/***/ function(module, exports) {
+
+ module.exports = function(it, Constructor, name, forbiddenField){
+ if(!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)){
+ throw TypeError(name + ': incorrect invocation!');
+ } return it;
+ };
+
+/***/ },
+/* 76 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var cof = __webpack_require__(29);
+ module.exports = function(it, msg){
+ if(typeof it != 'number' && cof(it) != 'Number')throw TypeError(msg);
+ return +it;
+ };
+
+/***/ },
+/* 77 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var toInteger = __webpack_require__(33)
+ , defined = __webpack_require__(30);
+
+ module.exports = function repeat(count){
+ var str = String(defined(this))
+ , res = ''
+ , n = toInteger(count);
+ if(n < 0 || n == Infinity)throw RangeError("Count can't be negative");
+ for(;n > 0; (n >>>= 1) && (str += str))if(n & 1)res += str;
+ return res;
+ };
+
+/***/ },
+/* 78 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var $export = __webpack_require__(7)
+ , $fails = __webpack_require__(6)
+ , aNumberValue = __webpack_require__(76)
+ , $toPrecision = 1..toPrecision;
+
+ $export($export.P + $export.F * ($fails(function(){
+ // IE7-
+ return $toPrecision.call(1, undefined) !== '1';
+ }) || !$fails(function(){
+ // V8 ~ Android 4.3-
+ $toPrecision.call({});
+ })), 'Number', {
+ toPrecision: function toPrecision(precision){
+ var that = aNumberValue(this, 'Number#toPrecision: incorrect invocation!');
+ return precision === undefined ? $toPrecision.call(that) : $toPrecision.call(that, precision);
+ }
+ });
+
+/***/ },
+/* 79 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.1.2.1 Number.EPSILON
+ var $export = __webpack_require__(7);
+
+ $export($export.S, 'Number', {EPSILON: Math.pow(2, -52)});
+
+/***/ },
+/* 80 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.1.2.2 Number.isFinite(number)
+ var $export = __webpack_require__(7)
+ , _isFinite = __webpack_require__(2).isFinite;
+
+ $export($export.S, 'Number', {
+ isFinite: function isFinite(it){
+ return typeof it == 'number' && _isFinite(it);
+ }
+ });
+
+/***/ },
+/* 81 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.1.2.3 Number.isInteger(number)
+ var $export = __webpack_require__(7);
+
+ $export($export.S, 'Number', {isInteger: __webpack_require__(82)});
+
+/***/ },
+/* 82 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.1.2.3 Number.isInteger(number)
+ var isObject = __webpack_require__(13)
+ , floor = Math.floor;
+ module.exports = function isInteger(it){
+ return !isObject(it) && isFinite(it) && floor(it) === it;
+ };
+
+/***/ },
+/* 83 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.1.2.4 Number.isNaN(number)
+ var $export = __webpack_require__(7);
+
+ $export($export.S, 'Number', {
+ isNaN: function isNaN(number){
+ return number != number;
+ }
+ });
+
+/***/ },
+/* 84 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.1.2.5 Number.isSafeInteger(number)
+ var $export = __webpack_require__(7)
+ , isInteger = __webpack_require__(82)
+ , abs = Math.abs;
+
+ $export($export.S, 'Number', {
+ isSafeInteger: function isSafeInteger(number){
+ return isInteger(number) && abs(number) <= 0x1fffffffffffff;
+ }
+ });
+
+/***/ },
+/* 85 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.1.2.6 Number.MAX_SAFE_INTEGER
+ var $export = __webpack_require__(7);
+
+ $export($export.S, 'Number', {MAX_SAFE_INTEGER: 0x1fffffffffffff});
+
+/***/ },
+/* 86 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.1.2.10 Number.MIN_SAFE_INTEGER
+ var $export = __webpack_require__(7);
+
+ $export($export.S, 'Number', {MIN_SAFE_INTEGER: -0x1fffffffffffff});
+
+/***/ },
+/* 87 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var $export = __webpack_require__(7)
+ , $parseFloat = __webpack_require__(88);
+ // 20.1.2.12 Number.parseFloat(string)
+ $export($export.S + $export.F * (Number.parseFloat != $parseFloat), 'Number', {parseFloat: $parseFloat});
+
+/***/ },
+/* 88 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var $parseFloat = __webpack_require__(2).parseFloat
+ , $trim = __webpack_require__(89).trim;
+
+ module.exports = 1 / $parseFloat(__webpack_require__(90) + '-0') !== -Infinity ? function parseFloat(str){
+ var string = $trim(String(str), 3)
+ , result = $parseFloat(string);
+ return result === 0 && string.charAt(0) == '-' ? -0 : result;
+ } : $parseFloat;
+
+/***/ },
+/* 89 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var $export = __webpack_require__(7)
+ , defined = __webpack_require__(30)
+ , fails = __webpack_require__(6)
+ , spaces = __webpack_require__(90)
+ , space = '[' + spaces + ']'
+ , non = '\u200b\u0085'
+ , ltrim = RegExp('^' + space + space + '*')
+ , rtrim = RegExp(space + space + '*$');
+
+ var exporter = function(KEY, exec, ALIAS){
+ var exp = {};
+ var FORCE = fails(function(){
+ return !!spaces[KEY]() || non[KEY]() != non;
+ });
+ var fn = exp[KEY] = FORCE ? exec(trim) : spaces[KEY];
+ if(ALIAS)exp[ALIAS] = fn;
+ $export($export.P + $export.F * FORCE, 'String', exp);
+ };
+
+ // 1 -> String#trimLeft
+ // 2 -> String#trimRight
+ // 3 -> String#trim
+ var trim = exporter.trim = function(string, TYPE){
+ string = String(defined(string));
+ if(TYPE & 1)string = string.replace(ltrim, '');
+ if(TYPE & 2)string = string.replace(rtrim, '');
+ return string;
+ };
+
+ module.exports = exporter;
+
+/***/ },
+/* 90 */
+/***/ function(module, exports) {
+
+ module.exports = '\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003' +
+ '\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF';
+
+/***/ },
+/* 91 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var $export = __webpack_require__(7)
+ , $parseInt = __webpack_require__(92);
+ // 20.1.2.13 Number.parseInt(string, radix)
+ $export($export.S + $export.F * (Number.parseInt != $parseInt), 'Number', {parseInt: $parseInt});
+
+/***/ },
+/* 92 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var $parseInt = __webpack_require__(2).parseInt
+ , $trim = __webpack_require__(89).trim
+ , ws = __webpack_require__(90)
+ , hex = /^[\-+]?0[xX]/;
+
+ module.exports = $parseInt(ws + '08') !== 8 || $parseInt(ws + '0x16') !== 22 ? function parseInt(str, radix){
+ var string = $trim(String(str), 3);
+ return $parseInt(string, (radix >>> 0) || (hex.test(string) ? 16 : 10));
+ } : $parseInt;
+
+/***/ },
+/* 93 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var $export = __webpack_require__(7)
+ , $parseInt = __webpack_require__(92);
+ // 18.2.5 parseInt(string, radix)
+ $export($export.G + $export.F * (parseInt != $parseInt), {parseInt: $parseInt});
+
+/***/ },
+/* 94 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var $export = __webpack_require__(7)
+ , $parseFloat = __webpack_require__(88);
+ // 18.2.4 parseFloat(string)
+ $export($export.G + $export.F * (parseFloat != $parseFloat), {parseFloat: $parseFloat});
+
+/***/ },
+/* 95 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.2.2.3 Math.acosh(x)
+ var $export = __webpack_require__(7)
+ , log1p = __webpack_require__(96)
+ , sqrt = Math.sqrt
+ , $acosh = Math.acosh;
+
+ // V8 bug https://code.google.com/p/v8/issues/detail?id=3509
+ $export($export.S + $export.F * !($acosh && Math.floor($acosh(Number.MAX_VALUE)) == 710), 'Math', {
+ acosh: function acosh(x){
+ return (x = +x) < 1 ? NaN : x > 94906265.62425156
+ ? Math.log(x) + Math.LN2
+ : log1p(x - 1 + sqrt(x - 1) * sqrt(x + 1));
+ }
+ });
+
+/***/ },
+/* 96 */
+/***/ function(module, exports) {
+
+ // 20.2.2.20 Math.log1p(x)
+ module.exports = Math.log1p || function log1p(x){
+ return (x = +x) > -1e-8 && x < 1e-8 ? x - x * x / 2 : Math.log(1 + x);
+ };
+
+/***/ },
+/* 97 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.2.2.5 Math.asinh(x)
+ var $export = __webpack_require__(7);
+
+ function asinh(x){
+ return !isFinite(x = +x) || x == 0 ? x : x < 0 ? -asinh(-x) : Math.log(x + Math.sqrt(x * x + 1));
+ }
+
+ $export($export.S, 'Math', {asinh: asinh});
+
+/***/ },
+/* 98 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.2.2.7 Math.atanh(x)
+ var $export = __webpack_require__(7);
+
+ $export($export.S, 'Math', {
+ atanh: function atanh(x){
+ return (x = +x) == 0 ? x : Math.log((1 + x) / (1 - x)) / 2;
+ }
+ });
+
+/***/ },
+/* 99 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.2.2.9 Math.cbrt(x)
+ var $export = __webpack_require__(7)
+ , sign = __webpack_require__(100);
+
+ $export($export.S, 'Math', {
+ cbrt: function cbrt(x){
+ return sign(x = +x) * Math.pow(Math.abs(x), 1 / 3);
+ }
+ });
+
+/***/ },
+/* 100 */
+/***/ function(module, exports) {
+
+ // 20.2.2.28 Math.sign(x)
+ module.exports = Math.sign || function sign(x){
+ return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1;
+ };
+
+/***/ },
+/* 101 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.2.2.11 Math.clz32(x)
+ var $export = __webpack_require__(7);
+
+ $export($export.S, 'Math', {
+ clz32: function clz32(x){
+ return (x >>>= 0) ? 31 - Math.floor(Math.log(x + 0.5) * Math.LOG2E) : 32;
+ }
+ });
+
+/***/ },
+/* 102 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.2.2.12 Math.cosh(x)
+ var $export = __webpack_require__(7)
+ , exp = Math.exp;
+
+ $export($export.S, 'Math', {
+ cosh: function cosh(x){
+ return (exp(x = +x) + exp(-x)) / 2;
+ }
+ });
+
+/***/ },
+/* 103 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.2.2.14 Math.expm1(x)
+ var $export = __webpack_require__(7);
+
+ $export($export.S, 'Math', {expm1: __webpack_require__(104)});
+
+/***/ },
+/* 104 */
+/***/ function(module, exports) {
+
+ // 20.2.2.14 Math.expm1(x)
+ module.exports = Math.expm1 || function expm1(x){
+ return (x = +x) == 0 ? x : x > -1e-6 && x < 1e-6 ? x + x * x / 2 : Math.exp(x) - 1;
+ };
+
+/***/ },
+/* 105 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.2.2.16 Math.fround(x)
+ var $export = __webpack_require__(7)
+ , sign = __webpack_require__(100)
+ , pow = Math.pow
+ , EPSILON = pow(2, -52)
+ , EPSILON32 = pow(2, -23)
+ , MAX32 = pow(2, 127) * (2 - EPSILON32)
+ , MIN32 = pow(2, -126);
+
+ var roundTiesToEven = function(n){
+ return n + 1 / EPSILON - 1 / EPSILON;
+ };
+
+
+ $export($export.S, 'Math', {
+ fround: function fround(x){
+ var $abs = Math.abs(x)
+ , $sign = sign(x)
+ , a, result;
+ if($abs < MIN32)return $sign * roundTiesToEven($abs / MIN32 / EPSILON32) * MIN32 * EPSILON32;
+ a = (1 + EPSILON32 / EPSILON) * $abs;
+ result = a - (a - $abs);
+ if(result > MAX32 || result != result)return $sign * Infinity;
+ return $sign * result;
+ }
+ });
+
+/***/ },
+/* 106 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.2.2.17 Math.hypot([value1[, value2[, … ]]])
+ var $export = __webpack_require__(7)
+ , abs = Math.abs;
+
+ $export($export.S, 'Math', {
+ hypot: function hypot(value1, value2){ // eslint-disable-line no-unused-vars
+ var sum = 0
+ , i = 0
+ , aLen = arguments.length
+ , larg = 0
+ , arg, div;
+ while(i < aLen){
+ arg = abs(arguments[i++]);
+ if(larg < arg){
+ div = larg / arg;
+ sum = sum * div * div + 1;
+ larg = arg;
+ } else if(arg > 0){
+ div = arg / larg;
+ sum += div * div;
+ } else sum += arg;
+ }
+ return larg === Infinity ? Infinity : larg * Math.sqrt(sum);
+ }
+ });
+
+/***/ },
+/* 107 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.2.2.18 Math.imul(x, y)
+ var $export = __webpack_require__(7)
+ , $imul = Math.imul;
+
+ // some WebKit versions fails with big numbers, some has wrong arity
+ $export($export.S + $export.F * __webpack_require__(6)(function(){
+ return $imul(0xffffffff, 5) != -5 || $imul.length != 2;
+ }), 'Math', {
+ imul: function imul(x, y){
+ var UINT16 = 0xffff
+ , xn = +x
+ , yn = +y
+ , xl = UINT16 & xn
+ , yl = UINT16 & yn;
+ return 0 | xl * yl + ((UINT16 & xn >>> 16) * yl + xl * (UINT16 & yn >>> 16) << 16 >>> 0);
+ }
+ });
+
+/***/ },
+/* 108 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.2.2.21 Math.log10(x)
+ var $export = __webpack_require__(7);
+
+ $export($export.S, 'Math', {
+ log10: function log10(x){
+ return Math.log(x) / Math.LN10;
+ }
+ });
+
+/***/ },
+/* 109 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.2.2.20 Math.log1p(x)
+ var $export = __webpack_require__(7);
+
+ $export($export.S, 'Math', {log1p: __webpack_require__(96)});
+
+/***/ },
+/* 110 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.2.2.22 Math.log2(x)
+ var $export = __webpack_require__(7);
+
+ $export($export.S, 'Math', {
+ log2: function log2(x){
+ return Math.log(x) / Math.LN2;
+ }
+ });
+
+/***/ },
+/* 111 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.2.2.28 Math.sign(x)
+ var $export = __webpack_require__(7);
+
+ $export($export.S, 'Math', {sign: __webpack_require__(100)});
+
+/***/ },
+/* 112 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.2.2.30 Math.sinh(x)
+ var $export = __webpack_require__(7)
+ , expm1 = __webpack_require__(104)
+ , exp = Math.exp;
+
+ // V8 near Chromium 38 has a problem with very small numbers
+ $export($export.S + $export.F * __webpack_require__(6)(function(){
+ return !Math.sinh(-2e-17) != -2e-17;
+ }), 'Math', {
+ sinh: function sinh(x){
+ return Math.abs(x = +x) < 1
+ ? (expm1(x) - expm1(-x)) / 2
+ : (exp(x - 1) - exp(-x - 1)) * (Math.E / 2);
+ }
+ });
+
+/***/ },
+/* 113 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.2.2.33 Math.tanh(x)
+ var $export = __webpack_require__(7)
+ , expm1 = __webpack_require__(104)
+ , exp = Math.exp;
+
+ $export($export.S, 'Math', {
+ tanh: function tanh(x){
+ var a = expm1(x = +x)
+ , b = expm1(-x);
+ return a == Infinity ? 1 : b == Infinity ? -1 : (a - b) / (exp(x) + exp(-x));
+ }
+ });
+
+/***/ },
+/* 114 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.2.2.34 Math.trunc(x)
+ var $export = __webpack_require__(7);
+
+ $export($export.S, 'Math', {
+ trunc: function trunc(it){
+ return (it > 0 ? Math.floor : Math.ceil)(it);
+ }
+ });
+
+/***/ },
+/* 115 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var $export = __webpack_require__(7)
+ , toIndex = __webpack_require__(34)
+ , fromCharCode = String.fromCharCode
+ , $fromCodePoint = String.fromCodePoint;
+
+ // length should be 1, old FF problem
+ $export($export.S + $export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', {
+ // 21.1.2.2 String.fromCodePoint(...codePoints)
+ fromCodePoint: function fromCodePoint(x){ // eslint-disable-line no-unused-vars
+ var res = []
+ , aLen = arguments.length
+ , i = 0
+ , code;
+ while(aLen > i){
+ code = +arguments[i++];
+ if(toIndex(code, 0x10ffff) !== code)throw RangeError(code + ' is not a valid code point');
+ res.push(code < 0x10000
+ ? fromCharCode(code)
+ : fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00)
+ );
+ } return res.join('');
+ }
+ });
+
+/***/ },
+/* 116 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var $export = __webpack_require__(7)
+ , toIObject = __webpack_require__(27)
+ , toLength = __webpack_require__(32);
+
+ $export($export.S, 'String', {
+ // 21.1.2.4 String.raw(callSite, ...substitutions)
+ raw: function raw(callSite){
+ var tpl = toIObject(callSite.raw)
+ , len = toLength(tpl.length)
+ , aLen = arguments.length
+ , res = []
+ , i = 0;
+ while(len > i){
+ res.push(String(tpl[i++]));
+ if(i < aLen)res.push(String(arguments[i]));
+ } return res.join('');
+ }
+ });
+
+/***/ },
+/* 117 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // 21.1.3.25 String.prototype.trim()
+ __webpack_require__(89)('trim', function($trim){
+ return function trim(){
+ return $trim(this, 3);
+ };
+ });
+
+/***/ },
+/* 118 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var $export = __webpack_require__(7)
+ , $at = __webpack_require__(119)(false);
+ $export($export.P, 'String', {
+ // 21.1.3.3 String.prototype.codePointAt(pos)
+ codePointAt: function codePointAt(pos){
+ return $at(this, pos);
+ }
+ });
+
+/***/ },
+/* 119 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var toInteger = __webpack_require__(33)
+ , defined = __webpack_require__(30);
+ // true -> String#at
+ // false -> String#codePointAt
+ module.exports = function(TO_STRING){
+ return function(that, pos){
+ var s = String(defined(that))
+ , i = toInteger(pos)
+ , l = s.length
+ , a, b;
+ if(i < 0 || i >= l)return TO_STRING ? '' : undefined;
+ a = s.charCodeAt(i);
+ return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff
+ ? TO_STRING ? s.charAt(i) : a
+ : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;
+ };
+ };
+
+/***/ },
+/* 120 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 21.1.3.6 String.prototype.endsWith(searchString [, endPosition])
+ 'use strict';
+ var $export = __webpack_require__(7)
+ , toLength = __webpack_require__(32)
+ , context = __webpack_require__(121)
+ , ENDS_WITH = 'endsWith'
+ , $endsWith = ''[ENDS_WITH];
+
+ $export($export.P + $export.F * __webpack_require__(123)(ENDS_WITH), 'String', {
+ endsWith: function endsWith(searchString /*, endPosition = @length */){
+ var that = context(this, searchString, ENDS_WITH)
+ , endPosition = arguments.length > 1 ? arguments[1] : undefined
+ , len = toLength(that.length)
+ , end = endPosition === undefined ? len : Math.min(toLength(endPosition), len)
+ , search = String(searchString);
+ return $endsWith
+ ? $endsWith.call(that, search, end)
+ : that.slice(end - search.length, end) === search;
+ }
+ });
+
+/***/ },
+/* 121 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // helper for String#{startsWith, endsWith, includes}
+ var isRegExp = __webpack_require__(122)
+ , defined = __webpack_require__(30);
+
+ module.exports = function(that, searchString, NAME){
+ if(isRegExp(searchString))throw TypeError('String#' + NAME + " doesn't accept regex!");
+ return String(defined(that));
+ };
+
+/***/ },
+/* 122 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 7.2.8 IsRegExp(argument)
+ var isObject = __webpack_require__(13)
+ , cof = __webpack_require__(29)
+ , MATCH = __webpack_require__(23)('match');
+ module.exports = function(it){
+ var isRegExp;
+ return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');
+ };
+
+/***/ },
+/* 123 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var MATCH = __webpack_require__(23)('match');
+ module.exports = function(KEY){
+ var re = /./;
+ try {
+ '/./'[KEY](re);
+ } catch(e){
+ try {
+ re[MATCH] = false;
+ return !'/./'[KEY](re);
+ } catch(f){ /* empty */ }
+ } return true;
+ };
+
+/***/ },
+/* 124 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 21.1.3.7 String.prototype.includes(searchString, position = 0)
+ 'use strict';
+ var $export = __webpack_require__(7)
+ , context = __webpack_require__(121)
+ , INCLUDES = 'includes';
+
+ $export($export.P + $export.F * __webpack_require__(123)(INCLUDES), 'String', {
+ includes: function includes(searchString /*, position = 0 */){
+ return !!~context(this, searchString, INCLUDES)
+ .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);
+ }
+ });
+
+/***/ },
+/* 125 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var $export = __webpack_require__(7);
+
+ $export($export.P, 'String', {
+ // 21.1.3.13 String.prototype.repeat(count)
+ repeat: __webpack_require__(77)
+ });
+
+/***/ },
+/* 126 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 21.1.3.18 String.prototype.startsWith(searchString [, position ])
+ 'use strict';
+ var $export = __webpack_require__(7)
+ , toLength = __webpack_require__(32)
+ , context = __webpack_require__(121)
+ , STARTS_WITH = 'startsWith'
+ , $startsWith = ''[STARTS_WITH];
+
+ $export($export.P + $export.F * __webpack_require__(123)(STARTS_WITH), 'String', {
+ startsWith: function startsWith(searchString /*, position = 0 */){
+ var that = context(this, searchString, STARTS_WITH)
+ , index = toLength(Math.min(arguments.length > 1 ? arguments[1] : undefined, that.length))
+ , search = String(searchString);
+ return $startsWith
+ ? $startsWith.call(that, search, index)
+ : that.slice(index, index + search.length) === search;
+ }
+ });
+
+/***/ },
+/* 127 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var $at = __webpack_require__(119)(true);
+
+ // 21.1.3.27 String.prototype[@@iterator]()
+ __webpack_require__(128)(String, 'String', function(iterated){
+ this._t = String(iterated); // target
+ this._i = 0; // next index
+ // 21.1.5.2.1 %StringIteratorPrototype%.next()
+ }, function(){
+ var O = this._t
+ , index = this._i
+ , point;
+ if(index >= O.length)return {value: undefined, done: true};
+ point = $at(O, index);
+ this._i += point.length;
+ return {value: point, done: false};
+ });
+
+/***/ },
+/* 128 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var LIBRARY = __webpack_require__(47)
+ , $export = __webpack_require__(7)
+ , redefine = __webpack_require__(18)
+ , hide = __webpack_require__(10)
+ , has = __webpack_require__(4)
+ , Iterators = __webpack_require__(129)
+ , $iterCreate = __webpack_require__(130)
+ , setToStringTag = __webpack_require__(22)
+ , getPrototypeOf = __webpack_require__(55)
+ , ITERATOR = __webpack_require__(23)('iterator')
+ , BUGGY = !([].keys && 'next' in [].keys()) // Safari has buggy iterators w/o `next`
+ , FF_ITERATOR = '@@iterator'
+ , KEYS = 'keys'
+ , VALUES = 'values';
+
+ var returnThis = function(){ return this; };
+
+ module.exports = function(Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED){
+ $iterCreate(Constructor, NAME, next);
+ var getMethod = function(kind){
+ if(!BUGGY && kind in proto)return proto[kind];
+ switch(kind){
+ case KEYS: return function keys(){ return new Constructor(this, kind); };
+ case VALUES: return function values(){ return new Constructor(this, kind); };
+ } return function entries(){ return new Constructor(this, kind); };
+ };
+ var TAG = NAME + ' Iterator'
+ , DEF_VALUES = DEFAULT == VALUES
+ , VALUES_BUG = false
+ , proto = Base.prototype
+ , $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT]
+ , $default = $native || getMethod(DEFAULT)
+ , $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined
+ , $anyNative = NAME == 'Array' ? proto.entries || $native : $native
+ , methods, key, IteratorPrototype;
+ // Fix native
+ if($anyNative){
+ IteratorPrototype = getPrototypeOf($anyNative.call(new Base));
+ if(IteratorPrototype !== Object.prototype){
+ // Set @@toStringTag to native iterators
+ setToStringTag(IteratorPrototype, TAG, true);
+ // fix for some old engines
+ if(!LIBRARY && !has(IteratorPrototype, ITERATOR))hide(IteratorPrototype, ITERATOR, returnThis);
+ }
+ }
+ // fix Array#{values, @@iterator}.name in V8 / FF
+ if(DEF_VALUES && $native && $native.name !== VALUES){
+ VALUES_BUG = true;
+ $default = function values(){ return $native.call(this); };
+ }
+ // Define iterator
+ if((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])){
+ hide(proto, ITERATOR, $default);
+ }
+ // Plug for library
+ Iterators[NAME] = $default;
+ Iterators[TAG] = returnThis;
+ if(DEFAULT){
+ methods = {
+ values: DEF_VALUES ? $default : getMethod(VALUES),
+ keys: IS_SET ? $default : getMethod(KEYS),
+ entries: $entries
+ };
+ if(FORCED)for(key in methods){
+ if(!(key in proto))redefine(proto, key, methods[key]);
+ } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);
+ }
+ return methods;
+ };
+
+/***/ },
+/* 129 */
+/***/ function(module, exports) {
+
+ module.exports = {};
+
+/***/ },
+/* 130 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var create = __webpack_require__(41)
+ , descriptor = __webpack_require__(17)
+ , setToStringTag = __webpack_require__(22)
+ , IteratorPrototype = {};
+
+ // 25.1.2.1.1 %IteratorPrototype%[@@iterator]()
+ __webpack_require__(10)(IteratorPrototype, __webpack_require__(23)('iterator'), function(){ return this; });
+
+ module.exports = function(Constructor, NAME, next){
+ Constructor.prototype = create(IteratorPrototype, {next: descriptor(1, next)});
+ setToStringTag(Constructor, NAME + ' Iterator');
+ };
+
+/***/ },
+/* 131 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // B.2.3.2 String.prototype.anchor(name)
+ __webpack_require__(132)('anchor', function(createHTML){
+ return function anchor(name){
+ return createHTML(this, 'a', 'name', name);
+ }
+ });
+
+/***/ },
+/* 132 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var $export = __webpack_require__(7)
+ , fails = __webpack_require__(6)
+ , defined = __webpack_require__(30)
+ , quot = /"/g;
+ // B.2.3.2.1 CreateHTML(string, tag, attribute, value)
+ var createHTML = function(string, tag, attribute, value) {
+ var S = String(defined(string))
+ , p1 = '<' + tag;
+ if(attribute !== '')p1 += ' ' + attribute + '="' + String(value).replace(quot, '"') + '"';
+ return p1 + '>' + S + '' + tag + '>';
+ };
+ module.exports = function(NAME, exec){
+ var O = {};
+ O[NAME] = exec(createHTML);
+ $export($export.P + $export.F * fails(function(){
+ var test = ''[NAME]('"');
+ return test !== test.toLowerCase() || test.split('"').length > 3;
+ }), 'String', O);
+ };
+
+/***/ },
+/* 133 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // B.2.3.3 String.prototype.big()
+ __webpack_require__(132)('big', function(createHTML){
+ return function big(){
+ return createHTML(this, 'big', '', '');
+ }
+ });
+
+/***/ },
+/* 134 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // B.2.3.4 String.prototype.blink()
+ __webpack_require__(132)('blink', function(createHTML){
+ return function blink(){
+ return createHTML(this, 'blink', '', '');
+ }
+ });
+
+/***/ },
+/* 135 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // B.2.3.5 String.prototype.bold()
+ __webpack_require__(132)('bold', function(createHTML){
+ return function bold(){
+ return createHTML(this, 'b', '', '');
+ }
+ });
+
+/***/ },
+/* 136 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // B.2.3.6 String.prototype.fixed()
+ __webpack_require__(132)('fixed', function(createHTML){
+ return function fixed(){
+ return createHTML(this, 'tt', '', '');
+ }
+ });
+
+/***/ },
+/* 137 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // B.2.3.7 String.prototype.fontcolor(color)
+ __webpack_require__(132)('fontcolor', function(createHTML){
+ return function fontcolor(color){
+ return createHTML(this, 'font', 'color', color);
+ }
+ });
+
+/***/ },
+/* 138 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // B.2.3.8 String.prototype.fontsize(size)
+ __webpack_require__(132)('fontsize', function(createHTML){
+ return function fontsize(size){
+ return createHTML(this, 'font', 'size', size);
+ }
+ });
+
+/***/ },
+/* 139 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // B.2.3.9 String.prototype.italics()
+ __webpack_require__(132)('italics', function(createHTML){
+ return function italics(){
+ return createHTML(this, 'i', '', '');
+ }
+ });
+
+/***/ },
+/* 140 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // B.2.3.10 String.prototype.link(url)
+ __webpack_require__(132)('link', function(createHTML){
+ return function link(url){
+ return createHTML(this, 'a', 'href', url);
+ }
+ });
+
+/***/ },
+/* 141 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // B.2.3.11 String.prototype.small()
+ __webpack_require__(132)('small', function(createHTML){
+ return function small(){
+ return createHTML(this, 'small', '', '');
+ }
+ });
+
+/***/ },
+/* 142 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // B.2.3.12 String.prototype.strike()
+ __webpack_require__(132)('strike', function(createHTML){
+ return function strike(){
+ return createHTML(this, 'strike', '', '');
+ }
+ });
+
+/***/ },
+/* 143 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // B.2.3.13 String.prototype.sub()
+ __webpack_require__(132)('sub', function(createHTML){
+ return function sub(){
+ return createHTML(this, 'sub', '', '');
+ }
+ });
+
+/***/ },
+/* 144 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // B.2.3.14 String.prototype.sup()
+ __webpack_require__(132)('sup', function(createHTML){
+ return function sup(){
+ return createHTML(this, 'sup', '', '');
+ }
+ });
+
+/***/ },
+/* 145 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 22.1.2.2 / 15.4.3.2 Array.isArray(arg)
+ var $export = __webpack_require__(7);
+
+ $export($export.S, 'Array', {isArray: __webpack_require__(40)});
+
+/***/ },
+/* 146 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var ctx = __webpack_require__(8)
+ , $export = __webpack_require__(7)
+ , toObject = __webpack_require__(54)
+ , call = __webpack_require__(147)
+ , isArrayIter = __webpack_require__(148)
+ , toLength = __webpack_require__(32)
+ , getIterFn = __webpack_require__(149);
+ $export($export.S + $export.F * !__webpack_require__(151)(function(iter){ Array.from(iter); }), 'Array', {
+ // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)
+ from: function from(arrayLike/*, mapfn = undefined, thisArg = undefined*/){
+ var O = toObject(arrayLike)
+ , C = typeof this == 'function' ? this : Array
+ , aLen = arguments.length
+ , mapfn = aLen > 1 ? arguments[1] : undefined
+ , mapping = mapfn !== undefined
+ , index = 0
+ , iterFn = getIterFn(O)
+ , length, result, step, iterator;
+ if(mapping)mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);
+ // if object isn't iterable or it's array with default iterator - use simple case
+ if(iterFn != undefined && !(C == Array && isArrayIter(iterFn))){
+ for(iterator = iterFn.call(O), result = new C; !(step = iterator.next()).done; index++){
+ result[index] = mapping ? call(iterator, mapfn, [step.value, index], true) : step.value;
+ }
+ } else {
+ length = toLength(O.length);
+ for(result = new C(length); length > index; index++){
+ result[index] = mapping ? mapfn(O[index], index) : O[index];
+ }
+ }
+ result.length = index;
+ return result;
+ }
+ });
+
+
+/***/ },
+/* 147 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // call something on iterator step with safe closing on error
+ var anObject = __webpack_require__(12);
+ module.exports = function(iterator, fn, value, entries){
+ try {
+ return entries ? fn(anObject(value)[0], value[1]) : fn(value);
+ // 7.4.6 IteratorClose(iterator, completion)
+ } catch(e){
+ var ret = iterator['return'];
+ if(ret !== undefined)anObject(ret.call(iterator));
+ throw e;
+ }
+ };
+
+/***/ },
+/* 148 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // check on default Array iterator
+ var Iterators = __webpack_require__(129)
+ , ITERATOR = __webpack_require__(23)('iterator')
+ , ArrayProto = Array.prototype;
+
+ module.exports = function(it){
+ return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);
+ };
+
+/***/ },
+/* 149 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var classof = __webpack_require__(150)
+ , ITERATOR = __webpack_require__(23)('iterator')
+ , Iterators = __webpack_require__(129);
+ module.exports = __webpack_require__(3).getIteratorMethod = function(it){
+ if(it != undefined)return it[ITERATOR]
+ || it['@@iterator']
+ || Iterators[classof(it)];
+ };
+
+/***/ },
+/* 150 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // getting tag from 19.1.3.6 Object.prototype.toString()
+ var cof = __webpack_require__(29)
+ , TAG = __webpack_require__(23)('toStringTag')
+ // ES3 wrong here
+ , ARG = cof(function(){ return arguments; }()) == 'Arguments';
+
+ // fallback for IE11 Script Access Denied error
+ var tryGet = function(it, key){
+ try {
+ return it[key];
+ } catch(e){ /* empty */ }
+ };
+
+ module.exports = function(it){
+ var O, T, B;
+ return it === undefined ? 'Undefined' : it === null ? 'Null'
+ // @@toStringTag case
+ : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T
+ // builtinTag case
+ : ARG ? cof(O)
+ // ES3 arguments fallback
+ : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;
+ };
+
+/***/ },
+/* 151 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var ITERATOR = __webpack_require__(23)('iterator')
+ , SAFE_CLOSING = false;
+
+ try {
+ var riter = [7][ITERATOR]();
+ riter['return'] = function(){ SAFE_CLOSING = true; };
+ Array.from(riter, function(){ throw 2; });
+ } catch(e){ /* empty */ }
+
+ module.exports = function(exec, skipClosing){
+ if(!skipClosing && !SAFE_CLOSING)return false;
+ var safe = false;
+ try {
+ var arr = [7]
+ , iter = arr[ITERATOR]();
+ iter.next = function(){ safe = true; };
+ arr[ITERATOR] = function(){ return iter; };
+ exec(arr);
+ } catch(e){ /* empty */ }
+ return safe;
+ };
+
+/***/ },
+/* 152 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var $export = __webpack_require__(7);
+
+ // WebKit Array.of isn't generic
+ $export($export.S + $export.F * __webpack_require__(6)(function(){
+ function F(){}
+ return !(Array.of.call(F) instanceof F);
+ }), 'Array', {
+ // 22.1.2.3 Array.of( ...items)
+ of: function of(/* ...args */){
+ var index = 0
+ , aLen = arguments.length
+ , result = new (typeof this == 'function' ? this : Array)(aLen);
+ while(aLen > index)result[index] = arguments[index++];
+ result.length = aLen;
+ return result;
+ }
+ });
+
+/***/ },
+/* 153 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // 22.1.3.13 Array.prototype.join(separator)
+ var $export = __webpack_require__(7)
+ , toIObject = __webpack_require__(27)
+ , arrayJoin = [].join;
+
+ // fallback for not array-like strings
+ $export($export.P + $export.F * (__webpack_require__(28) != Object || !__webpack_require__(154)(arrayJoin)), 'Array', {
+ join: function join(separator){
+ return arrayJoin.call(toIObject(this), separator === undefined ? ',' : separator);
+ }
+ });
+
+/***/ },
+/* 154 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var fails = __webpack_require__(6);
+
+ module.exports = function(method, arg){
+ return !!method && fails(function(){
+ arg ? method.call(null, function(){}, 1) : method.call(null);
+ });
+ };
+
+/***/ },
+/* 155 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var $export = __webpack_require__(7)
+ , html = __webpack_require__(43)
+ , cof = __webpack_require__(29)
+ , toIndex = __webpack_require__(34)
+ , toLength = __webpack_require__(32)
+ , arraySlice = [].slice;
+
+ // fallback for not array-like ES3 strings and DOM objects
+ $export($export.P + $export.F * __webpack_require__(6)(function(){
+ if(html)arraySlice.call(html);
+ }), 'Array', {
+ slice: function slice(begin, end){
+ var len = toLength(this.length)
+ , klass = cof(this);
+ end = end === undefined ? len : end;
+ if(klass == 'Array')return arraySlice.call(this, begin, end);
+ var start = toIndex(begin, len)
+ , upTo = toIndex(end, len)
+ , size = toLength(upTo - start)
+ , cloned = Array(size)
+ , i = 0;
+ for(; i < size; i++)cloned[i] = klass == 'String'
+ ? this.charAt(start + i)
+ : this[start + i];
+ return cloned;
+ }
+ });
+
+/***/ },
+/* 156 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var $export = __webpack_require__(7)
+ , aFunction = __webpack_require__(9)
+ , toObject = __webpack_require__(54)
+ , fails = __webpack_require__(6)
+ , $sort = [].sort
+ , test = [1, 2, 3];
+
+ $export($export.P + $export.F * (fails(function(){
+ // IE8-
+ test.sort(undefined);
+ }) || !fails(function(){
+ // V8 bug
+ test.sort(null);
+ // Old WebKit
+ }) || !__webpack_require__(154)($sort)), 'Array', {
+ // 22.1.3.25 Array.prototype.sort(comparefn)
+ sort: function sort(comparefn){
+ return comparefn === undefined
+ ? $sort.call(toObject(this))
+ : $sort.call(toObject(this), aFunction(comparefn));
+ }
+ });
+
+/***/ },
+/* 157 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var $export = __webpack_require__(7)
+ , $forEach = __webpack_require__(158)(0)
+ , STRICT = __webpack_require__(154)([].forEach, true);
+
+ $export($export.P + $export.F * !STRICT, 'Array', {
+ // 22.1.3.10 / 15.4.4.18 Array.prototype.forEach(callbackfn [, thisArg])
+ forEach: function forEach(callbackfn /* , thisArg */){
+ return $forEach(this, callbackfn, arguments[1]);
+ }
+ });
+
+/***/ },
+/* 158 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 0 -> Array#forEach
+ // 1 -> Array#map
+ // 2 -> Array#filter
+ // 3 -> Array#some
+ // 4 -> Array#every
+ // 5 -> Array#find
+ // 6 -> Array#findIndex
+ var ctx = __webpack_require__(8)
+ , IObject = __webpack_require__(28)
+ , toObject = __webpack_require__(54)
+ , toLength = __webpack_require__(32)
+ , asc = __webpack_require__(159);
+ module.exports = function(TYPE, $create){
+ var IS_MAP = TYPE == 1
+ , IS_FILTER = TYPE == 2
+ , IS_SOME = TYPE == 3
+ , IS_EVERY = TYPE == 4
+ , IS_FIND_INDEX = TYPE == 6
+ , NO_HOLES = TYPE == 5 || IS_FIND_INDEX
+ , create = $create || asc;
+ return function($this, callbackfn, that){
+ var O = toObject($this)
+ , self = IObject(O)
+ , f = ctx(callbackfn, that, 3)
+ , length = toLength(self.length)
+ , index = 0
+ , result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined
+ , val, res;
+ for(;length > index; index++)if(NO_HOLES || index in self){
+ val = self[index];
+ res = f(val, index, O);
+ if(TYPE){
+ if(IS_MAP)result[index] = res; // map
+ else if(res)switch(TYPE){
+ case 3: return true; // some
+ case 5: return val; // find
+ case 6: return index; // findIndex
+ case 2: result.push(val); // filter
+ } else if(IS_EVERY)return false; // every
+ }
+ }
+ return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;
+ };
+ };
+
+/***/ },
+/* 159 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 9.4.2.3 ArraySpeciesCreate(originalArray, length)
+ var isObject = __webpack_require__(13)
+ , isArray = __webpack_require__(40)
+ , SPECIES = __webpack_require__(23)('species');
+ module.exports = function(original, length){
+ var C;
+ if(isArray(original)){
+ C = original.constructor;
+ // cross-realm fallback
+ if(typeof C == 'function' && (C === Array || isArray(C.prototype)))C = undefined;
+ if(isObject(C)){
+ C = C[SPECIES];
+ if(C === null)C = undefined;
+ }
+ } return new (C === undefined ? Array : C)(length);
+ };
+
+/***/ },
+/* 160 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var $export = __webpack_require__(7)
+ , $map = __webpack_require__(158)(1);
+
+ $export($export.P + $export.F * !__webpack_require__(154)([].map, true), 'Array', {
+ // 22.1.3.15 / 15.4.4.19 Array.prototype.map(callbackfn [, thisArg])
+ map: function map(callbackfn /* , thisArg */){
+ return $map(this, callbackfn, arguments[1]);
+ }
+ });
+
+/***/ },
+/* 161 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var $export = __webpack_require__(7)
+ , $filter = __webpack_require__(158)(2);
+
+ $export($export.P + $export.F * !__webpack_require__(154)([].filter, true), 'Array', {
+ // 22.1.3.7 / 15.4.4.20 Array.prototype.filter(callbackfn [, thisArg])
+ filter: function filter(callbackfn /* , thisArg */){
+ return $filter(this, callbackfn, arguments[1]);
+ }
+ });
+
+/***/ },
+/* 162 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var $export = __webpack_require__(7)
+ , $some = __webpack_require__(158)(3);
+
+ $export($export.P + $export.F * !__webpack_require__(154)([].some, true), 'Array', {
+ // 22.1.3.23 / 15.4.4.17 Array.prototype.some(callbackfn [, thisArg])
+ some: function some(callbackfn /* , thisArg */){
+ return $some(this, callbackfn, arguments[1]);
+ }
+ });
+
+/***/ },
+/* 163 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var $export = __webpack_require__(7)
+ , $every = __webpack_require__(158)(4);
+
+ $export($export.P + $export.F * !__webpack_require__(154)([].every, true), 'Array', {
+ // 22.1.3.5 / 15.4.4.16 Array.prototype.every(callbackfn [, thisArg])
+ every: function every(callbackfn /* , thisArg */){
+ return $every(this, callbackfn, arguments[1]);
+ }
+ });
+
+/***/ },
+/* 164 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var $export = __webpack_require__(7)
+ , $reduce = __webpack_require__(165);
+
+ $export($export.P + $export.F * !__webpack_require__(154)([].reduce, true), 'Array', {
+ // 22.1.3.18 / 15.4.4.21 Array.prototype.reduce(callbackfn [, initialValue])
+ reduce: function reduce(callbackfn /* , initialValue */){
+ return $reduce(this, callbackfn, arguments.length, arguments[1], false);
+ }
+ });
+
+/***/ },
+/* 165 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var aFunction = __webpack_require__(9)
+ , toObject = __webpack_require__(54)
+ , IObject = __webpack_require__(28)
+ , toLength = __webpack_require__(32);
+
+ module.exports = function(that, callbackfn, aLen, memo, isRight){
+ aFunction(callbackfn);
+ var O = toObject(that)
+ , self = IObject(O)
+ , length = toLength(O.length)
+ , index = isRight ? length - 1 : 0
+ , i = isRight ? -1 : 1;
+ if(aLen < 2)for(;;){
+ if(index in self){
+ memo = self[index];
+ index += i;
+ break;
+ }
+ index += i;
+ if(isRight ? index < 0 : length <= index){
+ throw TypeError('Reduce of empty array with no initial value');
+ }
+ }
+ for(;isRight ? index >= 0 : length > index; index += i)if(index in self){
+ memo = callbackfn(memo, self[index], index, O);
+ }
+ return memo;
+ };
+
+/***/ },
+/* 166 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var $export = __webpack_require__(7)
+ , $reduce = __webpack_require__(165);
+
+ $export($export.P + $export.F * !__webpack_require__(154)([].reduceRight, true), 'Array', {
+ // 22.1.3.19 / 15.4.4.22 Array.prototype.reduceRight(callbackfn [, initialValue])
+ reduceRight: function reduceRight(callbackfn /* , initialValue */){
+ return $reduce(this, callbackfn, arguments.length, arguments[1], true);
+ }
+ });
+
+/***/ },
+/* 167 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var $export = __webpack_require__(7)
+ , $indexOf = __webpack_require__(31)(false);
+
+ $export($export.P + $export.F * !__webpack_require__(154)([].indexOf), 'Array', {
+ // 22.1.3.11 / 15.4.4.14 Array.prototype.indexOf(searchElement [, fromIndex])
+ indexOf: function indexOf(searchElement /*, fromIndex = 0 */){
+ return $indexOf(this, searchElement, arguments[1]);
+ }
+ });
+
+/***/ },
+/* 168 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var $export = __webpack_require__(7)
+ , toIObject = __webpack_require__(27)
+ , toInteger = __webpack_require__(33)
+ , toLength = __webpack_require__(32);
+
+ $export($export.P + $export.F * !__webpack_require__(154)([].lastIndexOf), 'Array', {
+ // 22.1.3.14 / 15.4.4.15 Array.prototype.lastIndexOf(searchElement [, fromIndex])
+ lastIndexOf: function lastIndexOf(searchElement /*, fromIndex = @[*-1] */){
+ var O = toIObject(this)
+ , length = toLength(O.length)
+ , index = length - 1;
+ if(arguments.length > 1)index = Math.min(index, toInteger(arguments[1]));
+ if(index < 0)index = length + index;
+ for(;index >= 0; index--)if(index in O)if(O[index] === searchElement)return index;
+ return -1;
+ }
+ });
+
+/***/ },
+/* 169 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)
+ var $export = __webpack_require__(7);
+
+ $export($export.P, 'Array', {copyWithin: __webpack_require__(170)});
+
+ __webpack_require__(171)('copyWithin');
+
+/***/ },
+/* 170 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)
+ 'use strict';
+ var toObject = __webpack_require__(54)
+ , toIndex = __webpack_require__(34)
+ , toLength = __webpack_require__(32);
+
+ module.exports = [].copyWithin || function copyWithin(target/*= 0*/, start/*= 0, end = @length*/){
+ var O = toObject(this)
+ , len = toLength(O.length)
+ , to = toIndex(target, len)
+ , from = toIndex(start, len)
+ , end = arguments.length > 2 ? arguments[2] : undefined
+ , count = Math.min((end === undefined ? len : toIndex(end, len)) - from, len - to)
+ , inc = 1;
+ if(from < to && to < from + count){
+ inc = -1;
+ from += count - 1;
+ to += count - 1;
+ }
+ while(count-- > 0){
+ if(from in O)O[to] = O[from];
+ else delete O[to];
+ to += inc;
+ from += inc;
+ } return O;
+ };
+
+/***/ },
+/* 171 */
+/***/ function(module, exports) {
+
+ module.exports = function(){ /* empty */ };
+
+/***/ },
+/* 172 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)
+ var $export = __webpack_require__(7);
+
+ $export($export.P, 'Array', {fill: __webpack_require__(173)});
+
+ __webpack_require__(171)('fill');
+
+/***/ },
+/* 173 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)
+ 'use strict';
+ var toObject = __webpack_require__(54)
+ , toIndex = __webpack_require__(34)
+ , toLength = __webpack_require__(32);
+ module.exports = function fill(value /*, start = 0, end = @length */){
+ var O = toObject(this)
+ , length = toLength(O.length)
+ , aLen = arguments.length
+ , index = toIndex(aLen > 1 ? arguments[1] : undefined, length)
+ , end = aLen > 2 ? arguments[2] : undefined
+ , endPos = end === undefined ? length : toIndex(end, length);
+ while(endPos > index)O[index++] = value;
+ return O;
+ };
+
+/***/ },
+/* 174 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined)
+ var $export = __webpack_require__(7)
+ , $find = __webpack_require__(158)(5)
+ , KEY = 'find'
+ , forced = true;
+ // Shouldn't skip holes
+ if(KEY in [])Array(1)[KEY](function(){ forced = false; });
+ $export($export.P + $export.F * forced, 'Array', {
+ find: function find(callbackfn/*, that = undefined */){
+ return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+ }
+ });
+ __webpack_require__(171)(KEY);
+
+/***/ },
+/* 175 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // 22.1.3.9 Array.prototype.findIndex(predicate, thisArg = undefined)
+ var $export = __webpack_require__(7)
+ , $find = __webpack_require__(158)(6)
+ , KEY = 'findIndex'
+ , forced = true;
+ // Shouldn't skip holes
+ if(KEY in [])Array(1)[KEY](function(){ forced = false; });
+ $export($export.P + $export.F * forced, 'Array', {
+ findIndex: function findIndex(callbackfn/*, that = undefined */){
+ return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+ }
+ });
+ __webpack_require__(171)(KEY);
+
+/***/ },
+/* 176 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var addToUnscopables = __webpack_require__(171)
+ , step = __webpack_require__(177)
+ , Iterators = __webpack_require__(129)
+ , toIObject = __webpack_require__(27);
+
+ // 22.1.3.4 Array.prototype.entries()
+ // 22.1.3.13 Array.prototype.keys()
+ // 22.1.3.29 Array.prototype.values()
+ // 22.1.3.30 Array.prototype[@@iterator]()
+ module.exports = __webpack_require__(128)(Array, 'Array', function(iterated, kind){
+ this._t = toIObject(iterated); // target
+ this._i = 0; // next index
+ this._k = kind; // kind
+ // 22.1.5.2.1 %ArrayIteratorPrototype%.next()
+ }, function(){
+ var O = this._t
+ , kind = this._k
+ , index = this._i++;
+ if(!O || index >= O.length){
+ this._t = undefined;
+ return step(1);
+ }
+ if(kind == 'keys' )return step(0, index);
+ if(kind == 'values')return step(0, O[index]);
+ return step(0, [index, O[index]]);
+ }, 'values');
+
+ // argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)
+ Iterators.Arguments = Iterators.Array;
+
+ addToUnscopables('keys');
+ addToUnscopables('values');
+ addToUnscopables('entries');
+
+/***/ },
+/* 177 */
+/***/ function(module, exports) {
+
+ module.exports = function(done, value){
+ return {value: value, done: !!done};
+ };
+
+/***/ },
+/* 178 */
+/***/ function(module, exports, __webpack_require__) {
+
+ __webpack_require__(179)('Array');
+
+/***/ },
+/* 179 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var global = __webpack_require__(2)
+ , core = __webpack_require__(3)
+ , dP = __webpack_require__(11)
+ , DESCRIPTORS = __webpack_require__(5)
+ , SPECIES = __webpack_require__(23)('species');
+
+ module.exports = function(KEY){
+ var C = typeof core[KEY] == 'function' ? core[KEY] : global[KEY];
+ if(DESCRIPTORS && C && !C[SPECIES])dP.f(C, SPECIES, {
+ configurable: true,
+ get: function(){ return this; }
+ });
+ };
+
+/***/ },
+/* 180 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var LIBRARY = __webpack_require__(47)
+ , global = __webpack_require__(2)
+ , ctx = __webpack_require__(8)
+ , classof = __webpack_require__(150)
+ , $export = __webpack_require__(7)
+ , isObject = __webpack_require__(13)
+ , anObject = __webpack_require__(12)
+ , aFunction = __webpack_require__(9)
+ , anInstance = __webpack_require__(75)
+ , forOf = __webpack_require__(181)
+ , setProto = __webpack_require__(69).set
+ , speciesConstructor = __webpack_require__(182)
+ , task = __webpack_require__(183).set
+ , microtask = __webpack_require__(184)
+ , PROMISE = 'Promise'
+ , TypeError = global.TypeError
+ , process = global.process
+ , $Promise = global[PROMISE]
+ , process = global.process
+ , isNode = classof(process) == 'process'
+ , empty = function(){ /* empty */ }
+ , Internal, GenericPromiseCapability, Wrapper;
+
+ var USE_NATIVE = !!function(){
+ try {
+ // correct subclassing with @@species support
+ var promise = $Promise.resolve(1)
+ , FakePromise = (promise.constructor = {})[__webpack_require__(23)('species')] = function(exec){ exec(empty, empty); };
+ // unhandled rejections tracking support, NodeJS Promise without it fails @@species test
+ return (isNode || typeof PromiseRejectionEvent == 'function') && promise.then(empty) instanceof FakePromise;
+ } catch(e){ /* empty */ }
+ }();
+
+ // helpers
+ var sameConstructor = function(a, b){
+ // with library wrapper special case
+ return a === b || a === $Promise && b === Wrapper;
+ };
+ var isThenable = function(it){
+ var then;
+ return isObject(it) && typeof (then = it.then) == 'function' ? then : false;
+ };
+ var newPromiseCapability = function(C){
+ return sameConstructor($Promise, C)
+ ? new PromiseCapability(C)
+ : new GenericPromiseCapability(C);
+ };
+ var PromiseCapability = GenericPromiseCapability = function(C){
+ var resolve, reject;
+ this.promise = new C(function($$resolve, $$reject){
+ if(resolve !== undefined || reject !== undefined)throw TypeError('Bad Promise constructor');
+ resolve = $$resolve;
+ reject = $$reject;
+ });
+ this.resolve = aFunction(resolve);
+ this.reject = aFunction(reject);
+ };
+ var perform = function(exec){
+ try {
+ exec();
+ } catch(e){
+ return {error: e};
+ }
+ };
+ var notify = function(promise, isReject){
+ if(promise._n)return;
+ promise._n = true;
+ var chain = promise._c;
+ microtask(function(){
+ var value = promise._v
+ , ok = promise._s == 1
+ , i = 0;
+ var run = function(reaction){
+ var handler = ok ? reaction.ok : reaction.fail
+ , resolve = reaction.resolve
+ , reject = reaction.reject
+ , domain = reaction.domain
+ , result, then;
+ try {
+ if(handler){
+ if(!ok){
+ if(promise._h == 2)onHandleUnhandled(promise);
+ promise._h = 1;
+ }
+ if(handler === true)result = value;
+ else {
+ if(domain)domain.enter();
+ result = handler(value);
+ if(domain)domain.exit();
+ }
+ if(result === reaction.promise){
+ reject(TypeError('Promise-chain cycle'));
+ } else if(then = isThenable(result)){
+ then.call(result, resolve, reject);
+ } else resolve(result);
+ } else reject(value);
+ } catch(e){
+ reject(e);
+ }
+ };
+ while(chain.length > i)run(chain[i++]); // variable length - can't use forEach
+ promise._c = [];
+ promise._n = false;
+ if(isReject && !promise._h)onUnhandled(promise);
+ });
+ };
+ var onUnhandled = function(promise){
+ task.call(global, function(){
+ var value = promise._v
+ , abrupt, handler, console;
+ if(isUnhandled(promise)){
+ abrupt = perform(function(){
+ if(isNode){
+ process.emit('unhandledRejection', value, promise);
+ } else if(handler = global.onunhandledrejection){
+ handler({promise: promise, reason: value});
+ } else if((console = global.console) && console.error){
+ console.error('Unhandled promise rejection', value);
+ }
+ });
+ // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should
+ promise._h = isNode || isUnhandled(promise) ? 2 : 1;
+ } promise._a = undefined;
+ if(abrupt)throw abrupt.error;
+ });
+ };
+ var isUnhandled = function(promise){
+ if(promise._h == 1)return false;
+ var chain = promise._a || promise._c
+ , i = 0
+ , reaction;
+ while(chain.length > i){
+ reaction = chain[i++];
+ if(reaction.fail || !isUnhandled(reaction.promise))return false;
+ } return true;
+ };
+ var onHandleUnhandled = function(promise){
+ task.call(global, function(){
+ var handler;
+ if(isNode){
+ process.emit('rejectionHandled', promise);
+ } else if(handler = global.onrejectionhandled){
+ handler({promise: promise, reason: promise._v});
+ }
+ });
+ };
+ var $reject = function(value){
+ var promise = this;
+ if(promise._d)return;
+ promise._d = true;
+ promise = promise._w || promise; // unwrap
+ promise._v = value;
+ promise._s = 2;
+ if(!promise._a)promise._a = promise._c.slice();
+ notify(promise, true);
+ };
+ var $resolve = function(value){
+ var promise = this
+ , then;
+ if(promise._d)return;
+ promise._d = true;
+ promise = promise._w || promise; // unwrap
+ try {
+ if(promise === value)throw TypeError("Promise can't be resolved itself");
+ if(then = isThenable(value)){
+ microtask(function(){
+ var wrapper = {_w: promise, _d: false}; // wrap
+ try {
+ then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));
+ } catch(e){
+ $reject.call(wrapper, e);
+ }
+ });
+ } else {
+ promise._v = value;
+ promise._s = 1;
+ notify(promise, false);
+ }
+ } catch(e){
+ $reject.call({_w: promise, _d: false}, e); // wrap
+ }
+ };
+
+ // constructor polyfill
+ if(!USE_NATIVE){
+ // 25.4.3.1 Promise(executor)
+ $Promise = function Promise(executor){
+ anInstance(this, $Promise, PROMISE, '_h');
+ aFunction(executor);
+ Internal.call(this);
+ try {
+ executor(ctx($resolve, this, 1), ctx($reject, this, 1));
+ } catch(err){
+ $reject.call(this, err);
+ }
+ };
+ Internal = function Promise(executor){
+ this._c = []; // <- awaiting reactions
+ this._a = undefined; // <- checked in isUnhandled reactions
+ this._s = 0; // <- state
+ this._d = false; // <- done
+ this._v = undefined; // <- value
+ this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled
+ this._n = false; // <- notify
+ };
+ Internal.prototype = __webpack_require__(185)($Promise.prototype, {
+ // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)
+ then: function then(onFulfilled, onRejected){
+ var reaction = newPromiseCapability(speciesConstructor(this, $Promise));
+ reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;
+ reaction.fail = typeof onRejected == 'function' && onRejected;
+ reaction.domain = isNode ? process.domain : undefined;
+ this._c.push(reaction);
+ if(this._a)this._a.push(reaction);
+ if(this._s)notify(this, false);
+ return reaction.promise;
+ },
+ // 25.4.5.1 Promise.prototype.catch(onRejected)
+ 'catch': function(onRejected){
+ return this.then(undefined, onRejected);
+ }
+ });
+ PromiseCapability = function(){
+ var promise = new Internal;
+ this.promise = promise;
+ this.resolve = ctx($resolve, promise, 1);
+ this.reject = ctx($reject, promise, 1);
+ };
+ }
+
+ $export($export.G + $export.W + $export.F * !USE_NATIVE, {Promise: $Promise});
+ __webpack_require__(22)($Promise, PROMISE);
+ __webpack_require__(179)(PROMISE);
+ Wrapper = __webpack_require__(3)[PROMISE];
+
+ // statics
+ $export($export.S + $export.F * !USE_NATIVE, PROMISE, {
+ // 25.4.4.5 Promise.reject(r)
+ reject: function reject(r){
+ var capability = newPromiseCapability(this)
+ , $$reject = capability.reject;
+ $$reject(r);
+ return capability.promise;
+ }
+ });
+ $export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {
+ // 25.4.4.6 Promise.resolve(x)
+ resolve: function resolve(x){
+ // instanceof instead of internal slot check because we should fix it without replacement native Promise core
+ if(x instanceof $Promise && sameConstructor(x.constructor, this))return x;
+ var capability = newPromiseCapability(this)
+ , $$resolve = capability.resolve;
+ $$resolve(x);
+ return capability.promise;
+ }
+ });
+ $export($export.S + $export.F * !(USE_NATIVE && __webpack_require__(151)(function(iter){
+ $Promise.all(iter)['catch'](empty);
+ })), PROMISE, {
+ // 25.4.4.1 Promise.all(iterable)
+ all: function all(iterable){
+ var C = this
+ , capability = newPromiseCapability(C)
+ , resolve = capability.resolve
+ , reject = capability.reject;
+ var abrupt = perform(function(){
+ var values = []
+ , index = 0
+ , remaining = 1;
+ forOf(iterable, false, function(promise){
+ var $index = index++
+ , alreadyCalled = false;
+ values.push(undefined);
+ remaining++;
+ C.resolve(promise).then(function(value){
+ if(alreadyCalled)return;
+ alreadyCalled = true;
+ values[$index] = value;
+ --remaining || resolve(values);
+ }, reject);
+ });
+ --remaining || resolve(values);
+ });
+ if(abrupt)reject(abrupt.error);
+ return capability.promise;
+ },
+ // 25.4.4.4 Promise.race(iterable)
+ race: function race(iterable){
+ var C = this
+ , capability = newPromiseCapability(C)
+ , reject = capability.reject;
+ var abrupt = perform(function(){
+ forOf(iterable, false, function(promise){
+ C.resolve(promise).then(capability.resolve, reject);
+ });
+ });
+ if(abrupt)reject(abrupt.error);
+ return capability.promise;
+ }
+ });
+
+/***/ },
+/* 181 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var ctx = __webpack_require__(8)
+ , call = __webpack_require__(147)
+ , isArrayIter = __webpack_require__(148)
+ , anObject = __webpack_require__(12)
+ , toLength = __webpack_require__(32)
+ , getIterFn = __webpack_require__(149);
+ module.exports = function(iterable, entries, fn, that, ITERATOR){
+ var iterFn = ITERATOR ? function(){ return iterable; } : getIterFn(iterable)
+ , f = ctx(fn, that, entries ? 2 : 1)
+ , index = 0
+ , length, step, iterator;
+ if(typeof iterFn != 'function')throw TypeError(iterable + ' is not iterable!');
+ // fast case for arrays with default iterator
+ if(isArrayIter(iterFn))for(length = toLength(iterable.length); length > index; index++){
+ entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);
+ } else for(iterator = iterFn.call(iterable); !(step = iterator.next()).done; ){
+ call(iterator, f, step.value, entries);
+ }
+ };
+
+/***/ },
+/* 182 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 7.3.20 SpeciesConstructor(O, defaultConstructor)
+ var anObject = __webpack_require__(12)
+ , aFunction = __webpack_require__(9)
+ , SPECIES = __webpack_require__(23)('species');
+ module.exports = function(O, D){
+ var C = anObject(O).constructor, S;
+ return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);
+ };
+
+/***/ },
+/* 183 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var ctx = __webpack_require__(8)
+ , invoke = __webpack_require__(72)
+ , html = __webpack_require__(43)
+ , cel = __webpack_require__(15)
+ , global = __webpack_require__(2)
+ , process = global.process
+ , setTask = global.setImmediate
+ , clearTask = global.clearImmediate
+ , MessageChannel = global.MessageChannel
+ , counter = 0
+ , queue = {}
+ , ONREADYSTATECHANGE = 'onreadystatechange'
+ , defer, channel, port;
+ var run = function(){
+ var id = +this;
+ if(queue.hasOwnProperty(id)){
+ var fn = queue[id];
+ delete queue[id];
+ fn();
+ }
+ };
+ var listener = function(event){
+ run.call(event.data);
+ };
+ // Node.js 0.9+ & IE10+ has setImmediate, otherwise:
+ if(!setTask || !clearTask){
+ setTask = function setImmediate(fn){
+ var args = [], i = 1;
+ while(arguments.length > i)args.push(arguments[i++]);
+ queue[++counter] = function(){
+ invoke(typeof fn == 'function' ? fn : Function(fn), args);
+ };
+ defer(counter);
+ return counter;
+ };
+ clearTask = function clearImmediate(id){
+ delete queue[id];
+ };
+ // Node.js 0.8-
+ if(__webpack_require__(29)(process) == 'process'){
+ defer = function(id){
+ process.nextTick(ctx(run, id, 1));
+ };
+ // Browsers with MessageChannel, includes WebWorkers
+ } else if(MessageChannel){
+ channel = new MessageChannel;
+ port = channel.port2;
+ channel.port1.onmessage = listener;
+ defer = ctx(port.postMessage, port, 1);
+ // Browsers with postMessage, skip WebWorkers
+ // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'
+ } else if(global.addEventListener && typeof postMessage == 'function' && !global.importScripts){
+ defer = function(id){
+ global.postMessage(id + '', '*');
+ };
+ global.addEventListener('message', listener, false);
+ // IE8-
+ } else if(ONREADYSTATECHANGE in cel('script')){
+ defer = function(id){
+ html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function(){
+ html.removeChild(this);
+ run.call(id);
+ };
+ };
+ // Rest old browsers
+ } else {
+ defer = function(id){
+ setTimeout(ctx(run, id, 1), 0);
+ };
+ }
+ }
+ module.exports = {
+ set: setTask,
+ clear: clearTask
+ };
+
+/***/ },
+/* 184 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var global = __webpack_require__(2)
+ , macrotask = __webpack_require__(183).set
+ , Observer = global.MutationObserver || global.WebKitMutationObserver
+ , process = global.process
+ , Promise = global.Promise
+ , isNode = __webpack_require__(29)(process) == 'process'
+ , head, last, notify;
+
+ var flush = function(){
+ var parent, fn;
+ if(isNode && (parent = process.domain))parent.exit();
+ while(head){
+ fn = head.fn;
+ fn(); // <- currently we use it only for Promise - try / catch not required
+ head = head.next;
+ } last = undefined;
+ if(parent)parent.enter();
+ };
+
+ // Node.js
+ if(isNode){
+ notify = function(){
+ process.nextTick(flush);
+ };
+ // browsers with MutationObserver
+ } else if(Observer){
+ var toggle = true
+ , node = document.createTextNode('');
+ new Observer(flush).observe(node, {characterData: true}); // eslint-disable-line no-new
+ notify = function(){
+ node.data = toggle = !toggle;
+ };
+ // environments with maybe non-completely correct, but existent Promise
+ } else if(Promise && Promise.resolve){
+ notify = function(){
+ Promise.resolve().then(flush);
+ };
+ // for other environments - macrotask based on:
+ // - setImmediate
+ // - MessageChannel
+ // - window.postMessag
+ // - onreadystatechange
+ // - setTimeout
+ } else {
+ notify = function(){
+ // strange IE + webpack dev server bug - use .call(global)
+ macrotask.call(global, flush);
+ };
+ }
+
+ module.exports = function(fn){
+ var task = {fn: fn, next: undefined};
+ if(last)last.next = task;
+ if(!head){
+ head = task;
+ notify();
+ } last = task;
+ };
+
+/***/ },
+/* 185 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var hide = __webpack_require__(10);
+ module.exports = function(target, src, safe){
+ for(var key in src){
+ if(safe && target[key])target[key] = src[key];
+ else hide(target, key, src[key]);
+ } return target;
+ };
+
+/***/ },
+/* 186 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var strong = __webpack_require__(187);
+
+ // 23.1 Map Objects
+ module.exports = __webpack_require__(188)('Map', function(get){
+ return function Map(){ return get(this, arguments.length > 0 ? arguments[0] : undefined); };
+ }, {
+ // 23.1.3.6 Map.prototype.get(key)
+ get: function get(key){
+ var entry = strong.getEntry(this, key);
+ return entry && entry.v;
+ },
+ // 23.1.3.9 Map.prototype.set(key, value)
+ set: function set(key, value){
+ return strong.def(this, key === 0 ? 0 : key, value);
+ }
+ }, strong, true);
+
+/***/ },
+/* 187 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var dP = __webpack_require__(11).f
+ , create = __webpack_require__(41)
+ , hide = __webpack_require__(10)
+ , redefineAll = __webpack_require__(185)
+ , ctx = __webpack_require__(8)
+ , anInstance = __webpack_require__(75)
+ , defined = __webpack_require__(30)
+ , forOf = __webpack_require__(181)
+ , $iterDefine = __webpack_require__(128)
+ , step = __webpack_require__(177)
+ , setSpecies = __webpack_require__(179)
+ , DESCRIPTORS = __webpack_require__(5)
+ , fastKey = __webpack_require__(19).fastKey
+ , SIZE = DESCRIPTORS ? '_s' : 'size';
+
+ var getEntry = function(that, key){
+ // fast case
+ var index = fastKey(key), entry;
+ if(index !== 'F')return that._i[index];
+ // frozen object case
+ for(entry = that._f; entry; entry = entry.n){
+ if(entry.k == key)return entry;
+ }
+ };
+
+ module.exports = {
+ getConstructor: function(wrapper, NAME, IS_MAP, ADDER){
+ var C = wrapper(function(that, iterable){
+ anInstance(that, C, NAME, '_i');
+ that._i = create(null); // index
+ that._f = undefined; // first entry
+ that._l = undefined; // last entry
+ that[SIZE] = 0; // size
+ if(iterable != undefined)forOf(iterable, IS_MAP, that[ADDER], that);
+ });
+ redefineAll(C.prototype, {
+ // 23.1.3.1 Map.prototype.clear()
+ // 23.2.3.2 Set.prototype.clear()
+ clear: function clear(){
+ for(var that = this, data = that._i, entry = that._f; entry; entry = entry.n){
+ entry.r = true;
+ if(entry.p)entry.p = entry.p.n = undefined;
+ delete data[entry.i];
+ }
+ that._f = that._l = undefined;
+ that[SIZE] = 0;
+ },
+ // 23.1.3.3 Map.prototype.delete(key)
+ // 23.2.3.4 Set.prototype.delete(value)
+ 'delete': function(key){
+ var that = this
+ , entry = getEntry(that, key);
+ if(entry){
+ var next = entry.n
+ , prev = entry.p;
+ delete that._i[entry.i];
+ entry.r = true;
+ if(prev)prev.n = next;
+ if(next)next.p = prev;
+ if(that._f == entry)that._f = next;
+ if(that._l == entry)that._l = prev;
+ that[SIZE]--;
+ } return !!entry;
+ },
+ // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)
+ // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)
+ forEach: function forEach(callbackfn /*, that = undefined */){
+ anInstance(this, C, 'forEach');
+ var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3)
+ , entry;
+ while(entry = entry ? entry.n : this._f){
+ f(entry.v, entry.k, this);
+ // revert to the last existing entry
+ while(entry && entry.r)entry = entry.p;
+ }
+ },
+ // 23.1.3.7 Map.prototype.has(key)
+ // 23.2.3.7 Set.prototype.has(value)
+ has: function has(key){
+ return !!getEntry(this, key);
+ }
+ });
+ if(DESCRIPTORS)dP(C.prototype, 'size', {
+ get: function(){
+ return defined(this[SIZE]);
+ }
+ });
+ return C;
+ },
+ def: function(that, key, value){
+ var entry = getEntry(that, key)
+ , prev, index;
+ // change existing entry
+ if(entry){
+ entry.v = value;
+ // create new entry
+ } else {
+ that._l = entry = {
+ i: index = fastKey(key, true), // <- index
+ k: key, // <- key
+ v: value, // <- value
+ p: prev = that._l, // <- previous entry
+ n: undefined, // <- next entry
+ r: false // <- removed
+ };
+ if(!that._f)that._f = entry;
+ if(prev)prev.n = entry;
+ that[SIZE]++;
+ // add to index
+ if(index !== 'F')that._i[index] = entry;
+ } return that;
+ },
+ getEntry: getEntry,
+ setStrong: function(C, NAME, IS_MAP){
+ // add .keys, .values, .entries, [@@iterator]
+ // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11
+ $iterDefine(C, NAME, function(iterated, kind){
+ this._t = iterated; // target
+ this._k = kind; // kind
+ this._l = undefined; // previous
+ }, function(){
+ var that = this
+ , kind = that._k
+ , entry = that._l;
+ // revert to the last existing entry
+ while(entry && entry.r)entry = entry.p;
+ // get next entry
+ if(!that._t || !(that._l = entry = entry ? entry.n : that._t._f)){
+ // or finish the iteration
+ that._t = undefined;
+ return step(1);
+ }
+ // return step by kind
+ if(kind == 'keys' )return step(0, entry.k);
+ if(kind == 'values')return step(0, entry.v);
+ return step(0, [entry.k, entry.v]);
+ }, IS_MAP ? 'entries' : 'values' , !IS_MAP, true);
+
+ // add [@@species], 23.1.2.2, 23.2.2.2
+ setSpecies(NAME);
+ }
+ };
+
+/***/ },
+/* 188 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var global = __webpack_require__(2)
+ , $export = __webpack_require__(7)
+ , meta = __webpack_require__(19)
+ , fails = __webpack_require__(6)
+ , hide = __webpack_require__(10)
+ , redefineAll = __webpack_require__(185)
+ , forOf = __webpack_require__(181)
+ , anInstance = __webpack_require__(75)
+ , isObject = __webpack_require__(13)
+ , setToStringTag = __webpack_require__(22)
+ , dP = __webpack_require__(11).f
+ , each = __webpack_require__(158)(0)
+ , DESCRIPTORS = __webpack_require__(5);
+
+ module.exports = function(NAME, wrapper, methods, common, IS_MAP, IS_WEAK){
+ var Base = global[NAME]
+ , C = Base
+ , ADDER = IS_MAP ? 'set' : 'add'
+ , proto = C && C.prototype
+ , O = {};
+ if(!DESCRIPTORS || typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function(){
+ new C().entries().next();
+ }))){
+ // create collection constructor
+ C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);
+ redefineAll(C.prototype, methods);
+ meta.NEED = true;
+ } else {
+ C = wrapper(function(target, iterable){
+ anInstance(target, C, NAME, '_c');
+ target._c = new Base;
+ if(iterable != undefined)forOf(iterable, IS_MAP, target[ADDER], target);
+ });
+ each('add,clear,delete,forEach,get,has,set,keys,values,entries,toJSON'.split(','),function(KEY){
+ var IS_ADDER = KEY == 'add' || KEY == 'set';
+ if(KEY in proto && !(IS_WEAK && KEY == 'clear'))hide(C.prototype, KEY, function(a, b){
+ anInstance(this, C, KEY);
+ if(!IS_ADDER && IS_WEAK && !isObject(a))return KEY == 'get' ? undefined : false;
+ var result = this._c[KEY](a === 0 ? 0 : a, b);
+ return IS_ADDER ? this : result;
+ });
+ });
+ if('size' in proto)dP(C.prototype, 'size', {
+ get: function(){
+ return this._c.size;
+ }
+ });
+ }
+
+ setToStringTag(C, NAME);
+
+ O[NAME] = C;
+ $export($export.G + $export.W + $export.F, O);
+
+ if(!IS_WEAK)common.setStrong(C, NAME, IS_MAP);
+
+ return C;
+ };
+
+/***/ },
+/* 189 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var strong = __webpack_require__(187);
+
+ // 23.2 Set Objects
+ module.exports = __webpack_require__(188)('Set', function(get){
+ return function Set(){ return get(this, arguments.length > 0 ? arguments[0] : undefined); };
+ }, {
+ // 23.2.3.1 Set.prototype.add(value)
+ add: function add(value){
+ return strong.def(this, value = value === 0 ? 0 : value, value);
+ }
+ }, strong);
+
+/***/ },
+/* 190 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var each = __webpack_require__(158)(0)
+ , redefine = __webpack_require__(18)
+ , meta = __webpack_require__(19)
+ , assign = __webpack_require__(65)
+ , weak = __webpack_require__(191)
+ , isObject = __webpack_require__(13)
+ , has = __webpack_require__(4)
+ , getWeak = meta.getWeak
+ , isExtensible = Object.isExtensible
+ , uncaughtFrozenStore = weak.ufstore
+ , tmp = {}
+ , InternalMap;
+
+ var wrapper = function(get){
+ return function WeakMap(){
+ return get(this, arguments.length > 0 ? arguments[0] : undefined);
+ };
+ };
+
+ var methods = {
+ // 23.3.3.3 WeakMap.prototype.get(key)
+ get: function get(key){
+ if(isObject(key)){
+ var data = getWeak(key);
+ if(data === true)return uncaughtFrozenStore(this).get(key);
+ return data ? data[this._i] : undefined;
+ }
+ },
+ // 23.3.3.5 WeakMap.prototype.set(key, value)
+ set: function set(key, value){
+ return weak.def(this, key, value);
+ }
+ };
+
+ // 23.3 WeakMap Objects
+ var $WeakMap = module.exports = __webpack_require__(188)('WeakMap', wrapper, methods, weak, true, true);
+
+ // IE11 WeakMap frozen keys fix
+ if(new $WeakMap().set((Object.freeze || Object)(tmp), 7).get(tmp) != 7){
+ InternalMap = weak.getConstructor(wrapper);
+ assign(InternalMap.prototype, methods);
+ meta.NEED = true;
+ each(['delete', 'has', 'get', 'set'], function(key){
+ var proto = $WeakMap.prototype
+ , method = proto[key];
+ redefine(proto, key, function(a, b){
+ // store frozen objects on internal weakmap shim
+ if(isObject(a) && !isExtensible(a)){
+ if(!this._f)this._f = new InternalMap;
+ var result = this._f[key](a, b);
+ return key == 'set' ? this : result;
+ // store all the rest on native weakmap
+ } return method.call(this, a, b);
+ });
+ });
+ }
+
+/***/ },
+/* 191 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var redefineAll = __webpack_require__(185)
+ , getWeak = __webpack_require__(19).getWeak
+ , anObject = __webpack_require__(12)
+ , isObject = __webpack_require__(13)
+ , anInstance = __webpack_require__(75)
+ , forOf = __webpack_require__(181)
+ , createArrayMethod = __webpack_require__(158)
+ , $has = __webpack_require__(4)
+ , arrayFind = createArrayMethod(5)
+ , arrayFindIndex = createArrayMethod(6)
+ , id = 0;
+
+ // fallback for uncaught frozen keys
+ var uncaughtFrozenStore = function(that){
+ return that._l || (that._l = new UncaughtFrozenStore);
+ };
+ var UncaughtFrozenStore = function(){
+ this.a = [];
+ };
+ var findUncaughtFrozen = function(store, key){
+ return arrayFind(store.a, function(it){
+ return it[0] === key;
+ });
+ };
+ UncaughtFrozenStore.prototype = {
+ get: function(key){
+ var entry = findUncaughtFrozen(this, key);
+ if(entry)return entry[1];
+ },
+ has: function(key){
+ return !!findUncaughtFrozen(this, key);
+ },
+ set: function(key, value){
+ var entry = findUncaughtFrozen(this, key);
+ if(entry)entry[1] = value;
+ else this.a.push([key, value]);
+ },
+ 'delete': function(key){
+ var index = arrayFindIndex(this.a, function(it){
+ return it[0] === key;
+ });
+ if(~index)this.a.splice(index, 1);
+ return !!~index;
+ }
+ };
+
+ module.exports = {
+ getConstructor: function(wrapper, NAME, IS_MAP, ADDER){
+ var C = wrapper(function(that, iterable){
+ anInstance(that, C, NAME, '_i');
+ that._i = id++; // collection id
+ that._l = undefined; // leak store for uncaught frozen objects
+ if(iterable != undefined)forOf(iterable, IS_MAP, that[ADDER], that);
+ });
+ redefineAll(C.prototype, {
+ // 23.3.3.2 WeakMap.prototype.delete(key)
+ // 23.4.3.3 WeakSet.prototype.delete(value)
+ 'delete': function(key){
+ if(!isObject(key))return false;
+ var data = getWeak(key);
+ if(data === true)return uncaughtFrozenStore(this)['delete'](key);
+ return data && $has(data, this._i) && delete data[this._i];
+ },
+ // 23.3.3.4 WeakMap.prototype.has(key)
+ // 23.4.3.4 WeakSet.prototype.has(value)
+ has: function has(key){
+ if(!isObject(key))return false;
+ var data = getWeak(key);
+ if(data === true)return uncaughtFrozenStore(this).has(key);
+ return data && $has(data, this._i);
+ }
+ });
+ return C;
+ },
+ def: function(that, key, value){
+ var data = getWeak(anObject(key), true);
+ if(data === true)uncaughtFrozenStore(that).set(key, value);
+ else data[that._i] = value;
+ return that;
+ },
+ ufstore: uncaughtFrozenStore
+ };
+
+/***/ },
+/* 192 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var weak = __webpack_require__(191);
+
+ // 23.4 WeakSet Objects
+ __webpack_require__(188)('WeakSet', function(get){
+ return function WeakSet(){ return get(this, arguments.length > 0 ? arguments[0] : undefined); };
+ }, {
+ // 23.4.3.1 WeakSet.prototype.add(value)
+ add: function add(value){
+ return weak.def(this, value, true);
+ }
+ }, weak, false, true);
+
+/***/ },
+/* 193 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 26.1.1 Reflect.apply(target, thisArgument, argumentsList)
+ var $export = __webpack_require__(7)
+ , _apply = Function.apply;
+
+ $export($export.S, 'Reflect', {
+ apply: function apply(target, thisArgument, argumentsList){
+ return _apply.call(target, thisArgument, argumentsList);
+ }
+ });
+
+/***/ },
+/* 194 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 26.1.2 Reflect.construct(target, argumentsList [, newTarget])
+ var $export = __webpack_require__(7)
+ , create = __webpack_require__(41)
+ , aFunction = __webpack_require__(9)
+ , anObject = __webpack_require__(12)
+ , isObject = __webpack_require__(13)
+ , bind = __webpack_require__(71);
+
+ // MS Edge supports only 2 arguments
+ // FF Nightly sets third argument as `new.target`, but does not create `this` from it
+ $export($export.S + $export.F * __webpack_require__(6)(function(){
+ function F(){}
+ return !(Reflect.construct(function(){}, [], F) instanceof F);
+ }), 'Reflect', {
+ construct: function construct(Target, args /*, newTarget*/){
+ aFunction(Target);
+ var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);
+ if(Target == newTarget){
+ // w/o altered newTarget, optimization for 0-4 arguments
+ if(args != undefined)switch(anObject(args).length){
+ case 0: return new Target;
+ case 1: return new Target(args[0]);
+ case 2: return new Target(args[0], args[1]);
+ case 3: return new Target(args[0], args[1], args[2]);
+ case 4: return new Target(args[0], args[1], args[2], args[3]);
+ }
+ // w/o altered newTarget, lot of arguments case
+ var $args = [null];
+ $args.push.apply($args, args);
+ return new (bind.apply(Target, $args));
+ }
+ // with altered newTarget, not support built-in constructors
+ var proto = newTarget.prototype
+ , instance = create(isObject(proto) ? proto : Object.prototype)
+ , result = Function.apply.call(Target, instance, args);
+ return isObject(result) ? result : instance;
+ }
+ });
+
+/***/ },
+/* 195 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 26.1.3 Reflect.defineProperty(target, propertyKey, attributes)
+ var dP = __webpack_require__(11)
+ , $export = __webpack_require__(7)
+ , anObject = __webpack_require__(12)
+ , toPrimitive = __webpack_require__(16);
+
+ // MS Edge has broken Reflect.defineProperty - throwing instead of returning false
+ $export($export.S + $export.F * __webpack_require__(6)(function(){
+ Reflect.defineProperty(dP.f({}, 1, {value: 1}), 1, {value: 2});
+ }), 'Reflect', {
+ defineProperty: function defineProperty(target, propertyKey, attributes){
+ anObject(target);
+ propertyKey = toPrimitive(propertyKey, true);
+ anObject(attributes);
+ try {
+ dP.f(target, propertyKey, attributes);
+ return true;
+ } catch(e){
+ return false;
+ }
+ }
+ });
+
+/***/ },
+/* 196 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 26.1.4 Reflect.deleteProperty(target, propertyKey)
+ var $export = __webpack_require__(7)
+ , gOPD = __webpack_require__(46).f
+ , anObject = __webpack_require__(12);
+
+ $export($export.S, 'Reflect', {
+ deleteProperty: function deleteProperty(target, propertyKey){
+ var desc = gOPD(anObject(target), propertyKey);
+ return desc && !desc.configurable ? false : delete target[propertyKey];
+ }
+ });
+
+/***/ },
+/* 197 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // 26.1.5 Reflect.enumerate(target)
+ var $export = __webpack_require__(7)
+ , anObject = __webpack_require__(12);
+ var Enumerate = function(iterated){
+ this._t = anObject(iterated); // target
+ this._i = 0; // next index
+ var keys = this._k = [] // keys
+ , key;
+ for(key in iterated)keys.push(key);
+ };
+ __webpack_require__(130)(Enumerate, 'Object', function(){
+ var that = this
+ , keys = that._k
+ , key;
+ do {
+ if(that._i >= keys.length)return {value: undefined, done: true};
+ } while(!((key = keys[that._i++]) in that._t));
+ return {value: key, done: false};
+ });
+
+ $export($export.S, 'Reflect', {
+ enumerate: function enumerate(target){
+ return new Enumerate(target);
+ }
+ });
+
+/***/ },
+/* 198 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 26.1.6 Reflect.get(target, propertyKey [, receiver])
+ var gOPD = __webpack_require__(46)
+ , getPrototypeOf = __webpack_require__(55)
+ , has = __webpack_require__(4)
+ , $export = __webpack_require__(7)
+ , isObject = __webpack_require__(13)
+ , anObject = __webpack_require__(12);
+
+ function get(target, propertyKey/*, receiver*/){
+ var receiver = arguments.length < 3 ? target : arguments[2]
+ , desc, proto;
+ if(anObject(target) === receiver)return target[propertyKey];
+ if(desc = gOPD.f(target, propertyKey))return has(desc, 'value')
+ ? desc.value
+ : desc.get !== undefined
+ ? desc.get.call(receiver)
+ : undefined;
+ if(isObject(proto = getPrototypeOf(target)))return get(proto, propertyKey, receiver);
+ }
+
+ $export($export.S, 'Reflect', {get: get});
+
+/***/ },
+/* 199 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 26.1.7 Reflect.getOwnPropertyDescriptor(target, propertyKey)
+ var gOPD = __webpack_require__(46)
+ , $export = __webpack_require__(7)
+ , anObject = __webpack_require__(12);
+
+ $export($export.S, 'Reflect', {
+ getOwnPropertyDescriptor: function getOwnPropertyDescriptor(target, propertyKey){
+ return gOPD.f(anObject(target), propertyKey);
+ }
+ });
+
+/***/ },
+/* 200 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 26.1.8 Reflect.getPrototypeOf(target)
+ var $export = __webpack_require__(7)
+ , getProto = __webpack_require__(55)
+ , anObject = __webpack_require__(12);
+
+ $export($export.S, 'Reflect', {
+ getPrototypeOf: function getPrototypeOf(target){
+ return getProto(anObject(target));
+ }
+ });
+
+/***/ },
+/* 201 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 26.1.9 Reflect.has(target, propertyKey)
+ var $export = __webpack_require__(7);
+
+ $export($export.S, 'Reflect', {
+ has: function has(target, propertyKey){
+ return propertyKey in target;
+ }
+ });
+
+/***/ },
+/* 202 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 26.1.10 Reflect.isExtensible(target)
+ var $export = __webpack_require__(7)
+ , anObject = __webpack_require__(12)
+ , $isExtensible = Object.isExtensible;
+
+ $export($export.S, 'Reflect', {
+ isExtensible: function isExtensible(target){
+ anObject(target);
+ return $isExtensible ? $isExtensible(target) : true;
+ }
+ });
+
+/***/ },
+/* 203 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 26.1.11 Reflect.ownKeys(target)
+ var $export = __webpack_require__(7);
+
+ $export($export.S, 'Reflect', {ownKeys: __webpack_require__(204)});
+
+/***/ },
+/* 204 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // all object keys, includes non-enumerable and symbols
+ var gOPN = __webpack_require__(45)
+ , gOPS = __webpack_require__(38)
+ , anObject = __webpack_require__(12)
+ , Reflect = __webpack_require__(2).Reflect;
+ module.exports = Reflect && Reflect.ownKeys || function ownKeys(it){
+ var keys = gOPN.f(anObject(it))
+ , getSymbols = gOPS.f;
+ return getSymbols ? keys.concat(getSymbols(it)) : keys;
+ };
+
+/***/ },
+/* 205 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 26.1.12 Reflect.preventExtensions(target)
+ var $export = __webpack_require__(7)
+ , anObject = __webpack_require__(12)
+ , $preventExtensions = Object.preventExtensions;
+
+ $export($export.S, 'Reflect', {
+ preventExtensions: function preventExtensions(target){
+ anObject(target);
+ try {
+ if($preventExtensions)$preventExtensions(target);
+ return true;
+ } catch(e){
+ return false;
+ }
+ }
+ });
+
+/***/ },
+/* 206 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 26.1.13 Reflect.set(target, propertyKey, V [, receiver])
+ var dP = __webpack_require__(11)
+ , gOPD = __webpack_require__(46)
+ , getPrototypeOf = __webpack_require__(55)
+ , has = __webpack_require__(4)
+ , $export = __webpack_require__(7)
+ , createDesc = __webpack_require__(17)
+ , anObject = __webpack_require__(12)
+ , isObject = __webpack_require__(13);
+
+ function set(target, propertyKey, V/*, receiver*/){
+ var receiver = arguments.length < 4 ? target : arguments[3]
+ , ownDesc = gOPD.f(anObject(target), propertyKey)
+ , existingDescriptor, proto;
+ if(!ownDesc){
+ if(isObject(proto = getPrototypeOf(target))){
+ return set(proto, propertyKey, V, receiver);
+ }
+ ownDesc = createDesc(0);
+ }
+ if(has(ownDesc, 'value')){
+ if(ownDesc.writable === false || !isObject(receiver))return false;
+ existingDescriptor = gOPD.f(receiver, propertyKey) || createDesc(0);
+ existingDescriptor.value = V;
+ dP.f(receiver, propertyKey, existingDescriptor);
+ return true;
+ }
+ return ownDesc.set === undefined ? false : (ownDesc.set.call(receiver, V), true);
+ }
+
+ $export($export.S, 'Reflect', {set: set});
+
+/***/ },
+/* 207 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 26.1.14 Reflect.setPrototypeOf(target, proto)
+ var $export = __webpack_require__(7)
+ , setProto = __webpack_require__(69);
+
+ if(setProto)$export($export.S, 'Reflect', {
+ setPrototypeOf: function setPrototypeOf(target, proto){
+ setProto.check(target, proto);
+ try {
+ setProto.set(target, proto);
+ return true;
+ } catch(e){
+ return false;
+ }
+ }
+ });
+
+/***/ },
+/* 208 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.3.3.1 / 15.9.4.4 Date.now()
+ var $export = __webpack_require__(7);
+
+ $export($export.S, 'Date', {now: function(){ return new Date().getTime(); }});
+
+/***/ },
+/* 209 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var $export = __webpack_require__(7)
+ , toObject = __webpack_require__(54)
+ , toPrimitive = __webpack_require__(16);
+
+ $export($export.P + $export.F * __webpack_require__(6)(function(){
+ return new Date(NaN).toJSON() !== null || Date.prototype.toJSON.call({toISOString: function(){ return 1; }}) !== 1;
+ }), 'Date', {
+ toJSON: function toJSON(key){
+ var O = toObject(this)
+ , pv = toPrimitive(O);
+ return typeof pv == 'number' && !isFinite(pv) ? null : O.toISOString();
+ }
+ });
+
+/***/ },
+/* 210 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString()
+ var $export = __webpack_require__(7)
+ , fails = __webpack_require__(6)
+ , getTime = Date.prototype.getTime;
+
+ var lz = function(num){
+ return num > 9 ? num : '0' + num;
+ };
+
+ // PhantomJS / old WebKit has a broken implementations
+ $export($export.P + $export.F * (fails(function(){
+ return new Date(-5e13 - 1).toISOString() != '0385-07-25T07:06:39.999Z';
+ }) || !fails(function(){
+ new Date(NaN).toISOString();
+ })), 'Date', {
+ toISOString: function toISOString(){
+ if(!isFinite(getTime.call(this)))throw RangeError('Invalid time value');
+ var d = this
+ , y = d.getUTCFullYear()
+ , m = d.getUTCMilliseconds()
+ , s = y < 0 ? '-' : y > 9999 ? '+' : '';
+ return s + ('00000' + Math.abs(y)).slice(s ? -6 : -4) +
+ '-' + lz(d.getUTCMonth() + 1) + '-' + lz(d.getUTCDate()) +
+ 'T' + lz(d.getUTCHours()) + ':' + lz(d.getUTCMinutes()) +
+ ':' + lz(d.getUTCSeconds()) + '.' + (m > 99 ? m : '0' + lz(m)) + 'Z';
+ }
+ });
+
+/***/ },
+/* 211 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var $export = __webpack_require__(7)
+ , $typed = __webpack_require__(212)
+ , buffer = __webpack_require__(213)
+ , anObject = __webpack_require__(12)
+ , toIndex = __webpack_require__(34)
+ , toLength = __webpack_require__(32)
+ , isObject = __webpack_require__(13)
+ , TYPED_ARRAY = __webpack_require__(23)('typed_array')
+ , ArrayBuffer = __webpack_require__(2).ArrayBuffer
+ , speciesConstructor = __webpack_require__(182)
+ , $ArrayBuffer = buffer.ArrayBuffer
+ , $DataView = buffer.DataView
+ , $isView = $typed.ABV && ArrayBuffer.isView
+ , $slice = $ArrayBuffer.prototype.slice
+ , VIEW = $typed.VIEW
+ , ARRAY_BUFFER = 'ArrayBuffer';
+
+ $export($export.G + $export.W + $export.F * (ArrayBuffer !== $ArrayBuffer), {ArrayBuffer: $ArrayBuffer});
+
+ $export($export.S + $export.F * !$typed.CONSTR, ARRAY_BUFFER, {
+ // 24.1.3.1 ArrayBuffer.isView(arg)
+ isView: function isView(it){
+ return $isView && $isView(it) || isObject(it) && VIEW in it;
+ }
+ });
+
+ $export($export.P + $export.U + $export.F * __webpack_require__(6)(function(){
+ return !new $ArrayBuffer(2).slice(1, undefined).byteLength;
+ }), ARRAY_BUFFER, {
+ // 24.1.4.3 ArrayBuffer.prototype.slice(start, end)
+ slice: function slice(start, end){
+ if($slice !== undefined && end === undefined)return $slice.call(anObject(this), start); // FF fix
+ var len = anObject(this).byteLength
+ , first = toIndex(start, len)
+ , final = toIndex(end === undefined ? len : end, len)
+ , result = new (speciesConstructor(this, $ArrayBuffer))(toLength(final - first))
+ , viewS = new $DataView(this)
+ , viewT = new $DataView(result)
+ , index = 0;
+ while(first < final){
+ viewT.setUint8(index++, viewS.getUint8(first++));
+ } return result;
+ }
+ });
+
+ __webpack_require__(179)(ARRAY_BUFFER);
+
+/***/ },
+/* 212 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var global = __webpack_require__(2)
+ , hide = __webpack_require__(10)
+ , uid = __webpack_require__(20)
+ , TYPED = uid('typed_array')
+ , VIEW = uid('view')
+ , ABV = !!(global.ArrayBuffer && global.DataView)
+ , CONSTR = ABV
+ , i = 0, l = 9, Typed;
+
+ var TypedArrayConstructors = (
+ 'Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array'
+ ).split(',');
+
+ while(i < l){
+ if(Typed = global[TypedArrayConstructors[i++]]){
+ hide(Typed.prototype, TYPED, true);
+ hide(Typed.prototype, VIEW, true);
+ } else CONSTR = false;
+ }
+
+ module.exports = {
+ ABV: ABV,
+ CONSTR: CONSTR,
+ TYPED: TYPED,
+ VIEW: VIEW
+ };
+
+/***/ },
+/* 213 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var global = __webpack_require__(2)
+ , DESCRIPTORS = __webpack_require__(5)
+ , LIBRARY = __webpack_require__(47)
+ , $typed = __webpack_require__(212)
+ , hide = __webpack_require__(10)
+ , redefineAll = __webpack_require__(185)
+ , fails = __webpack_require__(6)
+ , anInstance = __webpack_require__(75)
+ , toInteger = __webpack_require__(33)
+ , toLength = __webpack_require__(32)
+ , gOPN = __webpack_require__(45).f
+ , dP = __webpack_require__(11).f
+ , arrayFill = __webpack_require__(173)
+ , setToStringTag = __webpack_require__(22)
+ , ARRAY_BUFFER = 'ArrayBuffer'
+ , DATA_VIEW = 'DataView'
+ , PROTOTYPE = 'prototype'
+ , WRONG_LENGTH = 'Wrong length!'
+ , WRONG_INDEX = 'Wrong index!'
+ , $ArrayBuffer = global[ARRAY_BUFFER]
+ , $DataView = global[DATA_VIEW]
+ , Math = global.Math
+ , parseInt = global.parseInt
+ , RangeError = global.RangeError
+ , Infinity = global.Infinity
+ , BaseBuffer = $ArrayBuffer
+ , abs = Math.abs
+ , pow = Math.pow
+ , min = Math.min
+ , floor = Math.floor
+ , log = Math.log
+ , LN2 = Math.LN2
+ , BUFFER = 'buffer'
+ , BYTE_LENGTH = 'byteLength'
+ , BYTE_OFFSET = 'byteOffset'
+ , $BUFFER = DESCRIPTORS ? '_b' : BUFFER
+ , $LENGTH = DESCRIPTORS ? '_l' : BYTE_LENGTH
+ , $OFFSET = DESCRIPTORS ? '_o' : BYTE_OFFSET;
+
+ // IEEE754 conversions based on https://github.com/feross/ieee754
+ var packIEEE754 = function(value, mLen, nBytes){
+ var buffer = Array(nBytes)
+ , eLen = nBytes * 8 - mLen - 1
+ , eMax = (1 << eLen) - 1
+ , eBias = eMax >> 1
+ , rt = mLen === 23 ? pow(2, -24) - pow(2, -77) : 0
+ , i = 0
+ , s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0
+ , e, m, c;
+ value = abs(value)
+ if(value != value || value === Infinity){
+ m = value != value ? 1 : 0;
+ e = eMax;
+ } else {
+ e = floor(log(value) / LN2);
+ if(value * (c = pow(2, -e)) < 1){
+ e--;
+ c *= 2;
+ }
+ if(e + eBias >= 1){
+ value += rt / c;
+ } else {
+ value += rt * pow(2, 1 - eBias);
+ }
+ if(value * c >= 2){
+ e++;
+ c /= 2;
+ }
+ if(e + eBias >= eMax){
+ m = 0;
+ e = eMax;
+ } else if(e + eBias >= 1){
+ m = (value * c - 1) * pow(2, mLen);
+ e = e + eBias;
+ } else {
+ m = value * pow(2, eBias - 1) * pow(2, mLen);
+ e = 0;
+ }
+ }
+ for(; mLen >= 8; buffer[i++] = m & 255, m /= 256, mLen -= 8);
+ e = e << mLen | m;
+ eLen += mLen;
+ for(; eLen > 0; buffer[i++] = e & 255, e /= 256, eLen -= 8);
+ buffer[--i] |= s * 128;
+ return buffer;
+ };
+ var unpackIEEE754 = function(buffer, mLen, nBytes){
+ var eLen = nBytes * 8 - mLen - 1
+ , eMax = (1 << eLen) - 1
+ , eBias = eMax >> 1
+ , nBits = eLen - 7
+ , i = nBytes - 1
+ , s = buffer[i--]
+ , e = s & 127
+ , m;
+ s >>= 7;
+ for(; nBits > 0; e = e * 256 + buffer[i], i--, nBits -= 8);
+ m = e & (1 << -nBits) - 1;
+ e >>= -nBits;
+ nBits += mLen;
+ for(; nBits > 0; m = m * 256 + buffer[i], i--, nBits -= 8);
+ if(e === 0){
+ e = 1 - eBias;
+ } else if(e === eMax){
+ return m ? NaN : s ? -Infinity : Infinity;
+ } else {
+ m = m + pow(2, mLen);
+ e = e - eBias;
+ } return (s ? -1 : 1) * m * pow(2, e - mLen);
+ };
+
+ var unpackI32 = function(bytes){
+ return bytes[3] << 24 | bytes[2] << 16 | bytes[1] << 8 | bytes[0];
+ };
+ var packI8 = function(it){
+ return [it & 0xff];
+ };
+ var packI16 = function(it){
+ return [it & 0xff, it >> 8 & 0xff];
+ };
+ var packI32 = function(it){
+ return [it & 0xff, it >> 8 & 0xff, it >> 16 & 0xff, it >> 24 & 0xff];
+ };
+ var packF64 = function(it){
+ return packIEEE754(it, 52, 8);
+ };
+ var packF32 = function(it){
+ return packIEEE754(it, 23, 4);
+ };
+
+ var addGetter = function(C, key, internal){
+ dP(C[PROTOTYPE], key, {get: function(){ return this[internal]; }});
+ };
+
+ var get = function(view, bytes, index, isLittleEndian){
+ var numIndex = +index
+ , intIndex = toInteger(numIndex);
+ if(numIndex != intIndex || intIndex < 0 || intIndex + bytes > view[$LENGTH])throw RangeError(WRONG_INDEX);
+ var store = view[$BUFFER]._b
+ , start = intIndex + view[$OFFSET]
+ , pack = store.slice(start, start + bytes);
+ return isLittleEndian ? pack : pack.reverse();
+ };
+ var set = function(view, bytes, index, conversion, value, isLittleEndian){
+ var numIndex = +index
+ , intIndex = toInteger(numIndex);
+ if(numIndex != intIndex || intIndex < 0 || intIndex + bytes > view[$LENGTH])throw RangeError(WRONG_INDEX);
+ var store = view[$BUFFER]._b
+ , start = intIndex + view[$OFFSET]
+ , pack = conversion(+value);
+ for(var i = 0; i < bytes; i++)store[start + i] = pack[isLittleEndian ? i : bytes - i - 1];
+ };
+
+ var validateArrayBufferArguments = function(that, length){
+ anInstance(that, $ArrayBuffer, ARRAY_BUFFER);
+ var numberLength = +length
+ , byteLength = toLength(numberLength);
+ if(numberLength != byteLength)throw RangeError(WRONG_LENGTH);
+ return byteLength;
+ };
+
+ if(!$typed.ABV){
+ $ArrayBuffer = function ArrayBuffer(length){
+ var byteLength = validateArrayBufferArguments(this, length);
+ this._b = arrayFill.call(Array(byteLength), 0);
+ this[$LENGTH] = byteLength;
+ };
+
+ $DataView = function DataView(buffer, byteOffset, byteLength){
+ anInstance(this, $DataView, DATA_VIEW);
+ anInstance(buffer, $ArrayBuffer, DATA_VIEW);
+ var bufferLength = buffer[$LENGTH]
+ , offset = toInteger(byteOffset);
+ if(offset < 0 || offset > bufferLength)throw RangeError('Wrong offset!');
+ byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);
+ if(offset + byteLength > bufferLength)throw RangeError(WRONG_LENGTH);
+ this[$BUFFER] = buffer;
+ this[$OFFSET] = offset;
+ this[$LENGTH] = byteLength;
+ };
+
+ if(DESCRIPTORS){
+ addGetter($ArrayBuffer, BYTE_LENGTH, '_l');
+ addGetter($DataView, BUFFER, '_b');
+ addGetter($DataView, BYTE_LENGTH, '_l');
+ addGetter($DataView, BYTE_OFFSET, '_o');
+ }
+
+ redefineAll($DataView[PROTOTYPE], {
+ getInt8: function getInt8(byteOffset){
+ return get(this, 1, byteOffset)[0] << 24 >> 24;
+ },
+ getUint8: function getUint8(byteOffset){
+ return get(this, 1, byteOffset)[0];
+ },
+ getInt16: function getInt16(byteOffset /*, littleEndian */){
+ var bytes = get(this, 2, byteOffset, arguments[1]);
+ return (bytes[1] << 8 | bytes[0]) << 16 >> 16;
+ },
+ getUint16: function getUint16(byteOffset /*, littleEndian */){
+ var bytes = get(this, 2, byteOffset, arguments[1]);
+ return bytes[1] << 8 | bytes[0];
+ },
+ getInt32: function getInt32(byteOffset /*, littleEndian */){
+ return unpackI32(get(this, 4, byteOffset, arguments[1]));
+ },
+ getUint32: function getUint32(byteOffset /*, littleEndian */){
+ return unpackI32(get(this, 4, byteOffset, arguments[1])) >>> 0;
+ },
+ getFloat32: function getFloat32(byteOffset /*, littleEndian */){
+ return unpackIEEE754(get(this, 4, byteOffset, arguments[1]), 23, 4);
+ },
+ getFloat64: function getFloat64(byteOffset /*, littleEndian */){
+ return unpackIEEE754(get(this, 8, byteOffset, arguments[1]), 52, 8);
+ },
+ setInt8: function setInt8(byteOffset, value){
+ set(this, 1, byteOffset, packI8, value);
+ },
+ setUint8: function setUint8(byteOffset, value){
+ set(this, 1, byteOffset, packI8, value);
+ },
+ setInt16: function setInt16(byteOffset, value /*, littleEndian */){
+ set(this, 2, byteOffset, packI16, value, arguments[2]);
+ },
+ setUint16: function setUint16(byteOffset, value /*, littleEndian */){
+ set(this, 2, byteOffset, packI16, value, arguments[2]);
+ },
+ setInt32: function setInt32(byteOffset, value /*, littleEndian */){
+ set(this, 4, byteOffset, packI32, value, arguments[2]);
+ },
+ setUint32: function setUint32(byteOffset, value /*, littleEndian */){
+ set(this, 4, byteOffset, packI32, value, arguments[2]);
+ },
+ setFloat32: function setFloat32(byteOffset, value /*, littleEndian */){
+ set(this, 4, byteOffset, packF32, value, arguments[2]);
+ },
+ setFloat64: function setFloat64(byteOffset, value /*, littleEndian */){
+ set(this, 8, byteOffset, packF64, value, arguments[2]);
+ }
+ });
+ } else {
+ if(!fails(function(){
+ new $ArrayBuffer; // eslint-disable-line no-new
+ }) || !fails(function(){
+ new $ArrayBuffer(.5); // eslint-disable-line no-new
+ })){
+ $ArrayBuffer = function ArrayBuffer(length){
+ return new BaseBuffer(validateArrayBufferArguments(this, length));
+ };
+ var ArrayBufferProto = $ArrayBuffer[PROTOTYPE] = BaseBuffer[PROTOTYPE];
+ for(var keys = gOPN(BaseBuffer), j = 0, key; keys.length > j; ){
+ if(!((key = keys[j++]) in $ArrayBuffer))hide($ArrayBuffer, key, BaseBuffer[key]);
+ };
+ if(!LIBRARY)ArrayBufferProto.constructor = $ArrayBuffer;
+ }
+ // iOS Safari 7.x bug
+ var view = new $DataView(new $ArrayBuffer(2))
+ , $setInt8 = $DataView[PROTOTYPE].setInt8;
+ view.setInt8(0, 2147483648);
+ view.setInt8(1, 2147483649);
+ if(view.getInt8(0) || !view.getInt8(1))redefineAll($DataView[PROTOTYPE], {
+ setInt8: function setInt8(byteOffset, value){
+ $setInt8.call(this, byteOffset, value << 24 >> 24);
+ },
+ setUint8: function setUint8(byteOffset, value){
+ $setInt8.call(this, byteOffset, value << 24 >> 24);
+ }
+ }, true);
+ }
+ setToStringTag($ArrayBuffer, ARRAY_BUFFER);
+ setToStringTag($DataView, DATA_VIEW);
+ hide($DataView[PROTOTYPE], $typed.VIEW, true);
+ exports[ARRAY_BUFFER] = $ArrayBuffer;
+ exports[DATA_VIEW] = $DataView;
+
+/***/ },
+/* 214 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var $export = __webpack_require__(7);
+ $export($export.G + $export.W + $export.F * !__webpack_require__(212).ABV, {
+ DataView: __webpack_require__(213).DataView
+ });
+
+/***/ },
+/* 215 */
+/***/ function(module, exports, __webpack_require__) {
+
+ __webpack_require__(216)('Int8', 1, function(init){
+ return function Int8Array(data, byteOffset, length){
+ return init(this, data, byteOffset, length);
+ };
+ });
+
+/***/ },
+/* 216 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ if(__webpack_require__(5)){
+ var LIBRARY = __webpack_require__(47)
+ , global = __webpack_require__(2)
+ , fails = __webpack_require__(6)
+ , $export = __webpack_require__(7)
+ , $typed = __webpack_require__(212)
+ , $buffer = __webpack_require__(213)
+ , ctx = __webpack_require__(8)
+ , anInstance = __webpack_require__(75)
+ , propertyDesc = __webpack_require__(17)
+ , hide = __webpack_require__(10)
+ , redefineAll = __webpack_require__(185)
+ , isInteger = __webpack_require__(82)
+ , toInteger = __webpack_require__(33)
+ , toLength = __webpack_require__(32)
+ , toIndex = __webpack_require__(34)
+ , toPrimitive = __webpack_require__(16)
+ , has = __webpack_require__(4)
+ , same = __webpack_require__(67)
+ , classof = __webpack_require__(150)
+ , isObject = __webpack_require__(13)
+ , toObject = __webpack_require__(54)
+ , isArrayIter = __webpack_require__(148)
+ , create = __webpack_require__(41)
+ , getPrototypeOf = __webpack_require__(55)
+ , gOPN = __webpack_require__(45).f
+ , isIterable = __webpack_require__(217)
+ , getIterFn = __webpack_require__(149)
+ , uid = __webpack_require__(20)
+ , wks = __webpack_require__(23)
+ , createArrayMethod = __webpack_require__(158)
+ , createArrayIncludes = __webpack_require__(31)
+ , speciesConstructor = __webpack_require__(182)
+ , ArrayIterators = __webpack_require__(176)
+ , Iterators = __webpack_require__(129)
+ , $iterDetect = __webpack_require__(151)
+ , setSpecies = __webpack_require__(179)
+ , arrayFill = __webpack_require__(173)
+ , arrayCopyWithin = __webpack_require__(170)
+ , $DP = __webpack_require__(11)
+ , $GOPD = __webpack_require__(46)
+ , dP = $DP.f
+ , gOPD = $GOPD.f
+ , RangeError = global.RangeError
+ , TypeError = global.TypeError
+ , Uint8Array = global.Uint8Array
+ , ARRAY_BUFFER = 'ArrayBuffer'
+ , SHARED_BUFFER = 'Shared' + ARRAY_BUFFER
+ , BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT'
+ , PROTOTYPE = 'prototype'
+ , ArrayProto = Array[PROTOTYPE]
+ , $ArrayBuffer = $buffer.ArrayBuffer
+ , $DataView = $buffer.DataView
+ , arrayForEach = createArrayMethod(0)
+ , arrayFilter = createArrayMethod(2)
+ , arraySome = createArrayMethod(3)
+ , arrayEvery = createArrayMethod(4)
+ , arrayFind = createArrayMethod(5)
+ , arrayFindIndex = createArrayMethod(6)
+ , arrayIncludes = createArrayIncludes(true)
+ , arrayIndexOf = createArrayIncludes(false)
+ , arrayValues = ArrayIterators.values
+ , arrayKeys = ArrayIterators.keys
+ , arrayEntries = ArrayIterators.entries
+ , arrayLastIndexOf = ArrayProto.lastIndexOf
+ , arrayReduce = ArrayProto.reduce
+ , arrayReduceRight = ArrayProto.reduceRight
+ , arrayJoin = ArrayProto.join
+ , arraySort = ArrayProto.sort
+ , arraySlice = ArrayProto.slice
+ , arrayToString = ArrayProto.toString
+ , arrayToLocaleString = ArrayProto.toLocaleString
+ , ITERATOR = wks('iterator')
+ , TAG = wks('toStringTag')
+ , TYPED_CONSTRUCTOR = uid('typed_constructor')
+ , DEF_CONSTRUCTOR = uid('def_constructor')
+ , ALL_CONSTRUCTORS = $typed.CONSTR
+ , TYPED_ARRAY = $typed.TYPED
+ , VIEW = $typed.VIEW
+ , WRONG_LENGTH = 'Wrong length!';
+
+ var $map = createArrayMethod(1, function(O, length){
+ return allocate(speciesConstructor(O, O[DEF_CONSTRUCTOR]), length);
+ });
+
+ var LITTLE_ENDIAN = fails(function(){
+ return new Uint8Array(new Uint16Array([1]).buffer)[0] === 1;
+ });
+
+ var FORCED_SET = !!Uint8Array && !!Uint8Array[PROTOTYPE].set && fails(function(){
+ new Uint8Array(1).set({});
+ });
+
+ var strictToLength = function(it, SAME){
+ if(it === undefined)throw TypeError(WRONG_LENGTH);
+ var number = +it
+ , length = toLength(it);
+ if(SAME && !same(number, length))throw RangeError(WRONG_LENGTH);
+ return length;
+ };
+
+ var toOffset = function(it, BYTES){
+ var offset = toInteger(it);
+ if(offset < 0 || offset % BYTES)throw RangeError('Wrong offset!');
+ return offset;
+ };
+
+ var validate = function(it){
+ if(isObject(it) && TYPED_ARRAY in it)return it;
+ throw TypeError(it + ' is not a typed array!');
+ };
+
+ var allocate = function(C, length){
+ if(!(isObject(C) && TYPED_CONSTRUCTOR in C)){
+ throw TypeError('It is not a typed array constructor!');
+ } return new C(length);
+ };
+
+ var speciesFromList = function(O, list){
+ return fromList(speciesConstructor(O, O[DEF_CONSTRUCTOR]), list);
+ };
+
+ var fromList = function(C, list){
+ var index = 0
+ , length = list.length
+ , result = allocate(C, length);
+ while(length > index)result[index] = list[index++];
+ return result;
+ };
+
+ var addGetter = function(it, key, internal){
+ dP(it, key, {get: function(){ return this._d[internal]; }});
+ };
+
+ var $from = function from(source /*, mapfn, thisArg */){
+ var O = toObject(source)
+ , aLen = arguments.length
+ , mapfn = aLen > 1 ? arguments[1] : undefined
+ , mapping = mapfn !== undefined
+ , iterFn = getIterFn(O)
+ , i, length, values, result, step, iterator;
+ if(iterFn != undefined && !isArrayIter(iterFn)){
+ for(iterator = iterFn.call(O), values = [], i = 0; !(step = iterator.next()).done; i++){
+ values.push(step.value);
+ } O = values;
+ }
+ if(mapping && aLen > 2)mapfn = ctx(mapfn, arguments[2], 2);
+ for(i = 0, length = toLength(O.length), result = allocate(this, length); length > i; i++){
+ result[i] = mapping ? mapfn(O[i], i) : O[i];
+ }
+ return result;
+ };
+
+ var $of = function of(/*...items*/){
+ var index = 0
+ , length = arguments.length
+ , result = allocate(this, length);
+ while(length > index)result[index] = arguments[index++];
+ return result;
+ };
+
+ // iOS Safari 6.x fails here
+ var TO_LOCALE_BUG = !!Uint8Array && fails(function(){ arrayToLocaleString.call(new Uint8Array(1)); });
+
+ var $toLocaleString = function toLocaleString(){
+ return arrayToLocaleString.apply(TO_LOCALE_BUG ? arraySlice.call(validate(this)) : validate(this), arguments);
+ };
+
+ var proto = {
+ copyWithin: function copyWithin(target, start /*, end */){
+ return arrayCopyWithin.call(validate(this), target, start, arguments.length > 2 ? arguments[2] : undefined);
+ },
+ every: function every(callbackfn /*, thisArg */){
+ return arrayEvery(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+ },
+ fill: function fill(value /*, start, end */){ // eslint-disable-line no-unused-vars
+ return arrayFill.apply(validate(this), arguments);
+ },
+ filter: function filter(callbackfn /*, thisArg */){
+ return speciesFromList(this, arrayFilter(validate(this), callbackfn,
+ arguments.length > 1 ? arguments[1] : undefined));
+ },
+ find: function find(predicate /*, thisArg */){
+ return arrayFind(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);
+ },
+ findIndex: function findIndex(predicate /*, thisArg */){
+ return arrayFindIndex(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);
+ },
+ forEach: function forEach(callbackfn /*, thisArg */){
+ arrayForEach(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+ },
+ indexOf: function indexOf(searchElement /*, fromIndex */){
+ return arrayIndexOf(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);
+ },
+ includes: function includes(searchElement /*, fromIndex */){
+ return arrayIncludes(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);
+ },
+ join: function join(separator){ // eslint-disable-line no-unused-vars
+ return arrayJoin.apply(validate(this), arguments);
+ },
+ lastIndexOf: function lastIndexOf(searchElement /*, fromIndex */){ // eslint-disable-line no-unused-vars
+ return arrayLastIndexOf.apply(validate(this), arguments);
+ },
+ map: function map(mapfn /*, thisArg */){
+ return $map(validate(this), mapfn, arguments.length > 1 ? arguments[1] : undefined);
+ },
+ reduce: function reduce(callbackfn /*, initialValue */){ // eslint-disable-line no-unused-vars
+ return arrayReduce.apply(validate(this), arguments);
+ },
+ reduceRight: function reduceRight(callbackfn /*, initialValue */){ // eslint-disable-line no-unused-vars
+ return arrayReduceRight.apply(validate(this), arguments);
+ },
+ reverse: function reverse(){
+ var that = this
+ , length = validate(that).length
+ , middle = Math.floor(length / 2)
+ , index = 0
+ , value;
+ while(index < middle){
+ value = that[index];
+ that[index++] = that[--length];
+ that[length] = value;
+ } return that;
+ },
+ some: function some(callbackfn /*, thisArg */){
+ return arraySome(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+ },
+ sort: function sort(comparefn){
+ return arraySort.call(validate(this), comparefn);
+ },
+ subarray: function subarray(begin, end){
+ var O = validate(this)
+ , length = O.length
+ , $begin = toIndex(begin, length);
+ return new (speciesConstructor(O, O[DEF_CONSTRUCTOR]))(
+ O.buffer,
+ O.byteOffset + $begin * O.BYTES_PER_ELEMENT,
+ toLength((end === undefined ? length : toIndex(end, length)) - $begin)
+ );
+ }
+ };
+
+ var $slice = function slice(start, end){
+ return speciesFromList(this, arraySlice.call(validate(this), start, end));
+ };
+
+ var $set = function set(arrayLike /*, offset */){
+ validate(this);
+ var offset = toOffset(arguments[1], 1)
+ , length = this.length
+ , src = toObject(arrayLike)
+ , len = toLength(src.length)
+ , index = 0;
+ if(len + offset > length)throw RangeError(WRONG_LENGTH);
+ while(index < len)this[offset + index] = src[index++];
+ };
+
+ var $iterators = {
+ entries: function entries(){
+ return arrayEntries.call(validate(this));
+ },
+ keys: function keys(){
+ return arrayKeys.call(validate(this));
+ },
+ values: function values(){
+ return arrayValues.call(validate(this));
+ }
+ };
+
+ var isTAIndex = function(target, key){
+ return isObject(target)
+ && target[TYPED_ARRAY]
+ && typeof key != 'symbol'
+ && key in target
+ && String(+key) == String(key);
+ };
+ var $getDesc = function getOwnPropertyDescriptor(target, key){
+ return isTAIndex(target, key = toPrimitive(key, true))
+ ? propertyDesc(2, target[key])
+ : gOPD(target, key);
+ };
+ var $setDesc = function defineProperty(target, key, desc){
+ if(isTAIndex(target, key = toPrimitive(key, true))
+ && isObject(desc)
+ && has(desc, 'value')
+ && !has(desc, 'get')
+ && !has(desc, 'set')
+ // TODO: add validation descriptor w/o calling accessors
+ && !desc.configurable
+ && (!has(desc, 'writable') || desc.writable)
+ && (!has(desc, 'enumerable') || desc.enumerable)
+ ){
+ target[key] = desc.value;
+ return target;
+ } else return dP(target, key, desc);
+ };
+
+ if(!ALL_CONSTRUCTORS){
+ $GOPD.f = $getDesc;
+ $DP.f = $setDesc;
+ }
+
+ $export($export.S + $export.F * !ALL_CONSTRUCTORS, 'Object', {
+ getOwnPropertyDescriptor: $getDesc,
+ defineProperty: $setDesc
+ });
+
+ if(fails(function(){ arrayToString.call({}); })){
+ arrayToString = arrayToLocaleString = function toString(){
+ return arrayJoin.call(this);
+ }
+ }
+
+ var $TypedArrayPrototype$ = redefineAll({}, proto);
+ redefineAll($TypedArrayPrototype$, $iterators);
+ hide($TypedArrayPrototype$, ITERATOR, $iterators.values);
+ redefineAll($TypedArrayPrototype$, {
+ slice: $slice,
+ set: $set,
+ constructor: function(){ /* noop */ },
+ toString: arrayToString,
+ toLocaleString: $toLocaleString
+ });
+ addGetter($TypedArrayPrototype$, 'buffer', 'b');
+ addGetter($TypedArrayPrototype$, 'byteOffset', 'o');
+ addGetter($TypedArrayPrototype$, 'byteLength', 'l');
+ addGetter($TypedArrayPrototype$, 'length', 'e');
+ dP($TypedArrayPrototype$, TAG, {
+ get: function(){ return this[TYPED_ARRAY]; }
+ });
+
+ module.exports = function(KEY, BYTES, wrapper, CLAMPED){
+ CLAMPED = !!CLAMPED;
+ var NAME = KEY + (CLAMPED ? 'Clamped' : '') + 'Array'
+ , ISNT_UINT8 = NAME != 'Uint8Array'
+ , GETTER = 'get' + KEY
+ , SETTER = 'set' + KEY
+ , TypedArray = global[NAME]
+ , Base = TypedArray || {}
+ , TAC = TypedArray && getPrototypeOf(TypedArray)
+ , FORCED = !TypedArray || !$typed.ABV
+ , O = {}
+ , TypedArrayPrototype = TypedArray && TypedArray[PROTOTYPE];
+ var getter = function(that, index){
+ var data = that._d;
+ return data.v[GETTER](index * BYTES + data.o, LITTLE_ENDIAN);
+ };
+ var setter = function(that, index, value){
+ var data = that._d;
+ if(CLAMPED)value = (value = Math.round(value)) < 0 ? 0 : value > 0xff ? 0xff : value & 0xff;
+ data.v[SETTER](index * BYTES + data.o, value, LITTLE_ENDIAN);
+ };
+ var addElement = function(that, index){
+ dP(that, index, {
+ get: function(){
+ return getter(this, index);
+ },
+ set: function(value){
+ return setter(this, index, value);
+ },
+ enumerable: true
+ });
+ };
+ if(FORCED){
+ TypedArray = wrapper(function(that, data, $offset, $length){
+ anInstance(that, TypedArray, NAME, '_d');
+ var index = 0
+ , offset = 0
+ , buffer, byteLength, length, klass;
+ if(!isObject(data)){
+ length = strictToLength(data, true)
+ byteLength = length * BYTES;
+ buffer = new $ArrayBuffer(byteLength);
+ } else if(data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER){
+ buffer = data;
+ offset = toOffset($offset, BYTES);
+ var $len = data.byteLength;
+ if($length === undefined){
+ if($len % BYTES)throw RangeError(WRONG_LENGTH);
+ byteLength = $len - offset;
+ if(byteLength < 0)throw RangeError(WRONG_LENGTH);
+ } else {
+ byteLength = toLength($length) * BYTES;
+ if(byteLength + offset > $len)throw RangeError(WRONG_LENGTH);
+ }
+ length = byteLength / BYTES;
+ } else if(TYPED_ARRAY in data){
+ return fromList(TypedArray, data);
+ } else {
+ return $from.call(TypedArray, data);
+ }
+ hide(that, '_d', {
+ b: buffer,
+ o: offset,
+ l: byteLength,
+ e: length,
+ v: new $DataView(buffer)
+ });
+ while(index < length)addElement(that, index++);
+ });
+ TypedArrayPrototype = TypedArray[PROTOTYPE] = create($TypedArrayPrototype$);
+ hide(TypedArrayPrototype, 'constructor', TypedArray);
+ } else if(!$iterDetect(function(iter){
+ // V8 works with iterators, but fails in many other cases
+ // https://code.google.com/p/v8/issues/detail?id=4552
+ new TypedArray(null); // eslint-disable-line no-new
+ new TypedArray(iter); // eslint-disable-line no-new
+ }, true)){
+ TypedArray = wrapper(function(that, data, $offset, $length){
+ anInstance(that, TypedArray, NAME);
+ var klass;
+ // `ws` module bug, temporarily remove validation length for Uint8Array
+ // https://github.com/websockets/ws/pull/645
+ if(!isObject(data))return new Base(strictToLength(data, ISNT_UINT8));
+ if(data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER){
+ return $length !== undefined
+ ? new Base(data, toOffset($offset, BYTES), $length)
+ : $offset !== undefined
+ ? new Base(data, toOffset($offset, BYTES))
+ : new Base(data);
+ }
+ if(TYPED_ARRAY in data)return fromList(TypedArray, data);
+ return $from.call(TypedArray, data);
+ });
+ arrayForEach(TAC !== Function.prototype ? gOPN(Base).concat(gOPN(TAC)) : gOPN(Base), function(key){
+ if(!(key in TypedArray))hide(TypedArray, key, Base[key]);
+ });
+ TypedArray[PROTOTYPE] = TypedArrayPrototype;
+ if(!LIBRARY)TypedArrayPrototype.constructor = TypedArray;
+ }
+ var $nativeIterator = TypedArrayPrototype[ITERATOR]
+ , CORRECT_ITER_NAME = !!$nativeIterator && ($nativeIterator.name == 'values' || $nativeIterator.name == undefined)
+ , $iterator = $iterators.values;
+ hide(TypedArray, TYPED_CONSTRUCTOR, true);
+ hide(TypedArrayPrototype, TYPED_ARRAY, NAME);
+ hide(TypedArrayPrototype, VIEW, true);
+ hide(TypedArrayPrototype, DEF_CONSTRUCTOR, TypedArray);
+
+ if(CLAMPED ? new TypedArray(1)[TAG] != NAME : !(TAG in TypedArrayPrototype)){
+ dP(TypedArrayPrototype, TAG, {
+ get: function(){ return NAME; }
+ });
+ }
+
+ O[NAME] = TypedArray;
+
+ $export($export.G + $export.W + $export.F * (TypedArray != Base), O);
+
+ $export($export.S, NAME, {
+ BYTES_PER_ELEMENT: BYTES,
+ from: $from,
+ of: $of
+ });
+
+ if(!(BYTES_PER_ELEMENT in TypedArrayPrototype))hide(TypedArrayPrototype, BYTES_PER_ELEMENT, BYTES);
+
+ $export($export.P, NAME, proto);
+
+ setSpecies(NAME);
+
+ $export($export.P + $export.F * FORCED_SET, NAME, {set: $set});
+
+ $export($export.P + $export.F * !CORRECT_ITER_NAME, NAME, $iterators);
+
+ $export($export.P + $export.F * (TypedArrayPrototype.toString != arrayToString), NAME, {toString: arrayToString});
+
+ $export($export.P + $export.F * fails(function(){
+ new TypedArray(1).slice();
+ }), NAME, {slice: $slice});
+
+ $export($export.P + $export.F * (fails(function(){
+ return [1, 2].toLocaleString() != new TypedArray([1, 2]).toLocaleString()
+ }) || !fails(function(){
+ TypedArrayPrototype.toLocaleString.call([1, 2]);
+ })), NAME, {toLocaleString: $toLocaleString});
+
+ Iterators[NAME] = CORRECT_ITER_NAME ? $nativeIterator : $iterator;
+ if(!LIBRARY && !CORRECT_ITER_NAME)hide(TypedArrayPrototype, ITERATOR, $iterator);
+ };
+ } else module.exports = function(){ /* empty */ };
+
+/***/ },
+/* 217 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var classof = __webpack_require__(150)
+ , ITERATOR = __webpack_require__(23)('iterator')
+ , Iterators = __webpack_require__(129);
+ module.exports = __webpack_require__(3).isIterable = function(it){
+ var O = Object(it);
+ return O[ITERATOR] !== undefined
+ || '@@iterator' in O
+ || Iterators.hasOwnProperty(classof(O));
+ };
+
+/***/ },
+/* 218 */
+/***/ function(module, exports, __webpack_require__) {
+
+ __webpack_require__(216)('Uint8', 1, function(init){
+ return function Uint8Array(data, byteOffset, length){
+ return init(this, data, byteOffset, length);
+ };
+ });
+
+/***/ },
+/* 219 */
+/***/ function(module, exports, __webpack_require__) {
+
+ __webpack_require__(216)('Uint8', 1, function(init){
+ return function Uint8ClampedArray(data, byteOffset, length){
+ return init(this, data, byteOffset, length);
+ };
+ }, true);
+
+/***/ },
+/* 220 */
+/***/ function(module, exports, __webpack_require__) {
+
+ __webpack_require__(216)('Int16', 2, function(init){
+ return function Int16Array(data, byteOffset, length){
+ return init(this, data, byteOffset, length);
+ };
+ });
+
+/***/ },
+/* 221 */
+/***/ function(module, exports, __webpack_require__) {
+
+ __webpack_require__(216)('Uint16', 2, function(init){
+ return function Uint16Array(data, byteOffset, length){
+ return init(this, data, byteOffset, length);
+ };
+ });
+
+/***/ },
+/* 222 */
+/***/ function(module, exports, __webpack_require__) {
+
+ __webpack_require__(216)('Int32', 4, function(init){
+ return function Int32Array(data, byteOffset, length){
+ return init(this, data, byteOffset, length);
+ };
+ });
+
+/***/ },
+/* 223 */
+/***/ function(module, exports, __webpack_require__) {
+
+ __webpack_require__(216)('Uint32', 4, function(init){
+ return function Uint32Array(data, byteOffset, length){
+ return init(this, data, byteOffset, length);
+ };
+ });
+
+/***/ },
+/* 224 */
+/***/ function(module, exports, __webpack_require__) {
+
+ __webpack_require__(216)('Float32', 4, function(init){
+ return function Float32Array(data, byteOffset, length){
+ return init(this, data, byteOffset, length);
+ };
+ });
+
+/***/ },
+/* 225 */
+/***/ function(module, exports, __webpack_require__) {
+
+ __webpack_require__(216)('Float64', 8, function(init){
+ return function Float64Array(data, byteOffset, length){
+ return init(this, data, byteOffset, length);
+ };
+ });
+
+/***/ },
+/* 226 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // https://github.com/tc39/Array.prototype.includes
+ var $export = __webpack_require__(7)
+ , $includes = __webpack_require__(31)(true);
+
+ $export($export.P, 'Array', {
+ includes: function includes(el /*, fromIndex = 0 */){
+ return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);
+ }
+ });
+
+ __webpack_require__(171)('includes');
+
+/***/ },
+/* 227 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // https://github.com/mathiasbynens/String.prototype.at
+ var $export = __webpack_require__(7)
+ , $at = __webpack_require__(119)(true);
+
+ $export($export.P, 'String', {
+ at: function at(pos){
+ return $at(this, pos);
+ }
+ });
+
+/***/ },
+/* 228 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // https://github.com/tc39/proposal-string-pad-start-end
+ var $export = __webpack_require__(7)
+ , $pad = __webpack_require__(229);
+
+ $export($export.P, 'String', {
+ padStart: function padStart(maxLength /*, fillString = ' ' */){
+ return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, true);
+ }
+ });
+
+/***/ },
+/* 229 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // https://github.com/tc39/proposal-string-pad-start-end
+ var toLength = __webpack_require__(32)
+ , repeat = __webpack_require__(77)
+ , defined = __webpack_require__(30);
+
+ module.exports = function(that, maxLength, fillString, left){
+ var S = String(defined(that))
+ , stringLength = S.length
+ , fillStr = fillString === undefined ? ' ' : String(fillString)
+ , intMaxLength = toLength(maxLength);
+ if(intMaxLength <= stringLength)return S;
+ if(fillStr == '')fillStr = ' ';
+ var fillLen = intMaxLength - stringLength
+ , stringFiller = repeat.call(fillStr, Math.ceil(fillLen / fillStr.length));
+ if(stringFiller.length > fillLen)stringFiller = stringFiller.slice(0, fillLen);
+ return left ? stringFiller + S : S + stringFiller;
+ };
+
+
+/***/ },
+/* 230 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // https://github.com/tc39/proposal-string-pad-start-end
+ var $export = __webpack_require__(7)
+ , $pad = __webpack_require__(229);
+
+ $export($export.P, 'String', {
+ padEnd: function padEnd(maxLength /*, fillString = ' ' */){
+ return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, false);
+ }
+ });
+
+/***/ },
+/* 231 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // https://github.com/sebmarkbage/ecmascript-string-left-right-trim
+ __webpack_require__(89)('trimLeft', function($trim){
+ return function trimLeft(){
+ return $trim(this, 1);
+ };
+ }, 'trimStart');
+
+/***/ },
+/* 232 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // https://github.com/sebmarkbage/ecmascript-string-left-right-trim
+ __webpack_require__(89)('trimRight', function($trim){
+ return function trimRight(){
+ return $trim(this, 2);
+ };
+ }, 'trimEnd');
+
+/***/ },
+/* 233 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // https://tc39.github.io/String.prototype.matchAll/
+ var $export = __webpack_require__(7)
+ , defined = __webpack_require__(30)
+ , toLength = __webpack_require__(32)
+ , isRegExp = __webpack_require__(122)
+ , getFlags = __webpack_require__(234)
+ , RegExpProto = RegExp.prototype;
+
+ var $RegExpStringIterator = function(regexp, string){
+ this._r = regexp;
+ this._s = string;
+ };
+
+ __webpack_require__(130)($RegExpStringIterator, 'RegExp String', function next(){
+ var match = this._r.exec(this._s);
+ return {value: match, done: match === null};
+ });
+
+ $export($export.P, 'String', {
+ matchAll: function matchAll(regexp){
+ defined(this);
+ if(!isRegExp(regexp))throw TypeError(regexp + ' is not a regexp!');
+ var S = String(this)
+ , flags = 'flags' in RegExpProto ? String(regexp.flags) : getFlags.call(regexp)
+ , rx = new RegExp(regexp.source, ~flags.indexOf('g') ? flags : 'g' + flags);
+ rx.lastIndex = toLength(regexp.lastIndex);
+ return new $RegExpStringIterator(rx, S);
+ }
+ });
+
+/***/ },
+/* 234 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // 21.2.5.3 get RegExp.prototype.flags
+ var anObject = __webpack_require__(12);
+ module.exports = function(){
+ var that = anObject(this)
+ , result = '';
+ if(that.global) result += 'g';
+ if(that.ignoreCase) result += 'i';
+ if(that.multiline) result += 'm';
+ if(that.unicode) result += 'u';
+ if(that.sticky) result += 'y';
+ return result;
+ };
+
+/***/ },
+/* 235 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // https://github.com/tc39/proposal-object-getownpropertydescriptors
+ var $export = __webpack_require__(7)
+ , ownKeys = __webpack_require__(204)
+ , toIObject = __webpack_require__(27)
+ , createDesc = __webpack_require__(17)
+ , gOPD = __webpack_require__(46)
+ , dP = __webpack_require__(11);
+
+ $export($export.S, 'Object', {
+ getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object){
+ var O = toIObject(object)
+ , getDesc = gOPD.f
+ , keys = ownKeys(O)
+ , result = {}
+ , i = 0
+ , key, D;
+ while(keys.length > i){
+ D = getDesc(O, key = keys[i++]);
+ if(key in result)dP.f(result, key, createDesc(0, D));
+ else result[key] = D;
+ } return result;
+ }
+ });
+
+/***/ },
+/* 236 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // https://github.com/tc39/proposal-object-values-entries
+ var $export = __webpack_require__(7)
+ , $values = __webpack_require__(237)(false);
+
+ $export($export.S, 'Object', {
+ values: function values(it){
+ return $values(it);
+ }
+ });
+
+/***/ },
+/* 237 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var getKeys = __webpack_require__(25)
+ , toIObject = __webpack_require__(27)
+ , isEnum = __webpack_require__(39).f;
+ module.exports = function(isEntries){
+ return function(it){
+ var O = toIObject(it)
+ , keys = getKeys(O)
+ , length = keys.length
+ , i = 0
+ , result = []
+ , key;
+ while(length > i)if(isEnum.call(O, key = keys[i++])){
+ result.push(isEntries ? [key, O[key]] : O[key]);
+ } return result;
+ };
+ };
+
+/***/ },
+/* 238 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // https://github.com/tc39/proposal-object-values-entries
+ var $export = __webpack_require__(7)
+ , $entries = __webpack_require__(237)(true);
+
+ $export($export.S, 'Object', {
+ entries: function entries(it){
+ return $entries(it);
+ }
+ });
+
+/***/ },
+/* 239 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var $export = __webpack_require__(7)
+ , toObject = __webpack_require__(54)
+ , aFunction = __webpack_require__(9)
+ , $defineProperty = __webpack_require__(11);
+
+ // B.2.2.2 Object.prototype.__defineGetter__(P, getter)
+ __webpack_require__(5) && $export($export.P + __webpack_require__(240), 'Object', {
+ __defineGetter__: function __defineGetter__(P, getter){
+ $defineProperty.f(toObject(this), P, {get: aFunction(getter), enumerable: true, configurable: true});
+ }
+ });
+
+/***/ },
+/* 240 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // Forced replacement prototype accessors methods
+ module.exports = __webpack_require__(47)|| !__webpack_require__(6)(function(){
+ var K = Math.random();
+ // In FF throws only define methods
+ __defineSetter__.call(null, K, function(){ /* empty */});
+ delete __webpack_require__(2)[K];
+ });
+
+/***/ },
+/* 241 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var $export = __webpack_require__(7)
+ , toObject = __webpack_require__(54)
+ , aFunction = __webpack_require__(9)
+ , $defineProperty = __webpack_require__(11);
+
+ // B.2.2.3 Object.prototype.__defineSetter__(P, setter)
+ __webpack_require__(5) && $export($export.P + __webpack_require__(240), 'Object', {
+ __defineSetter__: function __defineSetter__(P, setter){
+ $defineProperty.f(toObject(this), P, {set: aFunction(setter), enumerable: true, configurable: true});
+ }
+ });
+
+/***/ },
+/* 242 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var $export = __webpack_require__(7)
+ , toObject = __webpack_require__(54)
+ , toPrimitive = __webpack_require__(16)
+ , getPrototypeOf = __webpack_require__(55)
+ , getOwnPropertyDescriptor = __webpack_require__(46).f;
+
+ // B.2.2.4 Object.prototype.__lookupGetter__(P)
+ __webpack_require__(5) && $export($export.P + __webpack_require__(240), 'Object', {
+ __lookupGetter__: function __lookupGetter__(P){
+ var O = toObject(this)
+ , K = toPrimitive(P, true)
+ , D;
+ do {
+ if(D = getOwnPropertyDescriptor(O, K))return D.get;
+ } while(O = getPrototypeOf(O));
+ }
+ });
+
+/***/ },
+/* 243 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var $export = __webpack_require__(7)
+ , toObject = __webpack_require__(54)
+ , toPrimitive = __webpack_require__(16)
+ , getPrototypeOf = __webpack_require__(55)
+ , getOwnPropertyDescriptor = __webpack_require__(46).f;
+
+ // B.2.2.5 Object.prototype.__lookupSetter__(P)
+ __webpack_require__(5) && $export($export.P + __webpack_require__(240), 'Object', {
+ __lookupSetter__: function __lookupSetter__(P){
+ var O = toObject(this)
+ , K = toPrimitive(P, true)
+ , D;
+ do {
+ if(D = getOwnPropertyDescriptor(O, K))return D.set;
+ } while(O = getPrototypeOf(O));
+ }
+ });
+
+/***/ },
+/* 244 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // https://github.com/DavidBruant/Map-Set.prototype.toJSON
+ var $export = __webpack_require__(7);
+
+ $export($export.P + $export.R, 'Map', {toJSON: __webpack_require__(245)('Map')});
+
+/***/ },
+/* 245 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // https://github.com/DavidBruant/Map-Set.prototype.toJSON
+ var classof = __webpack_require__(150)
+ , from = __webpack_require__(246);
+ module.exports = function(NAME){
+ return function toJSON(){
+ if(classof(this) != NAME)throw TypeError(NAME + "#toJSON isn't generic");
+ return from(this);
+ };
+ };
+
+/***/ },
+/* 246 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var forOf = __webpack_require__(181);
+
+ module.exports = function(iter, ITERATOR){
+ var result = [];
+ forOf(iter, false, result.push, result, ITERATOR);
+ return result;
+ };
+
+
+/***/ },
+/* 247 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // https://github.com/DavidBruant/Map-Set.prototype.toJSON
+ var $export = __webpack_require__(7);
+
+ $export($export.P + $export.R, 'Set', {toJSON: __webpack_require__(245)('Set')});
+
+/***/ },
+/* 248 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // https://github.com/ljharb/proposal-global
+ var $export = __webpack_require__(7);
+
+ $export($export.S, 'System', {global: __webpack_require__(2)});
+
+/***/ },
+/* 249 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // https://github.com/ljharb/proposal-is-error
+ var $export = __webpack_require__(7)
+ , cof = __webpack_require__(29);
+
+ $export($export.S, 'Error', {
+ isError: function isError(it){
+ return cof(it) === 'Error';
+ }
+ });
+
+/***/ },
+/* 250 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // https://gist.github.com/BrendanEich/4294d5c212a6d2254703
+ var $export = __webpack_require__(7);
+
+ $export($export.S, 'Math', {
+ iaddh: function iaddh(x0, x1, y0, y1){
+ var $x0 = x0 >>> 0
+ , $x1 = x1 >>> 0
+ , $y0 = y0 >>> 0;
+ return $x1 + (y1 >>> 0) + (($x0 & $y0 | ($x0 | $y0) & ~($x0 + $y0 >>> 0)) >>> 31) | 0;
+ }
+ });
+
+/***/ },
+/* 251 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // https://gist.github.com/BrendanEich/4294d5c212a6d2254703
+ var $export = __webpack_require__(7);
+
+ $export($export.S, 'Math', {
+ isubh: function isubh(x0, x1, y0, y1){
+ var $x0 = x0 >>> 0
+ , $x1 = x1 >>> 0
+ , $y0 = y0 >>> 0;
+ return $x1 - (y1 >>> 0) - ((~$x0 & $y0 | ~($x0 ^ $y0) & $x0 - $y0 >>> 0) >>> 31) | 0;
+ }
+ });
+
+/***/ },
+/* 252 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // https://gist.github.com/BrendanEich/4294d5c212a6d2254703
+ var $export = __webpack_require__(7);
+
+ $export($export.S, 'Math', {
+ imulh: function imulh(u, v){
+ var UINT16 = 0xffff
+ , $u = +u
+ , $v = +v
+ , u0 = $u & UINT16
+ , v0 = $v & UINT16
+ , u1 = $u >> 16
+ , v1 = $v >> 16
+ , t = (u1 * v0 >>> 0) + (u0 * v0 >>> 16);
+ return u1 * v1 + (t >> 16) + ((u0 * v1 >>> 0) + (t & UINT16) >> 16);
+ }
+ });
+
+/***/ },
+/* 253 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // https://gist.github.com/BrendanEich/4294d5c212a6d2254703
+ var $export = __webpack_require__(7);
+
+ $export($export.S, 'Math', {
+ umulh: function umulh(u, v){
+ var UINT16 = 0xffff
+ , $u = +u
+ , $v = +v
+ , u0 = $u & UINT16
+ , v0 = $v & UINT16
+ , u1 = $u >>> 16
+ , v1 = $v >>> 16
+ , t = (u1 * v0 >>> 0) + (u0 * v0 >>> 16);
+ return u1 * v1 + (t >>> 16) + ((u0 * v1 >>> 0) + (t & UINT16) >>> 16);
+ }
+ });
+
+/***/ },
+/* 254 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var metadata = __webpack_require__(255)
+ , anObject = __webpack_require__(12)
+ , toMetaKey = metadata.key
+ , ordinaryDefineOwnMetadata = metadata.set;
+
+ metadata.exp({defineMetadata: function defineMetadata(metadataKey, metadataValue, target, targetKey){
+ ordinaryDefineOwnMetadata(metadataKey, metadataValue, anObject(target), toMetaKey(targetKey));
+ }});
+
+/***/ },
+/* 255 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var Map = __webpack_require__(186)
+ , $export = __webpack_require__(7)
+ , shared = __webpack_require__(21)('metadata')
+ , store = shared.store || (shared.store = new (__webpack_require__(190)));
+
+ var getOrCreateMetadataMap = function(target, targetKey, create){
+ var targetMetadata = store.get(target);
+ if(!targetMetadata){
+ if(!create)return undefined;
+ store.set(target, targetMetadata = new Map);
+ }
+ var keyMetadata = targetMetadata.get(targetKey);
+ if(!keyMetadata){
+ if(!create)return undefined;
+ targetMetadata.set(targetKey, keyMetadata = new Map);
+ } return keyMetadata;
+ };
+ var ordinaryHasOwnMetadata = function(MetadataKey, O, P){
+ var metadataMap = getOrCreateMetadataMap(O, P, false);
+ return metadataMap === undefined ? false : metadataMap.has(MetadataKey);
+ };
+ var ordinaryGetOwnMetadata = function(MetadataKey, O, P){
+ var metadataMap = getOrCreateMetadataMap(O, P, false);
+ return metadataMap === undefined ? undefined : metadataMap.get(MetadataKey);
+ };
+ var ordinaryDefineOwnMetadata = function(MetadataKey, MetadataValue, O, P){
+ getOrCreateMetadataMap(O, P, true).set(MetadataKey, MetadataValue);
+ };
+ var ordinaryOwnMetadataKeys = function(target, targetKey){
+ var metadataMap = getOrCreateMetadataMap(target, targetKey, false)
+ , keys = [];
+ if(metadataMap)metadataMap.forEach(function(_, key){ keys.push(key); });
+ return keys;
+ };
+ var toMetaKey = function(it){
+ return it === undefined || typeof it == 'symbol' ? it : String(it);
+ };
+ var exp = function(O){
+ $export($export.S, 'Reflect', O);
+ };
+
+ module.exports = {
+ store: store,
+ map: getOrCreateMetadataMap,
+ has: ordinaryHasOwnMetadata,
+ get: ordinaryGetOwnMetadata,
+ set: ordinaryDefineOwnMetadata,
+ keys: ordinaryOwnMetadataKeys,
+ key: toMetaKey,
+ exp: exp
+ };
+
+/***/ },
+/* 256 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var metadata = __webpack_require__(255)
+ , anObject = __webpack_require__(12)
+ , toMetaKey = metadata.key
+ , getOrCreateMetadataMap = metadata.map
+ , store = metadata.store;
+
+ metadata.exp({deleteMetadata: function deleteMetadata(metadataKey, target /*, targetKey */){
+ var targetKey = arguments.length < 3 ? undefined : toMetaKey(arguments[2])
+ , metadataMap = getOrCreateMetadataMap(anObject(target), targetKey, false);
+ if(metadataMap === undefined || !metadataMap['delete'](metadataKey))return false;
+ if(metadataMap.size)return true;
+ var targetMetadata = store.get(target);
+ targetMetadata['delete'](targetKey);
+ return !!targetMetadata.size || store['delete'](target);
+ }});
+
+/***/ },
+/* 257 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var metadata = __webpack_require__(255)
+ , anObject = __webpack_require__(12)
+ , getPrototypeOf = __webpack_require__(55)
+ , ordinaryHasOwnMetadata = metadata.has
+ , ordinaryGetOwnMetadata = metadata.get
+ , toMetaKey = metadata.key;
+
+ var ordinaryGetMetadata = function(MetadataKey, O, P){
+ var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P);
+ if(hasOwn)return ordinaryGetOwnMetadata(MetadataKey, O, P);
+ var parent = getPrototypeOf(O);
+ return parent !== null ? ordinaryGetMetadata(MetadataKey, parent, P) : undefined;
+ };
+
+ metadata.exp({getMetadata: function getMetadata(metadataKey, target /*, targetKey */){
+ return ordinaryGetMetadata(metadataKey, anObject(target), arguments.length < 3 ? undefined : toMetaKey(arguments[2]));
+ }});
+
+/***/ },
+/* 258 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var Set = __webpack_require__(189)
+ , from = __webpack_require__(246)
+ , metadata = __webpack_require__(255)
+ , anObject = __webpack_require__(12)
+ , getPrototypeOf = __webpack_require__(55)
+ , ordinaryOwnMetadataKeys = metadata.keys
+ , toMetaKey = metadata.key;
+
+ var ordinaryMetadataKeys = function(O, P){
+ var oKeys = ordinaryOwnMetadataKeys(O, P)
+ , parent = getPrototypeOf(O);
+ if(parent === null)return oKeys;
+ var pKeys = ordinaryMetadataKeys(parent, P);
+ return pKeys.length ? oKeys.length ? from(new Set(oKeys.concat(pKeys))) : pKeys : oKeys;
+ };
+
+ metadata.exp({getMetadataKeys: function getMetadataKeys(target /*, targetKey */){
+ return ordinaryMetadataKeys(anObject(target), arguments.length < 2 ? undefined : toMetaKey(arguments[1]));
+ }});
+
+/***/ },
+/* 259 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var metadata = __webpack_require__(255)
+ , anObject = __webpack_require__(12)
+ , ordinaryGetOwnMetadata = metadata.get
+ , toMetaKey = metadata.key;
+
+ metadata.exp({getOwnMetadata: function getOwnMetadata(metadataKey, target /*, targetKey */){
+ return ordinaryGetOwnMetadata(metadataKey, anObject(target)
+ , arguments.length < 3 ? undefined : toMetaKey(arguments[2]));
+ }});
+
+/***/ },
+/* 260 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var metadata = __webpack_require__(255)
+ , anObject = __webpack_require__(12)
+ , ordinaryOwnMetadataKeys = metadata.keys
+ , toMetaKey = metadata.key;
+
+ metadata.exp({getOwnMetadataKeys: function getOwnMetadataKeys(target /*, targetKey */){
+ return ordinaryOwnMetadataKeys(anObject(target), arguments.length < 2 ? undefined : toMetaKey(arguments[1]));
+ }});
+
+/***/ },
+/* 261 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var metadata = __webpack_require__(255)
+ , anObject = __webpack_require__(12)
+ , getPrototypeOf = __webpack_require__(55)
+ , ordinaryHasOwnMetadata = metadata.has
+ , toMetaKey = metadata.key;
+
+ var ordinaryHasMetadata = function(MetadataKey, O, P){
+ var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P);
+ if(hasOwn)return true;
+ var parent = getPrototypeOf(O);
+ return parent !== null ? ordinaryHasMetadata(MetadataKey, parent, P) : false;
+ };
+
+ metadata.exp({hasMetadata: function hasMetadata(metadataKey, target /*, targetKey */){
+ return ordinaryHasMetadata(metadataKey, anObject(target), arguments.length < 3 ? undefined : toMetaKey(arguments[2]));
+ }});
+
+/***/ },
+/* 262 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var metadata = __webpack_require__(255)
+ , anObject = __webpack_require__(12)
+ , ordinaryHasOwnMetadata = metadata.has
+ , toMetaKey = metadata.key;
+
+ metadata.exp({hasOwnMetadata: function hasOwnMetadata(metadataKey, target /*, targetKey */){
+ return ordinaryHasOwnMetadata(metadataKey, anObject(target)
+ , arguments.length < 3 ? undefined : toMetaKey(arguments[2]));
+ }});
+
+/***/ },
+/* 263 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var metadata = __webpack_require__(255)
+ , anObject = __webpack_require__(12)
+ , aFunction = __webpack_require__(9)
+ , toMetaKey = metadata.key
+ , ordinaryDefineOwnMetadata = metadata.set;
+
+ metadata.exp({metadata: function metadata(metadataKey, metadataValue){
+ return function decorator(target, targetKey){
+ ordinaryDefineOwnMetadata(
+ metadataKey, metadataValue,
+ (targetKey !== undefined ? anObject : aFunction)(target),
+ toMetaKey(targetKey)
+ );
+ };
+ }});
+
+/***/ },
+/* 264 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var $export = __webpack_require__(7)
+ , $task = __webpack_require__(183);
+ $export($export.G + $export.B, {
+ setImmediate: $task.set,
+ clearImmediate: $task.clear
+ });
+
+/***/ },
+/* 265 */
+/***/ function(module, exports, __webpack_require__) {
+
+ __webpack_require__(176);
+ var global = __webpack_require__(2)
+ , hide = __webpack_require__(10)
+ , Iterators = __webpack_require__(129)
+ , TO_STRING_TAG = __webpack_require__(23)('toStringTag');
+
+ for(var collections = ['NodeList', 'DOMTokenList', 'MediaList', 'StyleSheetList', 'CSSRuleList'], i = 0; i < 5; i++){
+ var NAME = collections[i]
+ , Collection = global[NAME]
+ , proto = Collection && Collection.prototype;
+ if(proto && !proto[TO_STRING_TAG])hide(proto, TO_STRING_TAG, NAME);
+ Iterators[NAME] = Iterators.Array;
+ }
+
+/***/ },
+/* 266 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // ie9- setTimeout & setInterval additional parameters fix
+ var global = __webpack_require__(2)
+ , $export = __webpack_require__(7)
+ , invoke = __webpack_require__(72)
+ , partial = __webpack_require__(267)
+ , navigator = global.navigator
+ , MSIE = !!navigator && /MSIE .\./.test(navigator.userAgent); // <- dirty ie9- check
+ var wrap = function(set){
+ return MSIE ? function(fn, time /*, ...args */){
+ return set(invoke(
+ partial,
+ [].slice.call(arguments, 2),
+ typeof fn == 'function' ? fn : Function(fn)
+ ), time);
+ } : set;
+ };
+ $export($export.G + $export.B + $export.F * MSIE, {
+ setTimeout: wrap(global.setTimeout),
+ setInterval: wrap(global.setInterval)
+ });
+
+/***/ },
+/* 267 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var path = __webpack_require__(268)
+ , invoke = __webpack_require__(72)
+ , aFunction = __webpack_require__(9);
+ module.exports = function(/* ...pargs */){
+ var fn = aFunction(this)
+ , length = arguments.length
+ , pargs = Array(length)
+ , i = 0
+ , _ = path._
+ , holder = false;
+ while(length > i)if((pargs[i] = arguments[i++]) === _)holder = true;
+ return function(/* ...args */){
+ var that = this
+ , aLen = arguments.length
+ , j = 0, k = 0, args;
+ if(!holder && !aLen)return invoke(fn, pargs, that);
+ args = pargs.slice();
+ if(holder)for(;length > j; j++)if(args[j] === _)args[j] = arguments[k++];
+ while(aLen > k)args.push(arguments[k++]);
+ return invoke(fn, args, that);
+ };
+ };
+
+/***/ },
+/* 268 */
+/***/ function(module, exports, __webpack_require__) {
+
+ module.exports = __webpack_require__(3);
+
+/***/ },
+/* 269 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var ctx = __webpack_require__(8)
+ , $export = __webpack_require__(7)
+ , createDesc = __webpack_require__(17)
+ , assign = __webpack_require__(65)
+ , create = __webpack_require__(41)
+ , getPrototypeOf = __webpack_require__(55)
+ , getKeys = __webpack_require__(25)
+ , dP = __webpack_require__(11)
+ , keyOf = __webpack_require__(24)
+ , aFunction = __webpack_require__(9)
+ , forOf = __webpack_require__(181)
+ , isIterable = __webpack_require__(217)
+ , $iterCreate = __webpack_require__(130)
+ , step = __webpack_require__(177)
+ , isObject = __webpack_require__(13)
+ , toIObject = __webpack_require__(27)
+ , DESCRIPTORS = __webpack_require__(5)
+ , has = __webpack_require__(4);
+
+ // 0 -> Dict.forEach
+ // 1 -> Dict.map
+ // 2 -> Dict.filter
+ // 3 -> Dict.some
+ // 4 -> Dict.every
+ // 5 -> Dict.find
+ // 6 -> Dict.findKey
+ // 7 -> Dict.mapPairs
+ var createDictMethod = function(TYPE){
+ var IS_MAP = TYPE == 1
+ , IS_EVERY = TYPE == 4;
+ return function(object, callbackfn, that /* = undefined */){
+ var f = ctx(callbackfn, that, 3)
+ , O = toIObject(object)
+ , result = IS_MAP || TYPE == 7 || TYPE == 2
+ ? new (typeof this == 'function' ? this : Dict) : undefined
+ , key, val, res;
+ for(key in O)if(has(O, key)){
+ val = O[key];
+ res = f(val, key, object);
+ if(TYPE){
+ if(IS_MAP)result[key] = res; // map
+ else if(res)switch(TYPE){
+ case 2: result[key] = val; break; // filter
+ case 3: return true; // some
+ case 5: return val; // find
+ case 6: return key; // findKey
+ case 7: result[res[0]] = res[1]; // mapPairs
+ } else if(IS_EVERY)return false; // every
+ }
+ }
+ return TYPE == 3 || IS_EVERY ? IS_EVERY : result;
+ };
+ };
+ var findKey = createDictMethod(6);
+
+ var createDictIter = function(kind){
+ return function(it){
+ return new DictIterator(it, kind);
+ };
+ };
+ var DictIterator = function(iterated, kind){
+ this._t = toIObject(iterated); // target
+ this._a = getKeys(iterated); // keys
+ this._i = 0; // next index
+ this._k = kind; // kind
+ };
+ $iterCreate(DictIterator, 'Dict', function(){
+ var that = this
+ , O = that._t
+ , keys = that._a
+ , kind = that._k
+ , key;
+ do {
+ if(that._i >= keys.length){
+ that._t = undefined;
+ return step(1);
+ }
+ } while(!has(O, key = keys[that._i++]));
+ if(kind == 'keys' )return step(0, key);
+ if(kind == 'values')return step(0, O[key]);
+ return step(0, [key, O[key]]);
+ });
+
+ function Dict(iterable){
+ var dict = create(null);
+ if(iterable != undefined){
+ if(isIterable(iterable)){
+ forOf(iterable, true, function(key, value){
+ dict[key] = value;
+ });
+ } else assign(dict, iterable);
+ }
+ return dict;
+ }
+ Dict.prototype = null;
+
+ function reduce(object, mapfn, init){
+ aFunction(mapfn);
+ var O = toIObject(object)
+ , keys = getKeys(O)
+ , length = keys.length
+ , i = 0
+ , memo, key;
+ if(arguments.length < 3){
+ if(!length)throw TypeError('Reduce of empty object with no initial value');
+ memo = O[keys[i++]];
+ } else memo = Object(init);
+ while(length > i)if(has(O, key = keys[i++])){
+ memo = mapfn(memo, O[key], key, object);
+ }
+ return memo;
+ }
+
+ function includes(object, el){
+ return (el == el ? keyOf(object, el) : findKey(object, function(it){
+ return it != it;
+ })) !== undefined;
+ }
+
+ function get(object, key){
+ if(has(object, key))return object[key];
+ }
+ function set(object, key, value){
+ if(DESCRIPTORS && key in Object)dP.f(object, key, createDesc(0, value));
+ else object[key] = value;
+ return object;
+ }
+
+ function isDict(it){
+ return isObject(it) && getPrototypeOf(it) === Dict.prototype;
+ }
+
+ $export($export.G + $export.F, {Dict: Dict});
+
+ $export($export.S, 'Dict', {
+ keys: createDictIter('keys'),
+ values: createDictIter('values'),
+ entries: createDictIter('entries'),
+ forEach: createDictMethod(0),
+ map: createDictMethod(1),
+ filter: createDictMethod(2),
+ some: createDictMethod(3),
+ every: createDictMethod(4),
+ find: createDictMethod(5),
+ findKey: findKey,
+ mapPairs: createDictMethod(7),
+ reduce: reduce,
+ keyOf: keyOf,
+ includes: includes,
+ has: has,
+ get: get,
+ set: set,
+ isDict: isDict
+ });
+
+/***/ },
+/* 270 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var anObject = __webpack_require__(12)
+ , get = __webpack_require__(149);
+ module.exports = __webpack_require__(3).getIterator = function(it){
+ var iterFn = get(it);
+ if(typeof iterFn != 'function')throw TypeError(it + ' is not iterable!');
+ return anObject(iterFn.call(it));
+ };
+
+/***/ },
+/* 271 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var global = __webpack_require__(2)
+ , core = __webpack_require__(3)
+ , $export = __webpack_require__(7)
+ , partial = __webpack_require__(267);
+ // https://esdiscuss.org/topic/promise-returning-delay-function
+ $export($export.G + $export.F, {
+ delay: function delay(time){
+ return new (core.Promise || global.Promise)(function(resolve){
+ setTimeout(partial.call(resolve, true), time);
+ });
+ }
+ });
+
+/***/ },
+/* 272 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var path = __webpack_require__(268)
+ , $export = __webpack_require__(7);
+
+ // Placeholder
+ __webpack_require__(3)._ = path._ = path._ || {};
+
+ $export($export.P + $export.F, 'Function', {part: __webpack_require__(267)});
+
+/***/ },
+/* 273 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var $export = __webpack_require__(7);
+
+ $export($export.S + $export.F, 'Object', {isObject: __webpack_require__(13)});
+
+/***/ },
+/* 274 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var $export = __webpack_require__(7);
+
+ $export($export.S + $export.F, 'Object', {classof: __webpack_require__(150)});
+
+/***/ },
+/* 275 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var $export = __webpack_require__(7)
+ , define = __webpack_require__(276);
+
+ $export($export.S + $export.F, 'Object', {define: define});
+
+/***/ },
+/* 276 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var dP = __webpack_require__(11)
+ , gOPD = __webpack_require__(46)
+ , ownKeys = __webpack_require__(204)
+ , toIObject = __webpack_require__(27);
+
+ module.exports = function define(target, mixin){
+ var keys = ownKeys(toIObject(mixin))
+ , length = keys.length
+ , i = 0, key;
+ while(length > i)dP.f(target, key = keys[i++], gOPD.f(mixin, key));
+ return target;
+ };
+
+/***/ },
+/* 277 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var $export = __webpack_require__(7)
+ , define = __webpack_require__(276)
+ , create = __webpack_require__(41);
+
+ $export($export.S + $export.F, 'Object', {
+ make: function(proto, mixin){
+ return define(create(proto), mixin);
+ }
+ });
+
+/***/ },
+/* 278 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ __webpack_require__(128)(Number, 'Number', function(iterated){
+ this._l = +iterated;
+ this._i = 0;
+ }, function(){
+ var i = this._i++
+ , done = !(i < this._l);
+ return {done: done, value: done ? undefined : i};
+ });
+
+/***/ },
+/* 279 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // https://github.com/benjamingr/RexExp.escape
+ var $export = __webpack_require__(7)
+ , $re = __webpack_require__(280)(/[\\^$*+?.()|[\]{}]/g, '\\$&');
+
+ $export($export.S, 'RegExp', {escape: function escape(it){ return $re(it); }});
+
+
+/***/ },
+/* 280 */
+/***/ function(module, exports) {
+
+ module.exports = function(regExp, replace){
+ var replacer = replace === Object(replace) ? function(part){
+ return replace[part];
+ } : replace;
+ return function(it){
+ return String(it).replace(regExp, replacer);
+ };
+ };
+
+/***/ },
+/* 281 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var $export = __webpack_require__(7);
+ var $re = __webpack_require__(280)(/[&<>"']/g, {
+ '&': '&',
+ '<': '<',
+ '>': '>',
+ '"': '"',
+ "'": '''
+ });
+
+ $export($export.P + $export.F, 'String', {escapeHTML: function escapeHTML(){ return $re(this); }});
+
+/***/ },
+/* 282 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var $export = __webpack_require__(7);
+ var $re = __webpack_require__(280)(/&(?:amp|lt|gt|quot|apos);/g, {
+ '&': '&',
+ '<': '<',
+ '>': '>',
+ '"': '"',
+ ''': "'"
+ });
+
+ $export($export.P + $export.F, 'String', {unescapeHTML: function unescapeHTML(){ return $re(this); }});
+
+/***/ }
+/******/ ]);
+// CommonJS export
+if(typeof module != 'undefined' && module.exports)module.exports = __e;
+// RequireJS export
+else if(typeof define == 'function' && define.amd)define(function(){return __e});
+// Export to global object
+else __g.core = __e;
+}(1, 1);
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/client/library.min.js b/node_modules/babel-register/node_modules/core-js/client/library.min.js
new file mode 100644
index 0000000..cedc1a9
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/client/library.min.js
@@ -0,0 +1,10 @@
+/**
+ * core-js 2.2.0
+ * https://github.com/zloirock/core-js
+ * License: http://rock.mit-license.org
+ * © 2016 Denis Pushkarev
+ */
+!function(b,c,a){"use strict";!function(b){function __webpack_require__(c){if(a[c])return a[c].exports;var d=a[c]={exports:{},id:c,loaded:!1};return b[c].call(d.exports,d,d.exports,__webpack_require__),d.loaded=!0,d.exports}var a={};return __webpack_require__.m=b,__webpack_require__.c=a,__webpack_require__.p="",__webpack_require__(0)}([function(b,c,a){a(1),a(48),a(49),a(50),a(52),a(53),a(56),a(57),a(58),a(59),a(60),a(61),a(62),a(63),a(64),a(66),a(68),a(70),a(73),a(74),a(78),a(79),a(80),a(81),a(83),a(84),a(85),a(86),a(87),a(91),a(93),a(94),a(95),a(97),a(98),a(99),a(101),a(102),a(103),a(105),a(106),a(107),a(108),a(109),a(110),a(111),a(112),a(113),a(114),a(115),a(116),a(117),a(118),a(120),a(124),a(125),a(126),a(127),a(131),a(133),a(134),a(135),a(136),a(137),a(138),a(139),a(140),a(141),a(142),a(143),a(144),a(145),a(146),a(152),a(153),a(155),a(156),a(157),a(160),a(161),a(162),a(163),a(164),a(166),a(167),a(168),a(169),a(172),a(174),a(175),a(176),a(178),a(180),a(186),a(189),a(190),a(192),a(193),a(194),a(195),a(196),a(197),a(198),a(199),a(200),a(201),a(202),a(203),a(205),a(206),a(207),a(208),a(209),a(210),a(211),a(214),a(215),a(218),a(219),a(220),a(221),a(222),a(223),a(224),a(225),a(226),a(227),a(228),a(230),a(231),a(232),a(233),a(235),a(236),a(238),a(239),a(241),a(242),a(243),a(244),a(247),a(248),a(249),a(250),a(251),a(252),a(253),a(254),a(256),a(257),a(258),a(259),a(260),a(261),a(262),a(263),a(264),a(265),a(266),a(269),a(149),a(270),a(217),a(271),a(272),a(273),a(274),a(275),a(277),a(278),a(279),a(281),b.exports=a(282)},function(fa,ea,b){var q=b(2),Y=b(3),e=b(4),t=b(5),f=b(7),U=b(18),da=b(19).KEY,J=b(6),M=b(21),x=b(22),ca=b(20),s=b(23),ba=b(24),$=b(37),Z=b(40),v=b(12),n=b(27),y=b(16),u=b(17),l=b(41),P=b(44),Q=b(46),R=b(11),T=Q.f,g=R.f,D=P.f,c=q.Symbol,o=q.JSON,p=o&&o.stringify,m=!1,h="prototype",d=s("_hidden"),K=s("toPrimitive"),aa={}.propertyIsEnumerable,r=M("symbol-registry"),i=M("symbols"),k=Object[h],j="function"==typeof c,z=q.QObject,A=t&&J(function(){return 7!=l(g({},"a",{get:function(){return g(this,"a",{value:7}).a}})).a})?function(c,a,d){var b=T(k,a);b&&delete k[a],g(c,a,d),b&&c!==k&&g(k,a,b)}:g,S=function(a){var b=i[a]=l(c[h]);return b._k=a,t&&m&&A(k,a,{configurable:!0,set:function(b){e(this,d)&&e(this[d],a)&&(this[d][a]=!1),A(this,a,u(1,b))}}),b},B=j&&"symbol"==typeof c.iterator?function(a){return"symbol"==typeof a}:function(a){return a instanceof c},C=function defineProperty(a,b,c){return v(a),b=y(b,!0),v(c),e(i,b)?(c.enumerable?(e(a,d)&&a[d][b]&&(a[d][b]=!1),c=l(c,{enumerable:u(0,!1)})):(e(a,d)||g(a,d,u(1,{})),a[d][b]=!0),A(a,b,c)):g(a,b,c)},V=function defineProperties(a,b){v(a);for(var c,d=$(b=n(b)),e=0,f=d.length;f>e;)C(a,c=d[e++],b[c]);return a},X=function create(b,c){return c===a?l(b):V(l(b),c)},L=function propertyIsEnumerable(a){var b=aa.call(this,a=y(a,!0));return b||!e(this,a)||!e(i,a)||e(this,d)&&this[d][a]?b:!0},E=function getOwnPropertyDescriptor(a,b){var c=T(a=n(a),b=y(b,!0));return!c||!e(i,b)||e(a,d)&&a[d][b]||(c.enumerable=!0),c},H=function getOwnPropertyNames(g){for(var a,b=D(n(g)),c=[],f=0;b.length>f;)e(i,a=b[f++])||a==d||a==da||c.push(a);return c},G=function getOwnPropertySymbols(f){for(var a,b=D(n(f)),c=[],d=0;b.length>d;)e(i,a=b[d++])&&c.push(i[a]);return c},_=function stringify(e){if(e!==a&&!B(e)){for(var b,c,d=[e],f=1;arguments.length>f;)d.push(arguments[f++]);return b=d[1],"function"==typeof b&&(c=b),!c&&Z(b)||(b=function(b,a){return c&&(a=c.call(this,b,a)),B(a)?void 0:a}),d[1]=b,p.apply(o,d)}},W=J(function(){var a=c();return"[null]"!=p([a])||"{}"!=p({a:a})||"{}"!=p(Object(a))});j||(c=function Symbol(){if(this instanceof c)throw TypeError("Symbol is not a constructor!");return S(ca(arguments.length>0?arguments[0]:a))},U(c[h],"toString",function toString(){return this._k}),Q.f=E,R.f=C,b(45).f=P.f=H,b(39).f=L,b(38).f=G,t&&!b(47)&&U(k,"propertyIsEnumerable",L,!0)),f(f.G+f.W+f.F*!j,{Symbol:c});for(var F="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),O=0;F.length>O;){var w=F[O++],I=Y.Symbol,N=s(w);w in I||g(I,w,{value:j?N:S(N)})}z&&z[h]&&z[h].findChild||(m=!0),f(f.S+f.F*!j,"Symbol",{"for":function(a){return e(r,a+="")?r[a]:r[a]=c(a)},keyFor:function keyFor(a){if(B(a))return ba(r,a);throw TypeError(a+" is not a symbol!")},useSetter:function(){m=!0},useSimple:function(){m=!1}}),f(f.S+f.F*!j,"Object",{create:X,defineProperty:C,defineProperties:V,getOwnPropertyDescriptor:E,getOwnPropertyNames:H,getOwnPropertySymbols:G}),o&&f(f.S+f.F*(!j||W),"JSON",{stringify:_}),c[h][K]||b(10)(c[h],K,c[h].valueOf),x(c,"Symbol"),x(Math,"Math",!0),x(q.JSON,"JSON",!0)},function(a,d){var b=a.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof c&&(c=b)},function(a,d){var c=a.exports={version:"2.2.0"};"number"==typeof b&&(b=c)},function(a,c){var b={}.hasOwnProperty;a.exports=function(a,c){return b.call(a,c)}},function(a,c,b){a.exports=!b(6)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(a,b){a.exports=function(a){try{return!!a()}catch(b){return!0}}},function(h,j,c){var d=c(2),f=c(3),g=c(8),i=c(10),e="prototype",b=function(j,l,o){var c,n,h,s=j&b.F,p=j&b.G,t=j&b.S,r=j&b.P,u=j&b.B,v=j&b.W,m=p?f:f[l]||(f[l]={}),q=m[e],k=p?d:t?d[l]:(d[l]||{})[e];p&&(o=l);for(c in o)n=!s&&k&&k[c]!==a,n&&c in m||(h=n?k[c]:o[c],m[c]=p&&"function"!=typeof k[c]?o[c]:u&&n?g(h,d):v&&k[c]==h?function(a){var b=function(b,c,d){if(this instanceof a){switch(arguments.length){case 0:return new a;case 1:return new a(b);case 2:return new a(b,c)}return new a(b,c,d)}return a.apply(this,arguments)};return b[e]=a[e],b}(h):r&&"function"==typeof h?g(Function.call,h):h,r&&((m.virtual||(m.virtual={}))[c]=h,j&b.R&&q&&!q[c]&&i(q,c,h)))};b.F=1,b.G=2,b.S=4,b.P=8,b.B=16,b.W=32,b.U=64,b.R=128,h.exports=b},function(b,e,c){var d=c(9);b.exports=function(b,c,e){if(d(b),c===a)return b;switch(e){case 1:return function(a){return b.call(c,a)};case 2:return function(a,d){return b.call(c,a,d)};case 3:return function(a,d,e){return b.call(c,a,d,e)}}return function(){return b.apply(c,arguments)}}},function(a,b){a.exports=function(a){if("function"!=typeof a)throw TypeError(a+" is not a function!");return a}},function(b,e,a){var c=a(11),d=a(17);b.exports=a(5)?function(a,b,e){return c.f(a,b,d(1,e))}:function(a,b,c){return a[b]=c,a}},function(g,c,a){var b=a(12),d=a(14),e=a(16),f=Object.defineProperty;c.f=a(5)?Object.defineProperty:function defineProperty(c,g,a){if(b(c),g=e(g,!0),b(a),d)try{return f(c,g,a)}catch(h){}if("get"in a||"set"in a)throw TypeError("Accessors not supported!");return"value"in a&&(c[g]=a.value),c}},function(a,d,b){var c=b(13);a.exports=function(a){if(!c(a))throw TypeError(a+" is not an object!");return a}},function(a,b){a.exports=function(a){return"object"==typeof a?null!==a:"function"==typeof a}},function(b,c,a){b.exports=!a(5)&&!a(6)(function(){return 7!=Object.defineProperty(a(15)("div"),"a",{get:function(){return 7}}).a})},function(d,f,b){var c=b(13),a=b(2).document,e=c(a)&&c(a.createElement);d.exports=function(b){return e?a.createElement(b):{}}},function(b,d,c){var a=c(13);b.exports=function(b,e){if(!a(b))return b;var c,d;if(e&&"function"==typeof(c=b.toString)&&!a(d=c.call(b)))return d;if("function"==typeof(c=b.valueOf)&&!a(d=c.call(b)))return d;if(!e&&"function"==typeof(c=b.toString)&&!a(d=c.call(b)))return d;throw TypeError("Can't convert object to primitive value")}},function(a,b){a.exports=function(a,b){return{enumerable:!(1&a),configurable:!(2&a),writable:!(4&a),value:b}}},function(a,c,b){a.exports=b(10)},function(k,o,b){var a=b(20)("meta"),i=b(13),d=b(4),g=b(11).f,f=0,c=Object.isExtensible||function(){return!0},j=!b(6)(function(){return c(Object.preventExtensions({}))}),e=function(b){g(b,a,{value:{i:"O"+ ++f,w:{}}})},l=function(b,f){if(!i(b))return"symbol"==typeof b?b:("string"==typeof b?"S":"P")+b;if(!d(b,a)){if(!c(b))return"F";if(!f)return"E";e(b)}return b[a].i},m=function(b,f){if(!d(b,a)){if(!c(b))return!0;if(!f)return!1;e(b)}return b[a].w},h=function(b){return j&&n.NEED&&c(b)&&!d(b,a)&&e(b),b},n=k.exports={KEY:a,NEED:!1,fastKey:l,getWeak:m,onFreeze:h}},function(b,e){var c=0,d=Math.random();b.exports=function(b){return"Symbol(".concat(b===a?"":b,")_",(++c+d).toString(36))}},function(d,f,e){var a=e(2),b="__core-js_shared__",c=a[b]||(a[b]={});d.exports=function(a){return c[a]||(c[a]={})}},function(c,f,a){var d=a(11).f,e=a(4),b=a(23)("toStringTag");c.exports=function(a,c,f){a&&!e(a=f?a:a.prototype,b)&&d(a,b,{configurable:!0,value:c})}},function(e,g,a){var c=a(21)("wks"),f=a(20),b=a(2).Symbol,d="function"==typeof b;e.exports=function(a){return c[a]||(c[a]=d&&b[a]||(d?b:f)("Symbol."+a))}},function(b,e,a){var c=a(25),d=a(27);b.exports=function(g,h){for(var a,b=d(g),e=c(b),i=e.length,f=0;i>f;)if(b[a=e[f++]]===h)return a}},function(b,e,a){var c=a(26),d=a(36);b.exports=Object.keys||function keys(a){return c(a,d)}},function(c,g,a){var b=a(4),d=a(27),e=a(31)(!1),f=a(35)("IE_PROTO");c.exports=function(j,h){var a,g=d(j),i=0,c=[];for(a in g)a!=f&&b(g,a)&&c.push(a);for(;h.length>i;)b(g,a=h[i++])&&(~e(c,a)||c.push(a));return c}},function(b,e,a){var c=a(28),d=a(30);b.exports=function(a){return c(d(a))}},function(a,d,b){var c=b(29);a.exports=Object("z").propertyIsEnumerable(0)?Object:function(a){return"String"==c(a)?a.split(""):Object(a)}},function(a,c){var b={}.toString;a.exports=function(a){return b.call(a).slice(8,-1)}},function(b,c){b.exports=function(b){if(b==a)throw TypeError("Can't call method on "+b);return b}},function(b,f,a){var c=a(27),d=a(32),e=a(34);b.exports=function(a){return function(j,g,k){var h,f=c(j),i=d(f.length),b=e(k,i);if(a&&g!=g){for(;i>b;)if(h=f[b++],h!=h)return!0}else for(;i>b;b++)if((a||b in f)&&f[b]===g)return a||b;return!a&&-1}}},function(a,e,b){var c=b(33),d=Math.min;a.exports=function(a){return a>0?d(c(a),9007199254740991):0}},function(a,d){var b=Math.ceil,c=Math.floor;a.exports=function(a){return isNaN(a=+a)?0:(a>0?c:b)(a)}},function(a,f,b){var c=b(33),d=Math.max,e=Math.min;a.exports=function(a,b){return a=c(a),0>a?d(a+b,0):e(a,b)}},function(c,e,a){var b=a(21)("keys"),d=a(20);c.exports=function(a){return b[a]||(b[a]=d(a))}},function(a,b){a.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(b,f,a){var c=a(25),d=a(38),e=a(39);b.exports=function(a){var b=c(a),f=d.f;if(f)for(var g,h=f(a),j=e.f,i=0;h.length>i;)j.call(a,g=h[i++])&&b.push(g);return b}},function(b,a){a.f=Object.getOwnPropertySymbols},function(b,a){a.f={}.propertyIsEnumerable},function(a,d,b){var c=b(29);a.exports=Array.isArray||function isArray(a){return"Array"==c(a)}},function(g,k,b){var h=b(12),i=b(42),f=b(36),j=b(35)("IE_PROTO"),d=function(){},e="prototype",c=function(){var a,d=b(15)("iframe"),g=f.length,h=">";for(d.style.display="none",b(43).appendChild(d),d.src="javascript:",a=d.contentWindow.document,a.open(),a.write("h;)c.f(a,f=g[h++],b[f]);return a}},function(a,c,b){a.exports=b(2).document&&document.documentElement},function(d,h,a){var e=a(27),b=a(45).f,f={}.toString,c="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],g=function(a){try{return b.f(a)}catch(d){return c.slice()}};d.exports.f=function getOwnPropertyNames(a){return c&&"[object Window]"==f.call(a)?g(a):b(e(a))}},function(e,b,a){var c=a(26),d=a(36).concat("length","prototype");b.f=Object.getOwnPropertyNames||function getOwnPropertyNames(a){return c(a,d)}},function(j,c,a){var d=a(39),e=a(17),f=a(27),g=a(16),h=a(4),i=a(14),b=Object.getOwnPropertyDescriptor;c.f=a(5)?b:function getOwnPropertyDescriptor(a,c){if(a=f(a),c=g(c,!0),i)try{return b(a,c)}catch(j){}return h(a,c)?e(!d.f.call(a,c),a[c]):void 0}},function(a,b){a.exports=!0},function(c,d,a){var b=a(7);b(b.S+b.F*!a(5),"Object",{defineProperty:a(11).f})},function(c,d,a){var b=a(7);b(b.S+b.F*!a(5),"Object",{defineProperties:a(42)})},function(d,e,a){var b=a(27),c=a(46).f;a(51)("getOwnPropertyDescriptor",function(){return function getOwnPropertyDescriptor(a,d){return c(b(a),d)}})},function(c,f,a){var b=a(7),d=a(3),e=a(6);c.exports=function(a,g){var c=(d.Object||{})[a]||Object[a],f={};f[a]=g(c),b(b.S+b.F*e(function(){c(1)}),"Object",f)}},function(c,d,a){var b=a(7);b(b.S,"Object",{create:a(41)})},function(d,e,a){var b=a(54),c=a(55);a(51)("getPrototypeOf",function(){return function getPrototypeOf(a){return c(b(a))}})},function(a,d,b){var c=b(30);a.exports=function(a){return Object(c(a))}},function(c,g,a){var d=a(4),e=a(54),b=a(35)("IE_PROTO"),f=Object.prototype;c.exports=Object.getPrototypeOf||function(a){return a=e(a),d(a,b)?a[b]:"function"==typeof a.constructor&&a instanceof a.constructor?a.constructor.prototype:a instanceof Object?f:null}},function(d,e,a){var b=a(54),c=a(25);a(51)("keys",function(){return function keys(a){return c(b(a))}})},function(b,c,a){a(51)("getOwnPropertyNames",function(){return a(44).f})},function(d,e,a){var b=a(13),c=a(19).onFreeze;a(51)("freeze",function(a){return function freeze(d){return a&&b(d)?a(c(d)):d}})},function(d,e,a){var b=a(13),c=a(19).onFreeze;a(51)("seal",function(a){return function seal(d){return a&&b(d)?a(c(d)):d}})},function(d,e,a){var b=a(13),c=a(19).onFreeze;a(51)("preventExtensions",function(a){return function preventExtensions(d){return a&&b(d)?a(c(d)):d}})},function(c,d,a){var b=a(13);a(51)("isFrozen",function(a){return function isFrozen(c){return b(c)?a?a(c):!1:!0}})},function(c,d,a){var b=a(13);a(51)("isSealed",function(a){return function isSealed(c){return b(c)?a?a(c):!1:!0}})},function(c,d,a){var b=a(13);a(51)("isExtensible",function(a){return function isExtensible(c){return b(c)?a?a(c):!0:!1}})},function(c,d,b){var a=b(7);a(a.S+a.F,"Object",{assign:b(65)})},function(d,i,a){var c=a(25),e=a(38),f=a(39),g=a(54),h=a(28),b=Object.assign;d.exports=!b||a(6)(function(){var a={},c={},d=Symbol(),e="abcdefghijklmnopqrst";return a[d]=7,e.split("").forEach(function(a){c[a]=a}),7!=b({},a)[d]||Object.keys(b({},c)).join("")!=e})?function assign(n,q){for(var i=g(n),o=arguments.length,k=1,d=e.f,m=f.f;o>k;)for(var b,a=h(arguments[k++]),l=d?c(a).concat(d(a)):c(a),p=l.length,j=0;p>j;)m.call(a,b=l[j++])&&(i[b]=a[b]);return i}:b},function(c,d,a){var b=a(7);b(b.S,"Object",{is:a(67)})},function(a,b){a.exports=Object.is||function is(a,b){return a===b?0!==a||1/a===1/b:a!=a&&b!=b}},function(c,d,a){var b=a(7);b(b.S,"Object",{setPrototypeOf:a(69).set})},function(d,g,b){var e=b(13),f=b(12),c=function(b,a){if(f(b),!e(a)&&null!==a)throw TypeError(a+": can't set as prototype!")};d.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(e,a,d){try{d=b(8)(Function.call,b(46).f(Object.prototype,"__proto__").set,2),d(e,[]),a=!(e instanceof Array)}catch(f){a=!0}return function setPrototypeOf(b,e){return c(b,e),a?b.__proto__=e:d(b,e),b}}({},!1):a),check:c}},function(c,d,a){var b=a(7);b(b.P,"Function",{bind:a(71)})},function(d,i,a){var e=a(9),f=a(13),g=a(72),c=[].slice,b={},h=function(e,a,f){if(!(a in b)){for(var d=[],c=0;a>c;c++)d[c]="a["+c+"]";b[a]=Function("F,a","return new F("+d.join(",")+")")}return b[a](e,f)};d.exports=Function.bind||function bind(d){var a=e(this),i=c.call(arguments,1),b=function(){var e=i.concat(c.call(arguments));return this instanceof b?h(a,e.length,e):g(a,e,d)};return f(a.prototype)&&(b.prototype=a.prototype),b}},function(b,c){b.exports=function(c,b,d){var e=d===a;switch(b.length){case 0:return e?c():c.call(d);case 1:return e?c(b[0]):c.call(d,b[0]);case 2:return e?c(b[0],b[1]):c.call(d,b[0],b[1]);case 3:return e?c(b[0],b[1],b[2]):c.call(d,b[0],b[1],b[2]);case 4:return e?c(b[0],b[1],b[2],b[3]):c.call(d,b[0],b[1],b[2],b[3])}return c.apply(d,b)}},function(f,g,a){var b=a(13),e=a(55),c=a(23)("hasInstance"),d=Function.prototype;c in d||a(11).f(d,c,{value:function(a){if("function"!=typeof this||!b(a))return!1;if(!b(this.prototype))return a instanceof this;for(;a=e(a);)if(this.prototype===a)return!0;return!1}})},function(q,p,c){var f=c(7),n=(c(75),c(33)),o=c(76),g=c(77),j=1..toFixed,i=Math.floor,a=[0,0,0,0,0,0],k="Number.toFixed: incorrect invocation!",e="0",d=function(d,e){for(var c=-1,b=e;++c<6;)b+=d*a[c],a[c]=b%1e7,b=i(b/1e7)},h=function(d){for(var c=6,b=0;--c>=0;)b+=a[c],a[c]=i(b/d),b=b%d*1e7},l=function(){for(var c=6,b="";--c>=0;)if(""!==b||0===c||0!==a[c]){var d=String(a[c]);b=""===b?d:b+g.call(e,7-d.length)+d}return b},b=function(a,c,d){return 0===c?d:c%2===1?b(a,c-1,d*a):b(a*a,c/2,d)},m=function(c){for(var b=0,a=c;a>=4096;)b+=12,a/=4096;for(;a>=2;)b+=1,a/=2;return b};f(f.P+f.F*(!!j&&("0.000"!==8e-5.toFixed(3)||"1"!==.9.toFixed(0)||"1.25"!==1.255.toFixed(2)||"1000000000000000128"!==0xde0b6b3a7640080.toFixed(0))||!c(6)(function(){j.call({})})),"Number",{toFixed:function toFixed(s){var f,q,j,p,a=o(this,k),i=n(s),r="",c=e;if(0>i||i>20)throw RangeError(k);if(a!=a)return"NaN";if(-1e21>=a||a>=1e21)return String(a);if(0>a&&(r="-",a=-a),a>1e-21)if(f=m(a*b(2,69,1))-69,q=0>f?a*b(2,-f,1):a/b(2,f,1),q*=4503599627370496,f=52-f,f>0){for(d(0,q),j=i;j>=7;)d(1e7,0),j-=7;for(d(b(10,j,1),0),j=f-1;j>=23;)h(1<<23),j-=23;h(1<0?(p=c.length,c=r+(i>=p?"0."+g.call(e,i-p)+c:c.slice(0,p-i)+"."+c.slice(p-i))):c=r+c,c}})},function(b,c){b.exports=function(b,d,e,c){if(!(b instanceof d)||c!==a&&c in b)throw TypeError(e+": incorrect invocation!");return b}},function(a,d,b){var c=b(29);a.exports=function(a,b){if("number"!=typeof a&&"Number"!=c(a))throw TypeError(b);return+a}},function(b,e,a){var c=a(33),d=a(30);b.exports=function repeat(f){var b=String(d(this)),e="",a=c(f);if(0>a||a==1/0)throw RangeError("Count can't be negative");for(;a>0;(a>>>=1)&&(b+=b))1&a&&(e+=b);return e}},function(g,h,c){var d=c(7),e=c(6),f=c(76),b=1..toPrecision;d(d.P+d.F*(e(function(){return"1"!==b.call(1,a)})||!e(function(){b.call({})})),"Number",{toPrecision:function toPrecision(c){var d=f(this,"Number#toPrecision: incorrect invocation!");return c===a?b.call(d):b.call(d,c)}})},function(c,d,b){var a=b(7);a(a.S,"Number",{EPSILON:Math.pow(2,-52)})},function(d,e,a){var b=a(7),c=a(2).isFinite;b(b.S,"Number",{isFinite:function isFinite(a){return"number"==typeof a&&c(a)}})},function(c,d,a){var b=a(7);b(b.S,"Number",{isInteger:a(82)})},function(a,e,b){var c=b(13),d=Math.floor;a.exports=function isInteger(a){return!c(a)&&isFinite(a)&&d(a)===a}},function(c,d,b){var a=b(7);a(a.S,"Number",{isNaN:function isNaN(a){return a!=a}})},function(e,f,a){var b=a(7),c=a(82),d=Math.abs;b(b.S,"Number",{isSafeInteger:function isSafeInteger(a){return c(a)&&d(a)<=9007199254740991}})},function(c,d,b){var a=b(7);a(a.S,"Number",{MAX_SAFE_INTEGER:9007199254740991})},function(c,d,b){var a=b(7);a(a.S,"Number",{MIN_SAFE_INTEGER:-9007199254740991})},function(d,e,b){var a=b(7),c=b(88);a(a.S+a.F*(Number.parseFloat!=c),"Number",{parseFloat:c})},function(c,e,a){var b=a(2).parseFloat,d=a(89).trim;c.exports=1/b(a(90)+"-0")!==-(1/0)?function parseFloat(e){var a=d(String(e),3),c=b(a);return 0===c&&"-"==a.charAt(0)?-0:c}:b},function(g,m,a){var d=a(7),h=a(30),i=a(6),c=a(90),b="["+c+"]",f="
",j=RegExp("^"+b+b+"*"),k=RegExp(b+b+"*$"),e=function(a,h,e){var b={},g=i(function(){return!!c[a]()||f[a]()!=f}),j=b[a]=g?h(l):c[a];e&&(b[e]=j),d(d.P+d.F*g,"String",b)},l=e.trim=function(a,b){return a=String(h(a)),1&b&&(a=a.replace(j,"")),2&b&&(a=a.replace(k,"")),a};g.exports=e},function(a,b){a.exports=" \n\x0B\f\r \u2028\u2029\ufeff"},function(d,e,b){var a=b(7),c=b(92);a(a.S+a.F*(Number.parseInt!=c),"Number",{parseInt:c})},function(d,g,b){var a=b(2).parseInt,e=b(89).trim,c=b(90),f=/^[\-+]?0[xX]/;d.exports=8!==a(c+"08")||22!==a(c+"0x16")?function parseInt(c,d){var b=e(String(c),3);return a(b,d>>>0||(f.test(b)?16:10))}:a},function(d,e,b){var a=b(7),c=b(92);a(a.G+a.F*(parseInt!=c),{parseInt:c})},function(d,e,b){var a=b(7),c=b(88);a(a.G+a.F*(parseFloat!=c),{parseFloat:c})},function(f,g,b){var a=b(7),e=b(96),c=Math.sqrt,d=Math.acosh;a(a.S+a.F*!(d&&710==Math.floor(d(Number.MAX_VALUE))),"Math",{acosh:function acosh(a){return(a=+a)<1?NaN:a>94906265.62425156?Math.log(a)+Math.LN2:e(a-1+c(a-1)*c(a+1))}})},function(a,b){a.exports=Math.log1p||function log1p(a){return(a=+a)>-1e-8&&1e-8>a?a-a*a/2:Math.log(1+a)}},function(c,d,b){function asinh(a){return isFinite(a=+a)&&0!=a?0>a?-asinh(-a):Math.log(a+Math.sqrt(a*a+1)):a}var a=b(7);a(a.S,"Math",{asinh:asinh})},function(c,d,b){var a=b(7);a(a.S,"Math",{atanh:function atanh(a){return 0==(a=+a)?a:Math.log((1+a)/(1-a))/2}})},function(d,e,a){var b=a(7),c=a(100);b(b.S,"Math",{cbrt:function cbrt(a){return c(a=+a)*Math.pow(Math.abs(a),1/3)}})},function(a,b){a.exports=Math.sign||function sign(a){return 0==(a=+a)||a!=a?a:0>a?-1:1}},function(c,d,b){var a=b(7);a(a.S,"Math",{clz32:function clz32(a){return(a>>>=0)?31-Math.floor(Math.log(a+.5)*Math.LOG2E):32}})},function(d,e,c){var a=c(7),b=Math.exp;a(a.S,"Math",{cosh:function cosh(a){return(b(a=+a)+b(-a))/2}})},function(c,d,a){var b=a(7);b(b.S,"Math",{expm1:a(104)})},function(a,b){a.exports=Math.expm1||function expm1(a){return 0==(a=+a)?a:a>-1e-6&&1e-6>a?a+a*a/2:Math.exp(a)-1}},function(k,j,e){var f=e(7),g=e(100),a=Math.pow,d=a(2,-52),b=a(2,-23),i=a(2,127)*(2-b),c=a(2,-126),h=function(a){return a+1/d-1/d};f(f.S,"Math",{fround:function fround(k){var f,a,e=Math.abs(k),j=g(k);return c>e?j*h(e/c/b)*c*b:(f=(1+b/d)*e,a=f-(f-e),a>i||a!=a?j*(1/0):j*a)}})},function(d,e,b){var a=b(7),c=Math.abs;a(a.S,"Math",{hypot:function hypot(h,i){for(var a,b,e=0,f=0,g=arguments.length,d=0;g>f;)a=c(arguments[f++]),a>d?(b=d/a,e=e*b*b+1,d=a):a>0?(b=a/d,e+=b*b):e+=a;return d===1/0?1/0:d*Math.sqrt(e)}})},function(d,e,b){var a=b(7),c=Math.imul;a(a.S+a.F*b(6)(function(){return-5!=c(4294967295,5)||2!=c.length}),"Math",{imul:function imul(f,g){var a=65535,b=+f,c=+g,d=a&b,e=a&c;return 0|d*e+((a&b>>>16)*e+d*(a&c>>>16)<<16>>>0)}})},function(c,d,b){var a=b(7);a(a.S,"Math",{log10:function log10(a){return Math.log(a)/Math.LN10}})},function(c,d,a){var b=a(7);b(b.S,"Math",{log1p:a(96)})},function(c,d,b){var a=b(7);a(a.S,"Math",{log2:function log2(a){return Math.log(a)/Math.LN2}})},function(c,d,a){var b=a(7);b(b.S,"Math",{sign:a(100)})},function(e,f,a){var b=a(7),c=a(104),d=Math.exp;b(b.S+b.F*a(6)(function(){return-2e-17!=!Math.sinh(-2e-17)}),"Math",{sinh:function sinh(a){return Math.abs(a=+a)<1?(c(a)-c(-a))/2:(d(a-1)-d(-a-1))*(Math.E/2)}})},function(e,f,a){var b=a(7),c=a(104),d=Math.exp;b(b.S,"Math",{tanh:function tanh(a){var b=c(a=+a),e=c(-a);return b==1/0?1:e==1/0?-1:(b-e)/(d(a)+d(-a))}})},function(c,d,b){var a=b(7);a(a.S,"Math",{trunc:function trunc(a){return(a>0?Math.floor:Math.ceil)(a)}})},function(f,g,b){var a=b(7),e=b(34),c=String.fromCharCode,d=String.fromCodePoint;a(a.S+a.F*(!!d&&1!=d.length),"String",{fromCodePoint:function fromCodePoint(g){for(var a,b=[],f=arguments.length,d=0;f>d;){if(a=+arguments[d++],e(a,1114111)!==a)throw RangeError(a+" is not a valid code point");b.push(65536>a?c(a):c(((a-=65536)>>10)+55296,a%1024+56320))}return b.join("")}})},function(e,f,a){var b=a(7),c=a(27),d=a(32);b(b.S,"String",{raw:function raw(f){for(var e=c(f.raw),g=d(e.length),h=arguments.length,b=[],a=0;g>a;)b.push(String(e[a++])),h>a&&b.push(String(arguments[a]));return b.join("")}})},function(b,c,a){a(89)("trim",function(a){return function trim(){return a(this,3)}})},function(d,e,a){var b=a(7),c=a(119)(!1);b(b.P,"String",{codePointAt:function codePointAt(a){return c(this,a)}})},function(c,f,b){var d=b(33),e=b(30);c.exports=function(b){return function(j,k){var f,h,g=String(e(j)),c=d(k),i=g.length;return 0>c||c>=i?b?"":a:(f=g.charCodeAt(c),55296>f||f>56319||c+1===i||(h=g.charCodeAt(c+1))<56320||h>57343?b?g.charAt(c):f:b?g.slice(c,c+2):(f-55296<<10)+(h-56320)+65536)}}},function(h,i,b){var c=b(7),e=b(32),g=b(121),d="endsWith",f=""[d];c(c.P+c.F*b(123)(d),"String",{endsWith:function endsWith(i){var b=g(this,i,d),j=arguments.length>1?arguments[1]:a,k=e(b.length),c=j===a?k:Math.min(e(j),k),h=String(i);return f?f.call(b,h,c):b.slice(c-h.length,c)===h}})},function(b,e,a){var c=a(122),d=a(30);b.exports=function(a,b,e){if(c(b))throw TypeError("String#"+e+" doesn't accept regex!");return String(d(a))}},function(c,g,b){var d=b(13),e=b(29),f=b(23)("match");c.exports=function(b){var c;return d(b)&&((c=b[f])!==a?!!c:"RegExp"==e(b))}},function(a,d,b){var c=b(23)("match");a.exports=function(b){var a=/./;try{"/./"[b](a)}catch(d){try{return a[c]=!1,!"/./"[b](a)}catch(e){}}return!0}},function(f,g,b){var c=b(7),e=b(121),d="includes";c(c.P+c.F*b(123)(d),"String",{includes:function includes(b){return!!~e(this,b,d).indexOf(b,arguments.length>1?arguments[1]:a)}})},function(c,d,a){var b=a(7);b(b.P,"String",{repeat:a(77)})},function(h,i,b){var c=b(7),f=b(32),g=b(121),d="startsWith",e=""[d];c(c.P+c.F*b(123)(d),"String",{startsWith:function startsWith(i){var b=g(this,i,d),c=f(Math.min(arguments.length>1?arguments[1]:a,b.length)),h=String(i);return e?e.call(b,h,c):b.slice(c,c+h.length)===h}})},function(d,e,b){var c=b(119)(!0);b(128)(String,"String",function(a){this._t=String(a),this._i=0},function(){var b,d=this._t,e=this._i;return e>=d.length?{value:a,done:!0}:(b=c(d,e),this._i+=b.length,{value:b,done:!1})})},function(q,s,b){var h=b(47),e=b(7),o=b(18),i=b(10),n=b(4),j=b(129),r=b(130),l=b(22),m=b(55),c=b(23)("iterator"),f=!([].keys&&"next"in[].keys()),p="@@iterator",k="keys",d="values",g=function(){return this};q.exports=function(C,w,x,H,s,G,D){r(x,w,H);var v,z,u,y=function(a){if(!f&&a in b)return b[a];switch(a){case k:return function keys(){return new x(this,a)};case d:return function values(){return new x(this,a)}}return function entries(){return new x(this,a)}},E=w+" Iterator",A=s==d,B=!1,b=C.prototype,t=b[c]||b[p]||s&&b[s],q=t||y(s),I=s?A?y("entries"):q:a,F="Array"==w?b.entries||t:t;if(F&&(u=m(F.call(new C)),u!==Object.prototype&&(l(u,E,!0),h||n(u,c)||i(u,c,g))),A&&t&&t.name!==d&&(B=!0,q=function values(){return t.call(this)}),h&&!D||!f&&!B&&b[c]||i(b,c,q),j[w]=q,j[E]=g,s)if(v={values:A?q:y(d),keys:G?q:y(k),entries:I},D)for(z in v)z in b||o(b,z,v[z]);else e(e.P+e.F*(f||B),w,v);return v}},function(a,b){a.exports={}},function(c,g,a){var d=a(41),e=a(17),f=a(22),b={};a(10)(b,a(23)("iterator"),function(){return this}),c.exports=function(a,c,g){a.prototype=d(b,{next:e(1,g)}),f(a,c+" Iterator")}},function(b,c,a){a(132)("anchor",function(a){return function anchor(b){return a(this,"a","name",b)}})},function(c,h,a){var b=a(7),d=a(6),e=a(30),f=/"/g,g=function(d,a,b,g){var h=String(e(d)),c="<"+a;return""!==b&&(c+=" "+b+'="'+String(g).replace(f,""")+'"'),c+">"+h+""+a+">"};c.exports=function(a,e){var c={};c[a]=e(g),b(b.P+b.F*d(function(){var b=""[a]('"');return b!==b.toLowerCase()||b.split('"').length>3}),"String",c)}},function(b,c,a){a(132)("big",function(a){return function big(){return a(this,"big","","")}})},function(b,c,a){a(132)("blink",function(a){return function blink(){return a(this,"blink","","")}})},function(b,c,a){a(132)("bold",function(a){return function bold(){return a(this,"b","","")}})},function(b,c,a){a(132)("fixed",function(a){return function fixed(){return a(this,"tt","","")}})},function(b,c,a){a(132)("fontcolor",function(a){return function fontcolor(b){return a(this,"font","color",b)}})},function(b,c,a){a(132)("fontsize",function(a){return function fontsize(b){return a(this,"font","size",b)}})},function(b,c,a){a(132)("italics",function(a){return function italics(){return a(this,"i","","")}})},function(b,c,a){a(132)("link",function(a){return function link(b){return a(this,"a","href",b)}})},function(b,c,a){a(132)("small",function(a){return function small(){return a(this,"small","","")}})},function(b,c,a){a(132)("strike",function(a){return function strike(){return a(this,"strike","","")}})},function(b,c,a){a(132)("sub",function(a){return function sub(){return a(this,"sub","","")}})},function(b,c,a){a(132)("sup",function(a){return function sup(){return a(this,"sup","","")}})},function(c,d,a){var b=a(7);b(b.S,"Array",{isArray:a(40)})},function(j,k,b){var d=b(8),c=b(7),e=b(54),f=b(147),g=b(148),h=b(32),i=b(149);c(c.S+c.F*!b(151)(function(a){Array.from(a)}),"Array",{from:function from(s){var n,c,l,m,j=e(s),o="function"==typeof this?this:Array,r=arguments.length,k=r>1?arguments[1]:a,p=k!==a,b=0,q=i(j);if(p&&(k=d(k,r>2?arguments[2]:a,2)),q==a||o==Array&&g(q))for(n=h(j.length),c=new o(n);n>b;b++)c[b]=p?k(j[b],b):j[b];else for(m=q.call(j),c=new o;!(l=m.next()).done;b++)c[b]=p?f(m,k,[l.value,b],!0):l.value;return c.length=b,c}})},function(c,e,d){var b=d(12);c.exports=function(d,e,c,g){try{return g?e(b(c)[0],c[1]):e(c)}catch(h){var f=d["return"];throw f!==a&&b(f.call(d)),h}}},function(c,g,b){var d=b(129),e=b(23)("iterator"),f=Array.prototype;c.exports=function(b){return b!==a&&(d.Array===b||f[e]===b)}},function(c,g,b){var d=b(150),e=b(23)("iterator"),f=b(129);c.exports=b(3).getIteratorMethod=function(b){return b!=a?b[e]||b["@@iterator"]||f[d(b)]:void 0}},function(d,h,c){var b=c(29),e=c(23)("toStringTag"),f="Arguments"==b(function(){return arguments}()),g=function(a,b){try{return a[b]}catch(c){}};d.exports=function(d){var c,h,i;return d===a?"Undefined":null===d?"Null":"string"==typeof(h=g(c=Object(d),e))?h:f?b(c):"Object"==(i=b(c))&&"function"==typeof c.callee?"Arguments":i}},function(d,f,e){var a=e(23)("iterator"),b=!1;try{var c=[7][a]();c["return"]=function(){b=!0},Array.from(c,function(){throw 2})}catch(g){}d.exports=function(f,g){if(!g&&!b)return!1;var d=!1;try{var c=[7],e=c[a]();e.next=function(){d=!0},c[a]=function(){return e},f(c)}catch(h){}return d}},function(c,d,b){var a=b(7);a(a.S+a.F*b(6)(function(){function F(){}return!(Array.of.call(F)instanceof F)}),"Array",{of:function of(){for(var a=0,b=arguments.length,c=new("function"==typeof this?this:Array)(b);b>a;)c[a]=arguments[a++];return c.length=b,c}})},function(f,g,b){var c=b(7),e=b(27),d=[].join;c(c.P+c.F*(b(28)!=Object||!b(154)(d)),"Array",{join:function join(b){return d.call(e(this),b===a?",":b)}})},function(a,d,b){var c=b(6);a.exports=function(a,b){return!!a&&c(function(){b?a.call(null,function(){},1):a.call(null)})}},function(i,j,b){var c=b(7),d=b(43),h=b(29),e=b(34),f=b(32),g=[].slice;c(c.P+c.F*b(6)(function(){d&&g.call(d)}),"Array",{slice:function slice(j,b){var d=f(this.length),k=h(this);if(b=b===a?d:b,"Array"==k)return g.call(this,j,b);for(var i=e(j,d),n=e(b,d),l=f(n-i),m=Array(l),c=0;l>c;c++)m[c]="String"==k?this.charAt(i+c):this[i+c];return m}})},function(i,j,b){var c=b(7),h=b(9),e=b(54),f=b(6),d=[].sort,g=[1,2,3];c(c.P+c.F*(f(function(){g.sort(a)})||!f(function(){g.sort(null)})||!b(154)(d)),"Array",{sort:function sort(b){return b===a?d.call(e(this)):d.call(e(this),h(b))}})},function(e,f,a){var b=a(7),c=a(158)(0),d=a(154)([].forEach,!0);b(b.P+b.F*!d,"Array",{forEach:function forEach(a){return c(this,a,arguments[1])}})},function(c,i,b){var d=b(8),e=b(28),f=b(54),g=b(32),h=b(159);c.exports=function(b,l){var i=1==b,m=2==b,n=3==b,c=4==b,j=6==b,o=5==b||j,k=l||h;return function(p,v,x){for(var l,r,u=f(p),s=e(u),w=d(v,x,3),t=g(s.length),h=0,q=i?k(p,t):m?k(p,0):a;t>h;h++)if((o||h in s)&&(l=s[h],r=w(l,h,u),b))if(i)q[h]=r;else if(r)switch(b){case 3:return!0;case 5:return l;case 6:return h;case 2:q.push(l)}else if(c)return!1;return j?-1:n||c?c:q}}},function(d,g,b){var e=b(13),c=b(40),f=b(23)("species");d.exports=function(d,g){var b;return c(d)&&(b=d.constructor,"function"!=typeof b||b!==Array&&!c(b.prototype)||(b=a),e(b)&&(b=b[f],null===b&&(b=a))),new(b===a?Array:b)(g)}},function(d,e,a){var b=a(7),c=a(158)(1);b(b.P+b.F*!a(154)([].map,!0),"Array",{map:function map(a){return c(this,a,arguments[1])}})},function(d,e,a){var b=a(7),c=a(158)(2);b(b.P+b.F*!a(154)([].filter,!0),"Array",{filter:function filter(a){return c(this,a,arguments[1])}})},function(d,e,a){var b=a(7),c=a(158)(3);
+b(b.P+b.F*!a(154)([].some,!0),"Array",{some:function some(a){return c(this,a,arguments[1])}})},function(d,e,a){var b=a(7),c=a(158)(4);b(b.P+b.F*!a(154)([].every,!0),"Array",{every:function every(a){return c(this,a,arguments[1])}})},function(d,e,a){var b=a(7),c=a(165);b(b.P+b.F*!a(154)([].reduce,!0),"Array",{reduce:function reduce(a){return c(this,a,arguments.length,arguments[1],!1)}})},function(b,g,a){var c=a(9),d=a(54),e=a(28),f=a(32);b.exports=function(m,l,n,b,g){c(l);var i=d(m),h=e(i),j=f(i.length),a=g?j-1:0,k=g?-1:1;if(2>n)for(;;){if(a in h){b=h[a],a+=k;break}if(a+=k,g?0>a:a>=j)throw TypeError("Reduce of empty array with no initial value")}for(;g?a>=0:j>a;a+=k)a in h&&(b=l(b,h[a],a,i));return b}},function(d,e,a){var b=a(7),c=a(165);b(b.P+b.F*!a(154)([].reduceRight,!0),"Array",{reduceRight:function reduceRight(a){return c(this,a,arguments.length,arguments[1],!0)}})},function(d,e,a){var b=a(7),c=a(31)(!1);b(b.P+b.F*!a(154)([].indexOf),"Array",{indexOf:function indexOf(a){return c(this,a,arguments[1])}})},function(f,g,a){var b=a(7),c=a(27),d=a(33),e=a(32);b(b.P+b.F*!a(154)([].lastIndexOf),"Array",{lastIndexOf:function lastIndexOf(g){var b=c(this),f=e(b.length),a=f-1;for(arguments.length>1&&(a=Math.min(a,d(arguments[1]))),0>a&&(a=f+a);a>=0;a--)if(a in b&&b[a]===g)return a;return-1}})},function(c,d,a){var b=a(7);b(b.P,"Array",{copyWithin:a(170)}),a(171)("copyWithin")},function(d,g,b){var e=b(54),c=b(34),f=b(32);d.exports=[].copyWithin||function copyWithin(l,m){var g=e(this),h=f(g.length),b=c(l,h),d=c(m,h),k=arguments.length>2?arguments[2]:a,i=Math.min((k===a?h:c(k,h))-d,h-b),j=1;for(b>d&&d+i>b&&(j=-1,d+=i-1,b+=i-1);i-- >0;)d in g?g[b]=g[d]:delete g[b],b+=j,d+=j;return g}},function(a,b){a.exports=function(){}},function(c,d,a){var b=a(7);b(b.P,"Array",{fill:a(173)}),a(171)("fill")},function(d,g,b){var e=b(54),c=b(34),f=b(32);d.exports=function fill(j){for(var b=e(this),d=f(b.length),g=arguments.length,h=c(g>1?arguments[1]:a,d),i=g>2?arguments[2]:a,k=i===a?d:c(i,d);k>h;)b[h++]=j;return b}},function(g,h,b){var c=b(7),f=b(158)(5),d="find",e=!0;d in[]&&Array(1)[d](function(){e=!1}),c(c.P+c.F*e,"Array",{find:function find(b){return f(this,b,arguments.length>1?arguments[1]:a)}}),b(171)(d)},function(g,h,b){var c=b(7),f=b(158)(6),d="findIndex",e=!0;d in[]&&Array(1)[d](function(){e=!1}),c(c.P+c.F*e,"Array",{findIndex:function findIndex(b){return f(this,b,arguments.length>1?arguments[1]:a)}}),b(171)(d)},function(f,h,b){var d=b(171),c=b(177),e=b(129),g=b(27);f.exports=b(128)(Array,"Array",function(a,b){this._t=g(a),this._i=0,this._k=b},function(){var d=this._t,e=this._k,b=this._i++;return!d||b>=d.length?(this._t=a,c(1)):"keys"==e?c(0,b):"values"==e?c(0,d[b]):c(0,[b,d[b]])},"values"),e.Arguments=e.Array,d("keys"),d("values"),d("entries")},function(a,b){a.exports=function(a,b){return{value:b,done:!!a}}},function(b,c,a){a(179)("Array")},function(d,h,a){var e=a(2),b=a(3),f=a(11),g=a(5),c=a(23)("species");d.exports=function(a){var d="function"==typeof b[a]?b[a]:e[a];g&&d&&!d[c]&&f.f(d,c,{configurable:!0,get:function(){return this}})}},function(K,J,b){var m,v,w,E=b(47),e=b(2),g=b(8),D=b(150),c=b(7),I=b(13),s=(b(12),b(9)),C=b(75),x=b(181),G=(b(69).set,b(182)),B=b(183).set,u=b(184),f="Promise",t=e.TypeError,n=e.process,d=e[f],n=e.process,k="process"==D(n),l=function(){},j=!!function(){try{var a=d.resolve(1),c=(a.constructor={})[b(23)("species")]=function(a){a(l,l)};return(k||"function"==typeof PromiseRejectionEvent)&&a.then(l)instanceof c}catch(e){}}(),z=function(a,b){return a===b||a===d&&b===w},A=function(a){var b;return I(a)&&"function"==typeof(b=a.then)?b:!1},i=function(a){return z(d,a)?new y(a):new v(a)},y=v=function(d){var b,c;this.promise=new d(function(d,e){if(b!==a||c!==a)throw t("Bad Promise constructor");b=d,c=e}),this.resolve=s(b),this.reject=s(c)},p=function(a){try{a()}catch(b){return{error:b}}},q=function(a,c){if(!a._n){a._n=!0;var b=a._c;u(function(){for(var d=a._v,e=1==a._s,f=0,g=function(b){var c,i,h=e?b.ok:b.fail,j=b.resolve,f=b.reject,g=b.domain;try{h?(e||(2==a._h&&H(a),a._h=1),h===!0?c=d:(g&&g.enter(),c=h(d),g&&g.exit()),c===b.promise?f(t("Promise-chain cycle")):(i=A(c))?i.call(c,j,f):j(c)):f(d)}catch(k){f(k)}};b.length>f;)g(b[f++]);a._c=[],a._n=!1,c&&!a._h&&F(a)})}},F=function(b){B.call(e,function(){var c,g,d,f=b._v;if(o(b)&&(c=p(function(){k?n.emit("unhandledRejection",f,b):(g=e.onunhandledrejection)?g({promise:b,reason:f}):(d=e.console)&&d.error&&d.error("Unhandled promise rejection",f)}),b._h=k||o(b)?2:1),b._a=a,c)throw c.error})},o=function(a){if(1==a._h)return!1;for(var b,c=a._a||a._c,d=0;c.length>d;)if(b=c[d++],b.fail||!o(b.promise))return!1;return!0},H=function(a){B.call(e,function(){var b;k?n.emit("rejectionHandled",a):(b=e.onrejectionhandled)&&b({promise:a,reason:a._v})})},h=function(b){var a=this;a._d||(a._d=!0,a=a._w||a,a._v=b,a._s=2,a._a||(a._a=a._c.slice()),q(a,!0))},r=function(b){var c,a=this;if(!a._d){a._d=!0,a=a._w||a;try{if(a===b)throw t("Promise can't be resolved itself");(c=A(b))?u(function(){var d={_w:a,_d:!1};try{c.call(b,g(r,d,1),g(h,d,1))}catch(e){h.call(d,e)}}):(a._v=b,a._s=1,q(a,!1))}catch(d){h.call({_w:a,_d:!1},d)}}};j||(d=function Promise(a){C(this,d,f,"_h"),s(a),m.call(this);try{a(g(r,this,1),g(h,this,1))}catch(b){h.call(this,b)}},m=function Promise(b){this._c=[],this._a=a,this._s=0,this._d=!1,this._v=a,this._h=0,this._n=!1},m.prototype=b(185)(d.prototype,{then:function then(c,e){var b=i(G(this,d));return b.ok="function"==typeof c?c:!0,b.fail="function"==typeof e&&e,b.domain=k?n.domain:a,this._c.push(b),this._a&&this._a.push(b),this._s&&q(this,!1),b.promise},"catch":function(b){return this.then(a,b)}}),y=function(){var a=new m;this.promise=a,this.resolve=g(r,a,1),this.reject=g(h,a,1)}),c(c.G+c.W+c.F*!j,{Promise:d}),b(22)(d,f),b(179)(f),w=b(3)[f],c(c.S+c.F*!j,f,{reject:function reject(b){var a=i(this),c=a.reject;return c(b),a.promise}}),c(c.S+c.F*(E||!j),f,{resolve:function resolve(a){if(a instanceof d&&z(a.constructor,this))return a;var b=i(this),c=b.resolve;return c(a),b.promise}}),c(c.S+c.F*!(j&&b(151)(function(a){d.all(a)["catch"](l)})),f,{all:function all(g){var c=this,b=i(c),d=b.resolve,e=b.reject,f=p(function(){var b=[],h=0,f=1;x(g,!1,function(i){var j=h++,g=!1;b.push(a),f++,c.resolve(i).then(function(a){g||(g=!0,b[j]=a,--f||d(b))},e)}),--f||d(b)});return f&&e(f.error),b.promise},race:function race(e){var b=this,a=i(b),c=a.reject,d=p(function(){x(e,!1,function(d){b.resolve(d).then(a.resolve,c)})});return d&&c(d.error),a.promise}})},function(b,i,a){var c=a(8),d=a(147),e=a(148),f=a(12),g=a(32),h=a(149);b.exports=function(a,j,q,o,p){var n,i,k,l=p?function(){return a}:h(a),m=c(q,o,j?2:1),b=0;if("function"!=typeof l)throw TypeError(a+" is not iterable!");if(e(l))for(n=g(a.length);n>b;b++)j?m(f(i=a[b])[0],i[1]):m(a[b]);else for(k=l.call(a);!(i=k.next()).done;)d(k,m,i.value,j)}},function(d,g,b){var c=b(12),e=b(9),f=b(23)("species");d.exports=function(g,h){var b,d=c(g).constructor;return d===a||(b=c(d)[f])==a?h:e(b)}},function(s,t,b){var c,g,f,k=b(8),r=b(72),n=b(43),p=b(15),a=b(2),l=a.process,h=a.setImmediate,i=a.clearImmediate,o=a.MessageChannel,j=0,d={},q="onreadystatechange",e=function(){var a=+this;if(d.hasOwnProperty(a)){var b=d[a];delete d[a],b()}},m=function(a){e.call(a.data)};h&&i||(h=function setImmediate(a){for(var b=[],e=1;arguments.length>e;)b.push(arguments[e++]);return d[++j]=function(){r("function"==typeof a?a:Function(a),b)},c(j),j},i=function clearImmediate(a){delete d[a]},"process"==b(29)(l)?c=function(a){l.nextTick(k(e,a,1))}:o?(g=new o,f=g.port2,g.port1.onmessage=m,c=k(f.postMessage,f,1)):a.addEventListener&&"function"==typeof postMessage&&!a.importScripts?(c=function(b){a.postMessage(b+"","*")},a.addEventListener("message",m,!1)):c=q in p("script")?function(a){n.appendChild(p("script"))[q]=function(){n.removeChild(this),e.call(a)}}:function(a){setTimeout(k(e,a,1),0)}),s.exports={set:h,clear:i}},function(n,p,g){var b,e,f,c=g(2),o=g(183).set,k=c.MutationObserver||c.WebKitMutationObserver,h=c.process,i=c.Promise,l="process"==g(29)(h),d=function(){var c,d;for(l&&(c=h.domain)&&c.exit();b;)d=b.fn,d(),b=b.next;e=a,c&&c.enter()};if(l)f=function(){h.nextTick(d)};else if(k){var m=!0,j=document.createTextNode("");new k(d).observe(j,{characterData:!0}),f=function(){j.data=m=!m}}else f=i&&i.resolve?function(){i.resolve().then(d)}:function(){o.call(c,d)};n.exports=function(d){var c={fn:d,next:a};e&&(e.next=c),b||(b=c,f()),e=c}},function(a,d,b){var c=b(10);a.exports=function(b,d,e){for(var a in d)e&&b[a]?b[a]=d[a]:c(b,a,d[a]);return b}},function(d,e,c){var b=c(187);d.exports=c(188)("Map",function(b){return function Map(){return b(this,arguments.length>0?arguments[0]:a)}},{get:function get(c){var a=b.getEntry(this,c);return a&&a.v},set:function set(a,c){return b.def(this,0===a?0:a,c)}},b,!0)},function(i,r,b){var j=b(11).f,m=b(41),o=(b(10),b(185)),p=b(8),f=b(75),q=b(30),k=b(181),l=b(128),e=b(177),n=b(179),g=b(5),h=b(19).fastKey,c=g?"_s":"size",d=function(b,c){var a,d=h(c);if("F"!==d)return b._i[d];for(a=b._f;a;a=a.n)if(a.k==c)return a};i.exports={getConstructor:function(e,h,i,l){var b=e(function(d,e){f(d,b,h,"_i"),d._i=m(null),d._f=a,d._l=a,d[c]=0,e!=a&&k(e,i,d[l],d)});return o(b.prototype,{clear:function clear(){for(var d=this,e=d._i,b=d._f;b;b=b.n)b.r=!0,b.p&&(b.p=b.p.n=a),delete e[b.i];d._f=d._l=a,d[c]=0},"delete":function(g){var b=this,a=d(b,g);if(a){var e=a.n,f=a.p;delete b._i[a.i],a.r=!0,f&&(f.n=e),e&&(e.p=f),b._f==a&&(b._f=e),b._l==a&&(b._l=f),b[c]--}return!!a},forEach:function forEach(d){f(this,b,"forEach");for(var c,e=p(d,arguments.length>1?arguments[1]:a,3);c=c?c.n:this._f;)for(e(c.v,c.k,this);c&&c.r;)c=c.p},has:function has(a){return!!d(this,a)}}),g&&j(b.prototype,"size",{get:function(){return q(this[c])}}),b},def:function(b,f,j){var g,i,e=d(b,f);return e?e.v=j:(b._l=e={i:i=h(f,!0),k:f,v:j,p:g=b._l,n:a,r:!1},b._f||(b._f=e),g&&(g.n=e),b[c]++,"F"!==i&&(b._i[i]=e)),b},getEntry:d,setStrong:function(d,b,c){l(d,b,function(b,c){this._t=b,this._k=c,this._l=a},function(){for(var c=this,d=c._k,b=c._l;b&&b.r;)b=b.p;return c._t&&(c._l=b=b?b.n:c._t._f)?"keys"==d?e(0,b.k):"values"==d?e(0,b.v):e(0,[b.k,b.v]):(c._t=a,e(1))},c?"entries":"values",!c,!0),n(b)}}},function(f,q,b){var l=b(2),c=b(7),g=b(19),h=b(6),i=b(10),e=b(185),k=b(181),d=b(75),m=b(13),n=b(22),o=b(11).f,j=b(158)(0),p=b(5);f.exports=function(f,u,y,t,r,q){var v=l[f],b=v,w=r?"set":"add",s=b&&b.prototype,x={};return p&&"function"==typeof b&&(q||s.forEach&&!h(function(){(new b).entries().next()}))?(b=u(function(c,e){d(c,b,f,"_c"),c._c=new v,e!=a&&k(e,r,c[w],c)}),j("add,clear,delete,forEach,get,has,set,keys,values,entries,toJSON".split(","),function(c){var e="add"==c||"set"==c;c in s&&(!q||"clear"!=c)&&i(b.prototype,c,function(f,g){if(d(this,b,c),!e&&q&&!m(f))return"get"==c?a:!1;var h=this._c[c](0===f?0:f,g);return e?this:h})}),"size"in s&&o(b.prototype,"size",{get:function(){return this._c.size}})):(b=t.getConstructor(u,f,r,w),e(b.prototype,y),g.NEED=!0),n(b,f),x[f]=b,c(c.G+c.W+c.F,x),q||t.setStrong(b,f,r),b}},function(d,e,b){var c=b(187);d.exports=b(188)("Set",function(b){return function Set(){return b(this,arguments.length>0?arguments[0]:a)}},{add:function add(a){return c.def(this,a=0===a?0:a,a)}},c)},function(q,r,b){var d,p=b(158)(0),o=b(18),h=b(19),n=b(65),c=b(191),j=b(13),k=(b(4),h.getWeak),l=Object.isExtensible,m=c.ufstore,i={},g=function(b){return function WeakMap(){return b(this,arguments.length>0?arguments[0]:a)}},f={get:function get(b){if(j(b)){var c=k(b);return c===!0?m(this).get(b):c?c[this._i]:a}},set:function set(a,b){return c.def(this,a,b)}},e=q.exports=b(188)("WeakMap",g,f,c,!0,!0);7!=(new e).set((Object.freeze||Object)(i),7).get(i)&&(d=c.getConstructor(g),n(d.prototype,f),h.NEED=!0,p(["delete","has","get","set"],function(a){var b=e.prototype,c=b[a];o(b,a,function(b,e){if(j(b)&&!l(b)){this._f||(this._f=new d);var f=this._f[a](b,e);return"set"==a?this:f}return c.call(this,b,e)})}))},function(j,r,b){var l=b(185),e=b(19).getWeak,k=b(12),f=b(13),p=b(75),q=b(181),h=b(158),i=b(4),m=h(5),n=h(6),o=0,c=function(a){return a._l||(a._l=new g)},g=function(){this.a=[]},d=function(a,b){return m(a.a,function(a){return a[0]===b})};g.prototype={get:function(b){var a=d(this,b);return a?a[1]:void 0},has:function(a){return!!d(this,a)},set:function(a,b){var c=d(this,a);c?c[1]=b:this.a.push([a,b])},"delete":function(b){var a=n(this.a,function(a){return a[0]===b});return~a&&this.a.splice(a,1),!!~a}},j.exports={getConstructor:function(d,g,h,j){var b=d(function(c,d){p(c,b,g,"_i"),c._i=o++,c._l=a,d!=a&&q(d,h,c[j],c)});return l(b.prototype,{"delete":function(b){if(!f(b))return!1;var a=e(b);return a===!0?c(this)["delete"](b):a&&i(a,this._i)&&delete a[this._i]},has:function has(a){if(!f(a))return!1;var b=e(a);return b===!0?c(this).has(a):b&&i(b,this._i)}}),b},def:function(a,b,d){var f=e(k(b),!0);return f===!0?c(a).set(b,d):f[a._i]=d,a},ufstore:c}},function(d,e,b){var c=b(191);b(188)("WeakSet",function(b){return function WeakSet(){return b(this,arguments.length>0?arguments[0]:a)}},{add:function add(a){return c.def(this,a,!0)}},c,!1,!0)},function(d,e,b){var a=b(7),c=Function.apply;a(a.S,"Reflect",{apply:function apply(a,b,d){return c.call(a,b,d)}})},function(i,j,b){var c=b(7),f=b(41),d=b(9),g=b(12),e=b(13),h=b(71);c(c.S+c.F*b(6)(function(){function F(){}return!(Reflect.construct(function(){},[],F)instanceof F)}),"Reflect",{construct:function construct(c,b){d(c);var j=3>arguments.length?c:d(arguments[2]);if(c==j){if(b!=a)switch(g(b).length){case 0:return new c;case 1:return new c(b[0]);case 2:return new c(b[0],b[1]);case 3:return new c(b[0],b[1],b[2]);case 4:return new c(b[0],b[1],b[2],b[3])}var i=[null];return i.push.apply(i,b),new(h.apply(c,i))}var k=j.prototype,l=f(e(k)?k:Object.prototype),m=Function.apply.call(c,l,b);return e(m)?m:l}})},function(f,g,a){var c=a(11),b=a(7),d=a(12),e=a(16);b(b.S+b.F*a(6)(function(){Reflect.defineProperty(c.f({},1,{value:1}),1,{value:2})}),"Reflect",{defineProperty:function defineProperty(b,a,f){d(b),a=e(a,!0),d(f);try{return c.f(b,a,f),!0}catch(g){return!1}}})},function(e,f,a){var b=a(7),c=a(46).f,d=a(12);b(b.S,"Reflect",{deleteProperty:function deleteProperty(a,b){var e=c(d(a),b);return e&&!e.configurable?!1:delete a[b]}})},function(f,g,b){var c=b(7),e=b(12),d=function(a){this._t=e(a),this._i=0;var b,c=this._k=[];for(b in a)c.push(b)};b(130)(d,"Object",function(){var c,b=this,d=b._k;do if(b._i>=d.length)return{value:a,done:!0};while(!((c=d[b._i++])in b._t));return{value:c,done:!1}}),c(c.S,"Reflect",{enumerate:function enumerate(a){return new d(a)}})},function(i,j,b){function get(b,i){var c,k,j=3>arguments.length?b:arguments[2];return h(b)===j?b[i]:(c=d.f(b,i))?f(c,"value")?c.value:c.get!==a?c.get.call(j):a:g(k=e(b))?get(k,i,j):void 0}var d=b(46),e=b(55),f=b(4),c=b(7),g=b(13),h=b(12);c(c.S,"Reflect",{get:get})},function(e,f,a){var c=a(46),b=a(7),d=a(12);b(b.S,"Reflect",{getOwnPropertyDescriptor:function getOwnPropertyDescriptor(a,b){return c.f(d(a),b)}})},function(e,f,a){var b=a(7),c=a(55),d=a(12);b(b.S,"Reflect",{getPrototypeOf:function getPrototypeOf(a){return c(d(a))}})},function(c,d,b){var a=b(7);a(a.S,"Reflect",{has:function has(a,b){return b in a}})},function(e,f,a){var b=a(7),d=a(12),c=Object.isExtensible;b(b.S,"Reflect",{isExtensible:function isExtensible(a){return d(a),c?c(a):!0}})},function(c,d,a){var b=a(7);b(b.S,"Reflect",{ownKeys:a(204)})},function(c,g,a){var d=a(45),e=a(38),f=a(12),b=a(2).Reflect;c.exports=b&&b.ownKeys||function ownKeys(a){var b=d.f(f(a)),c=e.f;return c?b.concat(c(a)):b}},function(e,f,a){var b=a(7),d=a(12),c=Object.preventExtensions;b(b.S,"Reflect",{preventExtensions:function preventExtensions(a){d(a);try{return c&&c(a),!0}catch(b){return!1}}})},function(l,k,b){function set(l,k,m){var n,o,e=4>arguments.length?l:arguments[3],b=d.f(g(l),k);if(!b){if(c(o=j(l)))return set(o,k,m,e);b=f(0)}return h(b,"value")?b.writable!==!1&&c(e)?(n=d.f(e,k)||f(0),n.value=m,i.f(e,k,n),!0):!1:b.set===a?!1:(b.set.call(e,m),!0)}var i=b(11),d=b(46),j=b(55),h=b(4),e=b(7),f=b(17),g=b(12),c=b(13);e(e.S,"Reflect",{set:set})},function(d,e,b){var c=b(7),a=b(69);a&&c(c.S,"Reflect",{setPrototypeOf:function setPrototypeOf(b,c){a.check(b,c);try{return a.set(b,c),!0}catch(d){return!1}}})},function(c,d,b){var a=b(7);a(a.S,"Date",{now:function(){return(new Date).getTime()}})},function(e,f,a){var b=a(7),c=a(54),d=a(16);b(b.P+b.F*a(6)(function(){return null!==new Date(NaN).toJSON()||1!==Date.prototype.toJSON.call({toISOString:function(){return 1}})}),"Date",{toJSON:function toJSON(e){var a=c(this),b=d(a);return"number"!=typeof b||isFinite(b)?a.toISOString():null}})},function(f,g,c){var b=c(7),d=c(6),e=Date.prototype.getTime,a=function(a){return a>9?a:"0"+a};b(b.P+b.F*(d(function(){return"0385-07-25T07:06:39.999Z"!=new Date(-5e13-1).toISOString()})||!d(function(){new Date(NaN).toISOString()})),"Date",{toISOString:function toISOString(){if(!isFinite(e.call(this)))throw RangeError("Invalid time value");var b=this,c=b.getUTCFullYear(),d=b.getUTCMilliseconds(),f=0>c?"-":c>9999?"+":"";return f+("00000"+Math.abs(c)).slice(f?-6:-4)+"-"+a(b.getUTCMonth()+1)+"-"+a(b.getUTCDate())+"T"+a(b.getUTCHours())+":"+a(b.getUTCMinutes())+":"+a(b.getUTCSeconds())+"."+(d>99?d:"0"+a(d))+"Z"}})},function(s,r,b){var c=b(7),f=b(212),j=b(213),g=b(12),m=b(34),n=b(32),p=b(13),i=(b(23)("typed_array"),b(2).ArrayBuffer),q=b(182),d=j.ArrayBuffer,k=j.DataView,l=f.ABV&&i.isView,h=d.prototype.slice,o=f.VIEW,e="ArrayBuffer";c(c.G+c.W+c.F*(i!==d),{ArrayBuffer:d}),c(c.S+c.F*!f.CONSTR,e,{isView:function isView(a){return l&&l(a)||p(a)&&o in a}}),c(c.P+c.U+c.F*b(6)(function(){return!new d(2).slice(1,a).byteLength}),e,{slice:function slice(f,b){if(h!==a&&b===a)return h.call(g(this),f);for(var c=g(this).byteLength,e=m(f,c),i=m(b===a?c:b,c),j=new(q(this,d))(n(i-e)),l=new k(this),o=new k(j),p=0;i>e;)o.setUint8(p++,l.getUint8(e++));return j}}),b(179)(e)},function(k,n,a){for(var b,c=a(2),e=a(10),f=a(20),d=f("typed_array"),g=f("view"),h=!(!c.ArrayBuffer||!c.DataView),i=h,j=0,l=9,m="Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array".split(",");l>j;)(b=c[m[j++]])?(e(b.prototype,d,!0),e(b.prototype,g,!0)):i=!1;k.exports={ABV:h,CONSTR:i,TYPED:d,VIEW:g}},function(da,F,c){var m=c(2),q=c(5),aa=c(47),O=c(212),N=c(10),M=c(185),E=c(6),u=c(75),t=c(33),Q=c(32),ca=c(45).f,W=c(11).f,$=c(173),D=c(22),r="ArrayBuffer",k="DataView",h="prototype",G="Wrong length!",B="Wrong index!",b=m[r],d=m[k],j=m.Math,l=m.RangeError,s=m.Infinity,n=b,ba=j.abs,e=j.pow,X=j.floor,Y=j.log,Z=j.LN2,A="buffer",v="byteLength",C="byteOffset",w=q?"_b":A,i=q?"_l":v,x=q?"_o":C,z=function(a,c,l){var b,d,g,h=Array(l),i=8*l-c-1,j=(1<>1,m=23===c?e(2,-24)-e(2,-77):0,k=0,n=0>a||0===a&&0>1/a?1:0;for(a=ba(a),a!=a||a===s?(d=a!=a?1:0,b=j):(b=X(Y(a)/Z),a*(g=e(2,-b))<1&&(b--,g*=2),a+=b+f>=1?m/g:m*e(2,1-f),a*g>=2&&(b++,g/=2),b+f>=j?(d=0,b=j):b+f>=1?(d=(a*g-1)*e(2,c),b+=f):(d=a*e(2,f-1)*e(2,c),b=0));c>=8;h[k++]=255&d,d/=256,c-=8);for(b=b<0;h[k++]=255&b,b/=256,i-=8);return h[--k]|=128*n,h},H=function(h,g,k){var c,j=8*k-g-1,l=(1<>1,b=j-7,d=k-1,f=h[d--],a=127&f;for(f>>=7;b>0;a=256*a+h[d],d--,b-=8);for(c=a&(1<<-b)-1,a>>=-b,b+=g;b>0;c=256*c+h[d],d--,b-=8);if(0===a)a=1-i;else{if(a===l)return c?NaN:f?-s:s;c+=e(2,g),a-=i}return(f?-1:1)*c*e(2,a-g)},I=function(a){return a[3]<<24|a[2]<<16|a[1]<<8|a[0]},J=function(a){return[255&a]},K=function(a){return[255&a,a>>8&255]},L=function(a){return[255&a,a>>8&255,a>>16&255,a>>24&255]},U=function(a){return z(a,52,8)},V=function(a){return z(a,23,4)},o=function(a,b,c){W(a[h],b,{get:function(){return this[c]}})},g=function(b,c,g,h){var d=+g,a=t(d);if(d!=a||0>a||a+c>b[i])throw l(B);var j=b[w]._b,e=a+b[x],f=j.slice(e,e+c);return h?f:f.reverse()},f=function(c,d,j,h,f,g){var e=+j,b=t(e);if(e!=b||0>b||b+d>c[i])throw l(B);for(var k=c[w]._b,m=b+c[x],n=h(+f),a=0;d>a;a++)k[m+a]=n[g?a:d-a-1]},P=function(d,e){u(d,b,r);var a=+e,c=Q(a);if(a!=c)throw l(G);return c};if(O.ABV){if(!E(function(){new b})||!E(function(){new b(.5)})){b=function ArrayBuffer(a){return new n(P(this,a))};for(var y,_=b[h]=n[h],R=ca(n),S=0;R.length>S;)(y=R[S++])in b||N(b,y,n[y]);aa||(_.constructor=b)}var p=new d(new b(2)),T=d[h].setInt8;p.setInt8(0,2147483648),p.setInt8(1,2147483649),!p.getInt8(0)&&p.getInt8(1)||M(d[h],{setInt8:function setInt8(a,b){T.call(this,a,b<<24>>24)},setUint8:function setUint8(a,b){T.call(this,a,b<<24>>24)}},!0)}else b=function ArrayBuffer(b){var a=P(this,b);this._b=$.call(Array(a),0),this[i]=a},d=function DataView(f,h,c){u(this,d,k),u(f,b,k);var g=f[i],e=t(h);if(0>e||e>g)throw l("Wrong offset!");if(c=c===a?g-e:Q(c),e+c>g)throw l(G);this[w]=f,this[x]=e,this[i]=c},q&&(o(b,v,"_l"),o(d,A,"_b"),o(d,v,"_l"),o(d,C,"_o")),M(d[h],{getInt8:function getInt8(a){return g(this,1,a)[0]<<24>>24},getUint8:function getUint8(a){return g(this,1,a)[0]},getInt16:function getInt16(b){var a=g(this,2,b,arguments[1]);return(a[1]<<8|a[0])<<16>>16},getUint16:function getUint16(b){var a=g(this,2,b,arguments[1]);return a[1]<<8|a[0]},getInt32:function getInt32(a){return I(g(this,4,a,arguments[1]))},getUint32:function getUint32(a){return I(g(this,4,a,arguments[1]))>>>0},getFloat32:function getFloat32(a){return H(g(this,4,a,arguments[1]),23,4)},getFloat64:function getFloat64(a){return H(g(this,8,a,arguments[1]),52,8)},setInt8:function setInt8(a,b){f(this,1,a,J,b)},setUint8:function setUint8(a,b){f(this,1,a,J,b)},setInt16:function setInt16(a,b){f(this,2,a,K,b,arguments[2])},setUint16:function setUint16(a,b){f(this,2,a,K,b,arguments[2])},setInt32:function setInt32(a,b){f(this,4,a,L,b,arguments[2])},setUint32:function setUint32(a,b){f(this,4,a,L,b,arguments[2])},setFloat32:function setFloat32(a,b){f(this,4,a,V,b,arguments[2])},setFloat64:function setFloat64(a,b){f(this,8,a,U,b,arguments[2])}});D(b,r),D(d,k),N(d[h],O.VIEW,!0),F[r]=b,F[k]=d},function(c,d,b){var a=b(7);a(a.G+a.W+a.F*!b(212).ABV,{DataView:b(213).DataView})},function(b,c,a){a(216)("Int8",1,function(a){return function Int8Array(b,c,d){return a(this,b,c,d)}})},function(N,Wa,b){if(b(5)){var T=b(47),y=b(2),h=b(6),c=b(7),x=b(212),ca=b(213),Ka=b(8),da=b(75),Ha=b(17),e=b(10),D=b(185),Ga=(b(82),b(33)),q=b(32),fa=b(34),ia=b(16),s=b(4),ya=b(67),ka=b(150),j=b(13),ma=b(54),ta=b(148),sa=b(41),ra=b(55),B=b(45).f,Ra=(b(217),b(149)),Y=b(20),V=b(23),i=b(158),U=b(31),H=b(182),I=b(176),Sa=b(129),Ta=b(151),Qa=b(179),Va=b(173),qa=b(170),O=b(11),P=b(46),p=O.f,Ua=P.f,k=y.RangeError,J=y.TypeError,l=y.Uint8Array,E="ArrayBuffer",W="Shared"+E,X="BYTES_PER_ELEMENT",r="prototype",g=Array[r],C=ca.ArrayBuffer,Pa=ca.DataView,aa=i(0),Oa=i(2),La=i(3),Ja=i(4),Ia=i(5),oa=i(6),Ea=U(!0),Ca=U(!1),Aa=I.values,xa=I.keys,wa=I.entries,va=g.lastIndexOf,ua=g.reduce,pa=g.reduceRight,na=g.join,Fa=g.sort,M=g.slice,o=g.toString,K=g.toLocaleString,G=V("iterator"),t=V("toStringTag"),la=Y("typed_constructor"),w=Y("def_constructor"),ja=x.CONSTR,m=x.TYPED,za=x.VIEW,n="Wrong length!",Ba=i(1,function(a,b){return u(H(a,a[w]),b)}),ha=h(function(){return 1===new l(new Uint16Array([1]).buffer)[0]}),Da=!!l&&!!l[r].set&&h(function(){new l(1).set({})}),ga=function(b,d){if(b===a)throw J(n);var e=+b,c=q(b);if(d&&!ya(e,c))throw k(n);return c},A=function(b,c){var a=Ga(b);if(0>a||a%c)throw k("Wrong offset!");return a},d=function(a){if(j(a)&&m in a)return a;throw J(a+" is not a typed array!")},u=function(a,b){if(!(j(a)&&la in a))throw J("It is not a typed array constructor!");return new a(b)},ea=function(a,b){return F(H(a,a[w]),b)},F=function(e,b){for(var a=0,c=b.length,d=u(e,c);c>a;)d[a]=b[a++];return d},v=function(a,b,c){p(a,b,{get:function(){return this._d[c]}})},L=function from(m){var b,f,g,h,j,i,c=ma(m),k=arguments.length,d=k>1?arguments[1]:a,l=d!==a,e=Ra(c);if(e!=a&&!ta(e)){for(i=e.call(c),g=[],b=0;!(j=i.next()).done;b++)g.push(j.value);c=g}for(l&&k>2&&(d=Ka(d,arguments[2],2)),b=0,f=q(c.length),h=u(this,f);f>b;b++)h[b]=l?d(c[b],b):c[b];return h},Ma=function of(){for(var a=0,b=arguments.length,c=u(this,b);b>a;)c[a]=arguments[a++];return c},Na=!!l&&h(function(){K.call(new l(1))}),ba=function toLocaleString(){return K.apply(Na?M.call(d(this)):d(this),arguments)},_={copyWithin:function copyWithin(b,c){return qa.call(d(this),b,c,arguments.length>2?arguments[2]:a)},every:function every(b){return Ja(d(this),b,arguments.length>1?arguments[1]:a)},fill:function fill(a){return Va.apply(d(this),arguments)},filter:function filter(b){return ea(this,Oa(d(this),b,arguments.length>1?arguments[1]:a))},find:function find(b){return Ia(d(this),b,arguments.length>1?arguments[1]:a)},findIndex:function findIndex(b){return oa(d(this),b,arguments.length>1?arguments[1]:a)},forEach:function forEach(b){aa(d(this),b,arguments.length>1?arguments[1]:a)},indexOf:function indexOf(b){return Ca(d(this),b,arguments.length>1?arguments[1]:a)},includes:function includes(b){return Ea(d(this),b,arguments.length>1?arguments[1]:a)},join:function join(a){return na.apply(d(this),arguments)},lastIndexOf:function lastIndexOf(a){return va.apply(d(this),arguments)},map:function map(b){return Ba(d(this),b,arguments.length>1?arguments[1]:a)},reduce:function reduce(a){return ua.apply(d(this),arguments)},reduceRight:function reduceRight(a){return pa.apply(d(this),arguments)},reverse:function reverse(){for(var e,a=this,b=d(a).length,f=Math.floor(b/2),c=0;f>c;)e=a[c],a[c++]=a[--b],a[b]=e;return a},some:function some(b){return La(d(this),b,arguments.length>1?arguments[1]:a)},sort:function sort(a){return Fa.call(d(this),a)},subarray:function subarray(g,e){var b=d(this),c=b.length,f=fa(g,c);return new(H(b,b[w]))(b.buffer,b.byteOffset+f*b.BYTES_PER_ELEMENT,q((e===a?c:fa(e,c))-f))}},$=function slice(a,b){return ea(this,M.call(d(this),a,b))},Z=function set(f){d(this);var b=A(arguments[1],1),g=this.length,c=ma(f),e=q(c.length),a=0;if(e+b>g)throw k(n);for(;e>a;)this[b+a]=c[a++]},z={entries:function entries(){return wa.call(d(this))},keys:function keys(){return xa.call(d(this))},values:function values(){return Aa.call(d(this))}},S=function(b,a){return j(b)&&b[m]&&"symbol"!=typeof a&&a in b&&String(+a)==String(a)},R=function getOwnPropertyDescriptor(b,a){return S(b,a=ia(a,!0))?Ha(2,b[a]):Ua(b,a)},Q=function defineProperty(b,c,a){return!(S(b,c=ia(c,!0))&&j(a)&&s(a,"value"))||s(a,"get")||s(a,"set")||a.configurable||s(a,"writable")&&!a.writable||s(a,"enumerable")&&!a.enumerable?p(b,c,a):(b[c]=a.value,b)};ja||(P.f=R,O.f=Q),c(c.S+c.F*!ja,"Object",{getOwnPropertyDescriptor:R,defineProperty:Q}),h(function(){o.call({})})&&(o=K=function toString(){return na.call(this)});var f=D({},_);D(f,z),e(f,G,z.values),D(f,{slice:$,set:Z,constructor:function(){},toString:o,toLocaleString:ba}),v(f,"buffer","b"),v(f,"byteOffset","o"),v(f,"byteLength","l"),v(f,"length","e"),p(f,t,{get:function(){return this[m]}}),N.exports=function(v,i,I,s){s=!!s;var d=v+(s?"Clamped":"")+"Array",S="Uint8Array"!=d,R="get"+v,N="set"+v,b=y[d],l=b||{},K=b&&ra(b),M=!b||!x.ABV,J={},g=b&&b[r],O=function(b,c){var a=b._d;return a.v[R](c*i+a.o,ha)},P=function(c,d,a){var b=c._d;s&&(a=(a=Math.round(a))<0?0:a>255?255:255&a),b.v[N](d*i+b.o,a,ha)},Q=function(b,a){p(b,a,{get:function(){return O(this,a)},set:function(b){return P(this,a,b)},enumerable:!0})};M?(b=I(function(o,c,u,r){da(o,b,d,"_d");var l,f,g,s,t=0,h=0;if(j(c)){if(!(c instanceof C||(s=ka(c))==E||s==W))return m in c?F(b,c):L.call(b,c);l=c,h=A(u,i);var p=c.byteLength;if(r===a){if(p%i)throw k(n);if(f=p-h,0>f)throw k(n)}else if(f=q(r)*i,f+h>p)throw k(n);g=f/i}else g=ga(c,!0),f=g*i,l=new C(f);for(e(o,"_d",{b:l,o:h,l:f,e:g,v:new Pa(l)});g>t;)Q(o,t++)}),g=b[r]=sa(f),e(g,"constructor",b)):Ta(function(a){new b(null),new b(a)},!0)||(b=I(function(h,c,e,f){da(h,b,d);var g;return j(c)?c instanceof C||(g=ka(c))==E||g==W?f!==a?new l(c,A(e,i),f):e!==a?new l(c,A(e,i)):new l(c):m in c?F(b,c):L.call(b,c):new l(ga(c,S))}),aa(K!==Function.prototype?B(l).concat(B(K)):B(l),function(a){a in b||e(b,a,l[a])}),b[r]=g,T||(g.constructor=b));var u=g[G],D=!!u&&("values"==u.name||u.name==a),H=z.values;e(b,la,!0),e(g,m,d),e(g,za,!0),e(g,w,b),(s?new b(1)[t]==d:t in g)||p(g,t,{get:function(){return d}}),J[d]=b,c(c.G+c.W+c.F*(b!=l),J),c(c.S,d,{BYTES_PER_ELEMENT:i,from:L,of:Ma}),X in g||e(g,X,i),c(c.P,d,_),Qa(d),c(c.P+c.F*Da,d,{set:Z}),c(c.P+c.F*!D,d,z),c(c.P+c.F*(g.toString!=o),d,{toString:o}),c(c.P+c.F*h(function(){new b(1).slice()}),d,{slice:$}),c(c.P+c.F*(h(function(){return[1,2].toLocaleString()!=new b([1,2]).toLocaleString()})||!h(function(){g.toLocaleString.call([1,2])})),d,{toLocaleString:ba}),Sa[d]=D?u:H,T||D||e(g,G,H)}}else N.exports=function(){}},function(c,g,b){var d=b(150),e=b(23)("iterator"),f=b(129);c.exports=b(3).isIterable=function(c){var b=Object(c);return b[e]!==a||"@@iterator"in b||f.hasOwnProperty(d(b))}},function(b,c,a){a(216)("Uint8",1,function(a){return function Uint8Array(b,c,d){return a(this,b,c,d)}})},function(b,c,a){a(216)("Uint8",1,function(a){return function Uint8ClampedArray(b,c,d){return a(this,b,c,d)}},!0)},function(b,c,a){a(216)("Int16",2,function(a){return function Int16Array(b,c,d){return a(this,b,c,d)}})},function(b,c,a){a(216)("Uint16",2,function(a){return function Uint16Array(b,c,d){return a(this,b,c,d)}})},function(b,c,a){a(216)("Int32",4,function(a){return function Int32Array(b,c,d){return a(this,b,c,d)}})},function(b,c,a){a(216)("Uint32",4,function(a){return function Uint32Array(b,c,d){return a(this,b,c,d)}})},function(b,c,a){a(216)("Float32",4,function(a){return function Float32Array(b,c,d){return a(this,b,c,d)}})},function(b,c,a){a(216)("Float64",8,function(a){return function Float64Array(b,c,d){return a(this,b,c,d)}})},function(e,f,b){var c=b(7),d=b(31)(!0);c(c.P,"Array",{includes:function includes(b){return d(this,b,arguments.length>1?arguments[1]:a)}}),b(171)("includes")},function(d,e,a){var b=a(7),c=a(119)(!0);b(b.P,"String",{at:function at(a){return c(this,a)}})},function(e,f,b){var c=b(7),d=b(229);c(c.P,"String",{padStart:function padStart(b){return d(this,b,arguments.length>1?arguments[1]:a,!0)}})},function(c,g,b){var d=b(32),e=b(77),f=b(30);c.exports=function(l,m,i,n){var c=String(f(l)),j=c.length,g=i===a?" ":String(i),k=d(m);if(j>=k)return c;""==g&&(g=" ");var h=k-j,b=e.call(g,Math.ceil(h/g.length));return b.length>h&&(b=b.slice(0,h)),n?b+c:c+b}},function(e,f,b){var c=b(7),d=b(229);c(c.P,"String",{padEnd:function padEnd(b){return d(this,b,arguments.length>1?arguments[1]:a,!1)}})},function(b,c,a){a(89)("trimLeft",function(a){return function trimLeft(){return a(this,1)}},"trimStart")},function(b,c,a){a(89)("trimRight",function(a){return function trimRight(){return a(this,2)}},"trimEnd")},function(i,j,a){var b=a(7),d=a(30),e=a(32),f=a(122),g=a(234),h=RegExp.prototype,c=function(a,b){this._r=a,this._s=b};a(130)(c,"RegExp String",function next(){var a=this._r.exec(this._s);return{value:a,done:null===a}}),b(b.P,"String",{matchAll:function matchAll(a){if(d(this),!f(a))throw TypeError(a+" is not a regexp!");var j=String(this),b="flags"in h?String(a.flags):g.call(a),i=new RegExp(a.source,~b.indexOf("g")?b:"g"+b);return i.lastIndex=e(a.lastIndex),new c(i,j)}})},function(a,d,b){var c=b(12);a.exports=function(){var b=c(this),a="";return b.global&&(a+="g"),b.ignoreCase&&(a+="i"),b.multiline&&(a+="m"),b.unicode&&(a+="u"),b.sticky&&(a+="y"),a}},function(h,i,a){var b=a(7),c=a(204),d=a(27),e=a(17),f=a(46),g=a(11);b(b.S,"Object",{getOwnPropertyDescriptors:function getOwnPropertyDescriptors(l){for(var a,h,i=d(l),m=f.f,j=c(i),b={},k=0;j.length>k;)h=m(i,a=j[k++]),a in b?g.f(b,a,e(0,h)):b[a]=h;return b}})},function(d,e,a){var b=a(7),c=a(237)(!1);b(b.S,"Object",{values:function values(a){return c(a)}})},function(b,f,a){var c=a(25),d=a(27),e=a(39).f;b.exports=function(a){return function(j){for(var b,f=d(j),g=c(f),k=g.length,h=0,i=[];k>h;)e.call(f,b=g[h++])&&i.push(a?[b,f[b]]:f[b]);return i}}},function(d,e,a){var b=a(7),c=a(237)(!0);b(b.S,"Object",{entries:function entries(a){return c(a)}})},function(f,g,a){var b=a(7),c=a(54),d=a(9),e=a(11);a(5)&&b(b.P+a(240),"Object",{__defineGetter__:function __defineGetter__(a,b){e.f(c(this),a,{get:d(b),enumerable:!0,configurable:!0})}})},function(b,c,a){b.exports=a(47)||!a(6)(function(){
+var b=Math.random();__defineSetter__.call(null,b,function(){}),delete a(2)[b]})},function(f,g,a){var b=a(7),c=a(54),d=a(9),e=a(11);a(5)&&b(b.P+a(240),"Object",{__defineSetter__:function __defineSetter__(a,b){e.f(c(this),a,{set:d(b),enumerable:!0,configurable:!0})}})},function(g,h,a){var b=a(7),c=a(54),d=a(16),e=a(55),f=a(46).f;a(5)&&b(b.P+a(240),"Object",{__lookupGetter__:function __lookupGetter__(g){var b,a=c(this),h=d(g,!0);do if(b=f(a,h))return b.get;while(a=e(a))}})},function(g,h,a){var b=a(7),c=a(54),d=a(16),e=a(55),f=a(46).f;a(5)&&b(b.P+a(240),"Object",{__lookupSetter__:function __lookupSetter__(g){var b,a=c(this),h=d(g,!0);do if(b=f(a,h))return b.set;while(a=e(a))}})},function(c,d,b){var a=b(7);a(a.P+a.R,"Map",{toJSON:b(245)("Map")})},function(b,e,a){var c=a(150),d=a(246);b.exports=function(a){return function toJSON(){if(c(this)!=a)throw TypeError(a+"#toJSON isn't generic");return d(this)}}},function(a,d,b){var c=b(181);a.exports=function(b,d){var a=[];return c(b,!1,a.push,a,d),a}},function(c,d,b){var a=b(7);a(a.P+a.R,"Set",{toJSON:b(245)("Set")})},function(c,d,a){var b=a(7);b(b.S,"System",{global:a(2)})},function(d,e,a){var b=a(7),c=a(29);b(b.S,"Error",{isError:function isError(a){return"Error"===c(a)}})},function(c,d,b){var a=b(7);a(a.S,"Math",{iaddh:function iaddh(c,d,e,f){var a=c>>>0,g=d>>>0,b=e>>>0;return g+(f>>>0)+((a&b|(a|b)&~(a+b>>>0))>>>31)|0}})},function(c,d,b){var a=b(7);a(a.S,"Math",{isubh:function isubh(c,d,e,f){var a=c>>>0,g=d>>>0,b=e>>>0;return g-(f>>>0)-((~a&b|~(a^b)&a-b>>>0)>>>31)|0}})},function(c,d,b){var a=b(7);a(a.S,"Math",{imulh:function imulh(i,j){var a=65535,e=+i,b=+j,g=e&a,h=b&a,f=e>>16,c=b>>16,d=(f*h>>>0)+(g*h>>>16);return f*c+(d>>16)+((g*c>>>0)+(d&a)>>16)}})},function(c,d,b){var a=b(7);a(a.S,"Math",{umulh:function umulh(i,j){var a=65535,e=+i,b=+j,g=e&a,h=b&a,f=e>>>16,c=b>>>16,d=(f*h>>>0)+(g*h>>>16);return f*c+(d>>>16)+((g*c>>>0)+(d&a)>>>16)}})},function(f,g,b){var a=b(255),c=b(12),d=a.key,e=a.set;a.exp({defineMetadata:function defineMetadata(a,b,f,g){e(a,b,c(f),d(g))}})},function(h,o,c){var e=c(186),f=c(7),g=c(21)("metadata"),d=g.store||(g.store=new(c(190))),b=function(f,g,h){var b=d.get(f);if(!b){if(!h)return a;d.set(f,b=new e)}var c=b.get(g);if(!c){if(!h)return a;b.set(g,c=new e)}return c},j=function(d,e,f){var c=b(e,f,!1);return c===a?!1:c.has(d)},k=function(d,e,f){var c=b(e,f,!1);return c===a?a:c.get(d)},l=function(a,c,d,e){b(d,e,!0).set(a,c)},m=function(d,e){var a=b(d,e,!1),c=[];return a&&a.forEach(function(b,a){c.push(a)}),c},i=function(b){return b===a||"symbol"==typeof b?b:String(b)},n=function(a){f(f.S,"Reflect",a)};h.exports={store:d,map:b,has:j,get:k,set:l,keys:m,key:i,exp:n}},function(h,i,c){var b=c(255),e=c(12),f=b.key,g=b.map,d=b.store;b.exp({deleteMetadata:function deleteMetadata(j,b){var h=3>arguments.length?a:f(arguments[2]),c=g(e(b),h,!1);if(c===a||!c["delete"](j))return!1;if(c.size)return!0;var i=d.get(b);return i["delete"](h),!!i.size||d["delete"](b)}})},function(j,k,c){var b=c(255),e=c(12),f=c(55),g=b.has,h=b.get,i=b.key,d=function(b,c,e){var j=g(b,c,e);if(j)return h(b,c,e);var i=f(c);return null!==i?d(b,i,e):a};b.exp({getMetadata:function getMetadata(b,c){return d(b,e(c),3>arguments.length?a:i(arguments[2]))}})},function(l,k,b){var e=b(189),f=b(246),c=b(255),g=b(12),h=b(55),i=c.keys,j=c.key,d=function(c,g){var a=i(c,g),j=h(c);if(null===j)return a;var b=d(j,g);return b.length?a.length?f(new e(a.concat(b))):b:a};c.exp({getMetadataKeys:function getMetadataKeys(b){return d(g(b),2>arguments.length?a:j(arguments[1]))}})},function(g,h,c){var b=c(255),d=c(12),e=b.get,f=b.key;b.exp({getOwnMetadata:function getOwnMetadata(b,c){return e(b,d(c),3>arguments.length?a:f(arguments[2]))}})},function(g,h,c){var b=c(255),d=c(12),e=b.keys,f=b.key;b.exp({getOwnMetadataKeys:function getOwnMetadataKeys(b){return e(d(b),2>arguments.length?a:f(arguments[1]))}})},function(i,j,b){var c=b(255),e=b(12),f=b(55),g=c.has,h=c.key,d=function(a,b,c){var h=g(a,b,c);if(h)return!0;var e=f(b);return null!==e?d(a,e,c):!1};c.exp({hasMetadata:function hasMetadata(b,c){return d(b,e(c),3>arguments.length?a:h(arguments[2]))}})},function(g,h,c){var b=c(255),d=c(12),e=b.has,f=b.key;b.exp({hasOwnMetadata:function hasOwnMetadata(b,c){return e(b,d(c),3>arguments.length?a:f(arguments[2]))}})},function(h,i,b){var c=b(255),d=b(12),e=b(9),f=c.key,g=c.set;c.exp({metadata:function metadata(b,c){return function decorator(i,h){g(b,c,(h!==a?d:e)(i),f(h))}}})},function(d,e,b){var a=b(7),c=b(183);a(a.G+a.B,{setImmediate:c.set,clearImmediate:c.clear})},function(l,k,a){a(176);for(var j=a(2),i=a(10),f=a(129),e=a(23)("toStringTag"),h=["NodeList","DOMTokenList","MediaList","StyleSheetList","CSSRuleList"],d=0;5>d;d++){var c=h[d],g=j[c],b=g&&g.prototype;b&&!b[e]&&i(b,e,c),f[c]=f.Array}},function(i,j,a){var c=a(2),b=a(7),g=a(72),h=a(267),d=c.navigator,e=!!d&&/MSIE .\./.test(d.userAgent),f=function(a){return e?function(b,c){return a(g(h,[].slice.call(arguments,2),"function"==typeof b?b:Function(b)),c)}:a};b(b.G+b.B+b.F*e,{setTimeout:f(c.setTimeout),setInterval:f(c.setInterval)})},function(c,f,a){var d=a(268),b=a(72),e=a(9);c.exports=function(){for(var h=e(this),a=arguments.length,c=Array(a),f=0,i=d._,g=!1;a>f;)(c[f]=arguments[f++])===i&&(g=!0);return function(){var d,j=this,k=arguments.length,e=0,f=0;if(!g&&!k)return b(h,c,j);if(d=c.slice(),g)for(;a>e;e++)d[e]===i&&(d[e]=arguments[f++]);for(;k>f;)d.push(arguments[f++]);return b(h,d,j)}}},function(a,c,b){a.exports=b(3)},function(z,y,b){function Dict(b){var c=u(null);return b!=a&&(t(b)?s(b,!0,function(a,b){c[a]=b}):n(c,b)),c}function reduce(g,j,l){r(j);var a,c,b=h(g),e=i(b),k=e.length,f=0;if(3>arguments.length){if(!k)throw TypeError("Reduce of empty object with no initial value");a=b[e[f++]]}else a=Object(l);for(;k>f;)d(b,c=e[f++])&&(a=j(a,b[c],c,g));return a}function includes(c,b){return(b==b?l(c,b):j(c,function(a){return a!=a}))!==a}function get(a,b){return d(a,b)?a[b]:void 0}function set(a,b,c){return x&&b in Object?p.f(a,b,q(0,c)):a[b]=c,a}function isDict(a){return w(a)&&o(a)===Dict.prototype}var v=b(8),e=b(7),q=b(17),n=b(65),u=b(41),o=b(55),i=b(25),p=b(11),l=b(24),r=b(9),s=b(181),t=b(217),m=b(130),f=b(177),w=b(13),h=b(27),x=b(5),d=b(4),c=function(b){var e=1==b,c=4==b;return function(l,m,n){var f,i,g,o=v(m,n,3),k=h(l),j=e||7==b||2==b?new("function"==typeof this?this:Dict):a;for(f in k)if(d(k,f)&&(i=k[f],g=o(i,f,l),b))if(e)j[f]=g;else if(g)switch(b){case 2:j[f]=i;break;case 3:return!0;case 5:return i;case 6:return f;case 7:j[g[0]]=g[1]}else if(c)return!1;return 3==b||c?c:j}},j=c(6),g=function(a){return function(b){return new k(b,a)}},k=function(a,b){this._t=h(a),this._a=i(a),this._i=0,this._k=b};m(k,"Dict",function(){var c,b=this,e=b._t,g=b._a,h=b._k;do if(b._i>=g.length)return b._t=a,f(1);while(!d(e,c=g[b._i++]));return"keys"==h?f(0,c):"values"==h?f(0,e[c]):f(0,[c,e[c]])}),Dict.prototype=null,e(e.G+e.F,{Dict:Dict}),e(e.S,"Dict",{keys:g("keys"),values:g("values"),entries:g("entries"),forEach:c(0),map:c(1),filter:c(2),some:c(3),every:c(4),find:c(5),findKey:j,mapPairs:c(7),reduce:reduce,keyOf:l,includes:includes,has:d,get:get,set:set,isDict:isDict})},function(b,e,a){var c=a(12),d=a(149);b.exports=a(3).getIterator=function(a){var b=d(a);if("function"!=typeof b)throw TypeError(a+" is not iterable!");return c(b.call(a))}},function(f,g,a){var c=a(2),d=a(3),b=a(7),e=a(267);b(b.G+b.F,{delay:function delay(a){return new(d.Promise||c.Promise)(function(b){setTimeout(e.call(b,!0),a)})}})},function(d,e,a){var c=a(268),b=a(7);a(3)._=c._=c._||{},b(b.P+b.F,"Function",{part:a(267)})},function(c,d,b){var a=b(7);a(a.S+a.F,"Object",{isObject:b(13)})},function(c,d,b){var a=b(7);a(a.S+a.F,"Object",{classof:b(150)})},function(d,e,b){var a=b(7),c=b(276);a(a.S+a.F,"Object",{define:c})},function(b,g,a){var c=a(11),d=a(46),e=a(204),f=a(27);b.exports=function define(a,b){for(var g,h=e(f(b)),j=h.length,i=0;j>i;)c.f(a,g=h[i++],d.f(b,g));return a}},function(e,f,a){var b=a(7),c=a(276),d=a(41);b(b.S+b.F,"Object",{make:function(a,b){return c(d(a),b)}})},function(c,d,b){b(128)(Number,"Number",function(a){this._l=+a,this._i=0},function(){var b=this._i++,c=!(this._l>b);return{done:c,value:c?a:b}})},function(d,e,a){var b=a(7),c=a(280)(/[\\^$*+?.()|[\]{}]/g,"\\$&");b(b.S,"RegExp",{escape:function escape(a){return c(a)}})},function(a,b){a.exports=function(b,a){var c=a===Object(a)?function(b){return a[b]}:a;return function(a){return String(a).replace(b,c)}}},function(d,e,b){var a=b(7),c=b(280)(/[&<>"']/g,{"&":"&","<":"<",">":">",'"':""","'":"'"});a(a.P+a.F,"String",{escapeHTML:function escapeHTML(){return c(this)}})},function(d,e,b){var a=b(7),c=b(280)(/&(?:amp|lt|gt|quot|apos);/g,{"&":"&","<":"<",">":">",""":'"',"'":"'"});a(a.P+a.F,"String",{unescapeHTML:function unescapeHTML(){return c(this)}})}]),"undefined"!=typeof module&&module.exports?module.exports=b:"function"==typeof define&&define.amd?define(function(){return b}):c.core=b}(1,1);
+//# sourceMappingURL=library.min.js.map
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/client/library.min.js.map b/node_modules/babel-register/node_modules/core-js/client/library.min.js.map
new file mode 100644
index 0000000..85d7c84
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/client/library.min.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["library.js"],"names":["__e","__g","undefined","modules","__webpack_require__","moduleId","installedModules","exports","module","id","loaded","call","m","c","p","global","core","has","DESCRIPTORS","$export","redefine","META","KEY","$fails","shared","setToStringTag","uid","wks","keyOf","enumKeys","isArray","anObject","toIObject","toPrimitive","createDesc","_create","gOPNExt","$GOPD","$DP","gOPD","f","dP","gOPN","$Symbol","Symbol","$JSON","JSON","_stringify","stringify","setter","PROTOTYPE","HIDDEN","TO_PRIMITIVE","isEnum","propertyIsEnumerable","SymbolRegistry","AllSymbols","ObjectProto","Object","USE_NATIVE","QObject","setSymbolDesc","get","this","value","a","it","key","D","protoDesc","wrap","tag","sym","_k","configurable","set","isSymbol","iterator","$defineProperty","defineProperty","enumerable","$defineProperties","defineProperties","P","keys","i","l","length","$create","create","$propertyIsEnumerable","E","$getOwnPropertyDescriptor","getOwnPropertyDescriptor","$getOwnPropertyNames","getOwnPropertyNames","names","result","push","$getOwnPropertySymbols","getOwnPropertySymbols","$stringify","replacer","$replacer","args","arguments","apply","BUGGY_JSON","S","TypeError","toString","G","W","F","symbols","split","Wrapper","findChild","for","keyFor","useSetter","useSimple","valueOf","Math","window","self","Function","version","hasOwnProperty","exec","e","ctx","hide","type","name","source","own","out","IS_FORCED","IS_GLOBAL","IS_STATIC","IS_PROTO","IS_BIND","B","IS_WRAP","expProto","target","C","b","virtual","R","U","aFunction","fn","that","object","IE8_DOM_DEFINE","O","Attributes","isObject","document","is","createElement","val","bitmap","writable","setDesc","isExtensible","FREEZE","preventExtensions","setMeta","w","fastKey","getWeak","onFreeze","meta","NEED","px","random","concat","SHARED","store","def","TAG","stat","prototype","USE_SYMBOL","getKeys","el","index","$keys","enumBugKeys","arrayIndexOf","IE_PROTO","IObject","defined","cof","slice","toLength","toIndex","IS_INCLUDES","$this","fromIndex","toInteger","min","ceil","floor","isNaN","max","gOPS","pIE","getSymbols","Array","arg","dPs","Empty","createDict","iframeDocument","iframe","gt","style","display","appendChild","src","contentWindow","open","write","close","Properties","documentElement","windowNames","getWindowNames","hiddenKeys","fails","exp","toObject","$getPrototypeOf","getPrototypeOf","constructor","$freeze","freeze","$seal","seal","$preventExtensions","$isFrozen","isFrozen","$isSealed","isSealed","$isExtensible","assign","$assign","A","K","forEach","k","join","T","aLen","j","x","y","setPrototypeOf","check","proto","test","buggy","__proto__","bind","invoke","arraySlice","factories","construct","len","n","partArgs","bound","un","HAS_INSTANCE","FunctionProto","aNumberValue","repeat","$toFixed","toFixed","data","ERROR","ZERO","multiply","c2","divide","numToString","s","t","String","pow","acc","log","x2","fractionDigits","z","RangeError","Constructor","forbiddenField","msg","count","str","res","Infinity","$toPrecision","toPrecision","precision","EPSILON","_isFinite","isFinite","isInteger","number","abs","isSafeInteger","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","$parseFloat","Number","parseFloat","$trim","trim","string","charAt","spaces","space","non","ltrim","RegExp","rtrim","exporter","ALIAS","FORCE","TYPE","replace","$parseInt","parseInt","ws","hex","radix","log1p","sqrt","$acosh","acosh","MAX_VALUE","NaN","LN2","asinh","atanh","sign","cbrt","clz32","LOG2E","cosh","expm1","EPSILON32","MAX32","MIN32","roundTiesToEven","fround","$abs","$sign","hypot","value1","value2","div","sum","larg","$imul","imul","UINT16","xn","yn","xl","yl","log10","LN10","log2","sinh","tanh","trunc","fromCharCode","$fromCodePoint","fromCodePoint","code","raw","callSite","tpl","$at","codePointAt","pos","TO_STRING","charCodeAt","context","ENDS_WITH","$endsWith","endsWith","searchString","endPosition","end","search","isRegExp","NAME","MATCH","re","INCLUDES","includes","indexOf","STARTS_WITH","$startsWith","startsWith","iterated","_t","_i","point","done","LIBRARY","Iterators","$iterCreate","ITERATOR","BUGGY","FF_ITERATOR","KEYS","VALUES","returnThis","Base","next","DEFAULT","IS_SET","FORCED","methods","IteratorPrototype","getMethod","kind","values","entries","DEF_VALUES","VALUES_BUG","$native","$default","$entries","$anyNative","descriptor","createHTML","anchor","quot","attribute","p1","toLowerCase","big","blink","bold","fixed","fontcolor","color","fontsize","size","italics","link","url","small","strike","sub","sup","isArrayIter","getIterFn","iter","from","arrayLike","step","mapfn","mapping","iterFn","ret","ArrayProto","classof","getIteratorMethod","ARG","tryGet","callee","SAFE_CLOSING","riter","skipClosing","safe","arr","of","arrayJoin","separator","method","html","begin","klass","start","upTo","cloned","$sort","sort","comparefn","$forEach","STRICT","callbackfn","asc","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","NO_HOLES","SPECIES","original","$map","map","$filter","filter","$some","some","$every","every","$reduce","reduce","memo","isRight","reduceRight","$indexOf","searchElement","lastIndexOf","copyWithin","to","inc","fill","endPos","$find","forced","find","findIndex","addToUnscopables","Arguments","Internal","GenericPromiseCapability","anInstance","forOf","speciesConstructor","task","microtask","PROMISE","process","$Promise","isNode","empty","promise","resolve","FakePromise","PromiseRejectionEvent","then","sameConstructor","isThenable","newPromiseCapability","PromiseCapability","reject","$$resolve","$$reject","perform","error","notify","isReject","_n","chain","_c","_v","ok","_s","run","reaction","handler","fail","domain","_h","onHandleUnhandled","enter","exit","onUnhandled","abrupt","console","isUnhandled","emit","onunhandledrejection","reason","_a","onrejectionhandled","$reject","_d","_w","$resolve","wrapper","Promise","executor","err","onFulfilled","onRejected","catch","r","capability","all","iterable","remaining","$index","alreadyCalled","race","defer","channel","port","cel","setTask","setImmediate","clearTask","clearImmediate","MessageChannel","counter","queue","ONREADYSTATECHANGE","listener","event","nextTick","port2","port1","onmessage","postMessage","addEventListener","importScripts","removeChild","setTimeout","clear","head","last","macrotask","Observer","MutationObserver","WebKitMutationObserver","flush","parent","toggle","node","createTextNode","observe","characterData","strong","Map","entry","getEntry","v","redefineAll","$iterDefine","setSpecies","SIZE","_f","getConstructor","ADDER","_l","delete","prev","setStrong","each","common","IS_WEAK","IS_ADDER","Set","add","InternalMap","weak","uncaughtFrozenStore","ufstore","tmp","WeakMap","$WeakMap","createArrayMethod","$has","arrayFind","arrayFindIndex","UncaughtFrozenStore","findUncaughtFrozen","splice","WeakSet","_apply","thisArgument","argumentsList","Reflect","Target","newTarget","$args","instance","propertyKey","attributes","deleteProperty","desc","Enumerate","enumerate","receiver","getProto","ownKeys","V","existingDescriptor","ownDesc","setProto","now","Date","getTime","toJSON","toISOString","pv","lz","num","d","getUTCFullYear","getUTCMilliseconds","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","$typed","buffer","ArrayBuffer","$ArrayBuffer","$DataView","DataView","$isView","ABV","isView","$slice","VIEW","ARRAY_BUFFER","CONSTR","byteLength","first","final","viewS","viewT","setUint8","getUint8","Typed","TYPED","TypedArrayConstructors","arrayFill","DATA_VIEW","WRONG_LENGTH","WRONG_INDEX","BaseBuffer","BUFFER","BYTE_LENGTH","BYTE_OFFSET","$BUFFER","$LENGTH","$OFFSET","packIEEE754","mLen","nBytes","eLen","eMax","eBias","rt","unpackIEEE754","nBits","unpackI32","bytes","packI8","packI16","packI32","packF64","packF32","addGetter","internal","view","isLittleEndian","numIndex","intIndex","_b","pack","reverse","conversion","validateArrayBufferArguments","numberLength","ArrayBufferProto","$setInt8","setInt8","getInt8","byteOffset","bufferLength","offset","getInt16","getUint16","getInt32","getUint32","getFloat32","getFloat64","setInt16","setUint16","setInt32","setUint32","setFloat32","setFloat64","init","Int8Array","$buffer","propertyDesc","same","createArrayIncludes","ArrayIterators","$iterDetect","arrayCopyWithin","Uint8Array","SHARED_BUFFER","BYTES_PER_ELEMENT","arrayForEach","arrayFilter","arraySome","arrayEvery","arrayIncludes","arrayValues","arrayKeys","arrayEntries","arrayLastIndexOf","arrayReduce","arrayReduceRight","arraySort","arrayToString","arrayToLocaleString","toLocaleString","TYPED_CONSTRUCTOR","DEF_CONSTRUCTOR","ALL_CONSTRUCTORS","TYPED_ARRAY","allocate","LITTLE_ENDIAN","Uint16Array","FORCED_SET","strictToLength","SAME","toOffset","BYTES","validate","speciesFromList","list","fromList","$from","$of","TO_LOCALE_BUG","$toLocaleString","predicate","middle","subarray","$begin","$set","$iterators","isTAIndex","$getDesc","$setDesc","$TypedArrayPrototype$","CLAMPED","ISNT_UINT8","GETTER","SETTER","TypedArray","TAC","TypedArrayPrototype","getter","o","round","addElement","$offset","$length","$len","$nativeIterator","CORRECT_ITER_NAME","$iterator","isIterable","Uint8ClampedArray","Int16Array","Int32Array","Uint32Array","Float32Array","Float64Array","$includes","at","$pad","padStart","maxLength","fillString","left","stringLength","fillStr","intMaxLength","fillLen","stringFiller","padEnd","trimLeft","trimRight","getFlags","RegExpProto","$RegExpStringIterator","regexp","_r","match","matchAll","flags","rx","lastIndex","ignoreCase","multiline","unicode","sticky","getOwnPropertyDescriptors","getDesc","$values","isEntries","__defineGetter__","__defineSetter__","__lookupGetter__","__lookupSetter__","isError","iaddh","x0","x1","y0","y1","$x0","$x1","$y0","isubh","imulh","u","$u","$v","u0","v0","u1","v1","umulh","metadata","toMetaKey","ordinaryDefineOwnMetadata","defineMetadata","metadataKey","metadataValue","targetKey","getOrCreateMetadataMap","targetMetadata","keyMetadata","ordinaryHasOwnMetadata","MetadataKey","metadataMap","ordinaryGetOwnMetadata","MetadataValue","ordinaryOwnMetadataKeys","_","deleteMetadata","ordinaryGetMetadata","hasOwn","getMetadata","ordinaryMetadataKeys","oKeys","pKeys","getMetadataKeys","getOwnMetadata","getOwnMetadataKeys","ordinaryHasMetadata","hasMetadata","hasOwnMetadata","decorator","$task","TO_STRING_TAG","collections","Collection","partial","navigator","MSIE","userAgent","time","setInterval","path","pargs","holder","Dict","dict","findKey","isDict","createDictMethod","createDictIter","DictIterator","mapPairs","getIterator","delay","part","define","mixin","make","$re","escape","regExp","&","<",">","\"","'","escapeHTML","&","<",">",""","'","unescapeHTML","amd"],"mappings":";;;;;;CAMC,SAASA,EAAKC,EAAKC,GACpB,cACS,SAAUC,GAKT,QAASC,qBAAoBC,GAG5B,GAAGC,EAAiBD,GACnB,MAAOC,GAAiBD,GAAUE,OAGnC,IAAIC,GAASF,EAAiBD,IAC7BE,WACAE,GAAIJ,EACJK,QAAQ,EAUT,OANAP,GAAQE,GAAUM,KAAKH,EAAOD,QAASC,EAAQA,EAAOD,QAASH,qBAG/DI,EAAOE,QAAS,EAGTF,EAAOD,QAvBf,GAAID,KAqCJ,OATAF,qBAAoBQ,EAAIT,EAGxBC,oBAAoBS,EAAIP,EAGxBF,oBAAoBU,EAAI,GAGjBV,oBAAoB,KAK/B,SAASI,EAAQD,EAASH,GAE/BA,EAAoB,GACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,K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","file":"library.min.js"}
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/client/shim.js b/node_modules/babel-register/node_modules/core-js/client/shim.js
new file mode 100644
index 0000000..b78b112
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/client/shim.js
@@ -0,0 +1,6932 @@
+/**
+ * core-js 2.2.0
+ * https://github.com/zloirock/core-js
+ * License: http://rock.mit-license.org
+ * © 2016 Denis Pushkarev
+ */
+!function(__e, __g, undefined){
+'use strict';
+/******/ (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] = {
+/******/ exports: {},
+/******/ id: moduleId,
+/******/ loaded: false
+/******/ };
+
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+
+/******/ // Flag the module as loaded
+/******/ module.loaded = 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;
+
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ([
+/* 0 */
+/***/ function(module, exports, __webpack_require__) {
+
+ __webpack_require__(1);
+ __webpack_require__(48);
+ __webpack_require__(49);
+ __webpack_require__(50);
+ __webpack_require__(52);
+ __webpack_require__(53);
+ __webpack_require__(56);
+ __webpack_require__(57);
+ __webpack_require__(58);
+ __webpack_require__(59);
+ __webpack_require__(60);
+ __webpack_require__(61);
+ __webpack_require__(62);
+ __webpack_require__(63);
+ __webpack_require__(64);
+ __webpack_require__(66);
+ __webpack_require__(68);
+ __webpack_require__(70);
+ __webpack_require__(72);
+ __webpack_require__(75);
+ __webpack_require__(76);
+ __webpack_require__(77);
+ __webpack_require__(81);
+ __webpack_require__(85);
+ __webpack_require__(86);
+ __webpack_require__(87);
+ __webpack_require__(88);
+ __webpack_require__(90);
+ __webpack_require__(91);
+ __webpack_require__(92);
+ __webpack_require__(93);
+ __webpack_require__(94);
+ __webpack_require__(96);
+ __webpack_require__(98);
+ __webpack_require__(99);
+ __webpack_require__(100);
+ __webpack_require__(102);
+ __webpack_require__(103);
+ __webpack_require__(104);
+ __webpack_require__(106);
+ __webpack_require__(107);
+ __webpack_require__(108);
+ __webpack_require__(110);
+ __webpack_require__(111);
+ __webpack_require__(112);
+ __webpack_require__(113);
+ __webpack_require__(114);
+ __webpack_require__(115);
+ __webpack_require__(116);
+ __webpack_require__(117);
+ __webpack_require__(118);
+ __webpack_require__(119);
+ __webpack_require__(120);
+ __webpack_require__(121);
+ __webpack_require__(122);
+ __webpack_require__(123);
+ __webpack_require__(125);
+ __webpack_require__(129);
+ __webpack_require__(130);
+ __webpack_require__(131);
+ __webpack_require__(132);
+ __webpack_require__(136);
+ __webpack_require__(138);
+ __webpack_require__(139);
+ __webpack_require__(140);
+ __webpack_require__(141);
+ __webpack_require__(142);
+ __webpack_require__(143);
+ __webpack_require__(144);
+ __webpack_require__(145);
+ __webpack_require__(146);
+ __webpack_require__(147);
+ __webpack_require__(148);
+ __webpack_require__(149);
+ __webpack_require__(150);
+ __webpack_require__(151);
+ __webpack_require__(156);
+ __webpack_require__(157);
+ __webpack_require__(159);
+ __webpack_require__(160);
+ __webpack_require__(161);
+ __webpack_require__(164);
+ __webpack_require__(165);
+ __webpack_require__(166);
+ __webpack_require__(167);
+ __webpack_require__(168);
+ __webpack_require__(170);
+ __webpack_require__(171);
+ __webpack_require__(172);
+ __webpack_require__(173);
+ __webpack_require__(176);
+ __webpack_require__(178);
+ __webpack_require__(179);
+ __webpack_require__(180);
+ __webpack_require__(182);
+ __webpack_require__(184);
+ __webpack_require__(186);
+ __webpack_require__(187);
+ __webpack_require__(188);
+ __webpack_require__(190);
+ __webpack_require__(191);
+ __webpack_require__(192);
+ __webpack_require__(193);
+ __webpack_require__(199);
+ __webpack_require__(202);
+ __webpack_require__(203);
+ __webpack_require__(205);
+ __webpack_require__(206);
+ __webpack_require__(207);
+ __webpack_require__(208);
+ __webpack_require__(209);
+ __webpack_require__(210);
+ __webpack_require__(211);
+ __webpack_require__(212);
+ __webpack_require__(213);
+ __webpack_require__(214);
+ __webpack_require__(215);
+ __webpack_require__(216);
+ __webpack_require__(218);
+ __webpack_require__(219);
+ __webpack_require__(220);
+ __webpack_require__(221);
+ __webpack_require__(222);
+ __webpack_require__(223);
+ __webpack_require__(224);
+ __webpack_require__(225);
+ __webpack_require__(227);
+ __webpack_require__(230);
+ __webpack_require__(231);
+ __webpack_require__(234);
+ __webpack_require__(235);
+ __webpack_require__(236);
+ __webpack_require__(237);
+ __webpack_require__(238);
+ __webpack_require__(239);
+ __webpack_require__(240);
+ __webpack_require__(241);
+ __webpack_require__(242);
+ __webpack_require__(243);
+ __webpack_require__(244);
+ __webpack_require__(246);
+ __webpack_require__(247);
+ __webpack_require__(248);
+ __webpack_require__(249);
+ __webpack_require__(250);
+ __webpack_require__(251);
+ __webpack_require__(253);
+ __webpack_require__(254);
+ __webpack_require__(256);
+ __webpack_require__(257);
+ __webpack_require__(258);
+ __webpack_require__(259);
+ __webpack_require__(262);
+ __webpack_require__(263);
+ __webpack_require__(264);
+ __webpack_require__(265);
+ __webpack_require__(266);
+ __webpack_require__(267);
+ __webpack_require__(268);
+ __webpack_require__(269);
+ __webpack_require__(271);
+ __webpack_require__(272);
+ __webpack_require__(273);
+ __webpack_require__(274);
+ __webpack_require__(275);
+ __webpack_require__(276);
+ __webpack_require__(277);
+ __webpack_require__(278);
+ __webpack_require__(279);
+ __webpack_require__(280);
+ module.exports = __webpack_require__(281);
+
+
+/***/ },
+/* 1 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // ECMAScript 6 symbols shim
+ var global = __webpack_require__(2)
+ , core = __webpack_require__(3)
+ , has = __webpack_require__(4)
+ , DESCRIPTORS = __webpack_require__(5)
+ , $export = __webpack_require__(7)
+ , redefine = __webpack_require__(16)
+ , META = __webpack_require__(20).KEY
+ , $fails = __webpack_require__(6)
+ , shared = __webpack_require__(21)
+ , setToStringTag = __webpack_require__(22)
+ , uid = __webpack_require__(17)
+ , wks = __webpack_require__(23)
+ , keyOf = __webpack_require__(24)
+ , enumKeys = __webpack_require__(37)
+ , isArray = __webpack_require__(40)
+ , anObject = __webpack_require__(10)
+ , toIObject = __webpack_require__(27)
+ , toPrimitive = __webpack_require__(14)
+ , createDesc = __webpack_require__(15)
+ , _create = __webpack_require__(41)
+ , gOPNExt = __webpack_require__(44)
+ , $GOPD = __webpack_require__(46)
+ , $DP = __webpack_require__(9)
+ , gOPD = $GOPD.f
+ , dP = $DP.f
+ , gOPN = gOPNExt.f
+ , $Symbol = global.Symbol
+ , $JSON = global.JSON
+ , _stringify = $JSON && $JSON.stringify
+ , setter = false
+ , PROTOTYPE = 'prototype'
+ , HIDDEN = wks('_hidden')
+ , TO_PRIMITIVE = wks('toPrimitive')
+ , isEnum = {}.propertyIsEnumerable
+ , SymbolRegistry = shared('symbol-registry')
+ , AllSymbols = shared('symbols')
+ , ObjectProto = Object[PROTOTYPE]
+ , USE_NATIVE = typeof $Symbol == 'function'
+ , QObject = global.QObject;
+
+ // fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687
+ var setSymbolDesc = DESCRIPTORS && $fails(function(){
+ return _create(dP({}, 'a', {
+ get: function(){ return dP(this, 'a', {value: 7}).a; }
+ })).a != 7;
+ }) ? function(it, key, D){
+ var protoDesc = gOPD(ObjectProto, key);
+ if(protoDesc)delete ObjectProto[key];
+ dP(it, key, D);
+ if(protoDesc && it !== ObjectProto)dP(ObjectProto, key, protoDesc);
+ } : dP;
+
+ var wrap = function(tag){
+ var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);
+ sym._k = tag;
+ DESCRIPTORS && setter && setSymbolDesc(ObjectProto, tag, {
+ configurable: true,
+ set: function(value){
+ if(has(this, HIDDEN) && has(this[HIDDEN], tag))this[HIDDEN][tag] = false;
+ setSymbolDesc(this, tag, createDesc(1, value));
+ }
+ });
+ return sym;
+ };
+
+ var isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function(it){
+ return typeof it == 'symbol';
+ } : function(it){
+ return it instanceof $Symbol;
+ };
+
+ var $defineProperty = function defineProperty(it, key, D){
+ anObject(it);
+ key = toPrimitive(key, true);
+ anObject(D);
+ if(has(AllSymbols, key)){
+ if(!D.enumerable){
+ if(!has(it, HIDDEN))dP(it, HIDDEN, createDesc(1, {}));
+ it[HIDDEN][key] = true;
+ } else {
+ if(has(it, HIDDEN) && it[HIDDEN][key])it[HIDDEN][key] = false;
+ D = _create(D, {enumerable: createDesc(0, false)});
+ } return setSymbolDesc(it, key, D);
+ } return dP(it, key, D);
+ };
+ var $defineProperties = function defineProperties(it, P){
+ anObject(it);
+ var keys = enumKeys(P = toIObject(P))
+ , i = 0
+ , l = keys.length
+ , key;
+ while(l > i)$defineProperty(it, key = keys[i++], P[key]);
+ return it;
+ };
+ var $create = function create(it, P){
+ return P === undefined ? _create(it) : $defineProperties(_create(it), P);
+ };
+ var $propertyIsEnumerable = function propertyIsEnumerable(key){
+ var E = isEnum.call(this, key = toPrimitive(key, true));
+ return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;
+ };
+ var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key){
+ var D = gOPD(it = toIObject(it), key = toPrimitive(key, true));
+ if(D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key]))D.enumerable = true;
+ return D;
+ };
+ var $getOwnPropertyNames = function getOwnPropertyNames(it){
+ var names = gOPN(toIObject(it))
+ , result = []
+ , i = 0
+ , key;
+ while(names.length > i)if(!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META)result.push(key);
+ return result;
+ };
+ var $getOwnPropertySymbols = function getOwnPropertySymbols(it){
+ var names = gOPN(toIObject(it))
+ , result = []
+ , i = 0
+ , key;
+ while(names.length > i)if(has(AllSymbols, key = names[i++]))result.push(AllSymbols[key]);
+ return result;
+ };
+ var $stringify = function stringify(it){
+ if(it === undefined || isSymbol(it))return; // IE8 returns string on undefined
+ var args = [it]
+ , i = 1
+ , replacer, $replacer;
+ while(arguments.length > i)args.push(arguments[i++]);
+ replacer = args[1];
+ if(typeof replacer == 'function')$replacer = replacer;
+ if($replacer || !isArray(replacer))replacer = function(key, value){
+ if($replacer)value = $replacer.call(this, key, value);
+ if(!isSymbol(value))return value;
+ };
+ args[1] = replacer;
+ return _stringify.apply($JSON, args);
+ };
+ var BUGGY_JSON = $fails(function(){
+ var S = $Symbol();
+ // MS Edge converts symbol values to JSON as {}
+ // WebKit converts symbol values to JSON as null
+ // V8 throws on boxed symbols
+ return _stringify([S]) != '[null]' || _stringify({a: S}) != '{}' || _stringify(Object(S)) != '{}';
+ });
+
+ // 19.4.1.1 Symbol([description])
+ if(!USE_NATIVE){
+ $Symbol = function Symbol(){
+ if(this instanceof $Symbol)throw TypeError('Symbol is not a constructor!');
+ return wrap(uid(arguments.length > 0 ? arguments[0] : undefined));
+ };
+ redefine($Symbol[PROTOTYPE], 'toString', function toString(){
+ return this._k;
+ });
+
+ $GOPD.f = $getOwnPropertyDescriptor;
+ $DP.f = $defineProperty;
+ __webpack_require__(45).f = gOPNExt.f = $getOwnPropertyNames;
+ __webpack_require__(39).f = $propertyIsEnumerable
+ __webpack_require__(38).f = $getOwnPropertySymbols;
+
+ if(DESCRIPTORS && !__webpack_require__(47)){
+ redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);
+ }
+ }
+
+ $export($export.G + $export.W + $export.F * !USE_NATIVE, {Symbol: $Symbol});
+
+ // 19.4.2.2 Symbol.hasInstance
+ // 19.4.2.3 Symbol.isConcatSpreadable
+ // 19.4.2.4 Symbol.iterator
+ // 19.4.2.6 Symbol.match
+ // 19.4.2.8 Symbol.replace
+ // 19.4.2.9 Symbol.search
+ // 19.4.2.10 Symbol.species
+ // 19.4.2.11 Symbol.split
+ // 19.4.2.12 Symbol.toPrimitive
+ // 19.4.2.13 Symbol.toStringTag
+ // 19.4.2.14 Symbol.unscopables
+ for(var symbols = (
+ 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'
+ ).split(','), i = 0; symbols.length > i; ){
+ var key = symbols[i++]
+ , Wrapper = core.Symbol
+ , sym = wks(key);
+ if(!(key in Wrapper))dP(Wrapper, key, {value: USE_NATIVE ? sym : wrap(sym)});
+ };
+
+ // Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173
+ if(!QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild)setter = true;
+
+ $export($export.S + $export.F * !USE_NATIVE, 'Symbol', {
+ // 19.4.2.1 Symbol.for(key)
+ 'for': function(key){
+ return has(SymbolRegistry, key += '')
+ ? SymbolRegistry[key]
+ : SymbolRegistry[key] = $Symbol(key);
+ },
+ // 19.4.2.5 Symbol.keyFor(sym)
+ keyFor: function keyFor(key){
+ if(isSymbol(key))return keyOf(SymbolRegistry, key);
+ throw TypeError(key + ' is not a symbol!');
+ },
+ useSetter: function(){ setter = true; },
+ useSimple: function(){ setter = false; }
+ });
+
+ $export($export.S + $export.F * !USE_NATIVE, 'Object', {
+ // 19.1.2.2 Object.create(O [, Properties])
+ create: $create,
+ // 19.1.2.4 Object.defineProperty(O, P, Attributes)
+ defineProperty: $defineProperty,
+ // 19.1.2.3 Object.defineProperties(O, Properties)
+ defineProperties: $defineProperties,
+ // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)
+ getOwnPropertyDescriptor: $getOwnPropertyDescriptor,
+ // 19.1.2.7 Object.getOwnPropertyNames(O)
+ getOwnPropertyNames: $getOwnPropertyNames,
+ // 19.1.2.8 Object.getOwnPropertySymbols(O)
+ getOwnPropertySymbols: $getOwnPropertySymbols
+ });
+
+ // 24.3.2 JSON.stringify(value [, replacer [, space]])
+ $JSON && $export($export.S + $export.F * (!USE_NATIVE || BUGGY_JSON), 'JSON', {stringify: $stringify});
+
+ // 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)
+ $Symbol[PROTOTYPE][TO_PRIMITIVE] || __webpack_require__(8)($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);
+ // 19.4.3.5 Symbol.prototype[@@toStringTag]
+ setToStringTag($Symbol, 'Symbol');
+ // 20.2.1.9 Math[@@toStringTag]
+ setToStringTag(Math, 'Math', true);
+ // 24.3.3 JSON[@@toStringTag]
+ setToStringTag(global.JSON, 'JSON', true);
+
+/***/ },
+/* 2 */
+/***/ function(module, exports) {
+
+ // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
+ var global = module.exports = typeof window != 'undefined' && window.Math == Math
+ ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')();
+ if(typeof __g == 'number')__g = global; // eslint-disable-line no-undef
+
+/***/ },
+/* 3 */
+/***/ function(module, exports) {
+
+ var core = module.exports = {version: '2.2.0'};
+ if(typeof __e == 'number')__e = core; // eslint-disable-line no-undef
+
+/***/ },
+/* 4 */
+/***/ function(module, exports) {
+
+ var hasOwnProperty = {}.hasOwnProperty;
+ module.exports = function(it, key){
+ return hasOwnProperty.call(it, key);
+ };
+
+/***/ },
+/* 5 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // Thank's IE8 for his funny defineProperty
+ module.exports = !__webpack_require__(6)(function(){
+ return Object.defineProperty({}, 'a', {get: function(){ return 7; }}).a != 7;
+ });
+
+/***/ },
+/* 6 */
+/***/ function(module, exports) {
+
+ module.exports = function(exec){
+ try {
+ return !!exec();
+ } catch(e){
+ return true;
+ }
+ };
+
+/***/ },
+/* 7 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var global = __webpack_require__(2)
+ , core = __webpack_require__(3)
+ , hide = __webpack_require__(8)
+ , redefine = __webpack_require__(16)
+ , ctx = __webpack_require__(18)
+ , PROTOTYPE = 'prototype';
+
+ var $export = function(type, name, source){
+ var IS_FORCED = type & $export.F
+ , IS_GLOBAL = type & $export.G
+ , IS_STATIC = type & $export.S
+ , IS_PROTO = type & $export.P
+ , IS_BIND = type & $export.B
+ , target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE]
+ , exports = IS_GLOBAL ? core : core[name] || (core[name] = {})
+ , expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {})
+ , key, own, out, exp;
+ if(IS_GLOBAL)source = name;
+ for(key in source){
+ // contains in native
+ own = !IS_FORCED && target && target[key] !== undefined;
+ // export native or passed
+ out = (own ? target : source)[key];
+ // bind timers to global for call from export context
+ exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;
+ // extend global
+ if(target)redefine(target, key, out, type & $export.U);
+ // export
+ if(exports[key] != out)hide(exports, key, exp);
+ if(IS_PROTO && expProto[key] != out)expProto[key] = out;
+ }
+ };
+ global.core = core;
+ // type bitmap
+ $export.F = 1; // forced
+ $export.G = 2; // global
+ $export.S = 4; // static
+ $export.P = 8; // proto
+ $export.B = 16; // bind
+ $export.W = 32; // wrap
+ $export.U = 64; // safe
+ $export.R = 128; // real proto method for `library`
+ module.exports = $export;
+
+/***/ },
+/* 8 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var dP = __webpack_require__(9)
+ , createDesc = __webpack_require__(15);
+ module.exports = __webpack_require__(5) ? function(object, key, value){
+ return dP.f(object, key, createDesc(1, value));
+ } : function(object, key, value){
+ object[key] = value;
+ return object;
+ };
+
+/***/ },
+/* 9 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var anObject = __webpack_require__(10)
+ , IE8_DOM_DEFINE = __webpack_require__(12)
+ , toPrimitive = __webpack_require__(14)
+ , dP = Object.defineProperty;
+
+ exports.f = __webpack_require__(5) ? Object.defineProperty : function defineProperty(O, P, Attributes){
+ anObject(O);
+ P = toPrimitive(P, true);
+ anObject(Attributes);
+ if(IE8_DOM_DEFINE)try {
+ return dP(O, P, Attributes);
+ } catch(e){ /* empty */ }
+ if('get' in Attributes || 'set' in Attributes)throw TypeError('Accessors not supported!');
+ if('value' in Attributes)O[P] = Attributes.value;
+ return O;
+ };
+
+/***/ },
+/* 10 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var isObject = __webpack_require__(11);
+ module.exports = function(it){
+ if(!isObject(it))throw TypeError(it + ' is not an object!');
+ return it;
+ };
+
+/***/ },
+/* 11 */
+/***/ function(module, exports) {
+
+ module.exports = function(it){
+ return typeof it === 'object' ? it !== null : typeof it === 'function';
+ };
+
+/***/ },
+/* 12 */
+/***/ function(module, exports, __webpack_require__) {
+
+ module.exports = !__webpack_require__(5) && !__webpack_require__(6)(function(){
+ return Object.defineProperty(__webpack_require__(13)('div'), 'a', {get: function(){ return 7; }}).a != 7;
+ });
+
+/***/ },
+/* 13 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var isObject = __webpack_require__(11)
+ , document = __webpack_require__(2).document
+ // in old IE typeof document.createElement is 'object'
+ , is = isObject(document) && isObject(document.createElement);
+ module.exports = function(it){
+ return is ? document.createElement(it) : {};
+ };
+
+/***/ },
+/* 14 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 7.1.1 ToPrimitive(input [, PreferredType])
+ var isObject = __webpack_require__(11);
+ // instead of the ES6 spec version, we didn't implement @@toPrimitive case
+ // and the second argument - flag - preferred type is a string
+ module.exports = function(it, S){
+ if(!isObject(it))return it;
+ var fn, val;
+ if(S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val;
+ if(typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it)))return val;
+ if(!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val;
+ throw TypeError("Can't convert object to primitive value");
+ };
+
+/***/ },
+/* 15 */
+/***/ function(module, exports) {
+
+ module.exports = function(bitmap, value){
+ return {
+ enumerable : !(bitmap & 1),
+ configurable: !(bitmap & 2),
+ writable : !(bitmap & 4),
+ value : value
+ };
+ };
+
+/***/ },
+/* 16 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var global = __webpack_require__(2)
+ , hide = __webpack_require__(8)
+ , has = __webpack_require__(4)
+ , SRC = __webpack_require__(17)('src')
+ , TO_STRING = 'toString'
+ , $toString = Function[TO_STRING]
+ , TPL = ('' + $toString).split(TO_STRING);
+
+ __webpack_require__(3).inspectSource = function(it){
+ return $toString.call(it);
+ };
+
+ (module.exports = function(O, key, val, safe){
+ var isFunction = typeof val == 'function';
+ if(isFunction)has(val, 'name') || hide(val, 'name', key);
+ if(O[key] === val)return;
+ if(isFunction)has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));
+ if(O === global){
+ O[key] = val;
+ } else {
+ if(!safe){
+ delete O[key];
+ hide(O, key, val);
+ } else {
+ if(O[key])O[key] = val;
+ else hide(O, key, val);
+ }
+ }
+ // add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative
+ })(Function.prototype, TO_STRING, function toString(){
+ return typeof this == 'function' && this[SRC] || $toString.call(this);
+ });
+
+/***/ },
+/* 17 */
+/***/ function(module, exports) {
+
+ var id = 0
+ , px = Math.random();
+ module.exports = function(key){
+ return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));
+ };
+
+/***/ },
+/* 18 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // optional / simple context binding
+ var aFunction = __webpack_require__(19);
+ module.exports = function(fn, that, length){
+ aFunction(fn);
+ if(that === undefined)return fn;
+ switch(length){
+ case 1: return function(a){
+ return fn.call(that, a);
+ };
+ case 2: return function(a, b){
+ return fn.call(that, a, b);
+ };
+ case 3: return function(a, b, c){
+ return fn.call(that, a, b, c);
+ };
+ }
+ return function(/* ...args */){
+ return fn.apply(that, arguments);
+ };
+ };
+
+/***/ },
+/* 19 */
+/***/ function(module, exports) {
+
+ module.exports = function(it){
+ if(typeof it != 'function')throw TypeError(it + ' is not a function!');
+ return it;
+ };
+
+/***/ },
+/* 20 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var META = __webpack_require__(17)('meta')
+ , isObject = __webpack_require__(11)
+ , has = __webpack_require__(4)
+ , setDesc = __webpack_require__(9).f
+ , id = 0;
+ var isExtensible = Object.isExtensible || function(){
+ return true;
+ };
+ var FREEZE = !__webpack_require__(6)(function(){
+ return isExtensible(Object.preventExtensions({}));
+ });
+ var setMeta = function(it){
+ setDesc(it, META, {value: {
+ i: 'O' + ++id, // object ID
+ w: {} // weak collections IDs
+ }});
+ };
+ var fastKey = function(it, create){
+ // return primitive with prefix
+ if(!isObject(it))return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;
+ if(!has(it, META)){
+ // can't set metadata to uncaught frozen object
+ if(!isExtensible(it))return 'F';
+ // not necessary to add metadata
+ if(!create)return 'E';
+ // add missing metadata
+ setMeta(it);
+ // return object ID
+ } return it[META].i;
+ };
+ var getWeak = function(it, create){
+ if(!has(it, META)){
+ // can't set metadata to uncaught frozen object
+ if(!isExtensible(it))return true;
+ // not necessary to add metadata
+ if(!create)return false;
+ // add missing metadata
+ setMeta(it);
+ // return hash weak collections IDs
+ } return it[META].w;
+ };
+ // add metadata on freeze-family methods calling
+ var onFreeze = function(it){
+ if(FREEZE && meta.NEED && isExtensible(it) && !has(it, META))setMeta(it);
+ return it;
+ };
+ var meta = module.exports = {
+ KEY: META,
+ NEED: false,
+ fastKey: fastKey,
+ getWeak: getWeak,
+ onFreeze: onFreeze
+ };
+
+/***/ },
+/* 21 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var global = __webpack_require__(2)
+ , SHARED = '__core-js_shared__'
+ , store = global[SHARED] || (global[SHARED] = {});
+ module.exports = function(key){
+ return store[key] || (store[key] = {});
+ };
+
+/***/ },
+/* 22 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var def = __webpack_require__(9).f
+ , has = __webpack_require__(4)
+ , TAG = __webpack_require__(23)('toStringTag');
+
+ module.exports = function(it, tag, stat){
+ if(it && !has(it = stat ? it : it.prototype, TAG))def(it, TAG, {configurable: true, value: tag});
+ };
+
+/***/ },
+/* 23 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var store = __webpack_require__(21)('wks')
+ , uid = __webpack_require__(17)
+ , Symbol = __webpack_require__(2).Symbol
+ , USE_SYMBOL = typeof Symbol == 'function';
+ module.exports = function(name){
+ return store[name] || (store[name] =
+ USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));
+ };
+
+/***/ },
+/* 24 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var getKeys = __webpack_require__(25)
+ , toIObject = __webpack_require__(27);
+ module.exports = function(object, el){
+ var O = toIObject(object)
+ , keys = getKeys(O)
+ , length = keys.length
+ , index = 0
+ , key;
+ while(length > index)if(O[key = keys[index++]] === el)return key;
+ };
+
+/***/ },
+/* 25 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 19.1.2.14 / 15.2.3.14 Object.keys(O)
+ var $keys = __webpack_require__(26)
+ , enumBugKeys = __webpack_require__(36);
+
+ module.exports = Object.keys || function keys(O){
+ return $keys(O, enumBugKeys);
+ };
+
+/***/ },
+/* 26 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var has = __webpack_require__(4)
+ , toIObject = __webpack_require__(27)
+ , arrayIndexOf = __webpack_require__(31)(false)
+ , IE_PROTO = __webpack_require__(35)('IE_PROTO');
+
+ module.exports = function(object, names){
+ var O = toIObject(object)
+ , i = 0
+ , result = []
+ , key;
+ for(key in O)if(key != IE_PROTO)has(O, key) && result.push(key);
+ // Don't enum bug & hidden keys
+ while(names.length > i)if(has(O, key = names[i++])){
+ ~arrayIndexOf(result, key) || result.push(key);
+ }
+ return result;
+ };
+
+/***/ },
+/* 27 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // to indexed object, toObject with fallback for non-array-like ES3 strings
+ var IObject = __webpack_require__(28)
+ , defined = __webpack_require__(30);
+ module.exports = function(it){
+ return IObject(defined(it));
+ };
+
+/***/ },
+/* 28 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // fallback for non-array-like ES3 and non-enumerable old V8 strings
+ var cof = __webpack_require__(29);
+ module.exports = Object('z').propertyIsEnumerable(0) ? Object : function(it){
+ return cof(it) == 'String' ? it.split('') : Object(it);
+ };
+
+/***/ },
+/* 29 */
+/***/ function(module, exports) {
+
+ var toString = {}.toString;
+
+ module.exports = function(it){
+ return toString.call(it).slice(8, -1);
+ };
+
+/***/ },
+/* 30 */
+/***/ function(module, exports) {
+
+ // 7.2.1 RequireObjectCoercible(argument)
+ module.exports = function(it){
+ if(it == undefined)throw TypeError("Can't call method on " + it);
+ return it;
+ };
+
+/***/ },
+/* 31 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // false -> Array#indexOf
+ // true -> Array#includes
+ var toIObject = __webpack_require__(27)
+ , toLength = __webpack_require__(32)
+ , toIndex = __webpack_require__(34);
+ module.exports = function(IS_INCLUDES){
+ return function($this, el, fromIndex){
+ var O = toIObject($this)
+ , length = toLength(O.length)
+ , index = toIndex(fromIndex, length)
+ , value;
+ // Array#includes uses SameValueZero equality algorithm
+ if(IS_INCLUDES && el != el)while(length > index){
+ value = O[index++];
+ if(value != value)return true;
+ // Array#toIndex ignores holes, Array#includes - not
+ } else for(;length > index; index++)if(IS_INCLUDES || index in O){
+ if(O[index] === el)return IS_INCLUDES || index;
+ } return !IS_INCLUDES && -1;
+ };
+ };
+
+/***/ },
+/* 32 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 7.1.15 ToLength
+ var toInteger = __webpack_require__(33)
+ , min = Math.min;
+ module.exports = function(it){
+ return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991
+ };
+
+/***/ },
+/* 33 */
+/***/ function(module, exports) {
+
+ // 7.1.4 ToInteger
+ var ceil = Math.ceil
+ , floor = Math.floor;
+ module.exports = function(it){
+ return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);
+ };
+
+/***/ },
+/* 34 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var toInteger = __webpack_require__(33)
+ , max = Math.max
+ , min = Math.min;
+ module.exports = function(index, length){
+ index = toInteger(index);
+ return index < 0 ? max(index + length, 0) : min(index, length);
+ };
+
+/***/ },
+/* 35 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var shared = __webpack_require__(21)('keys')
+ , uid = __webpack_require__(17);
+ module.exports = function(key){
+ return shared[key] || (shared[key] = uid(key));
+ };
+
+/***/ },
+/* 36 */
+/***/ function(module, exports) {
+
+ // IE 8- don't enum bug keys
+ module.exports = (
+ 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'
+ ).split(',');
+
+/***/ },
+/* 37 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // all enumerable object keys, includes symbols
+ var getKeys = __webpack_require__(25)
+ , gOPS = __webpack_require__(38)
+ , pIE = __webpack_require__(39);
+ module.exports = function(it){
+ var result = getKeys(it)
+ , getSymbols = gOPS.f;
+ if(getSymbols){
+ var symbols = getSymbols(it)
+ , isEnum = pIE.f
+ , i = 0
+ , key;
+ while(symbols.length > i)if(isEnum.call(it, key = symbols[i++]))result.push(key);
+ } return result;
+ };
+
+/***/ },
+/* 38 */
+/***/ function(module, exports) {
+
+ exports.f = Object.getOwnPropertySymbols;
+
+/***/ },
+/* 39 */
+/***/ function(module, exports) {
+
+ exports.f = {}.propertyIsEnumerable;
+
+/***/ },
+/* 40 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 7.2.2 IsArray(argument)
+ var cof = __webpack_require__(29);
+ module.exports = Array.isArray || function isArray(arg){
+ return cof(arg) == 'Array';
+ };
+
+/***/ },
+/* 41 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
+ var anObject = __webpack_require__(10)
+ , dPs = __webpack_require__(42)
+ , enumBugKeys = __webpack_require__(36)
+ , IE_PROTO = __webpack_require__(35)('IE_PROTO')
+ , Empty = function(){ /* empty */ }
+ , PROTOTYPE = 'prototype';
+
+ // Create object with fake `null` prototype: use iframe Object with cleared prototype
+ var createDict = function(){
+ // Thrash, waste and sodomy: IE GC bug
+ var iframe = __webpack_require__(13)('iframe')
+ , i = enumBugKeys.length
+ , gt = '>'
+ , iframeDocument;
+ iframe.style.display = 'none';
+ __webpack_require__(43).appendChild(iframe);
+ iframe.src = 'javascript:'; // eslint-disable-line no-script-url
+ // createDict = iframe.contentWindow.Object;
+ // html.removeChild(iframe);
+ iframeDocument = iframe.contentWindow.document;
+ iframeDocument.open();
+ iframeDocument.write(' i)dP.f(O, P = keys[i++], Properties[P]);
+ return O;
+ };
+
+/***/ },
+/* 43 */
+/***/ function(module, exports, __webpack_require__) {
+
+ module.exports = __webpack_require__(2).document && document.documentElement;
+
+/***/ },
+/* 44 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window
+ var toIObject = __webpack_require__(27)
+ , gOPN = __webpack_require__(45).f
+ , toString = {}.toString;
+
+ var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames
+ ? Object.getOwnPropertyNames(window) : [];
+
+ var getWindowNames = function(it){
+ try {
+ return gOPN.f(it);
+ } catch(e){
+ return windowNames.slice();
+ }
+ };
+
+ module.exports.f = function getOwnPropertyNames(it){
+ return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));
+ };
+
+/***/ },
+/* 45 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)
+ var $keys = __webpack_require__(26)
+ , hiddenKeys = __webpack_require__(36).concat('length', 'prototype');
+
+ exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O){
+ return $keys(O, hiddenKeys);
+ };
+
+/***/ },
+/* 46 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var pIE = __webpack_require__(39)
+ , createDesc = __webpack_require__(15)
+ , toIObject = __webpack_require__(27)
+ , toPrimitive = __webpack_require__(14)
+ , has = __webpack_require__(4)
+ , IE8_DOM_DEFINE = __webpack_require__(12)
+ , gOPD = Object.getOwnPropertyDescriptor;
+
+ exports.f = __webpack_require__(5) ? gOPD : function getOwnPropertyDescriptor(O, P){
+ O = toIObject(O);
+ P = toPrimitive(P, true);
+ if(IE8_DOM_DEFINE)try {
+ return gOPD(O, P);
+ } catch(e){ /* empty */ }
+ if(has(O, P))return createDesc(!pIE.f.call(O, P), O[P]);
+ };
+
+/***/ },
+/* 47 */
+/***/ function(module, exports) {
+
+ module.exports = false;
+
+/***/ },
+/* 48 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var $export = __webpack_require__(7);
+ // 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)
+ $export($export.S + $export.F * !__webpack_require__(5), 'Object', {defineProperty: __webpack_require__(9).f});
+
+/***/ },
+/* 49 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var $export = __webpack_require__(7);
+ // 19.1.2.3 / 15.2.3.7 Object.defineProperties(O, Properties)
+ $export($export.S + $export.F * !__webpack_require__(5), 'Object', {defineProperties: __webpack_require__(42)});
+
+/***/ },
+/* 50 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)
+ var toIObject = __webpack_require__(27)
+ , $getOwnPropertyDescriptor = __webpack_require__(46).f;
+
+ __webpack_require__(51)('getOwnPropertyDescriptor', function(){
+ return function getOwnPropertyDescriptor(it, key){
+ return $getOwnPropertyDescriptor(toIObject(it), key);
+ };
+ });
+
+/***/ },
+/* 51 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // most Object methods by ES6 should accept primitives
+ var $export = __webpack_require__(7)
+ , core = __webpack_require__(3)
+ , fails = __webpack_require__(6);
+ module.exports = function(KEY, exec){
+ var fn = (core.Object || {})[KEY] || Object[KEY]
+ , exp = {};
+ exp[KEY] = exec(fn);
+ $export($export.S + $export.F * fails(function(){ fn(1); }), 'Object', exp);
+ };
+
+/***/ },
+/* 52 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var $export = __webpack_require__(7)
+ // 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
+ $export($export.S, 'Object', {create: __webpack_require__(41)});
+
+/***/ },
+/* 53 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 19.1.2.9 Object.getPrototypeOf(O)
+ var toObject = __webpack_require__(54)
+ , $getPrototypeOf = __webpack_require__(55);
+
+ __webpack_require__(51)('getPrototypeOf', function(){
+ return function getPrototypeOf(it){
+ return $getPrototypeOf(toObject(it));
+ };
+ });
+
+/***/ },
+/* 54 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 7.1.13 ToObject(argument)
+ var defined = __webpack_require__(30);
+ module.exports = function(it){
+ return Object(defined(it));
+ };
+
+/***/ },
+/* 55 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)
+ var has = __webpack_require__(4)
+ , toObject = __webpack_require__(54)
+ , IE_PROTO = __webpack_require__(35)('IE_PROTO')
+ , ObjectProto = Object.prototype;
+
+ module.exports = Object.getPrototypeOf || function(O){
+ O = toObject(O);
+ if(has(O, IE_PROTO))return O[IE_PROTO];
+ if(typeof O.constructor == 'function' && O instanceof O.constructor){
+ return O.constructor.prototype;
+ } return O instanceof Object ? ObjectProto : null;
+ };
+
+/***/ },
+/* 56 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 19.1.2.14 Object.keys(O)
+ var toObject = __webpack_require__(54)
+ , $keys = __webpack_require__(25);
+
+ __webpack_require__(51)('keys', function(){
+ return function keys(it){
+ return $keys(toObject(it));
+ };
+ });
+
+/***/ },
+/* 57 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 19.1.2.7 Object.getOwnPropertyNames(O)
+ __webpack_require__(51)('getOwnPropertyNames', function(){
+ return __webpack_require__(44).f;
+ });
+
+/***/ },
+/* 58 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 19.1.2.5 Object.freeze(O)
+ var isObject = __webpack_require__(11)
+ , meta = __webpack_require__(20).onFreeze;
+
+ __webpack_require__(51)('freeze', function($freeze){
+ return function freeze(it){
+ return $freeze && isObject(it) ? $freeze(meta(it)) : it;
+ };
+ });
+
+/***/ },
+/* 59 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 19.1.2.17 Object.seal(O)
+ var isObject = __webpack_require__(11)
+ , meta = __webpack_require__(20).onFreeze;
+
+ __webpack_require__(51)('seal', function($seal){
+ return function seal(it){
+ return $seal && isObject(it) ? $seal(meta(it)) : it;
+ };
+ });
+
+/***/ },
+/* 60 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 19.1.2.15 Object.preventExtensions(O)
+ var isObject = __webpack_require__(11)
+ , meta = __webpack_require__(20).onFreeze;
+
+ __webpack_require__(51)('preventExtensions', function($preventExtensions){
+ return function preventExtensions(it){
+ return $preventExtensions && isObject(it) ? $preventExtensions(meta(it)) : it;
+ };
+ });
+
+/***/ },
+/* 61 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 19.1.2.12 Object.isFrozen(O)
+ var isObject = __webpack_require__(11);
+
+ __webpack_require__(51)('isFrozen', function($isFrozen){
+ return function isFrozen(it){
+ return isObject(it) ? $isFrozen ? $isFrozen(it) : false : true;
+ };
+ });
+
+/***/ },
+/* 62 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 19.1.2.13 Object.isSealed(O)
+ var isObject = __webpack_require__(11);
+
+ __webpack_require__(51)('isSealed', function($isSealed){
+ return function isSealed(it){
+ return isObject(it) ? $isSealed ? $isSealed(it) : false : true;
+ };
+ });
+
+/***/ },
+/* 63 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 19.1.2.11 Object.isExtensible(O)
+ var isObject = __webpack_require__(11);
+
+ __webpack_require__(51)('isExtensible', function($isExtensible){
+ return function isExtensible(it){
+ return isObject(it) ? $isExtensible ? $isExtensible(it) : true : false;
+ };
+ });
+
+/***/ },
+/* 64 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 19.1.3.1 Object.assign(target, source)
+ var $export = __webpack_require__(7);
+
+ $export($export.S + $export.F, 'Object', {assign: __webpack_require__(65)});
+
+/***/ },
+/* 65 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // 19.1.2.1 Object.assign(target, source, ...)
+ var getKeys = __webpack_require__(25)
+ , gOPS = __webpack_require__(38)
+ , pIE = __webpack_require__(39)
+ , toObject = __webpack_require__(54)
+ , IObject = __webpack_require__(28)
+ , $assign = Object.assign;
+
+ // should work with symbols and should have deterministic property order (V8 bug)
+ module.exports = !$assign || __webpack_require__(6)(function(){
+ var A = {}
+ , B = {}
+ , S = Symbol()
+ , K = 'abcdefghijklmnopqrst';
+ A[S] = 7;
+ K.split('').forEach(function(k){ B[k] = k; });
+ return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;
+ }) ? function assign(target, source){ // eslint-disable-line no-unused-vars
+ var T = toObject(target)
+ , aLen = arguments.length
+ , index = 1
+ , getSymbols = gOPS.f
+ , isEnum = pIE.f;
+ while(aLen > index){
+ var S = IObject(arguments[index++])
+ , keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S)
+ , length = keys.length
+ , j = 0
+ , key;
+ while(length > j)if(isEnum.call(S, key = keys[j++]))T[key] = S[key];
+ } return T;
+ } : $assign;
+
+/***/ },
+/* 66 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 19.1.3.10 Object.is(value1, value2)
+ var $export = __webpack_require__(7);
+ $export($export.S, 'Object', {is: __webpack_require__(67)});
+
+/***/ },
+/* 67 */
+/***/ function(module, exports) {
+
+ // 7.2.9 SameValue(x, y)
+ module.exports = Object.is || function is(x, y){
+ return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;
+ };
+
+/***/ },
+/* 68 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 19.1.3.19 Object.setPrototypeOf(O, proto)
+ var $export = __webpack_require__(7);
+ $export($export.S, 'Object', {setPrototypeOf: __webpack_require__(69).set});
+
+/***/ },
+/* 69 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // Works with __proto__ only. Old v8 can't work with null proto objects.
+ /* eslint-disable no-proto */
+ var isObject = __webpack_require__(11)
+ , anObject = __webpack_require__(10);
+ var check = function(O, proto){
+ anObject(O);
+ if(!isObject(proto) && proto !== null)throw TypeError(proto + ": can't set as prototype!");
+ };
+ module.exports = {
+ set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line
+ function(test, buggy, set){
+ try {
+ set = __webpack_require__(18)(Function.call, __webpack_require__(46).f(Object.prototype, '__proto__').set, 2);
+ set(test, []);
+ buggy = !(test instanceof Array);
+ } catch(e){ buggy = true; }
+ return function setPrototypeOf(O, proto){
+ check(O, proto);
+ if(buggy)O.__proto__ = proto;
+ else set(O, proto);
+ return O;
+ };
+ }({}, false) : undefined),
+ check: check
+ };
+
+/***/ },
+/* 70 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // 19.1.3.6 Object.prototype.toString()
+ var classof = __webpack_require__(71)
+ , test = {};
+ test[__webpack_require__(23)('toStringTag')] = 'z';
+ if(test + '' != '[object z]'){
+ __webpack_require__(16)(Object.prototype, 'toString', function toString(){
+ return '[object ' + classof(this) + ']';
+ }, true);
+ }
+
+/***/ },
+/* 71 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // getting tag from 19.1.3.6 Object.prototype.toString()
+ var cof = __webpack_require__(29)
+ , TAG = __webpack_require__(23)('toStringTag')
+ // ES3 wrong here
+ , ARG = cof(function(){ return arguments; }()) == 'Arguments';
+
+ // fallback for IE11 Script Access Denied error
+ var tryGet = function(it, key){
+ try {
+ return it[key];
+ } catch(e){ /* empty */ }
+ };
+
+ module.exports = function(it){
+ var O, T, B;
+ return it === undefined ? 'Undefined' : it === null ? 'Null'
+ // @@toStringTag case
+ : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T
+ // builtinTag case
+ : ARG ? cof(O)
+ // ES3 arguments fallback
+ : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;
+ };
+
+/***/ },
+/* 72 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 19.2.3.2 / 15.3.4.5 Function.prototype.bind(thisArg, args...)
+ var $export = __webpack_require__(7);
+
+ $export($export.P, 'Function', {bind: __webpack_require__(73)});
+
+/***/ },
+/* 73 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var aFunction = __webpack_require__(19)
+ , isObject = __webpack_require__(11)
+ , invoke = __webpack_require__(74)
+ , arraySlice = [].slice
+ , factories = {};
+
+ var construct = function(F, len, args){
+ if(!(len in factories)){
+ for(var n = [], i = 0; i < len; i++)n[i] = 'a[' + i + ']';
+ factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')');
+ } return factories[len](F, args);
+ };
+
+ module.exports = Function.bind || function bind(that /*, args... */){
+ var fn = aFunction(this)
+ , partArgs = arraySlice.call(arguments, 1);
+ var bound = function(/* args... */){
+ var args = partArgs.concat(arraySlice.call(arguments));
+ return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that);
+ };
+ if(isObject(fn.prototype))bound.prototype = fn.prototype;
+ return bound;
+ };
+
+/***/ },
+/* 74 */
+/***/ function(module, exports) {
+
+ // fast apply, http://jsperf.lnkit.com/fast-apply/5
+ module.exports = function(fn, args, that){
+ var un = that === undefined;
+ switch(args.length){
+ case 0: return un ? fn()
+ : fn.call(that);
+ case 1: return un ? fn(args[0])
+ : fn.call(that, args[0]);
+ case 2: return un ? fn(args[0], args[1])
+ : fn.call(that, args[0], args[1]);
+ case 3: return un ? fn(args[0], args[1], args[2])
+ : fn.call(that, args[0], args[1], args[2]);
+ case 4: return un ? fn(args[0], args[1], args[2], args[3])
+ : fn.call(that, args[0], args[1], args[2], args[3]);
+ } return fn.apply(that, args);
+ };
+
+/***/ },
+/* 75 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var dP = __webpack_require__(9).f
+ , createDesc = __webpack_require__(15)
+ , has = __webpack_require__(4)
+ , FProto = Function.prototype
+ , nameRE = /^\s*function ([^ (]*)/
+ , NAME = 'name';
+ // 19.2.4.2 name
+ NAME in FProto || __webpack_require__(5) && dP(FProto, NAME, {
+ configurable: true,
+ get: function(){
+ var match = ('' + this).match(nameRE)
+ , name = match ? match[1] : '';
+ has(this, NAME) || dP(this, NAME, createDesc(5, name));
+ return name;
+ }
+ });
+
+/***/ },
+/* 76 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var isObject = __webpack_require__(11)
+ , getPrototypeOf = __webpack_require__(55)
+ , HAS_INSTANCE = __webpack_require__(23)('hasInstance')
+ , FunctionProto = Function.prototype;
+ // 19.2.3.6 Function.prototype[@@hasInstance](V)
+ if(!(HAS_INSTANCE in FunctionProto))__webpack_require__(9).f(FunctionProto, HAS_INSTANCE, {value: function(O){
+ if(typeof this != 'function' || !isObject(O))return false;
+ if(!isObject(this.prototype))return O instanceof this;
+ // for environment w/o native `@@hasInstance` logic enough `instanceof`, but add this:
+ while(O = getPrototypeOf(O))if(this.prototype === O)return true;
+ return false;
+ }});
+
+/***/ },
+/* 77 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var global = __webpack_require__(2)
+ , has = __webpack_require__(4)
+ , cof = __webpack_require__(29)
+ , inheritIfRequired = __webpack_require__(78)
+ , toPrimitive = __webpack_require__(14)
+ , fails = __webpack_require__(6)
+ , gOPN = __webpack_require__(45).f
+ , gOPD = __webpack_require__(46).f
+ , dP = __webpack_require__(9).f
+ , $trim = __webpack_require__(79).trim
+ , NUMBER = 'Number'
+ , $Number = global[NUMBER]
+ , Base = $Number
+ , proto = $Number.prototype
+ // Opera ~12 has broken Object#toString
+ , BROKEN_COF = cof(__webpack_require__(41)(proto)) == NUMBER
+ , TRIM = 'trim' in String.prototype;
+
+ // 7.1.3 ToNumber(argument)
+ var toNumber = function(argument){
+ var it = toPrimitive(argument, false);
+ if(typeof it == 'string' && it.length > 2){
+ it = TRIM ? it.trim() : $trim(it, 3);
+ var first = it.charCodeAt(0)
+ , third, radix, maxCode;
+ if(first === 43 || first === 45){
+ third = it.charCodeAt(2);
+ if(third === 88 || third === 120)return NaN; // Number('+0x1') should be NaN, old V8 fix
+ } else if(first === 48){
+ switch(it.charCodeAt(1)){
+ case 66 : case 98 : radix = 2; maxCode = 49; break; // fast equal /^0b[01]+$/i
+ case 79 : case 111 : radix = 8; maxCode = 55; break; // fast equal /^0o[0-7]+$/i
+ default : return +it;
+ }
+ for(var digits = it.slice(2), i = 0, l = digits.length, code; i < l; i++){
+ code = digits.charCodeAt(i);
+ // parseInt parses a string to a first unavailable symbol
+ // but ToNumber should return NaN if a string contains unavailable symbols
+ if(code < 48 || code > maxCode)return NaN;
+ } return parseInt(digits, radix);
+ }
+ } return +it;
+ };
+
+ if(!$Number(' 0o1') || !$Number('0b1') || $Number('+0x1')){
+ $Number = function Number(value){
+ var it = arguments.length < 1 ? 0 : value
+ , that = this;
+ return that instanceof $Number
+ // check on 1..constructor(foo) case
+ && (BROKEN_COF ? fails(function(){ proto.valueOf.call(that); }) : cof(that) != NUMBER)
+ ? inheritIfRequired(new Base(toNumber(it)), that, $Number) : toNumber(it);
+ };
+ for(var keys = __webpack_require__(5) ? gOPN(Base) : (
+ // ES3:
+ 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +
+ // ES6 (in case, if modules with ES6 Number statics required before):
+ 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +
+ 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'
+ ).split(','), j = 0, key; keys.length > j; j++){
+ if(has(Base, key = keys[j]) && !has($Number, key)){
+ dP($Number, key, gOPD(Base, key));
+ }
+ }
+ $Number.prototype = proto;
+ proto.constructor = $Number;
+ __webpack_require__(16)(global, NUMBER, $Number);
+ }
+
+/***/ },
+/* 78 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var isObject = __webpack_require__(11)
+ , setPrototypeOf = __webpack_require__(69).set;
+ module.exports = function(that, target, C){
+ var P, S = target.constructor;
+ if(S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf){
+ setPrototypeOf(that, P);
+ } return that;
+ };
+
+/***/ },
+/* 79 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var $export = __webpack_require__(7)
+ , defined = __webpack_require__(30)
+ , fails = __webpack_require__(6)
+ , spaces = __webpack_require__(80)
+ , space = '[' + spaces + ']'
+ , non = '\u200b\u0085'
+ , ltrim = RegExp('^' + space + space + '*')
+ , rtrim = RegExp(space + space + '*$');
+
+ var exporter = function(KEY, exec, ALIAS){
+ var exp = {};
+ var FORCE = fails(function(){
+ return !!spaces[KEY]() || non[KEY]() != non;
+ });
+ var fn = exp[KEY] = FORCE ? exec(trim) : spaces[KEY];
+ if(ALIAS)exp[ALIAS] = fn;
+ $export($export.P + $export.F * FORCE, 'String', exp);
+ };
+
+ // 1 -> String#trimLeft
+ // 2 -> String#trimRight
+ // 3 -> String#trim
+ var trim = exporter.trim = function(string, TYPE){
+ string = String(defined(string));
+ if(TYPE & 1)string = string.replace(ltrim, '');
+ if(TYPE & 2)string = string.replace(rtrim, '');
+ return string;
+ };
+
+ module.exports = exporter;
+
+/***/ },
+/* 80 */
+/***/ function(module, exports) {
+
+ module.exports = '\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003' +
+ '\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF';
+
+/***/ },
+/* 81 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var $export = __webpack_require__(7)
+ , anInstance = __webpack_require__(82)
+ , toInteger = __webpack_require__(33)
+ , aNumberValue = __webpack_require__(83)
+ , repeat = __webpack_require__(84)
+ , $toFixed = 1..toFixed
+ , floor = Math.floor
+ , data = [0, 0, 0, 0, 0, 0]
+ , ERROR = 'Number.toFixed: incorrect invocation!'
+ , ZERO = '0';
+
+ var multiply = function(n, c){
+ var i = -1
+ , c2 = c;
+ while(++i < 6){
+ c2 += n * data[i];
+ data[i] = c2 % 1e7;
+ c2 = floor(c2 / 1e7);
+ }
+ };
+ var divide = function(n){
+ var i = 6
+ , c = 0;
+ while(--i >= 0){
+ c += data[i];
+ data[i] = floor(c / n);
+ c = (c % n) * 1e7;
+ }
+ };
+ var numToString = function(){
+ var i = 6
+ , s = '';
+ while(--i >= 0){
+ if(s !== '' || i === 0 || data[i] !== 0){
+ var t = String(data[i]);
+ s = s === '' ? t : s + repeat.call(ZERO, 7 - t.length) + t;
+ }
+ } return s;
+ };
+ var pow = function(x, n, acc){
+ return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);
+ };
+ var log = function(x){
+ var n = 0
+ , x2 = x;
+ while(x2 >= 4096){
+ n += 12;
+ x2 /= 4096;
+ }
+ while(x2 >= 2){
+ n += 1;
+ x2 /= 2;
+ } return n;
+ };
+
+ $export($export.P + $export.F * (!!$toFixed && (
+ 0.00008.toFixed(3) !== '0.000' ||
+ 0.9.toFixed(0) !== '1' ||
+ 1.255.toFixed(2) !== '1.25' ||
+ 1000000000000000128..toFixed(0) !== '1000000000000000128'
+ ) || !__webpack_require__(6)(function(){
+ // V8 ~ Android 4.3-
+ $toFixed.call({});
+ })), 'Number', {
+ toFixed: function toFixed(fractionDigits){
+ var x = aNumberValue(this, ERROR)
+ , f = toInteger(fractionDigits)
+ , s = ''
+ , m = ZERO
+ , e, z, j, k;
+ if(f < 0 || f > 20)throw RangeError(ERROR);
+ if(x != x)return 'NaN';
+ if(x <= -1e21 || x >= 1e21)return String(x);
+ if(x < 0){
+ s = '-';
+ x = -x;
+ }
+ if(x > 1e-21){
+ e = log(x * pow(2, 69, 1)) - 69;
+ z = e < 0 ? x * pow(2, -e, 1) : x / pow(2, e, 1);
+ z *= 0x10000000000000;
+ e = 52 - e;
+ if(e > 0){
+ multiply(0, z);
+ j = f;
+ while(j >= 7){
+ multiply(1e7, 0);
+ j -= 7;
+ }
+ multiply(pow(10, j, 1), 0);
+ j = e - 1;
+ while(j >= 23){
+ divide(1 << 23);
+ j -= 23;
+ }
+ divide(1 << j);
+ multiply(1, 1);
+ divide(2);
+ m = numToString();
+ } else {
+ multiply(0, z);
+ multiply(1 << -e, 0);
+ m = numToString() + repeat.call(ZERO, f);
+ }
+ }
+ if(f > 0){
+ k = m.length;
+ m = s + (k <= f ? '0.' + repeat.call(ZERO, f - k) + m : m.slice(0, k - f) + '.' + m.slice(k - f));
+ } else {
+ m = s + m;
+ } return m;
+ }
+ });
+
+/***/ },
+/* 82 */
+/***/ function(module, exports) {
+
+ module.exports = function(it, Constructor, name, forbiddenField){
+ if(!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)){
+ throw TypeError(name + ': incorrect invocation!');
+ } return it;
+ };
+
+/***/ },
+/* 83 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var cof = __webpack_require__(29);
+ module.exports = function(it, msg){
+ if(typeof it != 'number' && cof(it) != 'Number')throw TypeError(msg);
+ return +it;
+ };
+
+/***/ },
+/* 84 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var toInteger = __webpack_require__(33)
+ , defined = __webpack_require__(30);
+
+ module.exports = function repeat(count){
+ var str = String(defined(this))
+ , res = ''
+ , n = toInteger(count);
+ if(n < 0 || n == Infinity)throw RangeError("Count can't be negative");
+ for(;n > 0; (n >>>= 1) && (str += str))if(n & 1)res += str;
+ return res;
+ };
+
+/***/ },
+/* 85 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var $export = __webpack_require__(7)
+ , $fails = __webpack_require__(6)
+ , aNumberValue = __webpack_require__(83)
+ , $toPrecision = 1..toPrecision;
+
+ $export($export.P + $export.F * ($fails(function(){
+ // IE7-
+ return $toPrecision.call(1, undefined) !== '1';
+ }) || !$fails(function(){
+ // V8 ~ Android 4.3-
+ $toPrecision.call({});
+ })), 'Number', {
+ toPrecision: function toPrecision(precision){
+ var that = aNumberValue(this, 'Number#toPrecision: incorrect invocation!');
+ return precision === undefined ? $toPrecision.call(that) : $toPrecision.call(that, precision);
+ }
+ });
+
+/***/ },
+/* 86 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.1.2.1 Number.EPSILON
+ var $export = __webpack_require__(7);
+
+ $export($export.S, 'Number', {EPSILON: Math.pow(2, -52)});
+
+/***/ },
+/* 87 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.1.2.2 Number.isFinite(number)
+ var $export = __webpack_require__(7)
+ , _isFinite = __webpack_require__(2).isFinite;
+
+ $export($export.S, 'Number', {
+ isFinite: function isFinite(it){
+ return typeof it == 'number' && _isFinite(it);
+ }
+ });
+
+/***/ },
+/* 88 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.1.2.3 Number.isInteger(number)
+ var $export = __webpack_require__(7);
+
+ $export($export.S, 'Number', {isInteger: __webpack_require__(89)});
+
+/***/ },
+/* 89 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.1.2.3 Number.isInteger(number)
+ var isObject = __webpack_require__(11)
+ , floor = Math.floor;
+ module.exports = function isInteger(it){
+ return !isObject(it) && isFinite(it) && floor(it) === it;
+ };
+
+/***/ },
+/* 90 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.1.2.4 Number.isNaN(number)
+ var $export = __webpack_require__(7);
+
+ $export($export.S, 'Number', {
+ isNaN: function isNaN(number){
+ return number != number;
+ }
+ });
+
+/***/ },
+/* 91 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.1.2.5 Number.isSafeInteger(number)
+ var $export = __webpack_require__(7)
+ , isInteger = __webpack_require__(89)
+ , abs = Math.abs;
+
+ $export($export.S, 'Number', {
+ isSafeInteger: function isSafeInteger(number){
+ return isInteger(number) && abs(number) <= 0x1fffffffffffff;
+ }
+ });
+
+/***/ },
+/* 92 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.1.2.6 Number.MAX_SAFE_INTEGER
+ var $export = __webpack_require__(7);
+
+ $export($export.S, 'Number', {MAX_SAFE_INTEGER: 0x1fffffffffffff});
+
+/***/ },
+/* 93 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.1.2.10 Number.MIN_SAFE_INTEGER
+ var $export = __webpack_require__(7);
+
+ $export($export.S, 'Number', {MIN_SAFE_INTEGER: -0x1fffffffffffff});
+
+/***/ },
+/* 94 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var $export = __webpack_require__(7)
+ , $parseFloat = __webpack_require__(95);
+ // 20.1.2.12 Number.parseFloat(string)
+ $export($export.S + $export.F * (Number.parseFloat != $parseFloat), 'Number', {parseFloat: $parseFloat});
+
+/***/ },
+/* 95 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var $parseFloat = __webpack_require__(2).parseFloat
+ , $trim = __webpack_require__(79).trim;
+
+ module.exports = 1 / $parseFloat(__webpack_require__(80) + '-0') !== -Infinity ? function parseFloat(str){
+ var string = $trim(String(str), 3)
+ , result = $parseFloat(string);
+ return result === 0 && string.charAt(0) == '-' ? -0 : result;
+ } : $parseFloat;
+
+/***/ },
+/* 96 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var $export = __webpack_require__(7)
+ , $parseInt = __webpack_require__(97);
+ // 20.1.2.13 Number.parseInt(string, radix)
+ $export($export.S + $export.F * (Number.parseInt != $parseInt), 'Number', {parseInt: $parseInt});
+
+/***/ },
+/* 97 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var $parseInt = __webpack_require__(2).parseInt
+ , $trim = __webpack_require__(79).trim
+ , ws = __webpack_require__(80)
+ , hex = /^[\-+]?0[xX]/;
+
+ module.exports = $parseInt(ws + '08') !== 8 || $parseInt(ws + '0x16') !== 22 ? function parseInt(str, radix){
+ var string = $trim(String(str), 3);
+ return $parseInt(string, (radix >>> 0) || (hex.test(string) ? 16 : 10));
+ } : $parseInt;
+
+/***/ },
+/* 98 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var $export = __webpack_require__(7)
+ , $parseInt = __webpack_require__(97);
+ // 18.2.5 parseInt(string, radix)
+ $export($export.G + $export.F * (parseInt != $parseInt), {parseInt: $parseInt});
+
+/***/ },
+/* 99 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var $export = __webpack_require__(7)
+ , $parseFloat = __webpack_require__(95);
+ // 18.2.4 parseFloat(string)
+ $export($export.G + $export.F * (parseFloat != $parseFloat), {parseFloat: $parseFloat});
+
+/***/ },
+/* 100 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.2.2.3 Math.acosh(x)
+ var $export = __webpack_require__(7)
+ , log1p = __webpack_require__(101)
+ , sqrt = Math.sqrt
+ , $acosh = Math.acosh;
+
+ // V8 bug https://code.google.com/p/v8/issues/detail?id=3509
+ $export($export.S + $export.F * !($acosh && Math.floor($acosh(Number.MAX_VALUE)) == 710), 'Math', {
+ acosh: function acosh(x){
+ return (x = +x) < 1 ? NaN : x > 94906265.62425156
+ ? Math.log(x) + Math.LN2
+ : log1p(x - 1 + sqrt(x - 1) * sqrt(x + 1));
+ }
+ });
+
+/***/ },
+/* 101 */
+/***/ function(module, exports) {
+
+ // 20.2.2.20 Math.log1p(x)
+ module.exports = Math.log1p || function log1p(x){
+ return (x = +x) > -1e-8 && x < 1e-8 ? x - x * x / 2 : Math.log(1 + x);
+ };
+
+/***/ },
+/* 102 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.2.2.5 Math.asinh(x)
+ var $export = __webpack_require__(7);
+
+ function asinh(x){
+ return !isFinite(x = +x) || x == 0 ? x : x < 0 ? -asinh(-x) : Math.log(x + Math.sqrt(x * x + 1));
+ }
+
+ $export($export.S, 'Math', {asinh: asinh});
+
+/***/ },
+/* 103 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.2.2.7 Math.atanh(x)
+ var $export = __webpack_require__(7);
+
+ $export($export.S, 'Math', {
+ atanh: function atanh(x){
+ return (x = +x) == 0 ? x : Math.log((1 + x) / (1 - x)) / 2;
+ }
+ });
+
+/***/ },
+/* 104 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.2.2.9 Math.cbrt(x)
+ var $export = __webpack_require__(7)
+ , sign = __webpack_require__(105);
+
+ $export($export.S, 'Math', {
+ cbrt: function cbrt(x){
+ return sign(x = +x) * Math.pow(Math.abs(x), 1 / 3);
+ }
+ });
+
+/***/ },
+/* 105 */
+/***/ function(module, exports) {
+
+ // 20.2.2.28 Math.sign(x)
+ module.exports = Math.sign || function sign(x){
+ return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1;
+ };
+
+/***/ },
+/* 106 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.2.2.11 Math.clz32(x)
+ var $export = __webpack_require__(7);
+
+ $export($export.S, 'Math', {
+ clz32: function clz32(x){
+ return (x >>>= 0) ? 31 - Math.floor(Math.log(x + 0.5) * Math.LOG2E) : 32;
+ }
+ });
+
+/***/ },
+/* 107 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.2.2.12 Math.cosh(x)
+ var $export = __webpack_require__(7)
+ , exp = Math.exp;
+
+ $export($export.S, 'Math', {
+ cosh: function cosh(x){
+ return (exp(x = +x) + exp(-x)) / 2;
+ }
+ });
+
+/***/ },
+/* 108 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.2.2.14 Math.expm1(x)
+ var $export = __webpack_require__(7);
+
+ $export($export.S, 'Math', {expm1: __webpack_require__(109)});
+
+/***/ },
+/* 109 */
+/***/ function(module, exports) {
+
+ // 20.2.2.14 Math.expm1(x)
+ module.exports = Math.expm1 || function expm1(x){
+ return (x = +x) == 0 ? x : x > -1e-6 && x < 1e-6 ? x + x * x / 2 : Math.exp(x) - 1;
+ };
+
+/***/ },
+/* 110 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.2.2.16 Math.fround(x)
+ var $export = __webpack_require__(7)
+ , sign = __webpack_require__(105)
+ , pow = Math.pow
+ , EPSILON = pow(2, -52)
+ , EPSILON32 = pow(2, -23)
+ , MAX32 = pow(2, 127) * (2 - EPSILON32)
+ , MIN32 = pow(2, -126);
+
+ var roundTiesToEven = function(n){
+ return n + 1 / EPSILON - 1 / EPSILON;
+ };
+
+
+ $export($export.S, 'Math', {
+ fround: function fround(x){
+ var $abs = Math.abs(x)
+ , $sign = sign(x)
+ , a, result;
+ if($abs < MIN32)return $sign * roundTiesToEven($abs / MIN32 / EPSILON32) * MIN32 * EPSILON32;
+ a = (1 + EPSILON32 / EPSILON) * $abs;
+ result = a - (a - $abs);
+ if(result > MAX32 || result != result)return $sign * Infinity;
+ return $sign * result;
+ }
+ });
+
+/***/ },
+/* 111 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.2.2.17 Math.hypot([value1[, value2[, … ]]])
+ var $export = __webpack_require__(7)
+ , abs = Math.abs;
+
+ $export($export.S, 'Math', {
+ hypot: function hypot(value1, value2){ // eslint-disable-line no-unused-vars
+ var sum = 0
+ , i = 0
+ , aLen = arguments.length
+ , larg = 0
+ , arg, div;
+ while(i < aLen){
+ arg = abs(arguments[i++]);
+ if(larg < arg){
+ div = larg / arg;
+ sum = sum * div * div + 1;
+ larg = arg;
+ } else if(arg > 0){
+ div = arg / larg;
+ sum += div * div;
+ } else sum += arg;
+ }
+ return larg === Infinity ? Infinity : larg * Math.sqrt(sum);
+ }
+ });
+
+/***/ },
+/* 112 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.2.2.18 Math.imul(x, y)
+ var $export = __webpack_require__(7)
+ , $imul = Math.imul;
+
+ // some WebKit versions fails with big numbers, some has wrong arity
+ $export($export.S + $export.F * __webpack_require__(6)(function(){
+ return $imul(0xffffffff, 5) != -5 || $imul.length != 2;
+ }), 'Math', {
+ imul: function imul(x, y){
+ var UINT16 = 0xffff
+ , xn = +x
+ , yn = +y
+ , xl = UINT16 & xn
+ , yl = UINT16 & yn;
+ return 0 | xl * yl + ((UINT16 & xn >>> 16) * yl + xl * (UINT16 & yn >>> 16) << 16 >>> 0);
+ }
+ });
+
+/***/ },
+/* 113 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.2.2.21 Math.log10(x)
+ var $export = __webpack_require__(7);
+
+ $export($export.S, 'Math', {
+ log10: function log10(x){
+ return Math.log(x) / Math.LN10;
+ }
+ });
+
+/***/ },
+/* 114 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.2.2.20 Math.log1p(x)
+ var $export = __webpack_require__(7);
+
+ $export($export.S, 'Math', {log1p: __webpack_require__(101)});
+
+/***/ },
+/* 115 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.2.2.22 Math.log2(x)
+ var $export = __webpack_require__(7);
+
+ $export($export.S, 'Math', {
+ log2: function log2(x){
+ return Math.log(x) / Math.LN2;
+ }
+ });
+
+/***/ },
+/* 116 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.2.2.28 Math.sign(x)
+ var $export = __webpack_require__(7);
+
+ $export($export.S, 'Math', {sign: __webpack_require__(105)});
+
+/***/ },
+/* 117 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.2.2.30 Math.sinh(x)
+ var $export = __webpack_require__(7)
+ , expm1 = __webpack_require__(109)
+ , exp = Math.exp;
+
+ // V8 near Chromium 38 has a problem with very small numbers
+ $export($export.S + $export.F * __webpack_require__(6)(function(){
+ return !Math.sinh(-2e-17) != -2e-17;
+ }), 'Math', {
+ sinh: function sinh(x){
+ return Math.abs(x = +x) < 1
+ ? (expm1(x) - expm1(-x)) / 2
+ : (exp(x - 1) - exp(-x - 1)) * (Math.E / 2);
+ }
+ });
+
+/***/ },
+/* 118 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.2.2.33 Math.tanh(x)
+ var $export = __webpack_require__(7)
+ , expm1 = __webpack_require__(109)
+ , exp = Math.exp;
+
+ $export($export.S, 'Math', {
+ tanh: function tanh(x){
+ var a = expm1(x = +x)
+ , b = expm1(-x);
+ return a == Infinity ? 1 : b == Infinity ? -1 : (a - b) / (exp(x) + exp(-x));
+ }
+ });
+
+/***/ },
+/* 119 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.2.2.34 Math.trunc(x)
+ var $export = __webpack_require__(7);
+
+ $export($export.S, 'Math', {
+ trunc: function trunc(it){
+ return (it > 0 ? Math.floor : Math.ceil)(it);
+ }
+ });
+
+/***/ },
+/* 120 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var $export = __webpack_require__(7)
+ , toIndex = __webpack_require__(34)
+ , fromCharCode = String.fromCharCode
+ , $fromCodePoint = String.fromCodePoint;
+
+ // length should be 1, old FF problem
+ $export($export.S + $export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', {
+ // 21.1.2.2 String.fromCodePoint(...codePoints)
+ fromCodePoint: function fromCodePoint(x){ // eslint-disable-line no-unused-vars
+ var res = []
+ , aLen = arguments.length
+ , i = 0
+ , code;
+ while(aLen > i){
+ code = +arguments[i++];
+ if(toIndex(code, 0x10ffff) !== code)throw RangeError(code + ' is not a valid code point');
+ res.push(code < 0x10000
+ ? fromCharCode(code)
+ : fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00)
+ );
+ } return res.join('');
+ }
+ });
+
+/***/ },
+/* 121 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var $export = __webpack_require__(7)
+ , toIObject = __webpack_require__(27)
+ , toLength = __webpack_require__(32);
+
+ $export($export.S, 'String', {
+ // 21.1.2.4 String.raw(callSite, ...substitutions)
+ raw: function raw(callSite){
+ var tpl = toIObject(callSite.raw)
+ , len = toLength(tpl.length)
+ , aLen = arguments.length
+ , res = []
+ , i = 0;
+ while(len > i){
+ res.push(String(tpl[i++]));
+ if(i < aLen)res.push(String(arguments[i]));
+ } return res.join('');
+ }
+ });
+
+/***/ },
+/* 122 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // 21.1.3.25 String.prototype.trim()
+ __webpack_require__(79)('trim', function($trim){
+ return function trim(){
+ return $trim(this, 3);
+ };
+ });
+
+/***/ },
+/* 123 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var $export = __webpack_require__(7)
+ , $at = __webpack_require__(124)(false);
+ $export($export.P, 'String', {
+ // 21.1.3.3 String.prototype.codePointAt(pos)
+ codePointAt: function codePointAt(pos){
+ return $at(this, pos);
+ }
+ });
+
+/***/ },
+/* 124 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var toInteger = __webpack_require__(33)
+ , defined = __webpack_require__(30);
+ // true -> String#at
+ // false -> String#codePointAt
+ module.exports = function(TO_STRING){
+ return function(that, pos){
+ var s = String(defined(that))
+ , i = toInteger(pos)
+ , l = s.length
+ , a, b;
+ if(i < 0 || i >= l)return TO_STRING ? '' : undefined;
+ a = s.charCodeAt(i);
+ return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff
+ ? TO_STRING ? s.charAt(i) : a
+ : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;
+ };
+ };
+
+/***/ },
+/* 125 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 21.1.3.6 String.prototype.endsWith(searchString [, endPosition])
+ 'use strict';
+ var $export = __webpack_require__(7)
+ , toLength = __webpack_require__(32)
+ , context = __webpack_require__(126)
+ , ENDS_WITH = 'endsWith'
+ , $endsWith = ''[ENDS_WITH];
+
+ $export($export.P + $export.F * __webpack_require__(128)(ENDS_WITH), 'String', {
+ endsWith: function endsWith(searchString /*, endPosition = @length */){
+ var that = context(this, searchString, ENDS_WITH)
+ , endPosition = arguments.length > 1 ? arguments[1] : undefined
+ , len = toLength(that.length)
+ , end = endPosition === undefined ? len : Math.min(toLength(endPosition), len)
+ , search = String(searchString);
+ return $endsWith
+ ? $endsWith.call(that, search, end)
+ : that.slice(end - search.length, end) === search;
+ }
+ });
+
+/***/ },
+/* 126 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // helper for String#{startsWith, endsWith, includes}
+ var isRegExp = __webpack_require__(127)
+ , defined = __webpack_require__(30);
+
+ module.exports = function(that, searchString, NAME){
+ if(isRegExp(searchString))throw TypeError('String#' + NAME + " doesn't accept regex!");
+ return String(defined(that));
+ };
+
+/***/ },
+/* 127 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 7.2.8 IsRegExp(argument)
+ var isObject = __webpack_require__(11)
+ , cof = __webpack_require__(29)
+ , MATCH = __webpack_require__(23)('match');
+ module.exports = function(it){
+ var isRegExp;
+ return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');
+ };
+
+/***/ },
+/* 128 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var MATCH = __webpack_require__(23)('match');
+ module.exports = function(KEY){
+ var re = /./;
+ try {
+ '/./'[KEY](re);
+ } catch(e){
+ try {
+ re[MATCH] = false;
+ return !'/./'[KEY](re);
+ } catch(f){ /* empty */ }
+ } return true;
+ };
+
+/***/ },
+/* 129 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 21.1.3.7 String.prototype.includes(searchString, position = 0)
+ 'use strict';
+ var $export = __webpack_require__(7)
+ , context = __webpack_require__(126)
+ , INCLUDES = 'includes';
+
+ $export($export.P + $export.F * __webpack_require__(128)(INCLUDES), 'String', {
+ includes: function includes(searchString /*, position = 0 */){
+ return !!~context(this, searchString, INCLUDES)
+ .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);
+ }
+ });
+
+/***/ },
+/* 130 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var $export = __webpack_require__(7);
+
+ $export($export.P, 'String', {
+ // 21.1.3.13 String.prototype.repeat(count)
+ repeat: __webpack_require__(84)
+ });
+
+/***/ },
+/* 131 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 21.1.3.18 String.prototype.startsWith(searchString [, position ])
+ 'use strict';
+ var $export = __webpack_require__(7)
+ , toLength = __webpack_require__(32)
+ , context = __webpack_require__(126)
+ , STARTS_WITH = 'startsWith'
+ , $startsWith = ''[STARTS_WITH];
+
+ $export($export.P + $export.F * __webpack_require__(128)(STARTS_WITH), 'String', {
+ startsWith: function startsWith(searchString /*, position = 0 */){
+ var that = context(this, searchString, STARTS_WITH)
+ , index = toLength(Math.min(arguments.length > 1 ? arguments[1] : undefined, that.length))
+ , search = String(searchString);
+ return $startsWith
+ ? $startsWith.call(that, search, index)
+ : that.slice(index, index + search.length) === search;
+ }
+ });
+
+/***/ },
+/* 132 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var $at = __webpack_require__(124)(true);
+
+ // 21.1.3.27 String.prototype[@@iterator]()
+ __webpack_require__(133)(String, 'String', function(iterated){
+ this._t = String(iterated); // target
+ this._i = 0; // next index
+ // 21.1.5.2.1 %StringIteratorPrototype%.next()
+ }, function(){
+ var O = this._t
+ , index = this._i
+ , point;
+ if(index >= O.length)return {value: undefined, done: true};
+ point = $at(O, index);
+ this._i += point.length;
+ return {value: point, done: false};
+ });
+
+/***/ },
+/* 133 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var LIBRARY = __webpack_require__(47)
+ , $export = __webpack_require__(7)
+ , redefine = __webpack_require__(16)
+ , hide = __webpack_require__(8)
+ , has = __webpack_require__(4)
+ , Iterators = __webpack_require__(134)
+ , $iterCreate = __webpack_require__(135)
+ , setToStringTag = __webpack_require__(22)
+ , getPrototypeOf = __webpack_require__(55)
+ , ITERATOR = __webpack_require__(23)('iterator')
+ , BUGGY = !([].keys && 'next' in [].keys()) // Safari has buggy iterators w/o `next`
+ , FF_ITERATOR = '@@iterator'
+ , KEYS = 'keys'
+ , VALUES = 'values';
+
+ var returnThis = function(){ return this; };
+
+ module.exports = function(Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED){
+ $iterCreate(Constructor, NAME, next);
+ var getMethod = function(kind){
+ if(!BUGGY && kind in proto)return proto[kind];
+ switch(kind){
+ case KEYS: return function keys(){ return new Constructor(this, kind); };
+ case VALUES: return function values(){ return new Constructor(this, kind); };
+ } return function entries(){ return new Constructor(this, kind); };
+ };
+ var TAG = NAME + ' Iterator'
+ , DEF_VALUES = DEFAULT == VALUES
+ , VALUES_BUG = false
+ , proto = Base.prototype
+ , $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT]
+ , $default = $native || getMethod(DEFAULT)
+ , $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined
+ , $anyNative = NAME == 'Array' ? proto.entries || $native : $native
+ , methods, key, IteratorPrototype;
+ // Fix native
+ if($anyNative){
+ IteratorPrototype = getPrototypeOf($anyNative.call(new Base));
+ if(IteratorPrototype !== Object.prototype){
+ // Set @@toStringTag to native iterators
+ setToStringTag(IteratorPrototype, TAG, true);
+ // fix for some old engines
+ if(!LIBRARY && !has(IteratorPrototype, ITERATOR))hide(IteratorPrototype, ITERATOR, returnThis);
+ }
+ }
+ // fix Array#{values, @@iterator}.name in V8 / FF
+ if(DEF_VALUES && $native && $native.name !== VALUES){
+ VALUES_BUG = true;
+ $default = function values(){ return $native.call(this); };
+ }
+ // Define iterator
+ if((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])){
+ hide(proto, ITERATOR, $default);
+ }
+ // Plug for library
+ Iterators[NAME] = $default;
+ Iterators[TAG] = returnThis;
+ if(DEFAULT){
+ methods = {
+ values: DEF_VALUES ? $default : getMethod(VALUES),
+ keys: IS_SET ? $default : getMethod(KEYS),
+ entries: $entries
+ };
+ if(FORCED)for(key in methods){
+ if(!(key in proto))redefine(proto, key, methods[key]);
+ } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);
+ }
+ return methods;
+ };
+
+/***/ },
+/* 134 */
+/***/ function(module, exports) {
+
+ module.exports = {};
+
+/***/ },
+/* 135 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var create = __webpack_require__(41)
+ , descriptor = __webpack_require__(15)
+ , setToStringTag = __webpack_require__(22)
+ , IteratorPrototype = {};
+
+ // 25.1.2.1.1 %IteratorPrototype%[@@iterator]()
+ __webpack_require__(8)(IteratorPrototype, __webpack_require__(23)('iterator'), function(){ return this; });
+
+ module.exports = function(Constructor, NAME, next){
+ Constructor.prototype = create(IteratorPrototype, {next: descriptor(1, next)});
+ setToStringTag(Constructor, NAME + ' Iterator');
+ };
+
+/***/ },
+/* 136 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // B.2.3.2 String.prototype.anchor(name)
+ __webpack_require__(137)('anchor', function(createHTML){
+ return function anchor(name){
+ return createHTML(this, 'a', 'name', name);
+ }
+ });
+
+/***/ },
+/* 137 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var $export = __webpack_require__(7)
+ , fails = __webpack_require__(6)
+ , defined = __webpack_require__(30)
+ , quot = /"/g;
+ // B.2.3.2.1 CreateHTML(string, tag, attribute, value)
+ var createHTML = function(string, tag, attribute, value) {
+ var S = String(defined(string))
+ , p1 = '<' + tag;
+ if(attribute !== '')p1 += ' ' + attribute + '="' + String(value).replace(quot, '"') + '"';
+ return p1 + '>' + S + '' + tag + '>';
+ };
+ module.exports = function(NAME, exec){
+ var O = {};
+ O[NAME] = exec(createHTML);
+ $export($export.P + $export.F * fails(function(){
+ var test = ''[NAME]('"');
+ return test !== test.toLowerCase() || test.split('"').length > 3;
+ }), 'String', O);
+ };
+
+/***/ },
+/* 138 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // B.2.3.3 String.prototype.big()
+ __webpack_require__(137)('big', function(createHTML){
+ return function big(){
+ return createHTML(this, 'big', '', '');
+ }
+ });
+
+/***/ },
+/* 139 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // B.2.3.4 String.prototype.blink()
+ __webpack_require__(137)('blink', function(createHTML){
+ return function blink(){
+ return createHTML(this, 'blink', '', '');
+ }
+ });
+
+/***/ },
+/* 140 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // B.2.3.5 String.prototype.bold()
+ __webpack_require__(137)('bold', function(createHTML){
+ return function bold(){
+ return createHTML(this, 'b', '', '');
+ }
+ });
+
+/***/ },
+/* 141 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // B.2.3.6 String.prototype.fixed()
+ __webpack_require__(137)('fixed', function(createHTML){
+ return function fixed(){
+ return createHTML(this, 'tt', '', '');
+ }
+ });
+
+/***/ },
+/* 142 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // B.2.3.7 String.prototype.fontcolor(color)
+ __webpack_require__(137)('fontcolor', function(createHTML){
+ return function fontcolor(color){
+ return createHTML(this, 'font', 'color', color);
+ }
+ });
+
+/***/ },
+/* 143 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // B.2.3.8 String.prototype.fontsize(size)
+ __webpack_require__(137)('fontsize', function(createHTML){
+ return function fontsize(size){
+ return createHTML(this, 'font', 'size', size);
+ }
+ });
+
+/***/ },
+/* 144 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // B.2.3.9 String.prototype.italics()
+ __webpack_require__(137)('italics', function(createHTML){
+ return function italics(){
+ return createHTML(this, 'i', '', '');
+ }
+ });
+
+/***/ },
+/* 145 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // B.2.3.10 String.prototype.link(url)
+ __webpack_require__(137)('link', function(createHTML){
+ return function link(url){
+ return createHTML(this, 'a', 'href', url);
+ }
+ });
+
+/***/ },
+/* 146 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // B.2.3.11 String.prototype.small()
+ __webpack_require__(137)('small', function(createHTML){
+ return function small(){
+ return createHTML(this, 'small', '', '');
+ }
+ });
+
+/***/ },
+/* 147 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // B.2.3.12 String.prototype.strike()
+ __webpack_require__(137)('strike', function(createHTML){
+ return function strike(){
+ return createHTML(this, 'strike', '', '');
+ }
+ });
+
+/***/ },
+/* 148 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // B.2.3.13 String.prototype.sub()
+ __webpack_require__(137)('sub', function(createHTML){
+ return function sub(){
+ return createHTML(this, 'sub', '', '');
+ }
+ });
+
+/***/ },
+/* 149 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // B.2.3.14 String.prototype.sup()
+ __webpack_require__(137)('sup', function(createHTML){
+ return function sup(){
+ return createHTML(this, 'sup', '', '');
+ }
+ });
+
+/***/ },
+/* 150 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 22.1.2.2 / 15.4.3.2 Array.isArray(arg)
+ var $export = __webpack_require__(7);
+
+ $export($export.S, 'Array', {isArray: __webpack_require__(40)});
+
+/***/ },
+/* 151 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var ctx = __webpack_require__(18)
+ , $export = __webpack_require__(7)
+ , toObject = __webpack_require__(54)
+ , call = __webpack_require__(152)
+ , isArrayIter = __webpack_require__(153)
+ , toLength = __webpack_require__(32)
+ , getIterFn = __webpack_require__(154);
+ $export($export.S + $export.F * !__webpack_require__(155)(function(iter){ Array.from(iter); }), 'Array', {
+ // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)
+ from: function from(arrayLike/*, mapfn = undefined, thisArg = undefined*/){
+ var O = toObject(arrayLike)
+ , C = typeof this == 'function' ? this : Array
+ , aLen = arguments.length
+ , mapfn = aLen > 1 ? arguments[1] : undefined
+ , mapping = mapfn !== undefined
+ , index = 0
+ , iterFn = getIterFn(O)
+ , length, result, step, iterator;
+ if(mapping)mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);
+ // if object isn't iterable or it's array with default iterator - use simple case
+ if(iterFn != undefined && !(C == Array && isArrayIter(iterFn))){
+ for(iterator = iterFn.call(O), result = new C; !(step = iterator.next()).done; index++){
+ result[index] = mapping ? call(iterator, mapfn, [step.value, index], true) : step.value;
+ }
+ } else {
+ length = toLength(O.length);
+ for(result = new C(length); length > index; index++){
+ result[index] = mapping ? mapfn(O[index], index) : O[index];
+ }
+ }
+ result.length = index;
+ return result;
+ }
+ });
+
+
+/***/ },
+/* 152 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // call something on iterator step with safe closing on error
+ var anObject = __webpack_require__(10);
+ module.exports = function(iterator, fn, value, entries){
+ try {
+ return entries ? fn(anObject(value)[0], value[1]) : fn(value);
+ // 7.4.6 IteratorClose(iterator, completion)
+ } catch(e){
+ var ret = iterator['return'];
+ if(ret !== undefined)anObject(ret.call(iterator));
+ throw e;
+ }
+ };
+
+/***/ },
+/* 153 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // check on default Array iterator
+ var Iterators = __webpack_require__(134)
+ , ITERATOR = __webpack_require__(23)('iterator')
+ , ArrayProto = Array.prototype;
+
+ module.exports = function(it){
+ return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);
+ };
+
+/***/ },
+/* 154 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var classof = __webpack_require__(71)
+ , ITERATOR = __webpack_require__(23)('iterator')
+ , Iterators = __webpack_require__(134);
+ module.exports = __webpack_require__(3).getIteratorMethod = function(it){
+ if(it != undefined)return it[ITERATOR]
+ || it['@@iterator']
+ || Iterators[classof(it)];
+ };
+
+/***/ },
+/* 155 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var ITERATOR = __webpack_require__(23)('iterator')
+ , SAFE_CLOSING = false;
+
+ try {
+ var riter = [7][ITERATOR]();
+ riter['return'] = function(){ SAFE_CLOSING = true; };
+ Array.from(riter, function(){ throw 2; });
+ } catch(e){ /* empty */ }
+
+ module.exports = function(exec, skipClosing){
+ if(!skipClosing && !SAFE_CLOSING)return false;
+ var safe = false;
+ try {
+ var arr = [7]
+ , iter = arr[ITERATOR]();
+ iter.next = function(){ safe = true; };
+ arr[ITERATOR] = function(){ return iter; };
+ exec(arr);
+ } catch(e){ /* empty */ }
+ return safe;
+ };
+
+/***/ },
+/* 156 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var $export = __webpack_require__(7);
+
+ // WebKit Array.of isn't generic
+ $export($export.S + $export.F * __webpack_require__(6)(function(){
+ function F(){}
+ return !(Array.of.call(F) instanceof F);
+ }), 'Array', {
+ // 22.1.2.3 Array.of( ...items)
+ of: function of(/* ...args */){
+ var index = 0
+ , aLen = arguments.length
+ , result = new (typeof this == 'function' ? this : Array)(aLen);
+ while(aLen > index)result[index] = arguments[index++];
+ result.length = aLen;
+ return result;
+ }
+ });
+
+/***/ },
+/* 157 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // 22.1.3.13 Array.prototype.join(separator)
+ var $export = __webpack_require__(7)
+ , toIObject = __webpack_require__(27)
+ , arrayJoin = [].join;
+
+ // fallback for not array-like strings
+ $export($export.P + $export.F * (__webpack_require__(28) != Object || !__webpack_require__(158)(arrayJoin)), 'Array', {
+ join: function join(separator){
+ return arrayJoin.call(toIObject(this), separator === undefined ? ',' : separator);
+ }
+ });
+
+/***/ },
+/* 158 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var fails = __webpack_require__(6);
+
+ module.exports = function(method, arg){
+ return !!method && fails(function(){
+ arg ? method.call(null, function(){}, 1) : method.call(null);
+ });
+ };
+
+/***/ },
+/* 159 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var $export = __webpack_require__(7)
+ , html = __webpack_require__(43)
+ , cof = __webpack_require__(29)
+ , toIndex = __webpack_require__(34)
+ , toLength = __webpack_require__(32)
+ , arraySlice = [].slice;
+
+ // fallback for not array-like ES3 strings and DOM objects
+ $export($export.P + $export.F * __webpack_require__(6)(function(){
+ if(html)arraySlice.call(html);
+ }), 'Array', {
+ slice: function slice(begin, end){
+ var len = toLength(this.length)
+ , klass = cof(this);
+ end = end === undefined ? len : end;
+ if(klass == 'Array')return arraySlice.call(this, begin, end);
+ var start = toIndex(begin, len)
+ , upTo = toIndex(end, len)
+ , size = toLength(upTo - start)
+ , cloned = Array(size)
+ , i = 0;
+ for(; i < size; i++)cloned[i] = klass == 'String'
+ ? this.charAt(start + i)
+ : this[start + i];
+ return cloned;
+ }
+ });
+
+/***/ },
+/* 160 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var $export = __webpack_require__(7)
+ , aFunction = __webpack_require__(19)
+ , toObject = __webpack_require__(54)
+ , fails = __webpack_require__(6)
+ , $sort = [].sort
+ , test = [1, 2, 3];
+
+ $export($export.P + $export.F * (fails(function(){
+ // IE8-
+ test.sort(undefined);
+ }) || !fails(function(){
+ // V8 bug
+ test.sort(null);
+ // Old WebKit
+ }) || !__webpack_require__(158)($sort)), 'Array', {
+ // 22.1.3.25 Array.prototype.sort(comparefn)
+ sort: function sort(comparefn){
+ return comparefn === undefined
+ ? $sort.call(toObject(this))
+ : $sort.call(toObject(this), aFunction(comparefn));
+ }
+ });
+
+/***/ },
+/* 161 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var $export = __webpack_require__(7)
+ , $forEach = __webpack_require__(162)(0)
+ , STRICT = __webpack_require__(158)([].forEach, true);
+
+ $export($export.P + $export.F * !STRICT, 'Array', {
+ // 22.1.3.10 / 15.4.4.18 Array.prototype.forEach(callbackfn [, thisArg])
+ forEach: function forEach(callbackfn /* , thisArg */){
+ return $forEach(this, callbackfn, arguments[1]);
+ }
+ });
+
+/***/ },
+/* 162 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 0 -> Array#forEach
+ // 1 -> Array#map
+ // 2 -> Array#filter
+ // 3 -> Array#some
+ // 4 -> Array#every
+ // 5 -> Array#find
+ // 6 -> Array#findIndex
+ var ctx = __webpack_require__(18)
+ , IObject = __webpack_require__(28)
+ , toObject = __webpack_require__(54)
+ , toLength = __webpack_require__(32)
+ , asc = __webpack_require__(163);
+ module.exports = function(TYPE, $create){
+ var IS_MAP = TYPE == 1
+ , IS_FILTER = TYPE == 2
+ , IS_SOME = TYPE == 3
+ , IS_EVERY = TYPE == 4
+ , IS_FIND_INDEX = TYPE == 6
+ , NO_HOLES = TYPE == 5 || IS_FIND_INDEX
+ , create = $create || asc;
+ return function($this, callbackfn, that){
+ var O = toObject($this)
+ , self = IObject(O)
+ , f = ctx(callbackfn, that, 3)
+ , length = toLength(self.length)
+ , index = 0
+ , result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined
+ , val, res;
+ for(;length > index; index++)if(NO_HOLES || index in self){
+ val = self[index];
+ res = f(val, index, O);
+ if(TYPE){
+ if(IS_MAP)result[index] = res; // map
+ else if(res)switch(TYPE){
+ case 3: return true; // some
+ case 5: return val; // find
+ case 6: return index; // findIndex
+ case 2: result.push(val); // filter
+ } else if(IS_EVERY)return false; // every
+ }
+ }
+ return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;
+ };
+ };
+
+/***/ },
+/* 163 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 9.4.2.3 ArraySpeciesCreate(originalArray, length)
+ var isObject = __webpack_require__(11)
+ , isArray = __webpack_require__(40)
+ , SPECIES = __webpack_require__(23)('species');
+ module.exports = function(original, length){
+ var C;
+ if(isArray(original)){
+ C = original.constructor;
+ // cross-realm fallback
+ if(typeof C == 'function' && (C === Array || isArray(C.prototype)))C = undefined;
+ if(isObject(C)){
+ C = C[SPECIES];
+ if(C === null)C = undefined;
+ }
+ } return new (C === undefined ? Array : C)(length);
+ };
+
+/***/ },
+/* 164 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var $export = __webpack_require__(7)
+ , $map = __webpack_require__(162)(1);
+
+ $export($export.P + $export.F * !__webpack_require__(158)([].map, true), 'Array', {
+ // 22.1.3.15 / 15.4.4.19 Array.prototype.map(callbackfn [, thisArg])
+ map: function map(callbackfn /* , thisArg */){
+ return $map(this, callbackfn, arguments[1]);
+ }
+ });
+
+/***/ },
+/* 165 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var $export = __webpack_require__(7)
+ , $filter = __webpack_require__(162)(2);
+
+ $export($export.P + $export.F * !__webpack_require__(158)([].filter, true), 'Array', {
+ // 22.1.3.7 / 15.4.4.20 Array.prototype.filter(callbackfn [, thisArg])
+ filter: function filter(callbackfn /* , thisArg */){
+ return $filter(this, callbackfn, arguments[1]);
+ }
+ });
+
+/***/ },
+/* 166 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var $export = __webpack_require__(7)
+ , $some = __webpack_require__(162)(3);
+
+ $export($export.P + $export.F * !__webpack_require__(158)([].some, true), 'Array', {
+ // 22.1.3.23 / 15.4.4.17 Array.prototype.some(callbackfn [, thisArg])
+ some: function some(callbackfn /* , thisArg */){
+ return $some(this, callbackfn, arguments[1]);
+ }
+ });
+
+/***/ },
+/* 167 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var $export = __webpack_require__(7)
+ , $every = __webpack_require__(162)(4);
+
+ $export($export.P + $export.F * !__webpack_require__(158)([].every, true), 'Array', {
+ // 22.1.3.5 / 15.4.4.16 Array.prototype.every(callbackfn [, thisArg])
+ every: function every(callbackfn /* , thisArg */){
+ return $every(this, callbackfn, arguments[1]);
+ }
+ });
+
+/***/ },
+/* 168 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var $export = __webpack_require__(7)
+ , $reduce = __webpack_require__(169);
+
+ $export($export.P + $export.F * !__webpack_require__(158)([].reduce, true), 'Array', {
+ // 22.1.3.18 / 15.4.4.21 Array.prototype.reduce(callbackfn [, initialValue])
+ reduce: function reduce(callbackfn /* , initialValue */){
+ return $reduce(this, callbackfn, arguments.length, arguments[1], false);
+ }
+ });
+
+/***/ },
+/* 169 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var aFunction = __webpack_require__(19)
+ , toObject = __webpack_require__(54)
+ , IObject = __webpack_require__(28)
+ , toLength = __webpack_require__(32);
+
+ module.exports = function(that, callbackfn, aLen, memo, isRight){
+ aFunction(callbackfn);
+ var O = toObject(that)
+ , self = IObject(O)
+ , length = toLength(O.length)
+ , index = isRight ? length - 1 : 0
+ , i = isRight ? -1 : 1;
+ if(aLen < 2)for(;;){
+ if(index in self){
+ memo = self[index];
+ index += i;
+ break;
+ }
+ index += i;
+ if(isRight ? index < 0 : length <= index){
+ throw TypeError('Reduce of empty array with no initial value');
+ }
+ }
+ for(;isRight ? index >= 0 : length > index; index += i)if(index in self){
+ memo = callbackfn(memo, self[index], index, O);
+ }
+ return memo;
+ };
+
+/***/ },
+/* 170 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var $export = __webpack_require__(7)
+ , $reduce = __webpack_require__(169);
+
+ $export($export.P + $export.F * !__webpack_require__(158)([].reduceRight, true), 'Array', {
+ // 22.1.3.19 / 15.4.4.22 Array.prototype.reduceRight(callbackfn [, initialValue])
+ reduceRight: function reduceRight(callbackfn /* , initialValue */){
+ return $reduce(this, callbackfn, arguments.length, arguments[1], true);
+ }
+ });
+
+/***/ },
+/* 171 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var $export = __webpack_require__(7)
+ , $indexOf = __webpack_require__(31)(false);
+
+ $export($export.P + $export.F * !__webpack_require__(158)([].indexOf), 'Array', {
+ // 22.1.3.11 / 15.4.4.14 Array.prototype.indexOf(searchElement [, fromIndex])
+ indexOf: function indexOf(searchElement /*, fromIndex = 0 */){
+ return $indexOf(this, searchElement, arguments[1]);
+ }
+ });
+
+/***/ },
+/* 172 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var $export = __webpack_require__(7)
+ , toIObject = __webpack_require__(27)
+ , toInteger = __webpack_require__(33)
+ , toLength = __webpack_require__(32);
+
+ $export($export.P + $export.F * !__webpack_require__(158)([].lastIndexOf), 'Array', {
+ // 22.1.3.14 / 15.4.4.15 Array.prototype.lastIndexOf(searchElement [, fromIndex])
+ lastIndexOf: function lastIndexOf(searchElement /*, fromIndex = @[*-1] */){
+ var O = toIObject(this)
+ , length = toLength(O.length)
+ , index = length - 1;
+ if(arguments.length > 1)index = Math.min(index, toInteger(arguments[1]));
+ if(index < 0)index = length + index;
+ for(;index >= 0; index--)if(index in O)if(O[index] === searchElement)return index;
+ return -1;
+ }
+ });
+
+/***/ },
+/* 173 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)
+ var $export = __webpack_require__(7);
+
+ $export($export.P, 'Array', {copyWithin: __webpack_require__(174)});
+
+ __webpack_require__(175)('copyWithin');
+
+/***/ },
+/* 174 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)
+ 'use strict';
+ var toObject = __webpack_require__(54)
+ , toIndex = __webpack_require__(34)
+ , toLength = __webpack_require__(32);
+
+ module.exports = [].copyWithin || function copyWithin(target/*= 0*/, start/*= 0, end = @length*/){
+ var O = toObject(this)
+ , len = toLength(O.length)
+ , to = toIndex(target, len)
+ , from = toIndex(start, len)
+ , end = arguments.length > 2 ? arguments[2] : undefined
+ , count = Math.min((end === undefined ? len : toIndex(end, len)) - from, len - to)
+ , inc = 1;
+ if(from < to && to < from + count){
+ inc = -1;
+ from += count - 1;
+ to += count - 1;
+ }
+ while(count-- > 0){
+ if(from in O)O[to] = O[from];
+ else delete O[to];
+ to += inc;
+ from += inc;
+ } return O;
+ };
+
+/***/ },
+/* 175 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 22.1.3.31 Array.prototype[@@unscopables]
+ var UNSCOPABLES = __webpack_require__(23)('unscopables')
+ , ArrayProto = Array.prototype;
+ if(ArrayProto[UNSCOPABLES] == undefined)__webpack_require__(8)(ArrayProto, UNSCOPABLES, {});
+ module.exports = function(key){
+ ArrayProto[UNSCOPABLES][key] = true;
+ };
+
+/***/ },
+/* 176 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)
+ var $export = __webpack_require__(7);
+
+ $export($export.P, 'Array', {fill: __webpack_require__(177)});
+
+ __webpack_require__(175)('fill');
+
+/***/ },
+/* 177 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)
+ 'use strict';
+ var toObject = __webpack_require__(54)
+ , toIndex = __webpack_require__(34)
+ , toLength = __webpack_require__(32);
+ module.exports = function fill(value /*, start = 0, end = @length */){
+ var O = toObject(this)
+ , length = toLength(O.length)
+ , aLen = arguments.length
+ , index = toIndex(aLen > 1 ? arguments[1] : undefined, length)
+ , end = aLen > 2 ? arguments[2] : undefined
+ , endPos = end === undefined ? length : toIndex(end, length);
+ while(endPos > index)O[index++] = value;
+ return O;
+ };
+
+/***/ },
+/* 178 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined)
+ var $export = __webpack_require__(7)
+ , $find = __webpack_require__(162)(5)
+ , KEY = 'find'
+ , forced = true;
+ // Shouldn't skip holes
+ if(KEY in [])Array(1)[KEY](function(){ forced = false; });
+ $export($export.P + $export.F * forced, 'Array', {
+ find: function find(callbackfn/*, that = undefined */){
+ return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+ }
+ });
+ __webpack_require__(175)(KEY);
+
+/***/ },
+/* 179 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // 22.1.3.9 Array.prototype.findIndex(predicate, thisArg = undefined)
+ var $export = __webpack_require__(7)
+ , $find = __webpack_require__(162)(6)
+ , KEY = 'findIndex'
+ , forced = true;
+ // Shouldn't skip holes
+ if(KEY in [])Array(1)[KEY](function(){ forced = false; });
+ $export($export.P + $export.F * forced, 'Array', {
+ findIndex: function findIndex(callbackfn/*, that = undefined */){
+ return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+ }
+ });
+ __webpack_require__(175)(KEY);
+
+/***/ },
+/* 180 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var addToUnscopables = __webpack_require__(175)
+ , step = __webpack_require__(181)
+ , Iterators = __webpack_require__(134)
+ , toIObject = __webpack_require__(27);
+
+ // 22.1.3.4 Array.prototype.entries()
+ // 22.1.3.13 Array.prototype.keys()
+ // 22.1.3.29 Array.prototype.values()
+ // 22.1.3.30 Array.prototype[@@iterator]()
+ module.exports = __webpack_require__(133)(Array, 'Array', function(iterated, kind){
+ this._t = toIObject(iterated); // target
+ this._i = 0; // next index
+ this._k = kind; // kind
+ // 22.1.5.2.1 %ArrayIteratorPrototype%.next()
+ }, function(){
+ var O = this._t
+ , kind = this._k
+ , index = this._i++;
+ if(!O || index >= O.length){
+ this._t = undefined;
+ return step(1);
+ }
+ if(kind == 'keys' )return step(0, index);
+ if(kind == 'values')return step(0, O[index]);
+ return step(0, [index, O[index]]);
+ }, 'values');
+
+ // argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)
+ Iterators.Arguments = Iterators.Array;
+
+ addToUnscopables('keys');
+ addToUnscopables('values');
+ addToUnscopables('entries');
+
+/***/ },
+/* 181 */
+/***/ function(module, exports) {
+
+ module.exports = function(done, value){
+ return {value: value, done: !!done};
+ };
+
+/***/ },
+/* 182 */
+/***/ function(module, exports, __webpack_require__) {
+
+ __webpack_require__(183)('Array');
+
+/***/ },
+/* 183 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var global = __webpack_require__(2)
+ , dP = __webpack_require__(9)
+ , DESCRIPTORS = __webpack_require__(5)
+ , SPECIES = __webpack_require__(23)('species');
+
+ module.exports = function(KEY){
+ var C = global[KEY];
+ if(DESCRIPTORS && C && !C[SPECIES])dP.f(C, SPECIES, {
+ configurable: true,
+ get: function(){ return this; }
+ });
+ };
+
+/***/ },
+/* 184 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var global = __webpack_require__(2)
+ , inheritIfRequired = __webpack_require__(78)
+ , dP = __webpack_require__(9).f
+ , gOPN = __webpack_require__(45).f
+ , isRegExp = __webpack_require__(127)
+ , $flags = __webpack_require__(185)
+ , $RegExp = global.RegExp
+ , Base = $RegExp
+ , proto = $RegExp.prototype
+ , re1 = /a/g
+ , re2 = /a/g
+ // "new" creates a new object, old webkit buggy here
+ , CORRECT_NEW = new $RegExp(re1) !== re1;
+
+ if(__webpack_require__(5) && (!CORRECT_NEW || __webpack_require__(6)(function(){
+ re2[__webpack_require__(23)('match')] = false;
+ // RegExp constructor can alter flags and IsRegExp works correct with @@match
+ return $RegExp(re1) != re1 || $RegExp(re2) == re2 || $RegExp(re1, 'i') != '/a/i';
+ }))){
+ $RegExp = function RegExp(p, f){
+ var tiRE = this instanceof $RegExp
+ , piRE = isRegExp(p)
+ , fiU = f === undefined;
+ return !tiRE && piRE && p.constructor === $RegExp && fiU ? p
+ : inheritIfRequired(CORRECT_NEW
+ ? new Base(piRE && !fiU ? p.source : p, f)
+ : Base((piRE = p instanceof $RegExp) ? p.source : p, piRE && fiU ? $flags.call(p) : f)
+ , tiRE ? this : proto, $RegExp);
+ };
+ var proxy = function(key){
+ key in $RegExp || dP($RegExp, key, {
+ configurable: true,
+ get: function(){ return Base[key]; },
+ set: function(it){ Base[key] = it; }
+ });
+ };
+ for(var keys = gOPN(Base), i = 0; keys.length > i; )proxy(keys[i++]);
+ proto.constructor = $RegExp;
+ $RegExp.prototype = proto;
+ __webpack_require__(16)(global, 'RegExp', $RegExp);
+ }
+
+ __webpack_require__(183)('RegExp');
+
+/***/ },
+/* 185 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // 21.2.5.3 get RegExp.prototype.flags
+ var anObject = __webpack_require__(10);
+ module.exports = function(){
+ var that = anObject(this)
+ , result = '';
+ if(that.global) result += 'g';
+ if(that.ignoreCase) result += 'i';
+ if(that.multiline) result += 'm';
+ if(that.unicode) result += 'u';
+ if(that.sticky) result += 'y';
+ return result;
+ };
+
+/***/ },
+/* 186 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ __webpack_require__(187);
+ var anObject = __webpack_require__(10)
+ , $flags = __webpack_require__(185)
+ , DESCRIPTORS = __webpack_require__(5)
+ , TO_STRING = 'toString'
+ , $toString = /./[TO_STRING];
+
+ var define = function(fn){
+ __webpack_require__(16)(RegExp.prototype, TO_STRING, fn, true);
+ };
+
+ // 21.2.5.14 RegExp.prototype.toString()
+ if(__webpack_require__(6)(function(){ return $toString.call({source: 'a', flags: 'b'}) != '/a/b'; })){
+ define(function toString(){
+ var R = anObject(this);
+ return '/'.concat(R.source, '/',
+ 'flags' in R ? R.flags : !DESCRIPTORS && R instanceof RegExp ? $flags.call(R) : undefined);
+ });
+ // FF44- RegExp#toString has a wrong name
+ } else if($toString.name != TO_STRING){
+ define(function toString(){
+ return $toString.call(this);
+ });
+ }
+
+/***/ },
+/* 187 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 21.2.5.3 get RegExp.prototype.flags()
+ if(__webpack_require__(5) && /./g.flags != 'g')__webpack_require__(9).f(RegExp.prototype, 'flags', {
+ configurable: true,
+ get: __webpack_require__(185)
+ });
+
+/***/ },
+/* 188 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // @@match logic
+ __webpack_require__(189)('match', 1, function(defined, MATCH, $match){
+ // 21.1.3.11 String.prototype.match(regexp)
+ return [function match(regexp){
+ 'use strict';
+ var O = defined(this)
+ , fn = regexp == undefined ? undefined : regexp[MATCH];
+ return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));
+ }, $match];
+ });
+
+/***/ },
+/* 189 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var hide = __webpack_require__(8)
+ , redefine = __webpack_require__(16)
+ , fails = __webpack_require__(6)
+ , defined = __webpack_require__(30)
+ , wks = __webpack_require__(23);
+
+ module.exports = function(KEY, length, exec){
+ var SYMBOL = wks(KEY)
+ , fns = exec(defined, SYMBOL, ''[KEY])
+ , strfn = fns[0]
+ , rxfn = fns[1];
+ if(fails(function(){
+ var O = {};
+ O[SYMBOL] = function(){ return 7; };
+ return ''[KEY](O) != 7;
+ })){
+ redefine(String.prototype, KEY, strfn);
+ hide(RegExp.prototype, SYMBOL, length == 2
+ // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)
+ // 21.2.5.11 RegExp.prototype[@@split](string, limit)
+ ? function(string, arg){ return rxfn.call(string, this, arg); }
+ // 21.2.5.6 RegExp.prototype[@@match](string)
+ // 21.2.5.9 RegExp.prototype[@@search](string)
+ : function(string){ return rxfn.call(string, this); }
+ );
+ }
+ };
+
+/***/ },
+/* 190 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // @@replace logic
+ __webpack_require__(189)('replace', 2, function(defined, REPLACE, $replace){
+ // 21.1.3.14 String.prototype.replace(searchValue, replaceValue)
+ return [function replace(searchValue, replaceValue){
+ 'use strict';
+ var O = defined(this)
+ , fn = searchValue == undefined ? undefined : searchValue[REPLACE];
+ return fn !== undefined
+ ? fn.call(searchValue, O, replaceValue)
+ : $replace.call(String(O), searchValue, replaceValue);
+ }, $replace];
+ });
+
+/***/ },
+/* 191 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // @@search logic
+ __webpack_require__(189)('search', 1, function(defined, SEARCH, $search){
+ // 21.1.3.15 String.prototype.search(regexp)
+ return [function search(regexp){
+ 'use strict';
+ var O = defined(this)
+ , fn = regexp == undefined ? undefined : regexp[SEARCH];
+ return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));
+ }, $search];
+ });
+
+/***/ },
+/* 192 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // @@split logic
+ __webpack_require__(189)('split', 2, function(defined, SPLIT, $split){
+ 'use strict';
+ var isRegExp = __webpack_require__(127)
+ , _split = $split
+ , $push = [].push
+ , $SPLIT = 'split'
+ , LENGTH = 'length'
+ , LAST_INDEX = 'lastIndex';
+ if(
+ 'abbc'[$SPLIT](/(b)*/)[1] == 'c' ||
+ 'test'[$SPLIT](/(?:)/, -1)[LENGTH] != 4 ||
+ 'ab'[$SPLIT](/(?:ab)*/)[LENGTH] != 2 ||
+ '.'[$SPLIT](/(.?)(.?)/)[LENGTH] != 4 ||
+ '.'[$SPLIT](/()()/)[LENGTH] > 1 ||
+ ''[$SPLIT](/.?/)[LENGTH]
+ ){
+ var NPCG = /()??/.exec('')[1] === undefined; // nonparticipating capturing group
+ // based on es5-shim implementation, need to rework it
+ $split = function(separator, limit){
+ var string = String(this);
+ if(separator === undefined && limit === 0)return [];
+ // If `separator` is not a regex, use native split
+ if(!isRegExp(separator))return _split.call(string, separator, limit);
+ var output = [];
+ var flags = (separator.ignoreCase ? 'i' : '') +
+ (separator.multiline ? 'm' : '') +
+ (separator.unicode ? 'u' : '') +
+ (separator.sticky ? 'y' : '');
+ var lastLastIndex = 0;
+ var splitLimit = limit === undefined ? 4294967295 : limit >>> 0;
+ // Make `global` and avoid `lastIndex` issues by working with a copy
+ var separatorCopy = new RegExp(separator.source, flags + 'g');
+ var separator2, match, lastIndex, lastLength, i;
+ // Doesn't need flags gy, but they don't hurt
+ if(!NPCG)separator2 = new RegExp('^' + separatorCopy.source + '$(?!\\s)', flags);
+ while(match = separatorCopy.exec(string)){
+ // `separatorCopy.lastIndex` is not reliable cross-browser
+ lastIndex = match.index + match[0][LENGTH];
+ if(lastIndex > lastLastIndex){
+ output.push(string.slice(lastLastIndex, match.index));
+ // Fix browsers whose `exec` methods don't consistently return `undefined` for NPCG
+ if(!NPCG && match[LENGTH] > 1)match[0].replace(separator2, function(){
+ for(i = 1; i < arguments[LENGTH] - 2; i++)if(arguments[i] === undefined)match[i] = undefined;
+ });
+ if(match[LENGTH] > 1 && match.index < string[LENGTH])$push.apply(output, match.slice(1));
+ lastLength = match[0][LENGTH];
+ lastLastIndex = lastIndex;
+ if(output[LENGTH] >= splitLimit)break;
+ }
+ if(separatorCopy[LAST_INDEX] === match.index)separatorCopy[LAST_INDEX]++; // Avoid an infinite loop
+ }
+ if(lastLastIndex === string[LENGTH]){
+ if(lastLength || !separatorCopy.test(''))output.push('');
+ } else output.push(string.slice(lastLastIndex));
+ return output[LENGTH] > splitLimit ? output.slice(0, splitLimit) : output;
+ };
+ // Chakra, V8
+ } else if('0'[$SPLIT](undefined, 0)[LENGTH]){
+ $split = function(separator, limit){
+ return separator === undefined && limit === 0 ? [] : _split.call(this, separator, limit);
+ };
+ }
+ // 21.1.3.17 String.prototype.split(separator, limit)
+ return [function split(separator, limit){
+ var O = defined(this)
+ , fn = separator == undefined ? undefined : separator[SPLIT];
+ return fn !== undefined ? fn.call(separator, O, limit) : $split.call(String(O), separator, limit);
+ }, $split];
+ });
+
+/***/ },
+/* 193 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var LIBRARY = __webpack_require__(47)
+ , global = __webpack_require__(2)
+ , ctx = __webpack_require__(18)
+ , classof = __webpack_require__(71)
+ , $export = __webpack_require__(7)
+ , isObject = __webpack_require__(11)
+ , anObject = __webpack_require__(10)
+ , aFunction = __webpack_require__(19)
+ , anInstance = __webpack_require__(82)
+ , forOf = __webpack_require__(194)
+ , setProto = __webpack_require__(69).set
+ , speciesConstructor = __webpack_require__(195)
+ , task = __webpack_require__(196).set
+ , microtask = __webpack_require__(197)
+ , PROMISE = 'Promise'
+ , TypeError = global.TypeError
+ , process = global.process
+ , $Promise = global[PROMISE]
+ , process = global.process
+ , isNode = classof(process) == 'process'
+ , empty = function(){ /* empty */ }
+ , Internal, GenericPromiseCapability, Wrapper;
+
+ var USE_NATIVE = !!function(){
+ try {
+ // correct subclassing with @@species support
+ var promise = $Promise.resolve(1)
+ , FakePromise = (promise.constructor = {})[__webpack_require__(23)('species')] = function(exec){ exec(empty, empty); };
+ // unhandled rejections tracking support, NodeJS Promise without it fails @@species test
+ return (isNode || typeof PromiseRejectionEvent == 'function') && promise.then(empty) instanceof FakePromise;
+ } catch(e){ /* empty */ }
+ }();
+
+ // helpers
+ var sameConstructor = function(a, b){
+ // with library wrapper special case
+ return a === b || a === $Promise && b === Wrapper;
+ };
+ var isThenable = function(it){
+ var then;
+ return isObject(it) && typeof (then = it.then) == 'function' ? then : false;
+ };
+ var newPromiseCapability = function(C){
+ return sameConstructor($Promise, C)
+ ? new PromiseCapability(C)
+ : new GenericPromiseCapability(C);
+ };
+ var PromiseCapability = GenericPromiseCapability = function(C){
+ var resolve, reject;
+ this.promise = new C(function($$resolve, $$reject){
+ if(resolve !== undefined || reject !== undefined)throw TypeError('Bad Promise constructor');
+ resolve = $$resolve;
+ reject = $$reject;
+ });
+ this.resolve = aFunction(resolve);
+ this.reject = aFunction(reject);
+ };
+ var perform = function(exec){
+ try {
+ exec();
+ } catch(e){
+ return {error: e};
+ }
+ };
+ var notify = function(promise, isReject){
+ if(promise._n)return;
+ promise._n = true;
+ var chain = promise._c;
+ microtask(function(){
+ var value = promise._v
+ , ok = promise._s == 1
+ , i = 0;
+ var run = function(reaction){
+ var handler = ok ? reaction.ok : reaction.fail
+ , resolve = reaction.resolve
+ , reject = reaction.reject
+ , domain = reaction.domain
+ , result, then;
+ try {
+ if(handler){
+ if(!ok){
+ if(promise._h == 2)onHandleUnhandled(promise);
+ promise._h = 1;
+ }
+ if(handler === true)result = value;
+ else {
+ if(domain)domain.enter();
+ result = handler(value);
+ if(domain)domain.exit();
+ }
+ if(result === reaction.promise){
+ reject(TypeError('Promise-chain cycle'));
+ } else if(then = isThenable(result)){
+ then.call(result, resolve, reject);
+ } else resolve(result);
+ } else reject(value);
+ } catch(e){
+ reject(e);
+ }
+ };
+ while(chain.length > i)run(chain[i++]); // variable length - can't use forEach
+ promise._c = [];
+ promise._n = false;
+ if(isReject && !promise._h)onUnhandled(promise);
+ });
+ };
+ var onUnhandled = function(promise){
+ task.call(global, function(){
+ var value = promise._v
+ , abrupt, handler, console;
+ if(isUnhandled(promise)){
+ abrupt = perform(function(){
+ if(isNode){
+ process.emit('unhandledRejection', value, promise);
+ } else if(handler = global.onunhandledrejection){
+ handler({promise: promise, reason: value});
+ } else if((console = global.console) && console.error){
+ console.error('Unhandled promise rejection', value);
+ }
+ });
+ // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should
+ promise._h = isNode || isUnhandled(promise) ? 2 : 1;
+ } promise._a = undefined;
+ if(abrupt)throw abrupt.error;
+ });
+ };
+ var isUnhandled = function(promise){
+ if(promise._h == 1)return false;
+ var chain = promise._a || promise._c
+ , i = 0
+ , reaction;
+ while(chain.length > i){
+ reaction = chain[i++];
+ if(reaction.fail || !isUnhandled(reaction.promise))return false;
+ } return true;
+ };
+ var onHandleUnhandled = function(promise){
+ task.call(global, function(){
+ var handler;
+ if(isNode){
+ process.emit('rejectionHandled', promise);
+ } else if(handler = global.onrejectionhandled){
+ handler({promise: promise, reason: promise._v});
+ }
+ });
+ };
+ var $reject = function(value){
+ var promise = this;
+ if(promise._d)return;
+ promise._d = true;
+ promise = promise._w || promise; // unwrap
+ promise._v = value;
+ promise._s = 2;
+ if(!promise._a)promise._a = promise._c.slice();
+ notify(promise, true);
+ };
+ var $resolve = function(value){
+ var promise = this
+ , then;
+ if(promise._d)return;
+ promise._d = true;
+ promise = promise._w || promise; // unwrap
+ try {
+ if(promise === value)throw TypeError("Promise can't be resolved itself");
+ if(then = isThenable(value)){
+ microtask(function(){
+ var wrapper = {_w: promise, _d: false}; // wrap
+ try {
+ then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));
+ } catch(e){
+ $reject.call(wrapper, e);
+ }
+ });
+ } else {
+ promise._v = value;
+ promise._s = 1;
+ notify(promise, false);
+ }
+ } catch(e){
+ $reject.call({_w: promise, _d: false}, e); // wrap
+ }
+ };
+
+ // constructor polyfill
+ if(!USE_NATIVE){
+ // 25.4.3.1 Promise(executor)
+ $Promise = function Promise(executor){
+ anInstance(this, $Promise, PROMISE, '_h');
+ aFunction(executor);
+ Internal.call(this);
+ try {
+ executor(ctx($resolve, this, 1), ctx($reject, this, 1));
+ } catch(err){
+ $reject.call(this, err);
+ }
+ };
+ Internal = function Promise(executor){
+ this._c = []; // <- awaiting reactions
+ this._a = undefined; // <- checked in isUnhandled reactions
+ this._s = 0; // <- state
+ this._d = false; // <- done
+ this._v = undefined; // <- value
+ this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled
+ this._n = false; // <- notify
+ };
+ Internal.prototype = __webpack_require__(198)($Promise.prototype, {
+ // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)
+ then: function then(onFulfilled, onRejected){
+ var reaction = newPromiseCapability(speciesConstructor(this, $Promise));
+ reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;
+ reaction.fail = typeof onRejected == 'function' && onRejected;
+ reaction.domain = isNode ? process.domain : undefined;
+ this._c.push(reaction);
+ if(this._a)this._a.push(reaction);
+ if(this._s)notify(this, false);
+ return reaction.promise;
+ },
+ // 25.4.5.1 Promise.prototype.catch(onRejected)
+ 'catch': function(onRejected){
+ return this.then(undefined, onRejected);
+ }
+ });
+ PromiseCapability = function(){
+ var promise = new Internal;
+ this.promise = promise;
+ this.resolve = ctx($resolve, promise, 1);
+ this.reject = ctx($reject, promise, 1);
+ };
+ }
+
+ $export($export.G + $export.W + $export.F * !USE_NATIVE, {Promise: $Promise});
+ __webpack_require__(22)($Promise, PROMISE);
+ __webpack_require__(183)(PROMISE);
+ Wrapper = __webpack_require__(3)[PROMISE];
+
+ // statics
+ $export($export.S + $export.F * !USE_NATIVE, PROMISE, {
+ // 25.4.4.5 Promise.reject(r)
+ reject: function reject(r){
+ var capability = newPromiseCapability(this)
+ , $$reject = capability.reject;
+ $$reject(r);
+ return capability.promise;
+ }
+ });
+ $export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {
+ // 25.4.4.6 Promise.resolve(x)
+ resolve: function resolve(x){
+ // instanceof instead of internal slot check because we should fix it without replacement native Promise core
+ if(x instanceof $Promise && sameConstructor(x.constructor, this))return x;
+ var capability = newPromiseCapability(this)
+ , $$resolve = capability.resolve;
+ $$resolve(x);
+ return capability.promise;
+ }
+ });
+ $export($export.S + $export.F * !(USE_NATIVE && __webpack_require__(155)(function(iter){
+ $Promise.all(iter)['catch'](empty);
+ })), PROMISE, {
+ // 25.4.4.1 Promise.all(iterable)
+ all: function all(iterable){
+ var C = this
+ , capability = newPromiseCapability(C)
+ , resolve = capability.resolve
+ , reject = capability.reject;
+ var abrupt = perform(function(){
+ var values = []
+ , index = 0
+ , remaining = 1;
+ forOf(iterable, false, function(promise){
+ var $index = index++
+ , alreadyCalled = false;
+ values.push(undefined);
+ remaining++;
+ C.resolve(promise).then(function(value){
+ if(alreadyCalled)return;
+ alreadyCalled = true;
+ values[$index] = value;
+ --remaining || resolve(values);
+ }, reject);
+ });
+ --remaining || resolve(values);
+ });
+ if(abrupt)reject(abrupt.error);
+ return capability.promise;
+ },
+ // 25.4.4.4 Promise.race(iterable)
+ race: function race(iterable){
+ var C = this
+ , capability = newPromiseCapability(C)
+ , reject = capability.reject;
+ var abrupt = perform(function(){
+ forOf(iterable, false, function(promise){
+ C.resolve(promise).then(capability.resolve, reject);
+ });
+ });
+ if(abrupt)reject(abrupt.error);
+ return capability.promise;
+ }
+ });
+
+/***/ },
+/* 194 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var ctx = __webpack_require__(18)
+ , call = __webpack_require__(152)
+ , isArrayIter = __webpack_require__(153)
+ , anObject = __webpack_require__(10)
+ , toLength = __webpack_require__(32)
+ , getIterFn = __webpack_require__(154);
+ module.exports = function(iterable, entries, fn, that, ITERATOR){
+ var iterFn = ITERATOR ? function(){ return iterable; } : getIterFn(iterable)
+ , f = ctx(fn, that, entries ? 2 : 1)
+ , index = 0
+ , length, step, iterator;
+ if(typeof iterFn != 'function')throw TypeError(iterable + ' is not iterable!');
+ // fast case for arrays with default iterator
+ if(isArrayIter(iterFn))for(length = toLength(iterable.length); length > index; index++){
+ entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);
+ } else for(iterator = iterFn.call(iterable); !(step = iterator.next()).done; ){
+ call(iterator, f, step.value, entries);
+ }
+ };
+
+/***/ },
+/* 195 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 7.3.20 SpeciesConstructor(O, defaultConstructor)
+ var anObject = __webpack_require__(10)
+ , aFunction = __webpack_require__(19)
+ , SPECIES = __webpack_require__(23)('species');
+ module.exports = function(O, D){
+ var C = anObject(O).constructor, S;
+ return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);
+ };
+
+/***/ },
+/* 196 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var ctx = __webpack_require__(18)
+ , invoke = __webpack_require__(74)
+ , html = __webpack_require__(43)
+ , cel = __webpack_require__(13)
+ , global = __webpack_require__(2)
+ , process = global.process
+ , setTask = global.setImmediate
+ , clearTask = global.clearImmediate
+ , MessageChannel = global.MessageChannel
+ , counter = 0
+ , queue = {}
+ , ONREADYSTATECHANGE = 'onreadystatechange'
+ , defer, channel, port;
+ var run = function(){
+ var id = +this;
+ if(queue.hasOwnProperty(id)){
+ var fn = queue[id];
+ delete queue[id];
+ fn();
+ }
+ };
+ var listener = function(event){
+ run.call(event.data);
+ };
+ // Node.js 0.9+ & IE10+ has setImmediate, otherwise:
+ if(!setTask || !clearTask){
+ setTask = function setImmediate(fn){
+ var args = [], i = 1;
+ while(arguments.length > i)args.push(arguments[i++]);
+ queue[++counter] = function(){
+ invoke(typeof fn == 'function' ? fn : Function(fn), args);
+ };
+ defer(counter);
+ return counter;
+ };
+ clearTask = function clearImmediate(id){
+ delete queue[id];
+ };
+ // Node.js 0.8-
+ if(__webpack_require__(29)(process) == 'process'){
+ defer = function(id){
+ process.nextTick(ctx(run, id, 1));
+ };
+ // Browsers with MessageChannel, includes WebWorkers
+ } else if(MessageChannel){
+ channel = new MessageChannel;
+ port = channel.port2;
+ channel.port1.onmessage = listener;
+ defer = ctx(port.postMessage, port, 1);
+ // Browsers with postMessage, skip WebWorkers
+ // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'
+ } else if(global.addEventListener && typeof postMessage == 'function' && !global.importScripts){
+ defer = function(id){
+ global.postMessage(id + '', '*');
+ };
+ global.addEventListener('message', listener, false);
+ // IE8-
+ } else if(ONREADYSTATECHANGE in cel('script')){
+ defer = function(id){
+ html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function(){
+ html.removeChild(this);
+ run.call(id);
+ };
+ };
+ // Rest old browsers
+ } else {
+ defer = function(id){
+ setTimeout(ctx(run, id, 1), 0);
+ };
+ }
+ }
+ module.exports = {
+ set: setTask,
+ clear: clearTask
+ };
+
+/***/ },
+/* 197 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var global = __webpack_require__(2)
+ , macrotask = __webpack_require__(196).set
+ , Observer = global.MutationObserver || global.WebKitMutationObserver
+ , process = global.process
+ , Promise = global.Promise
+ , isNode = __webpack_require__(29)(process) == 'process'
+ , head, last, notify;
+
+ var flush = function(){
+ var parent, fn;
+ if(isNode && (parent = process.domain))parent.exit();
+ while(head){
+ fn = head.fn;
+ fn(); // <- currently we use it only for Promise - try / catch not required
+ head = head.next;
+ } last = undefined;
+ if(parent)parent.enter();
+ };
+
+ // Node.js
+ if(isNode){
+ notify = function(){
+ process.nextTick(flush);
+ };
+ // browsers with MutationObserver
+ } else if(Observer){
+ var toggle = true
+ , node = document.createTextNode('');
+ new Observer(flush).observe(node, {characterData: true}); // eslint-disable-line no-new
+ notify = function(){
+ node.data = toggle = !toggle;
+ };
+ // environments with maybe non-completely correct, but existent Promise
+ } else if(Promise && Promise.resolve){
+ notify = function(){
+ Promise.resolve().then(flush);
+ };
+ // for other environments - macrotask based on:
+ // - setImmediate
+ // - MessageChannel
+ // - window.postMessag
+ // - onreadystatechange
+ // - setTimeout
+ } else {
+ notify = function(){
+ // strange IE + webpack dev server bug - use .call(global)
+ macrotask.call(global, flush);
+ };
+ }
+
+ module.exports = function(fn){
+ var task = {fn: fn, next: undefined};
+ if(last)last.next = task;
+ if(!head){
+ head = task;
+ notify();
+ } last = task;
+ };
+
+/***/ },
+/* 198 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var redefine = __webpack_require__(16);
+ module.exports = function(target, src, safe){
+ for(var key in src)redefine(target, key, src[key], safe);
+ return target;
+ };
+
+/***/ },
+/* 199 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var strong = __webpack_require__(200);
+
+ // 23.1 Map Objects
+ module.exports = __webpack_require__(201)('Map', function(get){
+ return function Map(){ return get(this, arguments.length > 0 ? arguments[0] : undefined); };
+ }, {
+ // 23.1.3.6 Map.prototype.get(key)
+ get: function get(key){
+ var entry = strong.getEntry(this, key);
+ return entry && entry.v;
+ },
+ // 23.1.3.9 Map.prototype.set(key, value)
+ set: function set(key, value){
+ return strong.def(this, key === 0 ? 0 : key, value);
+ }
+ }, strong, true);
+
+/***/ },
+/* 200 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var dP = __webpack_require__(9).f
+ , create = __webpack_require__(41)
+ , hide = __webpack_require__(8)
+ , redefineAll = __webpack_require__(198)
+ , ctx = __webpack_require__(18)
+ , anInstance = __webpack_require__(82)
+ , defined = __webpack_require__(30)
+ , forOf = __webpack_require__(194)
+ , $iterDefine = __webpack_require__(133)
+ , step = __webpack_require__(181)
+ , setSpecies = __webpack_require__(183)
+ , DESCRIPTORS = __webpack_require__(5)
+ , fastKey = __webpack_require__(20).fastKey
+ , SIZE = DESCRIPTORS ? '_s' : 'size';
+
+ var getEntry = function(that, key){
+ // fast case
+ var index = fastKey(key), entry;
+ if(index !== 'F')return that._i[index];
+ // frozen object case
+ for(entry = that._f; entry; entry = entry.n){
+ if(entry.k == key)return entry;
+ }
+ };
+
+ module.exports = {
+ getConstructor: function(wrapper, NAME, IS_MAP, ADDER){
+ var C = wrapper(function(that, iterable){
+ anInstance(that, C, NAME, '_i');
+ that._i = create(null); // index
+ that._f = undefined; // first entry
+ that._l = undefined; // last entry
+ that[SIZE] = 0; // size
+ if(iterable != undefined)forOf(iterable, IS_MAP, that[ADDER], that);
+ });
+ redefineAll(C.prototype, {
+ // 23.1.3.1 Map.prototype.clear()
+ // 23.2.3.2 Set.prototype.clear()
+ clear: function clear(){
+ for(var that = this, data = that._i, entry = that._f; entry; entry = entry.n){
+ entry.r = true;
+ if(entry.p)entry.p = entry.p.n = undefined;
+ delete data[entry.i];
+ }
+ that._f = that._l = undefined;
+ that[SIZE] = 0;
+ },
+ // 23.1.3.3 Map.prototype.delete(key)
+ // 23.2.3.4 Set.prototype.delete(value)
+ 'delete': function(key){
+ var that = this
+ , entry = getEntry(that, key);
+ if(entry){
+ var next = entry.n
+ , prev = entry.p;
+ delete that._i[entry.i];
+ entry.r = true;
+ if(prev)prev.n = next;
+ if(next)next.p = prev;
+ if(that._f == entry)that._f = next;
+ if(that._l == entry)that._l = prev;
+ that[SIZE]--;
+ } return !!entry;
+ },
+ // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)
+ // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)
+ forEach: function forEach(callbackfn /*, that = undefined */){
+ anInstance(this, C, 'forEach');
+ var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3)
+ , entry;
+ while(entry = entry ? entry.n : this._f){
+ f(entry.v, entry.k, this);
+ // revert to the last existing entry
+ while(entry && entry.r)entry = entry.p;
+ }
+ },
+ // 23.1.3.7 Map.prototype.has(key)
+ // 23.2.3.7 Set.prototype.has(value)
+ has: function has(key){
+ return !!getEntry(this, key);
+ }
+ });
+ if(DESCRIPTORS)dP(C.prototype, 'size', {
+ get: function(){
+ return defined(this[SIZE]);
+ }
+ });
+ return C;
+ },
+ def: function(that, key, value){
+ var entry = getEntry(that, key)
+ , prev, index;
+ // change existing entry
+ if(entry){
+ entry.v = value;
+ // create new entry
+ } else {
+ that._l = entry = {
+ i: index = fastKey(key, true), // <- index
+ k: key, // <- key
+ v: value, // <- value
+ p: prev = that._l, // <- previous entry
+ n: undefined, // <- next entry
+ r: false // <- removed
+ };
+ if(!that._f)that._f = entry;
+ if(prev)prev.n = entry;
+ that[SIZE]++;
+ // add to index
+ if(index !== 'F')that._i[index] = entry;
+ } return that;
+ },
+ getEntry: getEntry,
+ setStrong: function(C, NAME, IS_MAP){
+ // add .keys, .values, .entries, [@@iterator]
+ // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11
+ $iterDefine(C, NAME, function(iterated, kind){
+ this._t = iterated; // target
+ this._k = kind; // kind
+ this._l = undefined; // previous
+ }, function(){
+ var that = this
+ , kind = that._k
+ , entry = that._l;
+ // revert to the last existing entry
+ while(entry && entry.r)entry = entry.p;
+ // get next entry
+ if(!that._t || !(that._l = entry = entry ? entry.n : that._t._f)){
+ // or finish the iteration
+ that._t = undefined;
+ return step(1);
+ }
+ // return step by kind
+ if(kind == 'keys' )return step(0, entry.k);
+ if(kind == 'values')return step(0, entry.v);
+ return step(0, [entry.k, entry.v]);
+ }, IS_MAP ? 'entries' : 'values' , !IS_MAP, true);
+
+ // add [@@species], 23.1.2.2, 23.2.2.2
+ setSpecies(NAME);
+ }
+ };
+
+/***/ },
+/* 201 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var global = __webpack_require__(2)
+ , $export = __webpack_require__(7)
+ , redefine = __webpack_require__(16)
+ , redefineAll = __webpack_require__(198)
+ , meta = __webpack_require__(20)
+ , forOf = __webpack_require__(194)
+ , anInstance = __webpack_require__(82)
+ , isObject = __webpack_require__(11)
+ , fails = __webpack_require__(6)
+ , $iterDetect = __webpack_require__(155)
+ , setToStringTag = __webpack_require__(22)
+ , inheritIfRequired = __webpack_require__(78);
+
+ module.exports = function(NAME, wrapper, methods, common, IS_MAP, IS_WEAK){
+ var Base = global[NAME]
+ , C = Base
+ , ADDER = IS_MAP ? 'set' : 'add'
+ , proto = C && C.prototype
+ , O = {};
+ var fixMethod = function(KEY){
+ var fn = proto[KEY];
+ redefine(proto, KEY,
+ KEY == 'delete' ? function(a){
+ return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);
+ } : KEY == 'has' ? function has(a){
+ return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);
+ } : KEY == 'get' ? function get(a){
+ return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a);
+ } : KEY == 'add' ? function add(a){ fn.call(this, a === 0 ? 0 : a); return this; }
+ : function set(a, b){ fn.call(this, a === 0 ? 0 : a, b); return this; }
+ );
+ };
+ if(typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function(){
+ new C().entries().next();
+ }))){
+ // create collection constructor
+ C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);
+ redefineAll(C.prototype, methods);
+ meta.NEED = true;
+ } else {
+ var instance = new C
+ // early implementations not supports chaining
+ , HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance
+ // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false
+ , THROWS_ON_PRIMITIVES = fails(function(){ instance.has(1); })
+ // most early implementations doesn't supports iterables, most modern - not close it correctly
+ , ACCEPT_ITERABLES = $iterDetect(function(iter){ new C(iter); }) // eslint-disable-line no-new
+ // for early implementations -0 and +0 not the same
+ , BUGGY_ZERO = !IS_WEAK && fails(function(){
+ // V8 ~ Chromium 42- fails only with 5+ elements
+ var $instance = new C()
+ , index = 5;
+ while(index--)$instance[ADDER](index, index);
+ return !$instance.has(-0);
+ });
+ if(!ACCEPT_ITERABLES){
+ C = wrapper(function(target, iterable){
+ anInstance(target, C, NAME);
+ var that = inheritIfRequired(new Base, target, C);
+ if(iterable != undefined)forOf(iterable, IS_MAP, that[ADDER], that);
+ return that;
+ });
+ C.prototype = proto;
+ proto.constructor = C;
+ }
+ if(THROWS_ON_PRIMITIVES || BUGGY_ZERO){
+ fixMethod('delete');
+ fixMethod('has');
+ IS_MAP && fixMethod('get');
+ }
+ if(BUGGY_ZERO || HASNT_CHAINING)fixMethod(ADDER);
+ // weak collections should not contains .clear method
+ if(IS_WEAK && proto.clear)delete proto.clear;
+ }
+
+ setToStringTag(C, NAME);
+
+ O[NAME] = C;
+ $export($export.G + $export.W + $export.F * (C != Base), O);
+
+ if(!IS_WEAK)common.setStrong(C, NAME, IS_MAP);
+
+ return C;
+ };
+
+/***/ },
+/* 202 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var strong = __webpack_require__(200);
+
+ // 23.2 Set Objects
+ module.exports = __webpack_require__(201)('Set', function(get){
+ return function Set(){ return get(this, arguments.length > 0 ? arguments[0] : undefined); };
+ }, {
+ // 23.2.3.1 Set.prototype.add(value)
+ add: function add(value){
+ return strong.def(this, value = value === 0 ? 0 : value, value);
+ }
+ }, strong);
+
+/***/ },
+/* 203 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var each = __webpack_require__(162)(0)
+ , redefine = __webpack_require__(16)
+ , meta = __webpack_require__(20)
+ , assign = __webpack_require__(65)
+ , weak = __webpack_require__(204)
+ , isObject = __webpack_require__(11)
+ , has = __webpack_require__(4)
+ , getWeak = meta.getWeak
+ , isExtensible = Object.isExtensible
+ , uncaughtFrozenStore = weak.ufstore
+ , tmp = {}
+ , InternalMap;
+
+ var wrapper = function(get){
+ return function WeakMap(){
+ return get(this, arguments.length > 0 ? arguments[0] : undefined);
+ };
+ };
+
+ var methods = {
+ // 23.3.3.3 WeakMap.prototype.get(key)
+ get: function get(key){
+ if(isObject(key)){
+ var data = getWeak(key);
+ if(data === true)return uncaughtFrozenStore(this).get(key);
+ return data ? data[this._i] : undefined;
+ }
+ },
+ // 23.3.3.5 WeakMap.prototype.set(key, value)
+ set: function set(key, value){
+ return weak.def(this, key, value);
+ }
+ };
+
+ // 23.3 WeakMap Objects
+ var $WeakMap = module.exports = __webpack_require__(201)('WeakMap', wrapper, methods, weak, true, true);
+
+ // IE11 WeakMap frozen keys fix
+ if(new $WeakMap().set((Object.freeze || Object)(tmp), 7).get(tmp) != 7){
+ InternalMap = weak.getConstructor(wrapper);
+ assign(InternalMap.prototype, methods);
+ meta.NEED = true;
+ each(['delete', 'has', 'get', 'set'], function(key){
+ var proto = $WeakMap.prototype
+ , method = proto[key];
+ redefine(proto, key, function(a, b){
+ // store frozen objects on internal weakmap shim
+ if(isObject(a) && !isExtensible(a)){
+ if(!this._f)this._f = new InternalMap;
+ var result = this._f[key](a, b);
+ return key == 'set' ? this : result;
+ // store all the rest on native weakmap
+ } return method.call(this, a, b);
+ });
+ });
+ }
+
+/***/ },
+/* 204 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var redefineAll = __webpack_require__(198)
+ , getWeak = __webpack_require__(20).getWeak
+ , anObject = __webpack_require__(10)
+ , isObject = __webpack_require__(11)
+ , anInstance = __webpack_require__(82)
+ , forOf = __webpack_require__(194)
+ , createArrayMethod = __webpack_require__(162)
+ , $has = __webpack_require__(4)
+ , arrayFind = createArrayMethod(5)
+ , arrayFindIndex = createArrayMethod(6)
+ , id = 0;
+
+ // fallback for uncaught frozen keys
+ var uncaughtFrozenStore = function(that){
+ return that._l || (that._l = new UncaughtFrozenStore);
+ };
+ var UncaughtFrozenStore = function(){
+ this.a = [];
+ };
+ var findUncaughtFrozen = function(store, key){
+ return arrayFind(store.a, function(it){
+ return it[0] === key;
+ });
+ };
+ UncaughtFrozenStore.prototype = {
+ get: function(key){
+ var entry = findUncaughtFrozen(this, key);
+ if(entry)return entry[1];
+ },
+ has: function(key){
+ return !!findUncaughtFrozen(this, key);
+ },
+ set: function(key, value){
+ var entry = findUncaughtFrozen(this, key);
+ if(entry)entry[1] = value;
+ else this.a.push([key, value]);
+ },
+ 'delete': function(key){
+ var index = arrayFindIndex(this.a, function(it){
+ return it[0] === key;
+ });
+ if(~index)this.a.splice(index, 1);
+ return !!~index;
+ }
+ };
+
+ module.exports = {
+ getConstructor: function(wrapper, NAME, IS_MAP, ADDER){
+ var C = wrapper(function(that, iterable){
+ anInstance(that, C, NAME, '_i');
+ that._i = id++; // collection id
+ that._l = undefined; // leak store for uncaught frozen objects
+ if(iterable != undefined)forOf(iterable, IS_MAP, that[ADDER], that);
+ });
+ redefineAll(C.prototype, {
+ // 23.3.3.2 WeakMap.prototype.delete(key)
+ // 23.4.3.3 WeakSet.prototype.delete(value)
+ 'delete': function(key){
+ if(!isObject(key))return false;
+ var data = getWeak(key);
+ if(data === true)return uncaughtFrozenStore(this)['delete'](key);
+ return data && $has(data, this._i) && delete data[this._i];
+ },
+ // 23.3.3.4 WeakMap.prototype.has(key)
+ // 23.4.3.4 WeakSet.prototype.has(value)
+ has: function has(key){
+ if(!isObject(key))return false;
+ var data = getWeak(key);
+ if(data === true)return uncaughtFrozenStore(this).has(key);
+ return data && $has(data, this._i);
+ }
+ });
+ return C;
+ },
+ def: function(that, key, value){
+ var data = getWeak(anObject(key), true);
+ if(data === true)uncaughtFrozenStore(that).set(key, value);
+ else data[that._i] = value;
+ return that;
+ },
+ ufstore: uncaughtFrozenStore
+ };
+
+/***/ },
+/* 205 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var weak = __webpack_require__(204);
+
+ // 23.4 WeakSet Objects
+ __webpack_require__(201)('WeakSet', function(get){
+ return function WeakSet(){ return get(this, arguments.length > 0 ? arguments[0] : undefined); };
+ }, {
+ // 23.4.3.1 WeakSet.prototype.add(value)
+ add: function add(value){
+ return weak.def(this, value, true);
+ }
+ }, weak, false, true);
+
+/***/ },
+/* 206 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 26.1.1 Reflect.apply(target, thisArgument, argumentsList)
+ var $export = __webpack_require__(7)
+ , _apply = Function.apply;
+
+ $export($export.S, 'Reflect', {
+ apply: function apply(target, thisArgument, argumentsList){
+ return _apply.call(target, thisArgument, argumentsList);
+ }
+ });
+
+/***/ },
+/* 207 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 26.1.2 Reflect.construct(target, argumentsList [, newTarget])
+ var $export = __webpack_require__(7)
+ , create = __webpack_require__(41)
+ , aFunction = __webpack_require__(19)
+ , anObject = __webpack_require__(10)
+ , isObject = __webpack_require__(11)
+ , bind = __webpack_require__(73);
+
+ // MS Edge supports only 2 arguments
+ // FF Nightly sets third argument as `new.target`, but does not create `this` from it
+ $export($export.S + $export.F * __webpack_require__(6)(function(){
+ function F(){}
+ return !(Reflect.construct(function(){}, [], F) instanceof F);
+ }), 'Reflect', {
+ construct: function construct(Target, args /*, newTarget*/){
+ aFunction(Target);
+ var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);
+ if(Target == newTarget){
+ // w/o altered newTarget, optimization for 0-4 arguments
+ if(args != undefined)switch(anObject(args).length){
+ case 0: return new Target;
+ case 1: return new Target(args[0]);
+ case 2: return new Target(args[0], args[1]);
+ case 3: return new Target(args[0], args[1], args[2]);
+ case 4: return new Target(args[0], args[1], args[2], args[3]);
+ }
+ // w/o altered newTarget, lot of arguments case
+ var $args = [null];
+ $args.push.apply($args, args);
+ return new (bind.apply(Target, $args));
+ }
+ // with altered newTarget, not support built-in constructors
+ var proto = newTarget.prototype
+ , instance = create(isObject(proto) ? proto : Object.prototype)
+ , result = Function.apply.call(Target, instance, args);
+ return isObject(result) ? result : instance;
+ }
+ });
+
+/***/ },
+/* 208 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 26.1.3 Reflect.defineProperty(target, propertyKey, attributes)
+ var dP = __webpack_require__(9)
+ , $export = __webpack_require__(7)
+ , anObject = __webpack_require__(10)
+ , toPrimitive = __webpack_require__(14);
+
+ // MS Edge has broken Reflect.defineProperty - throwing instead of returning false
+ $export($export.S + $export.F * __webpack_require__(6)(function(){
+ Reflect.defineProperty(dP.f({}, 1, {value: 1}), 1, {value: 2});
+ }), 'Reflect', {
+ defineProperty: function defineProperty(target, propertyKey, attributes){
+ anObject(target);
+ propertyKey = toPrimitive(propertyKey, true);
+ anObject(attributes);
+ try {
+ dP.f(target, propertyKey, attributes);
+ return true;
+ } catch(e){
+ return false;
+ }
+ }
+ });
+
+/***/ },
+/* 209 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 26.1.4 Reflect.deleteProperty(target, propertyKey)
+ var $export = __webpack_require__(7)
+ , gOPD = __webpack_require__(46).f
+ , anObject = __webpack_require__(10);
+
+ $export($export.S, 'Reflect', {
+ deleteProperty: function deleteProperty(target, propertyKey){
+ var desc = gOPD(anObject(target), propertyKey);
+ return desc && !desc.configurable ? false : delete target[propertyKey];
+ }
+ });
+
+/***/ },
+/* 210 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // 26.1.5 Reflect.enumerate(target)
+ var $export = __webpack_require__(7)
+ , anObject = __webpack_require__(10);
+ var Enumerate = function(iterated){
+ this._t = anObject(iterated); // target
+ this._i = 0; // next index
+ var keys = this._k = [] // keys
+ , key;
+ for(key in iterated)keys.push(key);
+ };
+ __webpack_require__(135)(Enumerate, 'Object', function(){
+ var that = this
+ , keys = that._k
+ , key;
+ do {
+ if(that._i >= keys.length)return {value: undefined, done: true};
+ } while(!((key = keys[that._i++]) in that._t));
+ return {value: key, done: false};
+ });
+
+ $export($export.S, 'Reflect', {
+ enumerate: function enumerate(target){
+ return new Enumerate(target);
+ }
+ });
+
+/***/ },
+/* 211 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 26.1.6 Reflect.get(target, propertyKey [, receiver])
+ var gOPD = __webpack_require__(46)
+ , getPrototypeOf = __webpack_require__(55)
+ , has = __webpack_require__(4)
+ , $export = __webpack_require__(7)
+ , isObject = __webpack_require__(11)
+ , anObject = __webpack_require__(10);
+
+ function get(target, propertyKey/*, receiver*/){
+ var receiver = arguments.length < 3 ? target : arguments[2]
+ , desc, proto;
+ if(anObject(target) === receiver)return target[propertyKey];
+ if(desc = gOPD.f(target, propertyKey))return has(desc, 'value')
+ ? desc.value
+ : desc.get !== undefined
+ ? desc.get.call(receiver)
+ : undefined;
+ if(isObject(proto = getPrototypeOf(target)))return get(proto, propertyKey, receiver);
+ }
+
+ $export($export.S, 'Reflect', {get: get});
+
+/***/ },
+/* 212 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 26.1.7 Reflect.getOwnPropertyDescriptor(target, propertyKey)
+ var gOPD = __webpack_require__(46)
+ , $export = __webpack_require__(7)
+ , anObject = __webpack_require__(10);
+
+ $export($export.S, 'Reflect', {
+ getOwnPropertyDescriptor: function getOwnPropertyDescriptor(target, propertyKey){
+ return gOPD.f(anObject(target), propertyKey);
+ }
+ });
+
+/***/ },
+/* 213 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 26.1.8 Reflect.getPrototypeOf(target)
+ var $export = __webpack_require__(7)
+ , getProto = __webpack_require__(55)
+ , anObject = __webpack_require__(10);
+
+ $export($export.S, 'Reflect', {
+ getPrototypeOf: function getPrototypeOf(target){
+ return getProto(anObject(target));
+ }
+ });
+
+/***/ },
+/* 214 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 26.1.9 Reflect.has(target, propertyKey)
+ var $export = __webpack_require__(7);
+
+ $export($export.S, 'Reflect', {
+ has: function has(target, propertyKey){
+ return propertyKey in target;
+ }
+ });
+
+/***/ },
+/* 215 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 26.1.10 Reflect.isExtensible(target)
+ var $export = __webpack_require__(7)
+ , anObject = __webpack_require__(10)
+ , $isExtensible = Object.isExtensible;
+
+ $export($export.S, 'Reflect', {
+ isExtensible: function isExtensible(target){
+ anObject(target);
+ return $isExtensible ? $isExtensible(target) : true;
+ }
+ });
+
+/***/ },
+/* 216 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 26.1.11 Reflect.ownKeys(target)
+ var $export = __webpack_require__(7);
+
+ $export($export.S, 'Reflect', {ownKeys: __webpack_require__(217)});
+
+/***/ },
+/* 217 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // all object keys, includes non-enumerable and symbols
+ var gOPN = __webpack_require__(45)
+ , gOPS = __webpack_require__(38)
+ , anObject = __webpack_require__(10)
+ , Reflect = __webpack_require__(2).Reflect;
+ module.exports = Reflect && Reflect.ownKeys || function ownKeys(it){
+ var keys = gOPN.f(anObject(it))
+ , getSymbols = gOPS.f;
+ return getSymbols ? keys.concat(getSymbols(it)) : keys;
+ };
+
+/***/ },
+/* 218 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 26.1.12 Reflect.preventExtensions(target)
+ var $export = __webpack_require__(7)
+ , anObject = __webpack_require__(10)
+ , $preventExtensions = Object.preventExtensions;
+
+ $export($export.S, 'Reflect', {
+ preventExtensions: function preventExtensions(target){
+ anObject(target);
+ try {
+ if($preventExtensions)$preventExtensions(target);
+ return true;
+ } catch(e){
+ return false;
+ }
+ }
+ });
+
+/***/ },
+/* 219 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 26.1.13 Reflect.set(target, propertyKey, V [, receiver])
+ var dP = __webpack_require__(9)
+ , gOPD = __webpack_require__(46)
+ , getPrototypeOf = __webpack_require__(55)
+ , has = __webpack_require__(4)
+ , $export = __webpack_require__(7)
+ , createDesc = __webpack_require__(15)
+ , anObject = __webpack_require__(10)
+ , isObject = __webpack_require__(11);
+
+ function set(target, propertyKey, V/*, receiver*/){
+ var receiver = arguments.length < 4 ? target : arguments[3]
+ , ownDesc = gOPD.f(anObject(target), propertyKey)
+ , existingDescriptor, proto;
+ if(!ownDesc){
+ if(isObject(proto = getPrototypeOf(target))){
+ return set(proto, propertyKey, V, receiver);
+ }
+ ownDesc = createDesc(0);
+ }
+ if(has(ownDesc, 'value')){
+ if(ownDesc.writable === false || !isObject(receiver))return false;
+ existingDescriptor = gOPD.f(receiver, propertyKey) || createDesc(0);
+ existingDescriptor.value = V;
+ dP.f(receiver, propertyKey, existingDescriptor);
+ return true;
+ }
+ return ownDesc.set === undefined ? false : (ownDesc.set.call(receiver, V), true);
+ }
+
+ $export($export.S, 'Reflect', {set: set});
+
+/***/ },
+/* 220 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 26.1.14 Reflect.setPrototypeOf(target, proto)
+ var $export = __webpack_require__(7)
+ , setProto = __webpack_require__(69);
+
+ if(setProto)$export($export.S, 'Reflect', {
+ setPrototypeOf: function setPrototypeOf(target, proto){
+ setProto.check(target, proto);
+ try {
+ setProto.set(target, proto);
+ return true;
+ } catch(e){
+ return false;
+ }
+ }
+ });
+
+/***/ },
+/* 221 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // 20.3.3.1 / 15.9.4.4 Date.now()
+ var $export = __webpack_require__(7);
+
+ $export($export.S, 'Date', {now: function(){ return new Date().getTime(); }});
+
+/***/ },
+/* 222 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var $export = __webpack_require__(7)
+ , toObject = __webpack_require__(54)
+ , toPrimitive = __webpack_require__(14);
+
+ $export($export.P + $export.F * __webpack_require__(6)(function(){
+ return new Date(NaN).toJSON() !== null || Date.prototype.toJSON.call({toISOString: function(){ return 1; }}) !== 1;
+ }), 'Date', {
+ toJSON: function toJSON(key){
+ var O = toObject(this)
+ , pv = toPrimitive(O);
+ return typeof pv == 'number' && !isFinite(pv) ? null : O.toISOString();
+ }
+ });
+
+/***/ },
+/* 223 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString()
+ var $export = __webpack_require__(7)
+ , fails = __webpack_require__(6)
+ , getTime = Date.prototype.getTime;
+
+ var lz = function(num){
+ return num > 9 ? num : '0' + num;
+ };
+
+ // PhantomJS / old WebKit has a broken implementations
+ $export($export.P + $export.F * (fails(function(){
+ return new Date(-5e13 - 1).toISOString() != '0385-07-25T07:06:39.999Z';
+ }) || !fails(function(){
+ new Date(NaN).toISOString();
+ })), 'Date', {
+ toISOString: function toISOString(){
+ if(!isFinite(getTime.call(this)))throw RangeError('Invalid time value');
+ var d = this
+ , y = d.getUTCFullYear()
+ , m = d.getUTCMilliseconds()
+ , s = y < 0 ? '-' : y > 9999 ? '+' : '';
+ return s + ('00000' + Math.abs(y)).slice(s ? -6 : -4) +
+ '-' + lz(d.getUTCMonth() + 1) + '-' + lz(d.getUTCDate()) +
+ 'T' + lz(d.getUTCHours()) + ':' + lz(d.getUTCMinutes()) +
+ ':' + lz(d.getUTCSeconds()) + '.' + (m > 99 ? m : '0' + lz(m)) + 'Z';
+ }
+ });
+
+/***/ },
+/* 224 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var DateProto = Date.prototype
+ , INVALID_DATE = 'Invalid Date'
+ , TO_STRING = 'toString'
+ , $toString = DateProto[TO_STRING]
+ , getTime = DateProto.getTime;
+ if(new Date(NaN) + '' != INVALID_DATE){
+ __webpack_require__(16)(DateProto, TO_STRING, function toString(){
+ var value = getTime.call(this);
+ return value === value ? $toString.call(this) : INVALID_DATE;
+ });
+ }
+
+/***/ },
+/* 225 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var TO_PRIMITIVE = __webpack_require__(23)('toPrimitive')
+ , proto = Date.prototype;
+
+ if(!(TO_PRIMITIVE in proto))__webpack_require__(8)(proto, TO_PRIMITIVE, __webpack_require__(226));
+
+/***/ },
+/* 226 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var anObject = __webpack_require__(10)
+ , toPrimitive = __webpack_require__(14)
+ , NUMBER = 'number';
+
+ module.exports = function(hint){
+ if(hint !== 'string' && hint !== NUMBER && hint !== 'default')throw TypeError('Incorrect hint');
+ return toPrimitive(anObject(this), hint != NUMBER);
+ };
+
+/***/ },
+/* 227 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var $export = __webpack_require__(7)
+ , $typed = __webpack_require__(228)
+ , buffer = __webpack_require__(229)
+ , anObject = __webpack_require__(10)
+ , toIndex = __webpack_require__(34)
+ , toLength = __webpack_require__(32)
+ , isObject = __webpack_require__(11)
+ , TYPED_ARRAY = __webpack_require__(23)('typed_array')
+ , ArrayBuffer = __webpack_require__(2).ArrayBuffer
+ , speciesConstructor = __webpack_require__(195)
+ , $ArrayBuffer = buffer.ArrayBuffer
+ , $DataView = buffer.DataView
+ , $isView = $typed.ABV && ArrayBuffer.isView
+ , $slice = $ArrayBuffer.prototype.slice
+ , VIEW = $typed.VIEW
+ , ARRAY_BUFFER = 'ArrayBuffer';
+
+ $export($export.G + $export.W + $export.F * (ArrayBuffer !== $ArrayBuffer), {ArrayBuffer: $ArrayBuffer});
+
+ $export($export.S + $export.F * !$typed.CONSTR, ARRAY_BUFFER, {
+ // 24.1.3.1 ArrayBuffer.isView(arg)
+ isView: function isView(it){
+ return $isView && $isView(it) || isObject(it) && VIEW in it;
+ }
+ });
+
+ $export($export.P + $export.U + $export.F * __webpack_require__(6)(function(){
+ return !new $ArrayBuffer(2).slice(1, undefined).byteLength;
+ }), ARRAY_BUFFER, {
+ // 24.1.4.3 ArrayBuffer.prototype.slice(start, end)
+ slice: function slice(start, end){
+ if($slice !== undefined && end === undefined)return $slice.call(anObject(this), start); // FF fix
+ var len = anObject(this).byteLength
+ , first = toIndex(start, len)
+ , final = toIndex(end === undefined ? len : end, len)
+ , result = new (speciesConstructor(this, $ArrayBuffer))(toLength(final - first))
+ , viewS = new $DataView(this)
+ , viewT = new $DataView(result)
+ , index = 0;
+ while(first < final){
+ viewT.setUint8(index++, viewS.getUint8(first++));
+ } return result;
+ }
+ });
+
+ __webpack_require__(183)(ARRAY_BUFFER);
+
+/***/ },
+/* 228 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var global = __webpack_require__(2)
+ , hide = __webpack_require__(8)
+ , uid = __webpack_require__(17)
+ , TYPED = uid('typed_array')
+ , VIEW = uid('view')
+ , ABV = !!(global.ArrayBuffer && global.DataView)
+ , CONSTR = ABV
+ , i = 0, l = 9, Typed;
+
+ var TypedArrayConstructors = (
+ 'Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array'
+ ).split(',');
+
+ while(i < l){
+ if(Typed = global[TypedArrayConstructors[i++]]){
+ hide(Typed.prototype, TYPED, true);
+ hide(Typed.prototype, VIEW, true);
+ } else CONSTR = false;
+ }
+
+ module.exports = {
+ ABV: ABV,
+ CONSTR: CONSTR,
+ TYPED: TYPED,
+ VIEW: VIEW
+ };
+
+/***/ },
+/* 229 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var global = __webpack_require__(2)
+ , DESCRIPTORS = __webpack_require__(5)
+ , LIBRARY = __webpack_require__(47)
+ , $typed = __webpack_require__(228)
+ , hide = __webpack_require__(8)
+ , redefineAll = __webpack_require__(198)
+ , fails = __webpack_require__(6)
+ , anInstance = __webpack_require__(82)
+ , toInteger = __webpack_require__(33)
+ , toLength = __webpack_require__(32)
+ , gOPN = __webpack_require__(45).f
+ , dP = __webpack_require__(9).f
+ , arrayFill = __webpack_require__(177)
+ , setToStringTag = __webpack_require__(22)
+ , ARRAY_BUFFER = 'ArrayBuffer'
+ , DATA_VIEW = 'DataView'
+ , PROTOTYPE = 'prototype'
+ , WRONG_LENGTH = 'Wrong length!'
+ , WRONG_INDEX = 'Wrong index!'
+ , $ArrayBuffer = global[ARRAY_BUFFER]
+ , $DataView = global[DATA_VIEW]
+ , Math = global.Math
+ , parseInt = global.parseInt
+ , RangeError = global.RangeError
+ , Infinity = global.Infinity
+ , BaseBuffer = $ArrayBuffer
+ , abs = Math.abs
+ , pow = Math.pow
+ , min = Math.min
+ , floor = Math.floor
+ , log = Math.log
+ , LN2 = Math.LN2
+ , BUFFER = 'buffer'
+ , BYTE_LENGTH = 'byteLength'
+ , BYTE_OFFSET = 'byteOffset'
+ , $BUFFER = DESCRIPTORS ? '_b' : BUFFER
+ , $LENGTH = DESCRIPTORS ? '_l' : BYTE_LENGTH
+ , $OFFSET = DESCRIPTORS ? '_o' : BYTE_OFFSET;
+
+ // IEEE754 conversions based on https://github.com/feross/ieee754
+ var packIEEE754 = function(value, mLen, nBytes){
+ var buffer = Array(nBytes)
+ , eLen = nBytes * 8 - mLen - 1
+ , eMax = (1 << eLen) - 1
+ , eBias = eMax >> 1
+ , rt = mLen === 23 ? pow(2, -24) - pow(2, -77) : 0
+ , i = 0
+ , s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0
+ , e, m, c;
+ value = abs(value)
+ if(value != value || value === Infinity){
+ m = value != value ? 1 : 0;
+ e = eMax;
+ } else {
+ e = floor(log(value) / LN2);
+ if(value * (c = pow(2, -e)) < 1){
+ e--;
+ c *= 2;
+ }
+ if(e + eBias >= 1){
+ value += rt / c;
+ } else {
+ value += rt * pow(2, 1 - eBias);
+ }
+ if(value * c >= 2){
+ e++;
+ c /= 2;
+ }
+ if(e + eBias >= eMax){
+ m = 0;
+ e = eMax;
+ } else if(e + eBias >= 1){
+ m = (value * c - 1) * pow(2, mLen);
+ e = e + eBias;
+ } else {
+ m = value * pow(2, eBias - 1) * pow(2, mLen);
+ e = 0;
+ }
+ }
+ for(; mLen >= 8; buffer[i++] = m & 255, m /= 256, mLen -= 8);
+ e = e << mLen | m;
+ eLen += mLen;
+ for(; eLen > 0; buffer[i++] = e & 255, e /= 256, eLen -= 8);
+ buffer[--i] |= s * 128;
+ return buffer;
+ };
+ var unpackIEEE754 = function(buffer, mLen, nBytes){
+ var eLen = nBytes * 8 - mLen - 1
+ , eMax = (1 << eLen) - 1
+ , eBias = eMax >> 1
+ , nBits = eLen - 7
+ , i = nBytes - 1
+ , s = buffer[i--]
+ , e = s & 127
+ , m;
+ s >>= 7;
+ for(; nBits > 0; e = e * 256 + buffer[i], i--, nBits -= 8);
+ m = e & (1 << -nBits) - 1;
+ e >>= -nBits;
+ nBits += mLen;
+ for(; nBits > 0; m = m * 256 + buffer[i], i--, nBits -= 8);
+ if(e === 0){
+ e = 1 - eBias;
+ } else if(e === eMax){
+ return m ? NaN : s ? -Infinity : Infinity;
+ } else {
+ m = m + pow(2, mLen);
+ e = e - eBias;
+ } return (s ? -1 : 1) * m * pow(2, e - mLen);
+ };
+
+ var unpackI32 = function(bytes){
+ return bytes[3] << 24 | bytes[2] << 16 | bytes[1] << 8 | bytes[0];
+ };
+ var packI8 = function(it){
+ return [it & 0xff];
+ };
+ var packI16 = function(it){
+ return [it & 0xff, it >> 8 & 0xff];
+ };
+ var packI32 = function(it){
+ return [it & 0xff, it >> 8 & 0xff, it >> 16 & 0xff, it >> 24 & 0xff];
+ };
+ var packF64 = function(it){
+ return packIEEE754(it, 52, 8);
+ };
+ var packF32 = function(it){
+ return packIEEE754(it, 23, 4);
+ };
+
+ var addGetter = function(C, key, internal){
+ dP(C[PROTOTYPE], key, {get: function(){ return this[internal]; }});
+ };
+
+ var get = function(view, bytes, index, isLittleEndian){
+ var numIndex = +index
+ , intIndex = toInteger(numIndex);
+ if(numIndex != intIndex || intIndex < 0 || intIndex + bytes > view[$LENGTH])throw RangeError(WRONG_INDEX);
+ var store = view[$BUFFER]._b
+ , start = intIndex + view[$OFFSET]
+ , pack = store.slice(start, start + bytes);
+ return isLittleEndian ? pack : pack.reverse();
+ };
+ var set = function(view, bytes, index, conversion, value, isLittleEndian){
+ var numIndex = +index
+ , intIndex = toInteger(numIndex);
+ if(numIndex != intIndex || intIndex < 0 || intIndex + bytes > view[$LENGTH])throw RangeError(WRONG_INDEX);
+ var store = view[$BUFFER]._b
+ , start = intIndex + view[$OFFSET]
+ , pack = conversion(+value);
+ for(var i = 0; i < bytes; i++)store[start + i] = pack[isLittleEndian ? i : bytes - i - 1];
+ };
+
+ var validateArrayBufferArguments = function(that, length){
+ anInstance(that, $ArrayBuffer, ARRAY_BUFFER);
+ var numberLength = +length
+ , byteLength = toLength(numberLength);
+ if(numberLength != byteLength)throw RangeError(WRONG_LENGTH);
+ return byteLength;
+ };
+
+ if(!$typed.ABV){
+ $ArrayBuffer = function ArrayBuffer(length){
+ var byteLength = validateArrayBufferArguments(this, length);
+ this._b = arrayFill.call(Array(byteLength), 0);
+ this[$LENGTH] = byteLength;
+ };
+
+ $DataView = function DataView(buffer, byteOffset, byteLength){
+ anInstance(this, $DataView, DATA_VIEW);
+ anInstance(buffer, $ArrayBuffer, DATA_VIEW);
+ var bufferLength = buffer[$LENGTH]
+ , offset = toInteger(byteOffset);
+ if(offset < 0 || offset > bufferLength)throw RangeError('Wrong offset!');
+ byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);
+ if(offset + byteLength > bufferLength)throw RangeError(WRONG_LENGTH);
+ this[$BUFFER] = buffer;
+ this[$OFFSET] = offset;
+ this[$LENGTH] = byteLength;
+ };
+
+ if(DESCRIPTORS){
+ addGetter($ArrayBuffer, BYTE_LENGTH, '_l');
+ addGetter($DataView, BUFFER, '_b');
+ addGetter($DataView, BYTE_LENGTH, '_l');
+ addGetter($DataView, BYTE_OFFSET, '_o');
+ }
+
+ redefineAll($DataView[PROTOTYPE], {
+ getInt8: function getInt8(byteOffset){
+ return get(this, 1, byteOffset)[0] << 24 >> 24;
+ },
+ getUint8: function getUint8(byteOffset){
+ return get(this, 1, byteOffset)[0];
+ },
+ getInt16: function getInt16(byteOffset /*, littleEndian */){
+ var bytes = get(this, 2, byteOffset, arguments[1]);
+ return (bytes[1] << 8 | bytes[0]) << 16 >> 16;
+ },
+ getUint16: function getUint16(byteOffset /*, littleEndian */){
+ var bytes = get(this, 2, byteOffset, arguments[1]);
+ return bytes[1] << 8 | bytes[0];
+ },
+ getInt32: function getInt32(byteOffset /*, littleEndian */){
+ return unpackI32(get(this, 4, byteOffset, arguments[1]));
+ },
+ getUint32: function getUint32(byteOffset /*, littleEndian */){
+ return unpackI32(get(this, 4, byteOffset, arguments[1])) >>> 0;
+ },
+ getFloat32: function getFloat32(byteOffset /*, littleEndian */){
+ return unpackIEEE754(get(this, 4, byteOffset, arguments[1]), 23, 4);
+ },
+ getFloat64: function getFloat64(byteOffset /*, littleEndian */){
+ return unpackIEEE754(get(this, 8, byteOffset, arguments[1]), 52, 8);
+ },
+ setInt8: function setInt8(byteOffset, value){
+ set(this, 1, byteOffset, packI8, value);
+ },
+ setUint8: function setUint8(byteOffset, value){
+ set(this, 1, byteOffset, packI8, value);
+ },
+ setInt16: function setInt16(byteOffset, value /*, littleEndian */){
+ set(this, 2, byteOffset, packI16, value, arguments[2]);
+ },
+ setUint16: function setUint16(byteOffset, value /*, littleEndian */){
+ set(this, 2, byteOffset, packI16, value, arguments[2]);
+ },
+ setInt32: function setInt32(byteOffset, value /*, littleEndian */){
+ set(this, 4, byteOffset, packI32, value, arguments[2]);
+ },
+ setUint32: function setUint32(byteOffset, value /*, littleEndian */){
+ set(this, 4, byteOffset, packI32, value, arguments[2]);
+ },
+ setFloat32: function setFloat32(byteOffset, value /*, littleEndian */){
+ set(this, 4, byteOffset, packF32, value, arguments[2]);
+ },
+ setFloat64: function setFloat64(byteOffset, value /*, littleEndian */){
+ set(this, 8, byteOffset, packF64, value, arguments[2]);
+ }
+ });
+ } else {
+ if(!fails(function(){
+ new $ArrayBuffer; // eslint-disable-line no-new
+ }) || !fails(function(){
+ new $ArrayBuffer(.5); // eslint-disable-line no-new
+ })){
+ $ArrayBuffer = function ArrayBuffer(length){
+ return new BaseBuffer(validateArrayBufferArguments(this, length));
+ };
+ var ArrayBufferProto = $ArrayBuffer[PROTOTYPE] = BaseBuffer[PROTOTYPE];
+ for(var keys = gOPN(BaseBuffer), j = 0, key; keys.length > j; ){
+ if(!((key = keys[j++]) in $ArrayBuffer))hide($ArrayBuffer, key, BaseBuffer[key]);
+ };
+ if(!LIBRARY)ArrayBufferProto.constructor = $ArrayBuffer;
+ }
+ // iOS Safari 7.x bug
+ var view = new $DataView(new $ArrayBuffer(2))
+ , $setInt8 = $DataView[PROTOTYPE].setInt8;
+ view.setInt8(0, 2147483648);
+ view.setInt8(1, 2147483649);
+ if(view.getInt8(0) || !view.getInt8(1))redefineAll($DataView[PROTOTYPE], {
+ setInt8: function setInt8(byteOffset, value){
+ $setInt8.call(this, byteOffset, value << 24 >> 24);
+ },
+ setUint8: function setUint8(byteOffset, value){
+ $setInt8.call(this, byteOffset, value << 24 >> 24);
+ }
+ }, true);
+ }
+ setToStringTag($ArrayBuffer, ARRAY_BUFFER);
+ setToStringTag($DataView, DATA_VIEW);
+ hide($DataView[PROTOTYPE], $typed.VIEW, true);
+ exports[ARRAY_BUFFER] = $ArrayBuffer;
+ exports[DATA_VIEW] = $DataView;
+
+/***/ },
+/* 230 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var $export = __webpack_require__(7);
+ $export($export.G + $export.W + $export.F * !__webpack_require__(228).ABV, {
+ DataView: __webpack_require__(229).DataView
+ });
+
+/***/ },
+/* 231 */
+/***/ function(module, exports, __webpack_require__) {
+
+ __webpack_require__(232)('Int8', 1, function(init){
+ return function Int8Array(data, byteOffset, length){
+ return init(this, data, byteOffset, length);
+ };
+ });
+
+/***/ },
+/* 232 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ if(__webpack_require__(5)){
+ var LIBRARY = __webpack_require__(47)
+ , global = __webpack_require__(2)
+ , fails = __webpack_require__(6)
+ , $export = __webpack_require__(7)
+ , $typed = __webpack_require__(228)
+ , $buffer = __webpack_require__(229)
+ , ctx = __webpack_require__(18)
+ , anInstance = __webpack_require__(82)
+ , propertyDesc = __webpack_require__(15)
+ , hide = __webpack_require__(8)
+ , redefineAll = __webpack_require__(198)
+ , isInteger = __webpack_require__(89)
+ , toInteger = __webpack_require__(33)
+ , toLength = __webpack_require__(32)
+ , toIndex = __webpack_require__(34)
+ , toPrimitive = __webpack_require__(14)
+ , has = __webpack_require__(4)
+ , same = __webpack_require__(67)
+ , classof = __webpack_require__(71)
+ , isObject = __webpack_require__(11)
+ , toObject = __webpack_require__(54)
+ , isArrayIter = __webpack_require__(153)
+ , create = __webpack_require__(41)
+ , getPrototypeOf = __webpack_require__(55)
+ , gOPN = __webpack_require__(45).f
+ , isIterable = __webpack_require__(233)
+ , getIterFn = __webpack_require__(154)
+ , uid = __webpack_require__(17)
+ , wks = __webpack_require__(23)
+ , createArrayMethod = __webpack_require__(162)
+ , createArrayIncludes = __webpack_require__(31)
+ , speciesConstructor = __webpack_require__(195)
+ , ArrayIterators = __webpack_require__(180)
+ , Iterators = __webpack_require__(134)
+ , $iterDetect = __webpack_require__(155)
+ , setSpecies = __webpack_require__(183)
+ , arrayFill = __webpack_require__(177)
+ , arrayCopyWithin = __webpack_require__(174)
+ , $DP = __webpack_require__(9)
+ , $GOPD = __webpack_require__(46)
+ , dP = $DP.f
+ , gOPD = $GOPD.f
+ , RangeError = global.RangeError
+ , TypeError = global.TypeError
+ , Uint8Array = global.Uint8Array
+ , ARRAY_BUFFER = 'ArrayBuffer'
+ , SHARED_BUFFER = 'Shared' + ARRAY_BUFFER
+ , BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT'
+ , PROTOTYPE = 'prototype'
+ , ArrayProto = Array[PROTOTYPE]
+ , $ArrayBuffer = $buffer.ArrayBuffer
+ , $DataView = $buffer.DataView
+ , arrayForEach = createArrayMethod(0)
+ , arrayFilter = createArrayMethod(2)
+ , arraySome = createArrayMethod(3)
+ , arrayEvery = createArrayMethod(4)
+ , arrayFind = createArrayMethod(5)
+ , arrayFindIndex = createArrayMethod(6)
+ , arrayIncludes = createArrayIncludes(true)
+ , arrayIndexOf = createArrayIncludes(false)
+ , arrayValues = ArrayIterators.values
+ , arrayKeys = ArrayIterators.keys
+ , arrayEntries = ArrayIterators.entries
+ , arrayLastIndexOf = ArrayProto.lastIndexOf
+ , arrayReduce = ArrayProto.reduce
+ , arrayReduceRight = ArrayProto.reduceRight
+ , arrayJoin = ArrayProto.join
+ , arraySort = ArrayProto.sort
+ , arraySlice = ArrayProto.slice
+ , arrayToString = ArrayProto.toString
+ , arrayToLocaleString = ArrayProto.toLocaleString
+ , ITERATOR = wks('iterator')
+ , TAG = wks('toStringTag')
+ , TYPED_CONSTRUCTOR = uid('typed_constructor')
+ , DEF_CONSTRUCTOR = uid('def_constructor')
+ , ALL_CONSTRUCTORS = $typed.CONSTR
+ , TYPED_ARRAY = $typed.TYPED
+ , VIEW = $typed.VIEW
+ , WRONG_LENGTH = 'Wrong length!';
+
+ var $map = createArrayMethod(1, function(O, length){
+ return allocate(speciesConstructor(O, O[DEF_CONSTRUCTOR]), length);
+ });
+
+ var LITTLE_ENDIAN = fails(function(){
+ return new Uint8Array(new Uint16Array([1]).buffer)[0] === 1;
+ });
+
+ var FORCED_SET = !!Uint8Array && !!Uint8Array[PROTOTYPE].set && fails(function(){
+ new Uint8Array(1).set({});
+ });
+
+ var strictToLength = function(it, SAME){
+ if(it === undefined)throw TypeError(WRONG_LENGTH);
+ var number = +it
+ , length = toLength(it);
+ if(SAME && !same(number, length))throw RangeError(WRONG_LENGTH);
+ return length;
+ };
+
+ var toOffset = function(it, BYTES){
+ var offset = toInteger(it);
+ if(offset < 0 || offset % BYTES)throw RangeError('Wrong offset!');
+ return offset;
+ };
+
+ var validate = function(it){
+ if(isObject(it) && TYPED_ARRAY in it)return it;
+ throw TypeError(it + ' is not a typed array!');
+ };
+
+ var allocate = function(C, length){
+ if(!(isObject(C) && TYPED_CONSTRUCTOR in C)){
+ throw TypeError('It is not a typed array constructor!');
+ } return new C(length);
+ };
+
+ var speciesFromList = function(O, list){
+ return fromList(speciesConstructor(O, O[DEF_CONSTRUCTOR]), list);
+ };
+
+ var fromList = function(C, list){
+ var index = 0
+ , length = list.length
+ , result = allocate(C, length);
+ while(length > index)result[index] = list[index++];
+ return result;
+ };
+
+ var addGetter = function(it, key, internal){
+ dP(it, key, {get: function(){ return this._d[internal]; }});
+ };
+
+ var $from = function from(source /*, mapfn, thisArg */){
+ var O = toObject(source)
+ , aLen = arguments.length
+ , mapfn = aLen > 1 ? arguments[1] : undefined
+ , mapping = mapfn !== undefined
+ , iterFn = getIterFn(O)
+ , i, length, values, result, step, iterator;
+ if(iterFn != undefined && !isArrayIter(iterFn)){
+ for(iterator = iterFn.call(O), values = [], i = 0; !(step = iterator.next()).done; i++){
+ values.push(step.value);
+ } O = values;
+ }
+ if(mapping && aLen > 2)mapfn = ctx(mapfn, arguments[2], 2);
+ for(i = 0, length = toLength(O.length), result = allocate(this, length); length > i; i++){
+ result[i] = mapping ? mapfn(O[i], i) : O[i];
+ }
+ return result;
+ };
+
+ var $of = function of(/*...items*/){
+ var index = 0
+ , length = arguments.length
+ , result = allocate(this, length);
+ while(length > index)result[index] = arguments[index++];
+ return result;
+ };
+
+ // iOS Safari 6.x fails here
+ var TO_LOCALE_BUG = !!Uint8Array && fails(function(){ arrayToLocaleString.call(new Uint8Array(1)); });
+
+ var $toLocaleString = function toLocaleString(){
+ return arrayToLocaleString.apply(TO_LOCALE_BUG ? arraySlice.call(validate(this)) : validate(this), arguments);
+ };
+
+ var proto = {
+ copyWithin: function copyWithin(target, start /*, end */){
+ return arrayCopyWithin.call(validate(this), target, start, arguments.length > 2 ? arguments[2] : undefined);
+ },
+ every: function every(callbackfn /*, thisArg */){
+ return arrayEvery(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+ },
+ fill: function fill(value /*, start, end */){ // eslint-disable-line no-unused-vars
+ return arrayFill.apply(validate(this), arguments);
+ },
+ filter: function filter(callbackfn /*, thisArg */){
+ return speciesFromList(this, arrayFilter(validate(this), callbackfn,
+ arguments.length > 1 ? arguments[1] : undefined));
+ },
+ find: function find(predicate /*, thisArg */){
+ return arrayFind(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);
+ },
+ findIndex: function findIndex(predicate /*, thisArg */){
+ return arrayFindIndex(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);
+ },
+ forEach: function forEach(callbackfn /*, thisArg */){
+ arrayForEach(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+ },
+ indexOf: function indexOf(searchElement /*, fromIndex */){
+ return arrayIndexOf(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);
+ },
+ includes: function includes(searchElement /*, fromIndex */){
+ return arrayIncludes(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);
+ },
+ join: function join(separator){ // eslint-disable-line no-unused-vars
+ return arrayJoin.apply(validate(this), arguments);
+ },
+ lastIndexOf: function lastIndexOf(searchElement /*, fromIndex */){ // eslint-disable-line no-unused-vars
+ return arrayLastIndexOf.apply(validate(this), arguments);
+ },
+ map: function map(mapfn /*, thisArg */){
+ return $map(validate(this), mapfn, arguments.length > 1 ? arguments[1] : undefined);
+ },
+ reduce: function reduce(callbackfn /*, initialValue */){ // eslint-disable-line no-unused-vars
+ return arrayReduce.apply(validate(this), arguments);
+ },
+ reduceRight: function reduceRight(callbackfn /*, initialValue */){ // eslint-disable-line no-unused-vars
+ return arrayReduceRight.apply(validate(this), arguments);
+ },
+ reverse: function reverse(){
+ var that = this
+ , length = validate(that).length
+ , middle = Math.floor(length / 2)
+ , index = 0
+ , value;
+ while(index < middle){
+ value = that[index];
+ that[index++] = that[--length];
+ that[length] = value;
+ } return that;
+ },
+ some: function some(callbackfn /*, thisArg */){
+ return arraySome(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+ },
+ sort: function sort(comparefn){
+ return arraySort.call(validate(this), comparefn);
+ },
+ subarray: function subarray(begin, end){
+ var O = validate(this)
+ , length = O.length
+ , $begin = toIndex(begin, length);
+ return new (speciesConstructor(O, O[DEF_CONSTRUCTOR]))(
+ O.buffer,
+ O.byteOffset + $begin * O.BYTES_PER_ELEMENT,
+ toLength((end === undefined ? length : toIndex(end, length)) - $begin)
+ );
+ }
+ };
+
+ var $slice = function slice(start, end){
+ return speciesFromList(this, arraySlice.call(validate(this), start, end));
+ };
+
+ var $set = function set(arrayLike /*, offset */){
+ validate(this);
+ var offset = toOffset(arguments[1], 1)
+ , length = this.length
+ , src = toObject(arrayLike)
+ , len = toLength(src.length)
+ , index = 0;
+ if(len + offset > length)throw RangeError(WRONG_LENGTH);
+ while(index < len)this[offset + index] = src[index++];
+ };
+
+ var $iterators = {
+ entries: function entries(){
+ return arrayEntries.call(validate(this));
+ },
+ keys: function keys(){
+ return arrayKeys.call(validate(this));
+ },
+ values: function values(){
+ return arrayValues.call(validate(this));
+ }
+ };
+
+ var isTAIndex = function(target, key){
+ return isObject(target)
+ && target[TYPED_ARRAY]
+ && typeof key != 'symbol'
+ && key in target
+ && String(+key) == String(key);
+ };
+ var $getDesc = function getOwnPropertyDescriptor(target, key){
+ return isTAIndex(target, key = toPrimitive(key, true))
+ ? propertyDesc(2, target[key])
+ : gOPD(target, key);
+ };
+ var $setDesc = function defineProperty(target, key, desc){
+ if(isTAIndex(target, key = toPrimitive(key, true))
+ && isObject(desc)
+ && has(desc, 'value')
+ && !has(desc, 'get')
+ && !has(desc, 'set')
+ // TODO: add validation descriptor w/o calling accessors
+ && !desc.configurable
+ && (!has(desc, 'writable') || desc.writable)
+ && (!has(desc, 'enumerable') || desc.enumerable)
+ ){
+ target[key] = desc.value;
+ return target;
+ } else return dP(target, key, desc);
+ };
+
+ if(!ALL_CONSTRUCTORS){
+ $GOPD.f = $getDesc;
+ $DP.f = $setDesc;
+ }
+
+ $export($export.S + $export.F * !ALL_CONSTRUCTORS, 'Object', {
+ getOwnPropertyDescriptor: $getDesc,
+ defineProperty: $setDesc
+ });
+
+ if(fails(function(){ arrayToString.call({}); })){
+ arrayToString = arrayToLocaleString = function toString(){
+ return arrayJoin.call(this);
+ }
+ }
+
+ var $TypedArrayPrototype$ = redefineAll({}, proto);
+ redefineAll($TypedArrayPrototype$, $iterators);
+ hide($TypedArrayPrototype$, ITERATOR, $iterators.values);
+ redefineAll($TypedArrayPrototype$, {
+ slice: $slice,
+ set: $set,
+ constructor: function(){ /* noop */ },
+ toString: arrayToString,
+ toLocaleString: $toLocaleString
+ });
+ addGetter($TypedArrayPrototype$, 'buffer', 'b');
+ addGetter($TypedArrayPrototype$, 'byteOffset', 'o');
+ addGetter($TypedArrayPrototype$, 'byteLength', 'l');
+ addGetter($TypedArrayPrototype$, 'length', 'e');
+ dP($TypedArrayPrototype$, TAG, {
+ get: function(){ return this[TYPED_ARRAY]; }
+ });
+
+ module.exports = function(KEY, BYTES, wrapper, CLAMPED){
+ CLAMPED = !!CLAMPED;
+ var NAME = KEY + (CLAMPED ? 'Clamped' : '') + 'Array'
+ , ISNT_UINT8 = NAME != 'Uint8Array'
+ , GETTER = 'get' + KEY
+ , SETTER = 'set' + KEY
+ , TypedArray = global[NAME]
+ , Base = TypedArray || {}
+ , TAC = TypedArray && getPrototypeOf(TypedArray)
+ , FORCED = !TypedArray || !$typed.ABV
+ , O = {}
+ , TypedArrayPrototype = TypedArray && TypedArray[PROTOTYPE];
+ var getter = function(that, index){
+ var data = that._d;
+ return data.v[GETTER](index * BYTES + data.o, LITTLE_ENDIAN);
+ };
+ var setter = function(that, index, value){
+ var data = that._d;
+ if(CLAMPED)value = (value = Math.round(value)) < 0 ? 0 : value > 0xff ? 0xff : value & 0xff;
+ data.v[SETTER](index * BYTES + data.o, value, LITTLE_ENDIAN);
+ };
+ var addElement = function(that, index){
+ dP(that, index, {
+ get: function(){
+ return getter(this, index);
+ },
+ set: function(value){
+ return setter(this, index, value);
+ },
+ enumerable: true
+ });
+ };
+ if(FORCED){
+ TypedArray = wrapper(function(that, data, $offset, $length){
+ anInstance(that, TypedArray, NAME, '_d');
+ var index = 0
+ , offset = 0
+ , buffer, byteLength, length, klass;
+ if(!isObject(data)){
+ length = strictToLength(data, true)
+ byteLength = length * BYTES;
+ buffer = new $ArrayBuffer(byteLength);
+ } else if(data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER){
+ buffer = data;
+ offset = toOffset($offset, BYTES);
+ var $len = data.byteLength;
+ if($length === undefined){
+ if($len % BYTES)throw RangeError(WRONG_LENGTH);
+ byteLength = $len - offset;
+ if(byteLength < 0)throw RangeError(WRONG_LENGTH);
+ } else {
+ byteLength = toLength($length) * BYTES;
+ if(byteLength + offset > $len)throw RangeError(WRONG_LENGTH);
+ }
+ length = byteLength / BYTES;
+ } else if(TYPED_ARRAY in data){
+ return fromList(TypedArray, data);
+ } else {
+ return $from.call(TypedArray, data);
+ }
+ hide(that, '_d', {
+ b: buffer,
+ o: offset,
+ l: byteLength,
+ e: length,
+ v: new $DataView(buffer)
+ });
+ while(index < length)addElement(that, index++);
+ });
+ TypedArrayPrototype = TypedArray[PROTOTYPE] = create($TypedArrayPrototype$);
+ hide(TypedArrayPrototype, 'constructor', TypedArray);
+ } else if(!$iterDetect(function(iter){
+ // V8 works with iterators, but fails in many other cases
+ // https://code.google.com/p/v8/issues/detail?id=4552
+ new TypedArray(null); // eslint-disable-line no-new
+ new TypedArray(iter); // eslint-disable-line no-new
+ }, true)){
+ TypedArray = wrapper(function(that, data, $offset, $length){
+ anInstance(that, TypedArray, NAME);
+ var klass;
+ // `ws` module bug, temporarily remove validation length for Uint8Array
+ // https://github.com/websockets/ws/pull/645
+ if(!isObject(data))return new Base(strictToLength(data, ISNT_UINT8));
+ if(data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER){
+ return $length !== undefined
+ ? new Base(data, toOffset($offset, BYTES), $length)
+ : $offset !== undefined
+ ? new Base(data, toOffset($offset, BYTES))
+ : new Base(data);
+ }
+ if(TYPED_ARRAY in data)return fromList(TypedArray, data);
+ return $from.call(TypedArray, data);
+ });
+ arrayForEach(TAC !== Function.prototype ? gOPN(Base).concat(gOPN(TAC)) : gOPN(Base), function(key){
+ if(!(key in TypedArray))hide(TypedArray, key, Base[key]);
+ });
+ TypedArray[PROTOTYPE] = TypedArrayPrototype;
+ if(!LIBRARY)TypedArrayPrototype.constructor = TypedArray;
+ }
+ var $nativeIterator = TypedArrayPrototype[ITERATOR]
+ , CORRECT_ITER_NAME = !!$nativeIterator && ($nativeIterator.name == 'values' || $nativeIterator.name == undefined)
+ , $iterator = $iterators.values;
+ hide(TypedArray, TYPED_CONSTRUCTOR, true);
+ hide(TypedArrayPrototype, TYPED_ARRAY, NAME);
+ hide(TypedArrayPrototype, VIEW, true);
+ hide(TypedArrayPrototype, DEF_CONSTRUCTOR, TypedArray);
+
+ if(CLAMPED ? new TypedArray(1)[TAG] != NAME : !(TAG in TypedArrayPrototype)){
+ dP(TypedArrayPrototype, TAG, {
+ get: function(){ return NAME; }
+ });
+ }
+
+ O[NAME] = TypedArray;
+
+ $export($export.G + $export.W + $export.F * (TypedArray != Base), O);
+
+ $export($export.S, NAME, {
+ BYTES_PER_ELEMENT: BYTES,
+ from: $from,
+ of: $of
+ });
+
+ if(!(BYTES_PER_ELEMENT in TypedArrayPrototype))hide(TypedArrayPrototype, BYTES_PER_ELEMENT, BYTES);
+
+ $export($export.P, NAME, proto);
+
+ setSpecies(NAME);
+
+ $export($export.P + $export.F * FORCED_SET, NAME, {set: $set});
+
+ $export($export.P + $export.F * !CORRECT_ITER_NAME, NAME, $iterators);
+
+ $export($export.P + $export.F * (TypedArrayPrototype.toString != arrayToString), NAME, {toString: arrayToString});
+
+ $export($export.P + $export.F * fails(function(){
+ new TypedArray(1).slice();
+ }), NAME, {slice: $slice});
+
+ $export($export.P + $export.F * (fails(function(){
+ return [1, 2].toLocaleString() != new TypedArray([1, 2]).toLocaleString()
+ }) || !fails(function(){
+ TypedArrayPrototype.toLocaleString.call([1, 2]);
+ })), NAME, {toLocaleString: $toLocaleString});
+
+ Iterators[NAME] = CORRECT_ITER_NAME ? $nativeIterator : $iterator;
+ if(!LIBRARY && !CORRECT_ITER_NAME)hide(TypedArrayPrototype, ITERATOR, $iterator);
+ };
+ } else module.exports = function(){ /* empty */ };
+
+/***/ },
+/* 233 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var classof = __webpack_require__(71)
+ , ITERATOR = __webpack_require__(23)('iterator')
+ , Iterators = __webpack_require__(134);
+ module.exports = __webpack_require__(3).isIterable = function(it){
+ var O = Object(it);
+ return O[ITERATOR] !== undefined
+ || '@@iterator' in O
+ || Iterators.hasOwnProperty(classof(O));
+ };
+
+/***/ },
+/* 234 */
+/***/ function(module, exports, __webpack_require__) {
+
+ __webpack_require__(232)('Uint8', 1, function(init){
+ return function Uint8Array(data, byteOffset, length){
+ return init(this, data, byteOffset, length);
+ };
+ });
+
+/***/ },
+/* 235 */
+/***/ function(module, exports, __webpack_require__) {
+
+ __webpack_require__(232)('Uint8', 1, function(init){
+ return function Uint8ClampedArray(data, byteOffset, length){
+ return init(this, data, byteOffset, length);
+ };
+ }, true);
+
+/***/ },
+/* 236 */
+/***/ function(module, exports, __webpack_require__) {
+
+ __webpack_require__(232)('Int16', 2, function(init){
+ return function Int16Array(data, byteOffset, length){
+ return init(this, data, byteOffset, length);
+ };
+ });
+
+/***/ },
+/* 237 */
+/***/ function(module, exports, __webpack_require__) {
+
+ __webpack_require__(232)('Uint16', 2, function(init){
+ return function Uint16Array(data, byteOffset, length){
+ return init(this, data, byteOffset, length);
+ };
+ });
+
+/***/ },
+/* 238 */
+/***/ function(module, exports, __webpack_require__) {
+
+ __webpack_require__(232)('Int32', 4, function(init){
+ return function Int32Array(data, byteOffset, length){
+ return init(this, data, byteOffset, length);
+ };
+ });
+
+/***/ },
+/* 239 */
+/***/ function(module, exports, __webpack_require__) {
+
+ __webpack_require__(232)('Uint32', 4, function(init){
+ return function Uint32Array(data, byteOffset, length){
+ return init(this, data, byteOffset, length);
+ };
+ });
+
+/***/ },
+/* 240 */
+/***/ function(module, exports, __webpack_require__) {
+
+ __webpack_require__(232)('Float32', 4, function(init){
+ return function Float32Array(data, byteOffset, length){
+ return init(this, data, byteOffset, length);
+ };
+ });
+
+/***/ },
+/* 241 */
+/***/ function(module, exports, __webpack_require__) {
+
+ __webpack_require__(232)('Float64', 8, function(init){
+ return function Float64Array(data, byteOffset, length){
+ return init(this, data, byteOffset, length);
+ };
+ });
+
+/***/ },
+/* 242 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // https://github.com/tc39/Array.prototype.includes
+ var $export = __webpack_require__(7)
+ , $includes = __webpack_require__(31)(true);
+
+ $export($export.P, 'Array', {
+ includes: function includes(el /*, fromIndex = 0 */){
+ return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);
+ }
+ });
+
+ __webpack_require__(175)('includes');
+
+/***/ },
+/* 243 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // https://github.com/mathiasbynens/String.prototype.at
+ var $export = __webpack_require__(7)
+ , $at = __webpack_require__(124)(true);
+
+ $export($export.P, 'String', {
+ at: function at(pos){
+ return $at(this, pos);
+ }
+ });
+
+/***/ },
+/* 244 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // https://github.com/tc39/proposal-string-pad-start-end
+ var $export = __webpack_require__(7)
+ , $pad = __webpack_require__(245);
+
+ $export($export.P, 'String', {
+ padStart: function padStart(maxLength /*, fillString = ' ' */){
+ return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, true);
+ }
+ });
+
+/***/ },
+/* 245 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // https://github.com/tc39/proposal-string-pad-start-end
+ var toLength = __webpack_require__(32)
+ , repeat = __webpack_require__(84)
+ , defined = __webpack_require__(30);
+
+ module.exports = function(that, maxLength, fillString, left){
+ var S = String(defined(that))
+ , stringLength = S.length
+ , fillStr = fillString === undefined ? ' ' : String(fillString)
+ , intMaxLength = toLength(maxLength);
+ if(intMaxLength <= stringLength)return S;
+ if(fillStr == '')fillStr = ' ';
+ var fillLen = intMaxLength - stringLength
+ , stringFiller = repeat.call(fillStr, Math.ceil(fillLen / fillStr.length));
+ if(stringFiller.length > fillLen)stringFiller = stringFiller.slice(0, fillLen);
+ return left ? stringFiller + S : S + stringFiller;
+ };
+
+
+/***/ },
+/* 246 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // https://github.com/tc39/proposal-string-pad-start-end
+ var $export = __webpack_require__(7)
+ , $pad = __webpack_require__(245);
+
+ $export($export.P, 'String', {
+ padEnd: function padEnd(maxLength /*, fillString = ' ' */){
+ return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, false);
+ }
+ });
+
+/***/ },
+/* 247 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // https://github.com/sebmarkbage/ecmascript-string-left-right-trim
+ __webpack_require__(79)('trimLeft', function($trim){
+ return function trimLeft(){
+ return $trim(this, 1);
+ };
+ }, 'trimStart');
+
+/***/ },
+/* 248 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // https://github.com/sebmarkbage/ecmascript-string-left-right-trim
+ __webpack_require__(79)('trimRight', function($trim){
+ return function trimRight(){
+ return $trim(this, 2);
+ };
+ }, 'trimEnd');
+
+/***/ },
+/* 249 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ // https://tc39.github.io/String.prototype.matchAll/
+ var $export = __webpack_require__(7)
+ , defined = __webpack_require__(30)
+ , toLength = __webpack_require__(32)
+ , isRegExp = __webpack_require__(127)
+ , getFlags = __webpack_require__(185)
+ , RegExpProto = RegExp.prototype;
+
+ var $RegExpStringIterator = function(regexp, string){
+ this._r = regexp;
+ this._s = string;
+ };
+
+ __webpack_require__(135)($RegExpStringIterator, 'RegExp String', function next(){
+ var match = this._r.exec(this._s);
+ return {value: match, done: match === null};
+ });
+
+ $export($export.P, 'String', {
+ matchAll: function matchAll(regexp){
+ defined(this);
+ if(!isRegExp(regexp))throw TypeError(regexp + ' is not a regexp!');
+ var S = String(this)
+ , flags = 'flags' in RegExpProto ? String(regexp.flags) : getFlags.call(regexp)
+ , rx = new RegExp(regexp.source, ~flags.indexOf('g') ? flags : 'g' + flags);
+ rx.lastIndex = toLength(regexp.lastIndex);
+ return new $RegExpStringIterator(rx, S);
+ }
+ });
+
+/***/ },
+/* 250 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // https://github.com/tc39/proposal-object-getownpropertydescriptors
+ var $export = __webpack_require__(7)
+ , ownKeys = __webpack_require__(217)
+ , toIObject = __webpack_require__(27)
+ , createDesc = __webpack_require__(15)
+ , gOPD = __webpack_require__(46)
+ , dP = __webpack_require__(9);
+
+ $export($export.S, 'Object', {
+ getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object){
+ var O = toIObject(object)
+ , getDesc = gOPD.f
+ , keys = ownKeys(O)
+ , result = {}
+ , i = 0
+ , key, D;
+ while(keys.length > i){
+ D = getDesc(O, key = keys[i++]);
+ if(key in result)dP.f(result, key, createDesc(0, D));
+ else result[key] = D;
+ } return result;
+ }
+ });
+
+/***/ },
+/* 251 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // https://github.com/tc39/proposal-object-values-entries
+ var $export = __webpack_require__(7)
+ , $values = __webpack_require__(252)(false);
+
+ $export($export.S, 'Object', {
+ values: function values(it){
+ return $values(it);
+ }
+ });
+
+/***/ },
+/* 252 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var getKeys = __webpack_require__(25)
+ , toIObject = __webpack_require__(27)
+ , isEnum = __webpack_require__(39).f;
+ module.exports = function(isEntries){
+ return function(it){
+ var O = toIObject(it)
+ , keys = getKeys(O)
+ , length = keys.length
+ , i = 0
+ , result = []
+ , key;
+ while(length > i)if(isEnum.call(O, key = keys[i++])){
+ result.push(isEntries ? [key, O[key]] : O[key]);
+ } return result;
+ };
+ };
+
+/***/ },
+/* 253 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // https://github.com/tc39/proposal-object-values-entries
+ var $export = __webpack_require__(7)
+ , $entries = __webpack_require__(252)(true);
+
+ $export($export.S, 'Object', {
+ entries: function entries(it){
+ return $entries(it);
+ }
+ });
+
+/***/ },
+/* 254 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var $export = __webpack_require__(7)
+ , toObject = __webpack_require__(54)
+ , aFunction = __webpack_require__(19)
+ , $defineProperty = __webpack_require__(9);
+
+ // B.2.2.2 Object.prototype.__defineGetter__(P, getter)
+ __webpack_require__(5) && $export($export.P + __webpack_require__(255), 'Object', {
+ __defineGetter__: function __defineGetter__(P, getter){
+ $defineProperty.f(toObject(this), P, {get: aFunction(getter), enumerable: true, configurable: true});
+ }
+ });
+
+/***/ },
+/* 255 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // Forced replacement prototype accessors methods
+ module.exports = __webpack_require__(47)|| !__webpack_require__(6)(function(){
+ var K = Math.random();
+ // In FF throws only define methods
+ __defineSetter__.call(null, K, function(){ /* empty */});
+ delete __webpack_require__(2)[K];
+ });
+
+/***/ },
+/* 256 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var $export = __webpack_require__(7)
+ , toObject = __webpack_require__(54)
+ , aFunction = __webpack_require__(19)
+ , $defineProperty = __webpack_require__(9);
+
+ // B.2.2.3 Object.prototype.__defineSetter__(P, setter)
+ __webpack_require__(5) && $export($export.P + __webpack_require__(255), 'Object', {
+ __defineSetter__: function __defineSetter__(P, setter){
+ $defineProperty.f(toObject(this), P, {set: aFunction(setter), enumerable: true, configurable: true});
+ }
+ });
+
+/***/ },
+/* 257 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var $export = __webpack_require__(7)
+ , toObject = __webpack_require__(54)
+ , toPrimitive = __webpack_require__(14)
+ , getPrototypeOf = __webpack_require__(55)
+ , getOwnPropertyDescriptor = __webpack_require__(46).f;
+
+ // B.2.2.4 Object.prototype.__lookupGetter__(P)
+ __webpack_require__(5) && $export($export.P + __webpack_require__(255), 'Object', {
+ __lookupGetter__: function __lookupGetter__(P){
+ var O = toObject(this)
+ , K = toPrimitive(P, true)
+ , D;
+ do {
+ if(D = getOwnPropertyDescriptor(O, K))return D.get;
+ } while(O = getPrototypeOf(O));
+ }
+ });
+
+/***/ },
+/* 258 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var $export = __webpack_require__(7)
+ , toObject = __webpack_require__(54)
+ , toPrimitive = __webpack_require__(14)
+ , getPrototypeOf = __webpack_require__(55)
+ , getOwnPropertyDescriptor = __webpack_require__(46).f;
+
+ // B.2.2.5 Object.prototype.__lookupSetter__(P)
+ __webpack_require__(5) && $export($export.P + __webpack_require__(255), 'Object', {
+ __lookupSetter__: function __lookupSetter__(P){
+ var O = toObject(this)
+ , K = toPrimitive(P, true)
+ , D;
+ do {
+ if(D = getOwnPropertyDescriptor(O, K))return D.set;
+ } while(O = getPrototypeOf(O));
+ }
+ });
+
+/***/ },
+/* 259 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // https://github.com/DavidBruant/Map-Set.prototype.toJSON
+ var $export = __webpack_require__(7);
+
+ $export($export.P + $export.R, 'Map', {toJSON: __webpack_require__(260)('Map')});
+
+/***/ },
+/* 260 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // https://github.com/DavidBruant/Map-Set.prototype.toJSON
+ var classof = __webpack_require__(71)
+ , from = __webpack_require__(261);
+ module.exports = function(NAME){
+ return function toJSON(){
+ if(classof(this) != NAME)throw TypeError(NAME + "#toJSON isn't generic");
+ return from(this);
+ };
+ };
+
+/***/ },
+/* 261 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var forOf = __webpack_require__(194);
+
+ module.exports = function(iter, ITERATOR){
+ var result = [];
+ forOf(iter, false, result.push, result, ITERATOR);
+ return result;
+ };
+
+
+/***/ },
+/* 262 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // https://github.com/DavidBruant/Map-Set.prototype.toJSON
+ var $export = __webpack_require__(7);
+
+ $export($export.P + $export.R, 'Set', {toJSON: __webpack_require__(260)('Set')});
+
+/***/ },
+/* 263 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // https://github.com/ljharb/proposal-global
+ var $export = __webpack_require__(7);
+
+ $export($export.S, 'System', {global: __webpack_require__(2)});
+
+/***/ },
+/* 264 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // https://github.com/ljharb/proposal-is-error
+ var $export = __webpack_require__(7)
+ , cof = __webpack_require__(29);
+
+ $export($export.S, 'Error', {
+ isError: function isError(it){
+ return cof(it) === 'Error';
+ }
+ });
+
+/***/ },
+/* 265 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // https://gist.github.com/BrendanEich/4294d5c212a6d2254703
+ var $export = __webpack_require__(7);
+
+ $export($export.S, 'Math', {
+ iaddh: function iaddh(x0, x1, y0, y1){
+ var $x0 = x0 >>> 0
+ , $x1 = x1 >>> 0
+ , $y0 = y0 >>> 0;
+ return $x1 + (y1 >>> 0) + (($x0 & $y0 | ($x0 | $y0) & ~($x0 + $y0 >>> 0)) >>> 31) | 0;
+ }
+ });
+
+/***/ },
+/* 266 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // https://gist.github.com/BrendanEich/4294d5c212a6d2254703
+ var $export = __webpack_require__(7);
+
+ $export($export.S, 'Math', {
+ isubh: function isubh(x0, x1, y0, y1){
+ var $x0 = x0 >>> 0
+ , $x1 = x1 >>> 0
+ , $y0 = y0 >>> 0;
+ return $x1 - (y1 >>> 0) - ((~$x0 & $y0 | ~($x0 ^ $y0) & $x0 - $y0 >>> 0) >>> 31) | 0;
+ }
+ });
+
+/***/ },
+/* 267 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // https://gist.github.com/BrendanEich/4294d5c212a6d2254703
+ var $export = __webpack_require__(7);
+
+ $export($export.S, 'Math', {
+ imulh: function imulh(u, v){
+ var UINT16 = 0xffff
+ , $u = +u
+ , $v = +v
+ , u0 = $u & UINT16
+ , v0 = $v & UINT16
+ , u1 = $u >> 16
+ , v1 = $v >> 16
+ , t = (u1 * v0 >>> 0) + (u0 * v0 >>> 16);
+ return u1 * v1 + (t >> 16) + ((u0 * v1 >>> 0) + (t & UINT16) >> 16);
+ }
+ });
+
+/***/ },
+/* 268 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // https://gist.github.com/BrendanEich/4294d5c212a6d2254703
+ var $export = __webpack_require__(7);
+
+ $export($export.S, 'Math', {
+ umulh: function umulh(u, v){
+ var UINT16 = 0xffff
+ , $u = +u
+ , $v = +v
+ , u0 = $u & UINT16
+ , v0 = $v & UINT16
+ , u1 = $u >>> 16
+ , v1 = $v >>> 16
+ , t = (u1 * v0 >>> 0) + (u0 * v0 >>> 16);
+ return u1 * v1 + (t >>> 16) + ((u0 * v1 >>> 0) + (t & UINT16) >>> 16);
+ }
+ });
+
+/***/ },
+/* 269 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var metadata = __webpack_require__(270)
+ , anObject = __webpack_require__(10)
+ , toMetaKey = metadata.key
+ , ordinaryDefineOwnMetadata = metadata.set;
+
+ metadata.exp({defineMetadata: function defineMetadata(metadataKey, metadataValue, target, targetKey){
+ ordinaryDefineOwnMetadata(metadataKey, metadataValue, anObject(target), toMetaKey(targetKey));
+ }});
+
+/***/ },
+/* 270 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var Map = __webpack_require__(199)
+ , $export = __webpack_require__(7)
+ , shared = __webpack_require__(21)('metadata')
+ , store = shared.store || (shared.store = new (__webpack_require__(203)));
+
+ var getOrCreateMetadataMap = function(target, targetKey, create){
+ var targetMetadata = store.get(target);
+ if(!targetMetadata){
+ if(!create)return undefined;
+ store.set(target, targetMetadata = new Map);
+ }
+ var keyMetadata = targetMetadata.get(targetKey);
+ if(!keyMetadata){
+ if(!create)return undefined;
+ targetMetadata.set(targetKey, keyMetadata = new Map);
+ } return keyMetadata;
+ };
+ var ordinaryHasOwnMetadata = function(MetadataKey, O, P){
+ var metadataMap = getOrCreateMetadataMap(O, P, false);
+ return metadataMap === undefined ? false : metadataMap.has(MetadataKey);
+ };
+ var ordinaryGetOwnMetadata = function(MetadataKey, O, P){
+ var metadataMap = getOrCreateMetadataMap(O, P, false);
+ return metadataMap === undefined ? undefined : metadataMap.get(MetadataKey);
+ };
+ var ordinaryDefineOwnMetadata = function(MetadataKey, MetadataValue, O, P){
+ getOrCreateMetadataMap(O, P, true).set(MetadataKey, MetadataValue);
+ };
+ var ordinaryOwnMetadataKeys = function(target, targetKey){
+ var metadataMap = getOrCreateMetadataMap(target, targetKey, false)
+ , keys = [];
+ if(metadataMap)metadataMap.forEach(function(_, key){ keys.push(key); });
+ return keys;
+ };
+ var toMetaKey = function(it){
+ return it === undefined || typeof it == 'symbol' ? it : String(it);
+ };
+ var exp = function(O){
+ $export($export.S, 'Reflect', O);
+ };
+
+ module.exports = {
+ store: store,
+ map: getOrCreateMetadataMap,
+ has: ordinaryHasOwnMetadata,
+ get: ordinaryGetOwnMetadata,
+ set: ordinaryDefineOwnMetadata,
+ keys: ordinaryOwnMetadataKeys,
+ key: toMetaKey,
+ exp: exp
+ };
+
+/***/ },
+/* 271 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var metadata = __webpack_require__(270)
+ , anObject = __webpack_require__(10)
+ , toMetaKey = metadata.key
+ , getOrCreateMetadataMap = metadata.map
+ , store = metadata.store;
+
+ metadata.exp({deleteMetadata: function deleteMetadata(metadataKey, target /*, targetKey */){
+ var targetKey = arguments.length < 3 ? undefined : toMetaKey(arguments[2])
+ , metadataMap = getOrCreateMetadataMap(anObject(target), targetKey, false);
+ if(metadataMap === undefined || !metadataMap['delete'](metadataKey))return false;
+ if(metadataMap.size)return true;
+ var targetMetadata = store.get(target);
+ targetMetadata['delete'](targetKey);
+ return !!targetMetadata.size || store['delete'](target);
+ }});
+
+/***/ },
+/* 272 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var metadata = __webpack_require__(270)
+ , anObject = __webpack_require__(10)
+ , getPrototypeOf = __webpack_require__(55)
+ , ordinaryHasOwnMetadata = metadata.has
+ , ordinaryGetOwnMetadata = metadata.get
+ , toMetaKey = metadata.key;
+
+ var ordinaryGetMetadata = function(MetadataKey, O, P){
+ var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P);
+ if(hasOwn)return ordinaryGetOwnMetadata(MetadataKey, O, P);
+ var parent = getPrototypeOf(O);
+ return parent !== null ? ordinaryGetMetadata(MetadataKey, parent, P) : undefined;
+ };
+
+ metadata.exp({getMetadata: function getMetadata(metadataKey, target /*, targetKey */){
+ return ordinaryGetMetadata(metadataKey, anObject(target), arguments.length < 3 ? undefined : toMetaKey(arguments[2]));
+ }});
+
+/***/ },
+/* 273 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var Set = __webpack_require__(202)
+ , from = __webpack_require__(261)
+ , metadata = __webpack_require__(270)
+ , anObject = __webpack_require__(10)
+ , getPrototypeOf = __webpack_require__(55)
+ , ordinaryOwnMetadataKeys = metadata.keys
+ , toMetaKey = metadata.key;
+
+ var ordinaryMetadataKeys = function(O, P){
+ var oKeys = ordinaryOwnMetadataKeys(O, P)
+ , parent = getPrototypeOf(O);
+ if(parent === null)return oKeys;
+ var pKeys = ordinaryMetadataKeys(parent, P);
+ return pKeys.length ? oKeys.length ? from(new Set(oKeys.concat(pKeys))) : pKeys : oKeys;
+ };
+
+ metadata.exp({getMetadataKeys: function getMetadataKeys(target /*, targetKey */){
+ return ordinaryMetadataKeys(anObject(target), arguments.length < 2 ? undefined : toMetaKey(arguments[1]));
+ }});
+
+/***/ },
+/* 274 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var metadata = __webpack_require__(270)
+ , anObject = __webpack_require__(10)
+ , ordinaryGetOwnMetadata = metadata.get
+ , toMetaKey = metadata.key;
+
+ metadata.exp({getOwnMetadata: function getOwnMetadata(metadataKey, target /*, targetKey */){
+ return ordinaryGetOwnMetadata(metadataKey, anObject(target)
+ , arguments.length < 3 ? undefined : toMetaKey(arguments[2]));
+ }});
+
+/***/ },
+/* 275 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var metadata = __webpack_require__(270)
+ , anObject = __webpack_require__(10)
+ , ordinaryOwnMetadataKeys = metadata.keys
+ , toMetaKey = metadata.key;
+
+ metadata.exp({getOwnMetadataKeys: function getOwnMetadataKeys(target /*, targetKey */){
+ return ordinaryOwnMetadataKeys(anObject(target), arguments.length < 2 ? undefined : toMetaKey(arguments[1]));
+ }});
+
+/***/ },
+/* 276 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var metadata = __webpack_require__(270)
+ , anObject = __webpack_require__(10)
+ , getPrototypeOf = __webpack_require__(55)
+ , ordinaryHasOwnMetadata = metadata.has
+ , toMetaKey = metadata.key;
+
+ var ordinaryHasMetadata = function(MetadataKey, O, P){
+ var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P);
+ if(hasOwn)return true;
+ var parent = getPrototypeOf(O);
+ return parent !== null ? ordinaryHasMetadata(MetadataKey, parent, P) : false;
+ };
+
+ metadata.exp({hasMetadata: function hasMetadata(metadataKey, target /*, targetKey */){
+ return ordinaryHasMetadata(metadataKey, anObject(target), arguments.length < 3 ? undefined : toMetaKey(arguments[2]));
+ }});
+
+/***/ },
+/* 277 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var metadata = __webpack_require__(270)
+ , anObject = __webpack_require__(10)
+ , ordinaryHasOwnMetadata = metadata.has
+ , toMetaKey = metadata.key;
+
+ metadata.exp({hasOwnMetadata: function hasOwnMetadata(metadataKey, target /*, targetKey */){
+ return ordinaryHasOwnMetadata(metadataKey, anObject(target)
+ , arguments.length < 3 ? undefined : toMetaKey(arguments[2]));
+ }});
+
+/***/ },
+/* 278 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var metadata = __webpack_require__(270)
+ , anObject = __webpack_require__(10)
+ , aFunction = __webpack_require__(19)
+ , toMetaKey = metadata.key
+ , ordinaryDefineOwnMetadata = metadata.set;
+
+ metadata.exp({metadata: function metadata(metadataKey, metadataValue){
+ return function decorator(target, targetKey){
+ ordinaryDefineOwnMetadata(
+ metadataKey, metadataValue,
+ (targetKey !== undefined ? anObject : aFunction)(target),
+ toMetaKey(targetKey)
+ );
+ };
+ }});
+
+/***/ },
+/* 279 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var $export = __webpack_require__(7)
+ , $task = __webpack_require__(196);
+ $export($export.G + $export.B, {
+ setImmediate: $task.set,
+ clearImmediate: $task.clear
+ });
+
+/***/ },
+/* 280 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var $iterators = __webpack_require__(180)
+ , redefine = __webpack_require__(16)
+ , global = __webpack_require__(2)
+ , hide = __webpack_require__(8)
+ , Iterators = __webpack_require__(134)
+ , wks = __webpack_require__(23)
+ , ITERATOR = wks('iterator')
+ , TO_STRING_TAG = wks('toStringTag')
+ , ArrayValues = Iterators.Array;
+
+ for(var collections = ['NodeList', 'DOMTokenList', 'MediaList', 'StyleSheetList', 'CSSRuleList'], i = 0; i < 5; i++){
+ var NAME = collections[i]
+ , Collection = global[NAME]
+ , proto = Collection && Collection.prototype
+ , key;
+ if(proto){
+ if(!proto[ITERATOR])hide(proto, ITERATOR, ArrayValues);
+ if(!proto[TO_STRING_TAG])hide(proto, TO_STRING_TAG, NAME);
+ Iterators[NAME] = ArrayValues;
+ for(key in $iterators)if(!proto[key])redefine(proto, key, $iterators[key], true);
+ }
+ }
+
+/***/ },
+/* 281 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // ie9- setTimeout & setInterval additional parameters fix
+ var global = __webpack_require__(2)
+ , $export = __webpack_require__(7)
+ , invoke = __webpack_require__(74)
+ , partial = __webpack_require__(282)
+ , navigator = global.navigator
+ , MSIE = !!navigator && /MSIE .\./.test(navigator.userAgent); // <- dirty ie9- check
+ var wrap = function(set){
+ return MSIE ? function(fn, time /*, ...args */){
+ return set(invoke(
+ partial,
+ [].slice.call(arguments, 2),
+ typeof fn == 'function' ? fn : Function(fn)
+ ), time);
+ } : set;
+ };
+ $export($export.G + $export.B + $export.F * MSIE, {
+ setTimeout: wrap(global.setTimeout),
+ setInterval: wrap(global.setInterval)
+ });
+
+/***/ },
+/* 282 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+ var path = __webpack_require__(283)
+ , invoke = __webpack_require__(74)
+ , aFunction = __webpack_require__(19);
+ module.exports = function(/* ...pargs */){
+ var fn = aFunction(this)
+ , length = arguments.length
+ , pargs = Array(length)
+ , i = 0
+ , _ = path._
+ , holder = false;
+ while(length > i)if((pargs[i] = arguments[i++]) === _)holder = true;
+ return function(/* ...args */){
+ var that = this
+ , aLen = arguments.length
+ , j = 0, k = 0, args;
+ if(!holder && !aLen)return invoke(fn, pargs, that);
+ args = pargs.slice();
+ if(holder)for(;length > j; j++)if(args[j] === _)args[j] = arguments[k++];
+ while(aLen > k)args.push(arguments[k++]);
+ return invoke(fn, args, that);
+ };
+ };
+
+/***/ },
+/* 283 */
+/***/ function(module, exports, __webpack_require__) {
+
+ module.exports = __webpack_require__(2);
+
+/***/ }
+/******/ ]);
+// CommonJS export
+if(typeof module != 'undefined' && module.exports)module.exports = __e;
+// RequireJS export
+else if(typeof define == 'function' && define.amd)define(function(){return __e});
+// Export to global object
+else __g.core = __e;
+}(1, 1);
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/client/shim.min.js b/node_modules/babel-register/node_modules/core-js/client/shim.min.js
new file mode 100644
index 0000000..8baa7a6
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/client/shim.min.js
@@ -0,0 +1,10 @@
+/**
+ * core-js 2.2.0
+ * https://github.com/zloirock/core-js
+ * License: http://rock.mit-license.org
+ * © 2016 Denis Pushkarev
+ */
+!function(b,c,a){"use strict";!function(b){function __webpack_require__(c){if(a[c])return a[c].exports;var d=a[c]={exports:{},id:c,loaded:!1};return b[c].call(d.exports,d,d.exports,__webpack_require__),d.loaded=!0,d.exports}var a={};return __webpack_require__.m=b,__webpack_require__.c=a,__webpack_require__.p="",__webpack_require__(0)}([function(b,c,a){a(1),a(48),a(49),a(50),a(52),a(53),a(56),a(57),a(58),a(59),a(60),a(61),a(62),a(63),a(64),a(66),a(68),a(70),a(72),a(75),a(76),a(77),a(81),a(85),a(86),a(87),a(88),a(90),a(91),a(92),a(93),a(94),a(96),a(98),a(99),a(100),a(102),a(103),a(104),a(106),a(107),a(108),a(110),a(111),a(112),a(113),a(114),a(115),a(116),a(117),a(118),a(119),a(120),a(121),a(122),a(123),a(125),a(129),a(130),a(131),a(132),a(136),a(138),a(139),a(140),a(141),a(142),a(143),a(144),a(145),a(146),a(147),a(148),a(149),a(150),a(151),a(156),a(157),a(159),a(160),a(161),a(164),a(165),a(166),a(167),a(168),a(170),a(171),a(172),a(173),a(176),a(178),a(179),a(180),a(182),a(184),a(186),a(187),a(188),a(190),a(191),a(192),a(193),a(199),a(202),a(203),a(205),a(206),a(207),a(208),a(209),a(210),a(211),a(212),a(213),a(214),a(215),a(216),a(218),a(219),a(220),a(221),a(222),a(223),a(224),a(225),a(227),a(230),a(231),a(234),a(235),a(236),a(237),a(238),a(239),a(240),a(241),a(242),a(243),a(244),a(246),a(247),a(248),a(249),a(250),a(251),a(253),a(254),a(256),a(257),a(258),a(259),a(262),a(263),a(264),a(265),a(266),a(267),a(268),a(269),a(271),a(272),a(273),a(274),a(275),a(276),a(277),a(278),a(279),a(280),b.exports=a(281)},function(fa,ea,b){var q=b(2),Y=b(3),e=b(4),t=b(5),f=b(7),U=b(16),da=b(20).KEY,J=b(6),M=b(21),x=b(22),ca=b(17),s=b(23),ba=b(24),$=b(37),Z=b(40),v=b(10),n=b(27),y=b(14),u=b(15),l=b(41),P=b(44),Q=b(46),R=b(9),T=Q.f,g=R.f,D=P.f,c=q.Symbol,o=q.JSON,p=o&&o.stringify,m=!1,h="prototype",d=s("_hidden"),K=s("toPrimitive"),aa={}.propertyIsEnumerable,r=M("symbol-registry"),i=M("symbols"),k=Object[h],j="function"==typeof c,z=q.QObject,A=t&&J(function(){return 7!=l(g({},"a",{get:function(){return g(this,"a",{value:7}).a}})).a})?function(c,a,d){var b=T(k,a);b&&delete k[a],g(c,a,d),b&&c!==k&&g(k,a,b)}:g,S=function(a){var b=i[a]=l(c[h]);return b._k=a,t&&m&&A(k,a,{configurable:!0,set:function(b){e(this,d)&&e(this[d],a)&&(this[d][a]=!1),A(this,a,u(1,b))}}),b},B=j&&"symbol"==typeof c.iterator?function(a){return"symbol"==typeof a}:function(a){return a instanceof c},C=function defineProperty(a,b,c){return v(a),b=y(b,!0),v(c),e(i,b)?(c.enumerable?(e(a,d)&&a[d][b]&&(a[d][b]=!1),c=l(c,{enumerable:u(0,!1)})):(e(a,d)||g(a,d,u(1,{})),a[d][b]=!0),A(a,b,c)):g(a,b,c)},V=function defineProperties(a,b){v(a);for(var c,d=$(b=n(b)),e=0,f=d.length;f>e;)C(a,c=d[e++],b[c]);return a},X=function create(b,c){return c===a?l(b):V(l(b),c)},L=function propertyIsEnumerable(a){var b=aa.call(this,a=y(a,!0));return b||!e(this,a)||!e(i,a)||e(this,d)&&this[d][a]?b:!0},E=function getOwnPropertyDescriptor(a,b){var c=T(a=n(a),b=y(b,!0));return!c||!e(i,b)||e(a,d)&&a[d][b]||(c.enumerable=!0),c},H=function getOwnPropertyNames(g){for(var a,b=D(n(g)),c=[],f=0;b.length>f;)e(i,a=b[f++])||a==d||a==da||c.push(a);return c},G=function getOwnPropertySymbols(f){for(var a,b=D(n(f)),c=[],d=0;b.length>d;)e(i,a=b[d++])&&c.push(i[a]);return c},_=function stringify(e){if(e!==a&&!B(e)){for(var b,c,d=[e],f=1;arguments.length>f;)d.push(arguments[f++]);return b=d[1],"function"==typeof b&&(c=b),!c&&Z(b)||(b=function(b,a){return c&&(a=c.call(this,b,a)),B(a)?void 0:a}),d[1]=b,p.apply(o,d)}},W=J(function(){var a=c();return"[null]"!=p([a])||"{}"!=p({a:a})||"{}"!=p(Object(a))});j||(c=function Symbol(){if(this instanceof c)throw TypeError("Symbol is not a constructor!");return S(ca(arguments.length>0?arguments[0]:a))},U(c[h],"toString",function toString(){return this._k}),Q.f=E,R.f=C,b(45).f=P.f=H,b(39).f=L,b(38).f=G,t&&!b(47)&&U(k,"propertyIsEnumerable",L,!0)),f(f.G+f.W+f.F*!j,{Symbol:c});for(var F="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),O=0;F.length>O;){var w=F[O++],I=Y.Symbol,N=s(w);w in I||g(I,w,{value:j?N:S(N)})}z&&z[h]&&z[h].findChild||(m=!0),f(f.S+f.F*!j,"Symbol",{"for":function(a){return e(r,a+="")?r[a]:r[a]=c(a)},keyFor:function keyFor(a){if(B(a))return ba(r,a);throw TypeError(a+" is not a symbol!")},useSetter:function(){m=!0},useSimple:function(){m=!1}}),f(f.S+f.F*!j,"Object",{create:X,defineProperty:C,defineProperties:V,getOwnPropertyDescriptor:E,getOwnPropertyNames:H,getOwnPropertySymbols:G}),o&&f(f.S+f.F*(!j||W),"JSON",{stringify:_}),c[h][K]||b(8)(c[h],K,c[h].valueOf),x(c,"Symbol"),x(Math,"Math",!0),x(q.JSON,"JSON",!0)},function(a,d){var b=a.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof c&&(c=b)},function(a,d){var c=a.exports={version:"2.2.0"};"number"==typeof b&&(b=c)},function(a,c){var b={}.hasOwnProperty;a.exports=function(a,c){return b.call(a,c)}},function(a,c,b){a.exports=!b(6)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(a,b){a.exports=function(a){try{return!!a()}catch(b){return!0}}},function(h,k,d){var c=d(2),e=d(3),i=d(8),j=d(16),g=d(18),f="prototype",b=function(k,l,o){var h,p,d,t,w=k&b.F,q=k&b.G,v=k&b.S,s=k&b.P,u=k&b.B,m=q?c:v?c[l]||(c[l]={}):(c[l]||{})[f],n=q?e:e[l]||(e[l]={}),r=n[f]||(n[f]={});q&&(o=l);for(h in o)p=!w&&m&&m[h]!==a,d=(p?m:o)[h],t=u&&p?g(d,c):s&&"function"==typeof d?g(Function.call,d):d,m&&j(m,h,d,k&b.U),n[h]!=d&&i(n,h,t),s&&r[h]!=d&&(r[h]=d)};c.core=e,b.F=1,b.G=2,b.S=4,b.P=8,b.B=16,b.W=32,b.U=64,b.R=128,h.exports=b},function(b,e,a){var c=a(9),d=a(15);b.exports=a(5)?function(a,b,e){return c.f(a,b,d(1,e))}:function(a,b,c){return a[b]=c,a}},function(g,c,a){var b=a(10),d=a(12),e=a(14),f=Object.defineProperty;c.f=a(5)?Object.defineProperty:function defineProperty(c,g,a){if(b(c),g=e(g,!0),b(a),d)try{return f(c,g,a)}catch(h){}if("get"in a||"set"in a)throw TypeError("Accessors not supported!");return"value"in a&&(c[g]=a.value),c}},function(a,d,b){var c=b(11);a.exports=function(a){if(!c(a))throw TypeError(a+" is not an object!");return a}},function(a,b){a.exports=function(a){return"object"==typeof a?null!==a:"function"==typeof a}},function(b,c,a){b.exports=!a(5)&&!a(6)(function(){return 7!=Object.defineProperty(a(13)("div"),"a",{get:function(){return 7}}).a})},function(d,f,b){var c=b(11),a=b(2).document,e=c(a)&&c(a.createElement);d.exports=function(b){return e?a.createElement(b):{}}},function(b,d,c){var a=c(11);b.exports=function(b,e){if(!a(b))return b;var c,d;if(e&&"function"==typeof(c=b.toString)&&!a(d=c.call(b)))return d;if("function"==typeof(c=b.valueOf)&&!a(d=c.call(b)))return d;if(!e&&"function"==typeof(c=b.toString)&&!a(d=c.call(b)))return d;throw TypeError("Can't convert object to primitive value")}},function(a,b){a.exports=function(a,b){return{enumerable:!(1&a),configurable:!(2&a),writable:!(4&a),value:b}}},function(g,j,a){var h=a(2),b=a(8),f=a(4),c=a(17)("src"),d="toString",e=Function[d],i=(""+e).split(d);a(3).inspectSource=function(a){return e.call(a)},(g.exports=function(d,a,e,j){var g="function"==typeof e;g&&(f(e,"name")||b(e,"name",a)),d[a]!==e&&(g&&(f(e,c)||b(e,c,d[a]?""+d[a]:i.join(String(a)))),d===h?d[a]=e:j?d[a]?d[a]=e:b(d,a,e):(delete d[a],b(d,a,e)))})(Function.prototype,d,function toString(){return"function"==typeof this&&this[c]||e.call(this)})},function(b,e){var c=0,d=Math.random();b.exports=function(b){return"Symbol(".concat(b===a?"":b,")_",(++c+d).toString(36))}},function(b,e,c){var d=c(19);b.exports=function(b,c,e){if(d(b),c===a)return b;switch(e){case 1:return function(a){return b.call(c,a)};case 2:return function(a,d){return b.call(c,a,d)};case 3:return function(a,d,e){return b.call(c,a,d,e)}}return function(){return b.apply(c,arguments)}}},function(a,b){a.exports=function(a){if("function"!=typeof a)throw TypeError(a+" is not a function!");return a}},function(k,o,b){var a=b(17)("meta"),i=b(11),d=b(4),g=b(9).f,f=0,c=Object.isExtensible||function(){return!0},j=!b(6)(function(){return c(Object.preventExtensions({}))}),e=function(b){g(b,a,{value:{i:"O"+ ++f,w:{}}})},l=function(b,f){if(!i(b))return"symbol"==typeof b?b:("string"==typeof b?"S":"P")+b;if(!d(b,a)){if(!c(b))return"F";if(!f)return"E";e(b)}return b[a].i},m=function(b,f){if(!d(b,a)){if(!c(b))return!0;if(!f)return!1;e(b)}return b[a].w},h=function(b){return j&&n.NEED&&c(b)&&!d(b,a)&&e(b),b},n=k.exports={KEY:a,NEED:!1,fastKey:l,getWeak:m,onFreeze:h}},function(d,f,e){var a=e(2),b="__core-js_shared__",c=a[b]||(a[b]={});d.exports=function(a){return c[a]||(c[a]={})}},function(c,f,a){var d=a(9).f,e=a(4),b=a(23)("toStringTag");c.exports=function(a,c,f){a&&!e(a=f?a:a.prototype,b)&&d(a,b,{configurable:!0,value:c})}},function(e,g,a){var c=a(21)("wks"),f=a(17),b=a(2).Symbol,d="function"==typeof b;e.exports=function(a){return c[a]||(c[a]=d&&b[a]||(d?b:f)("Symbol."+a))}},function(b,e,a){var c=a(25),d=a(27);b.exports=function(g,h){for(var a,b=d(g),e=c(b),i=e.length,f=0;i>f;)if(b[a=e[f++]]===h)return a}},function(b,e,a){var c=a(26),d=a(36);b.exports=Object.keys||function keys(a){return c(a,d)}},function(c,g,a){var b=a(4),d=a(27),e=a(31)(!1),f=a(35)("IE_PROTO");c.exports=function(j,h){var a,g=d(j),i=0,c=[];for(a in g)a!=f&&b(g,a)&&c.push(a);for(;h.length>i;)b(g,a=h[i++])&&(~e(c,a)||c.push(a));return c}},function(b,e,a){var c=a(28),d=a(30);b.exports=function(a){return c(d(a))}},function(a,d,b){var c=b(29);a.exports=Object("z").propertyIsEnumerable(0)?Object:function(a){return"String"==c(a)?a.split(""):Object(a)}},function(a,c){var b={}.toString;a.exports=function(a){return b.call(a).slice(8,-1)}},function(b,c){b.exports=function(b){if(b==a)throw TypeError("Can't call method on "+b);return b}},function(b,f,a){var c=a(27),d=a(32),e=a(34);b.exports=function(a){return function(j,g,k){var h,f=c(j),i=d(f.length),b=e(k,i);if(a&&g!=g){for(;i>b;)if(h=f[b++],h!=h)return!0}else for(;i>b;b++)if((a||b in f)&&f[b]===g)return a||b;return!a&&-1}}},function(a,e,b){var c=b(33),d=Math.min;a.exports=function(a){return a>0?d(c(a),9007199254740991):0}},function(a,d){var b=Math.ceil,c=Math.floor;a.exports=function(a){return isNaN(a=+a)?0:(a>0?c:b)(a)}},function(a,f,b){var c=b(33),d=Math.max,e=Math.min;a.exports=function(a,b){return a=c(a),0>a?d(a+b,0):e(a,b)}},function(c,e,a){var b=a(21)("keys"),d=a(17);c.exports=function(a){return b[a]||(b[a]=d(a))}},function(a,b){a.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(b,f,a){var c=a(25),d=a(38),e=a(39);b.exports=function(a){var b=c(a),f=d.f;if(f)for(var g,h=f(a),j=e.f,i=0;h.length>i;)j.call(a,g=h[i++])&&b.push(g);return b}},function(b,a){a.f=Object.getOwnPropertySymbols},function(b,a){a.f={}.propertyIsEnumerable},function(a,d,b){var c=b(29);a.exports=Array.isArray||function isArray(a){return"Array"==c(a)}},function(g,k,b){var h=b(10),i=b(42),f=b(36),j=b(35)("IE_PROTO"),d=function(){},e="prototype",c=function(){var a,d=b(13)("iframe"),g=f.length,h=">";for(d.style.display="none",b(43).appendChild(d),d.src="javascript:",a=d.contentWindow.document,a.open(),a.write("h;)c.f(a,f=g[h++],b[f]);return a}},function(a,c,b){a.exports=b(2).document&&document.documentElement},function(d,h,a){var e=a(27),b=a(45).f,f={}.toString,c="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],g=function(a){try{return b.f(a)}catch(d){return c.slice()}};d.exports.f=function getOwnPropertyNames(a){return c&&"[object Window]"==f.call(a)?g(a):b(e(a))}},function(e,b,a){var c=a(26),d=a(36).concat("length","prototype");b.f=Object.getOwnPropertyNames||function getOwnPropertyNames(a){return c(a,d)}},function(j,c,a){var d=a(39),e=a(15),f=a(27),g=a(14),h=a(4),i=a(12),b=Object.getOwnPropertyDescriptor;c.f=a(5)?b:function getOwnPropertyDescriptor(a,c){if(a=f(a),c=g(c,!0),i)try{return b(a,c)}catch(j){}return h(a,c)?e(!d.f.call(a,c),a[c]):void 0}},function(a,b){a.exports=!1},function(c,d,a){var b=a(7);b(b.S+b.F*!a(5),"Object",{defineProperty:a(9).f})},function(c,d,a){var b=a(7);b(b.S+b.F*!a(5),"Object",{defineProperties:a(42)})},function(d,e,a){var b=a(27),c=a(46).f;a(51)("getOwnPropertyDescriptor",function(){return function getOwnPropertyDescriptor(a,d){return c(b(a),d)}})},function(c,f,a){var b=a(7),d=a(3),e=a(6);c.exports=function(a,g){var c=(d.Object||{})[a]||Object[a],f={};f[a]=g(c),b(b.S+b.F*e(function(){c(1)}),"Object",f)}},function(c,d,a){var b=a(7);b(b.S,"Object",{create:a(41)})},function(d,e,a){var b=a(54),c=a(55);a(51)("getPrototypeOf",function(){return function getPrototypeOf(a){return c(b(a))}})},function(a,d,b){var c=b(30);a.exports=function(a){return Object(c(a))}},function(c,g,a){var d=a(4),e=a(54),b=a(35)("IE_PROTO"),f=Object.prototype;c.exports=Object.getPrototypeOf||function(a){return a=e(a),d(a,b)?a[b]:"function"==typeof a.constructor&&a instanceof a.constructor?a.constructor.prototype:a instanceof Object?f:null}},function(d,e,a){var b=a(54),c=a(25);a(51)("keys",function(){return function keys(a){return c(b(a))}})},function(b,c,a){a(51)("getOwnPropertyNames",function(){return a(44).f})},function(d,e,a){var b=a(11),c=a(20).onFreeze;a(51)("freeze",function(a){return function freeze(d){return a&&b(d)?a(c(d)):d}})},function(d,e,a){var b=a(11),c=a(20).onFreeze;a(51)("seal",function(a){return function seal(d){return a&&b(d)?a(c(d)):d}})},function(d,e,a){var b=a(11),c=a(20).onFreeze;a(51)("preventExtensions",function(a){return function preventExtensions(d){return a&&b(d)?a(c(d)):d}})},function(c,d,a){var b=a(11);a(51)("isFrozen",function(a){return function isFrozen(c){return b(c)?a?a(c):!1:!0}})},function(c,d,a){var b=a(11);a(51)("isSealed",function(a){return function isSealed(c){return b(c)?a?a(c):!1:!0}})},function(c,d,a){var b=a(11);a(51)("isExtensible",function(a){return function isExtensible(c){return b(c)?a?a(c):!0:!1}})},function(c,d,b){var a=b(7);a(a.S+a.F,"Object",{assign:b(65)})},function(d,i,a){var c=a(25),e=a(38),f=a(39),g=a(54),h=a(28),b=Object.assign;d.exports=!b||a(6)(function(){var a={},c={},d=Symbol(),e="abcdefghijklmnopqrst";return a[d]=7,e.split("").forEach(function(a){c[a]=a}),7!=b({},a)[d]||Object.keys(b({},c)).join("")!=e})?function assign(n,q){for(var i=g(n),o=arguments.length,k=1,d=e.f,m=f.f;o>k;)for(var b,a=h(arguments[k++]),l=d?c(a).concat(d(a)):c(a),p=l.length,j=0;p>j;)m.call(a,b=l[j++])&&(i[b]=a[b]);return i}:b},function(c,d,a){var b=a(7);b(b.S,"Object",{is:a(67)})},function(a,b){a.exports=Object.is||function is(a,b){return a===b?0!==a||1/a===1/b:a!=a&&b!=b}},function(c,d,a){var b=a(7);b(b.S,"Object",{setPrototypeOf:a(69).set})},function(d,g,b){var e=b(11),f=b(10),c=function(b,a){if(f(b),!e(a)&&null!==a)throw TypeError(a+": can't set as prototype!")};d.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(e,a,d){try{d=b(18)(Function.call,b(46).f(Object.prototype,"__proto__").set,2),d(e,[]),a=!(e instanceof Array)}catch(f){a=!0}return function setPrototypeOf(b,e){return c(b,e),a?b.__proto__=e:d(b,e),b}}({},!1):a),check:c}},function(d,e,a){var c=a(71),b={};b[a(23)("toStringTag")]="z",b+""!="[object z]"&&a(16)(Object.prototype,"toString",function toString(){return"[object "+c(this)+"]"},!0)},function(d,h,c){var b=c(29),e=c(23)("toStringTag"),f="Arguments"==b(function(){return arguments}()),g=function(a,b){try{return a[b]}catch(c){}};d.exports=function(d){var c,h,i;return d===a?"Undefined":null===d?"Null":"string"==typeof(h=g(c=Object(d),e))?h:f?b(c):"Object"==(i=b(c))&&"function"==typeof c.callee?"Arguments":i}},function(c,d,a){var b=a(7);b(b.P,"Function",{bind:a(73)})},function(d,i,a){var e=a(19),f=a(11),g=a(74),c=[].slice,b={},h=function(e,a,f){if(!(a in b)){for(var d=[],c=0;a>c;c++)d[c]="a["+c+"]";b[a]=Function("F,a","return new F("+d.join(",")+")")}return b[a](e,f)};d.exports=Function.bind||function bind(d){var a=e(this),i=c.call(arguments,1),b=function(){var e=i.concat(c.call(arguments));return this instanceof b?h(a,e.length,e):g(a,e,d)};return f(a.prototype)&&(b.prototype=a.prototype),b}},function(b,c){b.exports=function(c,b,d){var e=d===a;switch(b.length){case 0:return e?c():c.call(d);case 1:return e?c(b[0]):c.call(d,b[0]);case 2:return e?c(b[0],b[1]):c.call(d,b[0],b[1]);case 3:return e?c(b[0],b[1],b[2]):c.call(d,b[0],b[1],b[2]);case 4:return e?c(b[0],b[1],b[2],b[3]):c.call(d,b[0],b[1],b[2],b[3])}return c.apply(d,b)}},function(h,i,a){var c=a(9).f,e=a(15),f=a(4),d=Function.prototype,g=/^\s*function ([^ (]*)/,b="name";b in d||a(5)&&c(d,b,{configurable:!0,get:function(){var a=(""+this).match(g),d=a?a[1]:"";return f(this,b)||c(this,b,e(5,d)),d}})},function(f,g,a){var b=a(11),e=a(55),c=a(23)("hasInstance"),d=Function.prototype;c in d||a(9).f(d,c,{value:function(a){if("function"!=typeof this||!b(a))return!1;if(!b(this.prototype))return a instanceof this;for(;a=e(a);)if(this.prototype===a)return!0;return!1}})},function(w,v,b){var k=b(2),j=b(4),i=b(29),n=b(78),o=b(14),p=b(6),q=b(45).f,t=b(46).f,u=b(9).f,m=b(79).trim,c="Number",a=k[c],d=a,f=a.prototype,r=i(b(41)(f))==c,s="trim"in String.prototype,l=function(i){var a=o(i,!1);if("string"==typeof a&&a.length>2){a=s?a.trim():m(a,3);var b,c,d,e=a.charCodeAt(0);if(43===e||45===e){if(b=a.charCodeAt(2),88===b||120===b)return NaN}else if(48===e){switch(a.charCodeAt(1)){case 66:case 98:c=2,d=49;break;case 79:case 111:c=8,d=55;break;default:return+a}for(var f,g=a.slice(2),h=0,j=g.length;j>h;h++)if(f=g.charCodeAt(h),48>f||f>d)return NaN;return parseInt(g,c)}}return+a};if(!a(" 0o1")||!a("0b1")||a("+0x1")){a=function Number(g){var e=1>arguments.length?0:g,b=this;return b instanceof a&&(r?p(function(){f.valueOf.call(b)}):i(b)!=c)?n(new d(l(e)),b,a):l(e)};for(var e,h=b(5)?q(d):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","),g=0;h.length>g;g++)j(d,e=h[g])&&!j(a,e)&&u(a,e,t(d,e));a.prototype=f,f.constructor=a,b(16)(k,c,a)}},function(c,e,a){var d=a(11),b=a(69).set;c.exports=function(e,g,f){var a,c=g.constructor;return c!==f&&"function"==typeof c&&(a=c.prototype)!==f.prototype&&d(a)&&b&&b(e,a),e}},function(g,m,a){var d=a(7),h=a(30),i=a(6),c=a(80),b="["+c+"]",f="
",j=RegExp("^"+b+b+"*"),k=RegExp(b+b+"*$"),e=function(a,h,e){var b={},g=i(function(){return!!c[a]()||f[a]()!=f}),j=b[a]=g?h(l):c[a];e&&(b[e]=j),d(d.P+d.F*g,"String",b)},l=e.trim=function(a,b){return a=String(h(a)),1&b&&(a=a.replace(j,"")),2&b&&(a=a.replace(k,"")),a};g.exports=e},function(a,b){a.exports=" \n\x0B\f\r \u2028\u2029\ufeff"},function(q,p,c){var f=c(7),n=(c(82),c(33)),o=c(83),g=c(84),j=1..toFixed,i=Math.floor,a=[0,0,0,0,0,0],k="Number.toFixed: incorrect invocation!",e="0",d=function(d,e){for(var c=-1,b=e;++c<6;)b+=d*a[c],a[c]=b%1e7,b=i(b/1e7)},h=function(d){for(var c=6,b=0;--c>=0;)b+=a[c],a[c]=i(b/d),b=b%d*1e7},l=function(){for(var c=6,b="";--c>=0;)if(""!==b||0===c||0!==a[c]){var d=String(a[c]);b=""===b?d:b+g.call(e,7-d.length)+d}return b},b=function(a,c,d){return 0===c?d:c%2===1?b(a,c-1,d*a):b(a*a,c/2,d)},m=function(c){for(var b=0,a=c;a>=4096;)b+=12,a/=4096;for(;a>=2;)b+=1,a/=2;return b};f(f.P+f.F*(!!j&&("0.000"!==8e-5.toFixed(3)||"1"!==.9.toFixed(0)||"1.25"!==1.255.toFixed(2)||"1000000000000000128"!==0xde0b6b3a7640080.toFixed(0))||!c(6)(function(){j.call({})})),"Number",{toFixed:function toFixed(s){var f,q,j,p,a=o(this,k),i=n(s),r="",c=e;if(0>i||i>20)throw RangeError(k);if(a!=a)return"NaN";if(-1e21>=a||a>=1e21)return String(a);if(0>a&&(r="-",a=-a),a>1e-21)if(f=m(a*b(2,69,1))-69,q=0>f?a*b(2,-f,1):a/b(2,f,1),q*=4503599627370496,f=52-f,f>0){for(d(0,q),j=i;j>=7;)d(1e7,0),j-=7;for(d(b(10,j,1),0),j=f-1;j>=23;)h(1<<23),j-=23;h(1<0?(p=c.length,c=r+(i>=p?"0."+g.call(e,i-p)+c:c.slice(0,p-i)+"."+c.slice(p-i))):c=r+c,c}})},function(b,c){b.exports=function(b,d,e,c){if(!(b instanceof d)||c!==a&&c in b)throw TypeError(e+": incorrect invocation!");return b}},function(a,d,b){var c=b(29);a.exports=function(a,b){if("number"!=typeof a&&"Number"!=c(a))throw TypeError(b);return+a}},function(b,e,a){var c=a(33),d=a(30);b.exports=function repeat(f){var b=String(d(this)),e="",a=c(f);if(0>a||a==1/0)throw RangeError("Count can't be negative");for(;a>0;(a>>>=1)&&(b+=b))1&a&&(e+=b);return e}},function(g,h,c){var d=c(7),e=c(6),f=c(83),b=1..toPrecision;d(d.P+d.F*(e(function(){return"1"!==b.call(1,a)})||!e(function(){b.call({})})),"Number",{toPrecision:function toPrecision(c){var d=f(this,"Number#toPrecision: incorrect invocation!");return c===a?b.call(d):b.call(d,c)}})},function(c,d,b){var a=b(7);a(a.S,"Number",{EPSILON:Math.pow(2,-52)})},function(d,e,a){var b=a(7),c=a(2).isFinite;b(b.S,"Number",{isFinite:function isFinite(a){return"number"==typeof a&&c(a)}})},function(c,d,a){var b=a(7);b(b.S,"Number",{isInteger:a(89)})},function(a,e,b){var c=b(11),d=Math.floor;a.exports=function isInteger(a){return!c(a)&&isFinite(a)&&d(a)===a}},function(c,d,b){var a=b(7);a(a.S,"Number",{isNaN:function isNaN(a){return a!=a}})},function(e,f,a){var b=a(7),c=a(89),d=Math.abs;b(b.S,"Number",{isSafeInteger:function isSafeInteger(a){return c(a)&&d(a)<=9007199254740991}})},function(c,d,b){var a=b(7);a(a.S,"Number",{MAX_SAFE_INTEGER:9007199254740991})},function(c,d,b){var a=b(7);a(a.S,"Number",{MIN_SAFE_INTEGER:-9007199254740991})},function(d,e,b){var a=b(7),c=b(95);a(a.S+a.F*(Number.parseFloat!=c),"Number",{parseFloat:c})},function(c,e,a){var b=a(2).parseFloat,d=a(79).trim;c.exports=1/b(a(80)+"-0")!==-(1/0)?function parseFloat(e){var a=d(String(e),3),c=b(a);return 0===c&&"-"==a.charAt(0)?-0:c}:b},function(d,e,b){var a=b(7),c=b(97);a(a.S+a.F*(Number.parseInt!=c),"Number",{parseInt:c})},function(d,g,b){var a=b(2).parseInt,e=b(79).trim,c=b(80),f=/^[\-+]?0[xX]/;d.exports=8!==a(c+"08")||22!==a(c+"0x16")?function parseInt(c,d){var b=e(String(c),3);return a(b,d>>>0||(f.test(b)?16:10))}:a},function(d,e,b){var a=b(7),c=b(97);a(a.G+a.F*(parseInt!=c),{parseInt:c})},function(d,e,b){var a=b(7),c=b(95);a(a.G+a.F*(parseFloat!=c),{parseFloat:c})},function(f,g,b){var a=b(7),e=b(101),c=Math.sqrt,d=Math.acosh;a(a.S+a.F*!(d&&710==Math.floor(d(Number.MAX_VALUE))),"Math",{acosh:function acosh(a){return(a=+a)<1?NaN:a>94906265.62425156?Math.log(a)+Math.LN2:e(a-1+c(a-1)*c(a+1))}})},function(a,b){a.exports=Math.log1p||function log1p(a){return(a=+a)>-1e-8&&1e-8>a?a-a*a/2:Math.log(1+a)}},function(c,d,b){function asinh(a){return isFinite(a=+a)&&0!=a?0>a?-asinh(-a):Math.log(a+Math.sqrt(a*a+1)):a}var a=b(7);a(a.S,"Math",{asinh:asinh})},function(c,d,b){var a=b(7);a(a.S,"Math",{atanh:function atanh(a){return 0==(a=+a)?a:Math.log((1+a)/(1-a))/2}})},function(d,e,a){var b=a(7),c=a(105);b(b.S,"Math",{cbrt:function cbrt(a){return c(a=+a)*Math.pow(Math.abs(a),1/3)}})},function(a,b){a.exports=Math.sign||function sign(a){return 0==(a=+a)||a!=a?a:0>a?-1:1}},function(c,d,b){var a=b(7);a(a.S,"Math",{clz32:function clz32(a){return(a>>>=0)?31-Math.floor(Math.log(a+.5)*Math.LOG2E):32}})},function(d,e,c){var a=c(7),b=Math.exp;a(a.S,"Math",{cosh:function cosh(a){return(b(a=+a)+b(-a))/2}})},function(c,d,a){var b=a(7);b(b.S,"Math",{expm1:a(109)})},function(a,b){a.exports=Math.expm1||function expm1(a){return 0==(a=+a)?a:a>-1e-6&&1e-6>a?a+a*a/2:Math.exp(a)-1}},function(k,j,e){var f=e(7),g=e(105),a=Math.pow,d=a(2,-52),b=a(2,-23),i=a(2,127)*(2-b),c=a(2,-126),h=function(a){return a+1/d-1/d};f(f.S,"Math",{fround:function fround(k){var f,a,e=Math.abs(k),j=g(k);return c>e?j*h(e/c/b)*c*b:(f=(1+b/d)*e,a=f-(f-e),a>i||a!=a?j*(1/0):j*a)}})},function(d,e,b){var a=b(7),c=Math.abs;a(a.S,"Math",{hypot:function hypot(h,i){for(var a,b,e=0,f=0,g=arguments.length,d=0;g>f;)a=c(arguments[f++]),a>d?(b=d/a,e=e*b*b+1,d=a):a>0?(b=a/d,e+=b*b):e+=a;return d===1/0?1/0:d*Math.sqrt(e)}})},function(d,e,b){var a=b(7),c=Math.imul;a(a.S+a.F*b(6)(function(){return-5!=c(4294967295,5)||2!=c.length}),"Math",{imul:function imul(f,g){var a=65535,b=+f,c=+g,d=a&b,e=a&c;return 0|d*e+((a&b>>>16)*e+d*(a&c>>>16)<<16>>>0)}})},function(c,d,b){var a=b(7);a(a.S,"Math",{log10:function log10(a){return Math.log(a)/Math.LN10}})},function(c,d,a){var b=a(7);b(b.S,"Math",{log1p:a(101)})},function(c,d,b){var a=b(7);a(a.S,"Math",{log2:function log2(a){return Math.log(a)/Math.LN2}})},function(c,d,a){var b=a(7);b(b.S,"Math",{sign:a(105)})},function(e,f,a){var b=a(7),c=a(109),d=Math.exp;b(b.S+b.F*a(6)(function(){return-2e-17!=!Math.sinh(-2e-17)}),"Math",{sinh:function sinh(a){return Math.abs(a=+a)<1?(c(a)-c(-a))/2:(d(a-1)-d(-a-1))*(Math.E/2)}})},function(e,f,a){var b=a(7),c=a(109),d=Math.exp;b(b.S,"Math",{tanh:function tanh(a){var b=c(a=+a),e=c(-a);return b==1/0?1:e==1/0?-1:(b-e)/(d(a)+d(-a))}})},function(c,d,b){var a=b(7);a(a.S,"Math",{trunc:function trunc(a){return(a>0?Math.floor:Math.ceil)(a)}})},function(f,g,b){var a=b(7),e=b(34),c=String.fromCharCode,d=String.fromCodePoint;a(a.S+a.F*(!!d&&1!=d.length),"String",{fromCodePoint:function fromCodePoint(g){for(var a,b=[],f=arguments.length,d=0;f>d;){if(a=+arguments[d++],e(a,1114111)!==a)throw RangeError(a+" is not a valid code point");b.push(65536>a?c(a):c(((a-=65536)>>10)+55296,a%1024+56320))}return b.join("")}})},function(e,f,a){var b=a(7),c=a(27),d=a(32);b(b.S,"String",{raw:function raw(f){for(var e=c(f.raw),g=d(e.length),h=arguments.length,b=[],a=0;g>a;)b.push(String(e[a++])),h>a&&b.push(String(arguments[a]));return b.join("")}})},function(b,c,a){a(79)("trim",function(a){return function trim(){return a(this,3)}})},function(d,e,a){var b=a(7),c=a(124)(!1);b(b.P,"String",{codePointAt:function codePointAt(a){return c(this,a)}})},function(c,f,b){var d=b(33),e=b(30);c.exports=function(b){return function(j,k){var f,h,g=String(e(j)),c=d(k),i=g.length;return 0>c||c>=i?b?"":a:(f=g.charCodeAt(c),55296>f||f>56319||c+1===i||(h=g.charCodeAt(c+1))<56320||h>57343?b?g.charAt(c):f:b?g.slice(c,c+2):(f-55296<<10)+(h-56320)+65536)}}},function(h,i,b){var c=b(7),e=b(32),g=b(126),d="endsWith",f=""[d];c(c.P+c.F*b(128)(d),"String",{endsWith:function endsWith(i){var b=g(this,i,d),j=arguments.length>1?arguments[1]:a,k=e(b.length),c=j===a?k:Math.min(e(j),k),h=String(i);return f?f.call(b,h,c):b.slice(c-h.length,c)===h}})},function(b,e,a){var c=a(127),d=a(30);b.exports=function(a,b,e){if(c(b))throw TypeError("String#"+e+" doesn't accept regex!");return String(d(a))}},function(c,g,b){var d=b(11),e=b(29),f=b(23)("match");c.exports=function(b){var c;return d(b)&&((c=b[f])!==a?!!c:"RegExp"==e(b))}},function(a,d,b){var c=b(23)("match");a.exports=function(b){var a=/./;try{"/./"[b](a)}catch(d){try{return a[c]=!1,!"/./"[b](a)}catch(e){}}return!0}},function(f,g,b){var c=b(7),e=b(126),d="includes";c(c.P+c.F*b(128)(d),"String",{includes:function includes(b){return!!~e(this,b,d).indexOf(b,arguments.length>1?arguments[1]:a)}})},function(c,d,a){var b=a(7);b(b.P,"String",{repeat:a(84)})},function(h,i,b){var c=b(7),f=b(32),g=b(126),d="startsWith",e=""[d];c(c.P+c.F*b(128)(d),"String",{startsWith:function startsWith(i){var b=g(this,i,d),c=f(Math.min(arguments.length>1?arguments[1]:a,b.length)),h=String(i);return e?e.call(b,h,c):b.slice(c,c+h.length)===h}})},function(d,e,b){var c=b(124)(!0);b(133)(String,"String",function(a){this._t=String(a),this._i=0},function(){var b,d=this._t,e=this._i;return e>=d.length?{value:a,done:!0}:(b=c(d,e),this._i+=b.length,{value:b,done:!1})})},function(q,s,b){var h=b(47),e=b(7),o=b(16),i=b(8),n=b(4),j=b(134),r=b(135),l=b(22),m=b(55),c=b(23)("iterator"),f=!([].keys&&"next"in[].keys()),p="@@iterator",k="keys",d="values",g=function(){return this};q.exports=function(C,w,x,H,s,G,D){r(x,w,H);var v,z,u,y=function(a){if(!f&&a in b)return b[a];switch(a){case k:return function keys(){return new x(this,a)};case d:return function values(){return new x(this,a)}}return function entries(){return new x(this,a)}},E=w+" Iterator",A=s==d,B=!1,b=C.prototype,t=b[c]||b[p]||s&&b[s],q=t||y(s),I=s?A?y("entries"):q:a,F="Array"==w?b.entries||t:t;if(F&&(u=m(F.call(new C)),u!==Object.prototype&&(l(u,E,!0),h||n(u,c)||i(u,c,g))),A&&t&&t.name!==d&&(B=!0,q=function values(){return t.call(this)}),h&&!D||!f&&!B&&b[c]||i(b,c,q),j[w]=q,j[E]=g,s)if(v={values:A?q:y(d),keys:G?q:y(k),entries:I},D)for(z in v)z in b||o(b,z,v[z]);else e(e.P+e.F*(f||B),w,v);return v}},function(a,b){a.exports={}},function(c,g,a){var d=a(41),e=a(15),f=a(22),b={};a(8)(b,a(23)("iterator"),function(){return this}),c.exports=function(a,c,g){a.prototype=d(b,{next:e(1,g)}),f(a,c+" Iterator")}},function(b,c,a){a(137)("anchor",function(a){return function anchor(b){return a(this,"a","name",b)}})},function(c,h,a){var b=a(7),d=a(6),e=a(30),f=/"/g,g=function(d,a,b,g){var h=String(e(d)),c="<"+a;return""!==b&&(c+=" "+b+'="'+String(g).replace(f,""")+'"'),c+">"+h+""+a+">"};c.exports=function(a,e){var c={};c[a]=e(g),b(b.P+b.F*d(function(){var b=""[a]('"');return b!==b.toLowerCase()||b.split('"').length>3}),"String",c)}},function(b,c,a){a(137)("big",function(a){return function big(){return a(this,"big","","")}})},function(b,c,a){a(137)("blink",function(a){return function blink(){return a(this,"blink","","")}})},function(b,c,a){a(137)("bold",function(a){return function bold(){return a(this,"b","","")}})},function(b,c,a){a(137)("fixed",function(a){return function fixed(){return a(this,"tt","","")}})},function(b,c,a){a(137)("fontcolor",function(a){return function fontcolor(b){return a(this,"font","color",b)}})},function(b,c,a){a(137)("fontsize",function(a){return function fontsize(b){return a(this,"font","size",b)}})},function(b,c,a){a(137)("italics",function(a){return function italics(){return a(this,"i","","")}})},function(b,c,a){a(137)("link",function(a){return function link(b){return a(this,"a","href",b)}})},function(b,c,a){a(137)("small",function(a){return function small(){return a(this,"small","","")}})},function(b,c,a){a(137)("strike",function(a){return function strike(){return a(this,"strike","","")}})},function(b,c,a){a(137)("sub",function(a){return function sub(){return a(this,"sub","","")}})},function(b,c,a){a(137)("sup",function(a){return function sup(){return a(this,"sup","","")}})},function(c,d,a){var b=a(7);b(b.S,"Array",{isArray:a(40)})},function(j,k,b){var d=b(18),c=b(7),e=b(54),f=b(152),g=b(153),h=b(32),i=b(154);c(c.S+c.F*!b(155)(function(a){Array.from(a)}),"Array",{from:function from(s){var n,c,l,m,j=e(s),o="function"==typeof this?this:Array,r=arguments.length,k=r>1?arguments[1]:a,p=k!==a,b=0,q=i(j);if(p&&(k=d(k,r>2?arguments[2]:a,2)),q==a||o==Array&&g(q))for(n=h(j.length),c=new o(n);n>b;b++)c[b]=p?k(j[b],b):j[b];else for(m=q.call(j),c=new o;!(l=m.next()).done;b++)c[b]=p?f(m,k,[l.value,b],!0):l.value;return c.length=b,c}})},function(c,e,d){var b=d(10);c.exports=function(d,e,c,g){try{return g?e(b(c)[0],c[1]):e(c)}catch(h){var f=d["return"];throw f!==a&&b(f.call(d)),h}}},function(c,g,b){var d=b(134),e=b(23)("iterator"),f=Array.prototype;c.exports=function(b){return b!==a&&(d.Array===b||f[e]===b)}},function(c,g,b){var d=b(71),e=b(23)("iterator"),f=b(134);c.exports=b(3).getIteratorMethod=function(b){return b!=a?b[e]||b["@@iterator"]||f[d(b)]:void 0}},function(d,f,e){var a=e(23)("iterator"),b=!1;try{var c=[7][a]();c["return"]=function(){b=!0},Array.from(c,function(){throw 2})}catch(g){}d.exports=function(f,g){if(!g&&!b)return!1;var d=!1;try{var c=[7],e=c[a]();e.next=function(){d=!0},c[a]=function(){return e},f(c)}catch(h){}return d}},function(c,d,b){var a=b(7);a(a.S+a.F*b(6)(function(){function F(){}return!(Array.of.call(F)instanceof F)}),"Array",{of:function of(){for(var a=0,b=arguments.length,c=new("function"==typeof this?this:Array)(b);b>a;)c[a]=arguments[a++];return c.length=b,c}})},function(f,g,b){var c=b(7),e=b(27),d=[].join;c(c.P+c.F*(b(28)!=Object||!b(158)(d)),"Array",{join:function join(b){return d.call(e(this),b===a?",":b);
+}})},function(a,d,b){var c=b(6);a.exports=function(a,b){return!!a&&c(function(){b?a.call(null,function(){},1):a.call(null)})}},function(i,j,b){var c=b(7),d=b(43),h=b(29),e=b(34),f=b(32),g=[].slice;c(c.P+c.F*b(6)(function(){d&&g.call(d)}),"Array",{slice:function slice(j,b){var d=f(this.length),k=h(this);if(b=b===a?d:b,"Array"==k)return g.call(this,j,b);for(var i=e(j,d),n=e(b,d),l=f(n-i),m=Array(l),c=0;l>c;c++)m[c]="String"==k?this.charAt(i+c):this[i+c];return m}})},function(i,j,b){var c=b(7),h=b(19),e=b(54),f=b(6),d=[].sort,g=[1,2,3];c(c.P+c.F*(f(function(){g.sort(a)})||!f(function(){g.sort(null)})||!b(158)(d)),"Array",{sort:function sort(b){return b===a?d.call(e(this)):d.call(e(this),h(b))}})},function(e,f,a){var b=a(7),c=a(162)(0),d=a(158)([].forEach,!0);b(b.P+b.F*!d,"Array",{forEach:function forEach(a){return c(this,a,arguments[1])}})},function(c,i,b){var d=b(18),e=b(28),f=b(54),g=b(32),h=b(163);c.exports=function(b,l){var i=1==b,m=2==b,n=3==b,c=4==b,j=6==b,o=5==b||j,k=l||h;return function(p,v,x){for(var l,r,u=f(p),s=e(u),w=d(v,x,3),t=g(s.length),h=0,q=i?k(p,t):m?k(p,0):a;t>h;h++)if((o||h in s)&&(l=s[h],r=w(l,h,u),b))if(i)q[h]=r;else if(r)switch(b){case 3:return!0;case 5:return l;case 6:return h;case 2:q.push(l)}else if(c)return!1;return j?-1:n||c?c:q}}},function(d,g,b){var e=b(11),c=b(40),f=b(23)("species");d.exports=function(d,g){var b;return c(d)&&(b=d.constructor,"function"!=typeof b||b!==Array&&!c(b.prototype)||(b=a),e(b)&&(b=b[f],null===b&&(b=a))),new(b===a?Array:b)(g)}},function(d,e,a){var b=a(7),c=a(162)(1);b(b.P+b.F*!a(158)([].map,!0),"Array",{map:function map(a){return c(this,a,arguments[1])}})},function(d,e,a){var b=a(7),c=a(162)(2);b(b.P+b.F*!a(158)([].filter,!0),"Array",{filter:function filter(a){return c(this,a,arguments[1])}})},function(d,e,a){var b=a(7),c=a(162)(3);b(b.P+b.F*!a(158)([].some,!0),"Array",{some:function some(a){return c(this,a,arguments[1])}})},function(d,e,a){var b=a(7),c=a(162)(4);b(b.P+b.F*!a(158)([].every,!0),"Array",{every:function every(a){return c(this,a,arguments[1])}})},function(d,e,a){var b=a(7),c=a(169);b(b.P+b.F*!a(158)([].reduce,!0),"Array",{reduce:function reduce(a){return c(this,a,arguments.length,arguments[1],!1)}})},function(b,g,a){var c=a(19),d=a(54),e=a(28),f=a(32);b.exports=function(m,l,n,b,g){c(l);var i=d(m),h=e(i),j=f(i.length),a=g?j-1:0,k=g?-1:1;if(2>n)for(;;){if(a in h){b=h[a],a+=k;break}if(a+=k,g?0>a:a>=j)throw TypeError("Reduce of empty array with no initial value")}for(;g?a>=0:j>a;a+=k)a in h&&(b=l(b,h[a],a,i));return b}},function(d,e,a){var b=a(7),c=a(169);b(b.P+b.F*!a(158)([].reduceRight,!0),"Array",{reduceRight:function reduceRight(a){return c(this,a,arguments.length,arguments[1],!0)}})},function(d,e,a){var b=a(7),c=a(31)(!1);b(b.P+b.F*!a(158)([].indexOf),"Array",{indexOf:function indexOf(a){return c(this,a,arguments[1])}})},function(f,g,a){var b=a(7),c=a(27),d=a(33),e=a(32);b(b.P+b.F*!a(158)([].lastIndexOf),"Array",{lastIndexOf:function lastIndexOf(g){var b=c(this),f=e(b.length),a=f-1;for(arguments.length>1&&(a=Math.min(a,d(arguments[1]))),0>a&&(a=f+a);a>=0;a--)if(a in b&&b[a]===g)return a;return-1}})},function(c,d,a){var b=a(7);b(b.P,"Array",{copyWithin:a(174)}),a(175)("copyWithin")},function(d,g,b){var e=b(54),c=b(34),f=b(32);d.exports=[].copyWithin||function copyWithin(l,m){var g=e(this),h=f(g.length),b=c(l,h),d=c(m,h),k=arguments.length>2?arguments[2]:a,i=Math.min((k===a?h:c(k,h))-d,h-b),j=1;for(b>d&&d+i>b&&(j=-1,d+=i-1,b+=i-1);i-- >0;)d in g?g[b]=g[d]:delete g[b],b+=j,d+=j;return g}},function(e,f,d){var b=d(23)("unscopables"),c=Array.prototype;c[b]==a&&d(8)(c,b,{}),e.exports=function(a){c[b][a]=!0}},function(c,d,a){var b=a(7);b(b.P,"Array",{fill:a(177)}),a(175)("fill")},function(d,g,b){var e=b(54),c=b(34),f=b(32);d.exports=function fill(j){for(var b=e(this),d=f(b.length),g=arguments.length,h=c(g>1?arguments[1]:a,d),i=g>2?arguments[2]:a,k=i===a?d:c(i,d);k>h;)b[h++]=j;return b}},function(g,h,b){var c=b(7),f=b(162)(5),d="find",e=!0;d in[]&&Array(1)[d](function(){e=!1}),c(c.P+c.F*e,"Array",{find:function find(b){return f(this,b,arguments.length>1?arguments[1]:a)}}),b(175)(d)},function(g,h,b){var c=b(7),f=b(162)(6),d="findIndex",e=!0;d in[]&&Array(1)[d](function(){e=!1}),c(c.P+c.F*e,"Array",{findIndex:function findIndex(b){return f(this,b,arguments.length>1?arguments[1]:a)}}),b(175)(d)},function(f,h,b){var d=b(175),c=b(181),e=b(134),g=b(27);f.exports=b(133)(Array,"Array",function(a,b){this._t=g(a),this._i=0,this._k=b},function(){var d=this._t,e=this._k,b=this._i++;return!d||b>=d.length?(this._t=a,c(1)):"keys"==e?c(0,b):"values"==e?c(0,d[b]):c(0,[b,d[b]])},"values"),e.Arguments=e.Array,d("keys"),d("values"),d("entries")},function(a,b){a.exports=function(a,b){return{value:b,done:!!a}}},function(b,c,a){a(183)("Array")},function(c,g,a){var d=a(2),e=a(9),f=a(5),b=a(23)("species");c.exports=function(c){var a=d[c];f&&a&&!a[b]&&e.f(a,b,{configurable:!0,get:function(){return this}})}},function(s,r,c){var i=c(2),q=c(78),o=c(9).f,n=c(45).f,m=c(127),l=c(185),b=i.RegExp,e=b,g=b.prototype,d=/a/g,f=/a/g,k=new b(d)!==d;if(c(5)&&(!k||c(6)(function(){return f[c(23)("match")]=!1,b(d)!=d||b(f)==f||"/a/i"!=b(d,"i")}))){b=function RegExp(c,f){var i=this instanceof b,d=m(c),h=f===a;return!i&&d&&c.constructor===b&&h?c:q(k?new e(d&&!h?c.source:c,f):e((d=c instanceof b)?c.source:c,d&&h?l.call(c):f),i?this:g,b)};for(var p=(function(a){a in b||o(b,a,{configurable:!0,get:function(){return e[a]},set:function(b){e[a]=b}})}),j=n(e),h=0;j.length>h;)p(j[h++]);g.constructor=b,b.prototype=g,c(16)(i,"RegExp",b)}c(183)("RegExp")},function(a,d,b){var c=b(10);a.exports=function(){var b=c(this),a="";return b.global&&(a+="g"),b.ignoreCase&&(a+="i"),b.multiline&&(a+="m"),b.unicode&&(a+="u"),b.sticky&&(a+="y"),a}},function(i,j,b){b(187);var f=b(10),g=b(185),h=b(5),c="toString",d=/./[c],e=function(a){b(16)(RegExp.prototype,c,a,!0)};b(6)(function(){return"/a/b"!=d.call({source:"a",flags:"b"})})?e(function toString(){var b=f(this);return"/".concat(b.source,"/","flags"in b?b.flags:!h&&b instanceof RegExp?g.call(b):a)}):d.name!=c&&e(function toString(){return d.call(this)})},function(b,c,a){a(5)&&"g"!=/./g.flags&&a(9).f(RegExp.prototype,"flags",{configurable:!0,get:a(185)})},function(c,d,b){b(189)("match",1,function(c,b,d){return[function match(d){var e=c(this),f=d==a?a:d[b];return f!==a?f.call(d,e):new RegExp(d)[b](String(e))},d]})},function(b,h,a){var c=a(8),d=a(16),e=a(6),f=a(30),g=a(23);b.exports=function(a,j,k){var b=g(a),h=k(f,b,""[a]),l=h[0],i=h[1];e(function(){var c={};return c[b]=function(){return 7},7!=""[a](c)})&&(d(String.prototype,a,l),c(RegExp.prototype,b,2==j?function(a,b){return i.call(a,this,b)}:function(a){return i.call(a,this)}))}},function(c,d,b){b(189)("replace",2,function(c,d,b){return[function replace(e,f){var g=c(this),h=e==a?a:e[d];return h!==a?h.call(e,g,f):b.call(String(g),e,f)},b]})},function(c,d,b){b(189)("search",1,function(c,b,d){return[function search(d){var e=c(this),f=d==a?a:d[b];return f!==a?f.call(d,e):new RegExp(d)[b](String(e))},d]})},function(c,d,b){b(189)("split",2,function(i,j,e){var k=b(127),f=e,l=[].push,d="split",c="length",g="lastIndex";if("c"=="abbc"[d](/(b)*/)[1]||4!="test"[d](/(?:)/,-1)[c]||2!="ab"[d](/(?:ab)*/)[c]||4!="."[d](/(.?)(.?)/)[c]||"."[d](/()()/)[c]>1||""[d](/.?/)[c]){var h=/()??/.exec("")[1]===a;e=function(d,o){var i=String(this);if(d===a&&0===o)return[];if(!k(d))return f.call(i,d,o);var s,b,p,t,n,e=[],r=(d.ignoreCase?"i":"")+(d.multiline?"m":"")+(d.unicode?"u":"")+(d.sticky?"y":""),m=0,q=o===a?4294967295:o>>>0,j=new RegExp(d.source,r+"g");for(h||(s=new RegExp("^"+j.source+"$(?!\\s)",r));(b=j.exec(i))&&(p=b.index+b[0][c],!(p>m&&(e.push(i.slice(m,b.index)),!h&&b[c]>1&&b[0].replace(s,function(){for(n=1;arguments[c]-2>n;n++)arguments[n]===a&&(b[n]=a)}),b[c]>1&&i[c]>b.index&&l.apply(e,b.slice(1)),t=b[0][c],m=p,e[c]>=q)));)j[g]===b.index&&j[g]++;return m===i[c]?!t&&j.test("")||e.push(""):e.push(i.slice(m)),e[c]>q?e.slice(0,q):e}}else"0"[d](a,0)[c]&&(e=function(b,c){return b===a&&0===c?[]:f.call(this,b,c)});return[function split(b,c){var d=i(this),f=b==a?a:b[j];return f!==a?f.call(b,d,c):e.call(String(d),b,c)},e]})},function(K,J,b){var m,v,w,E=b(47),e=b(2),g=b(18),D=b(71),c=b(7),I=b(11),s=(b(10),b(19)),C=b(82),x=b(194),G=(b(69).set,b(195)),B=b(196).set,u=b(197),f="Promise",t=e.TypeError,n=e.process,d=e[f],n=e.process,k="process"==D(n),l=function(){},j=!!function(){try{var a=d.resolve(1),c=(a.constructor={})[b(23)("species")]=function(a){a(l,l)};return(k||"function"==typeof PromiseRejectionEvent)&&a.then(l)instanceof c}catch(e){}}(),z=function(a,b){return a===b||a===d&&b===w},A=function(a){var b;return I(a)&&"function"==typeof(b=a.then)?b:!1},i=function(a){return z(d,a)?new y(a):new v(a)},y=v=function(d){var b,c;this.promise=new d(function(d,e){if(b!==a||c!==a)throw t("Bad Promise constructor");b=d,c=e}),this.resolve=s(b),this.reject=s(c)},p=function(a){try{a()}catch(b){return{error:b}}},q=function(a,c){if(!a._n){a._n=!0;var b=a._c;u(function(){for(var d=a._v,e=1==a._s,f=0,g=function(b){var c,i,h=e?b.ok:b.fail,j=b.resolve,f=b.reject,g=b.domain;try{h?(e||(2==a._h&&H(a),a._h=1),h===!0?c=d:(g&&g.enter(),c=h(d),g&&g.exit()),c===b.promise?f(t("Promise-chain cycle")):(i=A(c))?i.call(c,j,f):j(c)):f(d)}catch(k){f(k)}};b.length>f;)g(b[f++]);a._c=[],a._n=!1,c&&!a._h&&F(a)})}},F=function(b){B.call(e,function(){var c,g,d,f=b._v;if(o(b)&&(c=p(function(){k?n.emit("unhandledRejection",f,b):(g=e.onunhandledrejection)?g({promise:b,reason:f}):(d=e.console)&&d.error&&d.error("Unhandled promise rejection",f)}),b._h=k||o(b)?2:1),b._a=a,c)throw c.error})},o=function(a){if(1==a._h)return!1;for(var b,c=a._a||a._c,d=0;c.length>d;)if(b=c[d++],b.fail||!o(b.promise))return!1;return!0},H=function(a){B.call(e,function(){var b;k?n.emit("rejectionHandled",a):(b=e.onrejectionhandled)&&b({promise:a,reason:a._v})})},h=function(b){var a=this;a._d||(a._d=!0,a=a._w||a,a._v=b,a._s=2,a._a||(a._a=a._c.slice()),q(a,!0))},r=function(b){var c,a=this;if(!a._d){a._d=!0,a=a._w||a;try{if(a===b)throw t("Promise can't be resolved itself");(c=A(b))?u(function(){var d={_w:a,_d:!1};try{c.call(b,g(r,d,1),g(h,d,1))}catch(e){h.call(d,e)}}):(a._v=b,a._s=1,q(a,!1))}catch(d){h.call({_w:a,_d:!1},d)}}};j||(d=function Promise(a){C(this,d,f,"_h"),s(a),m.call(this);try{a(g(r,this,1),g(h,this,1))}catch(b){h.call(this,b)}},m=function Promise(b){this._c=[],this._a=a,this._s=0,this._d=!1,this._v=a,this._h=0,this._n=!1},m.prototype=b(198)(d.prototype,{then:function then(c,e){var b=i(G(this,d));return b.ok="function"==typeof c?c:!0,b.fail="function"==typeof e&&e,b.domain=k?n.domain:a,this._c.push(b),this._a&&this._a.push(b),this._s&&q(this,!1),b.promise},"catch":function(b){return this.then(a,b)}}),y=function(){var a=new m;this.promise=a,this.resolve=g(r,a,1),this.reject=g(h,a,1)}),c(c.G+c.W+c.F*!j,{Promise:d}),b(22)(d,f),b(183)(f),w=b(3)[f],c(c.S+c.F*!j,f,{reject:function reject(b){var a=i(this),c=a.reject;return c(b),a.promise}}),c(c.S+c.F*(E||!j),f,{resolve:function resolve(a){if(a instanceof d&&z(a.constructor,this))return a;var b=i(this),c=b.resolve;return c(a),b.promise}}),c(c.S+c.F*!(j&&b(155)(function(a){d.all(a)["catch"](l)})),f,{all:function all(g){var c=this,b=i(c),d=b.resolve,e=b.reject,f=p(function(){var b=[],h=0,f=1;x(g,!1,function(i){var j=h++,g=!1;b.push(a),f++,c.resolve(i).then(function(a){g||(g=!0,b[j]=a,--f||d(b))},e)}),--f||d(b)});return f&&e(f.error),b.promise},race:function race(e){var b=this,a=i(b),c=a.reject,d=p(function(){x(e,!1,function(d){b.resolve(d).then(a.resolve,c)})});return d&&c(d.error),a.promise}})},function(b,i,a){var c=a(18),d=a(152),e=a(153),f=a(10),g=a(32),h=a(154);b.exports=function(a,j,q,o,p){var n,i,k,l=p?function(){return a}:h(a),m=c(q,o,j?2:1),b=0;if("function"!=typeof l)throw TypeError(a+" is not iterable!");if(e(l))for(n=g(a.length);n>b;b++)j?m(f(i=a[b])[0],i[1]):m(a[b]);else for(k=l.call(a);!(i=k.next()).done;)d(k,m,i.value,j)}},function(d,g,b){var c=b(10),e=b(19),f=b(23)("species");d.exports=function(g,h){var b,d=c(g).constructor;return d===a||(b=c(d)[f])==a?h:e(b)}},function(s,t,b){var c,g,f,k=b(18),r=b(74),n=b(43),p=b(13),a=b(2),l=a.process,h=a.setImmediate,i=a.clearImmediate,o=a.MessageChannel,j=0,d={},q="onreadystatechange",e=function(){var a=+this;if(d.hasOwnProperty(a)){var b=d[a];delete d[a],b()}},m=function(a){e.call(a.data)};h&&i||(h=function setImmediate(a){for(var b=[],e=1;arguments.length>e;)b.push(arguments[e++]);return d[++j]=function(){r("function"==typeof a?a:Function(a),b)},c(j),j},i=function clearImmediate(a){delete d[a]},"process"==b(29)(l)?c=function(a){l.nextTick(k(e,a,1))}:o?(g=new o,f=g.port2,g.port1.onmessage=m,c=k(f.postMessage,f,1)):a.addEventListener&&"function"==typeof postMessage&&!a.importScripts?(c=function(b){a.postMessage(b+"","*")},a.addEventListener("message",m,!1)):c=q in p("script")?function(a){n.appendChild(p("script"))[q]=function(){n.removeChild(this),e.call(a)}}:function(a){setTimeout(k(e,a,1),0)}),s.exports={set:h,clear:i}},function(n,p,g){var b,e,f,c=g(2),o=g(196).set,k=c.MutationObserver||c.WebKitMutationObserver,h=c.process,i=c.Promise,l="process"==g(29)(h),d=function(){var c,d;for(l&&(c=h.domain)&&c.exit();b;)d=b.fn,d(),b=b.next;e=a,c&&c.enter()};if(l)f=function(){h.nextTick(d)};else if(k){var m=!0,j=document.createTextNode("");new k(d).observe(j,{characterData:!0}),f=function(){j.data=m=!m}}else f=i&&i.resolve?function(){i.resolve().then(d)}:function(){o.call(c,d)};n.exports=function(d){var c={fn:d,next:a};e&&(e.next=c),b||(b=c,f()),e=c}},function(a,d,b){var c=b(16);a.exports=function(a,b,e){for(var d in b)c(a,d,b[d],e);return a}},function(d,e,c){var b=c(200);d.exports=c(201)("Map",function(b){return function Map(){return b(this,arguments.length>0?arguments[0]:a)}},{get:function get(c){var a=b.getEntry(this,c);return a&&a.v},set:function set(a,c){return b.def(this,0===a?0:a,c)}},b,!0)},function(i,r,b){var j=b(9).f,m=b(41),o=(b(8),b(198)),p=b(18),f=b(82),q=b(30),k=b(194),l=b(133),e=b(181),n=b(183),g=b(5),h=b(20).fastKey,c=g?"_s":"size",d=function(b,c){var a,d=h(c);if("F"!==d)return b._i[d];for(a=b._f;a;a=a.n)if(a.k==c)return a};i.exports={getConstructor:function(e,h,i,l){var b=e(function(d,e){f(d,b,h,"_i"),d._i=m(null),d._f=a,d._l=a,d[c]=0,e!=a&&k(e,i,d[l],d)});return o(b.prototype,{clear:function clear(){for(var d=this,e=d._i,b=d._f;b;b=b.n)b.r=!0,b.p&&(b.p=b.p.n=a),delete e[b.i];d._f=d._l=a,d[c]=0},"delete":function(g){var b=this,a=d(b,g);if(a){var e=a.n,f=a.p;delete b._i[a.i],a.r=!0,f&&(f.n=e),e&&(e.p=f),b._f==a&&(b._f=e),b._l==a&&(b._l=f),b[c]--}return!!a},forEach:function forEach(d){f(this,b,"forEach");for(var c,e=p(d,arguments.length>1?arguments[1]:a,3);c=c?c.n:this._f;)for(e(c.v,c.k,this);c&&c.r;)c=c.p},has:function has(a){return!!d(this,a)}}),g&&j(b.prototype,"size",{get:function(){return q(this[c])}}),b},def:function(b,f,j){var g,i,e=d(b,f);return e?e.v=j:(b._l=e={i:i=h(f,!0),k:f,v:j,p:g=b._l,n:a,r:!1},b._f||(b._f=e),g&&(g.n=e),b[c]++,"F"!==i&&(b._i[i]=e)),b},getEntry:d,setStrong:function(d,b,c){l(d,b,function(b,c){this._t=b,this._k=c,this._l=a},function(){for(var c=this,d=c._k,b=c._l;b&&b.r;)b=b.p;return c._t&&(c._l=b=b?b.n:c._t._f)?"keys"==d?e(0,b.k):"values"==d?e(0,b.v):e(0,[b.k,b.v]):(c._t=a,e(1))},c?"entries":"values",!c,!0),n(b)}}},function(m,p,b){var l=b(2),c=b(7),g=b(16),h=b(198),f=b(20),j=b(194),k=b(82),d=b(11),e=b(6),n=b(155),i=b(22),o=b(78);m.exports=function(q,y,A,x,r,m){var u=l[q],b=u,s=r?"set":"add",p=b&&b.prototype,w={},t=function(b){var c=p[b];g(p,b,"delete"==b?function(a){return m&&!d(a)?!1:c.call(this,0===a?0:a)}:"has"==b?function has(a){return m&&!d(a)?!1:c.call(this,0===a?0:a)}:"get"==b?function get(b){return m&&!d(b)?a:c.call(this,0===b?0:b)}:"add"==b?function add(a){return c.call(this,0===a?0:a),this}:function set(a,b){return c.call(this,0===a?0:a,b),this})};if("function"==typeof b&&(m||p.forEach&&!e(function(){(new b).entries().next()}))){var v=new b,B=v[s](m?{}:-0,1)!=v,C=e(function(){v.has(1)}),D=n(function(a){new b(a)}),z=!m&&e(function(){for(var c=new b,a=5;a--;)c[s](a,a);return!c.has(-0)});D||(b=y(function(d,e){k(d,b,q);var c=o(new u,d,b);return e!=a&&j(e,r,c[s],c),c}),b.prototype=p,p.constructor=b),(C||z)&&(t("delete"),t("has"),r&&t("get")),(z||B)&&t(s),m&&p.clear&&delete p.clear}else b=x.getConstructor(y,q,r,s),h(b.prototype,A),f.NEED=!0;return i(b,q),w[q]=b,c(c.G+c.W+c.F*(b!=u),w),m||x.setStrong(b,q,r),b}},function(d,e,b){var c=b(200);d.exports=b(201)("Set",function(b){return function Set(){return b(this,arguments.length>0?arguments[0]:a)}},{add:function add(a){return c.def(this,a=0===a?0:a,a)}},c)},function(q,r,b){var d,p=b(162)(0),o=b(16),h=b(20),n=b(65),c=b(204),j=b(11),k=(b(4),h.getWeak),l=Object.isExtensible,m=c.ufstore,i={},g=function(b){return function WeakMap(){return b(this,arguments.length>0?arguments[0]:a)}},f={get:function get(b){if(j(b)){var c=k(b);return c===!0?m(this).get(b):c?c[this._i]:a}},set:function set(a,b){return c.def(this,a,b)}},e=q.exports=b(201)("WeakMap",g,f,c,!0,!0);7!=(new e).set((Object.freeze||Object)(i),7).get(i)&&(d=c.getConstructor(g),n(d.prototype,f),h.NEED=!0,p(["delete","has","get","set"],function(a){var b=e.prototype,c=b[a];o(b,a,function(b,e){if(j(b)&&!l(b)){this._f||(this._f=new d);var f=this._f[a](b,e);return"set"==a?this:f}return c.call(this,b,e)})}))},function(j,r,b){var l=b(198),e=b(20).getWeak,k=b(10),f=b(11),p=b(82),q=b(194),h=b(162),i=b(4),m=h(5),n=h(6),o=0,c=function(a){return a._l||(a._l=new g)},g=function(){this.a=[]},d=function(a,b){return m(a.a,function(a){return a[0]===b})};g.prototype={get:function(b){var a=d(this,b);return a?a[1]:void 0},has:function(a){return!!d(this,a)},set:function(a,b){var c=d(this,a);c?c[1]=b:this.a.push([a,b])},"delete":function(b){var a=n(this.a,function(a){return a[0]===b});return~a&&this.a.splice(a,1),!!~a}},j.exports={getConstructor:function(d,g,h,j){var b=d(function(c,d){p(c,b,g,"_i"),c._i=o++,c._l=a,d!=a&&q(d,h,c[j],c)});return l(b.prototype,{"delete":function(b){if(!f(b))return!1;var a=e(b);return a===!0?c(this)["delete"](b):a&&i(a,this._i)&&delete a[this._i]},has:function has(a){if(!f(a))return!1;var b=e(a);return b===!0?c(this).has(a):b&&i(b,this._i)}}),b},def:function(a,b,d){var f=e(k(b),!0);return f===!0?c(a).set(b,d):f[a._i]=d,a},ufstore:c}},function(d,e,b){var c=b(204);b(201)("WeakSet",function(b){return function WeakSet(){return b(this,arguments.length>0?arguments[0]:a)}},{add:function add(a){return c.def(this,a,!0)}},c,!1,!0)},function(d,e,b){var a=b(7),c=Function.apply;a(a.S,"Reflect",{apply:function apply(a,b,d){return c.call(a,b,d)}})},function(i,j,b){var c=b(7),f=b(41),d=b(19),g=b(10),e=b(11),h=b(73);c(c.S+c.F*b(6)(function(){function F(){}return!(Reflect.construct(function(){},[],F)instanceof F)}),"Reflect",{construct:function construct(c,b){d(c);var j=3>arguments.length?c:d(arguments[2]);if(c==j){if(b!=a)switch(g(b).length){case 0:return new c;case 1:return new c(b[0]);case 2:return new c(b[0],b[1]);case 3:return new c(b[0],b[1],b[2]);case 4:return new c(b[0],b[1],b[2],b[3])}var i=[null];return i.push.apply(i,b),new(h.apply(c,i))}var k=j.prototype,l=f(e(k)?k:Object.prototype),m=Function.apply.call(c,l,b);return e(m)?m:l}})},function(f,g,a){var c=a(9),b=a(7),d=a(10),e=a(14);b(b.S+b.F*a(6)(function(){Reflect.defineProperty(c.f({},1,{value:1}),1,{value:2})}),"Reflect",{defineProperty:function defineProperty(b,a,f){d(b),a=e(a,!0),d(f);try{return c.f(b,a,f),!0}catch(g){return!1}}})},function(e,f,a){var b=a(7),c=a(46).f,d=a(10);b(b.S,"Reflect",{deleteProperty:function deleteProperty(a,b){var e=c(d(a),b);return e&&!e.configurable?!1:delete a[b]}})},function(f,g,b){var c=b(7),e=b(10),d=function(a){this._t=e(a),this._i=0;var b,c=this._k=[];for(b in a)c.push(b)};b(135)(d,"Object",function(){var c,b=this,d=b._k;do if(b._i>=d.length)return{value:a,done:!0};while(!((c=d[b._i++])in b._t));return{value:c,done:!1}}),c(c.S,"Reflect",{enumerate:function enumerate(a){return new d(a)}})},function(i,j,b){function get(b,i){var c,k,j=3>arguments.length?b:arguments[2];return h(b)===j?b[i]:(c=d.f(b,i))?f(c,"value")?c.value:c.get!==a?c.get.call(j):a:g(k=e(b))?get(k,i,j):void 0}var d=b(46),e=b(55),f=b(4),c=b(7),g=b(11),h=b(10);c(c.S,"Reflect",{get:get})},function(e,f,a){var c=a(46),b=a(7),d=a(10);b(b.S,"Reflect",{getOwnPropertyDescriptor:function getOwnPropertyDescriptor(a,b){return c.f(d(a),b)}})},function(e,f,a){var b=a(7),c=a(55),d=a(10);b(b.S,"Reflect",{getPrototypeOf:function getPrototypeOf(a){return c(d(a))}})},function(c,d,b){var a=b(7);a(a.S,"Reflect",{has:function has(a,b){return b in a}})},function(e,f,a){var b=a(7),d=a(10),c=Object.isExtensible;b(b.S,"Reflect",{isExtensible:function isExtensible(a){return d(a),c?c(a):!0}})},function(c,d,a){var b=a(7);b(b.S,"Reflect",{ownKeys:a(217)})},function(c,g,a){var d=a(45),e=a(38),f=a(10),b=a(2).Reflect;c.exports=b&&b.ownKeys||function ownKeys(a){var b=d.f(f(a)),c=e.f;return c?b.concat(c(a)):b}},function(e,f,a){var b=a(7),d=a(10),c=Object.preventExtensions;b(b.S,"Reflect",{preventExtensions:function preventExtensions(a){d(a);try{return c&&c(a),!0}catch(b){return!1}}})},function(l,k,b){function set(l,k,m){var n,o,e=4>arguments.length?l:arguments[3],b=d.f(g(l),k);if(!b){if(c(o=j(l)))return set(o,k,m,e);b=f(0)}return h(b,"value")?b.writable!==!1&&c(e)?(n=d.f(e,k)||f(0),n.value=m,i.f(e,k,n),!0):!1:b.set===a?!1:(b.set.call(e,m),!0)}var i=b(9),d=b(46),j=b(55),h=b(4),e=b(7),f=b(15),g=b(10),c=b(11);e(e.S,"Reflect",{set:set})},function(d,e,b){var c=b(7),a=b(69);a&&c(c.S,"Reflect",{setPrototypeOf:function setPrototypeOf(b,c){a.check(b,c);try{return a.set(b,c),!0}catch(d){return!1}}})},function(c,d,b){var a=b(7);a(a.S,"Date",{now:function(){return(new Date).getTime()}})},function(e,f,a){var b=a(7),c=a(54),d=a(14);b(b.P+b.F*a(6)(function(){return null!==new Date(NaN).toJSON()||1!==Date.prototype.toJSON.call({toISOString:function(){return 1}})}),"Date",{toJSON:function toJSON(e){var a=c(this),b=d(a);return"number"!=typeof b||isFinite(b)?a.toISOString():null}})},function(f,g,c){var b=c(7),d=c(6),e=Date.prototype.getTime,a=function(a){return a>9?a:"0"+a};b(b.P+b.F*(d(function(){return"0385-07-25T07:06:39.999Z"!=new Date(-5e13-1).toISOString()})||!d(function(){new Date(NaN).toISOString()})),"Date",{toISOString:function toISOString(){if(!isFinite(e.call(this)))throw RangeError("Invalid time value");var b=this,c=b.getUTCFullYear(),d=b.getUTCMilliseconds(),f=0>c?"-":c>9999?"+":"";return f+("00000"+Math.abs(c)).slice(f?-6:-4)+"-"+a(b.getUTCMonth()+1)+"-"+a(b.getUTCDate())+"T"+a(b.getUTCHours())+":"+a(b.getUTCMinutes())+":"+a(b.getUTCSeconds())+"."+(d>99?d:"0"+a(d))+"Z"}})},function(g,h,d){var a=Date.prototype,b="Invalid Date",c="toString",e=a[c],f=a.getTime;new Date(NaN)+""!=b&&d(16)(a,c,function toString(){var a=f.call(this);return a===a?e.call(this):b})},function(d,e,a){var b=a(23)("toPrimitive"),c=Date.prototype;b in c||a(8)(c,b,a(226))},function(c,f,a){var d=a(10),e=a(14),b="number";c.exports=function(a){if("string"!==a&&a!==b&&"default"!==a)throw TypeError("Incorrect hint");return e(d(this),a!=b)}},function(s,r,b){var c=b(7),f=b(228),j=b(229),g=b(10),m=b(34),n=b(32),p=b(11),i=(b(23)("typed_array"),b(2).ArrayBuffer),q=b(195),d=j.ArrayBuffer,k=j.DataView,l=f.ABV&&i.isView,h=d.prototype.slice,o=f.VIEW,e="ArrayBuffer";c(c.G+c.W+c.F*(i!==d),{ArrayBuffer:d}),c(c.S+c.F*!f.CONSTR,e,{isView:function isView(a){return l&&l(a)||p(a)&&o in a}}),c(c.P+c.U+c.F*b(6)(function(){return!new d(2).slice(1,a).byteLength}),e,{slice:function slice(f,b){if(h!==a&&b===a)return h.call(g(this),f);for(var c=g(this).byteLength,e=m(f,c),i=m(b===a?c:b,c),j=new(q(this,d))(n(i-e)),l=new k(this),o=new k(j),p=0;i>e;)o.setUint8(p++,l.getUint8(e++));return j}}),b(183)(e)},function(k,n,a){for(var b,c=a(2),e=a(8),f=a(17),d=f("typed_array"),g=f("view"),h=!(!c.ArrayBuffer||!c.DataView),i=h,j=0,l=9,m="Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array".split(",");l>j;)(b=c[m[j++]])?(e(b.prototype,d,!0),e(b.prototype,g,!0)):i=!1;k.exports={ABV:h,CONSTR:i,TYPED:d,VIEW:g}},function(da,F,c){var m=c(2),q=c(5),aa=c(47),O=c(228),N=c(8),M=c(198),E=c(6),u=c(82),t=c(33),Q=c(32),ca=c(45).f,W=c(9).f,$=c(177),D=c(22),r="ArrayBuffer",k="DataView",h="prototype",G="Wrong length!",B="Wrong index!",b=m[r],d=m[k],j=m.Math,l=m.RangeError,s=m.Infinity,n=b,ba=j.abs,e=j.pow,X=j.floor,Y=j.log,Z=j.LN2,A="buffer",v="byteLength",C="byteOffset",w=q?"_b":A,i=q?"_l":v,x=q?"_o":C,z=function(a,c,l){var b,d,g,h=Array(l),i=8*l-c-1,j=(1<>1,m=23===c?e(2,-24)-e(2,-77):0,k=0,n=0>a||0===a&&0>1/a?1:0;for(a=ba(a),a!=a||a===s?(d=a!=a?1:0,b=j):(b=X(Y(a)/Z),a*(g=e(2,-b))<1&&(b--,g*=2),a+=b+f>=1?m/g:m*e(2,1-f),a*g>=2&&(b++,g/=2),b+f>=j?(d=0,b=j):b+f>=1?(d=(a*g-1)*e(2,c),b+=f):(d=a*e(2,f-1)*e(2,c),b=0));c>=8;h[k++]=255&d,d/=256,c-=8);for(b=b<0;h[k++]=255&b,b/=256,i-=8);return h[--k]|=128*n,h},H=function(h,g,k){var c,j=8*k-g-1,l=(1<>1,b=j-7,d=k-1,f=h[d--],a=127&f;for(f>>=7;b>0;a=256*a+h[d],d--,b-=8);for(c=a&(1<<-b)-1,a>>=-b,b+=g;b>0;c=256*c+h[d],d--,b-=8);if(0===a)a=1-i;else{if(a===l)return c?NaN:f?-s:s;c+=e(2,g),a-=i}return(f?-1:1)*c*e(2,a-g)},I=function(a){return a[3]<<24|a[2]<<16|a[1]<<8|a[0]},J=function(a){return[255&a]},K=function(a){return[255&a,a>>8&255]},L=function(a){return[255&a,a>>8&255,a>>16&255,a>>24&255]},U=function(a){return z(a,52,8)},V=function(a){return z(a,23,4)},o=function(a,b,c){W(a[h],b,{get:function(){return this[c]}})},g=function(b,c,g,h){var d=+g,a=t(d);if(d!=a||0>a||a+c>b[i])throw l(B);var j=b[w]._b,e=a+b[x],f=j.slice(e,e+c);return h?f:f.reverse()},f=function(c,d,j,h,f,g){var e=+j,b=t(e);if(e!=b||0>b||b+d>c[i])throw l(B);for(var k=c[w]._b,m=b+c[x],n=h(+f),a=0;d>a;a++)k[m+a]=n[g?a:d-a-1]},P=function(d,e){u(d,b,r);var a=+e,c=Q(a);if(a!=c)throw l(G);return c};if(O.ABV){if(!E(function(){new b})||!E(function(){new b(.5)})){b=function ArrayBuffer(a){return new n(P(this,a))};for(var y,_=b[h]=n[h],R=ca(n),S=0;R.length>S;)(y=R[S++])in b||N(b,y,n[y]);aa||(_.constructor=b)}var p=new d(new b(2)),T=d[h].setInt8;p.setInt8(0,2147483648),p.setInt8(1,2147483649),!p.getInt8(0)&&p.getInt8(1)||M(d[h],{setInt8:function setInt8(a,b){T.call(this,a,b<<24>>24)},setUint8:function setUint8(a,b){T.call(this,a,b<<24>>24)}},!0)}else b=function ArrayBuffer(b){var a=P(this,b);this._b=$.call(Array(a),0),this[i]=a},d=function DataView(f,h,c){u(this,d,k),u(f,b,k);var g=f[i],e=t(h);if(0>e||e>g)throw l("Wrong offset!");if(c=c===a?g-e:Q(c),e+c>g)throw l(G);this[w]=f,this[x]=e,this[i]=c},q&&(o(b,v,"_l"),o(d,A,"_b"),o(d,v,"_l"),o(d,C,"_o")),M(d[h],{getInt8:function getInt8(a){return g(this,1,a)[0]<<24>>24},getUint8:function getUint8(a){return g(this,1,a)[0]},getInt16:function getInt16(b){var a=g(this,2,b,arguments[1]);return(a[1]<<8|a[0])<<16>>16},getUint16:function getUint16(b){var a=g(this,2,b,arguments[1]);return a[1]<<8|a[0]},getInt32:function getInt32(a){return I(g(this,4,a,arguments[1]))},getUint32:function getUint32(a){return I(g(this,4,a,arguments[1]))>>>0},getFloat32:function getFloat32(a){return H(g(this,4,a,arguments[1]),23,4)},getFloat64:function getFloat64(a){return H(g(this,8,a,arguments[1]),52,8)},setInt8:function setInt8(a,b){f(this,1,a,J,b)},setUint8:function setUint8(a,b){f(this,1,a,J,b)},setInt16:function setInt16(a,b){f(this,2,a,K,b,arguments[2])},setUint16:function setUint16(a,b){f(this,2,a,K,b,arguments[2])},setInt32:function setInt32(a,b){f(this,4,a,L,b,arguments[2])},setUint32:function setUint32(a,b){f(this,4,a,L,b,arguments[2])},setFloat32:function setFloat32(a,b){f(this,4,a,V,b,arguments[2])},setFloat64:function setFloat64(a,b){f(this,8,a,U,b,arguments[2])}});D(b,r),D(d,k),N(d[h],O.VIEW,!0),F[r]=b,F[k]=d},function(c,d,b){var a=b(7);a(a.G+a.W+a.F*!b(228).ABV,{DataView:b(229).DataView})},function(b,c,a){a(232)("Int8",1,function(a){return function Int8Array(b,c,d){return a(this,b,c,d)}})},function(N,Wa,b){if(b(5)){var T=b(47),y=b(2),h=b(6),c=b(7),x=b(228),ca=b(229),Ka=b(18),da=b(82),Ha=b(15),e=b(8),D=b(198),Ga=(b(89),b(33)),q=b(32),fa=b(34),ia=b(14),s=b(4),ya=b(67),ka=b(71),j=b(11),ma=b(54),ta=b(153),sa=b(41),ra=b(55),B=b(45).f,Ra=(b(233),b(154)),Y=b(17),V=b(23),i=b(162),U=b(31),H=b(195),I=b(180),Sa=b(134),Ta=b(155),Qa=b(183),Va=b(177),qa=b(174),O=b(9),P=b(46),p=O.f,Ua=P.f,k=y.RangeError,J=y.TypeError,l=y.Uint8Array,E="ArrayBuffer",W="Shared"+E,X="BYTES_PER_ELEMENT",r="prototype",g=Array[r],C=ca.ArrayBuffer,Pa=ca.DataView,aa=i(0),Oa=i(2),La=i(3),Ja=i(4),Ia=i(5),oa=i(6),Ea=U(!0),Ca=U(!1),Aa=I.values,xa=I.keys,wa=I.entries,va=g.lastIndexOf,ua=g.reduce,pa=g.reduceRight,na=g.join,Fa=g.sort,M=g.slice,o=g.toString,K=g.toLocaleString,G=V("iterator"),t=V("toStringTag"),la=Y("typed_constructor"),w=Y("def_constructor"),ja=x.CONSTR,m=x.TYPED,za=x.VIEW,n="Wrong length!",Ba=i(1,function(a,b){return u(H(a,a[w]),b)}),ha=h(function(){return 1===new l(new Uint16Array([1]).buffer)[0]}),Da=!!l&&!!l[r].set&&h(function(){new l(1).set({})}),ga=function(b,d){if(b===a)throw J(n);var e=+b,c=q(b);if(d&&!ya(e,c))throw k(n);return c},A=function(b,c){var a=Ga(b);if(0>a||a%c)throw k("Wrong offset!");return a},d=function(a){if(j(a)&&m in a)return a;throw J(a+" is not a typed array!")},u=function(a,b){if(!(j(a)&&la in a))throw J("It is not a typed array constructor!");return new a(b)},ea=function(a,b){return F(H(a,a[w]),b)},F=function(e,b){for(var a=0,c=b.length,d=u(e,c);c>a;)d[a]=b[a++];return d},v=function(a,b,c){p(a,b,{get:function(){return this._d[c]}})},L=function from(m){var b,f,g,h,j,i,c=ma(m),k=arguments.length,d=k>1?arguments[1]:a,l=d!==a,e=Ra(c);if(e!=a&&!ta(e)){for(i=e.call(c),g=[],b=0;!(j=i.next()).done;b++)g.push(j.value);c=g}for(l&&k>2&&(d=Ka(d,arguments[2],2)),b=0,f=q(c.length),h=u(this,f);f>b;b++)h[b]=l?d(c[b],b):c[b];return h},Ma=function of(){for(var a=0,b=arguments.length,c=u(this,b);b>a;)c[a]=arguments[a++];return c},Na=!!l&&h(function(){K.call(new l(1))}),ba=function toLocaleString(){return K.apply(Na?M.call(d(this)):d(this),arguments)},_={copyWithin:function copyWithin(b,c){return qa.call(d(this),b,c,arguments.length>2?arguments[2]:a)},every:function every(b){return Ja(d(this),b,arguments.length>1?arguments[1]:a)},fill:function fill(a){return Va.apply(d(this),arguments)},filter:function filter(b){return ea(this,Oa(d(this),b,arguments.length>1?arguments[1]:a))},find:function find(b){return Ia(d(this),b,arguments.length>1?arguments[1]:a)},findIndex:function findIndex(b){return oa(d(this),b,arguments.length>1?arguments[1]:a)},forEach:function forEach(b){aa(d(this),b,arguments.length>1?arguments[1]:a)},indexOf:function indexOf(b){return Ca(d(this),b,arguments.length>1?arguments[1]:a)},includes:function includes(b){return Ea(d(this),b,arguments.length>1?arguments[1]:a)},join:function join(a){return na.apply(d(this),arguments)},lastIndexOf:function lastIndexOf(a){return va.apply(d(this),arguments)},map:function map(b){return Ba(d(this),b,arguments.length>1?arguments[1]:a)},reduce:function reduce(a){return ua.apply(d(this),arguments)},reduceRight:function reduceRight(a){return pa.apply(d(this),arguments)},reverse:function reverse(){for(var e,a=this,b=d(a).length,f=Math.floor(b/2),c=0;f>c;)e=a[c],a[c++]=a[--b],a[b]=e;return a},some:function some(b){return La(d(this),b,arguments.length>1?arguments[1]:a)},sort:function sort(a){return Fa.call(d(this),a)},subarray:function subarray(g,e){var b=d(this),c=b.length,f=fa(g,c);return new(H(b,b[w]))(b.buffer,b.byteOffset+f*b.BYTES_PER_ELEMENT,q((e===a?c:fa(e,c))-f))}},$=function slice(a,b){return ea(this,M.call(d(this),a,b))},Z=function set(f){d(this);var b=A(arguments[1],1),g=this.length,c=ma(f),e=q(c.length),a=0;if(e+b>g)throw k(n);for(;e>a;)this[b+a]=c[a++]},z={entries:function entries(){return wa.call(d(this))},keys:function keys(){return xa.call(d(this))},values:function values(){return Aa.call(d(this))}},S=function(b,a){return j(b)&&b[m]&&"symbol"!=typeof a&&a in b&&String(+a)==String(a)},R=function getOwnPropertyDescriptor(b,a){return S(b,a=ia(a,!0))?Ha(2,b[a]):Ua(b,a)},Q=function defineProperty(b,c,a){return!(S(b,c=ia(c,!0))&&j(a)&&s(a,"value"))||s(a,"get")||s(a,"set")||a.configurable||s(a,"writable")&&!a.writable||s(a,"enumerable")&&!a.enumerable?p(b,c,a):(b[c]=a.value,
+b)};ja||(P.f=R,O.f=Q),c(c.S+c.F*!ja,"Object",{getOwnPropertyDescriptor:R,defineProperty:Q}),h(function(){o.call({})})&&(o=K=function toString(){return na.call(this)});var f=D({},_);D(f,z),e(f,G,z.values),D(f,{slice:$,set:Z,constructor:function(){},toString:o,toLocaleString:ba}),v(f,"buffer","b"),v(f,"byteOffset","o"),v(f,"byteLength","l"),v(f,"length","e"),p(f,t,{get:function(){return this[m]}}),N.exports=function(v,i,I,s){s=!!s;var d=v+(s?"Clamped":"")+"Array",S="Uint8Array"!=d,R="get"+v,N="set"+v,b=y[d],l=b||{},K=b&&ra(b),M=!b||!x.ABV,J={},g=b&&b[r],O=function(b,c){var a=b._d;return a.v[R](c*i+a.o,ha)},P=function(c,d,a){var b=c._d;s&&(a=(a=Math.round(a))<0?0:a>255?255:255&a),b.v[N](d*i+b.o,a,ha)},Q=function(b,a){p(b,a,{get:function(){return O(this,a)},set:function(b){return P(this,a,b)},enumerable:!0})};M?(b=I(function(o,c,u,r){da(o,b,d,"_d");var l,f,g,s,t=0,h=0;if(j(c)){if(!(c instanceof C||(s=ka(c))==E||s==W))return m in c?F(b,c):L.call(b,c);l=c,h=A(u,i);var p=c.byteLength;if(r===a){if(p%i)throw k(n);if(f=p-h,0>f)throw k(n)}else if(f=q(r)*i,f+h>p)throw k(n);g=f/i}else g=ga(c,!0),f=g*i,l=new C(f);for(e(o,"_d",{b:l,o:h,l:f,e:g,v:new Pa(l)});g>t;)Q(o,t++)}),g=b[r]=sa(f),e(g,"constructor",b)):Ta(function(a){new b(null),new b(a)},!0)||(b=I(function(h,c,e,f){da(h,b,d);var g;return j(c)?c instanceof C||(g=ka(c))==E||g==W?f!==a?new l(c,A(e,i),f):e!==a?new l(c,A(e,i)):new l(c):m in c?F(b,c):L.call(b,c):new l(ga(c,S))}),aa(K!==Function.prototype?B(l).concat(B(K)):B(l),function(a){a in b||e(b,a,l[a])}),b[r]=g,T||(g.constructor=b));var u=g[G],D=!!u&&("values"==u.name||u.name==a),H=z.values;e(b,la,!0),e(g,m,d),e(g,za,!0),e(g,w,b),(s?new b(1)[t]==d:t in g)||p(g,t,{get:function(){return d}}),J[d]=b,c(c.G+c.W+c.F*(b!=l),J),c(c.S,d,{BYTES_PER_ELEMENT:i,from:L,of:Ma}),X in g||e(g,X,i),c(c.P,d,_),Qa(d),c(c.P+c.F*Da,d,{set:Z}),c(c.P+c.F*!D,d,z),c(c.P+c.F*(g.toString!=o),d,{toString:o}),c(c.P+c.F*h(function(){new b(1).slice()}),d,{slice:$}),c(c.P+c.F*(h(function(){return[1,2].toLocaleString()!=new b([1,2]).toLocaleString()})||!h(function(){g.toLocaleString.call([1,2])})),d,{toLocaleString:ba}),Sa[d]=D?u:H,T||D||e(g,G,H)}}else N.exports=function(){}},function(c,g,b){var d=b(71),e=b(23)("iterator"),f=b(134);c.exports=b(3).isIterable=function(c){var b=Object(c);return b[e]!==a||"@@iterator"in b||f.hasOwnProperty(d(b))}},function(b,c,a){a(232)("Uint8",1,function(a){return function Uint8Array(b,c,d){return a(this,b,c,d)}})},function(b,c,a){a(232)("Uint8",1,function(a){return function Uint8ClampedArray(b,c,d){return a(this,b,c,d)}},!0)},function(b,c,a){a(232)("Int16",2,function(a){return function Int16Array(b,c,d){return a(this,b,c,d)}})},function(b,c,a){a(232)("Uint16",2,function(a){return function Uint16Array(b,c,d){return a(this,b,c,d)}})},function(b,c,a){a(232)("Int32",4,function(a){return function Int32Array(b,c,d){return a(this,b,c,d)}})},function(b,c,a){a(232)("Uint32",4,function(a){return function Uint32Array(b,c,d){return a(this,b,c,d)}})},function(b,c,a){a(232)("Float32",4,function(a){return function Float32Array(b,c,d){return a(this,b,c,d)}})},function(b,c,a){a(232)("Float64",8,function(a){return function Float64Array(b,c,d){return a(this,b,c,d)}})},function(e,f,b){var c=b(7),d=b(31)(!0);c(c.P,"Array",{includes:function includes(b){return d(this,b,arguments.length>1?arguments[1]:a)}}),b(175)("includes")},function(d,e,a){var b=a(7),c=a(124)(!0);b(b.P,"String",{at:function at(a){return c(this,a)}})},function(e,f,b){var c=b(7),d=b(245);c(c.P,"String",{padStart:function padStart(b){return d(this,b,arguments.length>1?arguments[1]:a,!0)}})},function(c,g,b){var d=b(32),e=b(84),f=b(30);c.exports=function(l,m,i,n){var c=String(f(l)),j=c.length,g=i===a?" ":String(i),k=d(m);if(j>=k)return c;""==g&&(g=" ");var h=k-j,b=e.call(g,Math.ceil(h/g.length));return b.length>h&&(b=b.slice(0,h)),n?b+c:c+b}},function(e,f,b){var c=b(7),d=b(245);c(c.P,"String",{padEnd:function padEnd(b){return d(this,b,arguments.length>1?arguments[1]:a,!1)}})},function(b,c,a){a(79)("trimLeft",function(a){return function trimLeft(){return a(this,1)}},"trimStart")},function(b,c,a){a(79)("trimRight",function(a){return function trimRight(){return a(this,2)}},"trimEnd")},function(i,j,a){var b=a(7),d=a(30),e=a(32),f=a(127),g=a(185),h=RegExp.prototype,c=function(a,b){this._r=a,this._s=b};a(135)(c,"RegExp String",function next(){var a=this._r.exec(this._s);return{value:a,done:null===a}}),b(b.P,"String",{matchAll:function matchAll(a){if(d(this),!f(a))throw TypeError(a+" is not a regexp!");var j=String(this),b="flags"in h?String(a.flags):g.call(a),i=new RegExp(a.source,~b.indexOf("g")?b:"g"+b);return i.lastIndex=e(a.lastIndex),new c(i,j)}})},function(h,i,a){var b=a(7),c=a(217),d=a(27),e=a(15),f=a(46),g=a(9);b(b.S,"Object",{getOwnPropertyDescriptors:function getOwnPropertyDescriptors(l){for(var a,h,i=d(l),m=f.f,j=c(i),b={},k=0;j.length>k;)h=m(i,a=j[k++]),a in b?g.f(b,a,e(0,h)):b[a]=h;return b}})},function(d,e,a){var b=a(7),c=a(252)(!1);b(b.S,"Object",{values:function values(a){return c(a)}})},function(b,f,a){var c=a(25),d=a(27),e=a(39).f;b.exports=function(a){return function(j){for(var b,f=d(j),g=c(f),k=g.length,h=0,i=[];k>h;)e.call(f,b=g[h++])&&i.push(a?[b,f[b]]:f[b]);return i}}},function(d,e,a){var b=a(7),c=a(252)(!0);b(b.S,"Object",{entries:function entries(a){return c(a)}})},function(f,g,a){var b=a(7),c=a(54),d=a(19),e=a(9);a(5)&&b(b.P+a(255),"Object",{__defineGetter__:function __defineGetter__(a,b){e.f(c(this),a,{get:d(b),enumerable:!0,configurable:!0})}})},function(b,c,a){b.exports=a(47)||!a(6)(function(){var b=Math.random();__defineSetter__.call(null,b,function(){}),delete a(2)[b]})},function(f,g,a){var b=a(7),c=a(54),d=a(19),e=a(9);a(5)&&b(b.P+a(255),"Object",{__defineSetter__:function __defineSetter__(a,b){e.f(c(this),a,{set:d(b),enumerable:!0,configurable:!0})}})},function(g,h,a){var b=a(7),c=a(54),d=a(14),e=a(55),f=a(46).f;a(5)&&b(b.P+a(255),"Object",{__lookupGetter__:function __lookupGetter__(g){var b,a=c(this),h=d(g,!0);do if(b=f(a,h))return b.get;while(a=e(a))}})},function(g,h,a){var b=a(7),c=a(54),d=a(14),e=a(55),f=a(46).f;a(5)&&b(b.P+a(255),"Object",{__lookupSetter__:function __lookupSetter__(g){var b,a=c(this),h=d(g,!0);do if(b=f(a,h))return b.set;while(a=e(a))}})},function(c,d,b){var a=b(7);a(a.P+a.R,"Map",{toJSON:b(260)("Map")})},function(b,e,a){var c=a(71),d=a(261);b.exports=function(a){return function toJSON(){if(c(this)!=a)throw TypeError(a+"#toJSON isn't generic");return d(this)}}},function(a,d,b){var c=b(194);a.exports=function(b,d){var a=[];return c(b,!1,a.push,a,d),a}},function(c,d,b){var a=b(7);a(a.P+a.R,"Set",{toJSON:b(260)("Set")})},function(c,d,a){var b=a(7);b(b.S,"System",{global:a(2)})},function(d,e,a){var b=a(7),c=a(29);b(b.S,"Error",{isError:function isError(a){return"Error"===c(a)}})},function(c,d,b){var a=b(7);a(a.S,"Math",{iaddh:function iaddh(c,d,e,f){var a=c>>>0,g=d>>>0,b=e>>>0;return g+(f>>>0)+((a&b|(a|b)&~(a+b>>>0))>>>31)|0}})},function(c,d,b){var a=b(7);a(a.S,"Math",{isubh:function isubh(c,d,e,f){var a=c>>>0,g=d>>>0,b=e>>>0;return g-(f>>>0)-((~a&b|~(a^b)&a-b>>>0)>>>31)|0}})},function(c,d,b){var a=b(7);a(a.S,"Math",{imulh:function imulh(i,j){var a=65535,e=+i,b=+j,g=e&a,h=b&a,f=e>>16,c=b>>16,d=(f*h>>>0)+(g*h>>>16);return f*c+(d>>16)+((g*c>>>0)+(d&a)>>16)}})},function(c,d,b){var a=b(7);a(a.S,"Math",{umulh:function umulh(i,j){var a=65535,e=+i,b=+j,g=e&a,h=b&a,f=e>>>16,c=b>>>16,d=(f*h>>>0)+(g*h>>>16);return f*c+(d>>>16)+((g*c>>>0)+(d&a)>>>16)}})},function(f,g,b){var a=b(270),c=b(10),d=a.key,e=a.set;a.exp({defineMetadata:function defineMetadata(a,b,f,g){e(a,b,c(f),d(g))}})},function(h,o,c){var e=c(199),f=c(7),g=c(21)("metadata"),d=g.store||(g.store=new(c(203))),b=function(f,g,h){var b=d.get(f);if(!b){if(!h)return a;d.set(f,b=new e)}var c=b.get(g);if(!c){if(!h)return a;b.set(g,c=new e)}return c},j=function(d,e,f){var c=b(e,f,!1);return c===a?!1:c.has(d)},k=function(d,e,f){var c=b(e,f,!1);return c===a?a:c.get(d)},l=function(a,c,d,e){b(d,e,!0).set(a,c)},m=function(d,e){var a=b(d,e,!1),c=[];return a&&a.forEach(function(b,a){c.push(a)}),c},i=function(b){return b===a||"symbol"==typeof b?b:String(b)},n=function(a){f(f.S,"Reflect",a)};h.exports={store:d,map:b,has:j,get:k,set:l,keys:m,key:i,exp:n}},function(h,i,c){var b=c(270),e=c(10),f=b.key,g=b.map,d=b.store;b.exp({deleteMetadata:function deleteMetadata(j,b){var h=3>arguments.length?a:f(arguments[2]),c=g(e(b),h,!1);if(c===a||!c["delete"](j))return!1;if(c.size)return!0;var i=d.get(b);return i["delete"](h),!!i.size||d["delete"](b)}})},function(j,k,c){var b=c(270),e=c(10),f=c(55),g=b.has,h=b.get,i=b.key,d=function(b,c,e){var j=g(b,c,e);if(j)return h(b,c,e);var i=f(c);return null!==i?d(b,i,e):a};b.exp({getMetadata:function getMetadata(b,c){return d(b,e(c),3>arguments.length?a:i(arguments[2]))}})},function(l,k,b){var e=b(202),f=b(261),c=b(270),g=b(10),h=b(55),i=c.keys,j=c.key,d=function(c,g){var a=i(c,g),j=h(c);if(null===j)return a;var b=d(j,g);return b.length?a.length?f(new e(a.concat(b))):b:a};c.exp({getMetadataKeys:function getMetadataKeys(b){return d(g(b),2>arguments.length?a:j(arguments[1]))}})},function(g,h,c){var b=c(270),d=c(10),e=b.get,f=b.key;b.exp({getOwnMetadata:function getOwnMetadata(b,c){return e(b,d(c),3>arguments.length?a:f(arguments[2]))}})},function(g,h,c){var b=c(270),d=c(10),e=b.keys,f=b.key;b.exp({getOwnMetadataKeys:function getOwnMetadataKeys(b){return e(d(b),2>arguments.length?a:f(arguments[1]))}})},function(i,j,b){var c=b(270),e=b(10),f=b(55),g=c.has,h=c.key,d=function(a,b,c){var h=g(a,b,c);if(h)return!0;var e=f(b);return null!==e?d(a,e,c):!1};c.exp({hasMetadata:function hasMetadata(b,c){return d(b,e(c),3>arguments.length?a:h(arguments[2]))}})},function(g,h,c){var b=c(270),d=c(10),e=b.has,f=b.key;b.exp({hasOwnMetadata:function hasOwnMetadata(b,c){return e(b,d(c),3>arguments.length?a:f(arguments[2]))}})},function(h,i,b){var c=b(270),d=b(10),e=b(19),f=c.key,g=c.set;c.exp({metadata:function metadata(b,c){return function decorator(i,h){g(b,c,(h!==a?d:e)(i),f(h))}}})},function(d,e,b){var a=b(7),c=b(196);a(a.G+a.B,{setImmediate:c.set,clearImmediate:c.clear})},function(r,q,b){for(var j=b(180),p=b(16),o=b(2),g=b(8),h=b(134),i=b(23),f=i("iterator"),k=i("toStringTag"),l=h.Array,n=["NodeList","DOMTokenList","MediaList","StyleSheetList","CSSRuleList"],e=0;5>e;e++){var c,d=n[e],m=o[d],a=m&&m.prototype;if(a){a[f]||g(a,f,l),a[k]||g(a,k,d),h[d]=l;for(c in j)a[c]||p(a,c,j[c],!0)}}},function(i,j,a){var c=a(2),b=a(7),g=a(74),h=a(282),d=c.navigator,e=!!d&&/MSIE .\./.test(d.userAgent),f=function(a){return e?function(b,c){return a(g(h,[].slice.call(arguments,2),"function"==typeof b?b:Function(b)),c)}:a};b(b.G+b.B+b.F*e,{setTimeout:f(c.setTimeout),setInterval:f(c.setInterval)})},function(c,f,a){var d=a(283),b=a(74),e=a(19);c.exports=function(){for(var h=e(this),a=arguments.length,c=Array(a),f=0,i=d._,g=!1;a>f;)(c[f]=arguments[f++])===i&&(g=!0);return function(){var d,j=this,k=arguments.length,e=0,f=0;if(!g&&!k)return b(h,c,j);if(d=c.slice(),g)for(;a>e;e++)d[e]===i&&(d[e]=arguments[f++]);for(;k>f;)d.push(arguments[f++]);return b(h,d,j)}}},function(a,c,b){a.exports=b(2)}]),"undefined"!=typeof module&&module.exports?module.exports=b:"function"==typeof define&&define.amd?define(function(){return b}):c.core=b}(1,1);
+//# sourceMappingURL=shim.min.js.map
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/client/shim.min.js.map b/node_modules/babel-register/node_modules/core-js/client/shim.min.js.map
new file mode 100644
index 0000000..d770910
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/client/shim.min.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["shim.js"],"names":["__e","__g","undefined","modules","__webpack_require__","moduleId","installedModules","exports","module","id","loaded","call","m","c","p","global","core","has","DESCRIPTORS","$export","redefine","META","KEY","$fails","shared","setToStringTag","uid","wks","keyOf","enumKeys","isArray","anObject","toIObject","toPrimitive","createDesc","_create","gOPNExt","$GOPD","$DP","gOPD","f","dP","gOPN","$Symbol","Symbol","$JSON","JSON","_stringify","stringify","setter","PROTOTYPE","HIDDEN","TO_PRIMITIVE","isEnum","propertyIsEnumerable","SymbolRegistry","AllSymbols","ObjectProto","Object","USE_NATIVE","QObject","setSymbolDesc","get","this","value","a","it","key","D","protoDesc","wrap","tag","sym","_k","configurable","set","isSymbol","iterator","$defineProperty","defineProperty","enumerable","$defineProperties","defineProperties","P","keys","i","l","length","$create","create","$propertyIsEnumerable","E","$getOwnPropertyDescriptor","getOwnPropertyDescriptor","$getOwnPropertyNames","getOwnPropertyNames","names","result","push","$getOwnPropertySymbols","getOwnPropertySymbols","$stringify","replacer","$replacer","args","arguments","apply","BUGGY_JSON","S","TypeError","toString","G","W","F","symbols","split","Wrapper","findChild","for","keyFor","useSetter","useSimple","valueOf","Math","window","self","Function","version","hasOwnProperty","exec","e","hide","ctx","type","name","source","own","out","exp","IS_FORCED","IS_GLOBAL","IS_STATIC","IS_PROTO","IS_BIND","B","target","expProto","U","R","object","IE8_DOM_DEFINE","O","Attributes","isObject","document","is","createElement","fn","val","bitmap","writable","SRC","TO_STRING","$toString","TPL","inspectSource","safe","isFunction","join","String","prototype","px","random","concat","aFunction","that","b","setDesc","isExtensible","FREEZE","preventExtensions","setMeta","w","fastKey","getWeak","onFreeze","meta","NEED","SHARED","store","def","TAG","stat","USE_SYMBOL","getKeys","el","index","$keys","enumBugKeys","arrayIndexOf","IE_PROTO","IObject","defined","cof","slice","toLength","toIndex","IS_INCLUDES","$this","fromIndex","toInteger","min","ceil","floor","isNaN","max","gOPS","pIE","getSymbols","Array","arg","dPs","Empty","createDict","iframeDocument","iframe","gt","style","display","appendChild","src","contentWindow","open","write","close","Properties","documentElement","windowNames","getWindowNames","hiddenKeys","fails","toObject","$getPrototypeOf","getPrototypeOf","constructor","$freeze","freeze","$seal","seal","$preventExtensions","$isFrozen","isFrozen","$isSealed","isSealed","$isExtensible","assign","$assign","A","K","forEach","k","T","aLen","j","x","y","setPrototypeOf","check","proto","test","buggy","__proto__","classof","ARG","tryGet","callee","bind","invoke","arraySlice","factories","construct","len","n","partArgs","bound","un","FProto","nameRE","NAME","match","HAS_INSTANCE","FunctionProto","inheritIfRequired","$trim","trim","NUMBER","$Number","Base","BROKEN_COF","TRIM","toNumber","argument","third","radix","maxCode","first","charCodeAt","NaN","code","digits","parseInt","Number","C","spaces","space","non","ltrim","RegExp","rtrim","exporter","ALIAS","FORCE","string","TYPE","replace","aNumberValue","repeat","$toFixed","toFixed","data","ERROR","ZERO","multiply","c2","divide","numToString","s","t","pow","acc","log","x2","fractionDigits","z","RangeError","Constructor","forbiddenField","msg","count","str","res","Infinity","$toPrecision","toPrecision","precision","EPSILON","_isFinite","isFinite","isInteger","number","abs","isSafeInteger","MAX_SAFE_INTEGER","MIN_SAFE_INTEGER","$parseFloat","parseFloat","charAt","$parseInt","ws","hex","log1p","sqrt","$acosh","acosh","MAX_VALUE","LN2","asinh","atanh","sign","cbrt","clz32","LOG2E","cosh","expm1","EPSILON32","MAX32","MIN32","roundTiesToEven","fround","$abs","$sign","hypot","value1","value2","div","sum","larg","$imul","imul","UINT16","xn","yn","xl","yl","log10","LN10","log2","sinh","tanh","trunc","fromCharCode","$fromCodePoint","fromCodePoint","raw","callSite","tpl","$at","codePointAt","pos","context","ENDS_WITH","$endsWith","endsWith","searchString","endPosition","end","search","isRegExp","MATCH","re","INCLUDES","includes","indexOf","STARTS_WITH","$startsWith","startsWith","iterated","_t","_i","point","done","LIBRARY","Iterators","$iterCreate","ITERATOR","BUGGY","FF_ITERATOR","KEYS","VALUES","returnThis","next","DEFAULT","IS_SET","FORCED","methods","IteratorPrototype","getMethod","kind","values","entries","DEF_VALUES","VALUES_BUG","$native","$default","$entries","$anyNative","descriptor","createHTML","anchor","quot","attribute","p1","toLowerCase","big","blink","bold","fixed","fontcolor","color","fontsize","size","italics","link","url","small","strike","sub","sup","isArrayIter","getIterFn","iter","from","arrayLike","step","mapfn","mapping","iterFn","ret","ArrayProto","getIteratorMethod","SAFE_CLOSING","riter","skipClosing","arr","of","arrayJoin","separator","method","html","begin","klass","start","upTo","cloned","$sort","sort","comparefn","$forEach","STRICT","callbackfn","asc","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","NO_HOLES","SPECIES","original","$map","map","$filter","filter","$some","some","$every","every","$reduce","reduce","memo","isRight","reduceRight","$indexOf","searchElement","lastIndexOf","copyWithin","to","inc","UNSCOPABLES","fill","endPos","$find","forced","find","findIndex","addToUnscopables","Arguments","$flags","$RegExp","re1","re2","CORRECT_NEW","tiRE","piRE","fiU","proxy","ignoreCase","multiline","unicode","sticky","define","flags","$match","regexp","SYMBOL","fns","strfn","rxfn","REPLACE","$replace","searchValue","replaceValue","SEARCH","$search","SPLIT","$split","_split","$push","$SPLIT","LENGTH","LAST_INDEX","NPCG","limit","separator2","lastIndex","lastLength","output","lastLastIndex","splitLimit","separatorCopy","Internal","GenericPromiseCapability","anInstance","forOf","speciesConstructor","task","microtask","PROMISE","process","$Promise","isNode","empty","promise","resolve","FakePromise","PromiseRejectionEvent","then","sameConstructor","isThenable","newPromiseCapability","PromiseCapability","reject","$$resolve","$$reject","perform","error","notify","isReject","_n","chain","_c","_v","ok","_s","run","reaction","handler","fail","domain","_h","onHandleUnhandled","enter","exit","onUnhandled","abrupt","console","isUnhandled","emit","onunhandledrejection","reason","_a","onrejectionhandled","$reject","_d","_w","$resolve","wrapper","Promise","executor","err","onFulfilled","onRejected","catch","r","capability","all","iterable","remaining","$index","alreadyCalled","race","defer","channel","port","cel","setTask","setImmediate","clearTask","clearImmediate","MessageChannel","counter","queue","ONREADYSTATECHANGE","listener","event","nextTick","port2","port1","onmessage","postMessage","addEventListener","importScripts","removeChild","setTimeout","clear","head","last","macrotask","Observer","MutationObserver","WebKitMutationObserver","flush","parent","toggle","node","createTextNode","observe","characterData","strong","Map","entry","getEntry","v","redefineAll","$iterDefine","setSpecies","SIZE","_f","getConstructor","ADDER","_l","delete","prev","setStrong","$iterDetect","common","IS_WEAK","fixMethod","add","instance","HASNT_CHAINING","THROWS_ON_PRIMITIVES","ACCEPT_ITERABLES","BUGGY_ZERO","$instance","Set","InternalMap","each","weak","uncaughtFrozenStore","ufstore","tmp","WeakMap","$WeakMap","createArrayMethod","$has","arrayFind","arrayFindIndex","UncaughtFrozenStore","findUncaughtFrozen","splice","WeakSet","_apply","thisArgument","argumentsList","Reflect","Target","newTarget","$args","propertyKey","attributes","deleteProperty","desc","Enumerate","enumerate","receiver","getProto","ownKeys","V","existingDescriptor","ownDesc","setProto","now","Date","getTime","toJSON","toISOString","pv","lz","num","d","getUTCFullYear","getUTCMilliseconds","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","DateProto","INVALID_DATE","hint","$typed","buffer","ArrayBuffer","$ArrayBuffer","$DataView","DataView","$isView","ABV","isView","$slice","VIEW","ARRAY_BUFFER","CONSTR","byteLength","final","viewS","viewT","setUint8","getUint8","Typed","TYPED","TypedArrayConstructors","arrayFill","DATA_VIEW","WRONG_LENGTH","WRONG_INDEX","BaseBuffer","BUFFER","BYTE_LENGTH","BYTE_OFFSET","$BUFFER","$LENGTH","$OFFSET","packIEEE754","mLen","nBytes","eLen","eMax","eBias","rt","unpackIEEE754","nBits","unpackI32","bytes","packI8","packI16","packI32","packF64","packF32","addGetter","internal","view","isLittleEndian","numIndex","intIndex","_b","pack","reverse","conversion","validateArrayBufferArguments","numberLength","ArrayBufferProto","$setInt8","setInt8","getInt8","byteOffset","bufferLength","offset","getInt16","getUint16","getInt32","getUint32","getFloat32","getFloat64","setInt16","setUint16","setInt32","setUint32","setFloat32","setFloat64","init","Int8Array","$buffer","propertyDesc","same","createArrayIncludes","ArrayIterators","arrayCopyWithin","Uint8Array","SHARED_BUFFER","BYTES_PER_ELEMENT","arrayForEach","arrayFilter","arraySome","arrayEvery","arrayIncludes","arrayValues","arrayKeys","arrayEntries","arrayLastIndexOf","arrayReduce","arrayReduceRight","arraySort","arrayToString","arrayToLocaleString","toLocaleString","TYPED_CONSTRUCTOR","DEF_CONSTRUCTOR","ALL_CONSTRUCTORS","TYPED_ARRAY","allocate","LITTLE_ENDIAN","Uint16Array","FORCED_SET","strictToLength","SAME","toOffset","BYTES","validate","speciesFromList","list","fromList","$from","$of","TO_LOCALE_BUG","$toLocaleString","predicate","middle","subarray","$begin","$set","$iterators","isTAIndex","$getDesc","$setDesc","$TypedArrayPrototype$","CLAMPED","ISNT_UINT8","GETTER","SETTER","TypedArray","TAC","TypedArrayPrototype","getter","o","round","addElement","$offset","$length","$len","$nativeIterator","CORRECT_ITER_NAME","$iterator","isIterable","Uint8ClampedArray","Int16Array","Int32Array","Uint32Array","Float32Array","Float64Array","$includes","at","$pad","padStart","maxLength","fillString","left","stringLength","fillStr","intMaxLength","fillLen","stringFiller","padEnd","trimLeft","trimRight","getFlags","RegExpProto","$RegExpStringIterator","_r","matchAll","rx","getOwnPropertyDescriptors","getDesc","$values","isEntries","__defineGetter__","__defineSetter__","__lookupGetter__","__lookupSetter__","isError","iaddh","x0","x1","y0","y1","$x0","$x1","$y0","isubh","imulh","u","$u","$v","u0","v0","u1","v1","umulh","metadata","toMetaKey","ordinaryDefineOwnMetadata","defineMetadata","metadataKey","metadataValue","targetKey","getOrCreateMetadataMap","targetMetadata","keyMetadata","ordinaryHasOwnMetadata","MetadataKey","metadataMap","ordinaryGetOwnMetadata","MetadataValue","ordinaryOwnMetadataKeys","_","deleteMetadata","ordinaryGetMetadata","hasOwn","getMetadata","ordinaryMetadataKeys","oKeys","pKeys","getMetadataKeys","getOwnMetadata","getOwnMetadataKeys","ordinaryHasMetadata","hasMetadata","hasOwnMetadata","decorator","$task","TO_STRING_TAG","ArrayValues","collections","Collection","partial","navigator","MSIE","userAgent","time","setInterval","path","pargs","holder","amd"],"mappings":";;;;;;CAMC,SAASA,EAAKC,EAAKC,GACpB,cACS,SAAUC,GAKT,QAASC,qBAAoBC,GAG5B,GAAGC,EAAiBD,GACnB,MAAOC,GAAiBD,GAAUE,OAGnC,IAAIC,GAASF,EAAiBD,IAC7BE,WACAE,GAAIJ,EACJK,QAAQ,EAUT,OANAP,GAAQE,GAAUM,KAAKH,EAAOD,QAASC,EAAQA,EAAOD,QAASH,qBAG/DI,EAAOE,QAAS,EAGTF,EAAOD,QAvBf,GAAID,KAqCJ,OATAF,qBAAoBQ,EAAIT,EAGxBC,oBAAoBS,EAAIP,EAGxBF,oBAAoBU,EAAI,GAGjBV,oBAAoB,KAK/B,SAASI,EAAQD,EAASH,GAE/BA,EAAoB,GACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,IACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,KACpBA,EAAoB,K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","file":"shim.min.js"}
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/core/_.js b/node_modules/babel-register/node_modules/core-js/core/_.js
new file mode 100644
index 0000000..8a99f70
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/core/_.js
@@ -0,0 +1,2 @@
+require('../modules/core.function.part');
+module.exports = require('../modules/_core')._;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/core/delay.js b/node_modules/babel-register/node_modules/core-js/core/delay.js
new file mode 100644
index 0000000..1885738
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/core/delay.js
@@ -0,0 +1,2 @@
+require('../modules/core.delay');
+module.exports = require('../modules/_core').delay;
diff --git a/node_modules/babel-register/node_modules/core-js/core/dict.js b/node_modules/babel-register/node_modules/core-js/core/dict.js
new file mode 100644
index 0000000..da84a8d
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/core/dict.js
@@ -0,0 +1,2 @@
+require('../modules/core.dict');
+module.exports = require('../modules/_core').Dict;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/core/function.js b/node_modules/babel-register/node_modules/core-js/core/function.js
new file mode 100644
index 0000000..3b8d013
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/core/function.js
@@ -0,0 +1,2 @@
+require('../modules/core.function.part');
+module.exports = require('../modules/_core').Function;
diff --git a/node_modules/babel-register/node_modules/core-js/core/index.js b/node_modules/babel-register/node_modules/core-js/core/index.js
new file mode 100644
index 0000000..2b20fd9
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/core/index.js
@@ -0,0 +1,15 @@
+require('../modules/core.dict');
+require('../modules/core.get-iterator-method');
+require('../modules/core.get-iterator');
+require('../modules/core.is-iterable');
+require('../modules/core.delay');
+require('../modules/core.function.part');
+require('../modules/core.object.is-object');
+require('../modules/core.object.classof');
+require('../modules/core.object.define');
+require('../modules/core.object.make');
+require('../modules/core.number.iterator');
+require('../modules/core.regexp.escape');
+require('../modules/core.string.escape-html');
+require('../modules/core.string.unescape-html');
+module.exports = require('../modules/_core');
diff --git a/node_modules/babel-register/node_modules/core-js/core/number.js b/node_modules/babel-register/node_modules/core-js/core/number.js
new file mode 100644
index 0000000..62f632c
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/core/number.js
@@ -0,0 +1,2 @@
+require('../modules/core.number.iterator');
+module.exports = require('../modules/_core').Number;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/core/object.js b/node_modules/babel-register/node_modules/core-js/core/object.js
new file mode 100644
index 0000000..04e539c
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/core/object.js
@@ -0,0 +1,5 @@
+require('../modules/core.object.is-object');
+require('../modules/core.object.classof');
+require('../modules/core.object.define');
+require('../modules/core.object.make');
+module.exports = require('../modules/_core').Object;
diff --git a/node_modules/babel-register/node_modules/core-js/core/regexp.js b/node_modules/babel-register/node_modules/core-js/core/regexp.js
new file mode 100644
index 0000000..3e04c51
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/core/regexp.js
@@ -0,0 +1,2 @@
+require('../modules/core.regexp.escape');
+module.exports = require('../modules/_core').RegExp;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/core/string.js b/node_modules/babel-register/node_modules/core-js/core/string.js
new file mode 100644
index 0000000..8da740c
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/core/string.js
@@ -0,0 +1,3 @@
+require('../modules/core.string.escape-html');
+require('../modules/core.string.unescape-html');
+module.exports = require('../modules/_core').String;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/es5/index.js b/node_modules/babel-register/node_modules/core-js/es5/index.js
new file mode 100644
index 0000000..580f1a6
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/es5/index.js
@@ -0,0 +1,37 @@
+require('../modules/es6.object.create');
+require('../modules/es6.object.define-property');
+require('../modules/es6.object.define-properties');
+require('../modules/es6.object.get-own-property-descriptor');
+require('../modules/es6.object.get-prototype-of');
+require('../modules/es6.object.keys');
+require('../modules/es6.object.get-own-property-names');
+require('../modules/es6.object.freeze');
+require('../modules/es6.object.seal');
+require('../modules/es6.object.prevent-extensions');
+require('../modules/es6.object.is-frozen');
+require('../modules/es6.object.is-sealed');
+require('../modules/es6.object.is-extensible');
+require('../modules/es6.function.bind');
+require('../modules/es6.array.is-array');
+require('../modules/es6.array.join');
+require('../modules/es6.array.slice');
+require('../modules/es6.array.sort');
+require('../modules/es6.array.for-each');
+require('../modules/es6.array.map');
+require('../modules/es6.array.filter');
+require('../modules/es6.array.some');
+require('../modules/es6.array.every');
+require('../modules/es6.array.reduce');
+require('../modules/es6.array.reduce-right');
+require('../modules/es6.array.index-of');
+require('../modules/es6.array.last-index-of');
+require('../modules/es6.number.to-fixed');
+require('../modules/es6.number.to-precision');
+require('../modules/es6.date.now');
+require('../modules/es6.date.to-iso-string');
+require('../modules/es6.date.to-json');
+require('../modules/es6.parse-int');
+require('../modules/es6.parse-float');
+require('../modules/es6.string.trim');
+require('../modules/es6.regexp.to-string');
+module.exports = require('../modules/_core');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/es6/array.js b/node_modules/babel-register/node_modules/core-js/es6/array.js
new file mode 100644
index 0000000..428d3e8
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/es6/array.js
@@ -0,0 +1,23 @@
+require('../modules/es6.string.iterator');
+require('../modules/es6.array.is-array');
+require('../modules/es6.array.from');
+require('../modules/es6.array.of');
+require('../modules/es6.array.join');
+require('../modules/es6.array.slice');
+require('../modules/es6.array.sort');
+require('../modules/es6.array.for-each');
+require('../modules/es6.array.map');
+require('../modules/es6.array.filter');
+require('../modules/es6.array.some');
+require('../modules/es6.array.every');
+require('../modules/es6.array.reduce');
+require('../modules/es6.array.reduce-right');
+require('../modules/es6.array.index-of');
+require('../modules/es6.array.last-index-of');
+require('../modules/es6.array.copy-within');
+require('../modules/es6.array.fill');
+require('../modules/es6.array.find');
+require('../modules/es6.array.find-index');
+require('../modules/es6.array.species');
+require('../modules/es6.array.iterator');
+module.exports = require('../modules/_core').Array;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/es6/date.js b/node_modules/babel-register/node_modules/core-js/es6/date.js
new file mode 100644
index 0000000..dfa3be0
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/es6/date.js
@@ -0,0 +1,6 @@
+require('../modules/es6.date.now');
+require('../modules/es6.date.to-json');
+require('../modules/es6.date.to-iso-string');
+require('../modules/es6.date.to-string');
+require('../modules/es6.date.to-primitive');
+module.exports = Date;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/es6/function.js b/node_modules/babel-register/node_modules/core-js/es6/function.js
new file mode 100644
index 0000000..ff685da
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/es6/function.js
@@ -0,0 +1,4 @@
+require('../modules/es6.function.bind');
+require('../modules/es6.function.name');
+require('../modules/es6.function.has-instance');
+module.exports = require('../modules/_core').Function;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/es6/index.js b/node_modules/babel-register/node_modules/core-js/es6/index.js
new file mode 100644
index 0000000..59df509
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/es6/index.js
@@ -0,0 +1,138 @@
+require('../modules/es6.symbol');
+require('../modules/es6.object.create');
+require('../modules/es6.object.define-property');
+require('../modules/es6.object.define-properties');
+require('../modules/es6.object.get-own-property-descriptor');
+require('../modules/es6.object.get-prototype-of');
+require('../modules/es6.object.keys');
+require('../modules/es6.object.get-own-property-names');
+require('../modules/es6.object.freeze');
+require('../modules/es6.object.seal');
+require('../modules/es6.object.prevent-extensions');
+require('../modules/es6.object.is-frozen');
+require('../modules/es6.object.is-sealed');
+require('../modules/es6.object.is-extensible');
+require('../modules/es6.object.assign');
+require('../modules/es6.object.is');
+require('../modules/es6.object.set-prototype-of');
+require('../modules/es6.object.to-string');
+require('../modules/es6.function.bind');
+require('../modules/es6.function.name');
+require('../modules/es6.function.has-instance');
+require('../modules/es6.parse-int');
+require('../modules/es6.parse-float');
+require('../modules/es6.number.constructor');
+require('../modules/es6.number.to-fixed');
+require('../modules/es6.number.to-precision');
+require('../modules/es6.number.epsilon');
+require('../modules/es6.number.is-finite');
+require('../modules/es6.number.is-integer');
+require('../modules/es6.number.is-nan');
+require('../modules/es6.number.is-safe-integer');
+require('../modules/es6.number.max-safe-integer');
+require('../modules/es6.number.min-safe-integer');
+require('../modules/es6.number.parse-float');
+require('../modules/es6.number.parse-int');
+require('../modules/es6.math.acosh');
+require('../modules/es6.math.asinh');
+require('../modules/es6.math.atanh');
+require('../modules/es6.math.cbrt');
+require('../modules/es6.math.clz32');
+require('../modules/es6.math.cosh');
+require('../modules/es6.math.expm1');
+require('../modules/es6.math.fround');
+require('../modules/es6.math.hypot');
+require('../modules/es6.math.imul');
+require('../modules/es6.math.log10');
+require('../modules/es6.math.log1p');
+require('../modules/es6.math.log2');
+require('../modules/es6.math.sign');
+require('../modules/es6.math.sinh');
+require('../modules/es6.math.tanh');
+require('../modules/es6.math.trunc');
+require('../modules/es6.string.from-code-point');
+require('../modules/es6.string.raw');
+require('../modules/es6.string.trim');
+require('../modules/es6.string.iterator');
+require('../modules/es6.string.code-point-at');
+require('../modules/es6.string.ends-with');
+require('../modules/es6.string.includes');
+require('../modules/es6.string.repeat');
+require('../modules/es6.string.starts-with');
+require('../modules/es6.string.anchor');
+require('../modules/es6.string.big');
+require('../modules/es6.string.blink');
+require('../modules/es6.string.bold');
+require('../modules/es6.string.fixed');
+require('../modules/es6.string.fontcolor');
+require('../modules/es6.string.fontsize');
+require('../modules/es6.string.italics');
+require('../modules/es6.string.link');
+require('../modules/es6.string.small');
+require('../modules/es6.string.strike');
+require('../modules/es6.string.sub');
+require('../modules/es6.string.sup');
+require('../modules/es6.date.now');
+require('../modules/es6.date.to-json');
+require('../modules/es6.date.to-iso-string');
+require('../modules/es6.date.to-string');
+require('../modules/es6.date.to-primitive');
+require('../modules/es6.array.is-array');
+require('../modules/es6.array.from');
+require('../modules/es6.array.of');
+require('../modules/es6.array.join');
+require('../modules/es6.array.slice');
+require('../modules/es6.array.sort');
+require('../modules/es6.array.for-each');
+require('../modules/es6.array.map');
+require('../modules/es6.array.filter');
+require('../modules/es6.array.some');
+require('../modules/es6.array.every');
+require('../modules/es6.array.reduce');
+require('../modules/es6.array.reduce-right');
+require('../modules/es6.array.index-of');
+require('../modules/es6.array.last-index-of');
+require('../modules/es6.array.copy-within');
+require('../modules/es6.array.fill');
+require('../modules/es6.array.find');
+require('../modules/es6.array.find-index');
+require('../modules/es6.array.species');
+require('../modules/es6.array.iterator');
+require('../modules/es6.regexp.constructor');
+require('../modules/es6.regexp.to-string');
+require('../modules/es6.regexp.flags');
+require('../modules/es6.regexp.match');
+require('../modules/es6.regexp.replace');
+require('../modules/es6.regexp.search');
+require('../modules/es6.regexp.split');
+require('../modules/es6.promise');
+require('../modules/es6.map');
+require('../modules/es6.set');
+require('../modules/es6.weak-map');
+require('../modules/es6.weak-set');
+require('../modules/es6.typed.array-buffer');
+require('../modules/es6.typed.data-view');
+require('../modules/es6.typed.int8-array');
+require('../modules/es6.typed.uint8-array');
+require('../modules/es6.typed.uint8-clamped-array');
+require('../modules/es6.typed.int16-array');
+require('../modules/es6.typed.uint16-array');
+require('../modules/es6.typed.int32-array');
+require('../modules/es6.typed.uint32-array');
+require('../modules/es6.typed.float32-array');
+require('../modules/es6.typed.float64-array');
+require('../modules/es6.reflect.apply');
+require('../modules/es6.reflect.construct');
+require('../modules/es6.reflect.define-property');
+require('../modules/es6.reflect.delete-property');
+require('../modules/es6.reflect.enumerate');
+require('../modules/es6.reflect.get');
+require('../modules/es6.reflect.get-own-property-descriptor');
+require('../modules/es6.reflect.get-prototype-of');
+require('../modules/es6.reflect.has');
+require('../modules/es6.reflect.is-extensible');
+require('../modules/es6.reflect.own-keys');
+require('../modules/es6.reflect.prevent-extensions');
+require('../modules/es6.reflect.set');
+require('../modules/es6.reflect.set-prototype-of');
+module.exports = require('../modules/_core');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/es6/map.js b/node_modules/babel-register/node_modules/core-js/es6/map.js
new file mode 100644
index 0000000..50f04c1
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/es6/map.js
@@ -0,0 +1,5 @@
+require('../modules/es6.object.to-string');
+require('../modules/es6.string.iterator');
+require('../modules/web.dom.iterable');
+require('../modules/es6.map');
+module.exports = require('../modules/_core').Map;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/es6/math.js b/node_modules/babel-register/node_modules/core-js/es6/math.js
new file mode 100644
index 0000000..f26b5b2
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/es6/math.js
@@ -0,0 +1,18 @@
+require('../modules/es6.math.acosh');
+require('../modules/es6.math.asinh');
+require('../modules/es6.math.atanh');
+require('../modules/es6.math.cbrt');
+require('../modules/es6.math.clz32');
+require('../modules/es6.math.cosh');
+require('../modules/es6.math.expm1');
+require('../modules/es6.math.fround');
+require('../modules/es6.math.hypot');
+require('../modules/es6.math.imul');
+require('../modules/es6.math.log10');
+require('../modules/es6.math.log1p');
+require('../modules/es6.math.log2');
+require('../modules/es6.math.sign');
+require('../modules/es6.math.sinh');
+require('../modules/es6.math.tanh');
+require('../modules/es6.math.trunc');
+module.exports = require('../modules/_core').Math;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/es6/number.js b/node_modules/babel-register/node_modules/core-js/es6/number.js
new file mode 100644
index 0000000..1dafcda
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/es6/number.js
@@ -0,0 +1,13 @@
+require('../modules/es6.number.constructor');
+require('../modules/es6.number.to-fixed');
+require('../modules/es6.number.to-precision');
+require('../modules/es6.number.epsilon');
+require('../modules/es6.number.is-finite');
+require('../modules/es6.number.is-integer');
+require('../modules/es6.number.is-nan');
+require('../modules/es6.number.is-safe-integer');
+require('../modules/es6.number.max-safe-integer');
+require('../modules/es6.number.min-safe-integer');
+require('../modules/es6.number.parse-float');
+require('../modules/es6.number.parse-int');
+module.exports = require('../modules/_core').Number;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/es6/object.js b/node_modules/babel-register/node_modules/core-js/es6/object.js
new file mode 100644
index 0000000..aada8c3
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/es6/object.js
@@ -0,0 +1,20 @@
+require('../modules/es6.symbol');
+require('../modules/es6.object.create');
+require('../modules/es6.object.define-property');
+require('../modules/es6.object.define-properties');
+require('../modules/es6.object.get-own-property-descriptor');
+require('../modules/es6.object.get-prototype-of');
+require('../modules/es6.object.keys');
+require('../modules/es6.object.get-own-property-names');
+require('../modules/es6.object.freeze');
+require('../modules/es6.object.seal');
+require('../modules/es6.object.prevent-extensions');
+require('../modules/es6.object.is-frozen');
+require('../modules/es6.object.is-sealed');
+require('../modules/es6.object.is-extensible');
+require('../modules/es6.object.assign');
+require('../modules/es6.object.is');
+require('../modules/es6.object.set-prototype-of');
+require('../modules/es6.object.to-string');
+
+module.exports = require('../modules/_core').Object;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/es6/parse-float.js b/node_modules/babel-register/node_modules/core-js/es6/parse-float.js
new file mode 100644
index 0000000..dad94dd
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/es6/parse-float.js
@@ -0,0 +1,2 @@
+require('../modules/es6.parse-float');
+module.exports = require('../modules/_core').parseFloat;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/es6/parse-int.js b/node_modules/babel-register/node_modules/core-js/es6/parse-int.js
new file mode 100644
index 0000000..08a2099
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/es6/parse-int.js
@@ -0,0 +1,2 @@
+require('../modules/es6.parse-int');
+module.exports = require('../modules/_core').parseInt;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/es6/promise.js b/node_modules/babel-register/node_modules/core-js/es6/promise.js
new file mode 100644
index 0000000..c901c85
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/es6/promise.js
@@ -0,0 +1,5 @@
+require('../modules/es6.object.to-string');
+require('../modules/es6.string.iterator');
+require('../modules/web.dom.iterable');
+require('../modules/es6.promise');
+module.exports = require('../modules/_core').Promise;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/es6/reflect.js b/node_modules/babel-register/node_modules/core-js/es6/reflect.js
new file mode 100644
index 0000000..18bdb3c
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/es6/reflect.js
@@ -0,0 +1,15 @@
+require('../modules/es6.reflect.apply');
+require('../modules/es6.reflect.construct');
+require('../modules/es6.reflect.define-property');
+require('../modules/es6.reflect.delete-property');
+require('../modules/es6.reflect.enumerate');
+require('../modules/es6.reflect.get');
+require('../modules/es6.reflect.get-own-property-descriptor');
+require('../modules/es6.reflect.get-prototype-of');
+require('../modules/es6.reflect.has');
+require('../modules/es6.reflect.is-extensible');
+require('../modules/es6.reflect.own-keys');
+require('../modules/es6.reflect.prevent-extensions');
+require('../modules/es6.reflect.set');
+require('../modules/es6.reflect.set-prototype-of');
+module.exports = require('../modules/_core').Reflect;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/es6/regexp.js b/node_modules/babel-register/node_modules/core-js/es6/regexp.js
new file mode 100644
index 0000000..27cc827
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/es6/regexp.js
@@ -0,0 +1,8 @@
+require('../modules/es6.regexp.constructor');
+require('../modules/es6.regexp.to-string');
+require('../modules/es6.regexp.flags');
+require('../modules/es6.regexp.match');
+require('../modules/es6.regexp.replace');
+require('../modules/es6.regexp.search');
+require('../modules/es6.regexp.split');
+module.exports = require('../modules/_core').RegExp;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/es6/set.js b/node_modules/babel-register/node_modules/core-js/es6/set.js
new file mode 100644
index 0000000..2a2557c
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/es6/set.js
@@ -0,0 +1,5 @@
+require('../modules/es6.object.to-string');
+require('../modules/es6.string.iterator');
+require('../modules/web.dom.iterable');
+require('../modules/es6.set');
+module.exports = require('../modules/_core').Set;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/es6/string.js b/node_modules/babel-register/node_modules/core-js/es6/string.js
new file mode 100644
index 0000000..8303362
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/es6/string.js
@@ -0,0 +1,27 @@
+require('../modules/es6.string.from-code-point');
+require('../modules/es6.string.raw');
+require('../modules/es6.string.trim');
+require('../modules/es6.string.iterator');
+require('../modules/es6.string.code-point-at');
+require('../modules/es6.string.ends-with');
+require('../modules/es6.string.includes');
+require('../modules/es6.string.repeat');
+require('../modules/es6.string.starts-with');
+require('../modules/es6.string.anchor');
+require('../modules/es6.string.big');
+require('../modules/es6.string.blink');
+require('../modules/es6.string.bold');
+require('../modules/es6.string.fixed');
+require('../modules/es6.string.fontcolor');
+require('../modules/es6.string.fontsize');
+require('../modules/es6.string.italics');
+require('../modules/es6.string.link');
+require('../modules/es6.string.small');
+require('../modules/es6.string.strike');
+require('../modules/es6.string.sub');
+require('../modules/es6.string.sup');
+require('../modules/es6.regexp.match');
+require('../modules/es6.regexp.replace');
+require('../modules/es6.regexp.search');
+require('../modules/es6.regexp.split');
+module.exports = require('../modules/_core').String;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/es6/symbol.js b/node_modules/babel-register/node_modules/core-js/es6/symbol.js
new file mode 100644
index 0000000..e578e3a
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/es6/symbol.js
@@ -0,0 +1,3 @@
+require('../modules/es6.symbol');
+require('../modules/es6.object.to-string');
+module.exports = require('../modules/_core').Symbol;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/es6/typed.js b/node_modules/babel-register/node_modules/core-js/es6/typed.js
new file mode 100644
index 0000000..e0364e6
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/es6/typed.js
@@ -0,0 +1,13 @@
+require('../modules/es6.typed.array-buffer');
+require('../modules/es6.typed.data-view');
+require('../modules/es6.typed.int8-array');
+require('../modules/es6.typed.uint8-array');
+require('../modules/es6.typed.uint8-clamped-array');
+require('../modules/es6.typed.int16-array');
+require('../modules/es6.typed.uint16-array');
+require('../modules/es6.typed.int32-array');
+require('../modules/es6.typed.uint32-array');
+require('../modules/es6.typed.float32-array');
+require('../modules/es6.typed.float64-array');
+require('../modules/es6.object.to-string');
+module.exports = require('../modules/_core');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/es6/weak-map.js b/node_modules/babel-register/node_modules/core-js/es6/weak-map.js
new file mode 100644
index 0000000..655866c
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/es6/weak-map.js
@@ -0,0 +1,4 @@
+require('../modules/es6.object.to-string');
+require('../modules/es6.array.iterator');
+require('../modules/es6.weak-map');
+module.exports = require('../modules/_core').WeakMap;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/es6/weak-set.js b/node_modules/babel-register/node_modules/core-js/es6/weak-set.js
new file mode 100644
index 0000000..eef1af2
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/es6/weak-set.js
@@ -0,0 +1,4 @@
+require('../modules/es6.object.to-string');
+require('../modules/web.dom.iterable');
+require('../modules/es6.weak-set');
+module.exports = require('../modules/_core').WeakSet;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/es7/array.js b/node_modules/babel-register/node_modules/core-js/es7/array.js
new file mode 100644
index 0000000..9fb57fa
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/es7/array.js
@@ -0,0 +1,2 @@
+require('../modules/es7.array.includes');
+module.exports = require('../modules/_core').Array;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/es7/error.js b/node_modules/babel-register/node_modules/core-js/es7/error.js
new file mode 100644
index 0000000..f0bb260
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/es7/error.js
@@ -0,0 +1,2 @@
+require('../modules/es7.error.is-error');
+module.exports = require('../modules/_core').Error;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/es7/index.js b/node_modules/babel-register/node_modules/core-js/es7/index.js
new file mode 100644
index 0000000..f5dd926
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/es7/index.js
@@ -0,0 +1,32 @@
+require('../modules/es7.array.includes');
+require('../modules/es7.string.at');
+require('../modules/es7.string.pad-start');
+require('../modules/es7.string.pad-end');
+require('../modules/es7.string.trim-left');
+require('../modules/es7.string.trim-right');
+require('../modules/es7.string.match-all');
+require('../modules/es7.object.get-own-property-descriptors');
+require('../modules/es7.object.values');
+require('../modules/es7.object.entries');
+require('../modules/es7.object.define-getter');
+require('../modules/es7.object.define-setter');
+require('../modules/es7.object.lookup-getter');
+require('../modules/es7.object.lookup-setter');
+require('../modules/es7.map.to-json');
+require('../modules/es7.set.to-json');
+require('../modules/es7.system.global');
+require('../modules/es7.error.is-error');
+require('../modules/es7.math.iaddh');
+require('../modules/es7.math.isubh');
+require('../modules/es7.math.imulh');
+require('../modules/es7.math.umulh');
+require('../modules/es7.reflect.define-metadata');
+require('../modules/es7.reflect.delete-metadata');
+require('../modules/es7.reflect.get-metadata');
+require('../modules/es7.reflect.get-metadata-keys');
+require('../modules/es7.reflect.get-own-metadata');
+require('../modules/es7.reflect.get-own-metadata-keys');
+require('../modules/es7.reflect.has-metadata');
+require('../modules/es7.reflect.has-own-metadata');
+require('../modules/es7.reflect.metadata');
+module.exports = require('../modules/_core');
diff --git a/node_modules/babel-register/node_modules/core-js/es7/map.js b/node_modules/babel-register/node_modules/core-js/es7/map.js
new file mode 100644
index 0000000..dfa32fd
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/es7/map.js
@@ -0,0 +1,2 @@
+require('../modules/es7.map.to-json');
+module.exports = require('../modules/_core').Map;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/es7/math.js b/node_modules/babel-register/node_modules/core-js/es7/math.js
new file mode 100644
index 0000000..bdb8a81
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/es7/math.js
@@ -0,0 +1,5 @@
+require('../modules/es7.math.iaddh');
+require('../modules/es7.math.isubh');
+require('../modules/es7.math.imulh');
+require('../modules/es7.math.umulh');
+module.exports = require('../modules/_core').Math;
diff --git a/node_modules/babel-register/node_modules/core-js/es7/object.js b/node_modules/babel-register/node_modules/core-js/es7/object.js
new file mode 100644
index 0000000..c76b754
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/es7/object.js
@@ -0,0 +1,8 @@
+require('../modules/es7.object.get-own-property-descriptors');
+require('../modules/es7.object.values');
+require('../modules/es7.object.entries');
+require('../modules/es7.object.define-getter');
+require('../modules/es7.object.define-setter');
+require('../modules/es7.object.lookup-getter');
+require('../modules/es7.object.lookup-setter');
+module.exports = require('../modules/_core').Object;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/es7/reflect.js b/node_modules/babel-register/node_modules/core-js/es7/reflect.js
new file mode 100644
index 0000000..f0b69cb
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/es7/reflect.js
@@ -0,0 +1,10 @@
+require('../modules/es7.reflect.define-metadata');
+require('../modules/es7.reflect.delete-metadata');
+require('../modules/es7.reflect.get-metadata');
+require('../modules/es7.reflect.get-metadata-keys');
+require('../modules/es7.reflect.get-own-metadata');
+require('../modules/es7.reflect.get-own-metadata-keys');
+require('../modules/es7.reflect.has-metadata');
+require('../modules/es7.reflect.has-own-metadata');
+require('../modules/es7.reflect.metadata');
+module.exports = require('../modules/_core').Reflect;
diff --git a/node_modules/babel-register/node_modules/core-js/es7/set.js b/node_modules/babel-register/node_modules/core-js/es7/set.js
new file mode 100644
index 0000000..b5c19c4
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/es7/set.js
@@ -0,0 +1,2 @@
+require('../modules/es7.set.to-json');
+module.exports = require('../modules/_core').Set;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/es7/string.js b/node_modules/babel-register/node_modules/core-js/es7/string.js
new file mode 100644
index 0000000..6e413b4
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/es7/string.js
@@ -0,0 +1,7 @@
+require('../modules/es7.string.at');
+require('../modules/es7.string.pad-start');
+require('../modules/es7.string.pad-end');
+require('../modules/es7.string.trim-left');
+require('../modules/es7.string.trim-right');
+require('../modules/es7.string.match-all');
+module.exports = require('../modules/_core').String;
diff --git a/node_modules/babel-register/node_modules/core-js/es7/system.js b/node_modules/babel-register/node_modules/core-js/es7/system.js
new file mode 100644
index 0000000..6d321c7
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/es7/system.js
@@ -0,0 +1,2 @@
+require('../modules/es7.system.global');
+module.exports = require('../modules/_core').System;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/_.js b/node_modules/babel-register/node_modules/core-js/fn/_.js
new file mode 100644
index 0000000..8a99f70
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/_.js
@@ -0,0 +1,2 @@
+require('../modules/core.function.part');
+module.exports = require('../modules/_core')._;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/array/concat.js b/node_modules/babel-register/node_modules/core-js/fn/array/concat.js
new file mode 100644
index 0000000..de4bddf
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/array/concat.js
@@ -0,0 +1,4 @@
+// for a legacy code and future fixes
+module.exports = function(){
+ return Function.call.apply(Array.prototype.concat, arguments);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/array/copy-within.js b/node_modules/babel-register/node_modules/core-js/fn/array/copy-within.js
new file mode 100644
index 0000000..89e1de4
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/array/copy-within.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.array.copy-within');
+module.exports = require('../../modules/_core').Array.copyWithin;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/array/entries.js b/node_modules/babel-register/node_modules/core-js/fn/array/entries.js
new file mode 100644
index 0000000..f4feb26
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/array/entries.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.array.iterator');
+module.exports = require('../../modules/_core').Array.entries;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/array/every.js b/node_modules/babel-register/node_modules/core-js/fn/array/every.js
new file mode 100644
index 0000000..168844c
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/array/every.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.array.every');
+module.exports = require('../../modules/_core').Array.every;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/array/fill.js b/node_modules/babel-register/node_modules/core-js/fn/array/fill.js
new file mode 100644
index 0000000..b23ebfd
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/array/fill.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.array.fill');
+module.exports = require('../../modules/_core').Array.fill;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/array/filter.js b/node_modules/babel-register/node_modules/core-js/fn/array/filter.js
new file mode 100644
index 0000000..0023f0d
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/array/filter.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.array.filter');
+module.exports = require('../../modules/_core').Array.filter;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/array/find-index.js b/node_modules/babel-register/node_modules/core-js/fn/array/find-index.js
new file mode 100644
index 0000000..99e6bf1
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/array/find-index.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.array.find-index');
+module.exports = require('../../modules/_core').Array.findIndex;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/array/find.js b/node_modules/babel-register/node_modules/core-js/fn/array/find.js
new file mode 100644
index 0000000..f146ec2
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/array/find.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.array.find');
+module.exports = require('../../modules/_core').Array.find;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/array/for-each.js b/node_modules/babel-register/node_modules/core-js/fn/array/for-each.js
new file mode 100644
index 0000000..09e235f
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/array/for-each.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.array.for-each');
+module.exports = require('../../modules/_core').Array.forEach;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/array/from.js b/node_modules/babel-register/node_modules/core-js/fn/array/from.js
new file mode 100644
index 0000000..1f323fb
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/array/from.js
@@ -0,0 +1,3 @@
+require('../../modules/es6.string.iterator');
+require('../../modules/es6.array.from');
+module.exports = require('../../modules/_core').Array.from;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/array/includes.js b/node_modules/babel-register/node_modules/core-js/fn/array/includes.js
new file mode 100644
index 0000000..851d31f
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/array/includes.js
@@ -0,0 +1,2 @@
+require('../../modules/es7.array.includes');
+module.exports = require('../../modules/_core').Array.includes;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/array/index-of.js b/node_modules/babel-register/node_modules/core-js/fn/array/index-of.js
new file mode 100644
index 0000000..9ed8247
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/array/index-of.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.array.index-of');
+module.exports = require('../../modules/_core').Array.indexOf;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/array/index.js b/node_modules/babel-register/node_modules/core-js/fn/array/index.js
new file mode 100644
index 0000000..85bc77b
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/array/index.js
@@ -0,0 +1,24 @@
+require('../../modules/es6.string.iterator');
+require('../../modules/es6.array.is-array');
+require('../../modules/es6.array.from');
+require('../../modules/es6.array.of');
+require('../../modules/es6.array.join');
+require('../../modules/es6.array.slice');
+require('../../modules/es6.array.sort');
+require('../../modules/es6.array.for-each');
+require('../../modules/es6.array.map');
+require('../../modules/es6.array.filter');
+require('../../modules/es6.array.some');
+require('../../modules/es6.array.every');
+require('../../modules/es6.array.reduce');
+require('../../modules/es6.array.reduce-right');
+require('../../modules/es6.array.index-of');
+require('../../modules/es6.array.last-index-of');
+require('../../modules/es6.array.copy-within');
+require('../../modules/es6.array.fill');
+require('../../modules/es6.array.find');
+require('../../modules/es6.array.find-index');
+require('../../modules/es6.array.species');
+require('../../modules/es6.array.iterator');
+require('../../modules/es7.array.includes');
+module.exports = require('../../modules/_core').Array;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/array/is-array.js b/node_modules/babel-register/node_modules/core-js/fn/array/is-array.js
new file mode 100644
index 0000000..bbe7671
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/array/is-array.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.array.is-array');
+module.exports = require('../../modules/_core').Array.isArray;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/array/iterator.js b/node_modules/babel-register/node_modules/core-js/fn/array/iterator.js
new file mode 100644
index 0000000..ca93b78
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/array/iterator.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.array.iterator');
+module.exports = require('../../modules/_core').Array.values;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/array/join.js b/node_modules/babel-register/node_modules/core-js/fn/array/join.js
new file mode 100644
index 0000000..9beef18
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/array/join.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.array.join');
+module.exports = require('../../modules/_core').Array.join;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/array/keys.js b/node_modules/babel-register/node_modules/core-js/fn/array/keys.js
new file mode 100644
index 0000000..b44b921
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/array/keys.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.array.iterator');
+module.exports = require('../../modules/_core').Array.keys;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/array/last-index-of.js b/node_modules/babel-register/node_modules/core-js/fn/array/last-index-of.js
new file mode 100644
index 0000000..6dcc98a
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/array/last-index-of.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.array.last-index-of');
+module.exports = require('../../modules/_core').Array.lastIndexOf;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/array/map.js b/node_modules/babel-register/node_modules/core-js/fn/array/map.js
new file mode 100644
index 0000000..14b0f62
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/array/map.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.array.map');
+module.exports = require('../../modules/_core').Array.map;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/array/of.js b/node_modules/babel-register/node_modules/core-js/fn/array/of.js
new file mode 100644
index 0000000..652ee98
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/array/of.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.array.of');
+module.exports = require('../../modules/_core').Array.of;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/array/pop.js b/node_modules/babel-register/node_modules/core-js/fn/array/pop.js
new file mode 100644
index 0000000..b8414f6
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/array/pop.js
@@ -0,0 +1,4 @@
+// for a legacy code and future fixes
+module.exports = function(){
+ return Function.call.apply(Array.prototype.pop, arguments);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/array/push.js b/node_modules/babel-register/node_modules/core-js/fn/array/push.js
new file mode 100644
index 0000000..0353900
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/array/push.js
@@ -0,0 +1,4 @@
+// for a legacy code and future fixes
+module.exports = function(){
+ return Function.call.apply(Array.prototype.push, arguments);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/array/reduce-right.js b/node_modules/babel-register/node_modules/core-js/fn/array/reduce-right.js
new file mode 100644
index 0000000..1193ecb
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/array/reduce-right.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.array.reduce-right');
+module.exports = require('../../modules/_core').Array.reduceRight;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/array/reduce.js b/node_modules/babel-register/node_modules/core-js/fn/array/reduce.js
new file mode 100644
index 0000000..e2dee91
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/array/reduce.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.array.reduce');
+module.exports = require('../../modules/_core').Array.reduce;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/array/reverse.js b/node_modules/babel-register/node_modules/core-js/fn/array/reverse.js
new file mode 100644
index 0000000..6073429
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/array/reverse.js
@@ -0,0 +1,4 @@
+// for a legacy code and future fixes
+module.exports = function(){
+ return Function.call.apply(Array.prototype.reverse, arguments);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/array/shift.js b/node_modules/babel-register/node_modules/core-js/fn/array/shift.js
new file mode 100644
index 0000000..5002a60
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/array/shift.js
@@ -0,0 +1,4 @@
+// for a legacy code and future fixes
+module.exports = function(){
+ return Function.call.apply(Array.prototype.shift, arguments);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/array/slice.js b/node_modules/babel-register/node_modules/core-js/fn/array/slice.js
new file mode 100644
index 0000000..4914c2a
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/array/slice.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.array.slice');
+module.exports = require('../../modules/_core').Array.slice;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/array/some.js b/node_modules/babel-register/node_modules/core-js/fn/array/some.js
new file mode 100644
index 0000000..de28400
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/array/some.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.array.some');
+module.exports = require('../../modules/_core').Array.some;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/array/sort.js b/node_modules/babel-register/node_modules/core-js/fn/array/sort.js
new file mode 100644
index 0000000..29b6f3a
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/array/sort.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.array.sort');
+module.exports = require('../../modules/_core').Array.sort;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/array/splice.js b/node_modules/babel-register/node_modules/core-js/fn/array/splice.js
new file mode 100644
index 0000000..9d0bdbe
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/array/splice.js
@@ -0,0 +1,4 @@
+// for a legacy code and future fixes
+module.exports = function(){
+ return Function.call.apply(Array.prototype.splice, arguments);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/array/unshift.js b/node_modules/babel-register/node_modules/core-js/fn/array/unshift.js
new file mode 100644
index 0000000..63fe2dd
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/array/unshift.js
@@ -0,0 +1,4 @@
+// for a legacy code and future fixes
+module.exports = function(){
+ return Function.call.apply(Array.prototype.unshift, arguments);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/array/values.js b/node_modules/babel-register/node_modules/core-js/fn/array/values.js
new file mode 100644
index 0000000..ca93b78
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/array/values.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.array.iterator');
+module.exports = require('../../modules/_core').Array.values;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/array/virtual/copy-within.js b/node_modules/babel-register/node_modules/core-js/fn/array/virtual/copy-within.js
new file mode 100644
index 0000000..62172a9
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/array/virtual/copy-within.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.array.copy-within');
+module.exports = require('../../../modules/_entry-virtual')('Array').copyWithin;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/array/virtual/entries.js b/node_modules/babel-register/node_modules/core-js/fn/array/virtual/entries.js
new file mode 100644
index 0000000..1b198e3
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/array/virtual/entries.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.array.iterator');
+module.exports = require('../../../modules/_entry-virtual')('Array').entries;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/array/virtual/every.js b/node_modules/babel-register/node_modules/core-js/fn/array/virtual/every.js
new file mode 100644
index 0000000..a72e585
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/array/virtual/every.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.array.every');
+module.exports = require('../../../modules/_entry-virtual')('Array').every;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/array/virtual/fill.js b/node_modules/babel-register/node_modules/core-js/fn/array/virtual/fill.js
new file mode 100644
index 0000000..6018b37
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/array/virtual/fill.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.array.fill');
+module.exports = require('../../../modules/_entry-virtual')('Array').fill;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/array/virtual/filter.js b/node_modules/babel-register/node_modules/core-js/fn/array/virtual/filter.js
new file mode 100644
index 0000000..46a14f1
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/array/virtual/filter.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.array.filter');
+module.exports = require('../../../modules/_entry-virtual')('Array').filter;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/array/virtual/find-index.js b/node_modules/babel-register/node_modules/core-js/fn/array/virtual/find-index.js
new file mode 100644
index 0000000..ef96165
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/array/virtual/find-index.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.array.find-index');
+module.exports = require('../../../modules/_entry-virtual')('Array').findIndex;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/array/virtual/find.js b/node_modules/babel-register/node_modules/core-js/fn/array/virtual/find.js
new file mode 100644
index 0000000..6cffee5
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/array/virtual/find.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.array.find');
+module.exports = require('../../../modules/_entry-virtual')('Array').find;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/array/virtual/for-each.js b/node_modules/babel-register/node_modules/core-js/fn/array/virtual/for-each.js
new file mode 100644
index 0000000..0c3ed44
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/array/virtual/for-each.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.array.for-each');
+module.exports = require('../../../modules/_entry-virtual')('Array').forEach;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/array/virtual/includes.js b/node_modules/babel-register/node_modules/core-js/fn/array/virtual/includes.js
new file mode 100644
index 0000000..bf9031d
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/array/virtual/includes.js
@@ -0,0 +1,2 @@
+require('../../../modules/es7.array.includes');
+module.exports = require('../../../modules/_entry-virtual')('Array').includes;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/array/virtual/index-of.js b/node_modules/babel-register/node_modules/core-js/fn/array/virtual/index-of.js
new file mode 100644
index 0000000..cf6f36e
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/array/virtual/index-of.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.array.index-of');
+module.exports = require('../../../modules/_entry-virtual')('Array').indexOf;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/array/virtual/index.js b/node_modules/babel-register/node_modules/core-js/fn/array/virtual/index.js
new file mode 100644
index 0000000..ff554a2
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/array/virtual/index.js
@@ -0,0 +1,20 @@
+require('../../../modules/es6.array.join');
+require('../../../modules/es6.array.slice');
+require('../../../modules/es6.array.sort');
+require('../../../modules/es6.array.for-each');
+require('../../../modules/es6.array.map');
+require('../../../modules/es6.array.filter');
+require('../../../modules/es6.array.some');
+require('../../../modules/es6.array.every');
+require('../../../modules/es6.array.reduce');
+require('../../../modules/es6.array.reduce-right');
+require('../../../modules/es6.array.index-of');
+require('../../../modules/es6.array.last-index-of');
+require('../../../modules/es6.string.iterator');
+require('../../../modules/es6.array.iterator');
+require('../../../modules/es6.array.copy-within');
+require('../../../modules/es6.array.fill');
+require('../../../modules/es6.array.find');
+require('../../../modules/es6.array.find-index');
+require('../../../modules/es7.array.includes');
+module.exports = require('../../../modules/_entry-virtual')('Array');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/array/virtual/iterator.js b/node_modules/babel-register/node_modules/core-js/fn/array/virtual/iterator.js
new file mode 100644
index 0000000..7812b3c
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/array/virtual/iterator.js
@@ -0,0 +1,2 @@
+require('../../../modules/core.number.iterator');
+module.exports = require('../../../modules/_iterators').Array;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/array/virtual/join.js b/node_modules/babel-register/node_modules/core-js/fn/array/virtual/join.js
new file mode 100644
index 0000000..3f7d5cf
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/array/virtual/join.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.array.join');
+module.exports = require('../../../modules/_entry-virtual')('Array').join;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/array/virtual/keys.js b/node_modules/babel-register/node_modules/core-js/fn/array/virtual/keys.js
new file mode 100644
index 0000000..16c0968
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/array/virtual/keys.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.array.iterator');
+module.exports = require('../../../modules/_entry-virtual')('Array').keys;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/array/virtual/last-index-of.js b/node_modules/babel-register/node_modules/core-js/fn/array/virtual/last-index-of.js
new file mode 100644
index 0000000..cdd79b7
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/array/virtual/last-index-of.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.array.last-index-of');
+module.exports = require('../../../modules/_entry-virtual')('Array').lastIndexOf;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/array/virtual/map.js b/node_modules/babel-register/node_modules/core-js/fn/array/virtual/map.js
new file mode 100644
index 0000000..14bffda
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/array/virtual/map.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.array.map');
+module.exports = require('../../../modules/_entry-virtual')('Array').map;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/array/virtual/reduce-right.js b/node_modules/babel-register/node_modules/core-js/fn/array/virtual/reduce-right.js
new file mode 100644
index 0000000..61313e8
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/array/virtual/reduce-right.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.array.reduce-right');
+module.exports = require('../../../modules/_entry-virtual')('Array').reduceRight;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/array/virtual/reduce.js b/node_modules/babel-register/node_modules/core-js/fn/array/virtual/reduce.js
new file mode 100644
index 0000000..1b05905
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/array/virtual/reduce.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.array.reduce');
+module.exports = require('../../../modules/_entry-virtual')('Array').reduce;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/array/virtual/slice.js b/node_modules/babel-register/node_modules/core-js/fn/array/virtual/slice.js
new file mode 100644
index 0000000..b28d1ab
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/array/virtual/slice.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.array.slice');
+module.exports = require('../../../modules/_entry-virtual')('Array').slice;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/array/virtual/some.js b/node_modules/babel-register/node_modules/core-js/fn/array/virtual/some.js
new file mode 100644
index 0000000..58c183c
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/array/virtual/some.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.array.some');
+module.exports = require('../../../modules/_entry-virtual')('Array').some;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/array/virtual/sort.js b/node_modules/babel-register/node_modules/core-js/fn/array/virtual/sort.js
new file mode 100644
index 0000000..c888315
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/array/virtual/sort.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.array.sort');
+module.exports = require('../../../modules/_entry-virtual')('Array').sort;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/array/virtual/values.js b/node_modules/babel-register/node_modules/core-js/fn/array/virtual/values.js
new file mode 100644
index 0000000..7812b3c
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/array/virtual/values.js
@@ -0,0 +1,2 @@
+require('../../../modules/core.number.iterator');
+module.exports = require('../../../modules/_iterators').Array;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/clear-immediate.js b/node_modules/babel-register/node_modules/core-js/fn/clear-immediate.js
new file mode 100644
index 0000000..86916a0
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/clear-immediate.js
@@ -0,0 +1,2 @@
+require('../modules/web.immediate');
+module.exports = require('../modules/_core').clearImmediate;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/date/index.js b/node_modules/babel-register/node_modules/core-js/fn/date/index.js
new file mode 100644
index 0000000..bd9ce0e
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/date/index.js
@@ -0,0 +1,6 @@
+require('../../modules/es6.date.now');
+require('../../modules/es6.date.to-json');
+require('../../modules/es6.date.to-iso-string');
+require('../../modules/es6.date.to-string');
+require('../../modules/es6.date.to-primitive');
+module.exports = require('../../modules/_core').Date;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/date/now.js b/node_modules/babel-register/node_modules/core-js/fn/date/now.js
new file mode 100644
index 0000000..c70d37a
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/date/now.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.date.now');
+module.exports = require('../../modules/_core').Date.now;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/date/to-iso-string.js b/node_modules/babel-register/node_modules/core-js/fn/date/to-iso-string.js
new file mode 100644
index 0000000..be4ac21
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/date/to-iso-string.js
@@ -0,0 +1,3 @@
+require('../../modules/es6.date.to-json');
+require('../../modules/es6.date.to-iso-string');
+module.exports = require('../../modules/_core').Date.toISOString;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/date/to-json.js b/node_modules/babel-register/node_modules/core-js/fn/date/to-json.js
new file mode 100644
index 0000000..9dc8cc9
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/date/to-json.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.date.to-json');
+module.exports = require('../../modules/_core').Date.toJSON;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/date/to-primitive.js b/node_modules/babel-register/node_modules/core-js/fn/date/to-primitive.js
new file mode 100644
index 0000000..4d7471e
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/date/to-primitive.js
@@ -0,0 +1,5 @@
+require('../../modules/es6.date.to-primitive');
+var toPrimitive = require('../../modules/_date-to-primitive');
+module.exports = function(it, hint){
+ return toPrimitive.call(it, hint);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/date/to-string.js b/node_modules/babel-register/node_modules/core-js/fn/date/to-string.js
new file mode 100644
index 0000000..1bca5e3
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/date/to-string.js
@@ -0,0 +1,5 @@
+var core = require('../../modules/es6.date.to-string')
+ , $toString = Date.prototype.toString;
+module.exports = function toString(it){
+ return $toString.call(it);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/delay.js b/node_modules/babel-register/node_modules/core-js/fn/delay.js
new file mode 100644
index 0000000..1885738
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/delay.js
@@ -0,0 +1,2 @@
+require('../modules/core.delay');
+module.exports = require('../modules/_core').delay;
diff --git a/node_modules/babel-register/node_modules/core-js/fn/dict.js b/node_modules/babel-register/node_modules/core-js/fn/dict.js
new file mode 100644
index 0000000..da84a8d
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/dict.js
@@ -0,0 +1,2 @@
+require('../modules/core.dict');
+module.exports = require('../modules/_core').Dict;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/dom-collections/index.js b/node_modules/babel-register/node_modules/core-js/fn/dom-collections/index.js
new file mode 100644
index 0000000..3928a09
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/dom-collections/index.js
@@ -0,0 +1,8 @@
+require('../../modules/web.dom.iterable');
+var $iterators = require('../../modules/es6.array.iterator');
+module.exports = {
+ keys: $iterators.keys,
+ values: $iterators.values,
+ entries: $iterators.entries,
+ iterator: $iterators.values
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/dom-collections/iterator.js b/node_modules/babel-register/node_modules/core-js/fn/dom-collections/iterator.js
new file mode 100644
index 0000000..ad98364
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/dom-collections/iterator.js
@@ -0,0 +1,2 @@
+require('../../modules/web.dom.iterable');
+module.exports = require('../../modules/_core').Array.values;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/error/index.js b/node_modules/babel-register/node_modules/core-js/fn/error/index.js
new file mode 100644
index 0000000..59571ac
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/error/index.js
@@ -0,0 +1,2 @@
+require('../../modules/es7.error.is-error');
+module.exports = require('../../modules/_core').Error;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/error/is-error.js b/node_modules/babel-register/node_modules/core-js/fn/error/is-error.js
new file mode 100644
index 0000000..e15b720
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/error/is-error.js
@@ -0,0 +1,2 @@
+require('../../modules/es7.error.is-error');
+module.exports = require('../../modules/_core').Error.isError;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/function/bind.js b/node_modules/babel-register/node_modules/core-js/fn/function/bind.js
new file mode 100644
index 0000000..38e179e
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/function/bind.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.function.bind');
+module.exports = require('../../modules/_core').Function.bind;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/function/has-instance.js b/node_modules/babel-register/node_modules/core-js/fn/function/has-instance.js
new file mode 100644
index 0000000..78397e5
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/function/has-instance.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.function.has-instance');
+module.exports = Function[require('../../modules/_wks')('hasInstance')];
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/function/index.js b/node_modules/babel-register/node_modules/core-js/fn/function/index.js
new file mode 100644
index 0000000..206324e
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/function/index.js
@@ -0,0 +1,5 @@
+require('../../modules/es6.function.bind');
+require('../../modules/es6.function.name');
+require('../../modules/es6.function.has-instance');
+require('../../modules/core.function.part');
+module.exports = require('../../modules/_core').Function;
diff --git a/node_modules/babel-register/node_modules/core-js/fn/function/name.js b/node_modules/babel-register/node_modules/core-js/fn/function/name.js
new file mode 100644
index 0000000..cb70bf1
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/function/name.js
@@ -0,0 +1 @@
+require('../../modules/es6.function.name');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/function/part.js b/node_modules/babel-register/node_modules/core-js/fn/function/part.js
new file mode 100644
index 0000000..926e2cc
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/function/part.js
@@ -0,0 +1,2 @@
+require('../../modules/core.function.part');
+module.exports = require('../../modules/_core').Function.part;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/function/virtual/bind.js b/node_modules/babel-register/node_modules/core-js/fn/function/virtual/bind.js
new file mode 100644
index 0000000..0a2f333
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/function/virtual/bind.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.function.bind');
+module.exports = require('../../../modules/_entry-virtual')('Function').bind;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/function/virtual/index.js b/node_modules/babel-register/node_modules/core-js/fn/function/virtual/index.js
new file mode 100644
index 0000000..f64e220
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/function/virtual/index.js
@@ -0,0 +1,3 @@
+require('../../../modules/es6.function.bind');
+require('../../../modules/core.function.part');
+module.exports = require('../../../modules/_entry-virtual')('Function');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/function/virtual/part.js b/node_modules/babel-register/node_modules/core-js/fn/function/virtual/part.js
new file mode 100644
index 0000000..a382e57
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/function/virtual/part.js
@@ -0,0 +1,2 @@
+require('../../../modules/core.function.part');
+module.exports = require('../../../modules/_entry-virtual')('Function').part;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/get-iterator-method.js b/node_modules/babel-register/node_modules/core-js/fn/get-iterator-method.js
new file mode 100644
index 0000000..5543cbb
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/get-iterator-method.js
@@ -0,0 +1,3 @@
+require('../modules/web.dom.iterable');
+require('../modules/es6.string.iterator');
+module.exports = require('../modules/core.get-iterator-method');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/get-iterator.js b/node_modules/babel-register/node_modules/core-js/fn/get-iterator.js
new file mode 100644
index 0000000..762350f
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/get-iterator.js
@@ -0,0 +1,3 @@
+require('../modules/web.dom.iterable');
+require('../modules/es6.string.iterator');
+module.exports = require('../modules/core.get-iterator');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/is-iterable.js b/node_modules/babel-register/node_modules/core-js/fn/is-iterable.js
new file mode 100644
index 0000000..4c654e8
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/is-iterable.js
@@ -0,0 +1,3 @@
+require('../modules/web.dom.iterable');
+require('../modules/es6.string.iterator');
+module.exports = require('../modules/core.is-iterable');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/json/index.js b/node_modules/babel-register/node_modules/core-js/fn/json/index.js
new file mode 100644
index 0000000..a6ec3de
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/json/index.js
@@ -0,0 +1,2 @@
+var core = require('../../modules/_core');
+module.exports = core.JSON || (core.JSON = {stringify: JSON.stringify});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/json/stringify.js b/node_modules/babel-register/node_modules/core-js/fn/json/stringify.js
new file mode 100644
index 0000000..f0cac86
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/json/stringify.js
@@ -0,0 +1,5 @@
+var core = require('../../modules/_core')
+ , $JSON = core.JSON || (core.JSON = {stringify: JSON.stringify});
+module.exports = function stringify(it){ // eslint-disable-line no-unused-vars
+ return $JSON.stringify.apply($JSON, arguments);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/map.js b/node_modules/babel-register/node_modules/core-js/fn/map.js
new file mode 100644
index 0000000..16784c6
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/map.js
@@ -0,0 +1,6 @@
+require('../modules/es6.object.to-string');
+require('../modules/es6.string.iterator');
+require('../modules/web.dom.iterable');
+require('../modules/es6.map');
+require('../modules/es7.map.to-json');
+module.exports = require('../modules/_core').Map;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/math/acosh.js b/node_modules/babel-register/node_modules/core-js/fn/math/acosh.js
new file mode 100644
index 0000000..9c904c2
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/math/acosh.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.math.acosh');
+module.exports = require('../../modules/_core').Math.acosh;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/math/asinh.js b/node_modules/babel-register/node_modules/core-js/fn/math/asinh.js
new file mode 100644
index 0000000..9e209c9
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/math/asinh.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.math.asinh');
+module.exports = require('../../modules/_core').Math.asinh;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/math/atanh.js b/node_modules/babel-register/node_modules/core-js/fn/math/atanh.js
new file mode 100644
index 0000000..b116296
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/math/atanh.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.math.atanh');
+module.exports = require('../../modules/_core').Math.atanh;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/math/cbrt.js b/node_modules/babel-register/node_modules/core-js/fn/math/cbrt.js
new file mode 100644
index 0000000..6ffec33
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/math/cbrt.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.math.cbrt');
+module.exports = require('../../modules/_core').Math.cbrt;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/math/clz32.js b/node_modules/babel-register/node_modules/core-js/fn/math/clz32.js
new file mode 100644
index 0000000..beeaae1
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/math/clz32.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.math.clz32');
+module.exports = require('../../modules/_core').Math.clz32;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/math/cosh.js b/node_modules/babel-register/node_modules/core-js/fn/math/cosh.js
new file mode 100644
index 0000000..bf92dc1
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/math/cosh.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.math.cosh');
+module.exports = require('../../modules/_core').Math.cosh;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/math/expm1.js b/node_modules/babel-register/node_modules/core-js/fn/math/expm1.js
new file mode 100644
index 0000000..0b30ebb
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/math/expm1.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.math.expm1');
+module.exports = require('../../modules/_core').Math.expm1;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/math/fround.js b/node_modules/babel-register/node_modules/core-js/fn/math/fround.js
new file mode 100644
index 0000000..c75a229
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/math/fround.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.math.fround');
+module.exports = require('../../modules/_core').Math.fround;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/math/hypot.js b/node_modules/babel-register/node_modules/core-js/fn/math/hypot.js
new file mode 100644
index 0000000..2126285
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/math/hypot.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.math.hypot');
+module.exports = require('../../modules/_core').Math.hypot;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/math/iaddh.js b/node_modules/babel-register/node_modules/core-js/fn/math/iaddh.js
new file mode 100644
index 0000000..cae754e
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/math/iaddh.js
@@ -0,0 +1,2 @@
+require('../../modules/es7.math.iaddh');
+module.exports = require('../../modules/_core').Math.iaddh;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/math/imul.js b/node_modules/babel-register/node_modules/core-js/fn/math/imul.js
new file mode 100644
index 0000000..1f5ce16
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/math/imul.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.math.imul');
+module.exports = require('../../modules/_core').Math.imul;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/math/imulh.js b/node_modules/babel-register/node_modules/core-js/fn/math/imulh.js
new file mode 100644
index 0000000..3b47bf8
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/math/imulh.js
@@ -0,0 +1,2 @@
+require('../../modules/es7.math.imulh');
+module.exports = require('../../modules/_core').Math.imulh;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/math/index.js b/node_modules/babel-register/node_modules/core-js/fn/math/index.js
new file mode 100644
index 0000000..8a2664b
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/math/index.js
@@ -0,0 +1,22 @@
+require('../../modules/es6.math.acosh');
+require('../../modules/es6.math.asinh');
+require('../../modules/es6.math.atanh');
+require('../../modules/es6.math.cbrt');
+require('../../modules/es6.math.clz32');
+require('../../modules/es6.math.cosh');
+require('../../modules/es6.math.expm1');
+require('../../modules/es6.math.fround');
+require('../../modules/es6.math.hypot');
+require('../../modules/es6.math.imul');
+require('../../modules/es6.math.log10');
+require('../../modules/es6.math.log1p');
+require('../../modules/es6.math.log2');
+require('../../modules/es6.math.sign');
+require('../../modules/es6.math.sinh');
+require('../../modules/es6.math.tanh');
+require('../../modules/es6.math.trunc');
+require('../../modules/es7.math.iaddh');
+require('../../modules/es7.math.isubh');
+require('../../modules/es7.math.imulh');
+require('../../modules/es7.math.umulh');
+module.exports = require('../../modules/_core').Math;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/math/isubh.js b/node_modules/babel-register/node_modules/core-js/fn/math/isubh.js
new file mode 100644
index 0000000..e120e42
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/math/isubh.js
@@ -0,0 +1,2 @@
+require('../../modules/es7.math.isubh');
+module.exports = require('../../modules/_core').Math.isubh;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/math/log10.js b/node_modules/babel-register/node_modules/core-js/fn/math/log10.js
new file mode 100644
index 0000000..1246e0a
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/math/log10.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.math.log10');
+module.exports = require('../../modules/_core').Math.log10;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/math/log1p.js b/node_modules/babel-register/node_modules/core-js/fn/math/log1p.js
new file mode 100644
index 0000000..047b84c
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/math/log1p.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.math.log1p');
+module.exports = require('../../modules/_core').Math.log1p;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/math/log2.js b/node_modules/babel-register/node_modules/core-js/fn/math/log2.js
new file mode 100644
index 0000000..ce3e99c
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/math/log2.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.math.log2');
+module.exports = require('../../modules/_core').Math.log2;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/math/sign.js b/node_modules/babel-register/node_modules/core-js/fn/math/sign.js
new file mode 100644
index 0000000..0963eca
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/math/sign.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.math.sign');
+module.exports = require('../../modules/_core').Math.sign;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/math/sinh.js b/node_modules/babel-register/node_modules/core-js/fn/math/sinh.js
new file mode 100644
index 0000000..c35cb73
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/math/sinh.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.math.sinh');
+module.exports = require('../../modules/_core').Math.sinh;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/math/tanh.js b/node_modules/babel-register/node_modules/core-js/fn/math/tanh.js
new file mode 100644
index 0000000..3d1966d
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/math/tanh.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.math.tanh');
+module.exports = require('../../modules/_core').Math.tanh;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/math/trunc.js b/node_modules/babel-register/node_modules/core-js/fn/math/trunc.js
new file mode 100644
index 0000000..135b7dc
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/math/trunc.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.math.trunc');
+module.exports = require('../../modules/_core').Math.trunc;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/math/umulh.js b/node_modules/babel-register/node_modules/core-js/fn/math/umulh.js
new file mode 100644
index 0000000..d93b9ae
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/math/umulh.js
@@ -0,0 +1,2 @@
+require('../../modules/es7.math.umulh');
+module.exports = require('../../modules/_core').Math.umulh;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/number/constructor.js b/node_modules/babel-register/node_modules/core-js/fn/number/constructor.js
new file mode 100644
index 0000000..f488331
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/number/constructor.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.number.constructor');
+module.exports = Number;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/number/epsilon.js b/node_modules/babel-register/node_modules/core-js/fn/number/epsilon.js
new file mode 100644
index 0000000..56c9352
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/number/epsilon.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.number.epsilon');
+module.exports = Math.pow(2, -52);
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/number/index.js b/node_modules/babel-register/node_modules/core-js/fn/number/index.js
new file mode 100644
index 0000000..9289000
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/number/index.js
@@ -0,0 +1,14 @@
+require('../../modules/es6.number.constructor');
+require('../../modules/es6.number.epsilon');
+require('../../modules/es6.number.is-finite');
+require('../../modules/es6.number.is-integer');
+require('../../modules/es6.number.is-nan');
+require('../../modules/es6.number.is-safe-integer');
+require('../../modules/es6.number.max-safe-integer');
+require('../../modules/es6.number.min-safe-integer');
+require('../../modules/es6.number.parse-float');
+require('../../modules/es6.number.parse-int');
+require('../../modules/es6.number.to-fixed');
+require('../../modules/es6.number.to-precision');
+require('../../modules/core.number.iterator');
+module.exports = require('../../modules/_core').Number;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/number/is-finite.js b/node_modules/babel-register/node_modules/core-js/fn/number/is-finite.js
new file mode 100644
index 0000000..4ec3706
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/number/is-finite.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.number.is-finite');
+module.exports = require('../../modules/_core').Number.isFinite;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/number/is-integer.js b/node_modules/babel-register/node_modules/core-js/fn/number/is-integer.js
new file mode 100644
index 0000000..a3013bf
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/number/is-integer.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.number.is-integer');
+module.exports = require('../../modules/_core').Number.isInteger;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/number/is-nan.js b/node_modules/babel-register/node_modules/core-js/fn/number/is-nan.js
new file mode 100644
index 0000000..f23b026
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/number/is-nan.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.number.is-nan');
+module.exports = require('../../modules/_core').Number.isNaN;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/number/is-safe-integer.js b/node_modules/babel-register/node_modules/core-js/fn/number/is-safe-integer.js
new file mode 100644
index 0000000..f68732f
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/number/is-safe-integer.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.number.is-safe-integer');
+module.exports = require('../../modules/_core').Number.isSafeInteger;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/number/iterator.js b/node_modules/babel-register/node_modules/core-js/fn/number/iterator.js
new file mode 100644
index 0000000..26feaa1
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/number/iterator.js
@@ -0,0 +1,5 @@
+require('../../modules/core.number.iterator');
+var get = require('../../modules/_iterators').Number;
+module.exports = function(it){
+ return get.call(it);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/number/max-safe-integer.js b/node_modules/babel-register/node_modules/core-js/fn/number/max-safe-integer.js
new file mode 100644
index 0000000..c9b43b0
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/number/max-safe-integer.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.number.max-safe-integer');
+module.exports = 0x1fffffffffffff;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/number/min-safe-integer.js b/node_modules/babel-register/node_modules/core-js/fn/number/min-safe-integer.js
new file mode 100644
index 0000000..8b5e072
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/number/min-safe-integer.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.number.min-safe-integer');
+module.exports = -0x1fffffffffffff;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/number/parse-float.js b/node_modules/babel-register/node_modules/core-js/fn/number/parse-float.js
new file mode 100644
index 0000000..62f8977
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/number/parse-float.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.number.parse-float');
+module.exports = parseFloat;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/number/parse-int.js b/node_modules/babel-register/node_modules/core-js/fn/number/parse-int.js
new file mode 100644
index 0000000..c197da5
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/number/parse-int.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.number.parse-int');
+module.exports = parseInt;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/number/to-fixed.js b/node_modules/babel-register/node_modules/core-js/fn/number/to-fixed.js
new file mode 100644
index 0000000..3a041b0
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/number/to-fixed.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.number.to-fixed');
+module.exports = require('../../modules/_core').Number.toFixed;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/number/to-precision.js b/node_modules/babel-register/node_modules/core-js/fn/number/to-precision.js
new file mode 100644
index 0000000..9e85511
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/number/to-precision.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.number.to-precision');
+module.exports = require('../../modules/_core').Number.toPrecision;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/number/virtual/index.js b/node_modules/babel-register/node_modules/core-js/fn/number/virtual/index.js
new file mode 100644
index 0000000..42360d3
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/number/virtual/index.js
@@ -0,0 +1,4 @@
+require('../../../modules/core.number.iterator');
+var $Number = require('../../../modules/_entry-virtual')('Number');
+$Number.iterator = require('../../../modules/_iterators').Number;
+module.exports = $Number;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/number/virtual/iterator.js b/node_modules/babel-register/node_modules/core-js/fn/number/virtual/iterator.js
new file mode 100644
index 0000000..df03499
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/number/virtual/iterator.js
@@ -0,0 +1,2 @@
+require('../../../modules/core.number.iterator');
+module.exports = require('../../../modules/_iterators').Number;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/number/virtual/to-fixed.js b/node_modules/babel-register/node_modules/core-js/fn/number/virtual/to-fixed.js
new file mode 100644
index 0000000..b779f15
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/number/virtual/to-fixed.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.number.to-fixed');
+module.exports = require('../../../modules/_entry-virtual')('Number').toFixed;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/number/virtual/to-precision.js b/node_modules/babel-register/node_modules/core-js/fn/number/virtual/to-precision.js
new file mode 100644
index 0000000..0c93fa4
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/number/virtual/to-precision.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.number.to-precision');
+module.exports = require('../../../modules/_entry-virtual')('Number').toPrecision;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/object/assign.js b/node_modules/babel-register/node_modules/core-js/fn/object/assign.js
new file mode 100644
index 0000000..97df6bf
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/object/assign.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.object.assign');
+module.exports = require('../../modules/_core').Object.assign;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/object/classof.js b/node_modules/babel-register/node_modules/core-js/fn/object/classof.js
new file mode 100644
index 0000000..993d048
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/object/classof.js
@@ -0,0 +1,2 @@
+require('../../modules/core.object.classof');
+module.exports = require('../../modules/_core').Object.classof;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/object/create.js b/node_modules/babel-register/node_modules/core-js/fn/object/create.js
new file mode 100644
index 0000000..a05ca2f
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/object/create.js
@@ -0,0 +1,5 @@
+require('../../modules/es6.object.create');
+var $Object = require('../../modules/_core').Object;
+module.exports = function create(P, D){
+ return $Object.create(P, D);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/object/define-getter.js b/node_modules/babel-register/node_modules/core-js/fn/object/define-getter.js
new file mode 100644
index 0000000..5dd2607
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/object/define-getter.js
@@ -0,0 +1,2 @@
+require('../../modules/es7.object.define-getter');
+module.exports = require('../../modules/_core').Object.__defineGetter__;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/object/define-properties.js b/node_modules/babel-register/node_modules/core-js/fn/object/define-properties.js
new file mode 100644
index 0000000..04160fb
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/object/define-properties.js
@@ -0,0 +1,5 @@
+require('../../modules/es6.object.define-properties');
+var $Object = require('../../modules/_core').Object;
+module.exports = function defineProperties(T, D){
+ return $Object.defineProperties(T, D);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/object/define-property.js b/node_modules/babel-register/node_modules/core-js/fn/object/define-property.js
new file mode 100644
index 0000000..078c56c
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/object/define-property.js
@@ -0,0 +1,5 @@
+require('../../modules/es6.object.define-property');
+var $Object = require('../../modules/_core').Object;
+module.exports = function defineProperty(it, key, desc){
+ return $Object.defineProperty(it, key, desc);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/object/define-setter.js b/node_modules/babel-register/node_modules/core-js/fn/object/define-setter.js
new file mode 100644
index 0000000..b59475f
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/object/define-setter.js
@@ -0,0 +1,2 @@
+require('../../modules/es7.object.define-setter');
+module.exports = require('../../modules/_core').Object.__defineSetter__;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/object/define.js b/node_modules/babel-register/node_modules/core-js/fn/object/define.js
new file mode 100644
index 0000000..6ec19e9
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/object/define.js
@@ -0,0 +1,2 @@
+require('../../modules/core.object.define');
+module.exports = require('../../modules/_core').Object.define;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/object/entries.js b/node_modules/babel-register/node_modules/core-js/fn/object/entries.js
new file mode 100644
index 0000000..fca1000
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/object/entries.js
@@ -0,0 +1,2 @@
+require('../../modules/es7.object.entries');
+module.exports = require('../../modules/_core').Object.entries;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/object/freeze.js b/node_modules/babel-register/node_modules/core-js/fn/object/freeze.js
new file mode 100644
index 0000000..04eac53
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/object/freeze.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.object.freeze');
+module.exports = require('../../modules/_core').Object.freeze;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/object/get-own-property-descriptor.js b/node_modules/babel-register/node_modules/core-js/fn/object/get-own-property-descriptor.js
new file mode 100644
index 0000000..7d3f03b
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/object/get-own-property-descriptor.js
@@ -0,0 +1,5 @@
+require('../../modules/es6.object.get-own-property-descriptor');
+var $Object = require('../../modules/_core').Object;
+module.exports = function getOwnPropertyDescriptor(it, key){
+ return $Object.getOwnPropertyDescriptor(it, key);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/object/get-own-property-descriptors.js b/node_modules/babel-register/node_modules/core-js/fn/object/get-own-property-descriptors.js
new file mode 100644
index 0000000..dfeb547
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/object/get-own-property-descriptors.js
@@ -0,0 +1,2 @@
+require('../../modules/es7.object.get-own-property-descriptors');
+module.exports = require('../../modules/_core').Object.getOwnPropertyDescriptors;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/object/get-own-property-names.js b/node_modules/babel-register/node_modules/core-js/fn/object/get-own-property-names.js
new file mode 100644
index 0000000..c91ce43
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/object/get-own-property-names.js
@@ -0,0 +1,5 @@
+require('../../modules/es6.object.get-own-property-names');
+var $Object = require('../../modules/_core').Object;
+module.exports = function getOwnPropertyNames(it){
+ return $Object.getOwnPropertyNames(it);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/object/get-own-property-symbols.js b/node_modules/babel-register/node_modules/core-js/fn/object/get-own-property-symbols.js
new file mode 100644
index 0000000..c3f5288
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/object/get-own-property-symbols.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.symbol');
+module.exports = require('../../modules/_core').Object.getOwnPropertySymbols;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/object/get-prototype-of.js b/node_modules/babel-register/node_modules/core-js/fn/object/get-prototype-of.js
new file mode 100644
index 0000000..bda9344
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/object/get-prototype-of.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.object.get-prototype-of');
+module.exports = require('../../modules/_core').Object.getPrototypeOf;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/object/index.js b/node_modules/babel-register/node_modules/core-js/fn/object/index.js
new file mode 100644
index 0000000..4bd9825
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/object/index.js
@@ -0,0 +1,30 @@
+require('../../modules/es6.symbol');
+require('../../modules/es6.object.create');
+require('../../modules/es6.object.define-property');
+require('../../modules/es6.object.define-properties');
+require('../../modules/es6.object.get-own-property-descriptor');
+require('../../modules/es6.object.get-prototype-of');
+require('../../modules/es6.object.keys');
+require('../../modules/es6.object.get-own-property-names');
+require('../../modules/es6.object.freeze');
+require('../../modules/es6.object.seal');
+require('../../modules/es6.object.prevent-extensions');
+require('../../modules/es6.object.is-frozen');
+require('../../modules/es6.object.is-sealed');
+require('../../modules/es6.object.is-extensible');
+require('../../modules/es6.object.assign');
+require('../../modules/es6.object.is');
+require('../../modules/es6.object.set-prototype-of');
+require('../../modules/es6.object.to-string');
+require('../../modules/es7.object.get-own-property-descriptors');
+require('../../modules/es7.object.values');
+require('../../modules/es7.object.entries');
+require('../../modules/es7.object.define-getter');
+require('../../modules/es7.object.define-setter');
+require('../../modules/es7.object.lookup-getter');
+require('../../modules/es7.object.lookup-setter');
+require('../../modules/core.object.is-object');
+require('../../modules/core.object.classof');
+require('../../modules/core.object.define');
+require('../../modules/core.object.make');
+module.exports = require('../../modules/_core').Object;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/object/is-extensible.js b/node_modules/babel-register/node_modules/core-js/fn/object/is-extensible.js
new file mode 100644
index 0000000..43fb0e7
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/object/is-extensible.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.object.is-extensible');
+module.exports = require('../../modules/_core').Object.isExtensible;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/object/is-frozen.js b/node_modules/babel-register/node_modules/core-js/fn/object/is-frozen.js
new file mode 100644
index 0000000..cbff224
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/object/is-frozen.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.object.is-frozen');
+module.exports = require('../../modules/_core').Object.isFrozen;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/object/is-object.js b/node_modules/babel-register/node_modules/core-js/fn/object/is-object.js
new file mode 100644
index 0000000..38feeff
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/object/is-object.js
@@ -0,0 +1,2 @@
+require('../../modules/core.object.is-object');
+module.exports = require('../../modules/_core').Object.isObject;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/object/is-sealed.js b/node_modules/babel-register/node_modules/core-js/fn/object/is-sealed.js
new file mode 100644
index 0000000..169a8ae
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/object/is-sealed.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.object.is-sealed');
+module.exports = require('../../modules/_core').Object.isSealed;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/object/is.js b/node_modules/babel-register/node_modules/core-js/fn/object/is.js
new file mode 100644
index 0000000..6ac9f19
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/object/is.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.object.is');
+module.exports = require('../../modules/_core').Object.is;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/object/keys.js b/node_modules/babel-register/node_modules/core-js/fn/object/keys.js
new file mode 100644
index 0000000..8eeb78e
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/object/keys.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.object.keys');
+module.exports = require('../../modules/_core').Object.keys;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/object/lookup-getter.js b/node_modules/babel-register/node_modules/core-js/fn/object/lookup-getter.js
new file mode 100644
index 0000000..3f7f674
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/object/lookup-getter.js
@@ -0,0 +1,2 @@
+require('../../modules/es7.object.lookup-setter');
+module.exports = require('../../modules/_core').Object.__lookupGetter__;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/object/lookup-setter.js b/node_modules/babel-register/node_modules/core-js/fn/object/lookup-setter.js
new file mode 100644
index 0000000..d18446f
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/object/lookup-setter.js
@@ -0,0 +1,2 @@
+require('../../modules/es7.object.lookup-setter');
+module.exports = require('../../modules/_core').Object.__lookupSetter__;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/object/make.js b/node_modules/babel-register/node_modules/core-js/fn/object/make.js
new file mode 100644
index 0000000..f4d19d1
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/object/make.js
@@ -0,0 +1,2 @@
+require('../../modules/core.object.make');
+module.exports = require('../../modules/_core').Object.make;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/object/prevent-extensions.js b/node_modules/babel-register/node_modules/core-js/fn/object/prevent-extensions.js
new file mode 100644
index 0000000..e43be05
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/object/prevent-extensions.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.object.prevent-extensions');
+module.exports = require('../../modules/_core').Object.preventExtensions;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/object/seal.js b/node_modules/babel-register/node_modules/core-js/fn/object/seal.js
new file mode 100644
index 0000000..8a56cd7
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/object/seal.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.object.seal');
+module.exports = require('../../modules/_core').Object.seal;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/object/set-prototype-of.js b/node_modules/babel-register/node_modules/core-js/fn/object/set-prototype-of.js
new file mode 100644
index 0000000..c25170d
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/object/set-prototype-of.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.object.set-prototype-of');
+module.exports = require('../../modules/_core').Object.setPrototypeOf;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/object/values.js b/node_modules/babel-register/node_modules/core-js/fn/object/values.js
new file mode 100644
index 0000000..b50336c
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/object/values.js
@@ -0,0 +1,2 @@
+require('../../modules/es7.object.values');
+module.exports = require('../../modules/_core').Object.values;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/parse-float.js b/node_modules/babel-register/node_modules/core-js/fn/parse-float.js
new file mode 100644
index 0000000..dad94dd
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/parse-float.js
@@ -0,0 +1,2 @@
+require('../modules/es6.parse-float');
+module.exports = require('../modules/_core').parseFloat;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/parse-int.js b/node_modules/babel-register/node_modules/core-js/fn/parse-int.js
new file mode 100644
index 0000000..08a2099
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/parse-int.js
@@ -0,0 +1,2 @@
+require('../modules/es6.parse-int');
+module.exports = require('../modules/_core').parseInt;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/promise.js b/node_modules/babel-register/node_modules/core-js/fn/promise.js
new file mode 100644
index 0000000..c901c85
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/promise.js
@@ -0,0 +1,5 @@
+require('../modules/es6.object.to-string');
+require('../modules/es6.string.iterator');
+require('../modules/web.dom.iterable');
+require('../modules/es6.promise');
+module.exports = require('../modules/_core').Promise;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/reflect/apply.js b/node_modules/babel-register/node_modules/core-js/fn/reflect/apply.js
new file mode 100644
index 0000000..725b8a6
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/reflect/apply.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.reflect.apply');
+module.exports = require('../../modules/_core').Reflect.apply;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/reflect/construct.js b/node_modules/babel-register/node_modules/core-js/fn/reflect/construct.js
new file mode 100644
index 0000000..587725d
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/reflect/construct.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.reflect.construct');
+module.exports = require('../../modules/_core').Reflect.construct;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/reflect/define-metadata.js b/node_modules/babel-register/node_modules/core-js/fn/reflect/define-metadata.js
new file mode 100644
index 0000000..c9876ed
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/reflect/define-metadata.js
@@ -0,0 +1,2 @@
+require('../../modules/es7.reflect.define-metadata');
+module.exports = require('../../modules/_core').Reflect.defineMetadata;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/reflect/define-property.js b/node_modules/babel-register/node_modules/core-js/fn/reflect/define-property.js
new file mode 100644
index 0000000..c36b4d2
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/reflect/define-property.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.reflect.define-property');
+module.exports = require('../../modules/_core').Reflect.defineProperty;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/reflect/delete-metadata.js b/node_modules/babel-register/node_modules/core-js/fn/reflect/delete-metadata.js
new file mode 100644
index 0000000..9bcc029
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/reflect/delete-metadata.js
@@ -0,0 +1,2 @@
+require('../../modules/es7.reflect.delete-metadata');
+module.exports = require('../../modules/_core').Reflect.deleteMetadata;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/reflect/delete-property.js b/node_modules/babel-register/node_modules/core-js/fn/reflect/delete-property.js
new file mode 100644
index 0000000..10b6392
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/reflect/delete-property.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.reflect.delete-property');
+module.exports = require('../../modules/_core').Reflect.deleteProperty;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/reflect/enumerate.js b/node_modules/babel-register/node_modules/core-js/fn/reflect/enumerate.js
new file mode 100644
index 0000000..257a21e
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/reflect/enumerate.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.reflect.enumerate');
+module.exports = require('../../modules/_core').Reflect.enumerate;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/reflect/get-metadata-keys.js b/node_modules/babel-register/node_modules/core-js/fn/reflect/get-metadata-keys.js
new file mode 100644
index 0000000..9dbf5ee
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/reflect/get-metadata-keys.js
@@ -0,0 +1,2 @@
+require('../../modules/es7.reflect.get-metadata-keys');
+module.exports = require('../../modules/_core').Reflect.getMetadataKeys;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/reflect/get-metadata.js b/node_modules/babel-register/node_modules/core-js/fn/reflect/get-metadata.js
new file mode 100644
index 0000000..3a20839
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/reflect/get-metadata.js
@@ -0,0 +1,2 @@
+require('../../modules/es7.reflect.get-metadata');
+module.exports = require('../../modules/_core').Reflect.getMetadata;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/reflect/get-own-metadata-keys.js b/node_modules/babel-register/node_modules/core-js/fn/reflect/get-own-metadata-keys.js
new file mode 100644
index 0000000..2f8c575
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/reflect/get-own-metadata-keys.js
@@ -0,0 +1,2 @@
+require('../../modules/es7.reflect.get-own-metadata-keys');
+module.exports = require('../../modules/_core').Reflect.getOwnMetadataKeys;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/reflect/get-own-metadata.js b/node_modules/babel-register/node_modules/core-js/fn/reflect/get-own-metadata.js
new file mode 100644
index 0000000..68e288d
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/reflect/get-own-metadata.js
@@ -0,0 +1,2 @@
+require('../../modules/es7.reflect.get-own-metadata');
+module.exports = require('../../modules/_core').Reflect.getOwnMetadata;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/reflect/get-own-property-descriptor.js b/node_modules/babel-register/node_modules/core-js/fn/reflect/get-own-property-descriptor.js
new file mode 100644
index 0000000..9e2822f
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/reflect/get-own-property-descriptor.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.reflect.get-own-property-descriptor');
+module.exports = require('../../modules/_core').Reflect.getOwnPropertyDescriptor;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/reflect/get-prototype-of.js b/node_modules/babel-register/node_modules/core-js/fn/reflect/get-prototype-of.js
new file mode 100644
index 0000000..4850359
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/reflect/get-prototype-of.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.reflect.get-prototype-of');
+module.exports = require('../../modules/_core').Reflect.getPrototypeOf;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/reflect/get.js b/node_modules/babel-register/node_modules/core-js/fn/reflect/get.js
new file mode 100644
index 0000000..9ca903e
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/reflect/get.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.reflect.get');
+module.exports = require('../../modules/_core').Reflect.get;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/reflect/has-metadata.js b/node_modules/babel-register/node_modules/core-js/fn/reflect/has-metadata.js
new file mode 100644
index 0000000..f001f43
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/reflect/has-metadata.js
@@ -0,0 +1,2 @@
+require('../../modules/es7.reflect.has-metadata');
+module.exports = require('../../modules/_core').Reflect.hasMetadata;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/reflect/has-own-metadata.js b/node_modules/babel-register/node_modules/core-js/fn/reflect/has-own-metadata.js
new file mode 100644
index 0000000..d90935f
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/reflect/has-own-metadata.js
@@ -0,0 +1,2 @@
+require('../../modules/es7.reflect.has-own-metadata');
+module.exports = require('../../modules/_core').Reflect.hasOwnMetadata;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/reflect/has.js b/node_modules/babel-register/node_modules/core-js/fn/reflect/has.js
new file mode 100644
index 0000000..8e34933
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/reflect/has.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.reflect.has');
+module.exports = require('../../modules/_core').Reflect.has;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/reflect/index.js b/node_modules/babel-register/node_modules/core-js/fn/reflect/index.js
new file mode 100644
index 0000000..a725cef
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/reflect/index.js
@@ -0,0 +1,24 @@
+require('../../modules/es6.reflect.apply');
+require('../../modules/es6.reflect.construct');
+require('../../modules/es6.reflect.define-property');
+require('../../modules/es6.reflect.delete-property');
+require('../../modules/es6.reflect.enumerate');
+require('../../modules/es6.reflect.get');
+require('../../modules/es6.reflect.get-own-property-descriptor');
+require('../../modules/es6.reflect.get-prototype-of');
+require('../../modules/es6.reflect.has');
+require('../../modules/es6.reflect.is-extensible');
+require('../../modules/es6.reflect.own-keys');
+require('../../modules/es6.reflect.prevent-extensions');
+require('../../modules/es6.reflect.set');
+require('../../modules/es6.reflect.set-prototype-of');
+require('../../modules/es7.reflect.define-metadata');
+require('../../modules/es7.reflect.delete-metadata');
+require('../../modules/es7.reflect.get-metadata');
+require('../../modules/es7.reflect.get-metadata-keys');
+require('../../modules/es7.reflect.get-own-metadata');
+require('../../modules/es7.reflect.get-own-metadata-keys');
+require('../../modules/es7.reflect.has-metadata');
+require('../../modules/es7.reflect.has-own-metadata');
+require('../../modules/es7.reflect.metadata');
+module.exports = require('../../modules/_core').Reflect;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/reflect/is-extensible.js b/node_modules/babel-register/node_modules/core-js/fn/reflect/is-extensible.js
new file mode 100644
index 0000000..de41d68
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/reflect/is-extensible.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.reflect.is-extensible');
+module.exports = require('../../modules/_core').Reflect.isExtensible;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/reflect/metadata.js b/node_modules/babel-register/node_modules/core-js/fn/reflect/metadata.js
new file mode 100644
index 0000000..3f2b8ff
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/reflect/metadata.js
@@ -0,0 +1,2 @@
+require('../../modules/es7.reflect.metadata');
+module.exports = require('../../modules/_core').Reflect.metadata;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/reflect/own-keys.js b/node_modules/babel-register/node_modules/core-js/fn/reflect/own-keys.js
new file mode 100644
index 0000000..bfcebc7
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/reflect/own-keys.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.reflect.own-keys');
+module.exports = require('../../modules/_core').Reflect.ownKeys;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/reflect/prevent-extensions.js b/node_modules/babel-register/node_modules/core-js/fn/reflect/prevent-extensions.js
new file mode 100644
index 0000000..b346da3
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/reflect/prevent-extensions.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.reflect.prevent-extensions');
+module.exports = require('../../modules/_core').Reflect.preventExtensions;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/reflect/set-prototype-of.js b/node_modules/babel-register/node_modules/core-js/fn/reflect/set-prototype-of.js
new file mode 100644
index 0000000..16b7435
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/reflect/set-prototype-of.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.reflect.set-prototype-of');
+module.exports = require('../../modules/_core').Reflect.setPrototypeOf;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/reflect/set.js b/node_modules/babel-register/node_modules/core-js/fn/reflect/set.js
new file mode 100644
index 0000000..834929e
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/reflect/set.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.reflect.set');
+module.exports = require('../../modules/_core').Reflect.set;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/regexp/constructor.js b/node_modules/babel-register/node_modules/core-js/fn/regexp/constructor.js
new file mode 100644
index 0000000..90c1351
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/regexp/constructor.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.regexp.constructor');
+module.exports = RegExp;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/regexp/escape.js b/node_modules/babel-register/node_modules/core-js/fn/regexp/escape.js
new file mode 100644
index 0000000..d657a7d
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/regexp/escape.js
@@ -0,0 +1,2 @@
+require('../../modules/core.regexp.escape');
+module.exports = require('../../modules/_core').RegExp.escape;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/regexp/flags.js b/node_modules/babel-register/node_modules/core-js/fn/regexp/flags.js
new file mode 100644
index 0000000..ef84ddb
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/regexp/flags.js
@@ -0,0 +1,5 @@
+require('../../modules/es6.regexp.flags');
+var flags = require('../../modules/_flags');
+module.exports = function(it){
+ return flags.call(it);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/regexp/index.js b/node_modules/babel-register/node_modules/core-js/fn/regexp/index.js
new file mode 100644
index 0000000..61ced0b
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/regexp/index.js
@@ -0,0 +1,9 @@
+require('../../modules/es6.regexp.constructor');
+require('../../modules/es6.regexp.to-string');
+require('../../modules/es6.regexp.flags');
+require('../../modules/es6.regexp.match');
+require('../../modules/es6.regexp.replace');
+require('../../modules/es6.regexp.search');
+require('../../modules/es6.regexp.split');
+require('../../modules/core.regexp.escape');
+module.exports = require('../../modules/_core').RegExp;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/regexp/match.js b/node_modules/babel-register/node_modules/core-js/fn/regexp/match.js
new file mode 100644
index 0000000..400d092
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/regexp/match.js
@@ -0,0 +1,5 @@
+require('../../modules/es6.regexp.match');
+var MATCH = require('../../modules/_wks')('match');
+module.exports = function(it, str){
+ return RegExp.prototype[MATCH].call(it, str);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/regexp/replace.js b/node_modules/babel-register/node_modules/core-js/fn/regexp/replace.js
new file mode 100644
index 0000000..adde0ad
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/regexp/replace.js
@@ -0,0 +1,5 @@
+require('../../modules/es6.regexp.replace');
+var REPLACE = require('../../modules/_wks')('replace');
+module.exports = function(it, str, replacer){
+ return RegExp.prototype[REPLACE].call(it, str, replacer);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/regexp/search.js b/node_modules/babel-register/node_modules/core-js/fn/regexp/search.js
new file mode 100644
index 0000000..4e149d0
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/regexp/search.js
@@ -0,0 +1,5 @@
+require('../../modules/es6.regexp.search');
+var SEARCH = require('../../modules/_wks')('search');
+module.exports = function(it, str){
+ return RegExp.prototype[SEARCH].call(it, str);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/regexp/split.js b/node_modules/babel-register/node_modules/core-js/fn/regexp/split.js
new file mode 100644
index 0000000..b92d09f
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/regexp/split.js
@@ -0,0 +1,5 @@
+require('../../modules/es6.regexp.split');
+var SPLIT = require('../../modules/_wks')('split');
+module.exports = function(it, str, limit){
+ return RegExp.prototype[SPLIT].call(it, str, limit);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/regexp/to-string.js b/node_modules/babel-register/node_modules/core-js/fn/regexp/to-string.js
new file mode 100644
index 0000000..29d5d03
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/regexp/to-string.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es6.regexp.to-string');
+module.exports = function toString(it){
+ return RegExp.prototype.toString.call(it);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/set-immediate.js b/node_modules/babel-register/node_modules/core-js/fn/set-immediate.js
new file mode 100644
index 0000000..2508313
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/set-immediate.js
@@ -0,0 +1,2 @@
+require('../modules/web.immediate');
+module.exports = require('../modules/_core').setImmediate;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/set-interval.js b/node_modules/babel-register/node_modules/core-js/fn/set-interval.js
new file mode 100644
index 0000000..484447f
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/set-interval.js
@@ -0,0 +1,2 @@
+require('../modules/web.timers');
+module.exports = require('../modules/_core').setInterval;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/set-timeout.js b/node_modules/babel-register/node_modules/core-js/fn/set-timeout.js
new file mode 100644
index 0000000..8ebbb2e
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/set-timeout.js
@@ -0,0 +1,2 @@
+require('../modules/web.timers');
+module.exports = require('../modules/_core').setTimeout;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/set.js b/node_modules/babel-register/node_modules/core-js/fn/set.js
new file mode 100644
index 0000000..a8b4965
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/set.js
@@ -0,0 +1,6 @@
+require('../modules/es6.object.to-string');
+require('../modules/es6.string.iterator');
+require('../modules/web.dom.iterable');
+require('../modules/es6.set');
+require('../modules/es7.set.to-json');
+module.exports = require('../modules/_core').Set;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/string/anchor.js b/node_modules/babel-register/node_modules/core-js/fn/string/anchor.js
new file mode 100644
index 0000000..ba4ef81
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/string/anchor.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.string.anchor');
+module.exports = require('../../modules/_core').String.anchor;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/string/at.js b/node_modules/babel-register/node_modules/core-js/fn/string/at.js
new file mode 100644
index 0000000..ab6aec1
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/string/at.js
@@ -0,0 +1,2 @@
+require('../../modules/es7.string.at');
+module.exports = require('../../modules/_core').String.at;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/string/big.js b/node_modules/babel-register/node_modules/core-js/fn/string/big.js
new file mode 100644
index 0000000..ab70790
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/string/big.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.string.big');
+module.exports = require('../../modules/_core').String.big;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/string/blink.js b/node_modules/babel-register/node_modules/core-js/fn/string/blink.js
new file mode 100644
index 0000000..c748079
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/string/blink.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.string.blink');
+module.exports = require('../../modules/_core').String.blink;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/string/bold.js b/node_modules/babel-register/node_modules/core-js/fn/string/bold.js
new file mode 100644
index 0000000..2d36bda
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/string/bold.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.string.bold');
+module.exports = require('../../modules/_core').String.bold;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/string/code-point-at.js b/node_modules/babel-register/node_modules/core-js/fn/string/code-point-at.js
new file mode 100644
index 0000000..be141e8
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/string/code-point-at.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.string.code-point-at');
+module.exports = require('../../modules/_core').String.codePointAt;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/string/ends-with.js b/node_modules/babel-register/node_modules/core-js/fn/string/ends-with.js
new file mode 100644
index 0000000..5e42775
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/string/ends-with.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.string.ends-with');
+module.exports = require('../../modules/_core').String.endsWith;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/string/escape-html.js b/node_modules/babel-register/node_modules/core-js/fn/string/escape-html.js
new file mode 100644
index 0000000..49176ca
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/string/escape-html.js
@@ -0,0 +1,2 @@
+require('../../modules/core.string.escape-html');
+module.exports = require('../../modules/_core').String.escapeHTML;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/string/fixed.js b/node_modules/babel-register/node_modules/core-js/fn/string/fixed.js
new file mode 100644
index 0000000..77e233a
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/string/fixed.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.string.fixed');
+module.exports = require('../../modules/_core').String.fixed;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/string/fontcolor.js b/node_modules/babel-register/node_modules/core-js/fn/string/fontcolor.js
new file mode 100644
index 0000000..079235a
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/string/fontcolor.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.string.fontcolor');
+module.exports = require('../../modules/_core').String.fontcolor;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/string/fontsize.js b/node_modules/babel-register/node_modules/core-js/fn/string/fontsize.js
new file mode 100644
index 0000000..8cb2555
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/string/fontsize.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.string.fontsize');
+module.exports = require('../../modules/_core').String.fontsize;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/string/from-code-point.js b/node_modules/babel-register/node_modules/core-js/fn/string/from-code-point.js
new file mode 100644
index 0000000..93fc53a
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/string/from-code-point.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.string.from-code-point');
+module.exports = require('../../modules/_core').String.fromCodePoint;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/string/includes.js b/node_modules/babel-register/node_modules/core-js/fn/string/includes.js
new file mode 100644
index 0000000..c973640
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/string/includes.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.string.includes');
+module.exports = require('../../modules/_core').String.includes;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/string/index.js b/node_modules/babel-register/node_modules/core-js/fn/string/index.js
new file mode 100644
index 0000000..6485a9b
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/string/index.js
@@ -0,0 +1,35 @@
+require('../../modules/es6.string.from-code-point');
+require('../../modules/es6.string.raw');
+require('../../modules/es6.string.trim');
+require('../../modules/es6.string.iterator');
+require('../../modules/es6.string.code-point-at');
+require('../../modules/es6.string.ends-with');
+require('../../modules/es6.string.includes');
+require('../../modules/es6.string.repeat');
+require('../../modules/es6.string.starts-with');
+require('../../modules/es6.regexp.match');
+require('../../modules/es6.regexp.replace');
+require('../../modules/es6.regexp.search');
+require('../../modules/es6.regexp.split');
+require('../../modules/es6.string.anchor');
+require('../../modules/es6.string.big');
+require('../../modules/es6.string.blink');
+require('../../modules/es6.string.bold');
+require('../../modules/es6.string.fixed');
+require('../../modules/es6.string.fontcolor');
+require('../../modules/es6.string.fontsize');
+require('../../modules/es6.string.italics');
+require('../../modules/es6.string.link');
+require('../../modules/es6.string.small');
+require('../../modules/es6.string.strike');
+require('../../modules/es6.string.sub');
+require('../../modules/es6.string.sup');
+require('../../modules/es7.string.at');
+require('../../modules/es7.string.pad-start');
+require('../../modules/es7.string.pad-end');
+require('../../modules/es7.string.trim-left');
+require('../../modules/es7.string.trim-right');
+require('../../modules/es7.string.match-all');
+require('../../modules/core.string.escape-html');
+require('../../modules/core.string.unescape-html');
+module.exports = require('../../modules/_core').String;
diff --git a/node_modules/babel-register/node_modules/core-js/fn/string/italics.js b/node_modules/babel-register/node_modules/core-js/fn/string/italics.js
new file mode 100644
index 0000000..378450e
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/string/italics.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.string.italics');
+module.exports = require('../../modules/_core').String.italics;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/string/iterator.js b/node_modules/babel-register/node_modules/core-js/fn/string/iterator.js
new file mode 100644
index 0000000..947e755
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/string/iterator.js
@@ -0,0 +1,5 @@
+require('../../modules/es6.string.iterator');
+var get = require('../../modules/_iterators').String;
+module.exports = function(it){
+ return get.call(it);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/string/link.js b/node_modules/babel-register/node_modules/core-js/fn/string/link.js
new file mode 100644
index 0000000..1eb2c6d
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/string/link.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.string.link');
+module.exports = require('../../modules/_core').String.link;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/string/match-all.js b/node_modules/babel-register/node_modules/core-js/fn/string/match-all.js
new file mode 100644
index 0000000..1a1dfeb
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/string/match-all.js
@@ -0,0 +1,2 @@
+require('../../modules/es7.string.match-all');
+module.exports = require('../../modules/_core').String.matchAll;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/string/pad-end.js b/node_modules/babel-register/node_modules/core-js/fn/string/pad-end.js
new file mode 100644
index 0000000..23eb9f9
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/string/pad-end.js
@@ -0,0 +1,2 @@
+require('../../modules/es7.string.pad-end');
+module.exports = require('../../modules/_core').String.padEnd;
diff --git a/node_modules/babel-register/node_modules/core-js/fn/string/pad-start.js b/node_modules/babel-register/node_modules/core-js/fn/string/pad-start.js
new file mode 100644
index 0000000..ff12739
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/string/pad-start.js
@@ -0,0 +1,2 @@
+require('../../modules/es7.string.pad-start');
+module.exports = require('../../modules/_core').String.padStart;
diff --git a/node_modules/babel-register/node_modules/core-js/fn/string/raw.js b/node_modules/babel-register/node_modules/core-js/fn/string/raw.js
new file mode 100644
index 0000000..713550f
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/string/raw.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.string.raw');
+module.exports = require('../../modules/_core').String.raw;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/string/repeat.js b/node_modules/babel-register/node_modules/core-js/fn/string/repeat.js
new file mode 100644
index 0000000..fa75b13
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/string/repeat.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.string.repeat');
+module.exports = require('../../modules/_core').String.repeat;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/string/small.js b/node_modules/babel-register/node_modules/core-js/fn/string/small.js
new file mode 100644
index 0000000..0438290
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/string/small.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.string.small');
+module.exports = require('../../modules/_core').String.small;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/string/starts-with.js b/node_modules/babel-register/node_modules/core-js/fn/string/starts-with.js
new file mode 100644
index 0000000..d62512a
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/string/starts-with.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.string.starts-with');
+module.exports = require('../../modules/_core').String.startsWith;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/string/strike.js b/node_modules/babel-register/node_modules/core-js/fn/string/strike.js
new file mode 100644
index 0000000..b79946c
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/string/strike.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.string.strike');
+module.exports = require('../../modules/_core').String.strike;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/string/sub.js b/node_modules/babel-register/node_modules/core-js/fn/string/sub.js
new file mode 100644
index 0000000..54d0671
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/string/sub.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.string.sub');
+module.exports = require('../../modules/_core').String.sub;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/string/sup.js b/node_modules/babel-register/node_modules/core-js/fn/string/sup.js
new file mode 100644
index 0000000..645e037
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/string/sup.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.string.sup');
+module.exports = require('../../modules/_core').String.sup;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/string/trim-end.js b/node_modules/babel-register/node_modules/core-js/fn/string/trim-end.js
new file mode 100644
index 0000000..f3bdf6f
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/string/trim-end.js
@@ -0,0 +1,2 @@
+require('../../modules/es7.string.trim-right');
+module.exports = require('../../modules/_core').String.trimRight;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/string/trim-left.js b/node_modules/babel-register/node_modules/core-js/fn/string/trim-left.js
new file mode 100644
index 0000000..04671d3
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/string/trim-left.js
@@ -0,0 +1,2 @@
+require('../../modules/es7.string.trim-left');
+module.exports = require('../../modules/_core').String.trimLeft;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/string/trim-right.js b/node_modules/babel-register/node_modules/core-js/fn/string/trim-right.js
new file mode 100644
index 0000000..f3bdf6f
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/string/trim-right.js
@@ -0,0 +1,2 @@
+require('../../modules/es7.string.trim-right');
+module.exports = require('../../modules/_core').String.trimRight;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/string/trim-start.js b/node_modules/babel-register/node_modules/core-js/fn/string/trim-start.js
new file mode 100644
index 0000000..04671d3
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/string/trim-start.js
@@ -0,0 +1,2 @@
+require('../../modules/es7.string.trim-left');
+module.exports = require('../../modules/_core').String.trimLeft;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/string/trim.js b/node_modules/babel-register/node_modules/core-js/fn/string/trim.js
new file mode 100644
index 0000000..c536e12
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/string/trim.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.string.trim');
+module.exports = require('../../modules/_core').String.trim;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/string/unescape-html.js b/node_modules/babel-register/node_modules/core-js/fn/string/unescape-html.js
new file mode 100644
index 0000000..7c2c55c
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/string/unescape-html.js
@@ -0,0 +1,2 @@
+require('../../modules/core.string.unescape-html');
+module.exports = require('../../modules/_core').String.unescapeHTML;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/string/virtual/anchor.js b/node_modules/babel-register/node_modules/core-js/fn/string/virtual/anchor.js
new file mode 100644
index 0000000..6f74b7e
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/string/virtual/anchor.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.string.anchor');
+module.exports = require('../../../modules/_entry-virtual')('String').anchor;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/string/virtual/at.js b/node_modules/babel-register/node_modules/core-js/fn/string/virtual/at.js
new file mode 100644
index 0000000..3b96143
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/string/virtual/at.js
@@ -0,0 +1,2 @@
+require('../../../modules/es7.string.at');
+module.exports = require('../../../modules/_entry-virtual')('String').at;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/string/virtual/big.js b/node_modules/babel-register/node_modules/core-js/fn/string/virtual/big.js
new file mode 100644
index 0000000..57ac7d5
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/string/virtual/big.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.string.big');
+module.exports = require('../../../modules/_entry-virtual')('String').big;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/string/virtual/blink.js b/node_modules/babel-register/node_modules/core-js/fn/string/virtual/blink.js
new file mode 100644
index 0000000..5c4cea8
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/string/virtual/blink.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.string.blink');
+module.exports = require('../../../modules/_entry-virtual')('String').blink;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/string/virtual/bold.js b/node_modules/babel-register/node_modules/core-js/fn/string/virtual/bold.js
new file mode 100644
index 0000000..c566bf2
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/string/virtual/bold.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.string.bold');
+module.exports = require('../../../modules/_entry-virtual')('String').bold;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/string/virtual/code-point-at.js b/node_modules/babel-register/node_modules/core-js/fn/string/virtual/code-point-at.js
new file mode 100644
index 0000000..8737521
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/string/virtual/code-point-at.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.string.code-point-at');
+module.exports = require('../../../modules/_entry-virtual')('String').codePointAt;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/string/virtual/ends-with.js b/node_modules/babel-register/node_modules/core-js/fn/string/virtual/ends-with.js
new file mode 100644
index 0000000..90bc6e7
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/string/virtual/ends-with.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.string.ends-with');
+module.exports = require('../../../modules/_entry-virtual')('String').endsWith;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/string/virtual/escape-html.js b/node_modules/babel-register/node_modules/core-js/fn/string/virtual/escape-html.js
new file mode 100644
index 0000000..3342bce
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/string/virtual/escape-html.js
@@ -0,0 +1,2 @@
+require('../../../modules/core.string.escape-html');
+module.exports = require('../../../modules/_entry-virtual')('String').escapeHTML;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/string/virtual/fixed.js b/node_modules/babel-register/node_modules/core-js/fn/string/virtual/fixed.js
new file mode 100644
index 0000000..e830654
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/string/virtual/fixed.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.string.fixed');
+module.exports = require('../../../modules/_entry-virtual')('String').fixed;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/string/virtual/fontcolor.js b/node_modules/babel-register/node_modules/core-js/fn/string/virtual/fontcolor.js
new file mode 100644
index 0000000..cfb9b2c
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/string/virtual/fontcolor.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.string.fontcolor');
+module.exports = require('../../../modules/_entry-virtual')('String').fontcolor;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/string/virtual/fontsize.js b/node_modules/babel-register/node_modules/core-js/fn/string/virtual/fontsize.js
new file mode 100644
index 0000000..de8f516
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/string/virtual/fontsize.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.string.fontsize');
+module.exports = require('../../../modules/_entry-virtual')('String').fontsize;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/string/virtual/includes.js b/node_modules/babel-register/node_modules/core-js/fn/string/virtual/includes.js
new file mode 100644
index 0000000..1e4793d
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/string/virtual/includes.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.string.includes');
+module.exports = require('../../../modules/_entry-virtual')('String').includes;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/string/virtual/index.js b/node_modules/babel-register/node_modules/core-js/fn/string/virtual/index.js
new file mode 100644
index 0000000..0e65d20
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/string/virtual/index.js
@@ -0,0 +1,33 @@
+require('../../../modules/es6.string.trim');
+require('../../../modules/es6.string.iterator');
+require('../../../modules/es6.string.code-point-at');
+require('../../../modules/es6.string.ends-with');
+require('../../../modules/es6.string.includes');
+require('../../../modules/es6.string.repeat');
+require('../../../modules/es6.string.starts-with');
+require('../../../modules/es6.regexp.match');
+require('../../../modules/es6.regexp.replace');
+require('../../../modules/es6.regexp.search');
+require('../../../modules/es6.regexp.split');
+require('../../../modules/es6.string.anchor');
+require('../../../modules/es6.string.big');
+require('../../../modules/es6.string.blink');
+require('../../../modules/es6.string.bold');
+require('../../../modules/es6.string.fixed');
+require('../../../modules/es6.string.fontcolor');
+require('../../../modules/es6.string.fontsize');
+require('../../../modules/es6.string.italics');
+require('../../../modules/es6.string.link');
+require('../../../modules/es6.string.small');
+require('../../../modules/es6.string.strike');
+require('../../../modules/es6.string.sub');
+require('../../../modules/es6.string.sup');
+require('../../../modules/es7.string.at');
+require('../../../modules/es7.string.pad-start');
+require('../../../modules/es7.string.pad-end');
+require('../../../modules/es7.string.trim-left');
+require('../../../modules/es7.string.trim-right');
+require('../../../modules/es7.string.match-all');
+require('../../../modules/core.string.escape-html');
+require('../../../modules/core.string.unescape-html');
+module.exports = require('../../../modules/_entry-virtual')('String');
diff --git a/node_modules/babel-register/node_modules/core-js/fn/string/virtual/italics.js b/node_modules/babel-register/node_modules/core-js/fn/string/virtual/italics.js
new file mode 100644
index 0000000..f8f1d33
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/string/virtual/italics.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.string.italics');
+module.exports = require('../../../modules/_entry-virtual')('String').italics;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/string/virtual/iterator.js b/node_modules/babel-register/node_modules/core-js/fn/string/virtual/iterator.js
new file mode 100644
index 0000000..7efe2f9
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/string/virtual/iterator.js
@@ -0,0 +1,2 @@
+require('../../../modules/core.number.iterator');
+module.exports = require('../../../modules/_iterators').String;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/string/virtual/link.js b/node_modules/babel-register/node_modules/core-js/fn/string/virtual/link.js
new file mode 100644
index 0000000..4b2eea8
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/string/virtual/link.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.string.link');
+module.exports = require('../../../modules/_entry-virtual')('String').link;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/string/virtual/match-all.js b/node_modules/babel-register/node_modules/core-js/fn/string/virtual/match-all.js
new file mode 100644
index 0000000..9208873
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/string/virtual/match-all.js
@@ -0,0 +1,2 @@
+require('../../../modules/es7.string.match-all');
+module.exports = require('../../../modules/_entry-virtual')('String').matchAll;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/string/virtual/pad-end.js b/node_modules/babel-register/node_modules/core-js/fn/string/virtual/pad-end.js
new file mode 100644
index 0000000..81e5ac0
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/string/virtual/pad-end.js
@@ -0,0 +1,2 @@
+require('../../../modules/es7.string.pad-end');
+module.exports = require('../../../modules/_entry-virtual')('String').padEnd;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/string/virtual/pad-start.js b/node_modules/babel-register/node_modules/core-js/fn/string/virtual/pad-start.js
new file mode 100644
index 0000000..54cf3a5
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/string/virtual/pad-start.js
@@ -0,0 +1,2 @@
+require('../../../modules/es7.string.pad-start');
+module.exports = require('../../../modules/_entry-virtual')('String').padStart;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/string/virtual/repeat.js b/node_modules/babel-register/node_modules/core-js/fn/string/virtual/repeat.js
new file mode 100644
index 0000000..d08cf6a
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/string/virtual/repeat.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.string.repeat');
+module.exports = require('../../../modules/_entry-virtual')('String').repeat;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/string/virtual/small.js b/node_modules/babel-register/node_modules/core-js/fn/string/virtual/small.js
new file mode 100644
index 0000000..201bf9b
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/string/virtual/small.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.string.small');
+module.exports = require('../../../modules/_entry-virtual')('String').small;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/string/virtual/starts-with.js b/node_modules/babel-register/node_modules/core-js/fn/string/virtual/starts-with.js
new file mode 100644
index 0000000..f8897d1
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/string/virtual/starts-with.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.string.starts-with');
+module.exports = require('../../../modules/_entry-virtual')('String').startsWith;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/string/virtual/strike.js b/node_modules/babel-register/node_modules/core-js/fn/string/virtual/strike.js
new file mode 100644
index 0000000..4572db9
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/string/virtual/strike.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.string.strike');
+module.exports = require('../../../modules/_entry-virtual')('String').strike;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/string/virtual/sub.js b/node_modules/babel-register/node_modules/core-js/fn/string/virtual/sub.js
new file mode 100644
index 0000000..a13611e
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/string/virtual/sub.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.string.sub');
+module.exports = require('../../../modules/_entry-virtual')('String').sub;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/string/virtual/sup.js b/node_modules/babel-register/node_modules/core-js/fn/string/virtual/sup.js
new file mode 100644
index 0000000..0769532
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/string/virtual/sup.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.string.sup');
+module.exports = require('../../../modules/_entry-virtual')('String').sup;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/string/virtual/trim-end.js b/node_modules/babel-register/node_modules/core-js/fn/string/virtual/trim-end.js
new file mode 100644
index 0000000..14c25ac
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/string/virtual/trim-end.js
@@ -0,0 +1,2 @@
+require('../../../modules/es7.string.trim-right');
+module.exports = require('../../../modules/_entry-virtual')('String').trimRight;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/string/virtual/trim-left.js b/node_modules/babel-register/node_modules/core-js/fn/string/virtual/trim-left.js
new file mode 100644
index 0000000..aabcfb3
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/string/virtual/trim-left.js
@@ -0,0 +1,2 @@
+require('../../../modules/es7.string.trim-left');
+module.exports = require('../../../modules/_entry-virtual')('String').trimLeft;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/string/virtual/trim-right.js b/node_modules/babel-register/node_modules/core-js/fn/string/virtual/trim-right.js
new file mode 100644
index 0000000..14c25ac
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/string/virtual/trim-right.js
@@ -0,0 +1,2 @@
+require('../../../modules/es7.string.trim-right');
+module.exports = require('../../../modules/_entry-virtual')('String').trimRight;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/string/virtual/trim-start.js b/node_modules/babel-register/node_modules/core-js/fn/string/virtual/trim-start.js
new file mode 100644
index 0000000..aabcfb3
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/string/virtual/trim-start.js
@@ -0,0 +1,2 @@
+require('../../../modules/es7.string.trim-left');
+module.exports = require('../../../modules/_entry-virtual')('String').trimLeft;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/string/virtual/trim.js b/node_modules/babel-register/node_modules/core-js/fn/string/virtual/trim.js
new file mode 100644
index 0000000..23fbcbc
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/string/virtual/trim.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.string.trim');
+module.exports = require('../../../modules/_entry-virtual')('String').trim;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/string/virtual/unescape-html.js b/node_modules/babel-register/node_modules/core-js/fn/string/virtual/unescape-html.js
new file mode 100644
index 0000000..51eb59f
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/string/virtual/unescape-html.js
@@ -0,0 +1,2 @@
+require('../../../modules/core.string.unescape-html');
+module.exports = require('../../../modules/_entry-virtual')('String').unescapeHTML;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/symbol/for.js b/node_modules/babel-register/node_modules/core-js/fn/symbol/for.js
new file mode 100644
index 0000000..c9e93c1
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/symbol/for.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.symbol');
+module.exports = require('../../modules/_core').Symbol['for'];
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/symbol/has-instance.js b/node_modules/babel-register/node_modules/core-js/fn/symbol/has-instance.js
new file mode 100644
index 0000000..7d7da16
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/symbol/has-instance.js
@@ -0,0 +1 @@
+module.exports = require('../../modules/_wks')('hasInstance');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/symbol/index.js b/node_modules/babel-register/node_modules/core-js/fn/symbol/index.js
new file mode 100644
index 0000000..b4c09a0
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/symbol/index.js
@@ -0,0 +1,3 @@
+require('../../modules/es6.symbol');
+require('../../modules/es6.object.to-string');
+module.exports = require('../../modules/_core').Symbol;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/symbol/is-concat-spreadable.js b/node_modules/babel-register/node_modules/core-js/fn/symbol/is-concat-spreadable.js
new file mode 100644
index 0000000..51ab012
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/symbol/is-concat-spreadable.js
@@ -0,0 +1 @@
+module.exports = require('../../modules/_wks')('isConcatSpreadable');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/symbol/iterator.js b/node_modules/babel-register/node_modules/core-js/fn/symbol/iterator.js
new file mode 100644
index 0000000..e3399c7
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/symbol/iterator.js
@@ -0,0 +1,3 @@
+require('../../modules/es6.string.iterator');
+require('../../modules/web.dom.iterable');
+module.exports = require('../../modules/_wks')('iterator');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/symbol/key-for.js b/node_modules/babel-register/node_modules/core-js/fn/symbol/key-for.js
new file mode 100644
index 0000000..d9b595f
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/symbol/key-for.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.symbol');
+module.exports = require('../../modules/_core').Symbol.keyFor;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/symbol/match.js b/node_modules/babel-register/node_modules/core-js/fn/symbol/match.js
new file mode 100644
index 0000000..97acebd
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/symbol/match.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.regexp.match');
+module.exports = require('../../modules/_wks')('match');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/symbol/replace.js b/node_modules/babel-register/node_modules/core-js/fn/symbol/replace.js
new file mode 100644
index 0000000..433e11c
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/symbol/replace.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.regexp.replace');
+module.exports = require('../../modules/_wks')('replace');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/symbol/search.js b/node_modules/babel-register/node_modules/core-js/fn/symbol/search.js
new file mode 100644
index 0000000..575f18d
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/symbol/search.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.regexp.search');
+module.exports = require('../../modules/_wks')('search');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/symbol/species.js b/node_modules/babel-register/node_modules/core-js/fn/symbol/species.js
new file mode 100644
index 0000000..5e85d4e
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/symbol/species.js
@@ -0,0 +1 @@
+module.exports = require('../../modules/_wks')('species');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/symbol/split.js b/node_modules/babel-register/node_modules/core-js/fn/symbol/split.js
new file mode 100644
index 0000000..f8ce741
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/symbol/split.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.regexp.split');
+module.exports = require('../../modules/_wks')('split');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/symbol/to-primitive.js b/node_modules/babel-register/node_modules/core-js/fn/symbol/to-primitive.js
new file mode 100644
index 0000000..02e3317
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/symbol/to-primitive.js
@@ -0,0 +1 @@
+module.exports = require('../../modules/_wks')('toPrimitive');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/symbol/to-string-tag.js b/node_modules/babel-register/node_modules/core-js/fn/symbol/to-string-tag.js
new file mode 100644
index 0000000..bf23ef0
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/symbol/to-string-tag.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.object.to-string');
+module.exports = require('../../modules/_wks')('toStringTag');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/symbol/unscopables.js b/node_modules/babel-register/node_modules/core-js/fn/symbol/unscopables.js
new file mode 100644
index 0000000..0ad4b56
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/symbol/unscopables.js
@@ -0,0 +1 @@
+module.exports = require('../../modules/_wks')('unscopables');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/system/global.js b/node_modules/babel-register/node_modules/core-js/fn/system/global.js
new file mode 100644
index 0000000..c3219d6
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/system/global.js
@@ -0,0 +1,2 @@
+require('../../modules/es7.system.global');
+module.exports = require('../../modules/_core').System.global;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/system/index.js b/node_modules/babel-register/node_modules/core-js/fn/system/index.js
new file mode 100644
index 0000000..eae78dd
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/system/index.js
@@ -0,0 +1,2 @@
+require('../../modules/es7.system.global');
+module.exports = require('../../modules/_core').System;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/typed/array-buffer.js b/node_modules/babel-register/node_modules/core-js/fn/typed/array-buffer.js
new file mode 100644
index 0000000..fe08f7f
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/typed/array-buffer.js
@@ -0,0 +1,3 @@
+require('../../modules/es6.typed.array-buffer');
+require('../../modules/es6.object.to-string');
+module.exports = require('../../modules/_core').ArrayBuffer;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/typed/data-view.js b/node_modules/babel-register/node_modules/core-js/fn/typed/data-view.js
new file mode 100644
index 0000000..09dbb38
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/typed/data-view.js
@@ -0,0 +1,3 @@
+require('../../modules/es6.typed.data-view');
+require('../../modules/es6.object.to-string');
+module.exports = require('../../modules/_core').DataView;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/typed/float32-array.js b/node_modules/babel-register/node_modules/core-js/fn/typed/float32-array.js
new file mode 100644
index 0000000..1191fec
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/typed/float32-array.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.typed.float32-array');
+module.exports = require('../../modules/_core').Float32Array;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/typed/float64-array.js b/node_modules/babel-register/node_modules/core-js/fn/typed/float64-array.js
new file mode 100644
index 0000000..6073a68
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/typed/float64-array.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.typed.float64-array');
+module.exports = require('../../modules/_core').Float64Array;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/typed/index.js b/node_modules/babel-register/node_modules/core-js/fn/typed/index.js
new file mode 100644
index 0000000..7babe09
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/typed/index.js
@@ -0,0 +1,13 @@
+require('../../modules/es6.typed.array-buffer');
+require('../../modules/es6.typed.data-view');
+require('../../modules/es6.typed.int8-array');
+require('../../modules/es6.typed.uint8-array');
+require('../../modules/es6.typed.uint8-clamped-array');
+require('../../modules/es6.typed.int16-array');
+require('../../modules/es6.typed.uint16-array');
+require('../../modules/es6.typed.int32-array');
+require('../../modules/es6.typed.uint32-array');
+require('../../modules/es6.typed.float32-array');
+require('../../modules/es6.typed.float64-array');
+require('../../modules/es6.object.to-string');
+module.exports = require('../../modules/_core');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/typed/int16-array.js b/node_modules/babel-register/node_modules/core-js/fn/typed/int16-array.js
new file mode 100644
index 0000000..0722549
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/typed/int16-array.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.typed.int16-array');
+module.exports = require('../../modules/_core').Int16Array;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/typed/int32-array.js b/node_modules/babel-register/node_modules/core-js/fn/typed/int32-array.js
new file mode 100644
index 0000000..1361362
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/typed/int32-array.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.typed.int32-array');
+module.exports = require('../../modules/_core').Int32Array;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/typed/int8-array.js b/node_modules/babel-register/node_modules/core-js/fn/typed/int8-array.js
new file mode 100644
index 0000000..edf48c7
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/typed/int8-array.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.typed.int8-array');
+module.exports = require('../../modules/_core').Int8Array;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/typed/uint16-array.js b/node_modules/babel-register/node_modules/core-js/fn/typed/uint16-array.js
new file mode 100644
index 0000000..3ff1155
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/typed/uint16-array.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.typed.uint16-array');
+module.exports = require('../../modules/_core').Uint16Array;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/typed/uint32-array.js b/node_modules/babel-register/node_modules/core-js/fn/typed/uint32-array.js
new file mode 100644
index 0000000..47bb4c2
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/typed/uint32-array.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.typed.uint32-array');
+module.exports = require('../../modules/_core').Uint32Array;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/typed/uint8-array.js b/node_modules/babel-register/node_modules/core-js/fn/typed/uint8-array.js
new file mode 100644
index 0000000..fd8a4b1
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/typed/uint8-array.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.typed.uint8-array');
+module.exports = require('../../modules/_core').Uint8Array;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/typed/uint8-clamped-array.js b/node_modules/babel-register/node_modules/core-js/fn/typed/uint8-clamped-array.js
new file mode 100644
index 0000000..c688657
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/typed/uint8-clamped-array.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.typed.uint8-clamped-array');
+module.exports = require('../../modules/_core').Uint8ClampedArray;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/weak-map.js b/node_modules/babel-register/node_modules/core-js/fn/weak-map.js
new file mode 100644
index 0000000..00cac1a
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/weak-map.js
@@ -0,0 +1,4 @@
+require('../modules/es6.object.to-string');
+require('../modules/web.dom.iterable');
+require('../modules/es6.weak-map');
+module.exports = require('../modules/_core').WeakMap;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/fn/weak-set.js b/node_modules/babel-register/node_modules/core-js/fn/weak-set.js
new file mode 100644
index 0000000..eef1af2
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/fn/weak-set.js
@@ -0,0 +1,4 @@
+require('../modules/es6.object.to-string');
+require('../modules/web.dom.iterable');
+require('../modules/es6.weak-set');
+module.exports = require('../modules/_core').WeakSet;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/index.js b/node_modules/babel-register/node_modules/core-js/index.js
new file mode 100644
index 0000000..78b9e3d
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/index.js
@@ -0,0 +1,16 @@
+require('./shim');
+require('./modules/core.dict');
+require('./modules/core.get-iterator-method');
+require('./modules/core.get-iterator');
+require('./modules/core.is-iterable');
+require('./modules/core.delay');
+require('./modules/core.function.part');
+require('./modules/core.object.is-object');
+require('./modules/core.object.classof');
+require('./modules/core.object.define');
+require('./modules/core.object.make');
+require('./modules/core.number.iterator');
+require('./modules/core.regexp.escape');
+require('./modules/core.string.escape-html');
+require('./modules/core.string.unescape-html');
+module.exports = require('./modules/_core');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/core/_.js b/node_modules/babel-register/node_modules/core-js/library/core/_.js
new file mode 100644
index 0000000..8a99f70
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/core/_.js
@@ -0,0 +1,2 @@
+require('../modules/core.function.part');
+module.exports = require('../modules/_core')._;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/core/delay.js b/node_modules/babel-register/node_modules/core-js/library/core/delay.js
new file mode 100644
index 0000000..1885738
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/core/delay.js
@@ -0,0 +1,2 @@
+require('../modules/core.delay');
+module.exports = require('../modules/_core').delay;
diff --git a/node_modules/babel-register/node_modules/core-js/library/core/dict.js b/node_modules/babel-register/node_modules/core-js/library/core/dict.js
new file mode 100644
index 0000000..da84a8d
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/core/dict.js
@@ -0,0 +1,2 @@
+require('../modules/core.dict');
+module.exports = require('../modules/_core').Dict;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/core/function.js b/node_modules/babel-register/node_modules/core-js/library/core/function.js
new file mode 100644
index 0000000..3b8d013
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/core/function.js
@@ -0,0 +1,2 @@
+require('../modules/core.function.part');
+module.exports = require('../modules/_core').Function;
diff --git a/node_modules/babel-register/node_modules/core-js/library/core/index.js b/node_modules/babel-register/node_modules/core-js/library/core/index.js
new file mode 100644
index 0000000..2b20fd9
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/core/index.js
@@ -0,0 +1,15 @@
+require('../modules/core.dict');
+require('../modules/core.get-iterator-method');
+require('../modules/core.get-iterator');
+require('../modules/core.is-iterable');
+require('../modules/core.delay');
+require('../modules/core.function.part');
+require('../modules/core.object.is-object');
+require('../modules/core.object.classof');
+require('../modules/core.object.define');
+require('../modules/core.object.make');
+require('../modules/core.number.iterator');
+require('../modules/core.regexp.escape');
+require('../modules/core.string.escape-html');
+require('../modules/core.string.unescape-html');
+module.exports = require('../modules/_core');
diff --git a/node_modules/babel-register/node_modules/core-js/library/core/number.js b/node_modules/babel-register/node_modules/core-js/library/core/number.js
new file mode 100644
index 0000000..62f632c
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/core/number.js
@@ -0,0 +1,2 @@
+require('../modules/core.number.iterator');
+module.exports = require('../modules/_core').Number;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/core/object.js b/node_modules/babel-register/node_modules/core-js/library/core/object.js
new file mode 100644
index 0000000..04e539c
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/core/object.js
@@ -0,0 +1,5 @@
+require('../modules/core.object.is-object');
+require('../modules/core.object.classof');
+require('../modules/core.object.define');
+require('../modules/core.object.make');
+module.exports = require('../modules/_core').Object;
diff --git a/node_modules/babel-register/node_modules/core-js/library/core/regexp.js b/node_modules/babel-register/node_modules/core-js/library/core/regexp.js
new file mode 100644
index 0000000..3e04c51
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/core/regexp.js
@@ -0,0 +1,2 @@
+require('../modules/core.regexp.escape');
+module.exports = require('../modules/_core').RegExp;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/core/string.js b/node_modules/babel-register/node_modules/core-js/library/core/string.js
new file mode 100644
index 0000000..8da740c
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/core/string.js
@@ -0,0 +1,3 @@
+require('../modules/core.string.escape-html');
+require('../modules/core.string.unescape-html');
+module.exports = require('../modules/_core').String;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/es5/index.js b/node_modules/babel-register/node_modules/core-js/library/es5/index.js
new file mode 100644
index 0000000..580f1a6
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/es5/index.js
@@ -0,0 +1,37 @@
+require('../modules/es6.object.create');
+require('../modules/es6.object.define-property');
+require('../modules/es6.object.define-properties');
+require('../modules/es6.object.get-own-property-descriptor');
+require('../modules/es6.object.get-prototype-of');
+require('../modules/es6.object.keys');
+require('../modules/es6.object.get-own-property-names');
+require('../modules/es6.object.freeze');
+require('../modules/es6.object.seal');
+require('../modules/es6.object.prevent-extensions');
+require('../modules/es6.object.is-frozen');
+require('../modules/es6.object.is-sealed');
+require('../modules/es6.object.is-extensible');
+require('../modules/es6.function.bind');
+require('../modules/es6.array.is-array');
+require('../modules/es6.array.join');
+require('../modules/es6.array.slice');
+require('../modules/es6.array.sort');
+require('../modules/es6.array.for-each');
+require('../modules/es6.array.map');
+require('../modules/es6.array.filter');
+require('../modules/es6.array.some');
+require('../modules/es6.array.every');
+require('../modules/es6.array.reduce');
+require('../modules/es6.array.reduce-right');
+require('../modules/es6.array.index-of');
+require('../modules/es6.array.last-index-of');
+require('../modules/es6.number.to-fixed');
+require('../modules/es6.number.to-precision');
+require('../modules/es6.date.now');
+require('../modules/es6.date.to-iso-string');
+require('../modules/es6.date.to-json');
+require('../modules/es6.parse-int');
+require('../modules/es6.parse-float');
+require('../modules/es6.string.trim');
+require('../modules/es6.regexp.to-string');
+module.exports = require('../modules/_core');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/es6/array.js b/node_modules/babel-register/node_modules/core-js/library/es6/array.js
new file mode 100644
index 0000000..428d3e8
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/es6/array.js
@@ -0,0 +1,23 @@
+require('../modules/es6.string.iterator');
+require('../modules/es6.array.is-array');
+require('../modules/es6.array.from');
+require('../modules/es6.array.of');
+require('../modules/es6.array.join');
+require('../modules/es6.array.slice');
+require('../modules/es6.array.sort');
+require('../modules/es6.array.for-each');
+require('../modules/es6.array.map');
+require('../modules/es6.array.filter');
+require('../modules/es6.array.some');
+require('../modules/es6.array.every');
+require('../modules/es6.array.reduce');
+require('../modules/es6.array.reduce-right');
+require('../modules/es6.array.index-of');
+require('../modules/es6.array.last-index-of');
+require('../modules/es6.array.copy-within');
+require('../modules/es6.array.fill');
+require('../modules/es6.array.find');
+require('../modules/es6.array.find-index');
+require('../modules/es6.array.species');
+require('../modules/es6.array.iterator');
+module.exports = require('../modules/_core').Array;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/es6/date.js b/node_modules/babel-register/node_modules/core-js/library/es6/date.js
new file mode 100644
index 0000000..dfa3be0
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/es6/date.js
@@ -0,0 +1,6 @@
+require('../modules/es6.date.now');
+require('../modules/es6.date.to-json');
+require('../modules/es6.date.to-iso-string');
+require('../modules/es6.date.to-string');
+require('../modules/es6.date.to-primitive');
+module.exports = Date;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/es6/function.js b/node_modules/babel-register/node_modules/core-js/library/es6/function.js
new file mode 100644
index 0000000..ff685da
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/es6/function.js
@@ -0,0 +1,4 @@
+require('../modules/es6.function.bind');
+require('../modules/es6.function.name');
+require('../modules/es6.function.has-instance');
+module.exports = require('../modules/_core').Function;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/es6/index.js b/node_modules/babel-register/node_modules/core-js/library/es6/index.js
new file mode 100644
index 0000000..59df509
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/es6/index.js
@@ -0,0 +1,138 @@
+require('../modules/es6.symbol');
+require('../modules/es6.object.create');
+require('../modules/es6.object.define-property');
+require('../modules/es6.object.define-properties');
+require('../modules/es6.object.get-own-property-descriptor');
+require('../modules/es6.object.get-prototype-of');
+require('../modules/es6.object.keys');
+require('../modules/es6.object.get-own-property-names');
+require('../modules/es6.object.freeze');
+require('../modules/es6.object.seal');
+require('../modules/es6.object.prevent-extensions');
+require('../modules/es6.object.is-frozen');
+require('../modules/es6.object.is-sealed');
+require('../modules/es6.object.is-extensible');
+require('../modules/es6.object.assign');
+require('../modules/es6.object.is');
+require('../modules/es6.object.set-prototype-of');
+require('../modules/es6.object.to-string');
+require('../modules/es6.function.bind');
+require('../modules/es6.function.name');
+require('../modules/es6.function.has-instance');
+require('../modules/es6.parse-int');
+require('../modules/es6.parse-float');
+require('../modules/es6.number.constructor');
+require('../modules/es6.number.to-fixed');
+require('../modules/es6.number.to-precision');
+require('../modules/es6.number.epsilon');
+require('../modules/es6.number.is-finite');
+require('../modules/es6.number.is-integer');
+require('../modules/es6.number.is-nan');
+require('../modules/es6.number.is-safe-integer');
+require('../modules/es6.number.max-safe-integer');
+require('../modules/es6.number.min-safe-integer');
+require('../modules/es6.number.parse-float');
+require('../modules/es6.number.parse-int');
+require('../modules/es6.math.acosh');
+require('../modules/es6.math.asinh');
+require('../modules/es6.math.atanh');
+require('../modules/es6.math.cbrt');
+require('../modules/es6.math.clz32');
+require('../modules/es6.math.cosh');
+require('../modules/es6.math.expm1');
+require('../modules/es6.math.fround');
+require('../modules/es6.math.hypot');
+require('../modules/es6.math.imul');
+require('../modules/es6.math.log10');
+require('../modules/es6.math.log1p');
+require('../modules/es6.math.log2');
+require('../modules/es6.math.sign');
+require('../modules/es6.math.sinh');
+require('../modules/es6.math.tanh');
+require('../modules/es6.math.trunc');
+require('../modules/es6.string.from-code-point');
+require('../modules/es6.string.raw');
+require('../modules/es6.string.trim');
+require('../modules/es6.string.iterator');
+require('../modules/es6.string.code-point-at');
+require('../modules/es6.string.ends-with');
+require('../modules/es6.string.includes');
+require('../modules/es6.string.repeat');
+require('../modules/es6.string.starts-with');
+require('../modules/es6.string.anchor');
+require('../modules/es6.string.big');
+require('../modules/es6.string.blink');
+require('../modules/es6.string.bold');
+require('../modules/es6.string.fixed');
+require('../modules/es6.string.fontcolor');
+require('../modules/es6.string.fontsize');
+require('../modules/es6.string.italics');
+require('../modules/es6.string.link');
+require('../modules/es6.string.small');
+require('../modules/es6.string.strike');
+require('../modules/es6.string.sub');
+require('../modules/es6.string.sup');
+require('../modules/es6.date.now');
+require('../modules/es6.date.to-json');
+require('../modules/es6.date.to-iso-string');
+require('../modules/es6.date.to-string');
+require('../modules/es6.date.to-primitive');
+require('../modules/es6.array.is-array');
+require('../modules/es6.array.from');
+require('../modules/es6.array.of');
+require('../modules/es6.array.join');
+require('../modules/es6.array.slice');
+require('../modules/es6.array.sort');
+require('../modules/es6.array.for-each');
+require('../modules/es6.array.map');
+require('../modules/es6.array.filter');
+require('../modules/es6.array.some');
+require('../modules/es6.array.every');
+require('../modules/es6.array.reduce');
+require('../modules/es6.array.reduce-right');
+require('../modules/es6.array.index-of');
+require('../modules/es6.array.last-index-of');
+require('../modules/es6.array.copy-within');
+require('../modules/es6.array.fill');
+require('../modules/es6.array.find');
+require('../modules/es6.array.find-index');
+require('../modules/es6.array.species');
+require('../modules/es6.array.iterator');
+require('../modules/es6.regexp.constructor');
+require('../modules/es6.regexp.to-string');
+require('../modules/es6.regexp.flags');
+require('../modules/es6.regexp.match');
+require('../modules/es6.regexp.replace');
+require('../modules/es6.regexp.search');
+require('../modules/es6.regexp.split');
+require('../modules/es6.promise');
+require('../modules/es6.map');
+require('../modules/es6.set');
+require('../modules/es6.weak-map');
+require('../modules/es6.weak-set');
+require('../modules/es6.typed.array-buffer');
+require('../modules/es6.typed.data-view');
+require('../modules/es6.typed.int8-array');
+require('../modules/es6.typed.uint8-array');
+require('../modules/es6.typed.uint8-clamped-array');
+require('../modules/es6.typed.int16-array');
+require('../modules/es6.typed.uint16-array');
+require('../modules/es6.typed.int32-array');
+require('../modules/es6.typed.uint32-array');
+require('../modules/es6.typed.float32-array');
+require('../modules/es6.typed.float64-array');
+require('../modules/es6.reflect.apply');
+require('../modules/es6.reflect.construct');
+require('../modules/es6.reflect.define-property');
+require('../modules/es6.reflect.delete-property');
+require('../modules/es6.reflect.enumerate');
+require('../modules/es6.reflect.get');
+require('../modules/es6.reflect.get-own-property-descriptor');
+require('../modules/es6.reflect.get-prototype-of');
+require('../modules/es6.reflect.has');
+require('../modules/es6.reflect.is-extensible');
+require('../modules/es6.reflect.own-keys');
+require('../modules/es6.reflect.prevent-extensions');
+require('../modules/es6.reflect.set');
+require('../modules/es6.reflect.set-prototype-of');
+module.exports = require('../modules/_core');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/es6/map.js b/node_modules/babel-register/node_modules/core-js/library/es6/map.js
new file mode 100644
index 0000000..50f04c1
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/es6/map.js
@@ -0,0 +1,5 @@
+require('../modules/es6.object.to-string');
+require('../modules/es6.string.iterator');
+require('../modules/web.dom.iterable');
+require('../modules/es6.map');
+module.exports = require('../modules/_core').Map;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/es6/math.js b/node_modules/babel-register/node_modules/core-js/library/es6/math.js
new file mode 100644
index 0000000..f26b5b2
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/es6/math.js
@@ -0,0 +1,18 @@
+require('../modules/es6.math.acosh');
+require('../modules/es6.math.asinh');
+require('../modules/es6.math.atanh');
+require('../modules/es6.math.cbrt');
+require('../modules/es6.math.clz32');
+require('../modules/es6.math.cosh');
+require('../modules/es6.math.expm1');
+require('../modules/es6.math.fround');
+require('../modules/es6.math.hypot');
+require('../modules/es6.math.imul');
+require('../modules/es6.math.log10');
+require('../modules/es6.math.log1p');
+require('../modules/es6.math.log2');
+require('../modules/es6.math.sign');
+require('../modules/es6.math.sinh');
+require('../modules/es6.math.tanh');
+require('../modules/es6.math.trunc');
+module.exports = require('../modules/_core').Math;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/es6/number.js b/node_modules/babel-register/node_modules/core-js/library/es6/number.js
new file mode 100644
index 0000000..1dafcda
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/es6/number.js
@@ -0,0 +1,13 @@
+require('../modules/es6.number.constructor');
+require('../modules/es6.number.to-fixed');
+require('../modules/es6.number.to-precision');
+require('../modules/es6.number.epsilon');
+require('../modules/es6.number.is-finite');
+require('../modules/es6.number.is-integer');
+require('../modules/es6.number.is-nan');
+require('../modules/es6.number.is-safe-integer');
+require('../modules/es6.number.max-safe-integer');
+require('../modules/es6.number.min-safe-integer');
+require('../modules/es6.number.parse-float');
+require('../modules/es6.number.parse-int');
+module.exports = require('../modules/_core').Number;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/es6/object.js b/node_modules/babel-register/node_modules/core-js/library/es6/object.js
new file mode 100644
index 0000000..aada8c3
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/es6/object.js
@@ -0,0 +1,20 @@
+require('../modules/es6.symbol');
+require('../modules/es6.object.create');
+require('../modules/es6.object.define-property');
+require('../modules/es6.object.define-properties');
+require('../modules/es6.object.get-own-property-descriptor');
+require('../modules/es6.object.get-prototype-of');
+require('../modules/es6.object.keys');
+require('../modules/es6.object.get-own-property-names');
+require('../modules/es6.object.freeze');
+require('../modules/es6.object.seal');
+require('../modules/es6.object.prevent-extensions');
+require('../modules/es6.object.is-frozen');
+require('../modules/es6.object.is-sealed');
+require('../modules/es6.object.is-extensible');
+require('../modules/es6.object.assign');
+require('../modules/es6.object.is');
+require('../modules/es6.object.set-prototype-of');
+require('../modules/es6.object.to-string');
+
+module.exports = require('../modules/_core').Object;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/es6/parse-float.js b/node_modules/babel-register/node_modules/core-js/library/es6/parse-float.js
new file mode 100644
index 0000000..dad94dd
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/es6/parse-float.js
@@ -0,0 +1,2 @@
+require('../modules/es6.parse-float');
+module.exports = require('../modules/_core').parseFloat;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/es6/parse-int.js b/node_modules/babel-register/node_modules/core-js/library/es6/parse-int.js
new file mode 100644
index 0000000..08a2099
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/es6/parse-int.js
@@ -0,0 +1,2 @@
+require('../modules/es6.parse-int');
+module.exports = require('../modules/_core').parseInt;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/es6/promise.js b/node_modules/babel-register/node_modules/core-js/library/es6/promise.js
new file mode 100644
index 0000000..c901c85
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/es6/promise.js
@@ -0,0 +1,5 @@
+require('../modules/es6.object.to-string');
+require('../modules/es6.string.iterator');
+require('../modules/web.dom.iterable');
+require('../modules/es6.promise');
+module.exports = require('../modules/_core').Promise;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/es6/reflect.js b/node_modules/babel-register/node_modules/core-js/library/es6/reflect.js
new file mode 100644
index 0000000..18bdb3c
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/es6/reflect.js
@@ -0,0 +1,15 @@
+require('../modules/es6.reflect.apply');
+require('../modules/es6.reflect.construct');
+require('../modules/es6.reflect.define-property');
+require('../modules/es6.reflect.delete-property');
+require('../modules/es6.reflect.enumerate');
+require('../modules/es6.reflect.get');
+require('../modules/es6.reflect.get-own-property-descriptor');
+require('../modules/es6.reflect.get-prototype-of');
+require('../modules/es6.reflect.has');
+require('../modules/es6.reflect.is-extensible');
+require('../modules/es6.reflect.own-keys');
+require('../modules/es6.reflect.prevent-extensions');
+require('../modules/es6.reflect.set');
+require('../modules/es6.reflect.set-prototype-of');
+module.exports = require('../modules/_core').Reflect;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/es6/regexp.js b/node_modules/babel-register/node_modules/core-js/library/es6/regexp.js
new file mode 100644
index 0000000..27cc827
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/es6/regexp.js
@@ -0,0 +1,8 @@
+require('../modules/es6.regexp.constructor');
+require('../modules/es6.regexp.to-string');
+require('../modules/es6.regexp.flags');
+require('../modules/es6.regexp.match');
+require('../modules/es6.regexp.replace');
+require('../modules/es6.regexp.search');
+require('../modules/es6.regexp.split');
+module.exports = require('../modules/_core').RegExp;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/es6/set.js b/node_modules/babel-register/node_modules/core-js/library/es6/set.js
new file mode 100644
index 0000000..2a2557c
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/es6/set.js
@@ -0,0 +1,5 @@
+require('../modules/es6.object.to-string');
+require('../modules/es6.string.iterator');
+require('../modules/web.dom.iterable');
+require('../modules/es6.set');
+module.exports = require('../modules/_core').Set;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/es6/string.js b/node_modules/babel-register/node_modules/core-js/library/es6/string.js
new file mode 100644
index 0000000..8303362
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/es6/string.js
@@ -0,0 +1,27 @@
+require('../modules/es6.string.from-code-point');
+require('../modules/es6.string.raw');
+require('../modules/es6.string.trim');
+require('../modules/es6.string.iterator');
+require('../modules/es6.string.code-point-at');
+require('../modules/es6.string.ends-with');
+require('../modules/es6.string.includes');
+require('../modules/es6.string.repeat');
+require('../modules/es6.string.starts-with');
+require('../modules/es6.string.anchor');
+require('../modules/es6.string.big');
+require('../modules/es6.string.blink');
+require('../modules/es6.string.bold');
+require('../modules/es6.string.fixed');
+require('../modules/es6.string.fontcolor');
+require('../modules/es6.string.fontsize');
+require('../modules/es6.string.italics');
+require('../modules/es6.string.link');
+require('../modules/es6.string.small');
+require('../modules/es6.string.strike');
+require('../modules/es6.string.sub');
+require('../modules/es6.string.sup');
+require('../modules/es6.regexp.match');
+require('../modules/es6.regexp.replace');
+require('../modules/es6.regexp.search');
+require('../modules/es6.regexp.split');
+module.exports = require('../modules/_core').String;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/es6/symbol.js b/node_modules/babel-register/node_modules/core-js/library/es6/symbol.js
new file mode 100644
index 0000000..e578e3a
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/es6/symbol.js
@@ -0,0 +1,3 @@
+require('../modules/es6.symbol');
+require('../modules/es6.object.to-string');
+module.exports = require('../modules/_core').Symbol;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/es6/typed.js b/node_modules/babel-register/node_modules/core-js/library/es6/typed.js
new file mode 100644
index 0000000..e0364e6
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/es6/typed.js
@@ -0,0 +1,13 @@
+require('../modules/es6.typed.array-buffer');
+require('../modules/es6.typed.data-view');
+require('../modules/es6.typed.int8-array');
+require('../modules/es6.typed.uint8-array');
+require('../modules/es6.typed.uint8-clamped-array');
+require('../modules/es6.typed.int16-array');
+require('../modules/es6.typed.uint16-array');
+require('../modules/es6.typed.int32-array');
+require('../modules/es6.typed.uint32-array');
+require('../modules/es6.typed.float32-array');
+require('../modules/es6.typed.float64-array');
+require('../modules/es6.object.to-string');
+module.exports = require('../modules/_core');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/es6/weak-map.js b/node_modules/babel-register/node_modules/core-js/library/es6/weak-map.js
new file mode 100644
index 0000000..655866c
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/es6/weak-map.js
@@ -0,0 +1,4 @@
+require('../modules/es6.object.to-string');
+require('../modules/es6.array.iterator');
+require('../modules/es6.weak-map');
+module.exports = require('../modules/_core').WeakMap;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/es6/weak-set.js b/node_modules/babel-register/node_modules/core-js/library/es6/weak-set.js
new file mode 100644
index 0000000..eef1af2
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/es6/weak-set.js
@@ -0,0 +1,4 @@
+require('../modules/es6.object.to-string');
+require('../modules/web.dom.iterable');
+require('../modules/es6.weak-set');
+module.exports = require('../modules/_core').WeakSet;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/es7/array.js b/node_modules/babel-register/node_modules/core-js/library/es7/array.js
new file mode 100644
index 0000000..9fb57fa
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/es7/array.js
@@ -0,0 +1,2 @@
+require('../modules/es7.array.includes');
+module.exports = require('../modules/_core').Array;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/es7/error.js b/node_modules/babel-register/node_modules/core-js/library/es7/error.js
new file mode 100644
index 0000000..f0bb260
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/es7/error.js
@@ -0,0 +1,2 @@
+require('../modules/es7.error.is-error');
+module.exports = require('../modules/_core').Error;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/es7/index.js b/node_modules/babel-register/node_modules/core-js/library/es7/index.js
new file mode 100644
index 0000000..f5dd926
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/es7/index.js
@@ -0,0 +1,32 @@
+require('../modules/es7.array.includes');
+require('../modules/es7.string.at');
+require('../modules/es7.string.pad-start');
+require('../modules/es7.string.pad-end');
+require('../modules/es7.string.trim-left');
+require('../modules/es7.string.trim-right');
+require('../modules/es7.string.match-all');
+require('../modules/es7.object.get-own-property-descriptors');
+require('../modules/es7.object.values');
+require('../modules/es7.object.entries');
+require('../modules/es7.object.define-getter');
+require('../modules/es7.object.define-setter');
+require('../modules/es7.object.lookup-getter');
+require('../modules/es7.object.lookup-setter');
+require('../modules/es7.map.to-json');
+require('../modules/es7.set.to-json');
+require('../modules/es7.system.global');
+require('../modules/es7.error.is-error');
+require('../modules/es7.math.iaddh');
+require('../modules/es7.math.isubh');
+require('../modules/es7.math.imulh');
+require('../modules/es7.math.umulh');
+require('../modules/es7.reflect.define-metadata');
+require('../modules/es7.reflect.delete-metadata');
+require('../modules/es7.reflect.get-metadata');
+require('../modules/es7.reflect.get-metadata-keys');
+require('../modules/es7.reflect.get-own-metadata');
+require('../modules/es7.reflect.get-own-metadata-keys');
+require('../modules/es7.reflect.has-metadata');
+require('../modules/es7.reflect.has-own-metadata');
+require('../modules/es7.reflect.metadata');
+module.exports = require('../modules/_core');
diff --git a/node_modules/babel-register/node_modules/core-js/library/es7/map.js b/node_modules/babel-register/node_modules/core-js/library/es7/map.js
new file mode 100644
index 0000000..dfa32fd
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/es7/map.js
@@ -0,0 +1,2 @@
+require('../modules/es7.map.to-json');
+module.exports = require('../modules/_core').Map;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/es7/math.js b/node_modules/babel-register/node_modules/core-js/library/es7/math.js
new file mode 100644
index 0000000..bdb8a81
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/es7/math.js
@@ -0,0 +1,5 @@
+require('../modules/es7.math.iaddh');
+require('../modules/es7.math.isubh');
+require('../modules/es7.math.imulh');
+require('../modules/es7.math.umulh');
+module.exports = require('../modules/_core').Math;
diff --git a/node_modules/babel-register/node_modules/core-js/library/es7/object.js b/node_modules/babel-register/node_modules/core-js/library/es7/object.js
new file mode 100644
index 0000000..c76b754
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/es7/object.js
@@ -0,0 +1,8 @@
+require('../modules/es7.object.get-own-property-descriptors');
+require('../modules/es7.object.values');
+require('../modules/es7.object.entries');
+require('../modules/es7.object.define-getter');
+require('../modules/es7.object.define-setter');
+require('../modules/es7.object.lookup-getter');
+require('../modules/es7.object.lookup-setter');
+module.exports = require('../modules/_core').Object;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/es7/reflect.js b/node_modules/babel-register/node_modules/core-js/library/es7/reflect.js
new file mode 100644
index 0000000..f0b69cb
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/es7/reflect.js
@@ -0,0 +1,10 @@
+require('../modules/es7.reflect.define-metadata');
+require('../modules/es7.reflect.delete-metadata');
+require('../modules/es7.reflect.get-metadata');
+require('../modules/es7.reflect.get-metadata-keys');
+require('../modules/es7.reflect.get-own-metadata');
+require('../modules/es7.reflect.get-own-metadata-keys');
+require('../modules/es7.reflect.has-metadata');
+require('../modules/es7.reflect.has-own-metadata');
+require('../modules/es7.reflect.metadata');
+module.exports = require('../modules/_core').Reflect;
diff --git a/node_modules/babel-register/node_modules/core-js/library/es7/set.js b/node_modules/babel-register/node_modules/core-js/library/es7/set.js
new file mode 100644
index 0000000..b5c19c4
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/es7/set.js
@@ -0,0 +1,2 @@
+require('../modules/es7.set.to-json');
+module.exports = require('../modules/_core').Set;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/es7/string.js b/node_modules/babel-register/node_modules/core-js/library/es7/string.js
new file mode 100644
index 0000000..6e413b4
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/es7/string.js
@@ -0,0 +1,7 @@
+require('../modules/es7.string.at');
+require('../modules/es7.string.pad-start');
+require('../modules/es7.string.pad-end');
+require('../modules/es7.string.trim-left');
+require('../modules/es7.string.trim-right');
+require('../modules/es7.string.match-all');
+module.exports = require('../modules/_core').String;
diff --git a/node_modules/babel-register/node_modules/core-js/library/es7/system.js b/node_modules/babel-register/node_modules/core-js/library/es7/system.js
new file mode 100644
index 0000000..6d321c7
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/es7/system.js
@@ -0,0 +1,2 @@
+require('../modules/es7.system.global');
+module.exports = require('../modules/_core').System;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/_.js b/node_modules/babel-register/node_modules/core-js/library/fn/_.js
new file mode 100644
index 0000000..8a99f70
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/_.js
@@ -0,0 +1,2 @@
+require('../modules/core.function.part');
+module.exports = require('../modules/_core')._;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/array/concat.js b/node_modules/babel-register/node_modules/core-js/library/fn/array/concat.js
new file mode 100644
index 0000000..de4bddf
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/array/concat.js
@@ -0,0 +1,4 @@
+// for a legacy code and future fixes
+module.exports = function(){
+ return Function.call.apply(Array.prototype.concat, arguments);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/array/copy-within.js b/node_modules/babel-register/node_modules/core-js/library/fn/array/copy-within.js
new file mode 100644
index 0000000..89e1de4
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/array/copy-within.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.array.copy-within');
+module.exports = require('../../modules/_core').Array.copyWithin;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/array/entries.js b/node_modules/babel-register/node_modules/core-js/library/fn/array/entries.js
new file mode 100644
index 0000000..f4feb26
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/array/entries.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.array.iterator');
+module.exports = require('../../modules/_core').Array.entries;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/array/every.js b/node_modules/babel-register/node_modules/core-js/library/fn/array/every.js
new file mode 100644
index 0000000..168844c
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/array/every.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.array.every');
+module.exports = require('../../modules/_core').Array.every;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/array/fill.js b/node_modules/babel-register/node_modules/core-js/library/fn/array/fill.js
new file mode 100644
index 0000000..b23ebfd
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/array/fill.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.array.fill');
+module.exports = require('../../modules/_core').Array.fill;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/array/filter.js b/node_modules/babel-register/node_modules/core-js/library/fn/array/filter.js
new file mode 100644
index 0000000..0023f0d
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/array/filter.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.array.filter');
+module.exports = require('../../modules/_core').Array.filter;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/array/find-index.js b/node_modules/babel-register/node_modules/core-js/library/fn/array/find-index.js
new file mode 100644
index 0000000..99e6bf1
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/array/find-index.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.array.find-index');
+module.exports = require('../../modules/_core').Array.findIndex;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/array/find.js b/node_modules/babel-register/node_modules/core-js/library/fn/array/find.js
new file mode 100644
index 0000000..f146ec2
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/array/find.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.array.find');
+module.exports = require('../../modules/_core').Array.find;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/array/for-each.js b/node_modules/babel-register/node_modules/core-js/library/fn/array/for-each.js
new file mode 100644
index 0000000..09e235f
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/array/for-each.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.array.for-each');
+module.exports = require('../../modules/_core').Array.forEach;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/array/from.js b/node_modules/babel-register/node_modules/core-js/library/fn/array/from.js
new file mode 100644
index 0000000..1f323fb
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/array/from.js
@@ -0,0 +1,3 @@
+require('../../modules/es6.string.iterator');
+require('../../modules/es6.array.from');
+module.exports = require('../../modules/_core').Array.from;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/array/includes.js b/node_modules/babel-register/node_modules/core-js/library/fn/array/includes.js
new file mode 100644
index 0000000..851d31f
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/array/includes.js
@@ -0,0 +1,2 @@
+require('../../modules/es7.array.includes');
+module.exports = require('../../modules/_core').Array.includes;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/array/index-of.js b/node_modules/babel-register/node_modules/core-js/library/fn/array/index-of.js
new file mode 100644
index 0000000..9ed8247
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/array/index-of.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.array.index-of');
+module.exports = require('../../modules/_core').Array.indexOf;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/array/index.js b/node_modules/babel-register/node_modules/core-js/library/fn/array/index.js
new file mode 100644
index 0000000..85bc77b
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/array/index.js
@@ -0,0 +1,24 @@
+require('../../modules/es6.string.iterator');
+require('../../modules/es6.array.is-array');
+require('../../modules/es6.array.from');
+require('../../modules/es6.array.of');
+require('../../modules/es6.array.join');
+require('../../modules/es6.array.slice');
+require('../../modules/es6.array.sort');
+require('../../modules/es6.array.for-each');
+require('../../modules/es6.array.map');
+require('../../modules/es6.array.filter');
+require('../../modules/es6.array.some');
+require('../../modules/es6.array.every');
+require('../../modules/es6.array.reduce');
+require('../../modules/es6.array.reduce-right');
+require('../../modules/es6.array.index-of');
+require('../../modules/es6.array.last-index-of');
+require('../../modules/es6.array.copy-within');
+require('../../modules/es6.array.fill');
+require('../../modules/es6.array.find');
+require('../../modules/es6.array.find-index');
+require('../../modules/es6.array.species');
+require('../../modules/es6.array.iterator');
+require('../../modules/es7.array.includes');
+module.exports = require('../../modules/_core').Array;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/array/is-array.js b/node_modules/babel-register/node_modules/core-js/library/fn/array/is-array.js
new file mode 100644
index 0000000..bbe7671
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/array/is-array.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.array.is-array');
+module.exports = require('../../modules/_core').Array.isArray;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/array/iterator.js b/node_modules/babel-register/node_modules/core-js/library/fn/array/iterator.js
new file mode 100644
index 0000000..ca93b78
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/array/iterator.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.array.iterator');
+module.exports = require('../../modules/_core').Array.values;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/array/join.js b/node_modules/babel-register/node_modules/core-js/library/fn/array/join.js
new file mode 100644
index 0000000..9beef18
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/array/join.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.array.join');
+module.exports = require('../../modules/_core').Array.join;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/array/keys.js b/node_modules/babel-register/node_modules/core-js/library/fn/array/keys.js
new file mode 100644
index 0000000..b44b921
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/array/keys.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.array.iterator');
+module.exports = require('../../modules/_core').Array.keys;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/array/last-index-of.js b/node_modules/babel-register/node_modules/core-js/library/fn/array/last-index-of.js
new file mode 100644
index 0000000..6dcc98a
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/array/last-index-of.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.array.last-index-of');
+module.exports = require('../../modules/_core').Array.lastIndexOf;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/array/map.js b/node_modules/babel-register/node_modules/core-js/library/fn/array/map.js
new file mode 100644
index 0000000..14b0f62
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/array/map.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.array.map');
+module.exports = require('../../modules/_core').Array.map;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/array/of.js b/node_modules/babel-register/node_modules/core-js/library/fn/array/of.js
new file mode 100644
index 0000000..652ee98
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/array/of.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.array.of');
+module.exports = require('../../modules/_core').Array.of;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/array/pop.js b/node_modules/babel-register/node_modules/core-js/library/fn/array/pop.js
new file mode 100644
index 0000000..b8414f6
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/array/pop.js
@@ -0,0 +1,4 @@
+// for a legacy code and future fixes
+module.exports = function(){
+ return Function.call.apply(Array.prototype.pop, arguments);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/array/push.js b/node_modules/babel-register/node_modules/core-js/library/fn/array/push.js
new file mode 100644
index 0000000..0353900
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/array/push.js
@@ -0,0 +1,4 @@
+// for a legacy code and future fixes
+module.exports = function(){
+ return Function.call.apply(Array.prototype.push, arguments);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/array/reduce-right.js b/node_modules/babel-register/node_modules/core-js/library/fn/array/reduce-right.js
new file mode 100644
index 0000000..1193ecb
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/array/reduce-right.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.array.reduce-right');
+module.exports = require('../../modules/_core').Array.reduceRight;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/array/reduce.js b/node_modules/babel-register/node_modules/core-js/library/fn/array/reduce.js
new file mode 100644
index 0000000..e2dee91
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/array/reduce.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.array.reduce');
+module.exports = require('../../modules/_core').Array.reduce;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/array/reverse.js b/node_modules/babel-register/node_modules/core-js/library/fn/array/reverse.js
new file mode 100644
index 0000000..6073429
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/array/reverse.js
@@ -0,0 +1,4 @@
+// for a legacy code and future fixes
+module.exports = function(){
+ return Function.call.apply(Array.prototype.reverse, arguments);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/array/shift.js b/node_modules/babel-register/node_modules/core-js/library/fn/array/shift.js
new file mode 100644
index 0000000..5002a60
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/array/shift.js
@@ -0,0 +1,4 @@
+// for a legacy code and future fixes
+module.exports = function(){
+ return Function.call.apply(Array.prototype.shift, arguments);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/array/slice.js b/node_modules/babel-register/node_modules/core-js/library/fn/array/slice.js
new file mode 100644
index 0000000..4914c2a
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/array/slice.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.array.slice');
+module.exports = require('../../modules/_core').Array.slice;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/array/some.js b/node_modules/babel-register/node_modules/core-js/library/fn/array/some.js
new file mode 100644
index 0000000..de28400
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/array/some.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.array.some');
+module.exports = require('../../modules/_core').Array.some;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/array/sort.js b/node_modules/babel-register/node_modules/core-js/library/fn/array/sort.js
new file mode 100644
index 0000000..29b6f3a
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/array/sort.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.array.sort');
+module.exports = require('../../modules/_core').Array.sort;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/array/splice.js b/node_modules/babel-register/node_modules/core-js/library/fn/array/splice.js
new file mode 100644
index 0000000..9d0bdbe
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/array/splice.js
@@ -0,0 +1,4 @@
+// for a legacy code and future fixes
+module.exports = function(){
+ return Function.call.apply(Array.prototype.splice, arguments);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/array/unshift.js b/node_modules/babel-register/node_modules/core-js/library/fn/array/unshift.js
new file mode 100644
index 0000000..63fe2dd
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/array/unshift.js
@@ -0,0 +1,4 @@
+// for a legacy code and future fixes
+module.exports = function(){
+ return Function.call.apply(Array.prototype.unshift, arguments);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/array/values.js b/node_modules/babel-register/node_modules/core-js/library/fn/array/values.js
new file mode 100644
index 0000000..ca93b78
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/array/values.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.array.iterator');
+module.exports = require('../../modules/_core').Array.values;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/array/virtual/copy-within.js b/node_modules/babel-register/node_modules/core-js/library/fn/array/virtual/copy-within.js
new file mode 100644
index 0000000..62172a9
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/array/virtual/copy-within.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.array.copy-within');
+module.exports = require('../../../modules/_entry-virtual')('Array').copyWithin;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/array/virtual/entries.js b/node_modules/babel-register/node_modules/core-js/library/fn/array/virtual/entries.js
new file mode 100644
index 0000000..1b198e3
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/array/virtual/entries.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.array.iterator');
+module.exports = require('../../../modules/_entry-virtual')('Array').entries;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/array/virtual/every.js b/node_modules/babel-register/node_modules/core-js/library/fn/array/virtual/every.js
new file mode 100644
index 0000000..a72e585
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/array/virtual/every.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.array.every');
+module.exports = require('../../../modules/_entry-virtual')('Array').every;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/array/virtual/fill.js b/node_modules/babel-register/node_modules/core-js/library/fn/array/virtual/fill.js
new file mode 100644
index 0000000..6018b37
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/array/virtual/fill.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.array.fill');
+module.exports = require('../../../modules/_entry-virtual')('Array').fill;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/array/virtual/filter.js b/node_modules/babel-register/node_modules/core-js/library/fn/array/virtual/filter.js
new file mode 100644
index 0000000..46a14f1
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/array/virtual/filter.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.array.filter');
+module.exports = require('../../../modules/_entry-virtual')('Array').filter;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/array/virtual/find-index.js b/node_modules/babel-register/node_modules/core-js/library/fn/array/virtual/find-index.js
new file mode 100644
index 0000000..ef96165
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/array/virtual/find-index.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.array.find-index');
+module.exports = require('../../../modules/_entry-virtual')('Array').findIndex;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/array/virtual/find.js b/node_modules/babel-register/node_modules/core-js/library/fn/array/virtual/find.js
new file mode 100644
index 0000000..6cffee5
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/array/virtual/find.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.array.find');
+module.exports = require('../../../modules/_entry-virtual')('Array').find;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/array/virtual/for-each.js b/node_modules/babel-register/node_modules/core-js/library/fn/array/virtual/for-each.js
new file mode 100644
index 0000000..0c3ed44
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/array/virtual/for-each.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.array.for-each');
+module.exports = require('../../../modules/_entry-virtual')('Array').forEach;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/array/virtual/includes.js b/node_modules/babel-register/node_modules/core-js/library/fn/array/virtual/includes.js
new file mode 100644
index 0000000..bf9031d
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/array/virtual/includes.js
@@ -0,0 +1,2 @@
+require('../../../modules/es7.array.includes');
+module.exports = require('../../../modules/_entry-virtual')('Array').includes;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/array/virtual/index-of.js b/node_modules/babel-register/node_modules/core-js/library/fn/array/virtual/index-of.js
new file mode 100644
index 0000000..cf6f36e
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/array/virtual/index-of.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.array.index-of');
+module.exports = require('../../../modules/_entry-virtual')('Array').indexOf;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/array/virtual/index.js b/node_modules/babel-register/node_modules/core-js/library/fn/array/virtual/index.js
new file mode 100644
index 0000000..ff554a2
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/array/virtual/index.js
@@ -0,0 +1,20 @@
+require('../../../modules/es6.array.join');
+require('../../../modules/es6.array.slice');
+require('../../../modules/es6.array.sort');
+require('../../../modules/es6.array.for-each');
+require('../../../modules/es6.array.map');
+require('../../../modules/es6.array.filter');
+require('../../../modules/es6.array.some');
+require('../../../modules/es6.array.every');
+require('../../../modules/es6.array.reduce');
+require('../../../modules/es6.array.reduce-right');
+require('../../../modules/es6.array.index-of');
+require('../../../modules/es6.array.last-index-of');
+require('../../../modules/es6.string.iterator');
+require('../../../modules/es6.array.iterator');
+require('../../../modules/es6.array.copy-within');
+require('../../../modules/es6.array.fill');
+require('../../../modules/es6.array.find');
+require('../../../modules/es6.array.find-index');
+require('../../../modules/es7.array.includes');
+module.exports = require('../../../modules/_entry-virtual')('Array');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/array/virtual/iterator.js b/node_modules/babel-register/node_modules/core-js/library/fn/array/virtual/iterator.js
new file mode 100644
index 0000000..7812b3c
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/array/virtual/iterator.js
@@ -0,0 +1,2 @@
+require('../../../modules/core.number.iterator');
+module.exports = require('../../../modules/_iterators').Array;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/array/virtual/join.js b/node_modules/babel-register/node_modules/core-js/library/fn/array/virtual/join.js
new file mode 100644
index 0000000..3f7d5cf
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/array/virtual/join.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.array.join');
+module.exports = require('../../../modules/_entry-virtual')('Array').join;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/array/virtual/keys.js b/node_modules/babel-register/node_modules/core-js/library/fn/array/virtual/keys.js
new file mode 100644
index 0000000..16c0968
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/array/virtual/keys.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.array.iterator');
+module.exports = require('../../../modules/_entry-virtual')('Array').keys;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/array/virtual/last-index-of.js b/node_modules/babel-register/node_modules/core-js/library/fn/array/virtual/last-index-of.js
new file mode 100644
index 0000000..cdd79b7
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/array/virtual/last-index-of.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.array.last-index-of');
+module.exports = require('../../../modules/_entry-virtual')('Array').lastIndexOf;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/array/virtual/map.js b/node_modules/babel-register/node_modules/core-js/library/fn/array/virtual/map.js
new file mode 100644
index 0000000..14bffda
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/array/virtual/map.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.array.map');
+module.exports = require('../../../modules/_entry-virtual')('Array').map;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/array/virtual/reduce-right.js b/node_modules/babel-register/node_modules/core-js/library/fn/array/virtual/reduce-right.js
new file mode 100644
index 0000000..61313e8
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/array/virtual/reduce-right.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.array.reduce-right');
+module.exports = require('../../../modules/_entry-virtual')('Array').reduceRight;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/array/virtual/reduce.js b/node_modules/babel-register/node_modules/core-js/library/fn/array/virtual/reduce.js
new file mode 100644
index 0000000..1b05905
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/array/virtual/reduce.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.array.reduce');
+module.exports = require('../../../modules/_entry-virtual')('Array').reduce;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/array/virtual/slice.js b/node_modules/babel-register/node_modules/core-js/library/fn/array/virtual/slice.js
new file mode 100644
index 0000000..b28d1ab
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/array/virtual/slice.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.array.slice');
+module.exports = require('../../../modules/_entry-virtual')('Array').slice;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/array/virtual/some.js b/node_modules/babel-register/node_modules/core-js/library/fn/array/virtual/some.js
new file mode 100644
index 0000000..58c183c
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/array/virtual/some.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.array.some');
+module.exports = require('../../../modules/_entry-virtual')('Array').some;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/array/virtual/sort.js b/node_modules/babel-register/node_modules/core-js/library/fn/array/virtual/sort.js
new file mode 100644
index 0000000..c888315
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/array/virtual/sort.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.array.sort');
+module.exports = require('../../../modules/_entry-virtual')('Array').sort;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/array/virtual/values.js b/node_modules/babel-register/node_modules/core-js/library/fn/array/virtual/values.js
new file mode 100644
index 0000000..7812b3c
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/array/virtual/values.js
@@ -0,0 +1,2 @@
+require('../../../modules/core.number.iterator');
+module.exports = require('../../../modules/_iterators').Array;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/clear-immediate.js b/node_modules/babel-register/node_modules/core-js/library/fn/clear-immediate.js
new file mode 100644
index 0000000..86916a0
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/clear-immediate.js
@@ -0,0 +1,2 @@
+require('../modules/web.immediate');
+module.exports = require('../modules/_core').clearImmediate;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/date/index.js b/node_modules/babel-register/node_modules/core-js/library/fn/date/index.js
new file mode 100644
index 0000000..bd9ce0e
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/date/index.js
@@ -0,0 +1,6 @@
+require('../../modules/es6.date.now');
+require('../../modules/es6.date.to-json');
+require('../../modules/es6.date.to-iso-string');
+require('../../modules/es6.date.to-string');
+require('../../modules/es6.date.to-primitive');
+module.exports = require('../../modules/_core').Date;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/date/now.js b/node_modules/babel-register/node_modules/core-js/library/fn/date/now.js
new file mode 100644
index 0000000..c70d37a
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/date/now.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.date.now');
+module.exports = require('../../modules/_core').Date.now;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/date/to-iso-string.js b/node_modules/babel-register/node_modules/core-js/library/fn/date/to-iso-string.js
new file mode 100644
index 0000000..be4ac21
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/date/to-iso-string.js
@@ -0,0 +1,3 @@
+require('../../modules/es6.date.to-json');
+require('../../modules/es6.date.to-iso-string');
+module.exports = require('../../modules/_core').Date.toISOString;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/date/to-json.js b/node_modules/babel-register/node_modules/core-js/library/fn/date/to-json.js
new file mode 100644
index 0000000..9dc8cc9
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/date/to-json.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.date.to-json');
+module.exports = require('../../modules/_core').Date.toJSON;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/date/to-primitive.js b/node_modules/babel-register/node_modules/core-js/library/fn/date/to-primitive.js
new file mode 100644
index 0000000..4d7471e
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/date/to-primitive.js
@@ -0,0 +1,5 @@
+require('../../modules/es6.date.to-primitive');
+var toPrimitive = require('../../modules/_date-to-primitive');
+module.exports = function(it, hint){
+ return toPrimitive.call(it, hint);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/date/to-string.js b/node_modules/babel-register/node_modules/core-js/library/fn/date/to-string.js
new file mode 100644
index 0000000..1bca5e3
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/date/to-string.js
@@ -0,0 +1,5 @@
+var core = require('../../modules/es6.date.to-string')
+ , $toString = Date.prototype.toString;
+module.exports = function toString(it){
+ return $toString.call(it);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/delay.js b/node_modules/babel-register/node_modules/core-js/library/fn/delay.js
new file mode 100644
index 0000000..1885738
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/delay.js
@@ -0,0 +1,2 @@
+require('../modules/core.delay');
+module.exports = require('../modules/_core').delay;
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/dict.js b/node_modules/babel-register/node_modules/core-js/library/fn/dict.js
new file mode 100644
index 0000000..da84a8d
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/dict.js
@@ -0,0 +1,2 @@
+require('../modules/core.dict');
+module.exports = require('../modules/_core').Dict;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/dom-collections/index.js b/node_modules/babel-register/node_modules/core-js/library/fn/dom-collections/index.js
new file mode 100644
index 0000000..3928a09
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/dom-collections/index.js
@@ -0,0 +1,8 @@
+require('../../modules/web.dom.iterable');
+var $iterators = require('../../modules/es6.array.iterator');
+module.exports = {
+ keys: $iterators.keys,
+ values: $iterators.values,
+ entries: $iterators.entries,
+ iterator: $iterators.values
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/dom-collections/iterator.js b/node_modules/babel-register/node_modules/core-js/library/fn/dom-collections/iterator.js
new file mode 100644
index 0000000..ad98364
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/dom-collections/iterator.js
@@ -0,0 +1,2 @@
+require('../../modules/web.dom.iterable');
+module.exports = require('../../modules/_core').Array.values;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/error/index.js b/node_modules/babel-register/node_modules/core-js/library/fn/error/index.js
new file mode 100644
index 0000000..59571ac
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/error/index.js
@@ -0,0 +1,2 @@
+require('../../modules/es7.error.is-error');
+module.exports = require('../../modules/_core').Error;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/error/is-error.js b/node_modules/babel-register/node_modules/core-js/library/fn/error/is-error.js
new file mode 100644
index 0000000..e15b720
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/error/is-error.js
@@ -0,0 +1,2 @@
+require('../../modules/es7.error.is-error');
+module.exports = require('../../modules/_core').Error.isError;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/function/bind.js b/node_modules/babel-register/node_modules/core-js/library/fn/function/bind.js
new file mode 100644
index 0000000..38e179e
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/function/bind.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.function.bind');
+module.exports = require('../../modules/_core').Function.bind;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/function/has-instance.js b/node_modules/babel-register/node_modules/core-js/library/fn/function/has-instance.js
new file mode 100644
index 0000000..78397e5
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/function/has-instance.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.function.has-instance');
+module.exports = Function[require('../../modules/_wks')('hasInstance')];
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/function/index.js b/node_modules/babel-register/node_modules/core-js/library/fn/function/index.js
new file mode 100644
index 0000000..206324e
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/function/index.js
@@ -0,0 +1,5 @@
+require('../../modules/es6.function.bind');
+require('../../modules/es6.function.name');
+require('../../modules/es6.function.has-instance');
+require('../../modules/core.function.part');
+module.exports = require('../../modules/_core').Function;
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/function/name.js b/node_modules/babel-register/node_modules/core-js/library/fn/function/name.js
new file mode 100644
index 0000000..cb70bf1
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/function/name.js
@@ -0,0 +1 @@
+require('../../modules/es6.function.name');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/function/part.js b/node_modules/babel-register/node_modules/core-js/library/fn/function/part.js
new file mode 100644
index 0000000..926e2cc
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/function/part.js
@@ -0,0 +1,2 @@
+require('../../modules/core.function.part');
+module.exports = require('../../modules/_core').Function.part;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/function/virtual/bind.js b/node_modules/babel-register/node_modules/core-js/library/fn/function/virtual/bind.js
new file mode 100644
index 0000000..0a2f333
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/function/virtual/bind.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.function.bind');
+module.exports = require('../../../modules/_entry-virtual')('Function').bind;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/function/virtual/index.js b/node_modules/babel-register/node_modules/core-js/library/fn/function/virtual/index.js
new file mode 100644
index 0000000..f64e220
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/function/virtual/index.js
@@ -0,0 +1,3 @@
+require('../../../modules/es6.function.bind');
+require('../../../modules/core.function.part');
+module.exports = require('../../../modules/_entry-virtual')('Function');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/function/virtual/part.js b/node_modules/babel-register/node_modules/core-js/library/fn/function/virtual/part.js
new file mode 100644
index 0000000..a382e57
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/function/virtual/part.js
@@ -0,0 +1,2 @@
+require('../../../modules/core.function.part');
+module.exports = require('../../../modules/_entry-virtual')('Function').part;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/get-iterator-method.js b/node_modules/babel-register/node_modules/core-js/library/fn/get-iterator-method.js
new file mode 100644
index 0000000..5543cbb
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/get-iterator-method.js
@@ -0,0 +1,3 @@
+require('../modules/web.dom.iterable');
+require('../modules/es6.string.iterator');
+module.exports = require('../modules/core.get-iterator-method');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/get-iterator.js b/node_modules/babel-register/node_modules/core-js/library/fn/get-iterator.js
new file mode 100644
index 0000000..762350f
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/get-iterator.js
@@ -0,0 +1,3 @@
+require('../modules/web.dom.iterable');
+require('../modules/es6.string.iterator');
+module.exports = require('../modules/core.get-iterator');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/is-iterable.js b/node_modules/babel-register/node_modules/core-js/library/fn/is-iterable.js
new file mode 100644
index 0000000..4c654e8
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/is-iterable.js
@@ -0,0 +1,3 @@
+require('../modules/web.dom.iterable');
+require('../modules/es6.string.iterator');
+module.exports = require('../modules/core.is-iterable');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/json/index.js b/node_modules/babel-register/node_modules/core-js/library/fn/json/index.js
new file mode 100644
index 0000000..a6ec3de
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/json/index.js
@@ -0,0 +1,2 @@
+var core = require('../../modules/_core');
+module.exports = core.JSON || (core.JSON = {stringify: JSON.stringify});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/json/stringify.js b/node_modules/babel-register/node_modules/core-js/library/fn/json/stringify.js
new file mode 100644
index 0000000..f0cac86
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/json/stringify.js
@@ -0,0 +1,5 @@
+var core = require('../../modules/_core')
+ , $JSON = core.JSON || (core.JSON = {stringify: JSON.stringify});
+module.exports = function stringify(it){ // eslint-disable-line no-unused-vars
+ return $JSON.stringify.apply($JSON, arguments);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/map.js b/node_modules/babel-register/node_modules/core-js/library/fn/map.js
new file mode 100644
index 0000000..16784c6
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/map.js
@@ -0,0 +1,6 @@
+require('../modules/es6.object.to-string');
+require('../modules/es6.string.iterator');
+require('../modules/web.dom.iterable');
+require('../modules/es6.map');
+require('../modules/es7.map.to-json');
+module.exports = require('../modules/_core').Map;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/math/acosh.js b/node_modules/babel-register/node_modules/core-js/library/fn/math/acosh.js
new file mode 100644
index 0000000..9c904c2
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/math/acosh.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.math.acosh');
+module.exports = require('../../modules/_core').Math.acosh;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/math/asinh.js b/node_modules/babel-register/node_modules/core-js/library/fn/math/asinh.js
new file mode 100644
index 0000000..9e209c9
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/math/asinh.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.math.asinh');
+module.exports = require('../../modules/_core').Math.asinh;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/math/atanh.js b/node_modules/babel-register/node_modules/core-js/library/fn/math/atanh.js
new file mode 100644
index 0000000..b116296
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/math/atanh.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.math.atanh');
+module.exports = require('../../modules/_core').Math.atanh;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/math/cbrt.js b/node_modules/babel-register/node_modules/core-js/library/fn/math/cbrt.js
new file mode 100644
index 0000000..6ffec33
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/math/cbrt.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.math.cbrt');
+module.exports = require('../../modules/_core').Math.cbrt;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/math/clz32.js b/node_modules/babel-register/node_modules/core-js/library/fn/math/clz32.js
new file mode 100644
index 0000000..beeaae1
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/math/clz32.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.math.clz32');
+module.exports = require('../../modules/_core').Math.clz32;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/math/cosh.js b/node_modules/babel-register/node_modules/core-js/library/fn/math/cosh.js
new file mode 100644
index 0000000..bf92dc1
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/math/cosh.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.math.cosh');
+module.exports = require('../../modules/_core').Math.cosh;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/math/expm1.js b/node_modules/babel-register/node_modules/core-js/library/fn/math/expm1.js
new file mode 100644
index 0000000..0b30ebb
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/math/expm1.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.math.expm1');
+module.exports = require('../../modules/_core').Math.expm1;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/math/fround.js b/node_modules/babel-register/node_modules/core-js/library/fn/math/fround.js
new file mode 100644
index 0000000..c75a229
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/math/fround.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.math.fround');
+module.exports = require('../../modules/_core').Math.fround;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/math/hypot.js b/node_modules/babel-register/node_modules/core-js/library/fn/math/hypot.js
new file mode 100644
index 0000000..2126285
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/math/hypot.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.math.hypot');
+module.exports = require('../../modules/_core').Math.hypot;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/math/iaddh.js b/node_modules/babel-register/node_modules/core-js/library/fn/math/iaddh.js
new file mode 100644
index 0000000..cae754e
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/math/iaddh.js
@@ -0,0 +1,2 @@
+require('../../modules/es7.math.iaddh');
+module.exports = require('../../modules/_core').Math.iaddh;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/math/imul.js b/node_modules/babel-register/node_modules/core-js/library/fn/math/imul.js
new file mode 100644
index 0000000..1f5ce16
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/math/imul.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.math.imul');
+module.exports = require('../../modules/_core').Math.imul;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/math/imulh.js b/node_modules/babel-register/node_modules/core-js/library/fn/math/imulh.js
new file mode 100644
index 0000000..3b47bf8
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/math/imulh.js
@@ -0,0 +1,2 @@
+require('../../modules/es7.math.imulh');
+module.exports = require('../../modules/_core').Math.imulh;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/math/index.js b/node_modules/babel-register/node_modules/core-js/library/fn/math/index.js
new file mode 100644
index 0000000..8a2664b
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/math/index.js
@@ -0,0 +1,22 @@
+require('../../modules/es6.math.acosh');
+require('../../modules/es6.math.asinh');
+require('../../modules/es6.math.atanh');
+require('../../modules/es6.math.cbrt');
+require('../../modules/es6.math.clz32');
+require('../../modules/es6.math.cosh');
+require('../../modules/es6.math.expm1');
+require('../../modules/es6.math.fround');
+require('../../modules/es6.math.hypot');
+require('../../modules/es6.math.imul');
+require('../../modules/es6.math.log10');
+require('../../modules/es6.math.log1p');
+require('../../modules/es6.math.log2');
+require('../../modules/es6.math.sign');
+require('../../modules/es6.math.sinh');
+require('../../modules/es6.math.tanh');
+require('../../modules/es6.math.trunc');
+require('../../modules/es7.math.iaddh');
+require('../../modules/es7.math.isubh');
+require('../../modules/es7.math.imulh');
+require('../../modules/es7.math.umulh');
+module.exports = require('../../modules/_core').Math;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/math/isubh.js b/node_modules/babel-register/node_modules/core-js/library/fn/math/isubh.js
new file mode 100644
index 0000000..e120e42
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/math/isubh.js
@@ -0,0 +1,2 @@
+require('../../modules/es7.math.isubh');
+module.exports = require('../../modules/_core').Math.isubh;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/math/log10.js b/node_modules/babel-register/node_modules/core-js/library/fn/math/log10.js
new file mode 100644
index 0000000..1246e0a
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/math/log10.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.math.log10');
+module.exports = require('../../modules/_core').Math.log10;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/math/log1p.js b/node_modules/babel-register/node_modules/core-js/library/fn/math/log1p.js
new file mode 100644
index 0000000..047b84c
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/math/log1p.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.math.log1p');
+module.exports = require('../../modules/_core').Math.log1p;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/math/log2.js b/node_modules/babel-register/node_modules/core-js/library/fn/math/log2.js
new file mode 100644
index 0000000..ce3e99c
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/math/log2.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.math.log2');
+module.exports = require('../../modules/_core').Math.log2;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/math/sign.js b/node_modules/babel-register/node_modules/core-js/library/fn/math/sign.js
new file mode 100644
index 0000000..0963eca
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/math/sign.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.math.sign');
+module.exports = require('../../modules/_core').Math.sign;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/math/sinh.js b/node_modules/babel-register/node_modules/core-js/library/fn/math/sinh.js
new file mode 100644
index 0000000..c35cb73
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/math/sinh.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.math.sinh');
+module.exports = require('../../modules/_core').Math.sinh;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/math/tanh.js b/node_modules/babel-register/node_modules/core-js/library/fn/math/tanh.js
new file mode 100644
index 0000000..3d1966d
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/math/tanh.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.math.tanh');
+module.exports = require('../../modules/_core').Math.tanh;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/math/trunc.js b/node_modules/babel-register/node_modules/core-js/library/fn/math/trunc.js
new file mode 100644
index 0000000..135b7dc
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/math/trunc.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.math.trunc');
+module.exports = require('../../modules/_core').Math.trunc;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/math/umulh.js b/node_modules/babel-register/node_modules/core-js/library/fn/math/umulh.js
new file mode 100644
index 0000000..d93b9ae
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/math/umulh.js
@@ -0,0 +1,2 @@
+require('../../modules/es7.math.umulh');
+module.exports = require('../../modules/_core').Math.umulh;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/number/constructor.js b/node_modules/babel-register/node_modules/core-js/library/fn/number/constructor.js
new file mode 100644
index 0000000..f488331
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/number/constructor.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.number.constructor');
+module.exports = Number;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/number/epsilon.js b/node_modules/babel-register/node_modules/core-js/library/fn/number/epsilon.js
new file mode 100644
index 0000000..56c9352
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/number/epsilon.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.number.epsilon');
+module.exports = Math.pow(2, -52);
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/number/index.js b/node_modules/babel-register/node_modules/core-js/library/fn/number/index.js
new file mode 100644
index 0000000..9289000
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/number/index.js
@@ -0,0 +1,14 @@
+require('../../modules/es6.number.constructor');
+require('../../modules/es6.number.epsilon');
+require('../../modules/es6.number.is-finite');
+require('../../modules/es6.number.is-integer');
+require('../../modules/es6.number.is-nan');
+require('../../modules/es6.number.is-safe-integer');
+require('../../modules/es6.number.max-safe-integer');
+require('../../modules/es6.number.min-safe-integer');
+require('../../modules/es6.number.parse-float');
+require('../../modules/es6.number.parse-int');
+require('../../modules/es6.number.to-fixed');
+require('../../modules/es6.number.to-precision');
+require('../../modules/core.number.iterator');
+module.exports = require('../../modules/_core').Number;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/number/is-finite.js b/node_modules/babel-register/node_modules/core-js/library/fn/number/is-finite.js
new file mode 100644
index 0000000..4ec3706
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/number/is-finite.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.number.is-finite');
+module.exports = require('../../modules/_core').Number.isFinite;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/number/is-integer.js b/node_modules/babel-register/node_modules/core-js/library/fn/number/is-integer.js
new file mode 100644
index 0000000..a3013bf
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/number/is-integer.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.number.is-integer');
+module.exports = require('../../modules/_core').Number.isInteger;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/number/is-nan.js b/node_modules/babel-register/node_modules/core-js/library/fn/number/is-nan.js
new file mode 100644
index 0000000..f23b026
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/number/is-nan.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.number.is-nan');
+module.exports = require('../../modules/_core').Number.isNaN;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/number/is-safe-integer.js b/node_modules/babel-register/node_modules/core-js/library/fn/number/is-safe-integer.js
new file mode 100644
index 0000000..f68732f
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/number/is-safe-integer.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.number.is-safe-integer');
+module.exports = require('../../modules/_core').Number.isSafeInteger;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/number/iterator.js b/node_modules/babel-register/node_modules/core-js/library/fn/number/iterator.js
new file mode 100644
index 0000000..26feaa1
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/number/iterator.js
@@ -0,0 +1,5 @@
+require('../../modules/core.number.iterator');
+var get = require('../../modules/_iterators').Number;
+module.exports = function(it){
+ return get.call(it);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/number/max-safe-integer.js b/node_modules/babel-register/node_modules/core-js/library/fn/number/max-safe-integer.js
new file mode 100644
index 0000000..c9b43b0
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/number/max-safe-integer.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.number.max-safe-integer');
+module.exports = 0x1fffffffffffff;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/number/min-safe-integer.js b/node_modules/babel-register/node_modules/core-js/library/fn/number/min-safe-integer.js
new file mode 100644
index 0000000..8b5e072
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/number/min-safe-integer.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.number.min-safe-integer');
+module.exports = -0x1fffffffffffff;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/number/parse-float.js b/node_modules/babel-register/node_modules/core-js/library/fn/number/parse-float.js
new file mode 100644
index 0000000..62f8977
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/number/parse-float.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.number.parse-float');
+module.exports = parseFloat;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/number/parse-int.js b/node_modules/babel-register/node_modules/core-js/library/fn/number/parse-int.js
new file mode 100644
index 0000000..c197da5
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/number/parse-int.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.number.parse-int');
+module.exports = parseInt;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/number/to-fixed.js b/node_modules/babel-register/node_modules/core-js/library/fn/number/to-fixed.js
new file mode 100644
index 0000000..3a041b0
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/number/to-fixed.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.number.to-fixed');
+module.exports = require('../../modules/_core').Number.toFixed;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/number/to-precision.js b/node_modules/babel-register/node_modules/core-js/library/fn/number/to-precision.js
new file mode 100644
index 0000000..9e85511
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/number/to-precision.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.number.to-precision');
+module.exports = require('../../modules/_core').Number.toPrecision;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/number/virtual/index.js b/node_modules/babel-register/node_modules/core-js/library/fn/number/virtual/index.js
new file mode 100644
index 0000000..42360d3
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/number/virtual/index.js
@@ -0,0 +1,4 @@
+require('../../../modules/core.number.iterator');
+var $Number = require('../../../modules/_entry-virtual')('Number');
+$Number.iterator = require('../../../modules/_iterators').Number;
+module.exports = $Number;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/number/virtual/iterator.js b/node_modules/babel-register/node_modules/core-js/library/fn/number/virtual/iterator.js
new file mode 100644
index 0000000..df03499
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/number/virtual/iterator.js
@@ -0,0 +1,2 @@
+require('../../../modules/core.number.iterator');
+module.exports = require('../../../modules/_iterators').Number;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/number/virtual/to-fixed.js b/node_modules/babel-register/node_modules/core-js/library/fn/number/virtual/to-fixed.js
new file mode 100644
index 0000000..b779f15
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/number/virtual/to-fixed.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.number.to-fixed');
+module.exports = require('../../../modules/_entry-virtual')('Number').toFixed;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/number/virtual/to-precision.js b/node_modules/babel-register/node_modules/core-js/library/fn/number/virtual/to-precision.js
new file mode 100644
index 0000000..0c93fa4
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/number/virtual/to-precision.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.number.to-precision');
+module.exports = require('../../../modules/_entry-virtual')('Number').toPrecision;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/object/assign.js b/node_modules/babel-register/node_modules/core-js/library/fn/object/assign.js
new file mode 100644
index 0000000..97df6bf
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/object/assign.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.object.assign');
+module.exports = require('../../modules/_core').Object.assign;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/object/classof.js b/node_modules/babel-register/node_modules/core-js/library/fn/object/classof.js
new file mode 100644
index 0000000..993d048
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/object/classof.js
@@ -0,0 +1,2 @@
+require('../../modules/core.object.classof');
+module.exports = require('../../modules/_core').Object.classof;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/object/create.js b/node_modules/babel-register/node_modules/core-js/library/fn/object/create.js
new file mode 100644
index 0000000..a05ca2f
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/object/create.js
@@ -0,0 +1,5 @@
+require('../../modules/es6.object.create');
+var $Object = require('../../modules/_core').Object;
+module.exports = function create(P, D){
+ return $Object.create(P, D);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/object/define-getter.js b/node_modules/babel-register/node_modules/core-js/library/fn/object/define-getter.js
new file mode 100644
index 0000000..5dd2607
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/object/define-getter.js
@@ -0,0 +1,2 @@
+require('../../modules/es7.object.define-getter');
+module.exports = require('../../modules/_core').Object.__defineGetter__;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/object/define-properties.js b/node_modules/babel-register/node_modules/core-js/library/fn/object/define-properties.js
new file mode 100644
index 0000000..04160fb
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/object/define-properties.js
@@ -0,0 +1,5 @@
+require('../../modules/es6.object.define-properties');
+var $Object = require('../../modules/_core').Object;
+module.exports = function defineProperties(T, D){
+ return $Object.defineProperties(T, D);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/object/define-property.js b/node_modules/babel-register/node_modules/core-js/library/fn/object/define-property.js
new file mode 100644
index 0000000..078c56c
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/object/define-property.js
@@ -0,0 +1,5 @@
+require('../../modules/es6.object.define-property');
+var $Object = require('../../modules/_core').Object;
+module.exports = function defineProperty(it, key, desc){
+ return $Object.defineProperty(it, key, desc);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/object/define-setter.js b/node_modules/babel-register/node_modules/core-js/library/fn/object/define-setter.js
new file mode 100644
index 0000000..b59475f
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/object/define-setter.js
@@ -0,0 +1,2 @@
+require('../../modules/es7.object.define-setter');
+module.exports = require('../../modules/_core').Object.__defineSetter__;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/object/define.js b/node_modules/babel-register/node_modules/core-js/library/fn/object/define.js
new file mode 100644
index 0000000..6ec19e9
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/object/define.js
@@ -0,0 +1,2 @@
+require('../../modules/core.object.define');
+module.exports = require('../../modules/_core').Object.define;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/object/entries.js b/node_modules/babel-register/node_modules/core-js/library/fn/object/entries.js
new file mode 100644
index 0000000..fca1000
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/object/entries.js
@@ -0,0 +1,2 @@
+require('../../modules/es7.object.entries');
+module.exports = require('../../modules/_core').Object.entries;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/object/freeze.js b/node_modules/babel-register/node_modules/core-js/library/fn/object/freeze.js
new file mode 100644
index 0000000..04eac53
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/object/freeze.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.object.freeze');
+module.exports = require('../../modules/_core').Object.freeze;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/object/get-own-property-descriptor.js b/node_modules/babel-register/node_modules/core-js/library/fn/object/get-own-property-descriptor.js
new file mode 100644
index 0000000..7d3f03b
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/object/get-own-property-descriptor.js
@@ -0,0 +1,5 @@
+require('../../modules/es6.object.get-own-property-descriptor');
+var $Object = require('../../modules/_core').Object;
+module.exports = function getOwnPropertyDescriptor(it, key){
+ return $Object.getOwnPropertyDescriptor(it, key);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/object/get-own-property-descriptors.js b/node_modules/babel-register/node_modules/core-js/library/fn/object/get-own-property-descriptors.js
new file mode 100644
index 0000000..dfeb547
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/object/get-own-property-descriptors.js
@@ -0,0 +1,2 @@
+require('../../modules/es7.object.get-own-property-descriptors');
+module.exports = require('../../modules/_core').Object.getOwnPropertyDescriptors;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/object/get-own-property-names.js b/node_modules/babel-register/node_modules/core-js/library/fn/object/get-own-property-names.js
new file mode 100644
index 0000000..c91ce43
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/object/get-own-property-names.js
@@ -0,0 +1,5 @@
+require('../../modules/es6.object.get-own-property-names');
+var $Object = require('../../modules/_core').Object;
+module.exports = function getOwnPropertyNames(it){
+ return $Object.getOwnPropertyNames(it);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/object/get-own-property-symbols.js b/node_modules/babel-register/node_modules/core-js/library/fn/object/get-own-property-symbols.js
new file mode 100644
index 0000000..c3f5288
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/object/get-own-property-symbols.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.symbol');
+module.exports = require('../../modules/_core').Object.getOwnPropertySymbols;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/object/get-prototype-of.js b/node_modules/babel-register/node_modules/core-js/library/fn/object/get-prototype-of.js
new file mode 100644
index 0000000..bda9344
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/object/get-prototype-of.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.object.get-prototype-of');
+module.exports = require('../../modules/_core').Object.getPrototypeOf;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/object/index.js b/node_modules/babel-register/node_modules/core-js/library/fn/object/index.js
new file mode 100644
index 0000000..4bd9825
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/object/index.js
@@ -0,0 +1,30 @@
+require('../../modules/es6.symbol');
+require('../../modules/es6.object.create');
+require('../../modules/es6.object.define-property');
+require('../../modules/es6.object.define-properties');
+require('../../modules/es6.object.get-own-property-descriptor');
+require('../../modules/es6.object.get-prototype-of');
+require('../../modules/es6.object.keys');
+require('../../modules/es6.object.get-own-property-names');
+require('../../modules/es6.object.freeze');
+require('../../modules/es6.object.seal');
+require('../../modules/es6.object.prevent-extensions');
+require('../../modules/es6.object.is-frozen');
+require('../../modules/es6.object.is-sealed');
+require('../../modules/es6.object.is-extensible');
+require('../../modules/es6.object.assign');
+require('../../modules/es6.object.is');
+require('../../modules/es6.object.set-prototype-of');
+require('../../modules/es6.object.to-string');
+require('../../modules/es7.object.get-own-property-descriptors');
+require('../../modules/es7.object.values');
+require('../../modules/es7.object.entries');
+require('../../modules/es7.object.define-getter');
+require('../../modules/es7.object.define-setter');
+require('../../modules/es7.object.lookup-getter');
+require('../../modules/es7.object.lookup-setter');
+require('../../modules/core.object.is-object');
+require('../../modules/core.object.classof');
+require('../../modules/core.object.define');
+require('../../modules/core.object.make');
+module.exports = require('../../modules/_core').Object;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/object/is-extensible.js b/node_modules/babel-register/node_modules/core-js/library/fn/object/is-extensible.js
new file mode 100644
index 0000000..43fb0e7
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/object/is-extensible.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.object.is-extensible');
+module.exports = require('../../modules/_core').Object.isExtensible;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/object/is-frozen.js b/node_modules/babel-register/node_modules/core-js/library/fn/object/is-frozen.js
new file mode 100644
index 0000000..cbff224
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/object/is-frozen.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.object.is-frozen');
+module.exports = require('../../modules/_core').Object.isFrozen;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/object/is-object.js b/node_modules/babel-register/node_modules/core-js/library/fn/object/is-object.js
new file mode 100644
index 0000000..38feeff
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/object/is-object.js
@@ -0,0 +1,2 @@
+require('../../modules/core.object.is-object');
+module.exports = require('../../modules/_core').Object.isObject;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/object/is-sealed.js b/node_modules/babel-register/node_modules/core-js/library/fn/object/is-sealed.js
new file mode 100644
index 0000000..169a8ae
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/object/is-sealed.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.object.is-sealed');
+module.exports = require('../../modules/_core').Object.isSealed;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/object/is.js b/node_modules/babel-register/node_modules/core-js/library/fn/object/is.js
new file mode 100644
index 0000000..6ac9f19
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/object/is.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.object.is');
+module.exports = require('../../modules/_core').Object.is;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/object/keys.js b/node_modules/babel-register/node_modules/core-js/library/fn/object/keys.js
new file mode 100644
index 0000000..8eeb78e
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/object/keys.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.object.keys');
+module.exports = require('../../modules/_core').Object.keys;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/object/lookup-getter.js b/node_modules/babel-register/node_modules/core-js/library/fn/object/lookup-getter.js
new file mode 100644
index 0000000..3f7f674
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/object/lookup-getter.js
@@ -0,0 +1,2 @@
+require('../../modules/es7.object.lookup-setter');
+module.exports = require('../../modules/_core').Object.__lookupGetter__;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/object/lookup-setter.js b/node_modules/babel-register/node_modules/core-js/library/fn/object/lookup-setter.js
new file mode 100644
index 0000000..d18446f
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/object/lookup-setter.js
@@ -0,0 +1,2 @@
+require('../../modules/es7.object.lookup-setter');
+module.exports = require('../../modules/_core').Object.__lookupSetter__;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/object/make.js b/node_modules/babel-register/node_modules/core-js/library/fn/object/make.js
new file mode 100644
index 0000000..f4d19d1
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/object/make.js
@@ -0,0 +1,2 @@
+require('../../modules/core.object.make');
+module.exports = require('../../modules/_core').Object.make;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/object/prevent-extensions.js b/node_modules/babel-register/node_modules/core-js/library/fn/object/prevent-extensions.js
new file mode 100644
index 0000000..e43be05
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/object/prevent-extensions.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.object.prevent-extensions');
+module.exports = require('../../modules/_core').Object.preventExtensions;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/object/seal.js b/node_modules/babel-register/node_modules/core-js/library/fn/object/seal.js
new file mode 100644
index 0000000..8a56cd7
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/object/seal.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.object.seal');
+module.exports = require('../../modules/_core').Object.seal;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/object/set-prototype-of.js b/node_modules/babel-register/node_modules/core-js/library/fn/object/set-prototype-of.js
new file mode 100644
index 0000000..c25170d
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/object/set-prototype-of.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.object.set-prototype-of');
+module.exports = require('../../modules/_core').Object.setPrototypeOf;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/object/values.js b/node_modules/babel-register/node_modules/core-js/library/fn/object/values.js
new file mode 100644
index 0000000..b50336c
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/object/values.js
@@ -0,0 +1,2 @@
+require('../../modules/es7.object.values');
+module.exports = require('../../modules/_core').Object.values;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/parse-float.js b/node_modules/babel-register/node_modules/core-js/library/fn/parse-float.js
new file mode 100644
index 0000000..dad94dd
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/parse-float.js
@@ -0,0 +1,2 @@
+require('../modules/es6.parse-float');
+module.exports = require('../modules/_core').parseFloat;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/parse-int.js b/node_modules/babel-register/node_modules/core-js/library/fn/parse-int.js
new file mode 100644
index 0000000..08a2099
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/parse-int.js
@@ -0,0 +1,2 @@
+require('../modules/es6.parse-int');
+module.exports = require('../modules/_core').parseInt;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/promise.js b/node_modules/babel-register/node_modules/core-js/library/fn/promise.js
new file mode 100644
index 0000000..c901c85
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/promise.js
@@ -0,0 +1,5 @@
+require('../modules/es6.object.to-string');
+require('../modules/es6.string.iterator');
+require('../modules/web.dom.iterable');
+require('../modules/es6.promise');
+module.exports = require('../modules/_core').Promise;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/reflect/apply.js b/node_modules/babel-register/node_modules/core-js/library/fn/reflect/apply.js
new file mode 100644
index 0000000..725b8a6
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/reflect/apply.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.reflect.apply');
+module.exports = require('../../modules/_core').Reflect.apply;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/reflect/construct.js b/node_modules/babel-register/node_modules/core-js/library/fn/reflect/construct.js
new file mode 100644
index 0000000..587725d
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/reflect/construct.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.reflect.construct');
+module.exports = require('../../modules/_core').Reflect.construct;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/reflect/define-metadata.js b/node_modules/babel-register/node_modules/core-js/library/fn/reflect/define-metadata.js
new file mode 100644
index 0000000..c9876ed
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/reflect/define-metadata.js
@@ -0,0 +1,2 @@
+require('../../modules/es7.reflect.define-metadata');
+module.exports = require('../../modules/_core').Reflect.defineMetadata;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/reflect/define-property.js b/node_modules/babel-register/node_modules/core-js/library/fn/reflect/define-property.js
new file mode 100644
index 0000000..c36b4d2
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/reflect/define-property.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.reflect.define-property');
+module.exports = require('../../modules/_core').Reflect.defineProperty;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/reflect/delete-metadata.js b/node_modules/babel-register/node_modules/core-js/library/fn/reflect/delete-metadata.js
new file mode 100644
index 0000000..9bcc029
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/reflect/delete-metadata.js
@@ -0,0 +1,2 @@
+require('../../modules/es7.reflect.delete-metadata');
+module.exports = require('../../modules/_core').Reflect.deleteMetadata;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/reflect/delete-property.js b/node_modules/babel-register/node_modules/core-js/library/fn/reflect/delete-property.js
new file mode 100644
index 0000000..10b6392
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/reflect/delete-property.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.reflect.delete-property');
+module.exports = require('../../modules/_core').Reflect.deleteProperty;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/reflect/enumerate.js b/node_modules/babel-register/node_modules/core-js/library/fn/reflect/enumerate.js
new file mode 100644
index 0000000..257a21e
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/reflect/enumerate.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.reflect.enumerate');
+module.exports = require('../../modules/_core').Reflect.enumerate;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/reflect/get-metadata-keys.js b/node_modules/babel-register/node_modules/core-js/library/fn/reflect/get-metadata-keys.js
new file mode 100644
index 0000000..9dbf5ee
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/reflect/get-metadata-keys.js
@@ -0,0 +1,2 @@
+require('../../modules/es7.reflect.get-metadata-keys');
+module.exports = require('../../modules/_core').Reflect.getMetadataKeys;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/reflect/get-metadata.js b/node_modules/babel-register/node_modules/core-js/library/fn/reflect/get-metadata.js
new file mode 100644
index 0000000..3a20839
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/reflect/get-metadata.js
@@ -0,0 +1,2 @@
+require('../../modules/es7.reflect.get-metadata');
+module.exports = require('../../modules/_core').Reflect.getMetadata;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/reflect/get-own-metadata-keys.js b/node_modules/babel-register/node_modules/core-js/library/fn/reflect/get-own-metadata-keys.js
new file mode 100644
index 0000000..2f8c575
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/reflect/get-own-metadata-keys.js
@@ -0,0 +1,2 @@
+require('../../modules/es7.reflect.get-own-metadata-keys');
+module.exports = require('../../modules/_core').Reflect.getOwnMetadataKeys;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/reflect/get-own-metadata.js b/node_modules/babel-register/node_modules/core-js/library/fn/reflect/get-own-metadata.js
new file mode 100644
index 0000000..68e288d
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/reflect/get-own-metadata.js
@@ -0,0 +1,2 @@
+require('../../modules/es7.reflect.get-own-metadata');
+module.exports = require('../../modules/_core').Reflect.getOwnMetadata;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/reflect/get-own-property-descriptor.js b/node_modules/babel-register/node_modules/core-js/library/fn/reflect/get-own-property-descriptor.js
new file mode 100644
index 0000000..9e2822f
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/reflect/get-own-property-descriptor.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.reflect.get-own-property-descriptor');
+module.exports = require('../../modules/_core').Reflect.getOwnPropertyDescriptor;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/reflect/get-prototype-of.js b/node_modules/babel-register/node_modules/core-js/library/fn/reflect/get-prototype-of.js
new file mode 100644
index 0000000..4850359
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/reflect/get-prototype-of.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.reflect.get-prototype-of');
+module.exports = require('../../modules/_core').Reflect.getPrototypeOf;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/reflect/get.js b/node_modules/babel-register/node_modules/core-js/library/fn/reflect/get.js
new file mode 100644
index 0000000..9ca903e
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/reflect/get.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.reflect.get');
+module.exports = require('../../modules/_core').Reflect.get;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/reflect/has-metadata.js b/node_modules/babel-register/node_modules/core-js/library/fn/reflect/has-metadata.js
new file mode 100644
index 0000000..f001f43
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/reflect/has-metadata.js
@@ -0,0 +1,2 @@
+require('../../modules/es7.reflect.has-metadata');
+module.exports = require('../../modules/_core').Reflect.hasMetadata;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/reflect/has-own-metadata.js b/node_modules/babel-register/node_modules/core-js/library/fn/reflect/has-own-metadata.js
new file mode 100644
index 0000000..d90935f
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/reflect/has-own-metadata.js
@@ -0,0 +1,2 @@
+require('../../modules/es7.reflect.has-own-metadata');
+module.exports = require('../../modules/_core').Reflect.hasOwnMetadata;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/reflect/has.js b/node_modules/babel-register/node_modules/core-js/library/fn/reflect/has.js
new file mode 100644
index 0000000..8e34933
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/reflect/has.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.reflect.has');
+module.exports = require('../../modules/_core').Reflect.has;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/reflect/index.js b/node_modules/babel-register/node_modules/core-js/library/fn/reflect/index.js
new file mode 100644
index 0000000..a725cef
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/reflect/index.js
@@ -0,0 +1,24 @@
+require('../../modules/es6.reflect.apply');
+require('../../modules/es6.reflect.construct');
+require('../../modules/es6.reflect.define-property');
+require('../../modules/es6.reflect.delete-property');
+require('../../modules/es6.reflect.enumerate');
+require('../../modules/es6.reflect.get');
+require('../../modules/es6.reflect.get-own-property-descriptor');
+require('../../modules/es6.reflect.get-prototype-of');
+require('../../modules/es6.reflect.has');
+require('../../modules/es6.reflect.is-extensible');
+require('../../modules/es6.reflect.own-keys');
+require('../../modules/es6.reflect.prevent-extensions');
+require('../../modules/es6.reflect.set');
+require('../../modules/es6.reflect.set-prototype-of');
+require('../../modules/es7.reflect.define-metadata');
+require('../../modules/es7.reflect.delete-metadata');
+require('../../modules/es7.reflect.get-metadata');
+require('../../modules/es7.reflect.get-metadata-keys');
+require('../../modules/es7.reflect.get-own-metadata');
+require('../../modules/es7.reflect.get-own-metadata-keys');
+require('../../modules/es7.reflect.has-metadata');
+require('../../modules/es7.reflect.has-own-metadata');
+require('../../modules/es7.reflect.metadata');
+module.exports = require('../../modules/_core').Reflect;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/reflect/is-extensible.js b/node_modules/babel-register/node_modules/core-js/library/fn/reflect/is-extensible.js
new file mode 100644
index 0000000..de41d68
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/reflect/is-extensible.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.reflect.is-extensible');
+module.exports = require('../../modules/_core').Reflect.isExtensible;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/reflect/metadata.js b/node_modules/babel-register/node_modules/core-js/library/fn/reflect/metadata.js
new file mode 100644
index 0000000..3f2b8ff
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/reflect/metadata.js
@@ -0,0 +1,2 @@
+require('../../modules/es7.reflect.metadata');
+module.exports = require('../../modules/_core').Reflect.metadata;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/reflect/own-keys.js b/node_modules/babel-register/node_modules/core-js/library/fn/reflect/own-keys.js
new file mode 100644
index 0000000..bfcebc7
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/reflect/own-keys.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.reflect.own-keys');
+module.exports = require('../../modules/_core').Reflect.ownKeys;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/reflect/prevent-extensions.js b/node_modules/babel-register/node_modules/core-js/library/fn/reflect/prevent-extensions.js
new file mode 100644
index 0000000..b346da3
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/reflect/prevent-extensions.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.reflect.prevent-extensions');
+module.exports = require('../../modules/_core').Reflect.preventExtensions;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/reflect/set-prototype-of.js b/node_modules/babel-register/node_modules/core-js/library/fn/reflect/set-prototype-of.js
new file mode 100644
index 0000000..16b7435
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/reflect/set-prototype-of.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.reflect.set-prototype-of');
+module.exports = require('../../modules/_core').Reflect.setPrototypeOf;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/reflect/set.js b/node_modules/babel-register/node_modules/core-js/library/fn/reflect/set.js
new file mode 100644
index 0000000..834929e
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/reflect/set.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.reflect.set');
+module.exports = require('../../modules/_core').Reflect.set;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/regexp/constructor.js b/node_modules/babel-register/node_modules/core-js/library/fn/regexp/constructor.js
new file mode 100644
index 0000000..90c1351
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/regexp/constructor.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.regexp.constructor');
+module.exports = RegExp;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/regexp/escape.js b/node_modules/babel-register/node_modules/core-js/library/fn/regexp/escape.js
new file mode 100644
index 0000000..d657a7d
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/regexp/escape.js
@@ -0,0 +1,2 @@
+require('../../modules/core.regexp.escape');
+module.exports = require('../../modules/_core').RegExp.escape;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/regexp/flags.js b/node_modules/babel-register/node_modules/core-js/library/fn/regexp/flags.js
new file mode 100644
index 0000000..ef84ddb
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/regexp/flags.js
@@ -0,0 +1,5 @@
+require('../../modules/es6.regexp.flags');
+var flags = require('../../modules/_flags');
+module.exports = function(it){
+ return flags.call(it);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/regexp/index.js b/node_modules/babel-register/node_modules/core-js/library/fn/regexp/index.js
new file mode 100644
index 0000000..61ced0b
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/regexp/index.js
@@ -0,0 +1,9 @@
+require('../../modules/es6.regexp.constructor');
+require('../../modules/es6.regexp.to-string');
+require('../../modules/es6.regexp.flags');
+require('../../modules/es6.regexp.match');
+require('../../modules/es6.regexp.replace');
+require('../../modules/es6.regexp.search');
+require('../../modules/es6.regexp.split');
+require('../../modules/core.regexp.escape');
+module.exports = require('../../modules/_core').RegExp;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/regexp/match.js b/node_modules/babel-register/node_modules/core-js/library/fn/regexp/match.js
new file mode 100644
index 0000000..400d092
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/regexp/match.js
@@ -0,0 +1,5 @@
+require('../../modules/es6.regexp.match');
+var MATCH = require('../../modules/_wks')('match');
+module.exports = function(it, str){
+ return RegExp.prototype[MATCH].call(it, str);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/regexp/replace.js b/node_modules/babel-register/node_modules/core-js/library/fn/regexp/replace.js
new file mode 100644
index 0000000..adde0ad
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/regexp/replace.js
@@ -0,0 +1,5 @@
+require('../../modules/es6.regexp.replace');
+var REPLACE = require('../../modules/_wks')('replace');
+module.exports = function(it, str, replacer){
+ return RegExp.prototype[REPLACE].call(it, str, replacer);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/regexp/search.js b/node_modules/babel-register/node_modules/core-js/library/fn/regexp/search.js
new file mode 100644
index 0000000..4e149d0
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/regexp/search.js
@@ -0,0 +1,5 @@
+require('../../modules/es6.regexp.search');
+var SEARCH = require('../../modules/_wks')('search');
+module.exports = function(it, str){
+ return RegExp.prototype[SEARCH].call(it, str);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/regexp/split.js b/node_modules/babel-register/node_modules/core-js/library/fn/regexp/split.js
new file mode 100644
index 0000000..b92d09f
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/regexp/split.js
@@ -0,0 +1,5 @@
+require('../../modules/es6.regexp.split');
+var SPLIT = require('../../modules/_wks')('split');
+module.exports = function(it, str, limit){
+ return RegExp.prototype[SPLIT].call(it, str, limit);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/regexp/to-string.js b/node_modules/babel-register/node_modules/core-js/library/fn/regexp/to-string.js
new file mode 100644
index 0000000..29d5d03
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/regexp/to-string.js
@@ -0,0 +1,5 @@
+'use strict';
+require('../../modules/es6.regexp.to-string');
+module.exports = function toString(it){
+ return RegExp.prototype.toString.call(it);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/set-immediate.js b/node_modules/babel-register/node_modules/core-js/library/fn/set-immediate.js
new file mode 100644
index 0000000..2508313
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/set-immediate.js
@@ -0,0 +1,2 @@
+require('../modules/web.immediate');
+module.exports = require('../modules/_core').setImmediate;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/set-interval.js b/node_modules/babel-register/node_modules/core-js/library/fn/set-interval.js
new file mode 100644
index 0000000..484447f
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/set-interval.js
@@ -0,0 +1,2 @@
+require('../modules/web.timers');
+module.exports = require('../modules/_core').setInterval;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/set-timeout.js b/node_modules/babel-register/node_modules/core-js/library/fn/set-timeout.js
new file mode 100644
index 0000000..8ebbb2e
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/set-timeout.js
@@ -0,0 +1,2 @@
+require('../modules/web.timers');
+module.exports = require('../modules/_core').setTimeout;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/set.js b/node_modules/babel-register/node_modules/core-js/library/fn/set.js
new file mode 100644
index 0000000..a8b4965
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/set.js
@@ -0,0 +1,6 @@
+require('../modules/es6.object.to-string');
+require('../modules/es6.string.iterator');
+require('../modules/web.dom.iterable');
+require('../modules/es6.set');
+require('../modules/es7.set.to-json');
+module.exports = require('../modules/_core').Set;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/string/anchor.js b/node_modules/babel-register/node_modules/core-js/library/fn/string/anchor.js
new file mode 100644
index 0000000..ba4ef81
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/string/anchor.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.string.anchor');
+module.exports = require('../../modules/_core').String.anchor;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/string/at.js b/node_modules/babel-register/node_modules/core-js/library/fn/string/at.js
new file mode 100644
index 0000000..ab6aec1
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/string/at.js
@@ -0,0 +1,2 @@
+require('../../modules/es7.string.at');
+module.exports = require('../../modules/_core').String.at;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/string/big.js b/node_modules/babel-register/node_modules/core-js/library/fn/string/big.js
new file mode 100644
index 0000000..ab70790
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/string/big.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.string.big');
+module.exports = require('../../modules/_core').String.big;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/string/blink.js b/node_modules/babel-register/node_modules/core-js/library/fn/string/blink.js
new file mode 100644
index 0000000..c748079
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/string/blink.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.string.blink');
+module.exports = require('../../modules/_core').String.blink;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/string/bold.js b/node_modules/babel-register/node_modules/core-js/library/fn/string/bold.js
new file mode 100644
index 0000000..2d36bda
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/string/bold.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.string.bold');
+module.exports = require('../../modules/_core').String.bold;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/string/code-point-at.js b/node_modules/babel-register/node_modules/core-js/library/fn/string/code-point-at.js
new file mode 100644
index 0000000..be141e8
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/string/code-point-at.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.string.code-point-at');
+module.exports = require('../../modules/_core').String.codePointAt;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/string/ends-with.js b/node_modules/babel-register/node_modules/core-js/library/fn/string/ends-with.js
new file mode 100644
index 0000000..5e42775
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/string/ends-with.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.string.ends-with');
+module.exports = require('../../modules/_core').String.endsWith;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/string/escape-html.js b/node_modules/babel-register/node_modules/core-js/library/fn/string/escape-html.js
new file mode 100644
index 0000000..49176ca
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/string/escape-html.js
@@ -0,0 +1,2 @@
+require('../../modules/core.string.escape-html');
+module.exports = require('../../modules/_core').String.escapeHTML;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/string/fixed.js b/node_modules/babel-register/node_modules/core-js/library/fn/string/fixed.js
new file mode 100644
index 0000000..77e233a
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/string/fixed.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.string.fixed');
+module.exports = require('../../modules/_core').String.fixed;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/string/fontcolor.js b/node_modules/babel-register/node_modules/core-js/library/fn/string/fontcolor.js
new file mode 100644
index 0000000..079235a
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/string/fontcolor.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.string.fontcolor');
+module.exports = require('../../modules/_core').String.fontcolor;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/string/fontsize.js b/node_modules/babel-register/node_modules/core-js/library/fn/string/fontsize.js
new file mode 100644
index 0000000..8cb2555
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/string/fontsize.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.string.fontsize');
+module.exports = require('../../modules/_core').String.fontsize;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/string/from-code-point.js b/node_modules/babel-register/node_modules/core-js/library/fn/string/from-code-point.js
new file mode 100644
index 0000000..93fc53a
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/string/from-code-point.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.string.from-code-point');
+module.exports = require('../../modules/_core').String.fromCodePoint;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/string/includes.js b/node_modules/babel-register/node_modules/core-js/library/fn/string/includes.js
new file mode 100644
index 0000000..c973640
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/string/includes.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.string.includes');
+module.exports = require('../../modules/_core').String.includes;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/string/index.js b/node_modules/babel-register/node_modules/core-js/library/fn/string/index.js
new file mode 100644
index 0000000..6485a9b
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/string/index.js
@@ -0,0 +1,35 @@
+require('../../modules/es6.string.from-code-point');
+require('../../modules/es6.string.raw');
+require('../../modules/es6.string.trim');
+require('../../modules/es6.string.iterator');
+require('../../modules/es6.string.code-point-at');
+require('../../modules/es6.string.ends-with');
+require('../../modules/es6.string.includes');
+require('../../modules/es6.string.repeat');
+require('../../modules/es6.string.starts-with');
+require('../../modules/es6.regexp.match');
+require('../../modules/es6.regexp.replace');
+require('../../modules/es6.regexp.search');
+require('../../modules/es6.regexp.split');
+require('../../modules/es6.string.anchor');
+require('../../modules/es6.string.big');
+require('../../modules/es6.string.blink');
+require('../../modules/es6.string.bold');
+require('../../modules/es6.string.fixed');
+require('../../modules/es6.string.fontcolor');
+require('../../modules/es6.string.fontsize');
+require('../../modules/es6.string.italics');
+require('../../modules/es6.string.link');
+require('../../modules/es6.string.small');
+require('../../modules/es6.string.strike');
+require('../../modules/es6.string.sub');
+require('../../modules/es6.string.sup');
+require('../../modules/es7.string.at');
+require('../../modules/es7.string.pad-start');
+require('../../modules/es7.string.pad-end');
+require('../../modules/es7.string.trim-left');
+require('../../modules/es7.string.trim-right');
+require('../../modules/es7.string.match-all');
+require('../../modules/core.string.escape-html');
+require('../../modules/core.string.unescape-html');
+module.exports = require('../../modules/_core').String;
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/string/italics.js b/node_modules/babel-register/node_modules/core-js/library/fn/string/italics.js
new file mode 100644
index 0000000..378450e
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/string/italics.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.string.italics');
+module.exports = require('../../modules/_core').String.italics;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/string/iterator.js b/node_modules/babel-register/node_modules/core-js/library/fn/string/iterator.js
new file mode 100644
index 0000000..947e755
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/string/iterator.js
@@ -0,0 +1,5 @@
+require('../../modules/es6.string.iterator');
+var get = require('../../modules/_iterators').String;
+module.exports = function(it){
+ return get.call(it);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/string/link.js b/node_modules/babel-register/node_modules/core-js/library/fn/string/link.js
new file mode 100644
index 0000000..1eb2c6d
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/string/link.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.string.link');
+module.exports = require('../../modules/_core').String.link;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/string/match-all.js b/node_modules/babel-register/node_modules/core-js/library/fn/string/match-all.js
new file mode 100644
index 0000000..1a1dfeb
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/string/match-all.js
@@ -0,0 +1,2 @@
+require('../../modules/es7.string.match-all');
+module.exports = require('../../modules/_core').String.matchAll;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/string/pad-end.js b/node_modules/babel-register/node_modules/core-js/library/fn/string/pad-end.js
new file mode 100644
index 0000000..23eb9f9
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/string/pad-end.js
@@ -0,0 +1,2 @@
+require('../../modules/es7.string.pad-end');
+module.exports = require('../../modules/_core').String.padEnd;
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/string/pad-start.js b/node_modules/babel-register/node_modules/core-js/library/fn/string/pad-start.js
new file mode 100644
index 0000000..ff12739
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/string/pad-start.js
@@ -0,0 +1,2 @@
+require('../../modules/es7.string.pad-start');
+module.exports = require('../../modules/_core').String.padStart;
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/string/raw.js b/node_modules/babel-register/node_modules/core-js/library/fn/string/raw.js
new file mode 100644
index 0000000..713550f
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/string/raw.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.string.raw');
+module.exports = require('../../modules/_core').String.raw;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/string/repeat.js b/node_modules/babel-register/node_modules/core-js/library/fn/string/repeat.js
new file mode 100644
index 0000000..fa75b13
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/string/repeat.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.string.repeat');
+module.exports = require('../../modules/_core').String.repeat;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/string/small.js b/node_modules/babel-register/node_modules/core-js/library/fn/string/small.js
new file mode 100644
index 0000000..0438290
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/string/small.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.string.small');
+module.exports = require('../../modules/_core').String.small;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/string/starts-with.js b/node_modules/babel-register/node_modules/core-js/library/fn/string/starts-with.js
new file mode 100644
index 0000000..d62512a
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/string/starts-with.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.string.starts-with');
+module.exports = require('../../modules/_core').String.startsWith;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/string/strike.js b/node_modules/babel-register/node_modules/core-js/library/fn/string/strike.js
new file mode 100644
index 0000000..b79946c
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/string/strike.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.string.strike');
+module.exports = require('../../modules/_core').String.strike;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/string/sub.js b/node_modules/babel-register/node_modules/core-js/library/fn/string/sub.js
new file mode 100644
index 0000000..54d0671
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/string/sub.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.string.sub');
+module.exports = require('../../modules/_core').String.sub;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/string/sup.js b/node_modules/babel-register/node_modules/core-js/library/fn/string/sup.js
new file mode 100644
index 0000000..645e037
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/string/sup.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.string.sup');
+module.exports = require('../../modules/_core').String.sup;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/string/trim-end.js b/node_modules/babel-register/node_modules/core-js/library/fn/string/trim-end.js
new file mode 100644
index 0000000..f3bdf6f
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/string/trim-end.js
@@ -0,0 +1,2 @@
+require('../../modules/es7.string.trim-right');
+module.exports = require('../../modules/_core').String.trimRight;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/string/trim-left.js b/node_modules/babel-register/node_modules/core-js/library/fn/string/trim-left.js
new file mode 100644
index 0000000..04671d3
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/string/trim-left.js
@@ -0,0 +1,2 @@
+require('../../modules/es7.string.trim-left');
+module.exports = require('../../modules/_core').String.trimLeft;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/string/trim-right.js b/node_modules/babel-register/node_modules/core-js/library/fn/string/trim-right.js
new file mode 100644
index 0000000..f3bdf6f
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/string/trim-right.js
@@ -0,0 +1,2 @@
+require('../../modules/es7.string.trim-right');
+module.exports = require('../../modules/_core').String.trimRight;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/string/trim-start.js b/node_modules/babel-register/node_modules/core-js/library/fn/string/trim-start.js
new file mode 100644
index 0000000..04671d3
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/string/trim-start.js
@@ -0,0 +1,2 @@
+require('../../modules/es7.string.trim-left');
+module.exports = require('../../modules/_core').String.trimLeft;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/string/trim.js b/node_modules/babel-register/node_modules/core-js/library/fn/string/trim.js
new file mode 100644
index 0000000..c536e12
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/string/trim.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.string.trim');
+module.exports = require('../../modules/_core').String.trim;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/string/unescape-html.js b/node_modules/babel-register/node_modules/core-js/library/fn/string/unescape-html.js
new file mode 100644
index 0000000..7c2c55c
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/string/unescape-html.js
@@ -0,0 +1,2 @@
+require('../../modules/core.string.unescape-html');
+module.exports = require('../../modules/_core').String.unescapeHTML;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/anchor.js b/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/anchor.js
new file mode 100644
index 0000000..6f74b7e
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/anchor.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.string.anchor');
+module.exports = require('../../../modules/_entry-virtual')('String').anchor;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/at.js b/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/at.js
new file mode 100644
index 0000000..3b96143
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/at.js
@@ -0,0 +1,2 @@
+require('../../../modules/es7.string.at');
+module.exports = require('../../../modules/_entry-virtual')('String').at;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/big.js b/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/big.js
new file mode 100644
index 0000000..57ac7d5
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/big.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.string.big');
+module.exports = require('../../../modules/_entry-virtual')('String').big;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/blink.js b/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/blink.js
new file mode 100644
index 0000000..5c4cea8
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/blink.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.string.blink');
+module.exports = require('../../../modules/_entry-virtual')('String').blink;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/bold.js b/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/bold.js
new file mode 100644
index 0000000..c566bf2
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/bold.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.string.bold');
+module.exports = require('../../../modules/_entry-virtual')('String').bold;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/code-point-at.js b/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/code-point-at.js
new file mode 100644
index 0000000..8737521
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/code-point-at.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.string.code-point-at');
+module.exports = require('../../../modules/_entry-virtual')('String').codePointAt;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/ends-with.js b/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/ends-with.js
new file mode 100644
index 0000000..90bc6e7
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/ends-with.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.string.ends-with');
+module.exports = require('../../../modules/_entry-virtual')('String').endsWith;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/escape-html.js b/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/escape-html.js
new file mode 100644
index 0000000..3342bce
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/escape-html.js
@@ -0,0 +1,2 @@
+require('../../../modules/core.string.escape-html');
+module.exports = require('../../../modules/_entry-virtual')('String').escapeHTML;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/fixed.js b/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/fixed.js
new file mode 100644
index 0000000..e830654
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/fixed.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.string.fixed');
+module.exports = require('../../../modules/_entry-virtual')('String').fixed;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/fontcolor.js b/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/fontcolor.js
new file mode 100644
index 0000000..cfb9b2c
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/fontcolor.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.string.fontcolor');
+module.exports = require('../../../modules/_entry-virtual')('String').fontcolor;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/fontsize.js b/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/fontsize.js
new file mode 100644
index 0000000..de8f516
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/fontsize.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.string.fontsize');
+module.exports = require('../../../modules/_entry-virtual')('String').fontsize;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/includes.js b/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/includes.js
new file mode 100644
index 0000000..1e4793d
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/includes.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.string.includes');
+module.exports = require('../../../modules/_entry-virtual')('String').includes;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/index.js b/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/index.js
new file mode 100644
index 0000000..0e65d20
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/index.js
@@ -0,0 +1,33 @@
+require('../../../modules/es6.string.trim');
+require('../../../modules/es6.string.iterator');
+require('../../../modules/es6.string.code-point-at');
+require('../../../modules/es6.string.ends-with');
+require('../../../modules/es6.string.includes');
+require('../../../modules/es6.string.repeat');
+require('../../../modules/es6.string.starts-with');
+require('../../../modules/es6.regexp.match');
+require('../../../modules/es6.regexp.replace');
+require('../../../modules/es6.regexp.search');
+require('../../../modules/es6.regexp.split');
+require('../../../modules/es6.string.anchor');
+require('../../../modules/es6.string.big');
+require('../../../modules/es6.string.blink');
+require('../../../modules/es6.string.bold');
+require('../../../modules/es6.string.fixed');
+require('../../../modules/es6.string.fontcolor');
+require('../../../modules/es6.string.fontsize');
+require('../../../modules/es6.string.italics');
+require('../../../modules/es6.string.link');
+require('../../../modules/es6.string.small');
+require('../../../modules/es6.string.strike');
+require('../../../modules/es6.string.sub');
+require('../../../modules/es6.string.sup');
+require('../../../modules/es7.string.at');
+require('../../../modules/es7.string.pad-start');
+require('../../../modules/es7.string.pad-end');
+require('../../../modules/es7.string.trim-left');
+require('../../../modules/es7.string.trim-right');
+require('../../../modules/es7.string.match-all');
+require('../../../modules/core.string.escape-html');
+require('../../../modules/core.string.unescape-html');
+module.exports = require('../../../modules/_entry-virtual')('String');
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/italics.js b/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/italics.js
new file mode 100644
index 0000000..f8f1d33
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/italics.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.string.italics');
+module.exports = require('../../../modules/_entry-virtual')('String').italics;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/iterator.js b/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/iterator.js
new file mode 100644
index 0000000..7efe2f9
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/iterator.js
@@ -0,0 +1,2 @@
+require('../../../modules/core.number.iterator');
+module.exports = require('../../../modules/_iterators').String;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/link.js b/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/link.js
new file mode 100644
index 0000000..4b2eea8
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/link.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.string.link');
+module.exports = require('../../../modules/_entry-virtual')('String').link;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/match-all.js b/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/match-all.js
new file mode 100644
index 0000000..9208873
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/match-all.js
@@ -0,0 +1,2 @@
+require('../../../modules/es7.string.match-all');
+module.exports = require('../../../modules/_entry-virtual')('String').matchAll;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/pad-end.js b/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/pad-end.js
new file mode 100644
index 0000000..81e5ac0
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/pad-end.js
@@ -0,0 +1,2 @@
+require('../../../modules/es7.string.pad-end');
+module.exports = require('../../../modules/_entry-virtual')('String').padEnd;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/pad-start.js b/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/pad-start.js
new file mode 100644
index 0000000..54cf3a5
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/pad-start.js
@@ -0,0 +1,2 @@
+require('../../../modules/es7.string.pad-start');
+module.exports = require('../../../modules/_entry-virtual')('String').padStart;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/repeat.js b/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/repeat.js
new file mode 100644
index 0000000..d08cf6a
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/repeat.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.string.repeat');
+module.exports = require('../../../modules/_entry-virtual')('String').repeat;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/small.js b/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/small.js
new file mode 100644
index 0000000..201bf9b
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/small.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.string.small');
+module.exports = require('../../../modules/_entry-virtual')('String').small;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/starts-with.js b/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/starts-with.js
new file mode 100644
index 0000000..f8897d1
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/starts-with.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.string.starts-with');
+module.exports = require('../../../modules/_entry-virtual')('String').startsWith;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/strike.js b/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/strike.js
new file mode 100644
index 0000000..4572db9
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/strike.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.string.strike');
+module.exports = require('../../../modules/_entry-virtual')('String').strike;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/sub.js b/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/sub.js
new file mode 100644
index 0000000..a13611e
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/sub.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.string.sub');
+module.exports = require('../../../modules/_entry-virtual')('String').sub;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/sup.js b/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/sup.js
new file mode 100644
index 0000000..0769532
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/sup.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.string.sup');
+module.exports = require('../../../modules/_entry-virtual')('String').sup;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/trim-end.js b/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/trim-end.js
new file mode 100644
index 0000000..14c25ac
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/trim-end.js
@@ -0,0 +1,2 @@
+require('../../../modules/es7.string.trim-right');
+module.exports = require('../../../modules/_entry-virtual')('String').trimRight;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/trim-left.js b/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/trim-left.js
new file mode 100644
index 0000000..aabcfb3
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/trim-left.js
@@ -0,0 +1,2 @@
+require('../../../modules/es7.string.trim-left');
+module.exports = require('../../../modules/_entry-virtual')('String').trimLeft;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/trim-right.js b/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/trim-right.js
new file mode 100644
index 0000000..14c25ac
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/trim-right.js
@@ -0,0 +1,2 @@
+require('../../../modules/es7.string.trim-right');
+module.exports = require('../../../modules/_entry-virtual')('String').trimRight;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/trim-start.js b/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/trim-start.js
new file mode 100644
index 0000000..aabcfb3
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/trim-start.js
@@ -0,0 +1,2 @@
+require('../../../modules/es7.string.trim-left');
+module.exports = require('../../../modules/_entry-virtual')('String').trimLeft;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/trim.js b/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/trim.js
new file mode 100644
index 0000000..23fbcbc
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/trim.js
@@ -0,0 +1,2 @@
+require('../../../modules/es6.string.trim');
+module.exports = require('../../../modules/_entry-virtual')('String').trim;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/unescape-html.js b/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/unescape-html.js
new file mode 100644
index 0000000..51eb59f
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/string/virtual/unescape-html.js
@@ -0,0 +1,2 @@
+require('../../../modules/core.string.unescape-html');
+module.exports = require('../../../modules/_entry-virtual')('String').unescapeHTML;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/symbol/for.js b/node_modules/babel-register/node_modules/core-js/library/fn/symbol/for.js
new file mode 100644
index 0000000..c9e93c1
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/symbol/for.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.symbol');
+module.exports = require('../../modules/_core').Symbol['for'];
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/symbol/has-instance.js b/node_modules/babel-register/node_modules/core-js/library/fn/symbol/has-instance.js
new file mode 100644
index 0000000..7d7da16
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/symbol/has-instance.js
@@ -0,0 +1 @@
+module.exports = require('../../modules/_wks')('hasInstance');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/symbol/index.js b/node_modules/babel-register/node_modules/core-js/library/fn/symbol/index.js
new file mode 100644
index 0000000..b4c09a0
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/symbol/index.js
@@ -0,0 +1,3 @@
+require('../../modules/es6.symbol');
+require('../../modules/es6.object.to-string');
+module.exports = require('../../modules/_core').Symbol;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/symbol/is-concat-spreadable.js b/node_modules/babel-register/node_modules/core-js/library/fn/symbol/is-concat-spreadable.js
new file mode 100644
index 0000000..51ab012
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/symbol/is-concat-spreadable.js
@@ -0,0 +1 @@
+module.exports = require('../../modules/_wks')('isConcatSpreadable');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/symbol/iterator.js b/node_modules/babel-register/node_modules/core-js/library/fn/symbol/iterator.js
new file mode 100644
index 0000000..e3399c7
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/symbol/iterator.js
@@ -0,0 +1,3 @@
+require('../../modules/es6.string.iterator');
+require('../../modules/web.dom.iterable');
+module.exports = require('../../modules/_wks')('iterator');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/symbol/key-for.js b/node_modules/babel-register/node_modules/core-js/library/fn/symbol/key-for.js
new file mode 100644
index 0000000..d9b595f
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/symbol/key-for.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.symbol');
+module.exports = require('../../modules/_core').Symbol.keyFor;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/symbol/match.js b/node_modules/babel-register/node_modules/core-js/library/fn/symbol/match.js
new file mode 100644
index 0000000..97acebd
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/symbol/match.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.regexp.match');
+module.exports = require('../../modules/_wks')('match');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/symbol/replace.js b/node_modules/babel-register/node_modules/core-js/library/fn/symbol/replace.js
new file mode 100644
index 0000000..433e11c
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/symbol/replace.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.regexp.replace');
+module.exports = require('../../modules/_wks')('replace');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/symbol/search.js b/node_modules/babel-register/node_modules/core-js/library/fn/symbol/search.js
new file mode 100644
index 0000000..575f18d
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/symbol/search.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.regexp.search');
+module.exports = require('../../modules/_wks')('search');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/symbol/species.js b/node_modules/babel-register/node_modules/core-js/library/fn/symbol/species.js
new file mode 100644
index 0000000..5e85d4e
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/symbol/species.js
@@ -0,0 +1 @@
+module.exports = require('../../modules/_wks')('species');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/symbol/split.js b/node_modules/babel-register/node_modules/core-js/library/fn/symbol/split.js
new file mode 100644
index 0000000..f8ce741
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/symbol/split.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.regexp.split');
+module.exports = require('../../modules/_wks')('split');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/symbol/to-primitive.js b/node_modules/babel-register/node_modules/core-js/library/fn/symbol/to-primitive.js
new file mode 100644
index 0000000..02e3317
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/symbol/to-primitive.js
@@ -0,0 +1 @@
+module.exports = require('../../modules/_wks')('toPrimitive');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/symbol/to-string-tag.js b/node_modules/babel-register/node_modules/core-js/library/fn/symbol/to-string-tag.js
new file mode 100644
index 0000000..bf23ef0
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/symbol/to-string-tag.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.object.to-string');
+module.exports = require('../../modules/_wks')('toStringTag');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/symbol/unscopables.js b/node_modules/babel-register/node_modules/core-js/library/fn/symbol/unscopables.js
new file mode 100644
index 0000000..0ad4b56
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/symbol/unscopables.js
@@ -0,0 +1 @@
+module.exports = require('../../modules/_wks')('unscopables');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/system/global.js b/node_modules/babel-register/node_modules/core-js/library/fn/system/global.js
new file mode 100644
index 0000000..c3219d6
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/system/global.js
@@ -0,0 +1,2 @@
+require('../../modules/es7.system.global');
+module.exports = require('../../modules/_core').System.global;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/system/index.js b/node_modules/babel-register/node_modules/core-js/library/fn/system/index.js
new file mode 100644
index 0000000..eae78dd
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/system/index.js
@@ -0,0 +1,2 @@
+require('../../modules/es7.system.global');
+module.exports = require('../../modules/_core').System;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/typed/array-buffer.js b/node_modules/babel-register/node_modules/core-js/library/fn/typed/array-buffer.js
new file mode 100644
index 0000000..fe08f7f
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/typed/array-buffer.js
@@ -0,0 +1,3 @@
+require('../../modules/es6.typed.array-buffer');
+require('../../modules/es6.object.to-string');
+module.exports = require('../../modules/_core').ArrayBuffer;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/typed/data-view.js b/node_modules/babel-register/node_modules/core-js/library/fn/typed/data-view.js
new file mode 100644
index 0000000..09dbb38
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/typed/data-view.js
@@ -0,0 +1,3 @@
+require('../../modules/es6.typed.data-view');
+require('../../modules/es6.object.to-string');
+module.exports = require('../../modules/_core').DataView;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/typed/float32-array.js b/node_modules/babel-register/node_modules/core-js/library/fn/typed/float32-array.js
new file mode 100644
index 0000000..1191fec
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/typed/float32-array.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.typed.float32-array');
+module.exports = require('../../modules/_core').Float32Array;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/typed/float64-array.js b/node_modules/babel-register/node_modules/core-js/library/fn/typed/float64-array.js
new file mode 100644
index 0000000..6073a68
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/typed/float64-array.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.typed.float64-array');
+module.exports = require('../../modules/_core').Float64Array;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/typed/index.js b/node_modules/babel-register/node_modules/core-js/library/fn/typed/index.js
new file mode 100644
index 0000000..7babe09
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/typed/index.js
@@ -0,0 +1,13 @@
+require('../../modules/es6.typed.array-buffer');
+require('../../modules/es6.typed.data-view');
+require('../../modules/es6.typed.int8-array');
+require('../../modules/es6.typed.uint8-array');
+require('../../modules/es6.typed.uint8-clamped-array');
+require('../../modules/es6.typed.int16-array');
+require('../../modules/es6.typed.uint16-array');
+require('../../modules/es6.typed.int32-array');
+require('../../modules/es6.typed.uint32-array');
+require('../../modules/es6.typed.float32-array');
+require('../../modules/es6.typed.float64-array');
+require('../../modules/es6.object.to-string');
+module.exports = require('../../modules/_core');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/typed/int16-array.js b/node_modules/babel-register/node_modules/core-js/library/fn/typed/int16-array.js
new file mode 100644
index 0000000..0722549
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/typed/int16-array.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.typed.int16-array');
+module.exports = require('../../modules/_core').Int16Array;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/typed/int32-array.js b/node_modules/babel-register/node_modules/core-js/library/fn/typed/int32-array.js
new file mode 100644
index 0000000..1361362
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/typed/int32-array.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.typed.int32-array');
+module.exports = require('../../modules/_core').Int32Array;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/typed/int8-array.js b/node_modules/babel-register/node_modules/core-js/library/fn/typed/int8-array.js
new file mode 100644
index 0000000..edf48c7
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/typed/int8-array.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.typed.int8-array');
+module.exports = require('../../modules/_core').Int8Array;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/typed/uint16-array.js b/node_modules/babel-register/node_modules/core-js/library/fn/typed/uint16-array.js
new file mode 100644
index 0000000..3ff1155
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/typed/uint16-array.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.typed.uint16-array');
+module.exports = require('../../modules/_core').Uint16Array;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/typed/uint32-array.js b/node_modules/babel-register/node_modules/core-js/library/fn/typed/uint32-array.js
new file mode 100644
index 0000000..47bb4c2
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/typed/uint32-array.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.typed.uint32-array');
+module.exports = require('../../modules/_core').Uint32Array;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/typed/uint8-array.js b/node_modules/babel-register/node_modules/core-js/library/fn/typed/uint8-array.js
new file mode 100644
index 0000000..fd8a4b1
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/typed/uint8-array.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.typed.uint8-array');
+module.exports = require('../../modules/_core').Uint8Array;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/typed/uint8-clamped-array.js b/node_modules/babel-register/node_modules/core-js/library/fn/typed/uint8-clamped-array.js
new file mode 100644
index 0000000..c688657
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/typed/uint8-clamped-array.js
@@ -0,0 +1,2 @@
+require('../../modules/es6.typed.uint8-clamped-array');
+module.exports = require('../../modules/_core').Uint8ClampedArray;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/weak-map.js b/node_modules/babel-register/node_modules/core-js/library/fn/weak-map.js
new file mode 100644
index 0000000..00cac1a
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/weak-map.js
@@ -0,0 +1,4 @@
+require('../modules/es6.object.to-string');
+require('../modules/web.dom.iterable');
+require('../modules/es6.weak-map');
+module.exports = require('../modules/_core').WeakMap;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/fn/weak-set.js b/node_modules/babel-register/node_modules/core-js/library/fn/weak-set.js
new file mode 100644
index 0000000..eef1af2
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/fn/weak-set.js
@@ -0,0 +1,4 @@
+require('../modules/es6.object.to-string');
+require('../modules/web.dom.iterable');
+require('../modules/es6.weak-set');
+module.exports = require('../modules/_core').WeakSet;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/index.js b/node_modules/babel-register/node_modules/core-js/library/index.js
new file mode 100644
index 0000000..78b9e3d
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/index.js
@@ -0,0 +1,16 @@
+require('./shim');
+require('./modules/core.dict');
+require('./modules/core.get-iterator-method');
+require('./modules/core.get-iterator');
+require('./modules/core.is-iterable');
+require('./modules/core.delay');
+require('./modules/core.function.part');
+require('./modules/core.object.is-object');
+require('./modules/core.object.classof');
+require('./modules/core.object.define');
+require('./modules/core.object.make');
+require('./modules/core.number.iterator');
+require('./modules/core.regexp.escape');
+require('./modules/core.string.escape-html');
+require('./modules/core.string.unescape-html');
+module.exports = require('./modules/_core');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_a-function.js b/node_modules/babel-register/node_modules/core-js/library/modules/_a-function.js
new file mode 100644
index 0000000..8c35f45
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_a-function.js
@@ -0,0 +1,4 @@
+module.exports = function(it){
+ if(typeof it != 'function')throw TypeError(it + ' is not a function!');
+ return it;
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_a-number-value.js b/node_modules/babel-register/node_modules/core-js/library/modules/_a-number-value.js
new file mode 100644
index 0000000..7a959cb
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_a-number-value.js
@@ -0,0 +1,5 @@
+var cof = require('./_cof');
+module.exports = function(it, msg){
+ if(typeof it != 'number' && cof(it) != 'Number')throw TypeError(msg);
+ return +it;
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_add-to-unscopables.js b/node_modules/babel-register/node_modules/core-js/library/modules/_add-to-unscopables.js
new file mode 100644
index 0000000..faf87af
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_add-to-unscopables.js
@@ -0,0 +1 @@
+module.exports = function(){ /* empty */ };
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_an-instance.js b/node_modules/babel-register/node_modules/core-js/library/modules/_an-instance.js
new file mode 100644
index 0000000..e4dfad3
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_an-instance.js
@@ -0,0 +1,5 @@
+module.exports = function(it, Constructor, name, forbiddenField){
+ if(!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)){
+ throw TypeError(name + ': incorrect invocation!');
+ } return it;
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_an-object.js b/node_modules/babel-register/node_modules/core-js/library/modules/_an-object.js
new file mode 100644
index 0000000..59a8a3a
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_an-object.js
@@ -0,0 +1,5 @@
+var isObject = require('./_is-object');
+module.exports = function(it){
+ if(!isObject(it))throw TypeError(it + ' is not an object!');
+ return it;
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_array-copy-within.js b/node_modules/babel-register/node_modules/core-js/library/modules/_array-copy-within.js
new file mode 100644
index 0000000..d901a32
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_array-copy-within.js
@@ -0,0 +1,26 @@
+// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)
+'use strict';
+var toObject = require('./_to-object')
+ , toIndex = require('./_to-index')
+ , toLength = require('./_to-length');
+
+module.exports = [].copyWithin || function copyWithin(target/*= 0*/, start/*= 0, end = @length*/){
+ var O = toObject(this)
+ , len = toLength(O.length)
+ , to = toIndex(target, len)
+ , from = toIndex(start, len)
+ , end = arguments.length > 2 ? arguments[2] : undefined
+ , count = Math.min((end === undefined ? len : toIndex(end, len)) - from, len - to)
+ , inc = 1;
+ if(from < to && to < from + count){
+ inc = -1;
+ from += count - 1;
+ to += count - 1;
+ }
+ while(count-- > 0){
+ if(from in O)O[to] = O[from];
+ else delete O[to];
+ to += inc;
+ from += inc;
+ } return O;
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_array-fill.js b/node_modules/babel-register/node_modules/core-js/library/modules/_array-fill.js
new file mode 100644
index 0000000..b21bb7e
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_array-fill.js
@@ -0,0 +1,15 @@
+// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)
+'use strict';
+var toObject = require('./_to-object')
+ , toIndex = require('./_to-index')
+ , toLength = require('./_to-length');
+module.exports = function fill(value /*, start = 0, end = @length */){
+ var O = toObject(this)
+ , length = toLength(O.length)
+ , aLen = arguments.length
+ , index = toIndex(aLen > 1 ? arguments[1] : undefined, length)
+ , end = aLen > 2 ? arguments[2] : undefined
+ , endPos = end === undefined ? length : toIndex(end, length);
+ while(endPos > index)O[index++] = value;
+ return O;
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_array-from-iterable.js b/node_modules/babel-register/node_modules/core-js/library/modules/_array-from-iterable.js
new file mode 100644
index 0000000..b5c454f
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_array-from-iterable.js
@@ -0,0 +1,7 @@
+var forOf = require('./_for-of');
+
+module.exports = function(iter, ITERATOR){
+ var result = [];
+ forOf(iter, false, result.push, result, ITERATOR);
+ return result;
+};
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_array-includes.js b/node_modules/babel-register/node_modules/core-js/library/modules/_array-includes.js
new file mode 100644
index 0000000..ab8c9d3
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_array-includes.js
@@ -0,0 +1,21 @@
+// false -> Array#indexOf
+// true -> Array#includes
+var toIObject = require('./_to-iobject')
+ , toLength = require('./_to-length')
+ , toIndex = require('./_to-index');
+module.exports = function(IS_INCLUDES){
+ return function($this, el, fromIndex){
+ var O = toIObject($this)
+ , length = toLength(O.length)
+ , index = toIndex(fromIndex, length)
+ , value;
+ // Array#includes uses SameValueZero equality algorithm
+ if(IS_INCLUDES && el != el)while(length > index){
+ value = O[index++];
+ if(value != value)return true;
+ // Array#toIndex ignores holes, Array#includes - not
+ } else for(;length > index; index++)if(IS_INCLUDES || index in O){
+ if(O[index] === el)return IS_INCLUDES || index;
+ } return !IS_INCLUDES && -1;
+ };
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_array-methods.js b/node_modules/babel-register/node_modules/core-js/library/modules/_array-methods.js
new file mode 100644
index 0000000..8ffbe11
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_array-methods.js
@@ -0,0 +1,44 @@
+// 0 -> Array#forEach
+// 1 -> Array#map
+// 2 -> Array#filter
+// 3 -> Array#some
+// 4 -> Array#every
+// 5 -> Array#find
+// 6 -> Array#findIndex
+var ctx = require('./_ctx')
+ , IObject = require('./_iobject')
+ , toObject = require('./_to-object')
+ , toLength = require('./_to-length')
+ , asc = require('./_array-species-create');
+module.exports = function(TYPE, $create){
+ var IS_MAP = TYPE == 1
+ , IS_FILTER = TYPE == 2
+ , IS_SOME = TYPE == 3
+ , IS_EVERY = TYPE == 4
+ , IS_FIND_INDEX = TYPE == 6
+ , NO_HOLES = TYPE == 5 || IS_FIND_INDEX
+ , create = $create || asc;
+ return function($this, callbackfn, that){
+ var O = toObject($this)
+ , self = IObject(O)
+ , f = ctx(callbackfn, that, 3)
+ , length = toLength(self.length)
+ , index = 0
+ , result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined
+ , val, res;
+ for(;length > index; index++)if(NO_HOLES || index in self){
+ val = self[index];
+ res = f(val, index, O);
+ if(TYPE){
+ if(IS_MAP)result[index] = res; // map
+ else if(res)switch(TYPE){
+ case 3: return true; // some
+ case 5: return val; // find
+ case 6: return index; // findIndex
+ case 2: result.push(val); // filter
+ } else if(IS_EVERY)return false; // every
+ }
+ }
+ return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;
+ };
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_array-reduce.js b/node_modules/babel-register/node_modules/core-js/library/modules/_array-reduce.js
new file mode 100644
index 0000000..22101b7
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_array-reduce.js
@@ -0,0 +1,28 @@
+var aFunction = require('./_a-function')
+ , toObject = require('./_to-object')
+ , IObject = require('./_iobject')
+ , toLength = require('./_to-length');
+
+module.exports = function(that, callbackfn, aLen, memo, isRight){
+ aFunction(callbackfn);
+ var O = toObject(that)
+ , self = IObject(O)
+ , length = toLength(O.length)
+ , index = isRight ? length - 1 : 0
+ , i = isRight ? -1 : 1;
+ if(aLen < 2)for(;;){
+ if(index in self){
+ memo = self[index];
+ index += i;
+ break;
+ }
+ index += i;
+ if(isRight ? index < 0 : length <= index){
+ throw TypeError('Reduce of empty array with no initial value');
+ }
+ }
+ for(;isRight ? index >= 0 : length > index; index += i)if(index in self){
+ memo = callbackfn(memo, self[index], index, O);
+ }
+ return memo;
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_array-species-create.js b/node_modules/babel-register/node_modules/core-js/library/modules/_array-species-create.js
new file mode 100644
index 0000000..a2ee3fe
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_array-species-create.js
@@ -0,0 +1,16 @@
+// 9.4.2.3 ArraySpeciesCreate(originalArray, length)
+var isObject = require('./_is-object')
+ , isArray = require('./_is-array')
+ , SPECIES = require('./_wks')('species');
+module.exports = function(original, length){
+ var C;
+ if(isArray(original)){
+ C = original.constructor;
+ // cross-realm fallback
+ if(typeof C == 'function' && (C === Array || isArray(C.prototype)))C = undefined;
+ if(isObject(C)){
+ C = C[SPECIES];
+ if(C === null)C = undefined;
+ }
+ } return new (C === undefined ? Array : C)(length);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_bind.js b/node_modules/babel-register/node_modules/core-js/library/modules/_bind.js
new file mode 100644
index 0000000..1f7b017
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_bind.js
@@ -0,0 +1,24 @@
+'use strict';
+var aFunction = require('./_a-function')
+ , isObject = require('./_is-object')
+ , invoke = require('./_invoke')
+ , arraySlice = [].slice
+ , factories = {};
+
+var construct = function(F, len, args){
+ if(!(len in factories)){
+ for(var n = [], i = 0; i < len; i++)n[i] = 'a[' + i + ']';
+ factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')');
+ } return factories[len](F, args);
+};
+
+module.exports = Function.bind || function bind(that /*, args... */){
+ var fn = aFunction(this)
+ , partArgs = arraySlice.call(arguments, 1);
+ var bound = function(/* args... */){
+ var args = partArgs.concat(arraySlice.call(arguments));
+ return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that);
+ };
+ if(isObject(fn.prototype))bound.prototype = fn.prototype;
+ return bound;
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_classof.js b/node_modules/babel-register/node_modules/core-js/library/modules/_classof.js
new file mode 100644
index 0000000..dab3a80
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_classof.js
@@ -0,0 +1,23 @@
+// getting tag from 19.1.3.6 Object.prototype.toString()
+var cof = require('./_cof')
+ , TAG = require('./_wks')('toStringTag')
+ // ES3 wrong here
+ , ARG = cof(function(){ return arguments; }()) == 'Arguments';
+
+// fallback for IE11 Script Access Denied error
+var tryGet = function(it, key){
+ try {
+ return it[key];
+ } catch(e){ /* empty */ }
+};
+
+module.exports = function(it){
+ var O, T, B;
+ return it === undefined ? 'Undefined' : it === null ? 'Null'
+ // @@toStringTag case
+ : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T
+ // builtinTag case
+ : ARG ? cof(O)
+ // ES3 arguments fallback
+ : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_cof.js b/node_modules/babel-register/node_modules/core-js/library/modules/_cof.js
new file mode 100644
index 0000000..1dd2779
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_cof.js
@@ -0,0 +1,5 @@
+var toString = {}.toString;
+
+module.exports = function(it){
+ return toString.call(it).slice(8, -1);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_collection-strong.js b/node_modules/babel-register/node_modules/core-js/library/modules/_collection-strong.js
new file mode 100644
index 0000000..82baaa4
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_collection-strong.js
@@ -0,0 +1,143 @@
+'use strict';
+var dP = require('./_object-dp').f
+ , create = require('./_object-create')
+ , hide = require('./_hide')
+ , redefineAll = require('./_redefine-all')
+ , ctx = require('./_ctx')
+ , anInstance = require('./_an-instance')
+ , defined = require('./_defined')
+ , forOf = require('./_for-of')
+ , $iterDefine = require('./_iter-define')
+ , step = require('./_iter-step')
+ , setSpecies = require('./_set-species')
+ , DESCRIPTORS = require('./_descriptors')
+ , fastKey = require('./_meta').fastKey
+ , SIZE = DESCRIPTORS ? '_s' : 'size';
+
+var getEntry = function(that, key){
+ // fast case
+ var index = fastKey(key), entry;
+ if(index !== 'F')return that._i[index];
+ // frozen object case
+ for(entry = that._f; entry; entry = entry.n){
+ if(entry.k == key)return entry;
+ }
+};
+
+module.exports = {
+ getConstructor: function(wrapper, NAME, IS_MAP, ADDER){
+ var C = wrapper(function(that, iterable){
+ anInstance(that, C, NAME, '_i');
+ that._i = create(null); // index
+ that._f = undefined; // first entry
+ that._l = undefined; // last entry
+ that[SIZE] = 0; // size
+ if(iterable != undefined)forOf(iterable, IS_MAP, that[ADDER], that);
+ });
+ redefineAll(C.prototype, {
+ // 23.1.3.1 Map.prototype.clear()
+ // 23.2.3.2 Set.prototype.clear()
+ clear: function clear(){
+ for(var that = this, data = that._i, entry = that._f; entry; entry = entry.n){
+ entry.r = true;
+ if(entry.p)entry.p = entry.p.n = undefined;
+ delete data[entry.i];
+ }
+ that._f = that._l = undefined;
+ that[SIZE] = 0;
+ },
+ // 23.1.3.3 Map.prototype.delete(key)
+ // 23.2.3.4 Set.prototype.delete(value)
+ 'delete': function(key){
+ var that = this
+ , entry = getEntry(that, key);
+ if(entry){
+ var next = entry.n
+ , prev = entry.p;
+ delete that._i[entry.i];
+ entry.r = true;
+ if(prev)prev.n = next;
+ if(next)next.p = prev;
+ if(that._f == entry)that._f = next;
+ if(that._l == entry)that._l = prev;
+ that[SIZE]--;
+ } return !!entry;
+ },
+ // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)
+ // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)
+ forEach: function forEach(callbackfn /*, that = undefined */){
+ anInstance(this, C, 'forEach');
+ var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3)
+ , entry;
+ while(entry = entry ? entry.n : this._f){
+ f(entry.v, entry.k, this);
+ // revert to the last existing entry
+ while(entry && entry.r)entry = entry.p;
+ }
+ },
+ // 23.1.3.7 Map.prototype.has(key)
+ // 23.2.3.7 Set.prototype.has(value)
+ has: function has(key){
+ return !!getEntry(this, key);
+ }
+ });
+ if(DESCRIPTORS)dP(C.prototype, 'size', {
+ get: function(){
+ return defined(this[SIZE]);
+ }
+ });
+ return C;
+ },
+ def: function(that, key, value){
+ var entry = getEntry(that, key)
+ , prev, index;
+ // change existing entry
+ if(entry){
+ entry.v = value;
+ // create new entry
+ } else {
+ that._l = entry = {
+ i: index = fastKey(key, true), // <- index
+ k: key, // <- key
+ v: value, // <- value
+ p: prev = that._l, // <- previous entry
+ n: undefined, // <- next entry
+ r: false // <- removed
+ };
+ if(!that._f)that._f = entry;
+ if(prev)prev.n = entry;
+ that[SIZE]++;
+ // add to index
+ if(index !== 'F')that._i[index] = entry;
+ } return that;
+ },
+ getEntry: getEntry,
+ setStrong: function(C, NAME, IS_MAP){
+ // add .keys, .values, .entries, [@@iterator]
+ // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11
+ $iterDefine(C, NAME, function(iterated, kind){
+ this._t = iterated; // target
+ this._k = kind; // kind
+ this._l = undefined; // previous
+ }, function(){
+ var that = this
+ , kind = that._k
+ , entry = that._l;
+ // revert to the last existing entry
+ while(entry && entry.r)entry = entry.p;
+ // get next entry
+ if(!that._t || !(that._l = entry = entry ? entry.n : that._t._f)){
+ // or finish the iteration
+ that._t = undefined;
+ return step(1);
+ }
+ // return step by kind
+ if(kind == 'keys' )return step(0, entry.k);
+ if(kind == 'values')return step(0, entry.v);
+ return step(0, [entry.k, entry.v]);
+ }, IS_MAP ? 'entries' : 'values' , !IS_MAP, true);
+
+ // add [@@species], 23.1.2.2, 23.2.2.2
+ setSpecies(NAME);
+ }
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_collection-to-json.js b/node_modules/babel-register/node_modules/core-js/library/modules/_collection-to-json.js
new file mode 100644
index 0000000..ce0282f
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_collection-to-json.js
@@ -0,0 +1,9 @@
+// https://github.com/DavidBruant/Map-Set.prototype.toJSON
+var classof = require('./_classof')
+ , from = require('./_array-from-iterable');
+module.exports = function(NAME){
+ return function toJSON(){
+ if(classof(this) != NAME)throw TypeError(NAME + "#toJSON isn't generic");
+ return from(this);
+ };
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_collection-weak.js b/node_modules/babel-register/node_modules/core-js/library/modules/_collection-weak.js
new file mode 100644
index 0000000..a8597e6
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_collection-weak.js
@@ -0,0 +1,83 @@
+'use strict';
+var redefineAll = require('./_redefine-all')
+ , getWeak = require('./_meta').getWeak
+ , anObject = require('./_an-object')
+ , isObject = require('./_is-object')
+ , anInstance = require('./_an-instance')
+ , forOf = require('./_for-of')
+ , createArrayMethod = require('./_array-methods')
+ , $has = require('./_has')
+ , arrayFind = createArrayMethod(5)
+ , arrayFindIndex = createArrayMethod(6)
+ , id = 0;
+
+// fallback for uncaught frozen keys
+var uncaughtFrozenStore = function(that){
+ return that._l || (that._l = new UncaughtFrozenStore);
+};
+var UncaughtFrozenStore = function(){
+ this.a = [];
+};
+var findUncaughtFrozen = function(store, key){
+ return arrayFind(store.a, function(it){
+ return it[0] === key;
+ });
+};
+UncaughtFrozenStore.prototype = {
+ get: function(key){
+ var entry = findUncaughtFrozen(this, key);
+ if(entry)return entry[1];
+ },
+ has: function(key){
+ return !!findUncaughtFrozen(this, key);
+ },
+ set: function(key, value){
+ var entry = findUncaughtFrozen(this, key);
+ if(entry)entry[1] = value;
+ else this.a.push([key, value]);
+ },
+ 'delete': function(key){
+ var index = arrayFindIndex(this.a, function(it){
+ return it[0] === key;
+ });
+ if(~index)this.a.splice(index, 1);
+ return !!~index;
+ }
+};
+
+module.exports = {
+ getConstructor: function(wrapper, NAME, IS_MAP, ADDER){
+ var C = wrapper(function(that, iterable){
+ anInstance(that, C, NAME, '_i');
+ that._i = id++; // collection id
+ that._l = undefined; // leak store for uncaught frozen objects
+ if(iterable != undefined)forOf(iterable, IS_MAP, that[ADDER], that);
+ });
+ redefineAll(C.prototype, {
+ // 23.3.3.2 WeakMap.prototype.delete(key)
+ // 23.4.3.3 WeakSet.prototype.delete(value)
+ 'delete': function(key){
+ if(!isObject(key))return false;
+ var data = getWeak(key);
+ if(data === true)return uncaughtFrozenStore(this)['delete'](key);
+ return data && $has(data, this._i) && delete data[this._i];
+ },
+ // 23.3.3.4 WeakMap.prototype.has(key)
+ // 23.4.3.4 WeakSet.prototype.has(value)
+ has: function has(key){
+ if(!isObject(key))return false;
+ var data = getWeak(key);
+ if(data === true)return uncaughtFrozenStore(this).has(key);
+ return data && $has(data, this._i);
+ }
+ });
+ return C;
+ },
+ def: function(that, key, value){
+ var data = getWeak(anObject(key), true);
+ if(data === true)uncaughtFrozenStore(that).set(key, value);
+ else data[that._i] = value;
+ return that;
+ },
+ ufstore: uncaughtFrozenStore
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_collection.js b/node_modules/babel-register/node_modules/core-js/library/modules/_collection.js
new file mode 100644
index 0000000..0bdd7fc
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_collection.js
@@ -0,0 +1,59 @@
+'use strict';
+var global = require('./_global')
+ , $export = require('./_export')
+ , meta = require('./_meta')
+ , fails = require('./_fails')
+ , hide = require('./_hide')
+ , redefineAll = require('./_redefine-all')
+ , forOf = require('./_for-of')
+ , anInstance = require('./_an-instance')
+ , isObject = require('./_is-object')
+ , setToStringTag = require('./_set-to-string-tag')
+ , dP = require('./_object-dp').f
+ , each = require('./_array-methods')(0)
+ , DESCRIPTORS = require('./_descriptors');
+
+module.exports = function(NAME, wrapper, methods, common, IS_MAP, IS_WEAK){
+ var Base = global[NAME]
+ , C = Base
+ , ADDER = IS_MAP ? 'set' : 'add'
+ , proto = C && C.prototype
+ , O = {};
+ if(!DESCRIPTORS || typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function(){
+ new C().entries().next();
+ }))){
+ // create collection constructor
+ C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);
+ redefineAll(C.prototype, methods);
+ meta.NEED = true;
+ } else {
+ C = wrapper(function(target, iterable){
+ anInstance(target, C, NAME, '_c');
+ target._c = new Base;
+ if(iterable != undefined)forOf(iterable, IS_MAP, target[ADDER], target);
+ });
+ each('add,clear,delete,forEach,get,has,set,keys,values,entries,toJSON'.split(','),function(KEY){
+ var IS_ADDER = KEY == 'add' || KEY == 'set';
+ if(KEY in proto && !(IS_WEAK && KEY == 'clear'))hide(C.prototype, KEY, function(a, b){
+ anInstance(this, C, KEY);
+ if(!IS_ADDER && IS_WEAK && !isObject(a))return KEY == 'get' ? undefined : false;
+ var result = this._c[KEY](a === 0 ? 0 : a, b);
+ return IS_ADDER ? this : result;
+ });
+ });
+ if('size' in proto)dP(C.prototype, 'size', {
+ get: function(){
+ return this._c.size;
+ }
+ });
+ }
+
+ setToStringTag(C, NAME);
+
+ O[NAME] = C;
+ $export($export.G + $export.W + $export.F, O);
+
+ if(!IS_WEAK)common.setStrong(C, NAME, IS_MAP);
+
+ return C;
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_core.js b/node_modules/babel-register/node_modules/core-js/library/modules/_core.js
new file mode 100644
index 0000000..55d5737
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_core.js
@@ -0,0 +1,2 @@
+var core = module.exports = {version: '2.2.0'};
+if(typeof __e == 'number')__e = core; // eslint-disable-line no-undef
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_ctx.js b/node_modules/babel-register/node_modules/core-js/library/modules/_ctx.js
new file mode 100644
index 0000000..b52d85f
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_ctx.js
@@ -0,0 +1,20 @@
+// optional / simple context binding
+var aFunction = require('./_a-function');
+module.exports = function(fn, that, length){
+ aFunction(fn);
+ if(that === undefined)return fn;
+ switch(length){
+ case 1: return function(a){
+ return fn.call(that, a);
+ };
+ case 2: return function(a, b){
+ return fn.call(that, a, b);
+ };
+ case 3: return function(a, b, c){
+ return fn.call(that, a, b, c);
+ };
+ }
+ return function(/* ...args */){
+ return fn.apply(that, arguments);
+ };
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_date-to-primitive.js b/node_modules/babel-register/node_modules/core-js/library/modules/_date-to-primitive.js
new file mode 100644
index 0000000..8c09e53
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_date-to-primitive.js
@@ -0,0 +1,9 @@
+'use strict';
+var anObject = require('./_an-object')
+ , toPrimitive = require('./_to-primitive')
+ , NUMBER = 'number';
+
+module.exports = function(hint){
+ if(hint !== 'string' && hint !== NUMBER && hint !== 'default')throw TypeError('Incorrect hint');
+ return toPrimitive(anObject(this), hint != NUMBER);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_defined.js b/node_modules/babel-register/node_modules/core-js/library/modules/_defined.js
new file mode 100644
index 0000000..cfa476b
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_defined.js
@@ -0,0 +1,5 @@
+// 7.2.1 RequireObjectCoercible(argument)
+module.exports = function(it){
+ if(it == undefined)throw TypeError("Can't call method on " + it);
+ return it;
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_descriptors.js b/node_modules/babel-register/node_modules/core-js/library/modules/_descriptors.js
new file mode 100644
index 0000000..6ccb7ee
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_descriptors.js
@@ -0,0 +1,4 @@
+// Thank's IE8 for his funny defineProperty
+module.exports = !require('./_fails')(function(){
+ return Object.defineProperty({}, 'a', {get: function(){ return 7; }}).a != 7;
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_dom-create.js b/node_modules/babel-register/node_modules/core-js/library/modules/_dom-create.js
new file mode 100644
index 0000000..909b5ff
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_dom-create.js
@@ -0,0 +1,7 @@
+var isObject = require('./_is-object')
+ , document = require('./_global').document
+ // in old IE typeof document.createElement is 'object'
+ , is = isObject(document) && isObject(document.createElement);
+module.exports = function(it){
+ return is ? document.createElement(it) : {};
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_entry-virtual.js b/node_modules/babel-register/node_modules/core-js/library/modules/_entry-virtual.js
new file mode 100644
index 0000000..0ec6127
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_entry-virtual.js
@@ -0,0 +1,5 @@
+var core = require('./_core');
+module.exports = function(CONSTRUCTOR){
+ var C = core[CONSTRUCTOR];
+ return (C.virtual || C.prototype);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_enum-bug-keys.js b/node_modules/babel-register/node_modules/core-js/library/modules/_enum-bug-keys.js
new file mode 100644
index 0000000..e0cfa29
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_enum-bug-keys.js
@@ -0,0 +1,4 @@
+// IE 8- don't enum bug keys
+module.exports = (
+ 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'
+).split(',');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_enum-keys.js b/node_modules/babel-register/node_modules/core-js/library/modules/_enum-keys.js
new file mode 100644
index 0000000..3bf8069
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_enum-keys.js
@@ -0,0 +1,15 @@
+// all enumerable object keys, includes symbols
+var getKeys = require('./_object-keys')
+ , gOPS = require('./_object-gops')
+ , pIE = require('./_object-pie');
+module.exports = function(it){
+ var result = getKeys(it)
+ , getSymbols = gOPS.f;
+ if(getSymbols){
+ var symbols = getSymbols(it)
+ , isEnum = pIE.f
+ , i = 0
+ , key;
+ while(symbols.length > i)if(isEnum.call(it, key = symbols[i++]))result.push(key);
+ } return result;
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_export.js b/node_modules/babel-register/node_modules/core-js/library/modules/_export.js
new file mode 100644
index 0000000..dc084b4
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_export.js
@@ -0,0 +1,61 @@
+var global = require('./_global')
+ , core = require('./_core')
+ , ctx = require('./_ctx')
+ , hide = require('./_hide')
+ , PROTOTYPE = 'prototype';
+
+var $export = function(type, name, source){
+ var IS_FORCED = type & $export.F
+ , IS_GLOBAL = type & $export.G
+ , IS_STATIC = type & $export.S
+ , IS_PROTO = type & $export.P
+ , IS_BIND = type & $export.B
+ , IS_WRAP = type & $export.W
+ , exports = IS_GLOBAL ? core : core[name] || (core[name] = {})
+ , expProto = exports[PROTOTYPE]
+ , target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE]
+ , key, own, out;
+ if(IS_GLOBAL)source = name;
+ for(key in source){
+ // contains in native
+ own = !IS_FORCED && target && target[key] !== undefined;
+ if(own && key in exports)continue;
+ // export native or passed
+ out = own ? target[key] : source[key];
+ // prevent global pollution for namespaces
+ exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]
+ // bind timers to global for call from export context
+ : IS_BIND && own ? ctx(out, global)
+ // wrap global constructors for prevent change them in library
+ : IS_WRAP && target[key] == out ? (function(C){
+ var F = function(a, b, c){
+ if(this instanceof C){
+ switch(arguments.length){
+ case 0: return new C;
+ case 1: return new C(a);
+ case 2: return new C(a, b);
+ } return new C(a, b, c);
+ } return C.apply(this, arguments);
+ };
+ F[PROTOTYPE] = C[PROTOTYPE];
+ return F;
+ // make static versions for prototype methods
+ })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;
+ // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%
+ if(IS_PROTO){
+ (exports.virtual || (exports.virtual = {}))[key] = out;
+ // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%
+ if(type & $export.R && expProto && !expProto[key])hide(expProto, key, out);
+ }
+ }
+};
+// type bitmap
+$export.F = 1; // forced
+$export.G = 2; // global
+$export.S = 4; // static
+$export.P = 8; // proto
+$export.B = 16; // bind
+$export.W = 32; // wrap
+$export.U = 64; // safe
+$export.R = 128; // real proto method for `library`
+module.exports = $export;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_fails-is-regexp.js b/node_modules/babel-register/node_modules/core-js/library/modules/_fails-is-regexp.js
new file mode 100644
index 0000000..130436b
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_fails-is-regexp.js
@@ -0,0 +1,12 @@
+var MATCH = require('./_wks')('match');
+module.exports = function(KEY){
+ var re = /./;
+ try {
+ '/./'[KEY](re);
+ } catch(e){
+ try {
+ re[MATCH] = false;
+ return !'/./'[KEY](re);
+ } catch(f){ /* empty */ }
+ } return true;
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_fails.js b/node_modules/babel-register/node_modules/core-js/library/modules/_fails.js
new file mode 100644
index 0000000..184e5ea
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_fails.js
@@ -0,0 +1,7 @@
+module.exports = function(exec){
+ try {
+ return !!exec();
+ } catch(e){
+ return true;
+ }
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_fix-re-wks.js b/node_modules/babel-register/node_modules/core-js/library/modules/_fix-re-wks.js
new file mode 100644
index 0000000..d29368c
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_fix-re-wks.js
@@ -0,0 +1,28 @@
+'use strict';
+var hide = require('./_hide')
+ , redefine = require('./_redefine')
+ , fails = require('./_fails')
+ , defined = require('./_defined')
+ , wks = require('./_wks');
+
+module.exports = function(KEY, length, exec){
+ var SYMBOL = wks(KEY)
+ , fns = exec(defined, SYMBOL, ''[KEY])
+ , strfn = fns[0]
+ , rxfn = fns[1];
+ if(fails(function(){
+ var O = {};
+ O[SYMBOL] = function(){ return 7; };
+ return ''[KEY](O) != 7;
+ })){
+ redefine(String.prototype, KEY, strfn);
+ hide(RegExp.prototype, SYMBOL, length == 2
+ // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)
+ // 21.2.5.11 RegExp.prototype[@@split](string, limit)
+ ? function(string, arg){ return rxfn.call(string, this, arg); }
+ // 21.2.5.6 RegExp.prototype[@@match](string)
+ // 21.2.5.9 RegExp.prototype[@@search](string)
+ : function(string){ return rxfn.call(string, this); }
+ );
+ }
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_flags.js b/node_modules/babel-register/node_modules/core-js/library/modules/_flags.js
new file mode 100644
index 0000000..054f908
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_flags.js
@@ -0,0 +1,13 @@
+'use strict';
+// 21.2.5.3 get RegExp.prototype.flags
+var anObject = require('./_an-object');
+module.exports = function(){
+ var that = anObject(this)
+ , result = '';
+ if(that.global) result += 'g';
+ if(that.ignoreCase) result += 'i';
+ if(that.multiline) result += 'm';
+ if(that.unicode) result += 'u';
+ if(that.sticky) result += 'y';
+ return result;
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_for-of.js b/node_modules/babel-register/node_modules/core-js/library/modules/_for-of.js
new file mode 100644
index 0000000..c8e1b74
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_for-of.js
@@ -0,0 +1,19 @@
+var ctx = require('./_ctx')
+ , call = require('./_iter-call')
+ , isArrayIter = require('./_is-array-iter')
+ , anObject = require('./_an-object')
+ , toLength = require('./_to-length')
+ , getIterFn = require('./core.get-iterator-method');
+module.exports = function(iterable, entries, fn, that, ITERATOR){
+ var iterFn = ITERATOR ? function(){ return iterable; } : getIterFn(iterable)
+ , f = ctx(fn, that, entries ? 2 : 1)
+ , index = 0
+ , length, step, iterator;
+ if(typeof iterFn != 'function')throw TypeError(iterable + ' is not iterable!');
+ // fast case for arrays with default iterator
+ if(isArrayIter(iterFn))for(length = toLength(iterable.length); length > index; index++){
+ entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);
+ } else for(iterator = iterFn.call(iterable); !(step = iterator.next()).done; ){
+ call(iterator, f, step.value, entries);
+ }
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_global.js b/node_modules/babel-register/node_modules/core-js/library/modules/_global.js
new file mode 100644
index 0000000..df6efb4
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_global.js
@@ -0,0 +1,4 @@
+// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
+var global = module.exports = typeof window != 'undefined' && window.Math == Math
+ ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')();
+if(typeof __g == 'number')__g = global; // eslint-disable-line no-undef
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_has.js b/node_modules/babel-register/node_modules/core-js/library/modules/_has.js
new file mode 100644
index 0000000..870b40e
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_has.js
@@ -0,0 +1,4 @@
+var hasOwnProperty = {}.hasOwnProperty;
+module.exports = function(it, key){
+ return hasOwnProperty.call(it, key);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_hide.js b/node_modules/babel-register/node_modules/core-js/library/modules/_hide.js
new file mode 100644
index 0000000..4031e80
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_hide.js
@@ -0,0 +1,8 @@
+var dP = require('./_object-dp')
+ , createDesc = require('./_property-desc');
+module.exports = require('./_descriptors') ? function(object, key, value){
+ return dP.f(object, key, createDesc(1, value));
+} : function(object, key, value){
+ object[key] = value;
+ return object;
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_html.js b/node_modules/babel-register/node_modules/core-js/library/modules/_html.js
new file mode 100644
index 0000000..98f5142
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_html.js
@@ -0,0 +1 @@
+module.exports = require('./_global').document && document.documentElement;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_ie8-dom-define.js b/node_modules/babel-register/node_modules/core-js/library/modules/_ie8-dom-define.js
new file mode 100644
index 0000000..293bd4e
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_ie8-dom-define.js
@@ -0,0 +1,3 @@
+module.exports = !require('./_descriptors') && !require('./_fails')(function(){
+ return Object.defineProperty(require('./_dom-create')('div'), 'a', {get: function(){ return 7; }}).a != 7;
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_inherit-if-required.js b/node_modules/babel-register/node_modules/core-js/library/modules/_inherit-if-required.js
new file mode 100644
index 0000000..6b4ec82
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_inherit-if-required.js
@@ -0,0 +1,8 @@
+var isObject = require('./_is-object')
+ , setPrototypeOf = require('./_set-proto').set;
+module.exports = function(that, target, C){
+ var P, S = target.constructor;
+ if(S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf){
+ setPrototypeOf(that, P);
+ } return that;
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_invoke.js b/node_modules/babel-register/node_modules/core-js/library/modules/_invoke.js
new file mode 100644
index 0000000..08e307f
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_invoke.js
@@ -0,0 +1,16 @@
+// fast apply, http://jsperf.lnkit.com/fast-apply/5
+module.exports = function(fn, args, that){
+ var un = that === undefined;
+ switch(args.length){
+ case 0: return un ? fn()
+ : fn.call(that);
+ case 1: return un ? fn(args[0])
+ : fn.call(that, args[0]);
+ case 2: return un ? fn(args[0], args[1])
+ : fn.call(that, args[0], args[1]);
+ case 3: return un ? fn(args[0], args[1], args[2])
+ : fn.call(that, args[0], args[1], args[2]);
+ case 4: return un ? fn(args[0], args[1], args[2], args[3])
+ : fn.call(that, args[0], args[1], args[2], args[3]);
+ } return fn.apply(that, args);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_iobject.js b/node_modules/babel-register/node_modules/core-js/library/modules/_iobject.js
new file mode 100644
index 0000000..b58db48
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_iobject.js
@@ -0,0 +1,5 @@
+// fallback for non-array-like ES3 and non-enumerable old V8 strings
+var cof = require('./_cof');
+module.exports = Object('z').propertyIsEnumerable(0) ? Object : function(it){
+ return cof(it) == 'String' ? it.split('') : Object(it);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_is-array-iter.js b/node_modules/babel-register/node_modules/core-js/library/modules/_is-array-iter.js
new file mode 100644
index 0000000..8139d71
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_is-array-iter.js
@@ -0,0 +1,8 @@
+// check on default Array iterator
+var Iterators = require('./_iterators')
+ , ITERATOR = require('./_wks')('iterator')
+ , ArrayProto = Array.prototype;
+
+module.exports = function(it){
+ return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_is-array.js b/node_modules/babel-register/node_modules/core-js/library/modules/_is-array.js
new file mode 100644
index 0000000..b4a3a8e
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_is-array.js
@@ -0,0 +1,5 @@
+// 7.2.2 IsArray(argument)
+var cof = require('./_cof');
+module.exports = Array.isArray || function isArray(arg){
+ return cof(arg) == 'Array';
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_is-integer.js b/node_modules/babel-register/node_modules/core-js/library/modules/_is-integer.js
new file mode 100644
index 0000000..22db67e
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_is-integer.js
@@ -0,0 +1,6 @@
+// 20.1.2.3 Number.isInteger(number)
+var isObject = require('./_is-object')
+ , floor = Math.floor;
+module.exports = function isInteger(it){
+ return !isObject(it) && isFinite(it) && floor(it) === it;
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_is-object.js b/node_modules/babel-register/node_modules/core-js/library/modules/_is-object.js
new file mode 100644
index 0000000..ee694be
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_is-object.js
@@ -0,0 +1,3 @@
+module.exports = function(it){
+ return typeof it === 'object' ? it !== null : typeof it === 'function';
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_is-regexp.js b/node_modules/babel-register/node_modules/core-js/library/modules/_is-regexp.js
new file mode 100644
index 0000000..55b2c62
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_is-regexp.js
@@ -0,0 +1,8 @@
+// 7.2.8 IsRegExp(argument)
+var isObject = require('./_is-object')
+ , cof = require('./_cof')
+ , MATCH = require('./_wks')('match');
+module.exports = function(it){
+ var isRegExp;
+ return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_iter-call.js b/node_modules/babel-register/node_modules/core-js/library/modules/_iter-call.js
new file mode 100644
index 0000000..e3565ba
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_iter-call.js
@@ -0,0 +1,12 @@
+// call something on iterator step with safe closing on error
+var anObject = require('./_an-object');
+module.exports = function(iterator, fn, value, entries){
+ try {
+ return entries ? fn(anObject(value)[0], value[1]) : fn(value);
+ // 7.4.6 IteratorClose(iterator, completion)
+ } catch(e){
+ var ret = iterator['return'];
+ if(ret !== undefined)anObject(ret.call(iterator));
+ throw e;
+ }
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_iter-create.js b/node_modules/babel-register/node_modules/core-js/library/modules/_iter-create.js
new file mode 100644
index 0000000..9a9aa4f
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_iter-create.js
@@ -0,0 +1,13 @@
+'use strict';
+var create = require('./_object-create')
+ , descriptor = require('./_property-desc')
+ , setToStringTag = require('./_set-to-string-tag')
+ , IteratorPrototype = {};
+
+// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()
+require('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function(){ return this; });
+
+module.exports = function(Constructor, NAME, next){
+ Constructor.prototype = create(IteratorPrototype, {next: descriptor(1, next)});
+ setToStringTag(Constructor, NAME + ' Iterator');
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_iter-define.js b/node_modules/babel-register/node_modules/core-js/library/modules/_iter-define.js
new file mode 100644
index 0000000..f72a502
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_iter-define.js
@@ -0,0 +1,70 @@
+'use strict';
+var LIBRARY = require('./_library')
+ , $export = require('./_export')
+ , redefine = require('./_redefine')
+ , hide = require('./_hide')
+ , has = require('./_has')
+ , Iterators = require('./_iterators')
+ , $iterCreate = require('./_iter-create')
+ , setToStringTag = require('./_set-to-string-tag')
+ , getPrototypeOf = require('./_object-gpo')
+ , ITERATOR = require('./_wks')('iterator')
+ , BUGGY = !([].keys && 'next' in [].keys()) // Safari has buggy iterators w/o `next`
+ , FF_ITERATOR = '@@iterator'
+ , KEYS = 'keys'
+ , VALUES = 'values';
+
+var returnThis = function(){ return this; };
+
+module.exports = function(Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED){
+ $iterCreate(Constructor, NAME, next);
+ var getMethod = function(kind){
+ if(!BUGGY && kind in proto)return proto[kind];
+ switch(kind){
+ case KEYS: return function keys(){ return new Constructor(this, kind); };
+ case VALUES: return function values(){ return new Constructor(this, kind); };
+ } return function entries(){ return new Constructor(this, kind); };
+ };
+ var TAG = NAME + ' Iterator'
+ , DEF_VALUES = DEFAULT == VALUES
+ , VALUES_BUG = false
+ , proto = Base.prototype
+ , $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT]
+ , $default = $native || getMethod(DEFAULT)
+ , $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined
+ , $anyNative = NAME == 'Array' ? proto.entries || $native : $native
+ , methods, key, IteratorPrototype;
+ // Fix native
+ if($anyNative){
+ IteratorPrototype = getPrototypeOf($anyNative.call(new Base));
+ if(IteratorPrototype !== Object.prototype){
+ // Set @@toStringTag to native iterators
+ setToStringTag(IteratorPrototype, TAG, true);
+ // fix for some old engines
+ if(!LIBRARY && !has(IteratorPrototype, ITERATOR))hide(IteratorPrototype, ITERATOR, returnThis);
+ }
+ }
+ // fix Array#{values, @@iterator}.name in V8 / FF
+ if(DEF_VALUES && $native && $native.name !== VALUES){
+ VALUES_BUG = true;
+ $default = function values(){ return $native.call(this); };
+ }
+ // Define iterator
+ if((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])){
+ hide(proto, ITERATOR, $default);
+ }
+ // Plug for library
+ Iterators[NAME] = $default;
+ Iterators[TAG] = returnThis;
+ if(DEFAULT){
+ methods = {
+ values: DEF_VALUES ? $default : getMethod(VALUES),
+ keys: IS_SET ? $default : getMethod(KEYS),
+ entries: $entries
+ };
+ if(FORCED)for(key in methods){
+ if(!(key in proto))redefine(proto, key, methods[key]);
+ } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);
+ }
+ return methods;
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_iter-detect.js b/node_modules/babel-register/node_modules/core-js/library/modules/_iter-detect.js
new file mode 100644
index 0000000..125ad98
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_iter-detect.js
@@ -0,0 +1,21 @@
+var ITERATOR = require('./_wks')('iterator')
+ , SAFE_CLOSING = false;
+
+try {
+ var riter = [7][ITERATOR]();
+ riter['return'] = function(){ SAFE_CLOSING = true; };
+ Array.from(riter, function(){ throw 2; });
+} catch(e){ /* empty */ }
+
+module.exports = function(exec, skipClosing){
+ if(!skipClosing && !SAFE_CLOSING)return false;
+ var safe = false;
+ try {
+ var arr = [7]
+ , iter = arr[ITERATOR]();
+ iter.next = function(){ safe = true; };
+ arr[ITERATOR] = function(){ return iter; };
+ exec(arr);
+ } catch(e){ /* empty */ }
+ return safe;
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_iter-step.js b/node_modules/babel-register/node_modules/core-js/library/modules/_iter-step.js
new file mode 100644
index 0000000..6ff0dc5
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_iter-step.js
@@ -0,0 +1,3 @@
+module.exports = function(done, value){
+ return {value: value, done: !!done};
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_iterators.js b/node_modules/babel-register/node_modules/core-js/library/modules/_iterators.js
new file mode 100644
index 0000000..a099545
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_iterators.js
@@ -0,0 +1 @@
+module.exports = {};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_keyof.js b/node_modules/babel-register/node_modules/core-js/library/modules/_keyof.js
new file mode 100644
index 0000000..7b63229
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_keyof.js
@@ -0,0 +1,10 @@
+var getKeys = require('./_object-keys')
+ , toIObject = require('./_to-iobject');
+module.exports = function(object, el){
+ var O = toIObject(object)
+ , keys = getKeys(O)
+ , length = keys.length
+ , index = 0
+ , key;
+ while(length > index)if(O[key = keys[index++]] === el)return key;
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_library.js b/node_modules/babel-register/node_modules/core-js/library/modules/_library.js
new file mode 100644
index 0000000..73f737c
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_library.js
@@ -0,0 +1 @@
+module.exports = true;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_math-expm1.js b/node_modules/babel-register/node_modules/core-js/library/modules/_math-expm1.js
new file mode 100644
index 0000000..9d91be9
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_math-expm1.js
@@ -0,0 +1,4 @@
+// 20.2.2.14 Math.expm1(x)
+module.exports = Math.expm1 || function expm1(x){
+ return (x = +x) == 0 ? x : x > -1e-6 && x < 1e-6 ? x + x * x / 2 : Math.exp(x) - 1;
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_math-log1p.js b/node_modules/babel-register/node_modules/core-js/library/modules/_math-log1p.js
new file mode 100644
index 0000000..a92bf46
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_math-log1p.js
@@ -0,0 +1,4 @@
+// 20.2.2.20 Math.log1p(x)
+module.exports = Math.log1p || function log1p(x){
+ return (x = +x) > -1e-8 && x < 1e-8 ? x - x * x / 2 : Math.log(1 + x);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_math-sign.js b/node_modules/babel-register/node_modules/core-js/library/modules/_math-sign.js
new file mode 100644
index 0000000..a4848df
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_math-sign.js
@@ -0,0 +1,4 @@
+// 20.2.2.28 Math.sign(x)
+module.exports = Math.sign || function sign(x){
+ return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1;
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_meta.js b/node_modules/babel-register/node_modules/core-js/library/modules/_meta.js
new file mode 100644
index 0000000..7daca00
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_meta.js
@@ -0,0 +1,53 @@
+var META = require('./_uid')('meta')
+ , isObject = require('./_is-object')
+ , has = require('./_has')
+ , setDesc = require('./_object-dp').f
+ , id = 0;
+var isExtensible = Object.isExtensible || function(){
+ return true;
+};
+var FREEZE = !require('./_fails')(function(){
+ return isExtensible(Object.preventExtensions({}));
+});
+var setMeta = function(it){
+ setDesc(it, META, {value: {
+ i: 'O' + ++id, // object ID
+ w: {} // weak collections IDs
+ }});
+};
+var fastKey = function(it, create){
+ // return primitive with prefix
+ if(!isObject(it))return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;
+ if(!has(it, META)){
+ // can't set metadata to uncaught frozen object
+ if(!isExtensible(it))return 'F';
+ // not necessary to add metadata
+ if(!create)return 'E';
+ // add missing metadata
+ setMeta(it);
+ // return object ID
+ } return it[META].i;
+};
+var getWeak = function(it, create){
+ if(!has(it, META)){
+ // can't set metadata to uncaught frozen object
+ if(!isExtensible(it))return true;
+ // not necessary to add metadata
+ if(!create)return false;
+ // add missing metadata
+ setMeta(it);
+ // return hash weak collections IDs
+ } return it[META].w;
+};
+// add metadata on freeze-family methods calling
+var onFreeze = function(it){
+ if(FREEZE && meta.NEED && isExtensible(it) && !has(it, META))setMeta(it);
+ return it;
+};
+var meta = module.exports = {
+ KEY: META,
+ NEED: false,
+ fastKey: fastKey,
+ getWeak: getWeak,
+ onFreeze: onFreeze
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_metadata.js b/node_modules/babel-register/node_modules/core-js/library/modules/_metadata.js
new file mode 100644
index 0000000..eb5a762
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_metadata.js
@@ -0,0 +1,51 @@
+var Map = require('./es6.map')
+ , $export = require('./_export')
+ , shared = require('./_shared')('metadata')
+ , store = shared.store || (shared.store = new (require('./es6.weak-map')));
+
+var getOrCreateMetadataMap = function(target, targetKey, create){
+ var targetMetadata = store.get(target);
+ if(!targetMetadata){
+ if(!create)return undefined;
+ store.set(target, targetMetadata = new Map);
+ }
+ var keyMetadata = targetMetadata.get(targetKey);
+ if(!keyMetadata){
+ if(!create)return undefined;
+ targetMetadata.set(targetKey, keyMetadata = new Map);
+ } return keyMetadata;
+};
+var ordinaryHasOwnMetadata = function(MetadataKey, O, P){
+ var metadataMap = getOrCreateMetadataMap(O, P, false);
+ return metadataMap === undefined ? false : metadataMap.has(MetadataKey);
+};
+var ordinaryGetOwnMetadata = function(MetadataKey, O, P){
+ var metadataMap = getOrCreateMetadataMap(O, P, false);
+ return metadataMap === undefined ? undefined : metadataMap.get(MetadataKey);
+};
+var ordinaryDefineOwnMetadata = function(MetadataKey, MetadataValue, O, P){
+ getOrCreateMetadataMap(O, P, true).set(MetadataKey, MetadataValue);
+};
+var ordinaryOwnMetadataKeys = function(target, targetKey){
+ var metadataMap = getOrCreateMetadataMap(target, targetKey, false)
+ , keys = [];
+ if(metadataMap)metadataMap.forEach(function(_, key){ keys.push(key); });
+ return keys;
+};
+var toMetaKey = function(it){
+ return it === undefined || typeof it == 'symbol' ? it : String(it);
+};
+var exp = function(O){
+ $export($export.S, 'Reflect', O);
+};
+
+module.exports = {
+ store: store,
+ map: getOrCreateMetadataMap,
+ has: ordinaryHasOwnMetadata,
+ get: ordinaryGetOwnMetadata,
+ set: ordinaryDefineOwnMetadata,
+ keys: ordinaryOwnMetadataKeys,
+ key: toMetaKey,
+ exp: exp
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_microtask.js b/node_modules/babel-register/node_modules/core-js/library/modules/_microtask.js
new file mode 100644
index 0000000..99db937
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_microtask.js
@@ -0,0 +1,58 @@
+var global = require('./_global')
+ , macrotask = require('./_task').set
+ , Observer = global.MutationObserver || global.WebKitMutationObserver
+ , process = global.process
+ , Promise = global.Promise
+ , isNode = require('./_cof')(process) == 'process'
+ , head, last, notify;
+
+var flush = function(){
+ var parent, fn;
+ if(isNode && (parent = process.domain))parent.exit();
+ while(head){
+ fn = head.fn;
+ fn(); // <- currently we use it only for Promise - try / catch not required
+ head = head.next;
+ } last = undefined;
+ if(parent)parent.enter();
+};
+
+// Node.js
+if(isNode){
+ notify = function(){
+ process.nextTick(flush);
+ };
+// browsers with MutationObserver
+} else if(Observer){
+ var toggle = true
+ , node = document.createTextNode('');
+ new Observer(flush).observe(node, {characterData: true}); // eslint-disable-line no-new
+ notify = function(){
+ node.data = toggle = !toggle;
+ };
+// environments with maybe non-completely correct, but existent Promise
+} else if(Promise && Promise.resolve){
+ notify = function(){
+ Promise.resolve().then(flush);
+ };
+// for other environments - macrotask based on:
+// - setImmediate
+// - MessageChannel
+// - window.postMessag
+// - onreadystatechange
+// - setTimeout
+} else {
+ notify = function(){
+ // strange IE + webpack dev server bug - use .call(global)
+ macrotask.call(global, flush);
+ };
+}
+
+module.exports = function(fn){
+ var task = {fn: fn, next: undefined};
+ if(last)last.next = task;
+ if(!head){
+ head = task;
+ notify();
+ } last = task;
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_object-assign.js b/node_modules/babel-register/node_modules/core-js/library/modules/_object-assign.js
new file mode 100644
index 0000000..c575aba
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_object-assign.js
@@ -0,0 +1,33 @@
+'use strict';
+// 19.1.2.1 Object.assign(target, source, ...)
+var getKeys = require('./_object-keys')
+ , gOPS = require('./_object-gops')
+ , pIE = require('./_object-pie')
+ , toObject = require('./_to-object')
+ , IObject = require('./_iobject')
+ , $assign = Object.assign;
+
+// should work with symbols and should have deterministic property order (V8 bug)
+module.exports = !$assign || require('./_fails')(function(){
+ var A = {}
+ , B = {}
+ , S = Symbol()
+ , K = 'abcdefghijklmnopqrst';
+ A[S] = 7;
+ K.split('').forEach(function(k){ B[k] = k; });
+ return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;
+}) ? function assign(target, source){ // eslint-disable-line no-unused-vars
+ var T = toObject(target)
+ , aLen = arguments.length
+ , index = 1
+ , getSymbols = gOPS.f
+ , isEnum = pIE.f;
+ while(aLen > index){
+ var S = IObject(arguments[index++])
+ , keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S)
+ , length = keys.length
+ , j = 0
+ , key;
+ while(length > j)if(isEnum.call(S, key = keys[j++]))T[key] = S[key];
+ } return T;
+} : $assign;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_object-create.js b/node_modules/babel-register/node_modules/core-js/library/modules/_object-create.js
new file mode 100644
index 0000000..148566e
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_object-create.js
@@ -0,0 +1,40 @@
+// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
+var anObject = require('./_an-object')
+ , dPs = require('./_object-dps')
+ , enumBugKeys = require('./_enum-bug-keys')
+ , IE_PROTO = require('./_shared-key')('IE_PROTO')
+ , Empty = function(){ /* empty */ }
+ , PROTOTYPE = 'prototype';
+
+// Create object with fake `null` prototype: use iframe Object with cleared prototype
+var createDict = function(){
+ // Thrash, waste and sodomy: IE GC bug
+ var iframe = require('./_dom-create')('iframe')
+ , i = enumBugKeys.length
+ , gt = '>'
+ , iframeDocument;
+ iframe.style.display = 'none';
+ require('./_html').appendChild(iframe);
+ iframe.src = 'javascript:'; // eslint-disable-line no-script-url
+ // createDict = iframe.contentWindow.Object;
+ // html.removeChild(iframe);
+ iframeDocument = iframe.contentWindow.document;
+ iframeDocument.open();
+ iframeDocument.write(' i)dP.f(target, key = keys[i++], gOPD.f(mixin, key));
+ return target;
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_object-dp.js b/node_modules/babel-register/node_modules/core-js/library/modules/_object-dp.js
new file mode 100644
index 0000000..e7ca8a4
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_object-dp.js
@@ -0,0 +1,16 @@
+var anObject = require('./_an-object')
+ , IE8_DOM_DEFINE = require('./_ie8-dom-define')
+ , toPrimitive = require('./_to-primitive')
+ , dP = Object.defineProperty;
+
+exports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes){
+ anObject(O);
+ P = toPrimitive(P, true);
+ anObject(Attributes);
+ if(IE8_DOM_DEFINE)try {
+ return dP(O, P, Attributes);
+ } catch(e){ /* empty */ }
+ if('get' in Attributes || 'set' in Attributes)throw TypeError('Accessors not supported!');
+ if('value' in Attributes)O[P] = Attributes.value;
+ return O;
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_object-dps.js b/node_modules/babel-register/node_modules/core-js/library/modules/_object-dps.js
new file mode 100644
index 0000000..137ac7f
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_object-dps.js
@@ -0,0 +1,13 @@
+var dP = require('./_object-dp')
+ , anObject = require('./_an-object')
+ , getKeys = require('./_object-keys');
+
+module.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties){
+ anObject(O);
+ var keys = getKeys(Properties)
+ , length = keys.length
+ , i = 0
+ , P;
+ while(length > i)dP.f(O, P = keys[i++], Properties[P]);
+ return O;
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_object-forced-pam.js b/node_modules/babel-register/node_modules/core-js/library/modules/_object-forced-pam.js
new file mode 100644
index 0000000..537510e
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_object-forced-pam.js
@@ -0,0 +1,7 @@
+// Forced replacement prototype accessors methods
+module.exports = require('./_library')|| !require('./_fails')(function(){
+ var K = Math.random();
+ // In FF throws only define methods
+ __defineSetter__.call(null, K, function(){ /* empty */});
+ delete require('./_global')[K];
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_object-gopd.js b/node_modules/babel-register/node_modules/core-js/library/modules/_object-gopd.js
new file mode 100644
index 0000000..5817e37
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_object-gopd.js
@@ -0,0 +1,16 @@
+var pIE = require('./_object-pie')
+ , createDesc = require('./_property-desc')
+ , toIObject = require('./_to-iobject')
+ , toPrimitive = require('./_to-primitive')
+ , has = require('./_has')
+ , IE8_DOM_DEFINE = require('./_ie8-dom-define')
+ , gOPD = Object.getOwnPropertyDescriptor;
+
+exports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P){
+ O = toIObject(O);
+ P = toPrimitive(P, true);
+ if(IE8_DOM_DEFINE)try {
+ return gOPD(O, P);
+ } catch(e){ /* empty */ }
+ if(has(O, P))return createDesc(!pIE.f.call(O, P), O[P]);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_object-gopn-ext.js b/node_modules/babel-register/node_modules/core-js/library/modules/_object-gopn-ext.js
new file mode 100644
index 0000000..01ddd58
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_object-gopn-ext.js
@@ -0,0 +1,19 @@
+// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window
+var toIObject = require('./_to-iobject')
+ , gOPN = require('./_object-gopn').f
+ , toString = {}.toString;
+
+var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames
+ ? Object.getOwnPropertyNames(window) : [];
+
+var getWindowNames = function(it){
+ try {
+ return gOPN.f(it);
+ } catch(e){
+ return windowNames.slice();
+ }
+};
+
+module.exports.f = function getOwnPropertyNames(it){
+ return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_object-gopn.js b/node_modules/babel-register/node_modules/core-js/library/modules/_object-gopn.js
new file mode 100644
index 0000000..4bda664
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_object-gopn.js
@@ -0,0 +1,7 @@
+// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)
+var $keys = require('./_object-keys-internal')
+ , hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');
+
+exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O){
+ return $keys(O, hiddenKeys);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_object-gops.js b/node_modules/babel-register/node_modules/core-js/library/modules/_object-gops.js
new file mode 100644
index 0000000..8f93d76
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_object-gops.js
@@ -0,0 +1 @@
+exports.f = Object.getOwnPropertySymbols;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_object-gpo.js b/node_modules/babel-register/node_modules/core-js/library/modules/_object-gpo.js
new file mode 100644
index 0000000..aa88892
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_object-gpo.js
@@ -0,0 +1,13 @@
+// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)
+var has = require('./_has')
+ , toObject = require('./_to-object')
+ , IE_PROTO = require('./_shared-key')('IE_PROTO')
+ , ObjectProto = Object.prototype;
+
+module.exports = Object.getPrototypeOf || function(O){
+ O = toObject(O);
+ if(has(O, IE_PROTO))return O[IE_PROTO];
+ if(typeof O.constructor == 'function' && O instanceof O.constructor){
+ return O.constructor.prototype;
+ } return O instanceof Object ? ObjectProto : null;
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_object-keys-internal.js b/node_modules/babel-register/node_modules/core-js/library/modules/_object-keys-internal.js
new file mode 100644
index 0000000..612c012
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_object-keys-internal.js
@@ -0,0 +1,17 @@
+var has = require('./_has')
+ , toIObject = require('./_to-iobject')
+ , arrayIndexOf = require('./_array-includes')(false)
+ , IE_PROTO = require('./_shared-key')('IE_PROTO');
+
+module.exports = function(object, names){
+ var O = toIObject(object)
+ , i = 0
+ , result = []
+ , key;
+ for(key in O)if(key != IE_PROTO)has(O, key) && result.push(key);
+ // Don't enum bug & hidden keys
+ while(names.length > i)if(has(O, key = names[i++])){
+ ~arrayIndexOf(result, key) || result.push(key);
+ }
+ return result;
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_object-keys.js b/node_modules/babel-register/node_modules/core-js/library/modules/_object-keys.js
new file mode 100644
index 0000000..294c48b
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_object-keys.js
@@ -0,0 +1,7 @@
+// 19.1.2.14 / 15.2.3.14 Object.keys(O)
+var $keys = require('./_object-keys-internal')
+ , enumBugKeys = require('./_enum-bug-keys');
+
+module.exports = Object.keys || function keys(O){
+ return $keys(O, enumBugKeys);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_object-pie.js b/node_modules/babel-register/node_modules/core-js/library/modules/_object-pie.js
new file mode 100644
index 0000000..13479a1
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_object-pie.js
@@ -0,0 +1 @@
+exports.f = {}.propertyIsEnumerable;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_object-sap.js b/node_modules/babel-register/node_modules/core-js/library/modules/_object-sap.js
new file mode 100644
index 0000000..b76fec5
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_object-sap.js
@@ -0,0 +1,10 @@
+// most Object methods by ES6 should accept primitives
+var $export = require('./_export')
+ , core = require('./_core')
+ , fails = require('./_fails');
+module.exports = function(KEY, exec){
+ var fn = (core.Object || {})[KEY] || Object[KEY]
+ , exp = {};
+ exp[KEY] = exec(fn);
+ $export($export.S + $export.F * fails(function(){ fn(1); }), 'Object', exp);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_object-to-array.js b/node_modules/babel-register/node_modules/core-js/library/modules/_object-to-array.js
new file mode 100644
index 0000000..b6fdf05
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_object-to-array.js
@@ -0,0 +1,16 @@
+var getKeys = require('./_object-keys')
+ , toIObject = require('./_to-iobject')
+ , isEnum = require('./_object-pie').f;
+module.exports = function(isEntries){
+ return function(it){
+ var O = toIObject(it)
+ , keys = getKeys(O)
+ , length = keys.length
+ , i = 0
+ , result = []
+ , key;
+ while(length > i)if(isEnum.call(O, key = keys[i++])){
+ result.push(isEntries ? [key, O[key]] : O[key]);
+ } return result;
+ };
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_own-keys.js b/node_modules/babel-register/node_modules/core-js/library/modules/_own-keys.js
new file mode 100644
index 0000000..045ce3d
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_own-keys.js
@@ -0,0 +1,10 @@
+// all object keys, includes non-enumerable and symbols
+var gOPN = require('./_object-gopn')
+ , gOPS = require('./_object-gops')
+ , anObject = require('./_an-object')
+ , Reflect = require('./_global').Reflect;
+module.exports = Reflect && Reflect.ownKeys || function ownKeys(it){
+ var keys = gOPN.f(anObject(it))
+ , getSymbols = gOPS.f;
+ return getSymbols ? keys.concat(getSymbols(it)) : keys;
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_parse-float.js b/node_modules/babel-register/node_modules/core-js/library/modules/_parse-float.js
new file mode 100644
index 0000000..3d0e653
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_parse-float.js
@@ -0,0 +1,8 @@
+var $parseFloat = require('./_global').parseFloat
+ , $trim = require('./_string-trim').trim;
+
+module.exports = 1 / $parseFloat(require('./_string-ws') + '-0') !== -Infinity ? function parseFloat(str){
+ var string = $trim(String(str), 3)
+ , result = $parseFloat(string);
+ return result === 0 && string.charAt(0) == '-' ? -0 : result;
+} : $parseFloat;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_parse-int.js b/node_modules/babel-register/node_modules/core-js/library/modules/_parse-int.js
new file mode 100644
index 0000000..c23ffc0
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_parse-int.js
@@ -0,0 +1,9 @@
+var $parseInt = require('./_global').parseInt
+ , $trim = require('./_string-trim').trim
+ , ws = require('./_string-ws')
+ , hex = /^[\-+]?0[xX]/;
+
+module.exports = $parseInt(ws + '08') !== 8 || $parseInt(ws + '0x16') !== 22 ? function parseInt(str, radix){
+ var string = $trim(String(str), 3);
+ return $parseInt(string, (radix >>> 0) || (hex.test(string) ? 16 : 10));
+} : $parseInt;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_partial.js b/node_modules/babel-register/node_modules/core-js/library/modules/_partial.js
new file mode 100644
index 0000000..3d411b7
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_partial.js
@@ -0,0 +1,23 @@
+'use strict';
+var path = require('./_path')
+ , invoke = require('./_invoke')
+ , aFunction = require('./_a-function');
+module.exports = function(/* ...pargs */){
+ var fn = aFunction(this)
+ , length = arguments.length
+ , pargs = Array(length)
+ , i = 0
+ , _ = path._
+ , holder = false;
+ while(length > i)if((pargs[i] = arguments[i++]) === _)holder = true;
+ return function(/* ...args */){
+ var that = this
+ , aLen = arguments.length
+ , j = 0, k = 0, args;
+ if(!holder && !aLen)return invoke(fn, pargs, that);
+ args = pargs.slice();
+ if(holder)for(;length > j; j++)if(args[j] === _)args[j] = arguments[k++];
+ while(aLen > k)args.push(arguments[k++]);
+ return invoke(fn, args, that);
+ };
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_path.js b/node_modules/babel-register/node_modules/core-js/library/modules/_path.js
new file mode 100644
index 0000000..e2b878d
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_path.js
@@ -0,0 +1 @@
+module.exports = require('./_core');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_property-desc.js b/node_modules/babel-register/node_modules/core-js/library/modules/_property-desc.js
new file mode 100644
index 0000000..e3f7ab2
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_property-desc.js
@@ -0,0 +1,8 @@
+module.exports = function(bitmap, value){
+ return {
+ enumerable : !(bitmap & 1),
+ configurable: !(bitmap & 2),
+ writable : !(bitmap & 4),
+ value : value
+ };
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_redefine-all.js b/node_modules/babel-register/node_modules/core-js/library/modules/_redefine-all.js
new file mode 100644
index 0000000..beeb2ea
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_redefine-all.js
@@ -0,0 +1,7 @@
+var hide = require('./_hide');
+module.exports = function(target, src, safe){
+ for(var key in src){
+ if(safe && target[key])target[key] = src[key];
+ else hide(target, key, src[key]);
+ } return target;
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_redefine.js b/node_modules/babel-register/node_modules/core-js/library/modules/_redefine.js
new file mode 100644
index 0000000..6bd6453
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_redefine.js
@@ -0,0 +1 @@
+module.exports = require('./_hide');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_replacer.js b/node_modules/babel-register/node_modules/core-js/library/modules/_replacer.js
new file mode 100644
index 0000000..5360a3d
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_replacer.js
@@ -0,0 +1,8 @@
+module.exports = function(regExp, replace){
+ var replacer = replace === Object(replace) ? function(part){
+ return replace[part];
+ } : replace;
+ return function(it){
+ return String(it).replace(regExp, replacer);
+ };
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_same-value.js b/node_modules/babel-register/node_modules/core-js/library/modules/_same-value.js
new file mode 100644
index 0000000..8c2b8c7
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_same-value.js
@@ -0,0 +1,4 @@
+// 7.2.9 SameValue(x, y)
+module.exports = Object.is || function is(x, y){
+ return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_set-proto.js b/node_modules/babel-register/node_modules/core-js/library/modules/_set-proto.js
new file mode 100644
index 0000000..8d5dad3
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_set-proto.js
@@ -0,0 +1,25 @@
+// Works with __proto__ only. Old v8 can't work with null proto objects.
+/* eslint-disable no-proto */
+var isObject = require('./_is-object')
+ , anObject = require('./_an-object');
+var check = function(O, proto){
+ anObject(O);
+ if(!isObject(proto) && proto !== null)throw TypeError(proto + ": can't set as prototype!");
+};
+module.exports = {
+ set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line
+ function(test, buggy, set){
+ try {
+ set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);
+ set(test, []);
+ buggy = !(test instanceof Array);
+ } catch(e){ buggy = true; }
+ return function setPrototypeOf(O, proto){
+ check(O, proto);
+ if(buggy)O.__proto__ = proto;
+ else set(O, proto);
+ return O;
+ };
+ }({}, false) : undefined),
+ check: check
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_set-species.js b/node_modules/babel-register/node_modules/core-js/library/modules/_set-species.js
new file mode 100644
index 0000000..4320fa5
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_set-species.js
@@ -0,0 +1,14 @@
+'use strict';
+var global = require('./_global')
+ , core = require('./_core')
+ , dP = require('./_object-dp')
+ , DESCRIPTORS = require('./_descriptors')
+ , SPECIES = require('./_wks')('species');
+
+module.exports = function(KEY){
+ var C = typeof core[KEY] == 'function' ? core[KEY] : global[KEY];
+ if(DESCRIPTORS && C && !C[SPECIES])dP.f(C, SPECIES, {
+ configurable: true,
+ get: function(){ return this; }
+ });
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_set-to-string-tag.js b/node_modules/babel-register/node_modules/core-js/library/modules/_set-to-string-tag.js
new file mode 100644
index 0000000..ffbddda
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_set-to-string-tag.js
@@ -0,0 +1,7 @@
+var def = require('./_object-dp').f
+ , has = require('./_has')
+ , TAG = require('./_wks')('toStringTag');
+
+module.exports = function(it, tag, stat){
+ if(it && !has(it = stat ? it : it.prototype, TAG))def(it, TAG, {configurable: true, value: tag});
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_shared-key.js b/node_modules/babel-register/node_modules/core-js/library/modules/_shared-key.js
new file mode 100644
index 0000000..52814a7
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_shared-key.js
@@ -0,0 +1,5 @@
+var shared = require('./_shared')('keys')
+ , uid = require('./_uid');
+module.exports = function(key){
+ return shared[key] || (shared[key] = uid(key));
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_shared.js b/node_modules/babel-register/node_modules/core-js/library/modules/_shared.js
new file mode 100644
index 0000000..3f9e4c8
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_shared.js
@@ -0,0 +1,6 @@
+var global = require('./_global')
+ , SHARED = '__core-js_shared__'
+ , store = global[SHARED] || (global[SHARED] = {});
+module.exports = function(key){
+ return store[key] || (store[key] = {});
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_species-constructor.js b/node_modules/babel-register/node_modules/core-js/library/modules/_species-constructor.js
new file mode 100644
index 0000000..7a4d1ba
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_species-constructor.js
@@ -0,0 +1,8 @@
+// 7.3.20 SpeciesConstructor(O, defaultConstructor)
+var anObject = require('./_an-object')
+ , aFunction = require('./_a-function')
+ , SPECIES = require('./_wks')('species');
+module.exports = function(O, D){
+ var C = anObject(O).constructor, S;
+ return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_strict-method.js b/node_modules/babel-register/node_modules/core-js/library/modules/_strict-method.js
new file mode 100644
index 0000000..207bc85
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_strict-method.js
@@ -0,0 +1,7 @@
+var fails = require('./_fails');
+
+module.exports = function(method, arg){
+ return !!method && fails(function(){
+ arg ? method.call(null, function(){}, 1) : method.call(null);
+ });
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_string-at.js b/node_modules/babel-register/node_modules/core-js/library/modules/_string-at.js
new file mode 100644
index 0000000..ecc0d21
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_string-at.js
@@ -0,0 +1,17 @@
+var toInteger = require('./_to-integer')
+ , defined = require('./_defined');
+// true -> String#at
+// false -> String#codePointAt
+module.exports = function(TO_STRING){
+ return function(that, pos){
+ var s = String(defined(that))
+ , i = toInteger(pos)
+ , l = s.length
+ , a, b;
+ if(i < 0 || i >= l)return TO_STRING ? '' : undefined;
+ a = s.charCodeAt(i);
+ return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff
+ ? TO_STRING ? s.charAt(i) : a
+ : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;
+ };
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_string-context.js b/node_modules/babel-register/node_modules/core-js/library/modules/_string-context.js
new file mode 100644
index 0000000..5f51348
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_string-context.js
@@ -0,0 +1,8 @@
+// helper for String#{startsWith, endsWith, includes}
+var isRegExp = require('./_is-regexp')
+ , defined = require('./_defined');
+
+module.exports = function(that, searchString, NAME){
+ if(isRegExp(searchString))throw TypeError('String#' + NAME + " doesn't accept regex!");
+ return String(defined(that));
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_string-html.js b/node_modules/babel-register/node_modules/core-js/library/modules/_string-html.js
new file mode 100644
index 0000000..95daf81
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_string-html.js
@@ -0,0 +1,19 @@
+var $export = require('./_export')
+ , fails = require('./_fails')
+ , defined = require('./_defined')
+ , quot = /"/g;
+// B.2.3.2.1 CreateHTML(string, tag, attribute, value)
+var createHTML = function(string, tag, attribute, value) {
+ var S = String(defined(string))
+ , p1 = '<' + tag;
+ if(attribute !== '')p1 += ' ' + attribute + '="' + String(value).replace(quot, '"') + '"';
+ return p1 + '>' + S + '' + tag + '>';
+};
+module.exports = function(NAME, exec){
+ var O = {};
+ O[NAME] = exec(createHTML);
+ $export($export.P + $export.F * fails(function(){
+ var test = ''[NAME]('"');
+ return test !== test.toLowerCase() || test.split('"').length > 3;
+ }), 'String', O);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_string-pad.js b/node_modules/babel-register/node_modules/core-js/library/modules/_string-pad.js
new file mode 100644
index 0000000..3c4a919
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_string-pad.js
@@ -0,0 +1,17 @@
+// https://github.com/tc39/proposal-string-pad-start-end
+var toLength = require('./_to-length')
+ , repeat = require('./_string-repeat')
+ , defined = require('./_defined');
+
+module.exports = function(that, maxLength, fillString, left){
+ var S = String(defined(that))
+ , stringLength = S.length
+ , fillStr = fillString === undefined ? ' ' : String(fillString)
+ , intMaxLength = toLength(maxLength);
+ if(intMaxLength <= stringLength)return S;
+ if(fillStr == '')fillStr = ' ';
+ var fillLen = intMaxLength - stringLength
+ , stringFiller = repeat.call(fillStr, Math.ceil(fillLen / fillStr.length));
+ if(stringFiller.length > fillLen)stringFiller = stringFiller.slice(0, fillLen);
+ return left ? stringFiller + S : S + stringFiller;
+};
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_string-repeat.js b/node_modules/babel-register/node_modules/core-js/library/modules/_string-repeat.js
new file mode 100644
index 0000000..88fd3a2
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_string-repeat.js
@@ -0,0 +1,12 @@
+'use strict';
+var toInteger = require('./_to-integer')
+ , defined = require('./_defined');
+
+module.exports = function repeat(count){
+ var str = String(defined(this))
+ , res = ''
+ , n = toInteger(count);
+ if(n < 0 || n == Infinity)throw RangeError("Count can't be negative");
+ for(;n > 0; (n >>>= 1) && (str += str))if(n & 1)res += str;
+ return res;
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_string-trim.js b/node_modules/babel-register/node_modules/core-js/library/modules/_string-trim.js
new file mode 100644
index 0000000..d12de1c
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_string-trim.js
@@ -0,0 +1,30 @@
+var $export = require('./_export')
+ , defined = require('./_defined')
+ , fails = require('./_fails')
+ , spaces = require('./_string-ws')
+ , space = '[' + spaces + ']'
+ , non = '\u200b\u0085'
+ , ltrim = RegExp('^' + space + space + '*')
+ , rtrim = RegExp(space + space + '*$');
+
+var exporter = function(KEY, exec, ALIAS){
+ var exp = {};
+ var FORCE = fails(function(){
+ return !!spaces[KEY]() || non[KEY]() != non;
+ });
+ var fn = exp[KEY] = FORCE ? exec(trim) : spaces[KEY];
+ if(ALIAS)exp[ALIAS] = fn;
+ $export($export.P + $export.F * FORCE, 'String', exp);
+};
+
+// 1 -> String#trimLeft
+// 2 -> String#trimRight
+// 3 -> String#trim
+var trim = exporter.trim = function(string, TYPE){
+ string = String(defined(string));
+ if(TYPE & 1)string = string.replace(ltrim, '');
+ if(TYPE & 2)string = string.replace(rtrim, '');
+ return string;
+};
+
+module.exports = exporter;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_string-ws.js b/node_modules/babel-register/node_modules/core-js/library/modules/_string-ws.js
new file mode 100644
index 0000000..77229fb
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_string-ws.js
@@ -0,0 +1,2 @@
+module.exports = '\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003' +
+ '\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF';
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_task.js b/node_modules/babel-register/node_modules/core-js/library/modules/_task.js
new file mode 100644
index 0000000..06a73f4
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_task.js
@@ -0,0 +1,75 @@
+var ctx = require('./_ctx')
+ , invoke = require('./_invoke')
+ , html = require('./_html')
+ , cel = require('./_dom-create')
+ , global = require('./_global')
+ , process = global.process
+ , setTask = global.setImmediate
+ , clearTask = global.clearImmediate
+ , MessageChannel = global.MessageChannel
+ , counter = 0
+ , queue = {}
+ , ONREADYSTATECHANGE = 'onreadystatechange'
+ , defer, channel, port;
+var run = function(){
+ var id = +this;
+ if(queue.hasOwnProperty(id)){
+ var fn = queue[id];
+ delete queue[id];
+ fn();
+ }
+};
+var listener = function(event){
+ run.call(event.data);
+};
+// Node.js 0.9+ & IE10+ has setImmediate, otherwise:
+if(!setTask || !clearTask){
+ setTask = function setImmediate(fn){
+ var args = [], i = 1;
+ while(arguments.length > i)args.push(arguments[i++]);
+ queue[++counter] = function(){
+ invoke(typeof fn == 'function' ? fn : Function(fn), args);
+ };
+ defer(counter);
+ return counter;
+ };
+ clearTask = function clearImmediate(id){
+ delete queue[id];
+ };
+ // Node.js 0.8-
+ if(require('./_cof')(process) == 'process'){
+ defer = function(id){
+ process.nextTick(ctx(run, id, 1));
+ };
+ // Browsers with MessageChannel, includes WebWorkers
+ } else if(MessageChannel){
+ channel = new MessageChannel;
+ port = channel.port2;
+ channel.port1.onmessage = listener;
+ defer = ctx(port.postMessage, port, 1);
+ // Browsers with postMessage, skip WebWorkers
+ // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'
+ } else if(global.addEventListener && typeof postMessage == 'function' && !global.importScripts){
+ defer = function(id){
+ global.postMessage(id + '', '*');
+ };
+ global.addEventListener('message', listener, false);
+ // IE8-
+ } else if(ONREADYSTATECHANGE in cel('script')){
+ defer = function(id){
+ html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function(){
+ html.removeChild(this);
+ run.call(id);
+ };
+ };
+ // Rest old browsers
+ } else {
+ defer = function(id){
+ setTimeout(ctx(run, id, 1), 0);
+ };
+ }
+}
+module.exports = {
+ set: setTask,
+ clear: clearTask
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_to-index.js b/node_modules/babel-register/node_modules/core-js/library/modules/_to-index.js
new file mode 100644
index 0000000..4d380ce
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_to-index.js
@@ -0,0 +1,7 @@
+var toInteger = require('./_to-integer')
+ , max = Math.max
+ , min = Math.min;
+module.exports = function(index, length){
+ index = toInteger(index);
+ return index < 0 ? max(index + length, 0) : min(index, length);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_to-integer.js b/node_modules/babel-register/node_modules/core-js/library/modules/_to-integer.js
new file mode 100644
index 0000000..f63baaf
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_to-integer.js
@@ -0,0 +1,6 @@
+// 7.1.4 ToInteger
+var ceil = Math.ceil
+ , floor = Math.floor;
+module.exports = function(it){
+ return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_to-iobject.js b/node_modules/babel-register/node_modules/core-js/library/modules/_to-iobject.js
new file mode 100644
index 0000000..4eb4346
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_to-iobject.js
@@ -0,0 +1,6 @@
+// to indexed object, toObject with fallback for non-array-like ES3 strings
+var IObject = require('./_iobject')
+ , defined = require('./_defined');
+module.exports = function(it){
+ return IObject(defined(it));
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_to-length.js b/node_modules/babel-register/node_modules/core-js/library/modules/_to-length.js
new file mode 100644
index 0000000..4099e60
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_to-length.js
@@ -0,0 +1,6 @@
+// 7.1.15 ToLength
+var toInteger = require('./_to-integer')
+ , min = Math.min;
+module.exports = function(it){
+ return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_to-object.js b/node_modules/babel-register/node_modules/core-js/library/modules/_to-object.js
new file mode 100644
index 0000000..f2c28b3
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_to-object.js
@@ -0,0 +1,5 @@
+// 7.1.13 ToObject(argument)
+var defined = require('./_defined');
+module.exports = function(it){
+ return Object(defined(it));
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_to-primitive.js b/node_modules/babel-register/node_modules/core-js/library/modules/_to-primitive.js
new file mode 100644
index 0000000..16354ee
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_to-primitive.js
@@ -0,0 +1,12 @@
+// 7.1.1 ToPrimitive(input [, PreferredType])
+var isObject = require('./_is-object');
+// instead of the ES6 spec version, we didn't implement @@toPrimitive case
+// and the second argument - flag - preferred type is a string
+module.exports = function(it, S){
+ if(!isObject(it))return it;
+ var fn, val;
+ if(S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val;
+ if(typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it)))return val;
+ if(!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val;
+ throw TypeError("Can't convert object to primitive value");
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_typed-array.js b/node_modules/babel-register/node_modules/core-js/library/modules/_typed-array.js
new file mode 100644
index 0000000..f71d59b
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_typed-array.js
@@ -0,0 +1,481 @@
+'use strict';
+if(require('./_descriptors')){
+ var LIBRARY = require('./_library')
+ , global = require('./_global')
+ , fails = require('./_fails')
+ , $export = require('./_export')
+ , $typed = require('./_typed')
+ , $buffer = require('./_typed-buffer')
+ , ctx = require('./_ctx')
+ , anInstance = require('./_an-instance')
+ , propertyDesc = require('./_property-desc')
+ , hide = require('./_hide')
+ , redefineAll = require('./_redefine-all')
+ , isInteger = require('./_is-integer')
+ , toInteger = require('./_to-integer')
+ , toLength = require('./_to-length')
+ , toIndex = require('./_to-index')
+ , toPrimitive = require('./_to-primitive')
+ , has = require('./_has')
+ , same = require('./_same-value')
+ , classof = require('./_classof')
+ , isObject = require('./_is-object')
+ , toObject = require('./_to-object')
+ , isArrayIter = require('./_is-array-iter')
+ , create = require('./_object-create')
+ , getPrototypeOf = require('./_object-gpo')
+ , gOPN = require('./_object-gopn').f
+ , isIterable = require('./core.is-iterable')
+ , getIterFn = require('./core.get-iterator-method')
+ , uid = require('./_uid')
+ , wks = require('./_wks')
+ , createArrayMethod = require('./_array-methods')
+ , createArrayIncludes = require('./_array-includes')
+ , speciesConstructor = require('./_species-constructor')
+ , ArrayIterators = require('./es6.array.iterator')
+ , Iterators = require('./_iterators')
+ , $iterDetect = require('./_iter-detect')
+ , setSpecies = require('./_set-species')
+ , arrayFill = require('./_array-fill')
+ , arrayCopyWithin = require('./_array-copy-within')
+ , $DP = require('./_object-dp')
+ , $GOPD = require('./_object-gopd')
+ , dP = $DP.f
+ , gOPD = $GOPD.f
+ , RangeError = global.RangeError
+ , TypeError = global.TypeError
+ , Uint8Array = global.Uint8Array
+ , ARRAY_BUFFER = 'ArrayBuffer'
+ , SHARED_BUFFER = 'Shared' + ARRAY_BUFFER
+ , BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT'
+ , PROTOTYPE = 'prototype'
+ , ArrayProto = Array[PROTOTYPE]
+ , $ArrayBuffer = $buffer.ArrayBuffer
+ , $DataView = $buffer.DataView
+ , arrayForEach = createArrayMethod(0)
+ , arrayFilter = createArrayMethod(2)
+ , arraySome = createArrayMethod(3)
+ , arrayEvery = createArrayMethod(4)
+ , arrayFind = createArrayMethod(5)
+ , arrayFindIndex = createArrayMethod(6)
+ , arrayIncludes = createArrayIncludes(true)
+ , arrayIndexOf = createArrayIncludes(false)
+ , arrayValues = ArrayIterators.values
+ , arrayKeys = ArrayIterators.keys
+ , arrayEntries = ArrayIterators.entries
+ , arrayLastIndexOf = ArrayProto.lastIndexOf
+ , arrayReduce = ArrayProto.reduce
+ , arrayReduceRight = ArrayProto.reduceRight
+ , arrayJoin = ArrayProto.join
+ , arraySort = ArrayProto.sort
+ , arraySlice = ArrayProto.slice
+ , arrayToString = ArrayProto.toString
+ , arrayToLocaleString = ArrayProto.toLocaleString
+ , ITERATOR = wks('iterator')
+ , TAG = wks('toStringTag')
+ , TYPED_CONSTRUCTOR = uid('typed_constructor')
+ , DEF_CONSTRUCTOR = uid('def_constructor')
+ , ALL_CONSTRUCTORS = $typed.CONSTR
+ , TYPED_ARRAY = $typed.TYPED
+ , VIEW = $typed.VIEW
+ , WRONG_LENGTH = 'Wrong length!';
+
+ var $map = createArrayMethod(1, function(O, length){
+ return allocate(speciesConstructor(O, O[DEF_CONSTRUCTOR]), length);
+ });
+
+ var LITTLE_ENDIAN = fails(function(){
+ return new Uint8Array(new Uint16Array([1]).buffer)[0] === 1;
+ });
+
+ var FORCED_SET = !!Uint8Array && !!Uint8Array[PROTOTYPE].set && fails(function(){
+ new Uint8Array(1).set({});
+ });
+
+ var strictToLength = function(it, SAME){
+ if(it === undefined)throw TypeError(WRONG_LENGTH);
+ var number = +it
+ , length = toLength(it);
+ if(SAME && !same(number, length))throw RangeError(WRONG_LENGTH);
+ return length;
+ };
+
+ var toOffset = function(it, BYTES){
+ var offset = toInteger(it);
+ if(offset < 0 || offset % BYTES)throw RangeError('Wrong offset!');
+ return offset;
+ };
+
+ var validate = function(it){
+ if(isObject(it) && TYPED_ARRAY in it)return it;
+ throw TypeError(it + ' is not a typed array!');
+ };
+
+ var allocate = function(C, length){
+ if(!(isObject(C) && TYPED_CONSTRUCTOR in C)){
+ throw TypeError('It is not a typed array constructor!');
+ } return new C(length);
+ };
+
+ var speciesFromList = function(O, list){
+ return fromList(speciesConstructor(O, O[DEF_CONSTRUCTOR]), list);
+ };
+
+ var fromList = function(C, list){
+ var index = 0
+ , length = list.length
+ , result = allocate(C, length);
+ while(length > index)result[index] = list[index++];
+ return result;
+ };
+
+ var addGetter = function(it, key, internal){
+ dP(it, key, {get: function(){ return this._d[internal]; }});
+ };
+
+ var $from = function from(source /*, mapfn, thisArg */){
+ var O = toObject(source)
+ , aLen = arguments.length
+ , mapfn = aLen > 1 ? arguments[1] : undefined
+ , mapping = mapfn !== undefined
+ , iterFn = getIterFn(O)
+ , i, length, values, result, step, iterator;
+ if(iterFn != undefined && !isArrayIter(iterFn)){
+ for(iterator = iterFn.call(O), values = [], i = 0; !(step = iterator.next()).done; i++){
+ values.push(step.value);
+ } O = values;
+ }
+ if(mapping && aLen > 2)mapfn = ctx(mapfn, arguments[2], 2);
+ for(i = 0, length = toLength(O.length), result = allocate(this, length); length > i; i++){
+ result[i] = mapping ? mapfn(O[i], i) : O[i];
+ }
+ return result;
+ };
+
+ var $of = function of(/*...items*/){
+ var index = 0
+ , length = arguments.length
+ , result = allocate(this, length);
+ while(length > index)result[index] = arguments[index++];
+ return result;
+ };
+
+ // iOS Safari 6.x fails here
+ var TO_LOCALE_BUG = !!Uint8Array && fails(function(){ arrayToLocaleString.call(new Uint8Array(1)); });
+
+ var $toLocaleString = function toLocaleString(){
+ return arrayToLocaleString.apply(TO_LOCALE_BUG ? arraySlice.call(validate(this)) : validate(this), arguments);
+ };
+
+ var proto = {
+ copyWithin: function copyWithin(target, start /*, end */){
+ return arrayCopyWithin.call(validate(this), target, start, arguments.length > 2 ? arguments[2] : undefined);
+ },
+ every: function every(callbackfn /*, thisArg */){
+ return arrayEvery(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+ },
+ fill: function fill(value /*, start, end */){ // eslint-disable-line no-unused-vars
+ return arrayFill.apply(validate(this), arguments);
+ },
+ filter: function filter(callbackfn /*, thisArg */){
+ return speciesFromList(this, arrayFilter(validate(this), callbackfn,
+ arguments.length > 1 ? arguments[1] : undefined));
+ },
+ find: function find(predicate /*, thisArg */){
+ return arrayFind(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);
+ },
+ findIndex: function findIndex(predicate /*, thisArg */){
+ return arrayFindIndex(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);
+ },
+ forEach: function forEach(callbackfn /*, thisArg */){
+ arrayForEach(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+ },
+ indexOf: function indexOf(searchElement /*, fromIndex */){
+ return arrayIndexOf(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);
+ },
+ includes: function includes(searchElement /*, fromIndex */){
+ return arrayIncludes(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);
+ },
+ join: function join(separator){ // eslint-disable-line no-unused-vars
+ return arrayJoin.apply(validate(this), arguments);
+ },
+ lastIndexOf: function lastIndexOf(searchElement /*, fromIndex */){ // eslint-disable-line no-unused-vars
+ return arrayLastIndexOf.apply(validate(this), arguments);
+ },
+ map: function map(mapfn /*, thisArg */){
+ return $map(validate(this), mapfn, arguments.length > 1 ? arguments[1] : undefined);
+ },
+ reduce: function reduce(callbackfn /*, initialValue */){ // eslint-disable-line no-unused-vars
+ return arrayReduce.apply(validate(this), arguments);
+ },
+ reduceRight: function reduceRight(callbackfn /*, initialValue */){ // eslint-disable-line no-unused-vars
+ return arrayReduceRight.apply(validate(this), arguments);
+ },
+ reverse: function reverse(){
+ var that = this
+ , length = validate(that).length
+ , middle = Math.floor(length / 2)
+ , index = 0
+ , value;
+ while(index < middle){
+ value = that[index];
+ that[index++] = that[--length];
+ that[length] = value;
+ } return that;
+ },
+ some: function some(callbackfn /*, thisArg */){
+ return arraySome(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+ },
+ sort: function sort(comparefn){
+ return arraySort.call(validate(this), comparefn);
+ },
+ subarray: function subarray(begin, end){
+ var O = validate(this)
+ , length = O.length
+ , $begin = toIndex(begin, length);
+ return new (speciesConstructor(O, O[DEF_CONSTRUCTOR]))(
+ O.buffer,
+ O.byteOffset + $begin * O.BYTES_PER_ELEMENT,
+ toLength((end === undefined ? length : toIndex(end, length)) - $begin)
+ );
+ }
+ };
+
+ var $slice = function slice(start, end){
+ return speciesFromList(this, arraySlice.call(validate(this), start, end));
+ };
+
+ var $set = function set(arrayLike /*, offset */){
+ validate(this);
+ var offset = toOffset(arguments[1], 1)
+ , length = this.length
+ , src = toObject(arrayLike)
+ , len = toLength(src.length)
+ , index = 0;
+ if(len + offset > length)throw RangeError(WRONG_LENGTH);
+ while(index < len)this[offset + index] = src[index++];
+ };
+
+ var $iterators = {
+ entries: function entries(){
+ return arrayEntries.call(validate(this));
+ },
+ keys: function keys(){
+ return arrayKeys.call(validate(this));
+ },
+ values: function values(){
+ return arrayValues.call(validate(this));
+ }
+ };
+
+ var isTAIndex = function(target, key){
+ return isObject(target)
+ && target[TYPED_ARRAY]
+ && typeof key != 'symbol'
+ && key in target
+ && String(+key) == String(key);
+ };
+ var $getDesc = function getOwnPropertyDescriptor(target, key){
+ return isTAIndex(target, key = toPrimitive(key, true))
+ ? propertyDesc(2, target[key])
+ : gOPD(target, key);
+ };
+ var $setDesc = function defineProperty(target, key, desc){
+ if(isTAIndex(target, key = toPrimitive(key, true))
+ && isObject(desc)
+ && has(desc, 'value')
+ && !has(desc, 'get')
+ && !has(desc, 'set')
+ // TODO: add validation descriptor w/o calling accessors
+ && !desc.configurable
+ && (!has(desc, 'writable') || desc.writable)
+ && (!has(desc, 'enumerable') || desc.enumerable)
+ ){
+ target[key] = desc.value;
+ return target;
+ } else return dP(target, key, desc);
+ };
+
+ if(!ALL_CONSTRUCTORS){
+ $GOPD.f = $getDesc;
+ $DP.f = $setDesc;
+ }
+
+ $export($export.S + $export.F * !ALL_CONSTRUCTORS, 'Object', {
+ getOwnPropertyDescriptor: $getDesc,
+ defineProperty: $setDesc
+ });
+
+ if(fails(function(){ arrayToString.call({}); })){
+ arrayToString = arrayToLocaleString = function toString(){
+ return arrayJoin.call(this);
+ }
+ }
+
+ var $TypedArrayPrototype$ = redefineAll({}, proto);
+ redefineAll($TypedArrayPrototype$, $iterators);
+ hide($TypedArrayPrototype$, ITERATOR, $iterators.values);
+ redefineAll($TypedArrayPrototype$, {
+ slice: $slice,
+ set: $set,
+ constructor: function(){ /* noop */ },
+ toString: arrayToString,
+ toLocaleString: $toLocaleString
+ });
+ addGetter($TypedArrayPrototype$, 'buffer', 'b');
+ addGetter($TypedArrayPrototype$, 'byteOffset', 'o');
+ addGetter($TypedArrayPrototype$, 'byteLength', 'l');
+ addGetter($TypedArrayPrototype$, 'length', 'e');
+ dP($TypedArrayPrototype$, TAG, {
+ get: function(){ return this[TYPED_ARRAY]; }
+ });
+
+ module.exports = function(KEY, BYTES, wrapper, CLAMPED){
+ CLAMPED = !!CLAMPED;
+ var NAME = KEY + (CLAMPED ? 'Clamped' : '') + 'Array'
+ , ISNT_UINT8 = NAME != 'Uint8Array'
+ , GETTER = 'get' + KEY
+ , SETTER = 'set' + KEY
+ , TypedArray = global[NAME]
+ , Base = TypedArray || {}
+ , TAC = TypedArray && getPrototypeOf(TypedArray)
+ , FORCED = !TypedArray || !$typed.ABV
+ , O = {}
+ , TypedArrayPrototype = TypedArray && TypedArray[PROTOTYPE];
+ var getter = function(that, index){
+ var data = that._d;
+ return data.v[GETTER](index * BYTES + data.o, LITTLE_ENDIAN);
+ };
+ var setter = function(that, index, value){
+ var data = that._d;
+ if(CLAMPED)value = (value = Math.round(value)) < 0 ? 0 : value > 0xff ? 0xff : value & 0xff;
+ data.v[SETTER](index * BYTES + data.o, value, LITTLE_ENDIAN);
+ };
+ var addElement = function(that, index){
+ dP(that, index, {
+ get: function(){
+ return getter(this, index);
+ },
+ set: function(value){
+ return setter(this, index, value);
+ },
+ enumerable: true
+ });
+ };
+ if(FORCED){
+ TypedArray = wrapper(function(that, data, $offset, $length){
+ anInstance(that, TypedArray, NAME, '_d');
+ var index = 0
+ , offset = 0
+ , buffer, byteLength, length, klass;
+ if(!isObject(data)){
+ length = strictToLength(data, true)
+ byteLength = length * BYTES;
+ buffer = new $ArrayBuffer(byteLength);
+ } else if(data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER){
+ buffer = data;
+ offset = toOffset($offset, BYTES);
+ var $len = data.byteLength;
+ if($length === undefined){
+ if($len % BYTES)throw RangeError(WRONG_LENGTH);
+ byteLength = $len - offset;
+ if(byteLength < 0)throw RangeError(WRONG_LENGTH);
+ } else {
+ byteLength = toLength($length) * BYTES;
+ if(byteLength + offset > $len)throw RangeError(WRONG_LENGTH);
+ }
+ length = byteLength / BYTES;
+ } else if(TYPED_ARRAY in data){
+ return fromList(TypedArray, data);
+ } else {
+ return $from.call(TypedArray, data);
+ }
+ hide(that, '_d', {
+ b: buffer,
+ o: offset,
+ l: byteLength,
+ e: length,
+ v: new $DataView(buffer)
+ });
+ while(index < length)addElement(that, index++);
+ });
+ TypedArrayPrototype = TypedArray[PROTOTYPE] = create($TypedArrayPrototype$);
+ hide(TypedArrayPrototype, 'constructor', TypedArray);
+ } else if(!$iterDetect(function(iter){
+ // V8 works with iterators, but fails in many other cases
+ // https://code.google.com/p/v8/issues/detail?id=4552
+ new TypedArray(null); // eslint-disable-line no-new
+ new TypedArray(iter); // eslint-disable-line no-new
+ }, true)){
+ TypedArray = wrapper(function(that, data, $offset, $length){
+ anInstance(that, TypedArray, NAME);
+ var klass;
+ // `ws` module bug, temporarily remove validation length for Uint8Array
+ // https://github.com/websockets/ws/pull/645
+ if(!isObject(data))return new Base(strictToLength(data, ISNT_UINT8));
+ if(data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER){
+ return $length !== undefined
+ ? new Base(data, toOffset($offset, BYTES), $length)
+ : $offset !== undefined
+ ? new Base(data, toOffset($offset, BYTES))
+ : new Base(data);
+ }
+ if(TYPED_ARRAY in data)return fromList(TypedArray, data);
+ return $from.call(TypedArray, data);
+ });
+ arrayForEach(TAC !== Function.prototype ? gOPN(Base).concat(gOPN(TAC)) : gOPN(Base), function(key){
+ if(!(key in TypedArray))hide(TypedArray, key, Base[key]);
+ });
+ TypedArray[PROTOTYPE] = TypedArrayPrototype;
+ if(!LIBRARY)TypedArrayPrototype.constructor = TypedArray;
+ }
+ var $nativeIterator = TypedArrayPrototype[ITERATOR]
+ , CORRECT_ITER_NAME = !!$nativeIterator && ($nativeIterator.name == 'values' || $nativeIterator.name == undefined)
+ , $iterator = $iterators.values;
+ hide(TypedArray, TYPED_CONSTRUCTOR, true);
+ hide(TypedArrayPrototype, TYPED_ARRAY, NAME);
+ hide(TypedArrayPrototype, VIEW, true);
+ hide(TypedArrayPrototype, DEF_CONSTRUCTOR, TypedArray);
+
+ if(CLAMPED ? new TypedArray(1)[TAG] != NAME : !(TAG in TypedArrayPrototype)){
+ dP(TypedArrayPrototype, TAG, {
+ get: function(){ return NAME; }
+ });
+ }
+
+ O[NAME] = TypedArray;
+
+ $export($export.G + $export.W + $export.F * (TypedArray != Base), O);
+
+ $export($export.S, NAME, {
+ BYTES_PER_ELEMENT: BYTES,
+ from: $from,
+ of: $of
+ });
+
+ if(!(BYTES_PER_ELEMENT in TypedArrayPrototype))hide(TypedArrayPrototype, BYTES_PER_ELEMENT, BYTES);
+
+ $export($export.P, NAME, proto);
+
+ setSpecies(NAME);
+
+ $export($export.P + $export.F * FORCED_SET, NAME, {set: $set});
+
+ $export($export.P + $export.F * !CORRECT_ITER_NAME, NAME, $iterators);
+
+ $export($export.P + $export.F * (TypedArrayPrototype.toString != arrayToString), NAME, {toString: arrayToString});
+
+ $export($export.P + $export.F * fails(function(){
+ new TypedArray(1).slice();
+ }), NAME, {slice: $slice});
+
+ $export($export.P + $export.F * (fails(function(){
+ return [1, 2].toLocaleString() != new TypedArray([1, 2]).toLocaleString()
+ }) || !fails(function(){
+ TypedArrayPrototype.toLocaleString.call([1, 2]);
+ })), NAME, {toLocaleString: $toLocaleString});
+
+ Iterators[NAME] = CORRECT_ITER_NAME ? $nativeIterator : $iterator;
+ if(!LIBRARY && !CORRECT_ITER_NAME)hide(TypedArrayPrototype, ITERATOR, $iterator);
+ };
+} else module.exports = function(){ /* empty */ };
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_typed-buffer.js b/node_modules/babel-register/node_modules/core-js/library/modules/_typed-buffer.js
new file mode 100644
index 0000000..26d2b9c
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_typed-buffer.js
@@ -0,0 +1,275 @@
+'use strict';
+var global = require('./_global')
+ , DESCRIPTORS = require('./_descriptors')
+ , LIBRARY = require('./_library')
+ , $typed = require('./_typed')
+ , hide = require('./_hide')
+ , redefineAll = require('./_redefine-all')
+ , fails = require('./_fails')
+ , anInstance = require('./_an-instance')
+ , toInteger = require('./_to-integer')
+ , toLength = require('./_to-length')
+ , gOPN = require('./_object-gopn').f
+ , dP = require('./_object-dp').f
+ , arrayFill = require('./_array-fill')
+ , setToStringTag = require('./_set-to-string-tag')
+ , ARRAY_BUFFER = 'ArrayBuffer'
+ , DATA_VIEW = 'DataView'
+ , PROTOTYPE = 'prototype'
+ , WRONG_LENGTH = 'Wrong length!'
+ , WRONG_INDEX = 'Wrong index!'
+ , $ArrayBuffer = global[ARRAY_BUFFER]
+ , $DataView = global[DATA_VIEW]
+ , Math = global.Math
+ , parseInt = global.parseInt
+ , RangeError = global.RangeError
+ , Infinity = global.Infinity
+ , BaseBuffer = $ArrayBuffer
+ , abs = Math.abs
+ , pow = Math.pow
+ , min = Math.min
+ , floor = Math.floor
+ , log = Math.log
+ , LN2 = Math.LN2
+ , BUFFER = 'buffer'
+ , BYTE_LENGTH = 'byteLength'
+ , BYTE_OFFSET = 'byteOffset'
+ , $BUFFER = DESCRIPTORS ? '_b' : BUFFER
+ , $LENGTH = DESCRIPTORS ? '_l' : BYTE_LENGTH
+ , $OFFSET = DESCRIPTORS ? '_o' : BYTE_OFFSET;
+
+// IEEE754 conversions based on https://github.com/feross/ieee754
+var packIEEE754 = function(value, mLen, nBytes){
+ var buffer = Array(nBytes)
+ , eLen = nBytes * 8 - mLen - 1
+ , eMax = (1 << eLen) - 1
+ , eBias = eMax >> 1
+ , rt = mLen === 23 ? pow(2, -24) - pow(2, -77) : 0
+ , i = 0
+ , s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0
+ , e, m, c;
+ value = abs(value)
+ if(value != value || value === Infinity){
+ m = value != value ? 1 : 0;
+ e = eMax;
+ } else {
+ e = floor(log(value) / LN2);
+ if(value * (c = pow(2, -e)) < 1){
+ e--;
+ c *= 2;
+ }
+ if(e + eBias >= 1){
+ value += rt / c;
+ } else {
+ value += rt * pow(2, 1 - eBias);
+ }
+ if(value * c >= 2){
+ e++;
+ c /= 2;
+ }
+ if(e + eBias >= eMax){
+ m = 0;
+ e = eMax;
+ } else if(e + eBias >= 1){
+ m = (value * c - 1) * pow(2, mLen);
+ e = e + eBias;
+ } else {
+ m = value * pow(2, eBias - 1) * pow(2, mLen);
+ e = 0;
+ }
+ }
+ for(; mLen >= 8; buffer[i++] = m & 255, m /= 256, mLen -= 8);
+ e = e << mLen | m;
+ eLen += mLen;
+ for(; eLen > 0; buffer[i++] = e & 255, e /= 256, eLen -= 8);
+ buffer[--i] |= s * 128;
+ return buffer;
+};
+var unpackIEEE754 = function(buffer, mLen, nBytes){
+ var eLen = nBytes * 8 - mLen - 1
+ , eMax = (1 << eLen) - 1
+ , eBias = eMax >> 1
+ , nBits = eLen - 7
+ , i = nBytes - 1
+ , s = buffer[i--]
+ , e = s & 127
+ , m;
+ s >>= 7;
+ for(; nBits > 0; e = e * 256 + buffer[i], i--, nBits -= 8);
+ m = e & (1 << -nBits) - 1;
+ e >>= -nBits;
+ nBits += mLen;
+ for(; nBits > 0; m = m * 256 + buffer[i], i--, nBits -= 8);
+ if(e === 0){
+ e = 1 - eBias;
+ } else if(e === eMax){
+ return m ? NaN : s ? -Infinity : Infinity;
+ } else {
+ m = m + pow(2, mLen);
+ e = e - eBias;
+ } return (s ? -1 : 1) * m * pow(2, e - mLen);
+};
+
+var unpackI32 = function(bytes){
+ return bytes[3] << 24 | bytes[2] << 16 | bytes[1] << 8 | bytes[0];
+};
+var packI8 = function(it){
+ return [it & 0xff];
+};
+var packI16 = function(it){
+ return [it & 0xff, it >> 8 & 0xff];
+};
+var packI32 = function(it){
+ return [it & 0xff, it >> 8 & 0xff, it >> 16 & 0xff, it >> 24 & 0xff];
+};
+var packF64 = function(it){
+ return packIEEE754(it, 52, 8);
+};
+var packF32 = function(it){
+ return packIEEE754(it, 23, 4);
+};
+
+var addGetter = function(C, key, internal){
+ dP(C[PROTOTYPE], key, {get: function(){ return this[internal]; }});
+};
+
+var get = function(view, bytes, index, isLittleEndian){
+ var numIndex = +index
+ , intIndex = toInteger(numIndex);
+ if(numIndex != intIndex || intIndex < 0 || intIndex + bytes > view[$LENGTH])throw RangeError(WRONG_INDEX);
+ var store = view[$BUFFER]._b
+ , start = intIndex + view[$OFFSET]
+ , pack = store.slice(start, start + bytes);
+ return isLittleEndian ? pack : pack.reverse();
+};
+var set = function(view, bytes, index, conversion, value, isLittleEndian){
+ var numIndex = +index
+ , intIndex = toInteger(numIndex);
+ if(numIndex != intIndex || intIndex < 0 || intIndex + bytes > view[$LENGTH])throw RangeError(WRONG_INDEX);
+ var store = view[$BUFFER]._b
+ , start = intIndex + view[$OFFSET]
+ , pack = conversion(+value);
+ for(var i = 0; i < bytes; i++)store[start + i] = pack[isLittleEndian ? i : bytes - i - 1];
+};
+
+var validateArrayBufferArguments = function(that, length){
+ anInstance(that, $ArrayBuffer, ARRAY_BUFFER);
+ var numberLength = +length
+ , byteLength = toLength(numberLength);
+ if(numberLength != byteLength)throw RangeError(WRONG_LENGTH);
+ return byteLength;
+};
+
+if(!$typed.ABV){
+ $ArrayBuffer = function ArrayBuffer(length){
+ var byteLength = validateArrayBufferArguments(this, length);
+ this._b = arrayFill.call(Array(byteLength), 0);
+ this[$LENGTH] = byteLength;
+ };
+
+ $DataView = function DataView(buffer, byteOffset, byteLength){
+ anInstance(this, $DataView, DATA_VIEW);
+ anInstance(buffer, $ArrayBuffer, DATA_VIEW);
+ var bufferLength = buffer[$LENGTH]
+ , offset = toInteger(byteOffset);
+ if(offset < 0 || offset > bufferLength)throw RangeError('Wrong offset!');
+ byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);
+ if(offset + byteLength > bufferLength)throw RangeError(WRONG_LENGTH);
+ this[$BUFFER] = buffer;
+ this[$OFFSET] = offset;
+ this[$LENGTH] = byteLength;
+ };
+
+ if(DESCRIPTORS){
+ addGetter($ArrayBuffer, BYTE_LENGTH, '_l');
+ addGetter($DataView, BUFFER, '_b');
+ addGetter($DataView, BYTE_LENGTH, '_l');
+ addGetter($DataView, BYTE_OFFSET, '_o');
+ }
+
+ redefineAll($DataView[PROTOTYPE], {
+ getInt8: function getInt8(byteOffset){
+ return get(this, 1, byteOffset)[0] << 24 >> 24;
+ },
+ getUint8: function getUint8(byteOffset){
+ return get(this, 1, byteOffset)[0];
+ },
+ getInt16: function getInt16(byteOffset /*, littleEndian */){
+ var bytes = get(this, 2, byteOffset, arguments[1]);
+ return (bytes[1] << 8 | bytes[0]) << 16 >> 16;
+ },
+ getUint16: function getUint16(byteOffset /*, littleEndian */){
+ var bytes = get(this, 2, byteOffset, arguments[1]);
+ return bytes[1] << 8 | bytes[0];
+ },
+ getInt32: function getInt32(byteOffset /*, littleEndian */){
+ return unpackI32(get(this, 4, byteOffset, arguments[1]));
+ },
+ getUint32: function getUint32(byteOffset /*, littleEndian */){
+ return unpackI32(get(this, 4, byteOffset, arguments[1])) >>> 0;
+ },
+ getFloat32: function getFloat32(byteOffset /*, littleEndian */){
+ return unpackIEEE754(get(this, 4, byteOffset, arguments[1]), 23, 4);
+ },
+ getFloat64: function getFloat64(byteOffset /*, littleEndian */){
+ return unpackIEEE754(get(this, 8, byteOffset, arguments[1]), 52, 8);
+ },
+ setInt8: function setInt8(byteOffset, value){
+ set(this, 1, byteOffset, packI8, value);
+ },
+ setUint8: function setUint8(byteOffset, value){
+ set(this, 1, byteOffset, packI8, value);
+ },
+ setInt16: function setInt16(byteOffset, value /*, littleEndian */){
+ set(this, 2, byteOffset, packI16, value, arguments[2]);
+ },
+ setUint16: function setUint16(byteOffset, value /*, littleEndian */){
+ set(this, 2, byteOffset, packI16, value, arguments[2]);
+ },
+ setInt32: function setInt32(byteOffset, value /*, littleEndian */){
+ set(this, 4, byteOffset, packI32, value, arguments[2]);
+ },
+ setUint32: function setUint32(byteOffset, value /*, littleEndian */){
+ set(this, 4, byteOffset, packI32, value, arguments[2]);
+ },
+ setFloat32: function setFloat32(byteOffset, value /*, littleEndian */){
+ set(this, 4, byteOffset, packF32, value, arguments[2]);
+ },
+ setFloat64: function setFloat64(byteOffset, value /*, littleEndian */){
+ set(this, 8, byteOffset, packF64, value, arguments[2]);
+ }
+ });
+} else {
+ if(!fails(function(){
+ new $ArrayBuffer; // eslint-disable-line no-new
+ }) || !fails(function(){
+ new $ArrayBuffer(.5); // eslint-disable-line no-new
+ })){
+ $ArrayBuffer = function ArrayBuffer(length){
+ return new BaseBuffer(validateArrayBufferArguments(this, length));
+ };
+ var ArrayBufferProto = $ArrayBuffer[PROTOTYPE] = BaseBuffer[PROTOTYPE];
+ for(var keys = gOPN(BaseBuffer), j = 0, key; keys.length > j; ){
+ if(!((key = keys[j++]) in $ArrayBuffer))hide($ArrayBuffer, key, BaseBuffer[key]);
+ };
+ if(!LIBRARY)ArrayBufferProto.constructor = $ArrayBuffer;
+ }
+ // iOS Safari 7.x bug
+ var view = new $DataView(new $ArrayBuffer(2))
+ , $setInt8 = $DataView[PROTOTYPE].setInt8;
+ view.setInt8(0, 2147483648);
+ view.setInt8(1, 2147483649);
+ if(view.getInt8(0) || !view.getInt8(1))redefineAll($DataView[PROTOTYPE], {
+ setInt8: function setInt8(byteOffset, value){
+ $setInt8.call(this, byteOffset, value << 24 >> 24);
+ },
+ setUint8: function setUint8(byteOffset, value){
+ $setInt8.call(this, byteOffset, value << 24 >> 24);
+ }
+ }, true);
+}
+setToStringTag($ArrayBuffer, ARRAY_BUFFER);
+setToStringTag($DataView, DATA_VIEW);
+hide($DataView[PROTOTYPE], $typed.VIEW, true);
+exports[ARRAY_BUFFER] = $ArrayBuffer;
+exports[DATA_VIEW] = $DataView;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_typed.js b/node_modules/babel-register/node_modules/core-js/library/modules/_typed.js
new file mode 100644
index 0000000..6ed2ab5
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_typed.js
@@ -0,0 +1,26 @@
+var global = require('./_global')
+ , hide = require('./_hide')
+ , uid = require('./_uid')
+ , TYPED = uid('typed_array')
+ , VIEW = uid('view')
+ , ABV = !!(global.ArrayBuffer && global.DataView)
+ , CONSTR = ABV
+ , i = 0, l = 9, Typed;
+
+var TypedArrayConstructors = (
+ 'Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array'
+).split(',');
+
+while(i < l){
+ if(Typed = global[TypedArrayConstructors[i++]]){
+ hide(Typed.prototype, TYPED, true);
+ hide(Typed.prototype, VIEW, true);
+ } else CONSTR = false;
+}
+
+module.exports = {
+ ABV: ABV,
+ CONSTR: CONSTR,
+ TYPED: TYPED,
+ VIEW: VIEW
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_uid.js b/node_modules/babel-register/node_modules/core-js/library/modules/_uid.js
new file mode 100644
index 0000000..3be4196
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_uid.js
@@ -0,0 +1,5 @@
+var id = 0
+ , px = Math.random();
+module.exports = function(key){
+ return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/_wks.js b/node_modules/babel-register/node_modules/core-js/library/modules/_wks.js
new file mode 100644
index 0000000..9f02305
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/_wks.js
@@ -0,0 +1,8 @@
+var store = require('./_shared')('wks')
+ , uid = require('./_uid')
+ , Symbol = require('./_global').Symbol
+ , USE_SYMBOL = typeof Symbol == 'function';
+module.exports = function(name){
+ return store[name] || (store[name] =
+ USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/core.delay.js b/node_modules/babel-register/node_modules/core-js/library/modules/core.delay.js
new file mode 100644
index 0000000..ea031be
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/core.delay.js
@@ -0,0 +1,12 @@
+var global = require('./_global')
+ , core = require('./_core')
+ , $export = require('./_export')
+ , partial = require('./_partial');
+// https://esdiscuss.org/topic/promise-returning-delay-function
+$export($export.G + $export.F, {
+ delay: function delay(time){
+ return new (core.Promise || global.Promise)(function(resolve){
+ setTimeout(partial.call(resolve, true), time);
+ });
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/core.dict.js b/node_modules/babel-register/node_modules/core-js/library/modules/core.dict.js
new file mode 100644
index 0000000..88c54e3
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/core.dict.js
@@ -0,0 +1,155 @@
+'use strict';
+var ctx = require('./_ctx')
+ , $export = require('./_export')
+ , createDesc = require('./_property-desc')
+ , assign = require('./_object-assign')
+ , create = require('./_object-create')
+ , getPrototypeOf = require('./_object-gpo')
+ , getKeys = require('./_object-keys')
+ , dP = require('./_object-dp')
+ , keyOf = require('./_keyof')
+ , aFunction = require('./_a-function')
+ , forOf = require('./_for-of')
+ , isIterable = require('./core.is-iterable')
+ , $iterCreate = require('./_iter-create')
+ , step = require('./_iter-step')
+ , isObject = require('./_is-object')
+ , toIObject = require('./_to-iobject')
+ , DESCRIPTORS = require('./_descriptors')
+ , has = require('./_has');
+
+// 0 -> Dict.forEach
+// 1 -> Dict.map
+// 2 -> Dict.filter
+// 3 -> Dict.some
+// 4 -> Dict.every
+// 5 -> Dict.find
+// 6 -> Dict.findKey
+// 7 -> Dict.mapPairs
+var createDictMethod = function(TYPE){
+ var IS_MAP = TYPE == 1
+ , IS_EVERY = TYPE == 4;
+ return function(object, callbackfn, that /* = undefined */){
+ var f = ctx(callbackfn, that, 3)
+ , O = toIObject(object)
+ , result = IS_MAP || TYPE == 7 || TYPE == 2
+ ? new (typeof this == 'function' ? this : Dict) : undefined
+ , key, val, res;
+ for(key in O)if(has(O, key)){
+ val = O[key];
+ res = f(val, key, object);
+ if(TYPE){
+ if(IS_MAP)result[key] = res; // map
+ else if(res)switch(TYPE){
+ case 2: result[key] = val; break; // filter
+ case 3: return true; // some
+ case 5: return val; // find
+ case 6: return key; // findKey
+ case 7: result[res[0]] = res[1]; // mapPairs
+ } else if(IS_EVERY)return false; // every
+ }
+ }
+ return TYPE == 3 || IS_EVERY ? IS_EVERY : result;
+ };
+};
+var findKey = createDictMethod(6);
+
+var createDictIter = function(kind){
+ return function(it){
+ return new DictIterator(it, kind);
+ };
+};
+var DictIterator = function(iterated, kind){
+ this._t = toIObject(iterated); // target
+ this._a = getKeys(iterated); // keys
+ this._i = 0; // next index
+ this._k = kind; // kind
+};
+$iterCreate(DictIterator, 'Dict', function(){
+ var that = this
+ , O = that._t
+ , keys = that._a
+ , kind = that._k
+ , key;
+ do {
+ if(that._i >= keys.length){
+ that._t = undefined;
+ return step(1);
+ }
+ } while(!has(O, key = keys[that._i++]));
+ if(kind == 'keys' )return step(0, key);
+ if(kind == 'values')return step(0, O[key]);
+ return step(0, [key, O[key]]);
+});
+
+function Dict(iterable){
+ var dict = create(null);
+ if(iterable != undefined){
+ if(isIterable(iterable)){
+ forOf(iterable, true, function(key, value){
+ dict[key] = value;
+ });
+ } else assign(dict, iterable);
+ }
+ return dict;
+}
+Dict.prototype = null;
+
+function reduce(object, mapfn, init){
+ aFunction(mapfn);
+ var O = toIObject(object)
+ , keys = getKeys(O)
+ , length = keys.length
+ , i = 0
+ , memo, key;
+ if(arguments.length < 3){
+ if(!length)throw TypeError('Reduce of empty object with no initial value');
+ memo = O[keys[i++]];
+ } else memo = Object(init);
+ while(length > i)if(has(O, key = keys[i++])){
+ memo = mapfn(memo, O[key], key, object);
+ }
+ return memo;
+}
+
+function includes(object, el){
+ return (el == el ? keyOf(object, el) : findKey(object, function(it){
+ return it != it;
+ })) !== undefined;
+}
+
+function get(object, key){
+ if(has(object, key))return object[key];
+}
+function set(object, key, value){
+ if(DESCRIPTORS && key in Object)dP.f(object, key, createDesc(0, value));
+ else object[key] = value;
+ return object;
+}
+
+function isDict(it){
+ return isObject(it) && getPrototypeOf(it) === Dict.prototype;
+}
+
+$export($export.G + $export.F, {Dict: Dict});
+
+$export($export.S, 'Dict', {
+ keys: createDictIter('keys'),
+ values: createDictIter('values'),
+ entries: createDictIter('entries'),
+ forEach: createDictMethod(0),
+ map: createDictMethod(1),
+ filter: createDictMethod(2),
+ some: createDictMethod(3),
+ every: createDictMethod(4),
+ find: createDictMethod(5),
+ findKey: findKey,
+ mapPairs: createDictMethod(7),
+ reduce: reduce,
+ keyOf: keyOf,
+ includes: includes,
+ has: has,
+ get: get,
+ set: set,
+ isDict: isDict
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/core.function.part.js b/node_modules/babel-register/node_modules/core-js/library/modules/core.function.part.js
new file mode 100644
index 0000000..ce851ff
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/core.function.part.js
@@ -0,0 +1,7 @@
+var path = require('./_path')
+ , $export = require('./_export');
+
+// Placeholder
+require('./_core')._ = path._ = path._ || {};
+
+$export($export.P + $export.F, 'Function', {part: require('./_partial')});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/core.get-iterator-method.js b/node_modules/babel-register/node_modules/core-js/library/modules/core.get-iterator-method.js
new file mode 100644
index 0000000..e2c7ecc
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/core.get-iterator-method.js
@@ -0,0 +1,8 @@
+var classof = require('./_classof')
+ , ITERATOR = require('./_wks')('iterator')
+ , Iterators = require('./_iterators');
+module.exports = require('./_core').getIteratorMethod = function(it){
+ if(it != undefined)return it[ITERATOR]
+ || it['@@iterator']
+ || Iterators[classof(it)];
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/core.get-iterator.js b/node_modules/babel-register/node_modules/core-js/library/modules/core.get-iterator.js
new file mode 100644
index 0000000..c292e1a
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/core.get-iterator.js
@@ -0,0 +1,7 @@
+var anObject = require('./_an-object')
+ , get = require('./core.get-iterator-method');
+module.exports = require('./_core').getIterator = function(it){
+ var iterFn = get(it);
+ if(typeof iterFn != 'function')throw TypeError(it + ' is not iterable!');
+ return anObject(iterFn.call(it));
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/core.is-iterable.js b/node_modules/babel-register/node_modules/core-js/library/modules/core.is-iterable.js
new file mode 100644
index 0000000..b2b01b6
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/core.is-iterable.js
@@ -0,0 +1,9 @@
+var classof = require('./_classof')
+ , ITERATOR = require('./_wks')('iterator')
+ , Iterators = require('./_iterators');
+module.exports = require('./_core').isIterable = function(it){
+ var O = Object(it);
+ return O[ITERATOR] !== undefined
+ || '@@iterator' in O
+ || Iterators.hasOwnProperty(classof(O));
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/core.number.iterator.js b/node_modules/babel-register/node_modules/core-js/library/modules/core.number.iterator.js
new file mode 100644
index 0000000..9700acb
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/core.number.iterator.js
@@ -0,0 +1,9 @@
+'use strict';
+require('./_iter-define')(Number, 'Number', function(iterated){
+ this._l = +iterated;
+ this._i = 0;
+}, function(){
+ var i = this._i++
+ , done = !(i < this._l);
+ return {done: done, value: done ? undefined : i};
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/core.object.classof.js b/node_modules/babel-register/node_modules/core-js/library/modules/core.object.classof.js
new file mode 100644
index 0000000..342c737
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/core.object.classof.js
@@ -0,0 +1,3 @@
+var $export = require('./_export');
+
+$export($export.S + $export.F, 'Object', {classof: require('./_classof')});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/core.object.define.js b/node_modules/babel-register/node_modules/core-js/library/modules/core.object.define.js
new file mode 100644
index 0000000..d60e9a9
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/core.object.define.js
@@ -0,0 +1,4 @@
+var $export = require('./_export')
+ , define = require('./_object-define');
+
+$export($export.S + $export.F, 'Object', {define: define});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/core.object.is-object.js b/node_modules/babel-register/node_modules/core-js/library/modules/core.object.is-object.js
new file mode 100644
index 0000000..f2ba059
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/core.object.is-object.js
@@ -0,0 +1,3 @@
+var $export = require('./_export');
+
+$export($export.S + $export.F, 'Object', {isObject: require('./_is-object')});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/core.object.make.js b/node_modules/babel-register/node_modules/core-js/library/modules/core.object.make.js
new file mode 100644
index 0000000..3d2a2b5
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/core.object.make.js
@@ -0,0 +1,9 @@
+var $export = require('./_export')
+ , define = require('./_object-define')
+ , create = require('./_object-create');
+
+$export($export.S + $export.F, 'Object', {
+ make: function(proto, mixin){
+ return define(create(proto), mixin);
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/core.regexp.escape.js b/node_modules/babel-register/node_modules/core-js/library/modules/core.regexp.escape.js
new file mode 100644
index 0000000..54f832e
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/core.regexp.escape.js
@@ -0,0 +1,5 @@
+// https://github.com/benjamingr/RexExp.escape
+var $export = require('./_export')
+ , $re = require('./_replacer')(/[\\^$*+?.()|[\]{}]/g, '\\$&');
+
+$export($export.S, 'RegExp', {escape: function escape(it){ return $re(it); }});
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/core.string.escape-html.js b/node_modules/babel-register/node_modules/core-js/library/modules/core.string.escape-html.js
new file mode 100644
index 0000000..a4b8d2f
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/core.string.escape-html.js
@@ -0,0 +1,11 @@
+'use strict';
+var $export = require('./_export');
+var $re = require('./_replacer')(/[&<>"']/g, {
+ '&': '&',
+ '<': '<',
+ '>': '>',
+ '"': '"',
+ "'": '''
+});
+
+$export($export.P + $export.F, 'String', {escapeHTML: function escapeHTML(){ return $re(this); }});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/core.string.unescape-html.js b/node_modules/babel-register/node_modules/core-js/library/modules/core.string.unescape-html.js
new file mode 100644
index 0000000..413622b
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/core.string.unescape-html.js
@@ -0,0 +1,11 @@
+'use strict';
+var $export = require('./_export');
+var $re = require('./_replacer')(/&(?:amp|lt|gt|quot|apos);/g, {
+ '&': '&',
+ '<': '<',
+ '>': '>',
+ '"': '"',
+ ''': "'"
+});
+
+$export($export.P + $export.F, 'String', {unescapeHTML: function unescapeHTML(){ return $re(this); }});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es5.js b/node_modules/babel-register/node_modules/core-js/library/modules/es5.js
new file mode 100644
index 0000000..dd7ebad
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es5.js
@@ -0,0 +1,35 @@
+// This file still here for a legacy code and will be removed in a near time
+require('./es6.object.create');
+require('./es6.object.define-property');
+require('./es6.object.define-properties');
+require('./es6.object.get-own-property-descriptor');
+require('./es6.object.get-prototype-of');
+require('./es6.object.keys');
+require('./es6.object.get-own-property-names');
+require('./es6.object.freeze');
+require('./es6.object.seal');
+require('./es6.object.prevent-extensions');
+require('./es6.object.is-frozen');
+require('./es6.object.is-sealed');
+require('./es6.object.is-extensible');
+require('./es6.function.bind');
+require('./es6.array.is-array');
+require('./es6.array.join');
+require('./es6.array.slice');
+require('./es6.array.sort');
+require('./es6.array.for-each');
+require('./es6.array.map');
+require('./es6.array.filter');
+require('./es6.array.some');
+require('./es6.array.every');
+require('./es6.array.reduce');
+require('./es6.array.reduce-right');
+require('./es6.array.index-of');
+require('./es6.array.last-index-of');
+require('./es6.date.now');
+require('./es6.date.to-iso-string');
+require('./es6.date.to-json');
+require('./es6.parse-int');
+require('./es6.parse-float');
+require('./es6.string.trim');
+require('./es6.regexp.to-string');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.array.copy-within.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.array.copy-within.js
new file mode 100644
index 0000000..027f755
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.array.copy-within.js
@@ -0,0 +1,6 @@
+// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)
+var $export = require('./_export');
+
+$export($export.P, 'Array', {copyWithin: require('./_array-copy-within')});
+
+require('./_add-to-unscopables')('copyWithin');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.array.every.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.array.every.js
new file mode 100644
index 0000000..0704d50
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.array.every.js
@@ -0,0 +1,10 @@
+'use strict';
+var $export = require('./_export')
+ , $every = require('./_array-methods')(4);
+
+$export($export.P + $export.F * !require('./_strict-method')([].every, true), 'Array', {
+ // 22.1.3.5 / 15.4.4.16 Array.prototype.every(callbackfn [, thisArg])
+ every: function every(callbackfn /* , thisArg */){
+ return $every(this, callbackfn, arguments[1]);
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.array.fill.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.array.fill.js
new file mode 100644
index 0000000..f075c00
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.array.fill.js
@@ -0,0 +1,6 @@
+// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)
+var $export = require('./_export');
+
+$export($export.P, 'Array', {fill: require('./_array-fill')});
+
+require('./_add-to-unscopables')('fill');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.array.filter.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.array.filter.js
new file mode 100644
index 0000000..6ba54a7
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.array.filter.js
@@ -0,0 +1,10 @@
+'use strict';
+var $export = require('./_export')
+ , $filter = require('./_array-methods')(2);
+
+$export($export.P + $export.F * !require('./_strict-method')([].filter, true), 'Array', {
+ // 22.1.3.7 / 15.4.4.20 Array.prototype.filter(callbackfn [, thisArg])
+ filter: function filter(callbackfn /* , thisArg */){
+ return $filter(this, callbackfn, arguments[1]);
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.array.find-index.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.array.find-index.js
new file mode 100644
index 0000000..5309074
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.array.find-index.js
@@ -0,0 +1,14 @@
+'use strict';
+// 22.1.3.9 Array.prototype.findIndex(predicate, thisArg = undefined)
+var $export = require('./_export')
+ , $find = require('./_array-methods')(6)
+ , KEY = 'findIndex'
+ , forced = true;
+// Shouldn't skip holes
+if(KEY in [])Array(1)[KEY](function(){ forced = false; });
+$export($export.P + $export.F * forced, 'Array', {
+ findIndex: function findIndex(callbackfn/*, that = undefined */){
+ return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+ }
+});
+require('./_add-to-unscopables')(KEY);
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.array.find.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.array.find.js
new file mode 100644
index 0000000..90a9acf
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.array.find.js
@@ -0,0 +1,14 @@
+'use strict';
+// 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined)
+var $export = require('./_export')
+ , $find = require('./_array-methods')(5)
+ , KEY = 'find'
+ , forced = true;
+// Shouldn't skip holes
+if(KEY in [])Array(1)[KEY](function(){ forced = false; });
+$export($export.P + $export.F * forced, 'Array', {
+ find: function find(callbackfn/*, that = undefined */){
+ return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+ }
+});
+require('./_add-to-unscopables')(KEY);
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.array.for-each.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.array.for-each.js
new file mode 100644
index 0000000..55c1e30
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.array.for-each.js
@@ -0,0 +1,11 @@
+'use strict';
+var $export = require('./_export')
+ , $forEach = require('./_array-methods')(0)
+ , STRICT = require('./_strict-method')([].forEach, true);
+
+$export($export.P + $export.F * !STRICT, 'Array', {
+ // 22.1.3.10 / 15.4.4.18 Array.prototype.forEach(callbackfn [, thisArg])
+ forEach: function forEach(callbackfn /* , thisArg */){
+ return $forEach(this, callbackfn, arguments[1]);
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.array.from.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.array.from.js
new file mode 100644
index 0000000..739f12d
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.array.from.js
@@ -0,0 +1,35 @@
+'use strict';
+var ctx = require('./_ctx')
+ , $export = require('./_export')
+ , toObject = require('./_to-object')
+ , call = require('./_iter-call')
+ , isArrayIter = require('./_is-array-iter')
+ , toLength = require('./_to-length')
+ , getIterFn = require('./core.get-iterator-method');
+$export($export.S + $export.F * !require('./_iter-detect')(function(iter){ Array.from(iter); }), 'Array', {
+ // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)
+ from: function from(arrayLike/*, mapfn = undefined, thisArg = undefined*/){
+ var O = toObject(arrayLike)
+ , C = typeof this == 'function' ? this : Array
+ , aLen = arguments.length
+ , mapfn = aLen > 1 ? arguments[1] : undefined
+ , mapping = mapfn !== undefined
+ , index = 0
+ , iterFn = getIterFn(O)
+ , length, result, step, iterator;
+ if(mapping)mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);
+ // if object isn't iterable or it's array with default iterator - use simple case
+ if(iterFn != undefined && !(C == Array && isArrayIter(iterFn))){
+ for(iterator = iterFn.call(O), result = new C; !(step = iterator.next()).done; index++){
+ result[index] = mapping ? call(iterator, mapfn, [step.value, index], true) : step.value;
+ }
+ } else {
+ length = toLength(O.length);
+ for(result = new C(length); length > index; index++){
+ result[index] = mapping ? mapfn(O[index], index) : O[index];
+ }
+ }
+ result.length = index;
+ return result;
+ }
+});
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.array.index-of.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.array.index-of.js
new file mode 100644
index 0000000..efce321
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.array.index-of.js
@@ -0,0 +1,10 @@
+'use strict';
+var $export = require('./_export')
+ , $indexOf = require('./_array-includes')(false);
+
+$export($export.P + $export.F * !require('./_strict-method')([].indexOf), 'Array', {
+ // 22.1.3.11 / 15.4.4.14 Array.prototype.indexOf(searchElement [, fromIndex])
+ indexOf: function indexOf(searchElement /*, fromIndex = 0 */){
+ return $indexOf(this, searchElement, arguments[1]);
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.array.is-array.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.array.is-array.js
new file mode 100644
index 0000000..77160d7
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.array.is-array.js
@@ -0,0 +1,4 @@
+// 22.1.2.2 / 15.4.3.2 Array.isArray(arg)
+var $export = require('./_export');
+
+$export($export.S, 'Array', {isArray: require('./_is-array')});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.array.iterator.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.array.iterator.js
new file mode 100644
index 0000000..100b344
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.array.iterator.js
@@ -0,0 +1,34 @@
+'use strict';
+var addToUnscopables = require('./_add-to-unscopables')
+ , step = require('./_iter-step')
+ , Iterators = require('./_iterators')
+ , toIObject = require('./_to-iobject');
+
+// 22.1.3.4 Array.prototype.entries()
+// 22.1.3.13 Array.prototype.keys()
+// 22.1.3.29 Array.prototype.values()
+// 22.1.3.30 Array.prototype[@@iterator]()
+module.exports = require('./_iter-define')(Array, 'Array', function(iterated, kind){
+ this._t = toIObject(iterated); // target
+ this._i = 0; // next index
+ this._k = kind; // kind
+// 22.1.5.2.1 %ArrayIteratorPrototype%.next()
+}, function(){
+ var O = this._t
+ , kind = this._k
+ , index = this._i++;
+ if(!O || index >= O.length){
+ this._t = undefined;
+ return step(1);
+ }
+ if(kind == 'keys' )return step(0, index);
+ if(kind == 'values')return step(0, O[index]);
+ return step(0, [index, O[index]]);
+}, 'values');
+
+// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)
+Iterators.Arguments = Iterators.Array;
+
+addToUnscopables('keys');
+addToUnscopables('values');
+addToUnscopables('entries');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.array.join.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.array.join.js
new file mode 100644
index 0000000..0cf9501
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.array.join.js
@@ -0,0 +1,12 @@
+'use strict';
+// 22.1.3.13 Array.prototype.join(separator)
+var $export = require('./_export')
+ , toIObject = require('./_to-iobject')
+ , arrayJoin = [].join;
+
+// fallback for not array-like strings
+$export($export.P + $export.F * (require('./_iobject') != Object || !require('./_strict-method')(arrayJoin)), 'Array', {
+ join: function join(separator){
+ return arrayJoin.call(toIObject(this), separator === undefined ? ',' : separator);
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.array.last-index-of.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.array.last-index-of.js
new file mode 100644
index 0000000..404367c
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.array.last-index-of.js
@@ -0,0 +1,18 @@
+'use strict';
+var $export = require('./_export')
+ , toIObject = require('./_to-iobject')
+ , toInteger = require('./_to-integer')
+ , toLength = require('./_to-length');
+
+$export($export.P + $export.F * !require('./_strict-method')([].lastIndexOf), 'Array', {
+ // 22.1.3.14 / 15.4.4.15 Array.prototype.lastIndexOf(searchElement [, fromIndex])
+ lastIndexOf: function lastIndexOf(searchElement /*, fromIndex = @[*-1] */){
+ var O = toIObject(this)
+ , length = toLength(O.length)
+ , index = length - 1;
+ if(arguments.length > 1)index = Math.min(index, toInteger(arguments[1]));
+ if(index < 0)index = length + index;
+ for(;index >= 0; index--)if(index in O)if(O[index] === searchElement)return index;
+ return -1;
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.array.map.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.array.map.js
new file mode 100644
index 0000000..ea1f630
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.array.map.js
@@ -0,0 +1,10 @@
+'use strict';
+var $export = require('./_export')
+ , $map = require('./_array-methods')(1);
+
+$export($export.P + $export.F * !require('./_strict-method')([].map, true), 'Array', {
+ // 22.1.3.15 / 15.4.4.19 Array.prototype.map(callbackfn [, thisArg])
+ map: function map(callbackfn /* , thisArg */){
+ return $map(this, callbackfn, arguments[1]);
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.array.of.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.array.of.js
new file mode 100644
index 0000000..f5cba5d
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.array.of.js
@@ -0,0 +1,18 @@
+'use strict';
+var $export = require('./_export');
+
+// WebKit Array.of isn't generic
+$export($export.S + $export.F * require('./_fails')(function(){
+ function F(){}
+ return !(Array.of.call(F) instanceof F);
+}), 'Array', {
+ // 22.1.2.3 Array.of( ...items)
+ of: function of(/* ...args */){
+ var index = 0
+ , aLen = arguments.length
+ , result = new (typeof this == 'function' ? this : Array)(aLen);
+ while(aLen > index)result[index] = arguments[index++];
+ result.length = aLen;
+ return result;
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.array.reduce-right.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.array.reduce-right.js
new file mode 100644
index 0000000..4283087
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.array.reduce-right.js
@@ -0,0 +1,10 @@
+'use strict';
+var $export = require('./_export')
+ , $reduce = require('./_array-reduce');
+
+$export($export.P + $export.F * !require('./_strict-method')([].reduceRight, true), 'Array', {
+ // 22.1.3.19 / 15.4.4.22 Array.prototype.reduceRight(callbackfn [, initialValue])
+ reduceRight: function reduceRight(callbackfn /* , initialValue */){
+ return $reduce(this, callbackfn, arguments.length, arguments[1], true);
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.array.reduce.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.array.reduce.js
new file mode 100644
index 0000000..2c2ca37
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.array.reduce.js
@@ -0,0 +1,10 @@
+'use strict';
+var $export = require('./_export')
+ , $reduce = require('./_array-reduce');
+
+$export($export.P + $export.F * !require('./_strict-method')([].reduce, true), 'Array', {
+ // 22.1.3.18 / 15.4.4.21 Array.prototype.reduce(callbackfn [, initialValue])
+ reduce: function reduce(callbackfn /* , initialValue */){
+ return $reduce(this, callbackfn, arguments.length, arguments[1], false);
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.array.slice.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.array.slice.js
new file mode 100644
index 0000000..898f60c
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.array.slice.js
@@ -0,0 +1,28 @@
+'use strict';
+var $export = require('./_export')
+ , html = require('./_html')
+ , cof = require('./_cof')
+ , toIndex = require('./_to-index')
+ , toLength = require('./_to-length')
+ , arraySlice = [].slice;
+
+// fallback for not array-like ES3 strings and DOM objects
+$export($export.P + $export.F * require('./_fails')(function(){
+ if(html)arraySlice.call(html);
+}), 'Array', {
+ slice: function slice(begin, end){
+ var len = toLength(this.length)
+ , klass = cof(this);
+ end = end === undefined ? len : end;
+ if(klass == 'Array')return arraySlice.call(this, begin, end);
+ var start = toIndex(begin, len)
+ , upTo = toIndex(end, len)
+ , size = toLength(upTo - start)
+ , cloned = Array(size)
+ , i = 0;
+ for(; i < size; i++)cloned[i] = klass == 'String'
+ ? this.charAt(start + i)
+ : this[start + i];
+ return cloned;
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.array.some.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.array.some.js
new file mode 100644
index 0000000..7ab31df
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.array.some.js
@@ -0,0 +1,10 @@
+'use strict';
+var $export = require('./_export')
+ , $some = require('./_array-methods')(3);
+
+$export($export.P + $export.F * !require('./_strict-method')([].some, true), 'Array', {
+ // 22.1.3.23 / 15.4.4.17 Array.prototype.some(callbackfn [, thisArg])
+ some: function some(callbackfn /* , thisArg */){
+ return $some(this, callbackfn, arguments[1]);
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.array.sort.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.array.sort.js
new file mode 100644
index 0000000..d01f55b
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.array.sort.js
@@ -0,0 +1,23 @@
+'use strict';
+var $export = require('./_export')
+ , aFunction = require('./_a-function')
+ , toObject = require('./_to-object')
+ , fails = require('./_fails')
+ , $sort = [].sort
+ , test = [1, 2, 3];
+
+$export($export.P + $export.F * (fails(function(){
+ // IE8-
+ test.sort(undefined);
+}) || !fails(function(){
+ // V8 bug
+ test.sort(null);
+ // Old WebKit
+}) || !require('./_strict-method')($sort)), 'Array', {
+ // 22.1.3.25 Array.prototype.sort(comparefn)
+ sort: function sort(comparefn){
+ return comparefn === undefined
+ ? $sort.call(toObject(this))
+ : $sort.call(toObject(this), aFunction(comparefn));
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.array.species.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.array.species.js
new file mode 100644
index 0000000..d63c738
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.array.species.js
@@ -0,0 +1 @@
+require('./_set-species')('Array');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.date.now.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.date.now.js
new file mode 100644
index 0000000..da3fbc4
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.date.now.js
@@ -0,0 +1,4 @@
+// 20.3.3.1 / 15.9.4.4 Date.now()
+var $export = require('./_export');
+
+$export($export.S, 'Date', {now: function(){ return new Date().getTime(); }});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.date.to-iso-string.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.date.to-iso-string.js
new file mode 100644
index 0000000..24a8399
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.date.to-iso-string.js
@@ -0,0 +1,28 @@
+'use strict';
+// 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString()
+var $export = require('./_export')
+ , fails = require('./_fails')
+ , getTime = Date.prototype.getTime;
+
+var lz = function(num){
+ return num > 9 ? num : '0' + num;
+};
+
+// PhantomJS / old WebKit has a broken implementations
+$export($export.P + $export.F * (fails(function(){
+ return new Date(-5e13 - 1).toISOString() != '0385-07-25T07:06:39.999Z';
+}) || !fails(function(){
+ new Date(NaN).toISOString();
+})), 'Date', {
+ toISOString: function toISOString(){
+ if(!isFinite(getTime.call(this)))throw RangeError('Invalid time value');
+ var d = this
+ , y = d.getUTCFullYear()
+ , m = d.getUTCMilliseconds()
+ , s = y < 0 ? '-' : y > 9999 ? '+' : '';
+ return s + ('00000' + Math.abs(y)).slice(s ? -6 : -4) +
+ '-' + lz(d.getUTCMonth() + 1) + '-' + lz(d.getUTCDate()) +
+ 'T' + lz(d.getUTCHours()) + ':' + lz(d.getUTCMinutes()) +
+ ':' + lz(d.getUTCSeconds()) + '.' + (m > 99 ? m : '0' + lz(m)) + 'Z';
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.date.to-json.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.date.to-json.js
new file mode 100644
index 0000000..eb419d0
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.date.to-json.js
@@ -0,0 +1,14 @@
+'use strict';
+var $export = require('./_export')
+ , toObject = require('./_to-object')
+ , toPrimitive = require('./_to-primitive');
+
+$export($export.P + $export.F * require('./_fails')(function(){
+ return new Date(NaN).toJSON() !== null || Date.prototype.toJSON.call({toISOString: function(){ return 1; }}) !== 1;
+}), 'Date', {
+ toJSON: function toJSON(key){
+ var O = toObject(this)
+ , pv = toPrimitive(O);
+ return typeof pv == 'number' && !isFinite(pv) ? null : O.toISOString();
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.date.to-primitive.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.date.to-primitive.js
new file mode 100644
index 0000000..e69de29
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.date.to-string.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.date.to-string.js
new file mode 100644
index 0000000..e69de29
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.function.bind.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.function.bind.js
new file mode 100644
index 0000000..dddd423
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.function.bind.js
@@ -0,0 +1,4 @@
+// 19.2.3.2 / 15.3.4.5 Function.prototype.bind(thisArg, args...)
+var $export = require('./_export');
+
+$export($export.P, 'Function', {bind: require('./_bind')});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.function.has-instance.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.function.has-instance.js
new file mode 100644
index 0000000..ae294b1
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.function.has-instance.js
@@ -0,0 +1,13 @@
+'use strict';
+var isObject = require('./_is-object')
+ , getPrototypeOf = require('./_object-gpo')
+ , HAS_INSTANCE = require('./_wks')('hasInstance')
+ , FunctionProto = Function.prototype;
+// 19.2.3.6 Function.prototype[@@hasInstance](V)
+if(!(HAS_INSTANCE in FunctionProto))require('./_object-dp').f(FunctionProto, HAS_INSTANCE, {value: function(O){
+ if(typeof this != 'function' || !isObject(O))return false;
+ if(!isObject(this.prototype))return O instanceof this;
+ // for environment w/o native `@@hasInstance` logic enough `instanceof`, but add this:
+ while(O = getPrototypeOf(O))if(this.prototype === O)return true;
+ return false;
+}});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.function.name.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.function.name.js
new file mode 100644
index 0000000..e69de29
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.map.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.map.js
new file mode 100644
index 0000000..a166430
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.map.js
@@ -0,0 +1,17 @@
+'use strict';
+var strong = require('./_collection-strong');
+
+// 23.1 Map Objects
+module.exports = require('./_collection')('Map', function(get){
+ return function Map(){ return get(this, arguments.length > 0 ? arguments[0] : undefined); };
+}, {
+ // 23.1.3.6 Map.prototype.get(key)
+ get: function get(key){
+ var entry = strong.getEntry(this, key);
+ return entry && entry.v;
+ },
+ // 23.1.3.9 Map.prototype.set(key, value)
+ set: function set(key, value){
+ return strong.def(this, key === 0 ? 0 : key, value);
+ }
+}, strong, true);
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.math.acosh.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.math.acosh.js
new file mode 100644
index 0000000..9229113
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.math.acosh.js
@@ -0,0 +1,14 @@
+// 20.2.2.3 Math.acosh(x)
+var $export = require('./_export')
+ , log1p = require('./_math-log1p')
+ , sqrt = Math.sqrt
+ , $acosh = Math.acosh;
+
+// V8 bug https://code.google.com/p/v8/issues/detail?id=3509
+$export($export.S + $export.F * !($acosh && Math.floor($acosh(Number.MAX_VALUE)) == 710), 'Math', {
+ acosh: function acosh(x){
+ return (x = +x) < 1 ? NaN : x > 94906265.62425156
+ ? Math.log(x) + Math.LN2
+ : log1p(x - 1 + sqrt(x - 1) * sqrt(x + 1));
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.math.asinh.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.math.asinh.js
new file mode 100644
index 0000000..c78911d
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.math.asinh.js
@@ -0,0 +1,8 @@
+// 20.2.2.5 Math.asinh(x)
+var $export = require('./_export');
+
+function asinh(x){
+ return !isFinite(x = +x) || x == 0 ? x : x < 0 ? -asinh(-x) : Math.log(x + Math.sqrt(x * x + 1));
+}
+
+$export($export.S, 'Math', {asinh: asinh});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.math.atanh.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.math.atanh.js
new file mode 100644
index 0000000..5532d9d
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.math.atanh.js
@@ -0,0 +1,8 @@
+// 20.2.2.7 Math.atanh(x)
+var $export = require('./_export');
+
+$export($export.S, 'Math', {
+ atanh: function atanh(x){
+ return (x = +x) == 0 ? x : Math.log((1 + x) / (1 - x)) / 2;
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.math.cbrt.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.math.cbrt.js
new file mode 100644
index 0000000..7ca7dae
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.math.cbrt.js
@@ -0,0 +1,9 @@
+// 20.2.2.9 Math.cbrt(x)
+var $export = require('./_export')
+ , sign = require('./_math-sign');
+
+$export($export.S, 'Math', {
+ cbrt: function cbrt(x){
+ return sign(x = +x) * Math.pow(Math.abs(x), 1 / 3);
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.math.clz32.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.math.clz32.js
new file mode 100644
index 0000000..1ec534b
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.math.clz32.js
@@ -0,0 +1,8 @@
+// 20.2.2.11 Math.clz32(x)
+var $export = require('./_export');
+
+$export($export.S, 'Math', {
+ clz32: function clz32(x){
+ return (x >>>= 0) ? 31 - Math.floor(Math.log(x + 0.5) * Math.LOG2E) : 32;
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.math.cosh.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.math.cosh.js
new file mode 100644
index 0000000..4f2b215
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.math.cosh.js
@@ -0,0 +1,9 @@
+// 20.2.2.12 Math.cosh(x)
+var $export = require('./_export')
+ , exp = Math.exp;
+
+$export($export.S, 'Math', {
+ cosh: function cosh(x){
+ return (exp(x = +x) + exp(-x)) / 2;
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.math.expm1.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.math.expm1.js
new file mode 100644
index 0000000..8d097d0
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.math.expm1.js
@@ -0,0 +1,4 @@
+// 20.2.2.14 Math.expm1(x)
+var $export = require('./_export');
+
+$export($export.S, 'Math', {expm1: require('./_math-expm1')});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.math.fround.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.math.fround.js
new file mode 100644
index 0000000..01a8886
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.math.fround.js
@@ -0,0 +1,26 @@
+// 20.2.2.16 Math.fround(x)
+var $export = require('./_export')
+ , sign = require('./_math-sign')
+ , pow = Math.pow
+ , EPSILON = pow(2, -52)
+ , EPSILON32 = pow(2, -23)
+ , MAX32 = pow(2, 127) * (2 - EPSILON32)
+ , MIN32 = pow(2, -126);
+
+var roundTiesToEven = function(n){
+ return n + 1 / EPSILON - 1 / EPSILON;
+};
+
+
+$export($export.S, 'Math', {
+ fround: function fround(x){
+ var $abs = Math.abs(x)
+ , $sign = sign(x)
+ , a, result;
+ if($abs < MIN32)return $sign * roundTiesToEven($abs / MIN32 / EPSILON32) * MIN32 * EPSILON32;
+ a = (1 + EPSILON32 / EPSILON) * $abs;
+ result = a - (a - $abs);
+ if(result > MAX32 || result != result)return $sign * Infinity;
+ return $sign * result;
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.math.hypot.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.math.hypot.js
new file mode 100644
index 0000000..508521b
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.math.hypot.js
@@ -0,0 +1,25 @@
+// 20.2.2.17 Math.hypot([value1[, value2[, … ]]])
+var $export = require('./_export')
+ , abs = Math.abs;
+
+$export($export.S, 'Math', {
+ hypot: function hypot(value1, value2){ // eslint-disable-line no-unused-vars
+ var sum = 0
+ , i = 0
+ , aLen = arguments.length
+ , larg = 0
+ , arg, div;
+ while(i < aLen){
+ arg = abs(arguments[i++]);
+ if(larg < arg){
+ div = larg / arg;
+ sum = sum * div * div + 1;
+ larg = arg;
+ } else if(arg > 0){
+ div = arg / larg;
+ sum += div * div;
+ } else sum += arg;
+ }
+ return larg === Infinity ? Infinity : larg * Math.sqrt(sum);
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.math.imul.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.math.imul.js
new file mode 100644
index 0000000..7f4111d
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.math.imul.js
@@ -0,0 +1,17 @@
+// 20.2.2.18 Math.imul(x, y)
+var $export = require('./_export')
+ , $imul = Math.imul;
+
+// some WebKit versions fails with big numbers, some has wrong arity
+$export($export.S + $export.F * require('./_fails')(function(){
+ return $imul(0xffffffff, 5) != -5 || $imul.length != 2;
+}), 'Math', {
+ imul: function imul(x, y){
+ var UINT16 = 0xffff
+ , xn = +x
+ , yn = +y
+ , xl = UINT16 & xn
+ , yl = UINT16 & yn;
+ return 0 | xl * yl + ((UINT16 & xn >>> 16) * yl + xl * (UINT16 & yn >>> 16) << 16 >>> 0);
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.math.log10.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.math.log10.js
new file mode 100644
index 0000000..791dfc3
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.math.log10.js
@@ -0,0 +1,8 @@
+// 20.2.2.21 Math.log10(x)
+var $export = require('./_export');
+
+$export($export.S, 'Math', {
+ log10: function log10(x){
+ return Math.log(x) / Math.LN10;
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.math.log1p.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.math.log1p.js
new file mode 100644
index 0000000..a1de025
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.math.log1p.js
@@ -0,0 +1,4 @@
+// 20.2.2.20 Math.log1p(x)
+var $export = require('./_export');
+
+$export($export.S, 'Math', {log1p: require('./_math-log1p')});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.math.log2.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.math.log2.js
new file mode 100644
index 0000000..c4ba781
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.math.log2.js
@@ -0,0 +1,8 @@
+// 20.2.2.22 Math.log2(x)
+var $export = require('./_export');
+
+$export($export.S, 'Math', {
+ log2: function log2(x){
+ return Math.log(x) / Math.LN2;
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.math.sign.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.math.sign.js
new file mode 100644
index 0000000..5dbee6f
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.math.sign.js
@@ -0,0 +1,4 @@
+// 20.2.2.28 Math.sign(x)
+var $export = require('./_export');
+
+$export($export.S, 'Math', {sign: require('./_math-sign')});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.math.sinh.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.math.sinh.js
new file mode 100644
index 0000000..5464ae3
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.math.sinh.js
@@ -0,0 +1,15 @@
+// 20.2.2.30 Math.sinh(x)
+var $export = require('./_export')
+ , expm1 = require('./_math-expm1')
+ , exp = Math.exp;
+
+// V8 near Chromium 38 has a problem with very small numbers
+$export($export.S + $export.F * require('./_fails')(function(){
+ return !Math.sinh(-2e-17) != -2e-17;
+}), 'Math', {
+ sinh: function sinh(x){
+ return Math.abs(x = +x) < 1
+ ? (expm1(x) - expm1(-x)) / 2
+ : (exp(x - 1) - exp(-x - 1)) * (Math.E / 2);
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.math.tanh.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.math.tanh.js
new file mode 100644
index 0000000..d2f1077
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.math.tanh.js
@@ -0,0 +1,12 @@
+// 20.2.2.33 Math.tanh(x)
+var $export = require('./_export')
+ , expm1 = require('./_math-expm1')
+ , exp = Math.exp;
+
+$export($export.S, 'Math', {
+ tanh: function tanh(x){
+ var a = expm1(x = +x)
+ , b = expm1(-x);
+ return a == Infinity ? 1 : b == Infinity ? -1 : (a - b) / (exp(x) + exp(-x));
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.math.trunc.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.math.trunc.js
new file mode 100644
index 0000000..2e42563
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.math.trunc.js
@@ -0,0 +1,8 @@
+// 20.2.2.34 Math.trunc(x)
+var $export = require('./_export');
+
+$export($export.S, 'Math', {
+ trunc: function trunc(it){
+ return (it > 0 ? Math.floor : Math.ceil)(it);
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.number.constructor.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.number.constructor.js
new file mode 100644
index 0000000..e69de29
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.number.epsilon.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.number.epsilon.js
new file mode 100644
index 0000000..d25898c
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.number.epsilon.js
@@ -0,0 +1,4 @@
+// 20.1.2.1 Number.EPSILON
+var $export = require('./_export');
+
+$export($export.S, 'Number', {EPSILON: Math.pow(2, -52)});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.number.is-finite.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.number.is-finite.js
new file mode 100644
index 0000000..c8c4275
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.number.is-finite.js
@@ -0,0 +1,9 @@
+// 20.1.2.2 Number.isFinite(number)
+var $export = require('./_export')
+ , _isFinite = require('./_global').isFinite;
+
+$export($export.S, 'Number', {
+ isFinite: function isFinite(it){
+ return typeof it == 'number' && _isFinite(it);
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.number.is-integer.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.number.is-integer.js
new file mode 100644
index 0000000..dc0f8f0
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.number.is-integer.js
@@ -0,0 +1,4 @@
+// 20.1.2.3 Number.isInteger(number)
+var $export = require('./_export');
+
+$export($export.S, 'Number', {isInteger: require('./_is-integer')});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.number.is-nan.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.number.is-nan.js
new file mode 100644
index 0000000..5fedf82
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.number.is-nan.js
@@ -0,0 +1,8 @@
+// 20.1.2.4 Number.isNaN(number)
+var $export = require('./_export');
+
+$export($export.S, 'Number', {
+ isNaN: function isNaN(number){
+ return number != number;
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.number.is-safe-integer.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.number.is-safe-integer.js
new file mode 100644
index 0000000..92193e2
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.number.is-safe-integer.js
@@ -0,0 +1,10 @@
+// 20.1.2.5 Number.isSafeInteger(number)
+var $export = require('./_export')
+ , isInteger = require('./_is-integer')
+ , abs = Math.abs;
+
+$export($export.S, 'Number', {
+ isSafeInteger: function isSafeInteger(number){
+ return isInteger(number) && abs(number) <= 0x1fffffffffffff;
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.number.max-safe-integer.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.number.max-safe-integer.js
new file mode 100644
index 0000000..b9d7f2a
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.number.max-safe-integer.js
@@ -0,0 +1,4 @@
+// 20.1.2.6 Number.MAX_SAFE_INTEGER
+var $export = require('./_export');
+
+$export($export.S, 'Number', {MAX_SAFE_INTEGER: 0x1fffffffffffff});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.number.min-safe-integer.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.number.min-safe-integer.js
new file mode 100644
index 0000000..9a2beeb
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.number.min-safe-integer.js
@@ -0,0 +1,4 @@
+// 20.1.2.10 Number.MIN_SAFE_INTEGER
+var $export = require('./_export');
+
+$export($export.S, 'Number', {MIN_SAFE_INTEGER: -0x1fffffffffffff});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.number.parse-float.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.number.parse-float.js
new file mode 100644
index 0000000..7ee14da
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.number.parse-float.js
@@ -0,0 +1,4 @@
+var $export = require('./_export')
+ , $parseFloat = require('./_parse-float');
+// 20.1.2.12 Number.parseFloat(string)
+$export($export.S + $export.F * (Number.parseFloat != $parseFloat), 'Number', {parseFloat: $parseFloat});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.number.parse-int.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.number.parse-int.js
new file mode 100644
index 0000000..59bf144
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.number.parse-int.js
@@ -0,0 +1,4 @@
+var $export = require('./_export')
+ , $parseInt = require('./_parse-int');
+// 20.1.2.13 Number.parseInt(string, radix)
+$export($export.S + $export.F * (Number.parseInt != $parseInt), 'Number', {parseInt: $parseInt});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.number.to-fixed.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.number.to-fixed.js
new file mode 100644
index 0000000..b54bdf1
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.number.to-fixed.js
@@ -0,0 +1,114 @@
+'use strict';
+var $export = require('./_export')
+ , anInstance = require('./_an-instance')
+ , toInteger = require('./_to-integer')
+ , aNumberValue = require('./_a-number-value')
+ , repeat = require('./_string-repeat')
+ , $toFixed = 1..toFixed
+ , floor = Math.floor
+ , data = [0, 0, 0, 0, 0, 0]
+ , ERROR = 'Number.toFixed: incorrect invocation!'
+ , ZERO = '0';
+
+var multiply = function(n, c){
+ var i = -1
+ , c2 = c;
+ while(++i < 6){
+ c2 += n * data[i];
+ data[i] = c2 % 1e7;
+ c2 = floor(c2 / 1e7);
+ }
+};
+var divide = function(n){
+ var i = 6
+ , c = 0;
+ while(--i >= 0){
+ c += data[i];
+ data[i] = floor(c / n);
+ c = (c % n) * 1e7;
+ }
+};
+var numToString = function(){
+ var i = 6
+ , s = '';
+ while(--i >= 0){
+ if(s !== '' || i === 0 || data[i] !== 0){
+ var t = String(data[i]);
+ s = s === '' ? t : s + repeat.call(ZERO, 7 - t.length) + t;
+ }
+ } return s;
+};
+var pow = function(x, n, acc){
+ return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);
+};
+var log = function(x){
+ var n = 0
+ , x2 = x;
+ while(x2 >= 4096){
+ n += 12;
+ x2 /= 4096;
+ }
+ while(x2 >= 2){
+ n += 1;
+ x2 /= 2;
+ } return n;
+};
+
+$export($export.P + $export.F * (!!$toFixed && (
+ 0.00008.toFixed(3) !== '0.000' ||
+ 0.9.toFixed(0) !== '1' ||
+ 1.255.toFixed(2) !== '1.25' ||
+ 1000000000000000128..toFixed(0) !== '1000000000000000128'
+) || !require('./_fails')(function(){
+ // V8 ~ Android 4.3-
+ $toFixed.call({});
+})), 'Number', {
+ toFixed: function toFixed(fractionDigits){
+ var x = aNumberValue(this, ERROR)
+ , f = toInteger(fractionDigits)
+ , s = ''
+ , m = ZERO
+ , e, z, j, k;
+ if(f < 0 || f > 20)throw RangeError(ERROR);
+ if(x != x)return 'NaN';
+ if(x <= -1e21 || x >= 1e21)return String(x);
+ if(x < 0){
+ s = '-';
+ x = -x;
+ }
+ if(x > 1e-21){
+ e = log(x * pow(2, 69, 1)) - 69;
+ z = e < 0 ? x * pow(2, -e, 1) : x / pow(2, e, 1);
+ z *= 0x10000000000000;
+ e = 52 - e;
+ if(e > 0){
+ multiply(0, z);
+ j = f;
+ while(j >= 7){
+ multiply(1e7, 0);
+ j -= 7;
+ }
+ multiply(pow(10, j, 1), 0);
+ j = e - 1;
+ while(j >= 23){
+ divide(1 << 23);
+ j -= 23;
+ }
+ divide(1 << j);
+ multiply(1, 1);
+ divide(2);
+ m = numToString();
+ } else {
+ multiply(0, z);
+ multiply(1 << -e, 0);
+ m = numToString() + repeat.call(ZERO, f);
+ }
+ }
+ if(f > 0){
+ k = m.length;
+ m = s + (k <= f ? '0.' + repeat.call(ZERO, f - k) + m : m.slice(0, k - f) + '.' + m.slice(k - f));
+ } else {
+ m = s + m;
+ } return m;
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.number.to-precision.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.number.to-precision.js
new file mode 100644
index 0000000..d795b94
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.number.to-precision.js
@@ -0,0 +1,18 @@
+'use strict';
+var $export = require('./_export')
+ , $fails = require('./_fails')
+ , aNumberValue = require('./_a-number-value')
+ , $toPrecision = 1..toPrecision;
+
+$export($export.P + $export.F * ($fails(function(){
+ // IE7-
+ return $toPrecision.call(1, undefined) !== '1';
+}) || !$fails(function(){
+ // V8 ~ Android 4.3-
+ $toPrecision.call({});
+})), 'Number', {
+ toPrecision: function toPrecision(precision){
+ var that = aNumberValue(this, 'Number#toPrecision: incorrect invocation!');
+ return precision === undefined ? $toPrecision.call(that) : $toPrecision.call(that, precision);
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.object.assign.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.object.assign.js
new file mode 100644
index 0000000..13eda2c
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.object.assign.js
@@ -0,0 +1,4 @@
+// 19.1.3.1 Object.assign(target, source)
+var $export = require('./_export');
+
+$export($export.S + $export.F, 'Object', {assign: require('./_object-assign')});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.object.create.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.object.create.js
new file mode 100644
index 0000000..51b5b3a
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.object.create.js
@@ -0,0 +1,3 @@
+var $export = require('./_export')
+// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
+$export($export.S, 'Object', {create: require('./_object-create')});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.object.define-properties.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.object.define-properties.js
new file mode 100644
index 0000000..96ad415
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.object.define-properties.js
@@ -0,0 +1,3 @@
+var $export = require('./_export');
+// 19.1.2.3 / 15.2.3.7 Object.defineProperties(O, Properties)
+$export($export.S + $export.F * !require('./_descriptors'), 'Object', {defineProperties: require('./_object-dps')});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.object.define-property.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.object.define-property.js
new file mode 100644
index 0000000..5e9e7f8
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.object.define-property.js
@@ -0,0 +1,3 @@
+var $export = require('./_export');
+// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)
+$export($export.S + $export.F * !require('./_descriptors'), 'Object', {defineProperty: require('./_object-dp').f});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.object.freeze.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.object.freeze.js
new file mode 100644
index 0000000..34b5108
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.object.freeze.js
@@ -0,0 +1,9 @@
+// 19.1.2.5 Object.freeze(O)
+var isObject = require('./_is-object')
+ , meta = require('./_meta').onFreeze;
+
+require('./_object-sap')('freeze', function($freeze){
+ return function freeze(it){
+ return $freeze && isObject(it) ? $freeze(meta(it)) : it;
+ };
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.object.get-own-property-descriptor.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.object.get-own-property-descriptor.js
new file mode 100644
index 0000000..60c6991
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.object.get-own-property-descriptor.js
@@ -0,0 +1,9 @@
+// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)
+var toIObject = require('./_to-iobject')
+ , $getOwnPropertyDescriptor = require('./_object-gopd').f;
+
+require('./_object-sap')('getOwnPropertyDescriptor', function(){
+ return function getOwnPropertyDescriptor(it, key){
+ return $getOwnPropertyDescriptor(toIObject(it), key);
+ };
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.object.get-own-property-names.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.object.get-own-property-names.js
new file mode 100644
index 0000000..91dd110
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.object.get-own-property-names.js
@@ -0,0 +1,4 @@
+// 19.1.2.7 Object.getOwnPropertyNames(O)
+require('./_object-sap')('getOwnPropertyNames', function(){
+ return require('./_object-gopn-ext').f;
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.object.get-prototype-of.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.object.get-prototype-of.js
new file mode 100644
index 0000000..b124e28
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.object.get-prototype-of.js
@@ -0,0 +1,9 @@
+// 19.1.2.9 Object.getPrototypeOf(O)
+var toObject = require('./_to-object')
+ , $getPrototypeOf = require('./_object-gpo');
+
+require('./_object-sap')('getPrototypeOf', function(){
+ return function getPrototypeOf(it){
+ return $getPrototypeOf(toObject(it));
+ };
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.object.is-extensible.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.object.is-extensible.js
new file mode 100644
index 0000000..94bf8a8
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.object.is-extensible.js
@@ -0,0 +1,8 @@
+// 19.1.2.11 Object.isExtensible(O)
+var isObject = require('./_is-object');
+
+require('./_object-sap')('isExtensible', function($isExtensible){
+ return function isExtensible(it){
+ return isObject(it) ? $isExtensible ? $isExtensible(it) : true : false;
+ };
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.object.is-frozen.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.object.is-frozen.js
new file mode 100644
index 0000000..4bdfd11
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.object.is-frozen.js
@@ -0,0 +1,8 @@
+// 19.1.2.12 Object.isFrozen(O)
+var isObject = require('./_is-object');
+
+require('./_object-sap')('isFrozen', function($isFrozen){
+ return function isFrozen(it){
+ return isObject(it) ? $isFrozen ? $isFrozen(it) : false : true;
+ };
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.object.is-sealed.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.object.is-sealed.js
new file mode 100644
index 0000000..d13aa1b
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.object.is-sealed.js
@@ -0,0 +1,8 @@
+// 19.1.2.13 Object.isSealed(O)
+var isObject = require('./_is-object');
+
+require('./_object-sap')('isSealed', function($isSealed){
+ return function isSealed(it){
+ return isObject(it) ? $isSealed ? $isSealed(it) : false : true;
+ };
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.object.is.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.object.is.js
new file mode 100644
index 0000000..ad29942
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.object.is.js
@@ -0,0 +1,3 @@
+// 19.1.3.10 Object.is(value1, value2)
+var $export = require('./_export');
+$export($export.S, 'Object', {is: require('./_same-value')});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.object.keys.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.object.keys.js
new file mode 100644
index 0000000..bf76c07
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.object.keys.js
@@ -0,0 +1,9 @@
+// 19.1.2.14 Object.keys(O)
+var toObject = require('./_to-object')
+ , $keys = require('./_object-keys');
+
+require('./_object-sap')('keys', function(){
+ return function keys(it){
+ return $keys(toObject(it));
+ };
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.object.prevent-extensions.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.object.prevent-extensions.js
new file mode 100644
index 0000000..adaff7a
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.object.prevent-extensions.js
@@ -0,0 +1,9 @@
+// 19.1.2.15 Object.preventExtensions(O)
+var isObject = require('./_is-object')
+ , meta = require('./_meta').onFreeze;
+
+require('./_object-sap')('preventExtensions', function($preventExtensions){
+ return function preventExtensions(it){
+ return $preventExtensions && isObject(it) ? $preventExtensions(meta(it)) : it;
+ };
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.object.seal.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.object.seal.js
new file mode 100644
index 0000000..d7e4ea9
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.object.seal.js
@@ -0,0 +1,9 @@
+// 19.1.2.17 Object.seal(O)
+var isObject = require('./_is-object')
+ , meta = require('./_meta').onFreeze;
+
+require('./_object-sap')('seal', function($seal){
+ return function seal(it){
+ return $seal && isObject(it) ? $seal(meta(it)) : it;
+ };
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.object.set-prototype-of.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.object.set-prototype-of.js
new file mode 100644
index 0000000..5bbe4c0
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.object.set-prototype-of.js
@@ -0,0 +1,3 @@
+// 19.1.3.19 Object.setPrototypeOf(O, proto)
+var $export = require('./_export');
+$export($export.S, 'Object', {setPrototypeOf: require('./_set-proto').set});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.object.to-string.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.object.to-string.js
new file mode 100644
index 0000000..e69de29
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.parse-float.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.parse-float.js
new file mode 100644
index 0000000..bb23071
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.parse-float.js
@@ -0,0 +1,4 @@
+var $export = require('./_export')
+ , $parseFloat = require('./_parse-float');
+// 18.2.4 parseFloat(string)
+$export($export.G + $export.F * (parseFloat != $parseFloat), {parseFloat: $parseFloat});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.parse-int.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.parse-int.js
new file mode 100644
index 0000000..e489826
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.parse-int.js
@@ -0,0 +1,4 @@
+var $export = require('./_export')
+ , $parseInt = require('./_parse-int');
+// 18.2.5 parseInt(string, radix)
+$export($export.G + $export.F * (parseInt != $parseInt), {parseInt: $parseInt});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.promise.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.promise.js
new file mode 100644
index 0000000..f570867
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.promise.js
@@ -0,0 +1,301 @@
+'use strict';
+var LIBRARY = require('./_library')
+ , global = require('./_global')
+ , ctx = require('./_ctx')
+ , classof = require('./_classof')
+ , $export = require('./_export')
+ , isObject = require('./_is-object')
+ , anObject = require('./_an-object')
+ , aFunction = require('./_a-function')
+ , anInstance = require('./_an-instance')
+ , forOf = require('./_for-of')
+ , setProto = require('./_set-proto').set
+ , speciesConstructor = require('./_species-constructor')
+ , task = require('./_task').set
+ , microtask = require('./_microtask')
+ , PROMISE = 'Promise'
+ , TypeError = global.TypeError
+ , process = global.process
+ , $Promise = global[PROMISE]
+ , process = global.process
+ , isNode = classof(process) == 'process'
+ , empty = function(){ /* empty */ }
+ , Internal, GenericPromiseCapability, Wrapper;
+
+var USE_NATIVE = !!function(){
+ try {
+ // correct subclassing with @@species support
+ var promise = $Promise.resolve(1)
+ , FakePromise = (promise.constructor = {})[require('./_wks')('species')] = function(exec){ exec(empty, empty); };
+ // unhandled rejections tracking support, NodeJS Promise without it fails @@species test
+ return (isNode || typeof PromiseRejectionEvent == 'function') && promise.then(empty) instanceof FakePromise;
+ } catch(e){ /* empty */ }
+}();
+
+// helpers
+var sameConstructor = function(a, b){
+ // with library wrapper special case
+ return a === b || a === $Promise && b === Wrapper;
+};
+var isThenable = function(it){
+ var then;
+ return isObject(it) && typeof (then = it.then) == 'function' ? then : false;
+};
+var newPromiseCapability = function(C){
+ return sameConstructor($Promise, C)
+ ? new PromiseCapability(C)
+ : new GenericPromiseCapability(C);
+};
+var PromiseCapability = GenericPromiseCapability = function(C){
+ var resolve, reject;
+ this.promise = new C(function($$resolve, $$reject){
+ if(resolve !== undefined || reject !== undefined)throw TypeError('Bad Promise constructor');
+ resolve = $$resolve;
+ reject = $$reject;
+ });
+ this.resolve = aFunction(resolve);
+ this.reject = aFunction(reject);
+};
+var perform = function(exec){
+ try {
+ exec();
+ } catch(e){
+ return {error: e};
+ }
+};
+var notify = function(promise, isReject){
+ if(promise._n)return;
+ promise._n = true;
+ var chain = promise._c;
+ microtask(function(){
+ var value = promise._v
+ , ok = promise._s == 1
+ , i = 0;
+ var run = function(reaction){
+ var handler = ok ? reaction.ok : reaction.fail
+ , resolve = reaction.resolve
+ , reject = reaction.reject
+ , domain = reaction.domain
+ , result, then;
+ try {
+ if(handler){
+ if(!ok){
+ if(promise._h == 2)onHandleUnhandled(promise);
+ promise._h = 1;
+ }
+ if(handler === true)result = value;
+ else {
+ if(domain)domain.enter();
+ result = handler(value);
+ if(domain)domain.exit();
+ }
+ if(result === reaction.promise){
+ reject(TypeError('Promise-chain cycle'));
+ } else if(then = isThenable(result)){
+ then.call(result, resolve, reject);
+ } else resolve(result);
+ } else reject(value);
+ } catch(e){
+ reject(e);
+ }
+ };
+ while(chain.length > i)run(chain[i++]); // variable length - can't use forEach
+ promise._c = [];
+ promise._n = false;
+ if(isReject && !promise._h)onUnhandled(promise);
+ });
+};
+var onUnhandled = function(promise){
+ task.call(global, function(){
+ var value = promise._v
+ , abrupt, handler, console;
+ if(isUnhandled(promise)){
+ abrupt = perform(function(){
+ if(isNode){
+ process.emit('unhandledRejection', value, promise);
+ } else if(handler = global.onunhandledrejection){
+ handler({promise: promise, reason: value});
+ } else if((console = global.console) && console.error){
+ console.error('Unhandled promise rejection', value);
+ }
+ });
+ // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should
+ promise._h = isNode || isUnhandled(promise) ? 2 : 1;
+ } promise._a = undefined;
+ if(abrupt)throw abrupt.error;
+ });
+};
+var isUnhandled = function(promise){
+ if(promise._h == 1)return false;
+ var chain = promise._a || promise._c
+ , i = 0
+ , reaction;
+ while(chain.length > i){
+ reaction = chain[i++];
+ if(reaction.fail || !isUnhandled(reaction.promise))return false;
+ } return true;
+};
+var onHandleUnhandled = function(promise){
+ task.call(global, function(){
+ var handler;
+ if(isNode){
+ process.emit('rejectionHandled', promise);
+ } else if(handler = global.onrejectionhandled){
+ handler({promise: promise, reason: promise._v});
+ }
+ });
+};
+var $reject = function(value){
+ var promise = this;
+ if(promise._d)return;
+ promise._d = true;
+ promise = promise._w || promise; // unwrap
+ promise._v = value;
+ promise._s = 2;
+ if(!promise._a)promise._a = promise._c.slice();
+ notify(promise, true);
+};
+var $resolve = function(value){
+ var promise = this
+ , then;
+ if(promise._d)return;
+ promise._d = true;
+ promise = promise._w || promise; // unwrap
+ try {
+ if(promise === value)throw TypeError("Promise can't be resolved itself");
+ if(then = isThenable(value)){
+ microtask(function(){
+ var wrapper = {_w: promise, _d: false}; // wrap
+ try {
+ then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));
+ } catch(e){
+ $reject.call(wrapper, e);
+ }
+ });
+ } else {
+ promise._v = value;
+ promise._s = 1;
+ notify(promise, false);
+ }
+ } catch(e){
+ $reject.call({_w: promise, _d: false}, e); // wrap
+ }
+};
+
+// constructor polyfill
+if(!USE_NATIVE){
+ // 25.4.3.1 Promise(executor)
+ $Promise = function Promise(executor){
+ anInstance(this, $Promise, PROMISE, '_h');
+ aFunction(executor);
+ Internal.call(this);
+ try {
+ executor(ctx($resolve, this, 1), ctx($reject, this, 1));
+ } catch(err){
+ $reject.call(this, err);
+ }
+ };
+ Internal = function Promise(executor){
+ this._c = []; // <- awaiting reactions
+ this._a = undefined; // <- checked in isUnhandled reactions
+ this._s = 0; // <- state
+ this._d = false; // <- done
+ this._v = undefined; // <- value
+ this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled
+ this._n = false; // <- notify
+ };
+ Internal.prototype = require('./_redefine-all')($Promise.prototype, {
+ // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)
+ then: function then(onFulfilled, onRejected){
+ var reaction = newPromiseCapability(speciesConstructor(this, $Promise));
+ reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;
+ reaction.fail = typeof onRejected == 'function' && onRejected;
+ reaction.domain = isNode ? process.domain : undefined;
+ this._c.push(reaction);
+ if(this._a)this._a.push(reaction);
+ if(this._s)notify(this, false);
+ return reaction.promise;
+ },
+ // 25.4.5.1 Promise.prototype.catch(onRejected)
+ 'catch': function(onRejected){
+ return this.then(undefined, onRejected);
+ }
+ });
+ PromiseCapability = function(){
+ var promise = new Internal;
+ this.promise = promise;
+ this.resolve = ctx($resolve, promise, 1);
+ this.reject = ctx($reject, promise, 1);
+ };
+}
+
+$export($export.G + $export.W + $export.F * !USE_NATIVE, {Promise: $Promise});
+require('./_set-to-string-tag')($Promise, PROMISE);
+require('./_set-species')(PROMISE);
+Wrapper = require('./_core')[PROMISE];
+
+// statics
+$export($export.S + $export.F * !USE_NATIVE, PROMISE, {
+ // 25.4.4.5 Promise.reject(r)
+ reject: function reject(r){
+ var capability = newPromiseCapability(this)
+ , $$reject = capability.reject;
+ $$reject(r);
+ return capability.promise;
+ }
+});
+$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {
+ // 25.4.4.6 Promise.resolve(x)
+ resolve: function resolve(x){
+ // instanceof instead of internal slot check because we should fix it without replacement native Promise core
+ if(x instanceof $Promise && sameConstructor(x.constructor, this))return x;
+ var capability = newPromiseCapability(this)
+ , $$resolve = capability.resolve;
+ $$resolve(x);
+ return capability.promise;
+ }
+});
+$export($export.S + $export.F * !(USE_NATIVE && require('./_iter-detect')(function(iter){
+ $Promise.all(iter)['catch'](empty);
+})), PROMISE, {
+ // 25.4.4.1 Promise.all(iterable)
+ all: function all(iterable){
+ var C = this
+ , capability = newPromiseCapability(C)
+ , resolve = capability.resolve
+ , reject = capability.reject;
+ var abrupt = perform(function(){
+ var values = []
+ , index = 0
+ , remaining = 1;
+ forOf(iterable, false, function(promise){
+ var $index = index++
+ , alreadyCalled = false;
+ values.push(undefined);
+ remaining++;
+ C.resolve(promise).then(function(value){
+ if(alreadyCalled)return;
+ alreadyCalled = true;
+ values[$index] = value;
+ --remaining || resolve(values);
+ }, reject);
+ });
+ --remaining || resolve(values);
+ });
+ if(abrupt)reject(abrupt.error);
+ return capability.promise;
+ },
+ // 25.4.4.4 Promise.race(iterable)
+ race: function race(iterable){
+ var C = this
+ , capability = newPromiseCapability(C)
+ , reject = capability.reject;
+ var abrupt = perform(function(){
+ forOf(iterable, false, function(promise){
+ C.resolve(promise).then(capability.resolve, reject);
+ });
+ });
+ if(abrupt)reject(abrupt.error);
+ return capability.promise;
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.reflect.apply.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.reflect.apply.js
new file mode 100644
index 0000000..d2c167f
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.reflect.apply.js
@@ -0,0 +1,9 @@
+// 26.1.1 Reflect.apply(target, thisArgument, argumentsList)
+var $export = require('./_export')
+ , _apply = Function.apply;
+
+$export($export.S, 'Reflect', {
+ apply: function apply(target, thisArgument, argumentsList){
+ return _apply.call(target, thisArgument, argumentsList);
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.reflect.construct.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.reflect.construct.js
new file mode 100644
index 0000000..fb5c69a
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.reflect.construct.js
@@ -0,0 +1,38 @@
+// 26.1.2 Reflect.construct(target, argumentsList [, newTarget])
+var $export = require('./_export')
+ , create = require('./_object-create')
+ , aFunction = require('./_a-function')
+ , anObject = require('./_an-object')
+ , isObject = require('./_is-object')
+ , bind = require('./_bind');
+
+// MS Edge supports only 2 arguments
+// FF Nightly sets third argument as `new.target`, but does not create `this` from it
+$export($export.S + $export.F * require('./_fails')(function(){
+ function F(){}
+ return !(Reflect.construct(function(){}, [], F) instanceof F);
+}), 'Reflect', {
+ construct: function construct(Target, args /*, newTarget*/){
+ aFunction(Target);
+ var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);
+ if(Target == newTarget){
+ // w/o altered newTarget, optimization for 0-4 arguments
+ if(args != undefined)switch(anObject(args).length){
+ case 0: return new Target;
+ case 1: return new Target(args[0]);
+ case 2: return new Target(args[0], args[1]);
+ case 3: return new Target(args[0], args[1], args[2]);
+ case 4: return new Target(args[0], args[1], args[2], args[3]);
+ }
+ // w/o altered newTarget, lot of arguments case
+ var $args = [null];
+ $args.push.apply($args, args);
+ return new (bind.apply(Target, $args));
+ }
+ // with altered newTarget, not support built-in constructors
+ var proto = newTarget.prototype
+ , instance = create(isObject(proto) ? proto : Object.prototype)
+ , result = Function.apply.call(Target, instance, args);
+ return isObject(result) ? result : instance;
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.reflect.define-property.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.reflect.define-property.js
new file mode 100644
index 0000000..485d43c
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.reflect.define-property.js
@@ -0,0 +1,22 @@
+// 26.1.3 Reflect.defineProperty(target, propertyKey, attributes)
+var dP = require('./_object-dp')
+ , $export = require('./_export')
+ , anObject = require('./_an-object')
+ , toPrimitive = require('./_to-primitive');
+
+// MS Edge has broken Reflect.defineProperty - throwing instead of returning false
+$export($export.S + $export.F * require('./_fails')(function(){
+ Reflect.defineProperty(dP.f({}, 1, {value: 1}), 1, {value: 2});
+}), 'Reflect', {
+ defineProperty: function defineProperty(target, propertyKey, attributes){
+ anObject(target);
+ propertyKey = toPrimitive(propertyKey, true);
+ anObject(attributes);
+ try {
+ dP.f(target, propertyKey, attributes);
+ return true;
+ } catch(e){
+ return false;
+ }
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.reflect.delete-property.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.reflect.delete-property.js
new file mode 100644
index 0000000..4e8ce20
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.reflect.delete-property.js
@@ -0,0 +1,11 @@
+// 26.1.4 Reflect.deleteProperty(target, propertyKey)
+var $export = require('./_export')
+ , gOPD = require('./_object-gopd').f
+ , anObject = require('./_an-object');
+
+$export($export.S, 'Reflect', {
+ deleteProperty: function deleteProperty(target, propertyKey){
+ var desc = gOPD(anObject(target), propertyKey);
+ return desc && !desc.configurable ? false : delete target[propertyKey];
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.reflect.enumerate.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.reflect.enumerate.js
new file mode 100644
index 0000000..abdb132
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.reflect.enumerate.js
@@ -0,0 +1,26 @@
+'use strict';
+// 26.1.5 Reflect.enumerate(target)
+var $export = require('./_export')
+ , anObject = require('./_an-object');
+var Enumerate = function(iterated){
+ this._t = anObject(iterated); // target
+ this._i = 0; // next index
+ var keys = this._k = [] // keys
+ , key;
+ for(key in iterated)keys.push(key);
+};
+require('./_iter-create')(Enumerate, 'Object', function(){
+ var that = this
+ , keys = that._k
+ , key;
+ do {
+ if(that._i >= keys.length)return {value: undefined, done: true};
+ } while(!((key = keys[that._i++]) in that._t));
+ return {value: key, done: false};
+});
+
+$export($export.S, 'Reflect', {
+ enumerate: function enumerate(target){
+ return new Enumerate(target);
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.reflect.get-own-property-descriptor.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.reflect.get-own-property-descriptor.js
new file mode 100644
index 0000000..741a13e
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.reflect.get-own-property-descriptor.js
@@ -0,0 +1,10 @@
+// 26.1.7 Reflect.getOwnPropertyDescriptor(target, propertyKey)
+var gOPD = require('./_object-gopd')
+ , $export = require('./_export')
+ , anObject = require('./_an-object');
+
+$export($export.S, 'Reflect', {
+ getOwnPropertyDescriptor: function getOwnPropertyDescriptor(target, propertyKey){
+ return gOPD.f(anObject(target), propertyKey);
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.reflect.get-prototype-of.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.reflect.get-prototype-of.js
new file mode 100644
index 0000000..4f912d1
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.reflect.get-prototype-of.js
@@ -0,0 +1,10 @@
+// 26.1.8 Reflect.getPrototypeOf(target)
+var $export = require('./_export')
+ , getProto = require('./_object-gpo')
+ , anObject = require('./_an-object');
+
+$export($export.S, 'Reflect', {
+ getPrototypeOf: function getPrototypeOf(target){
+ return getProto(anObject(target));
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.reflect.get.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.reflect.get.js
new file mode 100644
index 0000000..f8c39f5
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.reflect.get.js
@@ -0,0 +1,21 @@
+// 26.1.6 Reflect.get(target, propertyKey [, receiver])
+var gOPD = require('./_object-gopd')
+ , getPrototypeOf = require('./_object-gpo')
+ , has = require('./_has')
+ , $export = require('./_export')
+ , isObject = require('./_is-object')
+ , anObject = require('./_an-object');
+
+function get(target, propertyKey/*, receiver*/){
+ var receiver = arguments.length < 3 ? target : arguments[2]
+ , desc, proto;
+ if(anObject(target) === receiver)return target[propertyKey];
+ if(desc = gOPD.f(target, propertyKey))return has(desc, 'value')
+ ? desc.value
+ : desc.get !== undefined
+ ? desc.get.call(receiver)
+ : undefined;
+ if(isObject(proto = getPrototypeOf(target)))return get(proto, propertyKey, receiver);
+}
+
+$export($export.S, 'Reflect', {get: get});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.reflect.has.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.reflect.has.js
new file mode 100644
index 0000000..bbb6dbc
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.reflect.has.js
@@ -0,0 +1,8 @@
+// 26.1.9 Reflect.has(target, propertyKey)
+var $export = require('./_export');
+
+$export($export.S, 'Reflect', {
+ has: function has(target, propertyKey){
+ return propertyKey in target;
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.reflect.is-extensible.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.reflect.is-extensible.js
new file mode 100644
index 0000000..ffbc284
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.reflect.is-extensible.js
@@ -0,0 +1,11 @@
+// 26.1.10 Reflect.isExtensible(target)
+var $export = require('./_export')
+ , anObject = require('./_an-object')
+ , $isExtensible = Object.isExtensible;
+
+$export($export.S, 'Reflect', {
+ isExtensible: function isExtensible(target){
+ anObject(target);
+ return $isExtensible ? $isExtensible(target) : true;
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.reflect.own-keys.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.reflect.own-keys.js
new file mode 100644
index 0000000..a1e5330
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.reflect.own-keys.js
@@ -0,0 +1,4 @@
+// 26.1.11 Reflect.ownKeys(target)
+var $export = require('./_export');
+
+$export($export.S, 'Reflect', {ownKeys: require('./_own-keys')});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.reflect.prevent-extensions.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.reflect.prevent-extensions.js
new file mode 100644
index 0000000..d3dad8e
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.reflect.prevent-extensions.js
@@ -0,0 +1,16 @@
+// 26.1.12 Reflect.preventExtensions(target)
+var $export = require('./_export')
+ , anObject = require('./_an-object')
+ , $preventExtensions = Object.preventExtensions;
+
+$export($export.S, 'Reflect', {
+ preventExtensions: function preventExtensions(target){
+ anObject(target);
+ try {
+ if($preventExtensions)$preventExtensions(target);
+ return true;
+ } catch(e){
+ return false;
+ }
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.reflect.set-prototype-of.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.reflect.set-prototype-of.js
new file mode 100644
index 0000000..b79d9b6
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.reflect.set-prototype-of.js
@@ -0,0 +1,15 @@
+// 26.1.14 Reflect.setPrototypeOf(target, proto)
+var $export = require('./_export')
+ , setProto = require('./_set-proto');
+
+if(setProto)$export($export.S, 'Reflect', {
+ setPrototypeOf: function setPrototypeOf(target, proto){
+ setProto.check(target, proto);
+ try {
+ setProto.set(target, proto);
+ return true;
+ } catch(e){
+ return false;
+ }
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.reflect.set.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.reflect.set.js
new file mode 100644
index 0000000..c6b916a
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.reflect.set.js
@@ -0,0 +1,31 @@
+// 26.1.13 Reflect.set(target, propertyKey, V [, receiver])
+var dP = require('./_object-dp')
+ , gOPD = require('./_object-gopd')
+ , getPrototypeOf = require('./_object-gpo')
+ , has = require('./_has')
+ , $export = require('./_export')
+ , createDesc = require('./_property-desc')
+ , anObject = require('./_an-object')
+ , isObject = require('./_is-object');
+
+function set(target, propertyKey, V/*, receiver*/){
+ var receiver = arguments.length < 4 ? target : arguments[3]
+ , ownDesc = gOPD.f(anObject(target), propertyKey)
+ , existingDescriptor, proto;
+ if(!ownDesc){
+ if(isObject(proto = getPrototypeOf(target))){
+ return set(proto, propertyKey, V, receiver);
+ }
+ ownDesc = createDesc(0);
+ }
+ if(has(ownDesc, 'value')){
+ if(ownDesc.writable === false || !isObject(receiver))return false;
+ existingDescriptor = gOPD.f(receiver, propertyKey) || createDesc(0);
+ existingDescriptor.value = V;
+ dP.f(receiver, propertyKey, existingDescriptor);
+ return true;
+ }
+ return ownDesc.set === undefined ? false : (ownDesc.set.call(receiver, V), true);
+}
+
+$export($export.S, 'Reflect', {set: set});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.regexp.constructor.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.regexp.constructor.js
new file mode 100644
index 0000000..7313c52
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.regexp.constructor.js
@@ -0,0 +1 @@
+require('./_set-species')('RegExp');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.regexp.flags.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.regexp.flags.js
new file mode 100644
index 0000000..e69de29
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.regexp.match.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.regexp.match.js
new file mode 100644
index 0000000..e69de29
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.regexp.replace.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.regexp.replace.js
new file mode 100644
index 0000000..e69de29
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.regexp.search.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.regexp.search.js
new file mode 100644
index 0000000..e69de29
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.regexp.split.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.regexp.split.js
new file mode 100644
index 0000000..e69de29
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.regexp.to-string.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.regexp.to-string.js
new file mode 100644
index 0000000..e69de29
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.set.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.set.js
new file mode 100644
index 0000000..a188088
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.set.js
@@ -0,0 +1,12 @@
+'use strict';
+var strong = require('./_collection-strong');
+
+// 23.2 Set Objects
+module.exports = require('./_collection')('Set', function(get){
+ return function Set(){ return get(this, arguments.length > 0 ? arguments[0] : undefined); };
+}, {
+ // 23.2.3.1 Set.prototype.add(value)
+ add: function add(value){
+ return strong.def(this, value = value === 0 ? 0 : value, value);
+ }
+}, strong);
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.string.anchor.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.string.anchor.js
new file mode 100644
index 0000000..65db252
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.string.anchor.js
@@ -0,0 +1,7 @@
+'use strict';
+// B.2.3.2 String.prototype.anchor(name)
+require('./_string-html')('anchor', function(createHTML){
+ return function anchor(name){
+ return createHTML(this, 'a', 'name', name);
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.string.big.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.string.big.js
new file mode 100644
index 0000000..aeeb1ab
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.string.big.js
@@ -0,0 +1,7 @@
+'use strict';
+// B.2.3.3 String.prototype.big()
+require('./_string-html')('big', function(createHTML){
+ return function big(){
+ return createHTML(this, 'big', '', '');
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.string.blink.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.string.blink.js
new file mode 100644
index 0000000..aef8da2
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.string.blink.js
@@ -0,0 +1,7 @@
+'use strict';
+// B.2.3.4 String.prototype.blink()
+require('./_string-html')('blink', function(createHTML){
+ return function blink(){
+ return createHTML(this, 'blink', '', '');
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.string.bold.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.string.bold.js
new file mode 100644
index 0000000..022cdb0
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.string.bold.js
@@ -0,0 +1,7 @@
+'use strict';
+// B.2.3.5 String.prototype.bold()
+require('./_string-html')('bold', function(createHTML){
+ return function bold(){
+ return createHTML(this, 'b', '', '');
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.string.code-point-at.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.string.code-point-at.js
new file mode 100644
index 0000000..cf54465
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.string.code-point-at.js
@@ -0,0 +1,9 @@
+'use strict';
+var $export = require('./_export')
+ , $at = require('./_string-at')(false);
+$export($export.P, 'String', {
+ // 21.1.3.3 String.prototype.codePointAt(pos)
+ codePointAt: function codePointAt(pos){
+ return $at(this, pos);
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.string.ends-with.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.string.ends-with.js
new file mode 100644
index 0000000..80baed9
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.string.ends-with.js
@@ -0,0 +1,20 @@
+// 21.1.3.6 String.prototype.endsWith(searchString [, endPosition])
+'use strict';
+var $export = require('./_export')
+ , toLength = require('./_to-length')
+ , context = require('./_string-context')
+ , ENDS_WITH = 'endsWith'
+ , $endsWith = ''[ENDS_WITH];
+
+$export($export.P + $export.F * require('./_fails-is-regexp')(ENDS_WITH), 'String', {
+ endsWith: function endsWith(searchString /*, endPosition = @length */){
+ var that = context(this, searchString, ENDS_WITH)
+ , endPosition = arguments.length > 1 ? arguments[1] : undefined
+ , len = toLength(that.length)
+ , end = endPosition === undefined ? len : Math.min(toLength(endPosition), len)
+ , search = String(searchString);
+ return $endsWith
+ ? $endsWith.call(that, search, end)
+ : that.slice(end - search.length, end) === search;
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.string.fixed.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.string.fixed.js
new file mode 100644
index 0000000..d017e20
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.string.fixed.js
@@ -0,0 +1,7 @@
+'use strict';
+// B.2.3.6 String.prototype.fixed()
+require('./_string-html')('fixed', function(createHTML){
+ return function fixed(){
+ return createHTML(this, 'tt', '', '');
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.string.fontcolor.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.string.fontcolor.js
new file mode 100644
index 0000000..d40711f
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.string.fontcolor.js
@@ -0,0 +1,7 @@
+'use strict';
+// B.2.3.7 String.prototype.fontcolor(color)
+require('./_string-html')('fontcolor', function(createHTML){
+ return function fontcolor(color){
+ return createHTML(this, 'font', 'color', color);
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.string.fontsize.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.string.fontsize.js
new file mode 100644
index 0000000..ba3ff98
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.string.fontsize.js
@@ -0,0 +1,7 @@
+'use strict';
+// B.2.3.8 String.prototype.fontsize(size)
+require('./_string-html')('fontsize', function(createHTML){
+ return function fontsize(size){
+ return createHTML(this, 'font', 'size', size);
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.string.from-code-point.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.string.from-code-point.js
new file mode 100644
index 0000000..c8776d8
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.string.from-code-point.js
@@ -0,0 +1,23 @@
+var $export = require('./_export')
+ , toIndex = require('./_to-index')
+ , fromCharCode = String.fromCharCode
+ , $fromCodePoint = String.fromCodePoint;
+
+// length should be 1, old FF problem
+$export($export.S + $export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', {
+ // 21.1.2.2 String.fromCodePoint(...codePoints)
+ fromCodePoint: function fromCodePoint(x){ // eslint-disable-line no-unused-vars
+ var res = []
+ , aLen = arguments.length
+ , i = 0
+ , code;
+ while(aLen > i){
+ code = +arguments[i++];
+ if(toIndex(code, 0x10ffff) !== code)throw RangeError(code + ' is not a valid code point');
+ res.push(code < 0x10000
+ ? fromCharCode(code)
+ : fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00)
+ );
+ } return res.join('');
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.string.includes.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.string.includes.js
new file mode 100644
index 0000000..c6b4ee2
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.string.includes.js
@@ -0,0 +1,12 @@
+// 21.1.3.7 String.prototype.includes(searchString, position = 0)
+'use strict';
+var $export = require('./_export')
+ , context = require('./_string-context')
+ , INCLUDES = 'includes';
+
+$export($export.P + $export.F * require('./_fails-is-regexp')(INCLUDES), 'String', {
+ includes: function includes(searchString /*, position = 0 */){
+ return !!~context(this, searchString, INCLUDES)
+ .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.string.italics.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.string.italics.js
new file mode 100644
index 0000000..d33efd3
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.string.italics.js
@@ -0,0 +1,7 @@
+'use strict';
+// B.2.3.9 String.prototype.italics()
+require('./_string-html')('italics', function(createHTML){
+ return function italics(){
+ return createHTML(this, 'i', '', '');
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.string.iterator.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.string.iterator.js
new file mode 100644
index 0000000..ac391ee
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.string.iterator.js
@@ -0,0 +1,17 @@
+'use strict';
+var $at = require('./_string-at')(true);
+
+// 21.1.3.27 String.prototype[@@iterator]()
+require('./_iter-define')(String, 'String', function(iterated){
+ this._t = String(iterated); // target
+ this._i = 0; // next index
+// 21.1.5.2.1 %StringIteratorPrototype%.next()
+}, function(){
+ var O = this._t
+ , index = this._i
+ , point;
+ if(index >= O.length)return {value: undefined, done: true};
+ point = $at(O, index);
+ this._i += point.length;
+ return {value: point, done: false};
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.string.link.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.string.link.js
new file mode 100644
index 0000000..6a75c18
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.string.link.js
@@ -0,0 +1,7 @@
+'use strict';
+// B.2.3.10 String.prototype.link(url)
+require('./_string-html')('link', function(createHTML){
+ return function link(url){
+ return createHTML(this, 'a', 'href', url);
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.string.raw.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.string.raw.js
new file mode 100644
index 0000000..1016acf
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.string.raw.js
@@ -0,0 +1,18 @@
+var $export = require('./_export')
+ , toIObject = require('./_to-iobject')
+ , toLength = require('./_to-length');
+
+$export($export.S, 'String', {
+ // 21.1.2.4 String.raw(callSite, ...substitutions)
+ raw: function raw(callSite){
+ var tpl = toIObject(callSite.raw)
+ , len = toLength(tpl.length)
+ , aLen = arguments.length
+ , res = []
+ , i = 0;
+ while(len > i){
+ res.push(String(tpl[i++]));
+ if(i < aLen)res.push(String(arguments[i]));
+ } return res.join('');
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.string.repeat.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.string.repeat.js
new file mode 100644
index 0000000..a054222
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.string.repeat.js
@@ -0,0 +1,6 @@
+var $export = require('./_export');
+
+$export($export.P, 'String', {
+ // 21.1.3.13 String.prototype.repeat(count)
+ repeat: require('./_string-repeat')
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.string.small.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.string.small.js
new file mode 100644
index 0000000..51b1b30
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.string.small.js
@@ -0,0 +1,7 @@
+'use strict';
+// B.2.3.11 String.prototype.small()
+require('./_string-html')('small', function(createHTML){
+ return function small(){
+ return createHTML(this, 'small', '', '');
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.string.starts-with.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.string.starts-with.js
new file mode 100644
index 0000000..017805f
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.string.starts-with.js
@@ -0,0 +1,18 @@
+// 21.1.3.18 String.prototype.startsWith(searchString [, position ])
+'use strict';
+var $export = require('./_export')
+ , toLength = require('./_to-length')
+ , context = require('./_string-context')
+ , STARTS_WITH = 'startsWith'
+ , $startsWith = ''[STARTS_WITH];
+
+$export($export.P + $export.F * require('./_fails-is-regexp')(STARTS_WITH), 'String', {
+ startsWith: function startsWith(searchString /*, position = 0 */){
+ var that = context(this, searchString, STARTS_WITH)
+ , index = toLength(Math.min(arguments.length > 1 ? arguments[1] : undefined, that.length))
+ , search = String(searchString);
+ return $startsWith
+ ? $startsWith.call(that, search, index)
+ : that.slice(index, index + search.length) === search;
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.string.strike.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.string.strike.js
new file mode 100644
index 0000000..c6287d3
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.string.strike.js
@@ -0,0 +1,7 @@
+'use strict';
+// B.2.3.12 String.prototype.strike()
+require('./_string-html')('strike', function(createHTML){
+ return function strike(){
+ return createHTML(this, 'strike', '', '');
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.string.sub.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.string.sub.js
new file mode 100644
index 0000000..ee18ea7
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.string.sub.js
@@ -0,0 +1,7 @@
+'use strict';
+// B.2.3.13 String.prototype.sub()
+require('./_string-html')('sub', function(createHTML){
+ return function sub(){
+ return createHTML(this, 'sub', '', '');
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.string.sup.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.string.sup.js
new file mode 100644
index 0000000..a342998
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.string.sup.js
@@ -0,0 +1,7 @@
+'use strict';
+// B.2.3.14 String.prototype.sup()
+require('./_string-html')('sup', function(createHTML){
+ return function sup(){
+ return createHTML(this, 'sup', '', '');
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.string.trim.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.string.trim.js
new file mode 100644
index 0000000..35f0fb0
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.string.trim.js
@@ -0,0 +1,7 @@
+'use strict';
+// 21.1.3.25 String.prototype.trim()
+require('./_string-trim')('trim', function($trim){
+ return function trim(){
+ return $trim(this, 3);
+ };
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.symbol.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.symbol.js
new file mode 100644
index 0000000..de9f295
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.symbol.js
@@ -0,0 +1,235 @@
+'use strict';
+// ECMAScript 6 symbols shim
+var global = require('./_global')
+ , core = require('./_core')
+ , has = require('./_has')
+ , DESCRIPTORS = require('./_descriptors')
+ , $export = require('./_export')
+ , redefine = require('./_redefine')
+ , META = require('./_meta').KEY
+ , $fails = require('./_fails')
+ , shared = require('./_shared')
+ , setToStringTag = require('./_set-to-string-tag')
+ , uid = require('./_uid')
+ , wks = require('./_wks')
+ , keyOf = require('./_keyof')
+ , enumKeys = require('./_enum-keys')
+ , isArray = require('./_is-array')
+ , anObject = require('./_an-object')
+ , toIObject = require('./_to-iobject')
+ , toPrimitive = require('./_to-primitive')
+ , createDesc = require('./_property-desc')
+ , _create = require('./_object-create')
+ , gOPNExt = require('./_object-gopn-ext')
+ , $GOPD = require('./_object-gopd')
+ , $DP = require('./_object-dp')
+ , gOPD = $GOPD.f
+ , dP = $DP.f
+ , gOPN = gOPNExt.f
+ , $Symbol = global.Symbol
+ , $JSON = global.JSON
+ , _stringify = $JSON && $JSON.stringify
+ , setter = false
+ , PROTOTYPE = 'prototype'
+ , HIDDEN = wks('_hidden')
+ , TO_PRIMITIVE = wks('toPrimitive')
+ , isEnum = {}.propertyIsEnumerable
+ , SymbolRegistry = shared('symbol-registry')
+ , AllSymbols = shared('symbols')
+ , ObjectProto = Object[PROTOTYPE]
+ , USE_NATIVE = typeof $Symbol == 'function'
+ , QObject = global.QObject;
+
+// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687
+var setSymbolDesc = DESCRIPTORS && $fails(function(){
+ return _create(dP({}, 'a', {
+ get: function(){ return dP(this, 'a', {value: 7}).a; }
+ })).a != 7;
+}) ? function(it, key, D){
+ var protoDesc = gOPD(ObjectProto, key);
+ if(protoDesc)delete ObjectProto[key];
+ dP(it, key, D);
+ if(protoDesc && it !== ObjectProto)dP(ObjectProto, key, protoDesc);
+} : dP;
+
+var wrap = function(tag){
+ var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);
+ sym._k = tag;
+ DESCRIPTORS && setter && setSymbolDesc(ObjectProto, tag, {
+ configurable: true,
+ set: function(value){
+ if(has(this, HIDDEN) && has(this[HIDDEN], tag))this[HIDDEN][tag] = false;
+ setSymbolDesc(this, tag, createDesc(1, value));
+ }
+ });
+ return sym;
+};
+
+var isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function(it){
+ return typeof it == 'symbol';
+} : function(it){
+ return it instanceof $Symbol;
+};
+
+var $defineProperty = function defineProperty(it, key, D){
+ anObject(it);
+ key = toPrimitive(key, true);
+ anObject(D);
+ if(has(AllSymbols, key)){
+ if(!D.enumerable){
+ if(!has(it, HIDDEN))dP(it, HIDDEN, createDesc(1, {}));
+ it[HIDDEN][key] = true;
+ } else {
+ if(has(it, HIDDEN) && it[HIDDEN][key])it[HIDDEN][key] = false;
+ D = _create(D, {enumerable: createDesc(0, false)});
+ } return setSymbolDesc(it, key, D);
+ } return dP(it, key, D);
+};
+var $defineProperties = function defineProperties(it, P){
+ anObject(it);
+ var keys = enumKeys(P = toIObject(P))
+ , i = 0
+ , l = keys.length
+ , key;
+ while(l > i)$defineProperty(it, key = keys[i++], P[key]);
+ return it;
+};
+var $create = function create(it, P){
+ return P === undefined ? _create(it) : $defineProperties(_create(it), P);
+};
+var $propertyIsEnumerable = function propertyIsEnumerable(key){
+ var E = isEnum.call(this, key = toPrimitive(key, true));
+ return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;
+};
+var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key){
+ var D = gOPD(it = toIObject(it), key = toPrimitive(key, true));
+ if(D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key]))D.enumerable = true;
+ return D;
+};
+var $getOwnPropertyNames = function getOwnPropertyNames(it){
+ var names = gOPN(toIObject(it))
+ , result = []
+ , i = 0
+ , key;
+ while(names.length > i)if(!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META)result.push(key);
+ return result;
+};
+var $getOwnPropertySymbols = function getOwnPropertySymbols(it){
+ var names = gOPN(toIObject(it))
+ , result = []
+ , i = 0
+ , key;
+ while(names.length > i)if(has(AllSymbols, key = names[i++]))result.push(AllSymbols[key]);
+ return result;
+};
+var $stringify = function stringify(it){
+ if(it === undefined || isSymbol(it))return; // IE8 returns string on undefined
+ var args = [it]
+ , i = 1
+ , replacer, $replacer;
+ while(arguments.length > i)args.push(arguments[i++]);
+ replacer = args[1];
+ if(typeof replacer == 'function')$replacer = replacer;
+ if($replacer || !isArray(replacer))replacer = function(key, value){
+ if($replacer)value = $replacer.call(this, key, value);
+ if(!isSymbol(value))return value;
+ };
+ args[1] = replacer;
+ return _stringify.apply($JSON, args);
+};
+var BUGGY_JSON = $fails(function(){
+ var S = $Symbol();
+ // MS Edge converts symbol values to JSON as {}
+ // WebKit converts symbol values to JSON as null
+ // V8 throws on boxed symbols
+ return _stringify([S]) != '[null]' || _stringify({a: S}) != '{}' || _stringify(Object(S)) != '{}';
+});
+
+// 19.4.1.1 Symbol([description])
+if(!USE_NATIVE){
+ $Symbol = function Symbol(){
+ if(this instanceof $Symbol)throw TypeError('Symbol is not a constructor!');
+ return wrap(uid(arguments.length > 0 ? arguments[0] : undefined));
+ };
+ redefine($Symbol[PROTOTYPE], 'toString', function toString(){
+ return this._k;
+ });
+
+ $GOPD.f = $getOwnPropertyDescriptor;
+ $DP.f = $defineProperty;
+ require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;
+ require('./_object-pie').f = $propertyIsEnumerable
+ require('./_object-gops').f = $getOwnPropertySymbols;
+
+ if(DESCRIPTORS && !require('./_library')){
+ redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);
+ }
+}
+
+$export($export.G + $export.W + $export.F * !USE_NATIVE, {Symbol: $Symbol});
+
+// 19.4.2.2 Symbol.hasInstance
+// 19.4.2.3 Symbol.isConcatSpreadable
+// 19.4.2.4 Symbol.iterator
+// 19.4.2.6 Symbol.match
+// 19.4.2.8 Symbol.replace
+// 19.4.2.9 Symbol.search
+// 19.4.2.10 Symbol.species
+// 19.4.2.11 Symbol.split
+// 19.4.2.12 Symbol.toPrimitive
+// 19.4.2.13 Symbol.toStringTag
+// 19.4.2.14 Symbol.unscopables
+for(var symbols = (
+ 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'
+).split(','), i = 0; symbols.length > i; ){
+ var key = symbols[i++]
+ , Wrapper = core.Symbol
+ , sym = wks(key);
+ if(!(key in Wrapper))dP(Wrapper, key, {value: USE_NATIVE ? sym : wrap(sym)});
+};
+
+// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173
+if(!QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild)setter = true;
+
+$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {
+ // 19.4.2.1 Symbol.for(key)
+ 'for': function(key){
+ return has(SymbolRegistry, key += '')
+ ? SymbolRegistry[key]
+ : SymbolRegistry[key] = $Symbol(key);
+ },
+ // 19.4.2.5 Symbol.keyFor(sym)
+ keyFor: function keyFor(key){
+ if(isSymbol(key))return keyOf(SymbolRegistry, key);
+ throw TypeError(key + ' is not a symbol!');
+ },
+ useSetter: function(){ setter = true; },
+ useSimple: function(){ setter = false; }
+});
+
+$export($export.S + $export.F * !USE_NATIVE, 'Object', {
+ // 19.1.2.2 Object.create(O [, Properties])
+ create: $create,
+ // 19.1.2.4 Object.defineProperty(O, P, Attributes)
+ defineProperty: $defineProperty,
+ // 19.1.2.3 Object.defineProperties(O, Properties)
+ defineProperties: $defineProperties,
+ // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)
+ getOwnPropertyDescriptor: $getOwnPropertyDescriptor,
+ // 19.1.2.7 Object.getOwnPropertyNames(O)
+ getOwnPropertyNames: $getOwnPropertyNames,
+ // 19.1.2.8 Object.getOwnPropertySymbols(O)
+ getOwnPropertySymbols: $getOwnPropertySymbols
+});
+
+// 24.3.2 JSON.stringify(value [, replacer [, space]])
+$JSON && $export($export.S + $export.F * (!USE_NATIVE || BUGGY_JSON), 'JSON', {stringify: $stringify});
+
+// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)
+$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);
+// 19.4.3.5 Symbol.prototype[@@toStringTag]
+setToStringTag($Symbol, 'Symbol');
+// 20.2.1.9 Math[@@toStringTag]
+setToStringTag(Math, 'Math', true);
+// 24.3.3 JSON[@@toStringTag]
+setToStringTag(global.JSON, 'JSON', true);
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.typed.array-buffer.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.typed.array-buffer.js
new file mode 100644
index 0000000..c7119a8
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.typed.array-buffer.js
@@ -0,0 +1,47 @@
+'use strict';
+var $export = require('./_export')
+ , $typed = require('./_typed')
+ , buffer = require('./_typed-buffer')
+ , anObject = require('./_an-object')
+ , toIndex = require('./_to-index')
+ , toLength = require('./_to-length')
+ , isObject = require('./_is-object')
+ , TYPED_ARRAY = require('./_wks')('typed_array')
+ , ArrayBuffer = require('./_global').ArrayBuffer
+ , speciesConstructor = require('./_species-constructor')
+ , $ArrayBuffer = buffer.ArrayBuffer
+ , $DataView = buffer.DataView
+ , $isView = $typed.ABV && ArrayBuffer.isView
+ , $slice = $ArrayBuffer.prototype.slice
+ , VIEW = $typed.VIEW
+ , ARRAY_BUFFER = 'ArrayBuffer';
+
+$export($export.G + $export.W + $export.F * (ArrayBuffer !== $ArrayBuffer), {ArrayBuffer: $ArrayBuffer});
+
+$export($export.S + $export.F * !$typed.CONSTR, ARRAY_BUFFER, {
+ // 24.1.3.1 ArrayBuffer.isView(arg)
+ isView: function isView(it){
+ return $isView && $isView(it) || isObject(it) && VIEW in it;
+ }
+});
+
+$export($export.P + $export.U + $export.F * require('./_fails')(function(){
+ return !new $ArrayBuffer(2).slice(1, undefined).byteLength;
+}), ARRAY_BUFFER, {
+ // 24.1.4.3 ArrayBuffer.prototype.slice(start, end)
+ slice: function slice(start, end){
+ if($slice !== undefined && end === undefined)return $slice.call(anObject(this), start); // FF fix
+ var len = anObject(this).byteLength
+ , first = toIndex(start, len)
+ , final = toIndex(end === undefined ? len : end, len)
+ , result = new (speciesConstructor(this, $ArrayBuffer))(toLength(final - first))
+ , viewS = new $DataView(this)
+ , viewT = new $DataView(result)
+ , index = 0;
+ while(first < final){
+ viewT.setUint8(index++, viewS.getUint8(first++));
+ } return result;
+ }
+});
+
+require('./_set-species')(ARRAY_BUFFER);
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.typed.data-view.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.typed.data-view.js
new file mode 100644
index 0000000..ee7b881
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.typed.data-view.js
@@ -0,0 +1,4 @@
+var $export = require('./_export');
+$export($export.G + $export.W + $export.F * !require('./_typed').ABV, {
+ DataView: require('./_typed-buffer').DataView
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.typed.float32-array.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.typed.float32-array.js
new file mode 100644
index 0000000..2c4c9a6
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.typed.float32-array.js
@@ -0,0 +1,5 @@
+require('./_typed-array')('Float32', 4, function(init){
+ return function Float32Array(data, byteOffset, length){
+ return init(this, data, byteOffset, length);
+ };
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.typed.float64-array.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.typed.float64-array.js
new file mode 100644
index 0000000..4b20257
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.typed.float64-array.js
@@ -0,0 +1,5 @@
+require('./_typed-array')('Float64', 8, function(init){
+ return function Float64Array(data, byteOffset, length){
+ return init(this, data, byteOffset, length);
+ };
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.typed.int16-array.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.typed.int16-array.js
new file mode 100644
index 0000000..d3f61c5
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.typed.int16-array.js
@@ -0,0 +1,5 @@
+require('./_typed-array')('Int16', 2, function(init){
+ return function Int16Array(data, byteOffset, length){
+ return init(this, data, byteOffset, length);
+ };
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.typed.int32-array.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.typed.int32-array.js
new file mode 100644
index 0000000..df47c1b
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.typed.int32-array.js
@@ -0,0 +1,5 @@
+require('./_typed-array')('Int32', 4, function(init){
+ return function Int32Array(data, byteOffset, length){
+ return init(this, data, byteOffset, length);
+ };
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.typed.int8-array.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.typed.int8-array.js
new file mode 100644
index 0000000..da4dbf0
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.typed.int8-array.js
@@ -0,0 +1,5 @@
+require('./_typed-array')('Int8', 1, function(init){
+ return function Int8Array(data, byteOffset, length){
+ return init(this, data, byteOffset, length);
+ };
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.typed.uint16-array.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.typed.uint16-array.js
new file mode 100644
index 0000000..cb33577
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.typed.uint16-array.js
@@ -0,0 +1,5 @@
+require('./_typed-array')('Uint16', 2, function(init){
+ return function Uint16Array(data, byteOffset, length){
+ return init(this, data, byteOffset, length);
+ };
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.typed.uint32-array.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.typed.uint32-array.js
new file mode 100644
index 0000000..41c9e7b
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.typed.uint32-array.js
@@ -0,0 +1,5 @@
+require('./_typed-array')('Uint32', 4, function(init){
+ return function Uint32Array(data, byteOffset, length){
+ return init(this, data, byteOffset, length);
+ };
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.typed.uint8-array.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.typed.uint8-array.js
new file mode 100644
index 0000000..f794f86
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.typed.uint8-array.js
@@ -0,0 +1,5 @@
+require('./_typed-array')('Uint8', 1, function(init){
+ return function Uint8Array(data, byteOffset, length){
+ return init(this, data, byteOffset, length);
+ };
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.typed.uint8-clamped-array.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.typed.uint8-clamped-array.js
new file mode 100644
index 0000000..b123047
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.typed.uint8-clamped-array.js
@@ -0,0 +1,5 @@
+require('./_typed-array')('Uint8', 1, function(init){
+ return function Uint8ClampedArray(data, byteOffset, length){
+ return init(this, data, byteOffset, length);
+ };
+}, true);
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.weak-map.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.weak-map.js
new file mode 100644
index 0000000..431ac56
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.weak-map.js
@@ -0,0 +1,57 @@
+'use strict';
+var each = require('./_array-methods')(0)
+ , redefine = require('./_redefine')
+ , meta = require('./_meta')
+ , assign = require('./_object-assign')
+ , weak = require('./_collection-weak')
+ , isObject = require('./_is-object')
+ , has = require('./_has')
+ , getWeak = meta.getWeak
+ , isExtensible = Object.isExtensible
+ , uncaughtFrozenStore = weak.ufstore
+ , tmp = {}
+ , InternalMap;
+
+var wrapper = function(get){
+ return function WeakMap(){
+ return get(this, arguments.length > 0 ? arguments[0] : undefined);
+ };
+};
+
+var methods = {
+ // 23.3.3.3 WeakMap.prototype.get(key)
+ get: function get(key){
+ if(isObject(key)){
+ var data = getWeak(key);
+ if(data === true)return uncaughtFrozenStore(this).get(key);
+ return data ? data[this._i] : undefined;
+ }
+ },
+ // 23.3.3.5 WeakMap.prototype.set(key, value)
+ set: function set(key, value){
+ return weak.def(this, key, value);
+ }
+};
+
+// 23.3 WeakMap Objects
+var $WeakMap = module.exports = require('./_collection')('WeakMap', wrapper, methods, weak, true, true);
+
+// IE11 WeakMap frozen keys fix
+if(new $WeakMap().set((Object.freeze || Object)(tmp), 7).get(tmp) != 7){
+ InternalMap = weak.getConstructor(wrapper);
+ assign(InternalMap.prototype, methods);
+ meta.NEED = true;
+ each(['delete', 'has', 'get', 'set'], function(key){
+ var proto = $WeakMap.prototype
+ , method = proto[key];
+ redefine(proto, key, function(a, b){
+ // store frozen objects on internal weakmap shim
+ if(isObject(a) && !isExtensible(a)){
+ if(!this._f)this._f = new InternalMap;
+ var result = this._f[key](a, b);
+ return key == 'set' ? this : result;
+ // store all the rest on native weakmap
+ } return method.call(this, a, b);
+ });
+ });
+}
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es6.weak-set.js b/node_modules/babel-register/node_modules/core-js/library/modules/es6.weak-set.js
new file mode 100644
index 0000000..77d01b6
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es6.weak-set.js
@@ -0,0 +1,12 @@
+'use strict';
+var weak = require('./_collection-weak');
+
+// 23.4 WeakSet Objects
+require('./_collection')('WeakSet', function(get){
+ return function WeakSet(){ return get(this, arguments.length > 0 ? arguments[0] : undefined); };
+}, {
+ // 23.4.3.1 WeakSet.prototype.add(value)
+ add: function add(value){
+ return weak.def(this, value, true);
+ }
+}, weak, false, true);
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es7.array.includes.js b/node_modules/babel-register/node_modules/core-js/library/modules/es7.array.includes.js
new file mode 100644
index 0000000..6d5b009
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es7.array.includes.js
@@ -0,0 +1,12 @@
+'use strict';
+// https://github.com/tc39/Array.prototype.includes
+var $export = require('./_export')
+ , $includes = require('./_array-includes')(true);
+
+$export($export.P, 'Array', {
+ includes: function includes(el /*, fromIndex = 0 */){
+ return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);
+ }
+});
+
+require('./_add-to-unscopables')('includes');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es7.error.is-error.js b/node_modules/babel-register/node_modules/core-js/library/modules/es7.error.is-error.js
new file mode 100644
index 0000000..d6fe29d
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es7.error.is-error.js
@@ -0,0 +1,9 @@
+// https://github.com/ljharb/proposal-is-error
+var $export = require('./_export')
+ , cof = require('./_cof');
+
+$export($export.S, 'Error', {
+ isError: function isError(it){
+ return cof(it) === 'Error';
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es7.map.to-json.js b/node_modules/babel-register/node_modules/core-js/library/modules/es7.map.to-json.js
new file mode 100644
index 0000000..19f9b6d
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es7.map.to-json.js
@@ -0,0 +1,4 @@
+// https://github.com/DavidBruant/Map-Set.prototype.toJSON
+var $export = require('./_export');
+
+$export($export.P + $export.R, 'Map', {toJSON: require('./_collection-to-json')('Map')});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es7.math.iaddh.js b/node_modules/babel-register/node_modules/core-js/library/modules/es7.math.iaddh.js
new file mode 100644
index 0000000..bb3f3d3
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es7.math.iaddh.js
@@ -0,0 +1,11 @@
+// https://gist.github.com/BrendanEich/4294d5c212a6d2254703
+var $export = require('./_export');
+
+$export($export.S, 'Math', {
+ iaddh: function iaddh(x0, x1, y0, y1){
+ var $x0 = x0 >>> 0
+ , $x1 = x1 >>> 0
+ , $y0 = y0 >>> 0;
+ return $x1 + (y1 >>> 0) + (($x0 & $y0 | ($x0 | $y0) & ~($x0 + $y0 >>> 0)) >>> 31) | 0;
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es7.math.imulh.js b/node_modules/babel-register/node_modules/core-js/library/modules/es7.math.imulh.js
new file mode 100644
index 0000000..a25da68
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es7.math.imulh.js
@@ -0,0 +1,16 @@
+// https://gist.github.com/BrendanEich/4294d5c212a6d2254703
+var $export = require('./_export');
+
+$export($export.S, 'Math', {
+ imulh: function imulh(u, v){
+ var UINT16 = 0xffff
+ , $u = +u
+ , $v = +v
+ , u0 = $u & UINT16
+ , v0 = $v & UINT16
+ , u1 = $u >> 16
+ , v1 = $v >> 16
+ , t = (u1 * v0 >>> 0) + (u0 * v0 >>> 16);
+ return u1 * v1 + (t >> 16) + ((u0 * v1 >>> 0) + (t & UINT16) >> 16);
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es7.math.isubh.js b/node_modules/babel-register/node_modules/core-js/library/modules/es7.math.isubh.js
new file mode 100644
index 0000000..3814dc2
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es7.math.isubh.js
@@ -0,0 +1,11 @@
+// https://gist.github.com/BrendanEich/4294d5c212a6d2254703
+var $export = require('./_export');
+
+$export($export.S, 'Math', {
+ isubh: function isubh(x0, x1, y0, y1){
+ var $x0 = x0 >>> 0
+ , $x1 = x1 >>> 0
+ , $y0 = y0 >>> 0;
+ return $x1 - (y1 >>> 0) - ((~$x0 & $y0 | ~($x0 ^ $y0) & $x0 - $y0 >>> 0) >>> 31) | 0;
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es7.math.umulh.js b/node_modules/babel-register/node_modules/core-js/library/modules/es7.math.umulh.js
new file mode 100644
index 0000000..0d22cf1
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es7.math.umulh.js
@@ -0,0 +1,16 @@
+// https://gist.github.com/BrendanEich/4294d5c212a6d2254703
+var $export = require('./_export');
+
+$export($export.S, 'Math', {
+ umulh: function umulh(u, v){
+ var UINT16 = 0xffff
+ , $u = +u
+ , $v = +v
+ , u0 = $u & UINT16
+ , v0 = $v & UINT16
+ , u1 = $u >>> 16
+ , v1 = $v >>> 16
+ , t = (u1 * v0 >>> 0) + (u0 * v0 >>> 16);
+ return u1 * v1 + (t >>> 16) + ((u0 * v1 >>> 0) + (t & UINT16) >>> 16);
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es7.object.define-getter.js b/node_modules/babel-register/node_modules/core-js/library/modules/es7.object.define-getter.js
new file mode 100644
index 0000000..dd9602c
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es7.object.define-getter.js
@@ -0,0 +1,12 @@
+'use strict';
+var $export = require('./_export')
+ , toObject = require('./_to-object')
+ , aFunction = require('./_a-function')
+ , $defineProperty = require('./_object-dp');
+
+// B.2.2.2 Object.prototype.__defineGetter__(P, getter)
+require('./_descriptors') && $export($export.P + require('./_object-forced-pam'), 'Object', {
+ __defineGetter__: function __defineGetter__(P, getter){
+ $defineProperty.f(toObject(this), P, {get: aFunction(getter), enumerable: true, configurable: true});
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es7.object.define-setter.js b/node_modules/babel-register/node_modules/core-js/library/modules/es7.object.define-setter.js
new file mode 100644
index 0000000..d6c24c1
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es7.object.define-setter.js
@@ -0,0 +1,12 @@
+'use strict';
+var $export = require('./_export')
+ , toObject = require('./_to-object')
+ , aFunction = require('./_a-function')
+ , $defineProperty = require('./_object-dp');
+
+// B.2.2.3 Object.prototype.__defineSetter__(P, setter)
+require('./_descriptors') && $export($export.P + require('./_object-forced-pam'), 'Object', {
+ __defineSetter__: function __defineSetter__(P, setter){
+ $defineProperty.f(toObject(this), P, {set: aFunction(setter), enumerable: true, configurable: true});
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es7.object.entries.js b/node_modules/babel-register/node_modules/core-js/library/modules/es7.object.entries.js
new file mode 100644
index 0000000..cfc049d
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es7.object.entries.js
@@ -0,0 +1,9 @@
+// https://github.com/tc39/proposal-object-values-entries
+var $export = require('./_export')
+ , $entries = require('./_object-to-array')(true);
+
+$export($export.S, 'Object', {
+ entries: function entries(it){
+ return $entries(it);
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es7.object.get-own-property-descriptors.js b/node_modules/babel-register/node_modules/core-js/library/modules/es7.object.get-own-property-descriptors.js
new file mode 100644
index 0000000..c17c08b
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es7.object.get-own-property-descriptors.js
@@ -0,0 +1,23 @@
+// https://github.com/tc39/proposal-object-getownpropertydescriptors
+var $export = require('./_export')
+ , ownKeys = require('./_own-keys')
+ , toIObject = require('./_to-iobject')
+ , createDesc = require('./_property-desc')
+ , gOPD = require('./_object-gopd')
+ , dP = require('./_object-dp');
+
+$export($export.S, 'Object', {
+ getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object){
+ var O = toIObject(object)
+ , getDesc = gOPD.f
+ , keys = ownKeys(O)
+ , result = {}
+ , i = 0
+ , key, D;
+ while(keys.length > i){
+ D = getDesc(O, key = keys[i++]);
+ if(key in result)dP.f(result, key, createDesc(0, D));
+ else result[key] = D;
+ } return result;
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es7.object.lookup-getter.js b/node_modules/babel-register/node_modules/core-js/library/modules/es7.object.lookup-getter.js
new file mode 100644
index 0000000..e0350fd
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es7.object.lookup-getter.js
@@ -0,0 +1,18 @@
+'use strict';
+var $export = require('./_export')
+ , toObject = require('./_to-object')
+ , toPrimitive = require('./_to-primitive')
+ , getPrototypeOf = require('./_object-gpo')
+ , getOwnPropertyDescriptor = require('./_object-gopd').f;
+
+// B.2.2.4 Object.prototype.__lookupGetter__(P)
+require('./_descriptors') && $export($export.P + require('./_object-forced-pam'), 'Object', {
+ __lookupGetter__: function __lookupGetter__(P){
+ var O = toObject(this)
+ , K = toPrimitive(P, true)
+ , D;
+ do {
+ if(D = getOwnPropertyDescriptor(O, K))return D.get;
+ } while(O = getPrototypeOf(O));
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es7.object.lookup-setter.js b/node_modules/babel-register/node_modules/core-js/library/modules/es7.object.lookup-setter.js
new file mode 100644
index 0000000..0288cec
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es7.object.lookup-setter.js
@@ -0,0 +1,18 @@
+'use strict';
+var $export = require('./_export')
+ , toObject = require('./_to-object')
+ , toPrimitive = require('./_to-primitive')
+ , getPrototypeOf = require('./_object-gpo')
+ , getOwnPropertyDescriptor = require('./_object-gopd').f;
+
+// B.2.2.5 Object.prototype.__lookupSetter__(P)
+require('./_descriptors') && $export($export.P + require('./_object-forced-pam'), 'Object', {
+ __lookupSetter__: function __lookupSetter__(P){
+ var O = toObject(this)
+ , K = toPrimitive(P, true)
+ , D;
+ do {
+ if(D = getOwnPropertyDescriptor(O, K))return D.set;
+ } while(O = getPrototypeOf(O));
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es7.object.values.js b/node_modules/babel-register/node_modules/core-js/library/modules/es7.object.values.js
new file mode 100644
index 0000000..42abd64
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es7.object.values.js
@@ -0,0 +1,9 @@
+// https://github.com/tc39/proposal-object-values-entries
+var $export = require('./_export')
+ , $values = require('./_object-to-array')(false);
+
+$export($export.S, 'Object', {
+ values: function values(it){
+ return $values(it);
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es7.reflect.define-metadata.js b/node_modules/babel-register/node_modules/core-js/library/modules/es7.reflect.define-metadata.js
new file mode 100644
index 0000000..c833e43
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es7.reflect.define-metadata.js
@@ -0,0 +1,8 @@
+var metadata = require('./_metadata')
+ , anObject = require('./_an-object')
+ , toMetaKey = metadata.key
+ , ordinaryDefineOwnMetadata = metadata.set;
+
+metadata.exp({defineMetadata: function defineMetadata(metadataKey, metadataValue, target, targetKey){
+ ordinaryDefineOwnMetadata(metadataKey, metadataValue, anObject(target), toMetaKey(targetKey));
+}});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es7.reflect.delete-metadata.js b/node_modules/babel-register/node_modules/core-js/library/modules/es7.reflect.delete-metadata.js
new file mode 100644
index 0000000..8a8a825
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es7.reflect.delete-metadata.js
@@ -0,0 +1,15 @@
+var metadata = require('./_metadata')
+ , anObject = require('./_an-object')
+ , toMetaKey = metadata.key
+ , getOrCreateMetadataMap = metadata.map
+ , store = metadata.store;
+
+metadata.exp({deleteMetadata: function deleteMetadata(metadataKey, target /*, targetKey */){
+ var targetKey = arguments.length < 3 ? undefined : toMetaKey(arguments[2])
+ , metadataMap = getOrCreateMetadataMap(anObject(target), targetKey, false);
+ if(metadataMap === undefined || !metadataMap['delete'](metadataKey))return false;
+ if(metadataMap.size)return true;
+ var targetMetadata = store.get(target);
+ targetMetadata['delete'](targetKey);
+ return !!targetMetadata.size || store['delete'](target);
+}});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es7.reflect.get-metadata-keys.js b/node_modules/babel-register/node_modules/core-js/library/modules/es7.reflect.get-metadata-keys.js
new file mode 100644
index 0000000..58c4dcc
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es7.reflect.get-metadata-keys.js
@@ -0,0 +1,19 @@
+var Set = require('./es6.set')
+ , from = require('./_array-from-iterable')
+ , metadata = require('./_metadata')
+ , anObject = require('./_an-object')
+ , getPrototypeOf = require('./_object-gpo')
+ , ordinaryOwnMetadataKeys = metadata.keys
+ , toMetaKey = metadata.key;
+
+var ordinaryMetadataKeys = function(O, P){
+ var oKeys = ordinaryOwnMetadataKeys(O, P)
+ , parent = getPrototypeOf(O);
+ if(parent === null)return oKeys;
+ var pKeys = ordinaryMetadataKeys(parent, P);
+ return pKeys.length ? oKeys.length ? from(new Set(oKeys.concat(pKeys))) : pKeys : oKeys;
+};
+
+metadata.exp({getMetadataKeys: function getMetadataKeys(target /*, targetKey */){
+ return ordinaryMetadataKeys(anObject(target), arguments.length < 2 ? undefined : toMetaKey(arguments[1]));
+}});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es7.reflect.get-metadata.js b/node_modules/babel-register/node_modules/core-js/library/modules/es7.reflect.get-metadata.js
new file mode 100644
index 0000000..48cd9d6
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es7.reflect.get-metadata.js
@@ -0,0 +1,17 @@
+var metadata = require('./_metadata')
+ , anObject = require('./_an-object')
+ , getPrototypeOf = require('./_object-gpo')
+ , ordinaryHasOwnMetadata = metadata.has
+ , ordinaryGetOwnMetadata = metadata.get
+ , toMetaKey = metadata.key;
+
+var ordinaryGetMetadata = function(MetadataKey, O, P){
+ var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P);
+ if(hasOwn)return ordinaryGetOwnMetadata(MetadataKey, O, P);
+ var parent = getPrototypeOf(O);
+ return parent !== null ? ordinaryGetMetadata(MetadataKey, parent, P) : undefined;
+};
+
+metadata.exp({getMetadata: function getMetadata(metadataKey, target /*, targetKey */){
+ return ordinaryGetMetadata(metadataKey, anObject(target), arguments.length < 3 ? undefined : toMetaKey(arguments[2]));
+}});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es7.reflect.get-own-metadata-keys.js b/node_modules/babel-register/node_modules/core-js/library/modules/es7.reflect.get-own-metadata-keys.js
new file mode 100644
index 0000000..93ecfbe
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es7.reflect.get-own-metadata-keys.js
@@ -0,0 +1,8 @@
+var metadata = require('./_metadata')
+ , anObject = require('./_an-object')
+ , ordinaryOwnMetadataKeys = metadata.keys
+ , toMetaKey = metadata.key;
+
+metadata.exp({getOwnMetadataKeys: function getOwnMetadataKeys(target /*, targetKey */){
+ return ordinaryOwnMetadataKeys(anObject(target), arguments.length < 2 ? undefined : toMetaKey(arguments[1]));
+}});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es7.reflect.get-own-metadata.js b/node_modules/babel-register/node_modules/core-js/library/modules/es7.reflect.get-own-metadata.js
new file mode 100644
index 0000000..f1040f9
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es7.reflect.get-own-metadata.js
@@ -0,0 +1,9 @@
+var metadata = require('./_metadata')
+ , anObject = require('./_an-object')
+ , ordinaryGetOwnMetadata = metadata.get
+ , toMetaKey = metadata.key;
+
+metadata.exp({getOwnMetadata: function getOwnMetadata(metadataKey, target /*, targetKey */){
+ return ordinaryGetOwnMetadata(metadataKey, anObject(target)
+ , arguments.length < 3 ? undefined : toMetaKey(arguments[2]));
+}});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es7.reflect.has-metadata.js b/node_modules/babel-register/node_modules/core-js/library/modules/es7.reflect.has-metadata.js
new file mode 100644
index 0000000..0ff6378
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es7.reflect.has-metadata.js
@@ -0,0 +1,16 @@
+var metadata = require('./_metadata')
+ , anObject = require('./_an-object')
+ , getPrototypeOf = require('./_object-gpo')
+ , ordinaryHasOwnMetadata = metadata.has
+ , toMetaKey = metadata.key;
+
+var ordinaryHasMetadata = function(MetadataKey, O, P){
+ var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P);
+ if(hasOwn)return true;
+ var parent = getPrototypeOf(O);
+ return parent !== null ? ordinaryHasMetadata(MetadataKey, parent, P) : false;
+};
+
+metadata.exp({hasMetadata: function hasMetadata(metadataKey, target /*, targetKey */){
+ return ordinaryHasMetadata(metadataKey, anObject(target), arguments.length < 3 ? undefined : toMetaKey(arguments[2]));
+}});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es7.reflect.has-own-metadata.js b/node_modules/babel-register/node_modules/core-js/library/modules/es7.reflect.has-own-metadata.js
new file mode 100644
index 0000000..d645ea3
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es7.reflect.has-own-metadata.js
@@ -0,0 +1,9 @@
+var metadata = require('./_metadata')
+ , anObject = require('./_an-object')
+ , ordinaryHasOwnMetadata = metadata.has
+ , toMetaKey = metadata.key;
+
+metadata.exp({hasOwnMetadata: function hasOwnMetadata(metadataKey, target /*, targetKey */){
+ return ordinaryHasOwnMetadata(metadataKey, anObject(target)
+ , arguments.length < 3 ? undefined : toMetaKey(arguments[2]));
+}});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es7.reflect.metadata.js b/node_modules/babel-register/node_modules/core-js/library/modules/es7.reflect.metadata.js
new file mode 100644
index 0000000..3a4e3ae
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es7.reflect.metadata.js
@@ -0,0 +1,15 @@
+var metadata = require('./_metadata')
+ , anObject = require('./_an-object')
+ , aFunction = require('./_a-function')
+ , toMetaKey = metadata.key
+ , ordinaryDefineOwnMetadata = metadata.set;
+
+metadata.exp({metadata: function metadata(metadataKey, metadataValue){
+ return function decorator(target, targetKey){
+ ordinaryDefineOwnMetadata(
+ metadataKey, metadataValue,
+ (targetKey !== undefined ? anObject : aFunction)(target),
+ toMetaKey(targetKey)
+ );
+ };
+}});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es7.set.to-json.js b/node_modules/babel-register/node_modules/core-js/library/modules/es7.set.to-json.js
new file mode 100644
index 0000000..fd68cb5
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es7.set.to-json.js
@@ -0,0 +1,4 @@
+// https://github.com/DavidBruant/Map-Set.prototype.toJSON
+var $export = require('./_export');
+
+$export($export.P + $export.R, 'Set', {toJSON: require('./_collection-to-json')('Set')});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es7.string.at.js b/node_modules/babel-register/node_modules/core-js/library/modules/es7.string.at.js
new file mode 100644
index 0000000..208654e
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es7.string.at.js
@@ -0,0 +1,10 @@
+'use strict';
+// https://github.com/mathiasbynens/String.prototype.at
+var $export = require('./_export')
+ , $at = require('./_string-at')(true);
+
+$export($export.P, 'String', {
+ at: function at(pos){
+ return $at(this, pos);
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es7.string.match-all.js b/node_modules/babel-register/node_modules/core-js/library/modules/es7.string.match-all.js
new file mode 100644
index 0000000..41fa7ba
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es7.string.match-all.js
@@ -0,0 +1,30 @@
+'use strict';
+// https://tc39.github.io/String.prototype.matchAll/
+var $export = require('./_export')
+ , defined = require('./_defined')
+ , toLength = require('./_to-length')
+ , isRegExp = require('./_is-regexp')
+ , getFlags = require('./_flags')
+ , RegExpProto = RegExp.prototype;
+
+var $RegExpStringIterator = function(regexp, string){
+ this._r = regexp;
+ this._s = string;
+};
+
+require('./_iter-create')($RegExpStringIterator, 'RegExp String', function next(){
+ var match = this._r.exec(this._s);
+ return {value: match, done: match === null};
+});
+
+$export($export.P, 'String', {
+ matchAll: function matchAll(regexp){
+ defined(this);
+ if(!isRegExp(regexp))throw TypeError(regexp + ' is not a regexp!');
+ var S = String(this)
+ , flags = 'flags' in RegExpProto ? String(regexp.flags) : getFlags.call(regexp)
+ , rx = new RegExp(regexp.source, ~flags.indexOf('g') ? flags : 'g' + flags);
+ rx.lastIndex = toLength(regexp.lastIndex);
+ return new $RegExpStringIterator(rx, S);
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es7.string.pad-end.js b/node_modules/babel-register/node_modules/core-js/library/modules/es7.string.pad-end.js
new file mode 100644
index 0000000..8483d82
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es7.string.pad-end.js
@@ -0,0 +1,10 @@
+'use strict';
+// https://github.com/tc39/proposal-string-pad-start-end
+var $export = require('./_export')
+ , $pad = require('./_string-pad');
+
+$export($export.P, 'String', {
+ padEnd: function padEnd(maxLength /*, fillString = ' ' */){
+ return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, false);
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es7.string.pad-start.js b/node_modules/babel-register/node_modules/core-js/library/modules/es7.string.pad-start.js
new file mode 100644
index 0000000..b79b605
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es7.string.pad-start.js
@@ -0,0 +1,10 @@
+'use strict';
+// https://github.com/tc39/proposal-string-pad-start-end
+var $export = require('./_export')
+ , $pad = require('./_string-pad');
+
+$export($export.P, 'String', {
+ padStart: function padStart(maxLength /*, fillString = ' ' */){
+ return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, true);
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es7.string.trim-left.js b/node_modules/babel-register/node_modules/core-js/library/modules/es7.string.trim-left.js
new file mode 100644
index 0000000..e584577
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es7.string.trim-left.js
@@ -0,0 +1,7 @@
+'use strict';
+// https://github.com/sebmarkbage/ecmascript-string-left-right-trim
+require('./_string-trim')('trimLeft', function($trim){
+ return function trimLeft(){
+ return $trim(this, 1);
+ };
+}, 'trimStart');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es7.string.trim-right.js b/node_modules/babel-register/node_modules/core-js/library/modules/es7.string.trim-right.js
new file mode 100644
index 0000000..42a9ed3
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es7.string.trim-right.js
@@ -0,0 +1,7 @@
+'use strict';
+// https://github.com/sebmarkbage/ecmascript-string-left-right-trim
+require('./_string-trim')('trimRight', function($trim){
+ return function trimRight(){
+ return $trim(this, 2);
+ };
+}, 'trimEnd');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/es7.system.global.js b/node_modules/babel-register/node_modules/core-js/library/modules/es7.system.global.js
new file mode 100644
index 0000000..8c2ab82
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/es7.system.global.js
@@ -0,0 +1,4 @@
+// https://github.com/ljharb/proposal-global
+var $export = require('./_export');
+
+$export($export.S, 'System', {global: require('./_global')});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/web.dom.iterable.js b/node_modules/babel-register/node_modules/core-js/library/modules/web.dom.iterable.js
new file mode 100644
index 0000000..e56371a
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/web.dom.iterable.js
@@ -0,0 +1,13 @@
+require('./es6.array.iterator');
+var global = require('./_global')
+ , hide = require('./_hide')
+ , Iterators = require('./_iterators')
+ , TO_STRING_TAG = require('./_wks')('toStringTag');
+
+for(var collections = ['NodeList', 'DOMTokenList', 'MediaList', 'StyleSheetList', 'CSSRuleList'], i = 0; i < 5; i++){
+ var NAME = collections[i]
+ , Collection = global[NAME]
+ , proto = Collection && Collection.prototype;
+ if(proto && !proto[TO_STRING_TAG])hide(proto, TO_STRING_TAG, NAME);
+ Iterators[NAME] = Iterators.Array;
+}
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/web.immediate.js b/node_modules/babel-register/node_modules/core-js/library/modules/web.immediate.js
new file mode 100644
index 0000000..5b94637
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/web.immediate.js
@@ -0,0 +1,6 @@
+var $export = require('./_export')
+ , $task = require('./_task');
+$export($export.G + $export.B, {
+ setImmediate: $task.set,
+ clearImmediate: $task.clear
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/modules/web.timers.js b/node_modules/babel-register/node_modules/core-js/library/modules/web.timers.js
new file mode 100644
index 0000000..1a1da57
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/modules/web.timers.js
@@ -0,0 +1,20 @@
+// ie9- setTimeout & setInterval additional parameters fix
+var global = require('./_global')
+ , $export = require('./_export')
+ , invoke = require('./_invoke')
+ , partial = require('./_partial')
+ , navigator = global.navigator
+ , MSIE = !!navigator && /MSIE .\./.test(navigator.userAgent); // <- dirty ie9- check
+var wrap = function(set){
+ return MSIE ? function(fn, time /*, ...args */){
+ return set(invoke(
+ partial,
+ [].slice.call(arguments, 2),
+ typeof fn == 'function' ? fn : Function(fn)
+ ), time);
+ } : set;
+};
+$export($export.G + $export.B + $export.F * MSIE, {
+ setTimeout: wrap(global.setTimeout),
+ setInterval: wrap(global.setInterval)
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/shim.js b/node_modules/babel-register/node_modules/core-js/library/shim.js
new file mode 100644
index 0000000..7697272
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/shim.js
@@ -0,0 +1,172 @@
+require('./modules/es6.symbol');
+require('./modules/es6.object.create');
+require('./modules/es6.object.define-property');
+require('./modules/es6.object.define-properties');
+require('./modules/es6.object.get-own-property-descriptor');
+require('./modules/es6.object.get-prototype-of');
+require('./modules/es6.object.keys');
+require('./modules/es6.object.get-own-property-names');
+require('./modules/es6.object.freeze');
+require('./modules/es6.object.seal');
+require('./modules/es6.object.prevent-extensions');
+require('./modules/es6.object.is-frozen');
+require('./modules/es6.object.is-sealed');
+require('./modules/es6.object.is-extensible');
+require('./modules/es6.object.assign');
+require('./modules/es6.object.is');
+require('./modules/es6.object.set-prototype-of');
+require('./modules/es6.object.to-string');
+require('./modules/es6.function.bind');
+require('./modules/es6.function.name');
+require('./modules/es6.function.has-instance');
+require('./modules/es6.parse-int');
+require('./modules/es6.parse-float');
+require('./modules/es6.number.constructor');
+require('./modules/es6.number.to-fixed');
+require('./modules/es6.number.to-precision');
+require('./modules/es6.number.epsilon');
+require('./modules/es6.number.is-finite');
+require('./modules/es6.number.is-integer');
+require('./modules/es6.number.is-nan');
+require('./modules/es6.number.is-safe-integer');
+require('./modules/es6.number.max-safe-integer');
+require('./modules/es6.number.min-safe-integer');
+require('./modules/es6.number.parse-float');
+require('./modules/es6.number.parse-int');
+require('./modules/es6.math.acosh');
+require('./modules/es6.math.asinh');
+require('./modules/es6.math.atanh');
+require('./modules/es6.math.cbrt');
+require('./modules/es6.math.clz32');
+require('./modules/es6.math.cosh');
+require('./modules/es6.math.expm1');
+require('./modules/es6.math.fround');
+require('./modules/es6.math.hypot');
+require('./modules/es6.math.imul');
+require('./modules/es6.math.log10');
+require('./modules/es6.math.log1p');
+require('./modules/es6.math.log2');
+require('./modules/es6.math.sign');
+require('./modules/es6.math.sinh');
+require('./modules/es6.math.tanh');
+require('./modules/es6.math.trunc');
+require('./modules/es6.string.from-code-point');
+require('./modules/es6.string.raw');
+require('./modules/es6.string.trim');
+require('./modules/es6.string.iterator');
+require('./modules/es6.string.code-point-at');
+require('./modules/es6.string.ends-with');
+require('./modules/es6.string.includes');
+require('./modules/es6.string.repeat');
+require('./modules/es6.string.starts-with');
+require('./modules/es6.string.anchor');
+require('./modules/es6.string.big');
+require('./modules/es6.string.blink');
+require('./modules/es6.string.bold');
+require('./modules/es6.string.fixed');
+require('./modules/es6.string.fontcolor');
+require('./modules/es6.string.fontsize');
+require('./modules/es6.string.italics');
+require('./modules/es6.string.link');
+require('./modules/es6.string.small');
+require('./modules/es6.string.strike');
+require('./modules/es6.string.sub');
+require('./modules/es6.string.sup');
+require('./modules/es6.date.now');
+require('./modules/es6.date.to-json');
+require('./modules/es6.date.to-iso-string');
+require('./modules/es6.date.to-string');
+require('./modules/es6.date.to-primitive');
+require('./modules/es6.array.is-array');
+require('./modules/es6.array.from');
+require('./modules/es6.array.of');
+require('./modules/es6.array.join');
+require('./modules/es6.array.slice');
+require('./modules/es6.array.sort');
+require('./modules/es6.array.for-each');
+require('./modules/es6.array.map');
+require('./modules/es6.array.filter');
+require('./modules/es6.array.some');
+require('./modules/es6.array.every');
+require('./modules/es6.array.reduce');
+require('./modules/es6.array.reduce-right');
+require('./modules/es6.array.index-of');
+require('./modules/es6.array.last-index-of');
+require('./modules/es6.array.copy-within');
+require('./modules/es6.array.fill');
+require('./modules/es6.array.find');
+require('./modules/es6.array.find-index');
+require('./modules/es6.array.species');
+require('./modules/es6.array.iterator');
+require('./modules/es6.regexp.constructor');
+require('./modules/es6.regexp.to-string');
+require('./modules/es6.regexp.flags');
+require('./modules/es6.regexp.match');
+require('./modules/es6.regexp.replace');
+require('./modules/es6.regexp.search');
+require('./modules/es6.regexp.split');
+require('./modules/es6.promise');
+require('./modules/es6.map');
+require('./modules/es6.set');
+require('./modules/es6.weak-map');
+require('./modules/es6.weak-set');
+require('./modules/es6.typed.array-buffer');
+require('./modules/es6.typed.data-view');
+require('./modules/es6.typed.int8-array');
+require('./modules/es6.typed.uint8-array');
+require('./modules/es6.typed.uint8-clamped-array');
+require('./modules/es6.typed.int16-array');
+require('./modules/es6.typed.uint16-array');
+require('./modules/es6.typed.int32-array');
+require('./modules/es6.typed.uint32-array');
+require('./modules/es6.typed.float32-array');
+require('./modules/es6.typed.float64-array');
+require('./modules/es6.reflect.apply');
+require('./modules/es6.reflect.construct');
+require('./modules/es6.reflect.define-property');
+require('./modules/es6.reflect.delete-property');
+require('./modules/es6.reflect.enumerate');
+require('./modules/es6.reflect.get');
+require('./modules/es6.reflect.get-own-property-descriptor');
+require('./modules/es6.reflect.get-prototype-of');
+require('./modules/es6.reflect.has');
+require('./modules/es6.reflect.is-extensible');
+require('./modules/es6.reflect.own-keys');
+require('./modules/es6.reflect.prevent-extensions');
+require('./modules/es6.reflect.set');
+require('./modules/es6.reflect.set-prototype-of');
+require('./modules/es7.array.includes');
+require('./modules/es7.string.at');
+require('./modules/es7.string.pad-start');
+require('./modules/es7.string.pad-end');
+require('./modules/es7.string.trim-left');
+require('./modules/es7.string.trim-right');
+require('./modules/es7.string.match-all');
+require('./modules/es7.object.get-own-property-descriptors');
+require('./modules/es7.object.values');
+require('./modules/es7.object.entries');
+require('./modules/es7.object.define-getter');
+require('./modules/es7.object.define-setter');
+require('./modules/es7.object.lookup-getter');
+require('./modules/es7.object.lookup-setter');
+require('./modules/es7.map.to-json');
+require('./modules/es7.set.to-json');
+require('./modules/es7.system.global');
+require('./modules/es7.error.is-error');
+require('./modules/es7.math.iaddh');
+require('./modules/es7.math.isubh');
+require('./modules/es7.math.imulh');
+require('./modules/es7.math.umulh');
+require('./modules/es7.reflect.define-metadata');
+require('./modules/es7.reflect.delete-metadata');
+require('./modules/es7.reflect.get-metadata');
+require('./modules/es7.reflect.get-metadata-keys');
+require('./modules/es7.reflect.get-own-metadata');
+require('./modules/es7.reflect.get-own-metadata-keys');
+require('./modules/es7.reflect.has-metadata');
+require('./modules/es7.reflect.has-own-metadata');
+require('./modules/es7.reflect.metadata');
+require('./modules/web.timers');
+require('./modules/web.immediate');
+require('./modules/web.dom.iterable');
+module.exports = require('./modules/_core');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/stage/0.js b/node_modules/babel-register/node_modules/core-js/library/stage/0.js
new file mode 100644
index 0000000..d97bbba
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/stage/0.js
@@ -0,0 +1,9 @@
+require('../modules/es7.string.at');
+require('../modules/es7.map.to-json');
+require('../modules/es7.set.to-json');
+require('../modules/es7.error.is-error');
+require('../modules/es7.math.iaddh');
+require('../modules/es7.math.isubh');
+require('../modules/es7.math.imulh');
+require('../modules/es7.math.umulh');
+module.exports = require('./1');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/stage/1.js b/node_modules/babel-register/node_modules/core-js/library/stage/1.js
new file mode 100644
index 0000000..8db05fb
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/stage/1.js
@@ -0,0 +1,5 @@
+require('../modules/es7.string.trim-left');
+require('../modules/es7.string.trim-right');
+require('../modules/es7.string.match-all');
+require('../modules/es7.system.global');
+module.exports = require('./2');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/stage/2.js b/node_modules/babel-register/node_modules/core-js/library/stage/2.js
new file mode 100644
index 0000000..525877f
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/stage/2.js
@@ -0,0 +1 @@
+module.exports = require('./3');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/stage/3.js b/node_modules/babel-register/node_modules/core-js/library/stage/3.js
new file mode 100644
index 0000000..f4f6f99
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/stage/3.js
@@ -0,0 +1,6 @@
+require('../modules/es7.object.get-own-property-descriptors');
+require('../modules/es7.object.values');
+require('../modules/es7.object.entries');
+require('../modules/es7.string.pad-start');
+require('../modules/es7.string.pad-end');
+module.exports = require('./4');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/stage/4.js b/node_modules/babel-register/node_modules/core-js/library/stage/4.js
new file mode 100644
index 0000000..f9c8c1f
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/stage/4.js
@@ -0,0 +1,6 @@
+require('../modules/es7.object.define-getter');
+require('../modules/es7.object.define-setter');
+require('../modules/es7.object.lookup-getter');
+require('../modules/es7.object.lookup-setter');
+require('../modules/es7.array.includes');
+module.exports = require('../modules/_core');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/stage/index.js b/node_modules/babel-register/node_modules/core-js/library/stage/index.js
new file mode 100644
index 0000000..eb95914
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/stage/index.js
@@ -0,0 +1 @@
+module.exports = require('./pre');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/stage/pre.js b/node_modules/babel-register/node_modules/core-js/library/stage/pre.js
new file mode 100644
index 0000000..135ba46
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/stage/pre.js
@@ -0,0 +1,10 @@
+require('../modules/es7.reflect.define-metadata');
+require('../modules/es7.reflect.delete-metadata');
+require('../modules/es7.reflect.get-metadata');
+require('../modules/es7.reflect.get-metadata-keys');
+require('../modules/es7.reflect.get-own-metadata');
+require('../modules/es7.reflect.get-own-metadata-keys');
+require('../modules/es7.reflect.has-metadata');
+require('../modules/es7.reflect.has-own-metadata');
+require('../modules/es7.reflect.metadata');
+module.exports = require('./0');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/web/dom-collections.js b/node_modules/babel-register/node_modules/core-js/library/web/dom-collections.js
new file mode 100644
index 0000000..2118e3f
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/web/dom-collections.js
@@ -0,0 +1,2 @@
+require('../modules/web.dom.iterable');
+module.exports = require('../modules/_core');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/web/immediate.js b/node_modules/babel-register/node_modules/core-js/library/web/immediate.js
new file mode 100644
index 0000000..244ebb1
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/web/immediate.js
@@ -0,0 +1,2 @@
+require('../modules/web.immediate');
+module.exports = require('../modules/_core');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/web/index.js b/node_modules/babel-register/node_modules/core-js/library/web/index.js
new file mode 100644
index 0000000..6687d57
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/web/index.js
@@ -0,0 +1,4 @@
+require('../modules/web.timers');
+require('../modules/web.immediate');
+require('../modules/web.dom.iterable');
+module.exports = require('../modules/_core');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/library/web/timers.js b/node_modules/babel-register/node_modules/core-js/library/web/timers.js
new file mode 100644
index 0000000..2c66f43
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/library/web/timers.js
@@ -0,0 +1,2 @@
+require('../modules/web.timers');
+module.exports = require('../modules/_core');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_a-function.js b/node_modules/babel-register/node_modules/core-js/modules/_a-function.js
new file mode 100644
index 0000000..8c35f45
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_a-function.js
@@ -0,0 +1,4 @@
+module.exports = function(it){
+ if(typeof it != 'function')throw TypeError(it + ' is not a function!');
+ return it;
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_a-number-value.js b/node_modules/babel-register/node_modules/core-js/modules/_a-number-value.js
new file mode 100644
index 0000000..7a959cb
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_a-number-value.js
@@ -0,0 +1,5 @@
+var cof = require('./_cof');
+module.exports = function(it, msg){
+ if(typeof it != 'number' && cof(it) != 'Number')throw TypeError(msg);
+ return +it;
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_add-to-unscopables.js b/node_modules/babel-register/node_modules/core-js/modules/_add-to-unscopables.js
new file mode 100644
index 0000000..0a74bae
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_add-to-unscopables.js
@@ -0,0 +1,7 @@
+// 22.1.3.31 Array.prototype[@@unscopables]
+var UNSCOPABLES = require('./_wks')('unscopables')
+ , ArrayProto = Array.prototype;
+if(ArrayProto[UNSCOPABLES] == undefined)require('./_hide')(ArrayProto, UNSCOPABLES, {});
+module.exports = function(key){
+ ArrayProto[UNSCOPABLES][key] = true;
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_an-instance.js b/node_modules/babel-register/node_modules/core-js/modules/_an-instance.js
new file mode 100644
index 0000000..e4dfad3
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_an-instance.js
@@ -0,0 +1,5 @@
+module.exports = function(it, Constructor, name, forbiddenField){
+ if(!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)){
+ throw TypeError(name + ': incorrect invocation!');
+ } return it;
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_an-object.js b/node_modules/babel-register/node_modules/core-js/modules/_an-object.js
new file mode 100644
index 0000000..59a8a3a
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_an-object.js
@@ -0,0 +1,5 @@
+var isObject = require('./_is-object');
+module.exports = function(it){
+ if(!isObject(it))throw TypeError(it + ' is not an object!');
+ return it;
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_array-copy-within.js b/node_modules/babel-register/node_modules/core-js/modules/_array-copy-within.js
new file mode 100644
index 0000000..d901a32
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_array-copy-within.js
@@ -0,0 +1,26 @@
+// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)
+'use strict';
+var toObject = require('./_to-object')
+ , toIndex = require('./_to-index')
+ , toLength = require('./_to-length');
+
+module.exports = [].copyWithin || function copyWithin(target/*= 0*/, start/*= 0, end = @length*/){
+ var O = toObject(this)
+ , len = toLength(O.length)
+ , to = toIndex(target, len)
+ , from = toIndex(start, len)
+ , end = arguments.length > 2 ? arguments[2] : undefined
+ , count = Math.min((end === undefined ? len : toIndex(end, len)) - from, len - to)
+ , inc = 1;
+ if(from < to && to < from + count){
+ inc = -1;
+ from += count - 1;
+ to += count - 1;
+ }
+ while(count-- > 0){
+ if(from in O)O[to] = O[from];
+ else delete O[to];
+ to += inc;
+ from += inc;
+ } return O;
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_array-fill.js b/node_modules/babel-register/node_modules/core-js/modules/_array-fill.js
new file mode 100644
index 0000000..b21bb7e
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_array-fill.js
@@ -0,0 +1,15 @@
+// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)
+'use strict';
+var toObject = require('./_to-object')
+ , toIndex = require('./_to-index')
+ , toLength = require('./_to-length');
+module.exports = function fill(value /*, start = 0, end = @length */){
+ var O = toObject(this)
+ , length = toLength(O.length)
+ , aLen = arguments.length
+ , index = toIndex(aLen > 1 ? arguments[1] : undefined, length)
+ , end = aLen > 2 ? arguments[2] : undefined
+ , endPos = end === undefined ? length : toIndex(end, length);
+ while(endPos > index)O[index++] = value;
+ return O;
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_array-from-iterable.js b/node_modules/babel-register/node_modules/core-js/modules/_array-from-iterable.js
new file mode 100644
index 0000000..b5c454f
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_array-from-iterable.js
@@ -0,0 +1,7 @@
+var forOf = require('./_for-of');
+
+module.exports = function(iter, ITERATOR){
+ var result = [];
+ forOf(iter, false, result.push, result, ITERATOR);
+ return result;
+};
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_array-includes.js b/node_modules/babel-register/node_modules/core-js/modules/_array-includes.js
new file mode 100644
index 0000000..ab8c9d3
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_array-includes.js
@@ -0,0 +1,21 @@
+// false -> Array#indexOf
+// true -> Array#includes
+var toIObject = require('./_to-iobject')
+ , toLength = require('./_to-length')
+ , toIndex = require('./_to-index');
+module.exports = function(IS_INCLUDES){
+ return function($this, el, fromIndex){
+ var O = toIObject($this)
+ , length = toLength(O.length)
+ , index = toIndex(fromIndex, length)
+ , value;
+ // Array#includes uses SameValueZero equality algorithm
+ if(IS_INCLUDES && el != el)while(length > index){
+ value = O[index++];
+ if(value != value)return true;
+ // Array#toIndex ignores holes, Array#includes - not
+ } else for(;length > index; index++)if(IS_INCLUDES || index in O){
+ if(O[index] === el)return IS_INCLUDES || index;
+ } return !IS_INCLUDES && -1;
+ };
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_array-methods.js b/node_modules/babel-register/node_modules/core-js/modules/_array-methods.js
new file mode 100644
index 0000000..8ffbe11
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_array-methods.js
@@ -0,0 +1,44 @@
+// 0 -> Array#forEach
+// 1 -> Array#map
+// 2 -> Array#filter
+// 3 -> Array#some
+// 4 -> Array#every
+// 5 -> Array#find
+// 6 -> Array#findIndex
+var ctx = require('./_ctx')
+ , IObject = require('./_iobject')
+ , toObject = require('./_to-object')
+ , toLength = require('./_to-length')
+ , asc = require('./_array-species-create');
+module.exports = function(TYPE, $create){
+ var IS_MAP = TYPE == 1
+ , IS_FILTER = TYPE == 2
+ , IS_SOME = TYPE == 3
+ , IS_EVERY = TYPE == 4
+ , IS_FIND_INDEX = TYPE == 6
+ , NO_HOLES = TYPE == 5 || IS_FIND_INDEX
+ , create = $create || asc;
+ return function($this, callbackfn, that){
+ var O = toObject($this)
+ , self = IObject(O)
+ , f = ctx(callbackfn, that, 3)
+ , length = toLength(self.length)
+ , index = 0
+ , result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined
+ , val, res;
+ for(;length > index; index++)if(NO_HOLES || index in self){
+ val = self[index];
+ res = f(val, index, O);
+ if(TYPE){
+ if(IS_MAP)result[index] = res; // map
+ else if(res)switch(TYPE){
+ case 3: return true; // some
+ case 5: return val; // find
+ case 6: return index; // findIndex
+ case 2: result.push(val); // filter
+ } else if(IS_EVERY)return false; // every
+ }
+ }
+ return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;
+ };
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_array-reduce.js b/node_modules/babel-register/node_modules/core-js/modules/_array-reduce.js
new file mode 100644
index 0000000..22101b7
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_array-reduce.js
@@ -0,0 +1,28 @@
+var aFunction = require('./_a-function')
+ , toObject = require('./_to-object')
+ , IObject = require('./_iobject')
+ , toLength = require('./_to-length');
+
+module.exports = function(that, callbackfn, aLen, memo, isRight){
+ aFunction(callbackfn);
+ var O = toObject(that)
+ , self = IObject(O)
+ , length = toLength(O.length)
+ , index = isRight ? length - 1 : 0
+ , i = isRight ? -1 : 1;
+ if(aLen < 2)for(;;){
+ if(index in self){
+ memo = self[index];
+ index += i;
+ break;
+ }
+ index += i;
+ if(isRight ? index < 0 : length <= index){
+ throw TypeError('Reduce of empty array with no initial value');
+ }
+ }
+ for(;isRight ? index >= 0 : length > index; index += i)if(index in self){
+ memo = callbackfn(memo, self[index], index, O);
+ }
+ return memo;
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_array-species-create.js b/node_modules/babel-register/node_modules/core-js/modules/_array-species-create.js
new file mode 100644
index 0000000..a2ee3fe
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_array-species-create.js
@@ -0,0 +1,16 @@
+// 9.4.2.3 ArraySpeciesCreate(originalArray, length)
+var isObject = require('./_is-object')
+ , isArray = require('./_is-array')
+ , SPECIES = require('./_wks')('species');
+module.exports = function(original, length){
+ var C;
+ if(isArray(original)){
+ C = original.constructor;
+ // cross-realm fallback
+ if(typeof C == 'function' && (C === Array || isArray(C.prototype)))C = undefined;
+ if(isObject(C)){
+ C = C[SPECIES];
+ if(C === null)C = undefined;
+ }
+ } return new (C === undefined ? Array : C)(length);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_bind.js b/node_modules/babel-register/node_modules/core-js/modules/_bind.js
new file mode 100644
index 0000000..1f7b017
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_bind.js
@@ -0,0 +1,24 @@
+'use strict';
+var aFunction = require('./_a-function')
+ , isObject = require('./_is-object')
+ , invoke = require('./_invoke')
+ , arraySlice = [].slice
+ , factories = {};
+
+var construct = function(F, len, args){
+ if(!(len in factories)){
+ for(var n = [], i = 0; i < len; i++)n[i] = 'a[' + i + ']';
+ factories[len] = Function('F,a', 'return new F(' + n.join(',') + ')');
+ } return factories[len](F, args);
+};
+
+module.exports = Function.bind || function bind(that /*, args... */){
+ var fn = aFunction(this)
+ , partArgs = arraySlice.call(arguments, 1);
+ var bound = function(/* args... */){
+ var args = partArgs.concat(arraySlice.call(arguments));
+ return this instanceof bound ? construct(fn, args.length, args) : invoke(fn, args, that);
+ };
+ if(isObject(fn.prototype))bound.prototype = fn.prototype;
+ return bound;
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_classof.js b/node_modules/babel-register/node_modules/core-js/modules/_classof.js
new file mode 100644
index 0000000..dab3a80
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_classof.js
@@ -0,0 +1,23 @@
+// getting tag from 19.1.3.6 Object.prototype.toString()
+var cof = require('./_cof')
+ , TAG = require('./_wks')('toStringTag')
+ // ES3 wrong here
+ , ARG = cof(function(){ return arguments; }()) == 'Arguments';
+
+// fallback for IE11 Script Access Denied error
+var tryGet = function(it, key){
+ try {
+ return it[key];
+ } catch(e){ /* empty */ }
+};
+
+module.exports = function(it){
+ var O, T, B;
+ return it === undefined ? 'Undefined' : it === null ? 'Null'
+ // @@toStringTag case
+ : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T
+ // builtinTag case
+ : ARG ? cof(O)
+ // ES3 arguments fallback
+ : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_cof.js b/node_modules/babel-register/node_modules/core-js/modules/_cof.js
new file mode 100644
index 0000000..1dd2779
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_cof.js
@@ -0,0 +1,5 @@
+var toString = {}.toString;
+
+module.exports = function(it){
+ return toString.call(it).slice(8, -1);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_collection-strong.js b/node_modules/babel-register/node_modules/core-js/modules/_collection-strong.js
new file mode 100644
index 0000000..82baaa4
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_collection-strong.js
@@ -0,0 +1,143 @@
+'use strict';
+var dP = require('./_object-dp').f
+ , create = require('./_object-create')
+ , hide = require('./_hide')
+ , redefineAll = require('./_redefine-all')
+ , ctx = require('./_ctx')
+ , anInstance = require('./_an-instance')
+ , defined = require('./_defined')
+ , forOf = require('./_for-of')
+ , $iterDefine = require('./_iter-define')
+ , step = require('./_iter-step')
+ , setSpecies = require('./_set-species')
+ , DESCRIPTORS = require('./_descriptors')
+ , fastKey = require('./_meta').fastKey
+ , SIZE = DESCRIPTORS ? '_s' : 'size';
+
+var getEntry = function(that, key){
+ // fast case
+ var index = fastKey(key), entry;
+ if(index !== 'F')return that._i[index];
+ // frozen object case
+ for(entry = that._f; entry; entry = entry.n){
+ if(entry.k == key)return entry;
+ }
+};
+
+module.exports = {
+ getConstructor: function(wrapper, NAME, IS_MAP, ADDER){
+ var C = wrapper(function(that, iterable){
+ anInstance(that, C, NAME, '_i');
+ that._i = create(null); // index
+ that._f = undefined; // first entry
+ that._l = undefined; // last entry
+ that[SIZE] = 0; // size
+ if(iterable != undefined)forOf(iterable, IS_MAP, that[ADDER], that);
+ });
+ redefineAll(C.prototype, {
+ // 23.1.3.1 Map.prototype.clear()
+ // 23.2.3.2 Set.prototype.clear()
+ clear: function clear(){
+ for(var that = this, data = that._i, entry = that._f; entry; entry = entry.n){
+ entry.r = true;
+ if(entry.p)entry.p = entry.p.n = undefined;
+ delete data[entry.i];
+ }
+ that._f = that._l = undefined;
+ that[SIZE] = 0;
+ },
+ // 23.1.3.3 Map.prototype.delete(key)
+ // 23.2.3.4 Set.prototype.delete(value)
+ 'delete': function(key){
+ var that = this
+ , entry = getEntry(that, key);
+ if(entry){
+ var next = entry.n
+ , prev = entry.p;
+ delete that._i[entry.i];
+ entry.r = true;
+ if(prev)prev.n = next;
+ if(next)next.p = prev;
+ if(that._f == entry)that._f = next;
+ if(that._l == entry)that._l = prev;
+ that[SIZE]--;
+ } return !!entry;
+ },
+ // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)
+ // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)
+ forEach: function forEach(callbackfn /*, that = undefined */){
+ anInstance(this, C, 'forEach');
+ var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3)
+ , entry;
+ while(entry = entry ? entry.n : this._f){
+ f(entry.v, entry.k, this);
+ // revert to the last existing entry
+ while(entry && entry.r)entry = entry.p;
+ }
+ },
+ // 23.1.3.7 Map.prototype.has(key)
+ // 23.2.3.7 Set.prototype.has(value)
+ has: function has(key){
+ return !!getEntry(this, key);
+ }
+ });
+ if(DESCRIPTORS)dP(C.prototype, 'size', {
+ get: function(){
+ return defined(this[SIZE]);
+ }
+ });
+ return C;
+ },
+ def: function(that, key, value){
+ var entry = getEntry(that, key)
+ , prev, index;
+ // change existing entry
+ if(entry){
+ entry.v = value;
+ // create new entry
+ } else {
+ that._l = entry = {
+ i: index = fastKey(key, true), // <- index
+ k: key, // <- key
+ v: value, // <- value
+ p: prev = that._l, // <- previous entry
+ n: undefined, // <- next entry
+ r: false // <- removed
+ };
+ if(!that._f)that._f = entry;
+ if(prev)prev.n = entry;
+ that[SIZE]++;
+ // add to index
+ if(index !== 'F')that._i[index] = entry;
+ } return that;
+ },
+ getEntry: getEntry,
+ setStrong: function(C, NAME, IS_MAP){
+ // add .keys, .values, .entries, [@@iterator]
+ // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11
+ $iterDefine(C, NAME, function(iterated, kind){
+ this._t = iterated; // target
+ this._k = kind; // kind
+ this._l = undefined; // previous
+ }, function(){
+ var that = this
+ , kind = that._k
+ , entry = that._l;
+ // revert to the last existing entry
+ while(entry && entry.r)entry = entry.p;
+ // get next entry
+ if(!that._t || !(that._l = entry = entry ? entry.n : that._t._f)){
+ // or finish the iteration
+ that._t = undefined;
+ return step(1);
+ }
+ // return step by kind
+ if(kind == 'keys' )return step(0, entry.k);
+ if(kind == 'values')return step(0, entry.v);
+ return step(0, [entry.k, entry.v]);
+ }, IS_MAP ? 'entries' : 'values' , !IS_MAP, true);
+
+ // add [@@species], 23.1.2.2, 23.2.2.2
+ setSpecies(NAME);
+ }
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_collection-to-json.js b/node_modules/babel-register/node_modules/core-js/modules/_collection-to-json.js
new file mode 100644
index 0000000..ce0282f
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_collection-to-json.js
@@ -0,0 +1,9 @@
+// https://github.com/DavidBruant/Map-Set.prototype.toJSON
+var classof = require('./_classof')
+ , from = require('./_array-from-iterable');
+module.exports = function(NAME){
+ return function toJSON(){
+ if(classof(this) != NAME)throw TypeError(NAME + "#toJSON isn't generic");
+ return from(this);
+ };
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_collection-weak.js b/node_modules/babel-register/node_modules/core-js/modules/_collection-weak.js
new file mode 100644
index 0000000..a8597e6
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_collection-weak.js
@@ -0,0 +1,83 @@
+'use strict';
+var redefineAll = require('./_redefine-all')
+ , getWeak = require('./_meta').getWeak
+ , anObject = require('./_an-object')
+ , isObject = require('./_is-object')
+ , anInstance = require('./_an-instance')
+ , forOf = require('./_for-of')
+ , createArrayMethod = require('./_array-methods')
+ , $has = require('./_has')
+ , arrayFind = createArrayMethod(5)
+ , arrayFindIndex = createArrayMethod(6)
+ , id = 0;
+
+// fallback for uncaught frozen keys
+var uncaughtFrozenStore = function(that){
+ return that._l || (that._l = new UncaughtFrozenStore);
+};
+var UncaughtFrozenStore = function(){
+ this.a = [];
+};
+var findUncaughtFrozen = function(store, key){
+ return arrayFind(store.a, function(it){
+ return it[0] === key;
+ });
+};
+UncaughtFrozenStore.prototype = {
+ get: function(key){
+ var entry = findUncaughtFrozen(this, key);
+ if(entry)return entry[1];
+ },
+ has: function(key){
+ return !!findUncaughtFrozen(this, key);
+ },
+ set: function(key, value){
+ var entry = findUncaughtFrozen(this, key);
+ if(entry)entry[1] = value;
+ else this.a.push([key, value]);
+ },
+ 'delete': function(key){
+ var index = arrayFindIndex(this.a, function(it){
+ return it[0] === key;
+ });
+ if(~index)this.a.splice(index, 1);
+ return !!~index;
+ }
+};
+
+module.exports = {
+ getConstructor: function(wrapper, NAME, IS_MAP, ADDER){
+ var C = wrapper(function(that, iterable){
+ anInstance(that, C, NAME, '_i');
+ that._i = id++; // collection id
+ that._l = undefined; // leak store for uncaught frozen objects
+ if(iterable != undefined)forOf(iterable, IS_MAP, that[ADDER], that);
+ });
+ redefineAll(C.prototype, {
+ // 23.3.3.2 WeakMap.prototype.delete(key)
+ // 23.4.3.3 WeakSet.prototype.delete(value)
+ 'delete': function(key){
+ if(!isObject(key))return false;
+ var data = getWeak(key);
+ if(data === true)return uncaughtFrozenStore(this)['delete'](key);
+ return data && $has(data, this._i) && delete data[this._i];
+ },
+ // 23.3.3.4 WeakMap.prototype.has(key)
+ // 23.4.3.4 WeakSet.prototype.has(value)
+ has: function has(key){
+ if(!isObject(key))return false;
+ var data = getWeak(key);
+ if(data === true)return uncaughtFrozenStore(this).has(key);
+ return data && $has(data, this._i);
+ }
+ });
+ return C;
+ },
+ def: function(that, key, value){
+ var data = getWeak(anObject(key), true);
+ if(data === true)uncaughtFrozenStore(that).set(key, value);
+ else data[that._i] = value;
+ return that;
+ },
+ ufstore: uncaughtFrozenStore
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_collection.js b/node_modules/babel-register/node_modules/core-js/modules/_collection.js
new file mode 100644
index 0000000..2b18345
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_collection.js
@@ -0,0 +1,85 @@
+'use strict';
+var global = require('./_global')
+ , $export = require('./_export')
+ , redefine = require('./_redefine')
+ , redefineAll = require('./_redefine-all')
+ , meta = require('./_meta')
+ , forOf = require('./_for-of')
+ , anInstance = require('./_an-instance')
+ , isObject = require('./_is-object')
+ , fails = require('./_fails')
+ , $iterDetect = require('./_iter-detect')
+ , setToStringTag = require('./_set-to-string-tag')
+ , inheritIfRequired = require('./_inherit-if-required');
+
+module.exports = function(NAME, wrapper, methods, common, IS_MAP, IS_WEAK){
+ var Base = global[NAME]
+ , C = Base
+ , ADDER = IS_MAP ? 'set' : 'add'
+ , proto = C && C.prototype
+ , O = {};
+ var fixMethod = function(KEY){
+ var fn = proto[KEY];
+ redefine(proto, KEY,
+ KEY == 'delete' ? function(a){
+ return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);
+ } : KEY == 'has' ? function has(a){
+ return IS_WEAK && !isObject(a) ? false : fn.call(this, a === 0 ? 0 : a);
+ } : KEY == 'get' ? function get(a){
+ return IS_WEAK && !isObject(a) ? undefined : fn.call(this, a === 0 ? 0 : a);
+ } : KEY == 'add' ? function add(a){ fn.call(this, a === 0 ? 0 : a); return this; }
+ : function set(a, b){ fn.call(this, a === 0 ? 0 : a, b); return this; }
+ );
+ };
+ if(typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function(){
+ new C().entries().next();
+ }))){
+ // create collection constructor
+ C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);
+ redefineAll(C.prototype, methods);
+ meta.NEED = true;
+ } else {
+ var instance = new C
+ // early implementations not supports chaining
+ , HASNT_CHAINING = instance[ADDER](IS_WEAK ? {} : -0, 1) != instance
+ // V8 ~ Chromium 40- weak-collections throws on primitives, but should return false
+ , THROWS_ON_PRIMITIVES = fails(function(){ instance.has(1); })
+ // most early implementations doesn't supports iterables, most modern - not close it correctly
+ , ACCEPT_ITERABLES = $iterDetect(function(iter){ new C(iter); }) // eslint-disable-line no-new
+ // for early implementations -0 and +0 not the same
+ , BUGGY_ZERO = !IS_WEAK && fails(function(){
+ // V8 ~ Chromium 42- fails only with 5+ elements
+ var $instance = new C()
+ , index = 5;
+ while(index--)$instance[ADDER](index, index);
+ return !$instance.has(-0);
+ });
+ if(!ACCEPT_ITERABLES){
+ C = wrapper(function(target, iterable){
+ anInstance(target, C, NAME);
+ var that = inheritIfRequired(new Base, target, C);
+ if(iterable != undefined)forOf(iterable, IS_MAP, that[ADDER], that);
+ return that;
+ });
+ C.prototype = proto;
+ proto.constructor = C;
+ }
+ if(THROWS_ON_PRIMITIVES || BUGGY_ZERO){
+ fixMethod('delete');
+ fixMethod('has');
+ IS_MAP && fixMethod('get');
+ }
+ if(BUGGY_ZERO || HASNT_CHAINING)fixMethod(ADDER);
+ // weak collections should not contains .clear method
+ if(IS_WEAK && proto.clear)delete proto.clear;
+ }
+
+ setToStringTag(C, NAME);
+
+ O[NAME] = C;
+ $export($export.G + $export.W + $export.F * (C != Base), O);
+
+ if(!IS_WEAK)common.setStrong(C, NAME, IS_MAP);
+
+ return C;
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_core.js b/node_modules/babel-register/node_modules/core-js/modules/_core.js
new file mode 100644
index 0000000..55d5737
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_core.js
@@ -0,0 +1,2 @@
+var core = module.exports = {version: '2.2.0'};
+if(typeof __e == 'number')__e = core; // eslint-disable-line no-undef
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_ctx.js b/node_modules/babel-register/node_modules/core-js/modules/_ctx.js
new file mode 100644
index 0000000..b52d85f
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_ctx.js
@@ -0,0 +1,20 @@
+// optional / simple context binding
+var aFunction = require('./_a-function');
+module.exports = function(fn, that, length){
+ aFunction(fn);
+ if(that === undefined)return fn;
+ switch(length){
+ case 1: return function(a){
+ return fn.call(that, a);
+ };
+ case 2: return function(a, b){
+ return fn.call(that, a, b);
+ };
+ case 3: return function(a, b, c){
+ return fn.call(that, a, b, c);
+ };
+ }
+ return function(/* ...args */){
+ return fn.apply(that, arguments);
+ };
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_date-to-primitive.js b/node_modules/babel-register/node_modules/core-js/modules/_date-to-primitive.js
new file mode 100644
index 0000000..8c09e53
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_date-to-primitive.js
@@ -0,0 +1,9 @@
+'use strict';
+var anObject = require('./_an-object')
+ , toPrimitive = require('./_to-primitive')
+ , NUMBER = 'number';
+
+module.exports = function(hint){
+ if(hint !== 'string' && hint !== NUMBER && hint !== 'default')throw TypeError('Incorrect hint');
+ return toPrimitive(anObject(this), hint != NUMBER);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_defined.js b/node_modules/babel-register/node_modules/core-js/modules/_defined.js
new file mode 100644
index 0000000..cfa476b
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_defined.js
@@ -0,0 +1,5 @@
+// 7.2.1 RequireObjectCoercible(argument)
+module.exports = function(it){
+ if(it == undefined)throw TypeError("Can't call method on " + it);
+ return it;
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_descriptors.js b/node_modules/babel-register/node_modules/core-js/modules/_descriptors.js
new file mode 100644
index 0000000..6ccb7ee
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_descriptors.js
@@ -0,0 +1,4 @@
+// Thank's IE8 for his funny defineProperty
+module.exports = !require('./_fails')(function(){
+ return Object.defineProperty({}, 'a', {get: function(){ return 7; }}).a != 7;
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_dom-create.js b/node_modules/babel-register/node_modules/core-js/modules/_dom-create.js
new file mode 100644
index 0000000..909b5ff
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_dom-create.js
@@ -0,0 +1,7 @@
+var isObject = require('./_is-object')
+ , document = require('./_global').document
+ // in old IE typeof document.createElement is 'object'
+ , is = isObject(document) && isObject(document.createElement);
+module.exports = function(it){
+ return is ? document.createElement(it) : {};
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_entry-virtual.js b/node_modules/babel-register/node_modules/core-js/modules/_entry-virtual.js
new file mode 100644
index 0000000..0ec6127
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_entry-virtual.js
@@ -0,0 +1,5 @@
+var core = require('./_core');
+module.exports = function(CONSTRUCTOR){
+ var C = core[CONSTRUCTOR];
+ return (C.virtual || C.prototype);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_enum-bug-keys.js b/node_modules/babel-register/node_modules/core-js/modules/_enum-bug-keys.js
new file mode 100644
index 0000000..e0cfa29
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_enum-bug-keys.js
@@ -0,0 +1,4 @@
+// IE 8- don't enum bug keys
+module.exports = (
+ 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'
+).split(',');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_enum-keys.js b/node_modules/babel-register/node_modules/core-js/modules/_enum-keys.js
new file mode 100644
index 0000000..3bf8069
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_enum-keys.js
@@ -0,0 +1,15 @@
+// all enumerable object keys, includes symbols
+var getKeys = require('./_object-keys')
+ , gOPS = require('./_object-gops')
+ , pIE = require('./_object-pie');
+module.exports = function(it){
+ var result = getKeys(it)
+ , getSymbols = gOPS.f;
+ if(getSymbols){
+ var symbols = getSymbols(it)
+ , isEnum = pIE.f
+ , i = 0
+ , key;
+ while(symbols.length > i)if(isEnum.call(it, key = symbols[i++]))result.push(key);
+ } return result;
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_export.js b/node_modules/babel-register/node_modules/core-js/modules/_export.js
new file mode 100644
index 0000000..afddf35
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_export.js
@@ -0,0 +1,43 @@
+var global = require('./_global')
+ , core = require('./_core')
+ , hide = require('./_hide')
+ , redefine = require('./_redefine')
+ , ctx = require('./_ctx')
+ , PROTOTYPE = 'prototype';
+
+var $export = function(type, name, source){
+ var IS_FORCED = type & $export.F
+ , IS_GLOBAL = type & $export.G
+ , IS_STATIC = type & $export.S
+ , IS_PROTO = type & $export.P
+ , IS_BIND = type & $export.B
+ , target = IS_GLOBAL ? global : IS_STATIC ? global[name] || (global[name] = {}) : (global[name] || {})[PROTOTYPE]
+ , exports = IS_GLOBAL ? core : core[name] || (core[name] = {})
+ , expProto = exports[PROTOTYPE] || (exports[PROTOTYPE] = {})
+ , key, own, out, exp;
+ if(IS_GLOBAL)source = name;
+ for(key in source){
+ // contains in native
+ own = !IS_FORCED && target && target[key] !== undefined;
+ // export native or passed
+ out = (own ? target : source)[key];
+ // bind timers to global for call from export context
+ exp = IS_BIND && own ? ctx(out, global) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;
+ // extend global
+ if(target)redefine(target, key, out, type & $export.U);
+ // export
+ if(exports[key] != out)hide(exports, key, exp);
+ if(IS_PROTO && expProto[key] != out)expProto[key] = out;
+ }
+};
+global.core = core;
+// type bitmap
+$export.F = 1; // forced
+$export.G = 2; // global
+$export.S = 4; // static
+$export.P = 8; // proto
+$export.B = 16; // bind
+$export.W = 32; // wrap
+$export.U = 64; // safe
+$export.R = 128; // real proto method for `library`
+module.exports = $export;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_fails-is-regexp.js b/node_modules/babel-register/node_modules/core-js/modules/_fails-is-regexp.js
new file mode 100644
index 0000000..130436b
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_fails-is-regexp.js
@@ -0,0 +1,12 @@
+var MATCH = require('./_wks')('match');
+module.exports = function(KEY){
+ var re = /./;
+ try {
+ '/./'[KEY](re);
+ } catch(e){
+ try {
+ re[MATCH] = false;
+ return !'/./'[KEY](re);
+ } catch(f){ /* empty */ }
+ } return true;
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_fails.js b/node_modules/babel-register/node_modules/core-js/modules/_fails.js
new file mode 100644
index 0000000..184e5ea
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_fails.js
@@ -0,0 +1,7 @@
+module.exports = function(exec){
+ try {
+ return !!exec();
+ } catch(e){
+ return true;
+ }
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_fix-re-wks.js b/node_modules/babel-register/node_modules/core-js/modules/_fix-re-wks.js
new file mode 100644
index 0000000..d29368c
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_fix-re-wks.js
@@ -0,0 +1,28 @@
+'use strict';
+var hide = require('./_hide')
+ , redefine = require('./_redefine')
+ , fails = require('./_fails')
+ , defined = require('./_defined')
+ , wks = require('./_wks');
+
+module.exports = function(KEY, length, exec){
+ var SYMBOL = wks(KEY)
+ , fns = exec(defined, SYMBOL, ''[KEY])
+ , strfn = fns[0]
+ , rxfn = fns[1];
+ if(fails(function(){
+ var O = {};
+ O[SYMBOL] = function(){ return 7; };
+ return ''[KEY](O) != 7;
+ })){
+ redefine(String.prototype, KEY, strfn);
+ hide(RegExp.prototype, SYMBOL, length == 2
+ // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)
+ // 21.2.5.11 RegExp.prototype[@@split](string, limit)
+ ? function(string, arg){ return rxfn.call(string, this, arg); }
+ // 21.2.5.6 RegExp.prototype[@@match](string)
+ // 21.2.5.9 RegExp.prototype[@@search](string)
+ : function(string){ return rxfn.call(string, this); }
+ );
+ }
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_flags.js b/node_modules/babel-register/node_modules/core-js/modules/_flags.js
new file mode 100644
index 0000000..054f908
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_flags.js
@@ -0,0 +1,13 @@
+'use strict';
+// 21.2.5.3 get RegExp.prototype.flags
+var anObject = require('./_an-object');
+module.exports = function(){
+ var that = anObject(this)
+ , result = '';
+ if(that.global) result += 'g';
+ if(that.ignoreCase) result += 'i';
+ if(that.multiline) result += 'm';
+ if(that.unicode) result += 'u';
+ if(that.sticky) result += 'y';
+ return result;
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_for-of.js b/node_modules/babel-register/node_modules/core-js/modules/_for-of.js
new file mode 100644
index 0000000..c8e1b74
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_for-of.js
@@ -0,0 +1,19 @@
+var ctx = require('./_ctx')
+ , call = require('./_iter-call')
+ , isArrayIter = require('./_is-array-iter')
+ , anObject = require('./_an-object')
+ , toLength = require('./_to-length')
+ , getIterFn = require('./core.get-iterator-method');
+module.exports = function(iterable, entries, fn, that, ITERATOR){
+ var iterFn = ITERATOR ? function(){ return iterable; } : getIterFn(iterable)
+ , f = ctx(fn, that, entries ? 2 : 1)
+ , index = 0
+ , length, step, iterator;
+ if(typeof iterFn != 'function')throw TypeError(iterable + ' is not iterable!');
+ // fast case for arrays with default iterator
+ if(isArrayIter(iterFn))for(length = toLength(iterable.length); length > index; index++){
+ entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);
+ } else for(iterator = iterFn.call(iterable); !(step = iterator.next()).done; ){
+ call(iterator, f, step.value, entries);
+ }
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_global.js b/node_modules/babel-register/node_modules/core-js/modules/_global.js
new file mode 100644
index 0000000..df6efb4
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_global.js
@@ -0,0 +1,4 @@
+// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
+var global = module.exports = typeof window != 'undefined' && window.Math == Math
+ ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')();
+if(typeof __g == 'number')__g = global; // eslint-disable-line no-undef
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_has.js b/node_modules/babel-register/node_modules/core-js/modules/_has.js
new file mode 100644
index 0000000..870b40e
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_has.js
@@ -0,0 +1,4 @@
+var hasOwnProperty = {}.hasOwnProperty;
+module.exports = function(it, key){
+ return hasOwnProperty.call(it, key);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_hide.js b/node_modules/babel-register/node_modules/core-js/modules/_hide.js
new file mode 100644
index 0000000..4031e80
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_hide.js
@@ -0,0 +1,8 @@
+var dP = require('./_object-dp')
+ , createDesc = require('./_property-desc');
+module.exports = require('./_descriptors') ? function(object, key, value){
+ return dP.f(object, key, createDesc(1, value));
+} : function(object, key, value){
+ object[key] = value;
+ return object;
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_html.js b/node_modules/babel-register/node_modules/core-js/modules/_html.js
new file mode 100644
index 0000000..98f5142
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_html.js
@@ -0,0 +1 @@
+module.exports = require('./_global').document && document.documentElement;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_ie8-dom-define.js b/node_modules/babel-register/node_modules/core-js/modules/_ie8-dom-define.js
new file mode 100644
index 0000000..293bd4e
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_ie8-dom-define.js
@@ -0,0 +1,3 @@
+module.exports = !require('./_descriptors') && !require('./_fails')(function(){
+ return Object.defineProperty(require('./_dom-create')('div'), 'a', {get: function(){ return 7; }}).a != 7;
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_inherit-if-required.js b/node_modules/babel-register/node_modules/core-js/modules/_inherit-if-required.js
new file mode 100644
index 0000000..6b4ec82
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_inherit-if-required.js
@@ -0,0 +1,8 @@
+var isObject = require('./_is-object')
+ , setPrototypeOf = require('./_set-proto').set;
+module.exports = function(that, target, C){
+ var P, S = target.constructor;
+ if(S !== C && typeof S == 'function' && (P = S.prototype) !== C.prototype && isObject(P) && setPrototypeOf){
+ setPrototypeOf(that, P);
+ } return that;
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_invoke.js b/node_modules/babel-register/node_modules/core-js/modules/_invoke.js
new file mode 100644
index 0000000..08e307f
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_invoke.js
@@ -0,0 +1,16 @@
+// fast apply, http://jsperf.lnkit.com/fast-apply/5
+module.exports = function(fn, args, that){
+ var un = that === undefined;
+ switch(args.length){
+ case 0: return un ? fn()
+ : fn.call(that);
+ case 1: return un ? fn(args[0])
+ : fn.call(that, args[0]);
+ case 2: return un ? fn(args[0], args[1])
+ : fn.call(that, args[0], args[1]);
+ case 3: return un ? fn(args[0], args[1], args[2])
+ : fn.call(that, args[0], args[1], args[2]);
+ case 4: return un ? fn(args[0], args[1], args[2], args[3])
+ : fn.call(that, args[0], args[1], args[2], args[3]);
+ } return fn.apply(that, args);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_iobject.js b/node_modules/babel-register/node_modules/core-js/modules/_iobject.js
new file mode 100644
index 0000000..b58db48
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_iobject.js
@@ -0,0 +1,5 @@
+// fallback for non-array-like ES3 and non-enumerable old V8 strings
+var cof = require('./_cof');
+module.exports = Object('z').propertyIsEnumerable(0) ? Object : function(it){
+ return cof(it) == 'String' ? it.split('') : Object(it);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_is-array-iter.js b/node_modules/babel-register/node_modules/core-js/modules/_is-array-iter.js
new file mode 100644
index 0000000..8139d71
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_is-array-iter.js
@@ -0,0 +1,8 @@
+// check on default Array iterator
+var Iterators = require('./_iterators')
+ , ITERATOR = require('./_wks')('iterator')
+ , ArrayProto = Array.prototype;
+
+module.exports = function(it){
+ return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_is-array.js b/node_modules/babel-register/node_modules/core-js/modules/_is-array.js
new file mode 100644
index 0000000..b4a3a8e
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_is-array.js
@@ -0,0 +1,5 @@
+// 7.2.2 IsArray(argument)
+var cof = require('./_cof');
+module.exports = Array.isArray || function isArray(arg){
+ return cof(arg) == 'Array';
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_is-integer.js b/node_modules/babel-register/node_modules/core-js/modules/_is-integer.js
new file mode 100644
index 0000000..22db67e
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_is-integer.js
@@ -0,0 +1,6 @@
+// 20.1.2.3 Number.isInteger(number)
+var isObject = require('./_is-object')
+ , floor = Math.floor;
+module.exports = function isInteger(it){
+ return !isObject(it) && isFinite(it) && floor(it) === it;
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_is-object.js b/node_modules/babel-register/node_modules/core-js/modules/_is-object.js
new file mode 100644
index 0000000..ee694be
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_is-object.js
@@ -0,0 +1,3 @@
+module.exports = function(it){
+ return typeof it === 'object' ? it !== null : typeof it === 'function';
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_is-regexp.js b/node_modules/babel-register/node_modules/core-js/modules/_is-regexp.js
new file mode 100644
index 0000000..55b2c62
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_is-regexp.js
@@ -0,0 +1,8 @@
+// 7.2.8 IsRegExp(argument)
+var isObject = require('./_is-object')
+ , cof = require('./_cof')
+ , MATCH = require('./_wks')('match');
+module.exports = function(it){
+ var isRegExp;
+ return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : cof(it) == 'RegExp');
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_iter-call.js b/node_modules/babel-register/node_modules/core-js/modules/_iter-call.js
new file mode 100644
index 0000000..e3565ba
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_iter-call.js
@@ -0,0 +1,12 @@
+// call something on iterator step with safe closing on error
+var anObject = require('./_an-object');
+module.exports = function(iterator, fn, value, entries){
+ try {
+ return entries ? fn(anObject(value)[0], value[1]) : fn(value);
+ // 7.4.6 IteratorClose(iterator, completion)
+ } catch(e){
+ var ret = iterator['return'];
+ if(ret !== undefined)anObject(ret.call(iterator));
+ throw e;
+ }
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_iter-create.js b/node_modules/babel-register/node_modules/core-js/modules/_iter-create.js
new file mode 100644
index 0000000..9a9aa4f
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_iter-create.js
@@ -0,0 +1,13 @@
+'use strict';
+var create = require('./_object-create')
+ , descriptor = require('./_property-desc')
+ , setToStringTag = require('./_set-to-string-tag')
+ , IteratorPrototype = {};
+
+// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()
+require('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function(){ return this; });
+
+module.exports = function(Constructor, NAME, next){
+ Constructor.prototype = create(IteratorPrototype, {next: descriptor(1, next)});
+ setToStringTag(Constructor, NAME + ' Iterator');
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_iter-define.js b/node_modules/babel-register/node_modules/core-js/modules/_iter-define.js
new file mode 100644
index 0000000..f72a502
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_iter-define.js
@@ -0,0 +1,70 @@
+'use strict';
+var LIBRARY = require('./_library')
+ , $export = require('./_export')
+ , redefine = require('./_redefine')
+ , hide = require('./_hide')
+ , has = require('./_has')
+ , Iterators = require('./_iterators')
+ , $iterCreate = require('./_iter-create')
+ , setToStringTag = require('./_set-to-string-tag')
+ , getPrototypeOf = require('./_object-gpo')
+ , ITERATOR = require('./_wks')('iterator')
+ , BUGGY = !([].keys && 'next' in [].keys()) // Safari has buggy iterators w/o `next`
+ , FF_ITERATOR = '@@iterator'
+ , KEYS = 'keys'
+ , VALUES = 'values';
+
+var returnThis = function(){ return this; };
+
+module.exports = function(Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED){
+ $iterCreate(Constructor, NAME, next);
+ var getMethod = function(kind){
+ if(!BUGGY && kind in proto)return proto[kind];
+ switch(kind){
+ case KEYS: return function keys(){ return new Constructor(this, kind); };
+ case VALUES: return function values(){ return new Constructor(this, kind); };
+ } return function entries(){ return new Constructor(this, kind); };
+ };
+ var TAG = NAME + ' Iterator'
+ , DEF_VALUES = DEFAULT == VALUES
+ , VALUES_BUG = false
+ , proto = Base.prototype
+ , $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT]
+ , $default = $native || getMethod(DEFAULT)
+ , $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined
+ , $anyNative = NAME == 'Array' ? proto.entries || $native : $native
+ , methods, key, IteratorPrototype;
+ // Fix native
+ if($anyNative){
+ IteratorPrototype = getPrototypeOf($anyNative.call(new Base));
+ if(IteratorPrototype !== Object.prototype){
+ // Set @@toStringTag to native iterators
+ setToStringTag(IteratorPrototype, TAG, true);
+ // fix for some old engines
+ if(!LIBRARY && !has(IteratorPrototype, ITERATOR))hide(IteratorPrototype, ITERATOR, returnThis);
+ }
+ }
+ // fix Array#{values, @@iterator}.name in V8 / FF
+ if(DEF_VALUES && $native && $native.name !== VALUES){
+ VALUES_BUG = true;
+ $default = function values(){ return $native.call(this); };
+ }
+ // Define iterator
+ if((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])){
+ hide(proto, ITERATOR, $default);
+ }
+ // Plug for library
+ Iterators[NAME] = $default;
+ Iterators[TAG] = returnThis;
+ if(DEFAULT){
+ methods = {
+ values: DEF_VALUES ? $default : getMethod(VALUES),
+ keys: IS_SET ? $default : getMethod(KEYS),
+ entries: $entries
+ };
+ if(FORCED)for(key in methods){
+ if(!(key in proto))redefine(proto, key, methods[key]);
+ } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);
+ }
+ return methods;
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_iter-detect.js b/node_modules/babel-register/node_modules/core-js/modules/_iter-detect.js
new file mode 100644
index 0000000..125ad98
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_iter-detect.js
@@ -0,0 +1,21 @@
+var ITERATOR = require('./_wks')('iterator')
+ , SAFE_CLOSING = false;
+
+try {
+ var riter = [7][ITERATOR]();
+ riter['return'] = function(){ SAFE_CLOSING = true; };
+ Array.from(riter, function(){ throw 2; });
+} catch(e){ /* empty */ }
+
+module.exports = function(exec, skipClosing){
+ if(!skipClosing && !SAFE_CLOSING)return false;
+ var safe = false;
+ try {
+ var arr = [7]
+ , iter = arr[ITERATOR]();
+ iter.next = function(){ safe = true; };
+ arr[ITERATOR] = function(){ return iter; };
+ exec(arr);
+ } catch(e){ /* empty */ }
+ return safe;
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_iter-step.js b/node_modules/babel-register/node_modules/core-js/modules/_iter-step.js
new file mode 100644
index 0000000..6ff0dc5
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_iter-step.js
@@ -0,0 +1,3 @@
+module.exports = function(done, value){
+ return {value: value, done: !!done};
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_iterators.js b/node_modules/babel-register/node_modules/core-js/modules/_iterators.js
new file mode 100644
index 0000000..a099545
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_iterators.js
@@ -0,0 +1 @@
+module.exports = {};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_keyof.js b/node_modules/babel-register/node_modules/core-js/modules/_keyof.js
new file mode 100644
index 0000000..7b63229
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_keyof.js
@@ -0,0 +1,10 @@
+var getKeys = require('./_object-keys')
+ , toIObject = require('./_to-iobject');
+module.exports = function(object, el){
+ var O = toIObject(object)
+ , keys = getKeys(O)
+ , length = keys.length
+ , index = 0
+ , key;
+ while(length > index)if(O[key = keys[index++]] === el)return key;
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_library.js b/node_modules/babel-register/node_modules/core-js/modules/_library.js
new file mode 100644
index 0000000..82e47dd
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_library.js
@@ -0,0 +1 @@
+module.exports = false;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_math-expm1.js b/node_modules/babel-register/node_modules/core-js/modules/_math-expm1.js
new file mode 100644
index 0000000..9d91be9
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_math-expm1.js
@@ -0,0 +1,4 @@
+// 20.2.2.14 Math.expm1(x)
+module.exports = Math.expm1 || function expm1(x){
+ return (x = +x) == 0 ? x : x > -1e-6 && x < 1e-6 ? x + x * x / 2 : Math.exp(x) - 1;
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_math-log1p.js b/node_modules/babel-register/node_modules/core-js/modules/_math-log1p.js
new file mode 100644
index 0000000..a92bf46
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_math-log1p.js
@@ -0,0 +1,4 @@
+// 20.2.2.20 Math.log1p(x)
+module.exports = Math.log1p || function log1p(x){
+ return (x = +x) > -1e-8 && x < 1e-8 ? x - x * x / 2 : Math.log(1 + x);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_math-sign.js b/node_modules/babel-register/node_modules/core-js/modules/_math-sign.js
new file mode 100644
index 0000000..a4848df
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_math-sign.js
@@ -0,0 +1,4 @@
+// 20.2.2.28 Math.sign(x)
+module.exports = Math.sign || function sign(x){
+ return (x = +x) == 0 || x != x ? x : x < 0 ? -1 : 1;
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_meta.js b/node_modules/babel-register/node_modules/core-js/modules/_meta.js
new file mode 100644
index 0000000..7daca00
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_meta.js
@@ -0,0 +1,53 @@
+var META = require('./_uid')('meta')
+ , isObject = require('./_is-object')
+ , has = require('./_has')
+ , setDesc = require('./_object-dp').f
+ , id = 0;
+var isExtensible = Object.isExtensible || function(){
+ return true;
+};
+var FREEZE = !require('./_fails')(function(){
+ return isExtensible(Object.preventExtensions({}));
+});
+var setMeta = function(it){
+ setDesc(it, META, {value: {
+ i: 'O' + ++id, // object ID
+ w: {} // weak collections IDs
+ }});
+};
+var fastKey = function(it, create){
+ // return primitive with prefix
+ if(!isObject(it))return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;
+ if(!has(it, META)){
+ // can't set metadata to uncaught frozen object
+ if(!isExtensible(it))return 'F';
+ // not necessary to add metadata
+ if(!create)return 'E';
+ // add missing metadata
+ setMeta(it);
+ // return object ID
+ } return it[META].i;
+};
+var getWeak = function(it, create){
+ if(!has(it, META)){
+ // can't set metadata to uncaught frozen object
+ if(!isExtensible(it))return true;
+ // not necessary to add metadata
+ if(!create)return false;
+ // add missing metadata
+ setMeta(it);
+ // return hash weak collections IDs
+ } return it[META].w;
+};
+// add metadata on freeze-family methods calling
+var onFreeze = function(it){
+ if(FREEZE && meta.NEED && isExtensible(it) && !has(it, META))setMeta(it);
+ return it;
+};
+var meta = module.exports = {
+ KEY: META,
+ NEED: false,
+ fastKey: fastKey,
+ getWeak: getWeak,
+ onFreeze: onFreeze
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_metadata.js b/node_modules/babel-register/node_modules/core-js/modules/_metadata.js
new file mode 100644
index 0000000..eb5a762
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_metadata.js
@@ -0,0 +1,51 @@
+var Map = require('./es6.map')
+ , $export = require('./_export')
+ , shared = require('./_shared')('metadata')
+ , store = shared.store || (shared.store = new (require('./es6.weak-map')));
+
+var getOrCreateMetadataMap = function(target, targetKey, create){
+ var targetMetadata = store.get(target);
+ if(!targetMetadata){
+ if(!create)return undefined;
+ store.set(target, targetMetadata = new Map);
+ }
+ var keyMetadata = targetMetadata.get(targetKey);
+ if(!keyMetadata){
+ if(!create)return undefined;
+ targetMetadata.set(targetKey, keyMetadata = new Map);
+ } return keyMetadata;
+};
+var ordinaryHasOwnMetadata = function(MetadataKey, O, P){
+ var metadataMap = getOrCreateMetadataMap(O, P, false);
+ return metadataMap === undefined ? false : metadataMap.has(MetadataKey);
+};
+var ordinaryGetOwnMetadata = function(MetadataKey, O, P){
+ var metadataMap = getOrCreateMetadataMap(O, P, false);
+ return metadataMap === undefined ? undefined : metadataMap.get(MetadataKey);
+};
+var ordinaryDefineOwnMetadata = function(MetadataKey, MetadataValue, O, P){
+ getOrCreateMetadataMap(O, P, true).set(MetadataKey, MetadataValue);
+};
+var ordinaryOwnMetadataKeys = function(target, targetKey){
+ var metadataMap = getOrCreateMetadataMap(target, targetKey, false)
+ , keys = [];
+ if(metadataMap)metadataMap.forEach(function(_, key){ keys.push(key); });
+ return keys;
+};
+var toMetaKey = function(it){
+ return it === undefined || typeof it == 'symbol' ? it : String(it);
+};
+var exp = function(O){
+ $export($export.S, 'Reflect', O);
+};
+
+module.exports = {
+ store: store,
+ map: getOrCreateMetadataMap,
+ has: ordinaryHasOwnMetadata,
+ get: ordinaryGetOwnMetadata,
+ set: ordinaryDefineOwnMetadata,
+ keys: ordinaryOwnMetadataKeys,
+ key: toMetaKey,
+ exp: exp
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_microtask.js b/node_modules/babel-register/node_modules/core-js/modules/_microtask.js
new file mode 100644
index 0000000..99db937
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_microtask.js
@@ -0,0 +1,58 @@
+var global = require('./_global')
+ , macrotask = require('./_task').set
+ , Observer = global.MutationObserver || global.WebKitMutationObserver
+ , process = global.process
+ , Promise = global.Promise
+ , isNode = require('./_cof')(process) == 'process'
+ , head, last, notify;
+
+var flush = function(){
+ var parent, fn;
+ if(isNode && (parent = process.domain))parent.exit();
+ while(head){
+ fn = head.fn;
+ fn(); // <- currently we use it only for Promise - try / catch not required
+ head = head.next;
+ } last = undefined;
+ if(parent)parent.enter();
+};
+
+// Node.js
+if(isNode){
+ notify = function(){
+ process.nextTick(flush);
+ };
+// browsers with MutationObserver
+} else if(Observer){
+ var toggle = true
+ , node = document.createTextNode('');
+ new Observer(flush).observe(node, {characterData: true}); // eslint-disable-line no-new
+ notify = function(){
+ node.data = toggle = !toggle;
+ };
+// environments with maybe non-completely correct, but existent Promise
+} else if(Promise && Promise.resolve){
+ notify = function(){
+ Promise.resolve().then(flush);
+ };
+// for other environments - macrotask based on:
+// - setImmediate
+// - MessageChannel
+// - window.postMessag
+// - onreadystatechange
+// - setTimeout
+} else {
+ notify = function(){
+ // strange IE + webpack dev server bug - use .call(global)
+ macrotask.call(global, flush);
+ };
+}
+
+module.exports = function(fn){
+ var task = {fn: fn, next: undefined};
+ if(last)last.next = task;
+ if(!head){
+ head = task;
+ notify();
+ } last = task;
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_object-assign.js b/node_modules/babel-register/node_modules/core-js/modules/_object-assign.js
new file mode 100644
index 0000000..c575aba
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_object-assign.js
@@ -0,0 +1,33 @@
+'use strict';
+// 19.1.2.1 Object.assign(target, source, ...)
+var getKeys = require('./_object-keys')
+ , gOPS = require('./_object-gops')
+ , pIE = require('./_object-pie')
+ , toObject = require('./_to-object')
+ , IObject = require('./_iobject')
+ , $assign = Object.assign;
+
+// should work with symbols and should have deterministic property order (V8 bug)
+module.exports = !$assign || require('./_fails')(function(){
+ var A = {}
+ , B = {}
+ , S = Symbol()
+ , K = 'abcdefghijklmnopqrst';
+ A[S] = 7;
+ K.split('').forEach(function(k){ B[k] = k; });
+ return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;
+}) ? function assign(target, source){ // eslint-disable-line no-unused-vars
+ var T = toObject(target)
+ , aLen = arguments.length
+ , index = 1
+ , getSymbols = gOPS.f
+ , isEnum = pIE.f;
+ while(aLen > index){
+ var S = IObject(arguments[index++])
+ , keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S)
+ , length = keys.length
+ , j = 0
+ , key;
+ while(length > j)if(isEnum.call(S, key = keys[j++]))T[key] = S[key];
+ } return T;
+} : $assign;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_object-create.js b/node_modules/babel-register/node_modules/core-js/modules/_object-create.js
new file mode 100644
index 0000000..148566e
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_object-create.js
@@ -0,0 +1,40 @@
+// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
+var anObject = require('./_an-object')
+ , dPs = require('./_object-dps')
+ , enumBugKeys = require('./_enum-bug-keys')
+ , IE_PROTO = require('./_shared-key')('IE_PROTO')
+ , Empty = function(){ /* empty */ }
+ , PROTOTYPE = 'prototype';
+
+// Create object with fake `null` prototype: use iframe Object with cleared prototype
+var createDict = function(){
+ // Thrash, waste and sodomy: IE GC bug
+ var iframe = require('./_dom-create')('iframe')
+ , i = enumBugKeys.length
+ , gt = '>'
+ , iframeDocument;
+ iframe.style.display = 'none';
+ require('./_html').appendChild(iframe);
+ iframe.src = 'javascript:'; // eslint-disable-line no-script-url
+ // createDict = iframe.contentWindow.Object;
+ // html.removeChild(iframe);
+ iframeDocument = iframe.contentWindow.document;
+ iframeDocument.open();
+ iframeDocument.write(' i)dP.f(target, key = keys[i++], gOPD.f(mixin, key));
+ return target;
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_object-dp.js b/node_modules/babel-register/node_modules/core-js/modules/_object-dp.js
new file mode 100644
index 0000000..e7ca8a4
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_object-dp.js
@@ -0,0 +1,16 @@
+var anObject = require('./_an-object')
+ , IE8_DOM_DEFINE = require('./_ie8-dom-define')
+ , toPrimitive = require('./_to-primitive')
+ , dP = Object.defineProperty;
+
+exports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes){
+ anObject(O);
+ P = toPrimitive(P, true);
+ anObject(Attributes);
+ if(IE8_DOM_DEFINE)try {
+ return dP(O, P, Attributes);
+ } catch(e){ /* empty */ }
+ if('get' in Attributes || 'set' in Attributes)throw TypeError('Accessors not supported!');
+ if('value' in Attributes)O[P] = Attributes.value;
+ return O;
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_object-dps.js b/node_modules/babel-register/node_modules/core-js/modules/_object-dps.js
new file mode 100644
index 0000000..137ac7f
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_object-dps.js
@@ -0,0 +1,13 @@
+var dP = require('./_object-dp')
+ , anObject = require('./_an-object')
+ , getKeys = require('./_object-keys');
+
+module.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties){
+ anObject(O);
+ var keys = getKeys(Properties)
+ , length = keys.length
+ , i = 0
+ , P;
+ while(length > i)dP.f(O, P = keys[i++], Properties[P]);
+ return O;
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_object-forced-pam.js b/node_modules/babel-register/node_modules/core-js/modules/_object-forced-pam.js
new file mode 100644
index 0000000..537510e
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_object-forced-pam.js
@@ -0,0 +1,7 @@
+// Forced replacement prototype accessors methods
+module.exports = require('./_library')|| !require('./_fails')(function(){
+ var K = Math.random();
+ // In FF throws only define methods
+ __defineSetter__.call(null, K, function(){ /* empty */});
+ delete require('./_global')[K];
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_object-gopd.js b/node_modules/babel-register/node_modules/core-js/modules/_object-gopd.js
new file mode 100644
index 0000000..5817e37
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_object-gopd.js
@@ -0,0 +1,16 @@
+var pIE = require('./_object-pie')
+ , createDesc = require('./_property-desc')
+ , toIObject = require('./_to-iobject')
+ , toPrimitive = require('./_to-primitive')
+ , has = require('./_has')
+ , IE8_DOM_DEFINE = require('./_ie8-dom-define')
+ , gOPD = Object.getOwnPropertyDescriptor;
+
+exports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P){
+ O = toIObject(O);
+ P = toPrimitive(P, true);
+ if(IE8_DOM_DEFINE)try {
+ return gOPD(O, P);
+ } catch(e){ /* empty */ }
+ if(has(O, P))return createDesc(!pIE.f.call(O, P), O[P]);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_object-gopn-ext.js b/node_modules/babel-register/node_modules/core-js/modules/_object-gopn-ext.js
new file mode 100644
index 0000000..01ddd58
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_object-gopn-ext.js
@@ -0,0 +1,19 @@
+// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window
+var toIObject = require('./_to-iobject')
+ , gOPN = require('./_object-gopn').f
+ , toString = {}.toString;
+
+var windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames
+ ? Object.getOwnPropertyNames(window) : [];
+
+var getWindowNames = function(it){
+ try {
+ return gOPN.f(it);
+ } catch(e){
+ return windowNames.slice();
+ }
+};
+
+module.exports.f = function getOwnPropertyNames(it){
+ return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_object-gopn.js b/node_modules/babel-register/node_modules/core-js/modules/_object-gopn.js
new file mode 100644
index 0000000..4bda664
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_object-gopn.js
@@ -0,0 +1,7 @@
+// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)
+var $keys = require('./_object-keys-internal')
+ , hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');
+
+exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O){
+ return $keys(O, hiddenKeys);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_object-gops.js b/node_modules/babel-register/node_modules/core-js/modules/_object-gops.js
new file mode 100644
index 0000000..8f93d76
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_object-gops.js
@@ -0,0 +1 @@
+exports.f = Object.getOwnPropertySymbols;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_object-gpo.js b/node_modules/babel-register/node_modules/core-js/modules/_object-gpo.js
new file mode 100644
index 0000000..aa88892
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_object-gpo.js
@@ -0,0 +1,13 @@
+// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)
+var has = require('./_has')
+ , toObject = require('./_to-object')
+ , IE_PROTO = require('./_shared-key')('IE_PROTO')
+ , ObjectProto = Object.prototype;
+
+module.exports = Object.getPrototypeOf || function(O){
+ O = toObject(O);
+ if(has(O, IE_PROTO))return O[IE_PROTO];
+ if(typeof O.constructor == 'function' && O instanceof O.constructor){
+ return O.constructor.prototype;
+ } return O instanceof Object ? ObjectProto : null;
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_object-keys-internal.js b/node_modules/babel-register/node_modules/core-js/modules/_object-keys-internal.js
new file mode 100644
index 0000000..612c012
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_object-keys-internal.js
@@ -0,0 +1,17 @@
+var has = require('./_has')
+ , toIObject = require('./_to-iobject')
+ , arrayIndexOf = require('./_array-includes')(false)
+ , IE_PROTO = require('./_shared-key')('IE_PROTO');
+
+module.exports = function(object, names){
+ var O = toIObject(object)
+ , i = 0
+ , result = []
+ , key;
+ for(key in O)if(key != IE_PROTO)has(O, key) && result.push(key);
+ // Don't enum bug & hidden keys
+ while(names.length > i)if(has(O, key = names[i++])){
+ ~arrayIndexOf(result, key) || result.push(key);
+ }
+ return result;
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_object-keys.js b/node_modules/babel-register/node_modules/core-js/modules/_object-keys.js
new file mode 100644
index 0000000..294c48b
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_object-keys.js
@@ -0,0 +1,7 @@
+// 19.1.2.14 / 15.2.3.14 Object.keys(O)
+var $keys = require('./_object-keys-internal')
+ , enumBugKeys = require('./_enum-bug-keys');
+
+module.exports = Object.keys || function keys(O){
+ return $keys(O, enumBugKeys);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_object-pie.js b/node_modules/babel-register/node_modules/core-js/modules/_object-pie.js
new file mode 100644
index 0000000..13479a1
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_object-pie.js
@@ -0,0 +1 @@
+exports.f = {}.propertyIsEnumerable;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_object-sap.js b/node_modules/babel-register/node_modules/core-js/modules/_object-sap.js
new file mode 100644
index 0000000..b76fec5
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_object-sap.js
@@ -0,0 +1,10 @@
+// most Object methods by ES6 should accept primitives
+var $export = require('./_export')
+ , core = require('./_core')
+ , fails = require('./_fails');
+module.exports = function(KEY, exec){
+ var fn = (core.Object || {})[KEY] || Object[KEY]
+ , exp = {};
+ exp[KEY] = exec(fn);
+ $export($export.S + $export.F * fails(function(){ fn(1); }), 'Object', exp);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_object-to-array.js b/node_modules/babel-register/node_modules/core-js/modules/_object-to-array.js
new file mode 100644
index 0000000..b6fdf05
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_object-to-array.js
@@ -0,0 +1,16 @@
+var getKeys = require('./_object-keys')
+ , toIObject = require('./_to-iobject')
+ , isEnum = require('./_object-pie').f;
+module.exports = function(isEntries){
+ return function(it){
+ var O = toIObject(it)
+ , keys = getKeys(O)
+ , length = keys.length
+ , i = 0
+ , result = []
+ , key;
+ while(length > i)if(isEnum.call(O, key = keys[i++])){
+ result.push(isEntries ? [key, O[key]] : O[key]);
+ } return result;
+ };
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_own-keys.js b/node_modules/babel-register/node_modules/core-js/modules/_own-keys.js
new file mode 100644
index 0000000..045ce3d
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_own-keys.js
@@ -0,0 +1,10 @@
+// all object keys, includes non-enumerable and symbols
+var gOPN = require('./_object-gopn')
+ , gOPS = require('./_object-gops')
+ , anObject = require('./_an-object')
+ , Reflect = require('./_global').Reflect;
+module.exports = Reflect && Reflect.ownKeys || function ownKeys(it){
+ var keys = gOPN.f(anObject(it))
+ , getSymbols = gOPS.f;
+ return getSymbols ? keys.concat(getSymbols(it)) : keys;
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_parse-float.js b/node_modules/babel-register/node_modules/core-js/modules/_parse-float.js
new file mode 100644
index 0000000..3d0e653
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_parse-float.js
@@ -0,0 +1,8 @@
+var $parseFloat = require('./_global').parseFloat
+ , $trim = require('./_string-trim').trim;
+
+module.exports = 1 / $parseFloat(require('./_string-ws') + '-0') !== -Infinity ? function parseFloat(str){
+ var string = $trim(String(str), 3)
+ , result = $parseFloat(string);
+ return result === 0 && string.charAt(0) == '-' ? -0 : result;
+} : $parseFloat;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_parse-int.js b/node_modules/babel-register/node_modules/core-js/modules/_parse-int.js
new file mode 100644
index 0000000..c23ffc0
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_parse-int.js
@@ -0,0 +1,9 @@
+var $parseInt = require('./_global').parseInt
+ , $trim = require('./_string-trim').trim
+ , ws = require('./_string-ws')
+ , hex = /^[\-+]?0[xX]/;
+
+module.exports = $parseInt(ws + '08') !== 8 || $parseInt(ws + '0x16') !== 22 ? function parseInt(str, radix){
+ var string = $trim(String(str), 3);
+ return $parseInt(string, (radix >>> 0) || (hex.test(string) ? 16 : 10));
+} : $parseInt;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_partial.js b/node_modules/babel-register/node_modules/core-js/modules/_partial.js
new file mode 100644
index 0000000..3d411b7
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_partial.js
@@ -0,0 +1,23 @@
+'use strict';
+var path = require('./_path')
+ , invoke = require('./_invoke')
+ , aFunction = require('./_a-function');
+module.exports = function(/* ...pargs */){
+ var fn = aFunction(this)
+ , length = arguments.length
+ , pargs = Array(length)
+ , i = 0
+ , _ = path._
+ , holder = false;
+ while(length > i)if((pargs[i] = arguments[i++]) === _)holder = true;
+ return function(/* ...args */){
+ var that = this
+ , aLen = arguments.length
+ , j = 0, k = 0, args;
+ if(!holder && !aLen)return invoke(fn, pargs, that);
+ args = pargs.slice();
+ if(holder)for(;length > j; j++)if(args[j] === _)args[j] = arguments[k++];
+ while(aLen > k)args.push(arguments[k++]);
+ return invoke(fn, args, that);
+ };
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_path.js b/node_modules/babel-register/node_modules/core-js/modules/_path.js
new file mode 100644
index 0000000..d63df9d
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_path.js
@@ -0,0 +1 @@
+module.exports = require('./_global');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_property-desc.js b/node_modules/babel-register/node_modules/core-js/modules/_property-desc.js
new file mode 100644
index 0000000..e3f7ab2
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_property-desc.js
@@ -0,0 +1,8 @@
+module.exports = function(bitmap, value){
+ return {
+ enumerable : !(bitmap & 1),
+ configurable: !(bitmap & 2),
+ writable : !(bitmap & 4),
+ value : value
+ };
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_redefine-all.js b/node_modules/babel-register/node_modules/core-js/modules/_redefine-all.js
new file mode 100644
index 0000000..ec1c5f7
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_redefine-all.js
@@ -0,0 +1,5 @@
+var redefine = require('./_redefine');
+module.exports = function(target, src, safe){
+ for(var key in src)redefine(target, key, src[key], safe);
+ return target;
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_redefine.js b/node_modules/babel-register/node_modules/core-js/modules/_redefine.js
new file mode 100644
index 0000000..8e1bfe0
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_redefine.js
@@ -0,0 +1,32 @@
+var global = require('./_global')
+ , hide = require('./_hide')
+ , has = require('./_has')
+ , SRC = require('./_uid')('src')
+ , TO_STRING = 'toString'
+ , $toString = Function[TO_STRING]
+ , TPL = ('' + $toString).split(TO_STRING);
+
+require('./_core').inspectSource = function(it){
+ return $toString.call(it);
+};
+
+(module.exports = function(O, key, val, safe){
+ var isFunction = typeof val == 'function';
+ if(isFunction)has(val, 'name') || hide(val, 'name', key);
+ if(O[key] === val)return;
+ if(isFunction)has(val, SRC) || hide(val, SRC, O[key] ? '' + O[key] : TPL.join(String(key)));
+ if(O === global){
+ O[key] = val;
+ } else {
+ if(!safe){
+ delete O[key];
+ hide(O, key, val);
+ } else {
+ if(O[key])O[key] = val;
+ else hide(O, key, val);
+ }
+ }
+// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative
+})(Function.prototype, TO_STRING, function toString(){
+ return typeof this == 'function' && this[SRC] || $toString.call(this);
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_replacer.js b/node_modules/babel-register/node_modules/core-js/modules/_replacer.js
new file mode 100644
index 0000000..5360a3d
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_replacer.js
@@ -0,0 +1,8 @@
+module.exports = function(regExp, replace){
+ var replacer = replace === Object(replace) ? function(part){
+ return replace[part];
+ } : replace;
+ return function(it){
+ return String(it).replace(regExp, replacer);
+ };
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_same-value.js b/node_modules/babel-register/node_modules/core-js/modules/_same-value.js
new file mode 100644
index 0000000..8c2b8c7
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_same-value.js
@@ -0,0 +1,4 @@
+// 7.2.9 SameValue(x, y)
+module.exports = Object.is || function is(x, y){
+ return x === y ? x !== 0 || 1 / x === 1 / y : x != x && y != y;
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_set-proto.js b/node_modules/babel-register/node_modules/core-js/modules/_set-proto.js
new file mode 100644
index 0000000..8d5dad3
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_set-proto.js
@@ -0,0 +1,25 @@
+// Works with __proto__ only. Old v8 can't work with null proto objects.
+/* eslint-disable no-proto */
+var isObject = require('./_is-object')
+ , anObject = require('./_an-object');
+var check = function(O, proto){
+ anObject(O);
+ if(!isObject(proto) && proto !== null)throw TypeError(proto + ": can't set as prototype!");
+};
+module.exports = {
+ set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line
+ function(test, buggy, set){
+ try {
+ set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);
+ set(test, []);
+ buggy = !(test instanceof Array);
+ } catch(e){ buggy = true; }
+ return function setPrototypeOf(O, proto){
+ check(O, proto);
+ if(buggy)O.__proto__ = proto;
+ else set(O, proto);
+ return O;
+ };
+ }({}, false) : undefined),
+ check: check
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_set-species.js b/node_modules/babel-register/node_modules/core-js/modules/_set-species.js
new file mode 100644
index 0000000..a21bd03
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_set-species.js
@@ -0,0 +1,13 @@
+'use strict';
+var global = require('./_global')
+ , dP = require('./_object-dp')
+ , DESCRIPTORS = require('./_descriptors')
+ , SPECIES = require('./_wks')('species');
+
+module.exports = function(KEY){
+ var C = global[KEY];
+ if(DESCRIPTORS && C && !C[SPECIES])dP.f(C, SPECIES, {
+ configurable: true,
+ get: function(){ return this; }
+ });
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_set-to-string-tag.js b/node_modules/babel-register/node_modules/core-js/modules/_set-to-string-tag.js
new file mode 100644
index 0000000..ffbddda
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_set-to-string-tag.js
@@ -0,0 +1,7 @@
+var def = require('./_object-dp').f
+ , has = require('./_has')
+ , TAG = require('./_wks')('toStringTag');
+
+module.exports = function(it, tag, stat){
+ if(it && !has(it = stat ? it : it.prototype, TAG))def(it, TAG, {configurable: true, value: tag});
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_shared-key.js b/node_modules/babel-register/node_modules/core-js/modules/_shared-key.js
new file mode 100644
index 0000000..52814a7
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_shared-key.js
@@ -0,0 +1,5 @@
+var shared = require('./_shared')('keys')
+ , uid = require('./_uid');
+module.exports = function(key){
+ return shared[key] || (shared[key] = uid(key));
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_shared.js b/node_modules/babel-register/node_modules/core-js/modules/_shared.js
new file mode 100644
index 0000000..3f9e4c8
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_shared.js
@@ -0,0 +1,6 @@
+var global = require('./_global')
+ , SHARED = '__core-js_shared__'
+ , store = global[SHARED] || (global[SHARED] = {});
+module.exports = function(key){
+ return store[key] || (store[key] = {});
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_species-constructor.js b/node_modules/babel-register/node_modules/core-js/modules/_species-constructor.js
new file mode 100644
index 0000000..7a4d1ba
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_species-constructor.js
@@ -0,0 +1,8 @@
+// 7.3.20 SpeciesConstructor(O, defaultConstructor)
+var anObject = require('./_an-object')
+ , aFunction = require('./_a-function')
+ , SPECIES = require('./_wks')('species');
+module.exports = function(O, D){
+ var C = anObject(O).constructor, S;
+ return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_strict-method.js b/node_modules/babel-register/node_modules/core-js/modules/_strict-method.js
new file mode 100644
index 0000000..207bc85
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_strict-method.js
@@ -0,0 +1,7 @@
+var fails = require('./_fails');
+
+module.exports = function(method, arg){
+ return !!method && fails(function(){
+ arg ? method.call(null, function(){}, 1) : method.call(null);
+ });
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_string-at.js b/node_modules/babel-register/node_modules/core-js/modules/_string-at.js
new file mode 100644
index 0000000..ecc0d21
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_string-at.js
@@ -0,0 +1,17 @@
+var toInteger = require('./_to-integer')
+ , defined = require('./_defined');
+// true -> String#at
+// false -> String#codePointAt
+module.exports = function(TO_STRING){
+ return function(that, pos){
+ var s = String(defined(that))
+ , i = toInteger(pos)
+ , l = s.length
+ , a, b;
+ if(i < 0 || i >= l)return TO_STRING ? '' : undefined;
+ a = s.charCodeAt(i);
+ return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff
+ ? TO_STRING ? s.charAt(i) : a
+ : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;
+ };
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_string-context.js b/node_modules/babel-register/node_modules/core-js/modules/_string-context.js
new file mode 100644
index 0000000..5f51348
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_string-context.js
@@ -0,0 +1,8 @@
+// helper for String#{startsWith, endsWith, includes}
+var isRegExp = require('./_is-regexp')
+ , defined = require('./_defined');
+
+module.exports = function(that, searchString, NAME){
+ if(isRegExp(searchString))throw TypeError('String#' + NAME + " doesn't accept regex!");
+ return String(defined(that));
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_string-html.js b/node_modules/babel-register/node_modules/core-js/modules/_string-html.js
new file mode 100644
index 0000000..95daf81
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_string-html.js
@@ -0,0 +1,19 @@
+var $export = require('./_export')
+ , fails = require('./_fails')
+ , defined = require('./_defined')
+ , quot = /"/g;
+// B.2.3.2.1 CreateHTML(string, tag, attribute, value)
+var createHTML = function(string, tag, attribute, value) {
+ var S = String(defined(string))
+ , p1 = '<' + tag;
+ if(attribute !== '')p1 += ' ' + attribute + '="' + String(value).replace(quot, '"') + '"';
+ return p1 + '>' + S + '' + tag + '>';
+};
+module.exports = function(NAME, exec){
+ var O = {};
+ O[NAME] = exec(createHTML);
+ $export($export.P + $export.F * fails(function(){
+ var test = ''[NAME]('"');
+ return test !== test.toLowerCase() || test.split('"').length > 3;
+ }), 'String', O);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_string-pad.js b/node_modules/babel-register/node_modules/core-js/modules/_string-pad.js
new file mode 100644
index 0000000..3c4a919
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_string-pad.js
@@ -0,0 +1,17 @@
+// https://github.com/tc39/proposal-string-pad-start-end
+var toLength = require('./_to-length')
+ , repeat = require('./_string-repeat')
+ , defined = require('./_defined');
+
+module.exports = function(that, maxLength, fillString, left){
+ var S = String(defined(that))
+ , stringLength = S.length
+ , fillStr = fillString === undefined ? ' ' : String(fillString)
+ , intMaxLength = toLength(maxLength);
+ if(intMaxLength <= stringLength)return S;
+ if(fillStr == '')fillStr = ' ';
+ var fillLen = intMaxLength - stringLength
+ , stringFiller = repeat.call(fillStr, Math.ceil(fillLen / fillStr.length));
+ if(stringFiller.length > fillLen)stringFiller = stringFiller.slice(0, fillLen);
+ return left ? stringFiller + S : S + stringFiller;
+};
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_string-repeat.js b/node_modules/babel-register/node_modules/core-js/modules/_string-repeat.js
new file mode 100644
index 0000000..88fd3a2
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_string-repeat.js
@@ -0,0 +1,12 @@
+'use strict';
+var toInteger = require('./_to-integer')
+ , defined = require('./_defined');
+
+module.exports = function repeat(count){
+ var str = String(defined(this))
+ , res = ''
+ , n = toInteger(count);
+ if(n < 0 || n == Infinity)throw RangeError("Count can't be negative");
+ for(;n > 0; (n >>>= 1) && (str += str))if(n & 1)res += str;
+ return res;
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_string-trim.js b/node_modules/babel-register/node_modules/core-js/modules/_string-trim.js
new file mode 100644
index 0000000..d12de1c
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_string-trim.js
@@ -0,0 +1,30 @@
+var $export = require('./_export')
+ , defined = require('./_defined')
+ , fails = require('./_fails')
+ , spaces = require('./_string-ws')
+ , space = '[' + spaces + ']'
+ , non = '\u200b\u0085'
+ , ltrim = RegExp('^' + space + space + '*')
+ , rtrim = RegExp(space + space + '*$');
+
+var exporter = function(KEY, exec, ALIAS){
+ var exp = {};
+ var FORCE = fails(function(){
+ return !!spaces[KEY]() || non[KEY]() != non;
+ });
+ var fn = exp[KEY] = FORCE ? exec(trim) : spaces[KEY];
+ if(ALIAS)exp[ALIAS] = fn;
+ $export($export.P + $export.F * FORCE, 'String', exp);
+};
+
+// 1 -> String#trimLeft
+// 2 -> String#trimRight
+// 3 -> String#trim
+var trim = exporter.trim = function(string, TYPE){
+ string = String(defined(string));
+ if(TYPE & 1)string = string.replace(ltrim, '');
+ if(TYPE & 2)string = string.replace(rtrim, '');
+ return string;
+};
+
+module.exports = exporter;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_string-ws.js b/node_modules/babel-register/node_modules/core-js/modules/_string-ws.js
new file mode 100644
index 0000000..77229fb
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_string-ws.js
@@ -0,0 +1,2 @@
+module.exports = '\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003' +
+ '\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF';
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_task.js b/node_modules/babel-register/node_modules/core-js/modules/_task.js
new file mode 100644
index 0000000..06a73f4
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_task.js
@@ -0,0 +1,75 @@
+var ctx = require('./_ctx')
+ , invoke = require('./_invoke')
+ , html = require('./_html')
+ , cel = require('./_dom-create')
+ , global = require('./_global')
+ , process = global.process
+ , setTask = global.setImmediate
+ , clearTask = global.clearImmediate
+ , MessageChannel = global.MessageChannel
+ , counter = 0
+ , queue = {}
+ , ONREADYSTATECHANGE = 'onreadystatechange'
+ , defer, channel, port;
+var run = function(){
+ var id = +this;
+ if(queue.hasOwnProperty(id)){
+ var fn = queue[id];
+ delete queue[id];
+ fn();
+ }
+};
+var listener = function(event){
+ run.call(event.data);
+};
+// Node.js 0.9+ & IE10+ has setImmediate, otherwise:
+if(!setTask || !clearTask){
+ setTask = function setImmediate(fn){
+ var args = [], i = 1;
+ while(arguments.length > i)args.push(arguments[i++]);
+ queue[++counter] = function(){
+ invoke(typeof fn == 'function' ? fn : Function(fn), args);
+ };
+ defer(counter);
+ return counter;
+ };
+ clearTask = function clearImmediate(id){
+ delete queue[id];
+ };
+ // Node.js 0.8-
+ if(require('./_cof')(process) == 'process'){
+ defer = function(id){
+ process.nextTick(ctx(run, id, 1));
+ };
+ // Browsers with MessageChannel, includes WebWorkers
+ } else if(MessageChannel){
+ channel = new MessageChannel;
+ port = channel.port2;
+ channel.port1.onmessage = listener;
+ defer = ctx(port.postMessage, port, 1);
+ // Browsers with postMessage, skip WebWorkers
+ // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'
+ } else if(global.addEventListener && typeof postMessage == 'function' && !global.importScripts){
+ defer = function(id){
+ global.postMessage(id + '', '*');
+ };
+ global.addEventListener('message', listener, false);
+ // IE8-
+ } else if(ONREADYSTATECHANGE in cel('script')){
+ defer = function(id){
+ html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function(){
+ html.removeChild(this);
+ run.call(id);
+ };
+ };
+ // Rest old browsers
+ } else {
+ defer = function(id){
+ setTimeout(ctx(run, id, 1), 0);
+ };
+ }
+}
+module.exports = {
+ set: setTask,
+ clear: clearTask
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_to-index.js b/node_modules/babel-register/node_modules/core-js/modules/_to-index.js
new file mode 100644
index 0000000..4d380ce
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_to-index.js
@@ -0,0 +1,7 @@
+var toInteger = require('./_to-integer')
+ , max = Math.max
+ , min = Math.min;
+module.exports = function(index, length){
+ index = toInteger(index);
+ return index < 0 ? max(index + length, 0) : min(index, length);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_to-integer.js b/node_modules/babel-register/node_modules/core-js/modules/_to-integer.js
new file mode 100644
index 0000000..f63baaf
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_to-integer.js
@@ -0,0 +1,6 @@
+// 7.1.4 ToInteger
+var ceil = Math.ceil
+ , floor = Math.floor;
+module.exports = function(it){
+ return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_to-iobject.js b/node_modules/babel-register/node_modules/core-js/modules/_to-iobject.js
new file mode 100644
index 0000000..4eb4346
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_to-iobject.js
@@ -0,0 +1,6 @@
+// to indexed object, toObject with fallback for non-array-like ES3 strings
+var IObject = require('./_iobject')
+ , defined = require('./_defined');
+module.exports = function(it){
+ return IObject(defined(it));
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_to-length.js b/node_modules/babel-register/node_modules/core-js/modules/_to-length.js
new file mode 100644
index 0000000..4099e60
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_to-length.js
@@ -0,0 +1,6 @@
+// 7.1.15 ToLength
+var toInteger = require('./_to-integer')
+ , min = Math.min;
+module.exports = function(it){
+ return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_to-object.js b/node_modules/babel-register/node_modules/core-js/modules/_to-object.js
new file mode 100644
index 0000000..f2c28b3
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_to-object.js
@@ -0,0 +1,5 @@
+// 7.1.13 ToObject(argument)
+var defined = require('./_defined');
+module.exports = function(it){
+ return Object(defined(it));
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_to-primitive.js b/node_modules/babel-register/node_modules/core-js/modules/_to-primitive.js
new file mode 100644
index 0000000..16354ee
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_to-primitive.js
@@ -0,0 +1,12 @@
+// 7.1.1 ToPrimitive(input [, PreferredType])
+var isObject = require('./_is-object');
+// instead of the ES6 spec version, we didn't implement @@toPrimitive case
+// and the second argument - flag - preferred type is a string
+module.exports = function(it, S){
+ if(!isObject(it))return it;
+ var fn, val;
+ if(S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val;
+ if(typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it)))return val;
+ if(!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val;
+ throw TypeError("Can't convert object to primitive value");
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_typed-array.js b/node_modules/babel-register/node_modules/core-js/modules/_typed-array.js
new file mode 100644
index 0000000..f71d59b
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_typed-array.js
@@ -0,0 +1,481 @@
+'use strict';
+if(require('./_descriptors')){
+ var LIBRARY = require('./_library')
+ , global = require('./_global')
+ , fails = require('./_fails')
+ , $export = require('./_export')
+ , $typed = require('./_typed')
+ , $buffer = require('./_typed-buffer')
+ , ctx = require('./_ctx')
+ , anInstance = require('./_an-instance')
+ , propertyDesc = require('./_property-desc')
+ , hide = require('./_hide')
+ , redefineAll = require('./_redefine-all')
+ , isInteger = require('./_is-integer')
+ , toInteger = require('./_to-integer')
+ , toLength = require('./_to-length')
+ , toIndex = require('./_to-index')
+ , toPrimitive = require('./_to-primitive')
+ , has = require('./_has')
+ , same = require('./_same-value')
+ , classof = require('./_classof')
+ , isObject = require('./_is-object')
+ , toObject = require('./_to-object')
+ , isArrayIter = require('./_is-array-iter')
+ , create = require('./_object-create')
+ , getPrototypeOf = require('./_object-gpo')
+ , gOPN = require('./_object-gopn').f
+ , isIterable = require('./core.is-iterable')
+ , getIterFn = require('./core.get-iterator-method')
+ , uid = require('./_uid')
+ , wks = require('./_wks')
+ , createArrayMethod = require('./_array-methods')
+ , createArrayIncludes = require('./_array-includes')
+ , speciesConstructor = require('./_species-constructor')
+ , ArrayIterators = require('./es6.array.iterator')
+ , Iterators = require('./_iterators')
+ , $iterDetect = require('./_iter-detect')
+ , setSpecies = require('./_set-species')
+ , arrayFill = require('./_array-fill')
+ , arrayCopyWithin = require('./_array-copy-within')
+ , $DP = require('./_object-dp')
+ , $GOPD = require('./_object-gopd')
+ , dP = $DP.f
+ , gOPD = $GOPD.f
+ , RangeError = global.RangeError
+ , TypeError = global.TypeError
+ , Uint8Array = global.Uint8Array
+ , ARRAY_BUFFER = 'ArrayBuffer'
+ , SHARED_BUFFER = 'Shared' + ARRAY_BUFFER
+ , BYTES_PER_ELEMENT = 'BYTES_PER_ELEMENT'
+ , PROTOTYPE = 'prototype'
+ , ArrayProto = Array[PROTOTYPE]
+ , $ArrayBuffer = $buffer.ArrayBuffer
+ , $DataView = $buffer.DataView
+ , arrayForEach = createArrayMethod(0)
+ , arrayFilter = createArrayMethod(2)
+ , arraySome = createArrayMethod(3)
+ , arrayEvery = createArrayMethod(4)
+ , arrayFind = createArrayMethod(5)
+ , arrayFindIndex = createArrayMethod(6)
+ , arrayIncludes = createArrayIncludes(true)
+ , arrayIndexOf = createArrayIncludes(false)
+ , arrayValues = ArrayIterators.values
+ , arrayKeys = ArrayIterators.keys
+ , arrayEntries = ArrayIterators.entries
+ , arrayLastIndexOf = ArrayProto.lastIndexOf
+ , arrayReduce = ArrayProto.reduce
+ , arrayReduceRight = ArrayProto.reduceRight
+ , arrayJoin = ArrayProto.join
+ , arraySort = ArrayProto.sort
+ , arraySlice = ArrayProto.slice
+ , arrayToString = ArrayProto.toString
+ , arrayToLocaleString = ArrayProto.toLocaleString
+ , ITERATOR = wks('iterator')
+ , TAG = wks('toStringTag')
+ , TYPED_CONSTRUCTOR = uid('typed_constructor')
+ , DEF_CONSTRUCTOR = uid('def_constructor')
+ , ALL_CONSTRUCTORS = $typed.CONSTR
+ , TYPED_ARRAY = $typed.TYPED
+ , VIEW = $typed.VIEW
+ , WRONG_LENGTH = 'Wrong length!';
+
+ var $map = createArrayMethod(1, function(O, length){
+ return allocate(speciesConstructor(O, O[DEF_CONSTRUCTOR]), length);
+ });
+
+ var LITTLE_ENDIAN = fails(function(){
+ return new Uint8Array(new Uint16Array([1]).buffer)[0] === 1;
+ });
+
+ var FORCED_SET = !!Uint8Array && !!Uint8Array[PROTOTYPE].set && fails(function(){
+ new Uint8Array(1).set({});
+ });
+
+ var strictToLength = function(it, SAME){
+ if(it === undefined)throw TypeError(WRONG_LENGTH);
+ var number = +it
+ , length = toLength(it);
+ if(SAME && !same(number, length))throw RangeError(WRONG_LENGTH);
+ return length;
+ };
+
+ var toOffset = function(it, BYTES){
+ var offset = toInteger(it);
+ if(offset < 0 || offset % BYTES)throw RangeError('Wrong offset!');
+ return offset;
+ };
+
+ var validate = function(it){
+ if(isObject(it) && TYPED_ARRAY in it)return it;
+ throw TypeError(it + ' is not a typed array!');
+ };
+
+ var allocate = function(C, length){
+ if(!(isObject(C) && TYPED_CONSTRUCTOR in C)){
+ throw TypeError('It is not a typed array constructor!');
+ } return new C(length);
+ };
+
+ var speciesFromList = function(O, list){
+ return fromList(speciesConstructor(O, O[DEF_CONSTRUCTOR]), list);
+ };
+
+ var fromList = function(C, list){
+ var index = 0
+ , length = list.length
+ , result = allocate(C, length);
+ while(length > index)result[index] = list[index++];
+ return result;
+ };
+
+ var addGetter = function(it, key, internal){
+ dP(it, key, {get: function(){ return this._d[internal]; }});
+ };
+
+ var $from = function from(source /*, mapfn, thisArg */){
+ var O = toObject(source)
+ , aLen = arguments.length
+ , mapfn = aLen > 1 ? arguments[1] : undefined
+ , mapping = mapfn !== undefined
+ , iterFn = getIterFn(O)
+ , i, length, values, result, step, iterator;
+ if(iterFn != undefined && !isArrayIter(iterFn)){
+ for(iterator = iterFn.call(O), values = [], i = 0; !(step = iterator.next()).done; i++){
+ values.push(step.value);
+ } O = values;
+ }
+ if(mapping && aLen > 2)mapfn = ctx(mapfn, arguments[2], 2);
+ for(i = 0, length = toLength(O.length), result = allocate(this, length); length > i; i++){
+ result[i] = mapping ? mapfn(O[i], i) : O[i];
+ }
+ return result;
+ };
+
+ var $of = function of(/*...items*/){
+ var index = 0
+ , length = arguments.length
+ , result = allocate(this, length);
+ while(length > index)result[index] = arguments[index++];
+ return result;
+ };
+
+ // iOS Safari 6.x fails here
+ var TO_LOCALE_BUG = !!Uint8Array && fails(function(){ arrayToLocaleString.call(new Uint8Array(1)); });
+
+ var $toLocaleString = function toLocaleString(){
+ return arrayToLocaleString.apply(TO_LOCALE_BUG ? arraySlice.call(validate(this)) : validate(this), arguments);
+ };
+
+ var proto = {
+ copyWithin: function copyWithin(target, start /*, end */){
+ return arrayCopyWithin.call(validate(this), target, start, arguments.length > 2 ? arguments[2] : undefined);
+ },
+ every: function every(callbackfn /*, thisArg */){
+ return arrayEvery(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+ },
+ fill: function fill(value /*, start, end */){ // eslint-disable-line no-unused-vars
+ return arrayFill.apply(validate(this), arguments);
+ },
+ filter: function filter(callbackfn /*, thisArg */){
+ return speciesFromList(this, arrayFilter(validate(this), callbackfn,
+ arguments.length > 1 ? arguments[1] : undefined));
+ },
+ find: function find(predicate /*, thisArg */){
+ return arrayFind(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);
+ },
+ findIndex: function findIndex(predicate /*, thisArg */){
+ return arrayFindIndex(validate(this), predicate, arguments.length > 1 ? arguments[1] : undefined);
+ },
+ forEach: function forEach(callbackfn /*, thisArg */){
+ arrayForEach(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+ },
+ indexOf: function indexOf(searchElement /*, fromIndex */){
+ return arrayIndexOf(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);
+ },
+ includes: function includes(searchElement /*, fromIndex */){
+ return arrayIncludes(validate(this), searchElement, arguments.length > 1 ? arguments[1] : undefined);
+ },
+ join: function join(separator){ // eslint-disable-line no-unused-vars
+ return arrayJoin.apply(validate(this), arguments);
+ },
+ lastIndexOf: function lastIndexOf(searchElement /*, fromIndex */){ // eslint-disable-line no-unused-vars
+ return arrayLastIndexOf.apply(validate(this), arguments);
+ },
+ map: function map(mapfn /*, thisArg */){
+ return $map(validate(this), mapfn, arguments.length > 1 ? arguments[1] : undefined);
+ },
+ reduce: function reduce(callbackfn /*, initialValue */){ // eslint-disable-line no-unused-vars
+ return arrayReduce.apply(validate(this), arguments);
+ },
+ reduceRight: function reduceRight(callbackfn /*, initialValue */){ // eslint-disable-line no-unused-vars
+ return arrayReduceRight.apply(validate(this), arguments);
+ },
+ reverse: function reverse(){
+ var that = this
+ , length = validate(that).length
+ , middle = Math.floor(length / 2)
+ , index = 0
+ , value;
+ while(index < middle){
+ value = that[index];
+ that[index++] = that[--length];
+ that[length] = value;
+ } return that;
+ },
+ some: function some(callbackfn /*, thisArg */){
+ return arraySome(validate(this), callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+ },
+ sort: function sort(comparefn){
+ return arraySort.call(validate(this), comparefn);
+ },
+ subarray: function subarray(begin, end){
+ var O = validate(this)
+ , length = O.length
+ , $begin = toIndex(begin, length);
+ return new (speciesConstructor(O, O[DEF_CONSTRUCTOR]))(
+ O.buffer,
+ O.byteOffset + $begin * O.BYTES_PER_ELEMENT,
+ toLength((end === undefined ? length : toIndex(end, length)) - $begin)
+ );
+ }
+ };
+
+ var $slice = function slice(start, end){
+ return speciesFromList(this, arraySlice.call(validate(this), start, end));
+ };
+
+ var $set = function set(arrayLike /*, offset */){
+ validate(this);
+ var offset = toOffset(arguments[1], 1)
+ , length = this.length
+ , src = toObject(arrayLike)
+ , len = toLength(src.length)
+ , index = 0;
+ if(len + offset > length)throw RangeError(WRONG_LENGTH);
+ while(index < len)this[offset + index] = src[index++];
+ };
+
+ var $iterators = {
+ entries: function entries(){
+ return arrayEntries.call(validate(this));
+ },
+ keys: function keys(){
+ return arrayKeys.call(validate(this));
+ },
+ values: function values(){
+ return arrayValues.call(validate(this));
+ }
+ };
+
+ var isTAIndex = function(target, key){
+ return isObject(target)
+ && target[TYPED_ARRAY]
+ && typeof key != 'symbol'
+ && key in target
+ && String(+key) == String(key);
+ };
+ var $getDesc = function getOwnPropertyDescriptor(target, key){
+ return isTAIndex(target, key = toPrimitive(key, true))
+ ? propertyDesc(2, target[key])
+ : gOPD(target, key);
+ };
+ var $setDesc = function defineProperty(target, key, desc){
+ if(isTAIndex(target, key = toPrimitive(key, true))
+ && isObject(desc)
+ && has(desc, 'value')
+ && !has(desc, 'get')
+ && !has(desc, 'set')
+ // TODO: add validation descriptor w/o calling accessors
+ && !desc.configurable
+ && (!has(desc, 'writable') || desc.writable)
+ && (!has(desc, 'enumerable') || desc.enumerable)
+ ){
+ target[key] = desc.value;
+ return target;
+ } else return dP(target, key, desc);
+ };
+
+ if(!ALL_CONSTRUCTORS){
+ $GOPD.f = $getDesc;
+ $DP.f = $setDesc;
+ }
+
+ $export($export.S + $export.F * !ALL_CONSTRUCTORS, 'Object', {
+ getOwnPropertyDescriptor: $getDesc,
+ defineProperty: $setDesc
+ });
+
+ if(fails(function(){ arrayToString.call({}); })){
+ arrayToString = arrayToLocaleString = function toString(){
+ return arrayJoin.call(this);
+ }
+ }
+
+ var $TypedArrayPrototype$ = redefineAll({}, proto);
+ redefineAll($TypedArrayPrototype$, $iterators);
+ hide($TypedArrayPrototype$, ITERATOR, $iterators.values);
+ redefineAll($TypedArrayPrototype$, {
+ slice: $slice,
+ set: $set,
+ constructor: function(){ /* noop */ },
+ toString: arrayToString,
+ toLocaleString: $toLocaleString
+ });
+ addGetter($TypedArrayPrototype$, 'buffer', 'b');
+ addGetter($TypedArrayPrototype$, 'byteOffset', 'o');
+ addGetter($TypedArrayPrototype$, 'byteLength', 'l');
+ addGetter($TypedArrayPrototype$, 'length', 'e');
+ dP($TypedArrayPrototype$, TAG, {
+ get: function(){ return this[TYPED_ARRAY]; }
+ });
+
+ module.exports = function(KEY, BYTES, wrapper, CLAMPED){
+ CLAMPED = !!CLAMPED;
+ var NAME = KEY + (CLAMPED ? 'Clamped' : '') + 'Array'
+ , ISNT_UINT8 = NAME != 'Uint8Array'
+ , GETTER = 'get' + KEY
+ , SETTER = 'set' + KEY
+ , TypedArray = global[NAME]
+ , Base = TypedArray || {}
+ , TAC = TypedArray && getPrototypeOf(TypedArray)
+ , FORCED = !TypedArray || !$typed.ABV
+ , O = {}
+ , TypedArrayPrototype = TypedArray && TypedArray[PROTOTYPE];
+ var getter = function(that, index){
+ var data = that._d;
+ return data.v[GETTER](index * BYTES + data.o, LITTLE_ENDIAN);
+ };
+ var setter = function(that, index, value){
+ var data = that._d;
+ if(CLAMPED)value = (value = Math.round(value)) < 0 ? 0 : value > 0xff ? 0xff : value & 0xff;
+ data.v[SETTER](index * BYTES + data.o, value, LITTLE_ENDIAN);
+ };
+ var addElement = function(that, index){
+ dP(that, index, {
+ get: function(){
+ return getter(this, index);
+ },
+ set: function(value){
+ return setter(this, index, value);
+ },
+ enumerable: true
+ });
+ };
+ if(FORCED){
+ TypedArray = wrapper(function(that, data, $offset, $length){
+ anInstance(that, TypedArray, NAME, '_d');
+ var index = 0
+ , offset = 0
+ , buffer, byteLength, length, klass;
+ if(!isObject(data)){
+ length = strictToLength(data, true)
+ byteLength = length * BYTES;
+ buffer = new $ArrayBuffer(byteLength);
+ } else if(data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER){
+ buffer = data;
+ offset = toOffset($offset, BYTES);
+ var $len = data.byteLength;
+ if($length === undefined){
+ if($len % BYTES)throw RangeError(WRONG_LENGTH);
+ byteLength = $len - offset;
+ if(byteLength < 0)throw RangeError(WRONG_LENGTH);
+ } else {
+ byteLength = toLength($length) * BYTES;
+ if(byteLength + offset > $len)throw RangeError(WRONG_LENGTH);
+ }
+ length = byteLength / BYTES;
+ } else if(TYPED_ARRAY in data){
+ return fromList(TypedArray, data);
+ } else {
+ return $from.call(TypedArray, data);
+ }
+ hide(that, '_d', {
+ b: buffer,
+ o: offset,
+ l: byteLength,
+ e: length,
+ v: new $DataView(buffer)
+ });
+ while(index < length)addElement(that, index++);
+ });
+ TypedArrayPrototype = TypedArray[PROTOTYPE] = create($TypedArrayPrototype$);
+ hide(TypedArrayPrototype, 'constructor', TypedArray);
+ } else if(!$iterDetect(function(iter){
+ // V8 works with iterators, but fails in many other cases
+ // https://code.google.com/p/v8/issues/detail?id=4552
+ new TypedArray(null); // eslint-disable-line no-new
+ new TypedArray(iter); // eslint-disable-line no-new
+ }, true)){
+ TypedArray = wrapper(function(that, data, $offset, $length){
+ anInstance(that, TypedArray, NAME);
+ var klass;
+ // `ws` module bug, temporarily remove validation length for Uint8Array
+ // https://github.com/websockets/ws/pull/645
+ if(!isObject(data))return new Base(strictToLength(data, ISNT_UINT8));
+ if(data instanceof $ArrayBuffer || (klass = classof(data)) == ARRAY_BUFFER || klass == SHARED_BUFFER){
+ return $length !== undefined
+ ? new Base(data, toOffset($offset, BYTES), $length)
+ : $offset !== undefined
+ ? new Base(data, toOffset($offset, BYTES))
+ : new Base(data);
+ }
+ if(TYPED_ARRAY in data)return fromList(TypedArray, data);
+ return $from.call(TypedArray, data);
+ });
+ arrayForEach(TAC !== Function.prototype ? gOPN(Base).concat(gOPN(TAC)) : gOPN(Base), function(key){
+ if(!(key in TypedArray))hide(TypedArray, key, Base[key]);
+ });
+ TypedArray[PROTOTYPE] = TypedArrayPrototype;
+ if(!LIBRARY)TypedArrayPrototype.constructor = TypedArray;
+ }
+ var $nativeIterator = TypedArrayPrototype[ITERATOR]
+ , CORRECT_ITER_NAME = !!$nativeIterator && ($nativeIterator.name == 'values' || $nativeIterator.name == undefined)
+ , $iterator = $iterators.values;
+ hide(TypedArray, TYPED_CONSTRUCTOR, true);
+ hide(TypedArrayPrototype, TYPED_ARRAY, NAME);
+ hide(TypedArrayPrototype, VIEW, true);
+ hide(TypedArrayPrototype, DEF_CONSTRUCTOR, TypedArray);
+
+ if(CLAMPED ? new TypedArray(1)[TAG] != NAME : !(TAG in TypedArrayPrototype)){
+ dP(TypedArrayPrototype, TAG, {
+ get: function(){ return NAME; }
+ });
+ }
+
+ O[NAME] = TypedArray;
+
+ $export($export.G + $export.W + $export.F * (TypedArray != Base), O);
+
+ $export($export.S, NAME, {
+ BYTES_PER_ELEMENT: BYTES,
+ from: $from,
+ of: $of
+ });
+
+ if(!(BYTES_PER_ELEMENT in TypedArrayPrototype))hide(TypedArrayPrototype, BYTES_PER_ELEMENT, BYTES);
+
+ $export($export.P, NAME, proto);
+
+ setSpecies(NAME);
+
+ $export($export.P + $export.F * FORCED_SET, NAME, {set: $set});
+
+ $export($export.P + $export.F * !CORRECT_ITER_NAME, NAME, $iterators);
+
+ $export($export.P + $export.F * (TypedArrayPrototype.toString != arrayToString), NAME, {toString: arrayToString});
+
+ $export($export.P + $export.F * fails(function(){
+ new TypedArray(1).slice();
+ }), NAME, {slice: $slice});
+
+ $export($export.P + $export.F * (fails(function(){
+ return [1, 2].toLocaleString() != new TypedArray([1, 2]).toLocaleString()
+ }) || !fails(function(){
+ TypedArrayPrototype.toLocaleString.call([1, 2]);
+ })), NAME, {toLocaleString: $toLocaleString});
+
+ Iterators[NAME] = CORRECT_ITER_NAME ? $nativeIterator : $iterator;
+ if(!LIBRARY && !CORRECT_ITER_NAME)hide(TypedArrayPrototype, ITERATOR, $iterator);
+ };
+} else module.exports = function(){ /* empty */ };
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_typed-buffer.js b/node_modules/babel-register/node_modules/core-js/modules/_typed-buffer.js
new file mode 100644
index 0000000..26d2b9c
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_typed-buffer.js
@@ -0,0 +1,275 @@
+'use strict';
+var global = require('./_global')
+ , DESCRIPTORS = require('./_descriptors')
+ , LIBRARY = require('./_library')
+ , $typed = require('./_typed')
+ , hide = require('./_hide')
+ , redefineAll = require('./_redefine-all')
+ , fails = require('./_fails')
+ , anInstance = require('./_an-instance')
+ , toInteger = require('./_to-integer')
+ , toLength = require('./_to-length')
+ , gOPN = require('./_object-gopn').f
+ , dP = require('./_object-dp').f
+ , arrayFill = require('./_array-fill')
+ , setToStringTag = require('./_set-to-string-tag')
+ , ARRAY_BUFFER = 'ArrayBuffer'
+ , DATA_VIEW = 'DataView'
+ , PROTOTYPE = 'prototype'
+ , WRONG_LENGTH = 'Wrong length!'
+ , WRONG_INDEX = 'Wrong index!'
+ , $ArrayBuffer = global[ARRAY_BUFFER]
+ , $DataView = global[DATA_VIEW]
+ , Math = global.Math
+ , parseInt = global.parseInt
+ , RangeError = global.RangeError
+ , Infinity = global.Infinity
+ , BaseBuffer = $ArrayBuffer
+ , abs = Math.abs
+ , pow = Math.pow
+ , min = Math.min
+ , floor = Math.floor
+ , log = Math.log
+ , LN2 = Math.LN2
+ , BUFFER = 'buffer'
+ , BYTE_LENGTH = 'byteLength'
+ , BYTE_OFFSET = 'byteOffset'
+ , $BUFFER = DESCRIPTORS ? '_b' : BUFFER
+ , $LENGTH = DESCRIPTORS ? '_l' : BYTE_LENGTH
+ , $OFFSET = DESCRIPTORS ? '_o' : BYTE_OFFSET;
+
+// IEEE754 conversions based on https://github.com/feross/ieee754
+var packIEEE754 = function(value, mLen, nBytes){
+ var buffer = Array(nBytes)
+ , eLen = nBytes * 8 - mLen - 1
+ , eMax = (1 << eLen) - 1
+ , eBias = eMax >> 1
+ , rt = mLen === 23 ? pow(2, -24) - pow(2, -77) : 0
+ , i = 0
+ , s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0
+ , e, m, c;
+ value = abs(value)
+ if(value != value || value === Infinity){
+ m = value != value ? 1 : 0;
+ e = eMax;
+ } else {
+ e = floor(log(value) / LN2);
+ if(value * (c = pow(2, -e)) < 1){
+ e--;
+ c *= 2;
+ }
+ if(e + eBias >= 1){
+ value += rt / c;
+ } else {
+ value += rt * pow(2, 1 - eBias);
+ }
+ if(value * c >= 2){
+ e++;
+ c /= 2;
+ }
+ if(e + eBias >= eMax){
+ m = 0;
+ e = eMax;
+ } else if(e + eBias >= 1){
+ m = (value * c - 1) * pow(2, mLen);
+ e = e + eBias;
+ } else {
+ m = value * pow(2, eBias - 1) * pow(2, mLen);
+ e = 0;
+ }
+ }
+ for(; mLen >= 8; buffer[i++] = m & 255, m /= 256, mLen -= 8);
+ e = e << mLen | m;
+ eLen += mLen;
+ for(; eLen > 0; buffer[i++] = e & 255, e /= 256, eLen -= 8);
+ buffer[--i] |= s * 128;
+ return buffer;
+};
+var unpackIEEE754 = function(buffer, mLen, nBytes){
+ var eLen = nBytes * 8 - mLen - 1
+ , eMax = (1 << eLen) - 1
+ , eBias = eMax >> 1
+ , nBits = eLen - 7
+ , i = nBytes - 1
+ , s = buffer[i--]
+ , e = s & 127
+ , m;
+ s >>= 7;
+ for(; nBits > 0; e = e * 256 + buffer[i], i--, nBits -= 8);
+ m = e & (1 << -nBits) - 1;
+ e >>= -nBits;
+ nBits += mLen;
+ for(; nBits > 0; m = m * 256 + buffer[i], i--, nBits -= 8);
+ if(e === 0){
+ e = 1 - eBias;
+ } else if(e === eMax){
+ return m ? NaN : s ? -Infinity : Infinity;
+ } else {
+ m = m + pow(2, mLen);
+ e = e - eBias;
+ } return (s ? -1 : 1) * m * pow(2, e - mLen);
+};
+
+var unpackI32 = function(bytes){
+ return bytes[3] << 24 | bytes[2] << 16 | bytes[1] << 8 | bytes[0];
+};
+var packI8 = function(it){
+ return [it & 0xff];
+};
+var packI16 = function(it){
+ return [it & 0xff, it >> 8 & 0xff];
+};
+var packI32 = function(it){
+ return [it & 0xff, it >> 8 & 0xff, it >> 16 & 0xff, it >> 24 & 0xff];
+};
+var packF64 = function(it){
+ return packIEEE754(it, 52, 8);
+};
+var packF32 = function(it){
+ return packIEEE754(it, 23, 4);
+};
+
+var addGetter = function(C, key, internal){
+ dP(C[PROTOTYPE], key, {get: function(){ return this[internal]; }});
+};
+
+var get = function(view, bytes, index, isLittleEndian){
+ var numIndex = +index
+ , intIndex = toInteger(numIndex);
+ if(numIndex != intIndex || intIndex < 0 || intIndex + bytes > view[$LENGTH])throw RangeError(WRONG_INDEX);
+ var store = view[$BUFFER]._b
+ , start = intIndex + view[$OFFSET]
+ , pack = store.slice(start, start + bytes);
+ return isLittleEndian ? pack : pack.reverse();
+};
+var set = function(view, bytes, index, conversion, value, isLittleEndian){
+ var numIndex = +index
+ , intIndex = toInteger(numIndex);
+ if(numIndex != intIndex || intIndex < 0 || intIndex + bytes > view[$LENGTH])throw RangeError(WRONG_INDEX);
+ var store = view[$BUFFER]._b
+ , start = intIndex + view[$OFFSET]
+ , pack = conversion(+value);
+ for(var i = 0; i < bytes; i++)store[start + i] = pack[isLittleEndian ? i : bytes - i - 1];
+};
+
+var validateArrayBufferArguments = function(that, length){
+ anInstance(that, $ArrayBuffer, ARRAY_BUFFER);
+ var numberLength = +length
+ , byteLength = toLength(numberLength);
+ if(numberLength != byteLength)throw RangeError(WRONG_LENGTH);
+ return byteLength;
+};
+
+if(!$typed.ABV){
+ $ArrayBuffer = function ArrayBuffer(length){
+ var byteLength = validateArrayBufferArguments(this, length);
+ this._b = arrayFill.call(Array(byteLength), 0);
+ this[$LENGTH] = byteLength;
+ };
+
+ $DataView = function DataView(buffer, byteOffset, byteLength){
+ anInstance(this, $DataView, DATA_VIEW);
+ anInstance(buffer, $ArrayBuffer, DATA_VIEW);
+ var bufferLength = buffer[$LENGTH]
+ , offset = toInteger(byteOffset);
+ if(offset < 0 || offset > bufferLength)throw RangeError('Wrong offset!');
+ byteLength = byteLength === undefined ? bufferLength - offset : toLength(byteLength);
+ if(offset + byteLength > bufferLength)throw RangeError(WRONG_LENGTH);
+ this[$BUFFER] = buffer;
+ this[$OFFSET] = offset;
+ this[$LENGTH] = byteLength;
+ };
+
+ if(DESCRIPTORS){
+ addGetter($ArrayBuffer, BYTE_LENGTH, '_l');
+ addGetter($DataView, BUFFER, '_b');
+ addGetter($DataView, BYTE_LENGTH, '_l');
+ addGetter($DataView, BYTE_OFFSET, '_o');
+ }
+
+ redefineAll($DataView[PROTOTYPE], {
+ getInt8: function getInt8(byteOffset){
+ return get(this, 1, byteOffset)[0] << 24 >> 24;
+ },
+ getUint8: function getUint8(byteOffset){
+ return get(this, 1, byteOffset)[0];
+ },
+ getInt16: function getInt16(byteOffset /*, littleEndian */){
+ var bytes = get(this, 2, byteOffset, arguments[1]);
+ return (bytes[1] << 8 | bytes[0]) << 16 >> 16;
+ },
+ getUint16: function getUint16(byteOffset /*, littleEndian */){
+ var bytes = get(this, 2, byteOffset, arguments[1]);
+ return bytes[1] << 8 | bytes[0];
+ },
+ getInt32: function getInt32(byteOffset /*, littleEndian */){
+ return unpackI32(get(this, 4, byteOffset, arguments[1]));
+ },
+ getUint32: function getUint32(byteOffset /*, littleEndian */){
+ return unpackI32(get(this, 4, byteOffset, arguments[1])) >>> 0;
+ },
+ getFloat32: function getFloat32(byteOffset /*, littleEndian */){
+ return unpackIEEE754(get(this, 4, byteOffset, arguments[1]), 23, 4);
+ },
+ getFloat64: function getFloat64(byteOffset /*, littleEndian */){
+ return unpackIEEE754(get(this, 8, byteOffset, arguments[1]), 52, 8);
+ },
+ setInt8: function setInt8(byteOffset, value){
+ set(this, 1, byteOffset, packI8, value);
+ },
+ setUint8: function setUint8(byteOffset, value){
+ set(this, 1, byteOffset, packI8, value);
+ },
+ setInt16: function setInt16(byteOffset, value /*, littleEndian */){
+ set(this, 2, byteOffset, packI16, value, arguments[2]);
+ },
+ setUint16: function setUint16(byteOffset, value /*, littleEndian */){
+ set(this, 2, byteOffset, packI16, value, arguments[2]);
+ },
+ setInt32: function setInt32(byteOffset, value /*, littleEndian */){
+ set(this, 4, byteOffset, packI32, value, arguments[2]);
+ },
+ setUint32: function setUint32(byteOffset, value /*, littleEndian */){
+ set(this, 4, byteOffset, packI32, value, arguments[2]);
+ },
+ setFloat32: function setFloat32(byteOffset, value /*, littleEndian */){
+ set(this, 4, byteOffset, packF32, value, arguments[2]);
+ },
+ setFloat64: function setFloat64(byteOffset, value /*, littleEndian */){
+ set(this, 8, byteOffset, packF64, value, arguments[2]);
+ }
+ });
+} else {
+ if(!fails(function(){
+ new $ArrayBuffer; // eslint-disable-line no-new
+ }) || !fails(function(){
+ new $ArrayBuffer(.5); // eslint-disable-line no-new
+ })){
+ $ArrayBuffer = function ArrayBuffer(length){
+ return new BaseBuffer(validateArrayBufferArguments(this, length));
+ };
+ var ArrayBufferProto = $ArrayBuffer[PROTOTYPE] = BaseBuffer[PROTOTYPE];
+ for(var keys = gOPN(BaseBuffer), j = 0, key; keys.length > j; ){
+ if(!((key = keys[j++]) in $ArrayBuffer))hide($ArrayBuffer, key, BaseBuffer[key]);
+ };
+ if(!LIBRARY)ArrayBufferProto.constructor = $ArrayBuffer;
+ }
+ // iOS Safari 7.x bug
+ var view = new $DataView(new $ArrayBuffer(2))
+ , $setInt8 = $DataView[PROTOTYPE].setInt8;
+ view.setInt8(0, 2147483648);
+ view.setInt8(1, 2147483649);
+ if(view.getInt8(0) || !view.getInt8(1))redefineAll($DataView[PROTOTYPE], {
+ setInt8: function setInt8(byteOffset, value){
+ $setInt8.call(this, byteOffset, value << 24 >> 24);
+ },
+ setUint8: function setUint8(byteOffset, value){
+ $setInt8.call(this, byteOffset, value << 24 >> 24);
+ }
+ }, true);
+}
+setToStringTag($ArrayBuffer, ARRAY_BUFFER);
+setToStringTag($DataView, DATA_VIEW);
+hide($DataView[PROTOTYPE], $typed.VIEW, true);
+exports[ARRAY_BUFFER] = $ArrayBuffer;
+exports[DATA_VIEW] = $DataView;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_typed.js b/node_modules/babel-register/node_modules/core-js/modules/_typed.js
new file mode 100644
index 0000000..6ed2ab5
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_typed.js
@@ -0,0 +1,26 @@
+var global = require('./_global')
+ , hide = require('./_hide')
+ , uid = require('./_uid')
+ , TYPED = uid('typed_array')
+ , VIEW = uid('view')
+ , ABV = !!(global.ArrayBuffer && global.DataView)
+ , CONSTR = ABV
+ , i = 0, l = 9, Typed;
+
+var TypedArrayConstructors = (
+ 'Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array'
+).split(',');
+
+while(i < l){
+ if(Typed = global[TypedArrayConstructors[i++]]){
+ hide(Typed.prototype, TYPED, true);
+ hide(Typed.prototype, VIEW, true);
+ } else CONSTR = false;
+}
+
+module.exports = {
+ ABV: ABV,
+ CONSTR: CONSTR,
+ TYPED: TYPED,
+ VIEW: VIEW
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_uid.js b/node_modules/babel-register/node_modules/core-js/modules/_uid.js
new file mode 100644
index 0000000..3be4196
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_uid.js
@@ -0,0 +1,5 @@
+var id = 0
+ , px = Math.random();
+module.exports = function(key){
+ return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/_wks.js b/node_modules/babel-register/node_modules/core-js/modules/_wks.js
new file mode 100644
index 0000000..9f02305
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/_wks.js
@@ -0,0 +1,8 @@
+var store = require('./_shared')('wks')
+ , uid = require('./_uid')
+ , Symbol = require('./_global').Symbol
+ , USE_SYMBOL = typeof Symbol == 'function';
+module.exports = function(name){
+ return store[name] || (store[name] =
+ USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/core.delay.js b/node_modules/babel-register/node_modules/core-js/modules/core.delay.js
new file mode 100644
index 0000000..ea031be
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/core.delay.js
@@ -0,0 +1,12 @@
+var global = require('./_global')
+ , core = require('./_core')
+ , $export = require('./_export')
+ , partial = require('./_partial');
+// https://esdiscuss.org/topic/promise-returning-delay-function
+$export($export.G + $export.F, {
+ delay: function delay(time){
+ return new (core.Promise || global.Promise)(function(resolve){
+ setTimeout(partial.call(resolve, true), time);
+ });
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/core.dict.js b/node_modules/babel-register/node_modules/core-js/modules/core.dict.js
new file mode 100644
index 0000000..88c54e3
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/core.dict.js
@@ -0,0 +1,155 @@
+'use strict';
+var ctx = require('./_ctx')
+ , $export = require('./_export')
+ , createDesc = require('./_property-desc')
+ , assign = require('./_object-assign')
+ , create = require('./_object-create')
+ , getPrototypeOf = require('./_object-gpo')
+ , getKeys = require('./_object-keys')
+ , dP = require('./_object-dp')
+ , keyOf = require('./_keyof')
+ , aFunction = require('./_a-function')
+ , forOf = require('./_for-of')
+ , isIterable = require('./core.is-iterable')
+ , $iterCreate = require('./_iter-create')
+ , step = require('./_iter-step')
+ , isObject = require('./_is-object')
+ , toIObject = require('./_to-iobject')
+ , DESCRIPTORS = require('./_descriptors')
+ , has = require('./_has');
+
+// 0 -> Dict.forEach
+// 1 -> Dict.map
+// 2 -> Dict.filter
+// 3 -> Dict.some
+// 4 -> Dict.every
+// 5 -> Dict.find
+// 6 -> Dict.findKey
+// 7 -> Dict.mapPairs
+var createDictMethod = function(TYPE){
+ var IS_MAP = TYPE == 1
+ , IS_EVERY = TYPE == 4;
+ return function(object, callbackfn, that /* = undefined */){
+ var f = ctx(callbackfn, that, 3)
+ , O = toIObject(object)
+ , result = IS_MAP || TYPE == 7 || TYPE == 2
+ ? new (typeof this == 'function' ? this : Dict) : undefined
+ , key, val, res;
+ for(key in O)if(has(O, key)){
+ val = O[key];
+ res = f(val, key, object);
+ if(TYPE){
+ if(IS_MAP)result[key] = res; // map
+ else if(res)switch(TYPE){
+ case 2: result[key] = val; break; // filter
+ case 3: return true; // some
+ case 5: return val; // find
+ case 6: return key; // findKey
+ case 7: result[res[0]] = res[1]; // mapPairs
+ } else if(IS_EVERY)return false; // every
+ }
+ }
+ return TYPE == 3 || IS_EVERY ? IS_EVERY : result;
+ };
+};
+var findKey = createDictMethod(6);
+
+var createDictIter = function(kind){
+ return function(it){
+ return new DictIterator(it, kind);
+ };
+};
+var DictIterator = function(iterated, kind){
+ this._t = toIObject(iterated); // target
+ this._a = getKeys(iterated); // keys
+ this._i = 0; // next index
+ this._k = kind; // kind
+};
+$iterCreate(DictIterator, 'Dict', function(){
+ var that = this
+ , O = that._t
+ , keys = that._a
+ , kind = that._k
+ , key;
+ do {
+ if(that._i >= keys.length){
+ that._t = undefined;
+ return step(1);
+ }
+ } while(!has(O, key = keys[that._i++]));
+ if(kind == 'keys' )return step(0, key);
+ if(kind == 'values')return step(0, O[key]);
+ return step(0, [key, O[key]]);
+});
+
+function Dict(iterable){
+ var dict = create(null);
+ if(iterable != undefined){
+ if(isIterable(iterable)){
+ forOf(iterable, true, function(key, value){
+ dict[key] = value;
+ });
+ } else assign(dict, iterable);
+ }
+ return dict;
+}
+Dict.prototype = null;
+
+function reduce(object, mapfn, init){
+ aFunction(mapfn);
+ var O = toIObject(object)
+ , keys = getKeys(O)
+ , length = keys.length
+ , i = 0
+ , memo, key;
+ if(arguments.length < 3){
+ if(!length)throw TypeError('Reduce of empty object with no initial value');
+ memo = O[keys[i++]];
+ } else memo = Object(init);
+ while(length > i)if(has(O, key = keys[i++])){
+ memo = mapfn(memo, O[key], key, object);
+ }
+ return memo;
+}
+
+function includes(object, el){
+ return (el == el ? keyOf(object, el) : findKey(object, function(it){
+ return it != it;
+ })) !== undefined;
+}
+
+function get(object, key){
+ if(has(object, key))return object[key];
+}
+function set(object, key, value){
+ if(DESCRIPTORS && key in Object)dP.f(object, key, createDesc(0, value));
+ else object[key] = value;
+ return object;
+}
+
+function isDict(it){
+ return isObject(it) && getPrototypeOf(it) === Dict.prototype;
+}
+
+$export($export.G + $export.F, {Dict: Dict});
+
+$export($export.S, 'Dict', {
+ keys: createDictIter('keys'),
+ values: createDictIter('values'),
+ entries: createDictIter('entries'),
+ forEach: createDictMethod(0),
+ map: createDictMethod(1),
+ filter: createDictMethod(2),
+ some: createDictMethod(3),
+ every: createDictMethod(4),
+ find: createDictMethod(5),
+ findKey: findKey,
+ mapPairs: createDictMethod(7),
+ reduce: reduce,
+ keyOf: keyOf,
+ includes: includes,
+ has: has,
+ get: get,
+ set: set,
+ isDict: isDict
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/core.function.part.js b/node_modules/babel-register/node_modules/core-js/modules/core.function.part.js
new file mode 100644
index 0000000..ce851ff
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/core.function.part.js
@@ -0,0 +1,7 @@
+var path = require('./_path')
+ , $export = require('./_export');
+
+// Placeholder
+require('./_core')._ = path._ = path._ || {};
+
+$export($export.P + $export.F, 'Function', {part: require('./_partial')});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/core.get-iterator-method.js b/node_modules/babel-register/node_modules/core-js/modules/core.get-iterator-method.js
new file mode 100644
index 0000000..e2c7ecc
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/core.get-iterator-method.js
@@ -0,0 +1,8 @@
+var classof = require('./_classof')
+ , ITERATOR = require('./_wks')('iterator')
+ , Iterators = require('./_iterators');
+module.exports = require('./_core').getIteratorMethod = function(it){
+ if(it != undefined)return it[ITERATOR]
+ || it['@@iterator']
+ || Iterators[classof(it)];
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/core.get-iterator.js b/node_modules/babel-register/node_modules/core-js/modules/core.get-iterator.js
new file mode 100644
index 0000000..c292e1a
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/core.get-iterator.js
@@ -0,0 +1,7 @@
+var anObject = require('./_an-object')
+ , get = require('./core.get-iterator-method');
+module.exports = require('./_core').getIterator = function(it){
+ var iterFn = get(it);
+ if(typeof iterFn != 'function')throw TypeError(it + ' is not iterable!');
+ return anObject(iterFn.call(it));
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/core.is-iterable.js b/node_modules/babel-register/node_modules/core-js/modules/core.is-iterable.js
new file mode 100644
index 0000000..b2b01b6
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/core.is-iterable.js
@@ -0,0 +1,9 @@
+var classof = require('./_classof')
+ , ITERATOR = require('./_wks')('iterator')
+ , Iterators = require('./_iterators');
+module.exports = require('./_core').isIterable = function(it){
+ var O = Object(it);
+ return O[ITERATOR] !== undefined
+ || '@@iterator' in O
+ || Iterators.hasOwnProperty(classof(O));
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/core.number.iterator.js b/node_modules/babel-register/node_modules/core-js/modules/core.number.iterator.js
new file mode 100644
index 0000000..9700acb
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/core.number.iterator.js
@@ -0,0 +1,9 @@
+'use strict';
+require('./_iter-define')(Number, 'Number', function(iterated){
+ this._l = +iterated;
+ this._i = 0;
+}, function(){
+ var i = this._i++
+ , done = !(i < this._l);
+ return {done: done, value: done ? undefined : i};
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/core.object.classof.js b/node_modules/babel-register/node_modules/core-js/modules/core.object.classof.js
new file mode 100644
index 0000000..342c737
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/core.object.classof.js
@@ -0,0 +1,3 @@
+var $export = require('./_export');
+
+$export($export.S + $export.F, 'Object', {classof: require('./_classof')});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/core.object.define.js b/node_modules/babel-register/node_modules/core-js/modules/core.object.define.js
new file mode 100644
index 0000000..d60e9a9
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/core.object.define.js
@@ -0,0 +1,4 @@
+var $export = require('./_export')
+ , define = require('./_object-define');
+
+$export($export.S + $export.F, 'Object', {define: define});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/core.object.is-object.js b/node_modules/babel-register/node_modules/core-js/modules/core.object.is-object.js
new file mode 100644
index 0000000..f2ba059
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/core.object.is-object.js
@@ -0,0 +1,3 @@
+var $export = require('./_export');
+
+$export($export.S + $export.F, 'Object', {isObject: require('./_is-object')});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/core.object.make.js b/node_modules/babel-register/node_modules/core-js/modules/core.object.make.js
new file mode 100644
index 0000000..3d2a2b5
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/core.object.make.js
@@ -0,0 +1,9 @@
+var $export = require('./_export')
+ , define = require('./_object-define')
+ , create = require('./_object-create');
+
+$export($export.S + $export.F, 'Object', {
+ make: function(proto, mixin){
+ return define(create(proto), mixin);
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/core.regexp.escape.js b/node_modules/babel-register/node_modules/core-js/modules/core.regexp.escape.js
new file mode 100644
index 0000000..54f832e
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/core.regexp.escape.js
@@ -0,0 +1,5 @@
+// https://github.com/benjamingr/RexExp.escape
+var $export = require('./_export')
+ , $re = require('./_replacer')(/[\\^$*+?.()|[\]{}]/g, '\\$&');
+
+$export($export.S, 'RegExp', {escape: function escape(it){ return $re(it); }});
diff --git a/node_modules/babel-register/node_modules/core-js/modules/core.string.escape-html.js b/node_modules/babel-register/node_modules/core-js/modules/core.string.escape-html.js
new file mode 100644
index 0000000..a4b8d2f
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/core.string.escape-html.js
@@ -0,0 +1,11 @@
+'use strict';
+var $export = require('./_export');
+var $re = require('./_replacer')(/[&<>"']/g, {
+ '&': '&',
+ '<': '<',
+ '>': '>',
+ '"': '"',
+ "'": '''
+});
+
+$export($export.P + $export.F, 'String', {escapeHTML: function escapeHTML(){ return $re(this); }});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/core.string.unescape-html.js b/node_modules/babel-register/node_modules/core-js/modules/core.string.unescape-html.js
new file mode 100644
index 0000000..413622b
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/core.string.unescape-html.js
@@ -0,0 +1,11 @@
+'use strict';
+var $export = require('./_export');
+var $re = require('./_replacer')(/&(?:amp|lt|gt|quot|apos);/g, {
+ '&': '&',
+ '<': '<',
+ '>': '>',
+ '"': '"',
+ ''': "'"
+});
+
+$export($export.P + $export.F, 'String', {unescapeHTML: function unescapeHTML(){ return $re(this); }});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es5.js b/node_modules/babel-register/node_modules/core-js/modules/es5.js
new file mode 100644
index 0000000..dd7ebad
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es5.js
@@ -0,0 +1,35 @@
+// This file still here for a legacy code and will be removed in a near time
+require('./es6.object.create');
+require('./es6.object.define-property');
+require('./es6.object.define-properties');
+require('./es6.object.get-own-property-descriptor');
+require('./es6.object.get-prototype-of');
+require('./es6.object.keys');
+require('./es6.object.get-own-property-names');
+require('./es6.object.freeze');
+require('./es6.object.seal');
+require('./es6.object.prevent-extensions');
+require('./es6.object.is-frozen');
+require('./es6.object.is-sealed');
+require('./es6.object.is-extensible');
+require('./es6.function.bind');
+require('./es6.array.is-array');
+require('./es6.array.join');
+require('./es6.array.slice');
+require('./es6.array.sort');
+require('./es6.array.for-each');
+require('./es6.array.map');
+require('./es6.array.filter');
+require('./es6.array.some');
+require('./es6.array.every');
+require('./es6.array.reduce');
+require('./es6.array.reduce-right');
+require('./es6.array.index-of');
+require('./es6.array.last-index-of');
+require('./es6.date.now');
+require('./es6.date.to-iso-string');
+require('./es6.date.to-json');
+require('./es6.parse-int');
+require('./es6.parse-float');
+require('./es6.string.trim');
+require('./es6.regexp.to-string');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.array.copy-within.js b/node_modules/babel-register/node_modules/core-js/modules/es6.array.copy-within.js
new file mode 100644
index 0000000..027f755
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.array.copy-within.js
@@ -0,0 +1,6 @@
+// 22.1.3.3 Array.prototype.copyWithin(target, start, end = this.length)
+var $export = require('./_export');
+
+$export($export.P, 'Array', {copyWithin: require('./_array-copy-within')});
+
+require('./_add-to-unscopables')('copyWithin');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.array.every.js b/node_modules/babel-register/node_modules/core-js/modules/es6.array.every.js
new file mode 100644
index 0000000..0704d50
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.array.every.js
@@ -0,0 +1,10 @@
+'use strict';
+var $export = require('./_export')
+ , $every = require('./_array-methods')(4);
+
+$export($export.P + $export.F * !require('./_strict-method')([].every, true), 'Array', {
+ // 22.1.3.5 / 15.4.4.16 Array.prototype.every(callbackfn [, thisArg])
+ every: function every(callbackfn /* , thisArg */){
+ return $every(this, callbackfn, arguments[1]);
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.array.fill.js b/node_modules/babel-register/node_modules/core-js/modules/es6.array.fill.js
new file mode 100644
index 0000000..f075c00
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.array.fill.js
@@ -0,0 +1,6 @@
+// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)
+var $export = require('./_export');
+
+$export($export.P, 'Array', {fill: require('./_array-fill')});
+
+require('./_add-to-unscopables')('fill');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.array.filter.js b/node_modules/babel-register/node_modules/core-js/modules/es6.array.filter.js
new file mode 100644
index 0000000..6ba54a7
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.array.filter.js
@@ -0,0 +1,10 @@
+'use strict';
+var $export = require('./_export')
+ , $filter = require('./_array-methods')(2);
+
+$export($export.P + $export.F * !require('./_strict-method')([].filter, true), 'Array', {
+ // 22.1.3.7 / 15.4.4.20 Array.prototype.filter(callbackfn [, thisArg])
+ filter: function filter(callbackfn /* , thisArg */){
+ return $filter(this, callbackfn, arguments[1]);
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.array.find-index.js b/node_modules/babel-register/node_modules/core-js/modules/es6.array.find-index.js
new file mode 100644
index 0000000..5309074
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.array.find-index.js
@@ -0,0 +1,14 @@
+'use strict';
+// 22.1.3.9 Array.prototype.findIndex(predicate, thisArg = undefined)
+var $export = require('./_export')
+ , $find = require('./_array-methods')(6)
+ , KEY = 'findIndex'
+ , forced = true;
+// Shouldn't skip holes
+if(KEY in [])Array(1)[KEY](function(){ forced = false; });
+$export($export.P + $export.F * forced, 'Array', {
+ findIndex: function findIndex(callbackfn/*, that = undefined */){
+ return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+ }
+});
+require('./_add-to-unscopables')(KEY);
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.array.find.js b/node_modules/babel-register/node_modules/core-js/modules/es6.array.find.js
new file mode 100644
index 0000000..90a9acf
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.array.find.js
@@ -0,0 +1,14 @@
+'use strict';
+// 22.1.3.8 Array.prototype.find(predicate, thisArg = undefined)
+var $export = require('./_export')
+ , $find = require('./_array-methods')(5)
+ , KEY = 'find'
+ , forced = true;
+// Shouldn't skip holes
+if(KEY in [])Array(1)[KEY](function(){ forced = false; });
+$export($export.P + $export.F * forced, 'Array', {
+ find: function find(callbackfn/*, that = undefined */){
+ return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
+ }
+});
+require('./_add-to-unscopables')(KEY);
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.array.for-each.js b/node_modules/babel-register/node_modules/core-js/modules/es6.array.for-each.js
new file mode 100644
index 0000000..55c1e30
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.array.for-each.js
@@ -0,0 +1,11 @@
+'use strict';
+var $export = require('./_export')
+ , $forEach = require('./_array-methods')(0)
+ , STRICT = require('./_strict-method')([].forEach, true);
+
+$export($export.P + $export.F * !STRICT, 'Array', {
+ // 22.1.3.10 / 15.4.4.18 Array.prototype.forEach(callbackfn [, thisArg])
+ forEach: function forEach(callbackfn /* , thisArg */){
+ return $forEach(this, callbackfn, arguments[1]);
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.array.from.js b/node_modules/babel-register/node_modules/core-js/modules/es6.array.from.js
new file mode 100644
index 0000000..739f12d
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.array.from.js
@@ -0,0 +1,35 @@
+'use strict';
+var ctx = require('./_ctx')
+ , $export = require('./_export')
+ , toObject = require('./_to-object')
+ , call = require('./_iter-call')
+ , isArrayIter = require('./_is-array-iter')
+ , toLength = require('./_to-length')
+ , getIterFn = require('./core.get-iterator-method');
+$export($export.S + $export.F * !require('./_iter-detect')(function(iter){ Array.from(iter); }), 'Array', {
+ // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)
+ from: function from(arrayLike/*, mapfn = undefined, thisArg = undefined*/){
+ var O = toObject(arrayLike)
+ , C = typeof this == 'function' ? this : Array
+ , aLen = arguments.length
+ , mapfn = aLen > 1 ? arguments[1] : undefined
+ , mapping = mapfn !== undefined
+ , index = 0
+ , iterFn = getIterFn(O)
+ , length, result, step, iterator;
+ if(mapping)mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);
+ // if object isn't iterable or it's array with default iterator - use simple case
+ if(iterFn != undefined && !(C == Array && isArrayIter(iterFn))){
+ for(iterator = iterFn.call(O), result = new C; !(step = iterator.next()).done; index++){
+ result[index] = mapping ? call(iterator, mapfn, [step.value, index], true) : step.value;
+ }
+ } else {
+ length = toLength(O.length);
+ for(result = new C(length); length > index; index++){
+ result[index] = mapping ? mapfn(O[index], index) : O[index];
+ }
+ }
+ result.length = index;
+ return result;
+ }
+});
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.array.index-of.js b/node_modules/babel-register/node_modules/core-js/modules/es6.array.index-of.js
new file mode 100644
index 0000000..efce321
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.array.index-of.js
@@ -0,0 +1,10 @@
+'use strict';
+var $export = require('./_export')
+ , $indexOf = require('./_array-includes')(false);
+
+$export($export.P + $export.F * !require('./_strict-method')([].indexOf), 'Array', {
+ // 22.1.3.11 / 15.4.4.14 Array.prototype.indexOf(searchElement [, fromIndex])
+ indexOf: function indexOf(searchElement /*, fromIndex = 0 */){
+ return $indexOf(this, searchElement, arguments[1]);
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.array.is-array.js b/node_modules/babel-register/node_modules/core-js/modules/es6.array.is-array.js
new file mode 100644
index 0000000..77160d7
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.array.is-array.js
@@ -0,0 +1,4 @@
+// 22.1.2.2 / 15.4.3.2 Array.isArray(arg)
+var $export = require('./_export');
+
+$export($export.S, 'Array', {isArray: require('./_is-array')});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.array.iterator.js b/node_modules/babel-register/node_modules/core-js/modules/es6.array.iterator.js
new file mode 100644
index 0000000..100b344
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.array.iterator.js
@@ -0,0 +1,34 @@
+'use strict';
+var addToUnscopables = require('./_add-to-unscopables')
+ , step = require('./_iter-step')
+ , Iterators = require('./_iterators')
+ , toIObject = require('./_to-iobject');
+
+// 22.1.3.4 Array.prototype.entries()
+// 22.1.3.13 Array.prototype.keys()
+// 22.1.3.29 Array.prototype.values()
+// 22.1.3.30 Array.prototype[@@iterator]()
+module.exports = require('./_iter-define')(Array, 'Array', function(iterated, kind){
+ this._t = toIObject(iterated); // target
+ this._i = 0; // next index
+ this._k = kind; // kind
+// 22.1.5.2.1 %ArrayIteratorPrototype%.next()
+}, function(){
+ var O = this._t
+ , kind = this._k
+ , index = this._i++;
+ if(!O || index >= O.length){
+ this._t = undefined;
+ return step(1);
+ }
+ if(kind == 'keys' )return step(0, index);
+ if(kind == 'values')return step(0, O[index]);
+ return step(0, [index, O[index]]);
+}, 'values');
+
+// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)
+Iterators.Arguments = Iterators.Array;
+
+addToUnscopables('keys');
+addToUnscopables('values');
+addToUnscopables('entries');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.array.join.js b/node_modules/babel-register/node_modules/core-js/modules/es6.array.join.js
new file mode 100644
index 0000000..0cf9501
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.array.join.js
@@ -0,0 +1,12 @@
+'use strict';
+// 22.1.3.13 Array.prototype.join(separator)
+var $export = require('./_export')
+ , toIObject = require('./_to-iobject')
+ , arrayJoin = [].join;
+
+// fallback for not array-like strings
+$export($export.P + $export.F * (require('./_iobject') != Object || !require('./_strict-method')(arrayJoin)), 'Array', {
+ join: function join(separator){
+ return arrayJoin.call(toIObject(this), separator === undefined ? ',' : separator);
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.array.last-index-of.js b/node_modules/babel-register/node_modules/core-js/modules/es6.array.last-index-of.js
new file mode 100644
index 0000000..404367c
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.array.last-index-of.js
@@ -0,0 +1,18 @@
+'use strict';
+var $export = require('./_export')
+ , toIObject = require('./_to-iobject')
+ , toInteger = require('./_to-integer')
+ , toLength = require('./_to-length');
+
+$export($export.P + $export.F * !require('./_strict-method')([].lastIndexOf), 'Array', {
+ // 22.1.3.14 / 15.4.4.15 Array.prototype.lastIndexOf(searchElement [, fromIndex])
+ lastIndexOf: function lastIndexOf(searchElement /*, fromIndex = @[*-1] */){
+ var O = toIObject(this)
+ , length = toLength(O.length)
+ , index = length - 1;
+ if(arguments.length > 1)index = Math.min(index, toInteger(arguments[1]));
+ if(index < 0)index = length + index;
+ for(;index >= 0; index--)if(index in O)if(O[index] === searchElement)return index;
+ return -1;
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.array.map.js b/node_modules/babel-register/node_modules/core-js/modules/es6.array.map.js
new file mode 100644
index 0000000..ea1f630
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.array.map.js
@@ -0,0 +1,10 @@
+'use strict';
+var $export = require('./_export')
+ , $map = require('./_array-methods')(1);
+
+$export($export.P + $export.F * !require('./_strict-method')([].map, true), 'Array', {
+ // 22.1.3.15 / 15.4.4.19 Array.prototype.map(callbackfn [, thisArg])
+ map: function map(callbackfn /* , thisArg */){
+ return $map(this, callbackfn, arguments[1]);
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.array.of.js b/node_modules/babel-register/node_modules/core-js/modules/es6.array.of.js
new file mode 100644
index 0000000..f5cba5d
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.array.of.js
@@ -0,0 +1,18 @@
+'use strict';
+var $export = require('./_export');
+
+// WebKit Array.of isn't generic
+$export($export.S + $export.F * require('./_fails')(function(){
+ function F(){}
+ return !(Array.of.call(F) instanceof F);
+}), 'Array', {
+ // 22.1.2.3 Array.of( ...items)
+ of: function of(/* ...args */){
+ var index = 0
+ , aLen = arguments.length
+ , result = new (typeof this == 'function' ? this : Array)(aLen);
+ while(aLen > index)result[index] = arguments[index++];
+ result.length = aLen;
+ return result;
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.array.reduce-right.js b/node_modules/babel-register/node_modules/core-js/modules/es6.array.reduce-right.js
new file mode 100644
index 0000000..4283087
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.array.reduce-right.js
@@ -0,0 +1,10 @@
+'use strict';
+var $export = require('./_export')
+ , $reduce = require('./_array-reduce');
+
+$export($export.P + $export.F * !require('./_strict-method')([].reduceRight, true), 'Array', {
+ // 22.1.3.19 / 15.4.4.22 Array.prototype.reduceRight(callbackfn [, initialValue])
+ reduceRight: function reduceRight(callbackfn /* , initialValue */){
+ return $reduce(this, callbackfn, arguments.length, arguments[1], true);
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.array.reduce.js b/node_modules/babel-register/node_modules/core-js/modules/es6.array.reduce.js
new file mode 100644
index 0000000..2c2ca37
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.array.reduce.js
@@ -0,0 +1,10 @@
+'use strict';
+var $export = require('./_export')
+ , $reduce = require('./_array-reduce');
+
+$export($export.P + $export.F * !require('./_strict-method')([].reduce, true), 'Array', {
+ // 22.1.3.18 / 15.4.4.21 Array.prototype.reduce(callbackfn [, initialValue])
+ reduce: function reduce(callbackfn /* , initialValue */){
+ return $reduce(this, callbackfn, arguments.length, arguments[1], false);
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.array.slice.js b/node_modules/babel-register/node_modules/core-js/modules/es6.array.slice.js
new file mode 100644
index 0000000..898f60c
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.array.slice.js
@@ -0,0 +1,28 @@
+'use strict';
+var $export = require('./_export')
+ , html = require('./_html')
+ , cof = require('./_cof')
+ , toIndex = require('./_to-index')
+ , toLength = require('./_to-length')
+ , arraySlice = [].slice;
+
+// fallback for not array-like ES3 strings and DOM objects
+$export($export.P + $export.F * require('./_fails')(function(){
+ if(html)arraySlice.call(html);
+}), 'Array', {
+ slice: function slice(begin, end){
+ var len = toLength(this.length)
+ , klass = cof(this);
+ end = end === undefined ? len : end;
+ if(klass == 'Array')return arraySlice.call(this, begin, end);
+ var start = toIndex(begin, len)
+ , upTo = toIndex(end, len)
+ , size = toLength(upTo - start)
+ , cloned = Array(size)
+ , i = 0;
+ for(; i < size; i++)cloned[i] = klass == 'String'
+ ? this.charAt(start + i)
+ : this[start + i];
+ return cloned;
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.array.some.js b/node_modules/babel-register/node_modules/core-js/modules/es6.array.some.js
new file mode 100644
index 0000000..7ab31df
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.array.some.js
@@ -0,0 +1,10 @@
+'use strict';
+var $export = require('./_export')
+ , $some = require('./_array-methods')(3);
+
+$export($export.P + $export.F * !require('./_strict-method')([].some, true), 'Array', {
+ // 22.1.3.23 / 15.4.4.17 Array.prototype.some(callbackfn [, thisArg])
+ some: function some(callbackfn /* , thisArg */){
+ return $some(this, callbackfn, arguments[1]);
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.array.sort.js b/node_modules/babel-register/node_modules/core-js/modules/es6.array.sort.js
new file mode 100644
index 0000000..d01f55b
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.array.sort.js
@@ -0,0 +1,23 @@
+'use strict';
+var $export = require('./_export')
+ , aFunction = require('./_a-function')
+ , toObject = require('./_to-object')
+ , fails = require('./_fails')
+ , $sort = [].sort
+ , test = [1, 2, 3];
+
+$export($export.P + $export.F * (fails(function(){
+ // IE8-
+ test.sort(undefined);
+}) || !fails(function(){
+ // V8 bug
+ test.sort(null);
+ // Old WebKit
+}) || !require('./_strict-method')($sort)), 'Array', {
+ // 22.1.3.25 Array.prototype.sort(comparefn)
+ sort: function sort(comparefn){
+ return comparefn === undefined
+ ? $sort.call(toObject(this))
+ : $sort.call(toObject(this), aFunction(comparefn));
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.array.species.js b/node_modules/babel-register/node_modules/core-js/modules/es6.array.species.js
new file mode 100644
index 0000000..d63c738
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.array.species.js
@@ -0,0 +1 @@
+require('./_set-species')('Array');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.date.now.js b/node_modules/babel-register/node_modules/core-js/modules/es6.date.now.js
new file mode 100644
index 0000000..da3fbc4
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.date.now.js
@@ -0,0 +1,4 @@
+// 20.3.3.1 / 15.9.4.4 Date.now()
+var $export = require('./_export');
+
+$export($export.S, 'Date', {now: function(){ return new Date().getTime(); }});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.date.to-iso-string.js b/node_modules/babel-register/node_modules/core-js/modules/es6.date.to-iso-string.js
new file mode 100644
index 0000000..24a8399
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.date.to-iso-string.js
@@ -0,0 +1,28 @@
+'use strict';
+// 20.3.4.36 / 15.9.5.43 Date.prototype.toISOString()
+var $export = require('./_export')
+ , fails = require('./_fails')
+ , getTime = Date.prototype.getTime;
+
+var lz = function(num){
+ return num > 9 ? num : '0' + num;
+};
+
+// PhantomJS / old WebKit has a broken implementations
+$export($export.P + $export.F * (fails(function(){
+ return new Date(-5e13 - 1).toISOString() != '0385-07-25T07:06:39.999Z';
+}) || !fails(function(){
+ new Date(NaN).toISOString();
+})), 'Date', {
+ toISOString: function toISOString(){
+ if(!isFinite(getTime.call(this)))throw RangeError('Invalid time value');
+ var d = this
+ , y = d.getUTCFullYear()
+ , m = d.getUTCMilliseconds()
+ , s = y < 0 ? '-' : y > 9999 ? '+' : '';
+ return s + ('00000' + Math.abs(y)).slice(s ? -6 : -4) +
+ '-' + lz(d.getUTCMonth() + 1) + '-' + lz(d.getUTCDate()) +
+ 'T' + lz(d.getUTCHours()) + ':' + lz(d.getUTCMinutes()) +
+ ':' + lz(d.getUTCSeconds()) + '.' + (m > 99 ? m : '0' + lz(m)) + 'Z';
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.date.to-json.js b/node_modules/babel-register/node_modules/core-js/modules/es6.date.to-json.js
new file mode 100644
index 0000000..eb419d0
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.date.to-json.js
@@ -0,0 +1,14 @@
+'use strict';
+var $export = require('./_export')
+ , toObject = require('./_to-object')
+ , toPrimitive = require('./_to-primitive');
+
+$export($export.P + $export.F * require('./_fails')(function(){
+ return new Date(NaN).toJSON() !== null || Date.prototype.toJSON.call({toISOString: function(){ return 1; }}) !== 1;
+}), 'Date', {
+ toJSON: function toJSON(key){
+ var O = toObject(this)
+ , pv = toPrimitive(O);
+ return typeof pv == 'number' && !isFinite(pv) ? null : O.toISOString();
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.date.to-primitive.js b/node_modules/babel-register/node_modules/core-js/modules/es6.date.to-primitive.js
new file mode 100644
index 0000000..b2d90d3
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.date.to-primitive.js
@@ -0,0 +1,4 @@
+var TO_PRIMITIVE = require('./_wks')('toPrimitive')
+ , proto = Date.prototype;
+
+if(!(TO_PRIMITIVE in proto))require('./_hide')(proto, TO_PRIMITIVE, require('./_date-to-primitive'));
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.date.to-string.js b/node_modules/babel-register/node_modules/core-js/modules/es6.date.to-string.js
new file mode 100644
index 0000000..686e949
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.date.to-string.js
@@ -0,0 +1,11 @@
+var DateProto = Date.prototype
+ , INVALID_DATE = 'Invalid Date'
+ , TO_STRING = 'toString'
+ , $toString = DateProto[TO_STRING]
+ , getTime = DateProto.getTime;
+if(new Date(NaN) + '' != INVALID_DATE){
+ require('./_redefine')(DateProto, TO_STRING, function toString(){
+ var value = getTime.call(this);
+ return value === value ? $toString.call(this) : INVALID_DATE;
+ });
+}
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.function.bind.js b/node_modules/babel-register/node_modules/core-js/modules/es6.function.bind.js
new file mode 100644
index 0000000..dddd423
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.function.bind.js
@@ -0,0 +1,4 @@
+// 19.2.3.2 / 15.3.4.5 Function.prototype.bind(thisArg, args...)
+var $export = require('./_export');
+
+$export($export.P, 'Function', {bind: require('./_bind')});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.function.has-instance.js b/node_modules/babel-register/node_modules/core-js/modules/es6.function.has-instance.js
new file mode 100644
index 0000000..ae294b1
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.function.has-instance.js
@@ -0,0 +1,13 @@
+'use strict';
+var isObject = require('./_is-object')
+ , getPrototypeOf = require('./_object-gpo')
+ , HAS_INSTANCE = require('./_wks')('hasInstance')
+ , FunctionProto = Function.prototype;
+// 19.2.3.6 Function.prototype[@@hasInstance](V)
+if(!(HAS_INSTANCE in FunctionProto))require('./_object-dp').f(FunctionProto, HAS_INSTANCE, {value: function(O){
+ if(typeof this != 'function' || !isObject(O))return false;
+ if(!isObject(this.prototype))return O instanceof this;
+ // for environment w/o native `@@hasInstance` logic enough `instanceof`, but add this:
+ while(O = getPrototypeOf(O))if(this.prototype === O)return true;
+ return false;
+}});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.function.name.js b/node_modules/babel-register/node_modules/core-js/modules/es6.function.name.js
new file mode 100644
index 0000000..b04969d
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.function.name.js
@@ -0,0 +1,16 @@
+var dP = require('./_object-dp').f
+ , createDesc = require('./_property-desc')
+ , has = require('./_has')
+ , FProto = Function.prototype
+ , nameRE = /^\s*function ([^ (]*)/
+ , NAME = 'name';
+// 19.2.4.2 name
+NAME in FProto || require('./_descriptors') && dP(FProto, NAME, {
+ configurable: true,
+ get: function(){
+ var match = ('' + this).match(nameRE)
+ , name = match ? match[1] : '';
+ has(this, NAME) || dP(this, NAME, createDesc(5, name));
+ return name;
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.map.js b/node_modules/babel-register/node_modules/core-js/modules/es6.map.js
new file mode 100644
index 0000000..a166430
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.map.js
@@ -0,0 +1,17 @@
+'use strict';
+var strong = require('./_collection-strong');
+
+// 23.1 Map Objects
+module.exports = require('./_collection')('Map', function(get){
+ return function Map(){ return get(this, arguments.length > 0 ? arguments[0] : undefined); };
+}, {
+ // 23.1.3.6 Map.prototype.get(key)
+ get: function get(key){
+ var entry = strong.getEntry(this, key);
+ return entry && entry.v;
+ },
+ // 23.1.3.9 Map.prototype.set(key, value)
+ set: function set(key, value){
+ return strong.def(this, key === 0 ? 0 : key, value);
+ }
+}, strong, true);
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.math.acosh.js b/node_modules/babel-register/node_modules/core-js/modules/es6.math.acosh.js
new file mode 100644
index 0000000..9229113
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.math.acosh.js
@@ -0,0 +1,14 @@
+// 20.2.2.3 Math.acosh(x)
+var $export = require('./_export')
+ , log1p = require('./_math-log1p')
+ , sqrt = Math.sqrt
+ , $acosh = Math.acosh;
+
+// V8 bug https://code.google.com/p/v8/issues/detail?id=3509
+$export($export.S + $export.F * !($acosh && Math.floor($acosh(Number.MAX_VALUE)) == 710), 'Math', {
+ acosh: function acosh(x){
+ return (x = +x) < 1 ? NaN : x > 94906265.62425156
+ ? Math.log(x) + Math.LN2
+ : log1p(x - 1 + sqrt(x - 1) * sqrt(x + 1));
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.math.asinh.js b/node_modules/babel-register/node_modules/core-js/modules/es6.math.asinh.js
new file mode 100644
index 0000000..c78911d
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.math.asinh.js
@@ -0,0 +1,8 @@
+// 20.2.2.5 Math.asinh(x)
+var $export = require('./_export');
+
+function asinh(x){
+ return !isFinite(x = +x) || x == 0 ? x : x < 0 ? -asinh(-x) : Math.log(x + Math.sqrt(x * x + 1));
+}
+
+$export($export.S, 'Math', {asinh: asinh});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.math.atanh.js b/node_modules/babel-register/node_modules/core-js/modules/es6.math.atanh.js
new file mode 100644
index 0000000..5532d9d
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.math.atanh.js
@@ -0,0 +1,8 @@
+// 20.2.2.7 Math.atanh(x)
+var $export = require('./_export');
+
+$export($export.S, 'Math', {
+ atanh: function atanh(x){
+ return (x = +x) == 0 ? x : Math.log((1 + x) / (1 - x)) / 2;
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.math.cbrt.js b/node_modules/babel-register/node_modules/core-js/modules/es6.math.cbrt.js
new file mode 100644
index 0000000..7ca7dae
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.math.cbrt.js
@@ -0,0 +1,9 @@
+// 20.2.2.9 Math.cbrt(x)
+var $export = require('./_export')
+ , sign = require('./_math-sign');
+
+$export($export.S, 'Math', {
+ cbrt: function cbrt(x){
+ return sign(x = +x) * Math.pow(Math.abs(x), 1 / 3);
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.math.clz32.js b/node_modules/babel-register/node_modules/core-js/modules/es6.math.clz32.js
new file mode 100644
index 0000000..1ec534b
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.math.clz32.js
@@ -0,0 +1,8 @@
+// 20.2.2.11 Math.clz32(x)
+var $export = require('./_export');
+
+$export($export.S, 'Math', {
+ clz32: function clz32(x){
+ return (x >>>= 0) ? 31 - Math.floor(Math.log(x + 0.5) * Math.LOG2E) : 32;
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.math.cosh.js b/node_modules/babel-register/node_modules/core-js/modules/es6.math.cosh.js
new file mode 100644
index 0000000..4f2b215
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.math.cosh.js
@@ -0,0 +1,9 @@
+// 20.2.2.12 Math.cosh(x)
+var $export = require('./_export')
+ , exp = Math.exp;
+
+$export($export.S, 'Math', {
+ cosh: function cosh(x){
+ return (exp(x = +x) + exp(-x)) / 2;
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.math.expm1.js b/node_modules/babel-register/node_modules/core-js/modules/es6.math.expm1.js
new file mode 100644
index 0000000..8d097d0
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.math.expm1.js
@@ -0,0 +1,4 @@
+// 20.2.2.14 Math.expm1(x)
+var $export = require('./_export');
+
+$export($export.S, 'Math', {expm1: require('./_math-expm1')});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.math.fround.js b/node_modules/babel-register/node_modules/core-js/modules/es6.math.fround.js
new file mode 100644
index 0000000..01a8886
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.math.fround.js
@@ -0,0 +1,26 @@
+// 20.2.2.16 Math.fround(x)
+var $export = require('./_export')
+ , sign = require('./_math-sign')
+ , pow = Math.pow
+ , EPSILON = pow(2, -52)
+ , EPSILON32 = pow(2, -23)
+ , MAX32 = pow(2, 127) * (2 - EPSILON32)
+ , MIN32 = pow(2, -126);
+
+var roundTiesToEven = function(n){
+ return n + 1 / EPSILON - 1 / EPSILON;
+};
+
+
+$export($export.S, 'Math', {
+ fround: function fround(x){
+ var $abs = Math.abs(x)
+ , $sign = sign(x)
+ , a, result;
+ if($abs < MIN32)return $sign * roundTiesToEven($abs / MIN32 / EPSILON32) * MIN32 * EPSILON32;
+ a = (1 + EPSILON32 / EPSILON) * $abs;
+ result = a - (a - $abs);
+ if(result > MAX32 || result != result)return $sign * Infinity;
+ return $sign * result;
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.math.hypot.js b/node_modules/babel-register/node_modules/core-js/modules/es6.math.hypot.js
new file mode 100644
index 0000000..508521b
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.math.hypot.js
@@ -0,0 +1,25 @@
+// 20.2.2.17 Math.hypot([value1[, value2[, … ]]])
+var $export = require('./_export')
+ , abs = Math.abs;
+
+$export($export.S, 'Math', {
+ hypot: function hypot(value1, value2){ // eslint-disable-line no-unused-vars
+ var sum = 0
+ , i = 0
+ , aLen = arguments.length
+ , larg = 0
+ , arg, div;
+ while(i < aLen){
+ arg = abs(arguments[i++]);
+ if(larg < arg){
+ div = larg / arg;
+ sum = sum * div * div + 1;
+ larg = arg;
+ } else if(arg > 0){
+ div = arg / larg;
+ sum += div * div;
+ } else sum += arg;
+ }
+ return larg === Infinity ? Infinity : larg * Math.sqrt(sum);
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.math.imul.js b/node_modules/babel-register/node_modules/core-js/modules/es6.math.imul.js
new file mode 100644
index 0000000..7f4111d
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.math.imul.js
@@ -0,0 +1,17 @@
+// 20.2.2.18 Math.imul(x, y)
+var $export = require('./_export')
+ , $imul = Math.imul;
+
+// some WebKit versions fails with big numbers, some has wrong arity
+$export($export.S + $export.F * require('./_fails')(function(){
+ return $imul(0xffffffff, 5) != -5 || $imul.length != 2;
+}), 'Math', {
+ imul: function imul(x, y){
+ var UINT16 = 0xffff
+ , xn = +x
+ , yn = +y
+ , xl = UINT16 & xn
+ , yl = UINT16 & yn;
+ return 0 | xl * yl + ((UINT16 & xn >>> 16) * yl + xl * (UINT16 & yn >>> 16) << 16 >>> 0);
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.math.log10.js b/node_modules/babel-register/node_modules/core-js/modules/es6.math.log10.js
new file mode 100644
index 0000000..791dfc3
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.math.log10.js
@@ -0,0 +1,8 @@
+// 20.2.2.21 Math.log10(x)
+var $export = require('./_export');
+
+$export($export.S, 'Math', {
+ log10: function log10(x){
+ return Math.log(x) / Math.LN10;
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.math.log1p.js b/node_modules/babel-register/node_modules/core-js/modules/es6.math.log1p.js
new file mode 100644
index 0000000..a1de025
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.math.log1p.js
@@ -0,0 +1,4 @@
+// 20.2.2.20 Math.log1p(x)
+var $export = require('./_export');
+
+$export($export.S, 'Math', {log1p: require('./_math-log1p')});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.math.log2.js b/node_modules/babel-register/node_modules/core-js/modules/es6.math.log2.js
new file mode 100644
index 0000000..c4ba781
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.math.log2.js
@@ -0,0 +1,8 @@
+// 20.2.2.22 Math.log2(x)
+var $export = require('./_export');
+
+$export($export.S, 'Math', {
+ log2: function log2(x){
+ return Math.log(x) / Math.LN2;
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.math.sign.js b/node_modules/babel-register/node_modules/core-js/modules/es6.math.sign.js
new file mode 100644
index 0000000..5dbee6f
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.math.sign.js
@@ -0,0 +1,4 @@
+// 20.2.2.28 Math.sign(x)
+var $export = require('./_export');
+
+$export($export.S, 'Math', {sign: require('./_math-sign')});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.math.sinh.js b/node_modules/babel-register/node_modules/core-js/modules/es6.math.sinh.js
new file mode 100644
index 0000000..5464ae3
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.math.sinh.js
@@ -0,0 +1,15 @@
+// 20.2.2.30 Math.sinh(x)
+var $export = require('./_export')
+ , expm1 = require('./_math-expm1')
+ , exp = Math.exp;
+
+// V8 near Chromium 38 has a problem with very small numbers
+$export($export.S + $export.F * require('./_fails')(function(){
+ return !Math.sinh(-2e-17) != -2e-17;
+}), 'Math', {
+ sinh: function sinh(x){
+ return Math.abs(x = +x) < 1
+ ? (expm1(x) - expm1(-x)) / 2
+ : (exp(x - 1) - exp(-x - 1)) * (Math.E / 2);
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.math.tanh.js b/node_modules/babel-register/node_modules/core-js/modules/es6.math.tanh.js
new file mode 100644
index 0000000..d2f1077
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.math.tanh.js
@@ -0,0 +1,12 @@
+// 20.2.2.33 Math.tanh(x)
+var $export = require('./_export')
+ , expm1 = require('./_math-expm1')
+ , exp = Math.exp;
+
+$export($export.S, 'Math', {
+ tanh: function tanh(x){
+ var a = expm1(x = +x)
+ , b = expm1(-x);
+ return a == Infinity ? 1 : b == Infinity ? -1 : (a - b) / (exp(x) + exp(-x));
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.math.trunc.js b/node_modules/babel-register/node_modules/core-js/modules/es6.math.trunc.js
new file mode 100644
index 0000000..2e42563
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.math.trunc.js
@@ -0,0 +1,8 @@
+// 20.2.2.34 Math.trunc(x)
+var $export = require('./_export');
+
+$export($export.S, 'Math', {
+ trunc: function trunc(it){
+ return (it > 0 ? Math.floor : Math.ceil)(it);
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.number.constructor.js b/node_modules/babel-register/node_modules/core-js/modules/es6.number.constructor.js
new file mode 100644
index 0000000..d562365
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.number.constructor.js
@@ -0,0 +1,69 @@
+'use strict';
+var global = require('./_global')
+ , has = require('./_has')
+ , cof = require('./_cof')
+ , inheritIfRequired = require('./_inherit-if-required')
+ , toPrimitive = require('./_to-primitive')
+ , fails = require('./_fails')
+ , gOPN = require('./_object-gopn').f
+ , gOPD = require('./_object-gopd').f
+ , dP = require('./_object-dp').f
+ , $trim = require('./_string-trim').trim
+ , NUMBER = 'Number'
+ , $Number = global[NUMBER]
+ , Base = $Number
+ , proto = $Number.prototype
+ // Opera ~12 has broken Object#toString
+ , BROKEN_COF = cof(require('./_object-create')(proto)) == NUMBER
+ , TRIM = 'trim' in String.prototype;
+
+// 7.1.3 ToNumber(argument)
+var toNumber = function(argument){
+ var it = toPrimitive(argument, false);
+ if(typeof it == 'string' && it.length > 2){
+ it = TRIM ? it.trim() : $trim(it, 3);
+ var first = it.charCodeAt(0)
+ , third, radix, maxCode;
+ if(first === 43 || first === 45){
+ third = it.charCodeAt(2);
+ if(third === 88 || third === 120)return NaN; // Number('+0x1') should be NaN, old V8 fix
+ } else if(first === 48){
+ switch(it.charCodeAt(1)){
+ case 66 : case 98 : radix = 2; maxCode = 49; break; // fast equal /^0b[01]+$/i
+ case 79 : case 111 : radix = 8; maxCode = 55; break; // fast equal /^0o[0-7]+$/i
+ default : return +it;
+ }
+ for(var digits = it.slice(2), i = 0, l = digits.length, code; i < l; i++){
+ code = digits.charCodeAt(i);
+ // parseInt parses a string to a first unavailable symbol
+ // but ToNumber should return NaN if a string contains unavailable symbols
+ if(code < 48 || code > maxCode)return NaN;
+ } return parseInt(digits, radix);
+ }
+ } return +it;
+};
+
+if(!$Number(' 0o1') || !$Number('0b1') || $Number('+0x1')){
+ $Number = function Number(value){
+ var it = arguments.length < 1 ? 0 : value
+ , that = this;
+ return that instanceof $Number
+ // check on 1..constructor(foo) case
+ && (BROKEN_COF ? fails(function(){ proto.valueOf.call(that); }) : cof(that) != NUMBER)
+ ? inheritIfRequired(new Base(toNumber(it)), that, $Number) : toNumber(it);
+ };
+ for(var keys = require('./_descriptors') ? gOPN(Base) : (
+ // ES3:
+ 'MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,' +
+ // ES6 (in case, if modules with ES6 Number statics required before):
+ 'EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,' +
+ 'MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger'
+ ).split(','), j = 0, key; keys.length > j; j++){
+ if(has(Base, key = keys[j]) && !has($Number, key)){
+ dP($Number, key, gOPD(Base, key));
+ }
+ }
+ $Number.prototype = proto;
+ proto.constructor = $Number;
+ require('./_redefine')(global, NUMBER, $Number);
+}
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.number.epsilon.js b/node_modules/babel-register/node_modules/core-js/modules/es6.number.epsilon.js
new file mode 100644
index 0000000..d25898c
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.number.epsilon.js
@@ -0,0 +1,4 @@
+// 20.1.2.1 Number.EPSILON
+var $export = require('./_export');
+
+$export($export.S, 'Number', {EPSILON: Math.pow(2, -52)});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.number.is-finite.js b/node_modules/babel-register/node_modules/core-js/modules/es6.number.is-finite.js
new file mode 100644
index 0000000..c8c4275
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.number.is-finite.js
@@ -0,0 +1,9 @@
+// 20.1.2.2 Number.isFinite(number)
+var $export = require('./_export')
+ , _isFinite = require('./_global').isFinite;
+
+$export($export.S, 'Number', {
+ isFinite: function isFinite(it){
+ return typeof it == 'number' && _isFinite(it);
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.number.is-integer.js b/node_modules/babel-register/node_modules/core-js/modules/es6.number.is-integer.js
new file mode 100644
index 0000000..dc0f8f0
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.number.is-integer.js
@@ -0,0 +1,4 @@
+// 20.1.2.3 Number.isInteger(number)
+var $export = require('./_export');
+
+$export($export.S, 'Number', {isInteger: require('./_is-integer')});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.number.is-nan.js b/node_modules/babel-register/node_modules/core-js/modules/es6.number.is-nan.js
new file mode 100644
index 0000000..5fedf82
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.number.is-nan.js
@@ -0,0 +1,8 @@
+// 20.1.2.4 Number.isNaN(number)
+var $export = require('./_export');
+
+$export($export.S, 'Number', {
+ isNaN: function isNaN(number){
+ return number != number;
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.number.is-safe-integer.js b/node_modules/babel-register/node_modules/core-js/modules/es6.number.is-safe-integer.js
new file mode 100644
index 0000000..92193e2
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.number.is-safe-integer.js
@@ -0,0 +1,10 @@
+// 20.1.2.5 Number.isSafeInteger(number)
+var $export = require('./_export')
+ , isInteger = require('./_is-integer')
+ , abs = Math.abs;
+
+$export($export.S, 'Number', {
+ isSafeInteger: function isSafeInteger(number){
+ return isInteger(number) && abs(number) <= 0x1fffffffffffff;
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.number.max-safe-integer.js b/node_modules/babel-register/node_modules/core-js/modules/es6.number.max-safe-integer.js
new file mode 100644
index 0000000..b9d7f2a
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.number.max-safe-integer.js
@@ -0,0 +1,4 @@
+// 20.1.2.6 Number.MAX_SAFE_INTEGER
+var $export = require('./_export');
+
+$export($export.S, 'Number', {MAX_SAFE_INTEGER: 0x1fffffffffffff});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.number.min-safe-integer.js b/node_modules/babel-register/node_modules/core-js/modules/es6.number.min-safe-integer.js
new file mode 100644
index 0000000..9a2beeb
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.number.min-safe-integer.js
@@ -0,0 +1,4 @@
+// 20.1.2.10 Number.MIN_SAFE_INTEGER
+var $export = require('./_export');
+
+$export($export.S, 'Number', {MIN_SAFE_INTEGER: -0x1fffffffffffff});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.number.parse-float.js b/node_modules/babel-register/node_modules/core-js/modules/es6.number.parse-float.js
new file mode 100644
index 0000000..7ee14da
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.number.parse-float.js
@@ -0,0 +1,4 @@
+var $export = require('./_export')
+ , $parseFloat = require('./_parse-float');
+// 20.1.2.12 Number.parseFloat(string)
+$export($export.S + $export.F * (Number.parseFloat != $parseFloat), 'Number', {parseFloat: $parseFloat});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.number.parse-int.js b/node_modules/babel-register/node_modules/core-js/modules/es6.number.parse-int.js
new file mode 100644
index 0000000..59bf144
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.number.parse-int.js
@@ -0,0 +1,4 @@
+var $export = require('./_export')
+ , $parseInt = require('./_parse-int');
+// 20.1.2.13 Number.parseInt(string, radix)
+$export($export.S + $export.F * (Number.parseInt != $parseInt), 'Number', {parseInt: $parseInt});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.number.to-fixed.js b/node_modules/babel-register/node_modules/core-js/modules/es6.number.to-fixed.js
new file mode 100644
index 0000000..b54bdf1
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.number.to-fixed.js
@@ -0,0 +1,114 @@
+'use strict';
+var $export = require('./_export')
+ , anInstance = require('./_an-instance')
+ , toInteger = require('./_to-integer')
+ , aNumberValue = require('./_a-number-value')
+ , repeat = require('./_string-repeat')
+ , $toFixed = 1..toFixed
+ , floor = Math.floor
+ , data = [0, 0, 0, 0, 0, 0]
+ , ERROR = 'Number.toFixed: incorrect invocation!'
+ , ZERO = '0';
+
+var multiply = function(n, c){
+ var i = -1
+ , c2 = c;
+ while(++i < 6){
+ c2 += n * data[i];
+ data[i] = c2 % 1e7;
+ c2 = floor(c2 / 1e7);
+ }
+};
+var divide = function(n){
+ var i = 6
+ , c = 0;
+ while(--i >= 0){
+ c += data[i];
+ data[i] = floor(c / n);
+ c = (c % n) * 1e7;
+ }
+};
+var numToString = function(){
+ var i = 6
+ , s = '';
+ while(--i >= 0){
+ if(s !== '' || i === 0 || data[i] !== 0){
+ var t = String(data[i]);
+ s = s === '' ? t : s + repeat.call(ZERO, 7 - t.length) + t;
+ }
+ } return s;
+};
+var pow = function(x, n, acc){
+ return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);
+};
+var log = function(x){
+ var n = 0
+ , x2 = x;
+ while(x2 >= 4096){
+ n += 12;
+ x2 /= 4096;
+ }
+ while(x2 >= 2){
+ n += 1;
+ x2 /= 2;
+ } return n;
+};
+
+$export($export.P + $export.F * (!!$toFixed && (
+ 0.00008.toFixed(3) !== '0.000' ||
+ 0.9.toFixed(0) !== '1' ||
+ 1.255.toFixed(2) !== '1.25' ||
+ 1000000000000000128..toFixed(0) !== '1000000000000000128'
+) || !require('./_fails')(function(){
+ // V8 ~ Android 4.3-
+ $toFixed.call({});
+})), 'Number', {
+ toFixed: function toFixed(fractionDigits){
+ var x = aNumberValue(this, ERROR)
+ , f = toInteger(fractionDigits)
+ , s = ''
+ , m = ZERO
+ , e, z, j, k;
+ if(f < 0 || f > 20)throw RangeError(ERROR);
+ if(x != x)return 'NaN';
+ if(x <= -1e21 || x >= 1e21)return String(x);
+ if(x < 0){
+ s = '-';
+ x = -x;
+ }
+ if(x > 1e-21){
+ e = log(x * pow(2, 69, 1)) - 69;
+ z = e < 0 ? x * pow(2, -e, 1) : x / pow(2, e, 1);
+ z *= 0x10000000000000;
+ e = 52 - e;
+ if(e > 0){
+ multiply(0, z);
+ j = f;
+ while(j >= 7){
+ multiply(1e7, 0);
+ j -= 7;
+ }
+ multiply(pow(10, j, 1), 0);
+ j = e - 1;
+ while(j >= 23){
+ divide(1 << 23);
+ j -= 23;
+ }
+ divide(1 << j);
+ multiply(1, 1);
+ divide(2);
+ m = numToString();
+ } else {
+ multiply(0, z);
+ multiply(1 << -e, 0);
+ m = numToString() + repeat.call(ZERO, f);
+ }
+ }
+ if(f > 0){
+ k = m.length;
+ m = s + (k <= f ? '0.' + repeat.call(ZERO, f - k) + m : m.slice(0, k - f) + '.' + m.slice(k - f));
+ } else {
+ m = s + m;
+ } return m;
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.number.to-precision.js b/node_modules/babel-register/node_modules/core-js/modules/es6.number.to-precision.js
new file mode 100644
index 0000000..d795b94
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.number.to-precision.js
@@ -0,0 +1,18 @@
+'use strict';
+var $export = require('./_export')
+ , $fails = require('./_fails')
+ , aNumberValue = require('./_a-number-value')
+ , $toPrecision = 1..toPrecision;
+
+$export($export.P + $export.F * ($fails(function(){
+ // IE7-
+ return $toPrecision.call(1, undefined) !== '1';
+}) || !$fails(function(){
+ // V8 ~ Android 4.3-
+ $toPrecision.call({});
+})), 'Number', {
+ toPrecision: function toPrecision(precision){
+ var that = aNumberValue(this, 'Number#toPrecision: incorrect invocation!');
+ return precision === undefined ? $toPrecision.call(that) : $toPrecision.call(that, precision);
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.object.assign.js b/node_modules/babel-register/node_modules/core-js/modules/es6.object.assign.js
new file mode 100644
index 0000000..13eda2c
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.object.assign.js
@@ -0,0 +1,4 @@
+// 19.1.3.1 Object.assign(target, source)
+var $export = require('./_export');
+
+$export($export.S + $export.F, 'Object', {assign: require('./_object-assign')});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.object.create.js b/node_modules/babel-register/node_modules/core-js/modules/es6.object.create.js
new file mode 100644
index 0000000..51b5b3a
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.object.create.js
@@ -0,0 +1,3 @@
+var $export = require('./_export')
+// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
+$export($export.S, 'Object', {create: require('./_object-create')});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.object.define-properties.js b/node_modules/babel-register/node_modules/core-js/modules/es6.object.define-properties.js
new file mode 100644
index 0000000..96ad415
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.object.define-properties.js
@@ -0,0 +1,3 @@
+var $export = require('./_export');
+// 19.1.2.3 / 15.2.3.7 Object.defineProperties(O, Properties)
+$export($export.S + $export.F * !require('./_descriptors'), 'Object', {defineProperties: require('./_object-dps')});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.object.define-property.js b/node_modules/babel-register/node_modules/core-js/modules/es6.object.define-property.js
new file mode 100644
index 0000000..5e9e7f8
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.object.define-property.js
@@ -0,0 +1,3 @@
+var $export = require('./_export');
+// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)
+$export($export.S + $export.F * !require('./_descriptors'), 'Object', {defineProperty: require('./_object-dp').f});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.object.freeze.js b/node_modules/babel-register/node_modules/core-js/modules/es6.object.freeze.js
new file mode 100644
index 0000000..34b5108
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.object.freeze.js
@@ -0,0 +1,9 @@
+// 19.1.2.5 Object.freeze(O)
+var isObject = require('./_is-object')
+ , meta = require('./_meta').onFreeze;
+
+require('./_object-sap')('freeze', function($freeze){
+ return function freeze(it){
+ return $freeze && isObject(it) ? $freeze(meta(it)) : it;
+ };
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.object.get-own-property-descriptor.js b/node_modules/babel-register/node_modules/core-js/modules/es6.object.get-own-property-descriptor.js
new file mode 100644
index 0000000..60c6991
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.object.get-own-property-descriptor.js
@@ -0,0 +1,9 @@
+// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)
+var toIObject = require('./_to-iobject')
+ , $getOwnPropertyDescriptor = require('./_object-gopd').f;
+
+require('./_object-sap')('getOwnPropertyDescriptor', function(){
+ return function getOwnPropertyDescriptor(it, key){
+ return $getOwnPropertyDescriptor(toIObject(it), key);
+ };
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.object.get-own-property-names.js b/node_modules/babel-register/node_modules/core-js/modules/es6.object.get-own-property-names.js
new file mode 100644
index 0000000..91dd110
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.object.get-own-property-names.js
@@ -0,0 +1,4 @@
+// 19.1.2.7 Object.getOwnPropertyNames(O)
+require('./_object-sap')('getOwnPropertyNames', function(){
+ return require('./_object-gopn-ext').f;
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.object.get-prototype-of.js b/node_modules/babel-register/node_modules/core-js/modules/es6.object.get-prototype-of.js
new file mode 100644
index 0000000..b124e28
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.object.get-prototype-of.js
@@ -0,0 +1,9 @@
+// 19.1.2.9 Object.getPrototypeOf(O)
+var toObject = require('./_to-object')
+ , $getPrototypeOf = require('./_object-gpo');
+
+require('./_object-sap')('getPrototypeOf', function(){
+ return function getPrototypeOf(it){
+ return $getPrototypeOf(toObject(it));
+ };
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.object.is-extensible.js b/node_modules/babel-register/node_modules/core-js/modules/es6.object.is-extensible.js
new file mode 100644
index 0000000..94bf8a8
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.object.is-extensible.js
@@ -0,0 +1,8 @@
+// 19.1.2.11 Object.isExtensible(O)
+var isObject = require('./_is-object');
+
+require('./_object-sap')('isExtensible', function($isExtensible){
+ return function isExtensible(it){
+ return isObject(it) ? $isExtensible ? $isExtensible(it) : true : false;
+ };
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.object.is-frozen.js b/node_modules/babel-register/node_modules/core-js/modules/es6.object.is-frozen.js
new file mode 100644
index 0000000..4bdfd11
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.object.is-frozen.js
@@ -0,0 +1,8 @@
+// 19.1.2.12 Object.isFrozen(O)
+var isObject = require('./_is-object');
+
+require('./_object-sap')('isFrozen', function($isFrozen){
+ return function isFrozen(it){
+ return isObject(it) ? $isFrozen ? $isFrozen(it) : false : true;
+ };
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.object.is-sealed.js b/node_modules/babel-register/node_modules/core-js/modules/es6.object.is-sealed.js
new file mode 100644
index 0000000..d13aa1b
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.object.is-sealed.js
@@ -0,0 +1,8 @@
+// 19.1.2.13 Object.isSealed(O)
+var isObject = require('./_is-object');
+
+require('./_object-sap')('isSealed', function($isSealed){
+ return function isSealed(it){
+ return isObject(it) ? $isSealed ? $isSealed(it) : false : true;
+ };
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.object.is.js b/node_modules/babel-register/node_modules/core-js/modules/es6.object.is.js
new file mode 100644
index 0000000..ad29942
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.object.is.js
@@ -0,0 +1,3 @@
+// 19.1.3.10 Object.is(value1, value2)
+var $export = require('./_export');
+$export($export.S, 'Object', {is: require('./_same-value')});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.object.keys.js b/node_modules/babel-register/node_modules/core-js/modules/es6.object.keys.js
new file mode 100644
index 0000000..bf76c07
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.object.keys.js
@@ -0,0 +1,9 @@
+// 19.1.2.14 Object.keys(O)
+var toObject = require('./_to-object')
+ , $keys = require('./_object-keys');
+
+require('./_object-sap')('keys', function(){
+ return function keys(it){
+ return $keys(toObject(it));
+ };
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.object.prevent-extensions.js b/node_modules/babel-register/node_modules/core-js/modules/es6.object.prevent-extensions.js
new file mode 100644
index 0000000..adaff7a
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.object.prevent-extensions.js
@@ -0,0 +1,9 @@
+// 19.1.2.15 Object.preventExtensions(O)
+var isObject = require('./_is-object')
+ , meta = require('./_meta').onFreeze;
+
+require('./_object-sap')('preventExtensions', function($preventExtensions){
+ return function preventExtensions(it){
+ return $preventExtensions && isObject(it) ? $preventExtensions(meta(it)) : it;
+ };
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.object.seal.js b/node_modules/babel-register/node_modules/core-js/modules/es6.object.seal.js
new file mode 100644
index 0000000..d7e4ea9
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.object.seal.js
@@ -0,0 +1,9 @@
+// 19.1.2.17 Object.seal(O)
+var isObject = require('./_is-object')
+ , meta = require('./_meta').onFreeze;
+
+require('./_object-sap')('seal', function($seal){
+ return function seal(it){
+ return $seal && isObject(it) ? $seal(meta(it)) : it;
+ };
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.object.set-prototype-of.js b/node_modules/babel-register/node_modules/core-js/modules/es6.object.set-prototype-of.js
new file mode 100644
index 0000000..5bbe4c0
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.object.set-prototype-of.js
@@ -0,0 +1,3 @@
+// 19.1.3.19 Object.setPrototypeOf(O, proto)
+var $export = require('./_export');
+$export($export.S, 'Object', {setPrototypeOf: require('./_set-proto').set});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.object.to-string.js b/node_modules/babel-register/node_modules/core-js/modules/es6.object.to-string.js
new file mode 100644
index 0000000..e644a5d
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.object.to-string.js
@@ -0,0 +1,10 @@
+'use strict';
+// 19.1.3.6 Object.prototype.toString()
+var classof = require('./_classof')
+ , test = {};
+test[require('./_wks')('toStringTag')] = 'z';
+if(test + '' != '[object z]'){
+ require('./_redefine')(Object.prototype, 'toString', function toString(){
+ return '[object ' + classof(this) + ']';
+ }, true);
+}
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.parse-float.js b/node_modules/babel-register/node_modules/core-js/modules/es6.parse-float.js
new file mode 100644
index 0000000..bb23071
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.parse-float.js
@@ -0,0 +1,4 @@
+var $export = require('./_export')
+ , $parseFloat = require('./_parse-float');
+// 18.2.4 parseFloat(string)
+$export($export.G + $export.F * (parseFloat != $parseFloat), {parseFloat: $parseFloat});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.parse-int.js b/node_modules/babel-register/node_modules/core-js/modules/es6.parse-int.js
new file mode 100644
index 0000000..e489826
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.parse-int.js
@@ -0,0 +1,4 @@
+var $export = require('./_export')
+ , $parseInt = require('./_parse-int');
+// 18.2.5 parseInt(string, radix)
+$export($export.G + $export.F * (parseInt != $parseInt), {parseInt: $parseInt});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.promise.js b/node_modules/babel-register/node_modules/core-js/modules/es6.promise.js
new file mode 100644
index 0000000..f570867
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.promise.js
@@ -0,0 +1,301 @@
+'use strict';
+var LIBRARY = require('./_library')
+ , global = require('./_global')
+ , ctx = require('./_ctx')
+ , classof = require('./_classof')
+ , $export = require('./_export')
+ , isObject = require('./_is-object')
+ , anObject = require('./_an-object')
+ , aFunction = require('./_a-function')
+ , anInstance = require('./_an-instance')
+ , forOf = require('./_for-of')
+ , setProto = require('./_set-proto').set
+ , speciesConstructor = require('./_species-constructor')
+ , task = require('./_task').set
+ , microtask = require('./_microtask')
+ , PROMISE = 'Promise'
+ , TypeError = global.TypeError
+ , process = global.process
+ , $Promise = global[PROMISE]
+ , process = global.process
+ , isNode = classof(process) == 'process'
+ , empty = function(){ /* empty */ }
+ , Internal, GenericPromiseCapability, Wrapper;
+
+var USE_NATIVE = !!function(){
+ try {
+ // correct subclassing with @@species support
+ var promise = $Promise.resolve(1)
+ , FakePromise = (promise.constructor = {})[require('./_wks')('species')] = function(exec){ exec(empty, empty); };
+ // unhandled rejections tracking support, NodeJS Promise without it fails @@species test
+ return (isNode || typeof PromiseRejectionEvent == 'function') && promise.then(empty) instanceof FakePromise;
+ } catch(e){ /* empty */ }
+}();
+
+// helpers
+var sameConstructor = function(a, b){
+ // with library wrapper special case
+ return a === b || a === $Promise && b === Wrapper;
+};
+var isThenable = function(it){
+ var then;
+ return isObject(it) && typeof (then = it.then) == 'function' ? then : false;
+};
+var newPromiseCapability = function(C){
+ return sameConstructor($Promise, C)
+ ? new PromiseCapability(C)
+ : new GenericPromiseCapability(C);
+};
+var PromiseCapability = GenericPromiseCapability = function(C){
+ var resolve, reject;
+ this.promise = new C(function($$resolve, $$reject){
+ if(resolve !== undefined || reject !== undefined)throw TypeError('Bad Promise constructor');
+ resolve = $$resolve;
+ reject = $$reject;
+ });
+ this.resolve = aFunction(resolve);
+ this.reject = aFunction(reject);
+};
+var perform = function(exec){
+ try {
+ exec();
+ } catch(e){
+ return {error: e};
+ }
+};
+var notify = function(promise, isReject){
+ if(promise._n)return;
+ promise._n = true;
+ var chain = promise._c;
+ microtask(function(){
+ var value = promise._v
+ , ok = promise._s == 1
+ , i = 0;
+ var run = function(reaction){
+ var handler = ok ? reaction.ok : reaction.fail
+ , resolve = reaction.resolve
+ , reject = reaction.reject
+ , domain = reaction.domain
+ , result, then;
+ try {
+ if(handler){
+ if(!ok){
+ if(promise._h == 2)onHandleUnhandled(promise);
+ promise._h = 1;
+ }
+ if(handler === true)result = value;
+ else {
+ if(domain)domain.enter();
+ result = handler(value);
+ if(domain)domain.exit();
+ }
+ if(result === reaction.promise){
+ reject(TypeError('Promise-chain cycle'));
+ } else if(then = isThenable(result)){
+ then.call(result, resolve, reject);
+ } else resolve(result);
+ } else reject(value);
+ } catch(e){
+ reject(e);
+ }
+ };
+ while(chain.length > i)run(chain[i++]); // variable length - can't use forEach
+ promise._c = [];
+ promise._n = false;
+ if(isReject && !promise._h)onUnhandled(promise);
+ });
+};
+var onUnhandled = function(promise){
+ task.call(global, function(){
+ var value = promise._v
+ , abrupt, handler, console;
+ if(isUnhandled(promise)){
+ abrupt = perform(function(){
+ if(isNode){
+ process.emit('unhandledRejection', value, promise);
+ } else if(handler = global.onunhandledrejection){
+ handler({promise: promise, reason: value});
+ } else if((console = global.console) && console.error){
+ console.error('Unhandled promise rejection', value);
+ }
+ });
+ // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should
+ promise._h = isNode || isUnhandled(promise) ? 2 : 1;
+ } promise._a = undefined;
+ if(abrupt)throw abrupt.error;
+ });
+};
+var isUnhandled = function(promise){
+ if(promise._h == 1)return false;
+ var chain = promise._a || promise._c
+ , i = 0
+ , reaction;
+ while(chain.length > i){
+ reaction = chain[i++];
+ if(reaction.fail || !isUnhandled(reaction.promise))return false;
+ } return true;
+};
+var onHandleUnhandled = function(promise){
+ task.call(global, function(){
+ var handler;
+ if(isNode){
+ process.emit('rejectionHandled', promise);
+ } else if(handler = global.onrejectionhandled){
+ handler({promise: promise, reason: promise._v});
+ }
+ });
+};
+var $reject = function(value){
+ var promise = this;
+ if(promise._d)return;
+ promise._d = true;
+ promise = promise._w || promise; // unwrap
+ promise._v = value;
+ promise._s = 2;
+ if(!promise._a)promise._a = promise._c.slice();
+ notify(promise, true);
+};
+var $resolve = function(value){
+ var promise = this
+ , then;
+ if(promise._d)return;
+ promise._d = true;
+ promise = promise._w || promise; // unwrap
+ try {
+ if(promise === value)throw TypeError("Promise can't be resolved itself");
+ if(then = isThenable(value)){
+ microtask(function(){
+ var wrapper = {_w: promise, _d: false}; // wrap
+ try {
+ then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));
+ } catch(e){
+ $reject.call(wrapper, e);
+ }
+ });
+ } else {
+ promise._v = value;
+ promise._s = 1;
+ notify(promise, false);
+ }
+ } catch(e){
+ $reject.call({_w: promise, _d: false}, e); // wrap
+ }
+};
+
+// constructor polyfill
+if(!USE_NATIVE){
+ // 25.4.3.1 Promise(executor)
+ $Promise = function Promise(executor){
+ anInstance(this, $Promise, PROMISE, '_h');
+ aFunction(executor);
+ Internal.call(this);
+ try {
+ executor(ctx($resolve, this, 1), ctx($reject, this, 1));
+ } catch(err){
+ $reject.call(this, err);
+ }
+ };
+ Internal = function Promise(executor){
+ this._c = []; // <- awaiting reactions
+ this._a = undefined; // <- checked in isUnhandled reactions
+ this._s = 0; // <- state
+ this._d = false; // <- done
+ this._v = undefined; // <- value
+ this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled
+ this._n = false; // <- notify
+ };
+ Internal.prototype = require('./_redefine-all')($Promise.prototype, {
+ // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)
+ then: function then(onFulfilled, onRejected){
+ var reaction = newPromiseCapability(speciesConstructor(this, $Promise));
+ reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;
+ reaction.fail = typeof onRejected == 'function' && onRejected;
+ reaction.domain = isNode ? process.domain : undefined;
+ this._c.push(reaction);
+ if(this._a)this._a.push(reaction);
+ if(this._s)notify(this, false);
+ return reaction.promise;
+ },
+ // 25.4.5.1 Promise.prototype.catch(onRejected)
+ 'catch': function(onRejected){
+ return this.then(undefined, onRejected);
+ }
+ });
+ PromiseCapability = function(){
+ var promise = new Internal;
+ this.promise = promise;
+ this.resolve = ctx($resolve, promise, 1);
+ this.reject = ctx($reject, promise, 1);
+ };
+}
+
+$export($export.G + $export.W + $export.F * !USE_NATIVE, {Promise: $Promise});
+require('./_set-to-string-tag')($Promise, PROMISE);
+require('./_set-species')(PROMISE);
+Wrapper = require('./_core')[PROMISE];
+
+// statics
+$export($export.S + $export.F * !USE_NATIVE, PROMISE, {
+ // 25.4.4.5 Promise.reject(r)
+ reject: function reject(r){
+ var capability = newPromiseCapability(this)
+ , $$reject = capability.reject;
+ $$reject(r);
+ return capability.promise;
+ }
+});
+$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {
+ // 25.4.4.6 Promise.resolve(x)
+ resolve: function resolve(x){
+ // instanceof instead of internal slot check because we should fix it without replacement native Promise core
+ if(x instanceof $Promise && sameConstructor(x.constructor, this))return x;
+ var capability = newPromiseCapability(this)
+ , $$resolve = capability.resolve;
+ $$resolve(x);
+ return capability.promise;
+ }
+});
+$export($export.S + $export.F * !(USE_NATIVE && require('./_iter-detect')(function(iter){
+ $Promise.all(iter)['catch'](empty);
+})), PROMISE, {
+ // 25.4.4.1 Promise.all(iterable)
+ all: function all(iterable){
+ var C = this
+ , capability = newPromiseCapability(C)
+ , resolve = capability.resolve
+ , reject = capability.reject;
+ var abrupt = perform(function(){
+ var values = []
+ , index = 0
+ , remaining = 1;
+ forOf(iterable, false, function(promise){
+ var $index = index++
+ , alreadyCalled = false;
+ values.push(undefined);
+ remaining++;
+ C.resolve(promise).then(function(value){
+ if(alreadyCalled)return;
+ alreadyCalled = true;
+ values[$index] = value;
+ --remaining || resolve(values);
+ }, reject);
+ });
+ --remaining || resolve(values);
+ });
+ if(abrupt)reject(abrupt.error);
+ return capability.promise;
+ },
+ // 25.4.4.4 Promise.race(iterable)
+ race: function race(iterable){
+ var C = this
+ , capability = newPromiseCapability(C)
+ , reject = capability.reject;
+ var abrupt = perform(function(){
+ forOf(iterable, false, function(promise){
+ C.resolve(promise).then(capability.resolve, reject);
+ });
+ });
+ if(abrupt)reject(abrupt.error);
+ return capability.promise;
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.reflect.apply.js b/node_modules/babel-register/node_modules/core-js/modules/es6.reflect.apply.js
new file mode 100644
index 0000000..d2c167f
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.reflect.apply.js
@@ -0,0 +1,9 @@
+// 26.1.1 Reflect.apply(target, thisArgument, argumentsList)
+var $export = require('./_export')
+ , _apply = Function.apply;
+
+$export($export.S, 'Reflect', {
+ apply: function apply(target, thisArgument, argumentsList){
+ return _apply.call(target, thisArgument, argumentsList);
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.reflect.construct.js b/node_modules/babel-register/node_modules/core-js/modules/es6.reflect.construct.js
new file mode 100644
index 0000000..fb5c69a
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.reflect.construct.js
@@ -0,0 +1,38 @@
+// 26.1.2 Reflect.construct(target, argumentsList [, newTarget])
+var $export = require('./_export')
+ , create = require('./_object-create')
+ , aFunction = require('./_a-function')
+ , anObject = require('./_an-object')
+ , isObject = require('./_is-object')
+ , bind = require('./_bind');
+
+// MS Edge supports only 2 arguments
+// FF Nightly sets third argument as `new.target`, but does not create `this` from it
+$export($export.S + $export.F * require('./_fails')(function(){
+ function F(){}
+ return !(Reflect.construct(function(){}, [], F) instanceof F);
+}), 'Reflect', {
+ construct: function construct(Target, args /*, newTarget*/){
+ aFunction(Target);
+ var newTarget = arguments.length < 3 ? Target : aFunction(arguments[2]);
+ if(Target == newTarget){
+ // w/o altered newTarget, optimization for 0-4 arguments
+ if(args != undefined)switch(anObject(args).length){
+ case 0: return new Target;
+ case 1: return new Target(args[0]);
+ case 2: return new Target(args[0], args[1]);
+ case 3: return new Target(args[0], args[1], args[2]);
+ case 4: return new Target(args[0], args[1], args[2], args[3]);
+ }
+ // w/o altered newTarget, lot of arguments case
+ var $args = [null];
+ $args.push.apply($args, args);
+ return new (bind.apply(Target, $args));
+ }
+ // with altered newTarget, not support built-in constructors
+ var proto = newTarget.prototype
+ , instance = create(isObject(proto) ? proto : Object.prototype)
+ , result = Function.apply.call(Target, instance, args);
+ return isObject(result) ? result : instance;
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.reflect.define-property.js b/node_modules/babel-register/node_modules/core-js/modules/es6.reflect.define-property.js
new file mode 100644
index 0000000..485d43c
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.reflect.define-property.js
@@ -0,0 +1,22 @@
+// 26.1.3 Reflect.defineProperty(target, propertyKey, attributes)
+var dP = require('./_object-dp')
+ , $export = require('./_export')
+ , anObject = require('./_an-object')
+ , toPrimitive = require('./_to-primitive');
+
+// MS Edge has broken Reflect.defineProperty - throwing instead of returning false
+$export($export.S + $export.F * require('./_fails')(function(){
+ Reflect.defineProperty(dP.f({}, 1, {value: 1}), 1, {value: 2});
+}), 'Reflect', {
+ defineProperty: function defineProperty(target, propertyKey, attributes){
+ anObject(target);
+ propertyKey = toPrimitive(propertyKey, true);
+ anObject(attributes);
+ try {
+ dP.f(target, propertyKey, attributes);
+ return true;
+ } catch(e){
+ return false;
+ }
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.reflect.delete-property.js b/node_modules/babel-register/node_modules/core-js/modules/es6.reflect.delete-property.js
new file mode 100644
index 0000000..4e8ce20
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.reflect.delete-property.js
@@ -0,0 +1,11 @@
+// 26.1.4 Reflect.deleteProperty(target, propertyKey)
+var $export = require('./_export')
+ , gOPD = require('./_object-gopd').f
+ , anObject = require('./_an-object');
+
+$export($export.S, 'Reflect', {
+ deleteProperty: function deleteProperty(target, propertyKey){
+ var desc = gOPD(anObject(target), propertyKey);
+ return desc && !desc.configurable ? false : delete target[propertyKey];
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.reflect.enumerate.js b/node_modules/babel-register/node_modules/core-js/modules/es6.reflect.enumerate.js
new file mode 100644
index 0000000..abdb132
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.reflect.enumerate.js
@@ -0,0 +1,26 @@
+'use strict';
+// 26.1.5 Reflect.enumerate(target)
+var $export = require('./_export')
+ , anObject = require('./_an-object');
+var Enumerate = function(iterated){
+ this._t = anObject(iterated); // target
+ this._i = 0; // next index
+ var keys = this._k = [] // keys
+ , key;
+ for(key in iterated)keys.push(key);
+};
+require('./_iter-create')(Enumerate, 'Object', function(){
+ var that = this
+ , keys = that._k
+ , key;
+ do {
+ if(that._i >= keys.length)return {value: undefined, done: true};
+ } while(!((key = keys[that._i++]) in that._t));
+ return {value: key, done: false};
+});
+
+$export($export.S, 'Reflect', {
+ enumerate: function enumerate(target){
+ return new Enumerate(target);
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.reflect.get-own-property-descriptor.js b/node_modules/babel-register/node_modules/core-js/modules/es6.reflect.get-own-property-descriptor.js
new file mode 100644
index 0000000..741a13e
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.reflect.get-own-property-descriptor.js
@@ -0,0 +1,10 @@
+// 26.1.7 Reflect.getOwnPropertyDescriptor(target, propertyKey)
+var gOPD = require('./_object-gopd')
+ , $export = require('./_export')
+ , anObject = require('./_an-object');
+
+$export($export.S, 'Reflect', {
+ getOwnPropertyDescriptor: function getOwnPropertyDescriptor(target, propertyKey){
+ return gOPD.f(anObject(target), propertyKey);
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.reflect.get-prototype-of.js b/node_modules/babel-register/node_modules/core-js/modules/es6.reflect.get-prototype-of.js
new file mode 100644
index 0000000..4f912d1
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.reflect.get-prototype-of.js
@@ -0,0 +1,10 @@
+// 26.1.8 Reflect.getPrototypeOf(target)
+var $export = require('./_export')
+ , getProto = require('./_object-gpo')
+ , anObject = require('./_an-object');
+
+$export($export.S, 'Reflect', {
+ getPrototypeOf: function getPrototypeOf(target){
+ return getProto(anObject(target));
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.reflect.get.js b/node_modules/babel-register/node_modules/core-js/modules/es6.reflect.get.js
new file mode 100644
index 0000000..f8c39f5
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.reflect.get.js
@@ -0,0 +1,21 @@
+// 26.1.6 Reflect.get(target, propertyKey [, receiver])
+var gOPD = require('./_object-gopd')
+ , getPrototypeOf = require('./_object-gpo')
+ , has = require('./_has')
+ , $export = require('./_export')
+ , isObject = require('./_is-object')
+ , anObject = require('./_an-object');
+
+function get(target, propertyKey/*, receiver*/){
+ var receiver = arguments.length < 3 ? target : arguments[2]
+ , desc, proto;
+ if(anObject(target) === receiver)return target[propertyKey];
+ if(desc = gOPD.f(target, propertyKey))return has(desc, 'value')
+ ? desc.value
+ : desc.get !== undefined
+ ? desc.get.call(receiver)
+ : undefined;
+ if(isObject(proto = getPrototypeOf(target)))return get(proto, propertyKey, receiver);
+}
+
+$export($export.S, 'Reflect', {get: get});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.reflect.has.js b/node_modules/babel-register/node_modules/core-js/modules/es6.reflect.has.js
new file mode 100644
index 0000000..bbb6dbc
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.reflect.has.js
@@ -0,0 +1,8 @@
+// 26.1.9 Reflect.has(target, propertyKey)
+var $export = require('./_export');
+
+$export($export.S, 'Reflect', {
+ has: function has(target, propertyKey){
+ return propertyKey in target;
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.reflect.is-extensible.js b/node_modules/babel-register/node_modules/core-js/modules/es6.reflect.is-extensible.js
new file mode 100644
index 0000000..ffbc284
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.reflect.is-extensible.js
@@ -0,0 +1,11 @@
+// 26.1.10 Reflect.isExtensible(target)
+var $export = require('./_export')
+ , anObject = require('./_an-object')
+ , $isExtensible = Object.isExtensible;
+
+$export($export.S, 'Reflect', {
+ isExtensible: function isExtensible(target){
+ anObject(target);
+ return $isExtensible ? $isExtensible(target) : true;
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.reflect.own-keys.js b/node_modules/babel-register/node_modules/core-js/modules/es6.reflect.own-keys.js
new file mode 100644
index 0000000..a1e5330
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.reflect.own-keys.js
@@ -0,0 +1,4 @@
+// 26.1.11 Reflect.ownKeys(target)
+var $export = require('./_export');
+
+$export($export.S, 'Reflect', {ownKeys: require('./_own-keys')});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.reflect.prevent-extensions.js b/node_modules/babel-register/node_modules/core-js/modules/es6.reflect.prevent-extensions.js
new file mode 100644
index 0000000..d3dad8e
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.reflect.prevent-extensions.js
@@ -0,0 +1,16 @@
+// 26.1.12 Reflect.preventExtensions(target)
+var $export = require('./_export')
+ , anObject = require('./_an-object')
+ , $preventExtensions = Object.preventExtensions;
+
+$export($export.S, 'Reflect', {
+ preventExtensions: function preventExtensions(target){
+ anObject(target);
+ try {
+ if($preventExtensions)$preventExtensions(target);
+ return true;
+ } catch(e){
+ return false;
+ }
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.reflect.set-prototype-of.js b/node_modules/babel-register/node_modules/core-js/modules/es6.reflect.set-prototype-of.js
new file mode 100644
index 0000000..b79d9b6
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.reflect.set-prototype-of.js
@@ -0,0 +1,15 @@
+// 26.1.14 Reflect.setPrototypeOf(target, proto)
+var $export = require('./_export')
+ , setProto = require('./_set-proto');
+
+if(setProto)$export($export.S, 'Reflect', {
+ setPrototypeOf: function setPrototypeOf(target, proto){
+ setProto.check(target, proto);
+ try {
+ setProto.set(target, proto);
+ return true;
+ } catch(e){
+ return false;
+ }
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.reflect.set.js b/node_modules/babel-register/node_modules/core-js/modules/es6.reflect.set.js
new file mode 100644
index 0000000..c6b916a
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.reflect.set.js
@@ -0,0 +1,31 @@
+// 26.1.13 Reflect.set(target, propertyKey, V [, receiver])
+var dP = require('./_object-dp')
+ , gOPD = require('./_object-gopd')
+ , getPrototypeOf = require('./_object-gpo')
+ , has = require('./_has')
+ , $export = require('./_export')
+ , createDesc = require('./_property-desc')
+ , anObject = require('./_an-object')
+ , isObject = require('./_is-object');
+
+function set(target, propertyKey, V/*, receiver*/){
+ var receiver = arguments.length < 4 ? target : arguments[3]
+ , ownDesc = gOPD.f(anObject(target), propertyKey)
+ , existingDescriptor, proto;
+ if(!ownDesc){
+ if(isObject(proto = getPrototypeOf(target))){
+ return set(proto, propertyKey, V, receiver);
+ }
+ ownDesc = createDesc(0);
+ }
+ if(has(ownDesc, 'value')){
+ if(ownDesc.writable === false || !isObject(receiver))return false;
+ existingDescriptor = gOPD.f(receiver, propertyKey) || createDesc(0);
+ existingDescriptor.value = V;
+ dP.f(receiver, propertyKey, existingDescriptor);
+ return true;
+ }
+ return ownDesc.set === undefined ? false : (ownDesc.set.call(receiver, V), true);
+}
+
+$export($export.S, 'Reflect', {set: set});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.regexp.constructor.js b/node_modules/babel-register/node_modules/core-js/modules/es6.regexp.constructor.js
new file mode 100644
index 0000000..9396116
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.regexp.constructor.js
@@ -0,0 +1,43 @@
+var global = require('./_global')
+ , inheritIfRequired = require('./_inherit-if-required')
+ , dP = require('./_object-dp').f
+ , gOPN = require('./_object-gopn').f
+ , isRegExp = require('./_is-regexp')
+ , $flags = require('./_flags')
+ , $RegExp = global.RegExp
+ , Base = $RegExp
+ , proto = $RegExp.prototype
+ , re1 = /a/g
+ , re2 = /a/g
+ // "new" creates a new object, old webkit buggy here
+ , CORRECT_NEW = new $RegExp(re1) !== re1;
+
+if(require('./_descriptors') && (!CORRECT_NEW || require('./_fails')(function(){
+ re2[require('./_wks')('match')] = false;
+ // RegExp constructor can alter flags and IsRegExp works correct with @@match
+ return $RegExp(re1) != re1 || $RegExp(re2) == re2 || $RegExp(re1, 'i') != '/a/i';
+}))){
+ $RegExp = function RegExp(p, f){
+ var tiRE = this instanceof $RegExp
+ , piRE = isRegExp(p)
+ , fiU = f === undefined;
+ return !tiRE && piRE && p.constructor === $RegExp && fiU ? p
+ : inheritIfRequired(CORRECT_NEW
+ ? new Base(piRE && !fiU ? p.source : p, f)
+ : Base((piRE = p instanceof $RegExp) ? p.source : p, piRE && fiU ? $flags.call(p) : f)
+ , tiRE ? this : proto, $RegExp);
+ };
+ var proxy = function(key){
+ key in $RegExp || dP($RegExp, key, {
+ configurable: true,
+ get: function(){ return Base[key]; },
+ set: function(it){ Base[key] = it; }
+ });
+ };
+ for(var keys = gOPN(Base), i = 0; keys.length > i; )proxy(keys[i++]);
+ proto.constructor = $RegExp;
+ $RegExp.prototype = proto;
+ require('./_redefine')(global, 'RegExp', $RegExp);
+}
+
+require('./_set-species')('RegExp');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.regexp.flags.js b/node_modules/babel-register/node_modules/core-js/modules/es6.regexp.flags.js
new file mode 100644
index 0000000..33ba86f
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.regexp.flags.js
@@ -0,0 +1,5 @@
+// 21.2.5.3 get RegExp.prototype.flags()
+if(require('./_descriptors') && /./g.flags != 'g')require('./_object-dp').f(RegExp.prototype, 'flags', {
+ configurable: true,
+ get: require('./_flags')
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.regexp.match.js b/node_modules/babel-register/node_modules/core-js/modules/es6.regexp.match.js
new file mode 100644
index 0000000..814d371
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.regexp.match.js
@@ -0,0 +1,10 @@
+// @@match logic
+require('./_fix-re-wks')('match', 1, function(defined, MATCH, $match){
+ // 21.1.3.11 String.prototype.match(regexp)
+ return [function match(regexp){
+ 'use strict';
+ var O = defined(this)
+ , fn = regexp == undefined ? undefined : regexp[MATCH];
+ return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));
+ }, $match];
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.regexp.replace.js b/node_modules/babel-register/node_modules/core-js/modules/es6.regexp.replace.js
new file mode 100644
index 0000000..4f651af
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.regexp.replace.js
@@ -0,0 +1,12 @@
+// @@replace logic
+require('./_fix-re-wks')('replace', 2, function(defined, REPLACE, $replace){
+ // 21.1.3.14 String.prototype.replace(searchValue, replaceValue)
+ return [function replace(searchValue, replaceValue){
+ 'use strict';
+ var O = defined(this)
+ , fn = searchValue == undefined ? undefined : searchValue[REPLACE];
+ return fn !== undefined
+ ? fn.call(searchValue, O, replaceValue)
+ : $replace.call(String(O), searchValue, replaceValue);
+ }, $replace];
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.regexp.search.js b/node_modules/babel-register/node_modules/core-js/modules/es6.regexp.search.js
new file mode 100644
index 0000000..7aac5e4
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.regexp.search.js
@@ -0,0 +1,10 @@
+// @@search logic
+require('./_fix-re-wks')('search', 1, function(defined, SEARCH, $search){
+ // 21.1.3.15 String.prototype.search(regexp)
+ return [function search(regexp){
+ 'use strict';
+ var O = defined(this)
+ , fn = regexp == undefined ? undefined : regexp[SEARCH];
+ return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[SEARCH](String(O));
+ }, $search];
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.regexp.split.js b/node_modules/babel-register/node_modules/core-js/modules/es6.regexp.split.js
new file mode 100644
index 0000000..a991a3f
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.regexp.split.js
@@ -0,0 +1,70 @@
+// @@split logic
+require('./_fix-re-wks')('split', 2, function(defined, SPLIT, $split){
+ 'use strict';
+ var isRegExp = require('./_is-regexp')
+ , _split = $split
+ , $push = [].push
+ , $SPLIT = 'split'
+ , LENGTH = 'length'
+ , LAST_INDEX = 'lastIndex';
+ if(
+ 'abbc'[$SPLIT](/(b)*/)[1] == 'c' ||
+ 'test'[$SPLIT](/(?:)/, -1)[LENGTH] != 4 ||
+ 'ab'[$SPLIT](/(?:ab)*/)[LENGTH] != 2 ||
+ '.'[$SPLIT](/(.?)(.?)/)[LENGTH] != 4 ||
+ '.'[$SPLIT](/()()/)[LENGTH] > 1 ||
+ ''[$SPLIT](/.?/)[LENGTH]
+ ){
+ var NPCG = /()??/.exec('')[1] === undefined; // nonparticipating capturing group
+ // based on es5-shim implementation, need to rework it
+ $split = function(separator, limit){
+ var string = String(this);
+ if(separator === undefined && limit === 0)return [];
+ // If `separator` is not a regex, use native split
+ if(!isRegExp(separator))return _split.call(string, separator, limit);
+ var output = [];
+ var flags = (separator.ignoreCase ? 'i' : '') +
+ (separator.multiline ? 'm' : '') +
+ (separator.unicode ? 'u' : '') +
+ (separator.sticky ? 'y' : '');
+ var lastLastIndex = 0;
+ var splitLimit = limit === undefined ? 4294967295 : limit >>> 0;
+ // Make `global` and avoid `lastIndex` issues by working with a copy
+ var separatorCopy = new RegExp(separator.source, flags + 'g');
+ var separator2, match, lastIndex, lastLength, i;
+ // Doesn't need flags gy, but they don't hurt
+ if(!NPCG)separator2 = new RegExp('^' + separatorCopy.source + '$(?!\\s)', flags);
+ while(match = separatorCopy.exec(string)){
+ // `separatorCopy.lastIndex` is not reliable cross-browser
+ lastIndex = match.index + match[0][LENGTH];
+ if(lastIndex > lastLastIndex){
+ output.push(string.slice(lastLastIndex, match.index));
+ // Fix browsers whose `exec` methods don't consistently return `undefined` for NPCG
+ if(!NPCG && match[LENGTH] > 1)match[0].replace(separator2, function(){
+ for(i = 1; i < arguments[LENGTH] - 2; i++)if(arguments[i] === undefined)match[i] = undefined;
+ });
+ if(match[LENGTH] > 1 && match.index < string[LENGTH])$push.apply(output, match.slice(1));
+ lastLength = match[0][LENGTH];
+ lastLastIndex = lastIndex;
+ if(output[LENGTH] >= splitLimit)break;
+ }
+ if(separatorCopy[LAST_INDEX] === match.index)separatorCopy[LAST_INDEX]++; // Avoid an infinite loop
+ }
+ if(lastLastIndex === string[LENGTH]){
+ if(lastLength || !separatorCopy.test(''))output.push('');
+ } else output.push(string.slice(lastLastIndex));
+ return output[LENGTH] > splitLimit ? output.slice(0, splitLimit) : output;
+ };
+ // Chakra, V8
+ } else if('0'[$SPLIT](undefined, 0)[LENGTH]){
+ $split = function(separator, limit){
+ return separator === undefined && limit === 0 ? [] : _split.call(this, separator, limit);
+ };
+ }
+ // 21.1.3.17 String.prototype.split(separator, limit)
+ return [function split(separator, limit){
+ var O = defined(this)
+ , fn = separator == undefined ? undefined : separator[SPLIT];
+ return fn !== undefined ? fn.call(separator, O, limit) : $split.call(String(O), separator, limit);
+ }, $split];
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.regexp.to-string.js b/node_modules/babel-register/node_modules/core-js/modules/es6.regexp.to-string.js
new file mode 100644
index 0000000..7ff6027
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.regexp.to-string.js
@@ -0,0 +1,25 @@
+'use strict';
+require('./es6.regexp.flags');
+var anObject = require('./_an-object')
+ , $flags = require('./_flags')
+ , DESCRIPTORS = require('./_descriptors')
+ , TO_STRING = 'toString'
+ , $toString = /./[TO_STRING];
+
+var define = function(fn){
+ require('./_redefine')(RegExp.prototype, TO_STRING, fn, true);
+};
+
+// 21.2.5.14 RegExp.prototype.toString()
+if(require('./_fails')(function(){ return $toString.call({source: 'a', flags: 'b'}) != '/a/b'; })){
+ define(function toString(){
+ var R = anObject(this);
+ return '/'.concat(R.source, '/',
+ 'flags' in R ? R.flags : !DESCRIPTORS && R instanceof RegExp ? $flags.call(R) : undefined);
+ });
+// FF44- RegExp#toString has a wrong name
+} else if($toString.name != TO_STRING){
+ define(function toString(){
+ return $toString.call(this);
+ });
+}
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.set.js b/node_modules/babel-register/node_modules/core-js/modules/es6.set.js
new file mode 100644
index 0000000..a188088
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.set.js
@@ -0,0 +1,12 @@
+'use strict';
+var strong = require('./_collection-strong');
+
+// 23.2 Set Objects
+module.exports = require('./_collection')('Set', function(get){
+ return function Set(){ return get(this, arguments.length > 0 ? arguments[0] : undefined); };
+}, {
+ // 23.2.3.1 Set.prototype.add(value)
+ add: function add(value){
+ return strong.def(this, value = value === 0 ? 0 : value, value);
+ }
+}, strong);
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.string.anchor.js b/node_modules/babel-register/node_modules/core-js/modules/es6.string.anchor.js
new file mode 100644
index 0000000..65db252
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.string.anchor.js
@@ -0,0 +1,7 @@
+'use strict';
+// B.2.3.2 String.prototype.anchor(name)
+require('./_string-html')('anchor', function(createHTML){
+ return function anchor(name){
+ return createHTML(this, 'a', 'name', name);
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.string.big.js b/node_modules/babel-register/node_modules/core-js/modules/es6.string.big.js
new file mode 100644
index 0000000..aeeb1ab
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.string.big.js
@@ -0,0 +1,7 @@
+'use strict';
+// B.2.3.3 String.prototype.big()
+require('./_string-html')('big', function(createHTML){
+ return function big(){
+ return createHTML(this, 'big', '', '');
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.string.blink.js b/node_modules/babel-register/node_modules/core-js/modules/es6.string.blink.js
new file mode 100644
index 0000000..aef8da2
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.string.blink.js
@@ -0,0 +1,7 @@
+'use strict';
+// B.2.3.4 String.prototype.blink()
+require('./_string-html')('blink', function(createHTML){
+ return function blink(){
+ return createHTML(this, 'blink', '', '');
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.string.bold.js b/node_modules/babel-register/node_modules/core-js/modules/es6.string.bold.js
new file mode 100644
index 0000000..022cdb0
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.string.bold.js
@@ -0,0 +1,7 @@
+'use strict';
+// B.2.3.5 String.prototype.bold()
+require('./_string-html')('bold', function(createHTML){
+ return function bold(){
+ return createHTML(this, 'b', '', '');
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.string.code-point-at.js b/node_modules/babel-register/node_modules/core-js/modules/es6.string.code-point-at.js
new file mode 100644
index 0000000..cf54465
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.string.code-point-at.js
@@ -0,0 +1,9 @@
+'use strict';
+var $export = require('./_export')
+ , $at = require('./_string-at')(false);
+$export($export.P, 'String', {
+ // 21.1.3.3 String.prototype.codePointAt(pos)
+ codePointAt: function codePointAt(pos){
+ return $at(this, pos);
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.string.ends-with.js b/node_modules/babel-register/node_modules/core-js/modules/es6.string.ends-with.js
new file mode 100644
index 0000000..80baed9
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.string.ends-with.js
@@ -0,0 +1,20 @@
+// 21.1.3.6 String.prototype.endsWith(searchString [, endPosition])
+'use strict';
+var $export = require('./_export')
+ , toLength = require('./_to-length')
+ , context = require('./_string-context')
+ , ENDS_WITH = 'endsWith'
+ , $endsWith = ''[ENDS_WITH];
+
+$export($export.P + $export.F * require('./_fails-is-regexp')(ENDS_WITH), 'String', {
+ endsWith: function endsWith(searchString /*, endPosition = @length */){
+ var that = context(this, searchString, ENDS_WITH)
+ , endPosition = arguments.length > 1 ? arguments[1] : undefined
+ , len = toLength(that.length)
+ , end = endPosition === undefined ? len : Math.min(toLength(endPosition), len)
+ , search = String(searchString);
+ return $endsWith
+ ? $endsWith.call(that, search, end)
+ : that.slice(end - search.length, end) === search;
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.string.fixed.js b/node_modules/babel-register/node_modules/core-js/modules/es6.string.fixed.js
new file mode 100644
index 0000000..d017e20
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.string.fixed.js
@@ -0,0 +1,7 @@
+'use strict';
+// B.2.3.6 String.prototype.fixed()
+require('./_string-html')('fixed', function(createHTML){
+ return function fixed(){
+ return createHTML(this, 'tt', '', '');
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.string.fontcolor.js b/node_modules/babel-register/node_modules/core-js/modules/es6.string.fontcolor.js
new file mode 100644
index 0000000..d40711f
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.string.fontcolor.js
@@ -0,0 +1,7 @@
+'use strict';
+// B.2.3.7 String.prototype.fontcolor(color)
+require('./_string-html')('fontcolor', function(createHTML){
+ return function fontcolor(color){
+ return createHTML(this, 'font', 'color', color);
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.string.fontsize.js b/node_modules/babel-register/node_modules/core-js/modules/es6.string.fontsize.js
new file mode 100644
index 0000000..ba3ff98
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.string.fontsize.js
@@ -0,0 +1,7 @@
+'use strict';
+// B.2.3.8 String.prototype.fontsize(size)
+require('./_string-html')('fontsize', function(createHTML){
+ return function fontsize(size){
+ return createHTML(this, 'font', 'size', size);
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.string.from-code-point.js b/node_modules/babel-register/node_modules/core-js/modules/es6.string.from-code-point.js
new file mode 100644
index 0000000..c8776d8
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.string.from-code-point.js
@@ -0,0 +1,23 @@
+var $export = require('./_export')
+ , toIndex = require('./_to-index')
+ , fromCharCode = String.fromCharCode
+ , $fromCodePoint = String.fromCodePoint;
+
+// length should be 1, old FF problem
+$export($export.S + $export.F * (!!$fromCodePoint && $fromCodePoint.length != 1), 'String', {
+ // 21.1.2.2 String.fromCodePoint(...codePoints)
+ fromCodePoint: function fromCodePoint(x){ // eslint-disable-line no-unused-vars
+ var res = []
+ , aLen = arguments.length
+ , i = 0
+ , code;
+ while(aLen > i){
+ code = +arguments[i++];
+ if(toIndex(code, 0x10ffff) !== code)throw RangeError(code + ' is not a valid code point');
+ res.push(code < 0x10000
+ ? fromCharCode(code)
+ : fromCharCode(((code -= 0x10000) >> 10) + 0xd800, code % 0x400 + 0xdc00)
+ );
+ } return res.join('');
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.string.includes.js b/node_modules/babel-register/node_modules/core-js/modules/es6.string.includes.js
new file mode 100644
index 0000000..c6b4ee2
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.string.includes.js
@@ -0,0 +1,12 @@
+// 21.1.3.7 String.prototype.includes(searchString, position = 0)
+'use strict';
+var $export = require('./_export')
+ , context = require('./_string-context')
+ , INCLUDES = 'includes';
+
+$export($export.P + $export.F * require('./_fails-is-regexp')(INCLUDES), 'String', {
+ includes: function includes(searchString /*, position = 0 */){
+ return !!~context(this, searchString, INCLUDES)
+ .indexOf(searchString, arguments.length > 1 ? arguments[1] : undefined);
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.string.italics.js b/node_modules/babel-register/node_modules/core-js/modules/es6.string.italics.js
new file mode 100644
index 0000000..d33efd3
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.string.italics.js
@@ -0,0 +1,7 @@
+'use strict';
+// B.2.3.9 String.prototype.italics()
+require('./_string-html')('italics', function(createHTML){
+ return function italics(){
+ return createHTML(this, 'i', '', '');
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.string.iterator.js b/node_modules/babel-register/node_modules/core-js/modules/es6.string.iterator.js
new file mode 100644
index 0000000..ac391ee
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.string.iterator.js
@@ -0,0 +1,17 @@
+'use strict';
+var $at = require('./_string-at')(true);
+
+// 21.1.3.27 String.prototype[@@iterator]()
+require('./_iter-define')(String, 'String', function(iterated){
+ this._t = String(iterated); // target
+ this._i = 0; // next index
+// 21.1.5.2.1 %StringIteratorPrototype%.next()
+}, function(){
+ var O = this._t
+ , index = this._i
+ , point;
+ if(index >= O.length)return {value: undefined, done: true};
+ point = $at(O, index);
+ this._i += point.length;
+ return {value: point, done: false};
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.string.link.js b/node_modules/babel-register/node_modules/core-js/modules/es6.string.link.js
new file mode 100644
index 0000000..6a75c18
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.string.link.js
@@ -0,0 +1,7 @@
+'use strict';
+// B.2.3.10 String.prototype.link(url)
+require('./_string-html')('link', function(createHTML){
+ return function link(url){
+ return createHTML(this, 'a', 'href', url);
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.string.raw.js b/node_modules/babel-register/node_modules/core-js/modules/es6.string.raw.js
new file mode 100644
index 0000000..1016acf
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.string.raw.js
@@ -0,0 +1,18 @@
+var $export = require('./_export')
+ , toIObject = require('./_to-iobject')
+ , toLength = require('./_to-length');
+
+$export($export.S, 'String', {
+ // 21.1.2.4 String.raw(callSite, ...substitutions)
+ raw: function raw(callSite){
+ var tpl = toIObject(callSite.raw)
+ , len = toLength(tpl.length)
+ , aLen = arguments.length
+ , res = []
+ , i = 0;
+ while(len > i){
+ res.push(String(tpl[i++]));
+ if(i < aLen)res.push(String(arguments[i]));
+ } return res.join('');
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.string.repeat.js b/node_modules/babel-register/node_modules/core-js/modules/es6.string.repeat.js
new file mode 100644
index 0000000..a054222
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.string.repeat.js
@@ -0,0 +1,6 @@
+var $export = require('./_export');
+
+$export($export.P, 'String', {
+ // 21.1.3.13 String.prototype.repeat(count)
+ repeat: require('./_string-repeat')
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.string.small.js b/node_modules/babel-register/node_modules/core-js/modules/es6.string.small.js
new file mode 100644
index 0000000..51b1b30
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.string.small.js
@@ -0,0 +1,7 @@
+'use strict';
+// B.2.3.11 String.prototype.small()
+require('./_string-html')('small', function(createHTML){
+ return function small(){
+ return createHTML(this, 'small', '', '');
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.string.starts-with.js b/node_modules/babel-register/node_modules/core-js/modules/es6.string.starts-with.js
new file mode 100644
index 0000000..017805f
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.string.starts-with.js
@@ -0,0 +1,18 @@
+// 21.1.3.18 String.prototype.startsWith(searchString [, position ])
+'use strict';
+var $export = require('./_export')
+ , toLength = require('./_to-length')
+ , context = require('./_string-context')
+ , STARTS_WITH = 'startsWith'
+ , $startsWith = ''[STARTS_WITH];
+
+$export($export.P + $export.F * require('./_fails-is-regexp')(STARTS_WITH), 'String', {
+ startsWith: function startsWith(searchString /*, position = 0 */){
+ var that = context(this, searchString, STARTS_WITH)
+ , index = toLength(Math.min(arguments.length > 1 ? arguments[1] : undefined, that.length))
+ , search = String(searchString);
+ return $startsWith
+ ? $startsWith.call(that, search, index)
+ : that.slice(index, index + search.length) === search;
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.string.strike.js b/node_modules/babel-register/node_modules/core-js/modules/es6.string.strike.js
new file mode 100644
index 0000000..c6287d3
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.string.strike.js
@@ -0,0 +1,7 @@
+'use strict';
+// B.2.3.12 String.prototype.strike()
+require('./_string-html')('strike', function(createHTML){
+ return function strike(){
+ return createHTML(this, 'strike', '', '');
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.string.sub.js b/node_modules/babel-register/node_modules/core-js/modules/es6.string.sub.js
new file mode 100644
index 0000000..ee18ea7
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.string.sub.js
@@ -0,0 +1,7 @@
+'use strict';
+// B.2.3.13 String.prototype.sub()
+require('./_string-html')('sub', function(createHTML){
+ return function sub(){
+ return createHTML(this, 'sub', '', '');
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.string.sup.js b/node_modules/babel-register/node_modules/core-js/modules/es6.string.sup.js
new file mode 100644
index 0000000..a342998
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.string.sup.js
@@ -0,0 +1,7 @@
+'use strict';
+// B.2.3.14 String.prototype.sup()
+require('./_string-html')('sup', function(createHTML){
+ return function sup(){
+ return createHTML(this, 'sup', '', '');
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.string.trim.js b/node_modules/babel-register/node_modules/core-js/modules/es6.string.trim.js
new file mode 100644
index 0000000..35f0fb0
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.string.trim.js
@@ -0,0 +1,7 @@
+'use strict';
+// 21.1.3.25 String.prototype.trim()
+require('./_string-trim')('trim', function($trim){
+ return function trim(){
+ return $trim(this, 3);
+ };
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.symbol.js b/node_modules/babel-register/node_modules/core-js/modules/es6.symbol.js
new file mode 100644
index 0000000..de9f295
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.symbol.js
@@ -0,0 +1,235 @@
+'use strict';
+// ECMAScript 6 symbols shim
+var global = require('./_global')
+ , core = require('./_core')
+ , has = require('./_has')
+ , DESCRIPTORS = require('./_descriptors')
+ , $export = require('./_export')
+ , redefine = require('./_redefine')
+ , META = require('./_meta').KEY
+ , $fails = require('./_fails')
+ , shared = require('./_shared')
+ , setToStringTag = require('./_set-to-string-tag')
+ , uid = require('./_uid')
+ , wks = require('./_wks')
+ , keyOf = require('./_keyof')
+ , enumKeys = require('./_enum-keys')
+ , isArray = require('./_is-array')
+ , anObject = require('./_an-object')
+ , toIObject = require('./_to-iobject')
+ , toPrimitive = require('./_to-primitive')
+ , createDesc = require('./_property-desc')
+ , _create = require('./_object-create')
+ , gOPNExt = require('./_object-gopn-ext')
+ , $GOPD = require('./_object-gopd')
+ , $DP = require('./_object-dp')
+ , gOPD = $GOPD.f
+ , dP = $DP.f
+ , gOPN = gOPNExt.f
+ , $Symbol = global.Symbol
+ , $JSON = global.JSON
+ , _stringify = $JSON && $JSON.stringify
+ , setter = false
+ , PROTOTYPE = 'prototype'
+ , HIDDEN = wks('_hidden')
+ , TO_PRIMITIVE = wks('toPrimitive')
+ , isEnum = {}.propertyIsEnumerable
+ , SymbolRegistry = shared('symbol-registry')
+ , AllSymbols = shared('symbols')
+ , ObjectProto = Object[PROTOTYPE]
+ , USE_NATIVE = typeof $Symbol == 'function'
+ , QObject = global.QObject;
+
+// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687
+var setSymbolDesc = DESCRIPTORS && $fails(function(){
+ return _create(dP({}, 'a', {
+ get: function(){ return dP(this, 'a', {value: 7}).a; }
+ })).a != 7;
+}) ? function(it, key, D){
+ var protoDesc = gOPD(ObjectProto, key);
+ if(protoDesc)delete ObjectProto[key];
+ dP(it, key, D);
+ if(protoDesc && it !== ObjectProto)dP(ObjectProto, key, protoDesc);
+} : dP;
+
+var wrap = function(tag){
+ var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);
+ sym._k = tag;
+ DESCRIPTORS && setter && setSymbolDesc(ObjectProto, tag, {
+ configurable: true,
+ set: function(value){
+ if(has(this, HIDDEN) && has(this[HIDDEN], tag))this[HIDDEN][tag] = false;
+ setSymbolDesc(this, tag, createDesc(1, value));
+ }
+ });
+ return sym;
+};
+
+var isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function(it){
+ return typeof it == 'symbol';
+} : function(it){
+ return it instanceof $Symbol;
+};
+
+var $defineProperty = function defineProperty(it, key, D){
+ anObject(it);
+ key = toPrimitive(key, true);
+ anObject(D);
+ if(has(AllSymbols, key)){
+ if(!D.enumerable){
+ if(!has(it, HIDDEN))dP(it, HIDDEN, createDesc(1, {}));
+ it[HIDDEN][key] = true;
+ } else {
+ if(has(it, HIDDEN) && it[HIDDEN][key])it[HIDDEN][key] = false;
+ D = _create(D, {enumerable: createDesc(0, false)});
+ } return setSymbolDesc(it, key, D);
+ } return dP(it, key, D);
+};
+var $defineProperties = function defineProperties(it, P){
+ anObject(it);
+ var keys = enumKeys(P = toIObject(P))
+ , i = 0
+ , l = keys.length
+ , key;
+ while(l > i)$defineProperty(it, key = keys[i++], P[key]);
+ return it;
+};
+var $create = function create(it, P){
+ return P === undefined ? _create(it) : $defineProperties(_create(it), P);
+};
+var $propertyIsEnumerable = function propertyIsEnumerable(key){
+ var E = isEnum.call(this, key = toPrimitive(key, true));
+ return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;
+};
+var $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key){
+ var D = gOPD(it = toIObject(it), key = toPrimitive(key, true));
+ if(D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key]))D.enumerable = true;
+ return D;
+};
+var $getOwnPropertyNames = function getOwnPropertyNames(it){
+ var names = gOPN(toIObject(it))
+ , result = []
+ , i = 0
+ , key;
+ while(names.length > i)if(!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META)result.push(key);
+ return result;
+};
+var $getOwnPropertySymbols = function getOwnPropertySymbols(it){
+ var names = gOPN(toIObject(it))
+ , result = []
+ , i = 0
+ , key;
+ while(names.length > i)if(has(AllSymbols, key = names[i++]))result.push(AllSymbols[key]);
+ return result;
+};
+var $stringify = function stringify(it){
+ if(it === undefined || isSymbol(it))return; // IE8 returns string on undefined
+ var args = [it]
+ , i = 1
+ , replacer, $replacer;
+ while(arguments.length > i)args.push(arguments[i++]);
+ replacer = args[1];
+ if(typeof replacer == 'function')$replacer = replacer;
+ if($replacer || !isArray(replacer))replacer = function(key, value){
+ if($replacer)value = $replacer.call(this, key, value);
+ if(!isSymbol(value))return value;
+ };
+ args[1] = replacer;
+ return _stringify.apply($JSON, args);
+};
+var BUGGY_JSON = $fails(function(){
+ var S = $Symbol();
+ // MS Edge converts symbol values to JSON as {}
+ // WebKit converts symbol values to JSON as null
+ // V8 throws on boxed symbols
+ return _stringify([S]) != '[null]' || _stringify({a: S}) != '{}' || _stringify(Object(S)) != '{}';
+});
+
+// 19.4.1.1 Symbol([description])
+if(!USE_NATIVE){
+ $Symbol = function Symbol(){
+ if(this instanceof $Symbol)throw TypeError('Symbol is not a constructor!');
+ return wrap(uid(arguments.length > 0 ? arguments[0] : undefined));
+ };
+ redefine($Symbol[PROTOTYPE], 'toString', function toString(){
+ return this._k;
+ });
+
+ $GOPD.f = $getOwnPropertyDescriptor;
+ $DP.f = $defineProperty;
+ require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;
+ require('./_object-pie').f = $propertyIsEnumerable
+ require('./_object-gops').f = $getOwnPropertySymbols;
+
+ if(DESCRIPTORS && !require('./_library')){
+ redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);
+ }
+}
+
+$export($export.G + $export.W + $export.F * !USE_NATIVE, {Symbol: $Symbol});
+
+// 19.4.2.2 Symbol.hasInstance
+// 19.4.2.3 Symbol.isConcatSpreadable
+// 19.4.2.4 Symbol.iterator
+// 19.4.2.6 Symbol.match
+// 19.4.2.8 Symbol.replace
+// 19.4.2.9 Symbol.search
+// 19.4.2.10 Symbol.species
+// 19.4.2.11 Symbol.split
+// 19.4.2.12 Symbol.toPrimitive
+// 19.4.2.13 Symbol.toStringTag
+// 19.4.2.14 Symbol.unscopables
+for(var symbols = (
+ 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'
+).split(','), i = 0; symbols.length > i; ){
+ var key = symbols[i++]
+ , Wrapper = core.Symbol
+ , sym = wks(key);
+ if(!(key in Wrapper))dP(Wrapper, key, {value: USE_NATIVE ? sym : wrap(sym)});
+};
+
+// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173
+if(!QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild)setter = true;
+
+$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {
+ // 19.4.2.1 Symbol.for(key)
+ 'for': function(key){
+ return has(SymbolRegistry, key += '')
+ ? SymbolRegistry[key]
+ : SymbolRegistry[key] = $Symbol(key);
+ },
+ // 19.4.2.5 Symbol.keyFor(sym)
+ keyFor: function keyFor(key){
+ if(isSymbol(key))return keyOf(SymbolRegistry, key);
+ throw TypeError(key + ' is not a symbol!');
+ },
+ useSetter: function(){ setter = true; },
+ useSimple: function(){ setter = false; }
+});
+
+$export($export.S + $export.F * !USE_NATIVE, 'Object', {
+ // 19.1.2.2 Object.create(O [, Properties])
+ create: $create,
+ // 19.1.2.4 Object.defineProperty(O, P, Attributes)
+ defineProperty: $defineProperty,
+ // 19.1.2.3 Object.defineProperties(O, Properties)
+ defineProperties: $defineProperties,
+ // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)
+ getOwnPropertyDescriptor: $getOwnPropertyDescriptor,
+ // 19.1.2.7 Object.getOwnPropertyNames(O)
+ getOwnPropertyNames: $getOwnPropertyNames,
+ // 19.1.2.8 Object.getOwnPropertySymbols(O)
+ getOwnPropertySymbols: $getOwnPropertySymbols
+});
+
+// 24.3.2 JSON.stringify(value [, replacer [, space]])
+$JSON && $export($export.S + $export.F * (!USE_NATIVE || BUGGY_JSON), 'JSON', {stringify: $stringify});
+
+// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)
+$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);
+// 19.4.3.5 Symbol.prototype[@@toStringTag]
+setToStringTag($Symbol, 'Symbol');
+// 20.2.1.9 Math[@@toStringTag]
+setToStringTag(Math, 'Math', true);
+// 24.3.3 JSON[@@toStringTag]
+setToStringTag(global.JSON, 'JSON', true);
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.typed.array-buffer.js b/node_modules/babel-register/node_modules/core-js/modules/es6.typed.array-buffer.js
new file mode 100644
index 0000000..c7119a8
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.typed.array-buffer.js
@@ -0,0 +1,47 @@
+'use strict';
+var $export = require('./_export')
+ , $typed = require('./_typed')
+ , buffer = require('./_typed-buffer')
+ , anObject = require('./_an-object')
+ , toIndex = require('./_to-index')
+ , toLength = require('./_to-length')
+ , isObject = require('./_is-object')
+ , TYPED_ARRAY = require('./_wks')('typed_array')
+ , ArrayBuffer = require('./_global').ArrayBuffer
+ , speciesConstructor = require('./_species-constructor')
+ , $ArrayBuffer = buffer.ArrayBuffer
+ , $DataView = buffer.DataView
+ , $isView = $typed.ABV && ArrayBuffer.isView
+ , $slice = $ArrayBuffer.prototype.slice
+ , VIEW = $typed.VIEW
+ , ARRAY_BUFFER = 'ArrayBuffer';
+
+$export($export.G + $export.W + $export.F * (ArrayBuffer !== $ArrayBuffer), {ArrayBuffer: $ArrayBuffer});
+
+$export($export.S + $export.F * !$typed.CONSTR, ARRAY_BUFFER, {
+ // 24.1.3.1 ArrayBuffer.isView(arg)
+ isView: function isView(it){
+ return $isView && $isView(it) || isObject(it) && VIEW in it;
+ }
+});
+
+$export($export.P + $export.U + $export.F * require('./_fails')(function(){
+ return !new $ArrayBuffer(2).slice(1, undefined).byteLength;
+}), ARRAY_BUFFER, {
+ // 24.1.4.3 ArrayBuffer.prototype.slice(start, end)
+ slice: function slice(start, end){
+ if($slice !== undefined && end === undefined)return $slice.call(anObject(this), start); // FF fix
+ var len = anObject(this).byteLength
+ , first = toIndex(start, len)
+ , final = toIndex(end === undefined ? len : end, len)
+ , result = new (speciesConstructor(this, $ArrayBuffer))(toLength(final - first))
+ , viewS = new $DataView(this)
+ , viewT = new $DataView(result)
+ , index = 0;
+ while(first < final){
+ viewT.setUint8(index++, viewS.getUint8(first++));
+ } return result;
+ }
+});
+
+require('./_set-species')(ARRAY_BUFFER);
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.typed.data-view.js b/node_modules/babel-register/node_modules/core-js/modules/es6.typed.data-view.js
new file mode 100644
index 0000000..ee7b881
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.typed.data-view.js
@@ -0,0 +1,4 @@
+var $export = require('./_export');
+$export($export.G + $export.W + $export.F * !require('./_typed').ABV, {
+ DataView: require('./_typed-buffer').DataView
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.typed.float32-array.js b/node_modules/babel-register/node_modules/core-js/modules/es6.typed.float32-array.js
new file mode 100644
index 0000000..2c4c9a6
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.typed.float32-array.js
@@ -0,0 +1,5 @@
+require('./_typed-array')('Float32', 4, function(init){
+ return function Float32Array(data, byteOffset, length){
+ return init(this, data, byteOffset, length);
+ };
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.typed.float64-array.js b/node_modules/babel-register/node_modules/core-js/modules/es6.typed.float64-array.js
new file mode 100644
index 0000000..4b20257
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.typed.float64-array.js
@@ -0,0 +1,5 @@
+require('./_typed-array')('Float64', 8, function(init){
+ return function Float64Array(data, byteOffset, length){
+ return init(this, data, byteOffset, length);
+ };
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.typed.int16-array.js b/node_modules/babel-register/node_modules/core-js/modules/es6.typed.int16-array.js
new file mode 100644
index 0000000..d3f61c5
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.typed.int16-array.js
@@ -0,0 +1,5 @@
+require('./_typed-array')('Int16', 2, function(init){
+ return function Int16Array(data, byteOffset, length){
+ return init(this, data, byteOffset, length);
+ };
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.typed.int32-array.js b/node_modules/babel-register/node_modules/core-js/modules/es6.typed.int32-array.js
new file mode 100644
index 0000000..df47c1b
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.typed.int32-array.js
@@ -0,0 +1,5 @@
+require('./_typed-array')('Int32', 4, function(init){
+ return function Int32Array(data, byteOffset, length){
+ return init(this, data, byteOffset, length);
+ };
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.typed.int8-array.js b/node_modules/babel-register/node_modules/core-js/modules/es6.typed.int8-array.js
new file mode 100644
index 0000000..da4dbf0
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.typed.int8-array.js
@@ -0,0 +1,5 @@
+require('./_typed-array')('Int8', 1, function(init){
+ return function Int8Array(data, byteOffset, length){
+ return init(this, data, byteOffset, length);
+ };
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.typed.uint16-array.js b/node_modules/babel-register/node_modules/core-js/modules/es6.typed.uint16-array.js
new file mode 100644
index 0000000..cb33577
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.typed.uint16-array.js
@@ -0,0 +1,5 @@
+require('./_typed-array')('Uint16', 2, function(init){
+ return function Uint16Array(data, byteOffset, length){
+ return init(this, data, byteOffset, length);
+ };
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.typed.uint32-array.js b/node_modules/babel-register/node_modules/core-js/modules/es6.typed.uint32-array.js
new file mode 100644
index 0000000..41c9e7b
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.typed.uint32-array.js
@@ -0,0 +1,5 @@
+require('./_typed-array')('Uint32', 4, function(init){
+ return function Uint32Array(data, byteOffset, length){
+ return init(this, data, byteOffset, length);
+ };
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.typed.uint8-array.js b/node_modules/babel-register/node_modules/core-js/modules/es6.typed.uint8-array.js
new file mode 100644
index 0000000..f794f86
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.typed.uint8-array.js
@@ -0,0 +1,5 @@
+require('./_typed-array')('Uint8', 1, function(init){
+ return function Uint8Array(data, byteOffset, length){
+ return init(this, data, byteOffset, length);
+ };
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.typed.uint8-clamped-array.js b/node_modules/babel-register/node_modules/core-js/modules/es6.typed.uint8-clamped-array.js
new file mode 100644
index 0000000..b123047
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.typed.uint8-clamped-array.js
@@ -0,0 +1,5 @@
+require('./_typed-array')('Uint8', 1, function(init){
+ return function Uint8ClampedArray(data, byteOffset, length){
+ return init(this, data, byteOffset, length);
+ };
+}, true);
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.weak-map.js b/node_modules/babel-register/node_modules/core-js/modules/es6.weak-map.js
new file mode 100644
index 0000000..431ac56
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.weak-map.js
@@ -0,0 +1,57 @@
+'use strict';
+var each = require('./_array-methods')(0)
+ , redefine = require('./_redefine')
+ , meta = require('./_meta')
+ , assign = require('./_object-assign')
+ , weak = require('./_collection-weak')
+ , isObject = require('./_is-object')
+ , has = require('./_has')
+ , getWeak = meta.getWeak
+ , isExtensible = Object.isExtensible
+ , uncaughtFrozenStore = weak.ufstore
+ , tmp = {}
+ , InternalMap;
+
+var wrapper = function(get){
+ return function WeakMap(){
+ return get(this, arguments.length > 0 ? arguments[0] : undefined);
+ };
+};
+
+var methods = {
+ // 23.3.3.3 WeakMap.prototype.get(key)
+ get: function get(key){
+ if(isObject(key)){
+ var data = getWeak(key);
+ if(data === true)return uncaughtFrozenStore(this).get(key);
+ return data ? data[this._i] : undefined;
+ }
+ },
+ // 23.3.3.5 WeakMap.prototype.set(key, value)
+ set: function set(key, value){
+ return weak.def(this, key, value);
+ }
+};
+
+// 23.3 WeakMap Objects
+var $WeakMap = module.exports = require('./_collection')('WeakMap', wrapper, methods, weak, true, true);
+
+// IE11 WeakMap frozen keys fix
+if(new $WeakMap().set((Object.freeze || Object)(tmp), 7).get(tmp) != 7){
+ InternalMap = weak.getConstructor(wrapper);
+ assign(InternalMap.prototype, methods);
+ meta.NEED = true;
+ each(['delete', 'has', 'get', 'set'], function(key){
+ var proto = $WeakMap.prototype
+ , method = proto[key];
+ redefine(proto, key, function(a, b){
+ // store frozen objects on internal weakmap shim
+ if(isObject(a) && !isExtensible(a)){
+ if(!this._f)this._f = new InternalMap;
+ var result = this._f[key](a, b);
+ return key == 'set' ? this : result;
+ // store all the rest on native weakmap
+ } return method.call(this, a, b);
+ });
+ });
+}
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es6.weak-set.js b/node_modules/babel-register/node_modules/core-js/modules/es6.weak-set.js
new file mode 100644
index 0000000..77d01b6
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es6.weak-set.js
@@ -0,0 +1,12 @@
+'use strict';
+var weak = require('./_collection-weak');
+
+// 23.4 WeakSet Objects
+require('./_collection')('WeakSet', function(get){
+ return function WeakSet(){ return get(this, arguments.length > 0 ? arguments[0] : undefined); };
+}, {
+ // 23.4.3.1 WeakSet.prototype.add(value)
+ add: function add(value){
+ return weak.def(this, value, true);
+ }
+}, weak, false, true);
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es7.array.includes.js b/node_modules/babel-register/node_modules/core-js/modules/es7.array.includes.js
new file mode 100644
index 0000000..6d5b009
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es7.array.includes.js
@@ -0,0 +1,12 @@
+'use strict';
+// https://github.com/tc39/Array.prototype.includes
+var $export = require('./_export')
+ , $includes = require('./_array-includes')(true);
+
+$export($export.P, 'Array', {
+ includes: function includes(el /*, fromIndex = 0 */){
+ return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);
+ }
+});
+
+require('./_add-to-unscopables')('includes');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es7.error.is-error.js b/node_modules/babel-register/node_modules/core-js/modules/es7.error.is-error.js
new file mode 100644
index 0000000..d6fe29d
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es7.error.is-error.js
@@ -0,0 +1,9 @@
+// https://github.com/ljharb/proposal-is-error
+var $export = require('./_export')
+ , cof = require('./_cof');
+
+$export($export.S, 'Error', {
+ isError: function isError(it){
+ return cof(it) === 'Error';
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es7.map.to-json.js b/node_modules/babel-register/node_modules/core-js/modules/es7.map.to-json.js
new file mode 100644
index 0000000..19f9b6d
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es7.map.to-json.js
@@ -0,0 +1,4 @@
+// https://github.com/DavidBruant/Map-Set.prototype.toJSON
+var $export = require('./_export');
+
+$export($export.P + $export.R, 'Map', {toJSON: require('./_collection-to-json')('Map')});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es7.math.iaddh.js b/node_modules/babel-register/node_modules/core-js/modules/es7.math.iaddh.js
new file mode 100644
index 0000000..bb3f3d3
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es7.math.iaddh.js
@@ -0,0 +1,11 @@
+// https://gist.github.com/BrendanEich/4294d5c212a6d2254703
+var $export = require('./_export');
+
+$export($export.S, 'Math', {
+ iaddh: function iaddh(x0, x1, y0, y1){
+ var $x0 = x0 >>> 0
+ , $x1 = x1 >>> 0
+ , $y0 = y0 >>> 0;
+ return $x1 + (y1 >>> 0) + (($x0 & $y0 | ($x0 | $y0) & ~($x0 + $y0 >>> 0)) >>> 31) | 0;
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es7.math.imulh.js b/node_modules/babel-register/node_modules/core-js/modules/es7.math.imulh.js
new file mode 100644
index 0000000..a25da68
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es7.math.imulh.js
@@ -0,0 +1,16 @@
+// https://gist.github.com/BrendanEich/4294d5c212a6d2254703
+var $export = require('./_export');
+
+$export($export.S, 'Math', {
+ imulh: function imulh(u, v){
+ var UINT16 = 0xffff
+ , $u = +u
+ , $v = +v
+ , u0 = $u & UINT16
+ , v0 = $v & UINT16
+ , u1 = $u >> 16
+ , v1 = $v >> 16
+ , t = (u1 * v0 >>> 0) + (u0 * v0 >>> 16);
+ return u1 * v1 + (t >> 16) + ((u0 * v1 >>> 0) + (t & UINT16) >> 16);
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es7.math.isubh.js b/node_modules/babel-register/node_modules/core-js/modules/es7.math.isubh.js
new file mode 100644
index 0000000..3814dc2
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es7.math.isubh.js
@@ -0,0 +1,11 @@
+// https://gist.github.com/BrendanEich/4294d5c212a6d2254703
+var $export = require('./_export');
+
+$export($export.S, 'Math', {
+ isubh: function isubh(x0, x1, y0, y1){
+ var $x0 = x0 >>> 0
+ , $x1 = x1 >>> 0
+ , $y0 = y0 >>> 0;
+ return $x1 - (y1 >>> 0) - ((~$x0 & $y0 | ~($x0 ^ $y0) & $x0 - $y0 >>> 0) >>> 31) | 0;
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es7.math.umulh.js b/node_modules/babel-register/node_modules/core-js/modules/es7.math.umulh.js
new file mode 100644
index 0000000..0d22cf1
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es7.math.umulh.js
@@ -0,0 +1,16 @@
+// https://gist.github.com/BrendanEich/4294d5c212a6d2254703
+var $export = require('./_export');
+
+$export($export.S, 'Math', {
+ umulh: function umulh(u, v){
+ var UINT16 = 0xffff
+ , $u = +u
+ , $v = +v
+ , u0 = $u & UINT16
+ , v0 = $v & UINT16
+ , u1 = $u >>> 16
+ , v1 = $v >>> 16
+ , t = (u1 * v0 >>> 0) + (u0 * v0 >>> 16);
+ return u1 * v1 + (t >>> 16) + ((u0 * v1 >>> 0) + (t & UINT16) >>> 16);
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es7.object.define-getter.js b/node_modules/babel-register/node_modules/core-js/modules/es7.object.define-getter.js
new file mode 100644
index 0000000..dd9602c
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es7.object.define-getter.js
@@ -0,0 +1,12 @@
+'use strict';
+var $export = require('./_export')
+ , toObject = require('./_to-object')
+ , aFunction = require('./_a-function')
+ , $defineProperty = require('./_object-dp');
+
+// B.2.2.2 Object.prototype.__defineGetter__(P, getter)
+require('./_descriptors') && $export($export.P + require('./_object-forced-pam'), 'Object', {
+ __defineGetter__: function __defineGetter__(P, getter){
+ $defineProperty.f(toObject(this), P, {get: aFunction(getter), enumerable: true, configurable: true});
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es7.object.define-setter.js b/node_modules/babel-register/node_modules/core-js/modules/es7.object.define-setter.js
new file mode 100644
index 0000000..d6c24c1
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es7.object.define-setter.js
@@ -0,0 +1,12 @@
+'use strict';
+var $export = require('./_export')
+ , toObject = require('./_to-object')
+ , aFunction = require('./_a-function')
+ , $defineProperty = require('./_object-dp');
+
+// B.2.2.3 Object.prototype.__defineSetter__(P, setter)
+require('./_descriptors') && $export($export.P + require('./_object-forced-pam'), 'Object', {
+ __defineSetter__: function __defineSetter__(P, setter){
+ $defineProperty.f(toObject(this), P, {set: aFunction(setter), enumerable: true, configurable: true});
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es7.object.entries.js b/node_modules/babel-register/node_modules/core-js/modules/es7.object.entries.js
new file mode 100644
index 0000000..cfc049d
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es7.object.entries.js
@@ -0,0 +1,9 @@
+// https://github.com/tc39/proposal-object-values-entries
+var $export = require('./_export')
+ , $entries = require('./_object-to-array')(true);
+
+$export($export.S, 'Object', {
+ entries: function entries(it){
+ return $entries(it);
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es7.object.get-own-property-descriptors.js b/node_modules/babel-register/node_modules/core-js/modules/es7.object.get-own-property-descriptors.js
new file mode 100644
index 0000000..c17c08b
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es7.object.get-own-property-descriptors.js
@@ -0,0 +1,23 @@
+// https://github.com/tc39/proposal-object-getownpropertydescriptors
+var $export = require('./_export')
+ , ownKeys = require('./_own-keys')
+ , toIObject = require('./_to-iobject')
+ , createDesc = require('./_property-desc')
+ , gOPD = require('./_object-gopd')
+ , dP = require('./_object-dp');
+
+$export($export.S, 'Object', {
+ getOwnPropertyDescriptors: function getOwnPropertyDescriptors(object){
+ var O = toIObject(object)
+ , getDesc = gOPD.f
+ , keys = ownKeys(O)
+ , result = {}
+ , i = 0
+ , key, D;
+ while(keys.length > i){
+ D = getDesc(O, key = keys[i++]);
+ if(key in result)dP.f(result, key, createDesc(0, D));
+ else result[key] = D;
+ } return result;
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es7.object.lookup-getter.js b/node_modules/babel-register/node_modules/core-js/modules/es7.object.lookup-getter.js
new file mode 100644
index 0000000..e0350fd
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es7.object.lookup-getter.js
@@ -0,0 +1,18 @@
+'use strict';
+var $export = require('./_export')
+ , toObject = require('./_to-object')
+ , toPrimitive = require('./_to-primitive')
+ , getPrototypeOf = require('./_object-gpo')
+ , getOwnPropertyDescriptor = require('./_object-gopd').f;
+
+// B.2.2.4 Object.prototype.__lookupGetter__(P)
+require('./_descriptors') && $export($export.P + require('./_object-forced-pam'), 'Object', {
+ __lookupGetter__: function __lookupGetter__(P){
+ var O = toObject(this)
+ , K = toPrimitive(P, true)
+ , D;
+ do {
+ if(D = getOwnPropertyDescriptor(O, K))return D.get;
+ } while(O = getPrototypeOf(O));
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es7.object.lookup-setter.js b/node_modules/babel-register/node_modules/core-js/modules/es7.object.lookup-setter.js
new file mode 100644
index 0000000..0288cec
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es7.object.lookup-setter.js
@@ -0,0 +1,18 @@
+'use strict';
+var $export = require('./_export')
+ , toObject = require('./_to-object')
+ , toPrimitive = require('./_to-primitive')
+ , getPrototypeOf = require('./_object-gpo')
+ , getOwnPropertyDescriptor = require('./_object-gopd').f;
+
+// B.2.2.5 Object.prototype.__lookupSetter__(P)
+require('./_descriptors') && $export($export.P + require('./_object-forced-pam'), 'Object', {
+ __lookupSetter__: function __lookupSetter__(P){
+ var O = toObject(this)
+ , K = toPrimitive(P, true)
+ , D;
+ do {
+ if(D = getOwnPropertyDescriptor(O, K))return D.set;
+ } while(O = getPrototypeOf(O));
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es7.object.values.js b/node_modules/babel-register/node_modules/core-js/modules/es7.object.values.js
new file mode 100644
index 0000000..42abd64
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es7.object.values.js
@@ -0,0 +1,9 @@
+// https://github.com/tc39/proposal-object-values-entries
+var $export = require('./_export')
+ , $values = require('./_object-to-array')(false);
+
+$export($export.S, 'Object', {
+ values: function values(it){
+ return $values(it);
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es7.reflect.define-metadata.js b/node_modules/babel-register/node_modules/core-js/modules/es7.reflect.define-metadata.js
new file mode 100644
index 0000000..c833e43
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es7.reflect.define-metadata.js
@@ -0,0 +1,8 @@
+var metadata = require('./_metadata')
+ , anObject = require('./_an-object')
+ , toMetaKey = metadata.key
+ , ordinaryDefineOwnMetadata = metadata.set;
+
+metadata.exp({defineMetadata: function defineMetadata(metadataKey, metadataValue, target, targetKey){
+ ordinaryDefineOwnMetadata(metadataKey, metadataValue, anObject(target), toMetaKey(targetKey));
+}});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es7.reflect.delete-metadata.js b/node_modules/babel-register/node_modules/core-js/modules/es7.reflect.delete-metadata.js
new file mode 100644
index 0000000..8a8a825
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es7.reflect.delete-metadata.js
@@ -0,0 +1,15 @@
+var metadata = require('./_metadata')
+ , anObject = require('./_an-object')
+ , toMetaKey = metadata.key
+ , getOrCreateMetadataMap = metadata.map
+ , store = metadata.store;
+
+metadata.exp({deleteMetadata: function deleteMetadata(metadataKey, target /*, targetKey */){
+ var targetKey = arguments.length < 3 ? undefined : toMetaKey(arguments[2])
+ , metadataMap = getOrCreateMetadataMap(anObject(target), targetKey, false);
+ if(metadataMap === undefined || !metadataMap['delete'](metadataKey))return false;
+ if(metadataMap.size)return true;
+ var targetMetadata = store.get(target);
+ targetMetadata['delete'](targetKey);
+ return !!targetMetadata.size || store['delete'](target);
+}});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es7.reflect.get-metadata-keys.js b/node_modules/babel-register/node_modules/core-js/modules/es7.reflect.get-metadata-keys.js
new file mode 100644
index 0000000..58c4dcc
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es7.reflect.get-metadata-keys.js
@@ -0,0 +1,19 @@
+var Set = require('./es6.set')
+ , from = require('./_array-from-iterable')
+ , metadata = require('./_metadata')
+ , anObject = require('./_an-object')
+ , getPrototypeOf = require('./_object-gpo')
+ , ordinaryOwnMetadataKeys = metadata.keys
+ , toMetaKey = metadata.key;
+
+var ordinaryMetadataKeys = function(O, P){
+ var oKeys = ordinaryOwnMetadataKeys(O, P)
+ , parent = getPrototypeOf(O);
+ if(parent === null)return oKeys;
+ var pKeys = ordinaryMetadataKeys(parent, P);
+ return pKeys.length ? oKeys.length ? from(new Set(oKeys.concat(pKeys))) : pKeys : oKeys;
+};
+
+metadata.exp({getMetadataKeys: function getMetadataKeys(target /*, targetKey */){
+ return ordinaryMetadataKeys(anObject(target), arguments.length < 2 ? undefined : toMetaKey(arguments[1]));
+}});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es7.reflect.get-metadata.js b/node_modules/babel-register/node_modules/core-js/modules/es7.reflect.get-metadata.js
new file mode 100644
index 0000000..48cd9d6
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es7.reflect.get-metadata.js
@@ -0,0 +1,17 @@
+var metadata = require('./_metadata')
+ , anObject = require('./_an-object')
+ , getPrototypeOf = require('./_object-gpo')
+ , ordinaryHasOwnMetadata = metadata.has
+ , ordinaryGetOwnMetadata = metadata.get
+ , toMetaKey = metadata.key;
+
+var ordinaryGetMetadata = function(MetadataKey, O, P){
+ var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P);
+ if(hasOwn)return ordinaryGetOwnMetadata(MetadataKey, O, P);
+ var parent = getPrototypeOf(O);
+ return parent !== null ? ordinaryGetMetadata(MetadataKey, parent, P) : undefined;
+};
+
+metadata.exp({getMetadata: function getMetadata(metadataKey, target /*, targetKey */){
+ return ordinaryGetMetadata(metadataKey, anObject(target), arguments.length < 3 ? undefined : toMetaKey(arguments[2]));
+}});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es7.reflect.get-own-metadata-keys.js b/node_modules/babel-register/node_modules/core-js/modules/es7.reflect.get-own-metadata-keys.js
new file mode 100644
index 0000000..93ecfbe
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es7.reflect.get-own-metadata-keys.js
@@ -0,0 +1,8 @@
+var metadata = require('./_metadata')
+ , anObject = require('./_an-object')
+ , ordinaryOwnMetadataKeys = metadata.keys
+ , toMetaKey = metadata.key;
+
+metadata.exp({getOwnMetadataKeys: function getOwnMetadataKeys(target /*, targetKey */){
+ return ordinaryOwnMetadataKeys(anObject(target), arguments.length < 2 ? undefined : toMetaKey(arguments[1]));
+}});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es7.reflect.get-own-metadata.js b/node_modules/babel-register/node_modules/core-js/modules/es7.reflect.get-own-metadata.js
new file mode 100644
index 0000000..f1040f9
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es7.reflect.get-own-metadata.js
@@ -0,0 +1,9 @@
+var metadata = require('./_metadata')
+ , anObject = require('./_an-object')
+ , ordinaryGetOwnMetadata = metadata.get
+ , toMetaKey = metadata.key;
+
+metadata.exp({getOwnMetadata: function getOwnMetadata(metadataKey, target /*, targetKey */){
+ return ordinaryGetOwnMetadata(metadataKey, anObject(target)
+ , arguments.length < 3 ? undefined : toMetaKey(arguments[2]));
+}});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es7.reflect.has-metadata.js b/node_modules/babel-register/node_modules/core-js/modules/es7.reflect.has-metadata.js
new file mode 100644
index 0000000..0ff6378
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es7.reflect.has-metadata.js
@@ -0,0 +1,16 @@
+var metadata = require('./_metadata')
+ , anObject = require('./_an-object')
+ , getPrototypeOf = require('./_object-gpo')
+ , ordinaryHasOwnMetadata = metadata.has
+ , toMetaKey = metadata.key;
+
+var ordinaryHasMetadata = function(MetadataKey, O, P){
+ var hasOwn = ordinaryHasOwnMetadata(MetadataKey, O, P);
+ if(hasOwn)return true;
+ var parent = getPrototypeOf(O);
+ return parent !== null ? ordinaryHasMetadata(MetadataKey, parent, P) : false;
+};
+
+metadata.exp({hasMetadata: function hasMetadata(metadataKey, target /*, targetKey */){
+ return ordinaryHasMetadata(metadataKey, anObject(target), arguments.length < 3 ? undefined : toMetaKey(arguments[2]));
+}});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es7.reflect.has-own-metadata.js b/node_modules/babel-register/node_modules/core-js/modules/es7.reflect.has-own-metadata.js
new file mode 100644
index 0000000..d645ea3
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es7.reflect.has-own-metadata.js
@@ -0,0 +1,9 @@
+var metadata = require('./_metadata')
+ , anObject = require('./_an-object')
+ , ordinaryHasOwnMetadata = metadata.has
+ , toMetaKey = metadata.key;
+
+metadata.exp({hasOwnMetadata: function hasOwnMetadata(metadataKey, target /*, targetKey */){
+ return ordinaryHasOwnMetadata(metadataKey, anObject(target)
+ , arguments.length < 3 ? undefined : toMetaKey(arguments[2]));
+}});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es7.reflect.metadata.js b/node_modules/babel-register/node_modules/core-js/modules/es7.reflect.metadata.js
new file mode 100644
index 0000000..3a4e3ae
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es7.reflect.metadata.js
@@ -0,0 +1,15 @@
+var metadata = require('./_metadata')
+ , anObject = require('./_an-object')
+ , aFunction = require('./_a-function')
+ , toMetaKey = metadata.key
+ , ordinaryDefineOwnMetadata = metadata.set;
+
+metadata.exp({metadata: function metadata(metadataKey, metadataValue){
+ return function decorator(target, targetKey){
+ ordinaryDefineOwnMetadata(
+ metadataKey, metadataValue,
+ (targetKey !== undefined ? anObject : aFunction)(target),
+ toMetaKey(targetKey)
+ );
+ };
+}});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es7.set.to-json.js b/node_modules/babel-register/node_modules/core-js/modules/es7.set.to-json.js
new file mode 100644
index 0000000..fd68cb5
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es7.set.to-json.js
@@ -0,0 +1,4 @@
+// https://github.com/DavidBruant/Map-Set.prototype.toJSON
+var $export = require('./_export');
+
+$export($export.P + $export.R, 'Set', {toJSON: require('./_collection-to-json')('Set')});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es7.string.at.js b/node_modules/babel-register/node_modules/core-js/modules/es7.string.at.js
new file mode 100644
index 0000000..208654e
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es7.string.at.js
@@ -0,0 +1,10 @@
+'use strict';
+// https://github.com/mathiasbynens/String.prototype.at
+var $export = require('./_export')
+ , $at = require('./_string-at')(true);
+
+$export($export.P, 'String', {
+ at: function at(pos){
+ return $at(this, pos);
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es7.string.match-all.js b/node_modules/babel-register/node_modules/core-js/modules/es7.string.match-all.js
new file mode 100644
index 0000000..41fa7ba
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es7.string.match-all.js
@@ -0,0 +1,30 @@
+'use strict';
+// https://tc39.github.io/String.prototype.matchAll/
+var $export = require('./_export')
+ , defined = require('./_defined')
+ , toLength = require('./_to-length')
+ , isRegExp = require('./_is-regexp')
+ , getFlags = require('./_flags')
+ , RegExpProto = RegExp.prototype;
+
+var $RegExpStringIterator = function(regexp, string){
+ this._r = regexp;
+ this._s = string;
+};
+
+require('./_iter-create')($RegExpStringIterator, 'RegExp String', function next(){
+ var match = this._r.exec(this._s);
+ return {value: match, done: match === null};
+});
+
+$export($export.P, 'String', {
+ matchAll: function matchAll(regexp){
+ defined(this);
+ if(!isRegExp(regexp))throw TypeError(regexp + ' is not a regexp!');
+ var S = String(this)
+ , flags = 'flags' in RegExpProto ? String(regexp.flags) : getFlags.call(regexp)
+ , rx = new RegExp(regexp.source, ~flags.indexOf('g') ? flags : 'g' + flags);
+ rx.lastIndex = toLength(regexp.lastIndex);
+ return new $RegExpStringIterator(rx, S);
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es7.string.pad-end.js b/node_modules/babel-register/node_modules/core-js/modules/es7.string.pad-end.js
new file mode 100644
index 0000000..8483d82
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es7.string.pad-end.js
@@ -0,0 +1,10 @@
+'use strict';
+// https://github.com/tc39/proposal-string-pad-start-end
+var $export = require('./_export')
+ , $pad = require('./_string-pad');
+
+$export($export.P, 'String', {
+ padEnd: function padEnd(maxLength /*, fillString = ' ' */){
+ return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, false);
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es7.string.pad-start.js b/node_modules/babel-register/node_modules/core-js/modules/es7.string.pad-start.js
new file mode 100644
index 0000000..b79b605
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es7.string.pad-start.js
@@ -0,0 +1,10 @@
+'use strict';
+// https://github.com/tc39/proposal-string-pad-start-end
+var $export = require('./_export')
+ , $pad = require('./_string-pad');
+
+$export($export.P, 'String', {
+ padStart: function padStart(maxLength /*, fillString = ' ' */){
+ return $pad(this, maxLength, arguments.length > 1 ? arguments[1] : undefined, true);
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es7.string.trim-left.js b/node_modules/babel-register/node_modules/core-js/modules/es7.string.trim-left.js
new file mode 100644
index 0000000..e584577
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es7.string.trim-left.js
@@ -0,0 +1,7 @@
+'use strict';
+// https://github.com/sebmarkbage/ecmascript-string-left-right-trim
+require('./_string-trim')('trimLeft', function($trim){
+ return function trimLeft(){
+ return $trim(this, 1);
+ };
+}, 'trimStart');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es7.string.trim-right.js b/node_modules/babel-register/node_modules/core-js/modules/es7.string.trim-right.js
new file mode 100644
index 0000000..42a9ed3
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es7.string.trim-right.js
@@ -0,0 +1,7 @@
+'use strict';
+// https://github.com/sebmarkbage/ecmascript-string-left-right-trim
+require('./_string-trim')('trimRight', function($trim){
+ return function trimRight(){
+ return $trim(this, 2);
+ };
+}, 'trimEnd');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/es7.system.global.js b/node_modules/babel-register/node_modules/core-js/modules/es7.system.global.js
new file mode 100644
index 0000000..8c2ab82
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/es7.system.global.js
@@ -0,0 +1,4 @@
+// https://github.com/ljharb/proposal-global
+var $export = require('./_export');
+
+$export($export.S, 'System', {global: require('./_global')});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/library/_add-to-unscopables.js b/node_modules/babel-register/node_modules/core-js/modules/library/_add-to-unscopables.js
new file mode 100644
index 0000000..faf87af
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/library/_add-to-unscopables.js
@@ -0,0 +1 @@
+module.exports = function(){ /* empty */ };
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/library/_collection.js b/node_modules/babel-register/node_modules/core-js/modules/library/_collection.js
new file mode 100644
index 0000000..0bdd7fc
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/library/_collection.js
@@ -0,0 +1,59 @@
+'use strict';
+var global = require('./_global')
+ , $export = require('./_export')
+ , meta = require('./_meta')
+ , fails = require('./_fails')
+ , hide = require('./_hide')
+ , redefineAll = require('./_redefine-all')
+ , forOf = require('./_for-of')
+ , anInstance = require('./_an-instance')
+ , isObject = require('./_is-object')
+ , setToStringTag = require('./_set-to-string-tag')
+ , dP = require('./_object-dp').f
+ , each = require('./_array-methods')(0)
+ , DESCRIPTORS = require('./_descriptors');
+
+module.exports = function(NAME, wrapper, methods, common, IS_MAP, IS_WEAK){
+ var Base = global[NAME]
+ , C = Base
+ , ADDER = IS_MAP ? 'set' : 'add'
+ , proto = C && C.prototype
+ , O = {};
+ if(!DESCRIPTORS || typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function(){
+ new C().entries().next();
+ }))){
+ // create collection constructor
+ C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);
+ redefineAll(C.prototype, methods);
+ meta.NEED = true;
+ } else {
+ C = wrapper(function(target, iterable){
+ anInstance(target, C, NAME, '_c');
+ target._c = new Base;
+ if(iterable != undefined)forOf(iterable, IS_MAP, target[ADDER], target);
+ });
+ each('add,clear,delete,forEach,get,has,set,keys,values,entries,toJSON'.split(','),function(KEY){
+ var IS_ADDER = KEY == 'add' || KEY == 'set';
+ if(KEY in proto && !(IS_WEAK && KEY == 'clear'))hide(C.prototype, KEY, function(a, b){
+ anInstance(this, C, KEY);
+ if(!IS_ADDER && IS_WEAK && !isObject(a))return KEY == 'get' ? undefined : false;
+ var result = this._c[KEY](a === 0 ? 0 : a, b);
+ return IS_ADDER ? this : result;
+ });
+ });
+ if('size' in proto)dP(C.prototype, 'size', {
+ get: function(){
+ return this._c.size;
+ }
+ });
+ }
+
+ setToStringTag(C, NAME);
+
+ O[NAME] = C;
+ $export($export.G + $export.W + $export.F, O);
+
+ if(!IS_WEAK)common.setStrong(C, NAME, IS_MAP);
+
+ return C;
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/library/_export.js b/node_modules/babel-register/node_modules/core-js/modules/library/_export.js
new file mode 100644
index 0000000..dc084b4
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/library/_export.js
@@ -0,0 +1,61 @@
+var global = require('./_global')
+ , core = require('./_core')
+ , ctx = require('./_ctx')
+ , hide = require('./_hide')
+ , PROTOTYPE = 'prototype';
+
+var $export = function(type, name, source){
+ var IS_FORCED = type & $export.F
+ , IS_GLOBAL = type & $export.G
+ , IS_STATIC = type & $export.S
+ , IS_PROTO = type & $export.P
+ , IS_BIND = type & $export.B
+ , IS_WRAP = type & $export.W
+ , exports = IS_GLOBAL ? core : core[name] || (core[name] = {})
+ , expProto = exports[PROTOTYPE]
+ , target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE]
+ , key, own, out;
+ if(IS_GLOBAL)source = name;
+ for(key in source){
+ // contains in native
+ own = !IS_FORCED && target && target[key] !== undefined;
+ if(own && key in exports)continue;
+ // export native or passed
+ out = own ? target[key] : source[key];
+ // prevent global pollution for namespaces
+ exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]
+ // bind timers to global for call from export context
+ : IS_BIND && own ? ctx(out, global)
+ // wrap global constructors for prevent change them in library
+ : IS_WRAP && target[key] == out ? (function(C){
+ var F = function(a, b, c){
+ if(this instanceof C){
+ switch(arguments.length){
+ case 0: return new C;
+ case 1: return new C(a);
+ case 2: return new C(a, b);
+ } return new C(a, b, c);
+ } return C.apply(this, arguments);
+ };
+ F[PROTOTYPE] = C[PROTOTYPE];
+ return F;
+ // make static versions for prototype methods
+ })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;
+ // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%
+ if(IS_PROTO){
+ (exports.virtual || (exports.virtual = {}))[key] = out;
+ // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%
+ if(type & $export.R && expProto && !expProto[key])hide(expProto, key, out);
+ }
+ }
+};
+// type bitmap
+$export.F = 1; // forced
+$export.G = 2; // global
+$export.S = 4; // static
+$export.P = 8; // proto
+$export.B = 16; // bind
+$export.W = 32; // wrap
+$export.U = 64; // safe
+$export.R = 128; // real proto method for `library`
+module.exports = $export;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/library/_library.js b/node_modules/babel-register/node_modules/core-js/modules/library/_library.js
new file mode 100644
index 0000000..73f737c
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/library/_library.js
@@ -0,0 +1 @@
+module.exports = true;
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/library/_path.js b/node_modules/babel-register/node_modules/core-js/modules/library/_path.js
new file mode 100644
index 0000000..e2b878d
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/library/_path.js
@@ -0,0 +1 @@
+module.exports = require('./_core');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/library/_redefine-all.js b/node_modules/babel-register/node_modules/core-js/modules/library/_redefine-all.js
new file mode 100644
index 0000000..beeb2ea
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/library/_redefine-all.js
@@ -0,0 +1,7 @@
+var hide = require('./_hide');
+module.exports = function(target, src, safe){
+ for(var key in src){
+ if(safe && target[key])target[key] = src[key];
+ else hide(target, key, src[key]);
+ } return target;
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/library/_redefine.js b/node_modules/babel-register/node_modules/core-js/modules/library/_redefine.js
new file mode 100644
index 0000000..6bd6453
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/library/_redefine.js
@@ -0,0 +1 @@
+module.exports = require('./_hide');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/library/_set-species.js b/node_modules/babel-register/node_modules/core-js/modules/library/_set-species.js
new file mode 100644
index 0000000..4320fa5
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/library/_set-species.js
@@ -0,0 +1,14 @@
+'use strict';
+var global = require('./_global')
+ , core = require('./_core')
+ , dP = require('./_object-dp')
+ , DESCRIPTORS = require('./_descriptors')
+ , SPECIES = require('./_wks')('species');
+
+module.exports = function(KEY){
+ var C = typeof core[KEY] == 'function' ? core[KEY] : global[KEY];
+ if(DESCRIPTORS && C && !C[SPECIES])dP.f(C, SPECIES, {
+ configurable: true,
+ get: function(){ return this; }
+ });
+};
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/library/es6.date.to-primitive.js b/node_modules/babel-register/node_modules/core-js/modules/library/es6.date.to-primitive.js
new file mode 100644
index 0000000..e69de29
diff --git a/node_modules/babel-register/node_modules/core-js/modules/library/es6.date.to-string.js b/node_modules/babel-register/node_modules/core-js/modules/library/es6.date.to-string.js
new file mode 100644
index 0000000..e69de29
diff --git a/node_modules/babel-register/node_modules/core-js/modules/library/es6.function.name.js b/node_modules/babel-register/node_modules/core-js/modules/library/es6.function.name.js
new file mode 100644
index 0000000..e69de29
diff --git a/node_modules/babel-register/node_modules/core-js/modules/library/es6.number.constructor.js b/node_modules/babel-register/node_modules/core-js/modules/library/es6.number.constructor.js
new file mode 100644
index 0000000..e69de29
diff --git a/node_modules/babel-register/node_modules/core-js/modules/library/es6.object.to-string.js b/node_modules/babel-register/node_modules/core-js/modules/library/es6.object.to-string.js
new file mode 100644
index 0000000..e69de29
diff --git a/node_modules/babel-register/node_modules/core-js/modules/library/es6.regexp.constructor.js b/node_modules/babel-register/node_modules/core-js/modules/library/es6.regexp.constructor.js
new file mode 100644
index 0000000..7313c52
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/library/es6.regexp.constructor.js
@@ -0,0 +1 @@
+require('./_set-species')('RegExp');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/library/es6.regexp.flags.js b/node_modules/babel-register/node_modules/core-js/modules/library/es6.regexp.flags.js
new file mode 100644
index 0000000..e69de29
diff --git a/node_modules/babel-register/node_modules/core-js/modules/library/es6.regexp.match.js b/node_modules/babel-register/node_modules/core-js/modules/library/es6.regexp.match.js
new file mode 100644
index 0000000..e69de29
diff --git a/node_modules/babel-register/node_modules/core-js/modules/library/es6.regexp.replace.js b/node_modules/babel-register/node_modules/core-js/modules/library/es6.regexp.replace.js
new file mode 100644
index 0000000..e69de29
diff --git a/node_modules/babel-register/node_modules/core-js/modules/library/es6.regexp.search.js b/node_modules/babel-register/node_modules/core-js/modules/library/es6.regexp.search.js
new file mode 100644
index 0000000..e69de29
diff --git a/node_modules/babel-register/node_modules/core-js/modules/library/es6.regexp.split.js b/node_modules/babel-register/node_modules/core-js/modules/library/es6.regexp.split.js
new file mode 100644
index 0000000..e69de29
diff --git a/node_modules/babel-register/node_modules/core-js/modules/library/es6.regexp.to-string.js b/node_modules/babel-register/node_modules/core-js/modules/library/es6.regexp.to-string.js
new file mode 100644
index 0000000..e69de29
diff --git a/node_modules/babel-register/node_modules/core-js/modules/library/web.dom.iterable.js b/node_modules/babel-register/node_modules/core-js/modules/library/web.dom.iterable.js
new file mode 100644
index 0000000..e56371a
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/library/web.dom.iterable.js
@@ -0,0 +1,13 @@
+require('./es6.array.iterator');
+var global = require('./_global')
+ , hide = require('./_hide')
+ , Iterators = require('./_iterators')
+ , TO_STRING_TAG = require('./_wks')('toStringTag');
+
+for(var collections = ['NodeList', 'DOMTokenList', 'MediaList', 'StyleSheetList', 'CSSRuleList'], i = 0; i < 5; i++){
+ var NAME = collections[i]
+ , Collection = global[NAME]
+ , proto = Collection && Collection.prototype;
+ if(proto && !proto[TO_STRING_TAG])hide(proto, TO_STRING_TAG, NAME);
+ Iterators[NAME] = Iterators.Array;
+}
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/web.dom.iterable.js b/node_modules/babel-register/node_modules/core-js/modules/web.dom.iterable.js
new file mode 100644
index 0000000..a5a4c08
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/web.dom.iterable.js
@@ -0,0 +1,22 @@
+var $iterators = require('./es6.array.iterator')
+ , redefine = require('./_redefine')
+ , global = require('./_global')
+ , hide = require('./_hide')
+ , Iterators = require('./_iterators')
+ , wks = require('./_wks')
+ , ITERATOR = wks('iterator')
+ , TO_STRING_TAG = wks('toStringTag')
+ , ArrayValues = Iterators.Array;
+
+for(var collections = ['NodeList', 'DOMTokenList', 'MediaList', 'StyleSheetList', 'CSSRuleList'], i = 0; i < 5; i++){
+ var NAME = collections[i]
+ , Collection = global[NAME]
+ , proto = Collection && Collection.prototype
+ , key;
+ if(proto){
+ if(!proto[ITERATOR])hide(proto, ITERATOR, ArrayValues);
+ if(!proto[TO_STRING_TAG])hide(proto, TO_STRING_TAG, NAME);
+ Iterators[NAME] = ArrayValues;
+ for(key in $iterators)if(!proto[key])redefine(proto, key, $iterators[key], true);
+ }
+}
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/web.immediate.js b/node_modules/babel-register/node_modules/core-js/modules/web.immediate.js
new file mode 100644
index 0000000..5b94637
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/web.immediate.js
@@ -0,0 +1,6 @@
+var $export = require('./_export')
+ , $task = require('./_task');
+$export($export.G + $export.B, {
+ setImmediate: $task.set,
+ clearImmediate: $task.clear
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/modules/web.timers.js b/node_modules/babel-register/node_modules/core-js/modules/web.timers.js
new file mode 100644
index 0000000..1a1da57
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/modules/web.timers.js
@@ -0,0 +1,20 @@
+// ie9- setTimeout & setInterval additional parameters fix
+var global = require('./_global')
+ , $export = require('./_export')
+ , invoke = require('./_invoke')
+ , partial = require('./_partial')
+ , navigator = global.navigator
+ , MSIE = !!navigator && /MSIE .\./.test(navigator.userAgent); // <- dirty ie9- check
+var wrap = function(set){
+ return MSIE ? function(fn, time /*, ...args */){
+ return set(invoke(
+ partial,
+ [].slice.call(arguments, 2),
+ typeof fn == 'function' ? fn : Function(fn)
+ ), time);
+ } : set;
+};
+$export($export.G + $export.B + $export.F * MSIE, {
+ setTimeout: wrap(global.setTimeout),
+ setInterval: wrap(global.setInterval)
+});
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/package.json b/node_modules/babel-register/node_modules/core-js/package.json
new file mode 100644
index 0000000..42a10d5
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/package.json
@@ -0,0 +1,124 @@
+{
+ "_args": [
+ [
+ "core-js@^2.1.0",
+ "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-register"
+ ]
+ ],
+ "_from": "core-js@>=2.1.0 <3.0.0",
+ "_id": "core-js@2.2.0",
+ "_inCache": true,
+ "_installable": true,
+ "_location": "/babel-register/core-js",
+ "_nodeVersion": "5.7.0",
+ "_npmOperationalInternal": {
+ "host": "packages-12-west.internal.npmjs.com",
+ "tmp": "tmp/core-js-2.2.0.tgz_1458058029293_0.05631740274839103"
+ },
+ "_npmUser": {
+ "email": "zloirock@zloirock.ru",
+ "name": "zloirock"
+ },
+ "_npmVersion": "3.3.9",
+ "_phantomChildren": {},
+ "_requested": {
+ "name": "core-js",
+ "raw": "core-js@^2.1.0",
+ "rawSpec": "^2.1.0",
+ "scope": null,
+ "spec": ">=2.1.0 <3.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/babel-register"
+ ],
+ "_resolved": "https://registry.npmjs.org/core-js/-/core-js-2.2.0.tgz",
+ "_shasum": "72d4ba20c0011999d3a343cbf1c1b1d4ca5e53d7",
+ "_shrinkwrap": null,
+ "_spec": "core-js@^2.1.0",
+ "_where": "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-register",
+ "bugs": {
+ "url": "https://github.com/zloirock/core-js/issues"
+ },
+ "dependencies": {},
+ "description": "Standard library",
+ "devDependencies": {
+ "LiveScript": "1.3.x",
+ "eslint": "2.4.x",
+ "grunt": "0.4.x",
+ "grunt-cli": "0.1.x",
+ "grunt-contrib-clean": "1.0.x",
+ "grunt-contrib-copy": "1.0.x",
+ "grunt-contrib-uglify": "1.0.x",
+ "grunt-contrib-watch": "1.0.x",
+ "grunt-karma": "0.12.x",
+ "grunt-livescript": "0.6.x",
+ "karma": "0.13.x",
+ "karma-chrome-launcher": "0.2.x",
+ "karma-firefox-launcher": "0.1.x",
+ "karma-ie-launcher": "0.2.x",
+ "karma-phantomjs-launcher": "1.0.x",
+ "karma-qunit": "0.1.x",
+ "phantomjs-prebuilt": "2.1.x",
+ "promises-aplus-tests": "2.1.x",
+ "qunitjs": "1.22.x",
+ "temp": "0.8.x",
+ "webpack": "1.12.x"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "72d4ba20c0011999d3a343cbf1c1b1d4ca5e53d7",
+ "tarball": "http://registry.npmjs.org/core-js/-/core-js-2.2.0.tgz"
+ },
+ "gitHead": "d67e2fb94fc638bf1aebf883088e4bcf49d31fa7",
+ "homepage": "https://github.com/zloirock/core-js#readme",
+ "keywords": [
+ "Dict",
+ "ECMAScript 2015",
+ "ECMAScript 2016",
+ "ECMAScript 3",
+ "ECMAScript 5",
+ "ECMAScript 6",
+ "ECMAScript 7",
+ "ES2015",
+ "ES2016",
+ "ES3",
+ "ES5",
+ "ES6",
+ "ES7",
+ "Harmony",
+ "Map",
+ "Promise",
+ "Set",
+ "Strawman",
+ "Symbol",
+ "TypedArray",
+ "WeakMap",
+ "WeakSet",
+ "polyfill",
+ "setImmediate",
+ "shim"
+ ],
+ "license": "MIT",
+ "main": "index.js",
+ "maintainers": [
+ {
+ "name": "zloirock",
+ "email": "zloirock@zloirock.ru"
+ }
+ ],
+ "name": "core-js",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/zloirock/core-js.git"
+ },
+ "scripts": {
+ "grunt": "grunt",
+ "lint": "eslint es5 es6 es7 stage web core fn modules",
+ "promises-tests": "promises-aplus-tests tests/promises-aplus/adapter",
+ "test": "npm run lint && npm run grunt livescript client karma:default && npm run grunt library karma:library && npm run promises-tests && lsc tests/commonjs"
+ },
+ "version": "2.2.0"
+}
diff --git a/node_modules/babel-register/node_modules/core-js/shim.js b/node_modules/babel-register/node_modules/core-js/shim.js
new file mode 100644
index 0000000..7697272
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/shim.js
@@ -0,0 +1,172 @@
+require('./modules/es6.symbol');
+require('./modules/es6.object.create');
+require('./modules/es6.object.define-property');
+require('./modules/es6.object.define-properties');
+require('./modules/es6.object.get-own-property-descriptor');
+require('./modules/es6.object.get-prototype-of');
+require('./modules/es6.object.keys');
+require('./modules/es6.object.get-own-property-names');
+require('./modules/es6.object.freeze');
+require('./modules/es6.object.seal');
+require('./modules/es6.object.prevent-extensions');
+require('./modules/es6.object.is-frozen');
+require('./modules/es6.object.is-sealed');
+require('./modules/es6.object.is-extensible');
+require('./modules/es6.object.assign');
+require('./modules/es6.object.is');
+require('./modules/es6.object.set-prototype-of');
+require('./modules/es6.object.to-string');
+require('./modules/es6.function.bind');
+require('./modules/es6.function.name');
+require('./modules/es6.function.has-instance');
+require('./modules/es6.parse-int');
+require('./modules/es6.parse-float');
+require('./modules/es6.number.constructor');
+require('./modules/es6.number.to-fixed');
+require('./modules/es6.number.to-precision');
+require('./modules/es6.number.epsilon');
+require('./modules/es6.number.is-finite');
+require('./modules/es6.number.is-integer');
+require('./modules/es6.number.is-nan');
+require('./modules/es6.number.is-safe-integer');
+require('./modules/es6.number.max-safe-integer');
+require('./modules/es6.number.min-safe-integer');
+require('./modules/es6.number.parse-float');
+require('./modules/es6.number.parse-int');
+require('./modules/es6.math.acosh');
+require('./modules/es6.math.asinh');
+require('./modules/es6.math.atanh');
+require('./modules/es6.math.cbrt');
+require('./modules/es6.math.clz32');
+require('./modules/es6.math.cosh');
+require('./modules/es6.math.expm1');
+require('./modules/es6.math.fround');
+require('./modules/es6.math.hypot');
+require('./modules/es6.math.imul');
+require('./modules/es6.math.log10');
+require('./modules/es6.math.log1p');
+require('./modules/es6.math.log2');
+require('./modules/es6.math.sign');
+require('./modules/es6.math.sinh');
+require('./modules/es6.math.tanh');
+require('./modules/es6.math.trunc');
+require('./modules/es6.string.from-code-point');
+require('./modules/es6.string.raw');
+require('./modules/es6.string.trim');
+require('./modules/es6.string.iterator');
+require('./modules/es6.string.code-point-at');
+require('./modules/es6.string.ends-with');
+require('./modules/es6.string.includes');
+require('./modules/es6.string.repeat');
+require('./modules/es6.string.starts-with');
+require('./modules/es6.string.anchor');
+require('./modules/es6.string.big');
+require('./modules/es6.string.blink');
+require('./modules/es6.string.bold');
+require('./modules/es6.string.fixed');
+require('./modules/es6.string.fontcolor');
+require('./modules/es6.string.fontsize');
+require('./modules/es6.string.italics');
+require('./modules/es6.string.link');
+require('./modules/es6.string.small');
+require('./modules/es6.string.strike');
+require('./modules/es6.string.sub');
+require('./modules/es6.string.sup');
+require('./modules/es6.date.now');
+require('./modules/es6.date.to-json');
+require('./modules/es6.date.to-iso-string');
+require('./modules/es6.date.to-string');
+require('./modules/es6.date.to-primitive');
+require('./modules/es6.array.is-array');
+require('./modules/es6.array.from');
+require('./modules/es6.array.of');
+require('./modules/es6.array.join');
+require('./modules/es6.array.slice');
+require('./modules/es6.array.sort');
+require('./modules/es6.array.for-each');
+require('./modules/es6.array.map');
+require('./modules/es6.array.filter');
+require('./modules/es6.array.some');
+require('./modules/es6.array.every');
+require('./modules/es6.array.reduce');
+require('./modules/es6.array.reduce-right');
+require('./modules/es6.array.index-of');
+require('./modules/es6.array.last-index-of');
+require('./modules/es6.array.copy-within');
+require('./modules/es6.array.fill');
+require('./modules/es6.array.find');
+require('./modules/es6.array.find-index');
+require('./modules/es6.array.species');
+require('./modules/es6.array.iterator');
+require('./modules/es6.regexp.constructor');
+require('./modules/es6.regexp.to-string');
+require('./modules/es6.regexp.flags');
+require('./modules/es6.regexp.match');
+require('./modules/es6.regexp.replace');
+require('./modules/es6.regexp.search');
+require('./modules/es6.regexp.split');
+require('./modules/es6.promise');
+require('./modules/es6.map');
+require('./modules/es6.set');
+require('./modules/es6.weak-map');
+require('./modules/es6.weak-set');
+require('./modules/es6.typed.array-buffer');
+require('./modules/es6.typed.data-view');
+require('./modules/es6.typed.int8-array');
+require('./modules/es6.typed.uint8-array');
+require('./modules/es6.typed.uint8-clamped-array');
+require('./modules/es6.typed.int16-array');
+require('./modules/es6.typed.uint16-array');
+require('./modules/es6.typed.int32-array');
+require('./modules/es6.typed.uint32-array');
+require('./modules/es6.typed.float32-array');
+require('./modules/es6.typed.float64-array');
+require('./modules/es6.reflect.apply');
+require('./modules/es6.reflect.construct');
+require('./modules/es6.reflect.define-property');
+require('./modules/es6.reflect.delete-property');
+require('./modules/es6.reflect.enumerate');
+require('./modules/es6.reflect.get');
+require('./modules/es6.reflect.get-own-property-descriptor');
+require('./modules/es6.reflect.get-prototype-of');
+require('./modules/es6.reflect.has');
+require('./modules/es6.reflect.is-extensible');
+require('./modules/es6.reflect.own-keys');
+require('./modules/es6.reflect.prevent-extensions');
+require('./modules/es6.reflect.set');
+require('./modules/es6.reflect.set-prototype-of');
+require('./modules/es7.array.includes');
+require('./modules/es7.string.at');
+require('./modules/es7.string.pad-start');
+require('./modules/es7.string.pad-end');
+require('./modules/es7.string.trim-left');
+require('./modules/es7.string.trim-right');
+require('./modules/es7.string.match-all');
+require('./modules/es7.object.get-own-property-descriptors');
+require('./modules/es7.object.values');
+require('./modules/es7.object.entries');
+require('./modules/es7.object.define-getter');
+require('./modules/es7.object.define-setter');
+require('./modules/es7.object.lookup-getter');
+require('./modules/es7.object.lookup-setter');
+require('./modules/es7.map.to-json');
+require('./modules/es7.set.to-json');
+require('./modules/es7.system.global');
+require('./modules/es7.error.is-error');
+require('./modules/es7.math.iaddh');
+require('./modules/es7.math.isubh');
+require('./modules/es7.math.imulh');
+require('./modules/es7.math.umulh');
+require('./modules/es7.reflect.define-metadata');
+require('./modules/es7.reflect.delete-metadata');
+require('./modules/es7.reflect.get-metadata');
+require('./modules/es7.reflect.get-metadata-keys');
+require('./modules/es7.reflect.get-own-metadata');
+require('./modules/es7.reflect.get-own-metadata-keys');
+require('./modules/es7.reflect.has-metadata');
+require('./modules/es7.reflect.has-own-metadata');
+require('./modules/es7.reflect.metadata');
+require('./modules/web.timers');
+require('./modules/web.immediate');
+require('./modules/web.dom.iterable');
+module.exports = require('./modules/_core');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/stage/0.js b/node_modules/babel-register/node_modules/core-js/stage/0.js
new file mode 100644
index 0000000..d97bbba
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/stage/0.js
@@ -0,0 +1,9 @@
+require('../modules/es7.string.at');
+require('../modules/es7.map.to-json');
+require('../modules/es7.set.to-json');
+require('../modules/es7.error.is-error');
+require('../modules/es7.math.iaddh');
+require('../modules/es7.math.isubh');
+require('../modules/es7.math.imulh');
+require('../modules/es7.math.umulh');
+module.exports = require('./1');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/stage/1.js b/node_modules/babel-register/node_modules/core-js/stage/1.js
new file mode 100644
index 0000000..8db05fb
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/stage/1.js
@@ -0,0 +1,5 @@
+require('../modules/es7.string.trim-left');
+require('../modules/es7.string.trim-right');
+require('../modules/es7.string.match-all');
+require('../modules/es7.system.global');
+module.exports = require('./2');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/stage/2.js b/node_modules/babel-register/node_modules/core-js/stage/2.js
new file mode 100644
index 0000000..525877f
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/stage/2.js
@@ -0,0 +1 @@
+module.exports = require('./3');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/stage/3.js b/node_modules/babel-register/node_modules/core-js/stage/3.js
new file mode 100644
index 0000000..f4f6f99
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/stage/3.js
@@ -0,0 +1,6 @@
+require('../modules/es7.object.get-own-property-descriptors');
+require('../modules/es7.object.values');
+require('../modules/es7.object.entries');
+require('../modules/es7.string.pad-start');
+require('../modules/es7.string.pad-end');
+module.exports = require('./4');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/stage/4.js b/node_modules/babel-register/node_modules/core-js/stage/4.js
new file mode 100644
index 0000000..f9c8c1f
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/stage/4.js
@@ -0,0 +1,6 @@
+require('../modules/es7.object.define-getter');
+require('../modules/es7.object.define-setter');
+require('../modules/es7.object.lookup-getter');
+require('../modules/es7.object.lookup-setter');
+require('../modules/es7.array.includes');
+module.exports = require('../modules/_core');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/stage/index.js b/node_modules/babel-register/node_modules/core-js/stage/index.js
new file mode 100644
index 0000000..eb95914
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/stage/index.js
@@ -0,0 +1 @@
+module.exports = require('./pre');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/stage/pre.js b/node_modules/babel-register/node_modules/core-js/stage/pre.js
new file mode 100644
index 0000000..135ba46
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/stage/pre.js
@@ -0,0 +1,10 @@
+require('../modules/es7.reflect.define-metadata');
+require('../modules/es7.reflect.delete-metadata');
+require('../modules/es7.reflect.get-metadata');
+require('../modules/es7.reflect.get-metadata-keys');
+require('../modules/es7.reflect.get-own-metadata');
+require('../modules/es7.reflect.get-own-metadata-keys');
+require('../modules/es7.reflect.has-metadata');
+require('../modules/es7.reflect.has-own-metadata');
+require('../modules/es7.reflect.metadata');
+module.exports = require('./0');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/web/dom-collections.js b/node_modules/babel-register/node_modules/core-js/web/dom-collections.js
new file mode 100644
index 0000000..2118e3f
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/web/dom-collections.js
@@ -0,0 +1,2 @@
+require('../modules/web.dom.iterable');
+module.exports = require('../modules/_core');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/web/immediate.js b/node_modules/babel-register/node_modules/core-js/web/immediate.js
new file mode 100644
index 0000000..244ebb1
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/web/immediate.js
@@ -0,0 +1,2 @@
+require('../modules/web.immediate');
+module.exports = require('../modules/_core');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/web/index.js b/node_modules/babel-register/node_modules/core-js/web/index.js
new file mode 100644
index 0000000..6687d57
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/web/index.js
@@ -0,0 +1,4 @@
+require('../modules/web.timers');
+require('../modules/web.immediate');
+require('../modules/web.dom.iterable');
+module.exports = require('../modules/_core');
\ No newline at end of file
diff --git a/node_modules/babel-register/node_modules/core-js/web/timers.js b/node_modules/babel-register/node_modules/core-js/web/timers.js
new file mode 100644
index 0000000..2c66f43
--- /dev/null
+++ b/node_modules/babel-register/node_modules/core-js/web/timers.js
@@ -0,0 +1,2 @@
+require('../modules/web.timers');
+module.exports = require('../modules/_core');
\ No newline at end of file
diff --git a/node_modules/babel-register/package.json b/node_modules/babel-register/package.json
new file mode 100644
index 0000000..2ded871
--- /dev/null
+++ b/node_modules/babel-register/package.json
@@ -0,0 +1,99 @@
+{
+ "_args": [
+ [
+ "babel-register@^6.7.2",
+ "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-core"
+ ]
+ ],
+ "_from": "babel-register@>=6.7.2 <7.0.0",
+ "_id": "babel-register@6.7.2",
+ "_inCache": true,
+ "_installable": true,
+ "_location": "/babel-register",
+ "_nodeVersion": "5.5.0",
+ "_npmOperationalInternal": {
+ "host": "packages-13-west.internal.npmjs.com",
+ "tmp": "tmp/babel-register-6.7.2.tgz_1457649692292_0.6993277075234801"
+ },
+ "_npmUser": {
+ "email": "amjad.masad@gmail.com",
+ "name": "amasad"
+ },
+ "_npmVersion": "3.3.12",
+ "_phantomChildren": {},
+ "_requested": {
+ "name": "babel-register",
+ "raw": "babel-register@^6.7.2",
+ "rawSpec": "^6.7.2",
+ "scope": null,
+ "spec": ">=6.7.2 <7.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/babel-core"
+ ],
+ "_resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.7.2.tgz",
+ "_shasum": "4dec809ba2d4ccadd185efb2c0a3f560e1f6c8a0",
+ "_shrinkwrap": null,
+ "_spec": "babel-register@^6.7.2",
+ "_where": "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-core",
+ "author": {
+ "email": "sebmck@gmail.com",
+ "name": "Sebastian McKenzie"
+ },
+ "browser": "lib/browser.js",
+ "dependencies": {
+ "babel-core": "^6.7.2",
+ "babel-runtime": "^5.0.0",
+ "core-js": "^2.1.0",
+ "home-or-tmp": "^1.0.0",
+ "lodash": "^3.10.0",
+ "mkdirp": "^0.5.1",
+ "path-exists": "^1.0.0",
+ "source-map-support": "^0.2.10"
+ },
+ "description": "babel require hook",
+ "devDependencies": {},
+ "directories": {},
+ "dist": {
+ "shasum": "4dec809ba2d4ccadd185efb2c0a3f560e1f6c8a0",
+ "tarball": "http://registry.npmjs.org/babel-register/-/babel-register-6.7.2.tgz"
+ },
+ "license": "MIT",
+ "main": "lib/node.js",
+ "maintainers": [
+ {
+ "name": "amasad",
+ "email": "amjad.masad@gmail.com"
+ },
+ {
+ "name": "hzoo",
+ "email": "hi@henryzoo.com"
+ },
+ {
+ "name": "jmm",
+ "email": "npm-public@jessemccarthy.net"
+ },
+ {
+ "name": "loganfsmyth",
+ "email": "loganfsmyth@gmail.com"
+ },
+ {
+ "name": "sebmck",
+ "email": "sebmck@gmail.com"
+ },
+ {
+ "name": "thejameskyle",
+ "email": "me@thejameskyle.com"
+ }
+ ],
+ "name": "babel-register",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel/tree/master/packages/babel-register"
+ },
+ "scripts": {},
+ "version": "6.7.2"
+}
diff --git a/node_modules/babel-runtime/.npmignore b/node_modules/babel-runtime/.npmignore
new file mode 100644
index 0000000..3efd5b9
--- /dev/null
+++ b/node_modules/babel-runtime/.npmignore
@@ -0,0 +1,2 @@
+scripts
+node_modules
diff --git a/node_modules/babel-runtime/README.md b/node_modules/babel-runtime/README.md
new file mode 100644
index 0000000..bde5507
--- /dev/null
+++ b/node_modules/babel-runtime/README.md
@@ -0,0 +1,5 @@
+# babel-runtime
+
+Babel self-contained runtime
+
+For more information please look at [babel](https://github.com/babel/babel).
diff --git a/node_modules/babel-runtime/core-js.js b/node_modules/babel-runtime/core-js.js
new file mode 100644
index 0000000..7d56643
--- /dev/null
+++ b/node_modules/babel-runtime/core-js.js
@@ -0,0 +1,4 @@
+module.exports = {
+ "default": require("core-js/library"),
+ __esModule: true
+};
diff --git a/node_modules/babel-runtime/core-js/array/concat.js b/node_modules/babel-runtime/core-js/array/concat.js
new file mode 100644
index 0000000..f0a5ec7
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/array/concat.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/array/concat"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/array/copy-within.js b/node_modules/babel-runtime/core-js/array/copy-within.js
new file mode 100644
index 0000000..e9352ed
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/array/copy-within.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/array/copy-within"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/array/entries.js b/node_modules/babel-runtime/core-js/array/entries.js
new file mode 100644
index 0000000..ee8b9e9
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/array/entries.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/array/entries"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/array/every.js b/node_modules/babel-runtime/core-js/array/every.js
new file mode 100644
index 0000000..adc9319
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/array/every.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/array/every"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/array/fill.js b/node_modules/babel-runtime/core-js/array/fill.js
new file mode 100644
index 0000000..3cc2fe1
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/array/fill.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/array/fill"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/array/filter.js b/node_modules/babel-runtime/core-js/array/filter.js
new file mode 100644
index 0000000..f73a5db
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/array/filter.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/array/filter"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/array/find-index.js b/node_modules/babel-runtime/core-js/array/find-index.js
new file mode 100644
index 0000000..560caa8
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/array/find-index.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/array/find-index"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/array/find.js b/node_modules/babel-runtime/core-js/array/find.js
new file mode 100644
index 0000000..7763993
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/array/find.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/array/find"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/array/for-each.js b/node_modules/babel-runtime/core-js/array/for-each.js
new file mode 100644
index 0000000..4808c96
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/array/for-each.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/array/for-each"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/array/from.js b/node_modules/babel-runtime/core-js/array/from.js
new file mode 100644
index 0000000..8c92e81
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/array/from.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/array/from"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/array/includes.js b/node_modules/babel-runtime/core-js/array/includes.js
new file mode 100644
index 0000000..602d0d8
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/array/includes.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/array/includes"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/array/index-of.js b/node_modules/babel-runtime/core-js/array/index-of.js
new file mode 100644
index 0000000..eb4a6ac
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/array/index-of.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/array/index-of"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/array/join.js b/node_modules/babel-runtime/core-js/array/join.js
new file mode 100644
index 0000000..7dc300b
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/array/join.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/array/join"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/array/keys.js b/node_modules/babel-runtime/core-js/array/keys.js
new file mode 100644
index 0000000..5008ccb
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/array/keys.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/array/keys"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/array/last-index-of.js b/node_modules/babel-runtime/core-js/array/last-index-of.js
new file mode 100644
index 0000000..ed92a55
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/array/last-index-of.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/array/last-index-of"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/array/map.js b/node_modules/babel-runtime/core-js/array/map.js
new file mode 100644
index 0000000..0f58810
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/array/map.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/array/map"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/array/of.js b/node_modules/babel-runtime/core-js/array/of.js
new file mode 100644
index 0000000..d03ab62
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/array/of.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/array/of"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/array/pop.js b/node_modules/babel-runtime/core-js/array/pop.js
new file mode 100644
index 0000000..9114d2f
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/array/pop.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/array/pop"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/array/push.js b/node_modules/babel-runtime/core-js/array/push.js
new file mode 100644
index 0000000..0cd42be
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/array/push.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/array/push"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/array/reduce-right.js b/node_modules/babel-runtime/core-js/array/reduce-right.js
new file mode 100644
index 0000000..f56176c
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/array/reduce-right.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/array/reduce-right"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/array/reduce.js b/node_modules/babel-runtime/core-js/array/reduce.js
new file mode 100644
index 0000000..c0a2006
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/array/reduce.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/array/reduce"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/array/reverse.js b/node_modules/babel-runtime/core-js/array/reverse.js
new file mode 100644
index 0000000..8892c26
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/array/reverse.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/array/reverse"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/array/shift.js b/node_modules/babel-runtime/core-js/array/shift.js
new file mode 100644
index 0000000..49e66cd
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/array/shift.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/array/shift"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/array/slice.js b/node_modules/babel-runtime/core-js/array/slice.js
new file mode 100644
index 0000000..5f5fe16
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/array/slice.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/array/slice"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/array/some.js b/node_modules/babel-runtime/core-js/array/some.js
new file mode 100644
index 0000000..72ca911
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/array/some.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/array/some"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/array/sort.js b/node_modules/babel-runtime/core-js/array/sort.js
new file mode 100644
index 0000000..32dece8
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/array/sort.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/array/sort"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/array/splice.js b/node_modules/babel-runtime/core-js/array/splice.js
new file mode 100644
index 0000000..6fdebb0
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/array/splice.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/array/splice"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/array/turn.js b/node_modules/babel-runtime/core-js/array/turn.js
new file mode 100644
index 0000000..b49c361
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/array/turn.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/array/turn"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/array/unshift.js b/node_modules/babel-runtime/core-js/array/unshift.js
new file mode 100644
index 0000000..3c237a4
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/array/unshift.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/array/unshift"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/array/values.js b/node_modules/babel-runtime/core-js/array/values.js
new file mode 100644
index 0000000..6cc67aa
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/array/values.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/array/values"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/clear-immediate.js b/node_modules/babel-runtime/core-js/clear-immediate.js
new file mode 100644
index 0000000..f2090b7
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/clear-immediate.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/clear-immediate"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/date/add-locale.js b/node_modules/babel-runtime/core-js/date/add-locale.js
new file mode 100644
index 0000000..61ce70b
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/date/add-locale.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/date/add-locale"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/date/format-utc.js b/node_modules/babel-runtime/core-js/date/format-utc.js
new file mode 100644
index 0000000..0bcc6ac
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/date/format-utc.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/date/format-utc"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/date/format.js b/node_modules/babel-runtime/core-js/date/format.js
new file mode 100644
index 0000000..2864221
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/date/format.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/date/format"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/function/only.js b/node_modules/babel-runtime/core-js/function/only.js
new file mode 100644
index 0000000..2231176
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/function/only.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/function/only"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/function/part.js b/node_modules/babel-runtime/core-js/function/part.js
new file mode 100644
index 0000000..8134260
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/function/part.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/function/part"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/get-iterator.js b/node_modules/babel-runtime/core-js/get-iterator.js
new file mode 100644
index 0000000..8f9943a
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/get-iterator.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/get-iterator"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/is-iterable.js b/node_modules/babel-runtime/core-js/is-iterable.js
new file mode 100644
index 0000000..d690ac8
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/is-iterable.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/is-iterable"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/json/stringify.js b/node_modules/babel-runtime/core-js/json/stringify.js
new file mode 100644
index 0000000..f09e2f9
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/json/stringify.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/json/stringify"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/map.js b/node_modules/babel-runtime/core-js/map.js
new file mode 100644
index 0000000..ed02186
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/map.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/map"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/math/acosh.js b/node_modules/babel-runtime/core-js/math/acosh.js
new file mode 100644
index 0000000..37e2202
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/math/acosh.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/math/acosh"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/math/asinh.js b/node_modules/babel-runtime/core-js/math/asinh.js
new file mode 100644
index 0000000..b5147b3
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/math/asinh.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/math/asinh"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/math/atanh.js b/node_modules/babel-runtime/core-js/math/atanh.js
new file mode 100644
index 0000000..ad09bb7
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/math/atanh.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/math/atanh"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/math/cbrt.js b/node_modules/babel-runtime/core-js/math/cbrt.js
new file mode 100644
index 0000000..24a6974
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/math/cbrt.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/math/cbrt"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/math/clz32.js b/node_modules/babel-runtime/core-js/math/clz32.js
new file mode 100644
index 0000000..d2218b4
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/math/clz32.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/math/clz32"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/math/cosh.js b/node_modules/babel-runtime/core-js/math/cosh.js
new file mode 100644
index 0000000..fa9d079
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/math/cosh.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/math/cosh"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/math/expm1.js b/node_modules/babel-runtime/core-js/math/expm1.js
new file mode 100644
index 0000000..860921e
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/math/expm1.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/math/expm1"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/math/fround.js b/node_modules/babel-runtime/core-js/math/fround.js
new file mode 100644
index 0000000..b62e43a
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/math/fround.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/math/fround"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/math/hypot.js b/node_modules/babel-runtime/core-js/math/hypot.js
new file mode 100644
index 0000000..b07335b
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/math/hypot.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/math/hypot"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/math/imul.js b/node_modules/babel-runtime/core-js/math/imul.js
new file mode 100644
index 0000000..3bf89e8
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/math/imul.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/math/imul"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/math/log10.js b/node_modules/babel-runtime/core-js/math/log10.js
new file mode 100644
index 0000000..f384512
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/math/log10.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/math/log10"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/math/log1p.js b/node_modules/babel-runtime/core-js/math/log1p.js
new file mode 100644
index 0000000..358fc45
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/math/log1p.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/math/log1p"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/math/log2.js b/node_modules/babel-runtime/core-js/math/log2.js
new file mode 100644
index 0000000..1cbca00
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/math/log2.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/math/log2"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/math/pot.js b/node_modules/babel-runtime/core-js/math/pot.js
new file mode 100644
index 0000000..04baddd
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/math/pot.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/math/pot"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/math/sign.js b/node_modules/babel-runtime/core-js/math/sign.js
new file mode 100644
index 0000000..8d0cfa3
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/math/sign.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/math/sign"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/math/sinh.js b/node_modules/babel-runtime/core-js/math/sinh.js
new file mode 100644
index 0000000..81afadd
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/math/sinh.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/math/sinh"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/math/tanh.js b/node_modules/babel-runtime/core-js/math/tanh.js
new file mode 100644
index 0000000..76fad88
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/math/tanh.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/math/tanh"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/math/trunc.js b/node_modules/babel-runtime/core-js/math/trunc.js
new file mode 100644
index 0000000..443a958
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/math/trunc.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/math/trunc"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/number/epsilon.js b/node_modules/babel-runtime/core-js/number/epsilon.js
new file mode 100644
index 0000000..b5c7862
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/number/epsilon.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/number/epsilon"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/number/is-finite.js b/node_modules/babel-runtime/core-js/number/is-finite.js
new file mode 100644
index 0000000..7366242
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/number/is-finite.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/number/is-finite"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/number/is-integer.js b/node_modules/babel-runtime/core-js/number/is-integer.js
new file mode 100644
index 0000000..69b9bb7
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/number/is-integer.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/number/is-integer"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/number/is-nan.js b/node_modules/babel-runtime/core-js/number/is-nan.js
new file mode 100644
index 0000000..5402a71
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/number/is-nan.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/number/is-nan"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/number/is-safe-integer.js b/node_modules/babel-runtime/core-js/number/is-safe-integer.js
new file mode 100644
index 0000000..2d72dd4
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/number/is-safe-integer.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/number/is-safe-integer"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/number/max-safe-integer.js b/node_modules/babel-runtime/core-js/number/max-safe-integer.js
new file mode 100644
index 0000000..9b55c84
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/number/max-safe-integer.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/number/max-safe-integer"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/number/min-safe-integer.js b/node_modules/babel-runtime/core-js/number/min-safe-integer.js
new file mode 100644
index 0000000..b5e9785
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/number/min-safe-integer.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/number/min-safe-integer"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/number/parse-float.js b/node_modules/babel-runtime/core-js/number/parse-float.js
new file mode 100644
index 0000000..0e0f0bc
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/number/parse-float.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/number/parse-float"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/number/parse-int.js b/node_modules/babel-runtime/core-js/number/parse-int.js
new file mode 100644
index 0000000..6d454ea
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/number/parse-int.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/number/parse-int"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/number/random.js b/node_modules/babel-runtime/core-js/number/random.js
new file mode 100644
index 0000000..96363b7
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/number/random.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/number/random"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/object/assign.js b/node_modules/babel-runtime/core-js/object/assign.js
new file mode 100644
index 0000000..ca48f0c
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/object/assign.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/object/assign"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/object/classof.js b/node_modules/babel-runtime/core-js/object/classof.js
new file mode 100644
index 0000000..57d4f09
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/object/classof.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/object/classof"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/object/create.js b/node_modules/babel-runtime/core-js/object/create.js
new file mode 100644
index 0000000..130165c
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/object/create.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/object/create"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/object/define-properties.js b/node_modules/babel-runtime/core-js/object/define-properties.js
new file mode 100644
index 0000000..d39e153
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/object/define-properties.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/object/define-properties"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/object/define-property.js b/node_modules/babel-runtime/core-js/object/define-property.js
new file mode 100644
index 0000000..f41735b
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/object/define-property.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/object/define-property"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/object/define.js b/node_modules/babel-runtime/core-js/object/define.js
new file mode 100644
index 0000000..4773199
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/object/define.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/object/define"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/object/entries.js b/node_modules/babel-runtime/core-js/object/entries.js
new file mode 100644
index 0000000..32ed7a5
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/object/entries.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/object/entries"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/object/freeze.js b/node_modules/babel-runtime/core-js/object/freeze.js
new file mode 100644
index 0000000..8cc278b
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/object/freeze.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/object/freeze"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/object/get-own-property-descriptor.js b/node_modules/babel-runtime/core-js/object/get-own-property-descriptor.js
new file mode 100644
index 0000000..8e9296e
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/object/get-own-property-descriptor.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/object/get-own-property-descriptor"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/object/get-own-property-descriptors.js b/node_modules/babel-runtime/core-js/object/get-own-property-descriptors.js
new file mode 100644
index 0000000..23200d2
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/object/get-own-property-descriptors.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/object/get-own-property-descriptors"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/object/get-own-property-names.js b/node_modules/babel-runtime/core-js/object/get-own-property-names.js
new file mode 100644
index 0000000..7b95445
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/object/get-own-property-names.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/object/get-own-property-names"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/object/get-own-property-symbols.js b/node_modules/babel-runtime/core-js/object/get-own-property-symbols.js
new file mode 100644
index 0000000..c2fc78f
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/object/get-own-property-symbols.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/object/get-own-property-symbols"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/object/get-prototype-of.js b/node_modules/babel-runtime/core-js/object/get-prototype-of.js
new file mode 100644
index 0000000..47d3f72
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/object/get-prototype-of.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/object/get-prototype-of"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/object/index.js b/node_modules/babel-runtime/core-js/object/index.js
new file mode 100644
index 0000000..2e23110
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/object/index.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/object/index"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/object/is-extensible.js b/node_modules/babel-runtime/core-js/object/is-extensible.js
new file mode 100644
index 0000000..51175ad
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/object/is-extensible.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/object/is-extensible"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/object/is-frozen.js b/node_modules/babel-runtime/core-js/object/is-frozen.js
new file mode 100644
index 0000000..e8ab5f1
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/object/is-frozen.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/object/is-frozen"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/object/is-object.js b/node_modules/babel-runtime/core-js/object/is-object.js
new file mode 100644
index 0000000..323b0e4
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/object/is-object.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/object/is-object"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/object/is-sealed.js b/node_modules/babel-runtime/core-js/object/is-sealed.js
new file mode 100644
index 0000000..77beda4
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/object/is-sealed.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/object/is-sealed"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/object/is.js b/node_modules/babel-runtime/core-js/object/is.js
new file mode 100644
index 0000000..6524704
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/object/is.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/object/is"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/object/keys.js b/node_modules/babel-runtime/core-js/object/keys.js
new file mode 100644
index 0000000..04a3f01
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/object/keys.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/object/keys"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/object/make.js b/node_modules/babel-runtime/core-js/object/make.js
new file mode 100644
index 0000000..a3f9a28
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/object/make.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/object/make"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/object/prevent-extensions.js b/node_modules/babel-runtime/core-js/object/prevent-extensions.js
new file mode 100644
index 0000000..3d4305f
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/object/prevent-extensions.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/object/prevent-extensions"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/object/seal.js b/node_modules/babel-runtime/core-js/object/seal.js
new file mode 100644
index 0000000..c969cab
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/object/seal.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/object/seal"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/object/set-prototype-of.js b/node_modules/babel-runtime/core-js/object/set-prototype-of.js
new file mode 100644
index 0000000..63b1435
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/object/set-prototype-of.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/object/set-prototype-of"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/object/values.js b/node_modules/babel-runtime/core-js/object/values.js
new file mode 100644
index 0000000..c587097
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/object/values.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/object/values"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/promise.js b/node_modules/babel-runtime/core-js/promise.js
new file mode 100644
index 0000000..0cb9a23
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/promise.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/promise"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/reflect/apply.js b/node_modules/babel-runtime/core-js/reflect/apply.js
new file mode 100644
index 0000000..cc578d4
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/reflect/apply.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/reflect/apply"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/reflect/construct.js b/node_modules/babel-runtime/core-js/reflect/construct.js
new file mode 100644
index 0000000..a2d991a
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/reflect/construct.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/reflect/construct"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/reflect/define-property.js b/node_modules/babel-runtime/core-js/reflect/define-property.js
new file mode 100644
index 0000000..aee1c3a
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/reflect/define-property.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/reflect/define-property"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/reflect/delete-property.js b/node_modules/babel-runtime/core-js/reflect/delete-property.js
new file mode 100644
index 0000000..efa76ab
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/reflect/delete-property.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/reflect/delete-property"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/reflect/enumerate.js b/node_modules/babel-runtime/core-js/reflect/enumerate.js
new file mode 100644
index 0000000..041484b
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/reflect/enumerate.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/reflect/enumerate"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/reflect/get-own-property-descriptor.js b/node_modules/babel-runtime/core-js/reflect/get-own-property-descriptor.js
new file mode 100644
index 0000000..67a50f5
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/reflect/get-own-property-descriptor.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/reflect/get-own-property-descriptor"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/reflect/get-prototype-of.js b/node_modules/babel-runtime/core-js/reflect/get-prototype-of.js
new file mode 100644
index 0000000..d3c8d4e
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/reflect/get-prototype-of.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/reflect/get-prototype-of"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/reflect/get.js b/node_modules/babel-runtime/core-js/reflect/get.js
new file mode 100644
index 0000000..a42e4fb
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/reflect/get.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/reflect/get"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/reflect/has.js b/node_modules/babel-runtime/core-js/reflect/has.js
new file mode 100644
index 0000000..e2a9665
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/reflect/has.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/reflect/has"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/reflect/is-extensible.js b/node_modules/babel-runtime/core-js/reflect/is-extensible.js
new file mode 100644
index 0000000..b0de7bf
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/reflect/is-extensible.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/reflect/is-extensible"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/reflect/own-keys.js b/node_modules/babel-runtime/core-js/reflect/own-keys.js
new file mode 100644
index 0000000..d98fed2
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/reflect/own-keys.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/reflect/own-keys"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/reflect/prevent-extensions.js b/node_modules/babel-runtime/core-js/reflect/prevent-extensions.js
new file mode 100644
index 0000000..5408d89
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/reflect/prevent-extensions.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/reflect/prevent-extensions"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/reflect/set-prototype-of.js b/node_modules/babel-runtime/core-js/reflect/set-prototype-of.js
new file mode 100644
index 0000000..5433e2e
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/reflect/set-prototype-of.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/reflect/set-prototype-of"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/reflect/set.js b/node_modules/babel-runtime/core-js/reflect/set.js
new file mode 100644
index 0000000..657bddc
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/reflect/set.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/reflect/set"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/regexp/escape.js b/node_modules/babel-runtime/core-js/regexp/escape.js
new file mode 100644
index 0000000..12a25c3
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/regexp/escape.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/regexp/escape"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/set-immediate.js b/node_modules/babel-runtime/core-js/set-immediate.js
new file mode 100644
index 0000000..fc42eb4
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/set-immediate.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/set-immediate"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/set.js b/node_modules/babel-runtime/core-js/set.js
new file mode 100644
index 0000000..22c14d4
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/set.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/set"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/string/at.js b/node_modules/babel-runtime/core-js/string/at.js
new file mode 100644
index 0000000..1c4b595
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/string/at.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/string/at"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/string/code-point-at.js b/node_modules/babel-runtime/core-js/string/code-point-at.js
new file mode 100644
index 0000000..4332bdb
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/string/code-point-at.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/string/code-point-at"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/string/ends-with.js b/node_modules/babel-runtime/core-js/string/ends-with.js
new file mode 100644
index 0000000..ad3b55a
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/string/ends-with.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/string/ends-with"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/string/escape-html.js b/node_modules/babel-runtime/core-js/string/escape-html.js
new file mode 100644
index 0000000..c693a61
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/string/escape-html.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/string/escape-html"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/string/from-code-point.js b/node_modules/babel-runtime/core-js/string/from-code-point.js
new file mode 100644
index 0000000..8c10782
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/string/from-code-point.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/string/from-code-point"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/string/includes.js b/node_modules/babel-runtime/core-js/string/includes.js
new file mode 100644
index 0000000..f7de270
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/string/includes.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/string/includes"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/string/pad-left.js b/node_modules/babel-runtime/core-js/string/pad-left.js
new file mode 100644
index 0000000..a8a3890
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/string/pad-left.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/string/pad-left"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/string/pad-right.js b/node_modules/babel-runtime/core-js/string/pad-right.js
new file mode 100644
index 0000000..df2a452
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/string/pad-right.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/string/pad-right"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/string/raw.js b/node_modules/babel-runtime/core-js/string/raw.js
new file mode 100644
index 0000000..05c92dc
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/string/raw.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/string/raw"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/string/repeat.js b/node_modules/babel-runtime/core-js/string/repeat.js
new file mode 100644
index 0000000..816ef2e
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/string/repeat.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/string/repeat"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/string/starts-with.js b/node_modules/babel-runtime/core-js/string/starts-with.js
new file mode 100644
index 0000000..5d74716
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/string/starts-with.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/string/starts-with"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/string/trim-left.js b/node_modules/babel-runtime/core-js/string/trim-left.js
new file mode 100644
index 0000000..b8a7e1e
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/string/trim-left.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/string/trim-left"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/string/trim-right.js b/node_modules/babel-runtime/core-js/string/trim-right.js
new file mode 100644
index 0000000..ba3ca74
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/string/trim-right.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/string/trim-right"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/string/trim.js b/node_modules/babel-runtime/core-js/string/trim.js
new file mode 100644
index 0000000..7d51cf0
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/string/trim.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/string/trim"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/string/unescape-html.js b/node_modules/babel-runtime/core-js/string/unescape-html.js
new file mode 100644
index 0000000..75a1c98
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/string/unescape-html.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/string/unescape-html"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/symbol.js b/node_modules/babel-runtime/core-js/symbol.js
new file mode 100644
index 0000000..9aa95a0
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/symbol.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/symbol"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/symbol/for.js b/node_modules/babel-runtime/core-js/symbol/for.js
new file mode 100644
index 0000000..de7424f
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/symbol/for.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/symbol/for"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/symbol/has-instance.js b/node_modules/babel-runtime/core-js/symbol/has-instance.js
new file mode 100644
index 0000000..f771180
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/symbol/has-instance.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/symbol/has-instance"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/symbol/is-concat-spreadable.js b/node_modules/babel-runtime/core-js/symbol/is-concat-spreadable.js
new file mode 100644
index 0000000..0bc7f03
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/symbol/is-concat-spreadable.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/symbol/is-concat-spreadable"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/symbol/iterator.js b/node_modules/babel-runtime/core-js/symbol/iterator.js
new file mode 100644
index 0000000..3f9a0fb
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/symbol/iterator.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/symbol/iterator"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/symbol/key-for.js b/node_modules/babel-runtime/core-js/symbol/key-for.js
new file mode 100644
index 0000000..15a6cfb
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/symbol/key-for.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/symbol/key-for"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/symbol/match.js b/node_modules/babel-runtime/core-js/symbol/match.js
new file mode 100644
index 0000000..ed64810
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/symbol/match.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/symbol/match"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/symbol/replace.js b/node_modules/babel-runtime/core-js/symbol/replace.js
new file mode 100644
index 0000000..35f900b
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/symbol/replace.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/symbol/replace"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/symbol/search.js b/node_modules/babel-runtime/core-js/symbol/search.js
new file mode 100644
index 0000000..4b81d31
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/symbol/search.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/symbol/search"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/symbol/species.js b/node_modules/babel-runtime/core-js/symbol/species.js
new file mode 100644
index 0000000..4481321
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/symbol/species.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/symbol/species"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/symbol/split.js b/node_modules/babel-runtime/core-js/symbol/split.js
new file mode 100644
index 0000000..1f5795c
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/symbol/split.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/symbol/split"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/symbol/to-primitive.js b/node_modules/babel-runtime/core-js/symbol/to-primitive.js
new file mode 100644
index 0000000..b7f9e04
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/symbol/to-primitive.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/symbol/to-primitive"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/symbol/to-string-tag.js b/node_modules/babel-runtime/core-js/symbol/to-string-tag.js
new file mode 100644
index 0000000..d9e4e4d
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/symbol/to-string-tag.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/symbol/to-string-tag"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/symbol/unscopables.js b/node_modules/babel-runtime/core-js/symbol/unscopables.js
new file mode 100644
index 0000000..cd3dac0
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/symbol/unscopables.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/symbol/unscopables"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/weak-map.js b/node_modules/babel-runtime/core-js/weak-map.js
new file mode 100644
index 0000000..de130d4
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/weak-map.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/weak-map"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/core-js/weak-set.js b/node_modules/babel-runtime/core-js/weak-set.js
new file mode 100644
index 0000000..b96cb97
--- /dev/null
+++ b/node_modules/babel-runtime/core-js/weak-set.js
@@ -0,0 +1 @@
+module.exports = { "default": require("core-js/library/fn/weak-set"), __esModule: true };
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/_async-to-generator.js b/node_modules/babel-runtime/helpers/_async-to-generator.js
new file mode 100644
index 0000000..5f81e90
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/_async-to-generator.js
@@ -0,0 +1 @@
+module.exports = require("./asyncToGenerator.js");
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/_class-call-check.js b/node_modules/babel-runtime/helpers/_class-call-check.js
new file mode 100644
index 0000000..d4514f0
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/_class-call-check.js
@@ -0,0 +1 @@
+module.exports = require("./classCallCheck.js");
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/_create-class.js b/node_modules/babel-runtime/helpers/_create-class.js
new file mode 100644
index 0000000..2699d23
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/_create-class.js
@@ -0,0 +1 @@
+module.exports = require("./createClass.js");
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/_defaults.js b/node_modules/babel-runtime/helpers/_defaults.js
new file mode 100644
index 0000000..a4274f5
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/_defaults.js
@@ -0,0 +1 @@
+module.exports = require("./defaults.js");
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/_define-enumerable-properties.js b/node_modules/babel-runtime/helpers/_define-enumerable-properties.js
new file mode 100644
index 0000000..c60bbfc
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/_define-enumerable-properties.js
@@ -0,0 +1 @@
+module.exports = require("./defineEnumerableProperties.js");
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/_define-property.js b/node_modules/babel-runtime/helpers/_define-property.js
new file mode 100644
index 0000000..a265eab
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/_define-property.js
@@ -0,0 +1 @@
+module.exports = require("./defineProperty.js");
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/_extends.js b/node_modules/babel-runtime/helpers/_extends.js
new file mode 100644
index 0000000..2ecdb0e
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/_extends.js
@@ -0,0 +1 @@
+module.exports = require("./extends.js");
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/_get.js b/node_modules/babel-runtime/helpers/_get.js
new file mode 100644
index 0000000..39aa387
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/_get.js
@@ -0,0 +1 @@
+module.exports = require("./get.js");
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/_inherits.js b/node_modules/babel-runtime/helpers/_inherits.js
new file mode 100644
index 0000000..29deff3
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/_inherits.js
@@ -0,0 +1 @@
+module.exports = require("./inherits.js");
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/_instanceof.js b/node_modules/babel-runtime/helpers/_instanceof.js
new file mode 100644
index 0000000..4c61213
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/_instanceof.js
@@ -0,0 +1 @@
+module.exports = require("./instanceof.js");
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/_interop-require-default.js b/node_modules/babel-runtime/helpers/_interop-require-default.js
new file mode 100644
index 0000000..10edad2
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/_interop-require-default.js
@@ -0,0 +1 @@
+module.exports = require("./interopRequireDefault.js");
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/_interop-require-wildcard.js b/node_modules/babel-runtime/helpers/_interop-require-wildcard.js
new file mode 100644
index 0000000..ae19e01
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/_interop-require-wildcard.js
@@ -0,0 +1 @@
+module.exports = require("./interopRequireWildcard.js");
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/_jsx.js b/node_modules/babel-runtime/helpers/_jsx.js
new file mode 100644
index 0000000..f21ab91
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/_jsx.js
@@ -0,0 +1 @@
+module.exports = require("./jsx.js");
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/_new-arrow-check.js b/node_modules/babel-runtime/helpers/_new-arrow-check.js
new file mode 100644
index 0000000..6325419
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/_new-arrow-check.js
@@ -0,0 +1 @@
+module.exports = require("./newArrowCheck.js");
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/_object-destructuring-empty.js b/node_modules/babel-runtime/helpers/_object-destructuring-empty.js
new file mode 100644
index 0000000..9c6ffef
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/_object-destructuring-empty.js
@@ -0,0 +1 @@
+module.exports = require("./objectDestructuringEmpty.js");
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/_object-without-properties.js b/node_modules/babel-runtime/helpers/_object-without-properties.js
new file mode 100644
index 0000000..052b207
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/_object-without-properties.js
@@ -0,0 +1 @@
+module.exports = require("./objectWithoutProperties.js");
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/_possible-constructor-return.js b/node_modules/babel-runtime/helpers/_possible-constructor-return.js
new file mode 100644
index 0000000..09018d7
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/_possible-constructor-return.js
@@ -0,0 +1 @@
+module.exports = require("./possibleConstructorReturn.js");
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/_self-global.js b/node_modules/babel-runtime/helpers/_self-global.js
new file mode 100644
index 0000000..c3d45f3
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/_self-global.js
@@ -0,0 +1 @@
+module.exports = require("./selfGlobal.js");
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/_set.js b/node_modules/babel-runtime/helpers/_set.js
new file mode 100644
index 0000000..e4dd5ea
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/_set.js
@@ -0,0 +1 @@
+module.exports = require("./set.js");
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/_sliced-to-array-loose.js b/node_modules/babel-runtime/helpers/_sliced-to-array-loose.js
new file mode 100644
index 0000000..8bb56d3
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/_sliced-to-array-loose.js
@@ -0,0 +1 @@
+module.exports = require("./slicedToArrayLoose.js");
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/_sliced-to-array.js b/node_modules/babel-runtime/helpers/_sliced-to-array.js
new file mode 100644
index 0000000..28d7fd8
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/_sliced-to-array.js
@@ -0,0 +1 @@
+module.exports = require("./slicedToArray.js");
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/_tagged-template-literal-loose.js b/node_modules/babel-runtime/helpers/_tagged-template-literal-loose.js
new file mode 100644
index 0000000..8ffa3f7
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/_tagged-template-literal-loose.js
@@ -0,0 +1 @@
+module.exports = require("./taggedTemplateLiteralLoose.js");
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/_tagged-template-literal.js b/node_modules/babel-runtime/helpers/_tagged-template-literal.js
new file mode 100644
index 0000000..160a917
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/_tagged-template-literal.js
@@ -0,0 +1 @@
+module.exports = require("./taggedTemplateLiteral.js");
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/_temporal-ref.js b/node_modules/babel-runtime/helpers/_temporal-ref.js
new file mode 100644
index 0000000..cf2e4e4
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/_temporal-ref.js
@@ -0,0 +1 @@
+module.exports = require("./temporalRef.js");
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/_temporal-undefined.js b/node_modules/babel-runtime/helpers/_temporal-undefined.js
new file mode 100644
index 0000000..234fc33
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/_temporal-undefined.js
@@ -0,0 +1 @@
+module.exports = require("./temporalUndefined.js");
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/_to-array.js b/node_modules/babel-runtime/helpers/_to-array.js
new file mode 100644
index 0000000..d89ee39
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/_to-array.js
@@ -0,0 +1 @@
+module.exports = require("./toArray.js");
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/_to-consumable-array.js b/node_modules/babel-runtime/helpers/_to-consumable-array.js
new file mode 100644
index 0000000..0aad718
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/_to-consumable-array.js
@@ -0,0 +1 @@
+module.exports = require("./toConsumableArray.js");
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/_typeof.js b/node_modules/babel-runtime/helpers/_typeof.js
new file mode 100644
index 0000000..14fd11c
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/_typeof.js
@@ -0,0 +1 @@
+module.exports = require("./typeof.js");
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/async-to-generator.js b/node_modules/babel-runtime/helpers/async-to-generator.js
new file mode 100644
index 0000000..e20c18a
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/async-to-generator.js
@@ -0,0 +1,33 @@
+"use strict";
+
+var _Promise = require("babel-runtime/core-js/promise")["default"];
+
+exports["default"] = function (fn) {
+ return function () {
+ var gen = fn.apply(this, arguments);
+ return new _Promise(function (resolve, reject) {
+ var callNext = step.bind(null, "next");
+ var callThrow = step.bind(null, "throw");
+
+ function step(key, arg) {
+ try {
+ var info = gen[key](arg);
+ var value = info.value;
+ } catch (error) {
+ reject(error);
+ return;
+ }
+
+ if (info.done) {
+ resolve(value);
+ } else {
+ _Promise.resolve(value).then(callNext, callThrow);
+ }
+ }
+
+ callNext();
+ });
+ };
+};
+
+exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/asyncToGenerator.js b/node_modules/babel-runtime/helpers/asyncToGenerator.js
new file mode 100644
index 0000000..0b852d6
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/asyncToGenerator.js
@@ -0,0 +1,38 @@
+"use strict";
+
+exports.__esModule = true;
+
+var _promise = require("../core-js/promise");
+
+var _promise2 = _interopRequireDefault(_promise);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+exports.default = function (fn) {
+ return function () {
+ var gen = fn.apply(this, arguments);
+ return new _promise2.default(function (resolve, reject) {
+ function step(key, arg) {
+ try {
+ var info = gen[key](arg);
+ var value = info.value;
+ } catch (error) {
+ reject(error);
+ return;
+ }
+
+ if (info.done) {
+ resolve(value);
+ } else {
+ _promise2.default.resolve(value).then(function (value) {
+ step("next", value);
+ }, function (err) {
+ step("throw", err);
+ });
+ }
+ }
+
+ step("next");
+ });
+ };
+};
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/bind.js b/node_modules/babel-runtime/helpers/bind.js
new file mode 100644
index 0000000..af8b878
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/bind.js
@@ -0,0 +1,4 @@
+"use strict";
+
+exports["default"] = Function.prototype.bind;
+exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/class-call-check.js b/node_modules/babel-runtime/helpers/class-call-check.js
new file mode 100644
index 0000000..2018c20
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/class-call-check.js
@@ -0,0 +1,9 @@
+"use strict";
+
+exports["default"] = function (instance, Constructor) {
+ if (!(instance instanceof Constructor)) {
+ throw new TypeError("Cannot call a class as a function");
+ }
+};
+
+exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/classCallCheck.js b/node_modules/babel-runtime/helpers/classCallCheck.js
new file mode 100644
index 0000000..63d6d8f
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/classCallCheck.js
@@ -0,0 +1,9 @@
+"use strict";
+
+exports.__esModule = true;
+
+exports.default = function (instance, Constructor) {
+ if (!(instance instanceof Constructor)) {
+ throw new TypeError("Cannot call a class as a function");
+ }
+};
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/create-class.js b/node_modules/babel-runtime/helpers/create-class.js
new file mode 100644
index 0000000..235cbac
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/create-class.js
@@ -0,0 +1,24 @@
+"use strict";
+
+var _Object$defineProperty = require("babel-runtime/core-js/object/define-property")["default"];
+
+exports["default"] = (function () {
+ function defineProperties(target, props) {
+ for (var i = 0; i < props.length; i++) {
+ var descriptor = props[i];
+ descriptor.enumerable = descriptor.enumerable || false;
+ descriptor.configurable = true;
+ if ("value" in descriptor) descriptor.writable = true;
+
+ _Object$defineProperty(target, descriptor.key, descriptor);
+ }
+ }
+
+ return function (Constructor, protoProps, staticProps) {
+ if (protoProps) defineProperties(Constructor.prototype, protoProps);
+ if (staticProps) defineProperties(Constructor, staticProps);
+ return Constructor;
+ };
+})();
+
+exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/create-decorated-class.js b/node_modules/babel-runtime/helpers/create-decorated-class.js
new file mode 100644
index 0000000..301951c
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/create-decorated-class.js
@@ -0,0 +1,45 @@
+"use strict";
+
+var _Object$defineProperty = require("babel-runtime/core-js/object/define-property")["default"];
+
+exports["default"] = (function () {
+ function defineProperties(target, descriptors, initializers) {
+ for (var i = 0; i < descriptors.length; i++) {
+ var descriptor = descriptors[i];
+ var decorators = descriptor.decorators;
+ var key = descriptor.key;
+ delete descriptor.key;
+ delete descriptor.decorators;
+ descriptor.enumerable = descriptor.enumerable || false;
+ descriptor.configurable = true;
+ if ("value" in descriptor || descriptor.initializer) descriptor.writable = true;
+
+ if (decorators) {
+ for (var f = 0; f < decorators.length; f++) {
+ var decorator = decorators[f];
+
+ if (typeof decorator === "function") {
+ descriptor = decorator(target, key, descriptor) || descriptor;
+ } else {
+ throw new TypeError("The decorator for method " + descriptor.key + " is of the invalid type " + typeof decorator);
+ }
+ }
+
+ if (descriptor.initializer !== undefined) {
+ initializers[key] = descriptor;
+ continue;
+ }
+ }
+
+ _Object$defineProperty(target, key, descriptor);
+ }
+ }
+
+ return function (Constructor, protoProps, staticProps, protoInitializers, staticInitializers) {
+ if (protoProps) defineProperties(Constructor.prototype, protoProps, protoInitializers);
+ if (staticProps) defineProperties(Constructor, staticProps, staticInitializers);
+ return Constructor;
+ };
+})();
+
+exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/create-decorated-object.js b/node_modules/babel-runtime/helpers/create-decorated-object.js
new file mode 100644
index 0000000..eabf793
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/create-decorated-object.js
@@ -0,0 +1,40 @@
+"use strict";
+
+var _Object$defineProperty = require("babel-runtime/core-js/object/define-property")["default"];
+
+exports["default"] = function (descriptors) {
+ var target = {};
+
+ for (var i = 0; i < descriptors.length; i++) {
+ var descriptor = descriptors[i];
+ var decorators = descriptor.decorators;
+ var key = descriptor.key;
+ delete descriptor.key;
+ delete descriptor.decorators;
+ descriptor.enumerable = true;
+ descriptor.configurable = true;
+ if ("value" in descriptor || descriptor.initializer) descriptor.writable = true;
+
+ if (decorators) {
+ for (var f = 0; f < decorators.length; f++) {
+ var decorator = decorators[f];
+
+ if (typeof decorator === "function") {
+ descriptor = decorator(target, key, descriptor) || descriptor;
+ } else {
+ throw new TypeError("The decorator for method " + descriptor.key + " is of the invalid type " + typeof decorator);
+ }
+ }
+ }
+
+ if (descriptor.initializer) {
+ descriptor.value = descriptor.initializer.call(target);
+ }
+
+ _Object$defineProperty(target, key, descriptor);
+ }
+
+ return target;
+};
+
+exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/createClass.js b/node_modules/babel-runtime/helpers/createClass.js
new file mode 100644
index 0000000..6a90d8b
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/createClass.js
@@ -0,0 +1,27 @@
+"use strict";
+
+exports.__esModule = true;
+
+var _defineProperty = require("../core-js/object/define-property");
+
+var _defineProperty2 = _interopRequireDefault(_defineProperty);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+exports.default = (function () {
+ function defineProperties(target, props) {
+ for (var i = 0; i < props.length; i++) {
+ var descriptor = props[i];
+ descriptor.enumerable = descriptor.enumerable || false;
+ descriptor.configurable = true;
+ if ("value" in descriptor) descriptor.writable = true;
+ (0, _defineProperty2.default)(target, descriptor.key, descriptor);
+ }
+ }
+
+ return function (Constructor, protoProps, staticProps) {
+ if (protoProps) defineProperties(Constructor.prototype, protoProps);
+ if (staticProps) defineProperties(Constructor, staticProps);
+ return Constructor;
+ };
+})();
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/default-props.js b/node_modules/babel-runtime/helpers/default-props.js
new file mode 100644
index 0000000..fa4c550
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/default-props.js
@@ -0,0 +1,15 @@
+"use strict";
+
+exports["default"] = function (defaultProps, props) {
+ if (defaultProps) {
+ for (var propName in defaultProps) {
+ if (typeof props[propName] === "undefined") {
+ props[propName] = defaultProps[propName];
+ }
+ }
+ }
+
+ return props;
+};
+
+exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/defaults.js b/node_modules/babel-runtime/helpers/defaults.js
new file mode 100644
index 0000000..6350454
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/defaults.js
@@ -0,0 +1,25 @@
+"use strict";
+
+var _Object$getOwnPropertyNames = require("babel-runtime/core-js/object/get-own-property-names")["default"];
+
+var _Object$getOwnPropertyDescriptor = require("babel-runtime/core-js/object/get-own-property-descriptor")["default"];
+
+var _Object$defineProperty = require("babel-runtime/core-js/object/define-property")["default"];
+
+exports["default"] = function (obj, defaults) {
+ var keys = _Object$getOwnPropertyNames(defaults);
+
+ for (var i = 0; i < keys.length; i++) {
+ var key = keys[i];
+
+ var value = _Object$getOwnPropertyDescriptor(defaults, key);
+
+ if (value && value.configurable && obj[key] === undefined) {
+ _Object$defineProperty(obj, key, value);
+ }
+ }
+
+ return obj;
+};
+
+exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/define-decorated-property-descriptor.js b/node_modules/babel-runtime/helpers/define-decorated-property-descriptor.js
new file mode 100644
index 0000000..7889471
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/define-decorated-property-descriptor.js
@@ -0,0 +1,17 @@
+"use strict";
+
+var _Object$defineProperty = require("babel-runtime/core-js/object/define-property")["default"];
+
+exports["default"] = function (target, key, descriptors) {
+ var _descriptor = descriptors[key];
+ if (!_descriptor) return;
+ var descriptor = {};
+
+ for (var _key in _descriptor) descriptor[_key] = _descriptor[_key];
+
+ descriptor.value = descriptor.initializer ? descriptor.initializer.call(target) : undefined;
+
+ _Object$defineProperty(target, key, descriptor);
+};
+
+exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/define-enumerable-properties.js b/node_modules/babel-runtime/helpers/define-enumerable-properties.js
new file mode 100644
index 0000000..c60bbfc
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/define-enumerable-properties.js
@@ -0,0 +1 @@
+module.exports = require("./defineEnumerableProperties.js");
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/define-property.js b/node_modules/babel-runtime/helpers/define-property.js
new file mode 100644
index 0000000..de039a0
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/define-property.js
@@ -0,0 +1,20 @@
+"use strict";
+
+var _Object$defineProperty = require("babel-runtime/core-js/object/define-property")["default"];
+
+exports["default"] = function (obj, key, value) {
+ if (key in obj) {
+ _Object$defineProperty(obj, key, {
+ value: value,
+ enumerable: true,
+ configurable: true,
+ writable: true
+ });
+ } else {
+ obj[key] = value;
+ }
+
+ return obj;
+};
+
+exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/defineEnumerableProperties.js b/node_modules/babel-runtime/helpers/defineEnumerableProperties.js
new file mode 100644
index 0000000..503a1ab
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/defineEnumerableProperties.js
@@ -0,0 +1,20 @@
+"use strict";
+
+exports.__esModule = true;
+
+var _defineProperty = require("../core-js/object/define-property");
+
+var _defineProperty2 = _interopRequireDefault(_defineProperty);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+exports.default = function (obj, descs) {
+ for (var key in descs) {
+ var desc = descs[key];
+ desc.configurable = desc.enumerable = true;
+ if ("value" in desc) desc.writable = true;
+ (0, _defineProperty2.default)(obj, key, desc);
+ }
+
+ return obj;
+};
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/defineProperty.js b/node_modules/babel-runtime/helpers/defineProperty.js
new file mode 100644
index 0000000..b0f46d8
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/defineProperty.js
@@ -0,0 +1,24 @@
+"use strict";
+
+exports.__esModule = true;
+
+var _defineProperty = require("../core-js/object/define-property");
+
+var _defineProperty2 = _interopRequireDefault(_defineProperty);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+exports.default = function (obj, key, value) {
+ if (key in obj) {
+ (0, _defineProperty2.default)(obj, key, {
+ value: value,
+ enumerable: true,
+ configurable: true,
+ writable: true
+ });
+ } else {
+ obj[key] = value;
+ }
+
+ return obj;
+};
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/extends.js b/node_modules/babel-runtime/helpers/extends.js
new file mode 100644
index 0000000..b0e4367
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/extends.js
@@ -0,0 +1,19 @@
+"use strict";
+
+var _Object$assign = require("babel-runtime/core-js/object/assign")["default"];
+
+exports["default"] = _Object$assign || function (target) {
+ for (var i = 1; i < arguments.length; i++) {
+ var source = arguments[i];
+
+ for (var key in source) {
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
+ target[key] = source[key];
+ }
+ }
+ }
+
+ return target;
+};
+
+exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/get.js b/node_modules/babel-runtime/helpers/get.js
new file mode 100644
index 0000000..81d33f7
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/get.js
@@ -0,0 +1,44 @@
+"use strict";
+
+var _Object$getOwnPropertyDescriptor = require("babel-runtime/core-js/object/get-own-property-descriptor")["default"];
+
+exports["default"] = function get(_x, _x2, _x3) {
+ var _again = true;
+
+ _function: while (_again) {
+ var object = _x,
+ property = _x2,
+ receiver = _x3;
+ _again = false;
+ if (object === null) object = Function.prototype;
+
+ var desc = _Object$getOwnPropertyDescriptor(object, property);
+
+ if (desc === undefined) {
+ var parent = Object.getPrototypeOf(object);
+
+ if (parent === null) {
+ return undefined;
+ } else {
+ _x = parent;
+ _x2 = property;
+ _x3 = receiver;
+ _again = true;
+ desc = parent = undefined;
+ continue _function;
+ }
+ } else if ("value" in desc) {
+ return desc.value;
+ } else {
+ var getter = desc.get;
+
+ if (getter === undefined) {
+ return undefined;
+ }
+
+ return getter.call(receiver);
+ }
+ }
+};
+
+exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/has-own.js b/node_modules/babel-runtime/helpers/has-own.js
new file mode 100644
index 0000000..c97e0b7
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/has-own.js
@@ -0,0 +1,4 @@
+"use strict";
+
+exports["default"] = Object.prototype.hasOwnProperty;
+exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/inherits.js b/node_modules/babel-runtime/helpers/inherits.js
new file mode 100644
index 0000000..3413303
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/inherits.js
@@ -0,0 +1,23 @@
+"use strict";
+
+var _Object$create = require("babel-runtime/core-js/object/create")["default"];
+
+var _Object$setPrototypeOf = require("babel-runtime/core-js/object/set-prototype-of")["default"];
+
+exports["default"] = function (subClass, superClass) {
+ if (typeof superClass !== "function" && superClass !== null) {
+ throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);
+ }
+
+ subClass.prototype = _Object$create(superClass && superClass.prototype, {
+ constructor: {
+ value: subClass,
+ enumerable: false,
+ writable: true,
+ configurable: true
+ }
+ });
+ if (superClass) _Object$setPrototypeOf ? _Object$setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;
+};
+
+exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/instanceof.js b/node_modules/babel-runtime/helpers/instanceof.js
new file mode 100644
index 0000000..ad56106
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/instanceof.js
@@ -0,0 +1,13 @@
+"use strict";
+
+var _Symbol$hasInstance = require("babel-runtime/core-js/symbol/has-instance")["default"];
+
+exports["default"] = function (left, right) {
+ if (right != null && right[_Symbol$hasInstance]) {
+ return right[_Symbol$hasInstance](left);
+ } else {
+ return left instanceof right;
+ }
+};
+
+exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/interop-export-wildcard.js b/node_modules/babel-runtime/helpers/interop-export-wildcard.js
new file mode 100644
index 0000000..67910db
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/interop-export-wildcard.js
@@ -0,0 +1,9 @@
+"use strict";
+
+exports["default"] = function (obj, defaults) {
+ var newObj = defaults({}, obj);
+ delete newObj["default"];
+ return newObj;
+};
+
+exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/interop-require-default.js b/node_modules/babel-runtime/helpers/interop-require-default.js
new file mode 100644
index 0000000..7dcd774
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/interop-require-default.js
@@ -0,0 +1,9 @@
+"use strict";
+
+exports["default"] = function (obj) {
+ return obj && obj.__esModule ? obj : {
+ "default": obj
+ };
+};
+
+exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/interop-require-wildcard.js b/node_modules/babel-runtime/helpers/interop-require-wildcard.js
new file mode 100644
index 0000000..a44a169
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/interop-require-wildcard.js
@@ -0,0 +1,20 @@
+"use strict";
+
+exports["default"] = function (obj) {
+ if (obj && obj.__esModule) {
+ return obj;
+ } else {
+ var newObj = {};
+
+ if (obj != null) {
+ for (var key in obj) {
+ if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key];
+ }
+ }
+
+ newObj["default"] = obj;
+ return newObj;
+ }
+};
+
+exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/interop-require.js b/node_modules/babel-runtime/helpers/interop-require.js
new file mode 100644
index 0000000..475bfe8
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/interop-require.js
@@ -0,0 +1,7 @@
+"use strict";
+
+exports["default"] = function (obj) {
+ return obj && obj.__esModule ? obj["default"] : obj;
+};
+
+exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/interopRequireDefault.js b/node_modules/babel-runtime/helpers/interopRequireDefault.js
new file mode 100644
index 0000000..df808f6
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/interopRequireDefault.js
@@ -0,0 +1,9 @@
+"use strict";
+
+exports.__esModule = true;
+
+exports.default = function (obj) {
+ return obj && obj.__esModule ? obj : {
+ default: obj
+ };
+};
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/interopRequireWildcard.js b/node_modules/babel-runtime/helpers/interopRequireWildcard.js
new file mode 100644
index 0000000..d95b6ac
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/interopRequireWildcard.js
@@ -0,0 +1,20 @@
+"use strict";
+
+exports.__esModule = true;
+
+exports.default = function (obj) {
+ if (obj && obj.__esModule) {
+ return obj;
+ } else {
+ var newObj = {};
+
+ if (obj != null) {
+ for (var key in obj) {
+ if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key];
+ }
+ }
+
+ newObj.default = obj;
+ return newObj;
+ }
+};
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/jsx.js b/node_modules/babel-runtime/helpers/jsx.js
new file mode 100644
index 0000000..87c2069
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/jsx.js
@@ -0,0 +1,56 @@
+"use strict";
+
+exports.__esModule = true;
+
+var _for = require("../core-js/symbol/for");
+
+var _for2 = _interopRequireDefault(_for);
+
+var _symbol = require("../core-js/symbol");
+
+var _symbol2 = _interopRequireDefault(_symbol);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+exports.default = (function () {
+ var REACT_ELEMENT_TYPE = typeof _symbol2.default === "function" && _for2.default && (0, _for2.default)("react.element") || 0xeac7;
+ return function createRawReactElement(type, props, key, children) {
+ var defaultProps = type && type.defaultProps;
+ var childrenLength = arguments.length - 3;
+
+ if (!props && childrenLength !== 0) {
+ props = {};
+ }
+
+ if (props && defaultProps) {
+ for (var propName in defaultProps) {
+ if (props[propName] === void 0) {
+ props[propName] = defaultProps[propName];
+ }
+ }
+ } else if (!props) {
+ props = defaultProps || {};
+ }
+
+ if (childrenLength === 1) {
+ props.children = children;
+ } else if (childrenLength > 1) {
+ var childArray = Array(childrenLength);
+
+ for (var i = 0; i < childrenLength; i++) {
+ childArray[i] = arguments[i + 3];
+ }
+
+ props.children = childArray;
+ }
+
+ return {
+ $$typeof: REACT_ELEMENT_TYPE,
+ type: type,
+ key: key === undefined ? null : '' + key,
+ ref: null,
+ props: props,
+ _owner: null
+ };
+ };
+})();
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/new-arrow-check.js b/node_modules/babel-runtime/helpers/new-arrow-check.js
new file mode 100644
index 0000000..e81e0e9
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/new-arrow-check.js
@@ -0,0 +1,9 @@
+"use strict";
+
+exports["default"] = function (innerThis, boundThis) {
+ if (innerThis !== boundThis) {
+ throw new TypeError("Cannot instantiate an arrow function");
+ }
+};
+
+exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/newArrowCheck.js b/node_modules/babel-runtime/helpers/newArrowCheck.js
new file mode 100644
index 0000000..c15ee5c
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/newArrowCheck.js
@@ -0,0 +1,9 @@
+"use strict";
+
+exports.__esModule = true;
+
+exports.default = function (innerThis, boundThis) {
+ if (innerThis !== boundThis) {
+ throw new TypeError("Cannot instantiate an arrow function");
+ }
+};
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/object-destructuring-empty.js b/node_modules/babel-runtime/helpers/object-destructuring-empty.js
new file mode 100644
index 0000000..7bd0d95
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/object-destructuring-empty.js
@@ -0,0 +1,7 @@
+"use strict";
+
+exports["default"] = function (obj) {
+ if (obj == null) throw new TypeError("Cannot destructure undefined");
+};
+
+exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/object-without-properties.js b/node_modules/babel-runtime/helpers/object-without-properties.js
new file mode 100644
index 0000000..262126b
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/object-without-properties.js
@@ -0,0 +1,15 @@
+"use strict";
+
+exports["default"] = function (obj, keys) {
+ var target = {};
+
+ for (var i in obj) {
+ if (keys.indexOf(i) >= 0) continue;
+ if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;
+ target[i] = obj[i];
+ }
+
+ return target;
+};
+
+exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/objectDestructuringEmpty.js b/node_modules/babel-runtime/helpers/objectDestructuringEmpty.js
new file mode 100644
index 0000000..e2651c1
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/objectDestructuringEmpty.js
@@ -0,0 +1,7 @@
+"use strict";
+
+exports.__esModule = true;
+
+exports.default = function (obj) {
+ if (obj == null) throw new TypeError("Cannot destructure undefined");
+};
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/objectWithoutProperties.js b/node_modules/babel-runtime/helpers/objectWithoutProperties.js
new file mode 100644
index 0000000..e9f07e6
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/objectWithoutProperties.js
@@ -0,0 +1,15 @@
+"use strict";
+
+exports.__esModule = true;
+
+exports.default = function (obj, keys) {
+ var target = {};
+
+ for (var i in obj) {
+ if (keys.indexOf(i) >= 0) continue;
+ if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;
+ target[i] = obj[i];
+ }
+
+ return target;
+};
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/possible-constructor-return.js b/node_modules/babel-runtime/helpers/possible-constructor-return.js
new file mode 100644
index 0000000..09018d7
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/possible-constructor-return.js
@@ -0,0 +1 @@
+module.exports = require("./possibleConstructorReturn.js");
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/possibleConstructorReturn.js b/node_modules/babel-runtime/helpers/possibleConstructorReturn.js
new file mode 100644
index 0000000..957f425
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/possibleConstructorReturn.js
@@ -0,0 +1,17 @@
+"use strict";
+
+exports.__esModule = true;
+
+var _typeof2 = require("../helpers/typeof");
+
+var _typeof3 = _interopRequireDefault(_typeof2);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+exports.default = function (self, call) {
+ if (!self) {
+ throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
+ }
+
+ return call && ((typeof call === "undefined" ? "undefined" : (0, _typeof3.default)(call)) === "object" || typeof call === "function") ? call : self;
+};
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/self-global.js b/node_modules/babel-runtime/helpers/self-global.js
new file mode 100644
index 0000000..d796bd9
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/self-global.js
@@ -0,0 +1,4 @@
+"use strict";
+
+exports["default"] = typeof global === "undefined" ? self : global;
+exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/selfGlobal.js b/node_modules/babel-runtime/helpers/selfGlobal.js
new file mode 100644
index 0000000..378beb8
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/selfGlobal.js
@@ -0,0 +1,4 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = typeof global === "undefined" ? self : global;
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/set.js b/node_modules/babel-runtime/helpers/set.js
new file mode 100644
index 0000000..be264b4
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/set.js
@@ -0,0 +1,27 @@
+"use strict";
+
+var _Object$getOwnPropertyDescriptor = require("babel-runtime/core-js/object/get-own-property-descriptor")["default"];
+
+exports["default"] = function set(object, property, value, receiver) {
+ var desc = _Object$getOwnPropertyDescriptor(object, property);
+
+ if (desc === undefined) {
+ var parent = Object.getPrototypeOf(object);
+
+ if (parent !== null) {
+ set(parent, property, value, receiver);
+ }
+ } else if ("value" in desc && desc.writable) {
+ desc.value = value;
+ } else {
+ var setter = desc.set;
+
+ if (setter !== undefined) {
+ setter.call(receiver, value);
+ }
+ }
+
+ return value;
+};
+
+exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/slice.js b/node_modules/babel-runtime/helpers/slice.js
new file mode 100644
index 0000000..b00b0e8
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/slice.js
@@ -0,0 +1,4 @@
+"use strict";
+
+exports["default"] = Array.prototype.slice;
+exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/sliced-to-array-loose.js b/node_modules/babel-runtime/helpers/sliced-to-array-loose.js
new file mode 100644
index 0000000..05aff83
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/sliced-to-array-loose.js
@@ -0,0 +1,25 @@
+"use strict";
+
+var _isIterable = require("babel-runtime/core-js/is-iterable")["default"];
+
+var _getIterator = require("babel-runtime/core-js/get-iterator")["default"];
+
+exports["default"] = function (arr, i) {
+ if (Array.isArray(arr)) {
+ return arr;
+ } else if (_isIterable(Object(arr))) {
+ var _arr = [];
+
+ for (var _iterator = _getIterator(arr), _step; !(_step = _iterator.next()).done;) {
+ _arr.push(_step.value);
+
+ if (i && _arr.length === i) break;
+ }
+
+ return _arr;
+ } else {
+ throw new TypeError("Invalid attempt to destructure non-iterable instance");
+ }
+};
+
+exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/sliced-to-array.js b/node_modules/babel-runtime/helpers/sliced-to-array.js
new file mode 100644
index 0000000..3c1d096
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/sliced-to-array.js
@@ -0,0 +1,45 @@
+"use strict";
+
+var _getIterator = require("babel-runtime/core-js/get-iterator")["default"];
+
+var _isIterable = require("babel-runtime/core-js/is-iterable")["default"];
+
+exports["default"] = (function () {
+ function sliceIterator(arr, i) {
+ var _arr = [];
+ var _n = true;
+ var _d = false;
+ var _e = undefined;
+
+ try {
+ for (var _i = _getIterator(arr), _s; !(_n = (_s = _i.next()).done); _n = true) {
+ _arr.push(_s.value);
+
+ if (i && _arr.length === i) break;
+ }
+ } catch (err) {
+ _d = true;
+ _e = err;
+ } finally {
+ try {
+ if (!_n && _i["return"]) _i["return"]();
+ } finally {
+ if (_d) throw _e;
+ }
+ }
+
+ return _arr;
+ }
+
+ return function (arr, i) {
+ if (Array.isArray(arr)) {
+ return arr;
+ } else if (_isIterable(Object(arr))) {
+ return sliceIterator(arr, i);
+ } else {
+ throw new TypeError("Invalid attempt to destructure non-iterable instance");
+ }
+ };
+})();
+
+exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/slicedToArray.js b/node_modules/babel-runtime/helpers/slicedToArray.js
new file mode 100644
index 0000000..e77eecb
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/slicedToArray.js
@@ -0,0 +1,51 @@
+"use strict";
+
+exports.__esModule = true;
+
+var _isIterable2 = require("../core-js/is-iterable");
+
+var _isIterable3 = _interopRequireDefault(_isIterable2);
+
+var _getIterator2 = require("../core-js/get-iterator");
+
+var _getIterator3 = _interopRequireDefault(_getIterator2);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+exports.default = (function () {
+ function sliceIterator(arr, i) {
+ var _arr = [];
+ var _n = true;
+ var _d = false;
+ var _e = undefined;
+
+ try {
+ for (var _i = (0, _getIterator3.default)(arr), _s; !(_n = (_s = _i.next()).done); _n = true) {
+ _arr.push(_s.value);
+
+ if (i && _arr.length === i) break;
+ }
+ } catch (err) {
+ _d = true;
+ _e = err;
+ } finally {
+ try {
+ if (!_n && _i["return"]) _i["return"]();
+ } finally {
+ if (_d) throw _e;
+ }
+ }
+
+ return _arr;
+ }
+
+ return function (arr, i) {
+ if (Array.isArray(arr)) {
+ return arr;
+ } else if ((0, _isIterable3.default)(Object(arr))) {
+ return sliceIterator(arr, i);
+ } else {
+ throw new TypeError("Invalid attempt to destructure non-iterable instance");
+ }
+ };
+})();
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/slicedToArrayLoose.js b/node_modules/babel-runtime/helpers/slicedToArrayLoose.js
new file mode 100644
index 0000000..012bbd8
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/slicedToArrayLoose.js
@@ -0,0 +1,31 @@
+"use strict";
+
+exports.__esModule = true;
+
+var _getIterator2 = require("../core-js/get-iterator");
+
+var _getIterator3 = _interopRequireDefault(_getIterator2);
+
+var _isIterable2 = require("../core-js/is-iterable");
+
+var _isIterable3 = _interopRequireDefault(_isIterable2);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+exports.default = function (arr, i) {
+ if (Array.isArray(arr)) {
+ return arr;
+ } else if ((0, _isIterable3.default)(Object(arr))) {
+ var _arr = [];
+
+ for (var _iterator = (0, _getIterator3.default)(arr), _step; !(_step = _iterator.next()).done;) {
+ _arr.push(_step.value);
+
+ if (i && _arr.length === i) break;
+ }
+
+ return _arr;
+ } else {
+ throw new TypeError("Invalid attempt to destructure non-iterable instance");
+ }
+};
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/tagged-template-literal-loose.js b/node_modules/babel-runtime/helpers/tagged-template-literal-loose.js
new file mode 100644
index 0000000..5695aba
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/tagged-template-literal-loose.js
@@ -0,0 +1,8 @@
+"use strict";
+
+exports["default"] = function (strings, raw) {
+ strings.raw = raw;
+ return strings;
+};
+
+exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/tagged-template-literal.js b/node_modules/babel-runtime/helpers/tagged-template-literal.js
new file mode 100644
index 0000000..fdbed21
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/tagged-template-literal.js
@@ -0,0 +1,15 @@
+"use strict";
+
+var _Object$freeze = require("babel-runtime/core-js/object/freeze")["default"];
+
+var _Object$defineProperties = require("babel-runtime/core-js/object/define-properties")["default"];
+
+exports["default"] = function (strings, raw) {
+ return _Object$freeze(_Object$defineProperties(strings, {
+ raw: {
+ value: _Object$freeze(raw)
+ }
+ }));
+};
+
+exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/taggedTemplateLiteral.js b/node_modules/babel-runtime/helpers/taggedTemplateLiteral.js
new file mode 100644
index 0000000..060dcf9
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/taggedTemplateLiteral.js
@@ -0,0 +1,21 @@
+"use strict";
+
+exports.__esModule = true;
+
+var _defineProperties = require("../core-js/object/define-properties");
+
+var _defineProperties2 = _interopRequireDefault(_defineProperties);
+
+var _freeze = require("../core-js/object/freeze");
+
+var _freeze2 = _interopRequireDefault(_freeze);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+exports.default = function (strings, raw) {
+ return (0, _freeze2.default)((0, _defineProperties2.default)(strings, {
+ raw: {
+ value: (0, _freeze2.default)(raw)
+ }
+ }));
+};
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/taggedTemplateLiteralLoose.js b/node_modules/babel-runtime/helpers/taggedTemplateLiteralLoose.js
new file mode 100644
index 0000000..76c4930
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/taggedTemplateLiteralLoose.js
@@ -0,0 +1,8 @@
+"use strict";
+
+exports.__esModule = true;
+
+exports.default = function (strings, raw) {
+ strings.raw = raw;
+ return strings;
+};
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/temporal-assert-defined.js b/node_modules/babel-runtime/helpers/temporal-assert-defined.js
new file mode 100644
index 0000000..4813988
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/temporal-assert-defined.js
@@ -0,0 +1,11 @@
+"use strict";
+
+exports["default"] = function (val, name, undef) {
+ if (val === undef) {
+ throw new ReferenceError(name + " is not defined - temporal dead zone");
+ }
+
+ return true;
+};
+
+exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/temporal-ref.js b/node_modules/babel-runtime/helpers/temporal-ref.js
new file mode 100644
index 0000000..cf2e4e4
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/temporal-ref.js
@@ -0,0 +1 @@
+module.exports = require("./temporalRef.js");
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/temporal-undefined.js b/node_modules/babel-runtime/helpers/temporal-undefined.js
new file mode 100644
index 0000000..690f6f6
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/temporal-undefined.js
@@ -0,0 +1,4 @@
+"use strict";
+
+exports["default"] = {};
+exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/temporalRef.js b/node_modules/babel-runtime/helpers/temporalRef.js
new file mode 100644
index 0000000..49b8b24
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/temporalRef.js
@@ -0,0 +1,11 @@
+"use strict";
+
+exports.__esModule = true;
+
+exports.default = function (val, name, undef) {
+ if (val === undef) {
+ throw new ReferenceError(name + " is not defined - temporal dead zone");
+ } else {
+ return val;
+ }
+};
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/temporalUndefined.js b/node_modules/babel-runtime/helpers/temporalUndefined.js
new file mode 100644
index 0000000..4066de1
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/temporalUndefined.js
@@ -0,0 +1,4 @@
+"use strict";
+
+exports.__esModule = true;
+exports.default = {};
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/to-array.js b/node_modules/babel-runtime/helpers/to-array.js
new file mode 100644
index 0000000..8122043
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/to-array.js
@@ -0,0 +1,9 @@
+"use strict";
+
+var _Array$from = require("babel-runtime/core-js/array/from")["default"];
+
+exports["default"] = function (arr) {
+ return Array.isArray(arr) ? arr : _Array$from(arr);
+};
+
+exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/to-consumable-array.js b/node_modules/babel-runtime/helpers/to-consumable-array.js
new file mode 100644
index 0000000..a8c3e6e
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/to-consumable-array.js
@@ -0,0 +1,15 @@
+"use strict";
+
+var _Array$from = require("babel-runtime/core-js/array/from")["default"];
+
+exports["default"] = function (arr) {
+ if (Array.isArray(arr)) {
+ for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];
+
+ return arr2;
+ } else {
+ return _Array$from(arr);
+ }
+};
+
+exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/toArray.js b/node_modules/babel-runtime/helpers/toArray.js
new file mode 100644
index 0000000..8601a44
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/toArray.js
@@ -0,0 +1,13 @@
+"use strict";
+
+exports.__esModule = true;
+
+var _from = require("../core-js/array/from");
+
+var _from2 = _interopRequireDefault(_from);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+exports.default = function (arr) {
+ return Array.isArray(arr) ? arr : (0, _from2.default)(arr);
+};
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/toConsumableArray.js b/node_modules/babel-runtime/helpers/toConsumableArray.js
new file mode 100644
index 0000000..c4e34f5
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/toConsumableArray.js
@@ -0,0 +1,21 @@
+"use strict";
+
+exports.__esModule = true;
+
+var _from = require("../core-js/array/from");
+
+var _from2 = _interopRequireDefault(_from);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+exports.default = function (arr) {
+ if (Array.isArray(arr)) {
+ for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {
+ arr2[i] = arr[i];
+ }
+
+ return arr2;
+ } else {
+ return (0, _from2.default)(arr);
+ }
+};
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/typeof-react-element.js b/node_modules/babel-runtime/helpers/typeof-react-element.js
new file mode 100644
index 0000000..744c263
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/typeof-react-element.js
@@ -0,0 +1,6 @@
+"use strict";
+
+var _Symbol = require("babel-runtime/core-js/symbol")["default"];
+
+exports["default"] = typeof _Symbol === "function" && _Symbol."for" && _Symbol."for"("react.element") || 60103;
+exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/babel-runtime/helpers/typeof.js b/node_modules/babel-runtime/helpers/typeof.js
new file mode 100644
index 0000000..fa1f5d9
--- /dev/null
+++ b/node_modules/babel-runtime/helpers/typeof.js
@@ -0,0 +1,9 @@
+"use strict";
+
+var _Symbol = require("babel-runtime/core-js/symbol")["default"];
+
+exports["default"] = function (obj) {
+ return obj && obj.constructor === _Symbol ? "symbol" : typeof obj;
+};
+
+exports.__esModule = true;
\ No newline at end of file
diff --git a/node_modules/babel-runtime/package.json b/node_modules/babel-runtime/package.json
new file mode 100644
index 0000000..e55c04a
--- /dev/null
+++ b/node_modules/babel-runtime/package.json
@@ -0,0 +1,136 @@
+{
+ "_args": [
+ [
+ "babel-runtime@^5.0.0",
+ "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-core"
+ ]
+ ],
+ "_from": "babel-runtime@>=5.0.0 <6.0.0",
+ "_id": "babel-runtime@5.8.35",
+ "_inCache": true,
+ "_installable": true,
+ "_location": "/babel-runtime",
+ "_nodeVersion": "0.12.7",
+ "_npmUser": {
+ "email": "sebmck@gmail.com",
+ "name": "sebmck"
+ },
+ "_npmVersion": "2.11.3",
+ "_phantomChildren": {},
+ "_requested": {
+ "name": "babel-runtime",
+ "raw": "babel-runtime@^5.0.0",
+ "rawSpec": "^5.0.0",
+ "scope": null,
+ "spec": ">=5.0.0 <6.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/babel-code-frame",
+ "/babel-core",
+ "/babel-generator",
+ "/babel-helper-builder-react-jsx",
+ "/babel-helper-call-delegate",
+ "/babel-helper-define-map",
+ "/babel-helper-function-name",
+ "/babel-helper-get-function-arity",
+ "/babel-helper-hoist-variables",
+ "/babel-helper-optimise-call-expression",
+ "/babel-helper-regex",
+ "/babel-helper-replace-supers",
+ "/babel-helpers",
+ "/babel-messages",
+ "/babel-plugin-check-es2015-constants",
+ "/babel-plugin-syntax-async-functions",
+ "/babel-plugin-syntax-flow",
+ "/babel-plugin-syntax-jsx",
+ "/babel-plugin-transform-es2015-arrow-functions",
+ "/babel-plugin-transform-es2015-block-scoped-functions",
+ "/babel-plugin-transform-es2015-block-scoping",
+ "/babel-plugin-transform-es2015-classes",
+ "/babel-plugin-transform-es2015-computed-properties",
+ "/babel-plugin-transform-es2015-destructuring",
+ "/babel-plugin-transform-es2015-duplicate-keys",
+ "/babel-plugin-transform-es2015-for-of",
+ "/babel-plugin-transform-es2015-function-name",
+ "/babel-plugin-transform-es2015-literals",
+ "/babel-plugin-transform-es2015-modules-commonjs",
+ "/babel-plugin-transform-es2015-object-super",
+ "/babel-plugin-transform-es2015-parameters",
+ "/babel-plugin-transform-es2015-shorthand-properties",
+ "/babel-plugin-transform-es2015-spread",
+ "/babel-plugin-transform-es2015-sticky-regex",
+ "/babel-plugin-transform-es2015-template-literals",
+ "/babel-plugin-transform-es2015-typeof-symbol",
+ "/babel-plugin-transform-es2015-unicode-regex",
+ "/babel-plugin-transform-flow-strip-types",
+ "/babel-plugin-transform-react-display-name",
+ "/babel-plugin-transform-react-jsx",
+ "/babel-plugin-transform-react-jsx-source",
+ "/babel-plugin-transform-regenerator",
+ "/babel-plugin-transform-strict-mode",
+ "/babel-register",
+ "/babel-template",
+ "/babel-traverse",
+ "/babel-types",
+ "/babylon"
+ ],
+ "_resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-5.8.35.tgz",
+ "_shasum": "c4dfe064a3ce189089630d891706ab7443da64f7",
+ "_shrinkwrap": null,
+ "_spec": "babel-runtime@^5.0.0",
+ "_where": "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-core",
+ "author": {
+ "email": "sebmck@gmail.com",
+ "name": "Sebastian McKenzie"
+ },
+ "bugs": {
+ "url": "https://github.com/babel/babel/issues"
+ },
+ "dependencies": {
+ "core-js": "^1.0.0"
+ },
+ "description": "babel selfContained runtime",
+ "devDependencies": {
+ "babel-plugin-runtime": "^1.0.7",
+ "regenerator": "^0.8.34"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "c4dfe064a3ce189089630d891706ab7443da64f7",
+ "tarball": "http://registry.npmjs.org/babel-runtime/-/babel-runtime-5.8.35.tgz"
+ },
+ "homepage": "https://github.com/babel/babel#readme",
+ "license": "MIT",
+ "maintainers": [
+ {
+ "name": "amasad",
+ "email": "amjad.masad@gmail.com"
+ },
+ {
+ "name": "hzoo",
+ "email": "hi@henryzoo.com"
+ },
+ {
+ "name": "jmm",
+ "email": "npm-public@jessemccarthy.net"
+ },
+ {
+ "name": "loganfsmyth",
+ "email": "loganfsmyth@gmail.com"
+ },
+ {
+ "name": "sebmck",
+ "email": "sebmck@gmail.com"
+ }
+ ],
+ "name": "babel-runtime",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/babel/babel.git"
+ },
+ "scripts": {},
+ "version": "5.8.35"
+}
diff --git a/node_modules/babel-runtime/regenerator/index.js b/node_modules/babel-runtime/regenerator/index.js
new file mode 100644
index 0000000..d61f886
--- /dev/null
+++ b/node_modules/babel-runtime/regenerator/index.js
@@ -0,0 +1,33 @@
+// This method of obtaining a reference to the global object needs to be
+// kept identical to the way it is obtained in runtime.js
+var g =
+ typeof global === "object" ? global :
+ typeof window === "object" ? window :
+ typeof self === "object" ? self : this;
+
+// Use `getOwnPropertyNames` because not all browsers support calling
+// `hasOwnProperty` on the global `self` object in a worker. See #183.
+var hadRuntime = g.regeneratorRuntime &&
+ Object.getOwnPropertyNames(g).indexOf("regeneratorRuntime") >= 0;
+
+// Save the old regeneratorRuntime in case it needs to be restored later.
+var oldRuntime = hadRuntime && g.regeneratorRuntime;
+
+// Force reevalutation of runtime.js.
+g.regeneratorRuntime = undefined;
+
+module.exports = require("./runtime");
+
+if (hadRuntime) {
+ // Restore the original runtime.
+ g.regeneratorRuntime = oldRuntime;
+} else {
+ // Remove the global property added by runtime.js.
+ try {
+ delete g.regeneratorRuntime;
+ } catch(e) {
+ g.regeneratorRuntime = undefined;
+ }
+}
+
+module.exports = { "default": module.exports, __esModule: true };
diff --git a/node_modules/babel-runtime/regenerator/runtime.js b/node_modules/babel-runtime/regenerator/runtime.js
new file mode 100644
index 0000000..90f3221
--- /dev/null
+++ b/node_modules/babel-runtime/regenerator/runtime.js
@@ -0,0 +1,647 @@
+/**
+ * Copyright (c) 2014, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * https://raw.github.com/facebook/regenerator/master/LICENSE file. An
+ * additional grant of patent rights can be found in the PATENTS file in
+ * the same directory.
+ */
+
+"use strict";
+
+var _Symbol = require("babel-runtime/core-js/symbol")["default"];
+
+var _Object$create = require("babel-runtime/core-js/object/create")["default"];
+
+var _Object$setPrototypeOf = require("babel-runtime/core-js/object/set-prototype-of")["default"];
+
+var _Promise = require("babel-runtime/core-js/promise")["default"];
+
+!(function (global) {
+ "use strict";
+
+ var hasOwn = Object.prototype.hasOwnProperty;
+ var undefined; // More compressible than void 0.
+ var $Symbol = typeof _Symbol === "function" ? _Symbol : {};
+ var iteratorSymbol = $Symbol.iterator || "@@iterator";
+ var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag";
+
+ var inModule = typeof module === "object";
+ var runtime = global.regeneratorRuntime;
+ if (runtime) {
+ if (inModule) {
+ // If regeneratorRuntime is defined globally and we're in a module,
+ // make the exports object identical to regeneratorRuntime.
+ module.exports = runtime;
+ }
+ // Don't bother evaluating the rest of this file if the runtime was
+ // already defined globally.
+ return;
+ }
+
+ // Define the runtime globally (as expected by generated code) as either
+ // module.exports (if we're in a module) or a new, empty object.
+ runtime = global.regeneratorRuntime = inModule ? module.exports : {};
+
+ function wrap(innerFn, outerFn, self, tryLocsList) {
+ // If outerFn provided, then outerFn.prototype instanceof Generator.
+ var generator = _Object$create((outerFn || Generator).prototype);
+ var context = new Context(tryLocsList || []);
+
+ // The ._invoke method unifies the implementations of the .next,
+ // .throw, and .return methods.
+ generator._invoke = makeInvokeMethod(innerFn, self, context);
+
+ return generator;
+ }
+ runtime.wrap = wrap;
+
+ // Try/catch helper to minimize deoptimizations. Returns a completion
+ // record like context.tryEntries[i].completion. This interface could
+ // have been (and was previously) designed to take a closure to be
+ // invoked without arguments, but in all the cases we care about we
+ // already have an existing method we want to call, so there's no need
+ // to create a new function object. We can even get away with assuming
+ // the method takes exactly one argument, since that happens to be true
+ // in every case, so we don't have to touch the arguments object. The
+ // only additional allocation required is the completion record, which
+ // has a stable shape and so hopefully should be cheap to allocate.
+ function tryCatch(fn, obj, arg) {
+ try {
+ return { type: "normal", arg: fn.call(obj, arg) };
+ } catch (err) {
+ return { type: "throw", arg: err };
+ }
+ }
+
+ var GenStateSuspendedStart = "suspendedStart";
+ var GenStateSuspendedYield = "suspendedYield";
+ var GenStateExecuting = "executing";
+ var GenStateCompleted = "completed";
+
+ // Returning this object from the innerFn has the same effect as
+ // breaking out of the dispatch switch statement.
+ var ContinueSentinel = {};
+
+ // Dummy constructor functions that we use as the .constructor and
+ // .constructor.prototype properties for functions that return Generator
+ // objects. For full spec compliance, you may wish to configure your
+ // minifier not to mangle the names of these two functions.
+ function Generator() {}
+ function GeneratorFunction() {}
+ function GeneratorFunctionPrototype() {}
+
+ var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype;
+ GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;
+ GeneratorFunctionPrototype.constructor = GeneratorFunction;
+ GeneratorFunctionPrototype[toStringTagSymbol] = GeneratorFunction.displayName = "GeneratorFunction";
+
+ // Helper for defining the .next, .throw, and .return methods of the
+ // Iterator interface in terms of a single ._invoke method.
+ function defineIteratorMethods(prototype) {
+ ["next", "throw", "return"].forEach(function (method) {
+ prototype[method] = function (arg) {
+ return this._invoke(method, arg);
+ };
+ });
+ }
+
+ runtime.isGeneratorFunction = function (genFun) {
+ var ctor = typeof genFun === "function" && genFun.constructor;
+ return ctor ? ctor === GeneratorFunction ||
+ // For the native GeneratorFunction constructor, the best we can
+ // do is to check its .name property.
+ (ctor.displayName || ctor.name) === "GeneratorFunction" : false;
+ };
+
+ runtime.mark = function (genFun) {
+ if (_Object$setPrototypeOf) {
+ _Object$setPrototypeOf(genFun, GeneratorFunctionPrototype);
+ } else {
+ genFun.__proto__ = GeneratorFunctionPrototype;
+ if (!(toStringTagSymbol in genFun)) {
+ genFun[toStringTagSymbol] = "GeneratorFunction";
+ }
+ }
+ genFun.prototype = _Object$create(Gp);
+ return genFun;
+ };
+
+ // Within the body of any async function, `await x` is transformed to
+ // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test
+ // `value instanceof AwaitArgument` to determine if the yielded value is
+ // meant to be awaited. Some may consider the name of this method too
+ // cutesy, but they are curmudgeons.
+ runtime.awrap = function (arg) {
+ return new AwaitArgument(arg);
+ };
+
+ function AwaitArgument(arg) {
+ this.arg = arg;
+ }
+
+ function AsyncIterator(generator) {
+ function invoke(method, arg, resolve, reject) {
+ var record = tryCatch(generator[method], generator, arg);
+ if (record.type === "throw") {
+ reject(record.arg);
+ } else {
+ var result = record.arg;
+ var value = result.value;
+ if (value instanceof AwaitArgument) {
+ return _Promise.resolve(value.arg).then(function (value) {
+ invoke("next", value, resolve, reject);
+ }, function (err) {
+ invoke("throw", err, resolve, reject);
+ });
+ }
+
+ return _Promise.resolve(value).then(function (unwrapped) {
+ // When a yielded Promise is resolved, its final value becomes
+ // the .value of the Promise<{value,done}> result for the
+ // current iteration. If the Promise is rejected, however, the
+ // result for this iteration will be rejected with the same
+ // reason. Note that rejections of yielded Promises are not
+ // thrown back into the generator function, as is the case
+ // when an awaited Promise is rejected. This difference in
+ // behavior between yield and await is important, because it
+ // allows the consumer to decide what to do with the yielded
+ // rejection (swallow it and continue, manually .throw it back
+ // into the generator, abandon iteration, whatever). With
+ // await, by contrast, there is no opportunity to examine the
+ // rejection reason outside the generator function, so the
+ // only option is to throw it from the await expression, and
+ // let the generator function handle the exception.
+ result.value = unwrapped;
+ resolve(result);
+ }, reject);
+ }
+ }
+
+ if (typeof process === "object" && process.domain) {
+ invoke = process.domain.bind(invoke);
+ }
+
+ var previousPromise;
+
+ function enqueue(method, arg) {
+ function callInvokeWithMethodAndArg() {
+ return new _Promise(function (resolve, reject) {
+ invoke(method, arg, resolve, reject);
+ });
+ }
+
+ return previousPromise =
+ // If enqueue has been called before, then we want to wait until
+ // all previous Promises have been resolved before calling invoke,
+ // so that results are always delivered in the correct order. If
+ // enqueue has not been called before, then it is important to
+ // call invoke immediately, without waiting on a callback to fire,
+ // so that the async generator function has the opportunity to do
+ // any necessary setup in a predictable way. This predictability
+ // is why the Promise constructor synchronously invokes its
+ // executor callback, and why async functions synchronously
+ // execute code before the first await. Since we implement simple
+ // async functions in terms of async generators, it is especially
+ // important to get this right, even though it requires care.
+ previousPromise ? previousPromise.then(callInvokeWithMethodAndArg,
+ // Avoid propagating failures to Promises returned by later
+ // invocations of the iterator.
+ callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();
+ }
+
+ // Define the unified helper method that is used to implement .next,
+ // .throw, and .return (see defineIteratorMethods).
+ this._invoke = enqueue;
+ }
+
+ defineIteratorMethods(AsyncIterator.prototype);
+
+ // Note that simple async functions are implemented on top of
+ // AsyncIterator objects; they just return a Promise for the value of
+ // the final result produced by the iterator.
+ runtime.async = function (innerFn, outerFn, self, tryLocsList) {
+ var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList));
+
+ return runtime.isGeneratorFunction(outerFn) ? iter // If outerFn is a generator, return the full iterator.
+ : iter.next().then(function (result) {
+ return result.done ? result.value : iter.next();
+ });
+ };
+
+ function makeInvokeMethod(innerFn, self, context) {
+ var state = GenStateSuspendedStart;
+
+ return function invoke(method, arg) {
+ if (state === GenStateExecuting) {
+ throw new Error("Generator is already running");
+ }
+
+ if (state === GenStateCompleted) {
+ if (method === "throw") {
+ throw arg;
+ }
+
+ // Be forgiving, per 25.3.3.3.3 of the spec:
+ // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume
+ return doneResult();
+ }
+
+ while (true) {
+ var delegate = context.delegate;
+ if (delegate) {
+ if (method === "return" || method === "throw" && delegate.iterator[method] === undefined) {
+ // A return or throw (when the delegate iterator has no throw
+ // method) always terminates the yield* loop.
+ context.delegate = null;
+
+ // If the delegate iterator has a return method, give it a
+ // chance to clean up.
+ var returnMethod = delegate.iterator["return"];
+ if (returnMethod) {
+ var record = tryCatch(returnMethod, delegate.iterator, arg);
+ if (record.type === "throw") {
+ // If the return method threw an exception, let that
+ // exception prevail over the original return or throw.
+ method = "throw";
+ arg = record.arg;
+ continue;
+ }
+ }
+
+ if (method === "return") {
+ // Continue with the outer return, now that the delegate
+ // iterator has been terminated.
+ continue;
+ }
+ }
+
+ var record = tryCatch(delegate.iterator[method], delegate.iterator, arg);
+
+ if (record.type === "throw") {
+ context.delegate = null;
+
+ // Like returning generator.throw(uncaught), but without the
+ // overhead of an extra function call.
+ method = "throw";
+ arg = record.arg;
+ continue;
+ }
+
+ // Delegate generator ran and handled its own exceptions so
+ // regardless of what the method was, we continue as if it is
+ // "next" with an undefined arg.
+ method = "next";
+ arg = undefined;
+
+ var info = record.arg;
+ if (info.done) {
+ context[delegate.resultName] = info.value;
+ context.next = delegate.nextLoc;
+ } else {
+ state = GenStateSuspendedYield;
+ return info;
+ }
+
+ context.delegate = null;
+ }
+
+ if (method === "next") {
+ if (state === GenStateSuspendedYield) {
+ context.sent = arg;
+ } else {
+ context.sent = undefined;
+ }
+ } else if (method === "throw") {
+ if (state === GenStateSuspendedStart) {
+ state = GenStateCompleted;
+ throw arg;
+ }
+
+ if (context.dispatchException(arg)) {
+ // If the dispatched exception was caught by a catch block,
+ // then let that catch block handle the exception normally.
+ method = "next";
+ arg = undefined;
+ }
+ } else if (method === "return") {
+ context.abrupt("return", arg);
+ }
+
+ state = GenStateExecuting;
+
+ var record = tryCatch(innerFn, self, context);
+ if (record.type === "normal") {
+ // If an exception is thrown from innerFn, we leave state ===
+ // GenStateExecuting and loop back for another invocation.
+ state = context.done ? GenStateCompleted : GenStateSuspendedYield;
+
+ var info = {
+ value: record.arg,
+ done: context.done
+ };
+
+ if (record.arg === ContinueSentinel) {
+ if (context.delegate && method === "next") {
+ // Deliberately forget the last sent value so that we don't
+ // accidentally pass it on to the delegate.
+ arg = undefined;
+ }
+ } else {
+ return info;
+ }
+ } else if (record.type === "throw") {
+ state = GenStateCompleted;
+ // Dispatch the exception by looping back around to the
+ // context.dispatchException(arg) call above.
+ method = "throw";
+ arg = record.arg;
+ }
+ }
+ };
+ }
+
+ // Define Generator.prototype.{next,throw,return} in terms of the
+ // unified ._invoke helper method.
+ defineIteratorMethods(Gp);
+
+ Gp[iteratorSymbol] = function () {
+ return this;
+ };
+
+ Gp[toStringTagSymbol] = "Generator";
+
+ Gp.toString = function () {
+ return "[object Generator]";
+ };
+
+ function pushTryEntry(locs) {
+ var entry = { tryLoc: locs[0] };
+
+ if (1 in locs) {
+ entry.catchLoc = locs[1];
+ }
+
+ if (2 in locs) {
+ entry.finallyLoc = locs[2];
+ entry.afterLoc = locs[3];
+ }
+
+ this.tryEntries.push(entry);
+ }
+
+ function resetTryEntry(entry) {
+ var record = entry.completion || {};
+ record.type = "normal";
+ delete record.arg;
+ entry.completion = record;
+ }
+
+ function Context(tryLocsList) {
+ // The root entry object (effectively a try statement without a catch
+ // or a finally block) gives us a place to store values thrown from
+ // locations where there is no enclosing try statement.
+ this.tryEntries = [{ tryLoc: "root" }];
+ tryLocsList.forEach(pushTryEntry, this);
+ this.reset(true);
+ }
+
+ runtime.keys = function (object) {
+ var keys = [];
+ for (var key in object) {
+ keys.push(key);
+ }
+ keys.reverse();
+
+ // Rather than returning an object with a next method, we keep
+ // things simple and return the next function itself.
+ return function next() {
+ while (keys.length) {
+ var key = keys.pop();
+ if (key in object) {
+ next.value = key;
+ next.done = false;
+ return next;
+ }
+ }
+
+ // To avoid creating an additional object, we just hang the .value
+ // and .done properties off the next function object itself. This
+ // also ensures that the minifier will not anonymize the function.
+ next.done = true;
+ return next;
+ };
+ };
+
+ function values(iterable) {
+ if (iterable) {
+ var iteratorMethod = iterable[iteratorSymbol];
+ if (iteratorMethod) {
+ return iteratorMethod.call(iterable);
+ }
+
+ if (typeof iterable.next === "function") {
+ return iterable;
+ }
+
+ if (!isNaN(iterable.length)) {
+ var i = -1,
+ next = function next() {
+ while (++i < iterable.length) {
+ if (hasOwn.call(iterable, i)) {
+ next.value = iterable[i];
+ next.done = false;
+ return next;
+ }
+ }
+
+ next.value = undefined;
+ next.done = true;
+
+ return next;
+ };
+
+ return next.next = next;
+ }
+ }
+
+ // Return an iterator with no values.
+ return { next: doneResult };
+ }
+ runtime.values = values;
+
+ function doneResult() {
+ return { value: undefined, done: true };
+ }
+
+ Context.prototype = {
+ constructor: Context,
+
+ reset: function reset(skipTempReset) {
+ this.prev = 0;
+ this.next = 0;
+ this.sent = undefined;
+ this.done = false;
+ this.delegate = null;
+
+ this.tryEntries.forEach(resetTryEntry);
+
+ if (!skipTempReset) {
+ for (var name in this) {
+ // Not sure about the optimal order of these conditions:
+ if (name.charAt(0) === "t" && hasOwn.call(this, name) && !isNaN(+name.slice(1))) {
+ this[name] = undefined;
+ }
+ }
+ }
+ },
+
+ stop: function stop() {
+ this.done = true;
+
+ var rootEntry = this.tryEntries[0];
+ var rootRecord = rootEntry.completion;
+ if (rootRecord.type === "throw") {
+ throw rootRecord.arg;
+ }
+
+ return this.rval;
+ },
+
+ dispatchException: function dispatchException(exception) {
+ if (this.done) {
+ throw exception;
+ }
+
+ var context = this;
+ function handle(loc, caught) {
+ record.type = "throw";
+ record.arg = exception;
+ context.next = loc;
+ return !!caught;
+ }
+
+ for (var i = this.tryEntries.length - 1; i >= 0; --i) {
+ var entry = this.tryEntries[i];
+ var record = entry.completion;
+
+ if (entry.tryLoc === "root") {
+ // Exception thrown outside of any try block that could handle
+ // it, so set the completion value of the entire function to
+ // throw the exception.
+ return handle("end");
+ }
+
+ if (entry.tryLoc <= this.prev) {
+ var hasCatch = hasOwn.call(entry, "catchLoc");
+ var hasFinally = hasOwn.call(entry, "finallyLoc");
+
+ if (hasCatch && hasFinally) {
+ if (this.prev < entry.catchLoc) {
+ return handle(entry.catchLoc, true);
+ } else if (this.prev < entry.finallyLoc) {
+ return handle(entry.finallyLoc);
+ }
+ } else if (hasCatch) {
+ if (this.prev < entry.catchLoc) {
+ return handle(entry.catchLoc, true);
+ }
+ } else if (hasFinally) {
+ if (this.prev < entry.finallyLoc) {
+ return handle(entry.finallyLoc);
+ }
+ } else {
+ throw new Error("try statement without catch or finally");
+ }
+ }
+ }
+ },
+
+ abrupt: function abrupt(type, arg) {
+ for (var i = this.tryEntries.length - 1; i >= 0; --i) {
+ var entry = this.tryEntries[i];
+ if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) {
+ var finallyEntry = entry;
+ break;
+ }
+ }
+
+ if (finallyEntry && (type === "break" || type === "continue") && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc) {
+ // Ignore the finally entry if control is not jumping to a
+ // location outside the try/catch block.
+ finallyEntry = null;
+ }
+
+ var record = finallyEntry ? finallyEntry.completion : {};
+ record.type = type;
+ record.arg = arg;
+
+ if (finallyEntry) {
+ this.next = finallyEntry.finallyLoc;
+ } else {
+ this.complete(record);
+ }
+
+ return ContinueSentinel;
+ },
+
+ complete: function complete(record, afterLoc) {
+ if (record.type === "throw") {
+ throw record.arg;
+ }
+
+ if (record.type === "break" || record.type === "continue") {
+ this.next = record.arg;
+ } else if (record.type === "return") {
+ this.rval = record.arg;
+ this.next = "end";
+ } else if (record.type === "normal" && afterLoc) {
+ this.next = afterLoc;
+ }
+ },
+
+ finish: function finish(finallyLoc) {
+ for (var i = this.tryEntries.length - 1; i >= 0; --i) {
+ var entry = this.tryEntries[i];
+ if (entry.finallyLoc === finallyLoc) {
+ this.complete(entry.completion, entry.afterLoc);
+ resetTryEntry(entry);
+ return ContinueSentinel;
+ }
+ }
+ },
+
+ "catch": function _catch(tryLoc) {
+ for (var i = this.tryEntries.length - 1; i >= 0; --i) {
+ var entry = this.tryEntries[i];
+ if (entry.tryLoc === tryLoc) {
+ var record = entry.completion;
+ if (record.type === "throw") {
+ var thrown = record.arg;
+ resetTryEntry(entry);
+ }
+ return thrown;
+ }
+ }
+
+ // The context.catch method must only be called with a location
+ // argument that corresponds to a known catch block.
+ throw new Error("illegal catch attempt");
+ },
+
+ delegateYield: function delegateYield(iterable, resultName, nextLoc) {
+ this.delegate = {
+ iterator: values(iterable),
+ resultName: resultName,
+ nextLoc: nextLoc
+ };
+
+ return ContinueSentinel;
+ }
+ };
+})(
+// Among the various tricks for obtaining a reference to the global
+// object, this seems to be the most reliable technique that does not
+// use indirect eval (which violates Content Security Policy).
+typeof global === "object" ? global : typeof window === "object" ? window : typeof self === "object" ? self : undefined);
\ No newline at end of file
diff --git a/node_modules/babel-template/.npmignore b/node_modules/babel-template/.npmignore
new file mode 100644
index 0000000..47cdd2c
--- /dev/null
+++ b/node_modules/babel-template/.npmignore
@@ -0,0 +1,3 @@
+src
+test
+node_modules
diff --git a/node_modules/babel-template/README.md b/node_modules/babel-template/README.md
new file mode 100644
index 0000000..af46daa
--- /dev/null
+++ b/node_modules/babel-template/README.md
@@ -0,0 +1,32 @@
+# babel-template
+
+> Generate an AST from a string template.
+
+## Install
+
+```sh
+$ npm install babel-template
+```
+
+## Usage
+
+```js
+import template from 'babel-template';
+import generate from 'babel-generator';
+import * as t from 'babel-types';
+
+const buildRequire = template(`
+ var IMPORT_NAME = require(SOURCE);
+`);
+
+const ast = buildRequire({
+ IMPORT_NAME: t.identifier('myModule'),
+ SOURCE: t.stringLiteral('my-module')
+});
+
+console.log(generate(ast).code);
+```
+
+```js
+var myModule = require('my-module');
+```
diff --git a/node_modules/babel-template/lib/index.js b/node_modules/babel-template/lib/index.js
new file mode 100644
index 0000000..72792c7
--- /dev/null
+++ b/node_modules/babel-template/lib/index.js
@@ -0,0 +1,145 @@
+/* eslint max-len: 0 */
+
+"use strict";
+
+var _Symbol = require("babel-runtime/core-js/symbol")["default"];
+
+var _interopRequireDefault = require("babel-runtime/helpers/interop-require-default")["default"];
+
+var _interopRequireWildcard = require("babel-runtime/helpers/interop-require-wildcard")["default"];
+
+exports.__esModule = true;
+
+var _lodashLangCloneDeep = require("lodash/lang/cloneDeep");
+
+var _lodashLangCloneDeep2 = _interopRequireDefault(_lodashLangCloneDeep);
+
+var _lodashObjectAssign = require("lodash/object/assign");
+
+var _lodashObjectAssign2 = _interopRequireDefault(_lodashObjectAssign);
+
+var _lodashObjectHas = require("lodash/object/has");
+
+var _lodashObjectHas2 = _interopRequireDefault(_lodashObjectHas);
+
+var _babelTraverse = require("babel-traverse");
+
+var _babelTraverse2 = _interopRequireDefault(_babelTraverse);
+
+var _babylon = require("babylon");
+
+var babylon = _interopRequireWildcard(_babylon);
+
+var _babelTypes = require("babel-types");
+
+var t = _interopRequireWildcard(_babelTypes);
+
+var FROM_TEMPLATE = "_fromTemplate"; //Symbol(); // todo: probably wont get copied over
+var TEMPLATE_SKIP = _Symbol();
+
+exports["default"] = function (code, opts) {
+ // since we lazy parse the template, we get the current stack so we have the
+ // original stack to append if it errors when parsing
+ var stack = undefined;
+ try {
+ // error stack gets populated in IE only on throw (https://msdn.microsoft.com/en-us/library/hh699850(v=vs.94).aspx)
+ throw new Error();
+ } catch (error) {
+ if (error.stack) {
+ // error.stack does not exists in IE <= 9
+ stack = error.stack.split("\n").slice(1).join("\n");
+ }
+ }
+
+ var _getAst = function getAst() {
+ var ast = undefined;
+
+ try {
+ ast = babylon.parse(code, _lodashObjectAssign2["default"]({
+ allowReturnOutsideFunction: true,
+ allowSuperOutsideMethod: true
+ }, opts));
+
+ ast = _babelTraverse2["default"].removeProperties(ast);
+
+ _babelTraverse2["default"].cheap(ast, function (node) {
+ node[FROM_TEMPLATE] = true;
+ });
+ } catch (err) {
+ err.stack = err.stack + "from\n" + stack;
+ throw err;
+ }
+
+ _getAst = function () {
+ return ast;
+ };
+
+ return ast;
+ };
+
+ return function () {
+ for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
+ args[_key] = arguments[_key];
+ }
+
+ return useTemplate(_getAst(), args);
+ };
+};
+
+function useTemplate(ast, nodes) {
+ ast = _lodashLangCloneDeep2["default"](ast);
+ var _ast = ast;
+ var program = _ast.program;
+
+ if (nodes.length) {
+ _babelTraverse2["default"](ast, templateVisitor, null, nodes);
+ }
+
+ if (program.body.length > 1) {
+ return program.body;
+ } else {
+ return program.body[0];
+ }
+}
+
+var templateVisitor = {
+ // 360
+ noScope: true,
+
+ enter: function enter(path, args) {
+ var node = path.node;
+
+ if (node[TEMPLATE_SKIP]) return path.skip();
+
+ if (t.isExpressionStatement(node)) {
+ node = node.expression;
+ }
+
+ var replacement = undefined;
+
+ if (t.isIdentifier(node) && node[FROM_TEMPLATE]) {
+ if (_lodashObjectHas2["default"](args[0], node.name)) {
+ replacement = args[0][node.name];
+ } else if (node.name[0] === "$") {
+ var i = +node.name.slice(1);
+ if (args[i]) replacement = args[i];
+ }
+ }
+
+ if (replacement === null) {
+ path.remove();
+ }
+
+ if (replacement) {
+ replacement[TEMPLATE_SKIP] = true;
+ path.replaceInline(replacement);
+ }
+ },
+
+ exit: function exit(_ref) {
+ var node = _ref.node;
+
+ if (!node.loc) _babelTraverse2["default"].clearNode(node);
+ }
+};
+module.exports = exports["default"];
\ No newline at end of file
diff --git a/node_modules/babel-template/package.json b/node_modules/babel-template/package.json
new file mode 100644
index 0000000..732c970
--- /dev/null
+++ b/node_modules/babel-template/package.json
@@ -0,0 +1,104 @@
+{
+ "_args": [
+ [
+ "babel-template@^6.7.0",
+ "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-core"
+ ]
+ ],
+ "_from": "babel-template@>=6.7.0 <7.0.0",
+ "_id": "babel-template@6.7.0",
+ "_inCache": true,
+ "_installable": true,
+ "_location": "/babel-template",
+ "_nodeVersion": "5.5.0",
+ "_npmOperationalInternal": {
+ "host": "packages-12-west.internal.npmjs.com",
+ "tmp": "tmp/babel-template-6.7.0.tgz_1457484784277_0.07389394007623196"
+ },
+ "_npmUser": {
+ "email": "amjad.masad@gmail.com",
+ "name": "amasad"
+ },
+ "_npmVersion": "3.3.12",
+ "_phantomChildren": {},
+ "_requested": {
+ "name": "babel-template",
+ "raw": "babel-template@^6.7.0",
+ "rawSpec": "^6.7.0",
+ "scope": null,
+ "spec": ">=6.7.0 <7.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/babel-core",
+ "/babel-helper-function-name",
+ "/babel-helper-replace-supers",
+ "/babel-helpers",
+ "/babel-plugin-transform-es2015-block-scoping",
+ "/babel-plugin-transform-es2015-classes",
+ "/babel-plugin-transform-es2015-computed-properties",
+ "/babel-plugin-transform-es2015-modules-commonjs",
+ "/babel-plugin-transform-es2015-parameters"
+ ],
+ "_resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.7.0.tgz",
+ "_shasum": "e30f32639aa2bcdaa6a77bc9b92bde5c98144902",
+ "_shrinkwrap": null,
+ "_spec": "babel-template@^6.7.0",
+ "_where": "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-core",
+ "author": {
+ "email": "sebmck@gmail.com",
+ "name": "Sebastian McKenzie"
+ },
+ "dependencies": {
+ "babel-runtime": "^5.0.0",
+ "babel-traverse": "^6.7.0",
+ "babel-types": "^6.7.0",
+ "babylon": "^6.7.0",
+ "lodash": "^3.10.1"
+ },
+ "description": "Generate an AST from a string template.",
+ "devDependencies": {},
+ "directories": {},
+ "dist": {
+ "shasum": "e30f32639aa2bcdaa6a77bc9b92bde5c98144902",
+ "tarball": "http://registry.npmjs.org/babel-template/-/babel-template-6.7.0.tgz"
+ },
+ "homepage": "https://babeljs.io/",
+ "license": "MIT",
+ "main": "lib/index.js",
+ "maintainers": [
+ {
+ "name": "amasad",
+ "email": "amjad.masad@gmail.com"
+ },
+ {
+ "name": "hzoo",
+ "email": "hi@henryzoo.com"
+ },
+ {
+ "name": "jmm",
+ "email": "npm-public@jessemccarthy.net"
+ },
+ {
+ "name": "loganfsmyth",
+ "email": "loganfsmyth@gmail.com"
+ },
+ {
+ "name": "sebmck",
+ "email": "sebmck@gmail.com"
+ },
+ {
+ "name": "thejameskyle",
+ "email": "me@thejameskyle.com"
+ }
+ ],
+ "name": "babel-template",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel/tree/master/packages/babel-template"
+ },
+ "scripts": {},
+ "version": "6.7.0"
+}
diff --git a/node_modules/babel-traverse/.npmignore b/node_modules/babel-traverse/.npmignore
new file mode 100644
index 0000000..47cdd2c
--- /dev/null
+++ b/node_modules/babel-traverse/.npmignore
@@ -0,0 +1,3 @@
+src
+test
+node_modules
diff --git a/node_modules/babel-traverse/README.md b/node_modules/babel-traverse/README.md
new file mode 100644
index 0000000..6addc10
--- /dev/null
+++ b/node_modules/babel-traverse/README.md
@@ -0,0 +1 @@
+# babel-traverse
diff --git a/node_modules/babel-traverse/lib/cache.js b/node_modules/babel-traverse/lib/cache.js
new file mode 100644
index 0000000..0c5c8ac
--- /dev/null
+++ b/node_modules/babel-traverse/lib/cache.js
@@ -0,0 +1,16 @@
+"use strict";
+
+var _WeakMap = require("babel-runtime/core-js/weak-map")["default"];
+
+exports.__esModule = true;
+exports.clear = clear;
+var path = new _WeakMap();
+exports.path = path;
+var scope = new _WeakMap();
+
+exports.scope = scope;
+
+function clear() {
+ exports.path = path = new _WeakMap();
+ exports.scope = scope = new _WeakMap();
+}
\ No newline at end of file
diff --git a/node_modules/babel-traverse/lib/context.js b/node_modules/babel-traverse/lib/context.js
new file mode 100644
index 0000000..8aed647
--- /dev/null
+++ b/node_modules/babel-traverse/lib/context.js
@@ -0,0 +1,186 @@
+"use strict";
+
+var _classCallCheck = require("babel-runtime/helpers/class-call-check")["default"];
+
+var _getIterator = require("babel-runtime/core-js/get-iterator")["default"];
+
+var _interopRequireDefault = require("babel-runtime/helpers/interop-require-default")["default"];
+
+var _interopRequireWildcard = require("babel-runtime/helpers/interop-require-wildcard")["default"];
+
+exports.__esModule = true;
+
+var _path = require("./path");
+
+var _path2 = _interopRequireDefault(_path);
+
+var _babelTypes = require("babel-types");
+
+var t = _interopRequireWildcard(_babelTypes);
+
+var testing = process.env.NODE_ENV === "test";
+
+var TraversalContext = (function () {
+ function TraversalContext(scope, opts, state, parentPath) {
+ _classCallCheck(this, TraversalContext);
+
+ this.queue = null;
+
+ this.parentPath = parentPath;
+ this.scope = scope;
+ this.state = state;
+ this.opts = opts;
+ }
+
+ /**
+ * This method does a simple check to determine whether or not we really need to attempt
+ * visit a node. This will prevent us from constructing a NodePath.
+ */
+
+ TraversalContext.prototype.shouldVisit = function shouldVisit(node) {
+ var opts = this.opts;
+ if (opts.enter || opts.exit) return true;
+
+ // check if we have a visitor for this node
+ if (opts[node.type]) return true;
+
+ // check if we're going to traverse into this node
+ var keys = t.VISITOR_KEYS[node.type];
+ if (!keys || !keys.length) return false;
+
+ // we need to traverse into this node so ensure that it has children to traverse into!
+ for (var _iterator = keys, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _getIterator(_iterator);;) {
+ var _ref;
+
+ if (_isArray) {
+ if (_i >= _iterator.length) break;
+ _ref = _iterator[_i++];
+ } else {
+ _i = _iterator.next();
+ if (_i.done) break;
+ _ref = _i.value;
+ }
+
+ var key = _ref;
+
+ if (node[key]) return true;
+ }
+
+ return false;
+ };
+
+ TraversalContext.prototype.create = function create(node, obj, key, listKey) {
+ return _path2["default"].get({
+ parentPath: this.parentPath,
+ parent: node,
+ container: obj,
+ key: key,
+ listKey: listKey
+ });
+ };
+
+ TraversalContext.prototype.maybeQueue = function maybeQueue(path, notPriority) {
+ if (this.trap) {
+ throw new Error("Infinite cycle detected");
+ }
+
+ if (this.queue) {
+ if (notPriority) {
+ this.queue.push(path);
+ } else {
+ this.priorityQueue.push(path);
+ }
+ }
+ };
+
+ TraversalContext.prototype.visitMultiple = function visitMultiple(container, parent, listKey) {
+ // nothing to traverse!
+ if (container.length === 0) return false;
+
+ var queue = [];
+
+ // build up initial queue
+ for (var key = 0; key < container.length; key++) {
+ var node = container[key];
+ if (node && this.shouldVisit(node)) {
+ queue.push(this.create(parent, container, key, listKey));
+ }
+ }
+
+ return this.visitQueue(queue);
+ };
+
+ TraversalContext.prototype.visitSingle = function visitSingle(node, key) {
+ if (this.shouldVisit(node[key])) {
+ return this.visitQueue([this.create(node, node, key)]);
+ } else {
+ return false;
+ }
+ };
+
+ TraversalContext.prototype.visitQueue = function visitQueue(queue) {
+ // set queue
+ this.queue = queue;
+ this.priorityQueue = [];
+
+ var visited = [];
+ var stop = false;
+
+ // visit the queue
+ for (var _i2 = 0; _i2 < queue.length; _i2++) {
+ var path = queue[_i2];
+ path.resync();
+ path.pushContext(this);
+
+ // this path no longer belongs to the tree
+ if (path.key === null) continue;
+
+ if (testing && queue.length >= 1000) {
+ this.trap = true;
+ }
+
+ // ensure we don't visit the same node twice
+ if (visited.indexOf(path.node) >= 0) continue;
+ visited.push(path.node);
+
+ if (path.visit()) {
+ stop = true;
+ break;
+ }
+
+ if (this.priorityQueue.length) {
+ stop = this.visitQueue(this.priorityQueue);
+ this.priorityQueue = [];
+ this.queue = queue;
+ if (stop) break;
+ }
+ }
+
+ // clear queue
+ for (var _i3 = 0; _i3 < queue.length; _i3++) {
+ var path = queue[_i3];
+ path.popContext();
+ }
+
+ // clear queue
+ this.queue = null;
+
+ return stop;
+ };
+
+ TraversalContext.prototype.visit = function visit(node, key) {
+ var nodes = node[key];
+ if (!nodes) return false;
+
+ if (Array.isArray(nodes)) {
+ return this.visitMultiple(nodes, node, key);
+ } else {
+ return this.visitSingle(node, key);
+ }
+ };
+
+ return TraversalContext;
+})();
+
+exports["default"] = TraversalContext;
+module.exports = exports["default"];
\ No newline at end of file
diff --git a/node_modules/babel-traverse/lib/hub.js b/node_modules/babel-traverse/lib/hub.js
new file mode 100644
index 0000000..b46560c
--- /dev/null
+++ b/node_modules/babel-traverse/lib/hub.js
@@ -0,0 +1,15 @@
+"use strict";
+
+var _classCallCheck = require("babel-runtime/helpers/class-call-check")["default"];
+
+exports.__esModule = true;
+
+var Hub = function Hub(file, options) {
+ _classCallCheck(this, Hub);
+
+ this.file = file;
+ this.options = options;
+};
+
+exports["default"] = Hub;
+module.exports = exports["default"];
\ No newline at end of file
diff --git a/node_modules/babel-traverse/lib/index.js b/node_modules/babel-traverse/lib/index.js
new file mode 100644
index 0000000..de02995
--- /dev/null
+++ b/node_modules/babel-traverse/lib/index.js
@@ -0,0 +1,200 @@
+/* eslint max-len: 0 */
+
+"use strict";
+
+var _getIterator = require("babel-runtime/core-js/get-iterator")["default"];
+
+var _Symbol = require("babel-runtime/core-js/symbol")["default"];
+
+var _Object$getOwnPropertySymbols = require("babel-runtime/core-js/object/get-own-property-symbols")["default"];
+
+var _interopRequireDefault = require("babel-runtime/helpers/interop-require-default")["default"];
+
+var _interopRequireWildcard = require("babel-runtime/helpers/interop-require-wildcard")["default"];
+
+var _interopRequire = require("babel-runtime/helpers/interop-require")["default"];
+
+exports.__esModule = true;
+exports["default"] = traverse;
+
+var _context = require("./context");
+
+var _context2 = _interopRequireDefault(_context);
+
+var _visitors = require("./visitors");
+
+var visitors = _interopRequireWildcard(_visitors);
+
+var _babelMessages = require("babel-messages");
+
+var messages = _interopRequireWildcard(_babelMessages);
+
+var _lodashCollectionIncludes = require("lodash/collection/includes");
+
+var _lodashCollectionIncludes2 = _interopRequireDefault(_lodashCollectionIncludes);
+
+var _babelTypes = require("babel-types");
+
+var t = _interopRequireWildcard(_babelTypes);
+
+var _cache = require("./cache");
+
+var cache = _interopRequireWildcard(_cache);
+
+var _path = require("./path");
+
+exports.NodePath = _interopRequire(_path);
+
+var _scope = require("./scope");
+
+exports.Scope = _interopRequire(_scope);
+
+var _hub = require("./hub");
+
+exports.Hub = _interopRequire(_hub);
+exports.visitors = visitors;
+
+function traverse(parent, opts, scope, state, parentPath) {
+ if (!parent) return;
+ if (!opts) opts = {};
+
+ if (!opts.noScope && !scope) {
+ if (parent.type !== "Program" && parent.type !== "File") {
+ throw new Error(messages.get("traverseNeedsParent", parent.type));
+ }
+ }
+
+ visitors.explode(opts);
+
+ traverse.node(parent, opts, scope, state, parentPath);
+}
+
+traverse.visitors = visitors;
+traverse.verify = visitors.verify;
+traverse.explode = visitors.explode;
+
+traverse.NodePath = require("./path");
+traverse.Scope = require("./scope");
+traverse.Hub = require("./hub");
+
+traverse.cheap = function (node, enter) {
+ if (!node) return;
+
+ var keys = t.VISITOR_KEYS[node.type];
+ if (!keys) return;
+
+ enter(node);
+
+ for (var _iterator = keys, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _getIterator(_iterator);;) {
+ var _ref;
+
+ if (_isArray) {
+ if (_i >= _iterator.length) break;
+ _ref = _iterator[_i++];
+ } else {
+ _i = _iterator.next();
+ if (_i.done) break;
+ _ref = _i.value;
+ }
+
+ var key = _ref;
+
+ var subNode = node[key];
+
+ if (Array.isArray(subNode)) {
+ for (var _iterator2 = subNode, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _getIterator(_iterator2);;) {
+ var _ref2;
+
+ if (_isArray2) {
+ if (_i2 >= _iterator2.length) break;
+ _ref2 = _iterator2[_i2++];
+ } else {
+ _i2 = _iterator2.next();
+ if (_i2.done) break;
+ _ref2 = _i2.value;
+ }
+
+ var _node = _ref2;
+
+ traverse.cheap(_node, enter);
+ }
+ } else {
+ traverse.cheap(subNode, enter);
+ }
+ }
+};
+
+traverse.node = function (node, opts, scope, state, parentPath, skipKeys) {
+ var keys = t.VISITOR_KEYS[node.type];
+ if (!keys) return;
+
+ var context = new _context2["default"](scope, opts, state, parentPath);
+ for (var _i3 = 0; _i3 < keys.length; _i3++) {
+ var key = keys[_i3];
+ if (skipKeys && skipKeys[key]) continue;
+ if (context.visit(node, key)) return;
+ }
+};
+
+var CLEAR_KEYS = t.COMMENT_KEYS.concat(["tokens", "comments", "start", "end", "loc", "raw", "rawValue"]);
+
+traverse.clearNode = function (node) {
+ for (var _i4 = 0; _i4 < CLEAR_KEYS.length; _i4++) {
+ var key = CLEAR_KEYS[_i4];
+ if (node[key] != null) node[key] = undefined;
+ }
+
+ for (var key in node) {
+ if (key[0] === "_" && node[key] != null) node[key] = undefined;
+ }
+
+ cache.path["delete"](node);
+
+ var syms = _Object$getOwnPropertySymbols(node);
+ for (var _i5 = 0; _i5 < syms.length; _i5++) {
+ var sym = syms[_i5];
+ node[sym] = null;
+ }
+};
+
+traverse.removeProperties = function (tree) {
+ traverse.cheap(tree, traverse.clearNode);
+ return tree;
+};
+
+function hasBlacklistedType(path, state) {
+ if (path.node.type === state.type) {
+ state.has = true;
+ path.skip();
+ }
+}
+
+traverse.hasType = function (tree, scope, type, blacklistTypes) {
+ // the node we're searching in is blacklisted
+ if (_lodashCollectionIncludes2["default"](blacklistTypes, tree.type)) return false;
+
+ // the type we're looking for is the same as the passed node
+ if (tree.type === type) return true;
+
+ var state = {
+ has: false,
+ type: type
+ };
+
+ traverse(tree, {
+ blacklist: blacklistTypes,
+ enter: hasBlacklistedType
+ }, scope, state);
+
+ return state.has;
+};
+
+traverse.clearCache = function () {
+ cache.clear();
+};
+
+traverse.copyCache = function (source, destination) {
+ if (cache.path.has(source)) {
+ cache.path.set(destination, cache.path.get(source));
+ }
+};
\ No newline at end of file
diff --git a/node_modules/babel-traverse/lib/path/ancestry.js b/node_modules/babel-traverse/lib/path/ancestry.js
new file mode 100644
index 0000000..3e2bfbe
--- /dev/null
+++ b/node_modules/babel-traverse/lib/path/ancestry.js
@@ -0,0 +1,282 @@
+// This file contains that retrieve or validate anything related to the current paths ancestry.
+
+"use strict";
+
+var _interopRequireWildcard = require("babel-runtime/helpers/interop-require-wildcard")["default"];
+
+var _interopRequireDefault = require("babel-runtime/helpers/interop-require-default")["default"];
+
+exports.__esModule = true;
+exports.findParent = findParent;
+exports.find = find;
+exports.getFunctionParent = getFunctionParent;
+exports.getStatementParent = getStatementParent;
+exports.getEarliestCommonAncestorFrom = getEarliestCommonAncestorFrom;
+exports.getDeepestCommonAncestorFrom = getDeepestCommonAncestorFrom;
+exports.getAncestry = getAncestry;
+exports.inType = inType;
+exports.inShadow = inShadow;
+
+var _babelTypes = require("babel-types");
+
+var t = _interopRequireWildcard(_babelTypes);
+
+var _index = require("./index");
+
+var _index2 = _interopRequireDefault(_index);
+
+/**
+ * Call the provided `callback` with the `NodePath`s of all the parents.
+ * When the `callback` returns a truthy value, we return that node path.
+ */
+
+function findParent(callback) {
+ var path = this;
+ while (path = path.parentPath) {
+ if (callback(path)) return path;
+ }
+ return null;
+}
+
+/**
+ * Description
+ */
+
+function find(callback) {
+ var path = this;
+ do {
+ if (callback(path)) return path;
+ } while (path = path.parentPath);
+ return null;
+}
+
+/**
+ * Get the parent function of the current path.
+ */
+
+function getFunctionParent() {
+ return this.findParent(function (path) {
+ return path.isFunction() || path.isProgram();
+ });
+}
+
+/**
+ * Walk up the tree until we hit a parent node path in a list.
+ */
+
+function getStatementParent() {
+ var path = this;
+ do {
+ if (Array.isArray(path.container)) {
+ return path;
+ }
+ } while (path = path.parentPath);
+}
+
+/**
+ * Get the deepest common ancestor and then from it, get the earliest relationship path
+ * to that ancestor.
+ *
+ * Earliest is defined as being "before" all the other nodes in terms of list container
+ * position and visiting key.
+ */
+
+function getEarliestCommonAncestorFrom(paths) {
+ return this.getDeepestCommonAncestorFrom(paths, function (deepest, i, ancestries) {
+ var earliest = undefined;
+ var keys = t.VISITOR_KEYS[deepest.type];
+
+ var _arr = ancestries;
+ for (var _i = 0; _i < _arr.length; _i++) {
+ var ancestry = _arr[_i];
+ var path = ancestry[i + 1];
+
+ // first path
+ if (!earliest) {
+ earliest = path;
+ continue;
+ }
+
+ // handle containers
+ if (path.listKey && earliest.listKey === path.listKey) {
+ // we're in the same container so check if we're earlier
+ if (path.key < earliest.key) {
+ earliest = path;
+ continue;
+ }
+ }
+
+ // handle keys
+ var earliestKeyIndex = keys.indexOf(earliest.parentKey);
+ var currentKeyIndex = keys.indexOf(path.parentKey);
+ if (earliestKeyIndex > currentKeyIndex) {
+ // key appears before so it's earlier
+ earliest = path;
+ }
+ }
+
+ return earliest;
+ });
+}
+
+/**
+ * Get the earliest path in the tree where the provided `paths` intersect.
+ *
+ * TODO: Possible optimisation target.
+ */
+
+function getDeepestCommonAncestorFrom(paths, filter) {
+ // istanbul ignore next
+
+ var _this = this;
+
+ if (!paths.length) {
+ return this;
+ }
+
+ if (paths.length === 1) {
+ return paths[0];
+ }
+
+ // minimum depth of the tree so we know the highest node
+ var minDepth = Infinity;
+
+ // last common ancestor
+ var lastCommonIndex = undefined,
+ lastCommon = undefined;
+
+ // get the ancestors of the path, breaking when the parent exceeds ourselves
+ var ancestries = paths.map(function (path) {
+ var ancestry = [];
+
+ do {
+ ancestry.unshift(path);
+ } while ((path = path.parentPath) && path !== _this);
+
+ // save min depth to avoid going too far in
+ if (ancestry.length < minDepth) {
+ minDepth = ancestry.length;
+ }
+
+ return ancestry;
+ });
+
+ // get the first ancestry so we have a seed to assess all other ancestries with
+ var first = ancestries[0];
+
+ // check ancestor equality
+ depthLoop: for (var i = 0; i < minDepth; i++) {
+ var shouldMatch = first[i];
+
+ var _arr2 = ancestries;
+ for (var _i2 = 0; _i2 < _arr2.length; _i2++) {
+ var ancestry = _arr2[_i2];
+ if (ancestry[i] !== shouldMatch) {
+ // we've hit a snag
+ break depthLoop;
+ }
+ }
+
+ // next iteration may break so store these so they can be returned
+ lastCommonIndex = i;
+ lastCommon = shouldMatch;
+ }
+
+ if (lastCommon) {
+ if (filter) {
+ return filter(lastCommon, lastCommonIndex, ancestries);
+ } else {
+ return lastCommon;
+ }
+ } else {
+ throw new Error("Couldn't find intersection");
+ }
+}
+
+/**
+ * Build an array of node paths containing the entire ancestry of the current node path.
+ *
+ * NOTE: The current node path is included in this.
+ */
+
+function getAncestry() {
+ var path = this;
+ var paths = [];
+ do {
+ paths.push(path);
+ } while (path = path.parentPath);
+ return paths;
+}
+
+function inType() {
+ var path = this;
+ while (path) {
+ var _arr3 = arguments;
+
+ for (var _i3 = 0; _i3 < _arr3.length; _i3++) {
+ var type = _arr3[_i3];
+ if (path.node.type === type) return true;
+ }
+ path = path.parentPath;
+ }
+
+ return false;
+}
+
+/**
+ * Checks whether the binding for 'key' is a local binding in its current function context.
+ *
+ * Checks if the current path either is, or has a direct parent function that is, inside
+ * of a function that is marked for shadowing of a binding matching 'key'. Also returns
+ * the parent path if the parent path is an arrow, since arrow functions pass through
+ * binding values to their parent, meaning they have no local bindings.
+ *
+ * Shadowing means that when the given binding is transformed, it will read the binding
+ * value from the container containing the shadow function, rather than from inside the
+ * shadow function.
+ *
+ * Function shadowing is acheieved by adding a "shadow" property on "FunctionExpression"
+ * and "FunctionDeclaration" node types.
+ *
+ * Node's "shadow" props have the following behavior:
+ *
+ * - Boolean true will cause the function to shadow both "this" and "arguments".
+ * - {this: false} Shadows "arguments" but not "this".
+ * - {arguments: false} Shadows "this" but not "arguments".
+ *
+ * Separately, individual identifiers can be flagged with two flags:
+ *
+ * - _forceShadow - If truthy, this specific identifier will be bound in the closest
+ * Function that is not flagged "shadow", or the Program.
+ * - _shadowedFunctionLiteral - When set to a NodePath, this specific identifier will be bound
+ * to this NodePath/Node or the Program. If this path is not found relative to the
+ * starting location path, the closest function will be used.
+ *
+ * Please Note, these flags are for private internal use only and should be avoided.
+ * Only "shadow" is a public property that other transforms may manipulate.
+ */
+
+function inShadow(key) {
+ var parentFn = this.isFunction() ? this : this.findParent(function (p) {
+ return p.isFunction();
+ });
+ if (!parentFn) return;
+
+ if (parentFn.isFunctionExpression() || parentFn.isFunctionDeclaration()) {
+ var shadow = parentFn.node.shadow;
+
+ // this is because sometimes we may have a `shadow` value of:
+ //
+ // { this: false }
+ //
+ // we need to catch this case if `inShadow` has been passed a `key`
+ if (shadow && (!key || shadow[key] !== false)) {
+ return parentFn;
+ }
+ } else if (parentFn.isArrowFunctionExpression()) {
+ return parentFn;
+ }
+
+ // normal function, we've found our function context
+ return null;
+}
\ No newline at end of file
diff --git a/node_modules/babel-traverse/lib/path/comments.js b/node_modules/babel-traverse/lib/path/comments.js
new file mode 100644
index 0000000..ce44cb7
--- /dev/null
+++ b/node_modules/babel-traverse/lib/path/comments.js
@@ -0,0 +1,56 @@
+// This file contains methods responsible for dealing with comments.
+
+/**
+ * Share comments amongst siblings.
+ */
+
+"use strict";
+
+exports.__esModule = true;
+exports.shareCommentsWithSiblings = shareCommentsWithSiblings;
+exports.addComment = addComment;
+exports.addComments = addComments;
+
+function shareCommentsWithSiblings() {
+ var node = this.node;
+ if (!node) return;
+
+ var trailing = node.trailingComments;
+ var leading = node.leadingComments;
+ if (!trailing && !leading) return;
+
+ var prev = this.getSibling(this.key - 1);
+ var next = this.getSibling(this.key + 1);
+
+ if (!prev.node) prev = next;
+ if (!next.node) next = prev;
+
+ prev.addComments("trailing", leading);
+ next.addComments("leading", trailing);
+}
+
+function addComment(type, content, line) {
+ this.addComments(type, [{
+ type: line ? "CommentLine" : "CommentBlock",
+ value: content
+ }]);
+}
+
+/**
+ * Give node `comments` of the specified `type`.
+ */
+
+function addComments(type, comments) {
+ if (!comments) return;
+
+ var node = this.node;
+ if (!node) return;
+
+ var key = type + "Comments";
+
+ if (node[key]) {
+ node[key] = node[key].concat(comments);
+ } else {
+ node[key] = comments;
+ }
+}
\ No newline at end of file
diff --git a/node_modules/babel-traverse/lib/path/context.js b/node_modules/babel-traverse/lib/path/context.js
new file mode 100644
index 0000000..ada8771
--- /dev/null
+++ b/node_modules/babel-traverse/lib/path/context.js
@@ -0,0 +1,284 @@
+// This file contains methods responsible for maintaining a TraversalContext.
+
+"use strict";
+
+var _getIterator = require("babel-runtime/core-js/get-iterator")["default"];
+
+var _interopRequireDefault = require("babel-runtime/helpers/interop-require-default")["default"];
+
+exports.__esModule = true;
+exports.call = call;
+exports._call = _call;
+exports.isBlacklisted = isBlacklisted;
+exports.visit = visit;
+exports.skip = skip;
+exports.skipKey = skipKey;
+exports.stop = stop;
+exports.setScope = setScope;
+exports.setContext = setContext;
+exports.resync = resync;
+exports._resyncParent = _resyncParent;
+exports._resyncKey = _resyncKey;
+exports._resyncList = _resyncList;
+exports._resyncRemoved = _resyncRemoved;
+exports.popContext = popContext;
+exports.pushContext = pushContext;
+exports.setup = setup;
+exports.setKey = setKey;
+exports.requeue = requeue;
+exports._getQueueContexts = _getQueueContexts;
+
+var _index = require("../index");
+
+var _index2 = _interopRequireDefault(_index);
+
+function call(key) {
+ var opts = this.opts;
+
+ this.debug(function () {
+ return key;
+ });
+
+ if (this.node) {
+ if (this._call(opts[key])) return true;
+ }
+
+ if (this.node) {
+ return this._call(opts[this.node.type] && opts[this.node.type][key]);
+ }
+
+ return false;
+}
+
+function _call(fns) {
+ if (!fns) return false;
+
+ for (var _i = 0; _i < fns.length; _i++) {
+ var fn = fns[_i];
+ if (!fn) continue;
+
+ var node = this.node;
+ if (!node) return true;
+
+ var ret = fn.call(this.state, this, this.state);
+ if (ret) throw new Error("Unexpected return value from visitor method " + fn);
+
+ // node has been replaced, it will have been requeued
+ if (this.node !== node) return true;
+
+ if (this.shouldStop || this.shouldSkip || this.removed) return true;
+ }
+
+ return false;
+}
+
+function isBlacklisted() {
+ var blacklist = this.opts.blacklist;
+ return blacklist && blacklist.indexOf(this.node.type) > -1;
+}
+
+function visit() {
+ if (!this.node) {
+ return false;
+ }
+
+ if (this.isBlacklisted()) {
+ return false;
+ }
+
+ if (this.opts.shouldSkip && this.opts.shouldSkip(this)) {
+ return false;
+ }
+
+ if (this.call("enter") || this.shouldSkip) {
+ this.debug(function () {
+ return "Skip...";
+ });
+ return this.shouldStop;
+ }
+
+ this.debug(function () {
+ return "Recursing into...";
+ });
+ _index2["default"].node(this.node, this.opts, this.scope, this.state, this, this.skipKeys);
+
+ this.call("exit");
+
+ return this.shouldStop;
+}
+
+function skip() {
+ this.shouldSkip = true;
+}
+
+function skipKey(key) {
+ this.skipKeys[key] = true;
+}
+
+function stop() {
+ this.shouldStop = true;
+ this.shouldSkip = true;
+}
+
+function setScope() {
+ if (this.opts && this.opts.noScope) return;
+
+ var target = this.context && this.context.scope;
+
+ if (!target) {
+ var path = this.parentPath;
+ while (path && !target) {
+ if (path.opts && path.opts.noScope) return;
+
+ target = path.scope;
+ path = path.parentPath;
+ }
+ }
+
+ this.scope = this.getScope(target);
+ if (this.scope) this.scope.init();
+}
+
+function setContext(context) {
+ this.shouldSkip = false;
+ this.shouldStop = false;
+ this.removed = false;
+ this.skipKeys = {};
+
+ if (context) {
+ this.context = context;
+ this.state = context.state;
+ this.opts = context.opts;
+ }
+
+ this.setScope();
+
+ return this;
+}
+
+/**
+ * Here we resync the node paths `key` and `container`. If they've changed according
+ * to what we have stored internally then we attempt to resync by crawling and looking
+ * for the new values.
+ */
+
+function resync() {
+ if (this.removed) return;
+
+ this._resyncParent();
+ this._resyncList();
+ this._resyncKey();
+ //this._resyncRemoved();
+}
+
+function _resyncParent() {
+ if (this.parentPath) {
+ this.parent = this.parentPath.node;
+ }
+}
+
+function _resyncKey() {
+ if (!this.container) return;
+
+ if (this.node === this.container[this.key]) return;
+
+ // grrr, path key is out of sync. this is likely due to a modification to the AST
+ // not done through our path APIs
+
+ if (Array.isArray(this.container)) {
+ for (var i = 0; i < this.container.length; i++) {
+ if (this.container[i] === this.node) {
+ return this.setKey(i);
+ }
+ }
+ } else {
+ for (var key in this.container) {
+ if (this.container[key] === this.node) {
+ return this.setKey(key);
+ }
+ }
+ }
+
+ // ¯\_(ツ)_/¯ who knows where it's gone lol
+ this.key = null;
+}
+
+function _resyncList() {
+ if (!this.parent || !this.inList) return;
+
+ var newContainer = this.parent[this.listKey];
+ if (this.container === newContainer) return;
+
+ // container is out of sync. this is likely the result of it being reassigned
+ this.container = newContainer || null;
+}
+
+function _resyncRemoved() {
+ if (this.key == null || !this.container || this.container[this.key] !== this.node) {
+ this._markRemoved();
+ }
+}
+
+function popContext() {
+ this.contexts.pop();
+ this.setContext(this.contexts[this.contexts.length - 1]);
+}
+
+function pushContext(context) {
+ this.contexts.push(context);
+ this.setContext(context);
+}
+
+function setup(parentPath, container, listKey, key) {
+ this.inList = !!listKey;
+ this.listKey = listKey;
+ this.parentKey = listKey || key;
+ this.container = container;
+
+ this.parentPath = parentPath || this.parentPath;
+ this.setKey(key);
+}
+
+function setKey(key) {
+ this.key = key;
+ this.node = this.container[this.key];
+ this.type = this.node && this.node.type;
+}
+
+function requeue() {
+ var pathToQueue = arguments.length <= 0 || arguments[0] === undefined ? this : arguments[0];
+
+ if (pathToQueue.removed) return;
+
+ // TODO(loganfsmyth): This should be switched back to queue in parent contexts
+ // automatically once T2892 and T7160 have been resolved. See T7166.
+ // let contexts = this._getQueueContexts();
+ var contexts = this.contexts;
+
+ for (var _iterator = contexts, _isArray = Array.isArray(_iterator), _i2 = 0, _iterator = _isArray ? _iterator : _getIterator(_iterator);;) {
+ var _ref;
+
+ if (_isArray) {
+ if (_i2 >= _iterator.length) break;
+ _ref = _iterator[_i2++];
+ } else {
+ _i2 = _iterator.next();
+ if (_i2.done) break;
+ _ref = _i2.value;
+ }
+
+ var context = _ref;
+
+ context.maybeQueue(pathToQueue);
+ }
+}
+
+function _getQueueContexts() {
+ var path = this;
+ var contexts = this.contexts;
+ while (!contexts.length) {
+ path = path.parentPath;
+ contexts = path.contexts;
+ }
+ return contexts;
+}
\ No newline at end of file
diff --git a/node_modules/babel-traverse/lib/path/conversion.js b/node_modules/babel-traverse/lib/path/conversion.js
new file mode 100644
index 0000000..1bd5700
--- /dev/null
+++ b/node_modules/babel-traverse/lib/path/conversion.js
@@ -0,0 +1,50 @@
+// This file contains methods that convert the path node into another node or some other type of data.
+
+"use strict";
+
+var _interopRequireWildcard = require("babel-runtime/helpers/interop-require-wildcard")["default"];
+
+exports.__esModule = true;
+exports.toComputedKey = toComputedKey;
+exports.ensureBlock = ensureBlock;
+exports.arrowFunctionToShadowed = arrowFunctionToShadowed;
+
+var _babelTypes = require("babel-types");
+
+var t = _interopRequireWildcard(_babelTypes);
+
+function toComputedKey() {
+ var node = this.node;
+
+ var key = undefined;
+ if (this.isMemberExpression()) {
+ key = node.property;
+ } else if (this.isProperty() || this.isMethod()) {
+ key = node.key;
+ } else {
+ throw new ReferenceError("todo");
+ }
+
+ if (!node.computed) {
+ if (t.isIdentifier(key)) key = t.stringLiteral(key.name);
+ }
+
+ return key;
+}
+
+function ensureBlock() {
+ return t.ensureBlock(this.node);
+}
+
+function arrowFunctionToShadowed() {
+ // todo: maybe error
+ if (!this.isArrowFunctionExpression()) return;
+
+ this.ensureBlock();
+
+ var node = this.node;
+
+ node.expression = false;
+ node.type = "FunctionExpression";
+ node.shadow = node.shadow || true;
+}
\ No newline at end of file
diff --git a/node_modules/babel-traverse/lib/path/evaluation.js b/node_modules/babel-traverse/lib/path/evaluation.js
new file mode 100644
index 0000000..d1950a9
--- /dev/null
+++ b/node_modules/babel-traverse/lib/path/evaluation.js
@@ -0,0 +1,336 @@
+/* eslint indent: 0 */
+/* eslint max-len: 0 */
+
+// This file contains Babels metainterpreter that can evaluate static code.
+
+/* eslint eqeqeq: 0 */
+
+"use strict";
+
+exports.__esModule = true;
+exports.evaluateTruthy = evaluateTruthy;
+exports.evaluate = evaluate;
+var VALID_CALLEES = ["String", "Number", "Math"];
+var INVALID_METHODS = ["random"];
+
+/**
+ * Walk the input `node` and statically evaluate if it's truthy.
+ *
+ * Returning `true` when we're sure that the expression will evaluate to a
+ * truthy value, `false` if we're sure that it will evaluate to a falsy
+ * value and `undefined` if we aren't sure. Because of this please do not
+ * rely on coercion when using this method and check with === if it's false.
+ *
+ * For example do:
+ *
+ * if (t.evaluateTruthy(node) === false) falsyLogic();
+ *
+ * **AND NOT**
+ *
+ * if (!t.evaluateTruthy(node)) falsyLogic();
+ *
+ */
+
+function evaluateTruthy() {
+ var res = this.evaluate();
+ if (res.confident) return !!res.value;
+}
+
+/**
+ * Walk the input `node` and statically evaluate it.
+ *
+ * Returns an object in the form `{ confident, value }`. `confident` indicates
+ * whether or not we had to drop out of evaluating the expression because of
+ * hitting an unknown node that we couldn't confidently find the value of.
+ *
+ * Example:
+ *
+ * t.evaluate(parse("5 + 5")) // { confident: true, value: 10 }
+ * t.evaluate(parse("!true")) // { confident: true, value: false }
+ * t.evaluate(parse("foo + foo")) // { confident: false, value: undefined }
+ *
+ */
+
+function evaluate() {
+ var confident = true;
+ var deoptPath = undefined;
+
+ function deopt(path) {
+ if (!confident) return;
+ deoptPath = path;
+ confident = false;
+ }
+
+ var value = evaluate(this);
+ if (!confident) value = undefined;
+ return {
+ confident: confident,
+ deopt: deoptPath,
+ value: value
+ };
+
+ function evaluate(path) {
+ if (!confident) return;
+
+ var node = path.node;
+
+ if (path.isSequenceExpression()) {
+ var exprs = path.get("expressions");
+ return evaluate(exprs[exprs.length - 1]);
+ }
+
+ if (path.isStringLiteral() || path.isNumericLiteral() || path.isBooleanLiteral()) {
+ return node.value;
+ }
+
+ if (path.isNullLiteral()) {
+ return null;
+ }
+
+ if (path.isTemplateLiteral()) {
+ var str = "";
+
+ var i = 0;
+ var exprs = path.get("expressions");
+
+ var _arr = node.quasis;
+ for (var _i = 0; _i < _arr.length; _i++) {
+ var elem = _arr[_i];
+ // not confident, evaluated an expression we don't like
+ if (!confident) break;
+
+ // add on cooked element
+ str += elem.value.cooked;
+
+ // add on interpolated expression if it's present
+ var expr = exprs[i++];
+ if (expr) str += String(evaluate(expr));
+ }
+
+ if (!confident) return;
+ return str;
+ }
+
+ if (path.isConditionalExpression()) {
+ var testResult = evaluate(path.get("test"));
+ if (!confident) return;
+ if (testResult) {
+ return evaluate(path.get("consequent"));
+ } else {
+ return evaluate(path.get("alternate"));
+ }
+ }
+
+ if (path.isExpressionWrapper()) {
+ // TypeCastExpression, ExpressionStatement etc
+ return evaluate(path.get("expression"));
+ }
+
+ // "foo".length
+ if (path.isMemberExpression() && !path.parentPath.isCallExpression({ callee: node })) {
+ var property = path.get("property");
+ var object = path.get("object");
+
+ if (object.isLiteral() && property.isIdentifier()) {
+ var _value = object.node.value;
+ var type = typeof _value;
+ if (type === "number" || type === "string") {
+ return _value[property.node.name];
+ }
+ }
+ }
+
+ if (path.isReferencedIdentifier()) {
+ var binding = path.scope.getBinding(node.name);
+ if (binding && binding.hasValue) {
+ return binding.value;
+ } else {
+ if (node.name === "undefined") {
+ return undefined;
+ } else if (node.name === "Infinity") {
+ return Infinity;
+ } else if (node.name === "NaN") {
+ return NaN;
+ }
+
+ var resolved = path.resolve();
+ if (resolved === path) {
+ return deopt(path);
+ } else {
+ return evaluate(resolved);
+ }
+ }
+ }
+
+ if (path.isUnaryExpression({ prefix: true })) {
+ if (node.operator === "void") {
+ // we don't need to evaluate the argument to know what this will return
+ return undefined;
+ }
+
+ var argument = path.get("argument");
+ if (node.operator === "typeof" && (argument.isFunction() || argument.isClass())) {
+ return "function";
+ }
+
+ var arg = evaluate(argument);
+ if (!confident) return;
+ switch (node.operator) {
+ case "!":
+ return !arg;
+ case "+":
+ return +arg;
+ case "-":
+ return -arg;
+ case "~":
+ return ~arg;
+ case "typeof":
+ return typeof arg;
+ }
+ }
+
+ if (path.isArrayExpression()) {
+ var arr = [];
+ var elems = path.get("elements");
+ for (var _i2 = 0; _i2 < elems.length; _i2++) {
+ var elem = elems[_i2];
+ elem = elem.evaluate();
+
+ if (elem.confident) {
+ arr.push(elem.value);
+ } else {
+ return deopt(elem);
+ }
+ }
+ return arr;
+ }
+
+ if (path.isObjectExpression()) {
+ // todo
+ }
+
+ if (path.isLogicalExpression()) {
+ // If we are confident that one side of an && is false, or the left
+ // side of an || is true, we can be confident about the entire expression
+ var wasConfident = confident;
+ var left = evaluate(path.get("left"));
+ var leftConfident = confident;
+ confident = wasConfident;
+ var right = evaluate(path.get("right"));
+ var rightConfident = confident;
+ confident = leftConfident && rightConfident;
+
+ switch (node.operator) {
+ case "||":
+ // TODO consider having a "truthy type" that doesn't bail on
+ // left uncertainity but can still evaluate to truthy.
+ if (left && leftConfident) {
+ confident = true;
+ return left;
+ }
+
+ if (!confident) return;
+
+ return left || right;
+ case "&&":
+ if (!left && leftConfident || !right && rightConfident) {
+ confident = true;
+ }
+
+ if (!confident) return;
+
+ return left && right;
+ }
+ }
+
+ if (path.isBinaryExpression()) {
+ var left = evaluate(path.get("left"));
+ if (!confident) return;
+ var right = evaluate(path.get("right"));
+ if (!confident) return;
+
+ switch (node.operator) {
+ case "-":
+ return left - right;
+ case "+":
+ return left + right;
+ case "/":
+ return left / right;
+ case "*":
+ return left * right;
+ case "%":
+ return left % right;
+ case "**":
+ return Math.pow(left, right);
+ case "<":
+ return left < right;
+ case ">":
+ return left > right;
+ case "<=":
+ return left <= right;
+ case ">=":
+ return left >= right;
+ case "==":
+ return left == right;
+ case "!=":
+ return left != right;
+ case "===":
+ return left === right;
+ case "!==":
+ return left !== right;
+ case "|":
+ return left | right;
+ case "&":
+ return left & right;
+ case "^":
+ return left ^ right;
+ case "<<":
+ return left << right;
+ case ">>":
+ return left >> right;
+ case ">>>":
+ return left >>> right;
+ }
+ }
+
+ if (path.isCallExpression()) {
+ var callee = path.get("callee");
+ var context = undefined;
+ var func = undefined;
+
+ // Number(1);
+ if (callee.isIdentifier() && !path.scope.getBinding(callee.node.name, true) && VALID_CALLEES.indexOf(callee.node.name) >= 0) {
+ func = global[node.callee.name];
+ }
+
+ if (callee.isMemberExpression()) {
+ var object = callee.get("object");
+ var property = callee.get("property");
+
+ // Math.min(1, 2)
+ if (object.isIdentifier() && property.isIdentifier() && VALID_CALLEES.indexOf(object.node.name) >= 0 && INVALID_METHODS.indexOf(property.node.name) < 0) {
+ context = global[object.node.name];
+ func = context[property.node.name];
+ }
+
+ // "abc".charCodeAt(4)
+ if (object.isLiteral() && property.isIdentifier()) {
+ var type = typeof object.node.value;
+ if (type === "string" || type === "number") {
+ context = object.node.value;
+ func = context[property.node.name];
+ }
+ }
+ }
+
+ if (func) {
+ var args = path.get("arguments").map(evaluate);
+ if (!confident) return;
+
+ return func.apply(context, args);
+ }
+ }
+
+ deopt(path);
+ }
+}
\ No newline at end of file
diff --git a/node_modules/babel-traverse/lib/path/family.js b/node_modules/babel-traverse/lib/path/family.js
new file mode 100644
index 0000000..9f3ab77
--- /dev/null
+++ b/node_modules/babel-traverse/lib/path/family.js
@@ -0,0 +1,156 @@
+// This file contains methods responsible for dealing with/retrieving children or siblings.
+
+"use strict";
+
+var _interopRequireDefault = require("babel-runtime/helpers/interop-require-default")["default"];
+
+var _interopRequireWildcard = require("babel-runtime/helpers/interop-require-wildcard")["default"];
+
+exports.__esModule = true;
+exports.getStatementParent = getStatementParent;
+exports.getOpposite = getOpposite;
+exports.getCompletionRecords = getCompletionRecords;
+exports.getSibling = getSibling;
+exports.get = get;
+exports._getKey = _getKey;
+exports._getPattern = _getPattern;
+exports.getBindingIdentifiers = getBindingIdentifiers;
+exports.getOuterBindingIdentifiers = getOuterBindingIdentifiers;
+
+var _index = require("./index");
+
+var _index2 = _interopRequireDefault(_index);
+
+var _babelTypes = require("babel-types");
+
+var t = _interopRequireWildcard(_babelTypes);
+
+function getStatementParent() {
+ var path = this;
+
+ do {
+ if (!path.parentPath || Array.isArray(path.container) && path.isStatement()) {
+ break;
+ } else {
+ path = path.parentPath;
+ }
+ } while (path);
+
+ if (path && (path.isProgram() || path.isFile())) {
+ throw new Error("File/Program node, we can't possibly find a statement parent to this");
+ }
+
+ return path;
+}
+
+function getOpposite() {
+ if (this.key === "left") {
+ return this.getSibling("right");
+ } else if (this.key === "right") {
+ return this.getSibling("left");
+ }
+}
+
+function getCompletionRecords() {
+ var paths = [];
+
+ var add = function add(path) {
+ if (path) paths = paths.concat(path.getCompletionRecords());
+ };
+
+ if (this.isIfStatement()) {
+ add(this.get("consequent"));
+ add(this.get("alternate"));
+ } else if (this.isDoExpression() || this.isFor() || this.isWhile()) {
+ add(this.get("body"));
+ } else if (this.isProgram() || this.isBlockStatement()) {
+ add(this.get("body").pop());
+ } else if (this.isFunction()) {
+ return this.get("body").getCompletionRecords();
+ } else if (this.isTryStatement()) {
+ add(this.get("block"));
+ add(this.get("handler"));
+ add(this.get("finalizer"));
+ } else {
+ paths.push(this);
+ }
+
+ return paths;
+}
+
+function getSibling(key) {
+ return _index2["default"].get({
+ parentPath: this.parentPath,
+ parent: this.parent,
+ container: this.container,
+ listKey: this.listKey,
+ key: key
+ });
+}
+
+function get(key, context) {
+ if (context === true) context = this.context;
+ var parts = key.split(".");
+ if (parts.length === 1) {
+ // "foo"
+ return this._getKey(key, context);
+ } else {
+ // "foo.bar"
+ return this._getPattern(parts, context);
+ }
+}
+
+function _getKey(key, context) {
+ // istanbul ignore next
+
+ var _this = this;
+
+ var node = this.node;
+ var container = node[key];
+
+ if (Array.isArray(container)) {
+ // requested a container so give them all the paths
+ return container.map(function (_, i) {
+ return _index2["default"].get({
+ listKey: key,
+ parentPath: _this,
+ parent: node,
+ container: container,
+ key: i
+ }).setContext(context);
+ });
+ } else {
+ return _index2["default"].get({
+ parentPath: this,
+ parent: node,
+ container: node,
+ key: key
+ }).setContext(context);
+ }
+}
+
+function _getPattern(parts, context) {
+ var path = this;
+ var _arr = parts;
+ for (var _i = 0; _i < _arr.length; _i++) {
+ var part = _arr[_i];
+ if (part === ".") {
+ path = path.parentPath;
+ } else {
+ if (Array.isArray(path)) {
+ path = path[part];
+ } else {
+ path = path.get(part, context);
+ }
+ }
+ }
+ return path;
+}
+
+function getBindingIdentifiers(duplicates) {
+ return t.getBindingIdentifiers(this.node, duplicates);
+}
+
+function getOuterBindingIdentifiers(duplicates) {
+ return t.getOuterBindingIdentifiers(this.node, duplicates);
+}
\ No newline at end of file
diff --git a/node_modules/babel-traverse/lib/path/index.js b/node_modules/babel-traverse/lib/path/index.js
new file mode 100644
index 0000000..b5976e3
--- /dev/null
+++ b/node_modules/babel-traverse/lib/path/index.js
@@ -0,0 +1,239 @@
+/* eslint max-len: 0 */
+
+"use strict";
+
+var _classCallCheck = require("babel-runtime/helpers/class-call-check")["default"];
+
+var _interopRequireWildcard = require("babel-runtime/helpers/interop-require-wildcard")["default"];
+
+var _interopRequireDefault = require("babel-runtime/helpers/interop-require-default")["default"];
+
+exports.__esModule = true;
+
+var _libVirtualTypes = require("./lib/virtual-types");
+
+var virtualTypes = _interopRequireWildcard(_libVirtualTypes);
+
+var _debug2 = require("debug");
+
+var _debug3 = _interopRequireDefault(_debug2);
+
+var _invariant = require("invariant");
+
+var _invariant2 = _interopRequireDefault(_invariant);
+
+var _index = require("../index");
+
+var _index2 = _interopRequireDefault(_index);
+
+var _lodashObjectAssign = require("lodash/object/assign");
+
+var _lodashObjectAssign2 = _interopRequireDefault(_lodashObjectAssign);
+
+var _scope = require("../scope");
+
+var _scope2 = _interopRequireDefault(_scope);
+
+var _babelTypes = require("babel-types");
+
+var t = _interopRequireWildcard(_babelTypes);
+
+var _cache = require("../cache");
+
+var _debug = _debug3["default"]("babel");
+
+var NodePath = (function () {
+ function NodePath(hub, parent) {
+ _classCallCheck(this, NodePath);
+
+ this.parent = parent;
+ this.hub = hub;
+ this.contexts = [];
+ this.data = {};
+ this.shouldSkip = false;
+ this.shouldStop = false;
+ this.removed = false;
+ this.state = null;
+ this.opts = null;
+ this.skipKeys = null;
+ this.parentPath = null;
+ this.context = null;
+ this.container = null;
+ this.listKey = null;
+ this.inList = false;
+ this.parentKey = null;
+ this.key = null;
+ this.node = null;
+ this.scope = null;
+ this.type = null;
+ this.typeAnnotation = null;
+ }
+
+ NodePath.get = function get(_ref) {
+ var hub = _ref.hub;
+ var parentPath = _ref.parentPath;
+ var parent = _ref.parent;
+ var container = _ref.container;
+ var listKey = _ref.listKey;
+ var key = _ref.key;
+
+ if (!hub && parentPath) {
+ hub = parentPath.hub;
+ }
+
+ _invariant2["default"](parent, "To get a node path the parent needs to exist");
+
+ var targetNode = container[key];
+
+ var paths = _cache.path.get(parent) || [];
+ if (!_cache.path.has(parent)) {
+ _cache.path.set(parent, paths);
+ }
+
+ var path = undefined;
+
+ for (var i = 0; i < paths.length; i++) {
+ var pathCheck = paths[i];
+ if (pathCheck.node === targetNode) {
+ path = pathCheck;
+ break;
+ }
+ }
+
+ if (path && !(path instanceof NodePath)) {
+ if (path.constructor.name === "NodePath") {
+ // we're going to absolutley thrash the tree and allocate way too many node paths
+ // than is necessary but there's no way around this as the node module resolution
+ // algorithm is ridiculous
+ path = null;
+ } else {
+ // badly deserialised probably
+ throw new Error("We found a path that isn't a NodePath instance. Possiblly due to bad serialisation.");
+ }
+ }
+
+ if (!path) {
+ path = new NodePath(hub, parent);
+ paths.push(path);
+ }
+
+ path.setup(parentPath, container, listKey, key);
+
+ return path;
+ };
+
+ NodePath.prototype.getScope = function getScope(scope) {
+ var ourScope = scope;
+
+ // we're entering a new scope so let's construct it!
+ if (this.isScope()) {
+ ourScope = new _scope2["default"](this, scope);
+ }
+
+ return ourScope;
+ };
+
+ NodePath.prototype.setData = function setData(key, val) {
+ return this.data[key] = val;
+ };
+
+ NodePath.prototype.getData = function getData(key, def) {
+ var val = this.data[key];
+ if (!val && def) val = this.data[key] = def;
+ return val;
+ };
+
+ NodePath.prototype.buildCodeFrameError = function buildCodeFrameError(msg) {
+ var Error = arguments.length <= 1 || arguments[1] === undefined ? SyntaxError : arguments[1];
+
+ return this.hub.file.buildCodeFrameError(this.node, msg, Error);
+ };
+
+ NodePath.prototype.traverse = function traverse(visitor, state) {
+ _index2["default"](this.node, visitor, this.scope, state, this);
+ };
+
+ NodePath.prototype.mark = function mark(type, message) {
+ this.hub.file.metadata.marked.push({
+ type: type,
+ message: message,
+ loc: this.node.loc
+ });
+ };
+
+ NodePath.prototype.set = function set(key, node) {
+ t.validate(this.node, key, node);
+ this.node[key] = node;
+ };
+
+ NodePath.prototype.getPathLocation = function getPathLocation() {
+ var parts = [];
+ var path = this;
+ do {
+ var key = path.key;
+ if (path.inList) key = path.listKey + "[" + key + "]";
+ parts.unshift(key);
+ } while (path = path.parentPath);
+ return parts.join(".");
+ };
+
+ NodePath.prototype.debug = function debug(buildMessage) {
+ if (!_debug.enabled) return;
+ _debug(this.getPathLocation() + " " + this.type + ": " + buildMessage());
+ };
+
+ return NodePath;
+})();
+
+exports["default"] = NodePath;
+
+_lodashObjectAssign2["default"](NodePath.prototype, require("./ancestry"));
+_lodashObjectAssign2["default"](NodePath.prototype, require("./inference"));
+_lodashObjectAssign2["default"](NodePath.prototype, require("./replacement"));
+_lodashObjectAssign2["default"](NodePath.prototype, require("./evaluation"));
+_lodashObjectAssign2["default"](NodePath.prototype, require("./conversion"));
+_lodashObjectAssign2["default"](NodePath.prototype, require("./introspection"));
+_lodashObjectAssign2["default"](NodePath.prototype, require("./context"));
+_lodashObjectAssign2["default"](NodePath.prototype, require("./removal"));
+_lodashObjectAssign2["default"](NodePath.prototype, require("./modification"));
+_lodashObjectAssign2["default"](NodePath.prototype, require("./family"));
+_lodashObjectAssign2["default"](NodePath.prototype, require("./comments"));
+
+var _arr = t.TYPES;
+
+var _loop = function () {
+ var type = _arr[_i];
+ var typeKey = "is" + type;
+ NodePath.prototype[typeKey] = function (opts) {
+ return t[typeKey](this.node, opts);
+ };
+
+ NodePath.prototype["assert" + type] = function (opts) {
+ if (!this[typeKey](opts)) {
+ throw new TypeError("Expected node path of type " + type);
+ }
+ };
+};
+
+for (var _i = 0; _i < _arr.length; _i++) {
+ _loop();
+}
+
+var _loop2 = function (type) {
+ if (type[0] === "_") return "continue";
+ if (t.TYPES.indexOf(type) < 0) t.TYPES.push(type);
+
+ var virtualType = virtualTypes[type];
+
+ NodePath.prototype["is" + type] = function (opts) {
+ return virtualType.checkPath(this, opts);
+ };
+};
+
+for (var type in virtualTypes) {
+ var _ret2 = _loop2(type);
+
+ // istanbul ignore next
+ if (_ret2 === "continue") continue;
+}
+module.exports = exports["default"];
\ No newline at end of file
diff --git a/node_modules/babel-traverse/lib/path/inference/index.js b/node_modules/babel-traverse/lib/path/inference/index.js
new file mode 100644
index 0000000..5a48be4
--- /dev/null
+++ b/node_modules/babel-traverse/lib/path/inference/index.js
@@ -0,0 +1,134 @@
+"use strict";
+
+var _interopRequireWildcard = require("babel-runtime/helpers/interop-require-wildcard")["default"];
+
+exports.__esModule = true;
+exports.getTypeAnnotation = getTypeAnnotation;
+exports._getTypeAnnotation = _getTypeAnnotation;
+exports.isBaseType = isBaseType;
+exports.couldBeBaseType = couldBeBaseType;
+exports.baseTypeStrictlyMatches = baseTypeStrictlyMatches;
+exports.isGenericType = isGenericType;
+
+var _inferers = require("./inferers");
+
+var inferers = _interopRequireWildcard(_inferers);
+
+var _babelTypes = require("babel-types");
+
+var t = _interopRequireWildcard(_babelTypes);
+
+/**
+ * Infer the type of the current `NodePath`.
+ */
+
+function getTypeAnnotation() {
+ if (this.typeAnnotation) return this.typeAnnotation;
+
+ var type = this._getTypeAnnotation() || t.anyTypeAnnotation();
+ if (t.isTypeAnnotation(type)) type = type.typeAnnotation;
+ return this.typeAnnotation = type;
+}
+
+/**
+ * todo: split up this method
+ */
+
+function _getTypeAnnotation() {
+ var node = this.node;
+
+ if (!node) {
+ // handle initializerless variables, add in checks for loop initializers too
+ if (this.key === "init" && this.parentPath.isVariableDeclarator()) {
+ var declar = this.parentPath.parentPath;
+ var declarParent = declar.parentPath;
+
+ // for (let NODE in bar) {}
+ if (declar.key === "left" && declarParent.isForInStatement()) {
+ return t.stringTypeAnnotation();
+ }
+
+ // for (let NODE of bar) {}
+ if (declar.key === "left" && declarParent.isForOfStatement()) {
+ return t.anyTypeAnnotation();
+ }
+
+ return t.voidTypeAnnotation();
+ } else {
+ return;
+ }
+ }
+
+ if (node.typeAnnotation) {
+ return node.typeAnnotation;
+ }
+
+ var inferer = inferers[node.type];
+ if (inferer) {
+ return inferer.call(this, node);
+ }
+
+ inferer = inferers[this.parentPath.type];
+ if (inferer && inferer.validParent) {
+ return this.parentPath.getTypeAnnotation();
+ }
+}
+
+function isBaseType(baseName, soft) {
+ return _isBaseType(baseName, this.getTypeAnnotation(), soft);
+}
+
+function _isBaseType(baseName, type, soft) {
+ if (baseName === "string") {
+ return t.isStringTypeAnnotation(type);
+ } else if (baseName === "number") {
+ return t.isNumberTypeAnnotation(type);
+ } else if (baseName === "boolean") {
+ return t.isBooleanTypeAnnotation(type);
+ } else if (baseName === "any") {
+ return t.isAnyTypeAnnotation(type);
+ } else if (baseName === "mixed") {
+ return t.isMixedTypeAnnotation(type);
+ } else if (baseName === "void") {
+ return t.isVoidTypeAnnotation(type);
+ } else {
+ if (soft) {
+ return false;
+ } else {
+ throw new Error("Unknown base type " + baseName);
+ }
+ }
+}
+
+function couldBeBaseType(name) {
+ var type = this.getTypeAnnotation();
+ if (t.isAnyTypeAnnotation(type)) return true;
+
+ if (t.isUnionTypeAnnotation(type)) {
+ var _arr = type.types;
+
+ for (var _i = 0; _i < _arr.length; _i++) {
+ var type2 = _arr[_i];
+ if (t.isAnyTypeAnnotation(type2) || _isBaseType(name, type2, true)) {
+ return true;
+ }
+ }
+ return false;
+ } else {
+ return _isBaseType(name, type, true);
+ }
+}
+
+function baseTypeStrictlyMatches(right) {
+ var left = this.getTypeAnnotation();
+ right = right.getTypeAnnotation();
+
+ if (!t.isAnyTypeAnnotation(left) && t.isFlowBaseAnnotation(left)) {
+ return right.type === left.type;
+ }
+}
+
+function isGenericType(genericName) {
+ var type = this.getTypeAnnotation();
+ return t.isGenericTypeAnnotation(type) && t.isIdentifier(type.id, { name: genericName });
+}
\ No newline at end of file
diff --git a/node_modules/babel-traverse/lib/path/inference/inferer-reference.js b/node_modules/babel-traverse/lib/path/inference/inferer-reference.js
new file mode 100644
index 0000000..7500a6a
--- /dev/null
+++ b/node_modules/babel-traverse/lib/path/inference/inferer-reference.js
@@ -0,0 +1,208 @@
+"use strict";
+
+var _interopRequireWildcard = require("babel-runtime/helpers/interop-require-wildcard")["default"];
+
+exports.__esModule = true;
+
+var _babelTypes = require("babel-types");
+
+var t = _interopRequireWildcard(_babelTypes);
+
+exports["default"] = function (node) {
+ if (!this.isReferenced()) return;
+
+ // check if a binding exists of this value and if so then return a union type of all
+ // possible types that the binding could be
+ var binding = this.scope.getBinding(node.name);
+ if (binding) {
+ if (binding.identifier.typeAnnotation) {
+ return binding.identifier.typeAnnotation;
+ } else {
+ return getTypeAnnotationBindingConstantViolations(this, node.name);
+ }
+ }
+
+ // built-in values
+ if (node.name === "undefined") {
+ return t.voidTypeAnnotation();
+ } else if (node.name === "NaN" || node.name === "Infinity") {
+ return t.numberTypeAnnotation();
+ } else if (node.name === "arguments") {
+ // todo
+ }
+};
+
+function getTypeAnnotationBindingConstantViolations(path, name) {
+ var binding = path.scope.getBinding(name);
+
+ var types = [];
+ path.typeAnnotation = t.unionTypeAnnotation(types);
+
+ var functionConstantViolations = [];
+ var constantViolations = getConstantViolationsBefore(binding, path, functionConstantViolations);
+
+ var testType = getConditionalAnnotation(path, name);
+ if (testType) {
+ (function () {
+ var testConstantViolations = getConstantViolationsBefore(binding, testType.ifStatement);
+
+ // remove constant violations observed before the IfStatement
+ constantViolations = constantViolations.filter(function (path) {
+ return testConstantViolations.indexOf(path) < 0;
+ });
+
+ // clear current types and add in observed test type
+ types.push(testType.typeAnnotation);
+ })();
+ }
+
+ if (constantViolations.length) {
+ // pick one constant from each scope which will represent the last possible
+ // control flow path that it could've taken/been
+ /* This code is broken for the following problems:
+ * It thinks that assignments can only happen in scopes.
+ * What about conditionals, if statements without block,
+ * or guarded assignments.
+ * It also checks to see if one of the assignments is in the
+ * same scope and uses that as the only "violation". However,
+ * the binding is returned by `getConstantViolationsBefore` so we for
+ * sure always going to return that as the only "violation".
+ let rawConstantViolations = constantViolations.reverse();
+ let visitedScopes = [];
+ constantViolations = [];
+ for (let violation of (rawConstantViolations: Array)) {
+ let violationScope = violation.scope;
+ if (visitedScopes.indexOf(violationScope) >= 0) continue;
+ visitedScopes.push(violationScope);
+ constantViolations.push(violation);
+ if (violationScope === path.scope) {
+ constantViolations = [violation];
+ break;
+ }
+ }*/
+
+ // add back on function constant violations since we can't track calls
+ constantViolations = constantViolations.concat(functionConstantViolations);
+
+ // push on inferred types of violated paths
+ var _arr = constantViolations;
+ for (var _i = 0; _i < _arr.length; _i++) {
+ var violation = _arr[_i];
+ types.push(violation.getTypeAnnotation());
+ }
+ }
+
+ if (types.length) {
+ return t.createUnionTypeAnnotation(types);
+ }
+}
+
+function getConstantViolationsBefore(binding, path, functions) {
+ var violations = binding.constantViolations.slice();
+ violations.unshift(binding.path);
+ return violations.filter(function (violation) {
+ violation = violation.resolve();
+ var status = violation._guessExecutionStatusRelativeTo(path);
+ if (functions && status === "function") functions.push(violation);
+ return status === "before";
+ });
+}
+
+function inferAnnotationFromBinaryExpression(name, path) {
+ var operator = path.node.operator;
+
+ var right = path.get("right").resolve();
+ var left = path.get("left").resolve();
+
+ var target = undefined;
+ if (left.isIdentifier({ name: name })) {
+ target = right;
+ } else if (right.isIdentifier({ name: name })) {
+ target = left;
+ }
+ if (target) {
+ if (operator === "===") {
+ return target.getTypeAnnotation();
+ } else if (t.BOOLEAN_NUMBER_BINARY_OPERATORS.indexOf(operator) >= 0) {
+ return t.numberTypeAnnotation();
+ } else {
+ return;
+ }
+ } else {
+ if (operator !== "===") return;
+ }
+
+ //
+ var typeofPath = undefined;
+ var typePath = undefined;
+ if (left.isUnaryExpression({ operator: "typeof" })) {
+ typeofPath = left;
+ typePath = right;
+ } else if (right.isUnaryExpression({ operator: "typeof" })) {
+ typeofPath = right;
+ typePath = left;
+ }
+ if (!typePath && !typeofPath) return;
+
+ // ensure that the type path is a Literal
+ typePath = typePath.resolve();
+ if (!typePath.isLiteral()) return;
+
+ // and that it's a string so we can infer it
+ var typeValue = typePath.node.value;
+ if (typeof typeValue !== "string") return;
+
+ // and that the argument of the typeof path references us!
+ if (!typeofPath.get("argument").isIdentifier({ name: name })) return;
+
+ // turn type value into a type annotation
+ return t.createTypeAnnotationBasedOnTypeof(typePath.node.value);
+}
+
+function getParentConditionalPath(path) {
+ var parentPath = undefined;
+ while (parentPath = path.parentPath) {
+ if (parentPath.isIfStatement() || parentPath.isConditionalExpression()) {
+ if (path.key === "test") {
+ return;
+ } else {
+ return parentPath;
+ }
+ } else {
+ path = parentPath;
+ }
+ }
+}
+
+function getConditionalAnnotation(path, name) {
+ var ifStatement = getParentConditionalPath(path);
+ if (!ifStatement) return;
+
+ var test = ifStatement.get("test");
+ var paths = [test];
+ var types = [];
+
+ do {
+ var _path = paths.shift().resolve();
+
+ if (_path.isLogicalExpression()) {
+ paths.push(_path.get("left"));
+ paths.push(_path.get("right"));
+ }
+
+ if (_path.isBinaryExpression()) {
+ var type = inferAnnotationFromBinaryExpression(name, _path);
+ if (type) types.push(type);
+ }
+ } while (paths.length);
+
+ if (types.length) {
+ return {
+ typeAnnotation: t.createUnionTypeAnnotation(types),
+ ifStatement: ifStatement
+ };
+ } else {
+ return getConditionalAnnotation(ifStatement, name);
+ }
+}
+module.exports = exports["default"];
\ No newline at end of file
diff --git a/node_modules/babel-traverse/lib/path/inference/inferers.js b/node_modules/babel-traverse/lib/path/inference/inferers.js
new file mode 100644
index 0000000..3157826
--- /dev/null
+++ b/node_modules/babel-traverse/lib/path/inference/inferers.js
@@ -0,0 +1,193 @@
+"use strict";
+
+var _interopRequireWildcard = require("babel-runtime/helpers/interop-require-wildcard")["default"];
+
+var _interopRequire = require("babel-runtime/helpers/interop-require")["default"];
+
+exports.__esModule = true;
+exports.VariableDeclarator = VariableDeclarator;
+exports.TypeCastExpression = TypeCastExpression;
+exports.NewExpression = NewExpression;
+exports.TemplateLiteral = TemplateLiteral;
+exports.UnaryExpression = UnaryExpression;
+exports.BinaryExpression = BinaryExpression;
+exports.LogicalExpression = LogicalExpression;
+exports.ConditionalExpression = ConditionalExpression;
+exports.SequenceExpression = SequenceExpression;
+exports.AssignmentExpression = AssignmentExpression;
+exports.UpdateExpression = UpdateExpression;
+exports.StringLiteral = StringLiteral;
+exports.NumericLiteral = NumericLiteral;
+exports.BooleanLiteral = BooleanLiteral;
+exports.NullLiteral = NullLiteral;
+exports.RegExpLiteral = RegExpLiteral;
+exports.ObjectExpression = ObjectExpression;
+exports.ArrayExpression = ArrayExpression;
+exports.RestElement = RestElement;
+exports.CallExpression = CallExpression;
+exports.TaggedTemplateExpression = TaggedTemplateExpression;
+
+var _babelTypes = require("babel-types");
+
+var t = _interopRequireWildcard(_babelTypes);
+
+var _infererReference = require("./inferer-reference");
+
+exports.Identifier = _interopRequire(_infererReference);
+
+function VariableDeclarator() {
+ var id = this.get("id");
+
+ if (id.isIdentifier()) {
+ return this.get("init").getTypeAnnotation();
+ } else {
+ return;
+ }
+}
+
+function TypeCastExpression(node) {
+ return node.typeAnnotation;
+}
+
+TypeCastExpression.validParent = true;
+
+function NewExpression(node) {
+ if (this.get("callee").isIdentifier()) {
+ // only resolve identifier callee
+ return t.genericTypeAnnotation(node.callee);
+ }
+}
+
+function TemplateLiteral() {
+ return t.stringTypeAnnotation();
+}
+
+function UnaryExpression(node) {
+ var operator = node.operator;
+
+ if (operator === "void") {
+ return t.voidTypeAnnotation();
+ } else if (t.NUMBER_UNARY_OPERATORS.indexOf(operator) >= 0) {
+ return t.numberTypeAnnotation();
+ } else if (t.STRING_UNARY_OPERATORS.indexOf(operator) >= 0) {
+ return t.stringTypeAnnotation();
+ } else if (t.BOOLEAN_UNARY_OPERATORS.indexOf(operator) >= 0) {
+ return t.booleanTypeAnnotation();
+ }
+}
+
+function BinaryExpression(node) {
+ var operator = node.operator;
+
+ if (t.NUMBER_BINARY_OPERATORS.indexOf(operator) >= 0) {
+ return t.numberTypeAnnotation();
+ } else if (t.BOOLEAN_BINARY_OPERATORS.indexOf(operator) >= 0) {
+ return t.booleanTypeAnnotation();
+ } else if (operator === "+") {
+ var right = this.get("right");
+ var left = this.get("left");
+
+ if (left.isBaseType("number") && right.isBaseType("number")) {
+ // both numbers so this will be a number
+ return t.numberTypeAnnotation();
+ } else if (left.isBaseType("string") || right.isBaseType("string")) {
+ // one is a string so the result will be a string
+ return t.stringTypeAnnotation();
+ }
+
+ // unsure if left and right are strings or numbers so stay on the safe side
+ return t.unionTypeAnnotation([t.stringTypeAnnotation(), t.numberTypeAnnotation()]);
+ }
+}
+
+function LogicalExpression() {
+ return t.createUnionTypeAnnotation([this.get("left").getTypeAnnotation(), this.get("right").getTypeAnnotation()]);
+}
+
+function ConditionalExpression() {
+ return t.createUnionTypeAnnotation([this.get("consequent").getTypeAnnotation(), this.get("alternate").getTypeAnnotation()]);
+}
+
+function SequenceExpression() {
+ return this.get("expressions").pop().getTypeAnnotation();
+}
+
+function AssignmentExpression() {
+ return this.get("right").getTypeAnnotation();
+}
+
+function UpdateExpression(node) {
+ var operator = node.operator;
+ if (operator === "++" || operator === "--") {
+ return t.numberTypeAnnotation();
+ }
+}
+
+function StringLiteral() {
+ return t.stringTypeAnnotation();
+}
+
+function NumericLiteral() {
+ return t.numberTypeAnnotation();
+}
+
+function BooleanLiteral() {
+ return t.booleanTypeAnnotation();
+}
+
+function NullLiteral() {
+ return t.nullLiteralTypeAnnotation();
+}
+
+function RegExpLiteral() {
+ return t.genericTypeAnnotation(t.identifier("RegExp"));
+}
+
+function ObjectExpression() {
+ return t.genericTypeAnnotation(t.identifier("Object"));
+}
+
+function ArrayExpression() {
+ return t.genericTypeAnnotation(t.identifier("Array"));
+}
+
+function RestElement() {
+ return ArrayExpression();
+}
+
+RestElement.validParent = true;
+
+function Func() {
+ return t.genericTypeAnnotation(t.identifier("Function"));
+}
+
+exports.Function = Func;
+exports.Class = Func;
+
+function CallExpression() {
+ return resolveCall(this.get("callee"));
+}
+
+function TaggedTemplateExpression() {
+ return resolveCall(this.get("tag"));
+}
+
+function resolveCall(callee) {
+ callee = callee.resolve();
+
+ if (callee.isFunction()) {
+ if (callee.is("async")) {
+ if (callee.is("generator")) {
+ return t.genericTypeAnnotation(t.identifier("AsyncIterator"));
+ } else {
+ return t.genericTypeAnnotation(t.identifier("Promise"));
+ }
+ } else {
+ if (callee.node.returnType) {
+ return callee.node.returnType;
+ } else {
+ // todo: get union type of all return arguments
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/node_modules/babel-traverse/lib/path/introspection.js b/node_modules/babel-traverse/lib/path/introspection.js
new file mode 100644
index 0000000..af73759
--- /dev/null
+++ b/node_modules/babel-traverse/lib/path/introspection.js
@@ -0,0 +1,477 @@
+// This file contains methods responsible for introspecting the current path for certain values.
+
+"use strict";
+
+var _interopRequireDefault = require("babel-runtime/helpers/interop-require-default")["default"];
+
+var _interopRequireWildcard = require("babel-runtime/helpers/interop-require-wildcard")["default"];
+
+exports.__esModule = true;
+exports.matchesPattern = matchesPattern;
+exports.has = has;
+exports.isStatic = isStatic;
+exports.isnt = isnt;
+exports.equals = equals;
+exports.isNodeType = isNodeType;
+exports.canHaveVariableDeclarationOrExpression = canHaveVariableDeclarationOrExpression;
+exports.canSwapBetweenExpressionAndStatement = canSwapBetweenExpressionAndStatement;
+exports.isCompletionRecord = isCompletionRecord;
+exports.isStatementOrBlock = isStatementOrBlock;
+exports.referencesImport = referencesImport;
+exports.getSource = getSource;
+exports.willIMaybeExecuteBefore = willIMaybeExecuteBefore;
+exports._guessExecutionStatusRelativeTo = _guessExecutionStatusRelativeTo;
+exports._guessExecutionStatusRelativeToDifferentFunctions = _guessExecutionStatusRelativeToDifferentFunctions;
+exports.resolve = resolve;
+exports._resolve = _resolve;
+
+var _lodashCollectionIncludes = require("lodash/collection/includes");
+
+var _lodashCollectionIncludes2 = _interopRequireDefault(_lodashCollectionIncludes);
+
+var _babelTypes = require("babel-types");
+
+var t = _interopRequireWildcard(_babelTypes);
+
+/**
+ * Match the current node if it matches the provided `pattern`.
+ *
+ * For example, given the match `React.createClass` it would match the
+ * parsed nodes of `React.createClass` and `React["createClass"]`.
+ */
+
+function matchesPattern(pattern, allowPartial) {
+ // not a member expression
+ if (!this.isMemberExpression()) return false;
+
+ var parts = pattern.split(".");
+ var search = [this.node];
+ var i = 0;
+
+ function matches(name) {
+ var part = parts[i];
+ return part === "*" || name === part;
+ }
+
+ while (search.length) {
+ var node = search.shift();
+
+ if (allowPartial && i === parts.length) {
+ return true;
+ }
+
+ if (t.isIdentifier(node)) {
+ // this part doesn't match
+ if (!matches(node.name)) return false;
+ } else if (t.isLiteral(node)) {
+ // this part doesn't match
+ if (!matches(node.value)) return false;
+ } else if (t.isMemberExpression(node)) {
+ if (node.computed && !t.isLiteral(node.property)) {
+ // we can't deal with this
+ return false;
+ } else {
+ search.unshift(node.property);
+ search.unshift(node.object);
+ continue;
+ }
+ } else if (t.isThisExpression(node)) {
+ if (!matches("this")) return false;
+ } else {
+ // we can't deal with this
+ return false;
+ }
+
+ // too many parts
+ if (++i > parts.length) {
+ return false;
+ }
+ }
+
+ return i === parts.length;
+}
+
+/**
+ * Check whether we have the input `key`. If the `key` references an array then we check
+ * if the array has any items, otherwise we just check if it's falsy.
+ */
+
+function has(key) {
+ var val = this.node && this.node[key];
+ if (val && Array.isArray(val)) {
+ return !!val.length;
+ } else {
+ return !!val;
+ }
+}
+
+/**
+ * Description
+ */
+
+function isStatic() {
+ return this.scope.isStatic(this.node);
+}
+
+/**
+ * Alias of `has`.
+ */
+
+var is = has;
+
+exports.is = is;
+/**
+ * Opposite of `has`.
+ */
+
+function isnt(key) {
+ return !this.has(key);
+}
+
+/**
+ * Check whether the path node `key` strict equals `value`.
+ */
+
+function equals(key, value) {
+ return this.node[key] === value;
+}
+
+/**
+ * Check the type against our stored internal type of the node. This is handy when a node has
+ * been removed yet we still internally know the type and need it to calculate node replacement.
+ */
+
+function isNodeType(type) {
+ return t.isType(this.type, type);
+}
+
+/**
+ * This checks whether or not we're in one of the following positions:
+ *
+ * for (KEY in right);
+ * for (KEY;;);
+ *
+ * This is because these spots allow VariableDeclarations AND normal expressions so we need
+ * to tell the path replacement that it's ok to replace this with an expression.
+ */
+
+function canHaveVariableDeclarationOrExpression() {
+ return (this.key === "init" || this.key === "left") && this.parentPath.isFor();
+}
+
+/**
+ * This checks whether we are swapping an arrow function's body between an
+ * expression and a block statement (or vice versa).
+ *
+ * This is because arrow functions may implicitly return an expression, which
+ * is the same as containing a block statement.
+ */
+
+function canSwapBetweenExpressionAndStatement(replacement) {
+ if (this.key !== "body" || !this.parentPath.isArrowFunctionExpression()) {
+ return false;
+ }
+
+ if (this.isExpression()) {
+ return t.isBlockStatement(replacement);
+ } else if (this.isBlockStatement()) {
+ return t.isExpression(replacement);
+ }
+
+ return false;
+}
+
+/**
+ * Check whether the current path references a completion record
+ */
+
+function isCompletionRecord(allowInsideFunction) {
+ var path = this;
+ var first = true;
+
+ do {
+ var container = path.container;
+
+ // we're in a function so can't be a completion record
+ if (path.isFunction() && !first) {
+ return !!allowInsideFunction;
+ }
+
+ first = false;
+
+ // check to see if we're the last item in the container and if we are
+ // we're a completion record!
+ if (Array.isArray(container) && path.key !== container.length - 1) {
+ return false;
+ }
+ } while ((path = path.parentPath) && !path.isProgram());
+
+ return true;
+}
+
+/**
+ * Check whether or not the current `key` allows either a single statement or block statement
+ * so we can explode it if necessary.
+ */
+
+function isStatementOrBlock() {
+ if (this.parentPath.isLabeledStatement() || t.isBlockStatement(this.container)) {
+ return false;
+ } else {
+ return _lodashCollectionIncludes2["default"](t.STATEMENT_OR_BLOCK_KEYS, this.key);
+ }
+}
+
+/**
+ * Check if the currently assigned path references the `importName` of `moduleSource`.
+ */
+
+function referencesImport(moduleSource, importName) {
+ if (!this.isReferencedIdentifier()) return false;
+
+ var binding = this.scope.getBinding(this.node.name);
+ if (!binding || binding.kind !== "module") return false;
+
+ var path = binding.path;
+ var parent = path.parentPath;
+ if (!parent.isImportDeclaration()) return false;
+
+ // check moduleSource
+ if (parent.node.source.value === moduleSource) {
+ if (!importName) return true;
+ } else {
+ return false;
+ }
+
+ if (path.isImportDefaultSpecifier() && importName === "default") {
+ return true;
+ }
+
+ if (path.isImportNamespaceSpecifier() && importName === "*") {
+ return true;
+ }
+
+ if (path.isImportSpecifier() && path.node.imported.name === importName) {
+ return true;
+ }
+
+ return false;
+}
+
+/**
+ * Get the source code associated with this node.
+ */
+
+function getSource() {
+ var node = this.node;
+ if (node.end) {
+ return this.hub.file.code.slice(node.start, node.end);
+ } else {
+ return "";
+ }
+}
+
+function willIMaybeExecuteBefore(target) {
+ return this._guessExecutionStatusRelativeTo(target) !== "after";
+}
+
+/**
+ * Given a `target` check the execution status of it relative to the current path.
+ *
+ * "Execution status" simply refers to where or not we **think** this will execuete
+ * before or after the input `target` element.
+ */
+
+function _guessExecutionStatusRelativeTo(target) {
+ // check if the two paths are in different functions, we can't track execution of these
+ var targetFuncParent = target.scope.getFunctionParent();
+ var selfFuncParent = this.scope.getFunctionParent();
+
+ // here we check the `node` equality as sometimes we may have different paths for the
+ // same node due to path thrashing
+ if (targetFuncParent.node !== selfFuncParent.node) {
+ var _status = this._guessExecutionStatusRelativeToDifferentFunctions(targetFuncParent);
+ if (_status) {
+ return _status;
+ } else {
+ target = targetFuncParent.path;
+ }
+ }
+
+ var targetPaths = target.getAncestry();
+ if (targetPaths.indexOf(this) >= 0) return "after";
+
+ var selfPaths = this.getAncestry();
+
+ // get ancestor where the branches intersect
+ var commonPath = undefined;
+ var targetIndex = undefined;
+ var selfIndex = undefined;
+ for (selfIndex = 0; selfIndex < selfPaths.length; selfIndex++) {
+ var selfPath = selfPaths[selfIndex];
+ targetIndex = targetPaths.indexOf(selfPath);
+ if (targetIndex >= 0) {
+ commonPath = selfPath;
+ break;
+ }
+ }
+ if (!commonPath) {
+ return "before";
+ }
+
+ // get the relationship paths that associate these nodes to their common ancestor
+ var targetRelationship = targetPaths[targetIndex - 1];
+ var selfRelationship = selfPaths[selfIndex - 1];
+ if (!targetRelationship || !selfRelationship) {
+ return "before";
+ }
+
+ // container list so let's see which one is after the other
+ if (targetRelationship.listKey && targetRelationship.container === selfRelationship.container) {
+ return targetRelationship.key > selfRelationship.key ? "before" : "after";
+ }
+
+ // otherwise we're associated by a parent node, check which key comes before the other
+ var targetKeyPosition = t.VISITOR_KEYS[targetRelationship.type].indexOf(targetRelationship.key);
+ var selfKeyPosition = t.VISITOR_KEYS[selfRelationship.type].indexOf(selfRelationship.key);
+ return targetKeyPosition > selfKeyPosition ? "before" : "after";
+}
+
+function _guessExecutionStatusRelativeToDifferentFunctions(targetFuncParent) {
+ var targetFuncPath = targetFuncParent.path;
+ if (!targetFuncPath.isFunctionDeclaration()) return;
+
+ // so we're in a completely different function, if this is a function declaration
+ // then we can be a bit smarter and handle cases where the function is either
+ // a. not called at all (part of an export)
+ // b. called directly
+ var binding = targetFuncPath.scope.getBinding(targetFuncPath.node.id.name);
+
+ // no references!
+ if (!binding.references) return "before";
+
+ var referencePaths = binding.referencePaths;
+
+ // verify that all of the references are calls
+ for (var _i = 0; _i < referencePaths.length; _i++) {
+ var path = referencePaths[_i];
+ if (path.key !== "callee" || !path.parentPath.isCallExpression()) {
+ return;
+ }
+ }
+
+ var allStatus = undefined;
+
+ // verify that all the calls have the same execution status
+ for (var _i2 = 0; _i2 < referencePaths.length; _i2++) {
+ var path = referencePaths[_i2];
+ // if a reference is a child of the function we're checking against then we can
+ // safelty ignore it
+ var childOfFunction = !!path.find(function (path) {
+ return path.node === targetFuncPath.node;
+ });
+ if (childOfFunction) continue;
+
+ var _status2 = this._guessExecutionStatusRelativeTo(path);
+
+ if (allStatus) {
+ if (allStatus !== _status2) return;
+ } else {
+ allStatus = _status2;
+ }
+ }
+
+ return allStatus;
+}
+
+/**
+ * Resolve a "pointer" `NodePath` to it's absolute path.
+ */
+
+function resolve(dangerous, resolved) {
+ return this._resolve(dangerous, resolved) || this;
+}
+
+function _resolve(dangerous, resolved) {
+ // istanbul ignore next
+
+ var _this = this;
+
+ // detect infinite recursion
+ // todo: possibly have a max length on this just to be safe
+ if (resolved && resolved.indexOf(this) >= 0) return;
+
+ // we store all the paths we've "resolved" in this array to prevent infinite recursion
+ resolved = resolved || [];
+ resolved.push(this);
+
+ if (this.isVariableDeclarator()) {
+ if (this.get("id").isIdentifier()) {
+ return this.get("init").resolve(dangerous, resolved);
+ } else {
+ // otherwise it's a request for a pattern and that's a bit more tricky
+ }
+ } else if (this.isReferencedIdentifier()) {
+ var binding = this.scope.getBinding(this.node.name);
+ if (!binding) return;
+
+ // reassigned so we can't really resolve it
+ if (!binding.constant) return;
+
+ // todo - lookup module in dependency graph
+ if (binding.kind === "module") return;
+
+ if (binding.path !== this) {
+ var _ret = (function () {
+ var ret = binding.path.resolve(dangerous, resolved);
+ // If the identifier resolves to parent node then we can't really resolve it.
+ if (_this.find(function (parent) {
+ return parent.node === ret.node;
+ })) return {
+ v: undefined
+ };
+ return {
+ v: ret
+ };
+ })();
+
+ // istanbul ignore next
+ if (typeof _ret === "object") return _ret.v;
+ }
+ } else if (this.isTypeCastExpression()) {
+ return this.get("expression").resolve(dangerous, resolved);
+ } else if (dangerous && this.isMemberExpression()) {
+ // this is dangerous, as non-direct target assignments will mutate it's state
+ // making this resolution inaccurate
+
+ var targetKey = this.toComputedKey();
+ if (!t.isLiteral(targetKey)) return;
+
+ var targetName = targetKey.value;
+
+ var target = this.get("object").resolve(dangerous, resolved);
+
+ if (target.isObjectExpression()) {
+ var props = target.get("properties");
+ var _arr = props;
+ for (var _i3 = 0; _i3 < _arr.length; _i3++) {
+ var prop = _arr[_i3];
+ if (!prop.isProperty()) continue;
+
+ var key = prop.get("key");
+
+ // { foo: obj }
+ var match = prop.isnt("computed") && key.isIdentifier({ name: targetName });
+
+ // { "foo": "obj" } or { ["foo"]: "obj" }
+ match = match || key.isLiteral({ value: targetName });
+
+ if (match) return prop.get("value").resolve(dangerous, resolved);
+ }
+ } else if (target.isArrayExpression() && !isNaN(+targetName)) {
+ var elems = target.get("elements");
+ var elem = elems[targetName];
+ if (elem) return elem.resolve(dangerous, resolved);
+ }
+ }
+}
\ No newline at end of file
diff --git a/node_modules/babel-traverse/lib/path/lib/hoister.js b/node_modules/babel-traverse/lib/path/lib/hoister.js
new file mode 100644
index 0000000..d910472
--- /dev/null
+++ b/node_modules/babel-traverse/lib/path/lib/hoister.js
@@ -0,0 +1,148 @@
+"use strict";
+
+var _classCallCheck = require("babel-runtime/helpers/class-call-check")["default"];
+
+var _interopRequireWildcard = require("babel-runtime/helpers/interop-require-wildcard")["default"];
+
+exports.__esModule = true;
+
+var _babelTypes = require("babel-types");
+
+var t = _interopRequireWildcard(_babelTypes);
+
+var referenceVisitor = {
+ ReferencedIdentifier: function ReferencedIdentifier(path, state) {
+ if (path.isJSXIdentifier() && _babelTypes.react.isCompatTag(path.node.name)) {
+ return;
+ }
+
+ // direct references that we need to track to hoist this to the highest scope we can
+ var binding = path.scope.getBinding(path.node.name);
+ if (!binding) return;
+
+ // this binding isn't accessible from the parent scope so we can safely ignore it
+ // eg. it's in a closure etc
+ if (binding !== state.scope.getBinding(path.node.name)) return;
+
+ if (binding.constant) {
+ state.bindings[path.node.name] = binding;
+ } else {
+ var _arr = binding.constantViolations;
+
+ for (var _i = 0; _i < _arr.length; _i++) {
+ var violationPath = _arr[_i];
+ state.breakOnScopePaths = state.breakOnScopePaths.concat(violationPath.getAncestry());
+ }
+ }
+ }
+};
+
+var PathHoister = (function () {
+ function PathHoister(path, scope) {
+ _classCallCheck(this, PathHoister);
+
+ this.breakOnScopePaths = [];
+ this.bindings = {};
+ this.scopes = [];
+ this.scope = scope;
+ this.path = path;
+ }
+
+ PathHoister.prototype.isCompatibleScope = function isCompatibleScope(scope) {
+ for (var key in this.bindings) {
+ var binding = this.bindings[key];
+ if (!scope.bindingIdentifierEquals(key, binding.identifier)) {
+ return false;
+ }
+ }
+
+ return true;
+ };
+
+ PathHoister.prototype.getCompatibleScopes = function getCompatibleScopes() {
+ var scope = this.path.scope;
+ do {
+ if (this.isCompatibleScope(scope)) {
+ this.scopes.push(scope);
+ } else {
+ break;
+ }
+
+ if (this.breakOnScopePaths.indexOf(scope.path) >= 0) {
+ break;
+ }
+ } while (scope = scope.parent);
+ };
+
+ PathHoister.prototype.getAttachmentPath = function getAttachmentPath() {
+ var scopes = this.scopes;
+
+ var scope = scopes.pop();
+ if (!scope) return;
+
+ if (scope.path.isFunction()) {
+ if (this.hasOwnParamBindings(scope)) {
+ // should ignore this scope since it's ourselves
+ if (this.scope === scope) return;
+
+ // needs to be attached to the body
+ return scope.path.get("body").get("body")[0];
+ } else {
+ // doesn't need to be be attached to this scope
+ return this.getNextScopeStatementParent();
+ }
+ } else if (scope.path.isProgram()) {
+ return this.getNextScopeStatementParent();
+ }
+ };
+
+ PathHoister.prototype.getNextScopeStatementParent = function getNextScopeStatementParent() {
+ var scope = this.scopes.pop();
+ if (scope) return scope.path.getStatementParent();
+ };
+
+ PathHoister.prototype.hasOwnParamBindings = function hasOwnParamBindings(scope) {
+ for (var _name in this.bindings) {
+ if (!scope.hasOwnBinding(_name)) continue;
+
+ var binding = this.bindings[_name];
+ if (binding.kind === "param") return true;
+ }
+ return false;
+ };
+
+ PathHoister.prototype.run = function run() {
+ var node = this.path.node;
+ if (node._hoisted) return;
+ node._hoisted = true;
+
+ this.path.traverse(referenceVisitor, this);
+
+ this.getCompatibleScopes();
+
+ var attachTo = this.getAttachmentPath();
+ if (!attachTo) return;
+
+ // don't bother hoisting to the same function as this will cause multiple branches to be evaluated more than once leading to a bad optimisation
+ if (attachTo.getFunctionParent() === this.path.getFunctionParent()) return;
+
+ var uid = attachTo.scope.generateUidIdentifier("ref");
+
+ attachTo.insertBefore([t.variableDeclaration("var", [t.variableDeclarator(uid, this.path.node)])]);
+
+ var parent = this.path.parentPath;
+
+ if (parent.isJSXElement() && this.path.container === parent.node.children) {
+ // turning the `span` in `
` to an expression so we need to wrap it with
+ // an expression container
+ uid = t.JSXExpressionContainer(uid);
+ }
+
+ this.path.replaceWith(uid);
+ };
+
+ return PathHoister;
+})();
+
+exports["default"] = PathHoister;
+module.exports = exports["default"];
\ No newline at end of file
diff --git a/node_modules/babel-traverse/lib/path/lib/removal-hooks.js b/node_modules/babel-traverse/lib/path/lib/removal-hooks.js
new file mode 100644
index 0000000..8e7752d
--- /dev/null
+++ b/node_modules/babel-traverse/lib/path/lib/removal-hooks.js
@@ -0,0 +1,65 @@
+// this file contains hooks that handle ancestry cleanup of parent nodes when removing children
+
+/**
+ * Pre hooks should be used for either rejecting removal or delegating removal
+ */
+
+"use strict";
+
+exports.__esModule = true;
+var hooks = [function (self, parent) {
+ if (self.key === "body" && parent.isArrowFunctionExpression()) {
+ self.replaceWith(self.scope.buildUndefinedNode());
+ return true;
+ }
+}, function (self, parent) {
+ var removeParent = false;
+
+ // while (NODE);
+ // removing the test of a while/switch, we can either just remove it entirely *or* turn the `test` into `true`
+ // unlikely that the latter will ever be what's wanted so we just remove the loop to avoid infinite recursion
+ removeParent = removeParent || self.key === "test" && (parent.isWhile() || parent.isSwitchCase());
+
+ // export NODE;
+ // just remove a declaration for an export as this is no longer valid
+ removeParent = removeParent || self.key === "declaration" && parent.isExportDeclaration();
+
+ // label: NODE
+ // stray labeled statement with no body
+ removeParent = removeParent || self.key === "body" && parent.isLabeledStatement();
+
+ // let NODE;
+ // remove an entire declaration if there are no declarators left
+ removeParent = removeParent || self.listKey === "declarations" && parent.isVariableDeclaration() && parent.node.declarations.length === 1;
+
+ // NODE;
+ // remove the entire expression statement if there's no expression
+ removeParent = removeParent || self.key === "expression" && parent.isExpressionStatement();
+
+ if (removeParent) {
+ parent.remove();
+ return true;
+ }
+}, function (self, parent) {
+ if (parent.isSequenceExpression() && parent.node.expressions.length === 1) {
+ // (node, NODE);
+ // we've just removed the second element of a sequence expression so let's turn that sequence
+ // expression into a regular expression
+ parent.replaceWith(parent.node.expressions[0]);
+ return true;
+ }
+}, function (self, parent) {
+ if (parent.isBinary()) {
+ // left + NODE;
+ // NODE + right;
+ // we're in a binary expression, better remove it and replace it with the last expression
+ if (self.key === "left") {
+ parent.replaceWith(parent.node.right);
+ } else {
+ // key === "right"
+ parent.replaceWith(parent.node.left);
+ }
+ return true;
+ }
+}];
+exports.hooks = hooks;
\ No newline at end of file
diff --git a/node_modules/babel-traverse/lib/path/lib/virtual-types.js b/node_modules/babel-traverse/lib/path/lib/virtual-types.js
new file mode 100644
index 0000000..02753f8
--- /dev/null
+++ b/node_modules/babel-traverse/lib/path/lib/virtual-types.js
@@ -0,0 +1,153 @@
+"use strict";
+
+var _interopRequireWildcard = require("babel-runtime/helpers/interop-require-wildcard")["default"];
+
+exports.__esModule = true;
+
+var _babelTypes = require("babel-types");
+
+var t = _interopRequireWildcard(_babelTypes);
+
+var ReferencedIdentifier = {
+ types: ["Identifier", "JSXIdentifier"],
+ checkPath: function checkPath(_ref, opts) {
+ var node = _ref.node;
+ var parent = _ref.parent;
+
+ if (!t.isIdentifier(node, opts)) {
+ if (t.isJSXIdentifier(node, opts)) {
+ if (_babelTypes.react.isCompatTag(node.name)) return false;
+ } else {
+ // not a JSXIdentifier or an Identifier
+ return false;
+ }
+ }
+
+ // check if node is referenced
+ return t.isReferenced(node, parent);
+ }
+};
+
+exports.ReferencedIdentifier = ReferencedIdentifier;
+var ReferencedMemberExpression = {
+ types: ["MemberExpression"],
+ checkPath: function checkPath(_ref2) {
+ var node = _ref2.node;
+ var parent = _ref2.parent;
+
+ return t.isMemberExpression(node) && t.isReferenced(node, parent);
+ }
+};
+
+exports.ReferencedMemberExpression = ReferencedMemberExpression;
+var BindingIdentifier = {
+ types: ["Identifier"],
+ checkPath: function checkPath(_ref3) {
+ var node = _ref3.node;
+ var parent = _ref3.parent;
+
+ return t.isIdentifier(node) && t.isBinding(node, parent);
+ }
+};
+
+exports.BindingIdentifier = BindingIdentifier;
+var Statement = {
+ types: ["Statement"],
+ checkPath: function checkPath(_ref4) {
+ var node = _ref4.node;
+ var parent = _ref4.parent;
+
+ if (t.isStatement(node)) {
+ if (t.isVariableDeclaration(node)) {
+ if (t.isForXStatement(parent, { left: node })) return false;
+ if (t.isForStatement(parent, { init: node })) return false;
+ }
+
+ return true;
+ } else {
+ return false;
+ }
+ }
+};
+
+exports.Statement = Statement;
+var Expression = {
+ types: ["Expression"],
+ checkPath: function checkPath(path) {
+ if (path.isIdentifier()) {
+ return path.isReferencedIdentifier();
+ } else {
+ return t.isExpression(path.node);
+ }
+ }
+};
+
+exports.Expression = Expression;
+var Scope = {
+ types: ["Scopable"],
+ checkPath: function checkPath(path) {
+ return t.isScope(path.node, path.parent);
+ }
+};
+
+exports.Scope = Scope;
+var Referenced = {
+ checkPath: function checkPath(path) {
+ return t.isReferenced(path.node, path.parent);
+ }
+};
+
+exports.Referenced = Referenced;
+var BlockScoped = {
+ checkPath: function checkPath(path) {
+ return t.isBlockScoped(path.node);
+ }
+};
+
+exports.BlockScoped = BlockScoped;
+var Var = {
+ types: ["VariableDeclaration"],
+ checkPath: function checkPath(path) {
+ return t.isVar(path.node);
+ }
+};
+
+exports.Var = Var;
+var User = {
+ checkPath: function checkPath(path) {
+ return path.node && !!path.node.loc;
+ }
+};
+
+exports.User = User;
+var Generated = {
+ checkPath: function checkPath(path) {
+ return !path.isUser();
+ }
+};
+
+exports.Generated = Generated;
+var Pure = {
+ checkPath: function checkPath(path, opts) {
+ return path.scope.isPure(path.node, opts);
+ }
+};
+
+exports.Pure = Pure;
+var Flow = {
+ types: ["Flow", "ImportDeclaration", "ExportDeclaration"],
+ checkPath: function checkPath(_ref5) {
+ var node = _ref5.node;
+
+ if (t.isFlow(node)) {
+ return true;
+ } else if (t.isImportDeclaration(node)) {
+ return node.importKind === "type" || node.importKind === "typeof";
+ } else if (t.isExportDeclaration(node)) {
+ return node.exportKind === "type";
+ } else {
+ return false;
+ }
+ }
+};
+exports.Flow = Flow;
\ No newline at end of file
diff --git a/node_modules/babel-traverse/lib/path/modification.js b/node_modules/babel-traverse/lib/path/modification.js
new file mode 100644
index 0000000..3067152
--- /dev/null
+++ b/node_modules/babel-traverse/lib/path/modification.js
@@ -0,0 +1,286 @@
+/* eslint max-len: 0 */
+// This file contains methods that modify the path/node in some ways.
+
+"use strict";
+
+var _getIterator = require("babel-runtime/core-js/get-iterator")["default"];
+
+var _interopRequireDefault = require("babel-runtime/helpers/interop-require-default")["default"];
+
+var _interopRequireWildcard = require("babel-runtime/helpers/interop-require-wildcard")["default"];
+
+exports.__esModule = true;
+exports.insertBefore = insertBefore;
+exports._containerInsert = _containerInsert;
+exports._containerInsertBefore = _containerInsertBefore;
+exports._containerInsertAfter = _containerInsertAfter;
+exports._maybePopFromStatements = _maybePopFromStatements;
+exports.insertAfter = insertAfter;
+exports.updateSiblingKeys = updateSiblingKeys;
+exports._verifyNodeList = _verifyNodeList;
+exports.unshiftContainer = unshiftContainer;
+exports.pushContainer = pushContainer;
+exports.hoist = hoist;
+
+var _cache = require("../cache");
+
+var _libHoister = require("./lib/hoister");
+
+var _libHoister2 = _interopRequireDefault(_libHoister);
+
+var _index = require("./index");
+
+var _index2 = _interopRequireDefault(_index);
+
+var _babelTypes = require("babel-types");
+
+var t = _interopRequireWildcard(_babelTypes);
+
+/**
+ * Insert the provided nodes before the current one.
+ */
+
+function insertBefore(nodes) {
+ this._assertUnremoved();
+
+ nodes = this._verifyNodeList(nodes);
+
+ if (this.parentPath.isExpressionStatement() || this.parentPath.isLabeledStatement()) {
+ return this.parentPath.insertBefore(nodes);
+ } else if (this.isNodeType("Expression") || this.parentPath.isForStatement() && this.key === "init") {
+ if (this.node) nodes.push(this.node);
+ this.replaceExpressionWithStatements(nodes);
+ } else {
+ this._maybePopFromStatements(nodes);
+ if (Array.isArray(this.container)) {
+ return this._containerInsertBefore(nodes);
+ } else if (this.isStatementOrBlock()) {
+ if (this.node) nodes.push(this.node);
+ this._replaceWith(t.blockStatement(nodes));
+ } else {
+ throw new Error("We don't know what to do with this node type. We were previously a Statement but we can't fit in here?");
+ }
+ }
+
+ return [this];
+}
+
+function _containerInsert(from, nodes) {
+ this.updateSiblingKeys(from, nodes.length);
+
+ var paths = [];
+
+ for (var i = 0; i < nodes.length; i++) {
+ var to = from + i;
+ var node = nodes[i];
+ this.container.splice(to, 0, node);
+
+ if (this.context) {
+ var path = this.context.create(this.parent, this.container, to, this.listKey);
+
+ // While this path may have a context, there is currently no guarantee that the context
+ // will be the active context, because `popContext` may leave a final context in place.
+ // We should remove this `if` and always push once T7171 has been resolved.
+ if (this.context.queue) path.pushContext(this.context);
+ paths.push(path);
+ } else {
+ paths.push(_index2["default"].get({
+ parentPath: this.parentPath,
+ parent: this.parent,
+ container: this.container,
+ listKey: this.listKey,
+ key: to
+ }));
+ }
+ }
+
+ var contexts = this._getQueueContexts();
+
+ for (var _iterator = paths, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _getIterator(_iterator);;) {
+ var _ref;
+
+ if (_isArray) {
+ if (_i >= _iterator.length) break;
+ _ref = _iterator[_i++];
+ } else {
+ _i = _iterator.next();
+ if (_i.done) break;
+ _ref = _i.value;
+ }
+
+ var path = _ref;
+
+ path.setScope();
+ path.debug(function () {
+ return "Inserted.";
+ });
+
+ for (var _iterator2 = contexts, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _getIterator(_iterator2);;) {
+ var _ref2;
+
+ if (_isArray2) {
+ if (_i2 >= _iterator2.length) break;
+ _ref2 = _iterator2[_i2++];
+ } else {
+ _i2 = _iterator2.next();
+ if (_i2.done) break;
+ _ref2 = _i2.value;
+ }
+
+ var context = _ref2;
+
+ context.maybeQueue(path, true);
+ }
+ }
+
+ return paths;
+}
+
+function _containerInsertBefore(nodes) {
+ return this._containerInsert(this.key, nodes);
+}
+
+function _containerInsertAfter(nodes) {
+ return this._containerInsert(this.key + 1, nodes);
+}
+
+function _maybePopFromStatements(nodes) {
+ var last = nodes[nodes.length - 1];
+ var isIdentifier = t.isIdentifier(last) || t.isExpressionStatement(last) && t.isIdentifier(last.expression);
+
+ if (isIdentifier && !this.isCompletionRecord()) {
+ nodes.pop();
+ }
+}
+
+/**
+ * Insert the provided nodes after the current one. When inserting nodes after an
+ * expression, ensure that the completion record is correct by pushing the current node.
+ */
+
+function insertAfter(nodes) {
+ this._assertUnremoved();
+
+ nodes = this._verifyNodeList(nodes);
+
+ if (this.parentPath.isExpressionStatement() || this.parentPath.isLabeledStatement()) {
+ return this.parentPath.insertAfter(nodes);
+ } else if (this.isNodeType("Expression") || this.parentPath.isForStatement() && this.key === "init") {
+ if (this.node) {
+ var temp = this.scope.generateDeclaredUidIdentifier();
+ nodes.unshift(t.expressionStatement(t.assignmentExpression("=", temp, this.node)));
+ nodes.push(t.expressionStatement(temp));
+ }
+ this.replaceExpressionWithStatements(nodes);
+ } else {
+ this._maybePopFromStatements(nodes);
+ if (Array.isArray(this.container)) {
+ return this._containerInsertAfter(nodes);
+ } else if (this.isStatementOrBlock()) {
+ if (this.node) nodes.unshift(this.node);
+ this._replaceWith(t.blockStatement(nodes));
+ } else {
+ throw new Error("We don't know what to do with this node type. We were previously a Statement but we can't fit in here?");
+ }
+ }
+
+ return [this];
+}
+
+/**
+ * Update all sibling node paths after `fromIndex` by `incrementBy`.
+ */
+
+function updateSiblingKeys(fromIndex, incrementBy) {
+ if (!this.parent) return;
+
+ var paths = _cache.path.get(this.parent);
+ for (var i = 0; i < paths.length; i++) {
+ var path = paths[i];
+ if (path.key >= fromIndex) {
+ path.key += incrementBy;
+ }
+ }
+}
+
+function _verifyNodeList(nodes) {
+ if (!nodes) {
+ return [];
+ }
+
+ if (nodes.constructor !== Array) {
+ nodes = [nodes];
+ }
+
+ for (var i = 0; i < nodes.length; i++) {
+ var node = nodes[i];
+ var msg = undefined;
+
+ if (!node) {
+ msg = "has falsy node";
+ } else if (typeof node !== "object") {
+ msg = "contains a non-object node";
+ } else if (!node.type) {
+ msg = "without a type";
+ } else if (node instanceof _index2["default"]) {
+ msg = "has a NodePath when it expected a raw object";
+ }
+
+ if (msg) {
+ var type = Array.isArray(node) ? "array" : typeof node;
+ throw new Error("Node list " + msg + " with the index of " + i + " and type of " + type);
+ }
+ }
+
+ return nodes;
+}
+
+function unshiftContainer(listKey, nodes) {
+ this._assertUnremoved();
+
+ nodes = this._verifyNodeList(nodes);
+
+ // get the first path and insert our nodes before it, if it doesn't exist then it
+ // doesn't matter, our nodes will be inserted anyway
+ var path = _index2["default"].get({
+ parentPath: this,
+ parent: this.node,
+ container: this.node[listKey],
+ listKey: listKey,
+ key: 0
+ });
+
+ return path.insertBefore(nodes);
+}
+
+function pushContainer(listKey, nodes) {
+ this._assertUnremoved();
+
+ nodes = this._verifyNodeList(nodes);
+
+ // get an invisible path that represents the last node + 1 and replace it with our
+ // nodes, effectively inlining it
+
+ var container = this.node[listKey];
+ var path = _index2["default"].get({
+ parentPath: this,
+ parent: this.node,
+ container: container,
+ listKey: listKey,
+ key: container.length
+ });
+
+ return path.replaceWithMultiple(nodes);
+}
+
+/**
+ * Hoist the current node to the highest scope possible and return a UID
+ * referencing it.
+ */
+
+function hoist() {
+ var scope = arguments.length <= 0 || arguments[0] === undefined ? this.scope : arguments[0];
+
+ var hoister = new _libHoister2["default"](this, scope);
+ return hoister.run();
+}
\ No newline at end of file
diff --git a/node_modules/babel-traverse/lib/path/removal.js b/node_modules/babel-traverse/lib/path/removal.js
new file mode 100644
index 0000000..edff10c
--- /dev/null
+++ b/node_modules/babel-traverse/lib/path/removal.js
@@ -0,0 +1,57 @@
+// This file contains methods responsible for removing a node.
+
+"use strict";
+
+exports.__esModule = true;
+exports.remove = remove;
+exports._callRemovalHooks = _callRemovalHooks;
+exports._remove = _remove;
+exports._markRemoved = _markRemoved;
+exports._assertUnremoved = _assertUnremoved;
+
+var _libRemovalHooks = require("./lib/removal-hooks");
+
+function remove() {
+ this._assertUnremoved();
+
+ this.resync();
+
+ if (this._callRemovalHooks()) {
+ this._markRemoved();
+ return;
+ }
+
+ this.shareCommentsWithSiblings();
+ this._remove();
+ this._markRemoved();
+}
+
+function _callRemovalHooks() {
+ var _arr = _libRemovalHooks.hooks;
+
+ for (var _i = 0; _i < _arr.length; _i++) {
+ var fn = _arr[_i];
+ if (fn(this, this.parentPath)) return true;
+ }
+}
+
+function _remove() {
+ if (Array.isArray(this.container)) {
+ this.container.splice(this.key, 1);
+ this.updateSiblingKeys(this.key, -1);
+ } else {
+ this._replaceWith(null);
+ }
+}
+
+function _markRemoved() {
+ this.shouldSkip = true;
+ this.removed = true;
+ this.node = null;
+}
+
+function _assertUnremoved() {
+ if (this.removed) {
+ throw this.buildCodeFrameError("NodePath has been removed so is read-only.");
+ }
+}
\ No newline at end of file
diff --git a/node_modules/babel-traverse/lib/path/replacement.js b/node_modules/babel-traverse/lib/path/replacement.js
new file mode 100644
index 0000000..43b4ac4
--- /dev/null
+++ b/node_modules/babel-traverse/lib/path/replacement.js
@@ -0,0 +1,275 @@
+/* eslint max-len: 0 */
+// This file contains methods responsible for replacing a node with another.
+
+"use strict";
+
+var _interopRequireDefault = require("babel-runtime/helpers/interop-require-default")["default"];
+
+var _interopRequireWildcard = require("babel-runtime/helpers/interop-require-wildcard")["default"];
+
+exports.__esModule = true;
+exports.replaceWithMultiple = replaceWithMultiple;
+exports.replaceWithSourceString = replaceWithSourceString;
+exports.replaceWith = replaceWith;
+exports._replaceWith = _replaceWith;
+exports.replaceExpressionWithStatements = replaceExpressionWithStatements;
+exports.replaceInline = replaceInline;
+
+var _babelCodeFrame = require("babel-code-frame");
+
+var _babelCodeFrame2 = _interopRequireDefault(_babelCodeFrame);
+
+var _index = require("../index");
+
+var _index2 = _interopRequireDefault(_index);
+
+var _index3 = require("./index");
+
+var _index4 = _interopRequireDefault(_index3);
+
+var _babylon = require("babylon");
+
+var _babelTypes = require("babel-types");
+
+var t = _interopRequireWildcard(_babelTypes);
+
+var hoistVariablesVisitor = {
+ Function: function Function(path) {
+ path.skip();
+ },
+
+ VariableDeclaration: function VariableDeclaration(path) {
+ if (path.node.kind !== "var") return;
+
+ var bindings = path.getBindingIdentifiers();
+ for (var key in bindings) {
+ path.scope.push({ id: bindings[key] });
+ }
+
+ var exprs = [];
+
+ var _arr = path.node.declarations;
+ for (var _i = 0; _i < _arr.length; _i++) {
+ var declar = _arr[_i];
+ if (declar.init) {
+ exprs.push(t.expressionStatement(t.assignmentExpression("=", declar.id, declar.init)));
+ }
+ }
+
+ path.replaceWithMultiple(exprs);
+ }
+};
+
+/**
+ * Replace a node with an array of multiple. This method performs the following steps:
+ *
+ * - Inherit the comments of first provided node with that of the current node.
+ * - Insert the provided nodes after the current node.
+ * - Remove the current node.
+ */
+
+function replaceWithMultiple(nodes) {
+ this.resync();
+
+ nodes = this._verifyNodeList(nodes);
+ t.inheritLeadingComments(nodes[0], this.node);
+ t.inheritTrailingComments(nodes[nodes.length - 1], this.node);
+ this.node = this.container[this.key] = null;
+ this.insertAfter(nodes);
+
+ if (this.node) {
+ this.requeue();
+ } else {
+ this.remove();
+ }
+}
+
+/**
+ * Parse a string as an expression and replace the current node with the result.
+ *
+ * NOTE: This is typically not a good idea to use. Building source strings when
+ * transforming ASTs is an antipattern and SHOULD NOT be encouraged. Even if it's
+ * easier to use, your transforms will be extremely brittle.
+ */
+
+function replaceWithSourceString(replacement) {
+ this.resync();
+
+ try {
+ replacement = "(" + replacement + ")";
+ replacement = _babylon.parse(replacement);
+ } catch (err) {
+ var loc = err.loc;
+ if (loc) {
+ err.message += " - make sure this is an expression.";
+ err.message += "\n" + _babelCodeFrame2["default"](replacement, loc.line, loc.column + 1);
+ }
+ throw err;
+ }
+
+ replacement = replacement.program.body[0].expression;
+ _index2["default"].removeProperties(replacement);
+ return this.replaceWith(replacement);
+}
+
+/**
+ * Replace the current node with another.
+ */
+
+function replaceWith(replacement) {
+ this.resync();
+
+ if (this.removed) {
+ throw new Error("You can't replace this node, we've already removed it");
+ }
+
+ if (replacement instanceof _index4["default"]) {
+ replacement = replacement.node;
+ }
+
+ if (!replacement) {
+ throw new Error("You passed `path.replaceWith()` a falsy node, use `path.remove()` instead");
+ }
+
+ if (this.node === replacement) {
+ return;
+ }
+
+ if (this.isProgram() && !t.isProgram(replacement)) {
+ throw new Error("You can only replace a Program root node with another Program node");
+ }
+
+ if (Array.isArray(replacement)) {
+ throw new Error("Don't use `path.replaceWith()` with an array of nodes, use `path.replaceWithMultiple()`");
+ }
+
+ if (typeof replacement === "string") {
+ throw new Error("Don't use `path.replaceWith()` with a source string, use `path.replaceWithSourceString()`");
+ }
+
+ if (this.isNodeType("Statement") && t.isExpression(replacement)) {
+ if (!this.canHaveVariableDeclarationOrExpression() && !this.canSwapBetweenExpressionAndStatement(replacement)) {
+ // replacing a statement with an expression so wrap it in an expression statement
+ replacement = t.expressionStatement(replacement);
+ }
+ }
+
+ if (this.isNodeType("Expression") && t.isStatement(replacement)) {
+ if (!this.canHaveVariableDeclarationOrExpression() && !this.canSwapBetweenExpressionAndStatement(replacement)) {
+ // replacing an expression with a statement so let's explode it
+ return this.replaceExpressionWithStatements([replacement]);
+ }
+ }
+
+ var oldNode = this.node;
+ if (oldNode) {
+ t.inheritsComments(replacement, oldNode);
+ t.removeComments(oldNode);
+ }
+
+ // replace the node
+ this._replaceWith(replacement);
+ this.type = replacement.type;
+
+ // potentially create new scope
+ this.setScope();
+
+ // requeue for visiting
+ this.requeue();
+}
+
+/**
+ * Description
+ */
+
+function _replaceWith(node) {
+ if (!this.container) {
+ throw new ReferenceError("Container is falsy");
+ }
+
+ if (this.inList) {
+ t.validate(this.parent, this.key, [node]);
+ } else {
+ t.validate(this.parent, this.key, node);
+ }
+
+ this.debug(function () {
+ return "Replace with " + (node && node.type);
+ });
+
+ this.node = this.container[this.key] = node;
+}
+
+/**
+ * This method takes an array of statements nodes and then explodes it
+ * into expressions. This method retains completion records which is
+ * extremely important to retain original semantics.
+ */
+
+function replaceExpressionWithStatements(nodes) {
+ this.resync();
+
+ var toSequenceExpression = t.toSequenceExpression(nodes, this.scope);
+
+ if (t.isSequenceExpression(toSequenceExpression)) {
+ var exprs = toSequenceExpression.expressions;
+
+ if (exprs.length >= 2 && this.parentPath.isExpressionStatement()) {
+ this._maybePopFromStatements(exprs);
+ }
+
+ // could be just one element due to the previous maybe popping
+ if (exprs.length === 1) {
+ this.replaceWith(exprs[0]);
+ } else {
+ this.replaceWith(toSequenceExpression);
+ }
+ } else if (toSequenceExpression) {
+ this.replaceWith(toSequenceExpression);
+ } else {
+ var container = t.functionExpression(null, [], t.blockStatement(nodes));
+ container.shadow = true;
+
+ this.replaceWith(t.callExpression(container, []));
+ this.traverse(hoistVariablesVisitor);
+
+ // add implicit returns to all ending expression statements
+ var completionRecords = this.get("callee").getCompletionRecords();
+ for (var _i2 = 0; _i2 < completionRecords.length; _i2++) {
+ var path = completionRecords[_i2];
+ if (!path.isExpressionStatement()) continue;
+
+ var loop = path.findParent(function (path) {
+ return path.isLoop();
+ });
+ if (loop) {
+ var callee = this.get("callee");
+
+ var uid = callee.scope.generateDeclaredUidIdentifier("ret");
+ callee.get("body").pushContainer("body", t.returnStatement(uid));
+
+ path.get("expression").replaceWith(t.assignmentExpression("=", uid, path.node.expression));
+ } else {
+ path.replaceWith(t.returnStatement(path.node.expression));
+ }
+ }
+
+ return this.node;
+ }
+}
+
+function replaceInline(nodes) {
+ this.resync();
+
+ if (Array.isArray(nodes)) {
+ if (Array.isArray(this.container)) {
+ nodes = this._verifyNodeList(nodes);
+ this._containerInsertAfter(nodes);
+ return this.remove();
+ } else {
+ return this.replaceWithMultiple(nodes);
+ }
+ } else {
+ return this.replaceWith(nodes);
+ }
+}
\ No newline at end of file
diff --git a/node_modules/babel-traverse/lib/scope/binding.js b/node_modules/babel-traverse/lib/scope/binding.js
new file mode 100644
index 0000000..c729fc4
--- /dev/null
+++ b/node_modules/babel-traverse/lib/scope/binding.js
@@ -0,0 +1,101 @@
+
+
+/**
+ * This class is responsible for a binding inside of a scope.
+ *
+ * It tracks the following:
+ *
+ * * Node path.
+ * * Amount of times referenced by other nodes.
+ * * Paths to nodes that reassign or modify this binding.
+ * * The kind of binding. (Is it a parameter, declaration etc)
+ */
+
+"use strict";
+
+var _classCallCheck = require("babel-runtime/helpers/class-call-check")["default"];
+
+exports.__esModule = true;
+
+var Binding = (function () {
+ function Binding(_ref) {
+ var existing = _ref.existing;
+ var identifier = _ref.identifier;
+ var scope = _ref.scope;
+ var path = _ref.path;
+ var kind = _ref.kind;
+
+ _classCallCheck(this, Binding);
+
+ this.identifier = identifier;
+ this.scope = scope;
+ this.path = path;
+ this.kind = kind;
+
+ this.constantViolations = [];
+ this.constant = true;
+
+ this.referencePaths = [];
+ this.referenced = false;
+ this.references = 0;
+
+ this.clearValue();
+
+ if (existing) {
+ this.constantViolations = [].concat(existing.path, existing.constantViolations, this.constantViolations);
+ }
+ }
+
+ Binding.prototype.deoptValue = function deoptValue() {
+ this.clearValue();
+ this.hasDeoptedValue = true;
+ };
+
+ Binding.prototype.setValue = function setValue(value) {
+ if (this.hasDeoptedValue) return;
+ this.hasValue = true;
+ this.value = value;
+ };
+
+ Binding.prototype.clearValue = function clearValue() {
+ this.hasDeoptedValue = false;
+ this.hasValue = false;
+ this.value = null;
+ };
+
+ /**
+ * Register a constant violation with the provided `path`.
+ */
+
+ Binding.prototype.reassign = function reassign(path) {
+ this.constant = false;
+ if (this.constantViolations.indexOf(path) !== -1) {
+ return;
+ }
+ this.constantViolations.push(path);
+ };
+
+ /**
+ * Increment the amount of references to this binding.
+ */
+
+ Binding.prototype.reference = function reference(path) {
+ this.referenced = true;
+ this.references++;
+ this.referencePaths.push(path);
+ };
+
+ /**
+ * Decrement the amount of references to this binding.
+ */
+
+ Binding.prototype.dereference = function dereference() {
+ this.references--;
+ this.referenced = !!this.references;
+ };
+
+ return Binding;
+})();
+
+exports["default"] = Binding;
+module.exports = exports["default"];
\ No newline at end of file
diff --git a/node_modules/babel-traverse/lib/scope/index.js b/node_modules/babel-traverse/lib/scope/index.js
new file mode 100644
index 0000000..36df4c6
--- /dev/null
+++ b/node_modules/babel-traverse/lib/scope/index.js
@@ -0,0 +1,1074 @@
+/* eslint max-len: 0 */
+
+"use strict";
+
+var _createClass = require("babel-runtime/helpers/create-class")["default"];
+
+var _classCallCheck = require("babel-runtime/helpers/class-call-check")["default"];
+
+var _getIterator = require("babel-runtime/core-js/get-iterator")["default"];
+
+var _Object$create = require("babel-runtime/core-js/object/create")["default"];
+
+var _Object$keys = require("babel-runtime/core-js/object/keys")["default"];
+
+var _interopRequireDefault = require("babel-runtime/helpers/interop-require-default")["default"];
+
+var _interopRequireWildcard = require("babel-runtime/helpers/interop-require-wildcard")["default"];
+
+exports.__esModule = true;
+
+var _lodashCollectionIncludes = require("lodash/collection/includes");
+
+var _lodashCollectionIncludes2 = _interopRequireDefault(_lodashCollectionIncludes);
+
+var _repeating = require("repeating");
+
+var _repeating2 = _interopRequireDefault(_repeating);
+
+var _libRenamer = require("./lib/renamer");
+
+var _libRenamer2 = _interopRequireDefault(_libRenamer);
+
+var _index = require("../index");
+
+var _index2 = _interopRequireDefault(_index);
+
+var _lodashObjectDefaults = require("lodash/object/defaults");
+
+var _lodashObjectDefaults2 = _interopRequireDefault(_lodashObjectDefaults);
+
+var _babelMessages = require("babel-messages");
+
+var messages = _interopRequireWildcard(_babelMessages);
+
+var _binding = require("./binding");
+
+var _binding2 = _interopRequireDefault(_binding);
+
+var _globals = require("globals");
+
+var _globals2 = _interopRequireDefault(_globals);
+
+var _babelTypes = require("babel-types");
+
+var t = _interopRequireWildcard(_babelTypes);
+
+var _cache = require("../cache");
+
+// Number of calls to the crawl method to figure out whether we're
+// somewhere inside a call that was trigerred by call. This is meant
+// to be used to figure out whether a warning should be trigerred.
+// See `warnOnFlowBinding`.
+var _crawlCallsCount = 0;
+
+/**
+ * To avoid creating a new Scope instance for each traversal, we maintain a cache on the
+ * node itself containing all scopes it has been associated with.
+ */
+
+function getCache(node, parentScope, self) {
+ var scopes = _cache.scope.get(node) || [];
+
+ for (var _i = 0; _i < scopes.length; _i++) {
+ var scope = scopes[_i];
+ if (scope.parent === parentScope) return scope;
+ }
+
+ scopes.push(self);
+
+ if (!_cache.scope.has(node)) {
+ _cache.scope.set(node, scopes);
+ }
+}
+
+//
+
+var collectorVisitor = {
+ For: function For(path) {
+ var _arr = t.FOR_INIT_KEYS;
+
+ for (var _i2 = 0; _i2 < _arr.length; _i2++) {
+ var key = _arr[_i2];
+ var declar = path.get(key);
+ if (declar.isVar()) path.scope.getFunctionParent().registerBinding("var", declar);
+ }
+ },
+
+ Declaration: function Declaration(path) {
+ // delegate block scope handling to the `blockVariableVisitor`
+ if (path.isBlockScoped()) return;
+
+ // this will be hit again once we traverse into it after this iteration
+ if (path.isExportDeclaration() && path.get("declaration").isDeclaration()) return;
+
+ // TODO(amasad): remove support for flow as bindings (See warning below).
+ //if (path.isFlow()) return;
+
+ // we've ran into a declaration!
+ path.scope.getFunctionParent().registerDeclaration(path);
+ },
+
+ ReferencedIdentifier: function ReferencedIdentifier(path, state) {
+ state.references.push(path);
+ },
+
+ ForXStatement: function ForXStatement(path, state) {
+ var left = path.get("left");
+ if (left.isPattern() || left.isIdentifier()) {
+ state.constantViolations.push(left);
+ }
+ },
+
+ ExportDeclaration: {
+ exit: function exit(_ref5) {
+ var node = _ref5.node;
+ var scope = _ref5.scope;
+
+ var declar = node.declaration;
+ if (t.isClassDeclaration(declar) || t.isFunctionDeclaration(declar)) {
+ var _id = declar.id;
+ if (!_id) return;
+
+ var binding = scope.getBinding(_id.name);
+ if (binding) binding.reference();
+ } else if (t.isVariableDeclaration(declar)) {
+ var _arr2 = declar.declarations;
+
+ for (var _i3 = 0; _i3 < _arr2.length; _i3++) {
+ var decl = _arr2[_i3];
+ var ids = t.getBindingIdentifiers(decl);
+ for (var _name in ids) {
+ var binding = scope.getBinding(_name);
+ if (binding) binding.reference();
+ }
+ }
+ }
+ }
+ },
+
+ LabeledStatement: function LabeledStatement(path) {
+ path.scope.getProgramParent().addGlobal(path.node);
+ path.scope.getBlockParent().registerDeclaration(path);
+ },
+
+ AssignmentExpression: function AssignmentExpression(path, state) {
+ state.assignments.push(path);
+ },
+
+ UpdateExpression: function UpdateExpression(path, state) {
+ state.constantViolations.push(path.get("argument"));
+ },
+
+ UnaryExpression: function UnaryExpression(path, state) {
+ if (path.node.operator === "delete") {
+ state.constantViolations.push(path.get("argument"));
+ }
+ },
+
+ BlockScoped: function BlockScoped(path) {
+ var scope = path.scope;
+ if (scope.path === path) scope = scope.parent;
+ scope.getBlockParent().registerDeclaration(path);
+ },
+
+ ClassDeclaration: function ClassDeclaration(path) {
+ var id = path.node.id;
+ if (!id) return;
+
+ var name = id.name;
+ path.scope.bindings[name] = path.scope.getBinding(name);
+ },
+
+ Block: function Block(path) {
+ var paths = path.get("body");
+ var _arr3 = paths;
+ for (var _i4 = 0; _i4 < _arr3.length; _i4++) {
+ var bodyPath = _arr3[_i4];
+ if (bodyPath.isFunctionDeclaration()) {
+ path.scope.getBlockParent().registerDeclaration(bodyPath);
+ }
+ }
+ }
+};
+
+var uid = 0;
+
+var Scope = (function () {
+
+ /**
+ * This searches the current "scope" and collects all references/bindings
+ * within.
+ */
+
+ function Scope(path, parentScope) {
+ _classCallCheck(this, Scope);
+
+ if (parentScope && parentScope.block === path.node) {
+ return parentScope;
+ }
+
+ var cached = getCache(path.node, parentScope, this);
+ if (cached) return cached;
+
+ this.uid = uid++;
+ this.parent = parentScope;
+ this.hub = path.hub;
+
+ this.parentBlock = path.parent;
+ this.block = path.node;
+ this.path = path;
+ }
+
+ /**
+ * Globals.
+ */
+
+ /**
+ * Traverse node with current scope and path.
+ */
+
+ Scope.prototype.traverse = function traverse(node, opts, state) {
+ _index2["default"](node, opts, this, state, this.path);
+ };
+
+ /**
+ * Generate a unique identifier and add it to the current scope.
+ */
+
+ Scope.prototype.generateDeclaredUidIdentifier = function generateDeclaredUidIdentifier() {
+ var name = arguments.length <= 0 || arguments[0] === undefined ? "temp" : arguments[0];
+
+ var id = this.generateUidIdentifier(name);
+ this.push({ id: id });
+ return id;
+ };
+
+ /**
+ * Generate a unique identifier.
+ */
+
+ Scope.prototype.generateUidIdentifier = function generateUidIdentifier() {
+ var name = arguments.length <= 0 || arguments[0] === undefined ? "temp" : arguments[0];
+
+ return t.identifier(this.generateUid(name));
+ };
+
+ /**
+ * Generate a unique `_id1` binding.
+ */
+
+ Scope.prototype.generateUid = function generateUid() {
+ var name = arguments.length <= 0 || arguments[0] === undefined ? "temp" : arguments[0];
+
+ name = t.toIdentifier(name).replace(/^_+/, "").replace(/[0-9]+$/g, "");
+
+ var uid = undefined;
+ var i = 0;
+ do {
+ uid = this._generateUid(name, i);
+ i++;
+ } while (this.hasBinding(uid) || this.hasGlobal(uid) || this.hasReference(uid));
+
+ var program = this.getProgramParent();
+ program.references[uid] = true;
+ program.uids[uid] = true;
+
+ return uid;
+ };
+
+ /**
+ * Generate an `_id1`.
+ */
+
+ Scope.prototype._generateUid = function _generateUid(name, i) {
+ var id = name;
+ if (i > 1) id += i;
+ return "_" + id;
+ };
+
+ /**
+ * Generate a unique identifier based on a node.
+ */
+
+ Scope.prototype.generateUidIdentifierBasedOnNode = function generateUidIdentifierBasedOnNode(parent, defaultName) {
+ var node = parent;
+
+ if (t.isAssignmentExpression(parent)) {
+ node = parent.left;
+ } else if (t.isVariableDeclarator(parent)) {
+ node = parent.id;
+ } else if (t.isObjectProperty(node) || t.isObjectMethod(node)) {
+ node = node.key;
+ }
+
+ var parts = [];
+
+ var add = function add(node) {
+ if (t.isModuleDeclaration(node)) {
+ if (node.source) {
+ add(node.source);
+ } else if (node.specifiers && node.specifiers.length) {
+ var _arr4 = node.specifiers;
+
+ for (var _i5 = 0; _i5 < _arr4.length; _i5++) {
+ var specifier = _arr4[_i5];
+ add(specifier);
+ }
+ } else if (node.declaration) {
+ add(node.declaration);
+ }
+ } else if (t.isModuleSpecifier(node)) {
+ add(node.local);
+ } else if (t.isMemberExpression(node)) {
+ add(node.object);
+ add(node.property);
+ } else if (t.isIdentifier(node)) {
+ parts.push(node.name);
+ } else if (t.isLiteral(node)) {
+ parts.push(node.value);
+ } else if (t.isCallExpression(node)) {
+ add(node.callee);
+ } else if (t.isObjectExpression(node) || t.isObjectPattern(node)) {
+ var _arr5 = node.properties;
+
+ for (var _i6 = 0; _i6 < _arr5.length; _i6++) {
+ var prop = _arr5[_i6];
+ add(prop.key || prop.argument);
+ }
+ }
+ };
+
+ add(node);
+
+ var id = parts.join("$");
+ id = id.replace(/^_/, "") || defaultName || "ref";
+
+ return this.generateUidIdentifier(id.slice(0, 20));
+ };
+
+ /**
+ * Determine whether evaluating the specific input `node` is a consequenceless reference. ie.
+ * evaluating it wont result in potentially arbitrary code from being ran. The following are
+ * whitelisted and determined not to cause side effects:
+ *
+ * - `this` expressions
+ * - `super` expressions
+ * - Bound identifiers
+ */
+
+ Scope.prototype.isStatic = function isStatic(node) {
+ if (t.isThisExpression(node) || t.isSuper(node)) {
+ return true;
+ }
+
+ if (t.isIdentifier(node)) {
+ var binding = this.getBinding(node.name);
+ if (binding) {
+ return binding.constant;
+ } else {
+ return this.hasBinding(node.name);
+ }
+ }
+
+ return false;
+ };
+
+ /**
+ * Possibly generate a memoised identifier if it is not static and has consequences.
+ */
+
+ Scope.prototype.maybeGenerateMemoised = function maybeGenerateMemoised(node, dontPush) {
+ if (this.isStatic(node)) {
+ return null;
+ } else {
+ var _id2 = this.generateUidIdentifierBasedOnNode(node);
+ if (!dontPush) this.push({ id: _id2 });
+ return _id2;
+ }
+ };
+
+ Scope.prototype.checkBlockScopedCollisions = function checkBlockScopedCollisions(local, kind, name, id) {
+ // ignore parameters
+ if (kind === "param") return;
+
+ // ignore hoisted functions if there's also a local let
+ if (kind === "hoisted" && local.kind === "let") return;
+
+ var duplicate = false;
+
+ // don't allow duplicate bindings to exist alongside
+ if (!duplicate) duplicate = kind === "let" || local.kind === "let" || local.kind === "const" || local.kind === "module";
+
+ // don't allow a local of param with a kind of let
+ if (!duplicate) duplicate = local.kind === "param" && (kind === "let" || kind === "const");
+
+ if (duplicate) {
+ throw this.hub.file.buildCodeFrameError(id, messages.get("scopeDuplicateDeclaration", name), TypeError);
+ }
+ };
+
+ Scope.prototype.rename = function rename(oldName, newName, block) {
+ var binding = this.getBinding(oldName);
+ if (binding) {
+ newName = newName || this.generateUidIdentifier(oldName).name;
+ return new _libRenamer2["default"](binding, oldName, newName).rename(block);
+ }
+ };
+
+ Scope.prototype._renameFromMap = function _renameFromMap(map, oldName, newName, value) {
+ if (map[oldName]) {
+ map[newName] = value;
+ map[oldName] = null;
+ }
+ };
+
+ Scope.prototype.dump = function dump() {
+ var sep = _repeating2["default"]("-", 60);
+ console.log(sep);
+ var scope = this;
+ do {
+ console.log("#", scope.block.type);
+ for (var _name2 in scope.bindings) {
+ var binding = scope.bindings[_name2];
+ console.log(" -", _name2, {
+ constant: binding.constant,
+ references: binding.references,
+ violations: binding.constantViolations.length,
+ kind: binding.kind
+ });
+ }
+ } while (scope = scope.parent);
+ console.log(sep);
+ };
+
+ Scope.prototype.toArray = function toArray(node, i) {
+ var file = this.hub.file;
+
+ if (t.isIdentifier(node)) {
+ var binding = this.getBinding(node.name);
+ if (binding && binding.constant && binding.path.isGenericType("Array")) return node;
+ }
+
+ if (t.isArrayExpression(node)) {
+ return node;
+ }
+
+ if (t.isIdentifier(node, { name: "arguments" })) {
+ return t.callExpression(t.memberExpression(t.memberExpression(t.memberExpression(t.identifier("Array"), t.identifier("prototype")), t.identifier("slice")), t.identifier("call")), [node]);
+ }
+
+ var helperName = "toArray";
+ var args = [node];
+ if (i === true) {
+ helperName = "toConsumableArray";
+ } else if (i) {
+ args.push(t.numericLiteral(i));
+ helperName = "slicedToArray";
+ // TODO if (this.hub.file.isLoose("es6.forOf")) helperName += "-loose";
+ }
+ return t.callExpression(file.addHelper(helperName), args);
+ };
+
+ Scope.prototype.registerDeclaration = function registerDeclaration(path) {
+ if (path.isLabeledStatement()) {
+ this.registerBinding("label", path);
+ } else if (path.isFunctionDeclaration()) {
+ this.registerBinding("hoisted", path.get("id"), path);
+ } else if (path.isVariableDeclaration()) {
+ var declarations = path.get("declarations");
+ var _arr6 = declarations;
+ for (var _i7 = 0; _i7 < _arr6.length; _i7++) {
+ var declar = _arr6[_i7];
+ this.registerBinding(path.node.kind, declar);
+ }
+ } else if (path.isClassDeclaration()) {
+ this.registerBinding("let", path);
+ } else if (path.isImportDeclaration()) {
+ var specifiers = path.get("specifiers");
+ var _arr7 = specifiers;
+ for (var _i8 = 0; _i8 < _arr7.length; _i8++) {
+ var specifier = _arr7[_i8];
+ this.registerBinding("module", specifier);
+ }
+ } else if (path.isExportDeclaration()) {
+ var declar = path.get("declaration");
+ if (declar.isClassDeclaration() || declar.isFunctionDeclaration() || declar.isVariableDeclaration()) {
+ this.registerDeclaration(declar);
+ }
+ } else {
+ this.registerBinding("unknown", path);
+ }
+ };
+
+ Scope.prototype.buildUndefinedNode = function buildUndefinedNode() {
+ if (this.hasBinding("undefined")) {
+ return t.unaryExpression("void", t.numericLiteral(0), true);
+ } else {
+ return t.identifier("undefined");
+ }
+ };
+
+ Scope.prototype.registerConstantViolation = function registerConstantViolation(path) {
+ var ids = path.getBindingIdentifiers();
+ for (var _name3 in ids) {
+ var binding = this.getBinding(_name3);
+ if (binding) binding.reassign(path);
+ }
+ };
+
+ Scope.prototype.registerBinding = function registerBinding(kind, path) {
+ var bindingPath = arguments.length <= 2 || arguments[2] === undefined ? path : arguments[2];
+ return (function () {
+ if (!kind) throw new ReferenceError("no `kind`");
+
+ if (path.isVariableDeclaration()) {
+ var declarators = path.get("declarations");
+ for (var _i9 = 0; _i9 < declarators.length; _i9++) {
+ var declar = declarators[_i9];
+ this.registerBinding(kind, declar);
+ }
+ return;
+ }
+
+ var parent = this.getProgramParent();
+ var ids = path.getBindingIdentifiers(true);
+
+ for (var _name4 in ids) {
+ var _arr8 = ids[_name4];
+
+ for (var _i10 = 0; _i10 < _arr8.length; _i10++) {
+ var _id3 = _arr8[_i10];
+ var local = this.getOwnBinding(_name4);
+ if (local) {
+ // same identifier so continue safely as we're likely trying to register it
+ // multiple times
+ if (local.identifier === _id3) continue;
+
+ this.checkBlockScopedCollisions(local, kind, _name4, _id3);
+ }
+
+ // It's erroneous that we currently consider flow a binding, however, we can't
+ // remove it because people might be depending on it. See warning section
+ // in `warnOnFlowBinding`.
+ if (local && local.path.isFlow()) local = null;
+
+ parent.references[_name4] = true;
+
+ this.bindings[_name4] = new _binding2["default"]({
+ identifier: _id3,
+ existing: local,
+ scope: this,
+ path: bindingPath,
+ kind: kind
+ });
+ }
+ }
+ }).apply(this, arguments);
+ };
+
+ Scope.prototype.addGlobal = function addGlobal(node) {
+ this.globals[node.name] = node;
+ };
+
+ Scope.prototype.hasUid = function hasUid(name) {
+ var scope = this;
+
+ do {
+ if (scope.uids[name]) return true;
+ } while (scope = scope.parent);
+
+ return false;
+ };
+
+ Scope.prototype.hasGlobal = function hasGlobal(name) {
+ var scope = this;
+
+ do {
+ if (scope.globals[name]) return true;
+ } while (scope = scope.parent);
+
+ return false;
+ };
+
+ Scope.prototype.hasReference = function hasReference(name) {
+ var scope = this;
+
+ do {
+ if (scope.references[name]) return true;
+ } while (scope = scope.parent);
+
+ return false;
+ };
+
+ Scope.prototype.isPure = function isPure(node, constantsOnly) {
+ if (t.isIdentifier(node)) {
+ var binding = this.getBinding(node.name);
+ if (!binding) return false;
+ if (constantsOnly) return binding.constant;
+ return true;
+ } else if (t.isClass(node)) {
+ if (node.superClass && !this.isPure(node.superClass, constantsOnly)) return false;
+ return this.isPure(node.body, constantsOnly);
+ } else if (t.isClassBody(node)) {
+ for (var _iterator = node.body, _isArray = Array.isArray(_iterator), _i11 = 0, _iterator = _isArray ? _iterator : _getIterator(_iterator);;) {
+ var _ref;
+
+ if (_isArray) {
+ if (_i11 >= _iterator.length) break;
+ _ref = _iterator[_i11++];
+ } else {
+ _i11 = _iterator.next();
+ if (_i11.done) break;
+ _ref = _i11.value;
+ }
+
+ var method = _ref;
+
+ if (!this.isPure(method, constantsOnly)) return false;
+ }
+ return true;
+ } else if (t.isBinary(node)) {
+ return this.isPure(node.left, constantsOnly) && this.isPure(node.right, constantsOnly);
+ } else if (t.isArrayExpression(node)) {
+ var _arr9 = node.elements;
+
+ for (var _i12 = 0; _i12 < _arr9.length; _i12++) {
+ var elem = _arr9[_i12];
+ if (!this.isPure(elem, constantsOnly)) return false;
+ }
+ return true;
+ } else if (t.isObjectExpression(node)) {
+ var _arr10 = node.properties;
+
+ for (var _i13 = 0; _i13 < _arr10.length; _i13++) {
+ var prop = _arr10[_i13];
+ if (!this.isPure(prop, constantsOnly)) return false;
+ }
+ return true;
+ } else if (t.isClassMethod(node)) {
+ if (node.computed && !this.isPure(node.key, constantsOnly)) return false;
+ if (node.kind === "get" || node.kind === "set") return false;
+ return true;
+ } else if (t.isClassProperty(node) || t.isObjectProperty(node)) {
+ if (node.computed && !this.isPure(node.key, constantsOnly)) return false;
+ return this.isPure(node.value, constantsOnly);
+ } else if (t.isUnaryExpression(node)) {
+ return this.isPure(node.argument, constantsOnly);
+ } else {
+ return t.isPureish(node);
+ }
+ };
+
+ /**
+ * Set some arbitrary data on the current scope.
+ */
+
+ Scope.prototype.setData = function setData(key, val) {
+ return this.data[key] = val;
+ };
+
+ /**
+ * Recursively walk up scope tree looking for the data `key`.
+ */
+
+ Scope.prototype.getData = function getData(key) {
+ var scope = this;
+ do {
+ var data = scope.data[key];
+ if (data != null) return data;
+ } while (scope = scope.parent);
+ };
+
+ /**
+ * Recursively walk up scope tree looking for the data `key` and if it exists,
+ * remove it.
+ */
+
+ Scope.prototype.removeData = function removeData(key) {
+ var scope = this;
+ do {
+ var data = scope.data[key];
+ if (data != null) scope.data[key] = null;
+ } while (scope = scope.parent);
+ };
+
+ Scope.prototype.init = function init() {
+ if (!this.references) this.crawl();
+ };
+
+ Scope.prototype.crawl = function crawl() {
+ _crawlCallsCount++;
+ this._crawl();
+ _crawlCallsCount--;
+ };
+
+ Scope.prototype._crawl = function _crawl() {
+ var path = this.path;
+
+ //
+
+ this.references = _Object$create(null);
+ this.bindings = _Object$create(null);
+ this.globals = _Object$create(null);
+ this.uids = _Object$create(null);
+ this.data = _Object$create(null);
+
+ // ForStatement - left, init
+
+ if (path.isLoop()) {
+ var _arr11 = t.FOR_INIT_KEYS;
+
+ for (var _i14 = 0; _i14 < _arr11.length; _i14++) {
+ var key = _arr11[_i14];
+ var node = path.get(key);
+ if (node.isBlockScoped()) this.registerBinding(node.node.kind, node);
+ }
+ }
+
+ // FunctionExpression - id
+
+ if (path.isFunctionExpression() && path.has("id")) {
+ if (!path.get("id").node[t.NOT_LOCAL_BINDING]) {
+ this.registerBinding("local", path.get("id"), path);
+ }
+ }
+
+ // Class
+
+ if (path.isClassExpression() && path.has("id")) {
+ if (!path.get("id").node[t.NOT_LOCAL_BINDING]) {
+ this.registerBinding("local", path);
+ }
+ }
+
+ // Function - params, rest
+
+ if (path.isFunction()) {
+ var params = path.get("params");
+ for (var _i15 = 0; _i15 < params.length; _i15++) {
+ var param = params[_i15];
+ this.registerBinding("param", param);
+ }
+ }
+
+ // CatchClause - param
+
+ if (path.isCatchClause()) {
+ this.registerBinding("let", path);
+ }
+
+ // Program
+
+ var parent = this.getProgramParent();
+ if (parent.crawling) return;
+
+ var state = {
+ references: [],
+ constantViolations: [],
+ assignments: []
+ };
+
+ this.crawling = true;
+ path.traverse(collectorVisitor, state);
+ this.crawling = false;
+
+ // register assignments
+ for (var _iterator2 = state.assignments, _isArray2 = Array.isArray(_iterator2), _i16 = 0, _iterator2 = _isArray2 ? _iterator2 : _getIterator(_iterator2);;) {
+ var _ref2;
+
+ if (_isArray2) {
+ if (_i16 >= _iterator2.length) break;
+ _ref2 = _iterator2[_i16++];
+ } else {
+ _i16 = _iterator2.next();
+ if (_i16.done) break;
+ _ref2 = _i16.value;
+ }
+
+ var _path = _ref2;
+
+ // register undeclared bindings as globals
+ var ids = _path.getBindingIdentifiers();
+ var programParent = undefined;
+ for (var _name5 in ids) {
+ if (_path.scope.getBinding(_name5)) continue;
+
+ programParent = programParent || _path.scope.getProgramParent();
+ programParent.addGlobal(ids[_name5]);
+ }
+
+ // register as constant violation
+ _path.scope.registerConstantViolation(_path);
+ }
+
+ // register references
+ for (var _iterator3 = state.references, _isArray3 = Array.isArray(_iterator3), _i17 = 0, _iterator3 = _isArray3 ? _iterator3 : _getIterator(_iterator3);;) {
+ var _ref3;
+
+ if (_isArray3) {
+ if (_i17 >= _iterator3.length) break;
+ _ref3 = _iterator3[_i17++];
+ } else {
+ _i17 = _iterator3.next();
+ if (_i17.done) break;
+ _ref3 = _i17.value;
+ }
+
+ var ref = _ref3;
+
+ var binding = ref.scope.getBinding(ref.node.name);
+ if (binding) {
+ binding.reference(ref);
+ } else {
+ ref.scope.getProgramParent().addGlobal(ref.node);
+ }
+ }
+
+ // register constant violations
+ for (var _iterator4 = state.constantViolations, _isArray4 = Array.isArray(_iterator4), _i18 = 0, _iterator4 = _isArray4 ? _iterator4 : _getIterator(_iterator4);;) {
+ var _ref4;
+
+ if (_isArray4) {
+ if (_i18 >= _iterator4.length) break;
+ _ref4 = _iterator4[_i18++];
+ } else {
+ _i18 = _iterator4.next();
+ if (_i18.done) break;
+ _ref4 = _i18.value;
+ }
+
+ var _path2 = _ref4;
+
+ _path2.scope.registerConstantViolation(_path2);
+ }
+ };
+
+ Scope.prototype.push = function push(opts) {
+ var path = this.path;
+
+ if (!path.isBlockStatement() && !path.isProgram()) {
+ path = this.getBlockParent().path;
+ }
+
+ if (path.isSwitchStatement()) {
+ path = this.getFunctionParent().path;
+ }
+
+ if (path.isLoop() || path.isCatchClause() || path.isFunction()) {
+ t.ensureBlock(path.node);
+ path = path.get("body");
+ }
+
+ var unique = opts.unique;
+ var kind = opts.kind || "var";
+ var blockHoist = opts._blockHoist == null ? 2 : opts._blockHoist;
+
+ var dataKey = "declaration:" + kind + ":" + blockHoist;
+ var declarPath = !unique && path.getData(dataKey);
+
+ if (!declarPath) {
+ var declar = t.variableDeclaration(kind, []);
+ declar._generated = true;
+ declar._blockHoist = blockHoist;
+
+ var _path$unshiftContainer = path.unshiftContainer("body", [declar]);
+
+ declarPath = _path$unshiftContainer[0];
+
+ if (!unique) path.setData(dataKey, declarPath);
+ }
+
+ var declarator = t.variableDeclarator(opts.id, opts.init);
+ declarPath.node.declarations.push(declarator);
+ this.registerBinding(kind, declarPath.get("declarations").pop());
+ };
+
+ /**
+ * Walk up to the top of the scope tree and get the `Program`.
+ */
+
+ Scope.prototype.getProgramParent = function getProgramParent() {
+ var scope = this;
+ do {
+ if (scope.path.isProgram()) {
+ return scope;
+ }
+ } while (scope = scope.parent);
+ throw new Error("We couldn't find a Function or Program...");
+ };
+
+ /**
+ * Walk up the scope tree until we hit either a Function or reach the
+ * very top and hit Program.
+ */
+
+ Scope.prototype.getFunctionParent = function getFunctionParent() {
+ var scope = this;
+ do {
+ if (scope.path.isFunctionParent()) {
+ return scope;
+ }
+ } while (scope = scope.parent);
+ throw new Error("We couldn't find a Function or Program...");
+ };
+
+ /**
+ * Walk up the scope tree until we hit either a BlockStatement/Loop/Program/Function/Switch or reach the
+ * very top and hit Program.
+ */
+
+ Scope.prototype.getBlockParent = function getBlockParent() {
+ var scope = this;
+ do {
+ if (scope.path.isBlockParent()) {
+ return scope;
+ }
+ } while (scope = scope.parent);
+ throw new Error("We couldn't find a BlockStatement, For, Switch, Function, Loop or Program...");
+ };
+
+ /**
+ * Walks the scope tree and gathers **all** bindings.
+ */
+
+ Scope.prototype.getAllBindings = function getAllBindings() {
+ var ids = _Object$create(null);
+
+ var scope = this;
+ do {
+ _lodashObjectDefaults2["default"](ids, scope.bindings);
+ scope = scope.parent;
+ } while (scope);
+
+ return ids;
+ };
+
+ /**
+ * Walks the scope tree and gathers all declarations of `kind`.
+ */
+
+ Scope.prototype.getAllBindingsOfKind = function getAllBindingsOfKind() {
+ var ids = _Object$create(null);
+
+ var _arr12 = arguments;
+ for (var _i19 = 0; _i19 < _arr12.length; _i19++) {
+ var kind = _arr12[_i19];
+ var scope = this;
+ do {
+ for (var _name6 in scope.bindings) {
+ var binding = scope.bindings[_name6];
+ if (binding.kind === kind) ids[_name6] = binding;
+ }
+ scope = scope.parent;
+ } while (scope);
+ }
+
+ return ids;
+ };
+
+ Scope.prototype.bindingIdentifierEquals = function bindingIdentifierEquals(name, node) {
+ return this.getBindingIdentifier(name) === node;
+ };
+
+ Scope.prototype.warnOnFlowBinding = function warnOnFlowBinding(binding) {
+ if (_crawlCallsCount === 0 && binding && binding.path.isFlow()) {
+ console.warn("\n You or one of the Babel plugins you are using are using Flow declarations as bindings.\n Support for this will be removed in version 6.8. To find out the caller, grep for this\n message and change it to a `console.trace()`.\n ");
+ }
+ return binding;
+ };
+
+ Scope.prototype.getBinding = function getBinding(name) {
+ var scope = this;
+
+ do {
+ var binding = scope.getOwnBinding(name);
+ if (binding) return this.warnOnFlowBinding(binding);
+ } while (scope = scope.parent);
+ };
+
+ Scope.prototype.getOwnBinding = function getOwnBinding(name) {
+ return this.warnOnFlowBinding(this.bindings[name]);
+ };
+
+ Scope.prototype.getBindingIdentifier = function getBindingIdentifier(name) {
+ var info = this.getBinding(name);
+ return info && info.identifier;
+ };
+
+ Scope.prototype.getOwnBindingIdentifier = function getOwnBindingIdentifier(name) {
+ var binding = this.bindings[name];
+ return binding && binding.identifier;
+ };
+
+ Scope.prototype.hasOwnBinding = function hasOwnBinding(name) {
+ return !!this.getOwnBinding(name);
+ };
+
+ Scope.prototype.hasBinding = function hasBinding(name, noGlobals) {
+ if (!name) return false;
+ if (this.hasOwnBinding(name)) return true;
+ if (this.parentHasBinding(name, noGlobals)) return true;
+ if (this.hasUid(name)) return true;
+ if (!noGlobals && _lodashCollectionIncludes2["default"](Scope.globals, name)) return true;
+ if (!noGlobals && _lodashCollectionIncludes2["default"](Scope.contextVariables, name)) return true;
+ return false;
+ };
+
+ Scope.prototype.parentHasBinding = function parentHasBinding(name, noGlobals) {
+ return this.parent && this.parent.hasBinding(name, noGlobals);
+ };
+
+ /**
+ * Move a binding of `name` to another `scope`.
+ */
+
+ Scope.prototype.moveBindingTo = function moveBindingTo(name, scope) {
+ var info = this.getBinding(name);
+ if (info) {
+ info.scope.removeOwnBinding(name);
+ info.scope = scope;
+ scope.bindings[name] = info;
+ }
+ };
+
+ Scope.prototype.removeOwnBinding = function removeOwnBinding(name) {
+ delete this.bindings[name];
+ };
+
+ Scope.prototype.removeBinding = function removeBinding(name) {
+ // clear literal binding
+ var info = this.getBinding(name);
+ if (info) {
+ info.scope.removeOwnBinding(name);
+ }
+
+ // clear uids with this name - https://github.com/babel/babel/issues/2101
+ var scope = this;
+ do {
+ if (scope.uids[name]) {
+ scope.uids[name] = false;
+ }
+ } while (scope = scope.parent);
+ };
+
+ _createClass(Scope, null, [{
+ key: "globals",
+ value: _Object$keys(_globals2["default"].builtin),
+
+ /**
+ * Variables available in current context.
+ */
+
+ enumerable: true
+ }, {
+ key: "contextVariables",
+ value: ["arguments", "undefined", "Infinity", "NaN"],
+ enumerable: true
+ }]);
+
+ return Scope;
+})();
+
+exports["default"] = Scope;
+module.exports = exports["default"];
\ No newline at end of file
diff --git a/node_modules/babel-traverse/lib/scope/lib/renamer.js b/node_modules/babel-traverse/lib/scope/lib/renamer.js
new file mode 100644
index 0000000..ff87526
--- /dev/null
+++ b/node_modules/babel-traverse/lib/scope/lib/renamer.js
@@ -0,0 +1,153 @@
+"use strict";
+
+var _classCallCheck = require("babel-runtime/helpers/class-call-check")["default"];
+
+var _interopRequireDefault = require("babel-runtime/helpers/interop-require-default")["default"];
+
+var _interopRequireWildcard = require("babel-runtime/helpers/interop-require-wildcard")["default"];
+
+exports.__esModule = true;
+
+var _binding = require("../binding");
+
+var _binding2 = _interopRequireDefault(_binding);
+
+var _babelTypes = require("babel-types");
+
+var t = _interopRequireWildcard(_babelTypes);
+
+var renameVisitor = {
+ ReferencedIdentifier: function ReferencedIdentifier(_ref, state) {
+ var node = _ref.node;
+
+ if (node.name === state.oldName) {
+ node.name = state.newName;
+ }
+ },
+
+ Scope: function Scope(path, state) {
+ if (!path.scope.bindingIdentifierEquals(state.oldName, state.binding.identifier)) {
+ path.skip();
+ }
+ },
+
+ "AssignmentExpression|Declaration": function AssignmentExpressionDeclaration(path, state) {
+ var ids = path.getOuterBindingIdentifiers();
+
+ for (var _name in ids) {
+ if (_name === state.oldName) ids[_name].name = state.newName;
+ }
+ }
+};
+
+var Renamer = (function () {
+ function Renamer(binding, oldName, newName) {
+ _classCallCheck(this, Renamer);
+
+ this.newName = newName;
+ this.oldName = oldName;
+ this.binding = binding;
+ }
+
+ Renamer.prototype.maybeConvertFromExportDeclaration = function maybeConvertFromExportDeclaration(parentDeclar) {
+ var exportDeclar = parentDeclar.parentPath.isExportDeclaration() && parentDeclar.parentPath;
+ if (!exportDeclar) return;
+
+ // build specifiers that point back to this export declaration
+ var isDefault = exportDeclar.isExportDefaultDeclaration();
+
+ if (isDefault && (parentDeclar.isFunctionDeclaration() || parentDeclar.isClassDeclaration()) && !parentDeclar.node.id) {
+ // Ensure that default class and function exports have a name so they have a identifier to
+ // reference from the export specifier list.
+ parentDeclar.node.id = parentDeclar.scope.generateUidIdentifier("default");
+ }
+
+ var bindingIdentifiers = parentDeclar.getOuterBindingIdentifiers();
+ var specifiers = [];
+
+ for (var _name2 in bindingIdentifiers) {
+ var localName = _name2 === this.oldName ? this.newName : _name2;
+ var exportedName = isDefault ? "default" : _name2;
+ specifiers.push(t.exportSpecifier(t.identifier(localName), t.identifier(exportedName)));
+ }
+
+ var aliasDeclar = t.exportNamedDeclaration(null, specifiers);
+
+ // hoist to the top if it's a function
+ if (parentDeclar.isFunctionDeclaration()) {
+ aliasDeclar._blockHoist = 3;
+ }
+
+ exportDeclar.insertAfter(aliasDeclar);
+ exportDeclar.replaceWith(parentDeclar.node);
+ };
+
+ Renamer.prototype.maybeConvertFromClassFunctionDeclaration = function maybeConvertFromClassFunctionDeclaration(path) {
+ return; // TODO
+
+ // retain the `name` of a class/function declaration
+
+ if (!path.isFunctionDeclaration() && !path.isClassDeclaration()) return;
+ if (this.binding.kind !== "hoisted") return;
+
+ path.node.id = t.identifier(this.oldName);
+ path.node._blockHoist = 3;
+
+ path.replaceWith(t.variableDeclaration("let", [t.variableDeclarator(t.identifier(this.newName), t.toExpression(path.node))]));
+ };
+
+ Renamer.prototype.maybeConvertFromClassFunctionExpression = function maybeConvertFromClassFunctionExpression(path) {
+ return; // TODO
+
+ // retain the `name` of a class/function expression
+
+ if (!path.isFunctionExpression() && !path.isClassExpression()) return;
+ if (this.binding.kind !== "local") return;
+
+ path.node.id = t.identifier(this.oldName);
+
+ this.binding.scope.parent.push({
+ id: t.identifier(this.newName)
+ });
+
+ path.replaceWith(t.assignmentExpression("=", t.identifier(this.newName), path.node));
+ };
+
+ Renamer.prototype.rename = function rename(block) {
+ var binding = this.binding;
+ var oldName = this.oldName;
+ var newName = this.newName;
+ var scope = binding.scope;
+ var path = binding.path;
+
+ var parentDeclar = path.find(function (path) {
+ return path.isDeclaration() || path.isFunctionExpression();
+ });
+ if (parentDeclar) {
+ this.maybeConvertFromExportDeclaration(parentDeclar);
+ }
+
+ scope.traverse(block || scope.block, renameVisitor, this);
+
+ if (!block) {
+ scope.removeOwnBinding(oldName);
+ scope.bindings[newName] = binding;
+ this.binding.identifier.name = newName;
+ }
+
+ if (binding.type === "hoisted") {
+ // https://github.com/babel/babel/issues/2435
+ // todo: hoist and convert function to a let
+ }
+
+ if (parentDeclar) {
+ this.maybeConvertFromClassFunctionDeclaration(parentDeclar);
+ this.maybeConvertFromClassFunctionExpression(parentDeclar);
+ }
+ };
+
+ return Renamer;
+})();
+
+exports["default"] = Renamer;
+module.exports = exports["default"];
\ No newline at end of file
diff --git a/node_modules/babel-traverse/lib/visitors.js b/node_modules/babel-traverse/lib/visitors.js
new file mode 100644
index 0000000..fe0e6e1
--- /dev/null
+++ b/node_modules/babel-traverse/lib/visitors.js
@@ -0,0 +1,321 @@
+"use strict";
+
+var _Object$keys = require("babel-runtime/core-js/object/keys")["default"];
+
+var _getIterator = require("babel-runtime/core-js/get-iterator")["default"];
+
+var _interopRequireWildcard = require("babel-runtime/helpers/interop-require-wildcard")["default"];
+
+var _interopRequireDefault = require("babel-runtime/helpers/interop-require-default")["default"];
+
+exports.__esModule = true;
+exports.explode = explode;
+exports.verify = verify;
+exports.merge = merge;
+
+var _pathLibVirtualTypes = require("./path/lib/virtual-types");
+
+var virtualTypes = _interopRequireWildcard(_pathLibVirtualTypes);
+
+var _babelMessages = require("babel-messages");
+
+var messages = _interopRequireWildcard(_babelMessages);
+
+var _babelTypes = require("babel-types");
+
+var t = _interopRequireWildcard(_babelTypes);
+
+var _lodashLangClone = require("lodash/lang/clone");
+
+var _lodashLangClone2 = _interopRequireDefault(_lodashLangClone);
+
+/**
+ * explode() will take a visitor object with all of the various shorthands
+ * that we support, and validates & normalizes it into a common format, ready
+ * to be used in traversal
+ *
+ * The various shorthands are:
+ * * `Identifier() { ... }` -> `Identifier: { enter() { ... } }`
+ * * `"Identifier|NumericLiteral": { ... }` -> `Identifier: { ... }, NumericLiteral: { ... }`
+ * * Aliases in `babel-types`: e.g. `Property: { ... }` -> `ObjectProperty: { ... }, ClassProperty: { ... }`
+ *
+ * Other normalizations are:
+ * * Visitors of virtual types are wrapped, so that they are only visited when
+ * their dynamic check passes
+ * * `enter` and `exit` functions are wrapped in arrays, to ease merging of
+ * visitors
+ */
+
+function explode(visitor) {
+ if (visitor._exploded) return visitor;
+ visitor._exploded = true;
+
+ // normalise pipes
+ for (var nodeType in visitor) {
+ if (shouldIgnoreKey(nodeType)) continue;
+
+ var parts = nodeType.split("|");
+ if (parts.length === 1) continue;
+
+ var fns = visitor[nodeType];
+ delete visitor[nodeType];
+
+ for (var _i = 0; _i < parts.length; _i++) {
+ var part = parts[_i];
+ visitor[part] = fns;
+ }
+ }
+
+ // verify data structure
+ verify(visitor);
+
+ // make sure there's no __esModule type since this is because we're using loose mode
+ // and it sets __esModule to be enumerable on all modules :(
+ delete visitor.__esModule;
+
+ // ensure visitors are objects
+ ensureEntranceObjects(visitor);
+
+ // ensure enter/exit callbacks are arrays
+ ensureCallbackArrays(visitor);
+
+ // add type wrappers
+
+ var _arr = _Object$keys(visitor);
+
+ for (var _i2 = 0; _i2 < _arr.length; _i2++) {
+ var nodeType = _arr[_i2];
+ if (shouldIgnoreKey(nodeType)) continue;
+
+ var wrapper = virtualTypes[nodeType];
+ if (!wrapper) continue;
+
+ // wrap all the functions
+ var fns = visitor[nodeType];
+ for (var type in fns) {
+ fns[type] = wrapCheck(wrapper, fns[type]);
+ }
+
+ // clear it from the visitor
+ delete visitor[nodeType];
+
+ if (wrapper.types) {
+ var _arr2 = wrapper.types;
+
+ for (var _i4 = 0; _i4 < _arr2.length; _i4++) {
+ var type = _arr2[_i4];
+ // merge the visitor if necessary or just put it back in
+ if (visitor[type]) {
+ mergePair(visitor[type], fns);
+ } else {
+ visitor[type] = fns;
+ }
+ }
+ } else {
+ mergePair(visitor, fns);
+ }
+ }
+
+ // add aliases
+ for (var nodeType in visitor) {
+ if (shouldIgnoreKey(nodeType)) continue;
+
+ var fns = visitor[nodeType];
+
+ var aliases = t.FLIPPED_ALIAS_KEYS[nodeType];
+
+ var deprecratedKey = t.DEPRECATED_KEYS[nodeType];
+ if (deprecratedKey) {
+ console.trace("Visitor defined for " + nodeType + " but it has been renamed to " + deprecratedKey);
+ aliases = [deprecratedKey];
+ }
+
+ if (!aliases) continue;
+
+ // clear it from the visitor
+ delete visitor[nodeType];
+
+ for (var _iterator = aliases, _isArray = Array.isArray(_iterator), _i3 = 0, _iterator = _isArray ? _iterator : _getIterator(_iterator);;) {
+ var _ref;
+
+ if (_isArray) {
+ if (_i3 >= _iterator.length) break;
+ _ref = _iterator[_i3++];
+ } else {
+ _i3 = _iterator.next();
+ if (_i3.done) break;
+ _ref = _i3.value;
+ }
+
+ var alias = _ref;
+
+ var existing = visitor[alias];
+ if (existing) {
+ mergePair(existing, fns);
+ } else {
+ visitor[alias] = _lodashLangClone2["default"](fns);
+ }
+ }
+ }
+
+ for (var nodeType in visitor) {
+ if (shouldIgnoreKey(nodeType)) continue;
+
+ ensureCallbackArrays(visitor[nodeType]);
+ }
+
+ return visitor;
+}
+
+function verify(visitor) {
+ if (visitor._verified) return;
+
+ if (typeof visitor === "function") {
+ throw new Error(messages.get("traverseVerifyRootFunction"));
+ }
+
+ for (var nodeType in visitor) {
+ if (nodeType === "enter" || nodeType === "exit") {
+ validateVisitorMethods(nodeType, visitor[nodeType]);
+ }
+
+ if (shouldIgnoreKey(nodeType)) continue;
+
+ if (t.TYPES.indexOf(nodeType) < 0) {
+ throw new Error(messages.get("traverseVerifyNodeType", nodeType));
+ }
+
+ var visitors = visitor[nodeType];
+ if (typeof visitors === "object") {
+ for (var visitorKey in visitors) {
+ if (visitorKey === "enter" || visitorKey === "exit") {
+ // verify that it just contains functions
+ validateVisitorMethods(nodeType + "." + visitorKey, visitors[visitorKey]);
+ } else {
+ throw new Error(messages.get("traverseVerifyVisitorProperty", nodeType, visitorKey));
+ }
+ }
+ }
+ }
+
+ visitor._verified = true;
+}
+
+function validateVisitorMethods(path, val) {
+ var fns = [].concat(val);
+ for (var _iterator2 = fns, _isArray2 = Array.isArray(_iterator2), _i5 = 0, _iterator2 = _isArray2 ? _iterator2 : _getIterator(_iterator2);;) {
+ var _ref2;
+
+ if (_isArray2) {
+ if (_i5 >= _iterator2.length) break;
+ _ref2 = _iterator2[_i5++];
+ } else {
+ _i5 = _iterator2.next();
+ if (_i5.done) break;
+ _ref2 = _i5.value;
+ }
+
+ var fn = _ref2;
+
+ if (typeof fn !== "function") {
+ throw new TypeError("Non-function found defined in " + path + " with type " + typeof fn);
+ }
+ }
+}
+
+function merge(visitors) {
+ var states = arguments.length <= 1 || arguments[1] === undefined ? [] : arguments[1];
+
+ var rootVisitor = {};
+
+ for (var i = 0; i < visitors.length; i++) {
+ var visitor = visitors[i];
+ var state = states[i];
+
+ explode(visitor);
+
+ for (var type in visitor) {
+ var visitorType = visitor[type];
+
+ // if we have state then overload the callbacks to take it
+ if (state) visitorType = wrapWithState(visitorType, state);
+
+ var nodeVisitor = rootVisitor[type] = rootVisitor[type] || {};
+ mergePair(nodeVisitor, visitorType);
+ }
+ }
+
+ return rootVisitor;
+}
+
+function wrapWithState(oldVisitor, state) {
+ var newVisitor = {};
+
+ for (var key in oldVisitor) {
+ var fns = oldVisitor[key];
+
+ // not an enter/exit array of callbacks
+ if (!Array.isArray(fns)) continue;
+
+ fns = fns.map(function (fn) {
+ var newFn = function newFn(path) {
+ return fn.call(state, path, state);
+ };
+ newFn.toString = function () {
+ return fn.toString();
+ };
+ return newFn;
+ });
+
+ newVisitor[key] = fns;
+ }
+
+ return newVisitor;
+}
+
+function ensureEntranceObjects(obj) {
+ for (var key in obj) {
+ if (shouldIgnoreKey(key)) continue;
+
+ var fns = obj[key];
+ if (typeof fns === "function") {
+ obj[key] = { enter: fns };
+ }
+ }
+}
+
+function ensureCallbackArrays(obj) {
+ if (obj.enter && !Array.isArray(obj.enter)) obj.enter = [obj.enter];
+ if (obj.exit && !Array.isArray(obj.exit)) obj.exit = [obj.exit];
+}
+
+function wrapCheck(wrapper, fn) {
+ var newFn = function newFn(path) {
+ if (wrapper.checkPath(path)) {
+ return fn.apply(this, arguments);
+ }
+ };
+ newFn.toString = function () {
+ return fn.toString();
+ };
+ return newFn;
+}
+
+function shouldIgnoreKey(key) {
+ // internal/hidden key
+ if (key[0] === "_") return true;
+
+ // ignore function keys
+ if (key === "enter" || key === "exit" || key === "shouldSkip") return true;
+
+ // ignore other options
+ if (key === "blacklist" || key === "noScope" || key === "skipKeys") return true;
+
+ return false;
+}
+
+function mergePair(dest, src) {
+ for (var key in src) {
+ dest[key] = [].concat(dest[key] || [], src[key]);
+ }
+}
\ No newline at end of file
diff --git a/node_modules/babel-traverse/package.json b/node_modules/babel-traverse/package.json
new file mode 100644
index 0000000..084dfcf
--- /dev/null
+++ b/node_modules/babel-traverse/package.json
@@ -0,0 +1,110 @@
+{
+ "_args": [
+ [
+ "babel-traverse@^6.7.2",
+ "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-core"
+ ]
+ ],
+ "_from": "babel-traverse@>=6.7.2 <7.0.0",
+ "_id": "babel-traverse@6.7.3",
+ "_inCache": true,
+ "_installable": true,
+ "_location": "/babel-traverse",
+ "_nodeVersion": "5.5.0",
+ "_npmOperationalInternal": {
+ "host": "packages-12-west.internal.npmjs.com",
+ "tmp": "tmp/babel-traverse-6.7.3.tgz_1457660157803_0.19202633947134018"
+ },
+ "_npmUser": {
+ "email": "amjad.masad@gmail.com",
+ "name": "amasad"
+ },
+ "_npmVersion": "3.3.12",
+ "_phantomChildren": {},
+ "_requested": {
+ "name": "babel-traverse",
+ "raw": "babel-traverse@^6.7.2",
+ "rawSpec": "^6.7.2",
+ "scope": null,
+ "spec": ">=6.7.2 <7.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/babel-core",
+ "/babel-helper-call-delegate",
+ "/babel-helper-function-name",
+ "/babel-helper-replace-supers",
+ "/babel-plugin-transform-es2015-block-scoping",
+ "/babel-plugin-transform-es2015-classes",
+ "/babel-plugin-transform-es2015-parameters",
+ "/babel-plugin-transform-regenerator",
+ "/babel-template",
+ "/babel-types"
+ ],
+ "_resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.7.3.tgz",
+ "_shasum": "9f5f12093c82edeb2db0749a8fbf15aa5d401ccb",
+ "_shrinkwrap": null,
+ "_spec": "babel-traverse@^6.7.2",
+ "_where": "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-core",
+ "author": {
+ "email": "sebmck@gmail.com",
+ "name": "Sebastian McKenzie"
+ },
+ "dependencies": {
+ "babel-code-frame": "^6.7.2",
+ "babel-messages": "^6.7.2",
+ "babel-runtime": "^5.0.0",
+ "babel-types": "^6.7.2",
+ "babylon": "^6.7.0",
+ "debug": "^2.2.0",
+ "globals": "^8.3.0",
+ "invariant": "^2.2.0",
+ "lodash": "^3.10.1",
+ "repeating": "^1.1.3"
+ },
+ "description": "",
+ "devDependencies": {},
+ "directories": {},
+ "dist": {
+ "shasum": "9f5f12093c82edeb2db0749a8fbf15aa5d401ccb",
+ "tarball": "http://registry.npmjs.org/babel-traverse/-/babel-traverse-6.7.3.tgz"
+ },
+ "homepage": "https://babeljs.io/",
+ "license": "MIT",
+ "main": "lib/index.js",
+ "maintainers": [
+ {
+ "name": "amasad",
+ "email": "amjad.masad@gmail.com"
+ },
+ {
+ "name": "hzoo",
+ "email": "hi@henryzoo.com"
+ },
+ {
+ "name": "jmm",
+ "email": "npm-public@jessemccarthy.net"
+ },
+ {
+ "name": "loganfsmyth",
+ "email": "loganfsmyth@gmail.com"
+ },
+ {
+ "name": "sebmck",
+ "email": "sebmck@gmail.com"
+ },
+ {
+ "name": "thejameskyle",
+ "email": "me@thejameskyle.com"
+ }
+ ],
+ "name": "babel-traverse",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel/tree/master/packages/babel-traverse"
+ },
+ "scripts": {},
+ "version": "6.7.3"
+}
diff --git a/node_modules/babel-types/.npmignore b/node_modules/babel-types/.npmignore
new file mode 100644
index 0000000..47cdd2c
--- /dev/null
+++ b/node_modules/babel-types/.npmignore
@@ -0,0 +1,3 @@
+src
+test
+node_modules
diff --git a/node_modules/babel-types/README.md b/node_modules/babel-types/README.md
new file mode 100644
index 0000000..e542bae
--- /dev/null
+++ b/node_modules/babel-types/README.md
@@ -0,0 +1,1141 @@
+# babel-types
+
+This module contains methods for building ASTs manually and for checking the types of AST nodes.
+
+## API
+
+
+
+### t.anyTypeAnnotation()
+
+See also `t.isAnyTypeAnnotation(node, opts)` and `t.assertAnyTypeAnnotation(node, opts)`.
+
+Aliases: `Flow`, `FlowBaseAnnotation`
+
+
+### t.arrayExpression(elements)
+
+See also `t.isArrayExpression(node, opts)` and `t.assertArrayExpression(node, opts)`.
+
+Aliases: `Expression`
+
+ - `elements`: `array` (required)
+
+### t.arrayPattern(elements, typeAnnotation)
+
+See also `t.isArrayPattern(node, opts)` and `t.assertArrayPattern(node, opts)`.
+
+Aliases: `Pattern`, `LVal`
+
+ - `elements`: `Array` (required)
+ - `typeAnnotation` (required)
+
+### t.arrayTypeAnnotation(elementType)
+
+See also `t.isArrayTypeAnnotation(node, opts)` and `t.assertArrayTypeAnnotation(node, opts)`.
+
+Aliases: `Flow`
+
+ - `elementType` (required)
+
+### t.arrowFunctionExpression(params, body, async)
+
+See also `t.isArrowFunctionExpression(node, opts)` and `t.assertArrowFunctionExpression(node, opts)`.
+
+Aliases: `Scopable`, `Function`, `BlockParent`, `FunctionParent`, `Expression`, `Pureish`
+
+ - `params`: `Array` (required)
+ - `body`: `BlockStatement | Expression` (required)
+ - `async`: `boolean` (default: `false`)
+
+### t.assignmentExpression(operator, left, right)
+
+See also `t.isAssignmentExpression(node, opts)` and `t.assertAssignmentExpression(node, opts)`.
+
+Aliases: `Expression`
+
+ - `operator`: `string` (required)
+ - `left`: `LVal` (required)
+ - `right`: `Expression` (required)
+
+### t.assignmentPattern(left, right)
+
+See also `t.isAssignmentPattern(node, opts)` and `t.assertAssignmentPattern(node, opts)`.
+
+Aliases: `Pattern`, `LVal`
+
+ - `left`: `Identifier` (required)
+ - `right`: `Expression` (required)
+
+### t.awaitExpression(argument)
+
+See also `t.isAwaitExpression(node, opts)` and `t.assertAwaitExpression(node, opts)`.
+
+Aliases: `Expression`, `Terminatorless`
+
+ - `argument`: `Expression` (required)
+
+### t.binaryExpression(operator, left, right)
+
+See also `t.isBinaryExpression(node, opts)` and `t.assertBinaryExpression(node, opts)`.
+
+Aliases: `Binary`, `Expression`
+
+ - `operator`: `string` (required)
+ - `left`: `Expression` (required)
+ - `right`: `Expression` (required)
+
+### t.bindExpression(object, callee)
+
+See also `t.isBindExpression(node, opts)` and `t.assertBindExpression(node, opts)`.
+
+ - `object` (required)
+ - `callee` (required)
+
+### t.blockStatement(body, directives)
+
+See also `t.isBlockStatement(node, opts)` and `t.assertBlockStatement(node, opts)`.
+
+Aliases: `Scopable`, `BlockParent`, `Block`, `Statement`
+
+ - `body`: `Array` (required)
+ - `directives`: `Array` (default: `[]`)
+
+### t.booleanLiteral(value)
+
+See also `t.isBooleanLiteral(node, opts)` and `t.assertBooleanLiteral(node, opts)`.
+
+Aliases: `Expression`, `Pureish`, `Literal`, `Immutable`
+
+ - `value`: `boolean` (required)
+
+### t.booleanLiteralTypeAnnotation()
+
+See also `t.isBooleanLiteralTypeAnnotation(node, opts)` and `t.assertBooleanLiteralTypeAnnotation(node, opts)`.
+
+Aliases: `Flow`
+
+
+### t.booleanTypeAnnotation()
+
+See also `t.isBooleanTypeAnnotation(node, opts)` and `t.assertBooleanTypeAnnotation(node, opts)`.
+
+Aliases: `Flow`, `FlowBaseAnnotation`
+
+
+### t.breakStatement(label)
+
+See also `t.isBreakStatement(node, opts)` and `t.assertBreakStatement(node, opts)`.
+
+Aliases: `Statement`, `Terminatorless`, `CompletionStatement`
+
+ - `label`: `Identifier` (default: `null`)
+
+### t.callExpression(callee, arguments)
+
+See also `t.isCallExpression(node, opts)` and `t.assertCallExpression(node, opts)`.
+
+Aliases: `Expression`
+
+ - `callee`: `Expression` (required)
+ - `arguments`: `array` (required)
+
+### t.catchClause(param, body)
+
+See also `t.isCatchClause(node, opts)` and `t.assertCatchClause(node, opts)`.
+
+Aliases: `Scopable`
+
+ - `param`: `Identifier` (required)
+ - `body`: `BlockStatement` (required)
+
+### t.classBody(body)
+
+See also `t.isClassBody(node, opts)` and `t.assertClassBody(node, opts)`.
+
+ - `body`: `Array` (required)
+
+### t.classDeclaration(id, superClass, body, decorators)
+
+See also `t.isClassDeclaration(node, opts)` and `t.assertClassDeclaration(node, opts)`.
+
+Aliases: `Scopable`, `Class`, `Statement`, `Declaration`, `Pureish`
+
+ - `id`: `Identifier` (required)
+ - `superClass`: `Expression` (default: `null`)
+ - `body`: `ClassBody` (required)
+ - `decorators`: `Array` (required)
+
+### t.classExpression(id, superClass, body, decorators)
+
+See also `t.isClassExpression(node, opts)` and `t.assertClassExpression(node, opts)`.
+
+Aliases: `Scopable`, `Class`, `Expression`, `Pureish`
+
+ - `id`: `Identifier` (default: `null`)
+ - `superClass`: `Expression` (default: `null`)
+ - `body`: `ClassBody` (required)
+ - `decorators`: `Array` (required)
+
+### t.classImplements(id, typeParameters)
+
+See also `t.isClassImplements(node, opts)` and `t.assertClassImplements(node, opts)`.
+
+Aliases: `Flow`
+
+ - `id` (required)
+ - `typeParameters` (required)
+
+### t.classMethod(kind, key, params, body, computed, static)
+
+See also `t.isClassMethod(node, opts)` and `t.assertClassMethod(node, opts)`.
+
+Aliases: `Function`, `Scopable`, `BlockParent`, `FunctionParent`, `Method`
+
+ - `kind`: `"get" | "set" | "method" | "constructor"` (default: `'method'`)
+ - `key`if computed then `Expression` else `Identifier | Literal` (required)
+ - `params`: `Array` (required)
+ - `body`: `BlockStatement` (required)
+ - `computed`: `boolean` (default: `false`)
+ - `static`: `boolean` (default: `false`)
+
+### t.classProperty(key, value, typeAnnotation, decorators)
+
+See also `t.isClassProperty(node, opts)` and `t.assertClassProperty(node, opts)`.
+
+Aliases: `Flow`, `Property`
+
+ - `key` (required)
+ - `value` (required)
+ - `typeAnnotation` (required)
+ - `decorators` (required)
+
+### t.conditionalExpression(test, consequent, alternate)
+
+See also `t.isConditionalExpression(node, opts)` and `t.assertConditionalExpression(node, opts)`.
+
+Aliases: `Expression`, `Conditional`
+
+ - `test`: `Expression` (required)
+ - `consequent`: `Expression` (required)
+ - `alternate`: `Expression` (required)
+
+### t.continueStatement(label)
+
+See also `t.isContinueStatement(node, opts)` and `t.assertContinueStatement(node, opts)`.
+
+Aliases: `Statement`, `Terminatorless`, `CompletionStatement`
+
+ - `label`: `Identifier` (default: `null`)
+
+### t.debuggerStatement()
+
+See also `t.isDebuggerStatement(node, opts)` and `t.assertDebuggerStatement(node, opts)`.
+
+Aliases: `Statement`
+
+
+### t.declareClass(id, typeParameters, extends, body)
+
+See also `t.isDeclareClass(node, opts)` and `t.assertDeclareClass(node, opts)`.
+
+Aliases: `Flow`, `FlowDeclaration`, `Statement`, `Declaration`
+
+ - `id` (required)
+ - `typeParameters` (required)
+ - `extends` (required)
+ - `body` (required)
+
+### t.declareFunction(id)
+
+See also `t.isDeclareFunction(node, opts)` and `t.assertDeclareFunction(node, opts)`.
+
+Aliases: `Flow`, `FlowDeclaration`, `Statement`, `Declaration`
+
+ - `id` (required)
+
+### t.declareModule(id, body)
+
+See also `t.isDeclareModule(node, opts)` and `t.assertDeclareModule(node, opts)`.
+
+Aliases: `Flow`, `FlowDeclaration`, `Statement`, `Declaration`
+
+ - `id` (required)
+ - `body` (required)
+
+### t.declareVariable(id)
+
+See also `t.isDeclareVariable(node, opts)` and `t.assertDeclareVariable(node, opts)`.
+
+Aliases: `Flow`, `FlowDeclaration`, `Statement`, `Declaration`
+
+ - `id` (required)
+
+### t.decorator(expression)
+
+See also `t.isDecorator(node, opts)` and `t.assertDecorator(node, opts)`.
+
+ - `expression`: `Expression` (required)
+
+### t.directive(value)
+
+See also `t.isDirective(node, opts)` and `t.assertDirective(node, opts)`.
+
+ - `value`: `DirectiveLiteral` (required)
+
+### t.directiveLiteral(value)
+
+See also `t.isDirectiveLiteral(node, opts)` and `t.assertDirectiveLiteral(node, opts)`.
+
+ - `value`: `string` (required)
+
+### t.doExpression(body)
+
+See also `t.isDoExpression(node, opts)` and `t.assertDoExpression(node, opts)`.
+
+Aliases: `Expression`
+
+ - `body`: `BlockStatement` (required)
+
+### t.doWhileStatement(test, body)
+
+See also `t.isDoWhileStatement(node, opts)` and `t.assertDoWhileStatement(node, opts)`.
+
+Aliases: `Statement`, `BlockParent`, `Loop`, `While`, `Scopable`
+
+ - `test`: `Expression` (required)
+ - `body`: `BlockStatement` (required)
+
+### t.emptyStatement()
+
+See also `t.isEmptyStatement(node, opts)` and `t.assertEmptyStatement(node, opts)`.
+
+Aliases: `Statement`
+
+
+### t.existentialTypeParam()
+
+See also `t.isExistentialTypeParam(node, opts)` and `t.assertExistentialTypeParam(node, opts)`.
+
+Aliases: `Flow`
+
+
+### t.exportAllDeclaration(source)
+
+See also `t.isExportAllDeclaration(node, opts)` and `t.assertExportAllDeclaration(node, opts)`.
+
+Aliases: `Statement`, `Declaration`, `ModuleDeclaration`, `ExportDeclaration`
+
+ - `source` (required)
+
+### t.exportDefaultDeclaration(declaration)
+
+See also `t.isExportDefaultDeclaration(node, opts)` and `t.assertExportDefaultDeclaration(node, opts)`.
+
+Aliases: `Statement`, `Declaration`, `ModuleDeclaration`, `ExportDeclaration`
+
+ - `declaration` (required)
+
+### t.exportDefaultSpecifier(exported)
+
+See also `t.isExportDefaultSpecifier(node, opts)` and `t.assertExportDefaultSpecifier(node, opts)`.
+
+Aliases: `ModuleSpecifier`
+
+ - `exported`: `Identifier` (required)
+
+### t.exportNamedDeclaration(declaration, specifiers, source)
+
+See also `t.isExportNamedDeclaration(node, opts)` and `t.assertExportNamedDeclaration(node, opts)`.
+
+Aliases: `Statement`, `Declaration`, `ModuleDeclaration`, `ExportDeclaration`
+
+ - `declaration` (required)
+ - `specifiers` (required)
+ - `source` (required)
+
+### t.exportNamespaceSpecifier(exported)
+
+See also `t.isExportNamespaceSpecifier(node, opts)` and `t.assertExportNamespaceSpecifier(node, opts)`.
+
+Aliases: `ModuleSpecifier`
+
+ - `exported`: `Identifier` (required)
+
+### t.exportSpecifier(local, exported)
+
+See also `t.isExportSpecifier(node, opts)` and `t.assertExportSpecifier(node, opts)`.
+
+Aliases: `ModuleSpecifier`
+
+ - `local`: `Identifier` (required)
+ - `exported` (required)
+
+### t.expressionStatement(expression)
+
+See also `t.isExpressionStatement(node, opts)` and `t.assertExpressionStatement(node, opts)`.
+
+Aliases: `Statement`, `ExpressionWrapper`
+
+ - `expression`: `Expression` (required)
+
+### t.file(program, comments, tokens)
+
+See also `t.isFile(node, opts)` and `t.assertFile(node, opts)`.
+
+ - `program`: `Program` (required)
+ - `comments` (required)
+ - `tokens` (required)
+
+### t.forInStatement(left, right, body)
+
+See also `t.isForInStatement(node, opts)` and `t.assertForInStatement(node, opts)`.
+
+Aliases: `Scopable`, `Statement`, `For`, `BlockParent`, `Loop`, `ForXStatement`
+
+ - `left`: `VariableDeclaration | LVal` (required)
+ - `right`: `Expression` (required)
+ - `body`: `Statement` (required)
+
+### t.forOfStatement(left, right, body)
+
+See also `t.isForOfStatement(node, opts)` and `t.assertForOfStatement(node, opts)`.
+
+Aliases: `Scopable`, `Statement`, `For`, `BlockParent`, `Loop`, `ForXStatement`
+
+ - `left`: `VariableDeclaration | LVal` (required)
+ - `right`: `Expression` (required)
+ - `body`: `Statement` (required)
+
+### t.forStatement(init, test, update, body)
+
+See also `t.isForStatement(node, opts)` and `t.assertForStatement(node, opts)`.
+
+Aliases: `Scopable`, `Statement`, `For`, `BlockParent`, `Loop`
+
+ - `init`: `VariableDeclaration | Expression` (default: `null`)
+ - `test`: `Expression` (default: `null`)
+ - `update`: `Expression` (default: `null`)
+ - `body`: `Statement` (required)
+
+### t.functionDeclaration(id, params, body, generator, async)
+
+See also `t.isFunctionDeclaration(node, opts)` and `t.assertFunctionDeclaration(node, opts)`.
+
+Aliases: `Scopable`, `Function`, `BlockParent`, `FunctionParent`, `Statement`, `Pureish`, `Declaration`
+
+ - `id`: `Identifier` (required)
+ - `params`: `Array` (required)
+ - `body`: `BlockStatement` (required)
+ - `generator`: `boolean` (default: `false`)
+ - `async`: `boolean` (default: `false`)
+
+### t.functionExpression(id, params, body, generator, async)
+
+See also `t.isFunctionExpression(node, opts)` and `t.assertFunctionExpression(node, opts)`.
+
+Aliases: `Scopable`, `Function`, `BlockParent`, `FunctionParent`, `Expression`, `Pureish`
+
+ - `id`: `Identifier` (default: `null`)
+ - `params`: `Array` (required)
+ - `body`: `BlockStatement` (required)
+ - `generator`: `boolean` (default: `false`)
+ - `async`: `boolean` (default: `false`)
+
+### t.functionTypeAnnotation(typeParameters, params, rest, returnType)
+
+See also `t.isFunctionTypeAnnotation(node, opts)` and `t.assertFunctionTypeAnnotation(node, opts)`.
+
+Aliases: `Flow`
+
+ - `typeParameters` (required)
+ - `params` (required)
+ - `rest` (required)
+ - `returnType` (required)
+
+### t.functionTypeParam(name, typeAnnotation)
+
+See also `t.isFunctionTypeParam(node, opts)` and `t.assertFunctionTypeParam(node, opts)`.
+
+Aliases: `Flow`
+
+ - `name` (required)
+ - `typeAnnotation` (required)
+
+### t.genericTypeAnnotation(id, typeParameters)
+
+See also `t.isGenericTypeAnnotation(node, opts)` and `t.assertGenericTypeAnnotation(node, opts)`.
+
+Aliases: `Flow`
+
+ - `id` (required)
+ - `typeParameters` (required)
+
+### t.identifier(name)
+
+See also `t.isIdentifier(node, opts)` and `t.assertIdentifier(node, opts)`.
+
+Aliases: `Expression`, `LVal`
+
+ - `name``string` (required)
+
+### t.ifStatement(test, consequent, alternate)
+
+See also `t.isIfStatement(node, opts)` and `t.assertIfStatement(node, opts)`.
+
+Aliases: `Statement`, `Conditional`
+
+ - `test`: `Expression` (required)
+ - `consequent`: `Statement` (default: `null`)
+ - `alternate`: `Statement` (default: `null`)
+
+### t.importDeclaration(specifiers, source)
+
+See also `t.isImportDeclaration(node, opts)` and `t.assertImportDeclaration(node, opts)`.
+
+Aliases: `Statement`, `Declaration`, `ModuleDeclaration`
+
+ - `specifiers`: `Array` (required)
+ - `source`: `StringLiteral` (required)
+
+### t.importDefaultSpecifier(local)
+
+See also `t.isImportDefaultSpecifier(node, opts)` and `t.assertImportDefaultSpecifier(node, opts)`.
+
+Aliases: `ModuleSpecifier`
+
+ - `local`: `Identifier` (required)
+
+### t.importNamespaceSpecifier(local)
+
+See also `t.isImportNamespaceSpecifier(node, opts)` and `t.assertImportNamespaceSpecifier(node, opts)`.
+
+Aliases: `ModuleSpecifier`
+
+ - `local`: `Identifier` (required)
+
+### t.importSpecifier(local, imported)
+
+See also `t.isImportSpecifier(node, opts)` and `t.assertImportSpecifier(node, opts)`.
+
+Aliases: `ModuleSpecifier`
+
+ - `local`: `Identifier` (required)
+ - `imported`: `Identifier` (required)
+
+### t.interfaceDeclaration(id, typeParameters, extends, body)
+
+See also `t.isInterfaceDeclaration(node, opts)` and `t.assertInterfaceDeclaration(node, opts)`.
+
+Aliases: `Flow`, `FlowDeclaration`, `Statement`, `Declaration`
+
+ - `id` (required)
+ - `typeParameters` (required)
+ - `extends` (required)
+ - `body` (required)
+
+### t.interfaceExtends(id, typeParameters)
+
+See also `t.isInterfaceExtends(node, opts)` and `t.assertInterfaceExtends(node, opts)`.
+
+Aliases: `Flow`
+
+ - `id` (required)
+ - `typeParameters` (required)
+
+### t.intersectionTypeAnnotation(types)
+
+See also `t.isIntersectionTypeAnnotation(node, opts)` and `t.assertIntersectionTypeAnnotation(node, opts)`.
+
+Aliases: `Flow`
+
+ - `types` (required)
+
+### t.jSXAttribute(name, value)
+
+See also `t.isJSXAttribute(node, opts)` and `t.assertJSXAttribute(node, opts)`.
+
+Aliases: `JSX`, `Immutable`
+
+ - `name`: `JSXIdentifier | JSXMemberExpression` (required)
+ - `value`: `JSXElement | StringLiteral | JSXExpressionContainer` (default: `null`)
+
+### t.jSXClosingElement(name)
+
+See also `t.isJSXClosingElement(node, opts)` and `t.assertJSXClosingElement(node, opts)`.
+
+Aliases: `JSX`, `Immutable`
+
+ - `name`: `JSXIdentifier | JSXMemberExpression` (required)
+
+### t.jSXElement(openingElement, closingElement, children, selfClosing)
+
+See also `t.isJSXElement(node, opts)` and `t.assertJSXElement(node, opts)`.
+
+Aliases: `JSX`, `Immutable`, `Expression`
+
+ - `openingElement`: `JSXOpeningElement` (required)
+ - `closingElement`: `JSXClosingElement` (default: `null`)
+ - `children` (required)
+ - `selfClosing` (required)
+
+### t.jSXEmptyExpression()
+
+See also `t.isJSXEmptyExpression(node, opts)` and `t.assertJSXEmptyExpression(node, opts)`.
+
+Aliases: `JSX`, `Expression`
+
+
+### t.jSXExpressionContainer(expression)
+
+See also `t.isJSXExpressionContainer(node, opts)` and `t.assertJSXExpressionContainer(node, opts)`.
+
+Aliases: `JSX`, `Immutable`
+
+ - `expression`: `Expression` (required)
+
+### t.jSXIdentifier(name)
+
+See also `t.isJSXIdentifier(node, opts)` and `t.assertJSXIdentifier(node, opts)`.
+
+Aliases: `JSX`, `Expression`
+
+ - `name`: `string` (required)
+
+### t.jSXMemberExpression(object, property)
+
+See also `t.isJSXMemberExpression(node, opts)` and `t.assertJSXMemberExpression(node, opts)`.
+
+Aliases: `JSX`, `Expression`
+
+ - `object`: `JSXIdentifier` (required)
+ - `property`: `JSXIdentifier` (required)
+
+### t.jSXNamespacedName(namespace, name)
+
+See also `t.isJSXNamespacedName(node, opts)` and `t.assertJSXNamespacedName(node, opts)`.
+
+Aliases: `JSX`
+
+ - `namespace`: `JSXIdentifier` (required)
+ - `name`: `JSXIdentifier` (required)
+
+### t.jSXOpeningElement(name, attributes, selfClosing)
+
+See also `t.isJSXOpeningElement(node, opts)` and `t.assertJSXOpeningElement(node, opts)`.
+
+Aliases: `JSX`, `Immutable`
+
+ - `name`: `JSXIdentifier | JSXMemberExpression` (required)
+ - `attributes`: `Array` (required)
+ - `selfClosing`: `boolean` (default: `false`)
+
+### t.jSXSpreadAttribute(argument)
+
+See also `t.isJSXSpreadAttribute(node, opts)` and `t.assertJSXSpreadAttribute(node, opts)`.
+
+Aliases: `JSX`
+
+ - `argument`: `Expression` (required)
+
+### t.jSXText(value)
+
+See also `t.isJSXText(node, opts)` and `t.assertJSXText(node, opts)`.
+
+Aliases: `JSX`
+
+ - `value`: `string` (required)
+
+### t.labeledStatement(label, body)
+
+See also `t.isLabeledStatement(node, opts)` and `t.assertLabeledStatement(node, opts)`.
+
+Aliases: `Statement`
+
+ - `label`: `Identifier` (required)
+ - `body`: `Statement` (required)
+
+### t.logicalExpression(operator, left, right)
+
+See also `t.isLogicalExpression(node, opts)` and `t.assertLogicalExpression(node, opts)`.
+
+Aliases: `Binary`, `Expression`
+
+ - `operator` (required)
+ - `left`: `Expression` (required)
+ - `right`: `Expression` (required)
+
+### t.memberExpression(object, property, computed)
+
+See also `t.isMemberExpression(node, opts)` and `t.assertMemberExpression(node, opts)`.
+
+Aliases: `Expression`, `LVal`
+
+ - `object`: `Expression` (required)
+ - `property`if computed then `Expression` else `Identifier` (required)
+ - `computed`: `boolean` (default: `false`)
+
+### t.metaProperty(meta, property)
+
+See also `t.isMetaProperty(node, opts)` and `t.assertMetaProperty(node, opts)`.
+
+Aliases: `Expression`
+
+ - `meta`: `string` (required)
+ - `property`: `string` (required)
+
+### t.mixedTypeAnnotation()
+
+See also `t.isMixedTypeAnnotation(node, opts)` and `t.assertMixedTypeAnnotation(node, opts)`.
+
+Aliases: `Flow`, `FlowBaseAnnotation`
+
+
+### t.newExpression(callee, arguments)
+
+See also `t.isNewExpression(node, opts)` and `t.assertNewExpression(node, opts)`.
+
+Aliases: `Expression`
+
+ - `callee`: `Expression` (required)
+ - `arguments`: `Array` (required)
+
+### t.noop()
+
+See also `t.isNoop(node, opts)` and `t.assertNoop(node, opts)`.
+
+
+### t.nullLiteral()
+
+See also `t.isNullLiteral(node, opts)` and `t.assertNullLiteral(node, opts)`.
+
+Aliases: `Expression`, `Pureish`, `Literal`, `Immutable`
+
+
+### t.nullableTypeAnnotation(typeAnnotation)
+
+See also `t.isNullableTypeAnnotation(node, opts)` and `t.assertNullableTypeAnnotation(node, opts)`.
+
+Aliases: `Flow`
+
+ - `typeAnnotation` (required)
+
+### t.numberTypeAnnotation()
+
+See also `t.isNumberTypeAnnotation(node, opts)` and `t.assertNumberTypeAnnotation(node, opts)`.
+
+Aliases: `Flow`, `FlowBaseAnnotation`
+
+
+### t.numericLiteral(value)
+
+See also `t.isNumericLiteral(node, opts)` and `t.assertNumericLiteral(node, opts)`.
+
+Aliases: `Expression`, `Pureish`, `Literal`, `Immutable`
+
+ - `value`: `number` (required)
+
+### t.numericLiteralTypeAnnotation()
+
+See also `t.isNumericLiteralTypeAnnotation(node, opts)` and `t.assertNumericLiteralTypeAnnotation(node, opts)`.
+
+Aliases: `Flow`
+
+
+### t.objectExpression(properties)
+
+See also `t.isObjectExpression(node, opts)` and `t.assertObjectExpression(node, opts)`.
+
+Aliases: `Expression`
+
+ - `properties`: `Array` (required)
+
+### t.objectMethod(kind, key, params, body, computed)
+
+See also `t.isObjectMethod(node, opts)` and `t.assertObjectMethod(node, opts)`.
+
+Aliases: `UserWhitespacable`, `Function`, `Scopable`, `BlockParent`, `FunctionParent`, `Method`
+
+ - `kind`: `"method" | "get" | "set"` (default: `'method'`)
+ - `key`if computed then `Expression` else `Identifier | Literal` (required)
+ - `params` (required)
+ - `body`: `BlockStatement` (required)
+ - `computed`: `boolean` (default: `false`)
+
+### t.objectPattern(properties, typeAnnotation)
+
+See also `t.isObjectPattern(node, opts)` and `t.assertObjectPattern(node, opts)`.
+
+Aliases: `Pattern`, `LVal`
+
+ - `properties`: `Array` (required)
+ - `typeAnnotation` (required)
+
+### t.objectProperty(key, value, computed, shorthand, decorators)
+
+See also `t.isObjectProperty(node, opts)` and `t.assertObjectProperty(node, opts)`.
+
+Aliases: `UserWhitespacable`, `Property`
+
+ - `key`if computed then `Expression` else `Identifier | Literal` (required)
+ - `value`: `Expression` (required)
+ - `computed`: `boolean` (default: `false`)
+ - `shorthand`: `boolean` (default: `false`)
+ - `decorators`: `Array` (default: `null`)
+
+### t.objectTypeAnnotation(properties, indexers, callProperties)
+
+See also `t.isObjectTypeAnnotation(node, opts)` and `t.assertObjectTypeAnnotation(node, opts)`.
+
+Aliases: `Flow`
+
+ - `properties` (required)
+ - `indexers` (required)
+ - `callProperties` (required)
+
+### t.objectTypeCallProperty(value)
+
+See also `t.isObjectTypeCallProperty(node, opts)` and `t.assertObjectTypeCallProperty(node, opts)`.
+
+Aliases: `Flow`, `UserWhitespacable`
+
+ - `value` (required)
+
+### t.objectTypeIndexer(id, key, value)
+
+See also `t.isObjectTypeIndexer(node, opts)` and `t.assertObjectTypeIndexer(node, opts)`.
+
+Aliases: `Flow`, `UserWhitespacable`
+
+ - `id` (required)
+ - `key` (required)
+ - `value` (required)
+
+### t.objectTypeProperty(key, value)
+
+See also `t.isObjectTypeProperty(node, opts)` and `t.assertObjectTypeProperty(node, opts)`.
+
+Aliases: `Flow`, `UserWhitespacable`
+
+ - `key` (required)
+ - `value` (required)
+
+### t.parenthesizedExpression(expression)
+
+See also `t.isParenthesizedExpression(node, opts)` and `t.assertParenthesizedExpression(node, opts)`.
+
+Aliases: `Expression`, `ExpressionWrapper`
+
+ - `expression`: `Expression` (required)
+
+### t.program(body, directives)
+
+See also `t.isProgram(node, opts)` and `t.assertProgram(node, opts)`.
+
+Aliases: `Scopable`, `BlockParent`, `Block`, `FunctionParent`
+
+ - `body`: `Array` (required)
+ - `directives`: `Array` (default: `[]`)
+
+### t.qualifiedTypeIdentifier(id, qualification)
+
+See also `t.isQualifiedTypeIdentifier(node, opts)` and `t.assertQualifiedTypeIdentifier(node, opts)`.
+
+Aliases: `Flow`
+
+ - `id` (required)
+ - `qualification` (required)
+
+### t.regExpLiteral(pattern, flags)
+
+See also `t.isRegExpLiteral(node, opts)` and `t.assertRegExpLiteral(node, opts)`.
+
+Aliases: `Expression`, `Literal`
+
+ - `pattern`: `string` (required)
+ - `flags`: `string` (default: `''`)
+
+### t.restElement(argument, typeAnnotation)
+
+See also `t.isRestElement(node, opts)` and `t.assertRestElement(node, opts)`.
+
+Aliases: `LVal`
+
+ - `argument`: `LVal` (required)
+ - `typeAnnotation` (required)
+
+### t.restProperty(argument)
+
+See also `t.isRestProperty(node, opts)` and `t.assertRestProperty(node, opts)`.
+
+Aliases: `UnaryLike`
+
+ - `argument`: `LVal` (required)
+
+### t.returnStatement(argument)
+
+See also `t.isReturnStatement(node, opts)` and `t.assertReturnStatement(node, opts)`.
+
+Aliases: `Statement`, `Terminatorless`, `CompletionStatement`
+
+ - `argument`: `Expression` (default: `null`)
+
+### t.sequenceExpression(expressions)
+
+See also `t.isSequenceExpression(node, opts)` and `t.assertSequenceExpression(node, opts)`.
+
+Aliases: `Expression`
+
+ - `expressions`: `array` (required)
+
+### t.spreadElement(argument)
+
+See also `t.isSpreadElement(node, opts)` and `t.assertSpreadElement(node, opts)`.
+
+Aliases: `UnaryLike`
+
+ - `argument`: `Expression` (required)
+
+### t.spreadProperty(argument)
+
+See also `t.isSpreadProperty(node, opts)` and `t.assertSpreadProperty(node, opts)`.
+
+Aliases: `UnaryLike`
+
+ - `argument`: `Expression` (required)
+
+### t.stringLiteral(value)
+
+See also `t.isStringLiteral(node, opts)` and `t.assertStringLiteral(node, opts)`.
+
+Aliases: `Expression`, `Pureish`, `Literal`, `Immutable`
+
+ - `value`: `string` (required)
+
+### t.stringLiteralTypeAnnotation()
+
+See also `t.isStringLiteralTypeAnnotation(node, opts)` and `t.assertStringLiteralTypeAnnotation(node, opts)`.
+
+Aliases: `Flow`
+
+
+### t.stringTypeAnnotation()
+
+See also `t.isStringTypeAnnotation(node, opts)` and `t.assertStringTypeAnnotation(node, opts)`.
+
+Aliases: `Flow`, `FlowBaseAnnotation`
+
+
+### t.super()
+
+See also `t.isSuper(node, opts)` and `t.assertSuper(node, opts)`.
+
+Aliases: `Expression`
+
+
+### t.switchCase(test, consequent)
+
+See also `t.isSwitchCase(node, opts)` and `t.assertSwitchCase(node, opts)`.
+
+ - `test` (required)
+ - `consequent` (required)
+
+### t.switchStatement(discriminant, cases)
+
+See also `t.isSwitchStatement(node, opts)` and `t.assertSwitchStatement(node, opts)`.
+
+Aliases: `Statement`, `BlockParent`, `Scopable`
+
+ - `discriminant` (required)
+ - `cases` (required)
+
+### t.taggedTemplateExpression(tag, quasi)
+
+See also `t.isTaggedTemplateExpression(node, opts)` and `t.assertTaggedTemplateExpression(node, opts)`.
+
+Aliases: `Expression`
+
+ - `tag`: `Expression` (required)
+ - `quasi`: `TemplateLiteral` (required)
+
+### t.templateElement(value, tail)
+
+See also `t.isTemplateElement(node, opts)` and `t.assertTemplateElement(node, opts)`.
+
+ - `value` (required)
+ - `tail`: `boolean` (default: `false`)
+
+### t.templateLiteral(quasis, expressions)
+
+See also `t.isTemplateLiteral(node, opts)` and `t.assertTemplateLiteral(node, opts)`.
+
+Aliases: `Expression`, `Literal`
+
+ - `quasis` (required)
+ - `expressions` (required)
+
+### t.thisExpression()
+
+See also `t.isThisExpression(node, opts)` and `t.assertThisExpression(node, opts)`.
+
+Aliases: `Expression`
+
+
+### t.throwStatement(argument)
+
+See also `t.isThrowStatement(node, opts)` and `t.assertThrowStatement(node, opts)`.
+
+Aliases: `Statement`, `Terminatorless`, `CompletionStatement`
+
+ - `argument`: `Expression` (required)
+
+### t.tryStatement(block, handler, finalizer)
+
+See also `t.isTryStatement(node, opts)` and `t.assertTryStatement(node, opts)`.
+
+Aliases: `Statement`
+
+ - `block` (required)
+ - `handler` (default: `null`)
+ - `finalizer`: `BlockStatement` (default: `null`)
+
+### t.tupleTypeAnnotation(types)
+
+See also `t.isTupleTypeAnnotation(node, opts)` and `t.assertTupleTypeAnnotation(node, opts)`.
+
+Aliases: `Flow`
+
+ - `types` (required)
+
+### t.typeAlias(id, typeParameters, right)
+
+See also `t.isTypeAlias(node, opts)` and `t.assertTypeAlias(node, opts)`.
+
+Aliases: `Flow`, `FlowDeclaration`, `Statement`, `Declaration`
+
+ - `id` (required)
+ - `typeParameters` (required)
+ - `right` (required)
+
+### t.typeAnnotation(typeAnnotation)
+
+See also `t.isTypeAnnotation(node, opts)` and `t.assertTypeAnnotation(node, opts)`.
+
+Aliases: `Flow`
+
+ - `typeAnnotation` (required)
+
+### t.typeCastExpression(expression, typeAnnotation)
+
+See also `t.isTypeCastExpression(node, opts)` and `t.assertTypeCastExpression(node, opts)`.
+
+Aliases: `Flow`, `ExpressionWrapper`
+
+ - `expression` (required)
+ - `typeAnnotation` (required)
+
+### t.typeParameterDeclaration(params)
+
+See also `t.isTypeParameterDeclaration(node, opts)` and `t.assertTypeParameterDeclaration(node, opts)`.
+
+Aliases: `Flow`
+
+ - `params` (required)
+
+### t.typeParameterInstantiation(params)
+
+See also `t.isTypeParameterInstantiation(node, opts)` and `t.assertTypeParameterInstantiation(node, opts)`.
+
+Aliases: `Flow`
+
+ - `params` (required)
+
+### t.typeofTypeAnnotation(argument)
+
+See also `t.isTypeofTypeAnnotation(node, opts)` and `t.assertTypeofTypeAnnotation(node, opts)`.
+
+Aliases: `Flow`
+
+ - `argument` (required)
+
+### t.unaryExpression(operator, argument, prefix)
+
+See also `t.isUnaryExpression(node, opts)` and `t.assertUnaryExpression(node, opts)`.
+
+Aliases: `UnaryLike`, `Expression`
+
+ - `operator` (required)
+ - `argument`: `Expression` (required)
+ - `prefix`: `boolean` (default: `false`)
+
+### t.unionTypeAnnotation(types)
+
+See also `t.isUnionTypeAnnotation(node, opts)` and `t.assertUnionTypeAnnotation(node, opts)`.
+
+Aliases: `Flow`
+
+ - `types` (required)
+
+### t.updateExpression(operator, argument, prefix)
+
+See also `t.isUpdateExpression(node, opts)` and `t.assertUpdateExpression(node, opts)`.
+
+Aliases: `Expression`
+
+ - `operator` (required)
+ - `argument`: `Expression` (required)
+ - `prefix`: `boolean` (default: `false`)
+
+### t.variableDeclaration(kind, declarations)
+
+See also `t.isVariableDeclaration(node, opts)` and `t.assertVariableDeclaration(node, opts)`.
+
+Aliases: `Statement`, `Declaration`
+
+ - `kind`: `"var" | "let" | "const"` (required)
+ - `declarations`: `Array` (required)
+
+### t.variableDeclarator(id, init)
+
+See also `t.isVariableDeclarator(node, opts)` and `t.assertVariableDeclarator(node, opts)`.
+
+ - `id`: `LVal` (required)
+ - `init`: `Expression` (default: `null`)
+
+### t.voidTypeAnnotation()
+
+See also `t.isVoidTypeAnnotation(node, opts)` and `t.assertVoidTypeAnnotation(node, opts)`.
+
+Aliases: `Flow`, `FlowBaseAnnotation`
+
+
+### t.whileStatement(test, body)
+
+See also `t.isWhileStatement(node, opts)` and `t.assertWhileStatement(node, opts)`.
+
+Aliases: `Statement`, `BlockParent`, `Loop`, `While`, `Scopable`
+
+ - `test`: `Expression` (required)
+ - `body`: `BlockStatement | Statement` (required)
+
+### t.withStatement(object, body)
+
+See also `t.isWithStatement(node, opts)` and `t.assertWithStatement(node, opts)`.
+
+Aliases: `Statement`
+
+ - `object` (required)
+ - `body`: `BlockStatement` (required)
+
+### t.yieldExpression(argument, delegate)
+
+See also `t.isYieldExpression(node, opts)` and `t.assertYieldExpression(node, opts)`.
+
+Aliases: `Expression`, `Terminatorless`
+
+ - `argument`: `Expression` (default: `null`)
+ - `delegate`: `boolean` (default: `false`)
+
+
+
+
diff --git a/node_modules/babel-types/lib/constants.js b/node_modules/babel-types/lib/constants.js
new file mode 100644
index 0000000..ad6380f
--- /dev/null
+++ b/node_modules/babel-types/lib/constants.js
@@ -0,0 +1,53 @@
+/* eslint max-len: 0 */
+
+"use strict";
+
+var _Symbol$for = require("babel-runtime/core-js/symbol/for")["default"];
+
+exports.__esModule = true;
+var STATEMENT_OR_BLOCK_KEYS = ["consequent", "body", "alternate"];
+exports.STATEMENT_OR_BLOCK_KEYS = STATEMENT_OR_BLOCK_KEYS;
+var FLATTENABLE_KEYS = ["body", "expressions"];
+exports.FLATTENABLE_KEYS = FLATTENABLE_KEYS;
+var FOR_INIT_KEYS = ["left", "init"];
+exports.FOR_INIT_KEYS = FOR_INIT_KEYS;
+var COMMENT_KEYS = ["leadingComments", "trailingComments", "innerComments"];
+
+exports.COMMENT_KEYS = COMMENT_KEYS;
+var LOGICAL_OPERATORS = ["||", "&&"];
+exports.LOGICAL_OPERATORS = LOGICAL_OPERATORS;
+var UPDATE_OPERATORS = ["++", "--"];
+
+exports.UPDATE_OPERATORS = UPDATE_OPERATORS;
+var BOOLEAN_NUMBER_BINARY_OPERATORS = [">", "<", ">=", "<="];
+exports.BOOLEAN_NUMBER_BINARY_OPERATORS = BOOLEAN_NUMBER_BINARY_OPERATORS;
+var EQUALITY_BINARY_OPERATORS = ["==", "===", "!=", "!=="];
+exports.EQUALITY_BINARY_OPERATORS = EQUALITY_BINARY_OPERATORS;
+var COMPARISON_BINARY_OPERATORS = [].concat(EQUALITY_BINARY_OPERATORS, ["in", "instanceof"]);
+exports.COMPARISON_BINARY_OPERATORS = COMPARISON_BINARY_OPERATORS;
+var BOOLEAN_BINARY_OPERATORS = [].concat(COMPARISON_BINARY_OPERATORS, BOOLEAN_NUMBER_BINARY_OPERATORS);
+exports.BOOLEAN_BINARY_OPERATORS = BOOLEAN_BINARY_OPERATORS;
+var NUMBER_BINARY_OPERATORS = ["-", "/", "%", "*", "**", "&", "|", ">>", ">>>", "<<", "^"];
+exports.NUMBER_BINARY_OPERATORS = NUMBER_BINARY_OPERATORS;
+var BINARY_OPERATORS = ["+"].concat(NUMBER_BINARY_OPERATORS, BOOLEAN_BINARY_OPERATORS);
+
+exports.BINARY_OPERATORS = BINARY_OPERATORS;
+var BOOLEAN_UNARY_OPERATORS = ["delete", "!"];
+exports.BOOLEAN_UNARY_OPERATORS = BOOLEAN_UNARY_OPERATORS;
+var NUMBER_UNARY_OPERATORS = ["+", "-", "++", "--", "~"];
+exports.NUMBER_UNARY_OPERATORS = NUMBER_UNARY_OPERATORS;
+var STRING_UNARY_OPERATORS = ["typeof"];
+exports.STRING_UNARY_OPERATORS = STRING_UNARY_OPERATORS;
+var UNARY_OPERATORS = ["void"].concat(BOOLEAN_UNARY_OPERATORS, NUMBER_UNARY_OPERATORS, STRING_UNARY_OPERATORS);
+
+exports.UNARY_OPERATORS = UNARY_OPERATORS;
+var INHERIT_KEYS = {
+ optional: ["typeAnnotation", "typeParameters", "returnType"],
+ force: ["start", "loc", "end"]
+};
+
+exports.INHERIT_KEYS = INHERIT_KEYS;
+var BLOCK_SCOPED_SYMBOL = _Symbol$for("var used to be block scoped");
+exports.BLOCK_SCOPED_SYMBOL = BLOCK_SCOPED_SYMBOL;
+var NOT_LOCAL_BINDING = _Symbol$for("should not be considered a local binding");
+exports.NOT_LOCAL_BINDING = NOT_LOCAL_BINDING;
\ No newline at end of file
diff --git a/node_modules/babel-types/lib/converters.js b/node_modules/babel-types/lib/converters.js
new file mode 100644
index 0000000..bb5de09
--- /dev/null
+++ b/node_modules/babel-types/lib/converters.js
@@ -0,0 +1,344 @@
+"use strict";
+
+var _Number$MAX_SAFE_INTEGER = require("babel-runtime/core-js/number/max-safe-integer")["default"];
+
+var _interopRequireDefault = require("babel-runtime/helpers/interop-require-default")["default"];
+
+var _interopRequireWildcard = require("babel-runtime/helpers/interop-require-wildcard")["default"];
+
+exports.__esModule = true;
+exports.toComputedKey = toComputedKey;
+exports.toSequenceExpression = toSequenceExpression;
+exports.toKeyAlias = toKeyAlias;
+exports.toIdentifier = toIdentifier;
+exports.toBindingIdentifierName = toBindingIdentifierName;
+exports.toStatement = toStatement;
+exports.toExpression = toExpression;
+exports.toBlock = toBlock;
+exports.valueToNode = valueToNode;
+
+var _lodashLangIsPlainObject = require("lodash/lang/isPlainObject");
+
+var _lodashLangIsPlainObject2 = _interopRequireDefault(_lodashLangIsPlainObject);
+
+var _lodashLangIsNumber = require("lodash/lang/isNumber");
+
+var _lodashLangIsNumber2 = _interopRequireDefault(_lodashLangIsNumber);
+
+var _lodashLangIsRegExp = require("lodash/lang/isRegExp");
+
+var _lodashLangIsRegExp2 = _interopRequireDefault(_lodashLangIsRegExp);
+
+var _lodashLangIsString = require("lodash/lang/isString");
+
+var _lodashLangIsString2 = _interopRequireDefault(_lodashLangIsString);
+
+var _babelTraverse = require("babel-traverse");
+
+var _babelTraverse2 = _interopRequireDefault(_babelTraverse);
+
+var _index = require("./index");
+
+var t = _interopRequireWildcard(_index);
+
+function toComputedKey(node) {
+ var key = arguments.length <= 1 || arguments[1] === undefined ? node.key || node.property : arguments[1];
+ return (function () {
+ if (!node.computed) {
+ if (t.isIdentifier(key)) key = t.stringLiteral(key.name);
+ }
+ return key;
+ })();
+}
+
+/**
+ * Turn an array of statement `nodes` into a `SequenceExpression`.
+ *
+ * Variable declarations are turned into simple assignments and their
+ * declarations hoisted to the top of the current scope.
+ *
+ * Expression statements are just resolved to their expression.
+ */
+
+function toSequenceExpression(nodes, scope) {
+ if (!nodes || !nodes.length) return;
+
+ var declars = [];
+ var bailed = false;
+
+ var result = convert(nodes);
+ if (bailed) return;
+
+ for (var i = 0; i < declars.length; i++) {
+ scope.push(declars[i]);
+ }
+
+ return result;
+
+ function convert(nodes) {
+ var ensureLastUndefined = false;
+ var exprs = [];
+
+ var _arr = nodes;
+ for (var _i = 0; _i < _arr.length; _i++) {
+ var node = _arr[_i];
+ if (t.isExpression(node)) {
+ exprs.push(node);
+ } else if (t.isExpressionStatement(node)) {
+ exprs.push(node.expression);
+ } else if (t.isVariableDeclaration(node)) {
+ if (node.kind !== "var") return bailed = true; // bailed
+
+ var _arr2 = node.declarations;
+ for (var _i2 = 0; _i2 < _arr2.length; _i2++) {
+ var declar = _arr2[_i2];
+ var bindings = t.getBindingIdentifiers(declar);
+ for (var key in bindings) {
+ declars.push({
+ kind: node.kind,
+ id: bindings[key]
+ });
+ }
+
+ if (declar.init) {
+ exprs.push(t.assignmentExpression("=", declar.id, declar.init));
+ }
+ }
+
+ ensureLastUndefined = true;
+ continue;
+ } else if (t.isIfStatement(node)) {
+ var consequent = node.consequent ? convert([node.consequent]) : scope.buildUndefinedNode();
+ var alternate = node.alternate ? convert([node.alternate]) : scope.buildUndefinedNode();
+ if (!consequent || !alternate) return bailed = true;
+
+ exprs.push(t.conditionalExpression(node.test, consequent, alternate));
+ } else if (t.isBlockStatement(node)) {
+ exprs.push(convert(node.body));
+ } else if (t.isEmptyStatement(node)) {
+ // empty statement so ensure the last item is undefined if we're last
+ ensureLastUndefined = true;
+ continue;
+ } else {
+ // bailed, we can't turn this statement into an expression
+ return bailed = true;
+ }
+
+ ensureLastUndefined = false;
+ }
+
+ if (ensureLastUndefined || exprs.length === 0) {
+ exprs.push(scope.buildUndefinedNode());
+ }
+
+ //
+
+ if (exprs.length === 1) {
+ return exprs[0];
+ } else {
+ return t.sequenceExpression(exprs);
+ }
+ }
+}
+
+function toKeyAlias(node) {
+ var key = arguments.length <= 1 || arguments[1] === undefined ? node.key : arguments[1];
+ return (function () {
+ var alias = undefined;
+
+ if (node.kind === "method") {
+ return toKeyAlias.increment() + "";
+ } else if (t.isIdentifier(key)) {
+ alias = key.name;
+ } else if (t.isStringLiteral(key)) {
+ alias = JSON.stringify(key.value);
+ } else {
+ alias = JSON.stringify(_babelTraverse2["default"].removeProperties(t.cloneDeep(key)));
+ }
+
+ if (node.computed) {
+ alias = "[" + alias + "]";
+ }
+
+ if (node["static"]) {
+ alias = "static:" + alias;
+ }
+
+ return alias;
+ })();
+}
+
+toKeyAlias.uid = 0;
+
+toKeyAlias.increment = function () {
+ if (toKeyAlias.uid >= _Number$MAX_SAFE_INTEGER) {
+ return toKeyAlias.uid = 0;
+ } else {
+ return toKeyAlias.uid++;
+ }
+};
+
+function toIdentifier(name) {
+ name = name + "";
+
+ // replace all non-valid identifiers with dashes
+ name = name.replace(/[^a-zA-Z0-9$_]/g, "-");
+
+ // remove all dashes and numbers from start of name
+ name = name.replace(/^[-0-9]+/, "");
+
+ // camel case
+ name = name.replace(/[-\s]+(.)?/g, function (match, c) {
+ return c ? c.toUpperCase() : "";
+ });
+
+ if (!t.isValidIdentifier(name)) {
+ name = "_" + name;
+ }
+
+ return name || "_";
+}
+
+function toBindingIdentifierName(name) {
+ name = toIdentifier(name);
+ if (name === "eval" || name === "arguments") name = "_" + name;
+ return name;
+}
+
+/**
+ * [Please add a description.]
+ * @returns {Object|Boolean}
+ */
+
+function toStatement(node, ignore) {
+ if (t.isStatement(node)) {
+ return node;
+ }
+
+ var mustHaveId = false;
+ var newType = undefined;
+
+ if (t.isClass(node)) {
+ mustHaveId = true;
+ newType = "ClassDeclaration";
+ } else if (t.isFunction(node)) {
+ mustHaveId = true;
+ newType = "FunctionDeclaration";
+ } else if (t.isAssignmentExpression(node)) {
+ return t.expressionStatement(node);
+ }
+
+ if (mustHaveId && !node.id) {
+ newType = false;
+ }
+
+ if (!newType) {
+ if (ignore) {
+ return false;
+ } else {
+ throw new Error("cannot turn " + node.type + " to a statement");
+ }
+ }
+
+ node.type = newType;
+
+ return node;
+}
+
+function toExpression(node) {
+ if (t.isExpressionStatement(node)) {
+ node = node.expression;
+ }
+
+ if (t.isClass(node)) {
+ node.type = "ClassExpression";
+ } else if (t.isFunction(node)) {
+ node.type = "FunctionExpression";
+ }
+
+ if (t.isExpression(node)) {
+ return node;
+ } else {
+ throw new Error("cannot turn " + node.type + " to an expression");
+ }
+}
+
+function toBlock(node, parent) {
+ if (t.isBlockStatement(node)) {
+ return node;
+ }
+
+ if (t.isEmptyStatement(node)) {
+ node = [];
+ }
+
+ if (!Array.isArray(node)) {
+ if (!t.isStatement(node)) {
+ if (t.isFunction(parent)) {
+ node = t.returnStatement(node);
+ } else {
+ node = t.expressionStatement(node);
+ }
+ }
+
+ node = [node];
+ }
+
+ return t.blockStatement(node);
+}
+
+function valueToNode(value) {
+ // undefined
+ if (value === undefined) {
+ return t.identifier("undefined");
+ }
+
+ // boolean
+ if (value === true || value === false) {
+ return t.booleanLiteral(value);
+ }
+
+ // null
+ if (value === null) {
+ return t.nullLiteral();
+ }
+
+ // strings
+ if (_lodashLangIsString2["default"](value)) {
+ return t.stringLiteral(value);
+ }
+
+ // numbers
+ if (_lodashLangIsNumber2["default"](value)) {
+ return t.numericLiteral(value);
+ }
+
+ // regexes
+ if (_lodashLangIsRegExp2["default"](value)) {
+ var pattern = value.source;
+ var flags = value.toString().match(/\/([a-z]+|)$/)[1];
+ return t.regExpLiteral(pattern, flags);
+ }
+
+ // array
+ if (Array.isArray(value)) {
+ return t.arrayExpression(value.map(t.valueToNode));
+ }
+
+ // object
+ if (_lodashLangIsPlainObject2["default"](value)) {
+ var props = [];
+ for (var key in value) {
+ var nodeKey = undefined;
+ if (t.isValidIdentifier(key)) {
+ nodeKey = t.identifier(key);
+ } else {
+ nodeKey = t.stringLiteral(key);
+ }
+ props.push(t.objectProperty(nodeKey, t.valueToNode(value[key])));
+ }
+ return t.objectExpression(props);
+ }
+
+ throw new Error("don't know how to turn this value into a node");
+}
\ No newline at end of file
diff --git a/node_modules/babel-types/lib/definitions/core.js b/node_modules/babel-types/lib/definitions/core.js
new file mode 100644
index 0000000..36b1c9e
--- /dev/null
+++ b/node_modules/babel-types/lib/definitions/core.js
@@ -0,0 +1,700 @@
+/* eslint max-len: 0 */
+
+"use strict";
+
+var _interopRequireWildcard = require("babel-runtime/helpers/interop-require-wildcard")["default"];
+
+var _interopRequireDefault = require("babel-runtime/helpers/interop-require-default")["default"];
+
+var _index = require("../index");
+
+var t = _interopRequireWildcard(_index);
+
+var _constants = require("../constants");
+
+var _index2 = require("./index");
+
+var _index3 = _interopRequireDefault(_index2);
+
+_index3["default"]("ArrayExpression", {
+ fields: {
+ elements: {
+ validate: _index2.chain(_index2.assertValueType("array"), _index2.assertEach(_index2.assertNodeOrValueType("null", "Expression", "SpreadElement"))),
+ "default": []
+ }
+ },
+ visitor: ["elements"],
+ aliases: ["Expression"]
+});
+
+_index3["default"]("AssignmentExpression", {
+ fields: {
+ operator: {
+ validate: _index2.assertValueType("string")
+ },
+ left: {
+ validate: _index2.assertNodeType("LVal")
+ },
+ right: {
+ validate: _index2.assertNodeType("Expression")
+ }
+ },
+ builder: ["operator", "left", "right"],
+ visitor: ["left", "right"],
+ aliases: ["Expression"]
+});
+
+_index3["default"]("BinaryExpression", {
+ builder: ["operator", "left", "right"],
+ fields: {
+ operator: {
+ validate: _index2.assertOneOf.apply(undefined, _constants.BINARY_OPERATORS)
+ },
+ left: {
+ validate: _index2.assertNodeType("Expression")
+ },
+ right: {
+ validate: _index2.assertNodeType("Expression")
+ }
+ },
+ visitor: ["left", "right"],
+ aliases: ["Binary", "Expression"]
+});
+
+_index3["default"]("Directive", {
+ visitor: ["value"],
+ fields: {
+ value: {
+ validate: _index2.assertNodeType("DirectiveLiteral")
+ }
+ }
+});
+
+_index3["default"]("DirectiveLiteral", {
+ builder: ["value"],
+ fields: {
+ value: {
+ validate: _index2.assertValueType("string")
+ }
+ }
+});
+
+_index3["default"]("BlockStatement", {
+ builder: ["body", "directives"],
+ visitor: ["directives", "body"],
+ fields: {
+ directives: {
+ validate: _index2.chain(_index2.assertValueType("array"), _index2.assertEach(_index2.assertNodeType("Directive"))),
+ "default": []
+ },
+ body: {
+ validate: _index2.chain(_index2.assertValueType("array"), _index2.assertEach(_index2.assertNodeType("Statement")))
+ }
+ },
+ aliases: ["Scopable", "BlockParent", "Block", "Statement"]
+});
+
+_index3["default"]("BreakStatement", {
+ visitor: ["label"],
+ fields: {
+ label: {
+ validate: _index2.assertNodeType("Identifier"),
+ optional: true
+ }
+ },
+ aliases: ["Statement", "Terminatorless", "CompletionStatement"]
+});
+
+_index3["default"]("CallExpression", {
+ visitor: ["callee", "arguments"],
+ fields: {
+ callee: {
+ validate: _index2.assertNodeType("Expression")
+ },
+ arguments: {
+ validate: _index2.chain(_index2.assertValueType("array"), _index2.assertEach(_index2.assertNodeType("Expression", "SpreadElement")))
+ }
+ },
+ aliases: ["Expression"]
+});
+
+_index3["default"]("CatchClause", {
+ visitor: ["param", "body"],
+ fields: {
+ param: {
+ validate: _index2.assertNodeType("Identifier")
+ },
+ body: {
+ validate: _index2.assertNodeType("BlockStatement")
+ }
+ },
+ aliases: ["Scopable"]
+});
+
+_index3["default"]("ConditionalExpression", {
+ visitor: ["test", "consequent", "alternate"],
+ fields: {
+ test: {
+ validate: _index2.assertNodeType("Expression")
+ },
+ consequent: {
+ validate: _index2.assertNodeType("Expression")
+ },
+ alternate: {
+ validate: _index2.assertNodeType("Expression")
+ }
+ },
+ aliases: ["Expression", "Conditional"]
+});
+
+_index3["default"]("ContinueStatement", {
+ visitor: ["label"],
+ fields: {
+ label: {
+ validate: _index2.assertNodeType("Identifier"),
+ optional: true
+ }
+ },
+ aliases: ["Statement", "Terminatorless", "CompletionStatement"]
+});
+
+_index3["default"]("DebuggerStatement", {
+ aliases: ["Statement"]
+});
+
+_index3["default"]("DoWhileStatement", {
+ visitor: ["test", "body"],
+ fields: {
+ test: {
+ validate: _index2.assertNodeType("Expression")
+ },
+ body: {
+ validate: _index2.assertNodeType("Statement")
+ }
+ },
+ aliases: ["Statement", "BlockParent", "Loop", "While", "Scopable"]
+});
+
+_index3["default"]("EmptyStatement", {
+ aliases: ["Statement"]
+});
+
+_index3["default"]("ExpressionStatement", {
+ visitor: ["expression"],
+ fields: {
+ expression: {
+ validate: _index2.assertNodeType("Expression")
+ }
+ },
+ aliases: ["Statement", "ExpressionWrapper"]
+});
+
+_index3["default"]("File", {
+ builder: ["program", "comments", "tokens"],
+ visitor: ["program"],
+ fields: {
+ program: {
+ validate: _index2.assertNodeType("Program")
+ }
+ }
+});
+
+_index3["default"]("ForInStatement", {
+ visitor: ["left", "right", "body"],
+ aliases: ["Scopable", "Statement", "For", "BlockParent", "Loop", "ForXStatement"],
+ fields: {
+ left: {
+ validate: _index2.assertNodeType("VariableDeclaration", "LVal")
+ },
+ right: {
+ validate: _index2.assertNodeType("Expression")
+ },
+ body: {
+ validate: _index2.assertNodeType("Statement")
+ }
+ }
+});
+
+_index3["default"]("ForStatement", {
+ visitor: ["init", "test", "update", "body"],
+ aliases: ["Scopable", "Statement", "For", "BlockParent", "Loop"],
+ fields: {
+ init: {
+ validate: _index2.assertNodeType("VariableDeclaration", "Expression"),
+ optional: true
+ },
+ test: {
+ validate: _index2.assertNodeType("Expression"),
+ optional: true
+ },
+ update: {
+ validate: _index2.assertNodeType("Expression"),
+ optional: true
+ },
+ body: {
+ validate: _index2.assertNodeType("Statement")
+ }
+ }
+});
+
+_index3["default"]("FunctionDeclaration", {
+ builder: ["id", "params", "body", "generator", "async"],
+ visitor: ["id", "params", "body", "returnType", "typeParameters"],
+ fields: {
+ id: {
+ validate: _index2.assertNodeType("Identifier")
+ },
+ params: {
+ validate: _index2.chain(_index2.assertValueType("array"), _index2.assertEach(_index2.assertNodeType("LVal")))
+ },
+ body: {
+ validate: _index2.assertNodeType("BlockStatement")
+ },
+ generator: {
+ "default": false,
+ validate: _index2.assertValueType("boolean")
+ },
+ async: {
+ "default": false,
+ validate: _index2.assertValueType("boolean")
+ }
+ },
+ aliases: ["Scopable", "Function", "BlockParent", "FunctionParent", "Statement", "Pureish", "Declaration"]
+});
+
+_index3["default"]("FunctionExpression", {
+ inherits: "FunctionDeclaration",
+ aliases: ["Scopable", "Function", "BlockParent", "FunctionParent", "Expression", "Pureish"],
+ fields: {
+ id: {
+ validate: _index2.assertNodeType("Identifier"),
+ optional: true
+ },
+ params: {
+ validate: _index2.chain(_index2.assertValueType("array"), _index2.assertEach(_index2.assertNodeType("LVal")))
+ },
+ body: {
+ validate: _index2.assertNodeType("BlockStatement")
+ },
+ generator: {
+ "default": false,
+ validate: _index2.assertValueType("boolean")
+ },
+ async: {
+ "default": false,
+ validate: _index2.assertValueType("boolean")
+ }
+ }
+});
+
+_index3["default"]("Identifier", {
+ builder: ["name"],
+ visitor: ["typeAnnotation"],
+ aliases: ["Expression", "LVal"],
+ fields: {
+ name: {
+ validate: function validate(node, key, val) {
+ if (!t.isValidIdentifier(val)) {
+ // todo
+ }
+ }
+ }
+ }
+});
+
+_index3["default"]("IfStatement", {
+ visitor: ["test", "consequent", "alternate"],
+ aliases: ["Statement", "Conditional"],
+ fields: {
+ test: {
+ validate: _index2.assertNodeType("Expression")
+ },
+ consequent: {
+ validate: _index2.assertNodeType("Statement")
+ },
+ alternate: {
+ optional: true,
+ validate: _index2.assertNodeType("Statement")
+ }
+ }
+});
+
+_index3["default"]("LabeledStatement", {
+ visitor: ["label", "body"],
+ aliases: ["Statement"],
+ fields: {
+ label: {
+ validate: _index2.assertNodeType("Identifier")
+ },
+ body: {
+ validate: _index2.assertNodeType("Statement")
+ }
+ }
+});
+
+_index3["default"]("StringLiteral", {
+ builder: ["value"],
+ fields: {
+ value: {
+ validate: _index2.assertValueType("string")
+ }
+ },
+ aliases: ["Expression", "Pureish", "Literal", "Immutable"]
+});
+
+_index3["default"]("NumericLiteral", {
+ builder: ["value"],
+ deprecatedAlias: "NumberLiteral",
+ fields: {
+ value: {
+ validate: _index2.assertValueType("number")
+ }
+ },
+ aliases: ["Expression", "Pureish", "Literal", "Immutable"]
+});
+
+_index3["default"]("NullLiteral", {
+ aliases: ["Expression", "Pureish", "Literal", "Immutable"]
+});
+
+_index3["default"]("BooleanLiteral", {
+ builder: ["value"],
+ fields: {
+ value: {
+ validate: _index2.assertValueType("boolean")
+ }
+ },
+ aliases: ["Expression", "Pureish", "Literal", "Immutable"]
+});
+
+_index3["default"]("RegExpLiteral", {
+ builder: ["pattern", "flags"],
+ deprecatedAlias: "RegexLiteral",
+ aliases: ["Expression", "Literal"],
+ fields: {
+ pattern: {
+ validate: _index2.assertValueType("string")
+ },
+ flags: {
+ validate: _index2.assertValueType("string"),
+ "default": ""
+ }
+ }
+});
+
+_index3["default"]("LogicalExpression", {
+ builder: ["operator", "left", "right"],
+ visitor: ["left", "right"],
+ aliases: ["Binary", "Expression"],
+ fields: {
+ operator: {
+ validate: _index2.assertOneOf.apply(undefined, _constants.LOGICAL_OPERATORS)
+ },
+ left: {
+ validate: _index2.assertNodeType("Expression")
+ },
+ right: {
+ validate: _index2.assertNodeType("Expression")
+ }
+ }
+});
+
+_index3["default"]("MemberExpression", {
+ builder: ["object", "property", "computed"],
+ visitor: ["object", "property"],
+ aliases: ["Expression", "LVal"],
+ fields: {
+ object: {
+ validate: _index2.assertNodeType("Expression")
+ },
+ property: {
+ validate: function validate(node, key, val) {
+ var expectedType = node.computed ? "Expression" : "Identifier";
+ _index2.assertNodeType(expectedType)(node, key, val);
+ }
+ },
+ computed: {
+ "default": false
+ }
+ }
+});
+
+_index3["default"]("NewExpression", {
+ visitor: ["callee", "arguments"],
+ aliases: ["Expression"],
+ fields: {
+ callee: {
+ validate: _index2.assertNodeType("Expression")
+ },
+ arguments: {
+ validate: _index2.chain(_index2.assertValueType("array"), _index2.assertEach(_index2.assertNodeType("Expression", "SpreadElement")))
+ }
+ }
+});
+
+_index3["default"]("Program", {
+ visitor: ["directives", "body"],
+ builder: ["body", "directives"],
+ fields: {
+ directives: {
+ validate: _index2.chain(_index2.assertValueType("array"), _index2.assertEach(_index2.assertNodeType("Directive"))),
+ "default": []
+ },
+ body: {
+ validate: _index2.chain(_index2.assertValueType("array"), _index2.assertEach(_index2.assertNodeType("Statement")))
+ }
+ },
+ aliases: ["Scopable", "BlockParent", "Block", "FunctionParent"]
+});
+
+_index3["default"]("ObjectExpression", {
+ visitor: ["properties"],
+ aliases: ["Expression"],
+ fields: {
+ properties: {
+ validate: _index2.chain(_index2.assertValueType("array"), _index2.assertEach(_index2.assertNodeType("ObjectMethod", "ObjectProperty", "SpreadProperty")))
+ }
+ }
+});
+
+_index3["default"]("ObjectMethod", {
+ builder: ["kind", "key", "params", "body", "computed"],
+ fields: {
+ kind: {
+ validate: _index2.chain(_index2.assertValueType("string"), _index2.assertOneOf("method", "get", "set")),
+ "default": "method"
+ },
+ computed: {
+ validate: _index2.assertValueType("boolean"),
+ "default": false
+ },
+ key: {
+ validate: function validate(node, key, val) {
+ var expectedTypes = node.computed ? ["Expression"] : ["Identifier", "StringLiteral", "NumericLiteral"];
+ _index2.assertNodeType.apply(undefined, expectedTypes)(node, key, val);
+ }
+ },
+ decorators: {
+ validate: _index2.chain(_index2.assertValueType("array"), _index2.assertEach(_index2.assertNodeType("Decorator")))
+ },
+ body: {
+ validate: _index2.assertNodeType("BlockStatement")
+ },
+ generator: {
+ "default": false,
+ validate: _index2.assertValueType("boolean")
+ },
+ async: {
+ "default": false,
+ validate: _index2.assertValueType("boolean")
+ }
+ },
+ visitor: ["key", "params", "body", "decorators", "returnType", "typeParameters"],
+ aliases: ["UserWhitespacable", "Function", "Scopable", "BlockParent", "FunctionParent", "Method", "ObjectMember"]
+});
+
+_index3["default"]("ObjectProperty", {
+ builder: ["key", "value", "computed", "shorthand", "decorators"],
+ fields: {
+ computed: {
+ validate: _index2.assertValueType("boolean"),
+ "default": false
+ },
+ key: {
+ validate: function validate(node, key, val) {
+ var expectedTypes = node.computed ? ["Expression"] : ["Identifier", "StringLiteral", "NumericLiteral"];
+ _index2.assertNodeType.apply(undefined, expectedTypes)(node, key, val);
+ }
+ },
+ value: {
+ validate: _index2.assertNodeType("Expression")
+ },
+ shorthand: {
+ validate: _index2.assertValueType("boolean"),
+ "default": false
+ },
+ decorators: {
+ validate: _index2.chain(_index2.assertValueType("array"), _index2.assertEach(_index2.assertNodeType("Decorator"))),
+ optional: true
+ }
+ },
+ visitor: ["key", "value", "decorators"],
+ aliases: ["UserWhitespacable", "Property", "ObjectMember"]
+});
+
+_index3["default"]("RestElement", {
+ visitor: ["argument", "typeAnnotation"],
+ aliases: ["LVal"],
+ fields: {
+ argument: {
+ validate: _index2.assertNodeType("LVal")
+ }
+ }
+});
+
+_index3["default"]("ReturnStatement", {
+ visitor: ["argument"],
+ aliases: ["Statement", "Terminatorless", "CompletionStatement"],
+ fields: {
+ argument: {
+ validate: _index2.assertNodeType("Expression"),
+ optional: true
+ }
+ }
+});
+
+_index3["default"]("SequenceExpression", {
+ visitor: ["expressions"],
+ fields: {
+ expressions: {
+ validate: _index2.chain(_index2.assertValueType("array"), _index2.assertEach(_index2.assertNodeType("Expression")))
+ }
+ },
+ aliases: ["Expression"]
+});
+
+_index3["default"]("SwitchCase", {
+ visitor: ["test", "consequent"],
+ fields: {
+ test: {
+ validate: _index2.assertNodeType("Expression"),
+ optional: true
+ },
+ consequent: {
+ validate: _index2.chain(_index2.assertValueType("array"), _index2.assertEach(_index2.assertNodeType("Statement")))
+ }
+ }
+});
+
+_index3["default"]("SwitchStatement", {
+ visitor: ["discriminant", "cases"],
+ aliases: ["Statement", "BlockParent", "Scopable"],
+ fields: {
+ discriminant: {
+ validate: _index2.assertNodeType("Expression")
+ },
+ cases: {
+ validate: _index2.chain(_index2.assertValueType("array"), _index2.assertEach(_index2.assertNodeType("SwitchCase")))
+ }
+ }
+});
+
+_index3["default"]("ThisExpression", {
+ aliases: ["Expression"]
+});
+
+_index3["default"]("ThrowStatement", {
+ visitor: ["argument"],
+ aliases: ["Statement", "Terminatorless", "CompletionStatement"],
+ fields: {
+ argument: {
+ validate: _index2.assertNodeType("Expression")
+ }
+ }
+});
+
+// todo: at least handler or finalizer should be set to be valid
+_index3["default"]("TryStatement", {
+ visitor: ["block", "handler", "finalizer"],
+ aliases: ["Statement"],
+ fields: {
+ body: {
+ validate: _index2.assertNodeType("BlockStatement")
+ },
+ handler: {
+ optional: true,
+ handler: _index2.assertNodeType("BlockStatement")
+ },
+ finalizer: {
+ optional: true,
+ validate: _index2.assertNodeType("BlockStatement")
+ }
+ }
+});
+
+_index3["default"]("UnaryExpression", {
+ builder: ["operator", "argument", "prefix"],
+ fields: {
+ prefix: {
+ "default": true
+ },
+ argument: {
+ validate: _index2.assertNodeType("Expression")
+ },
+ operator: {
+ validate: _index2.assertOneOf.apply(undefined, _constants.UNARY_OPERATORS)
+ }
+ },
+ visitor: ["argument"],
+ aliases: ["UnaryLike", "Expression"]
+});
+
+_index3["default"]("UpdateExpression", {
+ builder: ["operator", "argument", "prefix"],
+ fields: {
+ prefix: {
+ "default": false
+ },
+ argument: {
+ validate: _index2.assertNodeType("Expression")
+ },
+ operator: {
+ validate: _index2.assertOneOf.apply(undefined, _constants.UPDATE_OPERATORS)
+ }
+ },
+ visitor: ["argument"],
+ aliases: ["Expression"]
+});
+
+_index3["default"]("VariableDeclaration", {
+ builder: ["kind", "declarations"],
+ visitor: ["declarations"],
+ aliases: ["Statement", "Declaration"],
+ fields: {
+ kind: {
+ validate: _index2.chain(_index2.assertValueType("string"), _index2.assertOneOf("var", "let", "const"))
+ },
+ declarations: {
+ validate: _index2.chain(_index2.assertValueType("array"), _index2.assertEach(_index2.assertNodeType("VariableDeclarator")))
+ }
+ }
+});
+
+_index3["default"]("VariableDeclarator", {
+ visitor: ["id", "init"],
+ fields: {
+ id: {
+ validate: _index2.assertNodeType("LVal")
+ },
+ init: {
+ optional: true,
+ validate: _index2.assertNodeType("Expression")
+ }
+ }
+});
+
+_index3["default"]("WhileStatement", {
+ visitor: ["test", "body"],
+ aliases: ["Statement", "BlockParent", "Loop", "While", "Scopable"],
+ fields: {
+ test: {
+ validate: _index2.assertNodeType("Expression")
+ },
+ body: {
+ validate: _index2.assertNodeType("BlockStatement", "Statement")
+ }
+ }
+});
+
+_index3["default"]("WithStatement", {
+ visitor: ["object", "body"],
+ aliases: ["Statement"],
+ fields: {
+ object: {
+ object: _index2.assertNodeType("Expression")
+ },
+ body: {
+ validate: _index2.assertNodeType("BlockStatement", "Statement")
+ }
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-types/lib/definitions/es2015.js b/node_modules/babel-types/lib/definitions/es2015.js
new file mode 100644
index 0000000..2a8032e
--- /dev/null
+++ b/node_modules/babel-types/lib/definitions/es2015.js
@@ -0,0 +1,347 @@
+/* eslint max-len: 0 */
+
+"use strict";
+
+var _interopRequireDefault = require("babel-runtime/helpers/interop-require-default")["default"];
+
+var _index = require("./index");
+
+var _index2 = _interopRequireDefault(_index);
+
+_index2["default"]("AssignmentPattern", {
+ visitor: ["left", "right"],
+ aliases: ["Pattern", "LVal"],
+ fields: {
+ left: {
+ validate: _index.assertNodeType("Identifier")
+ },
+ right: {
+ validate: _index.assertNodeType("Expression")
+ }
+ }
+});
+
+_index2["default"]("ArrayPattern", {
+ visitor: ["elements", "typeAnnotation"],
+ aliases: ["Pattern", "LVal"],
+ fields: {
+ elements: {
+ validate: _index.chain(_index.assertValueType("array"), _index.assertEach(_index.assertNodeType("Expression")))
+ }
+ }
+});
+
+_index2["default"]("ArrowFunctionExpression", {
+ builder: ["params", "body", "async"],
+ visitor: ["params", "body", "returnType"],
+ aliases: ["Scopable", "Function", "BlockParent", "FunctionParent", "Expression", "Pureish"],
+ fields: {
+ params: {
+ validate: _index.chain(_index.assertValueType("array"), _index.assertEach(_index.assertNodeType("LVal")))
+ },
+ body: {
+ validate: _index.assertNodeType("BlockStatement", "Expression")
+ },
+ async: {
+ validate: _index.assertValueType("boolean"),
+ "default": false
+ }
+ }
+});
+
+_index2["default"]("ClassBody", {
+ visitor: ["body"],
+ fields: {
+ body: {
+ validate: _index.chain(_index.assertValueType("array"), _index.assertEach(_index.assertNodeType("ClassMethod", "ClassProperty")))
+ }
+ }
+});
+
+_index2["default"]("ClassDeclaration", {
+ builder: ["id", "superClass", "body", "decorators"],
+ visitor: ["id", "body", "superClass", "mixins", "typeParameters", "superTypeParameters", "implements", "decorators"],
+ aliases: ["Scopable", "Class", "Statement", "Declaration", "Pureish"],
+ fields: {
+ id: {
+ validate: _index.assertNodeType("Identifier")
+ },
+ body: {
+ validate: _index.assertNodeType("ClassBody")
+ },
+ superClass: {
+ optional: true,
+ validate: _index.assertNodeType("Expression")
+ },
+ decorators: {
+ validate: _index.chain(_index.assertValueType("array"), _index.assertEach(_index.assertNodeType("Decorator")))
+ }
+ }
+});
+
+_index2["default"]("ClassExpression", {
+ inherits: "ClassDeclaration",
+ aliases: ["Scopable", "Class", "Expression", "Pureish"],
+ fields: {
+ id: {
+ optional: true,
+ validate: _index.assertNodeType("Identifier")
+ },
+ body: {
+ validate: _index.assertNodeType("ClassBody")
+ },
+ superClass: {
+ optional: true,
+ validate: _index.assertNodeType("Expression")
+ },
+ decorators: {
+ validate: _index.chain(_index.assertValueType("array"), _index.assertEach(_index.assertNodeType("Decorator")))
+ }
+ }
+});
+
+_index2["default"]("ExportAllDeclaration", {
+ visitor: ["source"],
+ aliases: ["Statement", "Declaration", "ModuleDeclaration", "ExportDeclaration"],
+ fields: {
+ source: {
+ validate: _index.assertNodeType("StringLiteral")
+ }
+ }
+});
+
+_index2["default"]("ExportDefaultDeclaration", {
+ visitor: ["declaration"],
+ aliases: ["Statement", "Declaration", "ModuleDeclaration", "ExportDeclaration"],
+ fields: {
+ declaration: {
+ validate: _index.assertNodeType("FunctionDeclaration", "ClassDeclaration", "Expression")
+ }
+ }
+});
+
+_index2["default"]("ExportNamedDeclaration", {
+ visitor: ["declaration", "specifiers", "source"],
+ aliases: ["Statement", "Declaration", "ModuleDeclaration", "ExportDeclaration"],
+ fields: {
+ declaration: {
+ validate: _index.assertNodeType("Declaration"),
+ optional: true
+ },
+ specifiers: {
+ validate: _index.chain(_index.assertValueType("array"), _index.assertEach(_index.assertNodeType("ExportSpecifier")))
+ },
+ source: {
+ validate: _index.assertNodeType("StringLiteral"),
+ optional: true
+ }
+ }
+});
+
+_index2["default"]("ExportSpecifier", {
+ visitor: ["local", "exported"],
+ aliases: ["ModuleSpecifier"],
+ fields: {
+ local: {
+ validate: _index.assertNodeType("Identifier")
+ },
+ exported: {
+ validate: _index.assertNodeType("Identifier")
+ }
+ }
+});
+
+_index2["default"]("ForOfStatement", {
+ visitor: ["left", "right", "body"],
+ aliases: ["Scopable", "Statement", "For", "BlockParent", "Loop", "ForXStatement"],
+ fields: {
+ left: {
+ validate: _index.assertNodeType("VariableDeclaration", "LVal")
+ },
+ right: {
+ validate: _index.assertNodeType("Expression")
+ },
+ body: {
+ validate: _index.assertNodeType("Statement")
+ }
+ }
+});
+
+_index2["default"]("ImportDeclaration", {
+ visitor: ["specifiers", "source"],
+ aliases: ["Statement", "Declaration", "ModuleDeclaration"],
+ fields: {
+ specifiers: {
+ validate: _index.chain(_index.assertValueType("array"), _index.assertEach(_index.assertNodeType("ImportSpecifier", "ImportDefaultSpecifier", "ImportNamespaceSpecifier")))
+ },
+ source: {
+ validate: _index.assertNodeType("StringLiteral")
+ }
+ }
+});
+
+_index2["default"]("ImportDefaultSpecifier", {
+ visitor: ["local"],
+ aliases: ["ModuleSpecifier"],
+ fields: {
+ local: {
+ validate: _index.assertNodeType("Identifier")
+ }
+ }
+});
+
+_index2["default"]("ImportNamespaceSpecifier", {
+ visitor: ["local"],
+ aliases: ["ModuleSpecifier"],
+ fields: {
+ local: {
+ validate: _index.assertNodeType("Identifier")
+ }
+ }
+});
+
+_index2["default"]("ImportSpecifier", {
+ visitor: ["local", "imported"],
+ aliases: ["ModuleSpecifier"],
+ fields: {
+ local: {
+ validate: _index.assertNodeType("Identifier")
+ },
+ imported: {
+ validate: _index.assertNodeType("Identifier")
+ }
+ }
+});
+
+_index2["default"]("MetaProperty", {
+ visitor: ["meta", "property"],
+ aliases: ["Expression"],
+ fields: {
+ // todo: limit to new.target
+ meta: {
+ validate: _index.assertValueType("string")
+ },
+ property: {
+ validate: _index.assertValueType("string")
+ }
+ }
+});
+
+_index2["default"]("ClassMethod", {
+ aliases: ["Function", "Scopable", "BlockParent", "FunctionParent", "Method"],
+ builder: ["kind", "key", "params", "body", "computed", "static"],
+ visitor: ["key", "params", "body", "decorators", "returnType", "typeParameters"],
+ fields: {
+ kind: {
+ validate: _index.chain(_index.assertValueType("string"), _index.assertOneOf("get", "set", "method", "constructor")),
+ "default": "method"
+ },
+ computed: {
+ "default": false,
+ validate: _index.assertValueType("boolean")
+ },
+ "static": {
+ "default": false,
+ validate: _index.assertValueType("boolean")
+ },
+ key: {
+ validate: function validate(node, key, val) {
+ var expectedTypes = node.computed ? ["Expression"] : ["Identifier", "StringLiteral", "NumericLiteral"];
+ _index.assertNodeType.apply(undefined, expectedTypes)(node, key, val);
+ }
+ },
+ params: {
+ validate: _index.chain(_index.assertValueType("array"), _index.assertEach(_index.assertNodeType("LVal")))
+ },
+ body: {
+ validate: _index.assertNodeType("BlockStatement")
+ },
+ generator: {
+ "default": false,
+ validate: _index.assertValueType("boolean")
+ },
+ async: {
+ "default": false,
+ validate: _index.assertValueType("boolean")
+ }
+ }
+});
+
+_index2["default"]("ObjectPattern", {
+ visitor: ["properties", "typeAnnotation"],
+ aliases: ["Pattern", "LVal"],
+ fields: {
+ properties: {
+ validate: _index.chain(_index.assertValueType("array"), _index.assertEach(_index.assertNodeType("RestProperty", "Property")))
+ }
+ }
+});
+
+_index2["default"]("SpreadElement", {
+ visitor: ["argument"],
+ aliases: ["UnaryLike"],
+ fields: {
+ argument: {
+ validate: _index.assertNodeType("Expression")
+ }
+ }
+});
+
+_index2["default"]("Super", {
+ aliases: ["Expression"]
+});
+
+_index2["default"]("TaggedTemplateExpression", {
+ visitor: ["tag", "quasi"],
+ aliases: ["Expression"],
+ fields: {
+ tag: {
+ validate: _index.assertNodeType("Expression")
+ },
+ quasi: {
+ validate: _index.assertNodeType("TemplateLiteral")
+ }
+ }
+});
+
+_index2["default"]("TemplateElement", {
+ builder: ["value", "tail"],
+ fields: {
+ value: {
+ // todo: flatten `raw` into main node
+ },
+ tail: {
+ validate: _index.assertValueType("boolean"),
+ "default": false
+ }
+ }
+});
+
+_index2["default"]("TemplateLiteral", {
+ visitor: ["quasis", "expressions"],
+ aliases: ["Expression", "Literal"],
+ fields: {
+ quasis: {
+ validate: _index.chain(_index.assertValueType("array"), _index.assertEach(_index.assertNodeType("TemplateElement")))
+ },
+ expressions: {
+ validate: _index.chain(_index.assertValueType("array"), _index.assertEach(_index.assertNodeType("Expression")))
+ }
+ }
+});
+
+_index2["default"]("YieldExpression", {
+ builder: ["argument", "delegate"],
+ visitor: ["argument"],
+ aliases: ["Expression", "Terminatorless"],
+ fields: {
+ delegate: {
+ validate: _index.assertValueType("boolean"),
+ "default": false
+ },
+ argument: {
+ optional: true,
+ validate: _index.assertNodeType("Expression")
+ }
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-types/lib/definitions/experimental.js b/node_modules/babel-types/lib/definitions/experimental.js
new file mode 100644
index 0000000..590b847
--- /dev/null
+++ b/node_modules/babel-types/lib/definitions/experimental.js
@@ -0,0 +1,85 @@
+"use strict";
+
+var _interopRequireDefault = require("babel-runtime/helpers/interop-require-default")["default"];
+
+var _index = require("./index");
+
+var _index2 = _interopRequireDefault(_index);
+
+_index2["default"]("AwaitExpression", {
+ builder: ["argument"],
+ visitor: ["argument"],
+ aliases: ["Expression", "Terminatorless"],
+ fields: {
+ argument: {
+ validate: _index.assertNodeType("Expression")
+ }
+ }
+});
+
+_index2["default"]("BindExpression", {
+ visitor: ["object", "callee"],
+ aliases: ["Expression"],
+ fields: {
+ // todo
+ }
+});
+
+_index2["default"]("Decorator", {
+ visitor: ["expression"],
+ fields: {
+ expression: {
+ validate: _index.assertNodeType("Expression")
+ }
+ }
+});
+
+_index2["default"]("DoExpression", {
+ visitor: ["body"],
+ aliases: ["Expression"],
+ fields: {
+ body: {
+ validate: _index.assertNodeType("BlockStatement")
+ }
+ }
+});
+
+_index2["default"]("ExportDefaultSpecifier", {
+ visitor: ["exported"],
+ aliases: ["ModuleSpecifier"],
+ fields: {
+ exported: {
+ validate: _index.assertNodeType("Identifier")
+ }
+ }
+});
+
+_index2["default"]("ExportNamespaceSpecifier", {
+ visitor: ["exported"],
+ aliases: ["ModuleSpecifier"],
+ fields: {
+ exported: {
+ validate: _index.assertNodeType("Identifier")
+ }
+ }
+});
+
+_index2["default"]("RestProperty", {
+ visitor: ["argument"],
+ aliases: ["UnaryLike"],
+ fields: {
+ argument: {
+ validate: _index.assertNodeType("LVal")
+ }
+ }
+});
+
+_index2["default"]("SpreadProperty", {
+ visitor: ["argument"],
+ aliases: ["UnaryLike"],
+ fields: {
+ argument: {
+ validate: _index.assertNodeType("Expression")
+ }
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-types/lib/definitions/flow.js b/node_modules/babel-types/lib/definitions/flow.js
new file mode 100644
index 0000000..fc6a7f9
--- /dev/null
+++ b/node_modules/babel-types/lib/definitions/flow.js
@@ -0,0 +1,311 @@
+"use strict";
+
+var _interopRequireDefault = require("babel-runtime/helpers/interop-require-default")["default"];
+
+var _index = require("./index");
+
+var _index2 = _interopRequireDefault(_index);
+
+_index2["default"]("AnyTypeAnnotation", {
+ aliases: ["Flow", "FlowBaseAnnotation"],
+ fields: {
+ // todo
+ }
+});
+
+_index2["default"]("ArrayTypeAnnotation", {
+ visitor: ["elementType"],
+ aliases: ["Flow"],
+ fields: {
+ // todo
+ }
+});
+
+_index2["default"]("BooleanTypeAnnotation", {
+ aliases: ["Flow", "FlowBaseAnnotation"],
+ fields: {
+ // todo
+ }
+});
+
+_index2["default"]("BooleanLiteralTypeAnnotation", {
+ aliases: ["Flow"],
+ fields: {}
+});
+
+_index2["default"]("NullLiteralTypeAnnotation", {
+ aliases: ["Flow", "FlowBaseAnnotation"],
+ fields: {}
+});
+
+_index2["default"]("ClassImplements", {
+ visitor: ["id", "typeParameters"],
+ aliases: ["Flow"],
+ fields: {
+ // todo
+ }
+});
+
+_index2["default"]("ClassProperty", {
+ visitor: ["key", "value", "typeAnnotation", "decorators"],
+ aliases: ["Flow", "Property"],
+ fields: {
+ // todo
+ }
+});
+
+_index2["default"]("DeclareClass", {
+ visitor: ["id", "typeParameters", "extends", "body"],
+ aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"],
+ fields: {
+ // todo
+ }
+});
+
+_index2["default"]("DeclareFunction", {
+ visitor: ["id"],
+ aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"],
+ fields: {
+ // todo
+ }
+});
+
+_index2["default"]("DeclareInterface", {
+ visitor: ["id", "typeParameters", "extends", "body"],
+ aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"],
+ fields: {
+ // todo
+ }
+});
+
+_index2["default"]("DeclareModule", {
+ visitor: ["id", "body"],
+ aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"],
+ fields: {
+ // todo
+ }
+});
+
+_index2["default"]("DeclareTypeAlias", {
+ visitor: ["id", "typeParameters", "right"],
+ aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"],
+ fields: {
+ // todo
+ }
+});
+
+_index2["default"]("DeclareVariable", {
+ visitor: ["id"],
+ aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"],
+ fields: {
+ // todo
+ }
+});
+
+_index2["default"]("ExistentialTypeParam", {
+ aliases: ["Flow"]
+});
+
+_index2["default"]("FunctionTypeAnnotation", {
+ visitor: ["typeParameters", "params", "rest", "returnType"],
+ aliases: ["Flow"],
+ fields: {
+ // todo
+ }
+});
+
+_index2["default"]("FunctionTypeParam", {
+ visitor: ["name", "typeAnnotation"],
+ aliases: ["Flow"],
+ fields: {
+ // todo
+ }
+});
+
+_index2["default"]("GenericTypeAnnotation", {
+ visitor: ["id", "typeParameters"],
+ aliases: ["Flow"],
+ fields: {
+ // todo
+ }
+});
+
+_index2["default"]("InterfaceExtends", {
+ visitor: ["id", "typeParameters"],
+ aliases: ["Flow"],
+ fields: {
+ // todo
+ }
+});
+
+_index2["default"]("InterfaceDeclaration", {
+ visitor: ["id", "typeParameters", "extends", "body"],
+ aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"],
+ fields: {
+ // todo
+ }
+});
+
+_index2["default"]("IntersectionTypeAnnotation", {
+ visitor: ["types"],
+ aliases: ["Flow"],
+ fields: {
+ // todo
+ }
+});
+
+_index2["default"]("MixedTypeAnnotation", {
+ aliases: ["Flow", "FlowBaseAnnotation"]
+});
+
+_index2["default"]("NullableTypeAnnotation", {
+ visitor: ["typeAnnotation"],
+ aliases: ["Flow"],
+ fields: {
+ // todo
+ }
+});
+
+_index2["default"]("NumericLiteralTypeAnnotation", {
+ aliases: ["Flow"],
+ fields: {
+ // todo
+ }
+});
+
+_index2["default"]("NumberTypeAnnotation", {
+ aliases: ["Flow", "FlowBaseAnnotation"],
+ fields: {
+ // todo
+ }
+});
+
+_index2["default"]("StringLiteralTypeAnnotation", {
+ aliases: ["Flow"],
+ fields: {
+ // todo
+ }
+});
+
+_index2["default"]("StringTypeAnnotation", {
+ aliases: ["Flow", "FlowBaseAnnotation"],
+ fields: {
+ // todo
+ }
+});
+
+_index2["default"]("ThisTypeAnnotation", {
+ aliases: ["Flow", "FlowBaseAnnotation"],
+ fields: {}
+});
+
+_index2["default"]("TupleTypeAnnotation", {
+ visitor: ["types"],
+ aliases: ["Flow"],
+ fields: {
+ // todo
+ }
+});
+
+_index2["default"]("TypeofTypeAnnotation", {
+ visitor: ["argument"],
+ aliases: ["Flow"],
+ fields: {
+ // todo
+ }
+});
+
+_index2["default"]("TypeAlias", {
+ visitor: ["id", "typeParameters", "right"],
+ aliases: ["Flow", "FlowDeclaration", "Statement", "Declaration"],
+ fields: {
+ // todo
+ }
+});
+
+_index2["default"]("TypeAnnotation", {
+ visitor: ["typeAnnotation"],
+ aliases: ["Flow"],
+ fields: {
+ // todo
+ }
+});
+
+_index2["default"]("TypeCastExpression", {
+ visitor: ["expression", "typeAnnotation"],
+ aliases: ["Flow", "ExpressionWrapper", "Expression"],
+ fields: {
+ // todo
+ }
+});
+
+_index2["default"]("TypeParameterDeclaration", {
+ visitor: ["params"],
+ aliases: ["Flow"],
+ fields: {
+ // todo
+ }
+});
+
+_index2["default"]("TypeParameterInstantiation", {
+ visitor: ["params"],
+ aliases: ["Flow"],
+ fields: {
+ // todo
+ }
+});
+
+_index2["default"]("ObjectTypeAnnotation", {
+ visitor: ["properties", "indexers", "callProperties"],
+ aliases: ["Flow"],
+ fields: {
+ // todo
+ }
+});
+
+_index2["default"]("ObjectTypeCallProperty", {
+ visitor: ["value"],
+ aliases: ["Flow", "UserWhitespacable"],
+ fields: {
+ // todo
+ }
+});
+
+_index2["default"]("ObjectTypeIndexer", {
+ visitor: ["id", "key", "value"],
+ aliases: ["Flow", "UserWhitespacable"],
+ fields: {
+ // todo
+ }
+});
+
+_index2["default"]("ObjectTypeProperty", {
+ visitor: ["key", "value"],
+ aliases: ["Flow", "UserWhitespacable"],
+ fields: {
+ // todo
+ }
+});
+
+_index2["default"]("QualifiedTypeIdentifier", {
+ visitor: ["id", "qualification"],
+ aliases: ["Flow"],
+ fields: {
+ // todo
+ }
+});
+
+_index2["default"]("UnionTypeAnnotation", {
+ visitor: ["types"],
+ aliases: ["Flow"],
+ fields: {
+ // todo
+ }
+});
+
+_index2["default"]("VoidTypeAnnotation", {
+ aliases: ["Flow", "FlowBaseAnnotation"],
+ fields: {
+ // todo
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-types/lib/definitions/index.js b/node_modules/babel-types/lib/definitions/index.js
new file mode 100644
index 0000000..0b6c5ed
--- /dev/null
+++ b/node_modules/babel-types/lib/definitions/index.js
@@ -0,0 +1,229 @@
+"use strict";
+
+var _getIterator = require("babel-runtime/core-js/get-iterator")["default"];
+
+var _interopRequireWildcard = require("babel-runtime/helpers/interop-require-wildcard")["default"];
+
+exports.__esModule = true;
+exports.assertEach = assertEach;
+exports.assertOneOf = assertOneOf;
+exports.assertNodeType = assertNodeType;
+exports.assertNodeOrValueType = assertNodeOrValueType;
+exports.assertValueType = assertValueType;
+exports.chain = chain;
+exports["default"] = defineType;
+
+var _index = require("../index");
+
+var t = _interopRequireWildcard(_index);
+
+var VISITOR_KEYS = {};
+exports.VISITOR_KEYS = VISITOR_KEYS;
+var ALIAS_KEYS = {};
+exports.ALIAS_KEYS = ALIAS_KEYS;
+var NODE_FIELDS = {};
+exports.NODE_FIELDS = NODE_FIELDS;
+var BUILDER_KEYS = {};
+exports.BUILDER_KEYS = BUILDER_KEYS;
+var DEPRECATED_KEYS = {};
+
+exports.DEPRECATED_KEYS = DEPRECATED_KEYS;
+function getType(val) {
+ if (Array.isArray(val)) {
+ return "array";
+ } else if (val === null) {
+ return "null";
+ } else if (val === undefined) {
+ return "undefined";
+ } else {
+ return typeof val;
+ }
+}
+
+function assertEach(callback) {
+ function validator(node, key, val) {
+ if (!Array.isArray(val)) return;
+
+ for (var i = 0; i < val.length; i++) {
+ callback(node, key + "[" + i + "]", val[i]);
+ }
+ }
+ validator.each = callback;
+ return validator;
+}
+
+function assertOneOf() {
+ for (var _len = arguments.length, vals = Array(_len), _key = 0; _key < _len; _key++) {
+ vals[_key] = arguments[_key];
+ }
+
+ function validate(node, key, val) {
+ if (vals.indexOf(val) < 0) {
+ throw new TypeError("Property " + key + " expected value to be one of " + JSON.stringify(vals) + " but got " + JSON.stringify(val));
+ }
+ }
+
+ validate.oneOf = vals;
+
+ return validate;
+}
+
+function assertNodeType() {
+ for (var _len2 = arguments.length, types = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
+ types[_key2] = arguments[_key2];
+ }
+
+ function validate(node, key, val) {
+ var valid = false;
+
+ for (var _iterator = types, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _getIterator(_iterator);;) {
+ var _ref;
+
+ if (_isArray) {
+ if (_i >= _iterator.length) break;
+ _ref = _iterator[_i++];
+ } else {
+ _i = _iterator.next();
+ if (_i.done) break;
+ _ref = _i.value;
+ }
+
+ var type = _ref;
+
+ if (t.is(type, val)) {
+ valid = true;
+ break;
+ }
+ }
+
+ if (!valid) {
+ throw new TypeError("Property " + key + " of " + node.type + " expected node to be of a type " + JSON.stringify(types) + " " + ("but instead got " + JSON.stringify(val && val.type)));
+ }
+ }
+
+ validate.oneOfNodeTypes = types;
+
+ return validate;
+}
+
+function assertNodeOrValueType() {
+ for (var _len3 = arguments.length, types = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
+ types[_key3] = arguments[_key3];
+ }
+
+ function validate(node, key, val) {
+ var valid = false;
+
+ for (var _iterator2 = types, _isArray2 = Array.isArray(_iterator2), _i2 = 0, _iterator2 = _isArray2 ? _iterator2 : _getIterator(_iterator2);;) {
+ var _ref2;
+
+ if (_isArray2) {
+ if (_i2 >= _iterator2.length) break;
+ _ref2 = _iterator2[_i2++];
+ } else {
+ _i2 = _iterator2.next();
+ if (_i2.done) break;
+ _ref2 = _i2.value;
+ }
+
+ var type = _ref2;
+
+ if (getType(val) === type || t.is(type, val)) {
+ valid = true;
+ break;
+ }
+ }
+
+ if (!valid) {
+ throw new TypeError("Property " + key + " of " + node.type + " expected node to be of a type " + JSON.stringify(types) + " " + ("but instead got " + JSON.stringify(val && val.type)));
+ }
+ }
+
+ validate.oneOfNodeOrValueTypes = types;
+
+ return validate;
+}
+
+function assertValueType(type) {
+ function validate(node, key, val) {
+ var valid = getType(val) === type;
+
+ if (!valid) {
+ throw new TypeError("Property " + key + " expected type of " + type + " but got " + getType(val));
+ }
+ }
+
+ validate.type = type;
+
+ return validate;
+}
+
+function chain() {
+ for (var _len4 = arguments.length, fns = Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
+ fns[_key4] = arguments[_key4];
+ }
+
+ function validate() {
+ for (var _iterator3 = fns, _isArray3 = Array.isArray(_iterator3), _i3 = 0, _iterator3 = _isArray3 ? _iterator3 : _getIterator(_iterator3);;) {
+ var _ref3;
+
+ if (_isArray3) {
+ if (_i3 >= _iterator3.length) break;
+ _ref3 = _iterator3[_i3++];
+ } else {
+ _i3 = _iterator3.next();
+ if (_i3.done) break;
+ _ref3 = _i3.value;
+ }
+
+ var fn = _ref3;
+
+ fn.apply(undefined, arguments);
+ }
+ }
+ validate.chainOf = fns;
+ return validate;
+}
+
+function defineType(type) {
+ var opts = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];
+
+ var inherits = opts.inherits && store[opts.inherits] || {};
+
+ opts.fields = opts.fields || inherits.fields || {};
+ opts.visitor = opts.visitor || inherits.visitor || [];
+ opts.aliases = opts.aliases || inherits.aliases || [];
+ opts.builder = opts.builder || inherits.builder || opts.visitor || [];
+
+ if (opts.deprecatedAlias) {
+ DEPRECATED_KEYS[opts.deprecatedAlias] = type;
+ }
+
+ // ensure all field keys are represented in `fields`
+
+ var _arr = opts.visitor.concat(opts.builder);
+
+ for (var _i4 = 0; _i4 < _arr.length; _i4++) {
+ var key = _arr[_i4];
+ opts.fields[key] = opts.fields[key] || {};
+ }
+
+ for (var key in opts.fields) {
+ var field = opts.fields[key];
+
+ if (field["default"] === undefined) {
+ field["default"] = null;
+ } else if (!field.validate) {
+ field.validate = assertValueType(getType(field["default"]));
+ }
+ }
+
+ VISITOR_KEYS[type] = opts.visitor;
+ BUILDER_KEYS[type] = opts.builder;
+ NODE_FIELDS[type] = opts.fields;
+ ALIAS_KEYS[type] = opts.aliases;
+
+ store[type] = opts;
+}
+
+var store = {};
\ No newline at end of file
diff --git a/node_modules/babel-types/lib/definitions/init.js b/node_modules/babel-types/lib/definitions/init.js
new file mode 100644
index 0000000..a3334fe
--- /dev/null
+++ b/node_modules/babel-types/lib/definitions/init.js
@@ -0,0 +1,15 @@
+"use strict";
+
+require("./index");
+
+require("./core");
+
+require("./es2015");
+
+require("./flow");
+
+require("./jsx");
+
+require("./misc");
+
+require("./experimental");
\ No newline at end of file
diff --git a/node_modules/babel-types/lib/definitions/jsx.js b/node_modules/babel-types/lib/definitions/jsx.js
new file mode 100644
index 0000000..56dfb0b
--- /dev/null
+++ b/node_modules/babel-types/lib/definitions/jsx.js
@@ -0,0 +1,137 @@
+"use strict";
+
+var _interopRequireDefault = require("babel-runtime/helpers/interop-require-default")["default"];
+
+var _index = require("./index");
+
+var _index2 = _interopRequireDefault(_index);
+
+_index2["default"]("JSXAttribute", {
+ visitor: ["name", "value"],
+ aliases: ["JSX", "Immutable"],
+ fields: {
+ name: {
+ validate: _index.assertNodeType("JSXIdentifier", "JSXNamespacedName")
+ },
+ value: {
+ optional: true,
+ validate: _index.assertNodeType("JSXElement", "StringLiteral", "JSXExpressionContainer")
+ }
+ }
+});
+
+_index2["default"]("JSXClosingElement", {
+ visitor: ["name"],
+ aliases: ["JSX", "Immutable"],
+ fields: {
+ name: {
+ validate: _index.assertNodeType("JSXIdentifier", "JSXMemberExpression")
+ }
+ }
+});
+
+_index2["default"]("JSXElement", {
+ builder: ["openingElement", "closingElement", "children", "selfClosing"],
+ visitor: ["openingElement", "children", "closingElement"],
+ aliases: ["JSX", "Immutable", "Expression"],
+ fields: {
+ openingElement: {
+ validate: _index.assertNodeType("JSXOpeningElement")
+ },
+ closingElement: {
+ optional: true,
+ validate: _index.assertNodeType("JSXClosingElement")
+ },
+ children: {
+ validate: _index.chain(_index.assertValueType("array"), _index.assertEach(_index.assertNodeType("JSXText", "JSXExpressionContainer", "JSXElement")))
+ }
+ }
+});
+
+_index2["default"]("JSXEmptyExpression", {
+ aliases: ["JSX", "Expression"]
+});
+
+_index2["default"]("JSXExpressionContainer", {
+ visitor: ["expression"],
+ aliases: ["JSX", "Immutable"],
+ fields: {
+ expression: {
+ validate: _index.assertNodeType("Expression")
+ }
+ }
+});
+
+_index2["default"]("JSXIdentifier", {
+ builder: ["name"],
+ aliases: ["JSX", "Expression"],
+ fields: {
+ name: {
+ validate: _index.assertValueType("string")
+ }
+ }
+});
+
+_index2["default"]("JSXMemberExpression", {
+ visitor: ["object", "property"],
+ aliases: ["JSX", "Expression"],
+ fields: {
+ object: {
+ validate: _index.assertNodeType("JSXMemberExpression", "JSXIdentifier")
+ },
+ property: {
+ validate: _index.assertNodeType("JSXIdentifier")
+ }
+ }
+});
+
+_index2["default"]("JSXNamespacedName", {
+ visitor: ["namespace", "name"],
+ aliases: ["JSX"],
+ fields: {
+ namespace: {
+ validate: _index.assertNodeType("JSXIdentifier")
+ },
+ name: {
+ validate: _index.assertNodeType("JSXIdentifier")
+ }
+ }
+});
+
+_index2["default"]("JSXOpeningElement", {
+ builder: ["name", "attributes", "selfClosing"],
+ visitor: ["name", "attributes"],
+ aliases: ["JSX", "Immutable"],
+ fields: {
+ name: {
+ validate: _index.assertNodeType("JSXIdentifier", "JSXMemberExpression")
+ },
+ selfClosing: {
+ "default": false,
+ validate: _index.assertValueType("boolean")
+ },
+ attributes: {
+ validate: _index.chain(_index.assertValueType("array"), _index.assertEach(_index.assertNodeType("JSXAttribute", "JSXSpreadAttribute")))
+ }
+ }
+});
+
+_index2["default"]("JSXSpreadAttribute", {
+ visitor: ["argument"],
+ aliases: ["JSX"],
+ fields: {
+ argument: {
+ validate: _index.assertNodeType("Expression")
+ }
+ }
+});
+
+_index2["default"]("JSXText", {
+ aliases: ["JSX"],
+ builder: ["value"],
+ fields: {
+ value: {
+ validate: _index.assertValueType("string")
+ }
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-types/lib/definitions/misc.js b/node_modules/babel-types/lib/definitions/misc.js
new file mode 100644
index 0000000..062e59f
--- /dev/null
+++ b/node_modules/babel-types/lib/definitions/misc.js
@@ -0,0 +1,21 @@
+"use strict";
+
+var _interopRequireDefault = require("babel-runtime/helpers/interop-require-default")["default"];
+
+var _index = require("./index");
+
+var _index2 = _interopRequireDefault(_index);
+
+_index2["default"]("Noop", {
+ visitor: []
+});
+
+_index2["default"]("ParenthesizedExpression", {
+ visitor: ["expression"],
+ aliases: ["Expression", "ExpressionWrapper"],
+ fields: {
+ expression: {
+ validate: _index.assertNodeType("Expression")
+ }
+ }
+});
\ No newline at end of file
diff --git a/node_modules/babel-types/lib/flow.js b/node_modules/babel-types/lib/flow.js
new file mode 100644
index 0000000..eb34b9f
--- /dev/null
+++ b/node_modules/babel-types/lib/flow.js
@@ -0,0 +1,129 @@
+"use strict";
+
+var _interopRequireWildcard = require("babel-runtime/helpers/interop-require-wildcard")["default"];
+
+exports.__esModule = true;
+exports.createUnionTypeAnnotation = createUnionTypeAnnotation;
+exports.removeTypeDuplicates = removeTypeDuplicates;
+exports.createTypeAnnotationBasedOnTypeof = createTypeAnnotationBasedOnTypeof;
+
+var _index = require("./index");
+
+var t = _interopRequireWildcard(_index);
+
+/**
+ * Takes an array of `types` and flattens them, removing duplicates and
+ * returns a `UnionTypeAnnotation` node containg them.
+ */
+
+function createUnionTypeAnnotation(types) {
+ var flattened = removeTypeDuplicates(types);
+
+ if (flattened.length === 1) {
+ return flattened[0];
+ } else {
+ return t.unionTypeAnnotation(flattened);
+ }
+}
+
+/**
+ * Dedupe type annotations.
+ */
+
+function removeTypeDuplicates(nodes) {
+ var generics = {};
+ var bases = {};
+
+ // store union type groups to circular references
+ var typeGroups = [];
+
+ var types = [];
+
+ for (var i = 0; i < nodes.length; i++) {
+ var node = nodes[i];
+ if (!node) continue;
+
+ // detect duplicates
+ if (types.indexOf(node) >= 0) {
+ continue;
+ }
+
+ // this type matches anything
+ if (t.isAnyTypeAnnotation(node)) {
+ return [node];
+ }
+
+ //
+ if (t.isFlowBaseAnnotation(node)) {
+ bases[node.type] = node;
+ continue;
+ }
+
+ //
+ if (t.isUnionTypeAnnotation(node)) {
+ if (typeGroups.indexOf(node.types) < 0) {
+ nodes = nodes.concat(node.types);
+ typeGroups.push(node.types);
+ }
+ continue;
+ }
+
+ // find a matching generic type and merge and deduplicate the type parameters
+ if (t.isGenericTypeAnnotation(node)) {
+ var _name = node.id.name;
+
+ if (generics[_name]) {
+ var existing = generics[_name];
+ if (existing.typeParameters) {
+ if (node.typeParameters) {
+ existing.typeParameters.params = removeTypeDuplicates(existing.typeParameters.params.concat(node.typeParameters.params));
+ }
+ } else {
+ existing = node.typeParameters;
+ }
+ } else {
+ generics[_name] = node;
+ }
+
+ continue;
+ }
+
+ types.push(node);
+ }
+
+ // add back in bases
+ for (var type in bases) {
+ types.push(bases[type]);
+ }
+
+ // add back in generics
+ for (var _name2 in generics) {
+ types.push(generics[_name2]);
+ }
+
+ return types;
+}
+
+/**
+ * Create a type anotation based on typeof expression.
+ */
+
+function createTypeAnnotationBasedOnTypeof(type) {
+ if (type === "string") {
+ return t.stringTypeAnnotation();
+ } else if (type === "number") {
+ return t.numberTypeAnnotation();
+ } else if (type === "undefined") {
+ return t.voidTypeAnnotation();
+ } else if (type === "boolean") {
+ return t.booleanTypeAnnotation();
+ } else if (type === "function") {
+ return t.genericTypeAnnotation(t.identifier("Function"));
+ } else if (type === "object") {
+ return t.genericTypeAnnotation(t.identifier("Object"));
+ } else if (type === "symbol") {
+ return t.genericTypeAnnotation(t.identifier("Symbol"));
+ } else {
+ throw new Error("Invalid typeof value");
+ }
+}
\ No newline at end of file
diff --git a/node_modules/babel-types/lib/index.js b/node_modules/babel-types/lib/index.js
new file mode 100644
index 0000000..eea5dd2
--- /dev/null
+++ b/node_modules/babel-types/lib/index.js
@@ -0,0 +1,544 @@
+"use strict";
+
+var _Object$keys = require("babel-runtime/core-js/object/keys")["default"];
+
+var _getIterator = require("babel-runtime/core-js/get-iterator")["default"];
+
+var _interopRequireDefault = require("babel-runtime/helpers/interop-require-default")["default"];
+
+var _interopRequireWildcard = require("babel-runtime/helpers/interop-require-wildcard")["default"];
+
+var _defaults = require("babel-runtime/helpers/defaults")["default"];
+
+var _interopExportWildcard = require("babel-runtime/helpers/interop-export-wildcard")["default"];
+
+exports.__esModule = true;
+exports.is = is;
+exports.isType = isType;
+exports.validate = validate;
+exports.shallowEqual = shallowEqual;
+exports.appendToMemberExpression = appendToMemberExpression;
+exports.prependToMemberExpression = prependToMemberExpression;
+exports.ensureBlock = ensureBlock;
+exports.clone = clone;
+exports.cloneWithoutLoc = cloneWithoutLoc;
+exports.cloneDeep = cloneDeep;
+exports.buildMatchMemberExpression = buildMatchMemberExpression;
+exports.removeComments = removeComments;
+exports.inheritsComments = inheritsComments;
+exports.inheritTrailingComments = inheritTrailingComments;
+exports.inheritLeadingComments = inheritLeadingComments;
+exports.inheritInnerComments = inheritInnerComments;
+exports.inherits = inherits;
+exports.assertNode = assertNode;
+exports.isNode = isNode;
+
+var _toFastProperties = require("to-fast-properties");
+
+var _toFastProperties2 = _interopRequireDefault(_toFastProperties);
+
+var _lodashArrayCompact = require("lodash/array/compact");
+
+var _lodashArrayCompact2 = _interopRequireDefault(_lodashArrayCompact);
+
+var _lodashLangClone = require("lodash/lang/clone");
+
+var _lodashLangClone2 = _interopRequireDefault(_lodashLangClone);
+
+var _lodashCollectionEach = require("lodash/collection/each");
+
+var _lodashCollectionEach2 = _interopRequireDefault(_lodashCollectionEach);
+
+var _lodashArrayUniq = require("lodash/array/uniq");
+
+var _lodashArrayUniq2 = _interopRequireDefault(_lodashArrayUniq);
+
+require("./definitions/init");
+
+var _definitions = require("./definitions");
+
+var _react2 = require("./react");
+
+var _react = _interopRequireWildcard(_react2);
+
+var t = exports;
+
+/**
+ * Registers `is[Type]` and `assert[Type]` generated functions for a given `type`.
+ * Pass `skipAliasCheck` to force it to directly compare `node.type` with `type`.
+ */
+
+function registerType(type) {
+ var is = t["is" + type] = function (node, opts) {
+ return t.is(type, node, opts);
+ };
+
+ t["assert" + type] = function (node, opts) {
+ opts = opts || {};
+ if (!is(node, opts)) {
+ throw new Error("Expected type " + JSON.stringify(type) + " with option " + JSON.stringify(opts));
+ }
+ };
+}
+
+//
+
+var _constants = require("./constants");
+
+_defaults(exports, _interopExportWildcard(_constants, _defaults));
+
+exports.VISITOR_KEYS = _definitions.VISITOR_KEYS;
+exports.ALIAS_KEYS = _definitions.ALIAS_KEYS;
+exports.NODE_FIELDS = _definitions.NODE_FIELDS;
+exports.BUILDER_KEYS = _definitions.BUILDER_KEYS;
+exports.DEPRECATED_KEYS = _definitions.DEPRECATED_KEYS;
+exports.react = _react;
+
+/**
+ * Registers `is[Type]` and `assert[Type]` for all types.
+ */
+
+for (var type in t.VISITOR_KEYS) {
+ registerType(type);
+}
+
+/**
+ * Flip `ALIAS_KEYS` for faster access in the reverse direction.
+ */
+
+t.FLIPPED_ALIAS_KEYS = {};
+
+_lodashCollectionEach2["default"](t.ALIAS_KEYS, function (aliases, type) {
+ _lodashCollectionEach2["default"](aliases, function (alias) {
+ var types = t.FLIPPED_ALIAS_KEYS[alias] = t.FLIPPED_ALIAS_KEYS[alias] || [];
+ types.push(type);
+ });
+});
+
+/**
+ * Registers `is[Alias]` and `assert[Alias]` functions for all aliases.
+ */
+
+_lodashCollectionEach2["default"](t.FLIPPED_ALIAS_KEYS, function (types, type) {
+ t[type.toUpperCase() + "_TYPES"] = types;
+ registerType(type);
+});
+
+var TYPES = _Object$keys(t.VISITOR_KEYS).concat(_Object$keys(t.FLIPPED_ALIAS_KEYS)).concat(_Object$keys(t.DEPRECATED_KEYS));
+
+exports.TYPES = TYPES;
+/**
+ * Returns whether `node` is of given `type`.
+ *
+ * For better performance, use this instead of `is[Type]` when `type` is unknown.
+ * Optionally, pass `skipAliasCheck` to directly compare `node.type` with `type`.
+ */
+
+function is(type, node, opts) {
+ if (!node) return false;
+
+ var matches = isType(node.type, type);
+ if (!matches) return false;
+
+ if (typeof opts === "undefined") {
+ return true;
+ } else {
+ return t.shallowEqual(node, opts);
+ }
+}
+
+/**
+ * Test if a `nodeType` is a `targetType` or if `targetType` is an alias of `nodeType`.
+ */
+
+function isType(nodeType, targetType) {
+ if (nodeType === targetType) return true;
+
+ var aliases = t.FLIPPED_ALIAS_KEYS[targetType];
+ if (aliases) {
+ if (aliases[0] === nodeType) return true;
+
+ for (var _iterator = aliases, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _getIterator(_iterator);;) {
+ var _ref;
+
+ if (_isArray) {
+ if (_i >= _iterator.length) break;
+ _ref = _iterator[_i++];
+ } else {
+ _i = _iterator.next();
+ if (_i.done) break;
+ _ref = _i.value;
+ }
+
+ var alias = _ref;
+
+ if (nodeType === alias) return true;
+ }
+ }
+
+ return false;
+}
+
+/**
+ * Description
+ */
+
+_lodashCollectionEach2["default"](t.BUILDER_KEYS, function (keys, type) {
+ function builder() {
+ if (arguments.length > keys.length) {
+ throw new Error("t." + type + ": Too many arguments passed. Received " + arguments.length + " but can receive " + ("no more than " + keys.length));
+ }
+
+ var node = {};
+ node.type = type;
+
+ var i = 0;
+
+ var _arr = keys;
+ for (var _i2 = 0; _i2 < _arr.length; _i2++) {
+ var key = _arr[_i2];
+ var field = t.NODE_FIELDS[type][key];
+
+ var arg = arguments[i++];
+ if (arg === undefined) arg = _lodashLangClone2["default"](field["default"]);
+
+ node[key] = arg;
+ }
+
+ for (var key in node) {
+ validate(node, key, node[key]);
+ }
+
+ return node;
+ }
+
+ t[type] = builder;
+ t[type[0].toLowerCase() + type.slice(1)] = builder;
+});
+
+/**
+ * Description
+ */
+
+var _loop = function (type) {
+ var proxy = function proxy(fn) {
+ return function () {
+ console.trace("The node type " + type + " has been renamed to " + newType);
+ return fn.apply(this, arguments);
+ };
+ };
+
+ var newType = t.DEPRECATED_KEYS[type];
+
+ t[type] = t[type[0].toLowerCase() + type.slice(1)] = proxy(t[newType]);
+ t["is" + type] = proxy(t["is" + newType]);
+ t["assert" + type] = proxy(t["assert" + newType]);
+};
+
+for (var type in t.DEPRECATED_KEYS) {
+ _loop(type);
+}
+
+/**
+ * Description
+ */
+
+function validate(node, key, val) {
+ if (!node) return;
+
+ var fields = t.NODE_FIELDS[node.type];
+ if (!fields) return;
+
+ var field = fields[key];
+ if (!field || !field.validate) return;
+ if (field.optional && val == null) return;
+
+ field.validate(node, key, val);
+}
+
+/**
+ * Test if an object is shallowly equal.
+ */
+
+function shallowEqual(actual, expected) {
+ var keys = _Object$keys(expected);
+
+ var _arr2 = keys;
+ for (var _i3 = 0; _i3 < _arr2.length; _i3++) {
+ var key = _arr2[_i3];
+ if (actual[key] !== expected[key]) {
+ return false;
+ }
+ }
+
+ return true;
+}
+
+/**
+ * Append a node to a member expression.
+ */
+
+function appendToMemberExpression(member, append, computed) {
+ member.object = t.memberExpression(member.object, member.property, member.computed);
+ member.property = append;
+ member.computed = !!computed;
+ return member;
+}
+
+/**
+ * Prepend a node to a member expression.
+ */
+
+function prependToMemberExpression(member, prepend) {
+ member.object = t.memberExpression(prepend, member.object);
+ return member;
+}
+
+/**
+ * Ensure the `key` (defaults to "body") of a `node` is a block.
+ * Casting it to a block if it is not.
+ */
+
+function ensureBlock(node) {
+ var key = arguments.length <= 1 || arguments[1] === undefined ? "body" : arguments[1];
+
+ return node[key] = t.toBlock(node[key], node);
+}
+
+/**
+ * Create a shallow clone of a `node` excluding `_private` properties.
+ */
+
+function clone(node) {
+ var newNode = {};
+ for (var key in node) {
+ if (key[0] === "_") continue;
+ newNode[key] = node[key];
+ }
+ return newNode;
+}
+
+/**
+ * Create a shallow clone of a `node` excluding `_private` and location properties.
+ */
+
+function cloneWithoutLoc(node) {
+ var newNode = clone(node);
+ delete newNode.loc;
+ return newNode;
+}
+
+/**
+ * Create a deep clone of a `node` and all of it's child nodes
+ * exluding `_private` properties.
+ */
+
+function cloneDeep(node) {
+ var newNode = {};
+
+ for (var key in node) {
+ if (key[0] === "_") continue;
+
+ var val = node[key];
+
+ if (val) {
+ if (val.type) {
+ val = t.cloneDeep(val);
+ } else if (Array.isArray(val)) {
+ val = val.map(t.cloneDeep);
+ }
+ }
+
+ newNode[key] = val;
+ }
+
+ return newNode;
+}
+
+/**
+ * Build a function that when called will return whether or not the
+ * input `node` `MemberExpression` matches the input `match`.
+ *
+ * For example, given the match `React.createClass` it would match the
+ * parsed nodes of `React.createClass` and `React["createClass"]`.
+ */
+
+function buildMatchMemberExpression(match, allowPartial) {
+ var parts = match.split(".");
+
+ return function (member) {
+ // not a member expression
+ if (!t.isMemberExpression(member)) return false;
+
+ var search = [member];
+ var i = 0;
+
+ while (search.length) {
+ var node = search.shift();
+
+ if (allowPartial && i === parts.length) {
+ return true;
+ }
+
+ if (t.isIdentifier(node)) {
+ // this part doesn't match
+ if (parts[i] !== node.name) return false;
+ } else if (t.isStringLiteral(node)) {
+ // this part doesn't match
+ if (parts[i] !== node.value) return false;
+ } else if (t.isMemberExpression(node)) {
+ if (node.computed && !t.isStringLiteral(node.property)) {
+ // we can't deal with this
+ return false;
+ } else {
+ search.push(node.object);
+ search.push(node.property);
+ continue;
+ }
+ } else {
+ // we can't deal with this
+ return false;
+ }
+
+ // too many parts
+ if (++i > parts.length) {
+ return false;
+ }
+ }
+
+ return true;
+ };
+}
+
+/**
+ * Remove comment properties from a node.
+ */
+
+function removeComments(node) {
+ for (var _iterator2 = t.COMMENT_KEYS, _isArray2 = Array.isArray(_iterator2), _i4 = 0, _iterator2 = _isArray2 ? _iterator2 : _getIterator(_iterator2);;) {
+ var _ref2;
+
+ if (_isArray2) {
+ if (_i4 >= _iterator2.length) break;
+ _ref2 = _iterator2[_i4++];
+ } else {
+ _i4 = _iterator2.next();
+ if (_i4.done) break;
+ _ref2 = _i4.value;
+ }
+
+ var key = _ref2;
+
+ delete node[key];
+ }
+ return node;
+}
+
+/**
+ * Inherit all unique comments from `parent` node to `child` node.
+ */
+
+function inheritsComments(child, parent) {
+ inheritTrailingComments(child, parent);
+ inheritLeadingComments(child, parent);
+ inheritInnerComments(child, parent);
+ return child;
+}
+
+function inheritTrailingComments(child, parent) {
+ _inheritComments("trailingComments", child, parent);
+}
+
+function inheritLeadingComments(child, parent) {
+ _inheritComments("leadingComments", child, parent);
+}
+
+function inheritInnerComments(child, parent) {
+ _inheritComments("innerComments", child, parent);
+}
+
+function _inheritComments(key, child, parent) {
+ if (child && parent) {
+ child[key] = _lodashArrayUniq2["default"](_lodashArrayCompact2["default"]([].concat(child[key], parent[key])));
+ }
+}
+
+// Can't use import because of cyclic dependency between babel-traverse
+// and this module (babel-types). This require needs to appear after
+// we export the TYPES constant.
+var traverse = require("babel-traverse")["default"];
+
+/**
+ * Inherit all contextual properties from `parent` node to `child` node.
+ */
+
+function inherits(child, parent) {
+ if (!child || !parent) return child;
+
+ // optionally inherit specific properties if not null
+ var _arr3 = t.INHERIT_KEYS.optional;
+ for (var _i5 = 0; _i5 < _arr3.length; _i5++) {
+ var key = _arr3[_i5];
+ if (child[key] == null) {
+ child[key] = parent[key];
+ }
+ }
+
+ // force inherit "private" properties
+ for (var key in parent) {
+ if (key[0] === "_") child[key] = parent[key];
+ }
+
+ // force inherit select properties
+ var _arr4 = t.INHERIT_KEYS.force;
+ for (var _i6 = 0; _i6 < _arr4.length; _i6++) {
+ var key = _arr4[_i6];
+ child[key] = parent[key];
+ }
+
+ t.inheritsComments(child, parent);
+ traverse.copyCache(parent, child);
+
+ return child;
+}
+
+/**
+ * TODO
+ */
+
+function assertNode(node) {
+ if (!isNode(node)) {
+ // $FlowFixMe
+ throw new TypeError("Not a valid node " + (node && node.type));
+ }
+}
+
+/**
+ * TODO
+ */
+
+function isNode(node) {
+ return !!(node && _definitions.VISITOR_KEYS[node.type]);
+}
+
+// Optimize property access.
+_toFastProperties2["default"](t);
+_toFastProperties2["default"](t.VISITOR_KEYS);
+
+//
+
+var _retrievers = require("./retrievers");
+
+_defaults(exports, _interopExportWildcard(_retrievers, _defaults));
+
+var _validators = require("./validators");
+
+_defaults(exports, _interopExportWildcard(_validators, _defaults));
+
+var _converters = require("./converters");
+
+_defaults(exports, _interopExportWildcard(_converters, _defaults));
+
+var _flow = require("./flow");
+
+_defaults(exports, _interopExportWildcard(_flow, _defaults));
\ No newline at end of file
diff --git a/node_modules/babel-types/lib/react.js b/node_modules/babel-types/lib/react.js
new file mode 100644
index 0000000..148aa7c
--- /dev/null
+++ b/node_modules/babel-types/lib/react.js
@@ -0,0 +1,84 @@
+"use strict";
+
+var _interopRequireWildcard = require("babel-runtime/helpers/interop-require-wildcard")["default"];
+
+exports.__esModule = true;
+exports.isCompatTag = isCompatTag;
+exports.buildChildren = buildChildren;
+
+var _index = require("./index");
+
+var t = _interopRequireWildcard(_index);
+
+var isReactComponent = t.buildMatchMemberExpression("React.Component");
+
+exports.isReactComponent = isReactComponent;
+
+function isCompatTag(tagName) {
+ return !!tagName && /^[a-z]|\-/.test(tagName);
+}
+
+function cleanJSXElementLiteralChild(child, args) {
+ var lines = child.value.split(/\r\n|\n|\r/);
+
+ var lastNonEmptyLine = 0;
+
+ for (var i = 0; i < lines.length; i++) {
+ if (lines[i].match(/[^ \t]/)) {
+ lastNonEmptyLine = i;
+ }
+ }
+
+ var str = "";
+
+ for (var i = 0; i < lines.length; i++) {
+ var line = lines[i];
+
+ var isFirstLine = i === 0;
+ var isLastLine = i === lines.length - 1;
+ var isLastNonEmptyLine = i === lastNonEmptyLine;
+
+ // replace rendered whitespace tabs with spaces
+ var trimmedLine = line.replace(/\t/g, " ");
+
+ // trim whitespace touching a newline
+ if (!isFirstLine) {
+ trimmedLine = trimmedLine.replace(/^[ ]+/, "");
+ }
+
+ // trim whitespace touching an endline
+ if (!isLastLine) {
+ trimmedLine = trimmedLine.replace(/[ ]+$/, "");
+ }
+
+ if (trimmedLine) {
+ if (!isLastNonEmptyLine) {
+ trimmedLine += " ";
+ }
+
+ str += trimmedLine;
+ }
+ }
+
+ if (str) args.push(t.stringLiteral(str));
+}
+
+function buildChildren(node) {
+ var elems = [];
+
+ for (var i = 0; i < node.children.length; i++) {
+ var child = node.children[i];
+
+ if (t.isJSXText(child)) {
+ cleanJSXElementLiteralChild(child, elems);
+ continue;
+ }
+
+ if (t.isJSXExpressionContainer(child)) child = child.expression;
+ if (t.isJSXEmptyExpression(child)) continue;
+
+ elems.push(child);
+ }
+
+ return elems;
+}
\ No newline at end of file
diff --git a/node_modules/babel-types/lib/retrievers.js b/node_modules/babel-types/lib/retrievers.js
new file mode 100644
index 0000000..f04124a
--- /dev/null
+++ b/node_modules/babel-types/lib/retrievers.js
@@ -0,0 +1,118 @@
+"use strict";
+
+var _Object$create = require("babel-runtime/core-js/object/create")["default"];
+
+var _interopRequireWildcard = require("babel-runtime/helpers/interop-require-wildcard")["default"];
+
+exports.__esModule = true;
+exports.getBindingIdentifiers = getBindingIdentifiers;
+exports.getOuterBindingIdentifiers = getOuterBindingIdentifiers;
+
+var _index = require("./index");
+
+var t = _interopRequireWildcard(_index);
+
+/**
+ * Return a list of binding identifiers associated with the input `node`.
+ */
+
+function getBindingIdentifiers(node, duplicates, outerOnly) {
+ var search = [].concat(node);
+ var ids = _Object$create(null);
+
+ while (search.length) {
+ var id = search.shift();
+ if (!id) continue;
+
+ var keys = t.getBindingIdentifiers.keys[id.type];
+
+ if (t.isIdentifier(id)) {
+ if (duplicates) {
+ var _ids = ids[id.name] = ids[id.name] || [];
+ _ids.push(id);
+ } else {
+ ids[id.name] = id;
+ }
+ continue;
+ }
+
+ if (t.isExportDeclaration(id)) {
+ if (t.isDeclaration(node.declaration)) {
+ search.push(node.declaration);
+ }
+ continue;
+ }
+
+ if (outerOnly) {
+ if (t.isFunctionDeclaration(id)) {
+ search.push(id.id);
+ continue;
+ }
+
+ if (t.isFunctionExpression(id)) {
+ continue;
+ }
+ }
+
+ if (keys) {
+ for (var i = 0; i < keys.length; i++) {
+ var key = keys[i];
+ if (id[key]) {
+ search = search.concat(id[key]);
+ }
+ }
+ }
+ }
+
+ return ids;
+}
+
+/**
+ * Mapping of types to their identifier keys.
+ */
+
+getBindingIdentifiers.keys = {
+ DeclareClass: ["id"],
+ DeclareFunction: ["id"],
+ DeclareModule: ["id"],
+ DeclareVariable: ["id"],
+ InterfaceDeclaration: ["id"],
+ TypeAlias: ["id"],
+
+ CatchClause: ["param"],
+ LabeledStatement: ["label"],
+ UnaryExpression: ["argument"],
+ AssignmentExpression: ["left"],
+
+ ImportSpecifier: ["local"],
+ ImportNamespaceSpecifier: ["local"],
+ ImportDefaultSpecifier: ["local"],
+ ImportDeclaration: ["specifiers"],
+
+ ExportSpecifier: ["exported"],
+ ExportNamespaceSpecifier: ["exported"],
+ ExportDefaultSpecifier: ["exported"],
+
+ FunctionDeclaration: ["id", "params"],
+ FunctionExpression: ["id", "params"],
+
+ ClassDeclaration: ["id"],
+ ClassExpression: ["id"],
+
+ RestElement: ["argument"],
+ UpdateExpression: ["argument"],
+
+ RestProperty: ["argument"],
+ ObjectProperty: ["value"],
+
+ AssignmentPattern: ["left"],
+ ArrayPattern: ["elements"],
+ ObjectPattern: ["properties"],
+
+ VariableDeclaration: ["declarations"],
+ VariableDeclarator: ["id"]
+};
+
+function getOuterBindingIdentifiers(node, duplicates) {
+ return getBindingIdentifiers(node, duplicates, true);
+}
\ No newline at end of file
diff --git a/node_modules/babel-types/lib/validators.js b/node_modules/babel-types/lib/validators.js
new file mode 100644
index 0000000..eda31e9
--- /dev/null
+++ b/node_modules/babel-types/lib/validators.js
@@ -0,0 +1,261 @@
+/* eslint indent: 0 */
+
+"use strict";
+
+var _interopRequireDefault = require("babel-runtime/helpers/interop-require-default")["default"];
+
+var _interopRequireWildcard = require("babel-runtime/helpers/interop-require-wildcard")["default"];
+
+exports.__esModule = true;
+exports.isBinding = isBinding;
+exports.isReferenced = isReferenced;
+exports.isValidIdentifier = isValidIdentifier;
+exports.isLet = isLet;
+exports.isBlockScoped = isBlockScoped;
+exports.isVar = isVar;
+exports.isSpecifierDefault = isSpecifierDefault;
+exports.isScope = isScope;
+exports.isImmutable = isImmutable;
+
+var _retrievers = require("./retrievers");
+
+var _esutils = require("esutils");
+
+var _esutils2 = _interopRequireDefault(_esutils);
+
+var _index = require("./index");
+
+var t = _interopRequireWildcard(_index);
+
+var _constants = require("./constants");
+
+/**
+ * Check if the input `node` is a binding identifier.
+ */
+
+function isBinding(node, parent) {
+ var keys = _retrievers.getBindingIdentifiers.keys[parent.type];
+ if (keys) {
+ for (var i = 0; i < keys.length; i++) {
+ var key = keys[i];
+ var val = parent[key];
+ if (Array.isArray(val)) {
+ if (val.indexOf(node) >= 0) return true;
+ } else {
+ if (val === node) return true;
+ }
+ }
+ }
+
+ return false;
+}
+
+/**
+ * Check if the input `node` is a reference to a bound variable.
+ */
+
+function isReferenced(node, parent) {
+ switch (parent.type) {
+ // yes: object::NODE
+ // yes: NODE::callee
+ case "BindExpression":
+ return parent.object === node || parent.callee === node;
+
+ // yes: PARENT[NODE]
+ // yes: NODE.child
+ // no: parent.NODE
+ case "MemberExpression":
+ case "JSXMemberExpression":
+ if (parent.property === node && parent.computed) {
+ return true;
+ } else if (parent.object === node) {
+ return true;
+ } else {
+ return false;
+ }
+
+ // no: new.NODE
+ // no: NODE.target
+ case "MetaProperty":
+ return false;
+
+ // yes: { [NODE]: "" }
+ // yes: { NODE }
+ // no: { NODE: "" }
+ case "ObjectProperty":
+ if (parent.key === node) {
+ return parent.computed;
+ }
+
+ // no: let NODE = init;
+ // yes: let id = NODE;
+ case "VariableDeclarator":
+ return parent.id !== node;
+
+ // no: function NODE() {}
+ // no: function foo(NODE) {}
+ case "ArrowFunctionExpression":
+ case "FunctionDeclaration":
+ case "FunctionExpression":
+ var _arr = parent.params;
+
+ for (var _i = 0; _i < _arr.length; _i++) {
+ var param = _arr[_i];
+ if (param === node) return false;
+ }
+
+ return parent.id !== node;
+
+ // no: export { foo as NODE };
+ // yes: export { NODE as foo };
+ // no: export { NODE as foo } from "foo";
+ case "ExportSpecifier":
+ if (parent.source) {
+ return false;
+ } else {
+ return parent.local === node;
+ }
+
+ // no: export NODE from "foo";
+ // no: export * as NODE from "foo";
+ case "ExportNamespaceSpecifier":
+ case "ExportDefaultSpecifier":
+ return false;
+
+ // no:
+ case "JSXAttribute":
+ return parent.name !== node;
+
+ // no: class { NODE = value; }
+ // yes: class { key = NODE; }
+ case "ClassProperty":
+ return parent.value === node;
+
+ // no: import NODE from "foo";
+ // no: import * as NODE from "foo";
+ // no: import { NODE as foo } from "foo";
+ // no: import { foo as NODE } from "foo";
+ // no: import NODE from "bar";
+ case "ImportDefaultSpecifier":
+ case "ImportNamespaceSpecifier":
+ case "ImportSpecifier":
+ return false;
+
+ // no: class NODE {}
+ case "ClassDeclaration":
+ case "ClassExpression":
+ return parent.id !== node;
+
+ // yes: class { [NODE](){} }
+ case "ClassMethod":
+ case "ObjectMethod":
+ return parent.key === node && parent.computed;
+
+ // no: NODE: for (;;) {}
+ case "LabeledStatement":
+ return false;
+
+ // no: try {} catch (NODE) {}
+ case "CatchClause":
+ return parent.param !== node;
+
+ // no: function foo(...NODE) {}
+ case "RestElement":
+ return false;
+
+ // yes: left = NODE;
+ // no: NODE = right;
+ case "AssignmentExpression":
+ return parent.right === node;
+
+ // no: [NODE = foo] = [];
+ // yes: [foo = NODE] = [];
+ case "AssignmentPattern":
+ return parent.right === node;
+
+ // no: [NODE] = [];
+ // no: ({ NODE }) = [];
+ case "ObjectPattern":
+ case "ArrayPattern":
+ return false;
+ }
+
+ return true;
+}
+
+/**
+ * Check if the input `name` is a valid identifier name
+ * and isn't a reserved word.
+ */
+
+function isValidIdentifier(name) {
+ if (typeof name !== "string" || _esutils2["default"].keyword.isReservedWordES6(name, true)) {
+ return false;
+ } else {
+ return _esutils2["default"].keyword.isIdentifierNameES6(name);
+ }
+}
+
+/**
+ * Check if the input `node` is a `let` variable declaration.
+ */
+
+function isLet(node) {
+ return t.isVariableDeclaration(node) && (node.kind !== "var" || node[_constants.BLOCK_SCOPED_SYMBOL]);
+}
+
+/**
+ * Check if the input `node` is block scoped.
+ */
+
+function isBlockScoped(node) {
+ return t.isFunctionDeclaration(node) || t.isClassDeclaration(node) || t.isLet(node);
+}
+
+/**
+ * Check if the input `node` is a variable declaration.
+ */
+
+function isVar(node) {
+ return t.isVariableDeclaration(node, { kind: "var" }) && !node[_constants.BLOCK_SCOPED_SYMBOL];
+}
+
+/**
+ * Check if the input `specifier` is a `default` import or export.
+ */
+
+function isSpecifierDefault(specifier) {
+ return t.isImportDefaultSpecifier(specifier) || t.isIdentifier(specifier.imported || specifier.exported, { name: "default" });
+}
+
+/**
+ * Check if the input `node` is a scope.
+ */
+
+function isScope(node, parent) {
+ if (t.isBlockStatement(node) && t.isFunction(parent, { body: node })) {
+ return false;
+ }
+
+ return t.isScopable(node);
+}
+
+/**
+ * Check if the input `node` is definitely immutable.
+ */
+
+function isImmutable(node) {
+ if (t.isType(node.type, "Immutable")) return true;
+
+ if (t.isIdentifier(node)) {
+ if (node.name === "undefined") {
+ // immutable!
+ return true;
+ } else {
+ // no idea...
+ return false;
+ }
+ }
+
+ return false;
+}
\ No newline at end of file
diff --git a/node_modules/babel-types/package.json b/node_modules/babel-types/package.json
new file mode 100644
index 0000000..47f669b
--- /dev/null
+++ b/node_modules/babel-types/package.json
@@ -0,0 +1,118 @@
+{
+ "_args": [
+ [
+ "babel-types@^6.7.2",
+ "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-core"
+ ]
+ ],
+ "_from": "babel-types@>=6.7.2 <7.0.0",
+ "_id": "babel-types@6.7.2",
+ "_inCache": true,
+ "_installable": true,
+ "_location": "/babel-types",
+ "_nodeVersion": "5.5.0",
+ "_npmOperationalInternal": {
+ "host": "packages-13-west.internal.npmjs.com",
+ "tmp": "tmp/babel-types-6.7.2.tgz_1457649694542_0.08641894650645554"
+ },
+ "_npmUser": {
+ "email": "amjad.masad@gmail.com",
+ "name": "amasad"
+ },
+ "_npmVersion": "3.3.12",
+ "_phantomChildren": {},
+ "_requested": {
+ "name": "babel-types",
+ "raw": "babel-types@^6.7.2",
+ "rawSpec": "^6.7.2",
+ "scope": null,
+ "spec": ">=6.7.2 <7.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/babel-core",
+ "/babel-generator",
+ "/babel-helper-builder-react-jsx",
+ "/babel-helper-call-delegate",
+ "/babel-helper-define-map",
+ "/babel-helper-function-name",
+ "/babel-helper-get-function-arity",
+ "/babel-helper-hoist-variables",
+ "/babel-helper-optimise-call-expression",
+ "/babel-helper-regex",
+ "/babel-helper-replace-supers",
+ "/babel-plugin-transform-es2015-block-scoping",
+ "/babel-plugin-transform-es2015-classes",
+ "/babel-plugin-transform-es2015-duplicate-keys",
+ "/babel-plugin-transform-es2015-function-name",
+ "/babel-plugin-transform-es2015-modules-commonjs",
+ "/babel-plugin-transform-es2015-parameters",
+ "/babel-plugin-transform-es2015-shorthand-properties",
+ "/babel-plugin-transform-es2015-sticky-regex",
+ "/babel-plugin-transform-regenerator",
+ "/babel-plugin-transform-strict-mode",
+ "/babel-template",
+ "/babel-traverse"
+ ],
+ "_resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.7.2.tgz",
+ "_shasum": "7f8a1bac2d2b11bbe2691685e17153e84355bd02",
+ "_shrinkwrap": null,
+ "_spec": "babel-types@^6.7.2",
+ "_where": "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-core",
+ "author": {
+ "email": "sebmck@gmail.com",
+ "name": "Sebastian McKenzie"
+ },
+ "dependencies": {
+ "babel-runtime": "^5.0.0",
+ "babel-traverse": "^6.7.2",
+ "esutils": "^2.0.2",
+ "lodash": "^3.10.1",
+ "to-fast-properties": "^1.0.1"
+ },
+ "description": "This module contains methods for building ASTs manually and for checking the types of AST nodes.",
+ "devDependencies": {},
+ "directories": {},
+ "dist": {
+ "shasum": "7f8a1bac2d2b11bbe2691685e17153e84355bd02",
+ "tarball": "http://registry.npmjs.org/babel-types/-/babel-types-6.7.2.tgz"
+ },
+ "homepage": "https://babeljs.io/",
+ "license": "MIT",
+ "main": "lib/index.js",
+ "maintainers": [
+ {
+ "name": "amasad",
+ "email": "amjad.masad@gmail.com"
+ },
+ {
+ "name": "hzoo",
+ "email": "hi@henryzoo.com"
+ },
+ {
+ "name": "jmm",
+ "email": "npm-public@jessemccarthy.net"
+ },
+ {
+ "name": "loganfsmyth",
+ "email": "loganfsmyth@gmail.com"
+ },
+ {
+ "name": "sebmck",
+ "email": "sebmck@gmail.com"
+ },
+ {
+ "name": "thejameskyle",
+ "email": "me@thejameskyle.com"
+ }
+ ],
+ "name": "babel-types",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "https://github.com/babel/babel/tree/master/packages/babel-types"
+ },
+ "scripts": {},
+ "version": "6.7.2"
+}
diff --git a/node_modules/babylon/.npmignore b/node_modules/babylon/.npmignore
new file mode 100644
index 0000000..cbb7790
--- /dev/null
+++ b/node_modules/babylon/.npmignore
@@ -0,0 +1,5 @@
+src
+test
+*.log
+scripts
+lib
diff --git a/node_modules/babylon/AUTHORS b/node_modules/babylon/AUTHORS
new file mode 100644
index 0000000..2f39def
--- /dev/null
+++ b/node_modules/babylon/AUTHORS
@@ -0,0 +1,41 @@
+List of Acorn contributors. Updated before every release.
+
+Adrian Rakovsky
+Alistair Braidwood
+Andres Suarez
+Aparajita Fishman
+Arian Stolwijk
+Artem Govorov
+Brandon Mills
+Charles Hughes
+Conrad Irwin
+David Bonnet
+Forbes Lindesay
+Gilad Peleg
+impinball
+Ingvar Stepanyan
+Jesse McCarthy
+Jiaxing Wang
+Joel Kemp
+Johannes Herr
+Jürg Lehni
+keeyipchan
+Kevin Kwok
+krator
+Marijn Haverbeke
+Martin Carlberg
+Mathias Bynens
+Mathieu 'p01' Henri
+Max Schaefer
+Max Zerzouri
+Mihai Bazon
+Mike Rennie
+Nick Fitzgerald
+Oskar Schöldström
+Paul Harper
+Peter Rust
+PlNG
+r-e-d
+Rich Harris
+Sebastian McKenzie
+zsjforcn
diff --git a/node_modules/babylon/LICENSE b/node_modules/babylon/LICENSE
new file mode 100644
index 0000000..d4c7fc5
--- /dev/null
+++ b/node_modules/babylon/LICENSE
@@ -0,0 +1,19 @@
+Copyright (C) 2012-2014 by various contributors (see AUTHORS)
+
+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.
diff --git a/node_modules/babylon/README.md b/node_modules/babylon/README.md
new file mode 100644
index 0000000..d5833e4
--- /dev/null
+++ b/node_modules/babylon/README.md
@@ -0,0 +1,77 @@
+
+
+
+
+
+ Babylon is a JavaScript parser used in Babel .
+
+
+ - ES6 enabled by default.
+ - Comment attachment.
+ - Support for JSX and Flow.
+ - Support for experimental language proposals.
+
+## Credits
+
+Heavily based on [acorn](https://github.com/marijnh/acorn) and [acorn-jsx](https://github.com/RReverser/acorn-jsx),
+thanks to the awesome work of [@RReverser](https://github.com/RReverser) and [@marijnh](https://github.com/marijnh).
+
+Significant diversions are expected to occur in the future such as streaming, EBNF definitions, sweet.js integration, interspacial parsing and more.
+
+## API
+
+### `babylon.parse(code, [options])`
+
+## Options
+
+- **allowImportExportEverywhere**: By default, `import` and `export`
+ declarations can only appear at a program's top level. Setting this
+ option to `true` allows them anywhere where a statement is allowed.
+
+- **allowReturnOutsideFunction**: By default, a return statement at
+ the top level raises an error. Set this to `true` to accept such
+ code.
+
+- **allowSuperOutsideMethod** TODO
+
+- **sourceType**: Indicate the mode the code should be parsed in. Can be
+ either `"script"` or `"module"`.
+
+- **sourceFilename**: Correlate output AST nodes with their source filename. Useful when generating code and source maps from the ASTs of multiple input files.
+
+- **plugins**: Array containing the plugins that you want to enable.
+
+### Example
+
+```javascript
+require("babylon").parse("code", {
+ // parse in strict mode and allow module declarations
+ sourceType: "module",
+
+ plugins: [
+ // enable experimental async functions
+ "asyncFunctions",
+
+ // enable jsx and flow syntax
+ "jsx",
+ "flow"
+ ]
+});
+```
+
+### Plugins
+
+ - `jsx`
+ - `flow`
+ - `asyncFunctions`
+ - `classConstructorCall`
+ - `doExpressions`
+ - `trailingFunctionCommas`
+ - `objectRestSpread`
+ - `decorators`
+ - `classProperties`
+ - `exportExtensions`
+ - `exponentiationOperator`
+ - `asyncGenerators`
+ - `functionBind`
+ - `functionSent`
diff --git a/node_modules/babylon/bin/babylon.js b/node_modules/babylon/bin/babylon.js
new file mode 100755
index 0000000..449ddfe
--- /dev/null
+++ b/node_modules/babylon/bin/babylon.js
@@ -0,0 +1,16 @@
+#!/usr/bin/env node
+/* eslint no-var: 0 */
+
+var babylon = require("..");
+var fs = require("fs");
+
+var filename = process.argv[2];
+if (!filename) {
+ console.error("no filename specified");
+ process.exit(0);
+}
+
+var file = fs.readFileSync(filename, "utf8");
+var ast = babylon.parse(file);
+
+console.log(JSON.stringify(ast, null, " "));
diff --git a/node_modules/babylon/index.js b/node_modules/babylon/index.js
new file mode 100644
index 0000000..ed6eb65
--- /dev/null
+++ b/node_modules/babylon/index.js
@@ -0,0 +1,6264 @@
+(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}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.babylon = 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 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 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.
+ */
+
+"use strict";
+
+var _interopRequireDefault = _dereq_(25)["default"];
+
+var _index = _dereq_(5);
+
+var _index2 = _interopRequireDefault(_index);
+
+function last(stack) {
+ return stack[stack.length - 1];
+}
+
+var pp = _index2["default"].prototype;
+
+pp.addComment = function (comment) {
+ this.state.trailingComments.push(comment);
+ this.state.leadingComments.push(comment);
+};
+
+pp.processComment = function (node) {
+ if (node.type === "Program" && node.body.length > 0) return;
+
+ var stack = this.state.commentStack;
+
+ var lastChild = undefined,
+ trailingComments = undefined,
+ i = undefined;
+
+ if (this.state.trailingComments.length > 0) {
+ // If the first comment in trailingComments comes after the
+ // current node, then we're good - all comments in the array will
+ // come after the node and so it's safe to add them as official
+ // trailingComments.
+ if (this.state.trailingComments[0].start >= node.end) {
+ trailingComments = this.state.trailingComments;
+ this.state.trailingComments = [];
+ } else {
+ // Otherwise, if the first comment doesn't come after the
+ // current node, that means we have a mix of leading and trailing
+ // comments in the array and that leadingComments contains the
+ // same items as trailingComments. Reset trailingComments to
+ // zero items and we'll handle this by evaluating leadingComments
+ // later.
+ this.state.trailingComments.length = 0;
+ }
+ } else {
+ var lastInStack = last(stack);
+ if (stack.length > 0 && lastInStack.trailingComments && lastInStack.trailingComments[0].start >= node.end) {
+ trailingComments = lastInStack.trailingComments;
+ lastInStack.trailingComments = null;
+ }
+ }
+
+ // Eating the stack.
+ while (stack.length > 0 && last(stack).start >= node.start) {
+ lastChild = stack.pop();
+ }
+
+ if (lastChild) {
+ if (lastChild.leadingComments) {
+ if (lastChild !== node && last(lastChild.leadingComments).end <= node.start) {
+ node.leadingComments = lastChild.leadingComments;
+ lastChild.leadingComments = null;
+ } else {
+ // A leading comment for an anonymous class had been stolen by its first ClassMethod,
+ // so this takes back the leading comment.
+ // See also: https://github.com/eslint/espree/issues/158
+ for (i = lastChild.leadingComments.length - 2; i >= 0; --i) {
+ if (lastChild.leadingComments[i].end <= node.start) {
+ node.leadingComments = lastChild.leadingComments.splice(0, i + 1);
+ break;
+ }
+ }
+ }
+ }
+ } else if (this.state.leadingComments.length > 0) {
+ if (last(this.state.leadingComments).end <= node.start) {
+ node.leadingComments = this.state.leadingComments;
+ this.state.leadingComments = [];
+ } else {
+ // https://github.com/eslint/espree/issues/2
+ //
+ // In special cases, such as return (without a value) and
+ // debugger, all comments will end up as leadingComments and
+ // will otherwise be eliminated. This step runs when the
+ // commentStack is empty and there are comments left
+ // in leadingComments.
+ //
+ // This loop figures out the stopping point between the actual
+ // leading and trailing comments by finding the location of the
+ // first comment that comes after the given node.
+ for (i = 0; i < this.state.leadingComments.length; i++) {
+ if (this.state.leadingComments[i].end > node.start) {
+ break;
+ }
+ }
+
+ // Split the array based on the location of the first comment
+ // that comes after the node. Keep in mind that this could
+ // result in an empty array, and if so, the array must be
+ // deleted.
+ node.leadingComments = this.state.leadingComments.slice(0, i);
+ if (node.leadingComments.length === 0) {
+ node.leadingComments = null;
+ }
+
+ // Similarly, trailing comments are attached later. The variable
+ // must be reset to null if there are no trailing comments.
+ trailingComments = this.state.leadingComments.slice(i);
+ if (trailingComments.length === 0) {
+ trailingComments = null;
+ }
+ }
+ }
+
+ if (trailingComments) {
+ if (trailingComments.length && trailingComments[0].start >= node.start && last(trailingComments).end <= node.end) {
+ node.innerComments = trailingComments;
+ } else {
+ node.trailingComments = trailingComments;
+ }
+ }
+
+ stack.push(node);
+};
+},{"25":25,"5":5}],4:[function(_dereq_,module,exports){
+/* eslint indent: 0 */
+/* eslint max-len: 0 */
+
+// A recursive descent parser operates by defining functions for all
+// syntactic elements, and recursively calling those, each function
+// advancing the input stream and returning an AST node. Precedence
+// of constructs (for example, the fact that `!x[1]` means `!(x[1])`
+// instead of `(!x)[1]` is handled by the fact that the parser
+// function that parses unary prefix operators is called first, and
+// in turn calls the function that parses `[]` subscripts — that
+// way, it'll receive the node for `x[1]` already parsed, and wraps
+// *that* in the unary operator node.
+//
+// Acorn uses an [operator precedence parser][opp] to handle binary
+// operator precedence, because it is much more compact than using
+// the technique outlined above, which uses different, nesting
+// functions to specify precedence, for all of the ten binary
+// precedence levels that JavaScript defines.
+//
+// [opp]: http://en.wikipedia.org/wiki/Operator-precedence_parser
+
+"use strict";
+
+var _Object$create = _dereq_(21)["default"];
+
+var _interopRequireDefault = _dereq_(25)["default"];
+
+var _tokenizerTypes = _dereq_(17);
+
+var _index = _dereq_(5);
+
+var _index2 = _interopRequireDefault(_index);
+
+var _utilIdentifier = _dereq_(18);
+
+var pp = _index2["default"].prototype;
+
+// Check if property name clashes with already added.
+// Object/class getters and setters are not allowed to clash —
+// either with each other or with an init property — and in
+// strict mode, init properties are also not allowed to be repeated.
+
+pp.checkPropClash = function (prop, propHash) {
+ if (prop.computed) return;
+
+ var key = prop.key;
+ var name = undefined;
+ switch (key.type) {
+ case "Identifier":
+ name = key.name;
+ break;
+
+ case "StringLiteral":
+ case "NumericLiteral":
+ name = String(key.value);
+ break;
+
+ default:
+ return;
+ }
+
+ if (name === "__proto__" && prop.kind === "init") {
+ if (propHash.proto) this.raise(key.start, "Redefinition of __proto__ property");
+ propHash.proto = true;
+ }
+};
+
+// ### Expression parsing
+
+// These nest, from the most general expression type at the top to
+// 'atomic', nondivisible expression types at the bottom. Most of
+// the functions will simply let the function (s) below them parse,
+// and, *if* the syntactic construct they handle is present, wrap
+// the AST node that the inner parser gave them in another node.
+
+// Parse a full expression. The optional arguments are used to
+// forbid the `in` operator (in for loops initalization expressions)
+// and provide reference for storing '=' operator inside shorthand
+// property assignment in contexts where both object expression
+// and object pattern might appear (so it's possible to raise
+// delayed syntax error at correct position).
+
+pp.parseExpression = function (noIn, refShorthandDefaultPos) {
+ var startPos = this.state.start,
+ startLoc = this.state.startLoc;
+ var expr = this.parseMaybeAssign(noIn, refShorthandDefaultPos);
+ if (this.match(_tokenizerTypes.types.comma)) {
+ var node = this.startNodeAt(startPos, startLoc);
+ node.expressions = [expr];
+ while (this.eat(_tokenizerTypes.types.comma)) {
+ node.expressions.push(this.parseMaybeAssign(noIn, refShorthandDefaultPos));
+ }
+ this.toReferencedList(node.expressions);
+ return this.finishNode(node, "SequenceExpression");
+ }
+ return expr;
+};
+
+// Parse an assignment expression. This includes applications of
+// operators like `+=`.
+
+pp.parseMaybeAssign = function (noIn, refShorthandDefaultPos, afterLeftParse) {
+ if (this.match(_tokenizerTypes.types._yield) && this.state.inGenerator) {
+ return this.parseYield();
+ }
+
+ var failOnShorthandAssign = undefined;
+ if (refShorthandDefaultPos) {
+ failOnShorthandAssign = false;
+ } else {
+ refShorthandDefaultPos = { start: 0 };
+ failOnShorthandAssign = true;
+ }
+
+ var startPos = this.state.start;
+ var startLoc = this.state.startLoc;
+
+ if (this.match(_tokenizerTypes.types.parenL) || this.match(_tokenizerTypes.types.name)) {
+ this.state.potentialArrowAt = this.state.start;
+ }
+
+ var left = this.parseMaybeConditional(noIn, refShorthandDefaultPos);
+ if (afterLeftParse) left = afterLeftParse.call(this, left, startPos, startLoc);
+ if (this.state.type.isAssign) {
+ var node = this.startNodeAt(startPos, startLoc);
+ node.operator = this.state.value;
+ node.left = this.match(_tokenizerTypes.types.eq) ? this.toAssignable(left) : left;
+ refShorthandDefaultPos.start = 0; // reset because shorthand default was used correctly
+
+ this.checkLVal(left);
+
+ if (left.extra && left.extra.parenthesized) {
+ var errorMsg = undefined;
+ if (left.type === "ObjectPattern") {
+ errorMsg = "`({a}) = 0` use `({a} = 0)`";
+ } else if (left.type === "ArrayPattern") {
+ errorMsg = "`([a]) = 0` use `([a] = 0)`";
+ }
+ if (errorMsg) {
+ this.raise(left.start, "You're trying to assign to a parenthesized expression, eg. instead of " + errorMsg);
+ }
+ }
+
+ this.next();
+ node.right = this.parseMaybeAssign(noIn);
+ return this.finishNode(node, "AssignmentExpression");
+ } else if (failOnShorthandAssign && refShorthandDefaultPos.start) {
+ this.unexpected(refShorthandDefaultPos.start);
+ }
+
+ return left;
+};
+
+// Parse a ternary conditional (`?:`) operator.
+
+pp.parseMaybeConditional = function (noIn, refShorthandDefaultPos) {
+ var startPos = this.state.start,
+ startLoc = this.state.startLoc;
+ var expr = this.parseExprOps(noIn, refShorthandDefaultPos);
+ if (refShorthandDefaultPos && refShorthandDefaultPos.start) return expr;
+ if (this.eat(_tokenizerTypes.types.question)) {
+ var node = this.startNodeAt(startPos, startLoc);
+ node.test = expr;
+ node.consequent = this.parseMaybeAssign();
+ this.expect(_tokenizerTypes.types.colon);
+ node.alternate = this.parseMaybeAssign(noIn);
+ return this.finishNode(node, "ConditionalExpression");
+ }
+ return expr;
+};
+
+// Start the precedence parser.
+
+pp.parseExprOps = function (noIn, refShorthandDefaultPos) {
+ var startPos = this.state.start,
+ startLoc = this.state.startLoc;
+ var expr = this.parseMaybeUnary(refShorthandDefaultPos);
+ if (refShorthandDefaultPos && refShorthandDefaultPos.start) {
+ return expr;
+ } else {
+ return this.parseExprOp(expr, startPos, startLoc, -1, noIn);
+ }
+};
+
+// Parse binary operators with the operator precedence parsing
+// algorithm. `left` is the left-hand side of the operator.
+// `minPrec` provides context that allows the function to stop and
+// defer further parser to one of its callers when it encounters an
+// operator that has a lower precedence than the set it is parsing.
+
+pp.parseExprOp = function (left, leftStartPos, leftStartLoc, minPrec, noIn) {
+ var prec = this.state.type.binop;
+ if (prec != null && (!noIn || !this.match(_tokenizerTypes.types._in))) {
+ if (prec > minPrec) {
+ var node = this.startNodeAt(leftStartPos, leftStartLoc);
+ node.left = left;
+ node.operator = this.state.value;
+
+ if (node.operator === "**" && left.type === "UnaryExpression" && left.extra && !left.extra.parenthesizedArgument) {
+ this.raise(left.argument.start, "Illegal expression. Wrap left hand side or entire exponentiation in parentheses.");
+ }
+
+ var op = this.state.type;
+ this.next();
+
+ var startPos = this.state.start;
+ var startLoc = this.state.startLoc;
+ node.right = this.parseExprOp(this.parseMaybeUnary(), startPos, startLoc, op.rightAssociative ? prec - 1 : prec, noIn);
+
+ this.finishNode(node, op === _tokenizerTypes.types.logicalOR || op === _tokenizerTypes.types.logicalAND ? "LogicalExpression" : "BinaryExpression");
+ return this.parseExprOp(node, leftStartPos, leftStartLoc, minPrec, noIn);
+ }
+ }
+ return left;
+};
+
+// Parse unary operators, both prefix and postfix.
+
+pp.parseMaybeUnary = function (refShorthandDefaultPos) {
+ if (this.state.type.prefix) {
+ var node = this.startNode();
+ var update = this.match(_tokenizerTypes.types.incDec);
+ node.operator = this.state.value;
+ node.prefix = true;
+ this.next();
+
+ var argType = this.state.type;
+ this.addExtra(node, "parenthesizedArgument", argType === _tokenizerTypes.types.parenL);
+ node.argument = this.parseMaybeUnary();
+
+ if (refShorthandDefaultPos && refShorthandDefaultPos.start) {
+ this.unexpected(refShorthandDefaultPos.start);
+ }
+
+ if (update) {
+ this.checkLVal(node.argument);
+ } else if (this.state.strict && node.operator === "delete" && node.argument.type === "Identifier") {
+ this.raise(node.start, "Deleting local variable in strict mode");
+ }
+
+ return this.finishNode(node, update ? "UpdateExpression" : "UnaryExpression");
+ }
+
+ var startPos = this.state.start,
+ startLoc = this.state.startLoc;
+ var expr = this.parseExprSubscripts(refShorthandDefaultPos);
+ if (refShorthandDefaultPos && refShorthandDefaultPos.start) return expr;
+ while (this.state.type.postfix && !this.canInsertSemicolon()) {
+ var node = this.startNodeAt(startPos, startLoc);
+ node.operator = this.state.value;
+ node.prefix = false;
+ node.argument = expr;
+ this.checkLVal(expr);
+ this.next();
+ expr = this.finishNode(node, "UpdateExpression");
+ }
+ return expr;
+};
+
+// Parse call, dot, and `[]`-subscript expressions.
+
+pp.parseExprSubscripts = function (refShorthandDefaultPos) {
+ var startPos = this.state.start,
+ startLoc = this.state.startLoc;
+ var potentialArrowAt = this.state.potentialArrowAt;
+ var expr = this.parseExprAtom(refShorthandDefaultPos);
+
+ if (expr.type === "ArrowFunctionExpression" && expr.start === potentialArrowAt) {
+ return expr;
+ }
+
+ if (refShorthandDefaultPos && refShorthandDefaultPos.start) {
+ return expr;
+ }
+
+ return this.parseSubscripts(expr, startPos, startLoc);
+};
+
+pp.parseSubscripts = function (base, startPos, startLoc, noCalls) {
+ for (;;) {
+ if (!noCalls && this.eat(_tokenizerTypes.types.doubleColon)) {
+ var node = this.startNodeAt(startPos, startLoc);
+ node.object = base;
+ node.callee = this.parseNoCallExpr();
+ return this.parseSubscripts(this.finishNode(node, "BindExpression"), startPos, startLoc, noCalls);
+ } else if (this.eat(_tokenizerTypes.types.dot)) {
+ var node = this.startNodeAt(startPos, startLoc);
+ node.object = base;
+ node.property = this.parseIdentifier(true);
+ node.computed = false;
+ base = this.finishNode(node, "MemberExpression");
+ } else if (this.eat(_tokenizerTypes.types.bracketL)) {
+ var node = this.startNodeAt(startPos, startLoc);
+ node.object = base;
+ node.property = this.parseExpression();
+ node.computed = true;
+ this.expect(_tokenizerTypes.types.bracketR);
+ base = this.finishNode(node, "MemberExpression");
+ } else if (!noCalls && this.match(_tokenizerTypes.types.parenL)) {
+ var possibleAsync = this.state.potentialArrowAt === base.start && base.type === "Identifier" && base.name === "async" && !this.canInsertSemicolon();
+ this.next();
+
+ var node = this.startNodeAt(startPos, startLoc);
+ node.callee = base;
+ node.arguments = this.parseCallExpressionArguments(_tokenizerTypes.types.parenR, this.hasPlugin("trailingFunctionCommas"), possibleAsync);
+ base = this.finishNode(node, "CallExpression");
+
+ if (possibleAsync && this.shouldParseAsyncArrow()) {
+ return this.parseAsyncArrowFromCallExpression(this.startNodeAt(startPos, startLoc), node);
+ } else {
+ this.toReferencedList(node.arguments);
+ }
+ } else if (this.match(_tokenizerTypes.types.backQuote)) {
+ var node = this.startNodeAt(startPos, startLoc);
+ node.tag = base;
+ node.quasi = this.parseTemplate();
+ base = this.finishNode(node, "TaggedTemplateExpression");
+ } else {
+ return base;
+ }
+ }
+};
+
+pp.parseCallExpressionArguments = function (close, allowTrailingComma, possibleAsyncArrow) {
+ var innerParenStart = undefined;
+
+ var elts = [],
+ first = true;
+ while (!this.eat(close)) {
+ if (first) {
+ first = false;
+ } else {
+ this.expect(_tokenizerTypes.types.comma);
+ if (allowTrailingComma && this.eat(close)) break;
+ }
+
+ // we need to make sure that if this is an async arrow functions, that we don't allow inner parens inside the params
+ if (this.match(_tokenizerTypes.types.parenL) && !innerParenStart) {
+ innerParenStart = this.state.start;
+ }
+
+ elts.push(this.parseExprListItem());
+ }
+
+ // we found an async arrow function so let's not allow any inner parens
+ if (possibleAsyncArrow && innerParenStart && this.shouldParseAsyncArrow()) {
+ this.unexpected();
+ }
+
+ return elts;
+};
+
+pp.shouldParseAsyncArrow = function () {
+ return this.match(_tokenizerTypes.types.arrow);
+};
+
+pp.parseAsyncArrowFromCallExpression = function (node, call) {
+ if (!this.hasPlugin("asyncFunctions")) this.unexpected();
+ this.expect(_tokenizerTypes.types.arrow);
+ return this.parseArrowExpression(node, call.arguments, true);
+};
+
+// Parse a no-call expression (like argument of `new` or `::` operators).
+
+pp.parseNoCallExpr = function () {
+ var startPos = this.state.start,
+ startLoc = this.state.startLoc;
+ return this.parseSubscripts(this.parseExprAtom(), startPos, startLoc, true);
+};
+
+// Parse an atomic expression — either a single token that is an
+// expression, an expression started by a keyword like `function` or
+// `new`, or an expression wrapped in punctuation like `()`, `[]`,
+// or `{}`.
+
+pp.parseExprAtom = function (refShorthandDefaultPos) {
+ var node = undefined,
+ canBeArrow = this.state.potentialArrowAt === this.state.start;
+ switch (this.state.type) {
+ case _tokenizerTypes.types._super:
+ if (!this.state.inMethod && !this.options.allowSuperOutsideMethod) {
+ this.raise(this.state.start, "'super' outside of function or class");
+ }
+
+ node = this.startNode();
+ this.next();
+ if (!this.match(_tokenizerTypes.types.parenL) && !this.match(_tokenizerTypes.types.bracketL) && !this.match(_tokenizerTypes.types.dot)) {
+ this.unexpected();
+ }
+ if (this.match(_tokenizerTypes.types.parenL) && this.state.inMethod !== "constructor" && !this.options.allowSuperOutsideMethod) {
+ this.raise(node.start, "super() outside of class constructor");
+ }
+ return this.finishNode(node, "Super");
+
+ case _tokenizerTypes.types._this:
+ node = this.startNode();
+ this.next();
+ return this.finishNode(node, "ThisExpression");
+
+ case _tokenizerTypes.types._yield:
+ if (this.state.inGenerator) this.unexpected();
+
+ case _tokenizerTypes.types.name:
+ node = this.startNode();
+ var allowAwait = this.hasPlugin("asyncFunctions") && this.state.value === "await" && this.state.inAsync;
+ var allowYield = this.shouldAllowYieldIdentifier();
+ var id = this.parseIdentifier(allowAwait || allowYield);
+
+ if (this.hasPlugin("asyncFunctions")) {
+ if (id.name === "await") {
+ if (this.state.inAsync || this.inModule) {
+ return this.parseAwait(node);
+ }
+ } else if (id.name === "async" && this.match(_tokenizerTypes.types._function) && !this.canInsertSemicolon()) {
+ this.next();
+ return this.parseFunction(node, false, false, true);
+ } else if (canBeArrow && id.name === "async" && this.match(_tokenizerTypes.types.name)) {
+ var params = [this.parseIdentifier()];
+ this.expect(_tokenizerTypes.types.arrow);
+ // let foo = bar => {};
+ return this.parseArrowExpression(node, params, true);
+ }
+ }
+
+ if (canBeArrow && !this.canInsertSemicolon() && this.eat(_tokenizerTypes.types.arrow)) {
+ return this.parseArrowExpression(node, [id]);
+ }
+
+ return id;
+
+ case _tokenizerTypes.types._do:
+ if (this.hasPlugin("doExpressions")) {
+ var _node = this.startNode();
+ this.next();
+ var oldInFunction = this.state.inFunction;
+ var oldLabels = this.state.labels;
+ this.state.labels = [];
+ this.state.inFunction = false;
+ _node.body = this.parseBlock(false, true);
+ this.state.inFunction = oldInFunction;
+ this.state.labels = oldLabels;
+ return this.finishNode(_node, "DoExpression");
+ }
+
+ case _tokenizerTypes.types.regexp:
+ var value = this.state.value;
+ node = this.parseLiteral(value.value, "RegExpLiteral");
+ node.pattern = value.pattern;
+ node.flags = value.flags;
+ return node;
+
+ case _tokenizerTypes.types.num:
+ return this.parseLiteral(this.state.value, "NumericLiteral");
+
+ case _tokenizerTypes.types.string:
+ return this.parseLiteral(this.state.value, "StringLiteral");
+
+ case _tokenizerTypes.types._null:
+ node = this.startNode();
+ this.next();
+ return this.finishNode(node, "NullLiteral");
+
+ case _tokenizerTypes.types._true:case _tokenizerTypes.types._false:
+ node = this.startNode();
+ node.value = this.match(_tokenizerTypes.types._true);
+ this.next();
+ return this.finishNode(node, "BooleanLiteral");
+
+ case _tokenizerTypes.types.parenL:
+ return this.parseParenAndDistinguishExpression(null, null, canBeArrow);
+
+ case _tokenizerTypes.types.bracketL:
+ node = this.startNode();
+ this.next();
+ node.elements = this.parseExprList(_tokenizerTypes.types.bracketR, true, true, refShorthandDefaultPos);
+ this.toReferencedList(node.elements);
+ return this.finishNode(node, "ArrayExpression");
+
+ case _tokenizerTypes.types.braceL:
+ return this.parseObj(false, refShorthandDefaultPos);
+
+ case _tokenizerTypes.types._function:
+ return this.parseFunctionExpression();
+
+ case _tokenizerTypes.types.at:
+ this.parseDecorators();
+
+ case _tokenizerTypes.types._class:
+ node = this.startNode();
+ this.takeDecorators(node);
+ return this.parseClass(node, false);
+
+ case _tokenizerTypes.types._new:
+ return this.parseNew();
+
+ case _tokenizerTypes.types.backQuote:
+ return this.parseTemplate();
+
+ case _tokenizerTypes.types.doubleColon:
+ node = this.startNode();
+ this.next();
+ node.object = null;
+ var callee = node.callee = this.parseNoCallExpr();
+ if (callee.type === "MemberExpression") {
+ return this.finishNode(node, "BindExpression");
+ } else {
+ this.raise(callee.start, "Binding should be performed on object property.");
+ }
+
+ default:
+ this.unexpected();
+ }
+};
+
+pp.parseFunctionExpression = function () {
+ var node = this.startNode();
+ var meta = this.parseIdentifier(true);
+ if (this.state.inGenerator && this.eat(_tokenizerTypes.types.dot) && this.hasPlugin("functionSent")) {
+ return this.parseMetaProperty(node, meta, "sent");
+ } else {
+ return this.parseFunction(node, false);
+ }
+};
+
+pp.parseMetaProperty = function (node, meta, propertyName) {
+ node.meta = meta;
+ node.property = this.parseIdentifier(true);
+
+ if (node.property.name !== propertyName) {
+ this.raise(node.property.start, "The only valid meta property for new is " + meta.name + "." + propertyName);
+ }
+
+ return this.finishNode(node, "MetaProperty");
+};
+
+pp.parseLiteral = function (value, type) {
+ var node = this.startNode();
+ this.addExtra(node, "rawValue", value);
+ this.addExtra(node, "raw", this.input.slice(this.state.start, this.state.end));
+ node.value = value;
+ this.next();
+ return this.finishNode(node, type);
+};
+
+pp.parseParenExpression = function () {
+ this.expect(_tokenizerTypes.types.parenL);
+ var val = this.parseExpression();
+ this.expect(_tokenizerTypes.types.parenR);
+ return val;
+};
+
+pp.parseParenAndDistinguishExpression = function (startPos, startLoc, canBeArrow, isAsync, allowOptionalCommaStart) {
+ startPos = startPos || this.state.start;
+ startLoc = startLoc || this.state.startLoc;
+
+ var val = undefined;
+ this.next();
+
+ var innerStartPos = this.state.start,
+ innerStartLoc = this.state.startLoc;
+ var exprList = [],
+ first = true;
+ var refShorthandDefaultPos = { start: 0 },
+ spreadStart = undefined,
+ optionalCommaStart = undefined;
+ while (!this.match(_tokenizerTypes.types.parenR)) {
+ if (first) {
+ first = false;
+ } else {
+ this.expect(_tokenizerTypes.types.comma);
+ if (this.match(_tokenizerTypes.types.parenR) && this.hasPlugin("trailingFunctionCommas")) {
+ optionalCommaStart = this.state.start;
+ break;
+ }
+ }
+
+ if (this.match(_tokenizerTypes.types.ellipsis)) {
+ var spreadNodeStartPos = this.state.start,
+ spreadNodeStartLoc = this.state.startLoc;
+ spreadStart = this.state.start;
+ exprList.push(this.parseParenItem(this.parseRest(), spreadNodeStartLoc, spreadNodeStartPos));
+ break;
+ } else {
+ exprList.push(this.parseMaybeAssign(false, refShorthandDefaultPos, this.parseParenItem));
+ }
+ }
+
+ var innerEndPos = this.state.start;
+ var innerEndLoc = this.state.startLoc;
+ this.expect(_tokenizerTypes.types.parenR);
+
+ if (canBeArrow && !this.canInsertSemicolon() && this.eat(_tokenizerTypes.types.arrow)) {
+ for (var _i = 0; _i < exprList.length; _i++) {
+ var param = exprList[_i];
+ if (param.extra && param.extra.parenthesized) this.unexpected(param.extra.parenStart);
+ }
+
+ return this.parseArrowExpression(this.startNodeAt(startPos, startLoc), exprList, isAsync);
+ }
+
+ if (!exprList.length) {
+ if (isAsync) {
+ return;
+ } else {
+ this.unexpected(this.state.lastTokStart);
+ }
+ }
+ if (optionalCommaStart && !allowOptionalCommaStart) this.unexpected(optionalCommaStart);
+ if (spreadStart) this.unexpected(spreadStart);
+ if (refShorthandDefaultPos.start) this.unexpected(refShorthandDefaultPos.start);
+
+ if (exprList.length > 1) {
+ val = this.startNodeAt(innerStartPos, innerStartLoc);
+ val.expressions = exprList;
+ this.toReferencedList(val.expressions);
+ this.finishNodeAt(val, "SequenceExpression", innerEndPos, innerEndLoc);
+ } else {
+ val = exprList[0];
+ }
+
+ this.addExtra(val, "parenthesized", true);
+ this.addExtra(val, "parenStart", startPos);
+
+ return val;
+};
+
+pp.parseParenItem = function (node) {
+ return node;
+};
+
+// New's precedence is slightly tricky. It must allow its argument
+// to be a `[]` or dot subscript expression, but not a call — at
+// least, not without wrapping it in parentheses. Thus, it uses the
+
+pp.parseNew = function () {
+ var node = this.startNode();
+ var meta = this.parseIdentifier(true);
+
+ if (this.eat(_tokenizerTypes.types.dot)) {
+ return this.parseMetaProperty(node, meta, "target");
+ }
+
+ node.callee = this.parseNoCallExpr();
+
+ if (this.eat(_tokenizerTypes.types.parenL)) {
+ node.arguments = this.parseExprList(_tokenizerTypes.types.parenR, this.hasPlugin("trailingFunctionCommas"));
+ this.toReferencedList(node.arguments);
+ } else {
+ node.arguments = [];
+ }
+
+ return this.finishNode(node, "NewExpression");
+};
+
+// Parse template expression.
+
+pp.parseTemplateElement = function () {
+ var elem = this.startNode();
+ elem.value = {
+ raw: this.input.slice(this.state.start, this.state.end).replace(/\r\n?/g, "\n"),
+ cooked: this.state.value
+ };
+ this.next();
+ elem.tail = this.match(_tokenizerTypes.types.backQuote);
+ return this.finishNode(elem, "TemplateElement");
+};
+
+pp.parseTemplate = function () {
+ var node = this.startNode();
+ this.next();
+ node.expressions = [];
+ var curElt = this.parseTemplateElement();
+ node.quasis = [curElt];
+ while (!curElt.tail) {
+ this.expect(_tokenizerTypes.types.dollarBraceL);
+ node.expressions.push(this.parseExpression());
+ this.expect(_tokenizerTypes.types.braceR);
+ node.quasis.push(curElt = this.parseTemplateElement());
+ }
+ this.next();
+ return this.finishNode(node, "TemplateLiteral");
+};
+
+// Parse an object literal or binding pattern.
+
+pp.parseObj = function (isPattern, refShorthandDefaultPos) {
+ var decorators = [];
+ var propHash = _Object$create(null);
+ var first = true;
+ var node = this.startNode();
+
+ node.properties = [];
+ this.next();
+
+ while (!this.eat(_tokenizerTypes.types.braceR)) {
+ if (first) {
+ first = false;
+ } else {
+ this.expect(_tokenizerTypes.types.comma);
+ if (this.eat(_tokenizerTypes.types.braceR)) break;
+ }
+
+ while (this.match(_tokenizerTypes.types.at)) {
+ decorators.push(this.parseDecorator());
+ }
+
+ var prop = this.startNode(),
+ isGenerator = false,
+ isAsync = false,
+ startPos = undefined,
+ startLoc = undefined;
+ if (decorators.length) {
+ prop.decorators = decorators;
+ decorators = [];
+ }
+
+ if (this.hasPlugin("objectRestSpread") && this.match(_tokenizerTypes.types.ellipsis)) {
+ prop = this.parseSpread();
+ prop.type = isPattern ? "RestProperty" : "SpreadProperty";
+ node.properties.push(prop);
+ continue;
+ }
+
+ prop.method = false;
+ prop.shorthand = false;
+
+ if (isPattern || refShorthandDefaultPos) {
+ startPos = this.state.start;
+ startLoc = this.state.startLoc;
+ }
+
+ if (!isPattern) {
+ isGenerator = this.eat(_tokenizerTypes.types.star);
+ }
+
+ if (!isPattern && this.hasPlugin("asyncFunctions") && this.isContextual("async")) {
+ if (isGenerator) this.unexpected();
+
+ var asyncId = this.parseIdentifier();
+ if (this.match(_tokenizerTypes.types.colon) || this.match(_tokenizerTypes.types.parenL) || this.match(_tokenizerTypes.types.braceR)) {
+ prop.key = asyncId;
+ } else {
+ isAsync = true;
+ if (this.hasPlugin("asyncGenerators")) isGenerator = this.eat(_tokenizerTypes.types.star);
+ this.parsePropertyName(prop);
+ }
+ } else {
+ this.parsePropertyName(prop);
+ }
+
+ this.parseObjPropValue(prop, startPos, startLoc, isGenerator, isAsync, isPattern, refShorthandDefaultPos);
+ this.checkPropClash(prop, propHash);
+
+ if (prop.shorthand) {
+ this.addExtra(prop, "shorthand", true);
+ }
+
+ node.properties.push(prop);
+ }
+
+ if (decorators.length) {
+ this.raise(this.state.start, "You have trailing decorators with no property");
+ }
+
+ return this.finishNode(node, isPattern ? "ObjectPattern" : "ObjectExpression");
+};
+
+pp.parseObjPropValue = function (prop, startPos, startLoc, isGenerator, isAsync, isPattern, refShorthandDefaultPos) {
+ if (isAsync || isGenerator || this.match(_tokenizerTypes.types.parenL)) {
+ if (isPattern) this.unexpected();
+ prop.kind = "method";
+ prop.method = true;
+ this.parseMethod(prop, isGenerator, isAsync);
+ return this.finishNode(prop, "ObjectMethod");
+ }
+
+ if (this.eat(_tokenizerTypes.types.colon)) {
+ prop.value = isPattern ? this.parseMaybeDefault(this.state.start, this.state.startLoc) : this.parseMaybeAssign(false, refShorthandDefaultPos);
+ return this.finishNode(prop, "ObjectProperty");
+ }
+
+ if (!prop.computed && prop.key.type === "Identifier" && (prop.key.name === "get" || prop.key.name === "set") && !this.match(_tokenizerTypes.types.comma) && !this.match(_tokenizerTypes.types.braceR)) {
+ if (isGenerator || isAsync || isPattern) this.unexpected();
+ prop.kind = prop.key.name;
+ this.parsePropertyName(prop);
+ this.parseMethod(prop, false);
+ var paramCount = prop.kind === "get" ? 0 : 1;
+ if (prop.params.length !== paramCount) {
+ var start = prop.start;
+ if (prop.kind === "get") {
+ this.raise(start, "getter should have no params");
+ } else {
+ this.raise(start, "setter should have exactly one param");
+ }
+ }
+ return this.finishNode(prop, "ObjectMethod");
+ }
+
+ if (!prop.computed && prop.key.type === "Identifier") {
+ if (isPattern) {
+ var illegalBinding = this.isKeyword(prop.key.name);
+ if (!illegalBinding && this.state.strict) {
+ illegalBinding = _utilIdentifier.reservedWords.strictBind(prop.key.name) || _utilIdentifier.reservedWords.strict(prop.key.name);
+ }
+ if (illegalBinding) {
+ this.raise(prop.key.start, "Binding " + prop.key.name);
+ }
+ prop.value = this.parseMaybeDefault(startPos, startLoc, prop.key.__clone());
+ } else if (this.match(_tokenizerTypes.types.eq) && refShorthandDefaultPos) {
+ if (!refShorthandDefaultPos.start) {
+ refShorthandDefaultPos.start = this.state.start;
+ }
+ prop.value = this.parseMaybeDefault(startPos, startLoc, prop.key.__clone());
+ } else {
+ prop.value = prop.key.__clone();
+ }
+ prop.shorthand = true;
+ return this.finishNode(prop, "ObjectProperty");
+ }
+
+ this.unexpected();
+};
+
+pp.parsePropertyName = function (prop) {
+ if (this.eat(_tokenizerTypes.types.bracketL)) {
+ prop.computed = true;
+ prop.key = this.parseMaybeAssign();
+ this.expect(_tokenizerTypes.types.bracketR);
+ return prop.key;
+ } else {
+ prop.computed = false;
+ return prop.key = this.match(_tokenizerTypes.types.num) || this.match(_tokenizerTypes.types.string) ? this.parseExprAtom() : this.parseIdentifier(true);
+ }
+};
+
+// Initialize empty function node.
+
+pp.initFunction = function (node, isAsync) {
+ node.id = null;
+ node.generator = false;
+ node.expression = false;
+ if (this.hasPlugin("asyncFunctions")) {
+ node.async = !!isAsync;
+ }
+};
+
+// Parse object or class method.
+
+pp.parseMethod = function (node, isGenerator, isAsync) {
+ var oldInMethod = this.state.inMethod;
+ this.state.inMethod = node.kind || true;
+ this.initFunction(node, isAsync);
+ this.expect(_tokenizerTypes.types.parenL);
+ node.params = this.parseBindingList(_tokenizerTypes.types.parenR, false, this.hasPlugin("trailingFunctionCommas"));
+ node.generator = isGenerator;
+ this.parseFunctionBody(node);
+ this.state.inMethod = oldInMethod;
+ return node;
+};
+
+// Parse arrow function expression with given parameters.
+
+pp.parseArrowExpression = function (node, params, isAsync) {
+ this.initFunction(node, isAsync);
+ node.params = this.toAssignableList(params, true);
+ this.parseFunctionBody(node, true);
+ return this.finishNode(node, "ArrowFunctionExpression");
+};
+
+// Parse function body and check parameters.
+
+pp.parseFunctionBody = function (node, allowExpression) {
+ var isExpression = allowExpression && !this.match(_tokenizerTypes.types.braceL);
+
+ var oldInAsync = this.state.inAsync;
+ this.state.inAsync = node.async;
+ if (isExpression) {
+ node.body = this.parseMaybeAssign();
+ node.expression = true;
+ } else {
+ // Start a new scope with regard to labels and the `inFunction`
+ // flag (restore them to their old value afterwards).
+ var oldInFunc = this.state.inFunction,
+ oldInGen = this.state.inGenerator,
+ oldLabels = this.state.labels;
+ this.state.inFunction = true;this.state.inGenerator = node.generator;this.state.labels = [];
+ node.body = this.parseBlock(true);
+ node.expression = false;
+ this.state.inFunction = oldInFunc;this.state.inGenerator = oldInGen;this.state.labels = oldLabels;
+ }
+ this.state.inAsync = oldInAsync;
+
+ // If this is a strict mode function, verify that argument names
+ // are not repeated, and it does not try to bind the words `eval`
+ // or `arguments`.
+ var checkLVal = this.state.strict;
+ var checkLValStrict = false;
+ var isStrict = false;
+
+ // arrow function
+ if (allowExpression) checkLVal = true;
+
+ // normal function
+ if (!isExpression && node.body.directives.length) {
+ var _arr = node.body.directives;
+
+ for (var _i2 = 0; _i2 < _arr.length; _i2++) {
+ var directive = _arr[_i2];
+ if (directive.value.value === "use strict") {
+ isStrict = true;
+ checkLVal = true;
+ checkLValStrict = true;
+ break;
+ }
+ }
+ }
+
+ //
+ if (isStrict && node.id && node.id.type === "Identifier" && node.id.name === "yield") {
+ this.raise(node.id.start, "Binding yield in strict mode");
+ }
+
+ if (checkLVal) {
+ var nameHash = _Object$create(null);
+ var oldStrict = this.state.strict;
+ if (checkLValStrict) this.state.strict = true;
+ if (node.id) {
+ this.checkLVal(node.id, true);
+ }
+ var _arr2 = node.params;
+ for (var _i3 = 0; _i3 < _arr2.length; _i3++) {
+ var param = _arr2[_i3];
+ this.checkLVal(param, true, nameHash);
+ }
+ this.state.strict = oldStrict;
+ }
+};
+
+// Parses a comma-separated list of expressions, and returns them as
+// an array. `close` is the token type that ends the list, and
+// `allowEmpty` can be turned on to allow subsequent commas with
+// nothing in between them to be parsed as `null` (which is needed
+// for array literals).
+
+pp.parseExprList = function (close, allowTrailingComma, allowEmpty, refShorthandDefaultPos) {
+ var elts = [],
+ first = true;
+ while (!this.eat(close)) {
+ if (first) {
+ first = false;
+ } else {
+ this.expect(_tokenizerTypes.types.comma);
+ if (allowTrailingComma && this.eat(close)) break;
+ }
+
+ elts.push(this.parseExprListItem(allowEmpty, refShorthandDefaultPos));
+ }
+ return elts;
+};
+
+pp.parseExprListItem = function (allowEmpty, refShorthandDefaultPos) {
+ var elt = undefined;
+ if (allowEmpty && this.match(_tokenizerTypes.types.comma)) {
+ elt = null;
+ } else if (this.match(_tokenizerTypes.types.ellipsis)) {
+ elt = this.parseSpread(refShorthandDefaultPos);
+ } else {
+ elt = this.parseMaybeAssign(false, refShorthandDefaultPos);
+ }
+ return elt;
+};
+
+// Parse the next token as an identifier. If `liberal` is true (used
+// when parsing properties), it will also convert keywords into
+// identifiers.
+
+pp.parseIdentifier = function (liberal) {
+ var node = this.startNode();
+
+ if (this.match(_tokenizerTypes.types.name)) {
+ if (!liberal && this.state.strict && _utilIdentifier.reservedWords.strict(this.state.value)) {
+ this.raise(this.state.start, "The keyword '" + this.state.value + "' is reserved");
+ }
+
+ node.name = this.state.value;
+ } else if (liberal && this.state.type.keyword) {
+ node.name = this.state.type.keyword;
+ } else {
+ this.unexpected();
+ }
+
+ if (!liberal && node.name === "await" && this.state.inAsync) {
+ this.raise(node.start, "invalid use of await inside of an async function");
+ }
+
+ this.next();
+ return this.finishNode(node, "Identifier");
+};
+
+// Parses await expression inside async function.
+
+pp.parseAwait = function (node) {
+ if (!this.state.inAsync) {
+ this.unexpected();
+ }
+ if (this.isLineTerminator()) {
+ this.unexpected();
+ }
+ if (this.match(_tokenizerTypes.types.star)) {
+ this.raise(node.start, "await* has been removed from the async functions proposal. Use Promise.all() instead.");
+ }
+ node.argument = this.parseMaybeUnary();
+ return this.finishNode(node, "AwaitExpression");
+};
+
+// Parses yield expression inside generator.
+
+pp.parseYield = function () {
+ var node = this.startNode();
+ this.next();
+ if (this.match(_tokenizerTypes.types.semi) || this.canInsertSemicolon() || !this.match(_tokenizerTypes.types.star) && !this.state.type.startsExpr) {
+ node.delegate = false;
+ node.argument = null;
+ } else {
+ node.delegate = this.eat(_tokenizerTypes.types.star);
+ node.argument = this.parseMaybeAssign();
+ }
+ return this.finishNode(node, "YieldExpression");
+};
+},{"17":17,"18":18,"21":21,"25":25,"5":5}],5:[function(_dereq_,module,exports){
+"use strict";
+
+var _inherits = _dereq_(24)["default"];
+
+var _classCallCheck = _dereq_(23)["default"];
+
+var _interopRequireDefault = _dereq_(25)["default"];
+
+exports.__esModule = true;
+
+var _utilIdentifier = _dereq_(18);
+
+var _options = _dereq_(2);
+
+var _tokenizer = _dereq_(15);
+
+var _tokenizer2 = _interopRequireDefault(_tokenizer);
+
+var plugins = {};
+
+exports.plugins = plugins;
+
+var Parser = (function (_Tokenizer) {
+ _inherits(Parser, _Tokenizer);
+
+ function Parser(options, input) {
+ _classCallCheck(this, Parser);
+
+ options = _options.getOptions(options);
+ _Tokenizer.call(this, options, input);
+
+ this.options = options;
+ this.inModule = this.options.sourceType === "module";
+ this.isReservedWord = _utilIdentifier.reservedWords[6];
+ this.input = input;
+ this.plugins = this.loadPlugins(this.options.plugins);
+ this.filename = options.sourceFilename;
+
+ // If enabled, skip leading hashbang line.
+ if (this.state.pos === 0 && this.input[0] === "#" && this.input[1] === "!") {
+ this.skipLineComment(2);
+ }
+ }
+
+ Parser.prototype.hasPlugin = function hasPlugin(name) {
+ return !!(this.plugins["*"] || this.plugins[name]);
+ };
+
+ Parser.prototype.extend = function extend(name, f) {
+ this[name] = f(this[name]);
+ };
+
+ Parser.prototype.loadPlugins = function loadPlugins(plugins) {
+ var pluginMap = {};
+
+ if (plugins.indexOf("flow") >= 0) {
+ // ensure flow plugin loads last
+ plugins = plugins.filter(function (plugin) {
+ return plugin !== "flow";
+ });
+ plugins.push("flow");
+ }
+
+ for (var _i = 0; _i < plugins.length; _i++) {
+ var _name = plugins[_i];
+ if (!pluginMap[_name]) {
+ pluginMap[_name] = true;
+
+ var plugin = exports.plugins[_name];
+ if (plugin) plugin(this);
+ }
+ }
+
+ return pluginMap;
+ };
+
+ Parser.prototype.parse = function parse() {
+ var file = this.startNode();
+ var program = this.startNode();
+ this.nextToken();
+ return this.parseTopLevel(file, program);
+ };
+
+ return Parser;
+})(_tokenizer2["default"]);
+
+exports["default"] = Parser;
+},{"15":15,"18":18,"2":2,"23":23,"24":24,"25":25}],6:[function(_dereq_,module,exports){
+"use strict";
+
+var _interopRequireDefault = _dereq_(25)["default"];
+
+var _utilLocation = _dereq_(19);
+
+var _index = _dereq_(5);
+
+var _index2 = _interopRequireDefault(_index);
+
+var pp = _index2["default"].prototype;
+
+// This function is used to raise exceptions on parse errors. It
+// takes an offset integer (into the current `input`) to indicate
+// the location of the error, attaches the position to the end
+// of the error message, and then raises a `SyntaxError` with that
+// message.
+
+pp.raise = function (pos, message) {
+ var loc = _utilLocation.getLineInfo(this.input, pos);
+ message += " (" + loc.line + ":" + loc.column + ")";
+ var err = new SyntaxError(message);
+ err.pos = pos;
+ err.loc = loc;
+ throw err;
+};
+},{"19":19,"25":25,"5":5}],7:[function(_dereq_,module,exports){
+/* eslint indent: 0 */
+
+"use strict";
+
+var _interopRequireDefault = _dereq_(25)["default"];
+
+var _tokenizerTypes = _dereq_(17);
+
+var _index = _dereq_(5);
+
+var _index2 = _interopRequireDefault(_index);
+
+var _utilIdentifier = _dereq_(18);
+
+var pp = _index2["default"].prototype;
+
+// Convert existing expression atom to assignable pattern
+// if possible.
+
+pp.toAssignable = function (node, isBinding) {
+ if (node) {
+ switch (node.type) {
+ case "Identifier":
+ case "ObjectPattern":
+ case "ArrayPattern":
+ case "AssignmentPattern":
+ break;
+
+ case "ObjectExpression":
+ node.type = "ObjectPattern";
+ var _arr = node.properties;
+ for (var _i = 0; _i < _arr.length; _i++) {
+ var prop = _arr[_i];
+ if (prop.type === "ObjectMethod") {
+ if (prop.kind === "get" || prop.kind === "set") {
+ this.raise(prop.key.start, "Object pattern can't contain getter or setter");
+ } else {
+ this.raise(prop.key.start, "Object pattern can't contain methods");
+ }
+ } else {
+ this.toAssignable(prop, isBinding);
+ }
+ }
+ break;
+
+ case "ObjectProperty":
+ this.toAssignable(node.value, isBinding);
+ break;
+
+ case "SpreadProperty":
+ node.type = "RestProperty";
+ break;
+
+ case "ArrayExpression":
+ node.type = "ArrayPattern";
+ this.toAssignableList(node.elements, isBinding);
+ break;
+
+ case "AssignmentExpression":
+ if (node.operator === "=") {
+ node.type = "AssignmentPattern";
+ delete node.operator;
+ } else {
+ this.raise(node.left.end, "Only '=' operator can be used for specifying default value.");
+ }
+ break;
+
+ case "MemberExpression":
+ if (!isBinding) break;
+
+ default:
+ this.raise(node.start, "Assigning to rvalue");
+ }
+ }
+ return node;
+};
+
+// Convert list of expression atoms to binding list.
+
+pp.toAssignableList = function (exprList, isBinding) {
+ var end = exprList.length;
+ if (end) {
+ var last = exprList[end - 1];
+ if (last && last.type === "RestElement") {
+ --end;
+ } else if (last && last.type === "SpreadElement") {
+ last.type = "RestElement";
+ var arg = last.argument;
+ this.toAssignable(arg, isBinding);
+ if (arg.type !== "Identifier" && arg.type !== "MemberExpression" && arg.type !== "ArrayPattern") {
+ this.unexpected(arg.start);
+ }
+ --end;
+ }
+ }
+ for (var i = 0; i < end; i++) {
+ var elt = exprList[i];
+ if (elt) this.toAssignable(elt, isBinding);
+ }
+ return exprList;
+};
+
+// Convert list of expression atoms to a list of
+
+pp.toReferencedList = function (exprList) {
+ return exprList;
+};
+
+// Parses spread element.
+
+pp.parseSpread = function (refShorthandDefaultPos) {
+ var node = this.startNode();
+ this.next();
+ node.argument = this.parseMaybeAssign(refShorthandDefaultPos);
+ return this.finishNode(node, "SpreadElement");
+};
+
+pp.parseRest = function () {
+ var node = this.startNode();
+ this.next();
+ node.argument = this.parseBindingIdentifier();
+ return this.finishNode(node, "RestElement");
+};
+
+pp.shouldAllowYieldIdentifier = function () {
+ return this.match(_tokenizerTypes.types._yield) && !this.state.strict && !this.state.inGenerator;
+};
+
+pp.parseBindingIdentifier = function () {
+ return this.parseIdentifier(this.shouldAllowYieldIdentifier());
+};
+
+// Parses lvalue (assignable) atom.
+
+pp.parseBindingAtom = function () {
+ switch (this.state.type) {
+ case _tokenizerTypes.types._yield:
+ if (this.state.strict || this.state.inGenerator) this.unexpected();
+
+ case _tokenizerTypes.types.name:
+ return this.parseIdentifier(true);
+
+ case _tokenizerTypes.types.bracketL:
+ var node = this.startNode();
+ this.next();
+ node.elements = this.parseBindingList(_tokenizerTypes.types.bracketR, true, true);
+ return this.finishNode(node, "ArrayPattern");
+
+ case _tokenizerTypes.types.braceL:
+ return this.parseObj(true);
+
+ default:
+ this.unexpected();
+ }
+};
+
+pp.parseBindingList = function (close, allowEmpty, allowTrailingComma) {
+ var elts = [];
+ var first = true;
+ while (!this.eat(close)) {
+ if (first) {
+ first = false;
+ } else {
+ this.expect(_tokenizerTypes.types.comma);
+ }
+ if (allowEmpty && this.match(_tokenizerTypes.types.comma)) {
+ elts.push(null);
+ } else if (allowTrailingComma && this.eat(close)) {
+ break;
+ } else if (this.match(_tokenizerTypes.types.ellipsis)) {
+ elts.push(this.parseAssignableListItemTypes(this.parseRest()));
+ this.expect(close);
+ break;
+ } else {
+ var left = this.parseMaybeDefault();
+ this.parseAssignableListItemTypes(left);
+ elts.push(this.parseMaybeDefault(null, null, left));
+ }
+ }
+ return elts;
+};
+
+pp.parseAssignableListItemTypes = function (param) {
+ return param;
+};
+
+// Parses assignment pattern around given atom if possible.
+
+pp.parseMaybeDefault = function (startPos, startLoc, left) {
+ startLoc = startLoc || this.state.startLoc;
+ startPos = startPos || this.state.start;
+ left = left || this.parseBindingAtom();
+ if (!this.eat(_tokenizerTypes.types.eq)) return left;
+
+ var node = this.startNodeAt(startPos, startLoc);
+ node.left = left;
+ node.right = this.parseMaybeAssign();
+ return this.finishNode(node, "AssignmentPattern");
+};
+
+// Verify that a node is an lval — something that can be assigned
+// to.
+
+pp.checkLVal = function (expr, isBinding, checkClashes) {
+ switch (expr.type) {
+ case "Identifier":
+ if (this.state.strict && (_utilIdentifier.reservedWords.strictBind(expr.name) || _utilIdentifier.reservedWords.strict(expr.name))) {
+ this.raise(expr.start, (isBinding ? "Binding " : "Assigning to ") + expr.name + " in strict mode");
+ }
+
+ if (checkClashes) {
+ // we need to prefix this with an underscore for the cases where we have a key of
+ // `__proto__`. there's a bug in old V8 where the following wouldn't work:
+ //
+ // > var obj = Object.create(null);
+ // undefined
+ // > obj.__proto__
+ // null
+ // > obj.__proto__ = true;
+ // true
+ // > obj.__proto__
+ // null
+ var key = "_" + expr.name;
+
+ if (checkClashes[key]) {
+ this.raise(expr.start, "Argument name clash in strict mode");
+ } else {
+ checkClashes[key] = true;
+ }
+ }
+ break;
+
+ case "MemberExpression":
+ if (isBinding) this.raise(expr.start, (isBinding ? "Binding" : "Assigning to") + " member expression");
+ break;
+
+ case "ObjectPattern":
+ var _arr2 = expr.properties;
+
+ for (var _i2 = 0; _i2 < _arr2.length; _i2++) {
+ var prop = _arr2[_i2];
+ if (prop.type === "ObjectProperty") prop = prop.value;
+ this.checkLVal(prop, isBinding, checkClashes);
+ }
+ break;
+
+ case "ArrayPattern":
+ var _arr3 = expr.elements;
+
+ for (var _i3 = 0; _i3 < _arr3.length; _i3++) {
+ var elem = _arr3[_i3];
+ if (elem) this.checkLVal(elem, isBinding, checkClashes);
+ }
+ break;
+
+ case "AssignmentPattern":
+ this.checkLVal(expr.left, isBinding, checkClashes);
+ break;
+
+ case "RestProperty":
+ case "RestElement":
+ this.checkLVal(expr.argument, isBinding, checkClashes);
+ break;
+
+ default:
+ this.raise(expr.start, (isBinding ? "Binding" : "Assigning to") + " rvalue");
+ }
+};
+},{"17":17,"18":18,"25":25,"5":5}],8:[function(_dereq_,module,exports){
+"use strict";
+
+var _classCallCheck = _dereq_(23)["default"];
+
+var _interopRequireDefault = _dereq_(25)["default"];
+
+var _index = _dereq_(5);
+
+var _index2 = _interopRequireDefault(_index);
+
+var _utilLocation = _dereq_(19);
+
+// Start an AST node, attaching a start offset.
+
+var pp = _index2["default"].prototype;
+
+var Node = (function () {
+ function Node(pos, loc, filename) {
+ _classCallCheck(this, Node);
+
+ this.type = "";
+ this.start = pos;
+ this.end = 0;
+ this.loc = new _utilLocation.SourceLocation(loc);
+ if (filename) this.loc.filename = filename;
+ }
+
+ Node.prototype.__clone = function __clone() {
+ var node2 = new Node();
+ for (var key in this) {
+ node2[key] = this[key];
+ }return node2;
+ };
+
+ return Node;
+})();
+
+pp.startNode = function () {
+ return new Node(this.state.start, this.state.startLoc, this.filename);
+};
+
+pp.startNodeAt = function (pos, loc) {
+ return new Node(pos, loc, this.filename);
+};
+
+function finishNodeAt(node, type, pos, loc) {
+ node.type = type;
+ node.end = pos;
+ node.loc.end = loc;
+ this.processComment(node);
+ return node;
+}
+
+// Finish an AST node, adding `type` and `end` properties.
+
+pp.finishNode = function (node, type) {
+ return finishNodeAt.call(this, node, type, this.state.lastTokEnd, this.state.lastTokEndLoc);
+};
+
+// Finish node at given position
+
+pp.finishNodeAt = function (node, type, pos, loc) {
+ return finishNodeAt.call(this, node, type, pos, loc);
+};
+},{"19":19,"23":23,"25":25,"5":5}],9:[function(_dereq_,module,exports){
+/* eslint indent: 0 */
+/* eslint max-len: 0 */
+
+"use strict";
+
+var _Object$create = _dereq_(21)["default"];
+
+var _interopRequireDefault = _dereq_(25)["default"];
+
+var _tokenizerTypes = _dereq_(17);
+
+var _index = _dereq_(5);
+
+var _index2 = _interopRequireDefault(_index);
+
+var _utilWhitespace = _dereq_(20);
+
+var pp = _index2["default"].prototype;
+
+// ### Statement parsing
+
+// Parse a program. Initializes the parser, reads any number of
+// statements, and wraps them in a Program node. Optionally takes a
+// `program` argument. If present, the statements will be appended
+// to its body instead of creating a new node.
+
+pp.parseTopLevel = function (file, program) {
+ program.sourceType = this.options.sourceType;
+
+ this.parseBlockBody(program, true, true, _tokenizerTypes.types.eof);
+
+ file.program = this.finishNode(program, "Program");
+ file.comments = this.state.comments;
+ file.tokens = this.state.tokens;
+
+ return this.finishNode(file, "File");
+};
+
+var loopLabel = { kind: "loop" },
+ switchLabel = { kind: "switch" };
+
+// TODO
+
+pp.stmtToDirective = function (stmt) {
+ var expr = stmt.expression;
+
+ var directiveLiteral = this.startNodeAt(expr.start, expr.loc.start);
+ var directive = this.startNodeAt(stmt.start, stmt.loc.start);
+
+ var raw = this.input.slice(expr.start, expr.end);
+ var val = directiveLiteral.value = raw.slice(1, -1); // remove quotes
+
+ this.addExtra(directiveLiteral, "raw", raw);
+ this.addExtra(directiveLiteral, "rawValue", val);
+
+ directive.value = this.finishNodeAt(directiveLiteral, "DirectiveLiteral", expr.end, expr.loc.end);
+
+ return this.finishNodeAt(directive, "Directive", stmt.end, stmt.loc.end);
+};
+
+// Parse a single statement.
+//
+// If expecting a statement and finding a slash operator, parse a
+// regular expression literal. This is to handle cases like
+// `if (foo) /blah/.exec(foo)`, where looking at the previous token
+// does not help.
+
+pp.parseStatement = function (declaration, topLevel) {
+ if (this.match(_tokenizerTypes.types.at)) {
+ this.parseDecorators(true);
+ }
+
+ var starttype = this.state.type,
+ node = this.startNode();
+
+ // Most types of statements are recognized by the keyword they
+ // start with. Many are trivial to parse, some require a bit of
+ // complexity.
+
+ switch (starttype) {
+ case _tokenizerTypes.types._break:case _tokenizerTypes.types._continue:
+ return this.parseBreakContinueStatement(node, starttype.keyword);
+ case _tokenizerTypes.types._debugger:
+ return this.parseDebuggerStatement(node);
+ case _tokenizerTypes.types._do:
+ return this.parseDoStatement(node);
+ case _tokenizerTypes.types._for:
+ return this.parseForStatement(node);
+ case _tokenizerTypes.types._function:
+ if (!declaration) this.unexpected();
+ return this.parseFunctionStatement(node);
+
+ case _tokenizerTypes.types._class:
+ if (!declaration) this.unexpected();
+ this.takeDecorators(node);
+ return this.parseClass(node, true);
+
+ case _tokenizerTypes.types._if:
+ return this.parseIfStatement(node);
+ case _tokenizerTypes.types._return:
+ return this.parseReturnStatement(node);
+ case _tokenizerTypes.types._switch:
+ return this.parseSwitchStatement(node);
+ case _tokenizerTypes.types._throw:
+ return this.parseThrowStatement(node);
+ case _tokenizerTypes.types._try:
+ return this.parseTryStatement(node);
+
+ case _tokenizerTypes.types._let:
+ case _tokenizerTypes.types._const:
+ if (!declaration) this.unexpected(); // NOTE: falls through to _var
+
+ case _tokenizerTypes.types._var:
+ return this.parseVarStatement(node, starttype);
+
+ case _tokenizerTypes.types._while:
+ return this.parseWhileStatement(node);
+ case _tokenizerTypes.types._with:
+ return this.parseWithStatement(node);
+ case _tokenizerTypes.types.braceL:
+ return this.parseBlock();
+ case _tokenizerTypes.types.semi:
+ return this.parseEmptyStatement(node);
+ case _tokenizerTypes.types._export:
+ case _tokenizerTypes.types._import:
+ if (!this.options.allowImportExportEverywhere) {
+ if (!topLevel) {
+ this.raise(this.state.start, "'import' and 'export' may only appear at the top level");
+ }
+
+ if (!this.inModule) {
+ this.raise(this.state.start, "'import' and 'export' may appear only with 'sourceType: module'");
+ }
+ }
+ return starttype === _tokenizerTypes.types._import ? this.parseImport(node) : this.parseExport(node);
+
+ case _tokenizerTypes.types.name:
+ if (this.hasPlugin("asyncFunctions") && this.state.value === "async") {
+ // peek ahead and see if next token is a function
+ var state = this.state.clone();
+ this.next();
+ if (this.match(_tokenizerTypes.types._function) && !this.canInsertSemicolon()) {
+ this.expect(_tokenizerTypes.types._function);
+ return this.parseFunction(node, true, false, true);
+ } else {
+ this.state = state;
+ }
+ }
+ }
+
+ // If the statement does not start with a statement keyword or a
+ // brace, it's an ExpressionStatement or LabeledStatement. We
+ // simply start parsing an expression, and afterwards, if the
+ // next token is a colon and the expression was a simple
+ // Identifier node, we switch to interpreting it as a label.
+ var maybeName = this.state.value;
+ var expr = this.parseExpression();
+
+ if (starttype === _tokenizerTypes.types.name && expr.type === "Identifier" && this.eat(_tokenizerTypes.types.colon)) {
+ return this.parseLabeledStatement(node, maybeName, expr);
+ } else {
+ return this.parseExpressionStatement(node, expr);
+ }
+};
+
+pp.takeDecorators = function (node) {
+ if (this.state.decorators.length) {
+ node.decorators = this.state.decorators;
+ this.state.decorators = [];
+ }
+};
+
+pp.parseDecorators = function (allowExport) {
+ while (this.match(_tokenizerTypes.types.at)) {
+ this.state.decorators.push(this.parseDecorator());
+ }
+
+ if (allowExport && this.match(_tokenizerTypes.types._export)) {
+ return;
+ }
+
+ if (!this.match(_tokenizerTypes.types._class)) {
+ this.raise(this.state.start, "Leading decorators must be attached to a class declaration");
+ }
+};
+
+pp.parseDecorator = function () {
+ if (!this.hasPlugin("decorators")) {
+ this.unexpected();
+ }
+ var node = this.startNode();
+ this.next();
+ node.expression = this.parseMaybeAssign();
+ return this.finishNode(node, "Decorator");
+};
+
+pp.parseBreakContinueStatement = function (node, keyword) {
+ var isBreak = keyword === "break";
+ this.next();
+
+ if (this.isLineTerminator()) {
+ node.label = null;
+ } else if (!this.match(_tokenizerTypes.types.name)) {
+ this.unexpected();
+ } else {
+ node.label = this.parseIdentifier();
+ this.semicolon();
+ }
+
+ // Verify that there is an actual destination to break or
+ // continue to.
+ var i = undefined;
+ for (i = 0; i < this.state.labels.length; ++i) {
+ var lab = this.state.labels[i];
+ if (node.label == null || lab.name === node.label.name) {
+ if (lab.kind != null && (isBreak || lab.kind === "loop")) break;
+ if (node.label && isBreak) break;
+ }
+ }
+ if (i === this.state.labels.length) this.raise(node.start, "Unsyntactic " + keyword);
+ return this.finishNode(node, isBreak ? "BreakStatement" : "ContinueStatement");
+};
+
+pp.parseDebuggerStatement = function (node) {
+ this.next();
+ this.semicolon();
+ return this.finishNode(node, "DebuggerStatement");
+};
+
+pp.parseDoStatement = function (node) {
+ this.next();
+ this.state.labels.push(loopLabel);
+ node.body = this.parseStatement(false);
+ this.state.labels.pop();
+ this.expect(_tokenizerTypes.types._while);
+ node.test = this.parseParenExpression();
+ this.eat(_tokenizerTypes.types.semi);
+ return this.finishNode(node, "DoWhileStatement");
+};
+
+// Disambiguating between a `for` and a `for`/`in` or `for`/`of`
+// loop is non-trivial. Basically, we have to parse the init `var`
+// statement or expression, disallowing the `in` operator (see
+// the second parameter to `parseExpression`), and then check
+// whether the next token is `in` or `of`. When there is no init
+// part (semicolon immediately after the opening parenthesis), it
+// is a regular `for` loop.
+
+pp.parseForStatement = function (node) {
+ this.next();
+ this.state.labels.push(loopLabel);
+ this.expect(_tokenizerTypes.types.parenL);
+
+ if (this.match(_tokenizerTypes.types.semi)) {
+ return this.parseFor(node, null);
+ }
+
+ if (this.match(_tokenizerTypes.types._var) || this.match(_tokenizerTypes.types._let) || this.match(_tokenizerTypes.types._const)) {
+ var _init = this.startNode(),
+ varKind = this.state.type;
+ this.next();
+ this.parseVar(_init, true, varKind);
+ this.finishNode(_init, "VariableDeclaration");
+
+ if (this.match(_tokenizerTypes.types._in) || this.isContextual("of")) {
+ if (_init.declarations.length === 1 && !_init.declarations[0].init) {
+ return this.parseForIn(node, _init);
+ }
+ }
+
+ return this.parseFor(node, _init);
+ }
+
+ var refShorthandDefaultPos = { start: 0 };
+ var init = this.parseExpression(true, refShorthandDefaultPos);
+ if (this.match(_tokenizerTypes.types._in) || this.isContextual("of")) {
+ this.toAssignable(init);
+ this.checkLVal(init);
+ return this.parseForIn(node, init);
+ } else if (refShorthandDefaultPos.start) {
+ this.unexpected(refShorthandDefaultPos.start);
+ }
+ return this.parseFor(node, init);
+};
+
+pp.parseFunctionStatement = function (node) {
+ this.next();
+ return this.parseFunction(node, true);
+};
+
+pp.parseIfStatement = function (node) {
+ this.next();
+ node.test = this.parseParenExpression();
+ node.consequent = this.parseStatement(false);
+ node.alternate = this.eat(_tokenizerTypes.types._else) ? this.parseStatement(false) : null;
+ return this.finishNode(node, "IfStatement");
+};
+
+pp.parseReturnStatement = function (node) {
+ if (!this.state.inFunction && !this.options.allowReturnOutsideFunction) {
+ this.raise(this.state.start, "'return' outside of function");
+ }
+
+ this.next();
+
+ // In `return` (and `break`/`continue`), the keywords with
+ // optional arguments, we eagerly look for a semicolon or the
+ // possibility to insert one.
+
+ if (this.isLineTerminator()) {
+ node.argument = null;
+ } else {
+ node.argument = this.parseExpression();
+ this.semicolon();
+ }
+
+ return this.finishNode(node, "ReturnStatement");
+};
+
+pp.parseSwitchStatement = function (node) {
+ this.next();
+ node.discriminant = this.parseParenExpression();
+ node.cases = [];
+ this.expect(_tokenizerTypes.types.braceL);
+ this.state.labels.push(switchLabel);
+
+ // Statements under must be grouped (by label) in SwitchCase
+ // nodes. `cur` is used to keep the node that we are currently
+ // adding statements to.
+
+ var cur = undefined;
+ for (var sawDefault = undefined; !this.match(_tokenizerTypes.types.braceR);) {
+ if (this.match(_tokenizerTypes.types._case) || this.match(_tokenizerTypes.types._default)) {
+ var isCase = this.match(_tokenizerTypes.types._case);
+ if (cur) this.finishNode(cur, "SwitchCase");
+ node.cases.push(cur = this.startNode());
+ cur.consequent = [];
+ this.next();
+ if (isCase) {
+ cur.test = this.parseExpression();
+ } else {
+ if (sawDefault) this.raise(this.state.lastTokStart, "Multiple default clauses");
+ sawDefault = true;
+ cur.test = null;
+ }
+ this.expect(_tokenizerTypes.types.colon);
+ } else {
+ if (cur) {
+ cur.consequent.push(this.parseStatement(true));
+ } else {
+ this.unexpected();
+ }
+ }
+ }
+ if (cur) this.finishNode(cur, "SwitchCase");
+ this.next(); // Closing brace
+ this.state.labels.pop();
+ return this.finishNode(node, "SwitchStatement");
+};
+
+pp.parseThrowStatement = function (node) {
+ this.next();
+ if (_utilWhitespace.lineBreak.test(this.input.slice(this.state.lastTokEnd, this.state.start))) this.raise(this.state.lastTokEnd, "Illegal newline after throw");
+ node.argument = this.parseExpression();
+ this.semicolon();
+ return this.finishNode(node, "ThrowStatement");
+};
+
+// Reused empty array added for node fields that are always empty.
+
+var empty = [];
+
+pp.parseTryStatement = function (node) {
+ this.next();
+
+ node.block = this.parseBlock();
+ node.handler = null;
+
+ if (this.match(_tokenizerTypes.types._catch)) {
+ var clause = this.startNode();
+ this.next();
+
+ this.expect(_tokenizerTypes.types.parenL);
+ clause.param = this.parseBindingAtom();
+ this.checkLVal(clause.param, true, _Object$create(null));
+ this.expect(_tokenizerTypes.types.parenR);
+
+ clause.body = this.parseBlock();
+ node.handler = this.finishNode(clause, "CatchClause");
+ }
+
+ node.guardedHandlers = empty;
+ node.finalizer = this.eat(_tokenizerTypes.types._finally) ? this.parseBlock() : null;
+
+ if (!node.handler && !node.finalizer) {
+ this.raise(node.start, "Missing catch or finally clause");
+ }
+
+ return this.finishNode(node, "TryStatement");
+};
+
+pp.parseVarStatement = function (node, kind) {
+ this.next();
+ this.parseVar(node, false, kind);
+ this.semicolon();
+ return this.finishNode(node, "VariableDeclaration");
+};
+
+pp.parseWhileStatement = function (node) {
+ this.next();
+ node.test = this.parseParenExpression();
+ this.state.labels.push(loopLabel);
+ node.body = this.parseStatement(false);
+ this.state.labels.pop();
+ return this.finishNode(node, "WhileStatement");
+};
+
+pp.parseWithStatement = function (node) {
+ if (this.state.strict) this.raise(this.state.start, "'with' in strict mode");
+ this.next();
+ node.object = this.parseParenExpression();
+ node.body = this.parseStatement(false);
+ return this.finishNode(node, "WithStatement");
+};
+
+pp.parseEmptyStatement = function (node) {
+ this.next();
+ return this.finishNode(node, "EmptyStatement");
+};
+
+pp.parseLabeledStatement = function (node, maybeName, expr) {
+ var _arr = this.state.labels;
+
+ for (var _i = 0; _i < _arr.length; _i++) {
+ var label = _arr[_i];
+ if (label.name === maybeName) {
+ this.raise(expr.start, "Label '" + maybeName + "' is already declared");
+ }
+ }
+
+ var kind = this.state.type.isLoop ? "loop" : this.match(_tokenizerTypes.types._switch) ? "switch" : null;
+ for (var i = this.state.labels.length - 1; i >= 0; i--) {
+ var label = this.state.labels[i];
+ if (label.statementStart === node.start) {
+ label.statementStart = this.state.start;
+ label.kind = kind;
+ } else {
+ break;
+ }
+ }
+
+ this.state.labels.push({ name: maybeName, kind: kind, statementStart: this.state.start });
+ node.body = this.parseStatement(true);
+ this.state.labels.pop();
+ node.label = expr;
+ return this.finishNode(node, "LabeledStatement");
+};
+
+pp.parseExpressionStatement = function (node, expr) {
+ node.expression = expr;
+ this.semicolon();
+ return this.finishNode(node, "ExpressionStatement");
+};
+
+// Parse a semicolon-enclosed block of statements, handling `"use
+// strict"` declarations when `allowStrict` is true (used for
+// function bodies).
+
+pp.parseBlock = function (allowDirectives) {
+ var node = this.startNode();
+ this.expect(_tokenizerTypes.types.braceL);
+ this.parseBlockBody(node, allowDirectives, false, _tokenizerTypes.types.braceR);
+ return this.finishNode(node, "BlockStatement");
+};
+
+// TODO
+
+pp.parseBlockBody = function (node, allowDirectives, topLevel, end) {
+ node.body = [];
+ node.directives = [];
+
+ var parsedNonDirective = false;
+ var oldStrict = undefined;
+ var octalPosition = undefined;
+
+ while (!this.eat(end)) {
+ if (!parsedNonDirective && this.state.containsOctal && !octalPosition) {
+ octalPosition = this.state.octalPosition;
+ }
+
+ var stmt = this.parseStatement(true, topLevel);
+
+ if (allowDirectives && !parsedNonDirective && stmt.type === "ExpressionStatement" && stmt.expression.type === "StringLiteral" && !stmt.expression.extra.parenthesized) {
+ var directive = this.stmtToDirective(stmt);
+ node.directives.push(directive);
+
+ if (oldStrict === undefined && directive.value.value === "use strict") {
+ oldStrict = this.state.strict;
+ this.setStrict(true);
+
+ if (octalPosition) {
+ this.raise(octalPosition, "Octal literal in strict mode");
+ }
+ }
+
+ continue;
+ }
+
+ parsedNonDirective = true;
+ node.body.push(stmt);
+ }
+
+ if (oldStrict === false) {
+ this.setStrict(false);
+ }
+};
+
+// Parse a regular `for` loop. The disambiguation code in
+// `parseStatement` will already have parsed the init statement or
+// expression.
+
+pp.parseFor = function (node, init) {
+ node.init = init;
+ this.expect(_tokenizerTypes.types.semi);
+ node.test = this.match(_tokenizerTypes.types.semi) ? null : this.parseExpression();
+ this.expect(_tokenizerTypes.types.semi);
+ node.update = this.match(_tokenizerTypes.types.parenR) ? null : this.parseExpression();
+ this.expect(_tokenizerTypes.types.parenR);
+ node.body = this.parseStatement(false);
+ this.state.labels.pop();
+ return this.finishNode(node, "ForStatement");
+};
+
+// Parse a `for`/`in` and `for`/`of` loop, which are almost
+// same from parser's perspective.
+
+pp.parseForIn = function (node, init) {
+ var type = this.match(_tokenizerTypes.types._in) ? "ForInStatement" : "ForOfStatement";
+ this.next();
+ node.left = init;
+ node.right = this.parseExpression();
+ this.expect(_tokenizerTypes.types.parenR);
+ node.body = this.parseStatement(false);
+ this.state.labels.pop();
+ return this.finishNode(node, type);
+};
+
+// Parse a list of variable declarations.
+
+pp.parseVar = function (node, isFor, kind) {
+ node.declarations = [];
+ node.kind = kind.keyword;
+ for (;;) {
+ var decl = this.startNode();
+ this.parseVarHead(decl);
+ if (this.eat(_tokenizerTypes.types.eq)) {
+ decl.init = this.parseMaybeAssign(isFor);
+ } else if (kind === _tokenizerTypes.types._const && !(this.match(_tokenizerTypes.types._in) || this.isContextual("of"))) {
+ this.unexpected();
+ } else if (decl.id.type !== "Identifier" && !(isFor && (this.match(_tokenizerTypes.types._in) || this.isContextual("of")))) {
+ this.raise(this.state.lastTokEnd, "Complex binding patterns require an initialization value");
+ } else {
+ decl.init = null;
+ }
+ node.declarations.push(this.finishNode(decl, "VariableDeclarator"));
+ if (!this.eat(_tokenizerTypes.types.comma)) break;
+ }
+ return node;
+};
+
+pp.parseVarHead = function (decl) {
+ decl.id = this.parseBindingAtom();
+ this.checkLVal(decl.id, true);
+};
+
+// Parse a function declaration or literal (depending on the
+// `isStatement` parameter).
+
+pp.parseFunction = function (node, isStatement, allowExpressionBody, isAsync, optionalId) {
+ var oldInMethod = this.state.inMethod;
+ this.state.inMethod = false;
+
+ this.initFunction(node, isAsync);
+
+ if (this.match(_tokenizerTypes.types.star)) {
+ if (node.async && !this.hasPlugin("asyncGenerators")) {
+ this.unexpected();
+ } else {
+ node.generator = true;
+ this.next();
+ }
+ }
+
+ if (isStatement && !optionalId && !this.match(_tokenizerTypes.types.name) && !this.match(_tokenizerTypes.types._yield)) {
+ this.unexpected();
+ }
+
+ if (this.match(_tokenizerTypes.types.name) || this.match(_tokenizerTypes.types._yield)) {
+ node.id = this.parseBindingIdentifier();
+ }
+
+ this.parseFunctionParams(node);
+ this.parseFunctionBody(node, allowExpressionBody);
+
+ this.state.inMethod = oldInMethod;
+
+ return this.finishNode(node, isStatement ? "FunctionDeclaration" : "FunctionExpression");
+};
+
+pp.parseFunctionParams = function (node) {
+ this.expect(_tokenizerTypes.types.parenL);
+ node.params = this.parseBindingList(_tokenizerTypes.types.parenR, false, this.hasPlugin("trailingFunctionCommas"));
+};
+
+// Parse a class declaration or literal (depending on the
+// `isStatement` parameter).
+
+pp.parseClass = function (node, isStatement, optionalId) {
+ this.next();
+ this.parseClassId(node, isStatement, optionalId);
+ this.parseClassSuper(node);
+ this.parseClassBody(node);
+ return this.finishNode(node, isStatement ? "ClassDeclaration" : "ClassExpression");
+};
+
+pp.isClassProperty = function () {
+ return this.match(_tokenizerTypes.types.eq) || this.isLineTerminator();
+};
+
+pp.parseClassBody = function (node) {
+ // class bodies are implicitly strict
+ var oldStrict = this.state.strict;
+ this.state.strict = true;
+
+ var hadConstructorCall = false;
+ var hadConstructor = false;
+ var decorators = [];
+ var classBody = this.startNode();
+
+ classBody.body = [];
+
+ this.expect(_tokenizerTypes.types.braceL);
+
+ while (!this.eat(_tokenizerTypes.types.braceR)) {
+ if (this.eat(_tokenizerTypes.types.semi)) {
+ continue;
+ }
+
+ if (this.match(_tokenizerTypes.types.at)) {
+ decorators.push(this.parseDecorator());
+ continue;
+ }
+
+ var method = this.startNode();
+
+ // steal the decorators if there are any
+ if (decorators.length) {
+ method.decorators = decorators;
+ decorators = [];
+ }
+
+ var isConstructorCall = false;
+ var isMaybeStatic = this.match(_tokenizerTypes.types.name) && this.state.value === "static";
+ var isGenerator = this.eat(_tokenizerTypes.types.star);
+ var isGetSet = false;
+ var isAsync = false;
+
+ this.parsePropertyName(method);
+
+ method["static"] = isMaybeStatic && !this.match(_tokenizerTypes.types.parenL);
+ if (method["static"]) {
+ if (isGenerator) this.unexpected();
+ isGenerator = this.eat(_tokenizerTypes.types.star);
+ this.parsePropertyName(method);
+ }
+
+ if (!isGenerator && method.key.type === "Identifier" && !method.computed) {
+ if (this.isClassProperty()) {
+ classBody.body.push(this.parseClassProperty(method));
+ continue;
+ }
+
+ if (this.hasPlugin("classConstructorCall") && method.key.name === "call" && this.match(_tokenizerTypes.types.name) && this.state.value === "constructor") {
+ isConstructorCall = true;
+ this.parsePropertyName(method);
+ }
+ }
+
+ var isAsyncMethod = this.hasPlugin("asyncFunctions") && !this.match(_tokenizerTypes.types.parenL) && !method.computed && method.key.type === "Identifier" && method.key.name === "async";
+ if (isAsyncMethod) {
+ if (this.hasPlugin("asyncGenerators") && this.eat(_tokenizerTypes.types.star)) isGenerator = true;
+ isAsync = true;
+ this.parsePropertyName(method);
+ }
+
+ method.kind = "method";
+
+ if (!method.computed) {
+ var key = method.key;
+
+ // handle get/set methods
+ // eg. class Foo { get bar() {} set bar() {} }
+ if (!isAsync && !isGenerator && key.type === "Identifier" && !this.match(_tokenizerTypes.types.parenL) && (key.name === "get" || key.name === "set")) {
+ isGetSet = true;
+ method.kind = key.name;
+ key = this.parsePropertyName(method);
+ }
+
+ // disallow invalid constructors
+ var isConstructor = !isConstructorCall && !method["static"] && (key.type === "Identifier" && key.name === "constructor" || key.type === "StringLiteral" && key.value === "constructor");
+ if (isConstructor) {
+ if (hadConstructor) this.raise(key.start, "Duplicate constructor in the same class");
+ if (isGetSet) this.raise(key.start, "Constructor can't have get/set modifier");
+ if (isGenerator) this.raise(key.start, "Constructor can't be a generator");
+ if (isAsync) this.raise(key.start, "Constructor can't be an async function");
+ method.kind = "constructor";
+ hadConstructor = true;
+ }
+
+ // disallow static prototype method
+ var isStaticPrototype = method["static"] && (key.type === "Identifier" && key.name === "prototype" || key.type === "StringLiteral" && key.value === "prototype");
+ if (isStaticPrototype) {
+ this.raise(key.start, "Classes may not have static property named prototype");
+ }
+ }
+
+ // convert constructor to a constructor call
+ if (isConstructorCall) {
+ if (hadConstructorCall) this.raise(method.start, "Duplicate constructor call in the same class");
+ method.kind = "constructorCall";
+ hadConstructorCall = true;
+ }
+
+ // disallow decorators on class constructors
+ if ((method.kind === "constructor" || method.kind === "constructorCall") && method.decorators) {
+ this.raise(method.start, "You can't attach decorators to a class constructor");
+ }
+
+ this.parseClassMethod(classBody, method, isGenerator, isAsync);
+
+ // get methods aren't allowed to have any parameters
+ // set methods must have exactly 1 parameter
+ if (isGetSet) {
+ var paramCount = method.kind === "get" ? 0 : 1;
+ if (method.params.length !== paramCount) {
+ var start = method.start;
+ if (method.kind === "get") {
+ this.raise(start, "getter should have no params");
+ } else {
+ this.raise(start, "setter should have exactly one param");
+ }
+ }
+ }
+ }
+
+ if (decorators.length) {
+ this.raise(this.state.start, "You have trailing decorators with no method");
+ }
+
+ node.body = this.finishNode(classBody, "ClassBody");
+
+ this.state.strict = oldStrict;
+};
+
+pp.parseClassProperty = function (node) {
+ if (this.match(_tokenizerTypes.types.eq)) {
+ if (!this.hasPlugin("classProperties")) this.unexpected();
+ this.next();
+ node.value = this.parseMaybeAssign();
+ } else {
+ node.value = null;
+ }
+ this.semicolon();
+ return this.finishNode(node, "ClassProperty");
+};
+
+pp.parseClassMethod = function (classBody, method, isGenerator, isAsync) {
+ this.parseMethod(method, isGenerator, isAsync);
+ classBody.body.push(this.finishNode(method, "ClassMethod"));
+};
+
+pp.parseClassId = function (node, isStatement, optionalId) {
+ if (this.match(_tokenizerTypes.types.name)) {
+ node.id = this.parseIdentifier();
+ } else {
+ if (optionalId || !isStatement) {
+ node.id = null;
+ } else {
+ this.unexpected();
+ }
+ }
+};
+
+pp.parseClassSuper = function (node) {
+ node.superClass = this.eat(_tokenizerTypes.types._extends) ? this.parseExprSubscripts() : null;
+};
+
+// Parses module export declaration.
+
+pp.parseExport = function (node) {
+ this.next();
+ // export * from '...'
+ if (this.match(_tokenizerTypes.types.star)) {
+ var specifier = this.startNode();
+ this.next();
+ if (this.hasPlugin("exportExtensions") && this.eatContextual("as")) {
+ specifier.exported = this.parseIdentifier();
+ node.specifiers = [this.finishNode(specifier, "ExportNamespaceSpecifier")];
+ this.parseExportSpecifiersMaybe(node);
+ this.parseExportFrom(node, true);
+ } else {
+ this.parseExportFrom(node, true);
+ return this.finishNode(node, "ExportAllDeclaration");
+ }
+ } else if (this.hasPlugin("exportExtensions") && this.isExportDefaultSpecifier()) {
+ var specifier = this.startNode();
+ specifier.exported = this.parseIdentifier(true);
+ node.specifiers = [this.finishNode(specifier, "ExportDefaultSpecifier")];
+ if (this.match(_tokenizerTypes.types.comma) && this.lookahead().type === _tokenizerTypes.types.star) {
+ this.expect(_tokenizerTypes.types.comma);
+ var _specifier = this.startNode();
+ this.expect(_tokenizerTypes.types.star);
+ this.expectContextual("as");
+ _specifier.exported = this.parseIdentifier();
+ node.specifiers.push(this.finishNode(_specifier, "ExportNamespaceSpecifier"));
+ } else {
+ this.parseExportSpecifiersMaybe(node);
+ }
+ this.parseExportFrom(node, true);
+ } else if (this.eat(_tokenizerTypes.types._default)) {
+ // export default ...
+ var expr = this.startNode();
+ var needsSemi = false;
+ if (this.eat(_tokenizerTypes.types._function)) {
+ expr = this.parseFunction(expr, true, false, false, true);
+ } else if (this.match(_tokenizerTypes.types._class)) {
+ expr = this.parseClass(expr, true, true);
+ } else {
+ needsSemi = true;
+ expr = this.parseMaybeAssign();
+ }
+ node.declaration = expr;
+ if (needsSemi) this.semicolon();
+ this.checkExport(node);
+ return this.finishNode(node, "ExportDefaultDeclaration");
+ } else if (this.state.type.keyword || this.shouldParseExportDeclaration()) {
+ node.specifiers = [];
+ node.source = null;
+ node.declaration = this.parseExportDeclaration(node);
+ } else {
+ // export { x, y as z } [from '...']
+ node.declaration = null;
+ node.specifiers = this.parseExportSpecifiers();
+ this.parseExportFrom(node);
+ }
+ this.checkExport(node);
+ return this.finishNode(node, "ExportNamedDeclaration");
+};
+
+pp.parseExportDeclaration = function () {
+ return this.parseStatement(true);
+};
+
+pp.isExportDefaultSpecifier = function () {
+ if (this.match(_tokenizerTypes.types.name)) {
+ return this.state.value !== "type" && this.state.value !== "async" && this.state.value !== "interface";
+ }
+
+ if (!this.match(_tokenizerTypes.types._default)) {
+ return false;
+ }
+
+ var lookahead = this.lookahead();
+ return lookahead.type === _tokenizerTypes.types.comma || lookahead.type === _tokenizerTypes.types.name && lookahead.value === "from";
+};
+
+pp.parseExportSpecifiersMaybe = function (node) {
+ if (this.eat(_tokenizerTypes.types.comma)) {
+ node.specifiers = node.specifiers.concat(this.parseExportSpecifiers());
+ }
+};
+
+pp.parseExportFrom = function (node, expect) {
+ if (this.eatContextual("from")) {
+ node.source = this.match(_tokenizerTypes.types.string) ? this.parseExprAtom() : this.unexpected();
+ this.checkExport(node);
+ } else {
+ if (expect) {
+ this.unexpected();
+ } else {
+ node.source = null;
+ }
+ }
+
+ this.semicolon();
+};
+
+pp.shouldParseExportDeclaration = function () {
+ return this.hasPlugin("asyncFunctions") && this.isContextual("async");
+};
+
+pp.checkExport = function (node) {
+ if (this.state.decorators.length) {
+ var isClass = node.declaration && (node.declaration.type === "ClassDeclaration" || node.declaration.type === "ClassExpression");
+ if (!node.declaration || !isClass) {
+ this.raise(node.start, "You can only use decorators on an export when exporting a class");
+ }
+ this.takeDecorators(node.declaration);
+ }
+};
+
+// Parses a comma-separated list of module exports.
+
+pp.parseExportSpecifiers = function () {
+ var nodes = [];
+ var first = true;
+ var needsFrom = undefined;
+
+ // export { x, y as z } [from '...']
+ this.expect(_tokenizerTypes.types.braceL);
+
+ while (!this.eat(_tokenizerTypes.types.braceR)) {
+ if (first) {
+ first = false;
+ } else {
+ this.expect(_tokenizerTypes.types.comma);
+ if (this.eat(_tokenizerTypes.types.braceR)) break;
+ }
+
+ var isDefault = this.match(_tokenizerTypes.types._default);
+ if (isDefault && !needsFrom) needsFrom = true;
+
+ var node = this.startNode();
+ node.local = this.parseIdentifier(isDefault);
+ node.exported = this.eatContextual("as") ? this.parseIdentifier(true) : node.local.__clone();
+ nodes.push(this.finishNode(node, "ExportSpecifier"));
+ }
+
+ // https://github.com/ember-cli/ember-cli/pull/3739
+ if (needsFrom && !this.isContextual("from")) {
+ this.unexpected();
+ }
+
+ return nodes;
+};
+
+// Parses import declaration.
+
+pp.parseImport = function (node) {
+ this.next();
+
+ // import '...'
+ if (this.match(_tokenizerTypes.types.string)) {
+ node.specifiers = [];
+ node.source = this.parseExprAtom();
+ } else {
+ node.specifiers = [];
+ this.parseImportSpecifiers(node);
+ this.expectContextual("from");
+ node.source = this.match(_tokenizerTypes.types.string) ? this.parseExprAtom() : this.unexpected();
+ }
+ this.semicolon();
+ return this.finishNode(node, "ImportDeclaration");
+};
+
+// Parses a comma-separated list of module imports.
+
+pp.parseImportSpecifiers = function (node) {
+ var first = true;
+ if (this.match(_tokenizerTypes.types.name)) {
+ // import defaultObj, { x, y as z } from '...'
+ var startPos = this.state.start,
+ startLoc = this.state.startLoc;
+ node.specifiers.push(this.parseImportSpecifierDefault(this.parseIdentifier(), startPos, startLoc));
+ if (!this.eat(_tokenizerTypes.types.comma)) return;
+ }
+
+ if (this.match(_tokenizerTypes.types.star)) {
+ var specifier = this.startNode();
+ this.next();
+ this.expectContextual("as");
+ specifier.local = this.parseIdentifier();
+ this.checkLVal(specifier.local, true);
+ node.specifiers.push(this.finishNode(specifier, "ImportNamespaceSpecifier"));
+ return;
+ }
+
+ this.expect(_tokenizerTypes.types.braceL);
+ while (!this.eat(_tokenizerTypes.types.braceR)) {
+ if (first) {
+ first = false;
+ } else {
+ this.expect(_tokenizerTypes.types.comma);
+ if (this.eat(_tokenizerTypes.types.braceR)) break;
+ }
+
+ var specifier = this.startNode();
+ specifier.imported = this.parseIdentifier(true);
+ specifier.local = this.eatContextual("as") ? this.parseIdentifier() : specifier.imported.__clone();
+ this.checkLVal(specifier.local, true);
+ node.specifiers.push(this.finishNode(specifier, "ImportSpecifier"));
+ }
+};
+
+pp.parseImportSpecifierDefault = function (id, startPos, startLoc) {
+ var node = this.startNodeAt(startPos, startLoc);
+ node.local = id;
+ this.checkLVal(node.local, true);
+ return this.finishNode(node, "ImportDefaultSpecifier");
+};
+},{"17":17,"20":20,"21":21,"25":25,"5":5}],10:[function(_dereq_,module,exports){
+"use strict";
+
+var _interopRequireDefault = _dereq_(25)["default"];
+
+var _tokenizerTypes = _dereq_(17);
+
+var _index = _dereq_(5);
+
+var _index2 = _interopRequireDefault(_index);
+
+var _utilWhitespace = _dereq_(20);
+
+var pp = _index2["default"].prototype;
+
+// ## Parser utilities
+
+// TODO
+
+pp.addExtra = function (node, key, val) {
+ if (!node) return;
+
+ var extra = node.extra = node.extra || {};
+ extra[key] = val;
+};
+
+// TODO
+
+pp.isRelational = function (op) {
+ return this.match(_tokenizerTypes.types.relational) && this.state.value === op;
+};
+
+// TODO
+
+pp.expectRelational = function (op) {
+ if (this.isRelational(op)) {
+ this.next();
+ } else {
+ this.unexpected();
+ }
+};
+
+// Tests whether parsed token is a contextual keyword.
+
+pp.isContextual = function (name) {
+ return this.match(_tokenizerTypes.types.name) && this.state.value === name;
+};
+
+// Consumes contextual keyword if possible.
+
+pp.eatContextual = function (name) {
+ return this.state.value === name && this.eat(_tokenizerTypes.types.name);
+};
+
+// Asserts that following token is given contextual keyword.
+
+pp.expectContextual = function (name) {
+ if (!this.eatContextual(name)) this.unexpected();
+};
+
+// Test whether a semicolon can be inserted at the current position.
+
+pp.canInsertSemicolon = function () {
+ return this.match(_tokenizerTypes.types.eof) || this.match(_tokenizerTypes.types.braceR) || _utilWhitespace.lineBreak.test(this.input.slice(this.state.lastTokEnd, this.state.start));
+};
+
+// TODO
+
+pp.isLineTerminator = function () {
+ return this.eat(_tokenizerTypes.types.semi) || this.canInsertSemicolon();
+};
+
+// Consume a semicolon, or, failing that, see if we are allowed to
+// pretend that there is a semicolon at this position.
+
+pp.semicolon = function () {
+ if (!this.isLineTerminator()) this.unexpected();
+};
+
+// Expect a token of a given type. If found, consume it, otherwise,
+// raise an unexpected token error.
+
+pp.expect = function (type) {
+ return this.eat(type) || this.unexpected();
+};
+
+// Raise an unexpected token error.
+
+pp.unexpected = function (pos) {
+ this.raise(pos != null ? pos : this.state.start, "Unexpected token");
+};
+},{"17":17,"20":20,"25":25,"5":5}],11:[function(_dereq_,module,exports){
+/* eslint indent: 0 */
+/* eslint max-len: 0 */
+
+"use strict";
+
+var _interopRequireDefault = _dereq_(25)["default"];
+
+exports.__esModule = true;
+
+var _tokenizerTypes = _dereq_(17);
+
+var _parser = _dereq_(5);
+
+var _parser2 = _interopRequireDefault(_parser);
+
+var pp = _parser2["default"].prototype;
+
+pp.flowParseTypeInitialiser = function (tok, allowLeadingPipeOrAnd) {
+ var oldInType = this.state.inType;
+ this.state.inType = true;
+ this.expect(tok || _tokenizerTypes.types.colon);
+ if (allowLeadingPipeOrAnd) {
+ if (this.match(_tokenizerTypes.types.bitwiseAND) || this.match(_tokenizerTypes.types.bitwiseOR)) {
+ this.next();
+ }
+ }
+ var type = this.flowParseType();
+ this.state.inType = oldInType;
+ return type;
+};
+
+pp.flowParseDeclareClass = function (node) {
+ this.next();
+ this.flowParseInterfaceish(node, true);
+ return this.finishNode(node, "DeclareClass");
+};
+
+pp.flowParseDeclareFunction = function (node) {
+ this.next();
+
+ var id = node.id = this.parseIdentifier();
+
+ var typeNode = this.startNode();
+ var typeContainer = this.startNode();
+
+ if (this.isRelational("<")) {
+ typeNode.typeParameters = this.flowParseTypeParameterDeclaration();
+ } else {
+ typeNode.typeParameters = null;
+ }
+
+ this.expect(_tokenizerTypes.types.parenL);
+ var tmp = this.flowParseFunctionTypeParams();
+ typeNode.params = tmp.params;
+ typeNode.rest = tmp.rest;
+ this.expect(_tokenizerTypes.types.parenR);
+ typeNode.returnType = this.flowParseTypeInitialiser();
+
+ typeContainer.typeAnnotation = this.finishNode(typeNode, "FunctionTypeAnnotation");
+ id.typeAnnotation = this.finishNode(typeContainer, "TypeAnnotation");
+
+ this.finishNode(id, id.type);
+
+ this.semicolon();
+
+ return this.finishNode(node, "DeclareFunction");
+};
+
+pp.flowParseDeclare = function (node) {
+ if (this.match(_tokenizerTypes.types._class)) {
+ return this.flowParseDeclareClass(node);
+ } else if (this.match(_tokenizerTypes.types._function)) {
+ return this.flowParseDeclareFunction(node);
+ } else if (this.match(_tokenizerTypes.types._var)) {
+ return this.flowParseDeclareVariable(node);
+ } else if (this.isContextual("module")) {
+ return this.flowParseDeclareModule(node);
+ } else if (this.isContextual("type")) {
+ return this.flowParseDeclareTypeAlias(node);
+ } else if (this.isContextual("interface")) {
+ return this.flowParseDeclareInterface(node);
+ } else {
+ this.unexpected();
+ }
+};
+
+pp.flowParseDeclareVariable = function (node) {
+ this.next();
+ node.id = this.flowParseTypeAnnotatableIdentifier();
+ this.semicolon();
+ return this.finishNode(node, "DeclareVariable");
+};
+
+pp.flowParseDeclareModule = function (node) {
+ this.next();
+
+ if (this.match(_tokenizerTypes.types.string)) {
+ node.id = this.parseExprAtom();
+ } else {
+ node.id = this.parseIdentifier();
+ }
+
+ var bodyNode = node.body = this.startNode();
+ var body = bodyNode.body = [];
+ this.expect(_tokenizerTypes.types.braceL);
+ while (!this.match(_tokenizerTypes.types.braceR)) {
+ var node2 = this.startNode();
+
+ // todo: declare check
+ this.next();
+
+ body.push(this.flowParseDeclare(node2));
+ }
+ this.expect(_tokenizerTypes.types.braceR);
+
+ this.finishNode(bodyNode, "BlockStatement");
+ return this.finishNode(node, "DeclareModule");
+};
+
+pp.flowParseDeclareTypeAlias = function (node) {
+ this.next();
+ this.flowParseTypeAlias(node);
+ return this.finishNode(node, "DeclareTypeAlias");
+};
+
+pp.flowParseDeclareInterface = function (node) {
+ this.next();
+ this.flowParseInterfaceish(node);
+ return this.finishNode(node, "DeclareInterface");
+};
+
+// Interfaces
+
+pp.flowParseInterfaceish = function (node, allowStatic) {
+ node.id = this.parseIdentifier();
+
+ if (this.isRelational("<")) {
+ node.typeParameters = this.flowParseTypeParameterDeclaration();
+ } else {
+ node.typeParameters = null;
+ }
+
+ node["extends"] = [];
+ node.mixins = [];
+
+ if (this.eat(_tokenizerTypes.types._extends)) {
+ do {
+ node["extends"].push(this.flowParseInterfaceExtends());
+ } while (this.eat(_tokenizerTypes.types.comma));
+ }
+
+ if (this.isContextual("mixins")) {
+ this.next();
+ do {
+ node.mixins.push(this.flowParseInterfaceExtends());
+ } while (this.eat(_tokenizerTypes.types.comma));
+ }
+
+ node.body = this.flowParseObjectType(allowStatic);
+};
+
+pp.flowParseInterfaceExtends = function () {
+ var node = this.startNode();
+
+ node.id = this.parseIdentifier();
+ if (this.isRelational("<")) {
+ node.typeParameters = this.flowParseTypeParameterInstantiation();
+ } else {
+ node.typeParameters = null;
+ }
+
+ return this.finishNode(node, "InterfaceExtends");
+};
+
+pp.flowParseInterface = function (node) {
+ this.flowParseInterfaceish(node, false);
+ return this.finishNode(node, "InterfaceDeclaration");
+};
+
+// Type aliases
+
+pp.flowParseTypeAlias = function (node) {
+ node.id = this.parseIdentifier();
+
+ if (this.isRelational("<")) {
+ node.typeParameters = this.flowParseTypeParameterDeclaration();
+ } else {
+ node.typeParameters = null;
+ }
+
+ node.right = this.flowParseTypeInitialiser(_tokenizerTypes.types.eq,
+ /*allowLeadingPipeOrAnd*/true);
+ this.semicolon();
+
+ return this.finishNode(node, "TypeAlias");
+};
+
+// Type annotations
+
+pp.flowParseTypeParameterDeclaration = function () {
+ var node = this.startNode();
+ node.params = [];
+
+ this.expectRelational("<");
+ while (!this.isRelational(">")) {
+ node.params.push(this.flowParseExistentialTypeParam() || this.flowParseTypeAnnotatableIdentifier());
+ if (!this.isRelational(">")) {
+ this.expect(_tokenizerTypes.types.comma);
+ }
+ }
+ this.expectRelational(">");
+
+ return this.finishNode(node, "TypeParameterDeclaration");
+};
+
+pp.flowParseExistentialTypeParam = function () {
+ if (this.match(_tokenizerTypes.types.star)) {
+ var node = this.startNode();
+ this.next();
+ return this.finishNode(node, "ExistentialTypeParam");
+ }
+};
+
+pp.flowParseTypeParameterInstantiation = function () {
+ var node = this.startNode(),
+ oldInType = this.state.inType;
+ node.params = [];
+
+ this.state.inType = true;
+
+ this.expectRelational("<");
+ while (!this.isRelational(">")) {
+ node.params.push(this.flowParseExistentialTypeParam() || this.flowParseType());
+ if (!this.isRelational(">")) {
+ this.expect(_tokenizerTypes.types.comma);
+ }
+ }
+ this.expectRelational(">");
+
+ this.state.inType = oldInType;
+
+ return this.finishNode(node, "TypeParameterInstantiation");
+};
+
+pp.flowParseObjectPropertyKey = function () {
+ return this.match(_tokenizerTypes.types.num) || this.match(_tokenizerTypes.types.string) ? this.parseExprAtom() : this.parseIdentifier(true);
+};
+
+pp.flowParseObjectTypeIndexer = function (node, isStatic) {
+ node["static"] = isStatic;
+
+ this.expect(_tokenizerTypes.types.bracketL);
+ node.id = this.flowParseObjectPropertyKey();
+ node.key = this.flowParseTypeInitialiser();
+ this.expect(_tokenizerTypes.types.bracketR);
+ node.value = this.flowParseTypeInitialiser();
+
+ this.flowObjectTypeSemicolon();
+ return this.finishNode(node, "ObjectTypeIndexer");
+};
+
+pp.flowParseObjectTypeMethodish = function (node) {
+ node.params = [];
+ node.rest = null;
+ node.typeParameters = null;
+
+ if (this.isRelational("<")) {
+ node.typeParameters = this.flowParseTypeParameterDeclaration();
+ }
+
+ this.expect(_tokenizerTypes.types.parenL);
+ while (this.match(_tokenizerTypes.types.name)) {
+ node.params.push(this.flowParseFunctionTypeParam());
+ if (!this.match(_tokenizerTypes.types.parenR)) {
+ this.expect(_tokenizerTypes.types.comma);
+ }
+ }
+
+ if (this.eat(_tokenizerTypes.types.ellipsis)) {
+ node.rest = this.flowParseFunctionTypeParam();
+ }
+ this.expect(_tokenizerTypes.types.parenR);
+ node.returnType = this.flowParseTypeInitialiser();
+
+ return this.finishNode(node, "FunctionTypeAnnotation");
+};
+
+pp.flowParseObjectTypeMethod = function (startPos, startLoc, isStatic, key) {
+ var node = this.startNodeAt(startPos, startLoc);
+ node.value = this.flowParseObjectTypeMethodish(this.startNodeAt(startPos, startLoc));
+ node["static"] = isStatic;
+ node.key = key;
+ node.optional = false;
+ this.flowObjectTypeSemicolon();
+ return this.finishNode(node, "ObjectTypeProperty");
+};
+
+pp.flowParseObjectTypeCallProperty = function (node, isStatic) {
+ var valueNode = this.startNode();
+ node["static"] = isStatic;
+ node.value = this.flowParseObjectTypeMethodish(valueNode);
+ this.flowObjectTypeSemicolon();
+ return this.finishNode(node, "ObjectTypeCallProperty");
+};
+
+pp.flowParseObjectType = function (allowStatic) {
+ var nodeStart = this.startNode();
+ var node = undefined;
+ var propertyKey = undefined;
+ var isStatic = undefined;
+
+ nodeStart.callProperties = [];
+ nodeStart.properties = [];
+ nodeStart.indexers = [];
+
+ this.expect(_tokenizerTypes.types.braceL);
+
+ while (!this.match(_tokenizerTypes.types.braceR)) {
+ var optional = false;
+ var startPos = this.state.start,
+ startLoc = this.state.startLoc;
+ node = this.startNode();
+ if (allowStatic && this.isContextual("static")) {
+ this.next();
+ isStatic = true;
+ }
+
+ if (this.match(_tokenizerTypes.types.bracketL)) {
+ nodeStart.indexers.push(this.flowParseObjectTypeIndexer(node, isStatic));
+ } else if (this.match(_tokenizerTypes.types.parenL) || this.isRelational("<")) {
+ nodeStart.callProperties.push(this.flowParseObjectTypeCallProperty(node, allowStatic));
+ } else {
+ if (isStatic && this.match(_tokenizerTypes.types.colon)) {
+ propertyKey = this.parseIdentifier();
+ } else {
+ propertyKey = this.flowParseObjectPropertyKey();
+ }
+ if (this.isRelational("<") || this.match(_tokenizerTypes.types.parenL)) {
+ // This is a method property
+ nodeStart.properties.push(this.flowParseObjectTypeMethod(startPos, startLoc, isStatic, propertyKey));
+ } else {
+ if (this.eat(_tokenizerTypes.types.question)) {
+ optional = true;
+ }
+ node.key = propertyKey;
+ node.value = this.flowParseTypeInitialiser();
+ node.optional = optional;
+ node["static"] = isStatic;
+ this.flowObjectTypeSemicolon();
+ nodeStart.properties.push(this.finishNode(node, "ObjectTypeProperty"));
+ }
+ }
+ }
+
+ this.expect(_tokenizerTypes.types.braceR);
+
+ return this.finishNode(nodeStart, "ObjectTypeAnnotation");
+};
+
+pp.flowObjectTypeSemicolon = function () {
+ if (!this.eat(_tokenizerTypes.types.semi) && !this.eat(_tokenizerTypes.types.comma) && !this.match(_tokenizerTypes.types.braceR)) {
+ this.unexpected();
+ }
+};
+
+pp.flowParseGenericType = function (startPos, startLoc, id) {
+ var node = this.startNodeAt(startPos, startLoc);
+
+ node.typeParameters = null;
+ node.id = id;
+
+ while (this.eat(_tokenizerTypes.types.dot)) {
+ var node2 = this.startNodeAt(startPos, startLoc);
+ node2.qualification = node.id;
+ node2.id = this.parseIdentifier();
+ node.id = this.finishNode(node2, "QualifiedTypeIdentifier");
+ }
+
+ if (this.isRelational("<")) {
+ node.typeParameters = this.flowParseTypeParameterInstantiation();
+ }
+
+ return this.finishNode(node, "GenericTypeAnnotation");
+};
+
+pp.flowParseTypeofType = function () {
+ var node = this.startNode();
+ this.expect(_tokenizerTypes.types._typeof);
+ node.argument = this.flowParsePrimaryType();
+ return this.finishNode(node, "TypeofTypeAnnotation");
+};
+
+pp.flowParseTupleType = function () {
+ var node = this.startNode();
+ node.types = [];
+ this.expect(_tokenizerTypes.types.bracketL);
+ // We allow trailing commas
+ while (this.state.pos < this.input.length && !this.match(_tokenizerTypes.types.bracketR)) {
+ node.types.push(this.flowParseType());
+ if (this.match(_tokenizerTypes.types.bracketR)) break;
+ this.expect(_tokenizerTypes.types.comma);
+ }
+ this.expect(_tokenizerTypes.types.bracketR);
+ return this.finishNode(node, "TupleTypeAnnotation");
+};
+
+pp.flowParseFunctionTypeParam = function () {
+ var optional = false;
+ var node = this.startNode();
+ node.name = this.parseIdentifier();
+ if (this.eat(_tokenizerTypes.types.question)) {
+ optional = true;
+ }
+ node.optional = optional;
+ node.typeAnnotation = this.flowParseTypeInitialiser();
+ return this.finishNode(node, "FunctionTypeParam");
+};
+
+pp.flowParseFunctionTypeParams = function () {
+ var ret = { params: [], rest: null };
+ while (this.match(_tokenizerTypes.types.name)) {
+ ret.params.push(this.flowParseFunctionTypeParam());
+ if (!this.match(_tokenizerTypes.types.parenR)) {
+ this.expect(_tokenizerTypes.types.comma);
+ }
+ }
+ if (this.eat(_tokenizerTypes.types.ellipsis)) {
+ ret.rest = this.flowParseFunctionTypeParam();
+ }
+ return ret;
+};
+
+pp.flowIdentToTypeAnnotation = function (startPos, startLoc, node, id) {
+ switch (id.name) {
+ case "any":
+ return this.finishNode(node, "AnyTypeAnnotation");
+
+ case "void":
+ return this.finishNode(node, "VoidTypeAnnotation");
+
+ case "bool":
+ case "boolean":
+ return this.finishNode(node, "BooleanTypeAnnotation");
+
+ case "mixed":
+ return this.finishNode(node, "MixedTypeAnnotation");
+
+ case "number":
+ return this.finishNode(node, "NumberTypeAnnotation");
+
+ case "string":
+ return this.finishNode(node, "StringTypeAnnotation");
+
+ default:
+ return this.flowParseGenericType(startPos, startLoc, id);
+ }
+};
+
+// The parsing of types roughly parallels the parsing of expressions, and
+// primary types are kind of like primary expressions...they're the
+// primitives with which other types are constructed.
+pp.flowParsePrimaryType = function () {
+ var startPos = this.state.start,
+ startLoc = this.state.startLoc;
+ var node = this.startNode();
+ var tmp = undefined;
+ var type = undefined;
+ var isGroupedType = false;
+
+ switch (this.state.type) {
+ case _tokenizerTypes.types.name:
+ return this.flowIdentToTypeAnnotation(startPos, startLoc, node, this.parseIdentifier());
+
+ case _tokenizerTypes.types.braceL:
+ return this.flowParseObjectType();
+
+ case _tokenizerTypes.types.bracketL:
+ return this.flowParseTupleType();
+
+ case _tokenizerTypes.types.relational:
+ if (this.state.value === "<") {
+ node.typeParameters = this.flowParseTypeParameterDeclaration();
+ this.expect(_tokenizerTypes.types.parenL);
+ tmp = this.flowParseFunctionTypeParams();
+ node.params = tmp.params;
+ node.rest = tmp.rest;
+ this.expect(_tokenizerTypes.types.parenR);
+
+ this.expect(_tokenizerTypes.types.arrow);
+
+ node.returnType = this.flowParseType();
+
+ return this.finishNode(node, "FunctionTypeAnnotation");
+ }
+
+ case _tokenizerTypes.types.parenL:
+ this.next();
+
+ // Check to see if this is actually a grouped type
+ if (!this.match(_tokenizerTypes.types.parenR) && !this.match(_tokenizerTypes.types.ellipsis)) {
+ if (this.match(_tokenizerTypes.types.name)) {
+ var token = this.lookahead().type;
+ isGroupedType = token !== _tokenizerTypes.types.question && token !== _tokenizerTypes.types.colon;
+ } else {
+ isGroupedType = true;
+ }
+ }
+
+ if (isGroupedType) {
+ type = this.flowParseType();
+ this.expect(_tokenizerTypes.types.parenR);
+
+ // If we see a => next then someone was probably confused about
+ // function types, so we can provide a better error message
+ if (this.eat(_tokenizerTypes.types.arrow)) {
+ this.raise(node, "Unexpected token =>. It looks like " + "you are trying to write a function type, but you ended up " + "writing a grouped type followed by an =>, which is a syntax " + "error. Remember, function type parameters are named so function " + "types look like (name1: type1, name2: type2) => returnType. You " + "probably wrote (type1) => returnType");
+ }
+
+ return type;
+ }
+
+ tmp = this.flowParseFunctionTypeParams();
+ node.params = tmp.params;
+ node.rest = tmp.rest;
+
+ this.expect(_tokenizerTypes.types.parenR);
+
+ this.expect(_tokenizerTypes.types.arrow);
+
+ node.returnType = this.flowParseType();
+ node.typeParameters = null;
+
+ return this.finishNode(node, "FunctionTypeAnnotation");
+
+ case _tokenizerTypes.types.string:
+ node.value = this.state.value;
+ this.addExtra(node, "rawValue", node.value);
+ this.addExtra(node, "raw", this.input.slice(this.state.start, this.state.end));
+ this.next();
+ return this.finishNode(node, "StringLiteralTypeAnnotation");
+
+ case _tokenizerTypes.types._true:case _tokenizerTypes.types._false:
+ node.value = this.match(_tokenizerTypes.types._true);
+ this.next();
+ return this.finishNode(node, "BooleanLiteralTypeAnnotation");
+
+ case _tokenizerTypes.types.num:
+ node.value = this.state.value;
+ this.addExtra(node, "rawValue", node.value);
+ this.addExtra(node, "raw", this.input.slice(this.state.start, this.state.end));
+ this.next();
+ return this.finishNode(node, "NumericLiteralTypeAnnotation");
+
+ case _tokenizerTypes.types._null:
+ node.value = this.match(_tokenizerTypes.types._null);
+ this.next();
+ return this.finishNode(node, "NullLiteralTypeAnnotation");
+
+ case _tokenizerTypes.types._this:
+ node.value = this.match(_tokenizerTypes.types._this);
+ this.next();
+ return this.finishNode(node, "ThisTypeAnnotation");
+
+ default:
+ if (this.state.type.keyword === "typeof") {
+ return this.flowParseTypeofType();
+ }
+ }
+
+ this.unexpected();
+};
+
+pp.flowParsePostfixType = function () {
+ var node = this.startNode();
+ var type = node.elementType = this.flowParsePrimaryType();
+ if (this.match(_tokenizerTypes.types.bracketL)) {
+ this.expect(_tokenizerTypes.types.bracketL);
+ this.expect(_tokenizerTypes.types.bracketR);
+ return this.finishNode(node, "ArrayTypeAnnotation");
+ } else {
+ return type;
+ }
+};
+
+pp.flowParsePrefixType = function () {
+ var node = this.startNode();
+ if (this.eat(_tokenizerTypes.types.question)) {
+ node.typeAnnotation = this.flowParsePrefixType();
+ return this.finishNode(node, "NullableTypeAnnotation");
+ } else {
+ return this.flowParsePostfixType();
+ }
+};
+
+pp.flowParseIntersectionType = function () {
+ var node = this.startNode();
+ var type = this.flowParsePrefixType();
+ node.types = [type];
+ while (this.eat(_tokenizerTypes.types.bitwiseAND)) {
+ node.types.push(this.flowParsePrefixType());
+ }
+ return node.types.length === 1 ? type : this.finishNode(node, "IntersectionTypeAnnotation");
+};
+
+pp.flowParseUnionType = function () {
+ var node = this.startNode();
+ var type = this.flowParseIntersectionType();
+ node.types = [type];
+ while (this.eat(_tokenizerTypes.types.bitwiseOR)) {
+ node.types.push(this.flowParseIntersectionType());
+ }
+ return node.types.length === 1 ? type : this.finishNode(node, "UnionTypeAnnotation");
+};
+
+pp.flowParseType = function () {
+ var oldInType = this.state.inType;
+ this.state.inType = true;
+ var type = this.flowParseUnionType();
+ this.state.inType = oldInType;
+ return type;
+};
+
+pp.flowParseTypeAnnotation = function () {
+ var node = this.startNode();
+ node.typeAnnotation = this.flowParseTypeInitialiser();
+ return this.finishNode(node, "TypeAnnotation");
+};
+
+pp.flowParseTypeAnnotatableIdentifier = function (requireTypeAnnotation, canBeOptionalParam) {
+ var variance = undefined;
+ if (this.match(_tokenizerTypes.types.plusMin)) {
+ if (this.state.value === "+") {
+ variance = "plus";
+ } else if (this.state.value === "-") {
+ variance = "minus";
+ }
+ this.eat(_tokenizerTypes.types.plusMin);
+ }
+
+ var ident = this.parseIdentifier();
+ var isOptionalParam = false;
+
+ if (variance) {
+ ident.variance = variance;
+ }
+
+ if (canBeOptionalParam && this.eat(_tokenizerTypes.types.question)) {
+ this.expect(_tokenizerTypes.types.question);
+ isOptionalParam = true;
+ }
+
+ if (requireTypeAnnotation || this.match(_tokenizerTypes.types.colon)) {
+ ident.typeAnnotation = this.flowParseTypeAnnotation();
+ this.finishNode(ident, ident.type);
+ }
+
+ if (isOptionalParam) {
+ ident.optional = true;
+ this.finishNode(ident, ident.type);
+ }
+
+ return ident;
+};
+
+exports["default"] = function (instance) {
+ // plain function return types: function name(): string {}
+ instance.extend("parseFunctionBody", function (inner) {
+ return function (node, allowExpression) {
+ if (this.match(_tokenizerTypes.types.colon) && !allowExpression) {
+ // if allowExpression is true then we're parsing an arrow function and if
+ // there's a return type then it's been handled elsewhere
+ node.returnType = this.flowParseTypeAnnotation();
+ }
+
+ return inner.call(this, node, allowExpression);
+ };
+ });
+
+ // interfaces
+ instance.extend("parseStatement", function (inner) {
+ return function (declaration, topLevel) {
+ // strict mode handling of `interface` since it's a reserved word
+ if (this.state.strict && this.match(_tokenizerTypes.types.name) && this.state.value === "interface") {
+ var node = this.startNode();
+ this.next();
+ return this.flowParseInterface(node);
+ } else {
+ return inner.call(this, declaration, topLevel);
+ }
+ };
+ });
+
+ // declares, interfaces and type aliases
+ instance.extend("parseExpressionStatement", function (inner) {
+ return function (node, expr) {
+ if (expr.type === "Identifier") {
+ if (expr.name === "declare") {
+ if (this.match(_tokenizerTypes.types._class) || this.match(_tokenizerTypes.types.name) || this.match(_tokenizerTypes.types._function) || this.match(_tokenizerTypes.types._var)) {
+ return this.flowParseDeclare(node);
+ }
+ } else if (this.match(_tokenizerTypes.types.name)) {
+ if (expr.name === "interface") {
+ return this.flowParseInterface(node);
+ } else if (expr.name === "type") {
+ return this.flowParseTypeAlias(node);
+ }
+ }
+ }
+
+ return inner.call(this, node, expr);
+ };
+ });
+
+ // export type
+ instance.extend("shouldParseExportDeclaration", function (inner) {
+ return function () {
+ return this.isContextual("type") || this.isContextual("interface") || inner.call(this);
+ };
+ });
+
+ instance.extend("parseParenItem", function () {
+ return function (node, startLoc, startPos, forceArrow) {
+ var canBeArrow = this.state.potentialArrowAt = startPos;
+ if (this.match(_tokenizerTypes.types.colon)) {
+ var typeCastNode = this.startNodeAt(startLoc, startPos);
+ typeCastNode.expression = node;
+ typeCastNode.typeAnnotation = this.flowParseTypeAnnotation();
+
+ if (forceArrow && !this.match(_tokenizerTypes.types.arrow)) {
+ this.unexpected();
+ }
+
+ if (canBeArrow && this.eat(_tokenizerTypes.types.arrow)) {
+ // ((lol): number => {});
+ var params = node.type === "SequenceExpression" ? node.expressions : [node];
+ var func = this.parseArrowExpression(this.startNodeAt(startLoc, startPos), params);
+ func.returnType = typeCastNode.typeAnnotation;
+ return func;
+ } else {
+ return this.finishNode(typeCastNode, "TypeCastExpression");
+ }
+ } else {
+ return node;
+ }
+ };
+ });
+
+ instance.extend("parseExport", function (inner) {
+ return function (node) {
+ node = inner.call(this, node);
+ if (node.type === "ExportNamedDeclaration") {
+ node.exportKind = node.exportKind || "value";
+ }
+ return node;
+ };
+ });
+
+ instance.extend("parseExportDeclaration", function (inner) {
+ return function (node) {
+ if (this.isContextual("type")) {
+ node.exportKind = "type";
+
+ var declarationNode = this.startNode();
+ this.next();
+
+ if (this.match(_tokenizerTypes.types.braceL)) {
+ // export type { foo, bar };
+ node.specifiers = this.parseExportSpecifiers();
+ this.parseExportFrom(node);
+ return null;
+ } else {
+ // export type Foo = Bar;
+ return this.flowParseTypeAlias(declarationNode);
+ }
+ } else if (this.isContextual("interface")) {
+ node.exportKind = "type";
+ var declarationNode = this.startNode();
+ this.next();
+ return this.flowParseInterface(declarationNode);
+ } else {
+ return inner.call(this, node);
+ }
+ };
+ });
+
+ instance.extend("parseClassId", function (inner) {
+ return function (node) {
+ inner.apply(this, arguments);
+ if (this.isRelational("<")) {
+ node.typeParameters = this.flowParseTypeParameterDeclaration();
+ }
+ };
+ });
+
+ // don't consider `void` to be a keyword as then it'll use the void token type
+ // and set startExpr
+ instance.extend("isKeyword", function (inner) {
+ return function (name) {
+ if (this.state.inType && name === "void") {
+ return false;
+ } else {
+ return inner.call(this, name);
+ }
+ };
+ });
+
+ // ensure that inside flow types, we bypass the jsx parser plugin
+ instance.extend("readToken", function (inner) {
+ return function (code) {
+ if (this.state.inType && (code === 62 || code === 60)) {
+ return this.finishOp(_tokenizerTypes.types.relational, 1);
+ } else {
+ return inner.call(this, code);
+ }
+ };
+ });
+
+ // don't lex any token as a jsx one inside a flow type
+ instance.extend("jsx_readToken", function (inner) {
+ return function () {
+ if (!this.state.inType) return inner.call(this);
+ };
+ });
+
+ function typeCastToParameter(node) {
+ node.expression.typeAnnotation = node.typeAnnotation;
+ return node.expression;
+ }
+
+ instance.extend("toAssignable", function (inner) {
+ return function (node) {
+ if (node.type === "TypeCastExpression") {
+ return typeCastToParameter(node);
+ } else {
+ return inner.apply(this, arguments);
+ }
+ };
+ });
+
+ // turn type casts that we found in function parameter head into type annotated params
+ instance.extend("toAssignableList", function (inner) {
+ return function (exprList, isBinding) {
+ for (var i = 0; i < exprList.length; i++) {
+ var expr = exprList[i];
+ if (expr && expr.type === "TypeCastExpression") {
+ exprList[i] = typeCastToParameter(expr);
+ }
+ }
+ return inner.call(this, exprList, isBinding);
+ };
+ });
+
+ // this is a list of nodes, from something like a call expression, we need to filter the
+ // type casts that we've found that are illegal in this context
+ instance.extend("toReferencedList", function () {
+ return function (exprList) {
+ for (var i = 0; i < exprList.length; i++) {
+ var expr = exprList[i];
+ if (expr && expr._exprListItem && expr.type === "TypeCastExpression") {
+ this.raise(expr.start, "Unexpected type cast");
+ }
+ }
+
+ return exprList;
+ };
+ });
+
+ // parse an item inside a expression list eg. `(NODE, NODE)` where NODE represents
+ // the position where this function is cal;ed
+ instance.extend("parseExprListItem", function (inner) {
+ return function (allowEmpty, refShorthandDefaultPos) {
+ var container = this.startNode();
+ var node = inner.call(this, allowEmpty, refShorthandDefaultPos);
+ if (this.match(_tokenizerTypes.types.colon)) {
+ container._exprListItem = true;
+ container.expression = node;
+ container.typeAnnotation = this.flowParseTypeAnnotation();
+ return this.finishNode(container, "TypeCastExpression");
+ } else {
+ return node;
+ }
+ };
+ });
+
+ instance.extend("checkLVal", function (inner) {
+ return function (node) {
+ if (node.type !== "TypeCastExpression") {
+ return inner.apply(this, arguments);
+ }
+ };
+ });
+
+ // parse class property type annotations
+ instance.extend("parseClassProperty", function (inner) {
+ return function (node) {
+ if (this.match(_tokenizerTypes.types.colon)) {
+ node.typeAnnotation = this.flowParseTypeAnnotation();
+ }
+ return inner.call(this, node);
+ };
+ });
+
+ // determine whether or not we're currently in the position where a class property would appear
+ instance.extend("isClassProperty", function (inner) {
+ return function () {
+ return this.match(_tokenizerTypes.types.colon) || inner.call(this);
+ };
+ });
+
+ // parse type parameters for class methods
+ instance.extend("parseClassMethod", function () {
+ return function (classBody, method, isGenerator, isAsync) {
+ if (this.isRelational("<")) {
+ method.typeParameters = this.flowParseTypeParameterDeclaration();
+ }
+ this.parseMethod(method, isGenerator, isAsync);
+ classBody.body.push(this.finishNode(method, "ClassMethod"));
+ };
+ });
+
+ // parse a the super class type parameters and implements
+ instance.extend("parseClassSuper", function (inner) {
+ return function (node, isStatement) {
+ inner.call(this, node, isStatement);
+ if (node.superClass && this.isRelational("<")) {
+ node.superTypeParameters = this.flowParseTypeParameterInstantiation();
+ }
+ if (this.isContextual("implements")) {
+ this.next();
+ var implemented = node["implements"] = [];
+ do {
+ var _node = this.startNode();
+ _node.id = this.parseIdentifier();
+ if (this.isRelational("<")) {
+ _node.typeParameters = this.flowParseTypeParameterInstantiation();
+ } else {
+ _node.typeParameters = null;
+ }
+ implemented.push(this.finishNode(_node, "ClassImplements"));
+ } while (this.eat(_tokenizerTypes.types.comma));
+ }
+ };
+ });
+
+ // parse type parameters for object method shorthand
+ instance.extend("parseObjPropValue", function (inner) {
+ return function (prop) {
+ var typeParameters = undefined;
+
+ // method shorthand
+ if (this.isRelational("<")) {
+ typeParameters = this.flowParseTypeParameterDeclaration();
+ if (!this.match(_tokenizerTypes.types.parenL)) this.unexpected();
+ }
+
+ inner.apply(this, arguments);
+
+ // add typeParameters if we found them
+ if (typeParameters) {
+ (prop.value || prop).typeParameters = typeParameters;
+ }
+ };
+ });
+
+ instance.extend("parseAssignableListItemTypes", function () {
+ return function (param) {
+ if (this.eat(_tokenizerTypes.types.question)) {
+ param.optional = true;
+ }
+ if (this.match(_tokenizerTypes.types.colon)) {
+ param.typeAnnotation = this.flowParseTypeAnnotation();
+ }
+ this.finishNode(param, param.type);
+ return param;
+ };
+ });
+
+ // parse typeof and type imports
+ instance.extend("parseImportSpecifiers", function (inner) {
+ return function (node) {
+ node.importKind = "value";
+
+ var kind = null;
+ if (this.match(_tokenizerTypes.types._typeof)) {
+ kind = "typeof";
+ } else if (this.isContextual("type")) {
+ kind = "type";
+ }
+ if (kind) {
+ var lh = this.lookahead();
+ if (lh.type === _tokenizerTypes.types.name && lh.value !== "from" || lh.type === _tokenizerTypes.types.braceL || lh.type === _tokenizerTypes.types.star) {
+ this.next();
+ node.importKind = kind;
+ }
+ }
+
+ inner.call(this, node);
+ };
+ });
+
+ // parse function type parameters - function foo() {}
+ instance.extend("parseFunctionParams", function (inner) {
+ return function (node) {
+ if (this.isRelational("<")) {
+ node.typeParameters = this.flowParseTypeParameterDeclaration();
+ }
+ inner.call(this, node);
+ };
+ });
+
+ // parse flow type annotations on variable declarator heads - let foo: string = bar
+ instance.extend("parseVarHead", function (inner) {
+ return function (decl) {
+ inner.call(this, decl);
+ if (this.match(_tokenizerTypes.types.colon)) {
+ decl.id.typeAnnotation = this.flowParseTypeAnnotation();
+ this.finishNode(decl.id, decl.id.type);
+ }
+ };
+ });
+
+ // parse the return type of an async arrow function - let foo = (async (): number => {});
+ instance.extend("parseAsyncArrowFromCallExpression", function (inner) {
+ return function (node, call) {
+ if (this.match(_tokenizerTypes.types.colon)) {
+ node.returnType = this.flowParseTypeAnnotation();
+ }
+
+ return inner.call(this, node, call);
+ };
+ });
+
+ // todo description
+ instance.extend("shouldParseAsyncArrow", function (inner) {
+ return function () {
+ return this.match(_tokenizerTypes.types.colon) || inner.call(this);
+ };
+ });
+
+ // handle return types for arrow functions
+ instance.extend("parseParenAndDistinguishExpression", function (inner) {
+ return function (startPos, startLoc, canBeArrow, isAsync) {
+ startPos = startPos || this.state.start;
+ startLoc = startLoc || this.state.startLoc;
+
+ if (canBeArrow && this.lookahead().type === _tokenizerTypes.types.parenR) {
+ // let foo = (): number => {};
+ this.expect(_tokenizerTypes.types.parenL);
+ this.expect(_tokenizerTypes.types.parenR);
+
+ var node = this.startNodeAt(startPos, startLoc);
+ if (this.match(_tokenizerTypes.types.colon)) node.returnType = this.flowParseTypeAnnotation();
+ this.expect(_tokenizerTypes.types.arrow);
+ return this.parseArrowExpression(node, [], isAsync);
+ } else {
+ // let foo = (foo): number => {};
+ var node = inner.call(this, startPos, startLoc, canBeArrow, isAsync, this.hasPlugin("trailingFunctionCommas"));
+
+ if (this.match(_tokenizerTypes.types.colon)) {
+ var state = this.state.clone();
+ try {
+ return this.parseParenItem(node, startPos, startLoc, true);
+ } catch (err) {
+ if (err instanceof SyntaxError) {
+ this.state = state;
+ return node;
+ } else {
+ throw err;
+ }
+ }
+ } else {
+ return node;
+ }
+ }
+ };
+ });
+};
+
+module.exports = exports["default"];
+},{"17":17,"25":25,"5":5}],12:[function(_dereq_,module,exports){
+/* eslint indent: 0 */
+
+"use strict";
+
+var _interopRequireDefault = _dereq_(25)["default"];
+
+exports.__esModule = true;
+
+var _xhtml = _dereq_(13);
+
+var _xhtml2 = _interopRequireDefault(_xhtml);
+
+var _tokenizerTypes = _dereq_(17);
+
+var _tokenizerContext = _dereq_(14);
+
+var _parser = _dereq_(5);
+
+var _parser2 = _interopRequireDefault(_parser);
+
+var _utilIdentifier = _dereq_(18);
+
+var _utilWhitespace = _dereq_(20);
+
+var HEX_NUMBER = /^[\da-fA-F]+$/;
+var DECIMAL_NUMBER = /^\d+$/;
+
+_tokenizerContext.types.j_oTag = new _tokenizerContext.TokContext("... ", true, true);
+
+_tokenizerTypes.types.jsxName = new _tokenizerTypes.TokenType("jsxName");
+_tokenizerTypes.types.jsxText = new _tokenizerTypes.TokenType("jsxText", { beforeExpr: true });
+_tokenizerTypes.types.jsxTagStart = new _tokenizerTypes.TokenType("jsxTagStart");
+_tokenizerTypes.types.jsxTagEnd = new _tokenizerTypes.TokenType("jsxTagEnd");
+
+_tokenizerTypes.types.jsxTagStart.updateContext = function () {
+ this.state.context.push(_tokenizerContext.types.j_expr); // treat as beginning of JSX expression
+ this.state.context.push(_tokenizerContext.types.j_oTag); // start opening tag context
+ this.state.exprAllowed = false;
+};
+
+_tokenizerTypes.types.jsxTagEnd.updateContext = function (prevType) {
+ var out = this.state.context.pop();
+ if (out === _tokenizerContext.types.j_oTag && prevType === _tokenizerTypes.types.slash || out === _tokenizerContext.types.j_cTag) {
+ this.state.context.pop();
+ this.state.exprAllowed = this.curContext() === _tokenizerContext.types.j_expr;
+ } else {
+ this.state.exprAllowed = true;
+ }
+};
+
+var pp = _parser2["default"].prototype;
+
+// Reads inline JSX contents token.
+
+pp.jsxReadToken = function () {
+ var out = "";
+ var chunkStart = this.state.pos;
+ for (;;) {
+ if (this.state.pos >= this.input.length) {
+ this.raise(this.state.start, "Unterminated JSX contents");
+ }
+
+ var ch = this.input.charCodeAt(this.state.pos);
+
+ switch (ch) {
+ case 60: // "<"
+ case 123:
+ // "{"
+ if (this.state.pos === this.state.start) {
+ if (ch === 60 && this.state.exprAllowed) {
+ ++this.state.pos;
+ return this.finishToken(_tokenizerTypes.types.jsxTagStart);
+ }
+ return this.getTokenFromCode(ch);
+ }
+ out += this.input.slice(chunkStart, this.state.pos);
+ return this.finishToken(_tokenizerTypes.types.jsxText, out);
+
+ case 38:
+ // "&"
+ out += this.input.slice(chunkStart, this.state.pos);
+ out += this.jsxReadEntity();
+ chunkStart = this.state.pos;
+ break;
+
+ default:
+ if (_utilWhitespace.isNewLine(ch)) {
+ out += this.input.slice(chunkStart, this.state.pos);
+ out += this.jsxReadNewLine(true);
+ chunkStart = this.state.pos;
+ } else {
+ ++this.state.pos;
+ }
+ }
+ }
+};
+
+pp.jsxReadNewLine = function (normalizeCRLF) {
+ var ch = this.input.charCodeAt(this.state.pos);
+ var out = undefined;
+ ++this.state.pos;
+ if (ch === 13 && this.input.charCodeAt(this.state.pos) === 10) {
+ ++this.state.pos;
+ out = normalizeCRLF ? "\n" : "\r\n";
+ } else {
+ out = String.fromCharCode(ch);
+ }
+ ++this.state.curLine;
+ this.state.lineStart = this.state.pos;
+
+ return out;
+};
+
+pp.jsxReadString = function (quote) {
+ var out = "";
+ var chunkStart = ++this.state.pos;
+ for (;;) {
+ if (this.state.pos >= this.input.length) {
+ this.raise(this.state.start, "Unterminated string constant");
+ }
+
+ var ch = this.input.charCodeAt(this.state.pos);
+ if (ch === quote) break;
+ if (ch === 38) {
+ // "&"
+ out += this.input.slice(chunkStart, this.state.pos);
+ out += this.jsxReadEntity();
+ chunkStart = this.state.pos;
+ } else if (_utilWhitespace.isNewLine(ch)) {
+ out += this.input.slice(chunkStart, this.state.pos);
+ out += this.jsxReadNewLine(false);
+ chunkStart = this.state.pos;
+ } else {
+ ++this.state.pos;
+ }
+ }
+ out += this.input.slice(chunkStart, this.state.pos++);
+ return this.finishToken(_tokenizerTypes.types.string, out);
+};
+
+pp.jsxReadEntity = function () {
+ var str = "";
+ var count = 0;
+ var entity = undefined;
+ var ch = this.input[this.state.pos];
+
+ var startPos = ++this.state.pos;
+ while (this.state.pos < this.input.length && count++ < 10) {
+ ch = this.input[this.state.pos++];
+ if (ch === ";") {
+ if (str[0] === "#") {
+ if (str[1] === "x") {
+ str = str.substr(2);
+ if (HEX_NUMBER.test(str)) entity = String.fromCharCode(parseInt(str, 16));
+ } else {
+ str = str.substr(1);
+ if (DECIMAL_NUMBER.test(str)) entity = String.fromCharCode(parseInt(str, 10));
+ }
+ } else {
+ entity = _xhtml2["default"][str];
+ }
+ break;
+ }
+ str += ch;
+ }
+ if (!entity) {
+ this.state.pos = startPos;
+ return "&";
+ }
+ return entity;
+};
+
+// Read a JSX identifier (valid tag or attribute name).
+//
+// Optimized version since JSX identifiers can"t contain
+// escape characters and so can be read as single slice.
+// Also assumes that first character was already checked
+// by isIdentifierStart in readToken.
+
+pp.jsxReadWord = function () {
+ var ch = undefined;
+ var start = this.state.pos;
+ do {
+ ch = this.input.charCodeAt(++this.state.pos);
+ } while (_utilIdentifier.isIdentifierChar(ch) || ch === 45); // "-"
+ return this.finishToken(_tokenizerTypes.types.jsxName, this.input.slice(start, this.state.pos));
+};
+
+// Transforms JSX element name to string.
+
+function getQualifiedJSXName(object) {
+ if (object.type === "JSXIdentifier") {
+ return object.name;
+ }
+
+ if (object.type === "JSXNamespacedName") {
+ return object.namespace.name + ":" + object.name.name;
+ }
+
+ if (object.type === "JSXMemberExpression") {
+ return getQualifiedJSXName(object.object) + "." + getQualifiedJSXName(object.property);
+ }
+}
+
+// Parse next token as JSX identifier
+
+pp.jsxParseIdentifier = function () {
+ var node = this.startNode();
+ if (this.match(_tokenizerTypes.types.jsxName)) {
+ node.name = this.state.value;
+ } else if (this.state.type.keyword) {
+ node.name = this.state.type.keyword;
+ } else {
+ this.unexpected();
+ }
+ this.next();
+ return this.finishNode(node, "JSXIdentifier");
+};
+
+// Parse namespaced identifier.
+
+pp.jsxParseNamespacedName = function () {
+ var startPos = this.state.start,
+ startLoc = this.state.startLoc;
+ var name = this.jsxParseIdentifier();
+ if (!this.eat(_tokenizerTypes.types.colon)) return name;
+
+ var node = this.startNodeAt(startPos, startLoc);
+ node.namespace = name;
+ node.name = this.jsxParseIdentifier();
+ return this.finishNode(node, "JSXNamespacedName");
+};
+
+// Parses element name in any form - namespaced, member
+// or single identifier.
+
+pp.jsxParseElementName = function () {
+ var startPos = this.state.start,
+ startLoc = this.state.startLoc;
+ var node = this.jsxParseNamespacedName();
+ while (this.eat(_tokenizerTypes.types.dot)) {
+ var newNode = this.startNodeAt(startPos, startLoc);
+ newNode.object = node;
+ newNode.property = this.jsxParseIdentifier();
+ node = this.finishNode(newNode, "JSXMemberExpression");
+ }
+ return node;
+};
+
+// Parses any type of JSX attribute value.
+
+pp.jsxParseAttributeValue = function () {
+ var node = undefined;
+ switch (this.state.type) {
+ case _tokenizerTypes.types.braceL:
+ node = this.jsxParseExpressionContainer();
+ if (node.expression.type === "JSXEmptyExpression") {
+ this.raise(node.start, "JSX attributes must only be assigned a non-empty expression");
+ } else {
+ return node;
+ }
+
+ case _tokenizerTypes.types.jsxTagStart:
+ case _tokenizerTypes.types.string:
+ node = this.parseExprAtom();
+ node.extra = null;
+ return node;
+
+ default:
+ this.raise(this.state.start, "JSX value should be either an expression or a quoted JSX text");
+ }
+};
+
+// JSXEmptyExpression is unique type since it doesn't actually parse anything,
+// and so it should start at the end of last read token (left brace) and finish
+// at the beginning of the next one (right brace).
+
+pp.jsxParseEmptyExpression = function () {
+ var node = this.startNodeAt(this.lastTokEnd, this.lastTokEndLoc);
+ return this.finishNodeAt(node, "JSXEmptyExpression", this.start, this.startLoc);
+};
+
+// Parses JSX expression enclosed into curly brackets.
+
+pp.jsxParseExpressionContainer = function () {
+ var node = this.startNode();
+ this.next();
+ if (this.match(_tokenizerTypes.types.braceR)) {
+ node.expression = this.jsxParseEmptyExpression();
+ } else {
+ node.expression = this.parseExpression();
+ }
+ this.expect(_tokenizerTypes.types.braceR);
+ return this.finishNode(node, "JSXExpressionContainer");
+};
+
+// Parses following JSX attribute name-value pair.
+
+pp.jsxParseAttribute = function () {
+ var node = this.startNode();
+ if (this.eat(_tokenizerTypes.types.braceL)) {
+ this.expect(_tokenizerTypes.types.ellipsis);
+ node.argument = this.parseMaybeAssign();
+ this.expect(_tokenizerTypes.types.braceR);
+ return this.finishNode(node, "JSXSpreadAttribute");
+ }
+ node.name = this.jsxParseNamespacedName();
+ node.value = this.eat(_tokenizerTypes.types.eq) ? this.jsxParseAttributeValue() : null;
+ return this.finishNode(node, "JSXAttribute");
+};
+
+// Parses JSX opening tag starting after "<".
+
+pp.jsxParseOpeningElementAt = function (startPos, startLoc) {
+ var node = this.startNodeAt(startPos, startLoc);
+ node.attributes = [];
+ node.name = this.jsxParseElementName();
+ while (!this.match(_tokenizerTypes.types.slash) && !this.match(_tokenizerTypes.types.jsxTagEnd)) {
+ node.attributes.push(this.jsxParseAttribute());
+ }
+ node.selfClosing = this.eat(_tokenizerTypes.types.slash);
+ this.expect(_tokenizerTypes.types.jsxTagEnd);
+ return this.finishNode(node, "JSXOpeningElement");
+};
+
+// Parses JSX closing tag starting after "".
+
+pp.jsxParseClosingElementAt = function (startPos, startLoc) {
+ var node = this.startNodeAt(startPos, startLoc);
+ node.name = this.jsxParseElementName();
+ this.expect(_tokenizerTypes.types.jsxTagEnd);
+ return this.finishNode(node, "JSXClosingElement");
+};
+
+// Parses entire JSX element, including it"s opening tag
+// (starting after "<"), attributes, contents and closing tag.
+
+pp.jsxParseElementAt = function (startPos, startLoc) {
+ var node = this.startNodeAt(startPos, startLoc);
+ var children = [];
+ var openingElement = this.jsxParseOpeningElementAt(startPos, startLoc);
+ var closingElement = null;
+
+ if (!openingElement.selfClosing) {
+ contents: for (;;) {
+ switch (this.state.type) {
+ case _tokenizerTypes.types.jsxTagStart:
+ startPos = this.state.start;startLoc = this.state.startLoc;
+ this.next();
+ if (this.eat(_tokenizerTypes.types.slash)) {
+ closingElement = this.jsxParseClosingElementAt(startPos, startLoc);
+ break contents;
+ }
+ children.push(this.jsxParseElementAt(startPos, startLoc));
+ break;
+
+ case _tokenizerTypes.types.jsxText:
+ children.push(this.parseExprAtom());
+ break;
+
+ case _tokenizerTypes.types.braceL:
+ children.push(this.jsxParseExpressionContainer());
+ break;
+
+ default:
+ this.unexpected();
+ }
+ }
+
+ if (getQualifiedJSXName(closingElement.name) !== getQualifiedJSXName(openingElement.name)) {
+ this.raise(closingElement.start, "Expected corresponding JSX closing tag for <" + getQualifiedJSXName(openingElement.name) + ">");
+ }
+ }
+
+ node.openingElement = openingElement;
+ node.closingElement = closingElement;
+ node.children = children;
+ if (this.match(_tokenizerTypes.types.relational) && this.state.value === "<") {
+ this.raise(this.state.start, "Adjacent JSX elements must be wrapped in an enclosing tag");
+ }
+ return this.finishNode(node, "JSXElement");
+};
+
+// Parses entire JSX element from current position.
+
+pp.jsxParseElement = function () {
+ var startPos = this.state.start,
+ startLoc = this.state.startLoc;
+ this.next();
+ return this.jsxParseElementAt(startPos, startLoc);
+};
+
+exports["default"] = function (instance) {
+ instance.extend("parseExprAtom", function (inner) {
+ return function (refShortHandDefaultPos) {
+ if (this.match(_tokenizerTypes.types.jsxText)) {
+ var node = this.parseLiteral(this.state.value, "JSXText");
+ // https://github.com/babel/babel/issues/2078
+ node.extra = null;
+ return node;
+ } else if (this.match(_tokenizerTypes.types.jsxTagStart)) {
+ return this.jsxParseElement();
+ } else {
+ return inner.call(this, refShortHandDefaultPos);
+ }
+ };
+ });
+
+ instance.extend("readToken", function (inner) {
+ return function (code) {
+ var context = this.curContext();
+
+ if (context === _tokenizerContext.types.j_expr) {
+ return this.jsxReadToken();
+ }
+
+ if (context === _tokenizerContext.types.j_oTag || context === _tokenizerContext.types.j_cTag) {
+ if (_utilIdentifier.isIdentifierStart(code)) {
+ return this.jsxReadWord();
+ }
+
+ if (code === 62) {
+ ++this.state.pos;
+ return this.finishToken(_tokenizerTypes.types.jsxTagEnd);
+ }
+
+ if ((code === 34 || code === 39) && context === _tokenizerContext.types.j_oTag) {
+ return this.jsxReadString(code);
+ }
+ }
+
+ if (code === 60 && this.state.exprAllowed) {
+ ++this.state.pos;
+ return this.finishToken(_tokenizerTypes.types.jsxTagStart);
+ }
+
+ return inner.call(this, code);
+ };
+ });
+
+ instance.extend("updateContext", function (inner) {
+ return function (prevType) {
+ if (this.match(_tokenizerTypes.types.braceL)) {
+ var curContext = this.curContext();
+ if (curContext === _tokenizerContext.types.j_oTag) {
+ this.state.context.push(_tokenizerContext.types.b_expr);
+ } else if (curContext === _tokenizerContext.types.j_expr) {
+ this.state.context.push(_tokenizerContext.types.b_tmpl);
+ } else {
+ inner.call(this, prevType);
+ }
+ this.state.exprAllowed = true;
+ } else if (this.match(_tokenizerTypes.types.slash) && prevType === _tokenizerTypes.types.jsxTagStart) {
+ this.state.context.length -= 2; // do not consider JSX expr -> JSX open tag -> ... anymore
+ this.state.context.push(_tokenizerContext.types.j_cTag); // reconsider as closing tag context
+ this.state.exprAllowed = false;
+ } else {
+ return inner.call(this, prevType);
+ }
+ };
+ });
+};
+
+module.exports = exports["default"];
+},{"13":13,"14":14,"17":17,"18":18,"20":20,"25":25,"5":5}],13:[function(_dereq_,module,exports){
+"use strict";
+
+exports.__esModule = true;
+exports["default"] = {
+ quot: "\"",
+ amp: "&",
+ apos: "'",
+ lt: "<",
+ gt: ">",
+ nbsp: " ",
+ iexcl: "¡",
+ cent: "¢",
+ pound: "£",
+ curren: "¤",
+ yen: "¥",
+ brvbar: "¦",
+ sect: "§",
+ uml: "¨",
+ copy: "©",
+ ordf: "ª",
+ laquo: "«",
+ not: "¬",
+ shy: "",
+ reg: "®",
+ macr: "¯",
+ deg: "°",
+ plusmn: "±",
+ sup2: "²",
+ sup3: "³",
+ acute: "´",
+ micro: "µ",
+ para: "¶",
+ middot: "·",
+ cedil: "¸",
+ sup1: "¹",
+ ordm: "º",
+ raquo: "»",
+ frac14: "¼",
+ frac12: "½",
+ frac34: "¾",
+ iquest: "¿",
+ Agrave: "À",
+ Aacute: "Á",
+ Acirc: "Â",
+ Atilde: "Ã",
+ Auml: "Ä",
+ Aring: "Å",
+ AElig: "Æ",
+ Ccedil: "Ç",
+ Egrave: "È",
+ Eacute: "É",
+ Ecirc: "Ê",
+ Euml: "Ë",
+ Igrave: "Ì",
+ Iacute: "Í",
+ Icirc: "Î",
+ Iuml: "Ï",
+ ETH: "Ð",
+ Ntilde: "Ñ",
+ Ograve: "Ò",
+ Oacute: "Ó",
+ Ocirc: "Ô",
+ Otilde: "Õ",
+ Ouml: "Ö",
+ times: "×",
+ Oslash: "Ø",
+ Ugrave: "Ù",
+ Uacute: "Ú",
+ Ucirc: "Û",
+ Uuml: "Ü",
+ Yacute: "Ý",
+ THORN: "Þ",
+ szlig: "ß",
+ agrave: "à",
+ aacute: "á",
+ acirc: "â",
+ atilde: "ã",
+ auml: "ä",
+ aring: "å",
+ aelig: "æ",
+ ccedil: "ç",
+ egrave: "è",
+ eacute: "é",
+ ecirc: "ê",
+ euml: "ë",
+ igrave: "ì",
+ iacute: "í",
+ icirc: "î",
+ iuml: "ï",
+ eth: "ð",
+ ntilde: "ñ",
+ ograve: "ò",
+ oacute: "ó",
+ ocirc: "ô",
+ otilde: "õ",
+ ouml: "ö",
+ divide: "÷",
+ oslash: "ø",
+ ugrave: "ù",
+ uacute: "ú",
+ ucirc: "û",
+ uuml: "ü",
+ yacute: "ý",
+ thorn: "þ",
+ yuml: "ÿ",
+ OElig: "Œ",
+ oelig: "œ",
+ Scaron: "Š",
+ scaron: "š",
+ Yuml: "Ÿ",
+ fnof: "ƒ",
+ circ: "ˆ",
+ tilde: "˜",
+ Alpha: "Α",
+ Beta: "Β",
+ Gamma: "Γ",
+ Delta: "Δ",
+ Epsilon: "Ε",
+ Zeta: "Ζ",
+ Eta: "Η",
+ Theta: "Θ",
+ Iota: "Ι",
+ Kappa: "Κ",
+ Lambda: "Λ",
+ Mu: "Μ",
+ Nu: "Ν",
+ Xi: "Ξ",
+ Omicron: "Ο",
+ Pi: "Π",
+ Rho: "Ρ",
+ Sigma: "Σ",
+ Tau: "Τ",
+ Upsilon: "Υ",
+ Phi: "Φ",
+ Chi: "Χ",
+ Psi: "Ψ",
+ Omega: "Ω",
+ alpha: "α",
+ beta: "β",
+ gamma: "γ",
+ delta: "δ",
+ epsilon: "ε",
+ zeta: "ζ",
+ eta: "η",
+ theta: "θ",
+ iota: "ι",
+ kappa: "κ",
+ lambda: "λ",
+ mu: "μ",
+ nu: "ν",
+ xi: "ξ",
+ omicron: "ο",
+ pi: "π",
+ rho: "ρ",
+ sigmaf: "ς",
+ sigma: "σ",
+ tau: "τ",
+ upsilon: "υ",
+ phi: "φ",
+ chi: "χ",
+ psi: "ψ",
+ omega: "ω",
+ thetasym: "ϑ",
+ upsih: "ϒ",
+ piv: "ϖ",
+ ensp: " ",
+ emsp: " ",
+ thinsp: " ",
+ zwnj: "",
+ zwj: "",
+ lrm: "",
+ rlm: "",
+ ndash: "–",
+ mdash: "—",
+ lsquo: "‘",
+ rsquo: "’",
+ sbquo: "‚",
+ ldquo: "“",
+ rdquo: "”",
+ bdquo: "„",
+ dagger: "†",
+ Dagger: "‡",
+ bull: "•",
+ hellip: "…",
+ permil: "‰",
+ prime: "′",
+ Prime: "″",
+ lsaquo: "‹",
+ rsaquo: "›",
+ oline: "‾",
+ frasl: "⁄",
+ euro: "€",
+ image: "ℑ",
+ weierp: "℘",
+ real: "ℜ",
+ trade: "™",
+ alefsym: "ℵ",
+ larr: "←",
+ uarr: "↑",
+ rarr: "→",
+ darr: "↓",
+ harr: "↔",
+ crarr: "↵",
+ lArr: "⇐",
+ uArr: "⇑",
+ rArr: "⇒",
+ dArr: "⇓",
+ hArr: "⇔",
+ forall: "∀",
+ part: "∂",
+ exist: "∃",
+ empty: "∅",
+ nabla: "∇",
+ isin: "∈",
+ notin: "∉",
+ ni: "∋",
+ prod: "∏",
+ sum: "∑",
+ minus: "−",
+ lowast: "∗",
+ radic: "√",
+ prop: "∝",
+ infin: "∞",
+ ang: "∠",
+ and: "∧",
+ or: "∨",
+ cap: "∩",
+ cup: "∪",
+ "int": "∫",
+ there4: "∴",
+ sim: "∼",
+ cong: "≅",
+ asymp: "≈",
+ ne: "≠",
+ equiv: "≡",
+ le: "≤",
+ ge: "≥",
+ sub: "⊂",
+ sup: "⊃",
+ nsub: "⊄",
+ sube: "⊆",
+ supe: "⊇",
+ oplus: "⊕",
+ otimes: "⊗",
+ perp: "⊥",
+ sdot: "⋅",
+ lceil: "⌈",
+ rceil: "⌉",
+ lfloor: "⌊",
+ rfloor: "⌋",
+ lang: "〈",
+ rang: "〉",
+ loz: "◊",
+ spades: "♠",
+ clubs: "♣",
+ hearts: "♥",
+ diams: "♦"
+};
+module.exports = exports["default"];
+},{}],14:[function(_dereq_,module,exports){
+// The algorithm used to determine whether a regexp can appear at a
+// given point in the program is loosely based on sweet.js' approach.
+// See https://github.com/mozilla/sweet.js/wiki/design
+
+"use strict";
+
+var _classCallCheck = _dereq_(23)["default"];
+
+exports.__esModule = true;
+
+var _types = _dereq_(17);
+
+var _utilWhitespace = _dereq_(20);
+
+var TokContext = function TokContext(token, isExpr, preserveSpace, override) {
+ _classCallCheck(this, TokContext);
+
+ this.token = token;
+ this.isExpr = !!isExpr;
+ this.preserveSpace = !!preserveSpace;
+ this.override = override;
+};
+
+exports.TokContext = TokContext;
+var types = {
+ b_stat: new TokContext("{", false),
+ b_expr: new TokContext("{", true),
+ b_tmpl: new TokContext("${", true),
+ p_stat: new TokContext("(", false),
+ p_expr: new TokContext("(", true),
+ q_tmpl: new TokContext("`", true, true, function (p) {
+ return p.readTmplToken();
+ }),
+ f_expr: new TokContext("function", true)
+};
+
+exports.types = types;
+// Token-specific context update code
+
+_types.types.parenR.updateContext = _types.types.braceR.updateContext = function () {
+ if (this.state.context.length === 1) {
+ this.state.exprAllowed = true;
+ return;
+ }
+
+ var out = this.state.context.pop();
+ if (out === types.b_stat && this.curContext() === types.f_expr) {
+ this.state.context.pop();
+ this.state.exprAllowed = false;
+ } else if (out === types.b_tmpl) {
+ this.state.exprAllowed = true;
+ } else {
+ this.state.exprAllowed = !out.isExpr;
+ }
+};
+
+_types.types.name.updateContext = function (prevType) {
+ this.state.exprAllowed = false;
+
+ if (prevType === _types.types._let || prevType === _types.types._const || prevType === _types.types._var) {
+ if (_utilWhitespace.lineBreak.test(this.input.slice(this.state.end))) {
+ this.state.exprAllowed = true;
+ }
+ }
+};
+
+_types.types.braceL.updateContext = function (prevType) {
+ this.state.context.push(this.braceIsBlock(prevType) ? types.b_stat : types.b_expr);
+ this.state.exprAllowed = true;
+};
+
+_types.types.dollarBraceL.updateContext = function () {
+ this.state.context.push(types.b_tmpl);
+ this.state.exprAllowed = true;
+};
+
+_types.types.parenL.updateContext = function (prevType) {
+ var statementParens = prevType === _types.types._if || prevType === _types.types._for || prevType === _types.types._with || prevType === _types.types._while;
+ this.state.context.push(statementParens ? types.p_stat : types.p_expr);
+ this.state.exprAllowed = true;
+};
+
+_types.types.incDec.updateContext = function () {
+ // tokExprAllowed stays unchanged
+};
+
+_types.types._function.updateContext = function () {
+ if (this.curContext() !== types.b_stat) {
+ this.state.context.push(types.f_expr);
+ }
+
+ this.state.exprAllowed = false;
+};
+
+_types.types.backQuote.updateContext = function () {
+ if (this.curContext() === types.q_tmpl) {
+ this.state.context.pop();
+ } else {
+ this.state.context.push(types.q_tmpl);
+ }
+ this.state.exprAllowed = false;
+};
+},{"17":17,"20":20,"23":23}],15:[function(_dereq_,module,exports){
+/* eslint max-len: 0 */
+/* eslint indent: 0 */
+
+"use strict";
+
+var _classCallCheck = _dereq_(23)["default"];
+
+var _interopRequireDefault = _dereq_(25)["default"];
+
+exports.__esModule = true;
+
+var _utilIdentifier = _dereq_(18);
+
+var _types = _dereq_(17);
+
+var _context = _dereq_(14);
+
+var _utilLocation = _dereq_(19);
+
+var _utilWhitespace = _dereq_(20);
+
+var _state = _dereq_(16);
+
+var _state2 = _interopRequireDefault(_state);
+
+// Object type used to represent tokens. Note that normally, tokens
+// simply exist as properties on the parser object. This is only
+// used for the onToken callback and the external tokenizer.
+
+var Token = function Token(state) {
+ _classCallCheck(this, Token);
+
+ this.type = state.type;
+ this.value = state.value;
+ this.start = state.start;
+ this.end = state.end;
+ this.loc = new _utilLocation.SourceLocation(state.startLoc, state.endLoc);
+}
+
+// ## Tokenizer
+
+;
+
+exports.Token = Token;
+function codePointToString(code) {
+ // UTF-16 Decoding
+ if (code <= 0xFFFF) {
+ return String.fromCharCode(code);
+ } else {
+ return String.fromCharCode((code - 0x10000 >> 10) + 0xD800, (code - 0x10000 & 1023) + 0xDC00);
+ }
+}
+
+var Tokenizer = (function () {
+ function Tokenizer(options, input) {
+ _classCallCheck(this, Tokenizer);
+
+ this.state = new _state2["default"]();
+ this.state.init(options, input);
+ }
+
+ // Move to the next token
+
+ Tokenizer.prototype.next = function next() {
+ if (!this.isLookahead) {
+ this.state.tokens.push(new Token(this.state));
+ }
+
+ this.state.lastTokEnd = this.state.end;
+ this.state.lastTokStart = this.state.start;
+ this.state.lastTokEndLoc = this.state.endLoc;
+ this.state.lastTokStartLoc = this.state.startLoc;
+ this.nextToken();
+ };
+
+ // TODO
+
+ Tokenizer.prototype.eat = function eat(type) {
+ if (this.match(type)) {
+ this.next();
+ return true;
+ } else {
+ return false;
+ }
+ };
+
+ // TODO
+
+ Tokenizer.prototype.match = function match(type) {
+ return this.state.type === type;
+ };
+
+ // TODO
+
+ Tokenizer.prototype.isKeyword = function isKeyword(word) {
+ return _utilIdentifier.isKeyword(word);
+ };
+
+ // TODO
+
+ Tokenizer.prototype.lookahead = function lookahead() {
+ var old = this.state;
+ this.state = old.clone(true);
+
+ this.isLookahead = true;
+ this.next();
+ this.isLookahead = false;
+
+ var curr = this.state.clone(true);
+ this.state = old;
+ return curr;
+ };
+
+ // Toggle strict mode. Re-reads the next number or string to please
+ // pedantic tests (`"use strict"; 010;` should fail).
+
+ Tokenizer.prototype.setStrict = function setStrict(strict) {
+ this.state.strict = strict;
+ if (!this.match(_types.types.num) && !this.match(_types.types.string)) return;
+ this.state.pos = this.state.start;
+ while (this.state.pos < this.state.lineStart) {
+ this.state.lineStart = this.input.lastIndexOf("\n", this.state.lineStart - 2) + 1;
+ --this.state.curLine;
+ }
+ this.nextToken();
+ };
+
+ Tokenizer.prototype.curContext = function curContext() {
+ return this.state.context[this.state.context.length - 1];
+ };
+
+ // Read a single token, updating the parser object's token-related
+ // properties.
+
+ Tokenizer.prototype.nextToken = function nextToken() {
+ var curContext = this.curContext();
+ if (!curContext || !curContext.preserveSpace) this.skipSpace();
+
+ this.state.containsOctal = false;
+ this.state.octalPosition = null;
+ this.state.start = this.state.pos;
+ this.state.startLoc = this.state.curPosition();
+ if (this.state.pos >= this.input.length) return this.finishToken(_types.types.eof);
+
+ if (curContext.override) {
+ return curContext.override(this);
+ } else {
+ return this.readToken(this.fullCharCodeAtPos());
+ }
+ };
+
+ Tokenizer.prototype.readToken = function readToken(code) {
+ // Identifier or keyword. '\uXXXX' sequences are allowed in
+ // identifiers, so '\' also dispatches to that.
+ if (_utilIdentifier.isIdentifierStart(code) || code === 92 /* '\' */) {
+ return this.readWord();
+ } else {
+ return this.getTokenFromCode(code);
+ }
+ };
+
+ Tokenizer.prototype.fullCharCodeAtPos = function fullCharCodeAtPos() {
+ var code = this.input.charCodeAt(this.state.pos);
+ if (code <= 0xd7ff || code >= 0xe000) return code;
+
+ var next = this.input.charCodeAt(this.state.pos + 1);
+ return (code << 10) + next - 0x35fdc00;
+ };
+
+ Tokenizer.prototype.pushComment = function pushComment(block, text, start, end, startLoc, endLoc) {
+ var comment = {
+ type: block ? "CommentBlock" : "CommentLine",
+ value: text,
+ start: start,
+ end: end,
+ loc: new _utilLocation.SourceLocation(startLoc, endLoc)
+ };
+
+ if (!this.isLookahead) {
+ this.state.tokens.push(comment);
+ this.state.comments.push(comment);
+ }
+
+ this.addComment(comment);
+ };
+
+ Tokenizer.prototype.skipBlockComment = function skipBlockComment() {
+ var startLoc = this.state.curPosition();
+ var start = this.state.pos,
+ end = this.input.indexOf("*/", this.state.pos += 2);
+ if (end === -1) this.raise(this.state.pos - 2, "Unterminated comment");
+
+ this.state.pos = end + 2;
+ _utilWhitespace.lineBreakG.lastIndex = start;
+ var match = undefined;
+ while ((match = _utilWhitespace.lineBreakG.exec(this.input)) && match.index < this.state.pos) {
+ ++this.state.curLine;
+ this.state.lineStart = match.index + match[0].length;
+ }
+
+ this.pushComment(true, this.input.slice(start + 2, end), start, this.state.pos, startLoc, this.state.curPosition());
+ };
+
+ Tokenizer.prototype.skipLineComment = function skipLineComment(startSkip) {
+ var start = this.state.pos;
+ var startLoc = this.state.curPosition();
+ var ch = this.input.charCodeAt(this.state.pos += startSkip);
+ while (this.state.pos < this.input.length && ch !== 10 && ch !== 13 && ch !== 8232 && ch !== 8233) {
+ ++this.state.pos;
+ ch = this.input.charCodeAt(this.state.pos);
+ }
+
+ this.pushComment(false, this.input.slice(start + startSkip, this.state.pos), start, this.state.pos, startLoc, this.state.curPosition());
+ };
+
+ // Called at the start of the parse and after every token. Skips
+ // whitespace and comments, and.
+
+ Tokenizer.prototype.skipSpace = function skipSpace() {
+ loop: while (this.state.pos < this.input.length) {
+ var ch = this.input.charCodeAt(this.state.pos);
+ switch (ch) {
+ case 32:case 160:
+ // ' '
+ ++this.state.pos;
+ break;
+
+ case 13:
+ if (this.input.charCodeAt(this.state.pos + 1) === 10) {
+ ++this.state.pos;
+ }
+
+ case 10:case 8232:case 8233:
+ ++this.state.pos;
+ ++this.state.curLine;
+ this.state.lineStart = this.state.pos;
+ break;
+
+ case 47:
+ // '/'
+ switch (this.input.charCodeAt(this.state.pos + 1)) {
+ case 42:
+ // '*'
+ this.skipBlockComment();
+ break;
+
+ case 47:
+ this.skipLineComment(2);
+ break;
+
+ default:
+ break loop;
+ }
+ break;
+
+ default:
+ if (ch > 8 && ch < 14 || ch >= 5760 && _utilWhitespace.nonASCIIwhitespace.test(String.fromCharCode(ch))) {
+ ++this.state.pos;
+ } else {
+ break loop;
+ }
+ }
+ }
+ };
+
+ // Called at the end of every token. Sets `end`, `val`, and
+ // maintains `context` and `exprAllowed`, and skips the space after
+ // the token, so that the next one's `start` will point at the
+ // right position.
+
+ Tokenizer.prototype.finishToken = function finishToken(type, val) {
+ this.state.end = this.state.pos;
+ this.state.endLoc = this.state.curPosition();
+ var prevType = this.state.type;
+ this.state.type = type;
+ this.state.value = val;
+
+ this.updateContext(prevType);
+ };
+
+ // ### Token reading
+
+ // This is the function that is called to fetch the next token. It
+ // is somewhat obscure, because it works in character codes rather
+ // than characters, and because operator parsing has been inlined
+ // into it.
+ //
+ // All in the name of speed.
+ //
+
+ Tokenizer.prototype.readToken_dot = function readToken_dot() {
+ var next = this.input.charCodeAt(this.state.pos + 1);
+ if (next >= 48 && next <= 57) {
+ return this.readNumber(true);
+ }
+
+ var next2 = this.input.charCodeAt(this.state.pos + 2);
+ if (next === 46 && next2 === 46) {
+ // 46 = dot '.'
+ this.state.pos += 3;
+ return this.finishToken(_types.types.ellipsis);
+ } else {
+ ++this.state.pos;
+ return this.finishToken(_types.types.dot);
+ }
+ };
+
+ Tokenizer.prototype.readToken_slash = function readToken_slash() {
+ // '/'
+ if (this.state.exprAllowed) {
+ ++this.state.pos;
+ return this.readRegexp();
+ }
+
+ var next = this.input.charCodeAt(this.state.pos + 1);
+ if (next === 61) {
+ return this.finishOp(_types.types.assign, 2);
+ } else {
+ return this.finishOp(_types.types.slash, 1);
+ }
+ };
+
+ Tokenizer.prototype.readToken_mult_modulo = function readToken_mult_modulo(code) {
+ // '%*'
+ var type = code === 42 ? _types.types.star : _types.types.modulo;
+ var width = 1;
+ var next = this.input.charCodeAt(this.state.pos + 1);
+
+ if (next === 42 && this.hasPlugin("exponentiationOperator")) {
+ // '*'
+ width++;
+ next = this.input.charCodeAt(this.state.pos + 2);
+ type = _types.types.exponent;
+ }
+
+ if (next === 61) {
+ width++;
+ type = _types.types.assign;
+ }
+
+ return this.finishOp(type, width);
+ };
+
+ Tokenizer.prototype.readToken_pipe_amp = function readToken_pipe_amp(code) {
+ // '|&'
+ var next = this.input.charCodeAt(this.state.pos + 1);
+ if (next === code) return this.finishOp(code === 124 ? _types.types.logicalOR : _types.types.logicalAND, 2);
+ if (next === 61) return this.finishOp(_types.types.assign, 2);
+ return this.finishOp(code === 124 ? _types.types.bitwiseOR : _types.types.bitwiseAND, 1);
+ };
+
+ Tokenizer.prototype.readToken_caret = function readToken_caret() {
+ // '^'
+ var next = this.input.charCodeAt(this.state.pos + 1);
+ if (next === 61) {
+ return this.finishOp(_types.types.assign, 2);
+ } else {
+ return this.finishOp(_types.types.bitwiseXOR, 1);
+ }
+ };
+
+ Tokenizer.prototype.readToken_plus_min = function readToken_plus_min(code) {
+ // '+-'
+ var next = this.input.charCodeAt(this.state.pos + 1);
+
+ if (next === code) {
+ if (next === 45 && this.input.charCodeAt(this.state.pos + 2) === 62 && _utilWhitespace.lineBreak.test(this.input.slice(this.state.lastTokEnd, this.state.pos))) {
+ // A `-->` line comment
+ this.skipLineComment(3);
+ this.skipSpace();
+ return this.nextToken();
+ }
+ return this.finishOp(_types.types.incDec, 2);
+ }
+
+ if (next === 61) {
+ return this.finishOp(_types.types.assign, 2);
+ } else {
+ return this.finishOp(_types.types.plusMin, 1);
+ }
+ };
+
+ Tokenizer.prototype.readToken_lt_gt = function readToken_lt_gt(code) {
+ // '<>'
+ var next = this.input.charCodeAt(this.state.pos + 1);
+ var size = 1;
+
+ if (next === code) {
+ size = code === 62 && this.input.charCodeAt(this.state.pos + 2) === 62 ? 3 : 2;
+ if (this.input.charCodeAt(this.state.pos + size) === 61) return this.finishOp(_types.types.assign, size + 1);
+ return this.finishOp(_types.types.bitShift, size);
+ }
+
+ if (next === 33 && code === 60 && this.input.charCodeAt(this.state.pos + 2) === 45 && this.input.charCodeAt(this.state.pos + 3) === 45) {
+ if (this.inModule) this.unexpected();
+ // `
\ No newline at end of file
diff --git a/node_modules/braces/index.js b/node_modules/braces/index.js
new file mode 100644
index 0000000..a4dbf3f
--- /dev/null
+++ b/node_modules/braces/index.js
@@ -0,0 +1,399 @@
+/*!
+ * braces
+ *
+ * Copyright (c) 2014-2015, Jon Schlinkert.
+ * Licensed under the MIT license.
+ */
+
+'use strict';
+
+/**
+ * Module dependencies
+ */
+
+var expand = require('expand-range');
+var repeat = require('repeat-element');
+var tokens = require('preserve');
+
+/**
+ * Expose `braces`
+ */
+
+module.exports = function (str, options) {
+ if (typeof str !== 'string') {
+ throw new Error('braces expects a string');
+ }
+ return braces(str, options);
+};
+
+/**
+ * Expand `{foo,bar}` or `{1..5}` braces in the
+ * given `string`.
+ *
+ * @param {String} `str`
+ * @param {Array} `arr`
+ * @param {Object} `options`
+ * @return {Array}
+ */
+
+function braces(str, arr, options) {
+ if (str === '') {
+ return [];
+ }
+
+ if (!Array.isArray(arr)) {
+ options = arr;
+ arr = [];
+ }
+
+ var opts = options || {};
+ arr = arr || [];
+
+ if (typeof opts.nodupes === 'undefined') {
+ opts.nodupes = true;
+ }
+
+ var fn = opts.fn;
+ var es6;
+
+ if (typeof opts === 'function') {
+ fn = opts;
+ opts = {};
+ }
+
+ if (!(patternRe instanceof RegExp)) {
+ patternRe = patternRegex();
+ }
+
+ var matches = str.match(patternRe) || [];
+ var m = matches[0];
+
+ switch(m) {
+ case '\\,':
+ return escapeCommas(str, arr, opts);
+ case '\\.':
+ return escapeDots(str, arr, opts);
+ case '\/.':
+ return escapePaths(str, arr, opts);
+ case ' ':
+ return splitWhitespace(str);
+ case '{,}':
+ return exponential(str, opts, braces);
+ case '{}':
+ return emptyBraces(str, arr, opts);
+ case '\\{':
+ case '\\}':
+ return escapeBraces(str, arr, opts);
+ case '${':
+ if (!/\{[^{]+\{/.test(str)) {
+ return arr.concat(str);
+ } else {
+ es6 = true;
+ str = tokens.before(str, es6Regex());
+ }
+ }
+
+ if (!(braceRe instanceof RegExp)) {
+ braceRe = braceRegex();
+ }
+
+ var match = braceRe.exec(str);
+ if (match == null) {
+ return [str];
+ }
+
+ var outter = match[1];
+ var inner = match[2];
+ if (inner === '') { return [str]; }
+
+ var segs, segsLength;
+
+ if (inner.indexOf('..') !== -1) {
+ segs = expand(inner, opts, fn) || inner.split(',');
+ segsLength = segs.length;
+
+ } else if (inner[0] === '"' || inner[0] === '\'') {
+ return arr.concat(str.split(/['"]/).join(''));
+
+ } else {
+ segs = inner.split(',');
+ if (opts.makeRe) {
+ return braces(str.replace(outter, wrap(segs, '|')), opts);
+ }
+
+ segsLength = segs.length;
+ if (segsLength === 1 && opts.bash) {
+ segs[0] = wrap(segs[0], '\\');
+ }
+ }
+
+ var len = segs.length;
+ var i = 0, val;
+
+ while (len--) {
+ var path = segs[i++];
+
+ if (/(\.[^.\/])/.test(path)) {
+ if (segsLength > 1) {
+ return segs;
+ } else {
+ return [str];
+ }
+ }
+
+ val = splice(str, outter, path);
+
+ if (/\{[^{}]+?\}/.test(val)) {
+ arr = braces(val, arr, opts);
+ } else if (val !== '') {
+ if (opts.nodupes && arr.indexOf(val) !== -1) { continue; }
+ arr.push(es6 ? tokens.after(val) : val);
+ }
+ }
+
+ if (opts.strict) { return filter(arr, filterEmpty); }
+ return arr;
+}
+
+/**
+ * Expand exponential ranges
+ *
+ * `a{,}{,}` => ['a', 'a', 'a', 'a']
+ */
+
+function exponential(str, options, fn) {
+ if (typeof options === 'function') {
+ fn = options;
+ options = null;
+ }
+
+ var opts = options || {};
+ var esc = '__ESC_EXP__';
+ var exp = 0;
+ var res;
+
+ var parts = str.split('{,}');
+ if (opts.nodupes) {
+ return fn(parts.join(''), opts);
+ }
+
+ exp = parts.length - 1;
+ res = fn(parts.join(esc), opts);
+ var len = res.length;
+ var arr = [];
+ var i = 0;
+
+ while (len--) {
+ var ele = res[i++];
+ var idx = ele.indexOf(esc);
+
+ if (idx === -1) {
+ arr.push(ele);
+
+ } else {
+ ele = ele.split('__ESC_EXP__').join('');
+ if (!!ele && opts.nodupes !== false) {
+ arr.push(ele);
+
+ } else {
+ var num = Math.pow(2, exp);
+ arr.push.apply(arr, repeat(ele, num));
+ }
+ }
+ }
+ return arr;
+}
+
+/**
+ * Wrap a value with parens, brackets or braces,
+ * based on the given character/separator.
+ *
+ * @param {String|Array} `val`
+ * @param {String} `ch`
+ * @return {String}
+ */
+
+function wrap(val, ch) {
+ if (ch === '|') {
+ return '(' + val.join(ch) + ')';
+ }
+ if (ch === ',') {
+ return '{' + val.join(ch) + '}';
+ }
+ if (ch === '-') {
+ return '[' + val.join(ch) + ']';
+ }
+ if (ch === '\\') {
+ return '\\{' + val + '\\}';
+ }
+}
+
+/**
+ * Handle empty braces: `{}`
+ */
+
+function emptyBraces(str, arr, opts) {
+ return braces(str.split('{}').join('\\{\\}'), arr, opts);
+}
+
+/**
+ * Filter out empty-ish values
+ */
+
+function filterEmpty(ele) {
+ return !!ele && ele !== '\\';
+}
+
+/**
+ * Handle patterns with whitespace
+ */
+
+function splitWhitespace(str) {
+ var segs = str.split(' ');
+ var len = segs.length;
+ var res = [];
+ var i = 0;
+
+ while (len--) {
+ res.push.apply(res, braces(segs[i++]));
+ }
+ return res;
+}
+
+/**
+ * Handle escaped braces: `\\{foo,bar}`
+ */
+
+function escapeBraces(str, arr, opts) {
+ if (!/\{[^{]+\{/.test(str)) {
+ return arr.concat(str.split('\\').join(''));
+ } else {
+ str = str.split('\\{').join('__LT_BRACE__');
+ str = str.split('\\}').join('__RT_BRACE__');
+ return map(braces(str, arr, opts), function (ele) {
+ ele = ele.split('__LT_BRACE__').join('{');
+ return ele.split('__RT_BRACE__').join('}');
+ });
+ }
+}
+
+/**
+ * Handle escaped dots: `{1\\.2}`
+ */
+
+function escapeDots(str, arr, opts) {
+ if (!/[^\\]\..+\\\./.test(str)) {
+ return arr.concat(str.split('\\').join(''));
+ } else {
+ str = str.split('\\.').join('__ESC_DOT__');
+ return map(braces(str, arr, opts), function (ele) {
+ return ele.split('__ESC_DOT__').join('.');
+ });
+ }
+}
+
+/**
+ * Handle escaped dots: `{1\\.2}`
+ */
+
+function escapePaths(str, arr, opts) {
+ str = str.split('\/.').join('__ESC_PATH__');
+ return map(braces(str, arr, opts), function (ele) {
+ return ele.split('__ESC_PATH__').join('\/.');
+ });
+}
+
+/**
+ * Handle escaped commas: `{a\\,b}`
+ */
+
+function escapeCommas(str, arr, opts) {
+ if (!/\w,/.test(str)) {
+ return arr.concat(str.split('\\').join(''));
+ } else {
+ str = str.split('\\,').join('__ESC_COMMA__');
+ return map(braces(str, arr, opts), function (ele) {
+ return ele.split('__ESC_COMMA__').join(',');
+ });
+ }
+}
+
+/**
+ * Regex for common patterns
+ */
+
+function patternRegex() {
+ return /\$\{|[ \t]|{}|{,}|\\,(?=.*[{}])|\/\.(?=.*[{}])|\\\.(?={)|\\{|\\}/;
+}
+
+/**
+ * Braces regex.
+ */
+
+function braceRegex() {
+ return /.*(\\?\{([^}]+)\})/;
+}
+
+/**
+ * es6 delimiter regex.
+ */
+
+function es6Regex() {
+ return /\$\{([^}]+)\}/;
+}
+
+var braceRe;
+var patternRe;
+
+/**
+ * Faster alternative to `String.replace()` when the
+ * index of the token to be replaces can't be supplied
+ */
+
+function splice(str, token, replacement) {
+ var i = str.indexOf(token);
+ return str.substr(0, i) + replacement
+ + str.substr(i + token.length);
+}
+
+/**
+ * Fast array map
+ */
+
+function map(arr, fn) {
+ if (arr == null) {
+ return [];
+ }
+
+ var len = arr.length;
+ var res = new Array(len);
+ var i = -1;
+
+ while (++i < len) {
+ res[i] = fn(arr[i], i, arr);
+ }
+
+ return res;
+}
+
+/**
+ * Fast array filter
+ */
+
+function filter(arr, cb) {
+ if (arr == null) return [];
+ if (typeof cb !== 'function') {
+ throw new TypeError('braces: filter expects a callback function.');
+ }
+
+ var len = arr.length;
+ var res = arr.slice();
+ var i = 0;
+
+ while (len--) {
+ if (!cb(arr[len], i++)) {
+ res.splice(len, 1);
+ }
+ }
+ return res;
+}
diff --git a/node_modules/braces/package.json b/node_modules/braces/package.json
new file mode 100644
index 0000000..432decc
--- /dev/null
+++ b/node_modules/braces/package.json
@@ -0,0 +1,122 @@
+{
+ "_args": [
+ [
+ "braces@^1.8.2",
+ "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/micromatch"
+ ]
+ ],
+ "_from": "braces@>=1.8.2 <2.0.0",
+ "_id": "braces@1.8.3",
+ "_inCache": true,
+ "_installable": true,
+ "_location": "/braces",
+ "_nodeVersion": "5.0.0",
+ "_npmUser": {
+ "email": "github@sellside.com",
+ "name": "jonschlinkert"
+ },
+ "_npmVersion": "3.3.6",
+ "_phantomChildren": {},
+ "_requested": {
+ "name": "braces",
+ "raw": "braces@^1.8.2",
+ "rawSpec": "^1.8.2",
+ "scope": null,
+ "spec": ">=1.8.2 <2.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/micromatch"
+ ],
+ "_resolved": "https://registry.npmjs.org/braces/-/braces-1.8.3.tgz",
+ "_shasum": "35d4e7dda632b33e215d38a8a9cf4329c9c75d2c",
+ "_shrinkwrap": null,
+ "_spec": "braces@^1.8.2",
+ "_where": "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/micromatch",
+ "author": {
+ "name": "Jon Schlinkert",
+ "url": "https://github.com/jonschlinkert"
+ },
+ "bugs": {
+ "url": "https://github.com/jonschlinkert/braces/issues"
+ },
+ "dependencies": {
+ "expand-range": "^1.8.1",
+ "preserve": "^0.2.0",
+ "repeat-element": "^1.1.2"
+ },
+ "description": "Fastest brace expansion for node.js, with the most complete support for the Bash 4.3 braces specification.",
+ "devDependencies": {
+ "benchmarked": "^0.1.3",
+ "brace-expansion": "^1.1.0",
+ "chalk": "^0.5.1",
+ "minimatch": "^2.0.1",
+ "minimist": "^1.1.0",
+ "mocha": "*",
+ "should": "*"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "35d4e7dda632b33e215d38a8a9cf4329c9c75d2c",
+ "tarball": "http://registry.npmjs.org/braces/-/braces-1.8.3.tgz"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ },
+ "files": [
+ "index.js",
+ "utils.js"
+ ],
+ "gitHead": "9ab31c0dbf663ad08a7d9519286858f24e2ea9ac",
+ "homepage": "https://github.com/jonschlinkert/braces",
+ "keywords": [
+ "alpha",
+ "alphabetical",
+ "bash",
+ "brace",
+ "expand",
+ "expansion",
+ "filepath",
+ "fill",
+ "fs",
+ "glob",
+ "globbing",
+ "letter",
+ "match",
+ "matches",
+ "matching",
+ "number",
+ "numerical",
+ "path",
+ "range",
+ "ranges",
+ "sh"
+ ],
+ "license": "MIT",
+ "main": "index.js",
+ "maintainers": [
+ {
+ "name": "jonschlinkert",
+ "email": "github@sellside.com"
+ },
+ {
+ "name": "es128",
+ "email": "elan.shanker+npm@gmail.com"
+ },
+ {
+ "name": "doowb",
+ "email": "brian.woodward@gmail.com"
+ }
+ ],
+ "name": "braces",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/jonschlinkert/braces.git"
+ },
+ "scripts": {
+ "test": "mocha"
+ },
+ "version": "1.8.3"
+}
diff --git a/node_modules/browserify-zlib/.npmignore b/node_modules/browserify-zlib/.npmignore
new file mode 100644
index 0000000..2752eb9
--- /dev/null
+++ b/node_modules/browserify-zlib/.npmignore
@@ -0,0 +1,2 @@
+node_modules/
+.DS_Store
diff --git a/node_modules/browserify-zlib/.travis.yml b/node_modules/browserify-zlib/.travis.yml
new file mode 100644
index 0000000..87f8cd9
--- /dev/null
+++ b/node_modules/browserify-zlib/.travis.yml
@@ -0,0 +1,3 @@
+language: node_js
+node_js:
+ - "0.10"
\ No newline at end of file
diff --git a/node_modules/browserify-zlib/README.md b/node_modules/browserify-zlib/README.md
new file mode 100644
index 0000000..61f323a
--- /dev/null
+++ b/node_modules/browserify-zlib/README.md
@@ -0,0 +1,22 @@
+# browserify-zlib
+
+Emulates Node's [zlib](http://nodejs.org/api/zlib.html) module for [Browserify](http://browserify.org)
+using [pako](https://github.com/nodeca/pako). It uses the actual Node source code and passes the Node zlib tests
+by emulating the C++ binding that actually calls zlib.
+
+[
+](https://ci.testling.com/devongovett/browserify-zlib)
+
+[
+](https://travis-ci.org/devongovett/browserify-zlib)
+
+## Not implemented
+
+The following options/methods are not supported because pako does not support them yet.
+
+* The `params` method
+* The `dictionary` option
+
+## License
+
+MIT
diff --git a/node_modules/browserify-zlib/package.json b/node_modules/browserify-zlib/package.json
new file mode 100644
index 0000000..2d3734c
--- /dev/null
+++ b/node_modules/browserify-zlib/package.json
@@ -0,0 +1,94 @@
+{
+ "_args": [
+ [
+ "browserify-zlib@~0.1.4",
+ "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/node-libs-browser"
+ ]
+ ],
+ "_from": "browserify-zlib@>=0.1.4 <0.2.0",
+ "_id": "browserify-zlib@0.1.4",
+ "_inCache": true,
+ "_installable": true,
+ "_location": "/browserify-zlib",
+ "_npmUser": {
+ "email": "devongovett@gmail.com",
+ "name": "devongovett"
+ },
+ "_npmVersion": "1.4.4",
+ "_phantomChildren": {},
+ "_requested": {
+ "name": "browserify-zlib",
+ "raw": "browserify-zlib@~0.1.4",
+ "rawSpec": "~0.1.4",
+ "scope": null,
+ "spec": ">=0.1.4 <0.2.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/node-libs-browser"
+ ],
+ "_resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz",
+ "_shasum": "bb35f8a519f600e0fa6b8485241c979d0141fb2d",
+ "_shrinkwrap": null,
+ "_spec": "browserify-zlib@~0.1.4",
+ "_where": "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/node-libs-browser",
+ "author": {
+ "email": "devongovett@gmail.com",
+ "name": "Devon Govett"
+ },
+ "bugs": {
+ "url": "https://github.com/devongovett/browserify-zlib/issues"
+ },
+ "dependencies": {
+ "pako": "~0.2.0"
+ },
+ "description": "Full zlib module for browserify",
+ "devDependencies": {
+ "brfs": "^1.0.1",
+ "tape": "^2.12.3"
+ },
+ "directories": {
+ "test": "test"
+ },
+ "dist": {
+ "shasum": "bb35f8a519f600e0fa6b8485241c979d0141fb2d",
+ "tarball": "http://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz"
+ },
+ "homepage": "https://github.com/devongovett/browserify-zlib",
+ "keywords": [
+ "browserify",
+ "zlib"
+ ],
+ "license": "MIT",
+ "main": "src/index.js",
+ "maintainers": [
+ {
+ "name": "devongovett",
+ "email": "devongovett@gmail.com"
+ }
+ ],
+ "name": "browserify-zlib",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/devongovett/browserify-zlib.git"
+ },
+ "scripts": {
+ "test": "node_modules/tape/bin/tape test/*.js"
+ },
+ "testling": {
+ "browsers": [
+ "android-browser/latest",
+ "chrome/22..latest",
+ "firefox/16..latest",
+ "ie/6..latest",
+ "ipad/6",
+ "iphone/6",
+ "opera/11.0..latest",
+ "safari/latest"
+ ],
+ "files": "test/*.js"
+ },
+ "version": "0.1.4"
+}
diff --git a/node_modules/browserify-zlib/src/binding.js b/node_modules/browserify-zlib/src/binding.js
new file mode 100644
index 0000000..7244b43
--- /dev/null
+++ b/node_modules/browserify-zlib/src/binding.js
@@ -0,0 +1,236 @@
+var msg = require('pako/lib/zlib/messages');
+var zstream = require('pako/lib/zlib/zstream');
+var zlib_deflate = require('pako/lib/zlib/deflate.js');
+var zlib_inflate = require('pako/lib/zlib/inflate.js');
+var constants = require('pako/lib/zlib/constants');
+
+for (var key in constants) {
+ exports[key] = constants[key];
+}
+
+// zlib modes
+exports.NONE = 0;
+exports.DEFLATE = 1;
+exports.INFLATE = 2;
+exports.GZIP = 3;
+exports.GUNZIP = 4;
+exports.DEFLATERAW = 5;
+exports.INFLATERAW = 6;
+exports.UNZIP = 7;
+
+/**
+ * Emulate Node's zlib C++ layer for use by the JS layer in index.js
+ */
+function Zlib(mode) {
+ if (mode < exports.DEFLATE || mode > exports.UNZIP)
+ throw new TypeError("Bad argument");
+
+ this.mode = mode;
+ this.init_done = false;
+ this.write_in_progress = false;
+ this.pending_close = false;
+ this.windowBits = 0;
+ this.level = 0;
+ this.memLevel = 0;
+ this.strategy = 0;
+ this.dictionary = null;
+}
+
+Zlib.prototype.init = function(windowBits, level, memLevel, strategy, dictionary) {
+ this.windowBits = windowBits;
+ this.level = level;
+ this.memLevel = memLevel;
+ this.strategy = strategy;
+ // dictionary not supported.
+
+ if (this.mode === exports.GZIP || this.mode === exports.GUNZIP)
+ this.windowBits += 16;
+
+ if (this.mode === exports.UNZIP)
+ this.windowBits += 32;
+
+ if (this.mode === exports.DEFLATERAW || this.mode === exports.INFLATERAW)
+ this.windowBits = -this.windowBits;
+
+ this.strm = new zstream();
+
+ switch (this.mode) {
+ case exports.DEFLATE:
+ case exports.GZIP:
+ case exports.DEFLATERAW:
+ var status = zlib_deflate.deflateInit2(
+ this.strm,
+ this.level,
+ exports.Z_DEFLATED,
+ this.windowBits,
+ this.memLevel,
+ this.strategy
+ );
+ break;
+ case exports.INFLATE:
+ case exports.GUNZIP:
+ case exports.INFLATERAW:
+ case exports.UNZIP:
+ var status = zlib_inflate.inflateInit2(
+ this.strm,
+ this.windowBits
+ );
+ break;
+ default:
+ throw new Error("Unknown mode " + this.mode);
+ }
+
+ if (status !== exports.Z_OK) {
+ this._error(status);
+ return;
+ }
+
+ this.write_in_progress = false;
+ this.init_done = true;
+};
+
+Zlib.prototype.params = function() {
+ throw new Error("deflateParams Not supported");
+};
+
+Zlib.prototype._writeCheck = function() {
+ if (!this.init_done)
+ throw new Error("write before init");
+
+ if (this.mode === exports.NONE)
+ throw new Error("already finalized");
+
+ if (this.write_in_progress)
+ throw new Error("write already in progress");
+
+ if (this.pending_close)
+ throw new Error("close is pending");
+};
+
+Zlib.prototype.write = function(flush, input, in_off, in_len, out, out_off, out_len) {
+ this._writeCheck();
+ this.write_in_progress = true;
+
+ var self = this;
+ process.nextTick(function() {
+ self.write_in_progress = false;
+ var res = self._write(flush, input, in_off, in_len, out, out_off, out_len);
+ self.callback(res[0], res[1]);
+
+ if (self.pending_close)
+ self.close();
+ });
+
+ return this;
+};
+
+// set method for Node buffers, used by pako
+function bufferSet(data, offset) {
+ for (var i = 0; i < data.length; i++) {
+ this[offset + i] = data[i];
+ }
+}
+
+Zlib.prototype.writeSync = function(flush, input, in_off, in_len, out, out_off, out_len) {
+ this._writeCheck();
+ return this._write(flush, input, in_off, in_len, out, out_off, out_len);
+};
+
+Zlib.prototype._write = function(flush, input, in_off, in_len, out, out_off, out_len) {
+ this.write_in_progress = true;
+
+ if (flush !== exports.Z_NO_FLUSH &&
+ flush !== exports.Z_PARTIAL_FLUSH &&
+ flush !== exports.Z_SYNC_FLUSH &&
+ flush !== exports.Z_FULL_FLUSH &&
+ flush !== exports.Z_FINISH &&
+ flush !== exports.Z_BLOCK) {
+ throw new Error("Invalid flush value");
+ }
+
+ if (input == null) {
+ input = new Buffer(0);
+ in_len = 0;
+ in_off = 0;
+ }
+
+ if (out._set)
+ out.set = out._set;
+ else
+ out.set = bufferSet;
+
+ var strm = this.strm;
+ strm.avail_in = in_len;
+ strm.input = input;
+ strm.next_in = in_off;
+ strm.avail_out = out_len;
+ strm.output = out;
+ strm.next_out = out_off;
+
+ switch (this.mode) {
+ case exports.DEFLATE:
+ case exports.GZIP:
+ case exports.DEFLATERAW:
+ var status = zlib_deflate.deflate(strm, flush);
+ break;
+ case exports.UNZIP:
+ case exports.INFLATE:
+ case exports.GUNZIP:
+ case exports.INFLATERAW:
+ var status = zlib_inflate.inflate(strm, flush);
+ break;
+ default:
+ throw new Error("Unknown mode " + this.mode);
+ }
+
+ if (status !== exports.Z_STREAM_END && status !== exports.Z_OK) {
+ this._error(status);
+ }
+
+ this.write_in_progress = false;
+ return [strm.avail_in, strm.avail_out];
+};
+
+Zlib.prototype.close = function() {
+ if (this.write_in_progress) {
+ this.pending_close = true;
+ return;
+ }
+
+ this.pending_close = false;
+
+ if (this.mode === exports.DEFLATE || this.mode === exports.GZIP || this.mode === exports.DEFLATERAW) {
+ zlib_deflate.deflateEnd(this.strm);
+ } else {
+ zlib_inflate.inflateEnd(this.strm);
+ }
+
+ this.mode = exports.NONE;
+};
+
+Zlib.prototype.reset = function() {
+ switch (this.mode) {
+ case exports.DEFLATE:
+ case exports.DEFLATERAW:
+ var status = zlib_deflate.deflateReset(this.strm);
+ break;
+ case exports.INFLATE:
+ case exports.INFLATERAW:
+ var status = zlib_inflate.inflateReset(this.strm);
+ break;
+ }
+
+ if (status !== exports.Z_OK) {
+ this._error(status);
+ }
+};
+
+Zlib.prototype._error = function(status) {
+ this.onerror(msg[status] + ': ' + this.strm.msg, status);
+
+ this.write_in_progress = false;
+ if (this.pending_close)
+ this.close();
+};
+
+exports.Zlib = Zlib;
diff --git a/node_modules/browserify-zlib/src/index.js b/node_modules/browserify-zlib/src/index.js
new file mode 100644
index 0000000..032689c
--- /dev/null
+++ b/node_modules/browserify-zlib/src/index.js
@@ -0,0 +1,610 @@
+// 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.
+
+var Transform = require('_stream_transform');
+
+var binding = require('./binding');
+var util = require('util');
+var assert = require('assert').ok;
+
+// zlib doesn't provide these, so kludge them in following the same
+// const naming scheme zlib uses.
+binding.Z_MIN_WINDOWBITS = 8;
+binding.Z_MAX_WINDOWBITS = 15;
+binding.Z_DEFAULT_WINDOWBITS = 15;
+
+// fewer than 64 bytes per chunk is stupid.
+// technically it could work with as few as 8, but even 64 bytes
+// is absurdly low. Usually a MB or more is best.
+binding.Z_MIN_CHUNK = 64;
+binding.Z_MAX_CHUNK = Infinity;
+binding.Z_DEFAULT_CHUNK = (16 * 1024);
+
+binding.Z_MIN_MEMLEVEL = 1;
+binding.Z_MAX_MEMLEVEL = 9;
+binding.Z_DEFAULT_MEMLEVEL = 8;
+
+binding.Z_MIN_LEVEL = -1;
+binding.Z_MAX_LEVEL = 9;
+binding.Z_DEFAULT_LEVEL = binding.Z_DEFAULT_COMPRESSION;
+
+// expose all the zlib constants
+Object.keys(binding).forEach(function(k) {
+ if (k.match(/^Z/)) exports[k] = binding[k];
+});
+
+// translation table for return codes.
+exports.codes = {
+ Z_OK: binding.Z_OK,
+ Z_STREAM_END: binding.Z_STREAM_END,
+ Z_NEED_DICT: binding.Z_NEED_DICT,
+ Z_ERRNO: binding.Z_ERRNO,
+ Z_STREAM_ERROR: binding.Z_STREAM_ERROR,
+ Z_DATA_ERROR: binding.Z_DATA_ERROR,
+ Z_MEM_ERROR: binding.Z_MEM_ERROR,
+ Z_BUF_ERROR: binding.Z_BUF_ERROR,
+ Z_VERSION_ERROR: binding.Z_VERSION_ERROR
+};
+
+Object.keys(exports.codes).forEach(function(k) {
+ exports.codes[exports.codes[k]] = k;
+});
+
+exports.Deflate = Deflate;
+exports.Inflate = Inflate;
+exports.Gzip = Gzip;
+exports.Gunzip = Gunzip;
+exports.DeflateRaw = DeflateRaw;
+exports.InflateRaw = InflateRaw;
+exports.Unzip = Unzip;
+
+exports.createDeflate = function(o) {
+ return new Deflate(o);
+};
+
+exports.createInflate = function(o) {
+ return new Inflate(o);
+};
+
+exports.createDeflateRaw = function(o) {
+ return new DeflateRaw(o);
+};
+
+exports.createInflateRaw = function(o) {
+ return new InflateRaw(o);
+};
+
+exports.createGzip = function(o) {
+ return new Gzip(o);
+};
+
+exports.createGunzip = function(o) {
+ return new Gunzip(o);
+};
+
+exports.createUnzip = function(o) {
+ return new Unzip(o);
+};
+
+
+// Convenience methods.
+// compress/decompress a string or buffer in one step.
+exports.deflate = function(buffer, opts, callback) {
+ if (typeof opts === 'function') {
+ callback = opts;
+ opts = {};
+ }
+ return zlibBuffer(new Deflate(opts), buffer, callback);
+};
+
+exports.deflateSync = function(buffer, opts) {
+ return zlibBufferSync(new Deflate(opts), buffer);
+};
+
+exports.gzip = function(buffer, opts, callback) {
+ if (typeof opts === 'function') {
+ callback = opts;
+ opts = {};
+ }
+ return zlibBuffer(new Gzip(opts), buffer, callback);
+};
+
+exports.gzipSync = function(buffer, opts) {
+ return zlibBufferSync(new Gzip(opts), buffer);
+};
+
+exports.deflateRaw = function(buffer, opts, callback) {
+ if (typeof opts === 'function') {
+ callback = opts;
+ opts = {};
+ }
+ return zlibBuffer(new DeflateRaw(opts), buffer, callback);
+};
+
+exports.deflateRawSync = function(buffer, opts) {
+ return zlibBufferSync(new DeflateRaw(opts), buffer);
+};
+
+exports.unzip = function(buffer, opts, callback) {
+ if (typeof opts === 'function') {
+ callback = opts;
+ opts = {};
+ }
+ return zlibBuffer(new Unzip(opts), buffer, callback);
+};
+
+exports.unzipSync = function(buffer, opts) {
+ return zlibBufferSync(new Unzip(opts), buffer);
+};
+
+exports.inflate = function(buffer, opts, callback) {
+ if (typeof opts === 'function') {
+ callback = opts;
+ opts = {};
+ }
+ return zlibBuffer(new Inflate(opts), buffer, callback);
+};
+
+exports.inflateSync = function(buffer, opts) {
+ return zlibBufferSync(new Inflate(opts), buffer);
+};
+
+exports.gunzip = function(buffer, opts, callback) {
+ if (typeof opts === 'function') {
+ callback = opts;
+ opts = {};
+ }
+ return zlibBuffer(new Gunzip(opts), buffer, callback);
+};
+
+exports.gunzipSync = function(buffer, opts) {
+ return zlibBufferSync(new Gunzip(opts), buffer);
+};
+
+exports.inflateRaw = function(buffer, opts, callback) {
+ if (typeof opts === 'function') {
+ callback = opts;
+ opts = {};
+ }
+ return zlibBuffer(new InflateRaw(opts), buffer, callback);
+};
+
+exports.inflateRawSync = function(buffer, opts) {
+ return zlibBufferSync(new InflateRaw(opts), buffer);
+};
+
+function zlibBuffer(engine, buffer, callback) {
+ var buffers = [];
+ var nread = 0;
+
+ engine.on('error', onError);
+ engine.on('end', onEnd);
+
+ engine.end(buffer);
+ flow();
+
+ function flow() {
+ var chunk;
+ while (null !== (chunk = engine.read())) {
+ buffers.push(chunk);
+ nread += chunk.length;
+ }
+ engine.once('readable', flow);
+ }
+
+ function onError(err) {
+ engine.removeListener('end', onEnd);
+ engine.removeListener('readable', flow);
+ callback(err);
+ }
+
+ function onEnd() {
+ var buf = Buffer.concat(buffers, nread);
+ buffers = [];
+ callback(null, buf);
+ engine.close();
+ }
+}
+
+function zlibBufferSync(engine, buffer) {
+ if (typeof buffer === 'string')
+ buffer = new Buffer(buffer);
+ if (!Buffer.isBuffer(buffer))
+ throw new TypeError('Not a string or buffer');
+
+ var flushFlag = binding.Z_FINISH;
+
+ return engine._processChunk(buffer, flushFlag);
+}
+
+// generic zlib
+// minimal 2-byte header
+function Deflate(opts) {
+ if (!(this instanceof Deflate)) return new Deflate(opts);
+ Zlib.call(this, opts, binding.DEFLATE);
+}
+
+function Inflate(opts) {
+ if (!(this instanceof Inflate)) return new Inflate(opts);
+ Zlib.call(this, opts, binding.INFLATE);
+}
+
+
+
+// gzip - bigger header, same deflate compression
+function Gzip(opts) {
+ if (!(this instanceof Gzip)) return new Gzip(opts);
+ Zlib.call(this, opts, binding.GZIP);
+}
+
+function Gunzip(opts) {
+ if (!(this instanceof Gunzip)) return new Gunzip(opts);
+ Zlib.call(this, opts, binding.GUNZIP);
+}
+
+
+
+// raw - no header
+function DeflateRaw(opts) {
+ if (!(this instanceof DeflateRaw)) return new DeflateRaw(opts);
+ Zlib.call(this, opts, binding.DEFLATERAW);
+}
+
+function InflateRaw(opts) {
+ if (!(this instanceof InflateRaw)) return new InflateRaw(opts);
+ Zlib.call(this, opts, binding.INFLATERAW);
+}
+
+
+// auto-detect header.
+function Unzip(opts) {
+ if (!(this instanceof Unzip)) return new Unzip(opts);
+ Zlib.call(this, opts, binding.UNZIP);
+}
+
+
+// the Zlib class they all inherit from
+// This thing manages the queue of requests, and returns
+// true or false if there is anything in the queue when
+// you call the .write() method.
+
+function Zlib(opts, mode) {
+ this._opts = opts = opts || {};
+ this._chunkSize = opts.chunkSize || exports.Z_DEFAULT_CHUNK;
+
+ Transform.call(this, opts);
+
+ if (opts.flush) {
+ if (opts.flush !== binding.Z_NO_FLUSH &&
+ opts.flush !== binding.Z_PARTIAL_FLUSH &&
+ opts.flush !== binding.Z_SYNC_FLUSH &&
+ opts.flush !== binding.Z_FULL_FLUSH &&
+ opts.flush !== binding.Z_FINISH &&
+ opts.flush !== binding.Z_BLOCK) {
+ throw new Error('Invalid flush flag: ' + opts.flush);
+ }
+ }
+ this._flushFlag = opts.flush || binding.Z_NO_FLUSH;
+
+ if (opts.chunkSize) {
+ if (opts.chunkSize < exports.Z_MIN_CHUNK ||
+ opts.chunkSize > exports.Z_MAX_CHUNK) {
+ throw new Error('Invalid chunk size: ' + opts.chunkSize);
+ }
+ }
+
+ if (opts.windowBits) {
+ if (opts.windowBits < exports.Z_MIN_WINDOWBITS ||
+ opts.windowBits > exports.Z_MAX_WINDOWBITS) {
+ throw new Error('Invalid windowBits: ' + opts.windowBits);
+ }
+ }
+
+ if (opts.level) {
+ if (opts.level < exports.Z_MIN_LEVEL ||
+ opts.level > exports.Z_MAX_LEVEL) {
+ throw new Error('Invalid compression level: ' + opts.level);
+ }
+ }
+
+ if (opts.memLevel) {
+ if (opts.memLevel < exports.Z_MIN_MEMLEVEL ||
+ opts.memLevel > exports.Z_MAX_MEMLEVEL) {
+ throw new Error('Invalid memLevel: ' + opts.memLevel);
+ }
+ }
+
+ if (opts.strategy) {
+ if (opts.strategy != exports.Z_FILTERED &&
+ opts.strategy != exports.Z_HUFFMAN_ONLY &&
+ opts.strategy != exports.Z_RLE &&
+ opts.strategy != exports.Z_FIXED &&
+ opts.strategy != exports.Z_DEFAULT_STRATEGY) {
+ throw new Error('Invalid strategy: ' + opts.strategy);
+ }
+ }
+
+ if (opts.dictionary) {
+ if (!Buffer.isBuffer(opts.dictionary)) {
+ throw new Error('Invalid dictionary: it should be a Buffer instance');
+ }
+ }
+
+ this._binding = new binding.Zlib(mode);
+
+ var self = this;
+ this._hadError = false;
+ this._binding.onerror = function(message, errno) {
+ // there is no way to cleanly recover.
+ // continuing only obscures problems.
+ self._binding = null;
+ self._hadError = true;
+
+ var error = new Error(message);
+ error.errno = errno;
+ error.code = exports.codes[errno];
+ self.emit('error', error);
+ };
+
+ var level = exports.Z_DEFAULT_COMPRESSION;
+ if (typeof opts.level === 'number') level = opts.level;
+
+ var strategy = exports.Z_DEFAULT_STRATEGY;
+ if (typeof opts.strategy === 'number') strategy = opts.strategy;
+
+ this._binding.init(opts.windowBits || exports.Z_DEFAULT_WINDOWBITS,
+ level,
+ opts.memLevel || exports.Z_DEFAULT_MEMLEVEL,
+ strategy,
+ opts.dictionary);
+
+ this._buffer = new Buffer(this._chunkSize);
+ this._offset = 0;
+ this._closed = false;
+ this._level = level;
+ this._strategy = strategy;
+
+ this.once('end', this.close);
+}
+
+util.inherits(Zlib, Transform);
+
+Zlib.prototype.params = function(level, strategy, callback) {
+ if (level < exports.Z_MIN_LEVEL ||
+ level > exports.Z_MAX_LEVEL) {
+ throw new RangeError('Invalid compression level: ' + level);
+ }
+ if (strategy != exports.Z_FILTERED &&
+ strategy != exports.Z_HUFFMAN_ONLY &&
+ strategy != exports.Z_RLE &&
+ strategy != exports.Z_FIXED &&
+ strategy != exports.Z_DEFAULT_STRATEGY) {
+ throw new TypeError('Invalid strategy: ' + strategy);
+ }
+
+ if (this._level !== level || this._strategy !== strategy) {
+ var self = this;
+ this.flush(binding.Z_SYNC_FLUSH, function() {
+ self._binding.params(level, strategy);
+ if (!self._hadError) {
+ self._level = level;
+ self._strategy = strategy;
+ if (callback) callback();
+ }
+ });
+ } else {
+ process.nextTick(callback);
+ }
+};
+
+Zlib.prototype.reset = function() {
+ return this._binding.reset();
+};
+
+// This is the _flush function called by the transform class,
+// internally, when the last chunk has been written.
+Zlib.prototype._flush = function(callback) {
+ this._transform(new Buffer(0), '', callback);
+};
+
+Zlib.prototype.flush = function(kind, callback) {
+ var ws = this._writableState;
+
+ if (typeof kind === 'function' || (kind === void 0 && !callback)) {
+ callback = kind;
+ kind = binding.Z_FULL_FLUSH;
+ }
+
+ if (ws.ended) {
+ if (callback)
+ process.nextTick(callback);
+ } else if (ws.ending) {
+ if (callback)
+ this.once('end', callback);
+ } else if (ws.needDrain) {
+ var self = this;
+ this.once('drain', function() {
+ self.flush(callback);
+ });
+ } else {
+ this._flushFlag = kind;
+ this.write(new Buffer(0), '', callback);
+ }
+};
+
+Zlib.prototype.close = function(callback) {
+ if (callback)
+ process.nextTick(callback);
+
+ if (this._closed)
+ return;
+
+ this._closed = true;
+
+ this._binding.close();
+
+ var self = this;
+ process.nextTick(function() {
+ self.emit('close');
+ });
+};
+
+Zlib.prototype._transform = function(chunk, encoding, cb) {
+ var flushFlag;
+ var ws = this._writableState;
+ var ending = ws.ending || ws.ended;
+ var last = ending && (!chunk || ws.length === chunk.length);
+
+ if (!chunk === null && !Buffer.isBuffer(chunk))
+ return cb(new Error('invalid input'));
+
+ // If it's the last chunk, or a final flush, we use the Z_FINISH flush flag.
+ // If it's explicitly flushing at some other time, then we use
+ // Z_FULL_FLUSH. Otherwise, use Z_NO_FLUSH for maximum compression
+ // goodness.
+ if (last)
+ flushFlag = binding.Z_FINISH;
+ else {
+ flushFlag = this._flushFlag;
+ // once we've flushed the last of the queue, stop flushing and
+ // go back to the normal behavior.
+ if (chunk.length >= ws.length) {
+ this._flushFlag = this._opts.flush || binding.Z_NO_FLUSH;
+ }
+ }
+
+ var self = this;
+ this._processChunk(chunk, flushFlag, cb);
+};
+
+Zlib.prototype._processChunk = function(chunk, flushFlag, cb) {
+ var availInBefore = chunk && chunk.length;
+ var availOutBefore = this._chunkSize - this._offset;
+ var inOff = 0;
+
+ var self = this;
+
+ var async = typeof cb === 'function';
+
+ if (!async) {
+ var buffers = [];
+ var nread = 0;
+
+ var error;
+ this.on('error', function(er) {
+ error = er;
+ });
+
+ do {
+ var res = this._binding.writeSync(flushFlag,
+ chunk, // in
+ inOff, // in_off
+ availInBefore, // in_len
+ this._buffer, // out
+ this._offset, //out_off
+ availOutBefore); // out_len
+ } while (!this._hadError && callback(res[0], res[1]));
+
+ if (this._hadError) {
+ throw error;
+ }
+
+ var buf = Buffer.concat(buffers, nread);
+ this.close();
+
+ return buf;
+ }
+
+ var req = this._binding.write(flushFlag,
+ chunk, // in
+ inOff, // in_off
+ availInBefore, // in_len
+ this._buffer, // out
+ this._offset, //out_off
+ availOutBefore); // out_len
+
+ req.buffer = chunk;
+ req.callback = callback;
+
+ function callback(availInAfter, availOutAfter) {
+ if (self._hadError)
+ return;
+
+ var have = availOutBefore - availOutAfter;
+ assert(have >= 0, 'have should not go down');
+
+ if (have > 0) {
+ var out = self._buffer.slice(self._offset, self._offset + have);
+ self._offset += have;
+ // serve some output to the consumer.
+ if (async) {
+ self.push(out);
+ } else {
+ buffers.push(out);
+ nread += out.length;
+ }
+ }
+
+ // exhausted the output buffer, or used all the input create a new one.
+ if (availOutAfter === 0 || self._offset >= self._chunkSize) {
+ availOutBefore = self._chunkSize;
+ self._offset = 0;
+ self._buffer = new Buffer(self._chunkSize);
+ }
+
+ if (availOutAfter === 0) {
+ // Not actually done. Need to reprocess.
+ // Also, update the availInBefore to the availInAfter value,
+ // so that if we have to hit it a third (fourth, etc.) time,
+ // it'll have the correct byte counts.
+ inOff += (availInBefore - availInAfter);
+ availInBefore = availInAfter;
+
+ if (!async)
+ return true;
+
+ var newReq = self._binding.write(flushFlag,
+ chunk,
+ inOff,
+ availInBefore,
+ self._buffer,
+ self._offset,
+ self._chunkSize);
+ newReq.callback = callback; // this same function
+ newReq.buffer = chunk;
+ return;
+ }
+
+ if (!async)
+ return false;
+
+ // finished with the chunk.
+ cb();
+ }
+};
+
+util.inherits(Deflate, Zlib);
+util.inherits(Inflate, Zlib);
+util.inherits(Gzip, Zlib);
+util.inherits(Gunzip, Zlib);
+util.inherits(DeflateRaw, Zlib);
+util.inherits(InflateRaw, Zlib);
+util.inherits(Unzip, Zlib);
diff --git a/node_modules/browserify-zlib/test/fixtures/elipses.txt b/node_modules/browserify-zlib/test/fixtures/elipses.txt
new file mode 100644
index 0000000..6105600
--- /dev/null
+++ b/node_modules/browserify-zlib/test/fixtures/elipses.txt
@@ -0,0 +1 @@
+…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………
\ No newline at end of file
diff --git a/node_modules/browserify-zlib/test/fixtures/empty.txt b/node_modules/browserify-zlib/test/fixtures/empty.txt
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/node_modules/browserify-zlib/test/fixtures/empty.txt
@@ -0,0 +1 @@
+
diff --git a/node_modules/browserify-zlib/test/fixtures/person.jpg b/node_modules/browserify-zlib/test/fixtures/person.jpg
new file mode 100644
index 0000000..4f71881
Binary files /dev/null and b/node_modules/browserify-zlib/test/fixtures/person.jpg differ
diff --git a/node_modules/browserify-zlib/test/ignored/test-zlib-dictionary-fail.js b/node_modules/browserify-zlib/test/ignored/test-zlib-dictionary-fail.js
new file mode 100755
index 0000000..fd35a01
--- /dev/null
+++ b/node_modules/browserify-zlib/test/ignored/test-zlib-dictionary-fail.js
@@ -0,0 +1,48 @@
+// 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.
+
+var common = require('../common.js');
+var assert = require('assert');
+var zlib = require('zlib');
+
+// Should raise an error, not trigger an assertion in src/node_zlib.cc
+(function() {
+ var stream = zlib.createInflate();
+
+ stream.on('error', common.mustCall(function(err) {
+ assert(/Missing dictionary/.test(err.message));
+ }));
+
+ // String "test" encoded with dictionary "dict".
+ stream.write(Buffer([0x78,0xBB,0x04,0x09,0x01,0xA5]));
+})();
+
+// Should raise an error, not trigger an assertion in src/node_zlib.cc
+(function() {
+ var stream = zlib.createInflate({ dictionary: Buffer('fail') });
+
+ stream.on('error', common.mustCall(function(err) {
+ assert(/Bad dictionary/.test(err.message));
+ }));
+
+ // String "test" encoded with dictionary "dict".
+ stream.write(Buffer([0x78,0xBB,0x04,0x09,0x01,0xA5]));
+})();
diff --git a/node_modules/browserify-zlib/test/ignored/test-zlib-dictionary.js b/node_modules/browserify-zlib/test/ignored/test-zlib-dictionary.js
new file mode 100755
index 0000000..58da810
--- /dev/null
+++ b/node_modules/browserify-zlib/test/ignored/test-zlib-dictionary.js
@@ -0,0 +1,95 @@
+// 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.
+
+// test compression/decompression with dictionary
+
+var common = require('../common.js');
+var assert = require('assert');
+var zlib = require('zlib');
+var path = require('path');
+
+var spdyDict = new Buffer([
+ 'optionsgetheadpostputdeletetraceacceptaccept-charsetaccept-encodingaccept-',
+ 'languageauthorizationexpectfromhostif-modified-sinceif-matchif-none-matchi',
+ 'f-rangeif-unmodifiedsincemax-forwardsproxy-authorizationrangerefererteuser',
+ '-agent10010120020120220320420520630030130230330430530630740040140240340440',
+ '5406407408409410411412413414415416417500501502503504505accept-rangesageeta',
+ 'glocationproxy-authenticatepublicretry-afterservervarywarningwww-authentic',
+ 'ateallowcontent-basecontent-encodingcache-controlconnectiondatetrailertran',
+ 'sfer-encodingupgradeviawarningcontent-languagecontent-lengthcontent-locati',
+ 'oncontent-md5content-rangecontent-typeetagexpireslast-modifiedset-cookieMo',
+ 'ndayTuesdayWednesdayThursdayFridaySaturdaySundayJanFebMarAprMayJunJulAugSe',
+ 'pOctNovDecchunkedtext/htmlimage/pngimage/jpgimage/gifapplication/xmlapplic',
+ 'ation/xhtmltext/plainpublicmax-agecharset=iso-8859-1utf-8gzipdeflateHTTP/1',
+ '.1statusversionurl\0'
+].join(''));
+
+var deflate = zlib.createDeflate({ dictionary: spdyDict });
+
+var input = [
+ 'HTTP/1.1 200 Ok',
+ 'Server: node.js',
+ 'Content-Length: 0',
+ ''
+].join('\r\n');
+
+var called = 0;
+
+//
+// We'll use clean-new inflate stream each time
+// and .reset() old dirty deflate one
+//
+function run(num) {
+ var inflate = zlib.createInflate({ dictionary: spdyDict });
+
+ if (num === 2) {
+ deflate.reset();
+ deflate.removeAllListeners('data');
+ }
+
+ // Put data into deflate stream
+ deflate.on('data', function(chunk) {
+ inflate.write(chunk);
+ });
+
+ // Get data from inflate stream
+ var output = [];
+ inflate.on('data', function(chunk) {
+ output.push(chunk);
+ });
+ inflate.on('end', function() {
+ called++;
+
+ assert.equal(output.join(''), input);
+
+ if (num < 2) run(num + 1);
+ });
+
+ deflate.write(input);
+ deflate.flush(function() {
+ inflate.end();
+ });
+}
+run(1);
+
+process.on('exit', function() {
+ assert.equal(called, 2);
+});
diff --git a/node_modules/browserify-zlib/test/ignored/test-zlib-params.js b/node_modules/browserify-zlib/test/ignored/test-zlib-params.js
new file mode 100755
index 0000000..006f1ea
--- /dev/null
+++ b/node_modules/browserify-zlib/test/ignored/test-zlib-params.js
@@ -0,0 +1,33 @@
+var common = require('../common.js');
+var assert = require('assert');
+var zlib = require('zlib');
+var path = require('path');
+var fs = require('fs');
+
+var file = fs.readFileSync(path.resolve(common.fixturesDir, 'person.jpg')),
+ chunkSize = 24 * 1024,
+ opts = { level: 9, strategy: zlib.Z_DEFAULT_STRATEGY },
+ deflater = zlib.createDeflate(opts);
+
+var chunk1 = file.slice(0, chunkSize),
+ chunk2 = file.slice(chunkSize),
+ blkhdr = new Buffer([0x00, 0x48, 0x82, 0xb7, 0x7d]),
+ expected = Buffer.concat([blkhdr, chunk2]),
+ actual;
+
+deflater.write(chunk1, function() {
+ deflater.params(0, zlib.Z_DEFAULT_STRATEGY, function() {
+ while (deflater.read());
+ deflater.end(chunk2, function() {
+ var bufs = [], buf;
+ while (buf = deflater.read())
+ bufs.push(buf);
+ actual = Buffer.concat(bufs);
+ });
+ });
+ while (deflater.read());
+});
+
+process.once('exit', function() {
+ assert.deepEqual(actual, expected);
+});
diff --git a/node_modules/browserify-zlib/test/package.json b/node_modules/browserify-zlib/test/package.json
new file mode 100644
index 0000000..189e120
--- /dev/null
+++ b/node_modules/browserify-zlib/test/package.json
@@ -0,0 +1,7 @@
+{
+ "browserify": {
+ "transform": [
+ "brfs"
+ ]
+ }
+}
\ No newline at end of file
diff --git a/node_modules/browserify-zlib/test/test-zlib-close-after-write.js b/node_modules/browserify-zlib/test/test-zlib-close-after-write.js
new file mode 100755
index 0000000..6d5a083
--- /dev/null
+++ b/node_modules/browserify-zlib/test/test-zlib-close-after-write.js
@@ -0,0 +1,35 @@
+// 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.
+
+var tape = require('tape');
+var zlib = require('../');
+
+tape(function(t) {
+ t.plan(1);
+
+ zlib.gzip('hello', function(err, out) {
+ var unzip = zlib.createGunzip();
+ unzip.write(out);
+ unzip.close(function() {
+ t.ok(true);
+ });
+ });
+});
diff --git a/node_modules/browserify-zlib/test/test-zlib-convenience-methods.js b/node_modules/browserify-zlib/test/test-zlib-convenience-methods.js
new file mode 100755
index 0000000..223160b
--- /dev/null
+++ b/node_modules/browserify-zlib/test/test-zlib-convenience-methods.js
@@ -0,0 +1,70 @@
+// 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.
+
+// test convenience methods with and without options supplied
+
+var tape = require('tape');
+var zlib = require('../');
+
+var expect = 'blahblahblahblahblahblah';
+var opts = {
+ level: 9,
+ chunkSize: 1024,
+};
+
+[
+ ['gzip', 'gunzip'],
+ ['gzip', 'unzip'],
+ ['deflate', 'inflate'],
+ ['deflateRaw', 'inflateRaw'],
+].forEach(function(method) {
+ tape(method.join(' '), function(t) {
+ t.plan(4);
+
+ zlib[method[0]](expect, opts, function(err, result) {
+ zlib[method[1]](result, opts, function(err, result) {
+ t.deepEqual(result, new Buffer(expect),
+ 'Should get original string after ' +
+ method[0] + '/' + method[1] + ' with options.');
+ });
+ });
+
+ zlib[method[0]](expect, function(err, result) {
+ zlib[method[1]](result, function(err, result) {
+ t.deepEqual(result, new Buffer(expect),
+ 'Should get original string after ' +
+ method[0] + '/' + method[1] + ' without options.');
+ });
+ });
+
+ var result = zlib[method[0] + 'Sync'](expect, opts);
+ result = zlib[method[1] + 'Sync'](result, opts);
+ t.deepEqual(result, new Buffer(expect),
+ 'Should get original string after ' +
+ method[0] + '/' + method[1] + ' with options.');
+
+ result = zlib[method[0] + 'Sync'](expect);
+ result = zlib[method[1] + 'Sync'](result);
+ t.deepEqual(result, new Buffer(expect),
+ 'Should get original string after ' +
+ method[0] + '/' + method[1] + ' without options.');
+ });
+});
diff --git a/node_modules/browserify-zlib/test/test-zlib-from-string.js b/node_modules/browserify-zlib/test/test-zlib-from-string.js
new file mode 100755
index 0000000..0376c55
--- /dev/null
+++ b/node_modules/browserify-zlib/test/test-zlib-from-string.js
@@ -0,0 +1,89 @@
+// 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.
+
+// test compressing and uncompressing a string with zlib
+
+var tape = require('tape');
+var zlib = require('../');
+
+var inputString = '\u03A9\u03A9Lorem ipsum dolor sit amet, consectetur adipiscing el' +
+ 'it. Morbi faucibus, purus at gravida dictum, libero arcu convallis la' +
+ 'cus, in commodo libero metus eu nisi. Nullam commodo, neque nec porta' +
+ ' placerat, nisi est fermentum augue, vitae gravida tellus sapien sit ' +
+ 'amet tellus. Aenean non diam orci. Proin quis elit turpis. Suspendiss' +
+ 'e non diam ipsum. Suspendisse nec ullamcorper odio. Vestibulum arcu m' +
+ 'i, sodales non suscipit id, ultrices ut massa. Sed ac sem sit amet ar' +
+ 'cu malesuada fermentum. Nunc sed. ';
+var expectedBase64Deflate = 'eJxdUUtOQzEMvMoc4OndgT0gJCT2buJWlpI4jePeqZfpm' +
+ 'XAKLRKbLOzx/HK73q6vOrhCunlF1qIDJhNUeW5I2ozT5OkDlKWLJWkncJG5403HQXAkT3' +
+ 'Jw29B9uIEmToMukglZ0vS6ociBh4JG8sV4oVLEUCitK2kxq1WzPnChHDzsaGKy491Lofo' +
+ 'AbWh8do43oeuYhB5EPCjcLjzYJo48KrfQBvnJecNFJvHT1+RSQsGoC7dn2t/xjhduTA1N' +
+ 'WyQIZR0pbHwMDatnD+crPqKSqGPHp1vnlsWM/07ubf7bheF7kqSj84Bm0R1fYTfaK8vqq' +
+ 'qfKBtNMhe3OZh6N95CTvMX5HJJi4xOVzCgUOIMSLH7wmeOHaFE4RdpnGavKtrB5xzfO/Ll9';
+var expectedBase64Gzip = 'H4sIAAAAAAAAA11RS05DMQy8yhzg6d2BPSAkJPZu4laWkjiN' +
+ '496pl+mZcAotEpss7PH8crverq86uEK6eUXWogMmE1R5bkjajNPk6QOUpYslaSdwkbnjT' +
+ 'cdBcCRPcnDb0H24gSZOgy6SCVnS9LqhyIGHgkbyxXihUsRQKK0raTGrVbM+cKEcPOxoYr' +
+ 'Lj3Uuh+gBtaHx2jjeh65iEHkQ8KNwuPNgmjjwqt9AG+cl5w0Um8dPX5FJCwagLt2fa3/G' +
+ 'OF25MDU1bJAhlHSlsfAwNq2cP5ys+opKoY8enW+eWxYz/Tu5t/tuF4XuSpKPzgGbRHV9h' +
+ 'N9ory+qqp8oG00yF7c5mHo33kJO8xfkckmLjE5XMKBQ4gxIsfvCZ44doUThF2mcZq8q2s' +
+ 'HnHNzRtagj5AQAA';
+
+tape('deflate', function(t) {
+ t.plan(1);
+ zlib.deflate(inputString, function(err, buffer) {
+ t.equal(buffer.toString('base64'), expectedBase64Deflate,
+ 'deflate encoded string should match');
+ });
+});
+
+tape('gzip', function(t) {
+ t.plan(1);
+ zlib.gzip(inputString, function(err, buffer) {
+ // Can't actually guarantee that we'll get exactly the same
+ // deflated bytes when we compress a string, since the header
+ // depends on stuff other than the input string itself.
+ // However, decrypting it should definitely yield the same
+ // result that we're expecting, and this should match what we get
+ // from inflating the known valid deflate data.
+ zlib.gunzip(buffer, function(err, gunzipped) {
+ t.equal(gunzipped.toString(), inputString,
+ 'Should get original string after gzip/gunzip');
+ });
+ });
+});
+
+tape('unzip deflate', function(t) {
+ t.plan(1);
+ var buffer = new Buffer(expectedBase64Deflate, 'base64');
+ zlib.unzip(buffer, function(err, buffer) {
+ t.equal(buffer.toString(), inputString,
+ 'decoded inflated string should match');
+ });
+});
+
+tape('unzip gzip', function(t) {
+ t.plan(1);
+ buffer = new Buffer(expectedBase64Gzip, 'base64');
+ zlib.unzip(buffer, function(err, buffer) {
+ t.equal(buffer.toString(), inputString,
+ 'decoded gunzipped string should match');
+ });
+});
diff --git a/node_modules/browserify-zlib/test/test-zlib-invalid-input.js b/node_modules/browserify-zlib/test/test-zlib-invalid-input.js
new file mode 100755
index 0000000..5ac08c3
--- /dev/null
+++ b/node_modules/browserify-zlib/test/test-zlib-invalid-input.js
@@ -0,0 +1,62 @@
+// 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.
+
+// test uncompressing invalid input
+
+var tape = require('tape'),
+ zlib = require('../');
+
+tape('non-strings', function(t) {
+ var nonStringInputs = [1, true, {a: 1}, ['a']];
+ t.plan(12);
+
+ nonStringInputs.forEach(function(input) {
+ // zlib.gunzip should not throw an error when called with bad input.
+ t.doesNotThrow(function() {
+ zlib.gunzip(input, function(err, buffer) {
+ // zlib.gunzip should pass the error to the callback.
+ t.ok(err);
+ });
+ });
+ });
+});
+
+tape('unzips', function(t) {
+ // zlib.Unzip classes need to get valid data, or else they'll throw.
+ var unzips = [ zlib.Unzip(),
+ zlib.Gunzip(),
+ zlib.Inflate(),
+ zlib.InflateRaw() ];
+
+ t.plan(4);
+ unzips.forEach(function (uz, i) {
+ uz.on('error', function(er) {
+ t.ok(er);
+ });
+
+ uz.on('end', function(er) {
+ throw new Error('end event should not be emitted '+uz.constructor.name);
+ });
+
+ // this will trigger error event
+ uz.write('this is not valid compressed data.');
+ });
+});
diff --git a/node_modules/browserify-zlib/test/test-zlib-random-byte-pipes.js b/node_modules/browserify-zlib/test/test-zlib-random-byte-pipes.js
new file mode 100755
index 0000000..6dba4c2
--- /dev/null
+++ b/node_modules/browserify-zlib/test/test-zlib-random-byte-pipes.js
@@ -0,0 +1,176 @@
+// 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.
+
+var crypto = require('crypto');
+var stream = require('stream');
+var Stream = stream.Stream;
+var util = require('util');
+var tape = require('tape');
+var zlib = require('../');
+
+
+
+// emit random bytes, and keep a shasum
+function RandomReadStream(opt) {
+ Stream.call(this);
+
+ this.readable = true;
+ this._paused = false;
+ this._processing = false;
+
+ this._hasher = crypto.createHash('sha1');
+ opt = opt || {};
+
+ // base block size.
+ opt.block = opt.block || 256 * 1024;
+
+ // total number of bytes to emit
+ opt.total = opt.total || 256 * 1024 * 1024;
+ this._remaining = opt.total;
+
+ // how variable to make the block sizes
+ opt.jitter = opt.jitter || 1024;
+
+ this._opt = opt;
+
+ this._process = this._process.bind(this);
+
+ process.nextTick(this._process);
+}
+
+util.inherits(RandomReadStream, Stream);
+
+RandomReadStream.prototype.pause = function() {
+ this._paused = true;
+ this.emit('pause');
+};
+
+RandomReadStream.prototype.resume = function() {
+ this._paused = false;
+ this.emit('resume');
+ this._process();
+};
+
+RandomReadStream.prototype._process = function() {
+ if (this._processing) return;
+ if (this._paused) return;
+
+ this._processing = true;
+
+ if (!this._remaining) {
+ this._hash = this._hasher.digest('hex').toLowerCase().trim();
+ this._processing = false;
+
+ this.emit('end');
+ return;
+ }
+
+ // figure out how many bytes to output
+ // if finished, then just emit end.
+ var block = this._opt.block;
+ var jitter = this._opt.jitter;
+ if (jitter) {
+ block += Math.ceil(Math.random() * jitter - (jitter / 2));
+ }
+ block = Math.min(block, this._remaining);
+ var buf = new Buffer(block);
+ for (var i = 0; i < block; i++) {
+ buf[i] = Math.random() * 256;
+ }
+
+ this._hasher.update(buf);
+
+ this._remaining -= block;
+
+ this._processing = false;
+
+ this.emit('data', buf);
+ process.nextTick(this._process);
+};
+
+
+// a filter that just verifies a shasum
+function HashStream() {
+ Stream.call(this);
+
+ this.readable = this.writable = true;
+ this._hasher = crypto.createHash('sha1');
+}
+
+util.inherits(HashStream, Stream);
+
+HashStream.prototype.write = function(c) {
+ // Simulate the way that an fs.ReadStream returns false
+ // on *every* write like a jerk, only to resume a
+ // moment later.
+ this._hasher.update(c);
+ process.nextTick(this.resume.bind(this));
+ return false;
+};
+
+HashStream.prototype.resume = function() {
+ this.emit('resume');
+ process.nextTick(this.emit.bind(this, 'drain'));
+};
+
+HashStream.prototype.end = function(c) {
+ if (c) {
+ this.write(c);
+ }
+ this._hash = this._hasher.digest('hex').toLowerCase().trim();
+ this.emit('data', this._hash);
+ this.emit('end');
+};
+
+tape('random byte pipes', function(t) {
+ var inp = new RandomReadStream({ total: 1024, block: 256, jitter: 16 });
+ var out = new HashStream();
+ var gzip = zlib.createGzip();
+ var gunz = zlib.createGunzip();
+
+ inp.pipe(gzip).pipe(gunz).pipe(out);
+
+ inp.on('data', function(c) {
+ t.ok(c.length);
+ });
+
+ gzip.on('data', function(c) {
+ t.ok(c.length);
+ });
+
+ gunz.on('data', function(c) {
+ t.ok(c.length);
+ });
+
+ out.on('data', function(c) {
+ t.ok(c.length);
+ });
+
+ out.on('data', function(c) {
+ t.ok(c.length);
+ t.equal(c, inp._hash, 'hashes should match');
+ });
+
+ out.on('end', function() {
+ t.end();
+ })
+});
+
diff --git a/node_modules/browserify-zlib/test/test-zlib-write-after-flush.js b/node_modules/browserify-zlib/test/test-zlib-write-after-flush.js
new file mode 100755
index 0000000..5841ef8
--- /dev/null
+++ b/node_modules/browserify-zlib/test/test-zlib-write-after-flush.js
@@ -0,0 +1,55 @@
+// 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.
+
+var tape = require('tape');
+var zlib = require('../');
+var fs = require('fs');
+
+tape('write after flush', function(t) {
+ t.plan(2);
+
+ var gzip = zlib.createGzip();
+ var gunz = zlib.createUnzip();
+
+ gzip.pipe(gunz);
+
+ var output = '';
+ var input = 'A line of data\n';
+ gunz.setEncoding('utf8');
+ gunz.on('data', function(c) {
+ output += c;
+ });
+
+ gunz.on('end', function() {
+ t.equal(output, input);
+
+ // Make sure that the flush flag was set back to normal
+ t.equal(gzip._flushFlag, zlib.Z_NO_FLUSH);
+ });
+
+ // make sure that flush/write doesn't trigger an assert failure
+ gzip.flush(); write();
+ function write() {
+ gzip.write(input);
+ gzip.end();
+ gunz.read(0);
+ }
+});
diff --git a/node_modules/browserify-zlib/test/test-zlib-zero-byte.js b/node_modules/browserify-zlib/test/test-zlib-zero-byte.js
new file mode 100755
index 0000000..88bdd8c
--- /dev/null
+++ b/node_modules/browserify-zlib/test/test-zlib-zero-byte.js
@@ -0,0 +1,41 @@
+// 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.
+
+var tape = require('tape');
+var zlib = require('../');
+
+tape('zero byte', function(t) {
+ t.plan(2);
+ var gz = zlib.Gzip()
+ var emptyBuffer = new Buffer(0);
+ var received = 0;
+ gz.on('data', function(c) {
+ received += c.length;
+ });
+ gz.on('end', function() {
+ t.equal(received, 20);
+ });
+ gz.on('finish', function() {
+ t.ok(true);
+ });
+ gz.write(emptyBuffer);
+ gz.end();
+});
diff --git a/node_modules/browserify-zlib/test/test-zlib.js b/node_modules/browserify-zlib/test/test-zlib.js
new file mode 100644
index 0000000..64c02c5
--- /dev/null
+++ b/node_modules/browserify-zlib/test/test-zlib.js
@@ -0,0 +1,206 @@
+// 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.
+
+var assert = require('assert');
+var zlib = require('../');
+var path = require('path');
+
+var zlibPairs =
+ [[zlib.Deflate, zlib.Inflate],
+ [zlib.Gzip, zlib.Gunzip],
+ [zlib.Deflate, zlib.Unzip],
+ [zlib.Gzip, zlib.Unzip],
+ [zlib.DeflateRaw, zlib.InflateRaw]];
+
+// how fast to trickle through the slowstream
+var trickle = [128, 1024, 1024 * 1024];
+
+// tunable options for zlib classes.
+
+// several different chunk sizes
+var chunkSize = [128, 1024, 1024 * 16, 1024 * 1024];
+
+// this is every possible value.
+var level = [-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
+var windowBits = [8, 9, 10, 11, 12, 13, 14, 15];
+var memLevel = [1, 2, 3, 4, 5, 6, 7, 8, 9];
+var strategy = [0, 1, 2, 3, 4];
+
+// it's nice in theory to test every combination, but it
+// takes WAY too long. Maybe a pummel test could do this?
+if (!process.env.PUMMEL) {
+ trickle = [1024];
+ chunkSize = [1024 * 16];
+ level = [6];
+ memLevel = [8];
+ windowBits = [15];
+ strategy = [0];
+}
+
+var fs = require('fs');
+
+if (process.env.FAST) {
+ zlibPairs = [[zlib.Gzip, zlib.Unzip]];
+}
+
+var tests = {
+ 'person.jpg': fs.readFileSync(__dirname + '/fixtures/person.jpg'),
+ 'elipses.txt': fs.readFileSync(__dirname + '/fixtures/elipses.txt'),
+ 'empty.txt': fs.readFileSync(__dirname + '/fixtures/empty.txt')
+};
+
+var util = require('util');
+var stream = require('stream');
+
+
+// stream that saves everything
+function BufferStream() {
+ this.chunks = [];
+ this.length = 0;
+ this.writable = true;
+ this.readable = true;
+}
+
+util.inherits(BufferStream, stream.Stream);
+
+BufferStream.prototype.write = function(c) {
+ this.chunks.push(c);
+ this.length += c.length;
+ return true;
+};
+
+BufferStream.prototype.end = function(c) {
+ if (c) this.write(c);
+ // flatten
+ var buf = new Buffer(this.length);
+ var i = 0;
+ this.chunks.forEach(function(c) {
+ c.copy(buf, i);
+ i += c.length;
+ });
+ this.emit('data', buf);
+ this.emit('end');
+ return true;
+};
+
+
+function SlowStream(trickle) {
+ this.trickle = trickle;
+ this.offset = 0;
+ this.readable = this.writable = true;
+}
+
+util.inherits(SlowStream, stream.Stream);
+
+SlowStream.prototype.write = function() {
+ throw new Error('not implemented, just call ss.end(chunk)');
+};
+
+SlowStream.prototype.pause = function() {
+ this.paused = true;
+ this.emit('pause');
+};
+
+SlowStream.prototype.resume = function() {
+ var self = this;
+ if (self.ended) return;
+ self.emit('resume');
+ if (!self.chunk) return;
+ self.paused = false;
+ emit();
+ function emit() {
+ if (self.paused) return;
+ if (self.offset >= self.length) {
+ self.ended = true;
+ return self.emit('end');
+ }
+ var end = Math.min(self.offset + self.trickle, self.length);
+ var c = self.chunk.slice(self.offset, end);
+ self.offset += c.length;
+ self.emit('data', c);
+ process.nextTick(emit);
+ }
+};
+
+SlowStream.prototype.end = function(chunk) {
+ // walk over the chunk in blocks.
+ var self = this;
+ self.chunk = chunk;
+ self.length = chunk.length;
+ self.resume();
+ return self.ended;
+};
+
+
+
+// for each of the files, make sure that compressing and
+// decompressing results in the same data, for every combination
+// of the options set above.
+var tape = require('tape');
+
+Object.keys(tests).forEach(function(file) {
+ var test = tests[file];
+ chunkSize.forEach(function(chunkSize) {
+ trickle.forEach(function(trickle) {
+ windowBits.forEach(function(windowBits) {
+ level.forEach(function(level) {
+ memLevel.forEach(function(memLevel) {
+ strategy.forEach(function(strategy) {
+ zlibPairs.forEach(function(pair) {
+ var Def = pair[0];
+ var Inf = pair[1];
+ var opts = {
+ level: level,
+ windowBits: windowBits,
+ memLevel: memLevel,
+ strategy: strategy
+ };
+
+ var msg = file + ' ' +
+ chunkSize + ' ' +
+ JSON.stringify(opts) + ' ' +
+ Def.name + ' -> ' + Inf.name;
+
+ tape('zlib ' + msg, function(t) {
+ t.plan(1);
+
+ var def = new Def(opts);
+ var inf = new Inf(opts);
+ var ss = new SlowStream(trickle);
+ var buf = new BufferStream();
+
+ // verify that the same exact buffer comes out the other end.
+ buf.on('data', function(c) {
+ t.deepEqual(c, test);
+ });
+
+ // the magic happens here.
+ ss.pipe(def).pipe(inf).pipe(buf);
+ ss.end(test);
+ });
+ });
+ });
+ });
+ });
+ });
+ });
+ });
+});
diff --git a/node_modules/buffer/.npmignore b/node_modules/buffer/.npmignore
new file mode 100644
index 0000000..4cea182
--- /dev/null
+++ b/node_modules/buffer/.npmignore
@@ -0,0 +1 @@
+perf/
diff --git a/node_modules/buffer/.travis.yml b/node_modules/buffer/.travis.yml
new file mode 100644
index 0000000..abf846f
--- /dev/null
+++ b/node_modules/buffer/.travis.yml
@@ -0,0 +1,8 @@
+language: node_js
+node_js:
+ - '4'
+sudo: false
+env:
+ global:
+ - secure: AUsK+8fYSpwIMHcVt8Mu9SpG9RPHp4XDAwCQfpU3d5U65q8OVVC6C+XjvnNmEd2PoEJRHem8ZXEyRVfGM1sttKZLZP70TEKZOpOiRQnZiTQCAJ92TfGsDj/F4LoWSjUZUpfeg9b3iSp8G5dVw3+q9QZPIu6eykASK6bfcg//Cyg=
+ - secure: eQBKJWu7XbhAN4ZvOOhMenC0IPpoYj+wZVVzzsLwUppfJqlrHV0CUW8rJdvZNiaGhYhoyHTnAcynpTE5kZfg3XjevOvF8PGY5wUYCki9BI+rp+pvVPZE/DNUAQpFR2gd2nxMJ4kYv7GVb6i/DfuqJa0h8IuY4zcMuKWwbQd3Az8=
diff --git a/node_modules/buffer/.zuul.yml b/node_modules/buffer/.zuul.yml
new file mode 100644
index 0000000..a0b4b39
--- /dev/null
+++ b/node_modules/buffer/.zuul.yml
@@ -0,0 +1,22 @@
+ui: tape
+scripts:
+ - "./test/_polyfill.js"
+browsers:
+ - name: chrome
+ version: -2..latest
+ - name: firefox
+ version: -2..latest
+ - name: safari
+ version: [6, 7, 8, 9..latest]
+ - name: ie
+ version: 8..latest
+ - name: microsoftedge
+ version: 20..latest
+ - name: opera
+ version: 11..latest
+ - name: iphone
+ version: [5.1, 6.1, 7.1, 8.4, 9.1..latest]
+ - name: ipad
+ version: [5.1, 6.1, 7.1, 8.4, 9.1..latest]
+ - name: android
+ version: 4.0..latest
diff --git a/node_modules/buffer/LICENSE b/node_modules/buffer/LICENSE
new file mode 100644
index 0000000..d6bf75d
--- /dev/null
+++ b/node_modules/buffer/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Feross Aboukhadijeh, and other 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.
diff --git a/node_modules/buffer/README.md b/node_modules/buffer/README.md
new file mode 100644
index 0000000..671607f
--- /dev/null
+++ b/node_modules/buffer/README.md
@@ -0,0 +1,364 @@
+# buffer [![travis][travis-image]][travis-url] [![npm][npm-image]][npm-url] [![downloads][downloads-image]][npm-url]
+
+#### The buffer module from [node.js](http://nodejs.org/), for the browser.
+
+[![saucelabs][saucelabs-image]][saucelabs-url]
+
+[travis-image]: https://img.shields.io/travis/feross/buffer.svg?style=flat
+[travis-url]: https://travis-ci.org/feross/buffer
+[npm-image]: https://img.shields.io/npm/v/buffer.svg?style=flat
+[npm-url]: https://npmjs.org/package/buffer
+[downloads-image]: https://img.shields.io/npm/dm/buffer.svg?style=flat
+[saucelabs-image]: https://saucelabs.com/browser-matrix/buffer.svg
+[saucelabs-url]: https://saucelabs.com/u/buffer
+
+With [browserify](http://browserify.org), simply `require('buffer')` or use the `Buffer` global and you will get this module.
+
+The goal is to provide an API that is 100% identical to
+[node's Buffer API](http://iojs.org/api/buffer.html). Read the
+[official docs](http://iojs.org/api/buffer.html) for the full list of properties,
+instance methods, and class methods that are supported.
+
+## features
+
+- Manipulate binary data like a boss, in all browsers -- even IE6!
+- Super fast. Backed by Typed Arrays (`Uint8Array`/`ArrayBuffer`, not `Object`)
+- Extremely small bundle size (**5.04KB minified + gzipped**, 35.5KB with comments)
+- Excellent browser support (IE 6+, Chrome 4+, Firefox 3+, Safari 5.1+, Opera 11+, iOS, etc.)
+- Preserves Node API exactly, with one important difference (see below)
+- `.slice()` returns instances of the same type (Buffer)
+- Square-bracket `buf[4]` notation works, even in old browsers like IE6!
+- Does not modify any browser prototypes or put anything on `window`
+- Comprehensive test suite (including all buffer tests from node.js core)
+
+
+## install
+
+To use this module directly (without browserify), install it:
+
+```bash
+npm install buffer
+```
+
+This module was previously called **native-buffer-browserify**, but please use **buffer**
+from now on.
+
+A standalone bundle is available [here](https://wzrd.in/standalone/buffer), for non-browserify users.
+
+
+## usage
+
+The module's API is identical to node's `Buffer` API. Read the
+[official docs](http://iojs.org/api/buffer.html) for the full list of properties,
+instance methods, and class methods that are supported.
+
+As mentioned above, `require('buffer')` or use the `Buffer` global with
+[browserify](http://browserify.org) and this module will automatically be included
+in your bundle. Almost any npm module will work in the browser, even if it assumes that
+the node `Buffer` API will be available.
+
+To depend on this module explicitly (without browserify), require it like this:
+
+```js
+var Buffer = require('buffer/').Buffer // note: the trailing slash is important!
+```
+
+To require this module explicitly, use `require('buffer/')` which tells the node.js module
+lookup algorithm (also used by browserify) to use the **npm module** named `buffer`
+instead of the **node.js core** module named `buffer`!
+
+
+## how does it work?
+
+`Buffer` is a subclass of `Uint8Array` augmented with all the `Buffer` API methods.
+The `Uint8Array` prototype is not modified.
+
+
+## one minor difference
+
+#### In old browsers, `buf.slice()` does not modify parent buffer's memory
+
+If you only support modern browsers (specifically, those with typed array support),
+then this issue does not affect you. If you support super old browsers, then read on.
+
+In node, the `slice()` method returns a new `Buffer` that shares underlying memory
+with the original Buffer. When you modify one buffer, you modify the other.
+[Read more.](http://iojs.org/api/buffer.html#buffer_buf_slice_start_end)
+
+In browsers with typed array support, this `Buffer` implementation supports this
+behavior. In browsers without typed arrays, an alternate buffer implementation is
+used that is based on `Object` which has no mechanism to point separate
+`Buffer`s to the same underlying slab of memory.
+
+You can see which browser versions lack typed array support
+[here](https://github.com/feross/buffer/blob/master/index.js#L20-L46).
+
+
+## tracking the latest node api
+
+This module tracks the Buffer API in the latest (unstable) version of node.js. The Buffer
+API is considered **stable** in the
+[node stability index](http://nodejs.org/docs/latest/api/documentation.html#documentation_stability_index),
+so it is unlikely that there will ever be breaking changes.
+Nonetheless, when/if the Buffer API changes in node, this module's API will change
+accordingly.
+
+## performance
+
+See perf tests in `/perf`.
+
+`BrowserBuffer` is the browser `buffer` module (this repo). `Uint8Array` is included as a
+sanity check (since `BrowserBuffer` uses `Uint8Array` under the hood, `Uint8Array` will
+always be at least a bit faster). Finally, `NodeBuffer` is the node.js buffer module,
+which is included to compare against.
+
+### Chrome 38
+
+| Method | Operations | Accuracy | Sampled | Fastest |
+|:-------|:-----------|:---------|:--------|:-------:|
+| BrowserBuffer#bracket-notation | 11,457,464 ops/sec | ±0.86% | 66 | ✓ |
+| Uint8Array#bracket-notation | 10,824,332 ops/sec | ±0.74% | 65 | |
+| | | | |
+| BrowserBuffer#concat | 450,532 ops/sec | ±0.76% | 68 | |
+| Uint8Array#concat | 1,368,911 ops/sec | ±1.50% | 62 | ✓ |
+| | | | |
+| BrowserBuffer#copy(16000) | 903,001 ops/sec | ±0.96% | 67 | |
+| Uint8Array#copy(16000) | 1,422,441 ops/sec | ±1.04% | 66 | ✓ |
+| | | | |
+| BrowserBuffer#copy(16) | 11,431,358 ops/sec | ±0.46% | 69 | |
+| Uint8Array#copy(16) | 13,944,163 ops/sec | ±1.12% | 68 | ✓ |
+| | | | |
+| BrowserBuffer#new(16000) | 106,329 ops/sec | ±6.70% | 44 | |
+| Uint8Array#new(16000) | 131,001 ops/sec | ±2.85% | 31 | ✓ |
+| | | | |
+| BrowserBuffer#new(16) | 1,554,491 ops/sec | ±1.60% | 65 | |
+| Uint8Array#new(16) | 6,623,930 ops/sec | ±1.66% | 65 | ✓ |
+| | | | |
+| BrowserBuffer#readDoubleBE | 112,830 ops/sec | ±0.51% | 69 | ✓ |
+| DataView#getFloat64 | 93,500 ops/sec | ±0.57% | 68 | |
+| | | | |
+| BrowserBuffer#readFloatBE | 146,678 ops/sec | ±0.95% | 68 | ✓ |
+| DataView#getFloat32 | 99,311 ops/sec | ±0.41% | 67 | |
+| | | | |
+| BrowserBuffer#readUInt32LE | 843,214 ops/sec | ±0.70% | 69 | ✓ |
+| DataView#getUint32 | 103,024 ops/sec | ±0.64% | 67 | |
+| | | | |
+| BrowserBuffer#slice | 1,013,941 ops/sec | ±0.75% | 67 | |
+| Uint8Array#subarray | 1,903,928 ops/sec | ±0.53% | 67 | ✓ |
+| | | | |
+| BrowserBuffer#writeFloatBE | 61,387 ops/sec | ±0.90% | 67 | |
+| DataView#setFloat32 | 141,249 ops/sec | ±0.40% | 66 | ✓ |
+
+
+### Firefox 33
+
+| Method | Operations | Accuracy | Sampled | Fastest |
+|:-------|:-----------|:---------|:--------|:-------:|
+| BrowserBuffer#bracket-notation | 20,800,421 ops/sec | ±1.84% | 60 | |
+| Uint8Array#bracket-notation | 20,826,235 ops/sec | ±2.02% | 61 | ✓ |
+| | | | |
+| BrowserBuffer#concat | 153,076 ops/sec | ±2.32% | 61 | |
+| Uint8Array#concat | 1,255,674 ops/sec | ±8.65% | 52 | ✓ |
+| | | | |
+| BrowserBuffer#copy(16000) | 1,105,312 ops/sec | ±1.16% | 63 | |
+| Uint8Array#copy(16000) | 1,615,911 ops/sec | ±0.55% | 66 | ✓ |
+| | | | |
+| BrowserBuffer#copy(16) | 16,357,599 ops/sec | ±0.73% | 68 | |
+| Uint8Array#copy(16) | 31,436,281 ops/sec | ±1.05% | 68 | ✓ |
+| | | | |
+| BrowserBuffer#new(16000) | 52,995 ops/sec | ±6.01% | 35 | |
+| Uint8Array#new(16000) | 87,686 ops/sec | ±5.68% | 45 | ✓ |
+| | | | |
+| BrowserBuffer#new(16) | 252,031 ops/sec | ±1.61% | 66 | |
+| Uint8Array#new(16) | 8,477,026 ops/sec | ±0.49% | 68 | ✓ |
+| | | | |
+| BrowserBuffer#readDoubleBE | 99,871 ops/sec | ±0.41% | 69 | |
+| DataView#getFloat64 | 285,663 ops/sec | ±0.70% | 68 | ✓ |
+| | | | |
+| BrowserBuffer#readFloatBE | 115,540 ops/sec | ±0.42% | 69 | |
+| DataView#getFloat32 | 288,722 ops/sec | ±0.82% | 68 | ✓ |
+| | | | |
+| BrowserBuffer#readUInt32LE | 633,926 ops/sec | ±1.08% | 67 | ✓ |
+| DataView#getUint32 | 294,808 ops/sec | ±0.79% | 64 | |
+| | | | |
+| BrowserBuffer#slice | 349,425 ops/sec | ±0.46% | 69 | |
+| Uint8Array#subarray | 5,965,819 ops/sec | ±0.60% | 65 | ✓ |
+| | | | |
+| BrowserBuffer#writeFloatBE | 59,980 ops/sec | ±0.41% | 67 | |
+| DataView#setFloat32 | 317,634 ops/sec | ±0.63% | 68 | ✓ |
+
+### Safari 8
+
+| Method | Operations | Accuracy | Sampled | Fastest |
+|:-------|:-----------|:---------|:--------|:-------:|
+| BrowserBuffer#bracket-notation | 10,279,729 ops/sec | ±2.25% | 56 | ✓ |
+| Uint8Array#bracket-notation | 10,030,767 ops/sec | ±2.23% | 59 | |
+| | | | |
+| BrowserBuffer#concat | 144,138 ops/sec | ±1.38% | 65 | |
+| Uint8Array#concat | 4,950,764 ops/sec | ±1.70% | 63 | ✓ |
+| | | | |
+| BrowserBuffer#copy(16000) | 1,058,548 ops/sec | ±1.51% | 64 | |
+| Uint8Array#copy(16000) | 1,409,666 ops/sec | ±1.17% | 65 | ✓ |
+| | | | |
+| BrowserBuffer#copy(16) | 6,282,529 ops/sec | ±1.88% | 58 | |
+| Uint8Array#copy(16) | 11,907,128 ops/sec | ±2.87% | 58 | ✓ |
+| | | | |
+| BrowserBuffer#new(16000) | 101,663 ops/sec | ±3.89% | 57 | |
+| Uint8Array#new(16000) | 22,050,818 ops/sec | ±6.51% | 46 | ✓ |
+| | | | |
+| BrowserBuffer#new(16) | 176,072 ops/sec | ±2.13% | 64 | |
+| Uint8Array#new(16) | 24,385,731 ops/sec | ±5.01% | 51 | ✓ |
+| | | | |
+| BrowserBuffer#readDoubleBE | 41,341 ops/sec | ±1.06% | 67 | |
+| DataView#getFloat64 | 322,280 ops/sec | ±0.84% | 68 | ✓ |
+| | | | |
+| BrowserBuffer#readFloatBE | 46,141 ops/sec | ±1.06% | 65 | |
+| DataView#getFloat32 | 337,025 ops/sec | ±0.43% | 69 | ✓ |
+| | | | |
+| BrowserBuffer#readUInt32LE | 151,551 ops/sec | ±1.02% | 66 | |
+| DataView#getUint32 | 308,278 ops/sec | ±0.94% | 67 | ✓ |
+| | | | |
+| BrowserBuffer#slice | 197,365 ops/sec | ±0.95% | 66 | |
+| Uint8Array#subarray | 9,558,024 ops/sec | ±3.08% | 58 | ✓ |
+| | | | |
+| BrowserBuffer#writeFloatBE | 17,518 ops/sec | ±1.03% | 63 | |
+| DataView#setFloat32 | 319,751 ops/sec | ±0.48% | 68 | ✓ |
+
+
+### Node 0.11.14
+
+| Method | Operations | Accuracy | Sampled | Fastest |
+|:-------|:-----------|:---------|:--------|:-------:|
+| BrowserBuffer#bracket-notation | 10,489,828 ops/sec | ±3.25% | 90 | |
+| Uint8Array#bracket-notation | 10,534,884 ops/sec | ±0.81% | 92 | ✓ |
+| NodeBuffer#bracket-notation | 10,389,910 ops/sec | ±0.97% | 87 | |
+| | | | |
+| BrowserBuffer#concat | 487,830 ops/sec | ±2.58% | 88 | |
+| Uint8Array#concat | 1,814,327 ops/sec | ±1.28% | 88 | ✓ |
+| NodeBuffer#concat | 1,636,523 ops/sec | ±1.88% | 73 | |
+| | | | |
+| BrowserBuffer#copy(16000) | 1,073,665 ops/sec | ±0.77% | 90 | |
+| Uint8Array#copy(16000) | 1,348,517 ops/sec | ±0.84% | 89 | ✓ |
+| NodeBuffer#copy(16000) | 1,289,533 ops/sec | ±0.82% | 93 | |
+| | | | |
+| BrowserBuffer#copy(16) | 12,782,706 ops/sec | ±0.74% | 85 | |
+| Uint8Array#copy(16) | 14,180,427 ops/sec | ±0.93% | 92 | ✓ |
+| NodeBuffer#copy(16) | 11,083,134 ops/sec | ±1.06% | 89 | |
+| | | | |
+| BrowserBuffer#new(16000) | 141,678 ops/sec | ±3.30% | 67 | |
+| Uint8Array#new(16000) | 161,491 ops/sec | ±2.96% | 60 | |
+| NodeBuffer#new(16000) | 292,699 ops/sec | ±3.20% | 55 | ✓ |
+| | | | |
+| BrowserBuffer#new(16) | 1,655,466 ops/sec | ±2.41% | 82 | |
+| Uint8Array#new(16) | 14,399,926 ops/sec | ±0.91% | 94 | ✓ |
+| NodeBuffer#new(16) | 3,894,696 ops/sec | ±0.88% | 92 | |
+| | | | |
+| BrowserBuffer#readDoubleBE | 109,582 ops/sec | ±0.75% | 93 | ✓ |
+| DataView#getFloat64 | 91,235 ops/sec | ±0.81% | 90 | |
+| NodeBuffer#readDoubleBE | 88,593 ops/sec | ±0.96% | 81 | |
+| | | | |
+| BrowserBuffer#readFloatBE | 139,854 ops/sec | ±1.03% | 85 | ✓ |
+| DataView#getFloat32 | 98,744 ops/sec | ±0.80% | 89 | |
+| NodeBuffer#readFloatBE | 92,769 ops/sec | ±0.94% | 93 | |
+| | | | |
+| BrowserBuffer#readUInt32LE | 710,861 ops/sec | ±0.82% | 92 | |
+| DataView#getUint32 | 117,893 ops/sec | ±0.84% | 91 | |
+| NodeBuffer#readUInt32LE | 851,412 ops/sec | ±0.72% | 93 | ✓ |
+| | | | |
+| BrowserBuffer#slice | 1,673,877 ops/sec | ±0.73% | 94 | |
+| Uint8Array#subarray | 6,919,243 ops/sec | ±0.67% | 90 | ✓ |
+| NodeBuffer#slice | 4,617,604 ops/sec | ±0.79% | 93 | |
+| | | | |
+| BrowserBuffer#writeFloatBE | 66,011 ops/sec | ±0.75% | 93 | |
+| DataView#setFloat32 | 127,760 ops/sec | ±0.72% | 93 | ✓ |
+| NodeBuffer#writeFloatBE | 103,352 ops/sec | ±0.83% | 93 | |
+
+### iojs 1.8.1
+
+| Method | Operations | Accuracy | Sampled | Fastest |
+|:-------|:-----------|:---------|:--------|:-------:|
+| BrowserBuffer#bracket-notation | 10,990,488 ops/sec | ±1.11% | 91 | |
+| Uint8Array#bracket-notation | 11,268,757 ops/sec | ±0.65% | 97 | |
+| NodeBuffer#bracket-notation | 11,353,260 ops/sec | ±0.83% | 94 | ✓ |
+| | | | |
+| BrowserBuffer#concat | 378,954 ops/sec | ±0.74% | 94 | |
+| Uint8Array#concat | 1,358,288 ops/sec | ±0.97% | 87 | |
+| NodeBuffer#concat | 1,934,050 ops/sec | ±1.11% | 78 | ✓ |
+| | | | |
+| BrowserBuffer#copy(16000) | 894,538 ops/sec | ±0.56% | 84 | |
+| Uint8Array#copy(16000) | 1,442,656 ops/sec | ±0.71% | 96 | |
+| NodeBuffer#copy(16000) | 1,457,898 ops/sec | ±0.53% | 92 | ✓ |
+| | | | |
+| BrowserBuffer#copy(16) | 12,870,457 ops/sec | ±0.67% | 95 | |
+| Uint8Array#copy(16) | 16,643,989 ops/sec | ±0.61% | 93 | ✓ |
+| NodeBuffer#copy(16) | 14,885,848 ops/sec | ±0.74% | 94 | |
+| | | | |
+| BrowserBuffer#new(16000) | 109,264 ops/sec | ±4.21% | 63 | |
+| Uint8Array#new(16000) | 138,916 ops/sec | ±1.87% | 61 | |
+| NodeBuffer#new(16000) | 281,449 ops/sec | ±3.58% | 51 | ✓ |
+| | | | |
+| BrowserBuffer#new(16) | 1,362,935 ops/sec | ±0.56% | 99 | |
+| Uint8Array#new(16) | 6,193,090 ops/sec | ±0.64% | 95 | ✓ |
+| NodeBuffer#new(16) | 4,745,425 ops/sec | ±1.56% | 90 | |
+| | | | |
+| BrowserBuffer#readDoubleBE | 118,127 ops/sec | ±0.59% | 93 | ✓ |
+| DataView#getFloat64 | 107,332 ops/sec | ±0.65% | 91 | |
+| NodeBuffer#readDoubleBE | 116,274 ops/sec | ±0.94% | 95 | |
+| | | | |
+| BrowserBuffer#readFloatBE | 150,326 ops/sec | ±0.58% | 95 | ✓ |
+| DataView#getFloat32 | 110,541 ops/sec | ±0.57% | 98 | |
+| NodeBuffer#readFloatBE | 121,599 ops/sec | ±0.60% | 87 | |
+| | | | |
+| BrowserBuffer#readUInt32LE | 814,147 ops/sec | ±0.62% | 93 | |
+| DataView#getUint32 | 137,592 ops/sec | ±0.64% | 90 | |
+| NodeBuffer#readUInt32LE | 931,650 ops/sec | ±0.71% | 96 | ✓ |
+| | | | |
+| BrowserBuffer#slice | 878,590 ops/sec | ±0.68% | 93 | |
+| Uint8Array#subarray | 2,843,308 ops/sec | ±1.02% | 90 | |
+| NodeBuffer#slice | 4,998,316 ops/sec | ±0.68% | 90 | ✓ |
+| | | | |
+| BrowserBuffer#writeFloatBE | 65,927 ops/sec | ±0.74% | 93 | |
+| DataView#setFloat32 | 139,823 ops/sec | ±0.97% | 89 | ✓ |
+| NodeBuffer#writeFloatBE | 135,763 ops/sec | ±0.65% | 96 | |
+| | | | |
+
+## Testing the project
+
+First, install the project:
+
+ npm install
+
+Then, to run tests in Node.js, run:
+
+ npm run test-node
+
+To test locally in a browser, you can run:
+
+ npm run test-browser-local
+
+This will print out a URL that you can then open in a browser to run the tests, using [Zuul](https://github.com/defunctzombie/zuul).
+
+To run automated browser tests using Saucelabs, ensure that your `SAUCE_USERNAME` and `SAUCE_ACCESS_KEY` environment variables are set, then run:
+
+ npm test
+
+This is what's run in Travis, to check against various browsers. The list of browsers is kept in the `.zuul.yml` file.
+
+## JavaScript Standard Style
+
+This module uses [JavaScript Standard Style](https://github.com/feross/standard).
+
+[](https://github.com/feross/standard)
+
+To test that the code conforms to the style, `npm install` and run:
+
+ ./node_modules/.bin/standard
+
+## credit
+
+This was originally forked from [buffer-browserify](https://github.com/toots/buffer-browserify).
+
+
+## license
+
+MIT. Copyright (C) [Feross Aboukhadijeh](http://feross.org), and other contributors. Originally forked from an MIT-licensed module by Romain Beauxis.
diff --git a/node_modules/buffer/bin/download-node-tests.js b/node_modules/buffer/bin/download-node-tests.js
new file mode 100755
index 0000000..c1a8846
--- /dev/null
+++ b/node_modules/buffer/bin/download-node-tests.js
@@ -0,0 +1,126 @@
+#!/usr/bin/env node
+
+var concat = require('concat-stream')
+var fs = require('fs')
+var hyperquest = require('hyperquest')
+var cp = require('child_process')
+var split = require('split')
+var through = require('through2')
+
+var url = 'https://api.github.com/repos/nodejs/io.js/contents'
+var dirs = [
+ '/test/parallel',
+ '/test/pummel'
+]
+
+cp.execSync('rm -rf node/*.js', { cwd: __dirname + '/../test' })
+cp.execSync('rm -rf node-es6/*.js', { cwd: __dirname + '/../test' })
+
+var httpOpts = {
+ headers: {
+ 'User-Agent': null
+ // auth if github rate-limits you...
+ // 'Authorization': 'Basic ' + Buffer('username:password').toString('base64'),
+ }
+}
+
+dirs.forEach(function (dir) {
+ var req = hyperquest(url + dir, httpOpts)
+ req.pipe(concat(function (data) {
+ if (req.response.statusCode !== 200) {
+ throw new Error(url + dir + ': ' + data.toString())
+ }
+ downloadBufferTests(dir, JSON.parse(data))
+ }))
+})
+
+function downloadBufferTests (dir, files) {
+ files.forEach(function (file) {
+ if (!/test-buffer.*/.test(file.name)) return
+
+ var path
+ if (file.name === 'test-buffer-iterator.js' ||
+ file.name === 'test-buffer-arraybuffer.js') {
+ path = __dirname + '/../test/node-es6/' + file.name
+ } else if (file.name === 'test-buffer-fakes.js') {
+ // These teses only apply to node, where they're calling into C++ and need to
+ // ensure the prototype can't be faked, or else there will be a segfault.
+ return
+ } else {
+ path = __dirname + '/../test/node/' + file.name
+ }
+
+ console.log(file.download_url)
+ hyperquest(file.download_url, httpOpts)
+ .pipe(split())
+ .pipe(testfixer(file.name))
+ .pipe(fs.createWriteStream(path))
+ .on('finish', function () {
+ console.log('wrote ' + file.name)
+ })
+ })
+}
+
+function testfixer (filename) {
+ var firstline = true
+
+ return through(function (line, enc, cb) {
+ line = line.toString()
+
+ if (firstline) {
+ // require buffer explicitly
+ var preamble = 'if (process.env.OBJECT_IMPL) global.TYPED_ARRAY_SUPPORT = false;\n' +
+ 'var Buffer = require(\'../../\').Buffer;'
+ if (/use strict/.test(line)) line += '\n' + preamble
+ else line + preamble + '\n' + line
+ firstline = false
+ }
+
+ // use `var` instead of `const`/`let`
+ line = line.replace(/(const|let) /g, 'var ')
+
+ // make `require('common')` work
+ line = line.replace(/(var common = require.*)/g, 'var common = {};')
+
+ // use `Buffer.isBuffer` instead of `instanceof Buffer`
+ line = line.replace(/buf instanceof Buffer/g, 'Buffer.isBuffer(buf)')
+
+ // require browser buffer
+ line = line.replace(/(.*)require\('buffer'\)(.*)/g, '$1require(\'../../\')$2')
+
+ // smalloc is only used for kMaxLength
+ line = line.replace(
+ /require\('smalloc'\)/g,
+ '{ kMaxLength: process.env.OBJECT_IMPL ? 0x3fffffff : 0x7fffffff }'
+ )
+
+ // comment out console logs
+ line = line.replace(/(.*console\..*)/g, '// $1')
+
+ // we can't reliably test typed array max-sizes in the browser
+ if (filename === 'test-buffer-big.js') {
+ line = line.replace(/(.*new Int8Array.*RangeError.*)/, '// $1')
+ line = line.replace(/(.*new ArrayBuffer.*RangeError.*)/, '// $1')
+ line = line.replace(/(.*new Float64Array.*RangeError.*)/, '// $1')
+ }
+
+ // https://github.com/iojs/io.js/blob/v0.12/test/parallel/test-buffer.js#L38
+ // we can't run this because we need to support
+ // browsers that don't have typed arrays
+ if (filename === 'test-buffer.js') {
+ line = line.replace(/b\[0\] = -1;/, 'b[0] = 255;')
+ }
+
+ // https://github.com/iojs/io.js/blob/v0.12/test/parallel/test-buffer.js#L1138
+ // unfortunately we can't run this as it touches
+ // node streams which do an instanceof check
+ // and crypto-browserify doesn't work in old
+ // versions of ie
+ if (filename === 'test-buffer.js') {
+ line = line.replace(/^(\s*)(var crypto = require.*)/, '$1// $2')
+ line = line.replace(/(crypto.createHash.*\))/, '1 /*$1*/')
+ }
+
+ cb(null, line + '\n')
+ })
+}
diff --git a/node_modules/buffer/bin/test.js b/node_modules/buffer/bin/test.js
new file mode 100644
index 0000000..2fc368b
--- /dev/null
+++ b/node_modules/buffer/bin/test.js
@@ -0,0 +1,18 @@
+#!/usr/bin/env node
+
+var cp = require('child_process')
+
+var runBrowserTests = !process.env.TRAVIS_PULL_REQUEST ||
+ process.env.TRAVIS_PULL_REQUEST === 'false'
+
+var node = cp.spawn('npm', ['run', 'test-node'], { stdio: 'inherit' })
+node.on('close', function (code) {
+ if (code === 0 && runBrowserTests) {
+ var browser = cp.spawn('npm', ['run', 'test-browser'], { stdio: 'inherit' })
+ browser.on('close', function (code) {
+ process.exit(code)
+ })
+ } else {
+ process.exit(code)
+ }
+})
diff --git a/node_modules/buffer/index.js b/node_modules/buffer/index.js
new file mode 100644
index 0000000..0dc9007
--- /dev/null
+++ b/node_modules/buffer/index.js
@@ -0,0 +1,1548 @@
+/*!
+ * The buffer module from node.js, for the browser.
+ *
+ * @author Feross Aboukhadijeh
+ * @license MIT
+ */
+/* eslint-disable no-proto */
+
+'use strict'
+
+var base64 = require('base64-js')
+var ieee754 = require('ieee754')
+var isArray = require('isarray')
+
+exports.Buffer = Buffer
+exports.SlowBuffer = SlowBuffer
+exports.INSPECT_MAX_BYTES = 50
+Buffer.poolSize = 8192 // not used by this implementation
+
+var rootParent = {}
+
+/**
+ * If `Buffer.TYPED_ARRAY_SUPPORT`:
+ * === true Use Uint8Array implementation (fastest)
+ * === false Use Object implementation (most compatible, even IE6)
+ *
+ * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
+ * Opera 11.6+, iOS 4.2+.
+ *
+ * Due to various browser bugs, sometimes the Object implementation will be used even
+ * when the browser supports typed arrays.
+ *
+ * Note:
+ *
+ * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,
+ * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.
+ *
+ * - Safari 5-7 lacks support for changing the `Object.prototype.constructor` property
+ * on objects.
+ *
+ * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.
+ *
+ * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of
+ * incorrect length in some situations.
+
+ * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they
+ * get the Object implementation, which is slower but behaves correctly.
+ */
+Buffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined
+ ? global.TYPED_ARRAY_SUPPORT
+ : typedArraySupport()
+
+function typedArraySupport () {
+ function Bar () {}
+ try {
+ var arr = new Uint8Array(1)
+ arr.foo = function () { return 42 }
+ arr.constructor = Bar
+ return arr.foo() === 42 && // typed array instances can be augmented
+ arr.constructor === Bar && // constructor can be set
+ typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray`
+ arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray`
+ } catch (e) {
+ return false
+ }
+}
+
+function kMaxLength () {
+ return Buffer.TYPED_ARRAY_SUPPORT
+ ? 0x7fffffff
+ : 0x3fffffff
+}
+
+/**
+ * Class: Buffer
+ * =============
+ *
+ * The Buffer constructor returns instances of `Uint8Array` that are augmented
+ * with function properties for all the node `Buffer` API functions. We use
+ * `Uint8Array` so that square bracket notation works as expected -- it returns
+ * a single octet.
+ *
+ * By augmenting the instances, we can avoid modifying the `Uint8Array`
+ * prototype.
+ */
+function Buffer (arg) {
+ if (!(this instanceof Buffer)) {
+ // Avoid going through an ArgumentsAdaptorTrampoline in the common case.
+ if (arguments.length > 1) return new Buffer(arg, arguments[1])
+ return new Buffer(arg)
+ }
+
+ if (!Buffer.TYPED_ARRAY_SUPPORT) {
+ this.length = 0
+ this.parent = undefined
+ }
+
+ // Common case.
+ if (typeof arg === 'number') {
+ return fromNumber(this, arg)
+ }
+
+ // Slightly less common case.
+ if (typeof arg === 'string') {
+ return fromString(this, arg, arguments.length > 1 ? arguments[1] : 'utf8')
+ }
+
+ // Unusual.
+ return fromObject(this, arg)
+}
+
+function fromNumber (that, length) {
+ that = allocate(that, length < 0 ? 0 : checked(length) | 0)
+ if (!Buffer.TYPED_ARRAY_SUPPORT) {
+ for (var i = 0; i < length; i++) {
+ that[i] = 0
+ }
+ }
+ return that
+}
+
+function fromString (that, string, encoding) {
+ if (typeof encoding !== 'string' || encoding === '') encoding = 'utf8'
+
+ // Assumption: byteLength() return value is always < kMaxLength.
+ var length = byteLength(string, encoding) | 0
+ that = allocate(that, length)
+
+ that.write(string, encoding)
+ return that
+}
+
+function fromObject (that, object) {
+ if (Buffer.isBuffer(object)) return fromBuffer(that, object)
+
+ if (isArray(object)) return fromArray(that, object)
+
+ if (object == null) {
+ throw new TypeError('must start with number, buffer, array or string')
+ }
+
+ if (typeof ArrayBuffer !== 'undefined') {
+ if (object.buffer instanceof ArrayBuffer) {
+ return fromTypedArray(that, object)
+ }
+ if (object instanceof ArrayBuffer) {
+ return fromArrayBuffer(that, object)
+ }
+ }
+
+ if (object.length) return fromArrayLike(that, object)
+
+ return fromJsonObject(that, object)
+}
+
+function fromBuffer (that, buffer) {
+ var length = checked(buffer.length) | 0
+ that = allocate(that, length)
+ buffer.copy(that, 0, 0, length)
+ return that
+}
+
+function fromArray (that, array) {
+ var length = checked(array.length) | 0
+ that = allocate(that, length)
+ for (var i = 0; i < length; i += 1) {
+ that[i] = array[i] & 255
+ }
+ return that
+}
+
+// Duplicate of fromArray() to keep fromArray() monomorphic.
+function fromTypedArray (that, array) {
+ var length = checked(array.length) | 0
+ that = allocate(that, length)
+ // Truncating the elements is probably not what people expect from typed
+ // arrays with BYTES_PER_ELEMENT > 1 but it's compatible with the behavior
+ // of the old Buffer constructor.
+ for (var i = 0; i < length; i += 1) {
+ that[i] = array[i] & 255
+ }
+ return that
+}
+
+function fromArrayBuffer (that, array) {
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
+ // Return an augmented `Uint8Array` instance, for best performance
+ array.byteLength
+ that = Buffer._augment(new Uint8Array(array))
+ } else {
+ // Fallback: Return an object instance of the Buffer class
+ that = fromTypedArray(that, new Uint8Array(array))
+ }
+ return that
+}
+
+function fromArrayLike (that, array) {
+ var length = checked(array.length) | 0
+ that = allocate(that, length)
+ for (var i = 0; i < length; i += 1) {
+ that[i] = array[i] & 255
+ }
+ return that
+}
+
+// Deserialize { type: 'Buffer', data: [1,2,3,...] } into a Buffer object.
+// Returns a zero-length buffer for inputs that don't conform to the spec.
+function fromJsonObject (that, object) {
+ var array
+ var length = 0
+
+ if (object.type === 'Buffer' && isArray(object.data)) {
+ array = object.data
+ length = checked(array.length) | 0
+ }
+ that = allocate(that, length)
+
+ for (var i = 0; i < length; i += 1) {
+ that[i] = array[i] & 255
+ }
+ return that
+}
+
+if (Buffer.TYPED_ARRAY_SUPPORT) {
+ Buffer.prototype.__proto__ = Uint8Array.prototype
+ Buffer.__proto__ = Uint8Array
+} else {
+ // pre-set for values that may exist in the future
+ Buffer.prototype.length = undefined
+ Buffer.prototype.parent = undefined
+}
+
+function allocate (that, length) {
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
+ // Return an augmented `Uint8Array` instance, for best performance
+ that = Buffer._augment(new Uint8Array(length))
+ that.__proto__ = Buffer.prototype
+ } else {
+ // Fallback: Return an object instance of the Buffer class
+ that.length = length
+ that._isBuffer = true
+ }
+
+ var fromPool = length !== 0 && length <= Buffer.poolSize >>> 1
+ if (fromPool) that.parent = rootParent
+
+ return that
+}
+
+function checked (length) {
+ // Note: cannot use `length < kMaxLength` here because that fails when
+ // length is NaN (which is otherwise coerced to zero.)
+ if (length >= kMaxLength()) {
+ throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
+ 'size: 0x' + kMaxLength().toString(16) + ' bytes')
+ }
+ return length | 0
+}
+
+function SlowBuffer (subject, encoding) {
+ if (!(this instanceof SlowBuffer)) return new SlowBuffer(subject, encoding)
+
+ var buf = new Buffer(subject, encoding)
+ delete buf.parent
+ return buf
+}
+
+Buffer.isBuffer = function isBuffer (b) {
+ return !!(b != null && b._isBuffer)
+}
+
+Buffer.compare = function compare (a, b) {
+ if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
+ throw new TypeError('Arguments must be Buffers')
+ }
+
+ if (a === b) return 0
+
+ var x = a.length
+ var y = b.length
+
+ var i = 0
+ var len = Math.min(x, y)
+ while (i < len) {
+ if (a[i] !== b[i]) break
+
+ ++i
+ }
+
+ if (i !== len) {
+ x = a[i]
+ y = b[i]
+ }
+
+ if (x < y) return -1
+ if (y < x) return 1
+ return 0
+}
+
+Buffer.isEncoding = function isEncoding (encoding) {
+ switch (String(encoding).toLowerCase()) {
+ case 'hex':
+ case 'utf8':
+ case 'utf-8':
+ case 'ascii':
+ case 'binary':
+ case 'base64':
+ case 'raw':
+ case 'ucs2':
+ case 'ucs-2':
+ case 'utf16le':
+ case 'utf-16le':
+ return true
+ default:
+ return false
+ }
+}
+
+Buffer.concat = function concat (list, length) {
+ if (!isArray(list)) throw new TypeError('list argument must be an Array of Buffers.')
+
+ if (list.length === 0) {
+ return new Buffer(0)
+ }
+
+ var i
+ if (length === undefined) {
+ length = 0
+ for (i = 0; i < list.length; i++) {
+ length += list[i].length
+ }
+ }
+
+ var buf = new Buffer(length)
+ var pos = 0
+ for (i = 0; i < list.length; i++) {
+ var item = list[i]
+ item.copy(buf, pos)
+ pos += item.length
+ }
+ return buf
+}
+
+function byteLength (string, encoding) {
+ if (typeof string !== 'string') string = '' + string
+
+ var len = string.length
+ if (len === 0) return 0
+
+ // Use a for loop to avoid recursion
+ var loweredCase = false
+ for (;;) {
+ switch (encoding) {
+ case 'ascii':
+ case 'binary':
+ // Deprecated
+ case 'raw':
+ case 'raws':
+ return len
+ case 'utf8':
+ case 'utf-8':
+ return utf8ToBytes(string).length
+ case 'ucs2':
+ case 'ucs-2':
+ case 'utf16le':
+ case 'utf-16le':
+ return len * 2
+ case 'hex':
+ return len >>> 1
+ case 'base64':
+ return base64ToBytes(string).length
+ default:
+ if (loweredCase) return utf8ToBytes(string).length // assume utf8
+ encoding = ('' + encoding).toLowerCase()
+ loweredCase = true
+ }
+ }
+}
+Buffer.byteLength = byteLength
+
+function slowToString (encoding, start, end) {
+ var loweredCase = false
+
+ start = start | 0
+ end = end === undefined || end === Infinity ? this.length : end | 0
+
+ if (!encoding) encoding = 'utf8'
+ if (start < 0) start = 0
+ if (end > this.length) end = this.length
+ if (end <= start) return ''
+
+ while (true) {
+ switch (encoding) {
+ case 'hex':
+ return hexSlice(this, start, end)
+
+ case 'utf8':
+ case 'utf-8':
+ return utf8Slice(this, start, end)
+
+ case 'ascii':
+ return asciiSlice(this, start, end)
+
+ case 'binary':
+ return binarySlice(this, start, end)
+
+ case 'base64':
+ return base64Slice(this, start, end)
+
+ case 'ucs2':
+ case 'ucs-2':
+ case 'utf16le':
+ case 'utf-16le':
+ return utf16leSlice(this, start, end)
+
+ default:
+ if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
+ encoding = (encoding + '').toLowerCase()
+ loweredCase = true
+ }
+ }
+}
+
+Buffer.prototype.toString = function toString () {
+ var length = this.length | 0
+ if (length === 0) return ''
+ if (arguments.length === 0) return utf8Slice(this, 0, length)
+ return slowToString.apply(this, arguments)
+}
+
+Buffer.prototype.equals = function equals (b) {
+ if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
+ if (this === b) return true
+ return Buffer.compare(this, b) === 0
+}
+
+Buffer.prototype.inspect = function inspect () {
+ var str = ''
+ var max = exports.INSPECT_MAX_BYTES
+ if (this.length > 0) {
+ str = this.toString('hex', 0, max).match(/.{2}/g).join(' ')
+ if (this.length > max) str += ' ... '
+ }
+ return ''
+}
+
+Buffer.prototype.compare = function compare (b) {
+ if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')
+ if (this === b) return 0
+ return Buffer.compare(this, b)
+}
+
+Buffer.prototype.indexOf = function indexOf (val, byteOffset) {
+ if (byteOffset > 0x7fffffff) byteOffset = 0x7fffffff
+ else if (byteOffset < -0x80000000) byteOffset = -0x80000000
+ byteOffset >>= 0
+
+ if (this.length === 0) return -1
+ if (byteOffset >= this.length) return -1
+
+ // Negative offsets start from the end of the buffer
+ if (byteOffset < 0) byteOffset = Math.max(this.length + byteOffset, 0)
+
+ if (typeof val === 'string') {
+ if (val.length === 0) return -1 // special case: looking for empty string always fails
+ return String.prototype.indexOf.call(this, val, byteOffset)
+ }
+ if (Buffer.isBuffer(val)) {
+ return arrayIndexOf(this, val, byteOffset)
+ }
+ if (typeof val === 'number') {
+ if (Buffer.TYPED_ARRAY_SUPPORT && Uint8Array.prototype.indexOf === 'function') {
+ return Uint8Array.prototype.indexOf.call(this, val, byteOffset)
+ }
+ return arrayIndexOf(this, [ val ], byteOffset)
+ }
+
+ function arrayIndexOf (arr, val, byteOffset) {
+ var foundIndex = -1
+ for (var i = 0; byteOffset + i < arr.length; i++) {
+ if (arr[byteOffset + i] === val[foundIndex === -1 ? 0 : i - foundIndex]) {
+ if (foundIndex === -1) foundIndex = i
+ if (i - foundIndex + 1 === val.length) return byteOffset + foundIndex
+ } else {
+ foundIndex = -1
+ }
+ }
+ return -1
+ }
+
+ throw new TypeError('val must be string, number or Buffer')
+}
+
+// `get` is deprecated
+Buffer.prototype.get = function get (offset) {
+ console.log('.get() is deprecated. Access using array indexes instead.')
+ return this.readUInt8(offset)
+}
+
+// `set` is deprecated
+Buffer.prototype.set = function set (v, offset) {
+ console.log('.set() is deprecated. Access using array indexes instead.')
+ return this.writeUInt8(v, offset)
+}
+
+function hexWrite (buf, string, offset, length) {
+ offset = Number(offset) || 0
+ var remaining = buf.length - offset
+ if (!length) {
+ length = remaining
+ } else {
+ length = Number(length)
+ if (length > remaining) {
+ length = remaining
+ }
+ }
+
+ // must be an even number of digits
+ var strLen = string.length
+ if (strLen % 2 !== 0) throw new Error('Invalid hex string')
+
+ if (length > strLen / 2) {
+ length = strLen / 2
+ }
+ for (var i = 0; i < length; i++) {
+ var parsed = parseInt(string.substr(i * 2, 2), 16)
+ if (isNaN(parsed)) throw new Error('Invalid hex string')
+ buf[offset + i] = parsed
+ }
+ return i
+}
+
+function utf8Write (buf, string, offset, length) {
+ return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
+}
+
+function asciiWrite (buf, string, offset, length) {
+ return blitBuffer(asciiToBytes(string), buf, offset, length)
+}
+
+function binaryWrite (buf, string, offset, length) {
+ return asciiWrite(buf, string, offset, length)
+}
+
+function base64Write (buf, string, offset, length) {
+ return blitBuffer(base64ToBytes(string), buf, offset, length)
+}
+
+function ucs2Write (buf, string, offset, length) {
+ return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
+}
+
+Buffer.prototype.write = function write (string, offset, length, encoding) {
+ // Buffer#write(string)
+ if (offset === undefined) {
+ encoding = 'utf8'
+ length = this.length
+ offset = 0
+ // Buffer#write(string, encoding)
+ } else if (length === undefined && typeof offset === 'string') {
+ encoding = offset
+ length = this.length
+ offset = 0
+ // Buffer#write(string, offset[, length][, encoding])
+ } else if (isFinite(offset)) {
+ offset = offset | 0
+ if (isFinite(length)) {
+ length = length | 0
+ if (encoding === undefined) encoding = 'utf8'
+ } else {
+ encoding = length
+ length = undefined
+ }
+ // legacy write(string, encoding, offset, length) - remove in v0.13
+ } else {
+ var swap = encoding
+ encoding = offset
+ offset = length | 0
+ length = swap
+ }
+
+ var remaining = this.length - offset
+ if (length === undefined || length > remaining) length = remaining
+
+ if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
+ throw new RangeError('attempt to write outside buffer bounds')
+ }
+
+ if (!encoding) encoding = 'utf8'
+
+ var loweredCase = false
+ for (;;) {
+ switch (encoding) {
+ case 'hex':
+ return hexWrite(this, string, offset, length)
+
+ case 'utf8':
+ case 'utf-8':
+ return utf8Write(this, string, offset, length)
+
+ case 'ascii':
+ return asciiWrite(this, string, offset, length)
+
+ case 'binary':
+ return binaryWrite(this, string, offset, length)
+
+ case 'base64':
+ // Warning: maxLength not taken into account in base64Write
+ return base64Write(this, string, offset, length)
+
+ case 'ucs2':
+ case 'ucs-2':
+ case 'utf16le':
+ case 'utf-16le':
+ return ucs2Write(this, string, offset, length)
+
+ default:
+ if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
+ encoding = ('' + encoding).toLowerCase()
+ loweredCase = true
+ }
+ }
+}
+
+Buffer.prototype.toJSON = function toJSON () {
+ return {
+ type: 'Buffer',
+ data: Array.prototype.slice.call(this._arr || this, 0)
+ }
+}
+
+function base64Slice (buf, start, end) {
+ if (start === 0 && end === buf.length) {
+ return base64.fromByteArray(buf)
+ } else {
+ return base64.fromByteArray(buf.slice(start, end))
+ }
+}
+
+function utf8Slice (buf, start, end) {
+ end = Math.min(buf.length, end)
+ var res = []
+
+ var i = start
+ while (i < end) {
+ var firstByte = buf[i]
+ var codePoint = null
+ var bytesPerSequence = (firstByte > 0xEF) ? 4
+ : (firstByte > 0xDF) ? 3
+ : (firstByte > 0xBF) ? 2
+ : 1
+
+ if (i + bytesPerSequence <= end) {
+ var secondByte, thirdByte, fourthByte, tempCodePoint
+
+ switch (bytesPerSequence) {
+ case 1:
+ if (firstByte < 0x80) {
+ codePoint = firstByte
+ }
+ break
+ case 2:
+ secondByte = buf[i + 1]
+ if ((secondByte & 0xC0) === 0x80) {
+ tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)
+ if (tempCodePoint > 0x7F) {
+ codePoint = tempCodePoint
+ }
+ }
+ break
+ case 3:
+ secondByte = buf[i + 1]
+ thirdByte = buf[i + 2]
+ if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
+ tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)
+ if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
+ codePoint = tempCodePoint
+ }
+ }
+ break
+ case 4:
+ secondByte = buf[i + 1]
+ thirdByte = buf[i + 2]
+ fourthByte = buf[i + 3]
+ if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
+ tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)
+ if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
+ codePoint = tempCodePoint
+ }
+ }
+ }
+ }
+
+ if (codePoint === null) {
+ // we did not generate a valid codePoint so insert a
+ // replacement char (U+FFFD) and advance only 1 byte
+ codePoint = 0xFFFD
+ bytesPerSequence = 1
+ } else if (codePoint > 0xFFFF) {
+ // encode to utf16 (surrogate pair dance)
+ codePoint -= 0x10000
+ res.push(codePoint >>> 10 & 0x3FF | 0xD800)
+ codePoint = 0xDC00 | codePoint & 0x3FF
+ }
+
+ res.push(codePoint)
+ i += bytesPerSequence
+ }
+
+ return decodeCodePointsArray(res)
+}
+
+// Based on http://stackoverflow.com/a/22747272/680742, the browser with
+// the lowest limit is Chrome, with 0x10000 args.
+// We go 1 magnitude less, for safety
+var MAX_ARGUMENTS_LENGTH = 0x1000
+
+function decodeCodePointsArray (codePoints) {
+ var len = codePoints.length
+ if (len <= MAX_ARGUMENTS_LENGTH) {
+ return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
+ }
+
+ // Decode in chunks to avoid "call stack size exceeded".
+ var res = ''
+ var i = 0
+ while (i < len) {
+ res += String.fromCharCode.apply(
+ String,
+ codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
+ )
+ }
+ return res
+}
+
+function asciiSlice (buf, start, end) {
+ var ret = ''
+ end = Math.min(buf.length, end)
+
+ for (var i = start; i < end; i++) {
+ ret += String.fromCharCode(buf[i] & 0x7F)
+ }
+ return ret
+}
+
+function binarySlice (buf, start, end) {
+ var ret = ''
+ end = Math.min(buf.length, end)
+
+ for (var i = start; i < end; i++) {
+ ret += String.fromCharCode(buf[i])
+ }
+ return ret
+}
+
+function hexSlice (buf, start, end) {
+ var len = buf.length
+
+ if (!start || start < 0) start = 0
+ if (!end || end < 0 || end > len) end = len
+
+ var out = ''
+ for (var i = start; i < end; i++) {
+ out += toHex(buf[i])
+ }
+ return out
+}
+
+function utf16leSlice (buf, start, end) {
+ var bytes = buf.slice(start, end)
+ var res = ''
+ for (var i = 0; i < bytes.length; i += 2) {
+ res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256)
+ }
+ return res
+}
+
+Buffer.prototype.slice = function slice (start, end) {
+ var len = this.length
+ start = ~~start
+ end = end === undefined ? len : ~~end
+
+ if (start < 0) {
+ start += len
+ if (start < 0) start = 0
+ } else if (start > len) {
+ start = len
+ }
+
+ if (end < 0) {
+ end += len
+ if (end < 0) end = 0
+ } else if (end > len) {
+ end = len
+ }
+
+ if (end < start) end = start
+
+ var newBuf
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
+ newBuf = Buffer._augment(this.subarray(start, end))
+ } else {
+ var sliceLen = end - start
+ newBuf = new Buffer(sliceLen, undefined)
+ for (var i = 0; i < sliceLen; i++) {
+ newBuf[i] = this[i + start]
+ }
+ }
+
+ if (newBuf.length) newBuf.parent = this.parent || this
+
+ return newBuf
+}
+
+/*
+ * Need to make sure that buffer isn't trying to write out of bounds.
+ */
+function checkOffset (offset, ext, length) {
+ if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
+ if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
+}
+
+Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
+ offset = offset | 0
+ byteLength = byteLength | 0
+ if (!noAssert) checkOffset(offset, byteLength, this.length)
+
+ var val = this[offset]
+ var mul = 1
+ var i = 0
+ while (++i < byteLength && (mul *= 0x100)) {
+ val += this[offset + i] * mul
+ }
+
+ return val
+}
+
+Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
+ offset = offset | 0
+ byteLength = byteLength | 0
+ if (!noAssert) {
+ checkOffset(offset, byteLength, this.length)
+ }
+
+ var val = this[offset + --byteLength]
+ var mul = 1
+ while (byteLength > 0 && (mul *= 0x100)) {
+ val += this[offset + --byteLength] * mul
+ }
+
+ return val
+}
+
+Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
+ if (!noAssert) checkOffset(offset, 1, this.length)
+ return this[offset]
+}
+
+Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
+ if (!noAssert) checkOffset(offset, 2, this.length)
+ return this[offset] | (this[offset + 1] << 8)
+}
+
+Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
+ if (!noAssert) checkOffset(offset, 2, this.length)
+ return (this[offset] << 8) | this[offset + 1]
+}
+
+Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
+ if (!noAssert) checkOffset(offset, 4, this.length)
+
+ return ((this[offset]) |
+ (this[offset + 1] << 8) |
+ (this[offset + 2] << 16)) +
+ (this[offset + 3] * 0x1000000)
+}
+
+Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
+ if (!noAssert) checkOffset(offset, 4, this.length)
+
+ return (this[offset] * 0x1000000) +
+ ((this[offset + 1] << 16) |
+ (this[offset + 2] << 8) |
+ this[offset + 3])
+}
+
+Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
+ offset = offset | 0
+ byteLength = byteLength | 0
+ if (!noAssert) checkOffset(offset, byteLength, this.length)
+
+ var val = this[offset]
+ var mul = 1
+ var i = 0
+ while (++i < byteLength && (mul *= 0x100)) {
+ val += this[offset + i] * mul
+ }
+ mul *= 0x80
+
+ if (val >= mul) val -= Math.pow(2, 8 * byteLength)
+
+ return val
+}
+
+Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
+ offset = offset | 0
+ byteLength = byteLength | 0
+ if (!noAssert) checkOffset(offset, byteLength, this.length)
+
+ var i = byteLength
+ var mul = 1
+ var val = this[offset + --i]
+ while (i > 0 && (mul *= 0x100)) {
+ val += this[offset + --i] * mul
+ }
+ mul *= 0x80
+
+ if (val >= mul) val -= Math.pow(2, 8 * byteLength)
+
+ return val
+}
+
+Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) {
+ if (!noAssert) checkOffset(offset, 1, this.length)
+ if (!(this[offset] & 0x80)) return (this[offset])
+ return ((0xff - this[offset] + 1) * -1)
+}
+
+Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
+ if (!noAssert) checkOffset(offset, 2, this.length)
+ var val = this[offset] | (this[offset + 1] << 8)
+ return (val & 0x8000) ? val | 0xFFFF0000 : val
+}
+
+Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
+ if (!noAssert) checkOffset(offset, 2, this.length)
+ var val = this[offset + 1] | (this[offset] << 8)
+ return (val & 0x8000) ? val | 0xFFFF0000 : val
+}
+
+Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
+ if (!noAssert) checkOffset(offset, 4, this.length)
+
+ return (this[offset]) |
+ (this[offset + 1] << 8) |
+ (this[offset + 2] << 16) |
+ (this[offset + 3] << 24)
+}
+
+Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
+ if (!noAssert) checkOffset(offset, 4, this.length)
+
+ return (this[offset] << 24) |
+ (this[offset + 1] << 16) |
+ (this[offset + 2] << 8) |
+ (this[offset + 3])
+}
+
+Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
+ if (!noAssert) checkOffset(offset, 4, this.length)
+ return ieee754.read(this, offset, true, 23, 4)
+}
+
+Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
+ if (!noAssert) checkOffset(offset, 4, this.length)
+ return ieee754.read(this, offset, false, 23, 4)
+}
+
+Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
+ if (!noAssert) checkOffset(offset, 8, this.length)
+ return ieee754.read(this, offset, true, 52, 8)
+}
+
+Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
+ if (!noAssert) checkOffset(offset, 8, this.length)
+ return ieee754.read(this, offset, false, 52, 8)
+}
+
+function checkInt (buf, value, offset, ext, max, min) {
+ if (!Buffer.isBuffer(buf)) throw new TypeError('buffer must be a Buffer instance')
+ if (value > max || value < min) throw new RangeError('value is out of bounds')
+ if (offset + ext > buf.length) throw new RangeError('index out of range')
+}
+
+Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
+ value = +value
+ offset = offset | 0
+ byteLength = byteLength | 0
+ if (!noAssert) checkInt(this, value, offset, byteLength, Math.pow(2, 8 * byteLength), 0)
+
+ var mul = 1
+ var i = 0
+ this[offset] = value & 0xFF
+ while (++i < byteLength && (mul *= 0x100)) {
+ this[offset + i] = (value / mul) & 0xFF
+ }
+
+ return offset + byteLength
+}
+
+Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
+ value = +value
+ offset = offset | 0
+ byteLength = byteLength | 0
+ if (!noAssert) checkInt(this, value, offset, byteLength, Math.pow(2, 8 * byteLength), 0)
+
+ var i = byteLength - 1
+ var mul = 1
+ this[offset + i] = value & 0xFF
+ while (--i >= 0 && (mul *= 0x100)) {
+ this[offset + i] = (value / mul) & 0xFF
+ }
+
+ return offset + byteLength
+}
+
+Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
+ value = +value
+ offset = offset | 0
+ if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)
+ if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)
+ this[offset] = (value & 0xff)
+ return offset + 1
+}
+
+function objectWriteUInt16 (buf, value, offset, littleEndian) {
+ if (value < 0) value = 0xffff + value + 1
+ for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; i++) {
+ buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>
+ (littleEndian ? i : 1 - i) * 8
+ }
+}
+
+Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
+ value = +value
+ offset = offset | 0
+ if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
+ this[offset] = (value & 0xff)
+ this[offset + 1] = (value >>> 8)
+ } else {
+ objectWriteUInt16(this, value, offset, true)
+ }
+ return offset + 2
+}
+
+Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
+ value = +value
+ offset = offset | 0
+ if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
+ this[offset] = (value >>> 8)
+ this[offset + 1] = (value & 0xff)
+ } else {
+ objectWriteUInt16(this, value, offset, false)
+ }
+ return offset + 2
+}
+
+function objectWriteUInt32 (buf, value, offset, littleEndian) {
+ if (value < 0) value = 0xffffffff + value + 1
+ for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; i++) {
+ buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff
+ }
+}
+
+Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
+ value = +value
+ offset = offset | 0
+ if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
+ this[offset + 3] = (value >>> 24)
+ this[offset + 2] = (value >>> 16)
+ this[offset + 1] = (value >>> 8)
+ this[offset] = (value & 0xff)
+ } else {
+ objectWriteUInt32(this, value, offset, true)
+ }
+ return offset + 4
+}
+
+Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
+ value = +value
+ offset = offset | 0
+ if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
+ this[offset] = (value >>> 24)
+ this[offset + 1] = (value >>> 16)
+ this[offset + 2] = (value >>> 8)
+ this[offset + 3] = (value & 0xff)
+ } else {
+ objectWriteUInt32(this, value, offset, false)
+ }
+ return offset + 4
+}
+
+Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
+ value = +value
+ offset = offset | 0
+ if (!noAssert) {
+ var limit = Math.pow(2, 8 * byteLength - 1)
+
+ checkInt(this, value, offset, byteLength, limit - 1, -limit)
+ }
+
+ var i = 0
+ var mul = 1
+ var sub = value < 0 ? 1 : 0
+ this[offset] = value & 0xFF
+ while (++i < byteLength && (mul *= 0x100)) {
+ this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
+ }
+
+ return offset + byteLength
+}
+
+Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
+ value = +value
+ offset = offset | 0
+ if (!noAssert) {
+ var limit = Math.pow(2, 8 * byteLength - 1)
+
+ checkInt(this, value, offset, byteLength, limit - 1, -limit)
+ }
+
+ var i = byteLength - 1
+ var mul = 1
+ var sub = value < 0 ? 1 : 0
+ this[offset + i] = value & 0xFF
+ while (--i >= 0 && (mul *= 0x100)) {
+ this[offset + i] = ((value / mul) >> 0) - sub & 0xFF
+ }
+
+ return offset + byteLength
+}
+
+Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
+ value = +value
+ offset = offset | 0
+ if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)
+ if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value)
+ if (value < 0) value = 0xff + value + 1
+ this[offset] = (value & 0xff)
+ return offset + 1
+}
+
+Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
+ value = +value
+ offset = offset | 0
+ if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
+ this[offset] = (value & 0xff)
+ this[offset + 1] = (value >>> 8)
+ } else {
+ objectWriteUInt16(this, value, offset, true)
+ }
+ return offset + 2
+}
+
+Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
+ value = +value
+ offset = offset | 0
+ if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
+ this[offset] = (value >>> 8)
+ this[offset + 1] = (value & 0xff)
+ } else {
+ objectWriteUInt16(this, value, offset, false)
+ }
+ return offset + 2
+}
+
+Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
+ value = +value
+ offset = offset | 0
+ if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
+ this[offset] = (value & 0xff)
+ this[offset + 1] = (value >>> 8)
+ this[offset + 2] = (value >>> 16)
+ this[offset + 3] = (value >>> 24)
+ } else {
+ objectWriteUInt32(this, value, offset, true)
+ }
+ return offset + 4
+}
+
+Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
+ value = +value
+ offset = offset | 0
+ if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)
+ if (value < 0) value = 0xffffffff + value + 1
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
+ this[offset] = (value >>> 24)
+ this[offset + 1] = (value >>> 16)
+ this[offset + 2] = (value >>> 8)
+ this[offset + 3] = (value & 0xff)
+ } else {
+ objectWriteUInt32(this, value, offset, false)
+ }
+ return offset + 4
+}
+
+function checkIEEE754 (buf, value, offset, ext, max, min) {
+ if (value > max || value < min) throw new RangeError('value is out of bounds')
+ if (offset + ext > buf.length) throw new RangeError('index out of range')
+ if (offset < 0) throw new RangeError('index out of range')
+}
+
+function writeFloat (buf, value, offset, littleEndian, noAssert) {
+ if (!noAssert) {
+ checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)
+ }
+ ieee754.write(buf, value, offset, littleEndian, 23, 4)
+ return offset + 4
+}
+
+Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
+ return writeFloat(this, value, offset, true, noAssert)
+}
+
+Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
+ return writeFloat(this, value, offset, false, noAssert)
+}
+
+function writeDouble (buf, value, offset, littleEndian, noAssert) {
+ if (!noAssert) {
+ checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)
+ }
+ ieee754.write(buf, value, offset, littleEndian, 52, 8)
+ return offset + 8
+}
+
+Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
+ return writeDouble(this, value, offset, true, noAssert)
+}
+
+Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
+ return writeDouble(this, value, offset, false, noAssert)
+}
+
+// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
+Buffer.prototype.copy = function copy (target, targetStart, start, end) {
+ if (!start) start = 0
+ if (!end && end !== 0) end = this.length
+ if (targetStart >= target.length) targetStart = target.length
+ if (!targetStart) targetStart = 0
+ if (end > 0 && end < start) end = start
+
+ // Copy 0 bytes; we're done
+ if (end === start) return 0
+ if (target.length === 0 || this.length === 0) return 0
+
+ // Fatal error conditions
+ if (targetStart < 0) {
+ throw new RangeError('targetStart out of bounds')
+ }
+ if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
+ if (end < 0) throw new RangeError('sourceEnd out of bounds')
+
+ // Are we oob?
+ if (end > this.length) end = this.length
+ if (target.length - targetStart < end - start) {
+ end = target.length - targetStart + start
+ }
+
+ var len = end - start
+ var i
+
+ if (this === target && start < targetStart && targetStart < end) {
+ // descending copy from end
+ for (i = len - 1; i >= 0; i--) {
+ target[i + targetStart] = this[i + start]
+ }
+ } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) {
+ // ascending copy from start
+ for (i = 0; i < len; i++) {
+ target[i + targetStart] = this[i + start]
+ }
+ } else {
+ target._set(this.subarray(start, start + len), targetStart)
+ }
+
+ return len
+}
+
+// fill(value, start=0, end=buffer.length)
+Buffer.prototype.fill = function fill (value, start, end) {
+ if (!value) value = 0
+ if (!start) start = 0
+ if (!end) end = this.length
+
+ if (end < start) throw new RangeError('end < start')
+
+ // Fill 0 bytes; we're done
+ if (end === start) return
+ if (this.length === 0) return
+
+ if (start < 0 || start >= this.length) throw new RangeError('start out of bounds')
+ if (end < 0 || end > this.length) throw new RangeError('end out of bounds')
+
+ var i
+ if (typeof value === 'number') {
+ for (i = start; i < end; i++) {
+ this[i] = value
+ }
+ } else {
+ var bytes = utf8ToBytes(value.toString())
+ var len = bytes.length
+ for (i = start; i < end; i++) {
+ this[i] = bytes[i % len]
+ }
+ }
+
+ return this
+}
+
+/**
+ * Creates a new `ArrayBuffer` with the *copied* memory of the buffer instance.
+ * Added in Node 0.12. Only available in browsers that support ArrayBuffer.
+ */
+Buffer.prototype.toArrayBuffer = function toArrayBuffer () {
+ if (typeof Uint8Array !== 'undefined') {
+ if (Buffer.TYPED_ARRAY_SUPPORT) {
+ return (new Buffer(this)).buffer
+ } else {
+ var buf = new Uint8Array(this.length)
+ for (var i = 0, len = buf.length; i < len; i += 1) {
+ buf[i] = this[i]
+ }
+ return buf.buffer
+ }
+ } else {
+ throw new TypeError('Buffer.toArrayBuffer not supported in this browser')
+ }
+}
+
+// HELPER FUNCTIONS
+// ================
+
+var BP = Buffer.prototype
+
+/**
+ * Augment a Uint8Array *instance* (not the Uint8Array class!) with Buffer methods
+ */
+Buffer._augment = function _augment (arr) {
+ arr.constructor = Buffer
+ arr._isBuffer = true
+
+ // save reference to original Uint8Array set method before overwriting
+ arr._set = arr.set
+
+ // deprecated
+ arr.get = BP.get
+ arr.set = BP.set
+
+ arr.write = BP.write
+ arr.toString = BP.toString
+ arr.toLocaleString = BP.toString
+ arr.toJSON = BP.toJSON
+ arr.equals = BP.equals
+ arr.compare = BP.compare
+ arr.indexOf = BP.indexOf
+ arr.copy = BP.copy
+ arr.slice = BP.slice
+ arr.readUIntLE = BP.readUIntLE
+ arr.readUIntBE = BP.readUIntBE
+ arr.readUInt8 = BP.readUInt8
+ arr.readUInt16LE = BP.readUInt16LE
+ arr.readUInt16BE = BP.readUInt16BE
+ arr.readUInt32LE = BP.readUInt32LE
+ arr.readUInt32BE = BP.readUInt32BE
+ arr.readIntLE = BP.readIntLE
+ arr.readIntBE = BP.readIntBE
+ arr.readInt8 = BP.readInt8
+ arr.readInt16LE = BP.readInt16LE
+ arr.readInt16BE = BP.readInt16BE
+ arr.readInt32LE = BP.readInt32LE
+ arr.readInt32BE = BP.readInt32BE
+ arr.readFloatLE = BP.readFloatLE
+ arr.readFloatBE = BP.readFloatBE
+ arr.readDoubleLE = BP.readDoubleLE
+ arr.readDoubleBE = BP.readDoubleBE
+ arr.writeUInt8 = BP.writeUInt8
+ arr.writeUIntLE = BP.writeUIntLE
+ arr.writeUIntBE = BP.writeUIntBE
+ arr.writeUInt16LE = BP.writeUInt16LE
+ arr.writeUInt16BE = BP.writeUInt16BE
+ arr.writeUInt32LE = BP.writeUInt32LE
+ arr.writeUInt32BE = BP.writeUInt32BE
+ arr.writeIntLE = BP.writeIntLE
+ arr.writeIntBE = BP.writeIntBE
+ arr.writeInt8 = BP.writeInt8
+ arr.writeInt16LE = BP.writeInt16LE
+ arr.writeInt16BE = BP.writeInt16BE
+ arr.writeInt32LE = BP.writeInt32LE
+ arr.writeInt32BE = BP.writeInt32BE
+ arr.writeFloatLE = BP.writeFloatLE
+ arr.writeFloatBE = BP.writeFloatBE
+ arr.writeDoubleLE = BP.writeDoubleLE
+ arr.writeDoubleBE = BP.writeDoubleBE
+ arr.fill = BP.fill
+ arr.inspect = BP.inspect
+ arr.toArrayBuffer = BP.toArrayBuffer
+
+ return arr
+}
+
+var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g
+
+function base64clean (str) {
+ // Node strips out invalid characters like \n and \t from the string, base64-js does not
+ str = stringtrim(str).replace(INVALID_BASE64_RE, '')
+ // Node converts strings with length < 2 to ''
+ if (str.length < 2) return ''
+ // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
+ while (str.length % 4 !== 0) {
+ str = str + '='
+ }
+ return str
+}
+
+function stringtrim (str) {
+ if (str.trim) return str.trim()
+ return str.replace(/^\s+|\s+$/g, '')
+}
+
+function toHex (n) {
+ if (n < 16) return '0' + n.toString(16)
+ return n.toString(16)
+}
+
+function utf8ToBytes (string, units) {
+ units = units || Infinity
+ var codePoint
+ var length = string.length
+ var leadSurrogate = null
+ var bytes = []
+
+ for (var i = 0; i < length; i++) {
+ codePoint = string.charCodeAt(i)
+
+ // is surrogate component
+ if (codePoint > 0xD7FF && codePoint < 0xE000) {
+ // last char was a lead
+ if (!leadSurrogate) {
+ // no lead yet
+ if (codePoint > 0xDBFF) {
+ // unexpected trail
+ if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
+ continue
+ } else if (i + 1 === length) {
+ // unpaired lead
+ if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
+ continue
+ }
+
+ // valid lead
+ leadSurrogate = codePoint
+
+ continue
+ }
+
+ // 2 leads in a row
+ if (codePoint < 0xDC00) {
+ if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
+ leadSurrogate = codePoint
+ continue
+ }
+
+ // valid surrogate pair
+ codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000
+ } else if (leadSurrogate) {
+ // valid bmp char, but last char was a lead
+ if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)
+ }
+
+ leadSurrogate = null
+
+ // encode utf8
+ if (codePoint < 0x80) {
+ if ((units -= 1) < 0) break
+ bytes.push(codePoint)
+ } else if (codePoint < 0x800) {
+ if ((units -= 2) < 0) break
+ bytes.push(
+ codePoint >> 0x6 | 0xC0,
+ codePoint & 0x3F | 0x80
+ )
+ } else if (codePoint < 0x10000) {
+ if ((units -= 3) < 0) break
+ bytes.push(
+ codePoint >> 0xC | 0xE0,
+ codePoint >> 0x6 & 0x3F | 0x80,
+ codePoint & 0x3F | 0x80
+ )
+ } else if (codePoint < 0x110000) {
+ if ((units -= 4) < 0) break
+ bytes.push(
+ codePoint >> 0x12 | 0xF0,
+ codePoint >> 0xC & 0x3F | 0x80,
+ codePoint >> 0x6 & 0x3F | 0x80,
+ codePoint & 0x3F | 0x80
+ )
+ } else {
+ throw new Error('Invalid code point')
+ }
+ }
+
+ return bytes
+}
+
+function asciiToBytes (str) {
+ var byteArray = []
+ for (var i = 0; i < str.length; i++) {
+ // Node's code seems to be doing this and not & 0x7F..
+ byteArray.push(str.charCodeAt(i) & 0xFF)
+ }
+ return byteArray
+}
+
+function utf16leToBytes (str, units) {
+ var c, hi, lo
+ var byteArray = []
+ for (var i = 0; i < str.length; i++) {
+ if ((units -= 2) < 0) break
+
+ c = str.charCodeAt(i)
+ hi = c >> 8
+ lo = c % 256
+ byteArray.push(lo)
+ byteArray.push(hi)
+ }
+
+ return byteArray
+}
+
+function base64ToBytes (str) {
+ return base64.toByteArray(base64clean(str))
+}
+
+function blitBuffer (src, dst, offset, length) {
+ for (var i = 0; i < length; i++) {
+ if ((i + offset >= dst.length) || (i >= src.length)) break
+ dst[i + offset] = src[i]
+ }
+ return i
+}
diff --git a/node_modules/buffer/package.json b/node_modules/buffer/package.json
new file mode 100644
index 0000000..91be5db
--- /dev/null
+++ b/node_modules/buffer/package.json
@@ -0,0 +1,128 @@
+{
+ "_args": [
+ [
+ "buffer@^3.0.3",
+ "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/node-libs-browser"
+ ]
+ ],
+ "_from": "buffer@>=3.0.3 <4.0.0",
+ "_id": "buffer@3.6.0",
+ "_inCache": true,
+ "_installable": true,
+ "_location": "/buffer",
+ "_nodeVersion": "4.2.3",
+ "_npmUser": {
+ "email": "feross@feross.org",
+ "name": "feross"
+ },
+ "_npmVersion": "2.14.7",
+ "_phantomChildren": {},
+ "_requested": {
+ "name": "buffer",
+ "raw": "buffer@^3.0.3",
+ "rawSpec": "^3.0.3",
+ "scope": null,
+ "spec": ">=3.0.3 <4.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/node-libs-browser"
+ ],
+ "_resolved": "https://registry.npmjs.org/buffer/-/buffer-3.6.0.tgz",
+ "_shasum": "a72c936f77b96bf52f5f7e7b467180628551defb",
+ "_shrinkwrap": null,
+ "_spec": "buffer@^3.0.3",
+ "_where": "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/node-libs-browser",
+ "author": {
+ "email": "feross@feross.org",
+ "name": "Feross Aboukhadijeh",
+ "url": "http://feross.org"
+ },
+ "bugs": {
+ "url": "https://github.com/feross/buffer/issues"
+ },
+ "contributors": [
+ {
+ "name": "Romain Beauxis",
+ "email": "toots@rastageeks.org"
+ },
+ {
+ "name": "James Halliday",
+ "email": "mail@substack.net"
+ }
+ ],
+ "dependencies": {
+ "base64-js": "0.0.8",
+ "ieee754": "^1.1.4",
+ "isarray": "^1.0.0"
+ },
+ "description": "Node.js Buffer API, for the browser",
+ "devDependencies": {
+ "benchmark": "^1.0.0",
+ "browserify": "^12.0.1",
+ "concat-stream": "^1.4.7",
+ "hyperquest": "^1.0.1",
+ "is-nan": "^1.0.1",
+ "split": "^1.0.0",
+ "standard": "^5.0.0",
+ "tape": "^4.0.0",
+ "through2": "^2.0.0",
+ "zuul": "^3.0.0"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "a72c936f77b96bf52f5f7e7b467180628551defb",
+ "tarball": "http://registry.npmjs.org/buffer/-/buffer-3.6.0.tgz"
+ },
+ "gitHead": "73e77e481f6ebc7a97be87468ddf9e8daf72a93c",
+ "homepage": "https://github.com/feross/buffer",
+ "jspm": {
+ "map": {
+ "./index.js": {
+ "node": "@node/buffer"
+ }
+ }
+ },
+ "keywords": [
+ "arraybuffer",
+ "browser",
+ "browserify",
+ "buffer",
+ "compatible",
+ "dataview",
+ "uint8array"
+ ],
+ "license": "MIT",
+ "main": "index.js",
+ "maintainers": [
+ {
+ "name": "feross",
+ "email": "feross@feross.org"
+ }
+ ],
+ "name": "buffer",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git://github.com/feross/buffer.git"
+ },
+ "scripts": {
+ "perf": "browserify --debug perf/bracket-notation.js > perf/bundle.js && open perf/index.html",
+ "perf-node": "node perf/bracket-notation.js && node perf/concat.js && node perf/copy-big.js && node perf/copy.js && node perf/new-big.js && node perf/new.js && node perf/readDoubleBE.js && node perf/readFloatBE.js && node perf/readUInt32LE.js && node perf/slice.js && node perf/writeFloatBE.js",
+ "size": "browserify -r ./ | uglifyjs -c -m | gzip | wc -c",
+ "test": "standard && node ./bin/test.js",
+ "test-browser": "zuul -- test/*.js test/node/*.js",
+ "test-browser-local": "zuul --local -- test/*.js test/node/*.js",
+ "test-node": "tape test/*.js test/node/*.js test/node-es6/*.js && OBJECT_IMPL=true tape test/*.js test/node/*.js"
+ },
+ "standard": {
+ "ignore": [
+ "perf/*.js",
+ "test/_polyfill.js",
+ "test/node-es6/*.js",
+ "test/node/*.js"
+ ]
+ },
+ "version": "3.6.0"
+}
diff --git a/node_modules/buffer/test/_polyfill.js b/node_modules/buffer/test/_polyfill.js
new file mode 100644
index 0000000..61f9c18
--- /dev/null
+++ b/node_modules/buffer/test/_polyfill.js
@@ -0,0 +1,150 @@
+if (!Array.prototype.forEach) {
+
+ Array.prototype.forEach = function(callback, thisArg) {
+
+ var T, k;
+
+ if (this == null) {
+ throw new TypeError(' this is null or not defined');
+ }
+
+ // 1. Let O be the result of calling ToObject passing the |this| value as the argument.
+ var O = Object(this);
+
+ // 2. Let lenValue be the result of calling the Get internal method of O with the argument "length".
+ // 3. Let len be ToUint32(lenValue).
+ var len = O.length >>> 0;
+
+ // 4. If IsCallable(callback) is false, throw a TypeError exception.
+ // See: http://es5.github.com/#x9.11
+ if (typeof callback !== "function") {
+ throw new TypeError(callback + ' is not a function');
+ }
+
+ // 5. If thisArg was supplied, let T be thisArg; else let T be undefined.
+ if (arguments.length > 1) {
+ T = thisArg;
+ }
+
+ // 6. Let k be 0
+ k = 0;
+
+ // 7. Repeat, while k < len
+ while (k < len) {
+
+ var kValue;
+
+ // a. Let Pk be ToString(k).
+ // This is implicit for LHS operands of the in operator
+ // b. Let kPresent be the result of calling the HasProperty internal method of O with argument Pk.
+ // This step can be combined with c
+ // c. If kPresent is true, then
+ if (k in O) {
+
+ // i. Let kValue be the result of calling the Get internal method of O with argument Pk.
+ kValue = O[k];
+
+ // ii. Call the Call internal method of callback with T as the this value and
+ // argument list containing kValue, k, and O.
+ callback.call(T, kValue, k, O);
+ }
+ // d. Increase k by 1.
+ k++;
+ }
+ // 8. return undefined
+ };
+}
+
+if (!Array.isArray) {
+ Array.isArray = function(arg) {
+ return Object.prototype.toString.call(arg) === '[object Array]';
+ };
+}
+
+if (!Array.prototype.map) {
+
+ Array.prototype.map = function(callback, thisArg) {
+
+ var T, A, k;
+
+ if (this == null) {
+ throw new TypeError(' this is null or not defined');
+ }
+
+ // 1. Let O be the result of calling ToObject passing the |this|
+ // value as the argument.
+ var O = Object(this);
+
+ // 2. Let lenValue be the result of calling the Get internal
+ // method of O with the argument "length".
+ // 3. Let len be ToUint32(lenValue).
+ var len = O.length >>> 0;
+
+ // 4. If IsCallable(callback) is false, throw a TypeError exception.
+ // See: http://es5.github.com/#x9.11
+ if (typeof callback !== 'function') {
+ throw new TypeError(callback + ' is not a function');
+ }
+
+ // 5. If thisArg was supplied, let T be thisArg; else let T be undefined.
+ if (arguments.length > 1) {
+ T = thisArg;
+ }
+
+ // 6. Let A be a new array created as if by the expression new Array(len)
+ // where Array is the standard built-in constructor with that name and
+ // len is the value of len.
+ A = new Array(len);
+
+ // 7. Let k be 0
+ k = 0;
+
+ // 8. Repeat, while k < len
+ while (k < len) {
+
+ var kValue, mappedValue;
+
+ // a. Let Pk be ToString(k).
+ // This is implicit for LHS operands of the in operator
+ // b. Let kPresent be the result of calling the HasProperty internal
+ // method of O with argument Pk.
+ // This step can be combined with c
+ // c. If kPresent is true, then
+ if (k in O) {
+
+ // i. Let kValue be the result of calling the Get internal
+ // method of O with argument Pk.
+ kValue = O[k];
+
+ // ii. Let mappedValue be the result of calling the Call internal
+ // method of callback with T as the this value and argument
+ // list containing kValue, k, and O.
+ mappedValue = callback.call(T, kValue, k, O);
+
+ // iii. Call the DefineOwnProperty internal method of A with arguments
+ // Pk, Property Descriptor
+ // { Value: mappedValue,
+ // Writable: true,
+ // Enumerable: true,
+ // Configurable: true },
+ // and false.
+
+ // In browsers that support Object.defineProperty, use the following:
+ // Object.defineProperty(A, k, {
+ // value: mappedValue,
+ // writable: true,
+ // enumerable: true,
+ // configurable: true
+ // });
+
+ // For best browser support, use the following:
+ A[k] = mappedValue;
+ }
+ // d. Increase k by 1.
+ k++;
+ }
+
+ // 9. return A
+ return A;
+ };
+}
diff --git a/node_modules/buffer/test/base64.js b/node_modules/buffer/test/base64.js
new file mode 100644
index 0000000..e4ecc56
--- /dev/null
+++ b/node_modules/buffer/test/base64.js
@@ -0,0 +1,47 @@
+if (process.env.OBJECT_IMPL) global.TYPED_ARRAY_SUPPORT = false
+var B = require('../').Buffer
+var test = require('tape')
+
+test('base64: ignore whitespace', function (t) {
+ var text = '\n YW9ldQ== '
+ var buf = new B(text, 'base64')
+ t.equal(buf.toString(), 'aoeu')
+ t.end()
+})
+
+test('base64: strings without padding', function (t) {
+ t.equal((new B('YW9ldQ', 'base64').toString()), 'aoeu')
+ t.end()
+})
+
+test('base64: newline in utf8 -- should not be an issue', function (t) {
+ t.equal(
+ new B('LS0tCnRpdGxlOiBUaHJlZSBkYXNoZXMgbWFya3MgdGhlIHNwb3QKdGFnczoK', 'base64').toString('utf8'),
+ '---\ntitle: Three dashes marks the spot\ntags:\n'
+ )
+ t.end()
+})
+
+test('base64: newline in base64 -- should get stripped', function (t) {
+ t.equal(
+ new B('LS0tCnRpdGxlOiBUaHJlZSBkYXNoZXMgbWFya3MgdGhlIHNwb3QKdGFnczoK\nICAtIHlhbWwKICAtIGZyb250LW1hdHRlcgogIC0gZGFzaGVzCmV4cGFuZWQt', 'base64').toString('utf8'),
+ '---\ntitle: Three dashes marks the spot\ntags:\n - yaml\n - front-matter\n - dashes\nexpaned-'
+ )
+ t.end()
+})
+
+test('base64: tab characters in base64 - should get stripped', function (t) {
+ t.equal(
+ new B('LS0tCnRpdGxlOiBUaHJlZSBkYXNoZXMgbWFya3MgdGhlIHNwb3QKdGFnczoK\t\t\t\tICAtIHlhbWwKICAtIGZyb250LW1hdHRlcgogIC0gZGFzaGVzCmV4cGFuZWQt', 'base64').toString('utf8'),
+ '---\ntitle: Three dashes marks the spot\ntags:\n - yaml\n - front-matter\n - dashes\nexpaned-'
+ )
+ t.end()
+})
+
+test('base64: invalid non-alphanumeric characters -- should be stripped', function (t) {
+ t.equal(
+ new B('!"#$%&\'()*,.:;<=>?@[\\]^`{|}~', 'base64').toString('utf8'),
+ ''
+ )
+ t.end()
+})
diff --git a/node_modules/buffer/test/basic.js b/node_modules/buffer/test/basic.js
new file mode 100644
index 0000000..d2fac76
--- /dev/null
+++ b/node_modules/buffer/test/basic.js
@@ -0,0 +1,91 @@
+if (process.env.OBJECT_IMPL) global.TYPED_ARRAY_SUPPORT = false
+var B = require('../').Buffer
+var test = require('tape')
+
+test('buf.constructor is Buffer', function (t) {
+ var buf = new B([1, 2])
+ t.strictEqual(buf.constructor, B)
+ t.end()
+})
+
+test('instanceof Buffer', function (t) {
+ var buf = new B([1, 2])
+ t.ok(buf instanceof B)
+ t.end()
+})
+
+test('convert to Uint8Array in modern browsers', function (t) {
+ if (B.TYPED_ARRAY_SUPPORT) {
+ var buf = new B([1, 2])
+ var uint8array = new Uint8Array(buf.buffer)
+ t.ok(uint8array instanceof Uint8Array)
+ t.equal(uint8array[0], 1)
+ t.equal(uint8array[1], 2)
+ } else {
+ t.pass('object impl: skipping test')
+ }
+ t.end()
+})
+
+test('indexes from a string', function (t) {
+ var buf = new B('abc')
+ t.equal(buf[0], 97)
+ t.equal(buf[1], 98)
+ t.equal(buf[2], 99)
+ t.end()
+})
+
+test('indexes from an array', function (t) {
+ var buf = new B([ 97, 98, 99 ])
+ t.equal(buf[0], 97)
+ t.equal(buf[1], 98)
+ t.equal(buf[2], 99)
+ t.end()
+})
+
+test('setting index value should modify buffer contents', function (t) {
+ var buf = new B([ 97, 98, 99 ])
+ t.equal(buf[2], 99)
+ t.equal(buf.toString(), 'abc')
+
+ buf[2] += 10
+ t.equal(buf[2], 109)
+ t.equal(buf.toString(), 'abm')
+ t.end()
+})
+
+test('storing negative number should cast to unsigned', function (t) {
+ var buf = new B(1)
+
+ if (B.TYPED_ARRAY_SUPPORT) {
+ // This does not work with the object implementation -- nothing we can do!
+ buf[0] = -3
+ t.equal(buf[0], 253)
+ }
+
+ buf = new B(1)
+ buf.writeInt8(-3, 0)
+ t.equal(buf[0], 253)
+
+ t.end()
+})
+
+test('test that memory is copied from array-like', function (t) {
+ if (B.TYPED_ARRAY_SUPPORT) {
+ var u = new Uint8Array(4)
+ var b = new B(u)
+ b[0] = 1
+ b[1] = 2
+ b[2] = 3
+ b[3] = 4
+
+ t.equal(u[0], 0)
+ t.equal(u[1], 0)
+ t.equal(u[2], 0)
+ t.equal(u[3], 0)
+ } else {
+ t.pass('object impl: skipping test')
+ }
+
+ t.end()
+})
diff --git a/node_modules/buffer/test/compare.js b/node_modules/buffer/test/compare.js
new file mode 100644
index 0000000..62b478c
--- /dev/null
+++ b/node_modules/buffer/test/compare.js
@@ -0,0 +1,59 @@
+if (process.env.OBJECT_IMPL) global.TYPED_ARRAY_SUPPORT = false
+var B = require('../').Buffer
+var test = require('tape')
+
+test('buffer.compare', function (t) {
+ var b = new B(1).fill('a')
+ var c = new B(1).fill('c')
+ var d = new B(2).fill('aa')
+
+ t.equal(b.compare(c), -1)
+ t.equal(c.compare(d), 1)
+ t.equal(d.compare(b), 1)
+ t.equal(b.compare(d), -1)
+
+ // static method
+ t.equal(B.compare(b, c), -1)
+ t.equal(B.compare(c, d), 1)
+ t.equal(B.compare(d, b), 1)
+ t.equal(B.compare(b, d), -1)
+ t.end()
+})
+
+test('buffer.compare argument validation', function (t) {
+ t.throws(function () {
+ var b = new B(1)
+ B.compare(b, 'abc')
+ })
+
+ t.throws(function () {
+ var b = new B(1)
+ B.compare('abc', b)
+ })
+
+ t.throws(function () {
+ var b = new B(1)
+ b.compare('abc')
+ })
+ t.end()
+})
+
+test('buffer.equals', function (t) {
+ var b = new B(5).fill('abcdf')
+ var c = new B(5).fill('abcdf')
+ var d = new B(5).fill('abcde')
+ var e = new B(6).fill('abcdef')
+
+ t.ok(b.equals(c))
+ t.ok(!c.equals(d))
+ t.ok(!d.equals(e))
+ t.end()
+})
+
+test('buffer.equals argument validation', function (t) {
+ t.throws(function () {
+ var b = new B(1)
+ b.equals('abc')
+ })
+ t.end()
+})
diff --git a/node_modules/buffer/test/constructor.js b/node_modules/buffer/test/constructor.js
new file mode 100644
index 0000000..1661c25
--- /dev/null
+++ b/node_modules/buffer/test/constructor.js
@@ -0,0 +1,154 @@
+if (process.env.OBJECT_IMPL) global.TYPED_ARRAY_SUPPORT = false
+var B = require('../').Buffer
+var test = require('tape')
+
+test('new buffer from array', function (t) {
+ t.equal(
+ new B([1, 2, 3]).toString(),
+ '\u0001\u0002\u0003'
+ )
+ t.end()
+})
+
+test('new buffer from array w/ negatives', function (t) {
+ t.equal(
+ new B([-1, -2, -3]).toString('hex'),
+ 'fffefd'
+ )
+ t.end()
+})
+
+test('new buffer from array with mixed signed input', function (t) {
+ t.equal(
+ new B([-255, 255, -128, 128, 512, -512, 511, -511]).toString('hex'),
+ '01ff80800000ff01'
+ )
+ t.end()
+})
+
+test('new buffer from string', function (t) {
+ t.equal(
+ new B('hey', 'utf8').toString(),
+ 'hey'
+ )
+ t.end()
+})
+
+test('new buffer from buffer', function (t) {
+ var b1 = new B('asdf')
+ var b2 = new B(b1)
+ t.equal(b1.toString('hex'), b2.toString('hex'))
+ t.end()
+})
+
+test('new buffer from Uint8Array', function (t) {
+ if (typeof Uint8Array !== 'undefined') {
+ var b1 = new Uint8Array([0, 1, 2, 3])
+ var b2 = new B(b1)
+ t.equal(b1.length, b2.length)
+ t.equal(b1[0], 0)
+ t.equal(b1[1], 1)
+ t.equal(b1[2], 2)
+ t.equal(b1[3], 3)
+ t.equal(b1[4], undefined)
+ }
+ t.end()
+})
+
+test('new buffer from Uint16Array', function (t) {
+ if (typeof Uint16Array !== 'undefined') {
+ var b1 = new Uint16Array([0, 1, 2, 3])
+ var b2 = new B(b1)
+ t.equal(b1.length, b2.length)
+ t.equal(b1[0], 0)
+ t.equal(b1[1], 1)
+ t.equal(b1[2], 2)
+ t.equal(b1[3], 3)
+ t.equal(b1[4], undefined)
+ }
+ t.end()
+})
+
+test('new buffer from Uint32Array', function (t) {
+ if (typeof Uint32Array !== 'undefined') {
+ var b1 = new Uint32Array([0, 1, 2, 3])
+ var b2 = new B(b1)
+ t.equal(b1.length, b2.length)
+ t.equal(b1[0], 0)
+ t.equal(b1[1], 1)
+ t.equal(b1[2], 2)
+ t.equal(b1[3], 3)
+ t.equal(b1[4], undefined)
+ }
+ t.end()
+})
+
+test('new buffer from Int16Array', function (t) {
+ if (typeof Int16Array !== 'undefined') {
+ var b1 = new Int16Array([0, 1, 2, 3])
+ var b2 = new B(b1)
+ t.equal(b1.length, b2.length)
+ t.equal(b1[0], 0)
+ t.equal(b1[1], 1)
+ t.equal(b1[2], 2)
+ t.equal(b1[3], 3)
+ t.equal(b1[4], undefined)
+ }
+ t.end()
+})
+
+test('new buffer from Int32Array', function (t) {
+ if (typeof Int32Array !== 'undefined') {
+ var b1 = new Int32Array([0, 1, 2, 3])
+ var b2 = new B(b1)
+ t.equal(b1.length, b2.length)
+ t.equal(b1[0], 0)
+ t.equal(b1[1], 1)
+ t.equal(b1[2], 2)
+ t.equal(b1[3], 3)
+ t.equal(b1[4], undefined)
+ }
+ t.end()
+})
+
+test('new buffer from Float32Array', function (t) {
+ if (typeof Float32Array !== 'undefined') {
+ var b1 = new Float32Array([0, 1, 2, 3])
+ var b2 = new B(b1)
+ t.equal(b1.length, b2.length)
+ t.equal(b1[0], 0)
+ t.equal(b1[1], 1)
+ t.equal(b1[2], 2)
+ t.equal(b1[3], 3)
+ t.equal(b1[4], undefined)
+ }
+ t.end()
+})
+
+test('new buffer from Float64Array', function (t) {
+ if (typeof Float64Array !== 'undefined') {
+ var b1 = new Float64Array([0, 1, 2, 3])
+ var b2 = new B(b1)
+ t.equal(b1.length, b2.length)
+ t.equal(b1[0], 0)
+ t.equal(b1[1], 1)
+ t.equal(b1[2], 2)
+ t.equal(b1[3], 3)
+ t.equal(b1[4], undefined)
+ }
+ t.end()
+})
+
+test('new buffer from buffer.toJSON() output', function (t) {
+ if (typeof JSON === 'undefined') {
+ // ie6, ie7 lack support
+ t.end()
+ return
+ }
+ var buf = new B('test')
+ var json = JSON.stringify(buf)
+ var obj = JSON.parse(json)
+ var copy = new B(obj)
+ t.ok(buf.equals(copy))
+ t.end()
+})
diff --git a/node_modules/buffer/test/deprecated.js b/node_modules/buffer/test/deprecated.js
new file mode 100644
index 0000000..991d614
--- /dev/null
+++ b/node_modules/buffer/test/deprecated.js
@@ -0,0 +1,19 @@
+if (process.env.OBJECT_IMPL) global.TYPED_ARRAY_SUPPORT = false
+var B = require('../').Buffer
+var test = require('tape')
+
+test('.get (deprecated)', function (t) {
+ var b = new B([7, 42])
+ t.equal(b.get(0), 7)
+ t.equal(b.get(1), 42)
+ t.end()
+})
+
+test('.set (deprecated)', function (t) {
+ var b = new B(2)
+ b.set(7, 0)
+ b.set(42, 1)
+ t.equal(b[0], 7)
+ t.equal(b[1], 42)
+ t.end()
+})
diff --git a/node_modules/buffer/test/from-string.js b/node_modules/buffer/test/from-string.js
new file mode 100644
index 0000000..e25db26
--- /dev/null
+++ b/node_modules/buffer/test/from-string.js
@@ -0,0 +1,132 @@
+if (process.env.OBJECT_IMPL) global.TYPED_ARRAY_SUPPORT = false
+var B = require('../').Buffer
+var test = require('tape')
+
+test('detect utf16 surrogate pairs', function (t) {
+ var text = '\uD83D\uDE38' + '\uD83D\uDCAD' + '\uD83D\uDC4D'
+ var buf = new B(text)
+ t.equal(text, buf.toString())
+ t.end()
+})
+
+test('detect utf16 surrogate pairs over U+20000 until U+10FFFF', function (t) {
+ var text = '\uD842\uDFB7' + '\uD93D\uDCAD' + '\uDBFF\uDFFF'
+ var buf = new B(text)
+ t.equal(text, buf.toString())
+ t.end()
+})
+
+test('replace orphaned utf16 surrogate lead code point', function (t) {
+ var text = '\uD83D\uDE38' + '\uD83D' + '\uD83D\uDC4D'
+ var buf = new B(text)
+ t.deepEqual(buf, new B([ 0xf0, 0x9f, 0x98, 0xb8, 0xef, 0xbf, 0xbd, 0xf0, 0x9f, 0x91, 0x8d ]))
+ t.end()
+})
+
+test('replace orphaned utf16 surrogate trail code point', function (t) {
+ var text = '\uD83D\uDE38' + '\uDCAD' + '\uD83D\uDC4D'
+ var buf = new B(text)
+ t.deepEqual(buf, new B([ 0xf0, 0x9f, 0x98, 0xb8, 0xef, 0xbf, 0xbd, 0xf0, 0x9f, 0x91, 0x8d ]))
+ t.end()
+})
+
+test('do not write partial utf16 code units', function (t) {
+ var f = new B([0, 0, 0, 0, 0])
+ t.equal(f.length, 5)
+ var size = f.write('あいうえお', 'utf16le')
+ t.equal(size, 4)
+ t.deepEqual(f, new B([0x42, 0x30, 0x44, 0x30, 0x00]))
+ t.end()
+})
+
+test('handle partial utf16 code points when encoding to utf8 the way node does', function (t) {
+ var text = '\uD83D\uDE38' + '\uD83D\uDC4D'
+
+ var buf = new B(8)
+ buf.fill(0)
+ buf.write(text)
+ t.deepEqual(buf, new B([ 0xf0, 0x9f, 0x98, 0xb8, 0xf0, 0x9f, 0x91, 0x8d ]))
+
+ buf = new B(7)
+ buf.fill(0)
+ buf.write(text)
+ t.deepEqual(buf, new B([ 0xf0, 0x9f, 0x98, 0xb8, 0x00, 0x00, 0x00 ]))
+
+ buf = new B(6)
+ buf.fill(0)
+ buf.write(text)
+ t.deepEqual(buf, new B([ 0xf0, 0x9f, 0x98, 0xb8, 0x00, 0x00 ]))
+
+ buf = new B(5)
+ buf.fill(0)
+ buf.write(text)
+ t.deepEqual(buf, new B([ 0xf0, 0x9f, 0x98, 0xb8, 0x00 ]))
+
+ buf = new B(4)
+ buf.fill(0)
+ buf.write(text)
+ t.deepEqual(buf, new B([ 0xf0, 0x9f, 0x98, 0xb8 ]))
+
+ buf = new B(3)
+ buf.fill(0)
+ buf.write(text)
+ t.deepEqual(buf, new B([ 0x00, 0x00, 0x00 ]))
+
+ buf = new B(2)
+ buf.fill(0)
+ buf.write(text)
+ t.deepEqual(buf, new B([ 0x00, 0x00 ]))
+
+ buf = new B(1)
+ buf.fill(0)
+ buf.write(text)
+ t.deepEqual(buf, new B([ 0x00 ]))
+
+ t.end()
+})
+
+test('handle invalid utf16 code points when encoding to utf8 the way node does', function (t) {
+ var text = 'a' + '\uDE38\uD83D' + 'b'
+
+ var buf = new B(8)
+ buf.fill(0)
+ buf.write(text)
+ t.deepEqual(buf, new B([ 0x61, 0xef, 0xbf, 0xbd, 0xef, 0xbf, 0xbd, 0x62 ]))
+
+ buf = new B(7)
+ buf.fill(0)
+ buf.write(text)
+ t.deepEqual(buf, new B([ 0x61, 0xef, 0xbf, 0xbd, 0xef, 0xbf, 0xbd ]))
+
+ buf = new B(6)
+ buf.fill(0)
+ buf.write(text)
+ t.deepEqual(buf, new B([ 0x61, 0xef, 0xbf, 0xbd, 0x00, 0x00 ]))
+
+ buf = new B(5)
+ buf.fill(0)
+ buf.write(text)
+ t.deepEqual(buf, new B([ 0x61, 0xef, 0xbf, 0xbd, 0x00 ]))
+
+ buf = new B(4)
+ buf.fill(0)
+ buf.write(text)
+ t.deepEqual(buf, new B([ 0x61, 0xef, 0xbf, 0xbd ]))
+
+ buf = new B(3)
+ buf.fill(0)
+ buf.write(text)
+ t.deepEqual(buf, new B([ 0x61, 0x00, 0x00 ]))
+
+ buf = new B(2)
+ buf.fill(0)
+ buf.write(text)
+ t.deepEqual(buf, new B([ 0x61, 0x00 ]))
+
+ buf = new B(1)
+ buf.fill(0)
+ buf.write(text)
+ t.deepEqual(buf, new B([ 0x61 ]))
+
+ t.end()
+})
diff --git a/node_modules/buffer/test/methods.js b/node_modules/buffer/test/methods.js
new file mode 100644
index 0000000..f4bd3f2
--- /dev/null
+++ b/node_modules/buffer/test/methods.js
@@ -0,0 +1,127 @@
+if (process.env.OBJECT_IMPL) global.TYPED_ARRAY_SUPPORT = false
+var B = require('../').Buffer
+var test = require('tape')
+
+test('buffer.toJSON', function (t) {
+ var data = [1, 2, 3, 4]
+ t.deepEqual(
+ new B(data).toJSON(),
+ { type: 'Buffer', data: [ 1, 2, 3, 4 ] }
+ )
+ t.end()
+})
+
+test('buffer.copy', function (t) {
+ // copied from nodejs.org example
+ var buf1 = new B(26)
+ var buf2 = new B(26)
+
+ for (var i = 0; i < 26; i++) {
+ buf1[i] = i + 97 // 97 is ASCII a
+ buf2[i] = 33 // ASCII !
+ }
+
+ buf1.copy(buf2, 8, 16, 20)
+
+ t.equal(
+ buf2.toString('ascii', 0, 25),
+ '!!!!!!!!qrst!!!!!!!!!!!!!'
+ )
+ t.end()
+})
+
+test('test offset returns are correct', function (t) {
+ var b = new B(16)
+ t.equal(4, b.writeUInt32LE(0, 0))
+ t.equal(6, b.writeUInt16LE(0, 4))
+ t.equal(7, b.writeUInt8(0, 6))
+ t.equal(8, b.writeInt8(0, 7))
+ t.equal(16, b.writeDoubleLE(0, 8))
+ t.end()
+})
+
+test('concat() a varying number of buffers', function (t) {
+ var zero = []
+ var one = [ new B('asdf') ]
+ var long = []
+ for (var i = 0; i < 10; i++) {
+ long.push(new B('asdf'))
+ }
+
+ var flatZero = B.concat(zero)
+ var flatOne = B.concat(one)
+ var flatLong = B.concat(long)
+ var flatLongLen = B.concat(long, 40)
+
+ t.equal(flatZero.length, 0)
+ t.equal(flatOne.toString(), 'asdf')
+ t.deepEqual(flatOne, one[0])
+ t.equal(flatLong.toString(), (new Array(10 + 1).join('asdf')))
+ t.equal(flatLongLen.toString(), (new Array(10 + 1).join('asdf')))
+ t.end()
+})
+
+test('fill', function (t) {
+ var b = new B(10)
+ b.fill(2)
+ t.equal(b.toString('hex'), '02020202020202020202')
+ t.end()
+})
+
+test('fill (string)', function (t) {
+ var b = new B(10)
+ b.fill('abc')
+ t.equal(b.toString(), 'abcabcabca')
+ b.fill('է')
+ t.equal(b.toString(), 'էէէէէ')
+ t.end()
+})
+
+test('copy() empty buffer with sourceEnd=0', function (t) {
+ var source = new B([42])
+ var destination = new B([43])
+ source.copy(destination, 0, 0, 0)
+ t.equal(destination.readUInt8(0), 43)
+ t.end()
+})
+
+test('copy() after slice()', function (t) {
+ var source = new B(200)
+ var dest = new B(200)
+ var expected = new B(200)
+ for (var i = 0; i < 200; i++) {
+ source[i] = i
+ dest[i] = 0
+ }
+
+ source.slice(2).copy(dest)
+ source.copy(expected, 0, 2)
+ t.deepEqual(dest, expected)
+ t.end()
+})
+
+test('copy() ascending', function (t) {
+ var b = new B('abcdefghij')
+ b.copy(b, 0, 3, 10)
+ t.equal(b.toString(), 'defghijhij')
+ t.end()
+})
+
+test('copy() descending', function (t) {
+ var b = new B('abcdefghij')
+ b.copy(b, 3, 0, 7)
+ t.equal(b.toString(), 'abcabcdefg')
+ t.end()
+})
+
+test('buffer.slice sets indexes', function (t) {
+ t.equal((new B('hallo')).slice(0, 5).toString(), 'hallo')
+ t.end()
+})
+
+test('buffer.slice out of range', function (t) {
+ t.plan(2)
+ t.equal((new B('hallo')).slice(0, 10).toString(), 'hallo')
+ t.equal((new B('hallo')).slice(10, 2).toString(), '')
+ t.end()
+})
diff --git a/node_modules/buffer/test/node-es6/README.txt b/node_modules/buffer/test/node-es6/README.txt
new file mode 100644
index 0000000..94199ff
--- /dev/null
+++ b/node_modules/buffer/test/node-es6/README.txt
@@ -0,0 +1 @@
+node buffer tests that require ES6 (e.g. "for..of" construct)
diff --git a/node_modules/buffer/test/node-es6/test-buffer-arraybuffer.js b/node_modules/buffer/test/node-es6/test-buffer-arraybuffer.js
new file mode 100644
index 0000000..f0eb57c
--- /dev/null
+++ b/node_modules/buffer/test/node-es6/test-buffer-arraybuffer.js
@@ -0,0 +1,49 @@
+'use strict';
+if (process.env.OBJECT_IMPL) global.TYPED_ARRAY_SUPPORT = false;
+var Buffer = require('../../').Buffer;
+
+var common = {};
+var assert = require('assert');
+
+var Buffer = require('../../').Buffer;
+var LENGTH = 16;
+
+var ab = new ArrayBuffer(LENGTH);
+var dv = new DataView(ab);
+var ui = new Uint8Array(ab);
+var buf = new Buffer(ab);
+
+
+assert.ok(Buffer.isBuffer(buf));
+// For backwards compatibility of old .parent property test that if buf is not
+// a slice then .parent should be undefined.
+assert.equal(buf.parent, undefined);
+assert.equal(buf.buffer, ab);
+assert.equal(buf.length, ab.byteLength);
+
+
+buf.fill(0xC);
+for (var i = 0; i < LENGTH; i++) {
+ assert.equal(ui[i], 0xC);
+ ui[i] = 0xF;
+ assert.equal(buf[i], 0xF);
+}
+
+buf.writeUInt32LE(0xF00, 0);
+buf.writeUInt32BE(0xB47, 4);
+buf.writeDoubleLE(3.1415, 8);
+
+assert.equal(dv.getUint32(0, true), 0xF00);
+assert.equal(dv.getUint32(4), 0xB47);
+assert.equal(dv.getFloat64(8, true), 3.1415);
+
+
+// Now test protecting users from doing stupid things
+
+assert.throws(function() {
+ function AB() { }
+ AB.__proto__ = ArrayBuffer;
+ AB.prototype.__proto__ = ArrayBuffer.prototype;
+ new Buffer(new AB());
+}, TypeError);
+
diff --git a/node_modules/buffer/test/node-es6/test-buffer-iterator.js b/node_modules/buffer/test/node-es6/test-buffer-iterator.js
new file mode 100644
index 0000000..3aa3fbf
--- /dev/null
+++ b/node_modules/buffer/test/node-es6/test-buffer-iterator.js
@@ -0,0 +1,65 @@
+'use strict';
+if (process.env.OBJECT_IMPL) global.TYPED_ARRAY_SUPPORT = false;
+var Buffer = require('../../').Buffer;
+var common = {};
+var assert = require('assert');
+
+var buffer = new Buffer([1, 2, 3, 4, 5]);
+var arr;
+var b;
+
+// buffers should be iterable
+
+arr = [];
+
+for (b of buffer)
+ arr.push(b);
+
+assert.deepEqual(arr, [1, 2, 3, 4, 5]);
+
+
+// buffer iterators should be iterable
+
+arr = [];
+
+for (b of buffer[Symbol.iterator]())
+ arr.push(b);
+
+assert.deepEqual(arr, [1, 2, 3, 4, 5]);
+
+
+// buffer#values() should return iterator for values
+
+arr = [];
+
+for (b of buffer.values())
+ arr.push(b);
+
+assert.deepEqual(arr, [1, 2, 3, 4, 5]);
+
+
+// buffer#keys() should return iterator for keys
+
+arr = [];
+
+for (b of buffer.keys())
+ arr.push(b);
+
+assert.deepEqual(arr, [0, 1, 2, 3, 4]);
+
+
+// buffer#entries() should return iterator for entries
+
+arr = [];
+
+for (var b of buffer.entries())
+ arr.push(b);
+
+assert.deepEqual(arr, [
+ [0, 1],
+ [1, 2],
+ [2, 3],
+ [3, 4],
+ [4, 5]
+]);
+
diff --git a/node_modules/buffer/test/node/README.txt b/node_modules/buffer/test/node/README.txt
new file mode 100644
index 0000000..a0fd927
--- /dev/null
+++ b/node_modules/buffer/test/node/README.txt
@@ -0,0 +1 @@
+node core buffer tests
diff --git a/node_modules/buffer/test/node/test-buffer-ascii.js b/node_modules/buffer/test/node/test-buffer-ascii.js
new file mode 100644
index 0000000..633a677
--- /dev/null
+++ b/node_modules/buffer/test/node/test-buffer-ascii.js
@@ -0,0 +1,28 @@
+'use strict';
+if (process.env.OBJECT_IMPL) global.TYPED_ARRAY_SUPPORT = false;
+var Buffer = require('../../').Buffer;
+var common = {};
+var assert = require('assert');
+
+// ASCII conversion in node.js simply masks off the high bits,
+// it doesn't do transliteration.
+assert.equal(Buffer('hérité').toString('ascii'), 'hC)ritC)');
+
+// 71 characters, 78 bytes. The ’ character is a triple-byte sequence.
+var input = 'C’est, graphiquement, la réunion d’un accent aigu ' +
+ 'et d’un accent grave.';
+
+var expected = 'Cb\u0000\u0019est, graphiquement, la rC)union ' +
+ 'db\u0000\u0019un accent aigu et db\u0000\u0019un ' +
+ 'accent grave.';
+
+var buf = Buffer(input);
+
+for (var i = 0; i < expected.length; ++i) {
+ assert.equal(buf.slice(i).toString('ascii'), expected.slice(i));
+
+ // Skip remainder of multi-byte sequence.
+ if (input.charCodeAt(i) > 65535) ++i;
+ if (input.charCodeAt(i) > 127) ++i;
+}
+
diff --git a/node_modules/buffer/test/node/test-buffer-bytelength.js b/node_modules/buffer/test/node/test-buffer-bytelength.js
new file mode 100644
index 0000000..d63922e
--- /dev/null
+++ b/node_modules/buffer/test/node/test-buffer-bytelength.js
@@ -0,0 +1,49 @@
+'use strict';
+if (process.env.OBJECT_IMPL) global.TYPED_ARRAY_SUPPORT = false;
+var Buffer = require('../../').Buffer;
+
+var common = {};
+var assert = require('assert');
+var Buffer = require('../../').Buffer;
+
+// coerce values to string
+assert.equal(Buffer.byteLength(32, 'raw'), 2);
+assert.equal(Buffer.byteLength(NaN, 'utf8'), 3);
+assert.equal(Buffer.byteLength({}, 'raws'), 15);
+assert.equal(Buffer.byteLength(), 9);
+
+// special case: zero length string
+assert.equal(Buffer.byteLength('', 'ascii'), 0);
+assert.equal(Buffer.byteLength('', 'HeX'), 0);
+
+// utf8
+assert.equal(Buffer.byteLength('∑éllö wørl∂!', 'utf-8'), 19);
+assert.equal(Buffer.byteLength('κλμνξο', 'utf8'), 12);
+assert.equal(Buffer.byteLength('挵挶挷挸挹', 'utf-8'), 15);
+assert.equal(Buffer.byteLength('𠝹𠱓𠱸', 'UTF8'), 12);
+// without an encoding, utf8 should be assumed
+assert.equal(Buffer.byteLength('hey there'), 9);
+assert.equal(Buffer.byteLength('𠱸挶νξ#xx :)'), 17);
+assert.equal(Buffer.byteLength('hello world', ''), 11);
+// it should also be assumed with unrecognized encoding
+assert.equal(Buffer.byteLength('hello world', 'abc'), 11);
+assert.equal(Buffer.byteLength('ßœ∑≈', 'unkn0wn enc0ding'), 10);
+
+// base64
+assert.equal(Buffer.byteLength('aGVsbG8gd29ybGQ=', 'base64'), 11);
+assert.equal(Buffer.byteLength('bm9kZS5qcyByb2NrcyE=', 'base64'), 14);
+assert.equal(Buffer.byteLength('aGkk', 'base64'), 3);
+assert.equal(Buffer.byteLength('bHNrZGZsa3NqZmtsc2xrZmFqc2RsZmtqcw==',
+ 'base64'), 25);
+// special padding
+assert.equal(Buffer.byteLength('aaa=', 'base64'), 2);
+assert.equal(Buffer.byteLength('aaaa==', 'base64'), 3);
+
+assert.equal(Buffer.byteLength('Il était tué'), 14);
+assert.equal(Buffer.byteLength('Il était tué', 'utf8'), 14);
+assert.equal(Buffer.byteLength('Il était tué', 'ascii'), 12);
+assert.equal(Buffer.byteLength('Il était tué', 'binary'), 12);
+['ucs2', 'ucs-2', 'utf16le', 'utf-16le'].forEach(function(encoding) {
+ assert.equal(24, Buffer.byteLength('Il était tué', encoding));
+});
+
diff --git a/node_modules/buffer/test/node/test-buffer-concat.js b/node_modules/buffer/test/node/test-buffer-concat.js
new file mode 100644
index 0000000..f6b60ae
--- /dev/null
+++ b/node_modules/buffer/test/node/test-buffer-concat.js
@@ -0,0 +1,30 @@
+'use strict';
+if (process.env.OBJECT_IMPL) global.TYPED_ARRAY_SUPPORT = false;
+var Buffer = require('../../').Buffer;
+var common = {};
+var assert = require('assert');
+
+var zero = [];
+var one = [ new Buffer('asdf') ];
+var long = [];
+for (var i = 0; i < 10; i++) long.push(new Buffer('asdf'));
+
+var flatZero = Buffer.concat(zero);
+var flatOne = Buffer.concat(one);
+var flatLong = Buffer.concat(long);
+var flatLongLen = Buffer.concat(long, 40);
+
+assert(flatZero.length === 0);
+assert(flatOne.toString() === 'asdf');
+// A special case where concat used to return the first item,
+// if the length is one. This check is to make sure that we don't do that.
+assert(flatOne !== one[0]);
+assert(flatLong.toString() === (new Array(10 + 1).join('asdf')));
+assert(flatLongLen.toString() === (new Array(10 + 1).join('asdf')));
+
+assert.throws(function() {
+ Buffer.concat([42]);
+}, TypeError);
+
+// console.log('ok');
+
diff --git a/node_modules/buffer/test/node/test-buffer-indexof.js b/node_modules/buffer/test/node/test-buffer-indexof.js
new file mode 100644
index 0000000..283b9c8
--- /dev/null
+++ b/node_modules/buffer/test/node/test-buffer-indexof.js
@@ -0,0 +1,79 @@
+'use strict';
+if (process.env.OBJECT_IMPL) global.TYPED_ARRAY_SUPPORT = false;
+var Buffer = require('../../').Buffer;
+var common = {};
+var assert = require('assert');
+
+var Buffer = require('../../').Buffer;
+
+var b = new Buffer('abcdef');
+var buf_a = new Buffer('a');
+var buf_bc = new Buffer('bc');
+var buf_f = new Buffer('f');
+var buf_z = new Buffer('z');
+var buf_empty = new Buffer('');
+
+assert.equal(b.indexOf('a'), 0);
+assert.equal(b.indexOf('a', 1), -1);
+assert.equal(b.indexOf('a', -1), -1);
+assert.equal(b.indexOf('a', -4), -1);
+assert.equal(b.indexOf('a', -b.length), 0);
+assert.equal(b.indexOf('a', NaN), 0);
+assert.equal(b.indexOf('a', -Infinity), 0);
+assert.equal(b.indexOf('a', Infinity), -1);
+assert.equal(b.indexOf('bc'), 1);
+assert.equal(b.indexOf('bc', 2), -1);
+assert.equal(b.indexOf('bc', -1), -1);
+assert.equal(b.indexOf('bc', -3), -1);
+assert.equal(b.indexOf('bc', -5), 1);
+assert.equal(b.indexOf('bc', NaN), 1);
+assert.equal(b.indexOf('bc', -Infinity), 1);
+assert.equal(b.indexOf('bc', Infinity), -1);
+assert.equal(b.indexOf('f'), b.length - 1);
+assert.equal(b.indexOf('z'), -1);
+assert.equal(b.indexOf(''), -1);
+assert.equal(b.indexOf('', 1), -1);
+assert.equal(b.indexOf('', b.length + 1), -1);
+assert.equal(b.indexOf('', Infinity), -1);
+assert.equal(b.indexOf(buf_a), 0);
+assert.equal(b.indexOf(buf_a, 1), -1);
+assert.equal(b.indexOf(buf_a, -1), -1);
+assert.equal(b.indexOf(buf_a, -4), -1);
+assert.equal(b.indexOf(buf_a, -b.length), 0);
+assert.equal(b.indexOf(buf_a, NaN), 0);
+assert.equal(b.indexOf(buf_a, -Infinity), 0);
+assert.equal(b.indexOf(buf_a, Infinity), -1);
+assert.equal(b.indexOf(buf_bc), 1);
+assert.equal(b.indexOf(buf_bc, 2), -1);
+assert.equal(b.indexOf(buf_bc, -1), -1);
+assert.equal(b.indexOf(buf_bc, -3), -1);
+assert.equal(b.indexOf(buf_bc, -5), 1);
+assert.equal(b.indexOf(buf_bc, NaN), 1);
+assert.equal(b.indexOf(buf_bc, -Infinity), 1);
+assert.equal(b.indexOf(buf_bc, Infinity), -1);
+assert.equal(b.indexOf(buf_f), b.length - 1);
+assert.equal(b.indexOf(buf_z), -1);
+assert.equal(b.indexOf(buf_empty), -1);
+assert.equal(b.indexOf(buf_empty, 1), -1);
+assert.equal(b.indexOf(buf_empty, b.length + 1), -1);
+assert.equal(b.indexOf(buf_empty, Infinity), -1);
+assert.equal(b.indexOf(0x61), 0);
+assert.equal(b.indexOf(0x61, 1), -1);
+assert.equal(b.indexOf(0x61, -1), -1);
+assert.equal(b.indexOf(0x61, -4), -1);
+assert.equal(b.indexOf(0x61, -b.length), 0);
+assert.equal(b.indexOf(0x61, NaN), 0);
+assert.equal(b.indexOf(0x61, -Infinity), 0);
+assert.equal(b.indexOf(0x61, Infinity), -1);
+assert.equal(b.indexOf(0x0), -1);
+
+assert.throws(function() {
+ b.indexOf(function() { });
+});
+assert.throws(function() {
+ b.indexOf({});
+});
+assert.throws(function() {
+ b.indexOf([]);
+});
+
diff --git a/node_modules/buffer/test/node/test-buffer-inspect.js b/node_modules/buffer/test/node/test-buffer-inspect.js
new file mode 100644
index 0000000..719444f
--- /dev/null
+++ b/node_modules/buffer/test/node/test-buffer-inspect.js
@@ -0,0 +1,41 @@
+'use strict';
+if (process.env.OBJECT_IMPL) global.TYPED_ARRAY_SUPPORT = false;
+var Buffer = require('../../').Buffer;
+var common = {};
+var assert = require('assert');
+
+var util = require('util');
+
+var buffer = require('../../');
+
+buffer.INSPECT_MAX_BYTES = 2;
+
+var b = new Buffer(4);
+b.fill('1234');
+
+var s = new buffer.SlowBuffer(4);
+s.fill('1234');
+
+var expected = '';
+
+assert.strictEqual(util.inspect(b), expected);
+assert.strictEqual(util.inspect(s), expected);
+
+b = new Buffer(2);
+b.fill('12');
+
+s = new buffer.SlowBuffer(2);
+s.fill('12');
+
+expected = '';
+
+assert.strictEqual(util.inspect(b), expected);
+assert.strictEqual(util.inspect(s), expected);
+
+buffer.INSPECT_MAX_BYTES = Infinity;
+
+assert.doesNotThrow(function() {
+ assert.strictEqual(util.inspect(b), expected);
+ assert.strictEqual(util.inspect(s), expected);
+});
+
diff --git a/node_modules/buffer/test/node/test-buffer.js b/node_modules/buffer/test/node/test-buffer.js
new file mode 100644
index 0000000..d6468f6
--- /dev/null
+++ b/node_modules/buffer/test/node/test-buffer.js
@@ -0,0 +1,1194 @@
+'use strict';
+if (process.env.OBJECT_IMPL) global.TYPED_ARRAY_SUPPORT = false;
+var Buffer = require('../../').Buffer;
+var common = {};
+var assert = require('assert');
+
+var Buffer = require('../../').Buffer;
+var SlowBuffer = require('../../').SlowBuffer;
+
+// counter to ensure unique value is always copied
+var cntr = 0;
+
+var b = Buffer(1024); // safe constructor
+
+// console.log('b.length == %d', b.length);
+assert.strictEqual(1024, b.length);
+
+b[0] = 255;
+assert.strictEqual(b[0], 255);
+
+for (var i = 0; i < 1024; i++) {
+ b[i] = i % 256;
+}
+
+for (var i = 0; i < 1024; i++) {
+ assert.strictEqual(i % 256, b[i]);
+}
+
+var c = new Buffer(512);
+// console.log('c.length == %d', c.length);
+assert.strictEqual(512, c.length);
+
+// First check Buffer#fill() works as expected.
+
+assert.throws(function() {
+ Buffer(8).fill('a', -1);
+});
+
+assert.throws(function() {
+ Buffer(8).fill('a', 0, 9);
+});
+
+// Make sure this doesn't hang indefinitely.
+Buffer(8).fill('');
+
+var buf = new Buffer(64);
+buf.fill(10);
+for (var i = 0; i < buf.length; i++)
+ assert.equal(buf[i], 10);
+
+buf.fill(11, 0, buf.length >> 1);
+for (var i = 0; i < buf.length >> 1; i++)
+ assert.equal(buf[i], 11);
+for (var i = (buf.length >> 1) + 1; i < buf.length; i++)
+ assert.equal(buf[i], 10);
+
+buf.fill('h');
+for (var i = 0; i < buf.length; i++)
+ assert.equal('h'.charCodeAt(0), buf[i]);
+
+buf.fill(0);
+for (var i = 0; i < buf.length; i++)
+ assert.equal(0, buf[i]);
+
+buf.fill(null);
+for (var i = 0; i < buf.length; i++)
+ assert.equal(0, buf[i]);
+
+buf.fill(1, 16, 32);
+for (var i = 0; i < 16; i++)
+ assert.equal(0, buf[i]);
+for (; i < 32; i++)
+ assert.equal(1, buf[i]);
+for (; i < buf.length; i++)
+ assert.equal(0, buf[i]);
+
+var buf = new Buffer(10);
+buf.fill('abc');
+assert.equal(buf.toString(), 'abcabcabca');
+buf.fill('է');
+assert.equal(buf.toString(), 'էէէէէ');
+
+// copy 512 bytes, from 0 to 512.
+b.fill(++cntr);
+c.fill(++cntr);
+var copied = b.copy(c, 0, 0, 512);
+// console.log('copied %d bytes from b into c', copied);
+assert.strictEqual(512, copied);
+for (var i = 0; i < c.length; i++) {
+ assert.strictEqual(b[i], c[i]);
+}
+
+// copy c into b, without specifying sourceEnd
+b.fill(++cntr);
+c.fill(++cntr);
+var copied = c.copy(b, 0, 0);
+// console.log('copied %d bytes from c into b w/o sourceEnd', copied);
+assert.strictEqual(c.length, copied);
+for (var i = 0; i < c.length; i++) {
+ assert.strictEqual(c[i], b[i]);
+}
+
+// copy c into b, without specifying sourceStart
+b.fill(++cntr);
+c.fill(++cntr);
+var copied = c.copy(b, 0);
+// console.log('copied %d bytes from c into b w/o sourceStart', copied);
+assert.strictEqual(c.length, copied);
+for (var i = 0; i < c.length; i++) {
+ assert.strictEqual(c[i], b[i]);
+}
+
+// copy longer buffer b to shorter c without targetStart
+b.fill(++cntr);
+c.fill(++cntr);
+var copied = b.copy(c);
+// console.log('copied %d bytes from b into c w/o targetStart', copied);
+assert.strictEqual(c.length, copied);
+for (var i = 0; i < c.length; i++) {
+ assert.strictEqual(b[i], c[i]);
+}
+
+// copy starting near end of b to c
+b.fill(++cntr);
+c.fill(++cntr);
+var copied = b.copy(c, 0, b.length - Math.floor(c.length / 2));
+// console.log('copied %d bytes from end of b into beginning of c', copied);
+assert.strictEqual(Math.floor(c.length / 2), copied);
+for (var i = 0; i < Math.floor(c.length / 2); i++) {
+ assert.strictEqual(b[b.length - Math.floor(c.length / 2) + i], c[i]);
+}
+for (var i = Math.floor(c.length / 2) + 1; i < c.length; i++) {
+ assert.strictEqual(c[c.length - 1], c[i]);
+}
+
+// try to copy 513 bytes, and check we don't overrun c
+b.fill(++cntr);
+c.fill(++cntr);
+var copied = b.copy(c, 0, 0, 513);
+// console.log('copied %d bytes from b trying to overrun c', copied);
+assert.strictEqual(c.length, copied);
+for (var i = 0; i < c.length; i++) {
+ assert.strictEqual(b[i], c[i]);
+}
+
+// copy 768 bytes from b into b
+b.fill(++cntr);
+b.fill(++cntr, 256);
+var copied = b.copy(b, 0, 256, 1024);
+// console.log('copied %d bytes from b into b', copied);
+assert.strictEqual(768, copied);
+for (var i = 0; i < b.length; i++) {
+ assert.strictEqual(cntr, b[i]);
+}
+
+// copy string longer than buffer length (failure will segfault)
+var bb = new Buffer(10);
+bb.fill('hello crazy world');
+
+
+var caught_error = null;
+
+// try to copy from before the beginning of b
+caught_error = null;
+try {
+ var copied = b.copy(c, 0, 100, 10);
+} catch (err) {
+ caught_error = err;
+}
+
+// copy throws at negative sourceStart
+assert.throws(function() {
+ Buffer(5).copy(Buffer(5), 0, -1);
+}, RangeError);
+
+// check sourceEnd resets to targetEnd if former is greater than the latter
+b.fill(++cntr);
+c.fill(++cntr);
+var copied = b.copy(c, 0, 0, 1025);
+// console.log('copied %d bytes from b into c', copied);
+for (var i = 0; i < c.length; i++) {
+ assert.strictEqual(b[i], c[i]);
+}
+
+// throw with negative sourceEnd
+// console.log('test copy at negative sourceEnd');
+assert.throws(function() {
+ b.copy(c, 0, 0, -1);
+}, RangeError);
+
+// when sourceStart is greater than sourceEnd, zero copied
+assert.equal(b.copy(c, 0, 100, 10), 0);
+
+// when targetStart > targetLength, zero copied
+assert.equal(b.copy(c, 512, 0, 10), 0);
+
+var caught_error;
+
+// invalid encoding for Buffer.toString
+caught_error = null;
+try {
+ var copied = b.toString('invalid');
+} catch (err) {
+ caught_error = err;
+}
+assert.strictEqual('Unknown encoding: invalid', caught_error.message);
+
+// invalid encoding for Buffer.write
+caught_error = null;
+try {
+ var copied = b.write('test string', 0, 5, 'invalid');
+} catch (err) {
+ caught_error = err;
+}
+assert.strictEqual('Unknown encoding: invalid', caught_error.message);
+
+// try to create 0-length buffers
+new Buffer('');
+new Buffer('', 'ascii');
+new Buffer('', 'binary');
+new Buffer(0);
+
+// try to write a 0-length string beyond the end of b
+assert.throws(function() {
+ b.write('', 2048);
+}, RangeError);
+
+// throw when writing to negative offset
+assert.throws(function() {
+ b.write('a', -1);
+}, RangeError);
+
+// throw when writing past bounds from the pool
+assert.throws(function() {
+ b.write('a', 2048);
+}, RangeError);
+
+// throw when writing to negative offset
+assert.throws(function() {
+ b.write('a', -1);
+}, RangeError);
+
+// try to copy 0 bytes worth of data into an empty buffer
+b.copy(new Buffer(0), 0, 0, 0);
+
+// try to copy 0 bytes past the end of the target buffer
+b.copy(new Buffer(0), 1, 1, 1);
+b.copy(new Buffer(1), 1, 1, 1);
+
+// try to copy 0 bytes from past the end of the source buffer
+b.copy(new Buffer(1), 0, 2048, 2048);
+
+// try to toString() a 0-length slice of a buffer, both within and without the
+// valid buffer range
+assert.equal(new Buffer('abc').toString('ascii', 0, 0), '');
+assert.equal(new Buffer('abc').toString('ascii', -100, -100), '');
+assert.equal(new Buffer('abc').toString('ascii', 100, 100), '');
+
+// try toString() with a object as a encoding
+assert.equal(new Buffer('abc').toString({toString: function() {
+ return 'ascii';
+}}), 'abc');
+
+// testing for smart defaults and ability to pass string values as offset
+var writeTest = new Buffer('abcdes');
+writeTest.write('n', 'ascii');
+writeTest.write('o', 'ascii', '1');
+writeTest.write('d', '2', 'ascii');
+writeTest.write('e', 3, 'ascii');
+writeTest.write('j', 'ascii', 4);
+assert.equal(writeTest.toString(), 'nodejs');
+
+// ASCII slice test
+
+var asciiString = 'hello world';
+var offset = 100;
+
+for (var i = 0; i < asciiString.length; i++) {
+ b[i] = asciiString.charCodeAt(i);
+}
+var asciiSlice = b.toString('ascii', 0, asciiString.length);
+assert.equal(asciiString, asciiSlice);
+
+var written = b.write(asciiString, offset, 'ascii');
+assert.equal(asciiString.length, written);
+var asciiSlice = b.toString('ascii', offset, offset + asciiString.length);
+assert.equal(asciiString, asciiSlice);
+
+var sliceA = b.slice(offset, offset + asciiString.length);
+var sliceB = b.slice(offset, offset + asciiString.length);
+for (var i = 0; i < asciiString.length; i++) {
+ assert.equal(sliceA[i], sliceB[i]);
+}
+
+// UTF-8 slice test
+
+var utf8String = '¡hέlló wôrld!';
+var offset = 100;
+
+b.write(utf8String, 0, Buffer.byteLength(utf8String), 'utf8');
+var utf8Slice = b.toString('utf8', 0, Buffer.byteLength(utf8String));
+assert.equal(utf8String, utf8Slice);
+
+var written = b.write(utf8String, offset, 'utf8');
+assert.equal(Buffer.byteLength(utf8String), written);
+utf8Slice = b.toString('utf8', offset, offset + Buffer.byteLength(utf8String));
+assert.equal(utf8String, utf8Slice);
+
+var sliceA = b.slice(offset, offset + Buffer.byteLength(utf8String));
+var sliceB = b.slice(offset, offset + Buffer.byteLength(utf8String));
+for (var i = 0; i < Buffer.byteLength(utf8String); i++) {
+ assert.equal(sliceA[i], sliceB[i]);
+}
+
+var slice = b.slice(100, 150);
+assert.equal(50, slice.length);
+for (var i = 0; i < 50; i++) {
+ assert.equal(b[100 + i], slice[i]);
+}
+
+
+// make sure only top level parent propagates from allocPool
+var b = new Buffer(5);
+var c = b.slice(0, 4);
+var d = c.slice(0, 2);
+assert.equal(b.parent, c.parent);
+assert.equal(b.parent, d.parent);
+
+// also from a non-pooled instance
+var b = new SlowBuffer(5);
+var c = b.slice(0, 4);
+var d = c.slice(0, 2);
+
+
+// Bug regression test
+var testValue = '\u00F6\u65E5\u672C\u8A9E'; // ö日本語
+var buffer = new Buffer(32);
+var size = buffer.write(testValue, 0, 'utf8');
+// console.log('bytes written to buffer: ' + size);
+var slice = buffer.toString('utf8', 0, size);
+assert.equal(slice, testValue);
+
+
+// Test triple slice
+var a = new Buffer(8);
+for (var i = 0; i < 8; i++) a[i] = i;
+var b = a.slice(4, 8);
+assert.equal(4, b[0]);
+assert.equal(5, b[1]);
+assert.equal(6, b[2]);
+assert.equal(7, b[3]);
+var c = b.slice(2, 4);
+assert.equal(6, c[0]);
+assert.equal(7, c[1]);
+
+
+var d = new Buffer([23, 42, 255]);
+assert.equal(d.length, 3);
+assert.equal(d[0], 23);
+assert.equal(d[1], 42);
+assert.equal(d[2], 255);
+assert.deepEqual(d, new Buffer(d));
+
+var e = new Buffer('über');
+// console.error('uber: \'%s\'', e.toString());
+assert.deepEqual(e, new Buffer([195, 188, 98, 101, 114]));
+
+var f = new Buffer('über', 'ascii');
+// console.error('f.length: %d (should be 4)', f.length);
+assert.deepEqual(f, new Buffer([252, 98, 101, 114]));
+
+['ucs2', 'ucs-2', 'utf16le', 'utf-16le'].forEach(function(encoding) {
+ var f = new Buffer('über', encoding);
+// console.error('f.length: %d (should be 8)', f.length);
+ assert.deepEqual(f, new Buffer([252, 0, 98, 0, 101, 0, 114, 0]));
+
+ var f = new Buffer('привет', encoding);
+// console.error('f.length: %d (should be 12)', f.length);
+ assert.deepEqual(f, new Buffer([63, 4, 64, 4, 56, 4, 50, 4, 53, 4, 66, 4]));
+ assert.equal(f.toString(encoding), 'привет');
+
+ var f = new Buffer([0, 0, 0, 0, 0]);
+ assert.equal(f.length, 5);
+ var size = f.write('あいうえお', encoding);
+// console.error('bytes written to buffer: %d (should be 4)', size);
+ assert.equal(size, 4);
+ assert.deepEqual(f, new Buffer([0x42, 0x30, 0x44, 0x30, 0x00]));
+});
+
+var f = new Buffer('\uD83D\uDC4D', 'utf-16le'); // THUMBS UP SIGN (U+1F44D)
+assert.equal(f.length, 4);
+assert.deepEqual(f, new Buffer('3DD84DDC', 'hex'));
+
+
+var arrayIsh = {0: 0, 1: 1, 2: 2, 3: 3, length: 4};
+var g = new Buffer(arrayIsh);
+assert.deepEqual(g, new Buffer([0, 1, 2, 3]));
+var strArrayIsh = {0: '0', 1: '1', 2: '2', 3: '3', length: 4};
+g = new Buffer(strArrayIsh);
+assert.deepEqual(g, new Buffer([0, 1, 2, 3]));
+
+
+//
+// Test toString('base64')
+//
+assert.equal('TWFu', (new Buffer('Man')).toString('base64'));
+
+// test that regular and URL-safe base64 both work
+var expected = [0xff, 0xff, 0xbe, 0xff, 0xef, 0xbf, 0xfb, 0xef, 0xff];
+assert.deepEqual(Buffer('//++/++/++//', 'base64'), Buffer(expected));
+assert.deepEqual(Buffer('__--_--_--__', 'base64'), Buffer(expected));
+
+// big example
+var quote = 'Man is distinguished, not only by his reason, but by this ' +
+ 'singular passion from other animals, which is a lust ' +
+ 'of the mind, that by a perseverance of delight in the continued ' +
+ 'and indefatigable generation of knowledge, exceeds the short ' +
+ 'vehemence of any carnal pleasure.';
+var expected = 'TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24s' +
+ 'IGJ1dCBieSB0aGlzIHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlciBhbmltY' +
+ 'WxzLCB3aGljaCBpcyBhIGx1c3Qgb2YgdGhlIG1pbmQsIHRoYXQgYnkgYSBwZX' +
+ 'JzZXZlcmFuY2Ugb2YgZGVsaWdodCBpbiB0aGUgY29udGludWVkIGFuZCBpbmR' +
+ 'lZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZGdlLCBleGNlZWRzIHRo' +
+ 'ZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwbGVhc3VyZS4=';
+assert.equal(expected, (new Buffer(quote)).toString('base64'));
+
+
+b = new Buffer(1024);
+var bytesWritten = b.write(expected, 0, 'base64');
+assert.equal(quote.length, bytesWritten);
+assert.equal(quote, b.toString('ascii', 0, quote.length));
+
+// check that the base64 decoder ignores whitespace
+var expectedWhite = expected.slice(0, 60) + ' \n' +
+ expected.slice(60, 120) + ' \n' +
+ expected.slice(120, 180) + ' \n' +
+ expected.slice(180, 240) + ' \n' +
+ expected.slice(240, 300) + '\n' +
+ expected.slice(300, 360) + '\n';
+b = new Buffer(1024);
+bytesWritten = b.write(expectedWhite, 0, 'base64');
+assert.equal(quote.length, bytesWritten);
+assert.equal(quote, b.toString('ascii', 0, quote.length));
+
+// check that the base64 decoder on the constructor works
+// even in the presence of whitespace.
+b = new Buffer(expectedWhite, 'base64');
+assert.equal(quote.length, b.length);
+assert.equal(quote, b.toString('ascii', 0, quote.length));
+
+// check that the base64 decoder ignores illegal chars
+var expectedIllegal = expected.slice(0, 60) + ' \x80' +
+ expected.slice(60, 120) + ' \xff' +
+ expected.slice(120, 180) + ' \x00' +
+ expected.slice(180, 240) + ' \x98' +
+ expected.slice(240, 300) + '\x03' +
+ expected.slice(300, 360);
+b = new Buffer(expectedIllegal, 'base64');
+assert.equal(quote.length, b.length);
+assert.equal(quote, b.toString('ascii', 0, quote.length));
+
+
+assert.equal(new Buffer('', 'base64').toString(), '');
+assert.equal(new Buffer('K', 'base64').toString(), '');
+
+// multiple-of-4 with padding
+assert.equal(new Buffer('Kg==', 'base64').toString(), '*');
+assert.equal(new Buffer('Kio=', 'base64').toString(), '**');
+assert.equal(new Buffer('Kioq', 'base64').toString(), '***');
+assert.equal(new Buffer('KioqKg==', 'base64').toString(), '****');
+assert.equal(new Buffer('KioqKio=', 'base64').toString(), '*****');
+assert.equal(new Buffer('KioqKioq', 'base64').toString(), '******');
+assert.equal(new Buffer('KioqKioqKg==', 'base64').toString(), '*******');
+assert.equal(new Buffer('KioqKioqKio=', 'base64').toString(), '********');
+assert.equal(new Buffer('KioqKioqKioq', 'base64').toString(), '*********');
+assert.equal(new Buffer('KioqKioqKioqKg==', 'base64').toString(),
+ '**********');
+assert.equal(new Buffer('KioqKioqKioqKio=', 'base64').toString(),
+ '***********');
+assert.equal(new Buffer('KioqKioqKioqKioq', 'base64').toString(),
+ '************');
+assert.equal(new Buffer('KioqKioqKioqKioqKg==', 'base64').toString(),
+ '*************');
+assert.equal(new Buffer('KioqKioqKioqKioqKio=', 'base64').toString(),
+ '**************');
+assert.equal(new Buffer('KioqKioqKioqKioqKioq', 'base64').toString(),
+ '***************');
+assert.equal(new Buffer('KioqKioqKioqKioqKioqKg==', 'base64').toString(),
+ '****************');
+assert.equal(new Buffer('KioqKioqKioqKioqKioqKio=', 'base64').toString(),
+ '*****************');
+assert.equal(new Buffer('KioqKioqKioqKioqKioqKioq', 'base64').toString(),
+ '******************');
+assert.equal(new Buffer('KioqKioqKioqKioqKioqKioqKg==', 'base64').toString(),
+ '*******************');
+assert.equal(new Buffer('KioqKioqKioqKioqKioqKioqKio=', 'base64').toString(),
+ '********************');
+
+// no padding, not a multiple of 4
+assert.equal(new Buffer('Kg', 'base64').toString(), '*');
+assert.equal(new Buffer('Kio', 'base64').toString(), '**');
+assert.equal(new Buffer('KioqKg', 'base64').toString(), '****');
+assert.equal(new Buffer('KioqKio', 'base64').toString(), '*****');
+assert.equal(new Buffer('KioqKioqKg', 'base64').toString(), '*******');
+assert.equal(new Buffer('KioqKioqKio', 'base64').toString(), '********');
+assert.equal(new Buffer('KioqKioqKioqKg', 'base64').toString(), '**********');
+assert.equal(new Buffer('KioqKioqKioqKio', 'base64').toString(), '***********');
+assert.equal(new Buffer('KioqKioqKioqKioqKg', 'base64').toString(),
+ '*************');
+assert.equal(new Buffer('KioqKioqKioqKioqKio', 'base64').toString(),
+ '**************');
+assert.equal(new Buffer('KioqKioqKioqKioqKioqKg', 'base64').toString(),
+ '****************');
+assert.equal(new Buffer('KioqKioqKioqKioqKioqKio', 'base64').toString(),
+ '*****************');
+assert.equal(new Buffer('KioqKioqKioqKioqKioqKioqKg', 'base64').toString(),
+ '*******************');
+assert.equal(new Buffer('KioqKioqKioqKioqKioqKioqKio', 'base64').toString(),
+ '********************');
+
+// handle padding graciously, multiple-of-4 or not
+assert.equal(new Buffer('72INjkR5fchcxk9+VgdGPFJDxUBFR5/rMFsghgxADiw==',
+ 'base64').length, 32);
+assert.equal(new Buffer('72INjkR5fchcxk9+VgdGPFJDxUBFR5/rMFsghgxADiw=',
+ 'base64').length, 32);
+assert.equal(new Buffer('72INjkR5fchcxk9+VgdGPFJDxUBFR5/rMFsghgxADiw',
+ 'base64').length, 32);
+assert.equal(new Buffer('w69jACy6BgZmaFvv96HG6MYksWytuZu3T1FvGnulPg==',
+ 'base64').length, 31);
+assert.equal(new Buffer('w69jACy6BgZmaFvv96HG6MYksWytuZu3T1FvGnulPg=',
+ 'base64').length, 31);
+assert.equal(new Buffer('w69jACy6BgZmaFvv96HG6MYksWytuZu3T1FvGnulPg',
+ 'base64').length, 31);
+
+// This string encodes single '.' character in UTF-16
+var dot = new Buffer('//4uAA==', 'base64');
+assert.equal(dot[0], 0xff);
+assert.equal(dot[1], 0xfe);
+assert.equal(dot[2], 0x2e);
+assert.equal(dot[3], 0x00);
+assert.equal(dot.toString('base64'), '//4uAA==');
+
+// Writing base64 at a position > 0 should not mangle the result.
+//
+// https://github.com/joyent/node/issues/402
+var segments = ['TWFkbmVzcz8h', 'IFRoaXM=', 'IGlz', 'IG5vZGUuanMh'];
+var buf = new Buffer(64);
+var pos = 0;
+
+for (var i = 0; i < segments.length; ++i) {
+ pos += b.write(segments[i], pos, 'base64');
+}
+assert.equal(b.toString('binary', 0, pos), 'Madness?! This is node.js!');
+
+// Creating buffers larger than pool size.
+var l = Buffer.poolSize + 5;
+var s = '';
+for (i = 0; i < l; i++) {
+ s += 'h';
+}
+
+var b = new Buffer(s);
+
+for (i = 0; i < l; i++) {
+ assert.equal('h'.charCodeAt(0), b[i]);
+}
+
+var sb = b.toString();
+assert.equal(sb.length, s.length);
+assert.equal(sb, s);
+
+
+// Single argument slice
+b = new Buffer('abcde');
+assert.equal('bcde', b.slice(1).toString());
+
+// slice(0,0).length === 0
+assert.equal(0, Buffer('hello').slice(0, 0).length);
+
+// test hex toString
+// console.log('Create hex string from buffer');
+var hexb = new Buffer(256);
+for (var i = 0; i < 256; i++) {
+ hexb[i] = i;
+}
+var hexStr = hexb.toString('hex');
+assert.equal(hexStr,
+ '000102030405060708090a0b0c0d0e0f' +
+ '101112131415161718191a1b1c1d1e1f' +
+ '202122232425262728292a2b2c2d2e2f' +
+ '303132333435363738393a3b3c3d3e3f' +
+ '404142434445464748494a4b4c4d4e4f' +
+ '505152535455565758595a5b5c5d5e5f' +
+ '606162636465666768696a6b6c6d6e6f' +
+ '707172737475767778797a7b7c7d7e7f' +
+ '808182838485868788898a8b8c8d8e8f' +
+ '909192939495969798999a9b9c9d9e9f' +
+ 'a0a1a2a3a4a5a6a7a8a9aaabacadaeaf' +
+ 'b0b1b2b3b4b5b6b7b8b9babbbcbdbebf' +
+ 'c0c1c2c3c4c5c6c7c8c9cacbcccdcecf' +
+ 'd0d1d2d3d4d5d6d7d8d9dadbdcdddedf' +
+ 'e0e1e2e3e4e5e6e7e8e9eaebecedeeef' +
+ 'f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff');
+
+// console.log('Create buffer from hex string');
+var hexb2 = new Buffer(hexStr, 'hex');
+for (var i = 0; i < 256; i++) {
+ assert.equal(hexb2[i], hexb[i]);
+}
+
+// test an invalid slice end.
+// console.log('Try to slice off the end of the buffer');
+var b = new Buffer([1, 2, 3, 4, 5]);
+var b2 = b.toString('hex', 1, 10000);
+var b3 = b.toString('hex', 1, 5);
+var b4 = b.toString('hex', 1);
+assert.equal(b2, b3);
+assert.equal(b2, b4);
+
+
+function buildBuffer(data) {
+ if (Array.isArray(data)) {
+ var buffer = new Buffer(data.length);
+ data.forEach(function(v, k) {
+ buffer[k] = v;
+ });
+ return buffer;
+ }
+ return null;
+}
+
+var x = buildBuffer([0x81, 0xa3, 0x66, 0x6f, 0x6f, 0xa3, 0x62, 0x61, 0x72]);
+
+// console.log(x.inspect());
+assert.equal('', x.inspect());
+
+var z = x.slice(4);
+// console.log(z.inspect());
+// console.log(z.length);
+assert.equal(5, z.length);
+assert.equal(0x6f, z[0]);
+assert.equal(0xa3, z[1]);
+assert.equal(0x62, z[2]);
+assert.equal(0x61, z[3]);
+assert.equal(0x72, z[4]);
+
+var z = x.slice(0);
+// console.log(z.inspect());
+// console.log(z.length);
+assert.equal(z.length, x.length);
+
+var z = x.slice(0, 4);
+// console.log(z.inspect());
+// console.log(z.length);
+assert.equal(4, z.length);
+assert.equal(0x81, z[0]);
+assert.equal(0xa3, z[1]);
+
+var z = x.slice(0, 9);
+// console.log(z.inspect());
+// console.log(z.length);
+assert.equal(9, z.length);
+
+var z = x.slice(1, 4);
+// console.log(z.inspect());
+// console.log(z.length);
+assert.equal(3, z.length);
+assert.equal(0xa3, z[0]);
+
+var z = x.slice(2, 4);
+// console.log(z.inspect());
+// console.log(z.length);
+assert.equal(2, z.length);
+assert.equal(0x66, z[0]);
+assert.equal(0x6f, z[1]);
+
+assert.equal(0, Buffer('hello').slice(0, 0).length);
+
+['ucs2', 'ucs-2', 'utf16le', 'utf-16le'].forEach(function(encoding) {
+ var b = new Buffer(10);
+ b.write('あいうえお', encoding);
+ assert.equal(b.toString(encoding), 'あいうえお');
+});
+
+// Binary encoding should write only one byte per character.
+var b = Buffer([0xde, 0xad, 0xbe, 0xef]);
+var s = String.fromCharCode(0xffff);
+b.write(s, 0, 'binary');
+assert.equal(0xff, b[0]);
+assert.equal(0xad, b[1]);
+assert.equal(0xbe, b[2]);
+assert.equal(0xef, b[3]);
+s = String.fromCharCode(0xaaee);
+b.write(s, 0, 'binary');
+assert.equal(0xee, b[0]);
+assert.equal(0xad, b[1]);
+assert.equal(0xbe, b[2]);
+assert.equal(0xef, b[3]);
+
+// #1210 Test UTF-8 string includes null character
+var buf = new Buffer('\0');
+assert.equal(buf.length, 1);
+buf = new Buffer('\0\0');
+assert.equal(buf.length, 2);
+
+buf = new Buffer(2);
+var written = buf.write(''); // 0byte
+assert.equal(written, 0);
+written = buf.write('\0'); // 1byte (v8 adds null terminator)
+assert.equal(written, 1);
+written = buf.write('a\0'); // 1byte * 2
+assert.equal(written, 2);
+written = buf.write('あ'); // 3bytes
+assert.equal(written, 0);
+written = buf.write('\0あ'); // 1byte + 3bytes
+assert.equal(written, 1);
+written = buf.write('\0\0あ'); // 1byte * 2 + 3bytes
+assert.equal(written, 2);
+
+buf = new Buffer(10);
+written = buf.write('あいう'); // 3bytes * 3 (v8 adds null terminator)
+assert.equal(written, 9);
+written = buf.write('あいう\0'); // 3bytes * 3 + 1byte
+assert.equal(written, 10);
+
+// #243 Test write() with maxLength
+var buf = new Buffer(4);
+buf.fill(0xFF);
+var written = buf.write('abcd', 1, 2, 'utf8');
+// console.log(buf);
+assert.equal(written, 2);
+assert.equal(buf[0], 0xFF);
+assert.equal(buf[1], 0x61);
+assert.equal(buf[2], 0x62);
+assert.equal(buf[3], 0xFF);
+
+buf.fill(0xFF);
+written = buf.write('abcd', 1, 4);
+// console.log(buf);
+assert.equal(written, 3);
+assert.equal(buf[0], 0xFF);
+assert.equal(buf[1], 0x61);
+assert.equal(buf[2], 0x62);
+assert.equal(buf[3], 0x63);
+
+buf.fill(0xFF);
+written = buf.write('abcd', 'utf8', 1, 2); // legacy style
+// console.log(buf);
+assert.equal(written, 2);
+assert.equal(buf[0], 0xFF);
+assert.equal(buf[1], 0x61);
+assert.equal(buf[2], 0x62);
+assert.equal(buf[3], 0xFF);
+
+buf.fill(0xFF);
+written = buf.write('abcdef', 1, 2, 'hex');
+// console.log(buf);
+assert.equal(written, 2);
+assert.equal(buf[0], 0xFF);
+assert.equal(buf[1], 0xAB);
+assert.equal(buf[2], 0xCD);
+assert.equal(buf[3], 0xFF);
+
+['ucs2', 'ucs-2', 'utf16le', 'utf-16le'].forEach(function(encoding) {
+ buf.fill(0xFF);
+ written = buf.write('abcd', 0, 2, encoding);
+// console.log(buf);
+ assert.equal(written, 2);
+ assert.equal(buf[0], 0x61);
+ assert.equal(buf[1], 0x00);
+ assert.equal(buf[2], 0xFF);
+ assert.equal(buf[3], 0xFF);
+});
+
+// test offset returns are correct
+var b = new Buffer(16);
+assert.equal(4, b.writeUInt32LE(0, 0));
+assert.equal(6, b.writeUInt16LE(0, 4));
+assert.equal(7, b.writeUInt8(0, 6));
+assert.equal(8, b.writeInt8(0, 7));
+assert.equal(16, b.writeDoubleLE(0, 8));
+
+// test unmatched surrogates not producing invalid utf8 output
+// ef bf bd = utf-8 representation of unicode replacement character
+// see https://codereview.chromium.org/121173009/
+buf = new Buffer('ab\ud800cd', 'utf8');
+assert.equal(buf[0], 0x61);
+assert.equal(buf[1], 0x62);
+assert.equal(buf[2], 0xef);
+assert.equal(buf[3], 0xbf);
+assert.equal(buf[4], 0xbd);
+assert.equal(buf[5], 0x63);
+assert.equal(buf[6], 0x64);
+
+// test for buffer overrun
+buf = new Buffer([0, 0, 0, 0, 0]); // length: 5
+var sub = buf.slice(0, 4); // length: 4
+written = sub.write('12345', 'binary');
+assert.equal(written, 4);
+assert.equal(buf[4], 0);
+
+// Check for fractional length args, junk length args, etc.
+// https://github.com/joyent/node/issues/1758
+
+// Call .fill() first, stops valgrind warning about uninitialized memory reads.
+Buffer(3.3).fill().toString(); // throws bad argument error in commit 43cb4ec
+assert.equal(Buffer(-1).length, 0);
+assert.equal(Buffer(NaN).length, 0);
+assert.equal(Buffer(3.3).length, 3);
+assert.equal(Buffer({length: 3.3}).length, 3);
+assert.equal(Buffer({length: 'BAM'}).length, 0);
+
+// Make sure that strings are not coerced to numbers.
+assert.equal(Buffer('99').length, 2);
+assert.equal(Buffer('13.37').length, 5);
+
+// Ensure that the length argument is respected.
+'ascii utf8 hex base64 binary'.split(' ').forEach(function(enc) {
+ assert.equal(Buffer(1).write('aaaaaa', 0, 1, enc), 1);
+});
+
+// Regression test, guard against buffer overrun in the base64 decoder.
+var a = Buffer(3);
+var b = Buffer('xxx');
+a.write('aaaaaaaa', 'base64');
+assert.equal(b.toString(), 'xxx');
+
+// issue GH-3416
+Buffer(Buffer(0), 0, 0);
+
+[ 'hex',
+ 'utf8',
+ 'utf-8',
+ 'ascii',
+ 'binary',
+ 'base64',
+ 'ucs2',
+ 'ucs-2',
+ 'utf16le',
+ 'utf-16le' ].forEach(function(enc) {
+ assert.equal(Buffer.isEncoding(enc), true);
+ });
+
+[ 'utf9',
+ 'utf-7',
+ 'Unicode-FTW',
+ 'new gnu gun' ].forEach(function(enc) {
+ assert.equal(Buffer.isEncoding(enc), false);
+ });
+
+
+// GH-5110
+(function() {
+ var buffer = new Buffer('test'),
+ string = JSON.stringify(buffer);
+
+ assert.equal(string, '{"type":"Buffer","data":[116,101,115,116]}');
+
+ assert.deepEqual(buffer, JSON.parse(string, function(key, value) {
+ return value && value.type === 'Buffer'
+ ? new Buffer(value.data)
+ : value;
+ }));
+})();
+
+// issue GH-7849
+(function() {
+ var buf = new Buffer('test');
+ var json = JSON.stringify(buf);
+ var obj = JSON.parse(json);
+ var copy = new Buffer(obj);
+
+ assert(buf.equals(copy));
+})();
+
+// issue GH-4331
+assert.throws(function() {
+ new Buffer(0xFFFFFFFF);
+}, RangeError);
+assert.throws(function() {
+ new Buffer(0xFFFFFFFFF);
+}, RangeError);
+
+
+// attempt to overflow buffers, similar to previous bug in array buffers
+assert.throws(function() {
+ var buf = new Buffer(8);
+ buf.readFloatLE(0xffffffff);
+}, RangeError);
+
+assert.throws(function() {
+ var buf = new Buffer(8);
+ buf.writeFloatLE(0.0, 0xffffffff);
+}, RangeError);
+
+assert.throws(function() {
+ var buf = new Buffer(8);
+ buf.readFloatLE(0xffffffff);
+}, RangeError);
+
+assert.throws(function() {
+ var buf = new Buffer(8);
+ buf.writeFloatLE(0.0, 0xffffffff);
+}, RangeError);
+
+
+// ensure negative values can't get past offset
+assert.throws(function() {
+ var buf = new Buffer(8);
+ buf.readFloatLE(-1);
+}, RangeError);
+
+assert.throws(function() {
+ var buf = new Buffer(8);
+ buf.writeFloatLE(0.0, -1);
+}, RangeError);
+
+assert.throws(function() {
+ var buf = new Buffer(8);
+ buf.readFloatLE(-1);
+}, RangeError);
+
+assert.throws(function() {
+ var buf = new Buffer(8);
+ buf.writeFloatLE(0.0, -1);
+}, RangeError);
+
+// offset checks
+var buf = new Buffer(0);
+
+assert.throws(function() { buf.readUInt8(0); }, RangeError);
+assert.throws(function() { buf.readInt8(0); }, RangeError);
+
+var buf = new Buffer([0xFF]);
+
+assert.equal(buf.readUInt8(0), 255);
+assert.equal(buf.readInt8(0), -1);
+
+[16, 32].forEach(function(bits) {
+ var buf = new Buffer(bits / 8 - 1);
+
+ assert.throws(function() { buf['readUInt' + bits + 'BE'](0); },
+ RangeError,
+ 'readUInt' + bits + 'BE');
+
+ assert.throws(function() { buf['readUInt' + bits + 'LE'](0); },
+ RangeError,
+ 'readUInt' + bits + 'LE');
+
+ assert.throws(function() { buf['readInt' + bits + 'BE'](0); },
+ RangeError,
+ 'readInt' + bits + 'BE()');
+
+ assert.throws(function() { buf['readInt' + bits + 'LE'](0); },
+ RangeError,
+ 'readInt' + bits + 'LE()');
+});
+
+[16, 32].forEach(function(bits) {
+ var buf = new Buffer([0xFF, 0xFF, 0xFF, 0xFF]);
+
+ assert.equal(buf['readUInt' + bits + 'BE'](0),
+ (0xFFFFFFFF >>> (32 - bits)));
+
+ assert.equal(buf['readUInt' + bits + 'LE'](0),
+ (0xFFFFFFFF >>> (32 - bits)));
+
+ assert.equal(buf['readInt' + bits + 'BE'](0),
+ (0xFFFFFFFF >> (32 - bits)));
+
+ assert.equal(buf['readInt' + bits + 'LE'](0),
+ (0xFFFFFFFF >> (32 - bits)));
+});
+
+// test for common read(U)IntLE/BE
+(function() {
+ var buf = new Buffer([0x01, 0x02, 0x03, 0x04, 0x05, 0x06]);
+
+ assert.equal(buf.readUIntLE(0, 1), 0x01);
+ assert.equal(buf.readUIntBE(0, 1), 0x01);
+ assert.equal(buf.readUIntLE(0, 3), 0x030201);
+ assert.equal(buf.readUIntBE(0, 3), 0x010203);
+ assert.equal(buf.readUIntLE(0, 5), 0x0504030201);
+ assert.equal(buf.readUIntBE(0, 5), 0x0102030405);
+ assert.equal(buf.readUIntLE(0, 6), 0x060504030201);
+ assert.equal(buf.readUIntBE(0, 6), 0x010203040506);
+ assert.equal(buf.readIntLE(0, 1), 0x01);
+ assert.equal(buf.readIntBE(0, 1), 0x01);
+ assert.equal(buf.readIntLE(0, 3), 0x030201);
+ assert.equal(buf.readIntBE(0, 3), 0x010203);
+ assert.equal(buf.readIntLE(0, 5), 0x0504030201);
+ assert.equal(buf.readIntBE(0, 5), 0x0102030405);
+ assert.equal(buf.readIntLE(0, 6), 0x060504030201);
+ assert.equal(buf.readIntBE(0, 6), 0x010203040506);
+})();
+
+// test for common write(U)IntLE/BE
+(function() {
+ var buf = new Buffer(3);
+ buf.writeUIntLE(0x123456, 0, 3);
+ assert.deepEqual(buf.toJSON().data, [0x56, 0x34, 0x12]);
+ assert.equal(buf.readUIntLE(0, 3), 0x123456);
+
+ buf = new Buffer(3);
+ buf.writeUIntBE(0x123456, 0, 3);
+ assert.deepEqual(buf.toJSON().data, [0x12, 0x34, 0x56]);
+ assert.equal(buf.readUIntBE(0, 3), 0x123456);
+
+ buf = new Buffer(3);
+ buf.writeIntLE(0x123456, 0, 3);
+ assert.deepEqual(buf.toJSON().data, [0x56, 0x34, 0x12]);
+ assert.equal(buf.readIntLE(0, 3), 0x123456);
+
+ buf = new Buffer(3);
+ buf.writeIntBE(0x123456, 0, 3);
+ assert.deepEqual(buf.toJSON().data, [0x12, 0x34, 0x56]);
+ assert.equal(buf.readIntBE(0, 3), 0x123456);
+
+ buf = new Buffer(3);
+ buf.writeIntLE(-0x123456, 0, 3);
+ assert.deepEqual(buf.toJSON().data, [0xaa, 0xcb, 0xed]);
+ assert.equal(buf.readIntLE(0, 3), -0x123456);
+
+ buf = new Buffer(3);
+ buf.writeIntBE(-0x123456, 0, 3);
+ assert.deepEqual(buf.toJSON().data, [0xed, 0xcb, 0xaa]);
+ assert.equal(buf.readIntBE(0, 3), -0x123456);
+
+ buf = new Buffer(5);
+ buf.writeUIntLE(0x1234567890, 0, 5);
+ assert.deepEqual(buf.toJSON().data, [0x90, 0x78, 0x56, 0x34, 0x12]);
+ assert.equal(buf.readUIntLE(0, 5), 0x1234567890);
+
+ buf = new Buffer(5);
+ buf.writeUIntBE(0x1234567890, 0, 5);
+ assert.deepEqual(buf.toJSON().data, [0x12, 0x34, 0x56, 0x78, 0x90]);
+ assert.equal(buf.readUIntBE(0, 5), 0x1234567890);
+
+ buf = new Buffer(5);
+ buf.writeIntLE(0x1234567890, 0, 5);
+ assert.deepEqual(buf.toJSON().data, [0x90, 0x78, 0x56, 0x34, 0x12]);
+ assert.equal(buf.readIntLE(0, 5), 0x1234567890);
+
+ buf = new Buffer(5);
+ buf.writeIntBE(0x1234567890, 0, 5);
+ assert.deepEqual(buf.toJSON().data, [0x12, 0x34, 0x56, 0x78, 0x90]);
+ assert.equal(buf.readIntBE(0, 5), 0x1234567890);
+
+ buf = new Buffer(5);
+ buf.writeIntLE(-0x1234567890, 0, 5);
+ assert.deepEqual(buf.toJSON().data, [0x70, 0x87, 0xa9, 0xcb, 0xed]);
+ assert.equal(buf.readIntLE(0, 5), -0x1234567890);
+
+ buf = new Buffer(5);
+ buf.writeIntBE(-0x1234567890, 0, 5);
+ assert.deepEqual(buf.toJSON().data, [0xed, 0xcb, 0xa9, 0x87, 0x70]);
+ assert.equal(buf.readIntBE(0, 5), -0x1234567890);
+})();
+
+// test Buffer slice
+(function() {
+ var buf = new Buffer('0123456789');
+ assert.equal(buf.slice(-10, 10), '0123456789');
+ assert.equal(buf.slice(-20, 10), '0123456789');
+ assert.equal(buf.slice(-20, -10), '');
+ assert.equal(buf.slice(0, -1), '012345678');
+ assert.equal(buf.slice(2, -2), '234567');
+ assert.equal(buf.slice(0, 65536), '0123456789');
+ assert.equal(buf.slice(65536, 0), '');
+ for (var i = 0, s = buf.toString(); i < buf.length; ++i) {
+ assert.equal(buf.slice(-i), s.slice(-i));
+ assert.equal(buf.slice(0, -i), s.slice(0, -i));
+ }
+ // try to slice a zero length Buffer
+ // see https://github.com/joyent/node/issues/5881
+ SlowBuffer(0).slice(0, 1);
+})();
+
+// Regression test for #5482: should throw but not assert in C++ land.
+assert.throws(function() {
+ Buffer('', 'buffer');
+}, TypeError);
+
+// Regression test for #6111. Constructing a buffer from another buffer
+// should a) work, and b) not corrupt the source buffer.
+(function() {
+ var a = [0];
+ for (var i = 0; i < 7; ++i) a = a.concat(a);
+ a = a.map(function(_, i) { return i; });
+ var b = Buffer(a);
+ var c = Buffer(b);
+ assert.equal(b.length, a.length);
+ assert.equal(c.length, a.length);
+ for (var i = 0, k = a.length; i < k; ++i) {
+ assert.equal(a[i], i);
+ assert.equal(b[i], i);
+ assert.equal(c[i], i);
+ }
+})();
+
+
+assert.throws(function() {
+ new Buffer((-1 >>> 0) + 1);
+}, RangeError);
+
+assert.throws(function() {
+ new SlowBuffer((-1 >>> 0) + 1);
+}, RangeError);
+
+if (common.hasCrypto) {
+ // Test truncation after decode
+ // var crypto = require('crypto');
+
+ var b1 = new Buffer('YW55=======', 'base64');
+ var b2 = new Buffer('YW55', 'base64');
+
+ assert.equal(
+ 1 /*crypto.createHash('sha1').update(b1).digest('hex')*/,
+ 1 /*crypto.createHash('sha1').update(b2).digest('hex')*/
+ );
+} else {
+// console.log('1..0 # Skipped: missing crypto');
+}
+
+// Test Compare
+var b = new Buffer(1).fill('a');
+var c = new Buffer(1).fill('c');
+var d = new Buffer(2).fill('aa');
+
+assert.equal(b.compare(c), -1);
+assert.equal(c.compare(d), 1);
+assert.equal(d.compare(b), 1);
+assert.equal(b.compare(d), -1);
+assert.equal(b.compare(b), 0);
+
+assert.equal(Buffer.compare(b, c), -1);
+assert.equal(Buffer.compare(c, d), 1);
+assert.equal(Buffer.compare(d, b), 1);
+assert.equal(Buffer.compare(b, d), -1);
+assert.equal(Buffer.compare(c, c), 0);
+
+
+assert.throws(function() {
+ var b = new Buffer(1);
+ Buffer.compare(b, 'abc');
+});
+
+assert.throws(function() {
+ var b = new Buffer(1);
+ Buffer.compare('abc', b);
+});
+
+assert.throws(function() {
+ var b = new Buffer(1);
+ b.compare('abc');
+});
+
+// Test Equals
+var b = new Buffer(5).fill('abcdf');
+var c = new Buffer(5).fill('abcdf');
+var d = new Buffer(5).fill('abcde');
+var e = new Buffer(6).fill('abcdef');
+
+assert.ok(b.equals(c));
+assert.ok(!c.equals(d));
+assert.ok(!d.equals(e));
+assert.ok(d.equals(d));
+
+assert.throws(function() {
+ var b = new Buffer(1);
+ b.equals('abc');
+});
+
+// Regression test for https://github.com/nodejs/io.js/issues/649.
+assert.throws(function() { Buffer(1422561062959).toString('utf8'); });
+
+var ps = Buffer.poolSize;
+Buffer.poolSize = 0;
+assert.equal(Buffer(1).parent, undefined);
+Buffer.poolSize = ps;
+
+// Test Buffer.copy() segfault
+assert.throws(function() {
+ Buffer(10).copy();
+});
+
+assert.throws(function() {
+ new Buffer();
+}, /must start with number, buffer, array or string/);
+
+assert.throws(function() {
+ new Buffer(null);
+}, /must start with number, buffer, array or string/);
+
diff --git a/node_modules/buffer/test/slice.js b/node_modules/buffer/test/slice.js
new file mode 100644
index 0000000..25c111c
--- /dev/null
+++ b/node_modules/buffer/test/slice.js
@@ -0,0 +1,37 @@
+if (process.env.OBJECT_IMPL) global.TYPED_ARRAY_SUPPORT = false
+var B = require('../').Buffer
+var test = require('tape')
+
+test('modifying buffer created by .slice() modifies original memory', function (t) {
+ if (!B.TYPED_ARRAY_SUPPORT) return t.end()
+
+ var buf1 = new B(26)
+ for (var i = 0; i < 26; i++) {
+ buf1[i] = i + 97 // 97 is ASCII a
+ }
+
+ var buf2 = buf1.slice(0, 3)
+ t.equal(buf2.toString('ascii', 0, buf2.length), 'abc')
+
+ buf2[0] = '!'.charCodeAt(0)
+ t.equal(buf1.toString('ascii', 0, buf2.length), '!bc')
+
+ t.end()
+})
+
+test('modifying parent buffer modifies .slice() buffer\'s memory', function (t) {
+ if (!B.TYPED_ARRAY_SUPPORT) return t.end()
+
+ var buf1 = new B(26)
+ for (var i = 0; i < 26; i++) {
+ buf1[i] = i + 97 // 97 is ASCII a
+ }
+
+ var buf2 = buf1.slice(0, 3)
+ t.equal(buf2.toString('ascii', 0, buf2.length), 'abc')
+
+ buf1[0] = '!'.charCodeAt(0)
+ t.equal(buf2.toString('ascii', 0, buf2.length), '!bc')
+
+ t.end()
+})
diff --git a/node_modules/buffer/test/static.js b/node_modules/buffer/test/static.js
new file mode 100644
index 0000000..68faa00
--- /dev/null
+++ b/node_modules/buffer/test/static.js
@@ -0,0 +1,31 @@
+if (process.env.OBJECT_IMPL) global.TYPED_ARRAY_SUPPORT = false
+var B = require('../').Buffer
+var test = require('tape')
+
+test('Buffer.isEncoding', function (t) {
+ t.equal(B.isEncoding('HEX'), true)
+ t.equal(B.isEncoding('hex'), true)
+ t.equal(B.isEncoding('bad'), false)
+ t.end()
+})
+
+test('Buffer.isBuffer', function (t) {
+ t.equal(B.isBuffer(new B('hey', 'utf8')), true)
+ t.equal(B.isBuffer(new B([1, 2, 3], 'utf8')), true)
+ t.equal(B.isBuffer('hey'), false)
+ t.end()
+})
+
+test('Buffer.toArrayBuffer', function (t) {
+ var data = [1, 2, 3, 4, 5, 6, 7, 8]
+ if (typeof Uint8Array !== 'undefined') {
+ var result = new B(data).toArrayBuffer()
+ var expected = new Uint8Array(data).buffer
+ for (var i = 0; i < expected.byteLength; i++) {
+ t.equal(result[i], expected[i])
+ }
+ } else {
+ t.pass('No toArrayBuffer() method provided in old browsers')
+ }
+ t.end()
+})
diff --git a/node_modules/buffer/test/to-string.js b/node_modules/buffer/test/to-string.js
new file mode 100644
index 0000000..2950d4d
--- /dev/null
+++ b/node_modules/buffer/test/to-string.js
@@ -0,0 +1,233 @@
+if (process.env.OBJECT_IMPL) global.TYPED_ARRAY_SUPPORT = false
+var B = require('../').Buffer
+var test = require('tape')
+
+test('utf8 buffer to base64', function (t) {
+ t.equal(
+ new B('Ձאab', 'utf8').toString('base64'),
+ '1YHXkGFi'
+ )
+ t.end()
+})
+
+test('utf8 buffer to hex', function (t) {
+ t.equal(
+ new B('Ձאab', 'utf8').toString('hex'),
+ 'd581d7906162'
+ )
+ t.end()
+})
+
+test('utf8 to utf8', function (t) {
+ t.equal(
+ new B('öäüõÖÄÜÕ', 'utf8').toString('utf8'),
+ 'öäüõÖÄÜÕ'
+ )
+ t.end()
+})
+
+test('utf16le to utf16', function (t) {
+ t.equal(
+ new B(new B('abcd', 'utf8').toString('utf16le'), 'utf16le').toString('utf8'),
+ 'abcd'
+ )
+ t.end()
+})
+
+test('utf16le to hex', function (t) {
+ t.equal(
+ new B('abcd', 'utf16le').toString('hex'),
+ '6100620063006400'
+ )
+ t.end()
+})
+
+test('ascii buffer to base64', function (t) {
+ t.equal(
+ new B('123456!@#$%^', 'ascii').toString('base64'),
+ 'MTIzNDU2IUAjJCVe'
+ )
+ t.end()
+})
+
+test('ascii buffer to hex', function (t) {
+ t.equal(
+ new B('123456!@#$%^', 'ascii').toString('hex'),
+ '31323334353621402324255e'
+ )
+ t.end()
+})
+
+test('base64 buffer to utf8', function (t) {
+ t.equal(
+ new B('1YHXkGFi', 'base64').toString('utf8'),
+ 'Ձאab'
+ )
+ t.end()
+})
+
+test('hex buffer to utf8', function (t) {
+ t.equal(
+ new B('d581d7906162', 'hex').toString('utf8'),
+ 'Ձאab'
+ )
+ t.end()
+})
+
+test('base64 buffer to ascii', function (t) {
+ t.equal(
+ new B('MTIzNDU2IUAjJCVe', 'base64').toString('ascii'),
+ '123456!@#$%^'
+ )
+ t.end()
+})
+
+test('hex buffer to ascii', function (t) {
+ t.equal(
+ new B('31323334353621402324255e', 'hex').toString('ascii'),
+ '123456!@#$%^'
+ )
+ t.end()
+})
+
+test('base64 buffer to binary', function (t) {
+ t.equal(
+ new B('MTIzNDU2IUAjJCVe', 'base64').toString('binary'),
+ '123456!@#$%^'
+ )
+ t.end()
+})
+
+test('hex buffer to binary', function (t) {
+ t.equal(
+ new B('31323334353621402324255e', 'hex').toString('binary'),
+ '123456!@#$%^'
+ )
+ t.end()
+})
+
+test('utf8 to binary', function (t) {
+ /* jshint -W100 */
+ t.equal(
+ new B('öäüõÖÄÜÕ', 'utf8').toString('binary'),
+ 'öäüõÃÃÃÃ'
+ )
+ /* jshint +W100 */
+ t.end()
+})
+
+test('utf8 replacement chars (1 byte sequence)', function (t) {
+ t.equal(
+ new B([ 0x80 ]).toString(),
+ '\uFFFD'
+ )
+ t.equal(
+ new B([ 0x7F ]).toString(),
+ '\u007F'
+ )
+ t.end()
+})
+
+test('utf8 replacement chars (2 byte sequences)', function (t) {
+ t.equal(
+ new B([ 0xC7 ]).toString(),
+ '\uFFFD'
+ )
+ t.equal(
+ new B([ 0xC7, 0xB1 ]).toString(),
+ '\u01F1'
+ )
+ t.equal(
+ new B([ 0xC0, 0xB1 ]).toString(),
+ '\uFFFD\uFFFD'
+ )
+ t.equal(
+ new B([ 0xC1, 0xB1 ]).toString(),
+ '\uFFFD\uFFFD'
+ )
+ t.end()
+})
+
+test('utf8 replacement chars (3 byte sequences)', function (t) {
+ t.equal(
+ new B([ 0xE0 ]).toString(),
+ '\uFFFD'
+ )
+ t.equal(
+ new B([ 0xE0, 0xAC ]).toString(),
+ '\uFFFD\uFFFD'
+ )
+ t.equal(
+ new B([ 0xE0, 0xAC, 0xB9 ]).toString(),
+ '\u0B39'
+ )
+ t.end()
+})
+
+test('utf8 replacement chars (4 byte sequences)', function (t) {
+ t.equal(
+ new B([ 0xF4 ]).toString(),
+ '\uFFFD'
+ )
+ t.equal(
+ new B([ 0xF4, 0x8F ]).toString(),
+ '\uFFFD\uFFFD'
+ )
+ t.equal(
+ new B([ 0xF4, 0x8F, 0x80 ]).toString(),
+ '\uFFFD\uFFFD\uFFFD'
+ )
+ t.equal(
+ new B([ 0xF4, 0x8F, 0x80, 0x84 ]).toString(),
+ '\uDBFC\uDC04'
+ )
+ t.equal(
+ new B([ 0xFF ]).toString(),
+ '\uFFFD'
+ )
+ t.equal(
+ new B([ 0xFF, 0x8F, 0x80, 0x84 ]).toString(),
+ '\uFFFD\uFFFD\uFFFD\uFFFD'
+ )
+ t.end()
+})
+
+test('utf8 replacement chars on 256 random bytes', function (t) {
+ t.equal(
+ new B([ 152, 130, 206, 23, 243, 238, 197, 44, 27, 86, 208, 36, 163, 184, 164, 21, 94, 242, 178, 46, 25, 26, 253, 178, 72, 147, 207, 112, 236, 68, 179, 190, 29, 83, 239, 147, 125, 55, 143, 19, 157, 68, 157, 58, 212, 224, 150, 39, 128, 24, 94, 225, 120, 121, 75, 192, 112, 19, 184, 142, 203, 36, 43, 85, 26, 147, 227, 139, 242, 186, 57, 78, 11, 102, 136, 117, 180, 210, 241, 92, 3, 215, 54, 167, 249, 1, 44, 225, 146, 86, 2, 42, 68, 21, 47, 238, 204, 153, 216, 252, 183, 66, 222, 255, 15, 202, 16, 51, 134, 1, 17, 19, 209, 76, 238, 38, 76, 19, 7, 103, 249, 5, 107, 137, 64, 62, 170, 57, 16, 85, 179, 193, 97, 86, 166, 196, 36, 148, 138, 193, 210, 69, 187, 38, 242, 97, 195, 219, 252, 244, 38, 1, 197, 18, 31, 246, 53, 47, 134, 52, 105, 72, 43, 239, 128, 203, 73, 93, 199, 75, 222, 220, 166, 34, 63, 236, 11, 212, 76, 243, 171, 110, 78, 39, 205, 204, 6, 177, 233, 212, 243, 0, 33, 41, 122, 118, 92, 252, 0, 157, 108, 120, 70, 137, 100, 223, 243, 171, 232, 66, 126, 111, 142, 33, 3, 39, 117, 27, 107, 54, 1, 217, 227, 132, 13, 166, 3, 73, 53, 127, 225, 236, 134, 219, 98, 214, 125, 148, 24, 64, 142, 111, 231, 194, 42, 150, 185, 10, 182, 163, 244, 19, 4, 59, 135, 16 ]).toString(),
+ '\uFFFD\uFFFD\uFFFD\u0017\uFFFD\uFFFD\uFFFD\u002C\u001B\u0056\uFFFD\u0024\uFFFD\uFFFD\uFFFD\u0015\u005E\uFFFD\uFFFD\u002E\u0019\u001A\uFFFD\uFFFD\u0048\uFFFD\uFFFD\u0070\uFFFD\u0044\uFFFD\uFFFD\u001D\u0053\uFFFD\uFFFD\u007D\u0037\uFFFD\u0013\uFFFD\u0044\uFFFD\u003A\uFFFD\uFFFD\uFFFD\u0027\uFFFD\u0018\u005E\uFFFD\u0078\u0079\u004B\uFFFD\u0070\u0013\uFFFD\uFFFD\uFFFD\u0024\u002B\u0055\u001A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0039\u004E\u000B\u0066\uFFFD\u0075\uFFFD\uFFFD\uFFFD\u005C\u0003\uFFFD\u0036\uFFFD\uFFFD\u0001\u002C\uFFFD\uFFFD\u0056\u0002\u002A\u0044\u0015\u002F\uFFFD\u0319\uFFFD\uFFFD\uFFFD\u0042\uFFFD\uFFFD\u000F\uFFFD\u0010\u0033\uFFFD\u0001\u0011\u0013\uFFFD\u004C\uFFFD\u0026\u004C\u0013\u0007\u0067\uFFFD\u0005\u006B\uFFFD\u0040\u003E\uFFFD\u0039\u0010\u0055\uFFFD\uFFFD\u0061\u0056\uFFFD\uFFFD\u0024\uFFFD\uFFFD\uFFFD\uFFFD\u0045\uFFFD\u0026\uFFFD\u0061\uFFFD\uFFFD\uFFFD\uFFFD\u0026\u0001\uFFFD\u0012\u001F\uFFFD\u0035\u002F\uFFFD\u0034\u0069\u0048\u002B\uFFFD\uFFFD\uFFFD\u0049\u005D\uFFFD\u004B\uFFFD\u0726\u0022\u003F\uFFFD\u000B\uFFFD\u004C\uFFFD\uFFFD\u006E\u004E\u0027\uFFFD\uFFFD\u0006\uFFFD\uFFFD\uFFFD\uFFFD\u0000\u0021\u0029\u007A\u0076\u005C\uFFFD\u0000\uFFFD\u006C\u0078\u0046\uFFFD\u0064\uFFFD\uFFFD\uFFFD\uFFFD\u0042\u007E\u006F\uFFFD\u0021\u0003\u0027\u0075\u001B\u006B\u0036\u0001\uFFFD\uFFFD\uFFFD\u000D\uFFFD\u0003\u0049\u0035\u007F\uFFFD\uFFFD\uFFFD\uFFFD\u0062\uFFFD\u007D\uFFFD\u0018\u0040\uFFFD\u006F\uFFFD\uFFFD\u002A\uFFFD\uFFFD\u000A\uFFFD\uFFFD\uFFFD\u0013\u0004\u003B\uFFFD\u0010'
+ )
+ t.end()
+})
+
+test('utf8 replacement chars for anything in the surrogate pair range', function (t) {
+ t.equal(
+ new B([ 0xED, 0x9F, 0xBF ]).toString(),
+ '\uD7FF'
+ )
+ t.equal(
+ new B([ 0xED, 0xA0, 0x80 ]).toString(),
+ '\uFFFD\uFFFD\uFFFD'
+ )
+ t.equal(
+ new B([ 0xED, 0xBE, 0x8B ]).toString(),
+ '\uFFFD\uFFFD\uFFFD'
+ )
+ t.equal(
+ new B([ 0xED, 0xBF, 0xBF ]).toString(),
+ '\uFFFD\uFFFD\uFFFD'
+ )
+ t.equal(
+ new B([ 0xEE, 0x80, 0x80 ]).toString(),
+ '\uE000'
+ )
+ t.end()
+})
+
+test('utf8 don\'t replace the replacement char', function (t) {
+ t.equal(
+ new B('\uFFFD').toString(),
+ '\uFFFD'
+ )
+ t.end()
+})
diff --git a/node_modules/buffer/test/write.js b/node_modules/buffer/test/write.js
new file mode 100644
index 0000000..4039d19
--- /dev/null
+++ b/node_modules/buffer/test/write.js
@@ -0,0 +1,131 @@
+if (process.env.OBJECT_IMPL) global.TYPED_ARRAY_SUPPORT = false
+var B = require('../').Buffer
+var test = require('tape')
+var isnan = require('is-nan')
+
+test('buffer.write string should get parsed as number', function (t) {
+ var b = new B(64)
+ b.writeUInt16LE('1003', 0)
+ t.equal(b.readUInt16LE(0), 1003)
+ t.end()
+})
+
+test('buffer.writeUInt8 a fractional number will get Math.floored', function (t) {
+ // Some extra work is necessary to make this test pass with the Object implementation
+
+ var b = new B(1)
+ b.writeInt8(5.5, 0)
+ t.equal(b[0], 5)
+ t.end()
+})
+
+test('writeUint8 with a negative number throws', function (t) {
+ var buf = new B(1)
+
+ t.throws(function () {
+ buf.writeUInt8(-3, 0)
+ })
+
+ t.end()
+})
+
+test('hex of write{Uint,Int}{8,16,32}{LE,BE}', function (t) {
+ t.plan(2 * (2 * 2 * 2 + 2))
+ var hex = [
+ '03', '0300', '0003', '03000000', '00000003',
+ 'fd', 'fdff', 'fffd', 'fdffffff', 'fffffffd'
+ ]
+ var reads = [ 3, 3, 3, 3, 3, -3, -3, -3, -3, -3 ]
+ var xs = ['UInt', 'Int']
+ var ys = [8, 16, 32]
+ for (var i = 0; i < xs.length; i++) {
+ var x = xs[i]
+ for (var j = 0; j < ys.length; j++) {
+ var y = ys[j]
+ var endianesses = (y === 8) ? [''] : ['LE', 'BE']
+ for (var k = 0; k < endianesses.length; k++) {
+ var z = endianesses[k]
+
+ var v1 = new B(y / 8)
+ var writefn = 'write' + x + y + z
+ var val = (x === 'Int') ? -3 : 3
+ v1[writefn](val, 0)
+ t.equal(
+ v1.toString('hex'),
+ hex.shift()
+ )
+ var readfn = 'read' + x + y + z
+ t.equal(
+ v1[readfn](0),
+ reads.shift()
+ )
+ }
+ }
+ }
+ t.end()
+})
+
+test('hex of write{Uint,Int}{8,16,32}{LE,BE} with overflow', function (t) {
+ if (!B.TYPED_ARRAY_SUPPORT) {
+ t.pass('object impl: skipping overflow test')
+ t.end()
+ return
+ }
+
+ t.plan(3 * (2 * 2 * 2 + 2))
+ var hex = [
+ '', '03', '00', '030000', '000000',
+ '', 'fd', 'ff', 'fdffff', 'ffffff'
+ ]
+ var reads = [
+ undefined, 3, 0, NaN, 0,
+ undefined, 253, -256, 16777213, -256
+ ]
+ var xs = ['UInt', 'Int']
+ var ys = [8, 16, 32]
+ for (var i = 0; i < xs.length; i++) {
+ var x = xs[i]
+ for (var j = 0; j < ys.length; j++) {
+ var y = ys[j]
+ var endianesses = (y === 8) ? [''] : ['LE', 'BE']
+ for (var k = 0; k < endianesses.length; k++) {
+ var z = endianesses[k]
+
+ var v1 = new B(y / 8 - 1)
+ var next = new B(4)
+ next.writeUInt32BE(0, 0)
+ var writefn = 'write' + x + y + z
+ var val = (x === 'Int') ? -3 : 3
+ v1[writefn](val, 0, true)
+ t.equal(
+ v1.toString('hex'),
+ hex.shift()
+ )
+ // check that nothing leaked to next buffer.
+ t.equal(next.readUInt32BE(0), 0)
+ // check that no bytes are read from next buffer.
+ next.writeInt32BE(~0, 0)
+ var readfn = 'read' + x + y + z
+ var r = reads.shift()
+ if (isnan(r)) t.pass('equal')
+ else t.equal(v1[readfn](0, true), r)
+ }
+ }
+ }
+ t.end()
+})
+test('large values do not imporoperly roll over (ref #80)', function (t) {
+ var nums = [-25589992, -633756690, -898146932]
+ var out = new B(12)
+ out.fill(0)
+ out.writeInt32BE(nums[0], 0)
+ var newNum = out.readInt32BE(0)
+ t.equal(nums[0], newNum)
+ out.writeInt32BE(nums[1], 4)
+ newNum = out.readInt32BE(4)
+ t.equal(nums[1], newNum)
+ out.writeInt32BE(nums[2], 8)
+ newNum = out.readInt32BE(8)
+ t.equal(nums[2], newNum)
+ t.end()
+})
diff --git a/node_modules/bytes/History.md b/node_modules/bytes/History.md
new file mode 100644
index 0000000..5bd5136
--- /dev/null
+++ b/node_modules/bytes/History.md
@@ -0,0 +1,57 @@
+2.2.0 / 2015-11-13
+==================
+
+ * add option "decimalPlaces"
+ * add option "fixedDecimals"
+
+2.1.0 / 2015-05-21
+==================
+
+ * add `.format` export
+ * add `.parse` export
+
+2.0.2 / 2015-05-20
+==================
+
+ * remove map recreation
+ * remove unnecessary object construction
+
+2.0.1 / 2015-05-07
+==================
+
+ * fix browserify require
+ * remove node.extend dependency
+
+2.0.0 / 2015-04-12
+==================
+
+ * add option "case"
+ * add option "thousandsSeparator"
+ * return "null" on invalid parse input
+ * support proper round-trip: bytes(bytes(num)) === num
+ * units no longer case sensitive when parsing
+
+1.0.0 / 2014-05-05
+==================
+
+ * add negative support. fixes #6
+
+0.3.0 / 2014-03-19
+==================
+
+ * added terabyte support
+
+0.2.1 / 2013-04-01
+==================
+
+ * add .component
+
+0.2.0 / 2012-10-28
+==================
+
+ * bytes(200).should.eql('200b')
+
+0.1.0 / 2012-07-04
+==================
+
+ * add bytes to string conversion [yields]
diff --git a/node_modules/bytes/LICENSE b/node_modules/bytes/LICENSE
new file mode 100644
index 0000000..63e95a9
--- /dev/null
+++ b/node_modules/bytes/LICENSE
@@ -0,0 +1,23 @@
+(The MIT License)
+
+Copyright (c) 2012-2014 TJ Holowaychuk
+Copyright (c) 2015 Jed Watson
+
+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.
diff --git a/node_modules/bytes/Readme.md b/node_modules/bytes/Readme.md
new file mode 100644
index 0000000..fb4b3ea
--- /dev/null
+++ b/node_modules/bytes/Readme.md
@@ -0,0 +1,99 @@
+# Bytes utility
+
+[![NPM Version][npm-image]][npm-url]
+[![NPM Downloads][downloads-image]][downloads-url]
+[![Build Status][travis-image]][travis-url]
+
+Utility to parse a string bytes (ex: `1TB`) to bytes (`1099511627776`) and vice-versa.
+
+## Usage
+
+```js
+var bytes = require('bytes');
+```
+
+#### bytes.format(number value, [options]): string|null
+
+Format the given value in bytes into a string. If the value is negative, it is kept as such. If it is a float, it is
+ rounded.
+
+**Arguments**
+
+| Name | Type | Description |
+|---------|--------|--------------------|
+| value | `number` | Value in bytes |
+| options | `Object` | Conversion options |
+
+**Options**
+
+| Property | Type | Description |
+|-------------------|--------|-----------------------------------------------------------------------------------------|
+| decimalPlaces | `number`|`null` | Maximum number of decimal places to include in output. Default value to `2`. |
+| fixedDecimals | `boolean`|`null` | Whether to always display the maximum number of decimal places. Default value to `false` |
+| thousandsSeparator | `string`|`null` | Example of values: `' '`, `','` and `.`... Default value to `' '`. |
+
+**Returns**
+
+| Name | Type | Description |
+|---------|-------------|-------------------------|
+| results | `string`|`null` | Return null upon error. String value otherwise. |
+
+**Example**
+
+```js
+bytes(1024);
+// output: '1kB'
+
+bytes(1000);
+// output: '1000B'
+
+bytes(1000, {thousandsSeparator: ' '});
+// output: '1 000B'
+
+bytes(1024 * 1.7, {decimalPlaces: 0});
+// output: '2kB'
+```
+
+#### bytes.parse(string value): number|null
+
+Parse the string value into an integer in bytes. If no unit is given, it is assumed the value is in bytes.
+
+**Arguments**
+
+| Name | Type | Description |
+|---------------|--------|--------------------|
+| value | `string` | String to parse. |
+
+**Returns**
+
+| Name | Type | Description |
+|---------|-------------|-------------------------|
+| results | `number`|`null` | Return null upon error. Value in bytes otherwise. |
+
+**Example**
+
+```js
+bytes('1kB');
+// output: 1024
+
+bytes('1024');
+// output: 1024
+```
+
+## Installation
+
+```bash
+npm install bytes --save
+component install visionmedia/bytes.js
+```
+
+## License
+
+[](https://github.com/visionmedia/bytes.js/blob/master/LICENSE)
+
+[downloads-image]: https://img.shields.io/npm/dm/bytes.svg
+[downloads-url]: https://npmjs.org/package/bytes
+[npm-image]: https://img.shields.io/npm/v/bytes.svg
+[npm-url]: https://npmjs.org/package/bytes
+[travis-image]: https://img.shields.io/travis/visionmedia/bytes.js/master.svg
+[travis-url]: https://travis-ci.org/visionmedia/bytes.js
diff --git a/node_modules/bytes/index.js b/node_modules/bytes/index.js
new file mode 100644
index 0000000..02d5bee
--- /dev/null
+++ b/node_modules/bytes/index.js
@@ -0,0 +1,141 @@
+/*!
+ * bytes
+ * Copyright(c) 2012-2014 TJ Holowaychuk
+ * Copyright(c) 2015 Jed Watson
+ * MIT Licensed
+ */
+
+'use strict';
+
+/**
+ * Module exports.
+ * @public
+ */
+
+module.exports = bytes;
+module.exports.format = format;
+module.exports.parse = parse;
+
+/**
+ * Module variables.
+ * @private
+ */
+
+var map = {
+ b: 1,
+ kb: 1 << 10,
+ mb: 1 << 20,
+ gb: 1 << 30,
+ tb: ((1 << 30) * 1024)
+};
+
+/**
+ *Convert the given value in bytes into a string or parse to string to an integer in bytes.
+ *
+ * @param {string|number} value
+ * @param {{
+ * case: [string],
+ * decimalPlaces: [number]
+ * fixedDecimals: [boolean]
+ * thousandsSeparator: [string]
+ * }} [options] bytes options.
+ *
+ * @returns {string|number|null}
+ */
+
+function bytes(value, options) {
+ if (typeof value === 'string') {
+ return parse(value);
+ }
+
+ if (typeof value === 'number') {
+ return format(value, options);
+ }
+
+ return null;
+}
+
+/**
+ * Format the given value in bytes into a string.
+ *
+ * If the value is negative, it is kept as such. If it is a float,
+ * it is rounded.
+ *
+ * @param {number} value
+ * @param {object} [options]
+ * @param {number} [options.decimalPlaces=2]
+ * @param {number} [options.fixedDecimals=false]
+ * @param {string} [options.thousandsSeparator=]
+ * @public
+ */
+
+function format(value, options) {
+ if (typeof value !== 'number') {
+ return null;
+ }
+
+ var mag = Math.abs(value);
+ var thousandsSeparator = (options && options.thousandsSeparator) || '';
+ var decimalPlaces = (options && options.decimalPlaces !== undefined) ? options.decimalPlaces : 2;
+ var fixedDecimals = Boolean(options && options.fixedDecimals);
+ var unit = 'B';
+
+ if (mag >= map.tb) {
+ unit = 'TB';
+ } else if (mag >= map.gb) {
+ unit = 'GB';
+ } else if (mag >= map.mb) {
+ unit = 'MB';
+ } else if (mag >= map.kb) {
+ unit = 'kB';
+ }
+
+ var val = value / map[unit.toLowerCase()];
+ var str = val.toFixed(decimalPlaces);
+
+ if (!fixedDecimals) {
+ str = str.replace(/(?:\.0*|(\.[^0]+)0+)$/, '$1');
+ }
+
+ if (thousandsSeparator) {
+ str = str.replace(/\B(?=(\d{3})+(?!\d))/g, thousandsSeparator);
+ }
+
+ return str + unit;
+}
+
+/**
+ * Parse the string value into an integer in bytes.
+ *
+ * If no unit is given, it is assumed the value is in bytes.
+ *
+ * @param {number|string} val
+ * @public
+ */
+
+function parse(val) {
+ if (typeof val === 'number' && !isNaN(val)) {
+ return val;
+ }
+
+ if (typeof val !== 'string') {
+ return null;
+ }
+
+ // Test if the string passed is valid
+ var results = val.match(/^((-|\+)?(\d+(?:\.\d+)?)) *(kb|mb|gb|tb)$/i);
+ var floatValue;
+ var unit = 'b';
+
+ if (!results) {
+ // Nothing could be extracted from the given string
+ floatValue = parseInt(val);
+ unit = 'b'
+ } else {
+ // Retrieve the value and the unit
+ floatValue = parseFloat(results[1]);
+ unit = results[4].toLowerCase();
+ }
+
+ return map[unit] * floatValue;
+}
diff --git a/node_modules/bytes/package.json b/node_modules/bytes/package.json
new file mode 100644
index 0000000..f979301
--- /dev/null
+++ b/node_modules/bytes/package.json
@@ -0,0 +1,107 @@
+{
+ "_args": [
+ [
+ "bytes@2.2.0",
+ "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/compression"
+ ]
+ ],
+ "_from": "bytes@2.2.0",
+ "_id": "bytes@2.2.0",
+ "_inCache": true,
+ "_installable": true,
+ "_location": "/bytes",
+ "_npmUser": {
+ "email": "doug@somethingdoug.com",
+ "name": "dougwilson"
+ },
+ "_npmVersion": "1.4.28",
+ "_phantomChildren": {},
+ "_requested": {
+ "name": "bytes",
+ "raw": "bytes@2.2.0",
+ "rawSpec": "2.2.0",
+ "scope": null,
+ "spec": "2.2.0",
+ "type": "version"
+ },
+ "_requiredBy": [
+ "/compression"
+ ],
+ "_resolved": "https://registry.npmjs.org/bytes/-/bytes-2.2.0.tgz",
+ "_shasum": "fd35464a403f6f9117c2de3609ecff9cae000588",
+ "_shrinkwrap": null,
+ "_spec": "bytes@2.2.0",
+ "_where": "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/compression",
+ "author": {
+ "email": "tj@vision-media.ca",
+ "name": "TJ Holowaychuk",
+ "url": "http://tjholowaychuk.com"
+ },
+ "bugs": {
+ "url": "https://github.com/visionmedia/bytes.js/issues"
+ },
+ "component": {
+ "scripts": {
+ "bytes/index.js": "index.js"
+ }
+ },
+ "contributors": [
+ {
+ "name": "Jed Watson",
+ "email": "jed.watson@me.com"
+ },
+ {
+ "name": "Théo FIDRY",
+ "email": "theo.fidry@gmail.com"
+ }
+ ],
+ "dependencies": {},
+ "description": "Utility to parse a string bytes to bytes and vice-versa",
+ "devDependencies": {
+ "mocha": "1.21.5"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "fd35464a403f6f9117c2de3609ecff9cae000588",
+ "tarball": "http://registry.npmjs.org/bytes/-/bytes-2.2.0.tgz"
+ },
+ "files": [
+ "History.md",
+ "LICENSE",
+ "Readme.md",
+ "index.js"
+ ],
+ "gitHead": "509a01a5472b9163ae5a7db41e2d6bd986fdf595",
+ "homepage": "https://github.com/visionmedia/bytes.js",
+ "keywords": [
+ "byte",
+ "bytes",
+ "convert",
+ "converter",
+ "parse",
+ "parser",
+ "utility"
+ ],
+ "license": "MIT",
+ "maintainers": [
+ {
+ "name": "tjholowaychuk",
+ "email": "tj@vision-media.ca"
+ },
+ {
+ "name": "dougwilson",
+ "email": "doug@somethingdoug.com"
+ }
+ ],
+ "name": "bytes",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/visionmedia/bytes.js.git"
+ },
+ "scripts": {
+ "test": "mocha --check-leaks --reporter spec"
+ },
+ "version": "2.2.0"
+}
diff --git a/node_modules/camelcase/index.js b/node_modules/camelcase/index.js
new file mode 100644
index 0000000..b46e100
--- /dev/null
+++ b/node_modules/camelcase/index.js
@@ -0,0 +1,27 @@
+'use strict';
+module.exports = function () {
+ var str = [].map.call(arguments, function (str) {
+ return str.trim();
+ }).filter(function (str) {
+ return str.length;
+ }).join('-');
+
+ if (!str.length) {
+ return '';
+ }
+
+ if (str.length === 1 || !(/[_.\- ]+/).test(str) ) {
+ if (str[0] === str[0].toLowerCase() && str.slice(1) !== str.slice(1).toLowerCase()) {
+ return str;
+ }
+
+ return str.toLowerCase();
+ }
+
+ return str
+ .replace(/^[_.\- ]+/, '')
+ .toLowerCase()
+ .replace(/[_.\- ]+(\w|$)/g, function (m, p1) {
+ return p1.toUpperCase();
+ });
+};
diff --git a/node_modules/camelcase/license b/node_modules/camelcase/license
new file mode 100644
index 0000000..654d0bf
--- /dev/null
+++ b/node_modules/camelcase/license
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus (sindresorhus.com)
+
+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.
diff --git a/node_modules/camelcase/package.json b/node_modules/camelcase/package.json
new file mode 100644
index 0000000..a830417
--- /dev/null
+++ b/node_modules/camelcase/package.json
@@ -0,0 +1,94 @@
+{
+ "_args": [
+ [
+ "camelcase@^1.0.2",
+ "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/yargs"
+ ]
+ ],
+ "_from": "camelcase@>=1.0.2 <2.0.0",
+ "_id": "camelcase@1.2.1",
+ "_inCache": true,
+ "_installable": true,
+ "_location": "/camelcase",
+ "_nodeVersion": "0.12.5",
+ "_npmUser": {
+ "email": "sindresorhus@gmail.com",
+ "name": "sindresorhus"
+ },
+ "_npmVersion": "2.11.2",
+ "_phantomChildren": {},
+ "_requested": {
+ "name": "camelcase",
+ "raw": "camelcase@^1.0.2",
+ "rawSpec": "^1.0.2",
+ "scope": null,
+ "spec": ">=1.0.2 <2.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/yargs"
+ ],
+ "_resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz",
+ "_shasum": "9bb5304d2e0b56698b2c758b08a3eaa9daa58a39",
+ "_shrinkwrap": null,
+ "_spec": "camelcase@^1.0.2",
+ "_where": "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/yargs",
+ "author": {
+ "email": "sindresorhus@gmail.com",
+ "name": "Sindre Sorhus",
+ "url": "http://sindresorhus.com"
+ },
+ "bugs": {
+ "url": "https://github.com/sindresorhus/camelcase/issues"
+ },
+ "dependencies": {},
+ "description": "Convert a dash/dot/underscore/space separated string to camelCase: foo-bar → fooBar",
+ "devDependencies": {
+ "ava": "0.0.4"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "9bb5304d2e0b56698b2c758b08a3eaa9daa58a39",
+ "tarball": "http://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ },
+ "files": [
+ "index.js"
+ ],
+ "gitHead": "185ba12da723be9c1ee986cc2956bdc4c517a141",
+ "homepage": "https://github.com/sindresorhus/camelcase",
+ "keywords": [
+ "camel",
+ "camel-case",
+ "camelcase",
+ "case",
+ "convert",
+ "dash",
+ "dot",
+ "hyphen",
+ "separator",
+ "string",
+ "text",
+ "underscore"
+ ],
+ "license": "MIT",
+ "maintainers": [
+ {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ }
+ ],
+ "name": "camelcase",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/sindresorhus/camelcase.git"
+ },
+ "scripts": {
+ "test": "node test.js"
+ },
+ "version": "1.2.1"
+}
diff --git a/node_modules/camelcase/readme.md b/node_modules/camelcase/readme.md
new file mode 100644
index 0000000..516dc39
--- /dev/null
+++ b/node_modules/camelcase/readme.md
@@ -0,0 +1,56 @@
+# camelcase [](https://travis-ci.org/sindresorhus/camelcase)
+
+> Convert a dash/dot/underscore/space separated string to camelCase: `foo-bar` → `fooBar`
+
+
+## Install
+
+```sh
+$ npm install --save camelcase
+```
+
+
+## Usage
+
+```js
+var camelCase = require('camelcase');
+
+camelCase('foo-bar');
+//=> fooBar
+
+camelCase('foo_bar');
+//=> fooBar
+
+camelCase('Foo-Bar');
+//=> fooBar
+
+camelCase('--foo.bar');
+//=> fooBar
+
+camelCase('__foo__bar__');
+//=> fooBar
+
+camelCase('foo bar');
+//=> fooBar
+
+console.log(process.argv[3]);
+//=> --foo-bar
+camelCase(process.argv[3]);
+//=> fooBar
+
+camelCase('foo', 'bar');
+//=> fooBar
+
+camelCase('__foo__', '--bar');
+//=> fooBar
+```
+
+
+## Related
+
+See [`decamelize`](https://github.com/sindresorhus/decamelize) for the inverse.
+
+
+## License
+
+MIT © [Sindre Sorhus](http://sindresorhus.com)
diff --git a/node_modules/center-align/LICENSE b/node_modules/center-align/LICENSE
new file mode 100644
index 0000000..65f90ac
--- /dev/null
+++ b/node_modules/center-align/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2015, Jon Schlinkert.
+
+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.
diff --git a/node_modules/center-align/README.md b/node_modules/center-align/README.md
new file mode 100644
index 0000000..cbcf3be
--- /dev/null
+++ b/node_modules/center-align/README.md
@@ -0,0 +1,74 @@
+# center-align [](http://badge.fury.io/js/center-align)
+
+> Center-align the text in a string.
+
+Install with [npm](https://www.npmjs.com/)
+
+```sh
+$ npm i center-align --save
+```
+
+## Usage
+
+```js
+var centerAlign = require('center-align');
+```
+
+**Example**
+
+If used on the following:
+
+```
+Lorem ipsum dolor sit amet,
+consectetur adipiscing
+elit, sed do eiusmod tempor incididunt
+ut labore et dolore
+magna aliqua. Ut enim ad minim
+veniam, quis
+```
+
+The result would be:
+
+```
+ Lorem ipsum dolor sit amet,
+ consectetur adipiscing
+elit, sed do eiusmod tempor incididunt
+ ut labore et dolore
+ magna aliqua. Ut enim ad minim
+ veniam, quis
+```
+
+## Related projects
+
+* [align-text](https://www.npmjs.com/package/align-text): Align the text in a string. | [homepage](https://github.com/jonschlinkert/align-text)
+* [justified](https://www.npmjs.com/package/justified): Wrap words to a specified length and justified the text. | [homepage](https://github.com/jonschlinkert/justified)
+* [right-align](https://www.npmjs.com/package/right-align): Right-align the text in a string. | [homepage](https://github.com/jonschlinkert/right-align)
+* [word-wrap](https://www.npmjs.com/package/word-wrap): Wrap words to a specified length. | [homepage](https://github.com/jonschlinkert/word-wrap)
+
+## Running tests
+
+Install dev dependencies:
+
+```sh
+$ npm i -d && npm test
+```
+
+## Contributing
+
+Pull requests and stars are always welcome. For bugs and feature requests, [please create an issue](https://github.com/jonschlinkert/center-align/issues/new).
+
+## Author
+
+**Jon Schlinkert**
+
++ [github/jonschlinkert](https://github.com/jonschlinkert)
++ [twitter/jonschlinkert](http://twitter.com/jonschlinkert)
+
+## License
+
+Copyright © 2015 Jon Schlinkert
+Released under the MIT license.
+
+***
+
+_This file was generated by [verb-cli](https://github.com/assemble/verb-cli) on October 27, 2015._
\ No newline at end of file
diff --git a/node_modules/center-align/index.js b/node_modules/center-align/index.js
new file mode 100644
index 0000000..c6ed54a
--- /dev/null
+++ b/node_modules/center-align/index.js
@@ -0,0 +1,16 @@
+/*!
+ * center-align
+ *
+ * Copycenter (c) 2015, Jon Schlinkert.
+ * Licensed under the MIT License.
+ */
+
+'use strict';
+
+var utils = require('./utils');
+
+module.exports = function centerAlign(val) {
+ return utils.align(val, function (len, longest) {
+ return Math.floor((longest - len) / 2);
+ });
+};
diff --git a/node_modules/center-align/package.json b/node_modules/center-align/package.json
new file mode 100644
index 0000000..4e5c794
--- /dev/null
+++ b/node_modules/center-align/package.json
@@ -0,0 +1,113 @@
+{
+ "_args": [
+ [
+ "center-align@^0.1.1",
+ "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/cliui"
+ ]
+ ],
+ "_from": "center-align@>=0.1.1 <0.2.0",
+ "_id": "center-align@0.1.3",
+ "_inCache": true,
+ "_installable": true,
+ "_location": "/center-align",
+ "_nodeVersion": "5.3.0",
+ "_npmOperationalInternal": {
+ "host": "packages-9-west.internal.npmjs.com",
+ "tmp": "tmp/center-align-0.1.3.tgz_1454366538829_0.9471865000668913"
+ },
+ "_npmUser": {
+ "email": "github@sellside.com",
+ "name": "jonschlinkert"
+ },
+ "_npmVersion": "3.3.12",
+ "_phantomChildren": {},
+ "_requested": {
+ "name": "center-align",
+ "raw": "center-align@^0.1.1",
+ "rawSpec": "^0.1.1",
+ "scope": null,
+ "spec": ">=0.1.1 <0.2.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/cliui"
+ ],
+ "_resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz",
+ "_shasum": "aa0d32629b6ee972200411cbd4461c907bc2b7ad",
+ "_shrinkwrap": null,
+ "_spec": "center-align@^0.1.1",
+ "_where": "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/cliui",
+ "author": {
+ "name": "Jon Schlinkert",
+ "url": "https://github.com/jonschlinkert"
+ },
+ "bugs": {
+ "url": "https://github.com/jonschlinkert/center-align/issues"
+ },
+ "dependencies": {
+ "align-text": "^0.1.3",
+ "lazy-cache": "^1.0.3"
+ },
+ "description": "Center-align the text in a string.",
+ "devDependencies": {
+ "mocha": "^2.2.0"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "aa0d32629b6ee972200411cbd4461c907bc2b7ad",
+ "tarball": "http://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ },
+ "files": [
+ "index.js",
+ "utils.js"
+ ],
+ "gitHead": "5c5fab5012fceaa3e21a00162958c0ed11109419",
+ "homepage": "https://github.com/jonschlinkert/center-align",
+ "keywords": [
+ "align",
+ "align-center",
+ "center",
+ "center-align",
+ "right",
+ "right-align",
+ "text",
+ "typography"
+ ],
+ "license": "MIT",
+ "main": "index.js",
+ "maintainers": [
+ {
+ "name": "doowb",
+ "email": "brian.woodward@gmail.com"
+ },
+ {
+ "name": "jonschlinkert",
+ "email": "github@sellside.com"
+ }
+ ],
+ "name": "center-align",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/jonschlinkert/center-align.git"
+ },
+ "scripts": {
+ "test": "mocha"
+ },
+ "verb": {
+ "related": {
+ "description": "",
+ "list": [
+ "align-text",
+ "justified",
+ "right-align",
+ "word-wrap"
+ ]
+ }
+ },
+ "version": "0.1.3"
+}
diff --git a/node_modules/center-align/utils.js b/node_modules/center-align/utils.js
new file mode 100644
index 0000000..aead6d2
--- /dev/null
+++ b/node_modules/center-align/utils.js
@@ -0,0 +1,40 @@
+'use strict';
+
+/**
+ * Lazily-required module dependencies (makes the application
+ * faster)
+ */
+
+var utils = require('lazy-cache')(require);
+
+/**
+ * Temporarily re-assign `require` to trick browserify and
+ * webpack into reconizing lazy dependencies.
+ *
+ * This tiny bit of ugliness has the huge dual advantage of
+ * only loading modules that are actually called at some
+ * point in the lifecycle of the application, whilst also
+ * allowing browserify and webpack to find modules that
+ * are depended on but never actually called.
+ */
+
+var fn = require;
+require = utils;
+
+/**
+ * Lazily required module dependencies
+ */
+
+require('align-text', 'align');
+
+/**
+ * Restore `require`
+ */
+
+require = fn;
+
+/**
+ * Expose `utils` modules
+ */
+
+module.exports = utils;
diff --git a/node_modules/chalk/index.js b/node_modules/chalk/index.js
new file mode 100644
index 0000000..2d85a91
--- /dev/null
+++ b/node_modules/chalk/index.js
@@ -0,0 +1,116 @@
+'use strict';
+var escapeStringRegexp = require('escape-string-regexp');
+var ansiStyles = require('ansi-styles');
+var stripAnsi = require('strip-ansi');
+var hasAnsi = require('has-ansi');
+var supportsColor = require('supports-color');
+var defineProps = Object.defineProperties;
+var isSimpleWindowsTerm = process.platform === 'win32' && !/^xterm/i.test(process.env.TERM);
+
+function Chalk(options) {
+ // detect mode if not set manually
+ this.enabled = !options || options.enabled === undefined ? supportsColor : options.enabled;
+}
+
+// use bright blue on Windows as the normal blue color is illegible
+if (isSimpleWindowsTerm) {
+ ansiStyles.blue.open = '\u001b[94m';
+}
+
+var styles = (function () {
+ var ret = {};
+
+ Object.keys(ansiStyles).forEach(function (key) {
+ ansiStyles[key].closeRe = new RegExp(escapeStringRegexp(ansiStyles[key].close), 'g');
+
+ ret[key] = {
+ get: function () {
+ return build.call(this, this._styles.concat(key));
+ }
+ };
+ });
+
+ return ret;
+})();
+
+var proto = defineProps(function chalk() {}, styles);
+
+function build(_styles) {
+ var builder = function () {
+ return applyStyle.apply(builder, arguments);
+ };
+
+ builder._styles = _styles;
+ builder.enabled = this.enabled;
+ // __proto__ is used because we must return a function, but there is
+ // no way to create a function with a different prototype.
+ /* eslint-disable no-proto */
+ builder.__proto__ = proto;
+
+ return builder;
+}
+
+function applyStyle() {
+ // support varags, but simply cast to string in case there's only one arg
+ var args = arguments;
+ var argsLen = args.length;
+ var str = argsLen !== 0 && String(arguments[0]);
+
+ if (argsLen > 1) {
+ // don't slice `arguments`, it prevents v8 optimizations
+ for (var a = 1; a < argsLen; a++) {
+ str += ' ' + args[a];
+ }
+ }
+
+ if (!this.enabled || !str) {
+ return str;
+ }
+
+ var nestedStyles = this._styles;
+ var i = nestedStyles.length;
+
+ // Turns out that on Windows dimmed gray text becomes invisible in cmd.exe,
+ // see https://github.com/chalk/chalk/issues/58
+ // If we're on Windows and we're dealing with a gray color, temporarily make 'dim' a noop.
+ var originalDim = ansiStyles.dim.open;
+ if (isSimpleWindowsTerm && (nestedStyles.indexOf('gray') !== -1 || nestedStyles.indexOf('grey') !== -1)) {
+ ansiStyles.dim.open = '';
+ }
+
+ while (i--) {
+ var code = ansiStyles[nestedStyles[i]];
+
+ // Replace any instances already present with a re-opening code
+ // otherwise only the part of the string until said closing code
+ // will be colored, and the rest will simply be 'plain'.
+ str = code.open + str.replace(code.closeRe, code.open) + code.close;
+ }
+
+ // Reset the original 'dim' if we changed it to work around the Windows dimmed gray issue.
+ ansiStyles.dim.open = originalDim;
+
+ return str;
+}
+
+function init() {
+ var ret = {};
+
+ Object.keys(styles).forEach(function (name) {
+ ret[name] = {
+ get: function () {
+ return build.call(this, [name]);
+ }
+ };
+ });
+
+ return ret;
+}
+
+defineProps(Chalk.prototype, init());
+
+module.exports = new Chalk();
+module.exports.styles = ansiStyles;
+module.exports.hasColor = hasAnsi;
+module.exports.stripColor = stripAnsi;
+module.exports.supportsColor = supportsColor;
diff --git a/node_modules/chalk/license b/node_modules/chalk/license
new file mode 100644
index 0000000..654d0bf
--- /dev/null
+++ b/node_modules/chalk/license
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) Sindre Sorhus (sindresorhus.com)
+
+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.
diff --git a/node_modules/chalk/package.json b/node_modules/chalk/package.json
new file mode 100644
index 0000000..fdc937d
--- /dev/null
+++ b/node_modules/chalk/package.json
@@ -0,0 +1,128 @@
+{
+ "_args": [
+ [
+ "chalk@^1.1.0",
+ "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-code-frame"
+ ]
+ ],
+ "_from": "chalk@>=1.1.0 <2.0.0",
+ "_id": "chalk@1.1.1",
+ "_inCache": true,
+ "_installable": true,
+ "_location": "/chalk",
+ "_nodeVersion": "0.12.7",
+ "_npmUser": {
+ "email": "sindresorhus@gmail.com",
+ "name": "sindresorhus"
+ },
+ "_npmVersion": "2.13.5",
+ "_phantomChildren": {},
+ "_requested": {
+ "name": "chalk",
+ "raw": "chalk@^1.1.0",
+ "rawSpec": "^1.1.0",
+ "scope": null,
+ "spec": ">=1.1.0 <2.0.0",
+ "type": "range"
+ },
+ "_requiredBy": [
+ "/babel-code-frame"
+ ],
+ "_resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.1.tgz",
+ "_shasum": "509afb67066e7499f7eb3535c77445772ae2d019",
+ "_shrinkwrap": null,
+ "_spec": "chalk@^1.1.0",
+ "_where": "/Users/edwinespaderos/projects/tts-1/React-Router-Tutorial/node_modules/babel-code-frame",
+ "bugs": {
+ "url": "https://github.com/chalk/chalk/issues"
+ },
+ "dependencies": {
+ "ansi-styles": "^2.1.0",
+ "escape-string-regexp": "^1.0.2",
+ "has-ansi": "^2.0.0",
+ "strip-ansi": "^3.0.0",
+ "supports-color": "^2.0.0"
+ },
+ "description": "Terminal string styling done right. Much color.",
+ "devDependencies": {
+ "coveralls": "^2.11.2",
+ "matcha": "^0.6.0",
+ "mocha": "*",
+ "nyc": "^3.0.0",
+ "require-uncached": "^1.0.2",
+ "resolve-from": "^1.0.0",
+ "semver": "^4.3.3",
+ "xo": "*"
+ },
+ "directories": {},
+ "dist": {
+ "shasum": "509afb67066e7499f7eb3535c77445772ae2d019",
+ "tarball": "http://registry.npmjs.org/chalk/-/chalk-1.1.1.tgz"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ },
+ "files": [
+ "index.js"
+ ],
+ "gitHead": "8b554e254e89c85c1fd04dcc444beeb15824e1a5",
+ "homepage": "https://github.com/chalk/chalk#readme",
+ "keywords": [
+ "256",
+ "ansi",
+ "cli",
+ "color",
+ "colors",
+ "colour",
+ "command-line",
+ "console",
+ "formatting",
+ "log",
+ "logging",
+ "rgb",
+ "shell",
+ "str",
+ "string",
+ "style",
+ "styles",
+ "terminal",
+ "text",
+ "tty",
+ "xterm"
+ ],
+ "license": "MIT",
+ "maintainers": [
+ {
+ "name": "sindresorhus",
+ "email": "sindresorhus@gmail.com"
+ },
+ {
+ "name": "jbnicolai",
+ "email": "jappelman@xebia.com"
+ },
+ {
+ "name": "unicorn",
+ "email": "sindresorhus+unicorn@gmail.com"
+ }
+ ],
+ "name": "chalk",
+ "optionalDependencies": {},
+ "readme": "ERROR: No README data found!",
+ "repository": {
+ "type": "git",
+ "url": "git+https://github.com/chalk/chalk.git"
+ },
+ "scripts": {
+ "bench": "matcha benchmark.js",
+ "coverage": "nyc npm test && nyc report",
+ "coveralls": "nyc npm test && nyc report --reporter=text-lcov | coveralls",
+ "test": "xo && mocha"
+ },
+ "version": "1.1.1",
+ "xo": {
+ "envs": [
+ "mocha",
+ "node"
+ ]
+ }
+}
diff --git a/node_modules/chalk/readme.md b/node_modules/chalk/readme.md
new file mode 100644
index 0000000..5cf111e
--- /dev/null
+++ b/node_modules/chalk/readme.md
@@ -0,0 +1,213 @@
+
+
+
+
+
+
+
+
+
+> Terminal string styling done right
+
+[](https://travis-ci.org/chalk/chalk)
+[](https://coveralls.io/r/chalk/chalk?branch=master)
+[](https://www.youtube.com/watch?v=9auOCbH5Ns4)
+
+
+[colors.js](https://github.com/Marak/colors.js) used to be the most popular string styling module, but it has serious deficiencies like extending `String.prototype` which causes all kinds of [problems](https://github.com/yeoman/yo/issues/68). Although there are other ones, they either do too much or not enough.
+
+**Chalk is a clean and focused alternative.**
+
+
+
+
+## Why
+
+- Highly performant
+- Doesn't extend `String.prototype`
+- Expressive API
+- Ability to nest styles
+- Clean and focused
+- Auto-detects color support
+- Actively maintained
+- [Used by ~4500 modules](https://www.npmjs.com/browse/depended/chalk) as of July 15, 2015
+
+
+## Install
+
+```
+$ npm install --save chalk
+```
+
+
+## Usage
+
+Chalk comes with an easy to use composable API where you just chain and nest the styles you want.
+
+```js
+var chalk = require('chalk');
+
+// style a string
+chalk.blue('Hello world!');
+
+// combine styled and normal strings
+chalk.blue('Hello') + 'World' + chalk.red('!');
+
+// compose multiple styles using the chainable API
+chalk.blue.bgRed.bold('Hello world!');
+
+// pass in multiple arguments
+chalk.blue('Hello', 'World!', 'Foo', 'bar', 'biz', 'baz');
+
+// nest styles
+chalk.red('Hello', chalk.underline.bgBlue('world') + '!');
+
+// nest styles of the same type even (color, underline, background)
+chalk.green(
+ 'I am a green line ' +
+ chalk.blue.underline.bold('with a blue substring') +
+ ' that becomes green again!'
+);
+```
+
+Easily define your own themes.
+
+```js
+var chalk = require('chalk');
+var error = chalk.bold.red;
+console.log(error('Error!'));
+```
+
+Take advantage of console.log [string substitution](http://nodejs.org/docs/latest/api/console.html#console_console_log_data).
+
+```js
+var name = 'Sindre';
+console.log(chalk.green('Hello %s'), name);
+//=> Hello Sindre
+```
+
+
+## API
+
+### chalk.`
+
+
+
+
+
+