diff --git a/.all-contributorsrc b/.all-contributorsrc
new file mode 100644
index 0000000000..e6ead42a5c
--- /dev/null
+++ b/.all-contributorsrc
@@ -0,0 +1,77 @@
+{
+ "projectName": "Less.js",
+ "projectOwner": "The Less CSS Team",
+ "repoType": "github",
+ "repoHost": "https://github.com/less/less.js",
+ "files": [
+ "README.md"
+ ],
+ "imageSize": 100,
+ "commit": true,
+ "commitConvention": "gitmoji",
+ "contributors": [
+ {
+ "login": "matthew-dean",
+ "name": "Matthew Dean",
+ "avatar_url": "https://avatars.githubusercontent.com/u/414752?v=4",
+ "profile": "https://github.com/matthew-dean",
+ "contributions": [
+ "code",
+ "doc",
+ "maintenance",
+ "projectManagement"
+ ]
+ },
+ {
+ "login": "cloudhead",
+ "name": "Alexis Sellier",
+ "avatar_url": "https://avatars.githubusercontent.com/u/40774?v=4",
+ "profile": "https://cloudhead.io/",
+ "contributions": [
+ "code",
+ "doc"
+ ]
+ },
+ {
+ "login": "lukeapage",
+ "name": "Luke Page",
+ "avatar_url": "https://avatars.githubusercontent.com/u/309321?v=4",
+ "profile": "https://github.com/lukeapage",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "seven-phases-max",
+ "name": "Max Mikhailov",
+ "avatar_url": "https://avatars.githubusercontent.com/u/5304376?v=4",
+ "profile": "https://github.com/seven-phases-max",
+ "contributions": [
+ "code"
+ ]
+ },
+ {
+ "login": "iChenLei",
+ "name": "Lei Chen",
+ "avatar_url": "https://avatars.githubusercontent.com/u/14012511?v=4",
+ "profile": "https://github.com/iChenLei",
+ "contributions": [
+ "code",
+ "bug",
+ "doc"
+ ]
+ },
+ {
+ "login": "puckowski",
+ "name": "Daniel Puckowski",
+ "avatar_url": "https://avatars.githubusercontent.com/u/3059609?v=4",
+ "profile": "https://github.com/puckowski",
+ "contributions": [
+ "code",
+ "bug"
+ ]
+ }
+ ],
+ "contributorsPerLine": 7,
+ "linkToUsage": true
+}
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index b3b39ba72e..eaac3e7fcd 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -9,86 +9,40 @@ on:
branches: [main, master]
jobs:
- basic_node_test:
- name: 'Basic tests on ubuntu-latest with nodejs v22 (current LTS version)'
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v2
- - uses: actions/setup-node@v2
- with:
- node-version: ${{ matrix.node }}
- - name: Install npm dependencies
- run: npm install
- - name: Print put node & npm version
- run: node --version && npm --version
- - name: Install chromium
- run: npx playwright install chromium
- - name: Run unit test
- run: npm run test
-
- windows_and_macos_test:
- name: 'Platform tests on ${{matrix.os}} with nodejs v${{matrix.node}}'
- needs: basic_node_test
+ test:
+ name: 'Tests on ${{matrix.os}} with Node "${{matrix.node}}"'
strategy:
matrix:
- # Test all mainstream operating system
- os: [macos-latest, windows-latest]
- node: [22]
- runs-on: ${{ matrix.os }}
- steps:
- # Pull repo to test machine
- - uses: actions/checkout@v2
- # Configures the node version used on GitHub-hosted runners
- - uses: actions/setup-node@v2
- with:
- # The Node.js version to configure
- node-version: ${{ matrix.node }}
- - name: Install npm dependencies
- run: npm install
- - name: Print put node & npm version
- # Output useful info for debugging.
- run: node --version && npm --version
- - name: Install chromium
- run: npx playwright install chromium
- - name: Run unit test
- run: npm run test
+ # Test all mainstream operating systems
+ os: [ubuntu-latest, macos-latest, windows-latest]
+ node: ['current']
+ include:
+ - os: ubuntu-latest
+ node: 'lts/*'
+ - os: ubuntu-latest
+ node: 'lts/-1'
+ - os: ubuntu-latest
+ node: 'lts/-2'
+ - os: ubuntu-latest
+ node: 'lts/-3'
- historical_versions_node_test:
- name: 'Historical version nodejs v${{matrix.node}} test'
- needs: basic_node_test
- strategy:
- matrix:
- os: [ubuntu-latest]
- node: [14, 16, 18, 20]
runs-on: ${{ matrix.os }}
+ # This has copy/paste steps and should be refactored using DRY
steps:
- - uses: actions/checkout@v2
- - uses: actions/setup-node@v2
- with:
- node-version: ${{ matrix.node }}
- - name: Install npm dependencies
- run: npm install
- - name: Print put node & npm version
- run: node --version && npm --version
- - name: Install chromium
- run: npx playwright install chromium
- - name: Run unit test
- run: npm run test
-
- latest_nodejs_testing_node23:
- name: 'Latest nodejs v23 test'
- needs: basic_node_test
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v2
- - uses: actions/setup-node@v2
- with:
- node-version: 23
- - name: Install npm dependencies
- run: npm install
- - name: Print put node & npm version
- run: node --version && npm --version
- - name: Install chromium
- run: npx playwright install chromium
- - name: Run unit test
- run: npm run test
+ - uses: actions/checkout@v4
+ - name: Install pnpm
+ uses: pnpm/action-setup@v4
+ with:
+ version: 8
+ - uses: actions/setup-node@v4
+ with:
+ node-version: ${{ matrix.node }}
+ cache: 'pnpm'
+ - name: Install dependencies
+ run: pnpm install
+ - name: Print put node & npm version
+ run: node --version && pnpm --version
+ - name: Install chromium
+ run: npx playwright install chromium
+ - name: Run unit test
+ run: pnpm run test
diff --git a/.nvmrc b/.nvmrc
new file mode 100644
index 0000000000..5edcff0364
--- /dev/null
+++ b/.nvmrc
@@ -0,0 +1 @@
+v16
\ No newline at end of file
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index b8e8b81301..dfc60c423f 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -25,7 +25,7 @@ Please report documentation issues in [the documentation project](https://github
* Please search for existing feature requests first to see if something similar already exists.
* Include a clear and specific use-case. We love new ideas, but we do not add language features without a reason.
-* Consider whether or not your language feature would be better as a function or implemented in a 3rd-party build system such as [assemble-less](http://github.com/assemble/assemble-less).
+* Consider whether or not your language feature would be better as a function or implemented in a 3rd-party build system
## Pull Requests
@@ -51,15 +51,4 @@ Learn more about [developing Less.js](http://lesscss.org/usage/#developing-less)
## Releases
-Releases are managed using Lerna. First, we determine if the release is a major (breaking), minor (new features), or patch (bug fix) change.
-
-Then, you can run Lerna with a command like:
-```
-npx lerna version minor
-```
-
-To publish, run the Lerna command for publishing without incrementing the version, as in:
-```
-npx lerna publish from-package --no-private
-```
-
+Releases are managed using PNPM. Instructions TBD
diff --git a/README.md b/README.md
index a4f22dede0..d3600e509b 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,7 @@
+
+[](#contributors-)
+
@@ -39,11 +42,39 @@ See the [changelog](CHANGELOG.md)
## Contributors
-### Code Contributors
-
This project exists thanks to all the people who contribute. [[Contribute](CONTRIBUTING.md)].
+
+
+
+
+
+
+
+
+
+
## [License](LICENSE)
diff --git a/dist/less.js b/dist/less.js
index 599d808b5d..4fb7e83964 100644
--- a/dist/less.js
+++ b/dist/less.js
@@ -962,47 +962,6 @@
ALL: 2
};
- /******************************************************************************
- Copyright (c) Microsoft Corporation.
-
- Permission to use, copy, modify, and/or distribute this software for any
- purpose with or without fee is hereby granted.
-
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- PERFORMANCE OF THIS SOFTWARE.
- ***************************************************************************** */
-
- var __assign = function() {
- __assign = Object.assign || function __assign(t) {
- for (var s, i = 1, n = arguments.length; i < n; i++) {
- s = arguments[i];
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
- }
- return t;
- };
- return __assign.apply(this, arguments);
- };
-
- function __spreadArray(to, from, pack) {
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
- if (ar || !(i in from)) {
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
- ar[i] = from[i];
- }
- }
- return to.concat(ar || Array.prototype.slice.call(from));
- }
-
- typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
- var e = new Error(message);
- return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
- };
-
/**
* Returns the object type of the given payload
*
@@ -1034,7 +993,7 @@
}
function assignProp(carry, key, newVal, originalObject, includeNonenumerable) {
- var propType = {}.propertyIsEnumerable.call(originalObject, key)
+ const propType = {}.propertyIsEnumerable.call(originalObject, key)
? 'enumerable'
: 'nonenumerable';
if (propType === 'enumerable')
@@ -1058,22 +1017,21 @@
* @returns {T} the target with replaced values
* @export
*/
- function copy(target, options) {
- if (options === void 0) { options = {}; }
+ function copy(target, options = {}) {
if (isArray(target)) {
- return target.map(function (item) { return copy(item, options); });
+ return target.map((item) => copy(item, options));
}
if (!isPlainObject(target)) {
return target;
}
- var props = Object.getOwnPropertyNames(target);
- var symbols = Object.getOwnPropertySymbols(target);
- return __spreadArray(__spreadArray([], props, true), symbols, true).reduce(function (carry, key) {
+ const props = Object.getOwnPropertyNames(target);
+ const symbols = Object.getOwnPropertySymbols(target);
+ return [...props, ...symbols].reduce((carry, key) => {
if (isArray(options.props) && !options.props.includes(key)) {
return carry;
}
- var val = target[key];
- var newVal = copy(val, options);
+ const val = target[key];
+ const newVal = copy(val, options);
assignProp(carry, key, newVal, target, options.nonenumerable);
return carry;
}, {});
@@ -1299,20 +1257,24 @@
* @returns {string}
*/
LessError.prototype.toString = function (options) {
+ var _a;
options = options || {};
+ var isWarning = ((_a = this.type) !== null && _a !== void 0 ? _a : '').toLowerCase().includes('warning');
+ var type = isWarning ? this.type : "".concat(this.type, "Error");
+ var color = isWarning ? 'yellow' : 'red';
var message = '';
var extract = this.extract || [];
var error = [];
var stylize = function (str) { return str; };
if (options.stylize) {
- var type = typeof options.stylize;
- if (type !== 'function') {
- throw Error("options.stylize should be a function, got a ".concat(type, "!"));
+ var type_1 = typeof options.stylize;
+ if (type_1 !== 'function') {
+ throw Error("options.stylize should be a function, got a ".concat(type_1, "!"));
}
stylize = options.stylize;
}
if (this.line !== null) {
- if (typeof extract[0] === 'string') {
+ if (!isWarning && typeof extract[0] === 'string') {
error.push(stylize("".concat(this.line - 1, " ").concat(extract[0]), 'grey'));
}
if (typeof extract[1] === 'string') {
@@ -1324,21 +1286,21 @@
}
error.push(errorTxt);
}
- if (typeof extract[2] === 'string') {
+ if (!isWarning && typeof extract[2] === 'string') {
error.push(stylize("".concat(this.line + 1, " ").concat(extract[2]), 'grey'));
}
error = "".concat(error.join('\n') + stylize('', 'reset'), "\n");
}
- message += stylize("".concat(this.type, "Error: ").concat(this.message), 'red');
+ message += stylize("".concat(type, ": ").concat(this.message), color);
if (this.filename) {
- message += stylize(' in ', 'red') + this.filename;
+ message += stylize(' in ', color) + this.filename;
}
if (this.line) {
message += stylize(" on line ".concat(this.line, ", column ").concat(this.column + 1, ":"), 'grey');
}
message += "\n".concat(error);
if (this.callLine) {
- message += "".concat(stylize('from ', 'red') + (this.filename || ''), "/n");
+ message += "".concat(stylize('from ', color) + (this.filename || ''), "/n");
message += "".concat(stylize(this.callLine, 'grey'), " ").concat(this.callExtract, "/n");
}
return message;
@@ -1519,7 +1481,8 @@
// context
'processImports',
// Used by the import manager to stop multiple import visitors being created.
- 'pluginManager' // Used as the plugin manager for the session
+ 'pluginManager',
+ 'quiet', // option - whether to log warnings
];
contexts.Parse = function (options) {
copyFromOriginal(options, this, parseCopyProperties);
@@ -2006,7 +1969,12 @@
catch (_) { }
if (!indices["".concat(extend.index, " ").concat(selector)]) {
indices["".concat(extend.index, " ").concat(selector)] = true;
- logger$1.warn("extend '".concat(selector, "' has no matches"));
+ /**
+ * @todo Shouldn't this be an error? To alert the developer
+ * that they may have made an error in the selector they are
+ * targeting?
+ */
+ logger$1.warn("WARNING: extend '".concat(selector, "' has no matches"));
}
});
};
@@ -3310,6 +3278,22 @@
message: msg
}, imports);
}
+ /**
+ *
+ * @param {string} msg
+ * @param {number} index
+ * @param {string} type
+ */
+ function warn(msg, index, type) {
+ if (!context.quiet) {
+ logger$1.warn((new LessError({
+ index: index !== null && index !== void 0 ? index : parserInput.i,
+ filename: fileInfo.filename,
+ type: type ? "".concat(type.toUpperCase(), " WARNING") : 'WARNING',
+ message: msg
+ }, imports)).toString());
+ }
+ }
function expect(arg, msg) {
// some older browsers return typeof 'function' for RegExp
var result = (arg instanceof Function) ? arg.call(parsers) : parserInput.$re(arg);
@@ -4017,11 +4001,20 @@
do {
option = null;
elements = null;
+ var first = true;
while (!(option = parserInput.$re(/^(all)(?=\s*(\)|,))/))) {
e = this.element();
if (!e) {
break;
}
+ /**
+ * @note - This will not catch selectors in pseudos like :is() and :where() because
+ * they don't currently parse their contents as selectors.
+ */
+ if (!first && e.combinator.value) {
+ warn('Targeting complex selectors can have unexpected behavior, and this behavior may change in the future.', index);
+ }
+ first = false;
if (elements) {
elements.push(e);
}
@@ -4081,16 +4074,23 @@
var elements;
var args;
var hasParens;
+ var parensIndex;
+ var parensWS = false;
if (s !== '.' && s !== '#') {
return;
}
parserInput.save(); // stop us absorbing part of an invalid selector
elements = this.elements();
if (elements) {
+ parensIndex = parserInput.i;
if (parserInput.$char('(')) {
+ parensWS = parserInput.isWhitespace(-2);
args = this.args(true).args;
expectChar(')');
hasParens = true;
+ if (parensWS) {
+ warn('Whitespace between a mixin name and parentheses for a mixin call is deprecated', parensIndex, 'DEPRECATED');
+ }
}
if (getLookup !== false) {
lookups = this.ruleLookups();
@@ -4114,6 +4114,9 @@
return new tree.NamespaceValue(mixin, lookups);
}
else {
+ if (!hasParens) {
+ warn('Calling a mixin without parentheses is deprecated', parensIndex, 'DEPRECATED');
+ }
return mixin;
}
}
@@ -4403,24 +4406,25 @@
expectChar(')');
return new tree.Quoted('', "alpha(opacity=".concat(value, ")"));
},
- //
- // A Selector Element
- //
- // div
- // + h1
- // #socks
- // input[type="text"]
- //
- // Elements are the building blocks for Selectors,
- // they are made out of a `Combinator` (see combinator rule),
- // and an element name, such as a tag a class, or `*`.
- //
+ /**
+ * A Selector Element
+ *
+ * div
+ * + h1
+ * #socks
+ * input[type="text"]
+ *
+ * Elements are the building blocks for Selectors,
+ * they are made out of a `Combinator` (see combinator rule),
+ * and an element name, such as a tag a class, or `*`.
+ */
element: function () {
var e;
var c;
var v;
var index = parserInput.i;
c = this.combinator();
+ /** This selector parser is quite simplistic and will pass a number of invalid selectors. */
e = parserInput.$re(/^(?:\d+\.\d+|\d+)%/) ||
// eslint-disable-next-line no-control-regex
parserInput.$re(/^(?:[.#]?|:*)(?:[\w-]|[^\x00-\x9f]|\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+/) ||
@@ -5237,7 +5241,14 @@
break;
}
parserInput.save();
- op = parserInput.$char('/') || parserInput.$char('*') || parserInput.$str('./');
+ op = parserInput.$char('/') || parserInput.$char('*');
+ if (!op) {
+ var index = parserInput.i;
+ op = parserInput.$str('./');
+ if (op) {
+ warn('./ operator is deprecated', index, 'DEPRECATED');
+ }
+ }
if (!op) {
parserInput.forget();
break;
@@ -7113,6 +7124,47 @@
}
});
+ /******************************************************************************
+ Copyright (c) Microsoft Corporation.
+
+ Permission to use, copy, modify, and/or distribute this software for any
+ purpose with or without fee is hereby granted.
+
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ PERFORMANCE OF THIS SOFTWARE.
+ ***************************************************************************** */
+
+ var __assign = function() {
+ __assign = Object.assign || function __assign(t) {
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
+ s = arguments[i];
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+ }
+ return t;
+ };
+ return __assign.apply(this, arguments);
+ };
+
+ function __spreadArray(to, from, pack) {
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
+ if (ar || !(i in from)) {
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
+ ar[i] = from[i];
+ }
+ }
+ return to.concat(ar || Array.prototype.slice.call(from));
+ }
+
+ typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
+ var e = new Error(message);
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
+ };
+
var Expression = function (value, noSpacing) {
this.value = value;
this.noSpacing = noSpacing;
@@ -10855,19 +10907,22 @@
var version = "4.2.2";
function parseNodeVersion(version) {
- var match = version.match(/^v(\d{1,2})\.(\d{1,2})\.(\d{1,2})(?:-([0-9A-Za-z-.]+))?(?:\+([0-9A-Za-z-.]+))?$/); // eslint-disable-line max-len
- if (!match) {
- throw new Error('Unable to parse: ' + version);
- }
- var res = {
- major: parseInt(match[1], 10),
- minor: parseInt(match[2], 10),
- patch: parseInt(match[3], 10),
- pre: match[4] || '',
- build: match[5] || '',
- };
- return res;
+ var match = version.match(/^v(\d{1,2})\.(\d{1,2})\.(\d{1,2})(?:-([0-9A-Za-z-.]+))?(?:\+([0-9A-Za-z-.]+))?$/); // eslint-disable-line max-len
+ if (!match) {
+ throw new Error('Unable to parse: ' + version);
+ }
+
+ var res = {
+ major: parseInt(match[1], 10),
+ minor: parseInt(match[2], 10),
+ patch: parseInt(match[3], 10),
+ pre: match[4] || '',
+ build: match[5] || '',
+ };
+
+ return res;
}
+
var parseNodeVersion_1 = parseNodeVersion;
function lessRoot (environment, fileManagers) {
diff --git a/dist/less.min.js b/dist/less.min.js
index e59a2f5764..3574388401 100644
--- a/dist/less.min.js
+++ b/dist/less.min.js
@@ -7,5 +7,5 @@
*
* @license Apache-2.0
*/
-!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).less=t()}(this,(function(){"use strict";function e(e){return e.replace(/^[a-z-]+:\/+?[^/]+/,"").replace(/[?&]livereload=\w+/,"").replace(/^\//,"").replace(/\.[a-zA-Z]+$/,"").replace(/[^.\w-]+/g,"-").replace(/\./g,":")}function t(e,t){if(t)for(var n in t.dataset)if(Object.prototype.hasOwnProperty.call(t.dataset,n))if("env"===n||"dumpLineNumbers"===n||"rootpath"===n||"errorReporting"===n)e[n]=t.dataset[n];else try{e[n]=JSON.parse(t.dataset[n])}catch(e){}}var n=function(t,n,i){var r=i.href||"",s="less:".concat(i.title||e(r)),o=t.getElementById(s),a=!1,l=t.createElement("style");l.setAttribute("type","text/css"),i.media&&l.setAttribute("media",i.media),l.id=s,l.styleSheet||(l.appendChild(t.createTextNode(n)),a=null!==o&&o.childNodes.length>0&&l.childNodes.length>0&&o.firstChild.nodeValue===l.firstChild.nodeValue);var u=t.getElementsByTagName("head")[0];if(null===o||!1===a){var c=i&&i.nextSibling||null;c?c.parentNode.insertBefore(l,c):u.appendChild(l)}if(o&&!1===a&&o.parentNode.removeChild(o),l.styleSheet)try{l.styleSheet.cssText=n}catch(e){throw new Error("Couldn't reassign styleSheet.cssText.")}},i=function(e){var t,n=e.document;return n.currentScript||(t=n.getElementsByTagName("script"))[t.length-1]},r={error:function(e){this._fireEvent("error",e)},warn:function(e){this._fireEvent("warn",e)},info:function(e){this._fireEvent("info",e)},debug:function(e){this._fireEvent("debug",e)},addListener:function(e){this._listeners.push(e)},removeListener:function(e){for(var t=0;t=0;a--){var l=o[a];if(l[s?"supportsSync":"supports"](e,t,n,i))return l}return null},e.prototype.addFileManager=function(e){this.fileManagers.push(e)},e.prototype.clearFileManagers=function(){this.fileManagers=[]},e}(),o={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgrey:"#a9a9a9",darkgreen:"#006400",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",grey:"#808080",green:"#008000",greenyellow:"#adff2f",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgrey:"#d3d3d3",lightgreen:"#90ee90",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370d8",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#d87093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},a={length:{m:1,cm:.01,mm:.001,in:.0254,px:.0254/96,pt:.0254/72,pc:.0254/72*12},duration:{s:1,ms:.001},angle:{rad:1/(2*Math.PI),deg:1/360,grad:1/400,turn:1}},l={colors:o,unitConversions:a},u=function(){function e(){this.parent=null,this.visibilityBlocks=void 0,this.nodeVisible=void 0,this.rootNode=null,this.parsed=null}return Object.defineProperty(e.prototype,"currentFileInfo",{get:function(){return this.fileInfo()},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"index",{get:function(){return this.getIndex()},enumerable:!1,configurable:!0}),e.prototype.setParent=function(t,n){function i(t){t&&t instanceof e&&(t.parent=n)}Array.isArray(t)?t.forEach(i):i(t)},e.prototype.getIndex=function(){return this._index||this.parent&&this.parent.getIndex()||0},e.prototype.fileInfo=function(){return this._fileInfo||this.parent&&this.parent.fileInfo()||{}},e.prototype.isRulesetLike=function(){return!1},e.prototype.toCSS=function(e){var t=[];return this.genCSS(e,{add:function(e,n,i){t.push(e)},isEmpty:function(){return 0===t.length}}),t.join("")},e.prototype.genCSS=function(e,t){t.add(this.value)},e.prototype.accept=function(e){this.value=e.visit(this.value)},e.prototype.eval=function(){return this},e.prototype._operate=function(e,t,n,i){switch(t){case"+":return n+i;case"-":return n-i;case"*":return n*i;case"/":return n/i}},e.prototype.fround=function(e,t){var n=e&&e.numPrecision;return n?Number((t+2e-16).toFixed(n)):t},e.compare=function(t,n){if(t.compare&&"Quoted"!==n.type&&"Anonymous"!==n.type)return t.compare(n);if(n.compare)return-n.compare(t);if(t.type===n.type){if(t=t.value,n=n.value,!Array.isArray(t))return t===n?0:void 0;if(t.length===n.length){for(var i=0;it?1:void 0},e.prototype.blocksVisibility=function(){return void 0===this.visibilityBlocks&&(this.visibilityBlocks=0),0!==this.visibilityBlocks},e.prototype.addVisibilityBlock=function(){void 0===this.visibilityBlocks&&(this.visibilityBlocks=0),this.visibilityBlocks=this.visibilityBlocks+1},e.prototype.removeVisibilityBlock=function(){void 0===this.visibilityBlocks&&(this.visibilityBlocks=0),this.visibilityBlocks=this.visibilityBlocks-1},e.prototype.ensureVisibility=function(){this.nodeVisible=!0},e.prototype.ensureInvisibility=function(){this.nodeVisible=!1},e.prototype.isVisible=function(){return this.nodeVisible},e.prototype.visibilityInfo=function(){return{visibilityBlocks:this.visibilityBlocks,nodeVisible:this.nodeVisible}},e.prototype.copyVisibilityInfo=function(e){e&&(this.visibilityBlocks=e.visibilityBlocks,this.nodeVisible=e.nodeVisible)},e}(),c=function(e,t,n){var i=this;Array.isArray(e)?this.rgb=e:e.length>=6?(this.rgb=[],e.match(/.{2}/g).map((function(e,t){t<3?i.rgb.push(parseInt(e,16)):i.alpha=parseInt(e,16)/255}))):(this.rgb=[],e.split("").map((function(e,t){t<3?i.rgb.push(parseInt(e+e,16)):i.alpha=parseInt(e+e,16)/255}))),this.alpha=this.alpha||("number"==typeof t?t:1),void 0!==n&&(this.value=n)};function h(e,t){return Math.min(Math.max(e,0),t)}function f(e){return"#".concat(e.map((function(e){return((e=h(Math.round(e),255))<16?"0":"")+e.toString(16)})).join(""))}c.prototype=Object.assign(new u,{type:"Color",luma:function(){var e=this.rgb[0]/255,t=this.rgb[1]/255,n=this.rgb[2]/255;return.2126*(e=e<=.03928?e/12.92:Math.pow((e+.055)/1.055,2.4))+.7152*(t=t<=.03928?t/12.92:Math.pow((t+.055)/1.055,2.4))+.0722*(n=n<=.03928?n/12.92:Math.pow((n+.055)/1.055,2.4))},genCSS:function(e,t){t.add(this.toCSS(e))},toCSS:function(e,t){var n,i,r,s=e&&e.compress&&!t,o=[];if(i=this.fround(e,this.alpha),this.value)if(0===this.value.indexOf("rgb"))i<1&&(r="rgba");else{if(0!==this.value.indexOf("hsl"))return this.value;r=i<1?"hsla":"hsl"}else i<1&&(r="rgba");switch(r){case"rgba":o=this.rgb.map((function(e){return h(Math.round(e),255)})).concat(h(i,1));break;case"hsla":o.push(h(i,1));case"hsl":n=this.toHSL(),o=[this.fround(e,n.h),"".concat(this.fround(e,100*n.s),"%"),"".concat(this.fround(e,100*n.l),"%")].concat(o)}if(r)return"".concat(r,"(").concat(o.join(",".concat(s?"":" ")),")");if(n=this.toRGB(),s){var a=n.split("");a[1]===a[2]&&a[3]===a[4]&&a[5]===a[6]&&(n="#".concat(a[1]).concat(a[3]).concat(a[5]))}return n},operate:function(e,t,n){for(var i=new Array(3),r=this.alpha*(1-n.alpha)+n.alpha,s=0;s<3;s++)i[s]=this._operate(e,t,this.rgb[s],n.rgb[s]);return new c(i,r)},toRGB:function(){return f(this.rgb)},toHSL:function(){var e,t,n=this.rgb[0]/255,i=this.rgb[1]/255,r=this.rgb[2]/255,s=this.alpha,o=Math.max(n,i,r),a=Math.min(n,i,r),l=(o+a)/2,u=o-a;if(o===a)e=t=0;else{switch(t=l>.5?u/(2-o-a):u/(o+a),o){case n:e=(i-r)/u+(i=0&&"\n"!==t.charAt(n);)r++;return"number"==typeof e&&(i=(t.slice(0,e).match(/\n/g)||"").length),{line:i,column:r}}function A(e){var t,n=e.length,i=new Array(n);for(t=0;t|Function):(\d+):(\d+)/,$=function(e,t,n){Error.call(this);var i=e.filename||n;if(this.message=e.message,this.stack=e.stack,t&&i){var r=t.contents[i],s=_(e.index,r),o=s.line,a=s.column,l=e.call&&_(e.call,r).line,u=r?r.split("\n"):"";if(this.type=e.type||"Syntax",this.filename=i,this.index=e.index,this.line="number"==typeof o?o+1:null,this.column=a,!this.line&&this.stack){var c=this.stack.match(F),h=new Function("a","throw new Error()"),f=0;try{h()}catch(e){var p=e.stack.match(F);f=1-parseInt(p[2])}c&&(c[2]&&(this.line=parseInt(c[2])+f),c[3]&&(this.column=parseInt(c[3])))}this.callLine=l+1,this.callExtract=u[l],this.extract=[u[this.line-2],u[this.line-1],u[this.line]]}};if(void 0===Object.create){var L=function(){};L.prototype=Error.prototype,$.prototype=new L}else $.prototype=Object.create(Error.prototype);$.prototype.constructor=$,$.prototype.toString=function(e){e=e||{};var t="",n=this.extract||[],i=[],r=function(e){return e};if(e.stylize){var s=typeof e.stylize;if("function"!==s)throw Error("options.stylize should be a function, got a ".concat(s,"!"));r=e.stylize}if(null!==this.line){if("string"==typeof n[0]&&i.push(r("".concat(this.line-1," ").concat(n[0]),"grey")),"string"==typeof n[1]){var o="".concat(this.line," ");n[1]&&(o+=n[1].slice(0,this.column)+r(r(r(n[1].substr(this.column,1),"bold")+n[1].slice(this.column+1),"red"),"inverse")),i.push(o)}"string"==typeof n[2]&&i.push(r("".concat(this.line+1," ").concat(n[2]),"grey")),i="".concat(i.join("\n")+r("","reset"),"\n")}return t+=r("".concat(this.type,"Error: ").concat(this.message),"red"),this.filename&&(t+=r(" in ","red")+this.filename),this.line&&(t+=r(" on line ".concat(this.line,", column ").concat(this.column+1,":"),"grey")),t+="\n".concat(i),this.callLine&&(t+="".concat(r("from ","red")+(this.filename||""),"/n"),t+="".concat(r(this.callLine,"grey")," ").concat(this.callExtract,"/n")),t};var j={visitDeeper:!0},N=!1;function D(e){return e}var B=function(){function e(e){this._implementation=e,this._visitInCache={},this._visitOutCache={},N||(!function e(t,n){var i,r;for(i in t)switch(typeof(r=t[i])){case"function":r.prototype&&r.prototype.type&&(r.prototype.typeIndex=n++);break;case"object":n=e(r,n)}return n}(Qe,1),N=!0)}return e.prototype.visit=function(e){if(!e)return e;var t=e.typeIndex;if(!t)return e.value&&e.value.typeIndex&&this.visit(e.value),e;var n,i=this._implementation,r=this._visitInCache[t],s=this._visitOutCache[t],o=j;if(o.visitDeeper=!0,r||(r=i[n="visit".concat(e.type)]||D,s=i["".concat(n,"Out")]||D,this._visitInCache[t]=r,this._visitOutCache[t]=s),r!==D){var a=r.call(i,e,o);e&&i.isReplacing&&(e=a)}if(o.visitDeeper&&e)if(e.length)for(var l=0,u=e.length;lg.PARENS_DIVISION)||this.parensStack&&this.parensStack.length))},U.Eval.prototype.pathRequiresRewrite=function(e){return(this.rewriteUrls===b?W:G)(e)},U.Eval.prototype.rewritePath=function(e,t){var n;return t=t||"",n=this.normalizePath(t+e),W(e)&&G(t)&&!1===W(n)&&(n="./".concat(n)),n},U.Eval.prototype.normalizePath=function(e){var t,n=e.split("/").reverse();for(e=[];0!==n.length;)switch(t=n.pop()){case".":break;case"..":0===e.length||".."===e[e.length-1]?e.push(t):e.pop();break;default:e.push(t)}return e.join("/")};var J=function(){function e(e){this.imports=[],this.variableImports=[],this._onSequencerEmpty=e,this._currentDepth=0}return e.prototype.addImport=function(e){var t=this,n={callback:e,args:null,isReady:!1};return this.imports.push(n),function(){n.args=Array.prototype.slice.call(arguments,0),n.isReady=!0,t.tryRun()}},e.prototype.addVariableImport=function(e){this.variableImports.push(e)},e.prototype.tryRun=function(){this._currentDepth++;try{for(;;){for(;this.imports.length>0;){var e=this.imports[0];if(!e.isReady)return;this.imports=this.imports.slice(1),e.callback.apply(null,e.args)}if(0===this.variableImports.length)break;var t=this.variableImports[0];this.variableImports=this.variableImports.slice(1),t()}}finally{this._currentDepth--}0===this._currentDepth&&this._onSequencerEmpty&&this._onSequencerEmpty()},e}(),H=function(e,t){this._visitor=new B(this),this._importer=e,this._finish=t,this.context=new U.Eval,this.importCount=0,this.onceFileDetectionMap={},this.recursionDetector={},this._sequencer=new J(this._onSequencerEmpty.bind(this))};H.prototype={isReplacing:!1,run:function(e){try{this._visitor.visit(e)}catch(e){this.error=e}this.isFinished=!0,this._sequencer.tryRun()},_onSequencerEmpty:function(){this.isFinished&&this._finish(this.error)},visitImport:function(e,t){var n=e.options.inline;if(!e.css||n){var i=new U.Eval(this.context,A(this.context.frames)),r=i.frames[0];this.importCount++,e.isVariableImport()?this._sequencer.addVariableImport(this.processImportNode.bind(this,e,i,r)):this.processImportNode(e,i,r)}t.visitDeeper=!1},processImportNode:function(e,t,n){var i,r=e.options.inline;try{i=e.evalForImport(t)}catch(t){t.filename||(t.index=e.getIndex(),t.filename=e.fileInfo().filename),e.css=!0,e.error=t}if(!i||i.css&&!r)this.importCount--,this.isFinished&&this._sequencer.tryRun();else{i.options.multiple&&(t.importMultiple=!0);for(var s=void 0===i.css,o=0;o=0||(a=[u.selfSelectors[0]],(s=f.findMatch(l,a)).length&&(l.hasFoundMatches=!0,l.selfSelectors.forEach((function(e){var t=u.visibilityInfo();o=f.extendSelector(s,a,e,l.isVisible()),(c=new Qe.Extend(u.selector,u.option,0,u.fileInfo(),t)).selfSelectors=o,o[o.length-1].extendList=[c],h.push(c),c.ruleset=u.ruleset,c.parent_ids=c.parent_ids.concat(u.parent_ids,l.parent_ids),u.firstExtendOnThisSelectorPath&&(c.firstExtendOnThisSelectorPath=!0,u.ruleset.paths.push(o))}))));if(h.length){if(this.extendChainCount++,n>100){var p="{unable to calculate}",v="{unable to calculate}";try{p=h[0].selfSelectors[0].toCSS(),v=h[0].selector.toCSS()}catch(e){}throw{message:"extend circular reference detected. One of the circular extends is currently:".concat(p,":extend(").concat(v,")")}}return h.concat(f.doExtendChaining(h,t,n+1))}return h},e.prototype.visitDeclaration=function(e,t){t.visitDeeper=!1},e.prototype.visitMixinDefinition=function(e,t){t.visitDeeper=!1},e.prototype.visitSelector=function(e,t){t.visitDeeper=!1},e.prototype.visitRuleset=function(e,t){if(!e.root){var n,i,r,s,o=this.allExtendsStack[this.allExtendsStack.length-1],a=[],l=this;for(r=0;r0&&u[l.matched].combinator.value!==o?l=null:l.matched++,l&&(l.finished=l.matched===u.length,l.finished&&!e.allowAfter&&(r+1u&&c>0&&(h[h.length-1].elements=h[h.length-1].elements.concat(t[u].elements.slice(c)),c=0,u++),l=s.elements.slice(c,a.index).concat([o]).concat(n.elements.slice(1)),u===a.pathIndex&&r>0?h[h.length-1].elements=h[h.length-1].elements.concat(l):(h=h.concat(t.slice(u,a.pathIndex))).push(new Qe.Selector(l)),u=a.endPathIndex,(c=a.endPathElementIndex)>=t[u].elements.length&&(c=0,u++);return u0&&(h[h.length-1].elements=h[h.length-1].elements.concat(t[u].elements.slice(c)),u++),h=(h=h.concat(t.slice(u,t.length))).map((function(e){var t=e.createDerived(e.elements);return i?t.ensureVisibility():t.ensureInvisibility(),t}))},e.prototype.visitMedia=function(e,t){var n=e.allExtends.concat(this.allExtendsStack[this.allExtendsStack.length-1]);n=n.concat(this.doExtendChaining(n,e.allExtends)),this.allExtendsStack.push(n)},e.prototype.visitMediaOut=function(e){var t=this.allExtendsStack.length-1;this.allExtendsStack.length=t},e.prototype.visitAtRule=function(e,t){var n=e.allExtends.concat(this.allExtendsStack[this.allExtendsStack.length-1]);n=n.concat(this.doExtendChaining(n,e.allExtends)),this.allExtendsStack.push(n)},e.prototype.visitAtRuleOut=function(e){var t=this.allExtendsStack.length-1;this.allExtendsStack.length=t},e}(),X=function(){function e(){this.contexts=[[]],this._visitor=new B(this)}return e.prototype.run=function(e){return this._visitor.visit(e)},e.prototype.visitDeclaration=function(e,t){t.visitDeeper=!1},e.prototype.visitMixinDefinition=function(e,t){t.visitDeeper=!1},e.prototype.visitRuleset=function(e,t){var n,i=this.contexts[this.contexts.length-1],r=[];this.contexts.push(r),e.root||((n=e.selectors)&&(n=n.filter((function(e){return e.getIsOutput()})),e.selectors=n.length?n:n=null,n&&e.joinSelectors(r,i,n)),n||(e.rules=null),e.paths=r)},e.prototype.visitRulesetOut=function(e){this.contexts.length=this.contexts.length-1},e.prototype.visitMedia=function(e,t){var n=this.contexts[this.contexts.length-1];e.rules[0].root=0===n.length||n[0].multiMedia},e.prototype.visitAtRule=function(e,t){var n=this.contexts[this.contexts.length-1];e.rules&&e.rules.length&&(e.rules[0].root=e.isRooted||0===n.length||null)},e}(),Y=function(){function e(e){this._visitor=new B(this),this._context=e}return e.prototype.containsSilentNonBlockedChild=function(e){var t;if(!e)return!1;for(var n=0;n0},e.prototype.resolveVisibility=function(e){if(!e.blocksVisibility()){if(this.isEmpty(e))return;return e}var t=e.rules[0];if(this.keepOnlyVisibleChilds(t),!this.isEmpty(t))return e.ensureVisibility(),e.removeVisibilityBlock(),e},e.prototype.isVisibleRuleset=function(e){return!!e.firstRoot||!this.isEmpty(e)&&!(!e.root&&!this.hasVisibleSelector(e))},e}(),ee=function(e){this._visitor=new B(this),this._context=e,this.utils=new Y(e)};ee.prototype={isReplacing:!0,run:function(e){return this._visitor.visit(e)},visitDeclaration:function(e,t){if(!e.blocksVisibility()&&!e.variable)return e},visitMixinDefinition:function(e,t){e.frames=[]},visitExtend:function(e,t){},visitComment:function(e,t){if(!e.blocksVisibility()&&!e.isSilent(this._context))return e},visitMedia:function(e,t){var n=e.rules[0].rules;return e.accept(this._visitor),t.visitDeeper=!1,this.utils.resolveVisibility(e,n)},visitImport:function(e,t){if(!e.blocksVisibility())return e},visitAtRule:function(e,t){return e.rules&&e.rules.length?this.visitAtRuleWithBody(e,t):this.visitAtRuleWithoutBody(e,t)},visitAnonymous:function(e,t){if(!e.blocksVisibility())return e.accept(this._visitor),e},visitAtRuleWithBody:function(e,t){var n=function(e){var t=e.rules;return function(e){var t=e.rules;return 1===t.length&&(!t[0].paths||0===t[0].paths.length)}(e)?t[0].rules:t}(e);return e.accept(this._visitor),t.visitDeeper=!1,this.utils.isEmpty(e)||this._mergeRules(e.rules[0].rules),this.utils.resolveVisibility(e,n)},visitAtRuleWithoutBody:function(e,t){if(!e.blocksVisibility()){if("@charset"===e.name){if(this.charset){if(e.debugInfo){var n=new Qe.Comment("/* ".concat(e.toCSS(this._context).replace(/\n/g,"")," */\n"));return n.debugInfo=e.debugInfo,this._visitor.visit(n)}return}this.charset=!0}return e}},checkValidNodes:function(e,t){if(e)for(var n=0;n0?e.accept(this._visitor):e.rules=null,t.visitDeeper=!1}return e.rules&&(this._mergeRules(e.rules),this._removeDuplicateRules(e.rules)),this.utils.isVisibleRuleset(e)&&(e.ensureVisibility(),i.splice(0,0,e)),1===i.length?i[0]:i},_compileRulesetPaths:function(e){e.paths&&(e.paths=e.paths.filter((function(e){var t;for(" "===e[0].elements[0].combinator.value&&(e[0].elements[0].combinator=new Qe.Combinator("")),t=0;t=0;i--)if((n=e[i])instanceof Qe.Declaration)if(r[n.name]){(t=r[n.name])instanceof Qe.Declaration&&(t=r[n.name]=[r[n.name].toCSS(this._context)]);var s=n.toCSS(this._context);-1!==t.indexOf(s)?e.splice(i,1):t.push(s)}else r[n.name]=n}},_mergeRules:function(e){if(e){for(var t={},n=[],i=0;i0){var t=e[0],n=[],i=[new Qe.Expression(n)];e.forEach((function(e){"+"===e.merge&&n.length>0&&i.push(new Qe.Expression(n=[])),n.push(e.value),t.important=t.important||e.important})),t.value=new Qe.Value(i)}}))}}};var te={Visitor:B,ImportVisitor:H,MarkVisibleSelectorsVisitor:Q,ExtendVisitor:Z,JoinSelectorVisitor:X,ToCSSVisitor:ee};var ne=function(){var e,t,n,i,r,s,o,a=[],l={};function u(n){for(var i,a,c,h=l.i,f=t,p=l.i-o,v=l.i+s.length-p,d=l.i+=n,m=e;l.i=0){c={index:l.i,text:m.substr(l.i,y+2-l.i),isLineComment:!1},l.i+=c.text.length-1,l.commentStore.push(c);continue}}break}if(32!==i&&10!==i&&9!==i&&13!==i)break}if(s=s.slice(n+l.i-d+p),o=l.i,!s.length){if(tn||l.i===n&&e&&!i)&&(n=l.i,i=e);var r=a.pop();s=r.current,o=l.i=r.i,t=r.j},l.forget=function(){a.pop()},l.isWhitespace=function(t){var n=l.i+(t||0),i=e.charCodeAt(n);return 32===i||13===i||9===i||10===i},l.$re=function(e){l.i>o&&(s=s.slice(l.i-o),o=l.i);var t=e.exec(s);return t?(u(t[0].length),"string"==typeof t?t:1===t.length?t[0]:t):null},l.$char=function(t){return e.charAt(l.i)!==t?null:(u(1),t)},l.$peekChar=function(t){return e.charAt(l.i)!==t?null:t},l.$str=function(t){for(var n=t.length,i=0;ih&&(d=!1)}}while(d);return r||null},l.autoCommentAbsorb=!0,l.commentStore=[],l.finished=!1,l.peek=function(t){if("string"==typeof t){for(var n=0;n57||t<43||47===t||44===t},l.start=function(i,a,c){e=i,l.i=t=o=n=0,r=a?function(e,t){var n,i,r,s,o,a,l,u,c,h=e.length,f=0,p=0,v=[],d=0;function m(t){var n=o-d;n<512&&!t||!n||(v.push(e.slice(d,o+1)),d=o+1)}for(o=0;o=97&&l<=122||l<34))switch(l){case 40:p++,i=o;continue;case 41:if(--p<0)return t("missing opening `(`",o);continue;case 59:p||m();continue;case 123:f++,n=o;continue;case 125:if(--f<0)return t("missing opening `{`",o);f||p||m();continue;case 92:if(o96)){if(u==l){c=1;break}if(92==u){if(o==h-1)return t("unescaped `\\`",o);o++}}if(c)continue;return t("unmatched `".concat(String.fromCharCode(l),"`"),a);case 47:if(p||o==h-1)continue;if(47==(u=e.charCodeAt(o+1)))for(o+=2;on&&s>r?"missing closing `}` or `*/`":"missing closing `}`",n):0!==p?t("missing closing `)`",i):(m(!0),v)}(i,c):[i],s=r[0],u(0)},l.end=function(){var t,r=l.i>=e.length;return l.i=e.length-1,furthestChar:e[l.i]}},l};var ie=function e(t){return{_data:{},add:function(e,t){e=e.toLowerCase(),this._data.hasOwnProperty(e),this._data[e]=t},addMultiple:function(e){var t=this;Object.keys(e).forEach((function(n){t.add(n,e[n])}))},get:function(e){return this._data[e]||t&&t.get(e)},getLocalFunctions:function(){return this._data},inherit:function(){return e(this)},create:function(t){return e(t)}}}(null),re={queryInParens:!0},se={queryInParens:!0},oe=function(e,t,n,i,r,s){this.value=e,this._index=t,this._fileInfo=n,this.mapLines=i,this.rulesetLike=void 0!==r&&r,this.allowRoot=!0,this.copyVisibilityInfo(s)};oe.prototype=Object.assign(new u,{type:"Anonymous",eval:function(){return new oe(this.value,this._index,this._fileInfo,this.mapLines,this.rulesetLike,this.visibilityInfo())},compare:function(e){return e.toCSS&&this.toCSS()===e.toCSS()?0:void 0},isRulesetLike:function(){return this.rulesetLike},genCSS:function(e,t){this.nodeVisible=Boolean(this.value),this.nodeVisible&&t.add(this.value,this._fileInfo,this._index,this.mapLines)}});var ae=function e(t,n,i,r){var s;r=r||0;var o=ne();function a(e,t){throw new $({index:o.i,filename:i.filename,type:t||"Syntax",message:e},n)}function l(e,t){var n=e instanceof Function?e.call(s):o.$re(e);if(n)return n;a(t||("string"==typeof e?"expected '".concat(e,"' got '").concat(o.currentChar(),"'"):"unexpected token"))}function u(e,t){if(o.$char(e))return e;a(t||"expected '".concat(e,"' got '").concat(o.currentChar(),"'"))}function c(e){var t=i.filename;return{lineNumber:_(e,o.getInput()).line+1,fileName:t}}return{parserInput:o,imports:n,fileInfo:i,parseNode:function(e,t,a){var l,u=[],c=o;try{c.start(e,!1,(function(e,t){a({message:e,index:t+r})}));for(var h=0,f=void 0;f=t[h];h++)l=s[f](),u.push(l||null);c.end().isFinished?a(null,u):a(!0,null)}catch(e){throw new $({index:e.index+r,message:e.message},n,i.filename)}},parse:function(r,l,u){var c,h,f,p,v=null,d="";if(u&&u.disablePluginRule&&(s.plugin=function(){o.$re(/^@plugin?\s+/)&&a("@plugin statements are not allowed when disablePluginRule is set to true")}),h=u&&u.globalVars?"".concat(e.serializeVars(u.globalVars),"\n"):"",f=u&&u.modifyVars?"\n".concat(e.serializeVars(u.modifyVars)):"",t.pluginManager)for(var m=t.pluginManager.getPreProcessors(),g=0;g");return e},args:function(e){var t,n,i,r,l,u,c,h=s.entities,f={args:null,variadic:!1},p=[],v=[],d=[],m=!0;for(o.save();;){if(e)u=s.detachedRuleset()||s.expression();else{if(o.commentStore.length=0,o.$str("...")){f.variadic=!0,o.$char(";")&&!t&&(t=!0),(t?v:d).push({variadic:!0});break}u=h.variable()||h.property()||h.literal()||h.keyword()||this.call(!0)}if(!u||!m)break;r=null,u.throwAwayComments&&u.throwAwayComments(),l=u;var g=null;if(e?u.value&&1==u.value.length&&(g=u.value[0]):g=u,g&&(g instanceof Qe.Variable||g instanceof Qe.Property))if(o.$char(":")){if(p.length>0&&(t&&a("Cannot mix ; and , as delimiter types"),n=!0),!(l=s.detachedRuleset()||s.expression())){if(!e)return o.restore(),f.args=[],f;a("could not understand value for named argument")}r=i=g.name}else if(o.$str("...")){if(!e){f.variadic=!0,o.$char(";")&&!t&&(t=!0),(t?v:d).push({name:u.name,variadic:!0});break}c=!0}else e||(i=r=g.name,l=null);l&&p.push(l),d.push({name:r,value:l,expand:c}),o.$char(",")?m=!0:((m=";"===o.$char(";"))||t)&&(n&&a("Cannot mix ; and , as delimiter types"),t=!0,p.length>1&&(l=new Qe.Value(p)),v.push({name:i,value:l,expand:c}),i=null,p=[],n=!1)}return o.forget(),f.args=t?v:d,f},definition:function(){var e,t,n,i,r=[],a=!1;if(!("."!==o.currentChar()&&"#"!==o.currentChar()||o.peek(/^[^{]*\}/)))if(o.save(),t=o.$re(/^([#.](?:[\w-]|\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+)\s*\(/)){e=t[1];var u=this.args(!1);if(r=u.args,a=u.variadic,!o.$char(")"))return void o.restore("Missing closing ')'");if(o.commentStore.length=0,o.$str("when")&&(i=l(s.conditions,"expected condition")),n=s.block())return o.forget(),new Qe.mixin.Definition(e,r,n,i,a);o.restore()}else o.restore()},ruleLookups:function(){var e,t=[];if("["===o.currentChar()){for(;;){if(o.save(),!(e=this.lookupValue())&&""!==e){o.restore();break}t.push(e),o.forget()}return t.length>0?t:void 0}},lookupValue:function(){if(o.save(),o.$char("[")){var e=o.$re(/^(?:[@$]{0,2})[_a-zA-Z0-9-]*/);if(o.$char("]"))return e||""===e?(o.forget(),e):void o.restore();o.restore()}else o.restore()}},entity:function(){var e=this.entities;return this.comment()||e.literal()||e.variable()||e.url()||e.property()||e.call()||e.keyword()||this.mixin.call(!0)||e.javascript()},end:function(){return o.$char(";")||o.peek("}")},ieAlpha:function(){var e;if(o.$re(/^opacity=/i))return(e=o.$re(/^\d+/))||(e=l(s.entities.variable,"Could not parse alpha"),e="@{".concat(e.name.slice(1),"}")),u(")"),new Qe.Quoted("","alpha(opacity=".concat(e,")"))},element:function(){var e,t,n,s=o.i;if(t=this.combinator(),!(e=o.$re(/^(?:\d+\.\d+|\d+)%/)||o.$re(/^(?:[.#]?|:*)(?:[\w-]|[^\x00-\x9f]|\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+/)||o.$char("*")||o.$char("&")||this.attribute()||o.$re(/^\([^&()@]+\)/)||o.$re(/^[.#:](?=@)/)||this.entities.variableCurly()))if(o.save(),o.$char("("))if(n=this.selector(!1)){for(var a=[];o.$char(",");)a.push(n),a.push(new oe(",")),n=this.selector(!1);a.push(n),o.$char(")")?(e=a.length>1?new Qe.Paren(new le(a)):new Qe.Paren(n),o.forget()):o.restore("Missing closing ')'")}else o.restore("Missing closing ')'");else o.forget();if(e)return new Qe.Element(t,e,e instanceof Qe.Variable,s+r,i)},combinator:function(){var e=o.currentChar();if("/"===e){o.save();var t=o.$re(/^\/[a-z]+\//i);if(t)return o.forget(),new Qe.Combinator(t);o.restore()}if(">"===e||"+"===e||"~"===e||"|"===e||"^"===e){for(o.i++,"^"===e&&"^"===o.currentChar()&&(e="^^",o.i++);o.isWhitespace();)o.i++;return new Qe.Combinator(e)}return o.isWhitespace(-1)?new Qe.Combinator(" "):new Qe.Combinator(null)},selector:function(e){var t,n,s,u,c,h,f,p=o.i;for(e=!1!==e;(e&&(n=this.extend())||e&&(h=o.$str("when"))||(u=this.element()))&&(h?f=l(this.conditions,"expected condition"):f?a("CSS guard can only be used at the end of selector"):n?c=c?c.concat(n):n:(c&&a("Extend can only be used at the end of selector"),s=o.currentChar(),Array.isArray(u)&&u.forEach((function(e){return t.push(e)})),t?t.push(u):t=[u],u=null),"{"!==s&&"}"!==s&&";"!==s&&","!==s&&")"!==s););if(t)return new Qe.Selector(t,c,f,p+r,i);c&&a("Extend must be used to extend a selector, it cannot be used on its own")},selectors:function(){for(var e,t;(e=this.selector())&&(t?t.push(e):t=[e],o.commentStore.length=0,e.condition&&t.length>1&&a("Guards are only currently allowed on a single selector."),o.$char(","));)e.condition&&a("Guards are only currently allowed on a single selector."),o.commentStore.length=0;return t},attribute:function(){if(o.$char("[")){var e,t,n,i,r=this.entities;return(e=r.variableCurly())||(e=l(/^(?:[_A-Za-z0-9-*]*\|)?(?:[_A-Za-z0-9-]|\\.)+/)),(n=o.$re(/^[|~*$^]?=/))&&(t=r.quoted()||o.$re(/^[0-9]+%/)||o.$re(/^[\w-]+/)||r.variableCurly())&&(i=o.$re(/^[iIsS]/)),u("]"),new Qe.Attribute(e,n,t,i)}},block:function(){var e;if(o.$char("{")&&(e=this.primary())&&o.$char("}"))return e},blockRuleset:function(){var e=this.block();return e&&(e=new Qe.Ruleset(null,e)),e},detachedRuleset:function(){var e,t,n;if(o.save(),!o.$re(/^[.#]\(/)||(t=(e=this.mixin.args(!1)).args,n=e.variadic,o.$char(")"))){var i=this.blockRuleset();if(i)return o.forget(),t?new Qe.mixin.Definition(null,t,i,null,n):new Qe.DetachedRuleset(i);o.restore()}else o.restore()},ruleset:function(){var e,n,i;if(o.save(),t.dumpLineNumbers&&(i=c(o.i)),(e=this.selectors())&&(n=this.block())){o.forget();var r=new Qe.Ruleset(e,n,t.strictImports);return t.dumpLineNumbers&&(r.debugInfo=i),r}o.restore()},declaration:function(){var e,t,n,s,a,l,u=o.i,c=o.currentChar();if("."!==c&&"#"!==c&&"&"!==c&&":"!==c)if(o.save(),e=this.variable()||this.ruleProperty()){if((l="string"==typeof e)&&(t=this.detachedRuleset())&&(n=!0),o.commentStore.length=0,!t){if(a=!l&&e.length>1&&e.pop().value,t=e[0].value&&"--"===e[0].value.slice(0,2)?o.$char(";")?new oe(""):this.permissiveValue(/[;}]/):this.anonymousValue())return o.forget(),new Qe.Declaration(e,t,!1,a,u+r,i);t||(t=this.value()),t?s=this.important():l&&(t=this.permissiveValue())}if(t&&(this.end()||n))return o.forget(),new Qe.Declaration(e,t,s,a,u+r,i);o.restore()}else o.restore()},anonymousValue:function(){var e=o.i,t=o.$re(/^([^.#@$+/'"*`(;{}-]*);/);if(t)return new Qe.Anonymous(t[1],e+r)},permissiveValue:function(e){var t,n,r,s,l=e||";",u=o.i,c=[];function h(){var e=o.currentChar();return"string"==typeof l?e===l:l.test(e)}if(!h()){s=[];do{(n=this.comment())?s.push(n):((n=this.entity())&&s.push(n),o.peek(",")&&(s.push(new Qe.Anonymous(",",o.i)),o.$char(",")))}while(n);if(r=h(),s.length>0){if(s=new Qe.Expression(s),r)return s;c.push(s)," "===o.prevChar()&&c.push(new Qe.Anonymous(" ",u))}if(o.save(),s=o.$parseUntil(l)){if("string"==typeof s&&a("Expected '".concat(s,"'"),"Parse"),1===s.length&&" "===s[0])return o.forget(),new Qe.Anonymous("",u);var f=void 0;for(t=0;t]=|<=|>=|[<>]|=)/)?(o.restore(),n=this.condition(),o.save(),(s=this.atomicCondition(null,n.rvalue))||o.restore()):(o.restore(),t=this.value()),o.$char(")")?n&&!t?(u.push(new Qe.Paren(new Qe.QueryInParens(n.op,n.lvalue,n.rvalue,s?s.op:null,s?s.rvalue:null,n._index))),t=n):n&&t?u.push(new Qe.Paren(new Qe.Declaration(n,t,null,null,o.i+r,i,!0))):t?u.push(new Qe.Paren(t)):a("badly formed media feature definition"):a("Missing closing ')'","Parse"))}while(t);if(o.forget(),u.length>0)return new Qe.Expression(u)},mediaFeatures:function(e){var t,n=this.entities,i=[];do{if(t=this.mediaFeature(e)){if(i.push(t),!o.$char(","))break}else if((t=n.variable()||n.mixinLookup())&&(i.push(t),!o.$char(",")))break}while(t);return i.length>0?i:null},prepareAndGetNestableAtRule:function(e,n,s,l){var u=this.mediaFeatures(l),c=this.block();c||a("media definitions require block statements after any features"),o.forget();var h=new e(c,u,n+r,i);return t.dumpLineNumbers&&(h.debugInfo=s),h},nestableAtRule:function(){var e,n=o.i;if(t.dumpLineNumbers&&(e=c(n)),o.save(),o.$peekChar("@")){if(o.$str("@media"))return this.prepareAndGetNestableAtRule(Qe.Media,n,e,re);if(o.$str("@container"))return this.prepareAndGetNestableAtRule(Qe.Container,n,e,se)}o.restore()},plugin:function(){var e,t,n,s=o.i;if(o.$re(/^@plugin\s+/)){if(n=(t=this.pluginArgs())?{pluginArgs:t,isPlugin:!0}:{isPlugin:!0},e=this.entities.quoted()||this.entities.url())return o.$char(";")||(o.i=s,a("missing semi-colon on @plugin")),new Qe.Import(e,null,n,s+r,i);o.i=s,a("malformed @plugin statement")}},pluginArgs:function(){if(o.save(),!o.$char("("))return o.restore(),null;var e=o.$re(/^\s*([^);]+)\)\s*/);return e[1]?(o.forget(),e[1].trim()):(o.restore(),null)},atrule:function(){var e,n,s,l,u,h,f,p=o.i,v=!0,d=!0;if("@"===o.currentChar()){if(n=this.import()||this.plugin()||this.nestableAtRule())return n;if(o.save(),e=o.$re(/^@[a-z-]+/)){switch(l=e,"-"==e.charAt(1)&&e.indexOf("-",2)>0&&(l="@".concat(e.slice(e.indexOf("-",2)+1))),l){case"@charset":u=!0,v=!1;break;case"@namespace":h=!0,v=!1;break;case"@keyframes":case"@counter-style":u=!0;break;case"@document":case"@supports":f=!0,d=!1;break;default:f=!0}if(o.commentStore.length=0,u?(n=this.entity())||a("expected ".concat(e," identifier")):h?(n=this.expression())||a("expected ".concat(e," expression")):f&&(n=this.permissiveValue(/^[{;]/),v="{"===o.currentChar(),n?n.value||(n=null):v||";"===o.currentChar()||a("".concat(e," rule is missing block or ending semi-colon"))),v&&(s=this.blockRuleset()),s||!v&&n&&o.$char(";"))return o.forget(),new Qe.AtRule(e,n,s,p+r,i,t.dumpLineNumbers?c(p):null,d);o.restore("at-rule options not recognised")}}},value:function(){var e,t=[],n=o.i;do{if((e=this.expression())&&(t.push(e),!o.$char(",")))break}while(e);if(t.length>0)return new Qe.Value(t,n+r)},important:function(){if("!"===o.currentChar())return o.$re(/^! *important/)},sub:function(){var e,t;if(o.save(),o.$char("("))return(e=this.addition())&&o.$char(")")?(o.forget(),(t=new Qe.Expression([e])).parens=!0,t):void o.restore("Expected ')'");o.restore()},multiplication:function(){var e,t,n,i,r;if(e=this.operand()){for(r=o.isWhitespace(-1);!o.peek(/^\/[*/]/);){if(o.save(),!(n=o.$char("/")||o.$char("*")||o.$str("./"))){o.forget();break}if(!(t=this.operand())){o.restore();break}o.forget(),e.parensInOp=!0,t.parensInOp=!0,i=new Qe.Operation(n,[i||e,t],r),r=o.isWhitespace(-1)}return i||e}},addition:function(){var e,t,n,i,r;if(e=this.multiplication()){for(r=o.isWhitespace(-1);(n=o.$re(/^[-+]\s+/)||!r&&(o.$char("+")||o.$char("-")))&&(t=this.multiplication());)e.parensInOp=!0,t.parensInOp=!0,i=new Qe.Operation(n,[i||e,t],r),r=o.isWhitespace(-1);return i||e}},conditions:function(){var e,t,n,i=o.i;if(e=this.condition(!0)){for(;o.peek(/^,\s*(not\s*)?\(/)&&o.$char(",")&&(t=this.condition(!0));)n=new Qe.Condition("or",n||e,t,i+r);return n||e}},condition:function(e){var t,n,i;if(t=this.conditionAnd(e)){if(n=o.$str("or")){if(!(i=this.condition(e)))return;t=new Qe.Condition(n,t,i)}return t}},conditionAnd:function(e){var t,n,i,r,s=this;if(t=(r=s.negatedCondition(e)||s.parenthesisCondition(e))||e?r:s.atomicCondition(e)){if(n=o.$str("and")){if(!(i=this.conditionAnd(e)))return;t=new Qe.Condition(n,t,i)}return t}},negatedCondition:function(e){if(o.$str("not")){var t=this.parenthesisCondition(e);return t&&(t.negate=!t.negate),t}},parenthesisCondition:function(e){var t;if(o.save(),o.$str("(")){if(t=function(t){var n;if(o.save(),n=t.condition(e)){if(o.$char(")"))return o.forget(),n;o.restore()}else o.restore()}(this))return o.forget(),t;if(t=this.atomicCondition(e)){if(o.$char(")"))return o.forget(),t;o.restore("expected ')' got '".concat(o.currentChar(),"'"))}else o.restore()}else o.restore()},atomicCondition:function(e,t){var n,i,s,l,u=this.entities,c=o.i,h=function(){return this.addition()||u.keyword()||u.quoted()||u.mixinLookup()}.bind(this);if(n=t||h())return o.$char(">")?l=o.$char("=")?">=":">":o.$char("<")?l=o.$char("=")?"<=":"<":o.$char("=")&&(l=o.$char(">")?"=>":o.$char("<")?"=<":"="),l?(i=h())?s=new Qe.Condition(l,n,i,c+r,!1):a("expected expression"):t||(s=new Qe.Condition("=",n,new Qe.Keyword("true"),c+r,!1)),s},operand:function(){var e,t=this.entities;o.peek(/^-[@$(]/)&&(e=o.$char("-"));var n=this.sub()||t.dimension()||t.color()||t.variable()||t.property()||t.call()||t.quoted(!0)||t.colorKeyword()||t.mixinLookup();return e&&(n.parensInOp=!0,n=new Qe.Negative(n)),n},expression:function(){var e,t,n=[],i=o.i;do{!(e=this.comment())||e.isLineComment?((e=this.addition()||this.entity())instanceof Qe.Comment&&(e=null),e&&(n.push(e),o.peek(/^\/[/*]/)||(t=o.$char("/"))&&n.push(new Qe.Anonymous(t,i+r)))):n.push(e)}while(e);if(n.length>0)return new Qe.Expression(n)},property:function(){var e=o.$re(/^(\*?-?[_a-zA-Z0-9-]+)\s*:/);if(e)return e[1]},ruleProperty:function(){var e,t,n=[],s=[];o.save();var a=o.$re(/^([_a-zA-Z0-9-]+)\s*:/);if(a)return n=[new Qe.Keyword(a[1])],o.forget(),n;function l(e){var t=o.i,i=o.$re(e);if(i)return s.push(t),n.push(i[1])}for(l(/^(\*?)/);l(/^((?:[\w-]+)|(?:[@$]\{[\w-]+\}))/););if(n.length>1&&l(/^((?:\+_|\+)?)\s*:/)){for(o.forget(),""===n[0]&&(n.shift(),s.shift()),t=0;t0;e--){var t=this.rules[e-1];if(t instanceof fe)return this.parseValue(t)}},parseValue:function(e){var t=this;function n(e){return e.value instanceof oe&&!e.parsed?("string"==typeof e.value.value?new ae(this.parse.context,this.parse.importManager,e.fileInfo(),e.value.getIndex()).parseNode(e.value.value,["value","important"],(function(t,n){t&&(e.parsed=!0),n&&(e.value=n[0],e.important=n[1]||"",e.parsed=!0)})):e.parsed=!0,e):e}if(Array.isArray(e)){var i=[];return e.forEach((function(e){i.push(n.call(t,e))})),i}return n.call(t,e)},rulesets:function(){if(!this.rules)return[];var e,t,n=[],i=this.rules;for(e=0;t=i[e];e++)t.isRuleset&&n.push(t);return n},prependRule:function(e){var t=this.rules;t?t.unshift(e):this.rules=[e],this.setParent(e,this)},find:function(e,t,n){t=t||this;var i,r,s=[],o=e.toCSS();return o in this._lookups?this._lookups[o]:(this.rulesets().forEach((function(o){if(o!==t)for(var a=0;ai){if(!n||n(o)){r=o.find(new le(e.elements.slice(i)),t,n);for(var l=0;l0&&t.add(l),e.firstSelector=!0,o[0].genCSS(e,t),e.firstSelector=!1,i=1;i0?(s=(r=A(e)).pop(),o=i.createDerived(A(s.elements))):o=i.createDerived([]),t.length>0){var a=n.combinator,l=t[0].elements[0];a.emptyOrWhitespace&&!l.combinator.emptyOrWhitespace&&(a=l.combinator),o.elements.push(new m(a,l.value,n.isVariable,n._index,n._fileInfo)),o.elements=o.elements.concat(t[0].elements.slice(1))}if(0!==o.elements.length&&r.push(o),t.length>1){var u=t.slice(1);u=u.map((function(e){return e.createDerived(e.elements,[])})),r=r.concat(u)}return r}function o(e,t,n,i,r){var o;for(o=0;o0?i[i.length-1]=i[i.length-1].createDerived(i[i.length-1].elements.concat(e)):i.push(new le(e));else t.push([new le(e)])}function l(e,t){var n=t.createDerived(t.elements,t.extendList,t.evaldCondition);return n.copyVisibilityInfo(e),n}var u,c;if(!function e(t,n,l){var u,c,h,f,v,d,g,y,b,w,x,S,I=!1;for(f=[],v=[[]],u=0;y=l.elements[u];u++)if("&"!==y.value){var C=(S=void 0,(x=y).value instanceof p&&(S=x.value.value)instanceof le?S:null);if(null!==C){a(f,v);var k,_=[],A=[];for(k=e(_,n,C),I=I||k,h=0;h<_.length;h++){o(v,[r(i(_[h],y),y)],y,l,A)}v=A,f=[]}else f.push(y)}else{for(I=!0,d=[],a(f,v),c=0;c0&&g[0].elements.push(new m(y.combinator,"",y.isVariable,y._index,y._fileInfo)),d.push(g);else for(h=0;h0&&(t.push(v[u]),w=v[u][b-1],v[u][b-1]=w.createDerived(w.elements,l.extendList));return I}(c=[],t,n))if(t.length>0)for(c=[],u=0;u0)for(t=0;t-1e-6&&(i=n.toFixed(20).replace(/0+$/,"")),e&&e.compress){if(0===n&&this.unit.isLength())return void t.add(i);n>0&&n<1&&(i=i.substr(1))}t.add(i),this.unit.genCSS(e,t)},operate:function(e,t,n){var i=this._operate(e,t,this.value,n.value),r=this.unit.clone();if("+"===t||"-"===t)if(0===r.numerator.length&&0===r.denominator.length)r=n.unit.clone(),this.unit.backupUnit&&(r.backupUnit=this.unit.backupUnit);else if(0===n.unit.numerator.length&&0===r.denominator.length);else{if(n=n.convertTo(this.unit.usedUnits()),e.strictUnits&&n.unit.toString()!==r.toString())throw new Error("Incompatible units. Change the units or use the unit function. "+"Bad units: '".concat(r.toString(),"' and '").concat(n.unit.toString(),"'."));i=this._operate(e,t,this.value,n.value)}else"*"===t?(r.numerator=r.numerator.concat(n.unit.numerator).sort(),r.denominator=r.denominator.concat(n.unit.denominator).sort(),r.cancel()):"/"===t&&(r.numerator=r.numerator.concat(n.unit.denominator).sort(),r.denominator=r.denominator.concat(n.unit.numerator).sort(),r.cancel());return new Se(i,r)},compare:function(e){var t,n;if(e instanceof Se){if(this.unit.isEmpty()||e.unit.isEmpty())t=this,n=e;else if(t=this.unify(),n=e.unify(),0!==t.unit.compare(n.unit))return;return u.numericCompare(t.value,n.value)}},unify:function(){return this.convertTo({length:"px",duration:"s",angle:"rad"})},convertTo:function(e){var t,n,i,r,s,o=this.value,l=this.unit.clone(),u={};if("string"==typeof e){for(t in a)a[t].hasOwnProperty(e)&&((u={})[t]=e);e=u}for(n in s=function(e,t){return i.hasOwnProperty(e)?(t?o/=i[e]/i[r]:o*=i[e]/i[r],r):e},e)e.hasOwnProperty(n)&&(r=e[n],i=a[n],l.map(s));return l.cancel(),new Se(o,l)}});var Ie=g,Ce=function(e,t,n){this.op=e.trim(),this.operands=t,this.isSpaced=n};Ce.prototype=Object.assign(new u,{type:"Operation",accept:function(e){this.operands=e.visitArray(this.operands)},eval:function(e){var t,n=this.operands[0].eval(e),i=this.operands[1].eval(e);if(e.isMathOn(this.op)){if(t="./"===this.op?"/":this.op,n instanceof Se&&i instanceof c&&(n=n.toColor()),i instanceof Se&&n instanceof c&&(i=i.toColor()),!n.operate||!i.operate){if((n instanceof Ce||i instanceof Ce)&&"/"===n.op&&e.math===Ie.PARENS_DIVISION)return new Ce(this.op,[n,i],this.isSpaced);throw{type:"Operation",message:"Operation on an invalid type"}}return n.operate(e,t,i)}return new Ce(this.op,[n,i],this.isSpaced)},genCSS:function(e,t){this.operands[0].genCSS(e,t),this.isSpaced&&t.add(" "),t.add(this.op),this.isSpaced&&t.add(" "),this.operands[1].genCSS(e,t)}});var ke=function(e,t){if(this.value=e,this.noSpacing=t,!e)throw new Error("Expression requires an array parameter")};ke.prototype=Object.assign(new u,{type:"Expression",accept:function(e){this.value=e.visitArray(this.value)},eval:function(e){var t,n=e.isMathOn(),i=this.parens,r=!1;return i&&e.inParenthesis(),this.value.length>1?t=new ke(this.value.map((function(t){return t.eval?t.eval(e):t})),this.noSpacing):1===this.value.length?(!this.value[0].parens||this.value[0].parensInOp||e.inCalc||(r=!0),t=this.value[0].eval(e)):t=this,i&&e.outOfParenthesis(),!this.parens||!this.parensInOp||n||r||t instanceof Se||(t=new p(t)),t},genCSS:function(e,t){for(var n=0;n1){var n=new le([],null,null,this.getIndex(),this.fileInfo()).createEmptySelectors();(t=new ye(n,e.mediaBlocks)).multiMedia=!0,t.copyVisibilityInfo(this.visibilityInfo()),this.setParent(t,this)}return delete e.mediaBlocks,delete e.mediaPath,t},evalNested:function(e){var t,n,i=e.mediaPath.concat([this]);for(t=0;t0;t--)e.splice(t,0,new oe("and"));return new ke(e)}))),this.setParent(this.features,this),new ye([],[])},permute:function(e){if(0===e.length)return[];if(1===e.length)return e[0];for(var t=[],n=this.permute(e.slice(1)),i=0;i1?"[".concat(e.value.map((function(e){return e.toCSS()})).join(", "),"]"):e.toCSS()}});var je=function(e,t,n,i){this.escaped=t,this.expression=e,this._index=n,this._fileInfo=i};je.prototype=Object.assign(new Le,{type:"JavaScript",eval:function(e){var t=this.evaluateJavaScript(this.expression,e),n=typeof t;return"number"!==n||isNaN(t)?"string"===n?new Re('"'.concat(t,'"'),t,this.escaped,this._index):Array.isArray(t)?new oe(t.join(", ")):new oe(t):new Se(t)}});var Ne=function(e,t){this.key=e,this.value=t};Ne.prototype=Object.assign(new u,{type:"Assignment",accept:function(e){this.value=e.visit(this.value)},eval:function(e){return this.value.eval?new Ne(this.key,this.value.eval(e)):this},genCSS:function(e,t){t.add("".concat(this.key,"=")),this.value.genCSS?this.value.genCSS(e,t):t.add(this.value)}});var De=function(e,t,n,i,r){this.op=e.trim(),this.lvalue=t,this.rvalue=n,this._index=i,this.negate=r};De.prototype=Object.assign(new u,{type:"Condition",accept:function(e){this.lvalue=e.visit(this.lvalue),this.rvalue=e.visit(this.rvalue)},eval:function(e){var t=function(e,t,n){switch(e){case"and":return t&&n;case"or":return t||n;default:switch(u.compare(t,n)){case-1:return"<"===e||"=<"===e||"<="===e;case 0:return"="===e||">="===e||"=<"===e||"<="===e;case 1:return">"===e||">="===e;default:return!1}}}(this.op,this.lvalue.eval(e),this.rvalue.eval(e));return this.negate?!t:t}});var Be=function(e,t,n,i,r,s){this.op=e.trim(),this.lvalue=t,this.mvalue=n,this.op2=i?i.trim():null,this.rvalue=r,this._index=s,this.mvalues=[]};Be.prototype=Object.assign(new u,{type:"QueryInParens",accept:function(e){this.lvalue=e.visit(this.lvalue),this.mvalue=e.visit(this.mvalue),this.rvalue&&(this.rvalue=e.visit(this.rvalue))},eval:function(e){var t,n;this.lvalue=this.lvalue.eval(e);for(var i=0;(n=e.frames[i])&&("Ruleset"!==n.type||!(t=n.rules.find((function(e){return!!(e instanceof fe&&e.variable)}))));i++);return this.mvalueCopy||(this.mvalueCopy=k(this.mvalue)),t?(this.mvalue=this.mvalueCopy,this.mvalue=this.mvalue.eval(e),this.mvalues.push(this.mvalue)):this.mvalue=this.mvalue.eval(e),this.rvalue&&(this.rvalue=this.rvalue.eval(e)),this},genCSS:function(e,t){this.lvalue.genCSS(e,t),t.add(" "+this.op+" "),this.mvalues.length>0&&(this.mvalue=this.mvalues.shift()),this.mvalue.genCSS(e,t),this.rvalue&&(t.add(" "+this.op2+" "),this.rvalue.genCSS(e,t))}});var Ue=function(e,t,n,i,r){this._index=n,this._fileInfo=i;var s=new le([],null,null,this._index,this._fileInfo).createEmptySelectors();this.features=new ue(t),this.rules=[new ye(s,e)],this.rules[0].allowImports=!0,this.copyVisibilityInfo(r),this.allowRoot=!0,this.setParent(s,this),this.setParent(this.features,this),this.setParent(this.rules,this)};Ue.prototype=Object.assign(new be,x(x({type:"Container"},Ve),{genCSS:function(e,t){t.add("@container ",this._fileInfo,this._index),this.features.genCSS(e,t),this.outputRuleset(e,t,this.rules)},eval:function(e){e.mediaBlocks||(e.mediaBlocks=[],e.mediaPath=[]);var t=new Ue(null,[],this._index,this._fileInfo,this.visibilityInfo());return this.debugInfo&&(this.rules[0].debugInfo=this.debugInfo,t.debugInfo=this.debugInfo),t.features=this.features.eval(e),e.mediaPath.push(t),e.mediaBlocks.push(t),this.rules[0].functionRegistry=e.frames[0].functionRegistry.inherit(),e.frames.unshift(this.rules[0]),t.rules=[this.rules[0].eval(e)],e.frames.shift(),e.mediaPath.pop(),0===e.mediaPath.length?t.evalTop(e):t.evalNested(e)}}));var qe=function(e){this.value=e};qe.prototype=Object.assign(new u,{type:"UnicodeDescriptor"});var Te=function(e){this.value=e};Te.prototype=Object.assign(new u,{type:"Negative",genCSS:function(e,t){t.add("-"),this.value.genCSS(e,t)},eval:function(e){return e.isMathOn()?new Ce("*",[new Se(-1),this.value]).eval(e):new Te(this.value.eval(e))}});var ze=function(e,t,n,i,r){switch(this.selector=e,this.option=t,this.object_id=ze.next_id++,this.parent_ids=[this.object_id],this._index=n,this._fileInfo=i,this.copyVisibilityInfo(r),this.allowRoot=!0,t){case"all":this.allowBefore=!0,this.allowAfter=!0;break;default:this.allowBefore=!1,this.allowAfter=!1}this.setParent(this.selector,this)};ze.prototype=Object.assign(new u,{type:"Extend",accept:function(e){this.selector=e.visit(this.selector)},eval:function(e){return new ze(this.selector.eval(e),this.option,this.getIndex(),this.fileInfo(),this.visibilityInfo())},clone:function(e){return new ze(this.selector,this.option,this.getIndex(),this.fileInfo(),this.visibilityInfo())},findSelfSelectors:function(e){var t,n,i=[];for(t=0;t0&&n.length&&""===n[0].combinator.value&&(n[0].combinator.value=" "),i=i.concat(e[t].elements);this.selfSelectors=[new le(i)],this.selfSelectors[0].copyVisibilityInfo(this.visibilityInfo())}}),ze.next_id=0;var Ge=function(e,t,n){this.variable=e,this._index=t,this._fileInfo=n,this.allowRoot=!0};Ge.prototype=Object.assign(new u,{type:"VariableCall",eval:function(e){var t,n=new Pe(this.variable,this.getIndex(),this.fileInfo()).eval(e),i=new $({message:"Could not evaluate variable call ".concat(this.variable)});if(!n.ruleset){if(n.rules)t=n;else if(Array.isArray(n))t=new ye("",n);else{if(!Array.isArray(n.value))throw i;t=new ye("",n.value)}n=new we(t)}if(n.ruleset)return n.callEval(e);throw i}});var We=function(e,t,n,i){this.value=e,this.lookups=t,this._index=n,this._fileInfo=i};We.prototype=Object.assign(new u,{type:"NamespaceValue",eval:function(e){var t,n,i=this.value.eval(e);for(t=0;tthis.params.length)return!1}n=Math.min(s,this.arity);for(var o=0;o0){for(c=!0,a=0;a0)f=2;else if(f=1,p[1]+p[2]>1)throw{type:"Runtime",message:"Ambiguous use of `default()` found when matching for `".concat(this.format(m),"`"),index:this.getIndex(),filename:this.fileInfo().filename};for(a=0;a0&&(e=e.slice(0,t)),(t=e.lastIndexOf("/"))<0&&(t=e.lastIndexOf("\\")),t<0?"":e.slice(0,t+1)},e.prototype.tryAppendExtension=function(e,t){return/(\.[a-z]*$)|([?;].*)$/.test(e)?e:e+t},e.prototype.tryAppendLessExtension=function(e){return this.tryAppendExtension(e,".less")},e.prototype.supportsSync=function(){return!1},e.prototype.alwaysMakePathsAbsolute=function(){return!1},e.prototype.isPathAbsolute=function(e){return/^(?:[a-z-]+:|\/|\\|#)/i.test(e)},e.prototype.join=function(e,t){return e?e+t:t},e.prototype.pathDiff=function(e,t){var n,i,r,s,o=this.extractUrlParts(e),a=this.extractUrlParts(t),l="";if(o.hostPart!==a.hostPart)return"";for(i=Math.max(a.directories.length,o.directories.length),n=0;nparseInt(t[n])?-1:1;return 0},e.prototype.versionToString=function(e){for(var t="",n=0;n1?e-1:e)<1?r+(s-r)*e*6:2*e<1?s:3*e<2?r+(s-r)*(2/3-e)*6:r}try{if(e instanceof c)return i=t?ot(t):e.alpha,new c(e.rgb,i,"hsla");e=ot(e)%360/360,t=nt(ot(t)),n=nt(ot(n)),i=nt(ot(i)),r=2*n-(s=n<=.5?n*(t+1):n+t-n*t);var a=[255*o(e+1/3),255*o(e),255*o(e-1/3)];return i=ot(i),new c(a,i,"hsla")}catch(e){}},hsv:function(e,t,n){return et.hsva(e,t,n,1)},hsva:function(e,t,n,i){var r,s;e=ot(e)%360/360*360,t=ot(t),n=ot(n),i=ot(i);var o=[n,n*(1-t),n*(1-(s=e/60-(r=Math.floor(e/60%6)))*t),n*(1-(1-s)*t)],a=[[0,3,1],[2,0,1],[1,0,3],[1,2,0],[3,1,0],[0,1,2]];return et.rgba(255*o[a[r][0]],255*o[a[r][1]],255*o[a[r][2]],i)},hue:function(e){return new Se(rt(e).h)},saturation:function(e){return new Se(100*rt(e).s,"%")},lightness:function(e){return new Se(100*rt(e).l,"%")},hsvhue:function(e){return new Se(st(e).h)},hsvsaturation:function(e){return new Se(100*st(e).s,"%")},hsvvalue:function(e){return new Se(100*st(e).v,"%")},red:function(e){return new Se(e.rgb[0])},green:function(e){return new Se(e.rgb[1])},blue:function(e){return new Se(e.rgb[2])},alpha:function(e){return new Se(rt(e).a)},luma:function(e){return new Se(e.luma()*e.alpha*100,"%")},luminance:function(e){var t=.2126*e.rgb[0]/255+.7152*e.rgb[1]/255+.0722*e.rgb[2]/255;return new Se(t*e.alpha*100,"%")},saturate:function(e,t,n){if(!e.rgb)return null;var i=rt(e);return void 0!==n&&"relative"===n.value?i.s+=i.s*t.value/100:i.s+=t.value/100,i.s=nt(i.s),it(e,i)},desaturate:function(e,t,n){var i=rt(e);return void 0!==n&&"relative"===n.value?i.s-=i.s*t.value/100:i.s-=t.value/100,i.s=nt(i.s),it(e,i)},lighten:function(e,t,n){var i=rt(e);return void 0!==n&&"relative"===n.value?i.l+=i.l*t.value/100:i.l+=t.value/100,i.l=nt(i.l),it(e,i)},darken:function(e,t,n){var i=rt(e);return void 0!==n&&"relative"===n.value?i.l-=i.l*t.value/100:i.l-=t.value/100,i.l=nt(i.l),it(e,i)},fadein:function(e,t,n){var i=rt(e);return void 0!==n&&"relative"===n.value?i.a+=i.a*t.value/100:i.a+=t.value/100,i.a=nt(i.a),it(e,i)},fadeout:function(e,t,n){var i=rt(e);return void 0!==n&&"relative"===n.value?i.a-=i.a*t.value/100:i.a-=t.value/100,i.a=nt(i.a),it(e,i)},fade:function(e,t){var n=rt(e);return n.a=t.value/100,n.a=nt(n.a),it(e,n)},spin:function(e,t){var n=rt(e),i=(n.h+t.value)%360;return n.h=i<0?360+i:i,it(e,n)},mix:function(e,t,n){n||(n=new Se(50));var i=n.value/100,r=2*i-1,s=rt(e).a-rt(t).a,o=((r*s==-1?r:(r+s)/(1+r*s))+1)/2,a=1-o,l=[e.rgb[0]*o+t.rgb[0]*a,e.rgb[1]*o+t.rgb[1]*a,e.rgb[2]*o+t.rgb[2]*a],u=e.alpha*i+t.alpha*(1-i);return new c(l,u)},greyscale:function(e){return et.desaturate(e,new Se(100))},contrast:function(e,t,n,i){if(!e.rgb)return null;if(void 0===n&&(n=et.rgba(255,255,255,1)),void 0===t&&(t=et.rgba(0,0,0,1)),t.luma()>n.luma()){var r=n;n=t,t=r}return i=void 0===i?.43:ot(i),e.luma().5&&(i=1,n=e>.25?Math.sqrt(e):((16*e-12)*e+4)*e),e-(1-2*t)*i*(n-e)},hardlight:function(e,t){return ut.overlay(t,e)},difference:function(e,t){return Math.abs(e-t)},exclusion:function(e,t){return e+t-2*e*t},average:function(e,t){return(e+t)/2},negation:function(e,t){return 1-Math.abs(e+t-1)}};for(var ct in ut)ut.hasOwnProperty(ct)&&(lt[ct]=lt.bind(null,ut[ct]));var ht=function(e){return Array.isArray(e.value)?e.value:Array(e)},ft={_SELF:function(e){return e},"~":function(){for(var e=[],t=0;to.value)&&(h[i]=r);else{if(void 0!==l&&a!==l)throw{type:"Argument",message:"incompatible types"};f[a]=h.length,h.push(r)}}return 1==h.length?h[0]:(t=h.map((function(e){return e.toCSS(c.context)})).join(this.context.compress?",":", "),new oe("".concat(e?"min":"max","(").concat(t,")")))},gt={min:function(){for(var e=[],t=0;t<'.concat(u,'Gradient id="g" ').concat(n,">"),r=0;r ");return i+="".concat(u,"Gradient> '),i=encodeURIComponent(i),i="data:image/svg+xml,".concat(i),new Oe(new Re("'".concat(i,"'"),i,!1,this.index,this.currentFileInfo),this.index,this.currentFileInfo)}}),ie.addMultiple(xt),ie.addMultiple(It),t};function kt(e,t){var n,i=(t=t||{}).variables,r=new U.Eval(t);"object"!=typeof i||Array.isArray(i)||(i=Object.keys(i).map((function(e){var t=i[e];return t instanceof Qe.Value||(t instanceof Qe.Expression||(t=new Qe.Expression([t])),t=new Qe.Value([t])),new Qe.Declaration("@".concat(e),t,!1,null,0)})),r.frames=[new Qe.Ruleset(null,i)]);var s,o,a=[new te.JoinSelectorVisitor,new te.MarkVisibleSelectorsVisitor(!0),new te.ExtendVisitor,new te.ToCSSVisitor({compress:Boolean(t.compress)})],l=[];if(t.pluginManager){o=t.pluginManager.visitor();for(var u=0;u<2;u++)for(o.first();s=o.get();)s.isPreEvalVisitor?0!==u&&-1!==l.indexOf(s)||(l.push(s),s.run(e)):0!==u&&-1!==a.indexOf(s)||(s.isPreVisitor?a.unshift(s):a.push(s))}n=e.eval(r);for(var c=0;c=t);n++);this.preProcessors.splice(n,0,{preProcessor:e,priority:t})},e.prototype.addPostProcessor=function(e,t){var n;for(n=0;n=t);n++);this.postProcessors.splice(n,0,{postProcessor:e,priority:t})},e.prototype.addFileManager=function(e){this.fileManagers.push(e)},e.prototype.getPreProcessors=function(){for(var e=[],t=0;t0){var i=void 0,r=JSON.stringify(this._sourceMapGenerator.toJSON());this.sourceMapURL?i=this.sourceMapURL:this._sourceMapFilename&&(i=this._sourceMapFilename),this.sourceMapURL=i,this.sourceMap=r}return this._css.join("")},t}()}(e=new s(e,t)),e)),a=function(e){return function(){function t(e,t,n){this.less=e,this.rootFilename=n.filename,this.paths=t.paths||[],this.contents={},this.contentsIgnoredChars={},this.mime=t.mime,this.error=null,this.context=t,this.queue=[],this.files={}}return t.prototype.push=function(t,n,i,s,o){var a=this,l=this.context.pluginManager.Loader;this.queue.push(t);var u=function(e,n,i){a.queue.splice(a.queue.indexOf(t),1);var l=i===a.rootFilename;s.optional&&e?(o(null,{rules:[]},!1,null),r.info("The file ".concat(i," was skipped because it was not found and the import was marked optional."))):(a.files[i]||s.inline||(a.files[i]={root:n,options:s}),e&&!a.error&&(a.error=e),o(e,n,l,i))},c={rewriteUrls:this.context.rewriteUrls,entryPath:i.entryPath,rootpath:i.rootpath,rootFilename:i.rootFilename},h=e.getFileManager(t,i.currentDirectory,this.context,e);if(h){var f,p,v=function(e){var t,n=e.filename,r=e.contents.replace(/^\uFEFF/,"");c.currentDirectory=h.getPath(n),c.rewriteUrls&&(c.rootpath=h.join(a.context.rootpath||"",h.pathDiff(c.currentDirectory,c.entryPath)),!h.isPathAbsolute(c.rootpath)&&h.alwaysMakePathsAbsolute()&&(c.rootpath=h.join(c.entryPath,c.rootpath))),c.filename=n;var o=new U.Parse(a.context);o.processImports=!1,a.contents[n]=r,(i.reference||s.reference)&&(c.reference=!0),s.isPlugin?(t=l.evalPlugin(r,o,a,s.pluginArgs,c))instanceof $?u(t,null,n):u(null,t,n):s.inline?u(null,r,n):!a.files[n]||a.files[n].options.multiple||s.multiple?new ae(o,a,c).parse(r,(function(e,t){u(e,t,n)})):u(null,a.files[n].root,n)},d=P(this.context);n&&(d.ext=s.isPlugin?".js":".less"),s.isPlugin?(d.mime="application/javascript",d.syncImport?f=l.loadPluginSync(t,i.currentDirectory,d,e,h):p=l.loadPlugin(t,i.currentDirectory,d,e,h)):d.syncImport?f=h.loadFileSync(t,i.currentDirectory,d,e):p=h.loadFile(t,i.currentDirectory,d,e,(function(e,t){e?u(e):v(t)})),f?f.filename?v(f):u(f):p&&p.then(v,u)}else u({message:"Could not find a file-manager for ".concat(t)})},t}()}(e);var u,c=function(e,t){var n=function(e,i,r){if("function"==typeof i?(r=i,i=E(this.options,{})):i=E(this.options,i||{}),!r){var s=this;return new Promise((function(t,r){n.call(s,e,i,(function(e,n){e?r(e):t(n)}))}))}this.parse(e,i,(function(e,n,i,s){if(e)return r(e);var o;try{o=new t(n,i).toCSS(s)}catch(e){return r(e)}r(null,o)}))};return n}(0,o),h=function(e,t,n){var i=function(e,t,r){if("function"==typeof t?(r=t,t=E(this.options,{})):t=E(this.options,t||{}),!r){var s=this;return new Promise((function(n,r){i.call(s,e,t,(function(e,t){e?r(e):n(t)}))}))}var o,a=void 0,l=new Pt(this,!t.reUsePluginManager);if(t.pluginManager=l,o=new U.Parse(t),t.rootFileInfo)a=t.rootFileInfo;else{var u=t.filename||"input",c=u.replace(/[^/\\]*$/,"");(a={filename:u,rewriteUrls:o.rewriteUrls,rootpath:o.rootpath||"",currentDirectory:c,entryPath:c,rootFilename:u}).rootpath&&"/"!==a.rootpath.slice(-1)&&(a.rootpath+="/")}var h=new n(this,o,a);this.importManager=h,t.plugins&&t.plugins.forEach((function(e){var t,n;if(e.fileContent){if(n=e.fileContent.replace(/^\uFEFF/,""),(t=l.Loader.evalPlugin(n,o,h,e.options,e.filename))instanceof $)return r(t)}else l.addPlugin(e)})),new ae(o,h,a).parse(e,(function(e,n){if(e)return r(e);r(null,n,h,t)}),t)};return i}(0,0,a),f=Rt("v".concat("4.2.2")),p={version:[f.major,f.minor,f.patch],data:l,tree:Qe,Environment:s,AbstractFileManager:Ke,AbstractPluginLoader:Ze,environment:e,visitors:te,Parser:ae,functions:Ct(e),contexts:U,SourceMapOutput:n,SourceMapBuilder:i,ParseTree:o,ImportManager:a,render:c,parse:h,LessError:$,transformTree:kt,utils:V,PluginManager:Pt,logger:r},v=function(e){return function(){var t=Object.create(e.prototype);return e.apply(t,Array.prototype.slice.call(arguments,0)),t}},d=Object.create(p);for(var m in p.tree)if("function"==typeof(u=p.tree[m]))d[m.toLowerCase()]=v(u);else for(var g in d[m]=Object.create(null),u)d[m][g.toLowerCase()]=v(u[g]);return p.parse=p.parse.bind(d),p.render=p.render.bind(d),d}var Vt={},Ft=function(){};Ft.prototype=Object.assign(new Ke,{alwaysMakePathsAbsolute:function(){return!0},join:function(e,t){return e?this.extractUrlParts(t,e).path:t},doXHR:function(e,t,n,i){var r=new XMLHttpRequest,s=!Mt.isFileProtocol||Mt.fileAsync;function o(t,n,i){t.status>=200&&t.status<300?n(t.responseText,t.getResponseHeader("Last-Modified")):"function"==typeof i&&i(t.status,e)}"function"==typeof r.overrideMimeType&&r.overrideMimeType("text/css"),Et.debug("XHR: Getting '".concat(e,"'")),r.open("GET",e,s),r.setRequestHeader("Accept",t||"text/x-less, text/css; q=0.9, */*; q=0.5"),r.send(null),Mt.isFileProtocol&&!Mt.fileAsync?0===r.status||r.status>=200&&r.status<300?n(r.responseText):i(r.status,e):s?r.onreadystatechange=function(){4==r.readyState&&o(r,n,i)}:o(r,n,i)},supports:function(){return!0},clearFileCache:function(){Vt={}},loadFile:function(e,t,n){t&&!this.isPathAbsolute(e)&&(e=t+e),e=n.ext?this.tryAppendExtension(e,n.ext):e,n=n||{};var i=this.extractUrlParts(e,window.location.href).url,r=this;return new Promise((function(e,t){if(n.useFileCache&&Vt[i])try{var s=Vt[i];return e({contents:s,filename:i,webInfo:{lastModified:new Date}})}catch(e){return t({filename:i,message:"Error loading file ".concat(i," error was ").concat(e.message)})}r.doXHR(i,n.mime,(function(t,n){Vt[i]=t,e({contents:t,filename:i,webInfo:{lastModified:n}})}),(function(e,n){t({type:"File",message:"'".concat(n,"' wasn't found (").concat(e,")"),href:i})}))}))}});var $t=function(e,t){return Mt=e,Et=t,Ft},Lt=function(e){this.less=e};Lt.prototype=Object.assign(new Ze,{loadPlugin:function(e,t,n,i,r){return new Promise((function(s,o){r.loadFile(e,t,n,i).then(s).catch(o)}))}});var jt=function(t,i,r){return{add:function(s,o){r.errorReporting&&"html"!==r.errorReporting?"console"===r.errorReporting?function(e,t){var n=e.filename||t,s=[],o="".concat(e.type||"Syntax","Error: ").concat(e.message||"There is an error in your .less file"," in ").concat(n),a=function(e,t,n){void 0!==e.extract[t]&&s.push("{line} {content}".replace(/\{line\}/,(parseInt(e.line,10)||0)+(t-1)).replace(/\{class\}/,n).replace(/\{content\}/,e.extract[t]))};e.line&&(a(e,0,""),a(e,1,"line"),a(e,2,""),o+=" on line ".concat(e.line,", column ").concat(e.column+1,":\n").concat(s.join("\n"))),e.stack&&(e.extract||r.logLevel>=4)&&(o+="\nStack Trace\n".concat(e.stack)),i.logger.error(o)}(s,o):"function"==typeof r.errorReporting&&r.errorReporting("add",s,o):function(i,s){var o,a,l="less-error-message:".concat(e(s||"")),u=t.document.createElement("div"),c=[],h=i.filename||s,f=h.match(/([^/]+(\?.*)?)$/)[1];u.id=l,u.className="less-error-message",a="".concat(i.type||"Syntax","Error: ").concat(i.message||"There is an error in your .less file")+' in ').concat(f," ");var p=function(e,t,n){void 0!==e.extract[t]&&c.push('
{line} {content} '.replace(/\{line\}/,(parseInt(e.line,10)||0)+(t-1)).replace(/\{class\}/,n).replace(/\{content\}/,e.extract[t]))};i.line&&(p(i,0,""),p(i,1,"line"),p(i,2,""),a+="on line ".concat(i.line,", column ").concat(i.column+1,":")),i.stack&&(i.extract||r.logLevel>=4)&&(a+=" Stack Trace".concat(i.stack.split("\n").slice(1).join(" "))),u.innerHTML=a,n(t.document,[".less-error-message ul, .less-error-message li {","list-style-type: none;","margin-right: 15px;","padding: 4px 0;","margin: 0;","}",".less-error-message label {","font-size: 12px;","margin-right: 15px;","padding: 4px 0;","color: #cc7777;","}",".less-error-message pre {","color: #dd6666;","padding: 4px 0;","margin: 0;","display: inline-block;","}",".less-error-message pre.line {","color: #ff0000;","}",".less-error-message h3 {","font-size: 20px;","font-weight: bold;","padding: 15px 0 5px 0;","margin: 0;","}",".less-error-message a {","color: #10a","}",".less-error-message .error {","color: red;","font-weight: bold;","padding-bottom: 2px;","border-bottom: 1px dashed red;","}"].join("\n"),{title:"error-message"}),u.style.cssText=["font-family: Arial, sans-serif","border: 1px solid #e00","background-color: #eee","border-radius: 5px","-webkit-border-radius: 5px","-moz-border-radius: 5px","color: #e00","padding: 15px","margin-bottom: 15px"].join(";"),"development"===r.env&&(o=setInterval((function(){var e=t.document,n=e.body;n&&(e.getElementById(l)?n.replaceChild(u,e.getElementById(l)):n.insertBefore(u,n.firstChild),clearInterval(o))}),10))}(s,o)},remove:function(n){r.errorReporting&&"html"!==r.errorReporting?"console"===r.errorReporting||"function"==typeof r.errorReporting&&r.errorReporting("remove",n):function(n){var i=t.document.getElementById("less-error-message:".concat(e(n)));i&&i.parentNode.removeChild(i)}(n)}}},Nt={javascriptEnabled:!1,depends:!1,compress:!1,lint:!1,paths:[],color:!0,strictImports:!1,insecure:!1,rootpath:"",rewriteUrls:!1,math:1,strictUnits:!1,globalVars:null,modifyVars:null,urlArgs:""};if(window.less)for(var Dt in window.less)Object.prototype.hasOwnProperty.call(window.less,Dt)&&(Nt[Dt]=window.less[Dt]);!function(e,n){t(n,i(e)),void 0===n.isFileProtocol&&(n.isFileProtocol=/^(file|(chrome|safari)(-extension)?|resource|qrc|app):/.test(e.location.protocol)),n.async=n.async||!1,n.fileAsync=n.fileAsync||!1,n.poll=n.poll||(n.isFileProtocol?1e3:1500),n.env=n.env||("127.0.0.1"==e.location.hostname||"0.0.0.0"==e.location.hostname||"localhost"==e.location.hostname||e.location.port&&e.location.port.length>0||n.isFileProtocol?"development":"production");var r=/!dumpLineNumbers:(comments|mediaquery|all)/.exec(e.location.hash);r&&(n.dumpLineNumbers=r[1]),void 0===n.useFileCache&&(n.useFileCache=!0),void 0===n.onReady&&(n.onReady=!0),n.relativeUrls&&(n.rewriteUrls="all")}(window,Nt),Nt.plugins=Nt.plugins||[],window.LESS_PLUGINS&&(Nt.plugins=Nt.plugins.concat(window.LESS_PLUGINS));var Bt,Ut,qt,Tt=function(e,i){var r=e.document,s=Ot();s.options=i;var o=s.environment,a=$t(i,s.logger),l=new a;o.addFileManager(l),s.FileManager=a,s.PluginLoader=Lt,function(e,t){t.logLevel=void 0!==t.logLevel?t.logLevel:"development"===t.env?3:1,t.loggers||(t.loggers=[{debug:function(e){t.logLevel>=4&&console.log(e)},info:function(e){t.logLevel>=3&&console.log(e)},warn:function(e){t.logLevel>=2&&console.warn(e)},error:function(e){t.logLevel>=1&&console.error(e)}}]);for(var n=0;n0&&l.childNodes.length>0&&o.firstChild.nodeValue===l.firstChild.nodeValue);var u=t.getElementsByTagName("head")[0];if(null===o||!1===a){var c=i&&i.nextSibling||null;c?c.parentNode.insertBefore(l,c):u.appendChild(l)}if(o&&!1===a&&o.parentNode.removeChild(o),l.styleSheet)try{l.styleSheet.cssText=n}catch(e){throw new Error("Couldn't reassign styleSheet.cssText.")}},i=function(e){var t,n=e.document;return n.currentScript||(t=n.getElementsByTagName("script"))[t.length-1]},r={error:function(e){this._fireEvent("error",e)},warn:function(e){this._fireEvent("warn",e)},info:function(e){this._fireEvent("info",e)},debug:function(e){this._fireEvent("debug",e)},addListener:function(e){this._listeners.push(e)},removeListener:function(e){for(var t=0;t=0;a--){var l=o[a];if(l[s?"supportsSync":"supports"](e,t,n,i))return l}return null},e.prototype.addFileManager=function(e){this.fileManagers.push(e)},e.prototype.clearFileManagers=function(){this.fileManagers=[]},e}(),o={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgrey:"#a9a9a9",darkgreen:"#006400",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",grey:"#808080",green:"#008000",greenyellow:"#adff2f",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgrey:"#d3d3d3",lightgreen:"#90ee90",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370d8",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#d87093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},a={length:{m:1,cm:.01,mm:.001,in:.0254,px:.0254/96,pt:.0254/72,pc:.0254/72*12},duration:{s:1,ms:.001},angle:{rad:1/(2*Math.PI),deg:1/360,grad:1/400,turn:1}},l={colors:o,unitConversions:a},u=function(){function e(){this.parent=null,this.visibilityBlocks=void 0,this.nodeVisible=void 0,this.rootNode=null,this.parsed=null}return Object.defineProperty(e.prototype,"currentFileInfo",{get:function(){return this.fileInfo()},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"index",{get:function(){return this.getIndex()},enumerable:!1,configurable:!0}),e.prototype.setParent=function(t,n){function i(t){t&&t instanceof e&&(t.parent=n)}Array.isArray(t)?t.forEach(i):i(t)},e.prototype.getIndex=function(){return this._index||this.parent&&this.parent.getIndex()||0},e.prototype.fileInfo=function(){return this._fileInfo||this.parent&&this.parent.fileInfo()||{}},e.prototype.isRulesetLike=function(){return!1},e.prototype.toCSS=function(e){var t=[];return this.genCSS(e,{add:function(e,n,i){t.push(e)},isEmpty:function(){return 0===t.length}}),t.join("")},e.prototype.genCSS=function(e,t){t.add(this.value)},e.prototype.accept=function(e){this.value=e.visit(this.value)},e.prototype.eval=function(){return this},e.prototype._operate=function(e,t,n,i){switch(t){case"+":return n+i;case"-":return n-i;case"*":return n*i;case"/":return n/i}},e.prototype.fround=function(e,t){var n=e&&e.numPrecision;return n?Number((t+2e-16).toFixed(n)):t},e.compare=function(t,n){if(t.compare&&"Quoted"!==n.type&&"Anonymous"!==n.type)return t.compare(n);if(n.compare)return-n.compare(t);if(t.type===n.type){if(t=t.value,n=n.value,!Array.isArray(t))return t===n?0:void 0;if(t.length===n.length){for(var i=0;it?1:void 0},e.prototype.blocksVisibility=function(){return void 0===this.visibilityBlocks&&(this.visibilityBlocks=0),0!==this.visibilityBlocks},e.prototype.addVisibilityBlock=function(){void 0===this.visibilityBlocks&&(this.visibilityBlocks=0),this.visibilityBlocks=this.visibilityBlocks+1},e.prototype.removeVisibilityBlock=function(){void 0===this.visibilityBlocks&&(this.visibilityBlocks=0),this.visibilityBlocks=this.visibilityBlocks-1},e.prototype.ensureVisibility=function(){this.nodeVisible=!0},e.prototype.ensureInvisibility=function(){this.nodeVisible=!1},e.prototype.isVisible=function(){return this.nodeVisible},e.prototype.visibilityInfo=function(){return{visibilityBlocks:this.visibilityBlocks,nodeVisible:this.nodeVisible}},e.prototype.copyVisibilityInfo=function(e){e&&(this.visibilityBlocks=e.visibilityBlocks,this.nodeVisible=e.nodeVisible)},e}(),c=function(e,t,n){var i=this;Array.isArray(e)?this.rgb=e:e.length>=6?(this.rgb=[],e.match(/.{2}/g).map((function(e,t){t<3?i.rgb.push(parseInt(e,16)):i.alpha=parseInt(e,16)/255}))):(this.rgb=[],e.split("").map((function(e,t){t<3?i.rgb.push(parseInt(e+e,16)):i.alpha=parseInt(e+e,16)/255}))),this.alpha=this.alpha||("number"==typeof t?t:1),void 0!==n&&(this.value=n)};function h(e,t){return Math.min(Math.max(e,0),t)}function f(e){return"#".concat(e.map((function(e){return((e=h(Math.round(e),255))<16?"0":"")+e.toString(16)})).join(""))}c.prototype=Object.assign(new u,{type:"Color",luma:function(){var e=this.rgb[0]/255,t=this.rgb[1]/255,n=this.rgb[2]/255;return.2126*(e=e<=.03928?e/12.92:Math.pow((e+.055)/1.055,2.4))+.7152*(t=t<=.03928?t/12.92:Math.pow((t+.055)/1.055,2.4))+.0722*(n=n<=.03928?n/12.92:Math.pow((n+.055)/1.055,2.4))},genCSS:function(e,t){t.add(this.toCSS(e))},toCSS:function(e,t){var n,i,r,s=e&&e.compress&&!t,o=[];if(i=this.fround(e,this.alpha),this.value)if(0===this.value.indexOf("rgb"))i<1&&(r="rgba");else{if(0!==this.value.indexOf("hsl"))return this.value;r=i<1?"hsla":"hsl"}else i<1&&(r="rgba");switch(r){case"rgba":o=this.rgb.map((function(e){return h(Math.round(e),255)})).concat(h(i,1));break;case"hsla":o.push(h(i,1));case"hsl":n=this.toHSL(),o=[this.fround(e,n.h),"".concat(this.fround(e,100*n.s),"%"),"".concat(this.fround(e,100*n.l),"%")].concat(o)}if(r)return"".concat(r,"(").concat(o.join(",".concat(s?"":" ")),")");if(n=this.toRGB(),s){var a=n.split("");a[1]===a[2]&&a[3]===a[4]&&a[5]===a[6]&&(n="#".concat(a[1]).concat(a[3]).concat(a[5]))}return n},operate:function(e,t,n){for(var i=new Array(3),r=this.alpha*(1-n.alpha)+n.alpha,s=0;s<3;s++)i[s]=this._operate(e,t,this.rgb[s],n.rgb[s]);return new c(i,r)},toRGB:function(){return f(this.rgb)},toHSL:function(){var e,t,n=this.rgb[0]/255,i=this.rgb[1]/255,r=this.rgb[2]/255,s=this.alpha,o=Math.max(n,i,r),a=Math.min(n,i,r),l=(o+a)/2,u=o-a;if(o===a)e=t=0;else{switch(t=l>.5?u/(2-o-a):u/(o+a),o){case n:e=(i-r)/u+(iI(e,t));if("Object"!==x(n=e)||n.constructor!==Object||Object.getPrototypeOf(n)!==Object.prototype)return e;var n;return[...Object.getOwnPropertyNames(e),...Object.getOwnPropertySymbols(e)].reduce((n,i)=>{if(S(t.props)&&!t.props.includes(i))return n;return function(e,t,n,i,r){const s={}.propertyIsEnumerable.call(i,t)?"enumerable":"nonenumerable";"enumerable"===s&&(e[t]=n),r&&"nonenumerable"===s&&Object.defineProperty(e,t,{value:n,enumerable:!1,writable:!0,configurable:!0})}(n,i,I(e[i],t),e,t.nonenumerable),n},{})}function C(e,t){for(var n=e+1,i=null,r=-1;--n>=0&&"\n"!==t.charAt(n);)r++;return"number"==typeof e&&(i=(t.slice(0,e).match(/\n/g)||"").length),{line:i,column:r}}function k(e){var t,n=e.length,i=new Array(n);for(t=0;t|Function):(\d+):(\d+)/,V=function(e,t,n){Error.call(this);var i=e.filename||n;if(this.message=e.message,this.stack=e.stack,t&&i){var r=t.contents[i],s=C(e.index,r),o=s.line,a=s.column,l=e.call&&C(e.call,r).line,u=r?r.split("\n"):"";if(this.type=e.type||"Syntax",this.filename=i,this.index=e.index,this.line="number"==typeof o?o+1:null,this.column=a,!this.line&&this.stack){var c=this.stack.match(O),h=new Function("a","throw new Error()"),f=0;try{h()}catch(e){var p=e.stack.match(O);f=1-parseInt(p[2])}c&&(c[2]&&(this.line=parseInt(c[2])+f),c[3]&&(this.column=parseInt(c[3])))}this.callLine=l+1,this.callExtract=u[l],this.extract=[u[this.line-2],u[this.line-1],u[this.line]]}};if(void 0===Object.create){var F=function(){};F.prototype=Error.prototype,V.prototype=new F}else V.prototype=Object.create(Error.prototype);V.prototype.constructor=V,V.prototype.toString=function(e){var t;e=e||{};var n=(null!==(t=this.type)&&void 0!==t?t:"").toLowerCase().includes("warning"),i=n?this.type:"".concat(this.type,"Error"),r=n?"yellow":"red",s="",o=this.extract||[],a=[],l=function(e){return e};if(e.stylize){var u=typeof e.stylize;if("function"!==u)throw Error("options.stylize should be a function, got a ".concat(u,"!"));l=e.stylize}if(null!==this.line){if(n||"string"!=typeof o[0]||a.push(l("".concat(this.line-1," ").concat(o[0]),"grey")),"string"==typeof o[1]){var c="".concat(this.line," ");o[1]&&(c+=o[1].slice(0,this.column)+l(l(l(o[1].substr(this.column,1),"bold")+o[1].slice(this.column+1),"red"),"inverse")),a.push(c)}n||"string"!=typeof o[2]||a.push(l("".concat(this.line+1," ").concat(o[2]),"grey")),a="".concat(a.join("\n")+l("","reset"),"\n")}return s+=l("".concat(i,": ").concat(this.message),r),this.filename&&(s+=l(" in ",r)+this.filename),this.line&&(s+=l(" on line ".concat(this.line,", column ").concat(this.column+1,":"),"grey")),s+="\n".concat(a),this.callLine&&(s+="".concat(l("from ",r)+(this.filename||""),"/n"),s+="".concat(l(this.callLine,"grey")," ").concat(this.callExtract,"/n")),s};var $={visitDeeper:!0},L=!1;function j(e){return e}var N=function(){function e(e){this._implementation=e,this._visitInCache={},this._visitOutCache={},L||(!function e(t,n){var i,r;for(i in t)switch(typeof(r=t[i])){case"function":r.prototype&&r.prototype.type&&(r.prototype.typeIndex=n++);break;case"object":n=e(r,n)}return n}(He,1),L=!0)}return e.prototype.visit=function(e){if(!e)return e;var t=e.typeIndex;if(!t)return e.value&&e.value.typeIndex&&this.visit(e.value),e;var n,i=this._implementation,r=this._visitInCache[t],s=this._visitOutCache[t],o=$;if(o.visitDeeper=!0,r||(r=i[n="visit".concat(e.type)]||j,s=i["".concat(n,"Out")]||j,this._visitInCache[t]=r,this._visitOutCache[t]=s),r!==j){var a=r.call(i,e,o);e&&i.isReplacing&&(e=a)}if(o.visitDeeper&&e)if(e.length)for(var l=0,u=e.length;lg.PARENS_DIVISION)||this.parensStack&&this.parensStack.length))},D.Eval.prototype.pathRequiresRewrite=function(e){return(this.rewriteUrls===b?z:T)(e)},D.Eval.prototype.rewritePath=function(e,t){var n;return t=t||"",n=this.normalizePath(t+e),z(e)&&T(t)&&!1===z(n)&&(n="./".concat(n)),n},D.Eval.prototype.normalizePath=function(e){var t,n=e.split("/").reverse();for(e=[];0!==n.length;)switch(t=n.pop()){case".":break;case"..":0===e.length||".."===e[e.length-1]?e.push(t):e.pop();break;default:e.push(t)}return e.join("/")};var G=function(){function e(e){this.imports=[],this.variableImports=[],this._onSequencerEmpty=e,this._currentDepth=0}return e.prototype.addImport=function(e){var t=this,n={callback:e,args:null,isReady:!1};return this.imports.push(n),function(){n.args=Array.prototype.slice.call(arguments,0),n.isReady=!0,t.tryRun()}},e.prototype.addVariableImport=function(e){this.variableImports.push(e)},e.prototype.tryRun=function(){this._currentDepth++;try{for(;;){for(;this.imports.length>0;){var e=this.imports[0];if(!e.isReady)return;this.imports=this.imports.slice(1),e.callback.apply(null,e.args)}if(0===this.variableImports.length)break;var t=this.variableImports[0];this.variableImports=this.variableImports.slice(1),t()}}finally{this._currentDepth--}0===this._currentDepth&&this._onSequencerEmpty&&this._onSequencerEmpty()},e}(),W=function(e,t){this._visitor=new N(this),this._importer=e,this._finish=t,this.context=new D.Eval,this.importCount=0,this.onceFileDetectionMap={},this.recursionDetector={},this._sequencer=new G(this._onSequencerEmpty.bind(this))};W.prototype={isReplacing:!1,run:function(e){try{this._visitor.visit(e)}catch(e){this.error=e}this.isFinished=!0,this._sequencer.tryRun()},_onSequencerEmpty:function(){this.isFinished&&this._finish(this.error)},visitImport:function(e,t){var n=e.options.inline;if(!e.css||n){var i=new D.Eval(this.context,k(this.context.frames)),r=i.frames[0];this.importCount++,e.isVariableImport()?this._sequencer.addVariableImport(this.processImportNode.bind(this,e,i,r)):this.processImportNode(e,i,r)}t.visitDeeper=!1},processImportNode:function(e,t,n){var i,r=e.options.inline;try{i=e.evalForImport(t)}catch(t){t.filename||(t.index=e.getIndex(),t.filename=e.fileInfo().filename),e.css=!0,e.error=t}if(!i||i.css&&!r)this.importCount--,this.isFinished&&this._sequencer.tryRun();else{i.options.multiple&&(t.importMultiple=!0);for(var s=void 0===i.css,o=0;o=0||(a=[u.selfSelectors[0]],(s=f.findMatch(l,a)).length&&(l.hasFoundMatches=!0,l.selfSelectors.forEach((function(e){var t=u.visibilityInfo();o=f.extendSelector(s,a,e,l.isVisible()),(c=new He.Extend(u.selector,u.option,0,u.fileInfo(),t)).selfSelectors=o,o[o.length-1].extendList=[c],h.push(c),c.ruleset=u.ruleset,c.parent_ids=c.parent_ids.concat(u.parent_ids,l.parent_ids),u.firstExtendOnThisSelectorPath&&(c.firstExtendOnThisSelectorPath=!0,u.ruleset.paths.push(o))}))));if(h.length){if(this.extendChainCount++,n>100){var p="{unable to calculate}",v="{unable to calculate}";try{p=h[0].selfSelectors[0].toCSS(),v=h[0].selector.toCSS()}catch(e){}throw{message:"extend circular reference detected. One of the circular extends is currently:".concat(p,":extend(").concat(v,")")}}return h.concat(f.doExtendChaining(h,t,n+1))}return h},e.prototype.visitDeclaration=function(e,t){t.visitDeeper=!1},e.prototype.visitMixinDefinition=function(e,t){t.visitDeeper=!1},e.prototype.visitSelector=function(e,t){t.visitDeeper=!1},e.prototype.visitRuleset=function(e,t){if(!e.root){var n,i,r,s,o=this.allExtendsStack[this.allExtendsStack.length-1],a=[],l=this;for(r=0;r0&&u[l.matched].combinator.value!==o?l=null:l.matched++,l&&(l.finished=l.matched===u.length,l.finished&&!e.allowAfter&&(r+1u&&c>0&&(h[h.length-1].elements=h[h.length-1].elements.concat(t[u].elements.slice(c)),c=0,u++),l=s.elements.slice(c,a.index).concat([o]).concat(n.elements.slice(1)),u===a.pathIndex&&r>0?h[h.length-1].elements=h[h.length-1].elements.concat(l):(h=h.concat(t.slice(u,a.pathIndex))).push(new He.Selector(l)),u=a.endPathIndex,(c=a.endPathElementIndex)>=t[u].elements.length&&(c=0,u++);return u0&&(h[h.length-1].elements=h[h.length-1].elements.concat(t[u].elements.slice(c)),u++),h=(h=h.concat(t.slice(u,t.length))).map((function(e){var t=e.createDerived(e.elements);return i?t.ensureVisibility():t.ensureInvisibility(),t}))},e.prototype.visitMedia=function(e,t){var n=e.allExtends.concat(this.allExtendsStack[this.allExtendsStack.length-1]);n=n.concat(this.doExtendChaining(n,e.allExtends)),this.allExtendsStack.push(n)},e.prototype.visitMediaOut=function(e){var t=this.allExtendsStack.length-1;this.allExtendsStack.length=t},e.prototype.visitAtRule=function(e,t){var n=e.allExtends.concat(this.allExtendsStack[this.allExtendsStack.length-1]);n=n.concat(this.doExtendChaining(n,e.allExtends)),this.allExtendsStack.push(n)},e.prototype.visitAtRuleOut=function(e){var t=this.allExtendsStack.length-1;this.allExtendsStack.length=t},e}(),K=function(){function e(){this.contexts=[[]],this._visitor=new N(this)}return e.prototype.run=function(e){return this._visitor.visit(e)},e.prototype.visitDeclaration=function(e,t){t.visitDeeper=!1},e.prototype.visitMixinDefinition=function(e,t){t.visitDeeper=!1},e.prototype.visitRuleset=function(e,t){var n,i=this.contexts[this.contexts.length-1],r=[];this.contexts.push(r),e.root||((n=e.selectors)&&(n=n.filter((function(e){return e.getIsOutput()})),e.selectors=n.length?n:n=null,n&&e.joinSelectors(r,i,n)),n||(e.rules=null),e.paths=r)},e.prototype.visitRulesetOut=function(e){this.contexts.length=this.contexts.length-1},e.prototype.visitMedia=function(e,t){var n=this.contexts[this.contexts.length-1];e.rules[0].root=0===n.length||n[0].multiMedia},e.prototype.visitAtRule=function(e,t){var n=this.contexts[this.contexts.length-1];e.rules&&e.rules.length&&(e.rules[0].root=e.isRooted||0===n.length||null)},e}(),Z=function(){function e(e){this._visitor=new N(this),this._context=e}return e.prototype.containsSilentNonBlockedChild=function(e){var t;if(!e)return!1;for(var n=0;n0},e.prototype.resolveVisibility=function(e){if(!e.blocksVisibility()){if(this.isEmpty(e))return;return e}var t=e.rules[0];if(this.keepOnlyVisibleChilds(t),!this.isEmpty(t))return e.ensureVisibility(),e.removeVisibilityBlock(),e},e.prototype.isVisibleRuleset=function(e){return!!e.firstRoot||!this.isEmpty(e)&&!(!e.root&&!this.hasVisibleSelector(e))},e}(),X=function(e){this._visitor=new N(this),this._context=e,this.utils=new Z(e)};X.prototype={isReplacing:!0,run:function(e){return this._visitor.visit(e)},visitDeclaration:function(e,t){if(!e.blocksVisibility()&&!e.variable)return e},visitMixinDefinition:function(e,t){e.frames=[]},visitExtend:function(e,t){},visitComment:function(e,t){if(!e.blocksVisibility()&&!e.isSilent(this._context))return e},visitMedia:function(e,t){var n=e.rules[0].rules;return e.accept(this._visitor),t.visitDeeper=!1,this.utils.resolveVisibility(e,n)},visitImport:function(e,t){if(!e.blocksVisibility())return e},visitAtRule:function(e,t){return e.rules&&e.rules.length?this.visitAtRuleWithBody(e,t):this.visitAtRuleWithoutBody(e,t)},visitAnonymous:function(e,t){if(!e.blocksVisibility())return e.accept(this._visitor),e},visitAtRuleWithBody:function(e,t){var n=function(e){var t=e.rules;return function(e){var t=e.rules;return 1===t.length&&(!t[0].paths||0===t[0].paths.length)}(e)?t[0].rules:t}(e);return e.accept(this._visitor),t.visitDeeper=!1,this.utils.isEmpty(e)||this._mergeRules(e.rules[0].rules),this.utils.resolveVisibility(e,n)},visitAtRuleWithoutBody:function(e,t){if(!e.blocksVisibility()){if("@charset"===e.name){if(this.charset){if(e.debugInfo){var n=new He.Comment("/* ".concat(e.toCSS(this._context).replace(/\n/g,"")," */\n"));return n.debugInfo=e.debugInfo,this._visitor.visit(n)}return}this.charset=!0}return e}},checkValidNodes:function(e,t){if(e)for(var n=0;n0?e.accept(this._visitor):e.rules=null,t.visitDeeper=!1}return e.rules&&(this._mergeRules(e.rules),this._removeDuplicateRules(e.rules)),this.utils.isVisibleRuleset(e)&&(e.ensureVisibility(),i.splice(0,0,e)),1===i.length?i[0]:i},_compileRulesetPaths:function(e){e.paths&&(e.paths=e.paths.filter((function(e){var t;for(" "===e[0].elements[0].combinator.value&&(e[0].elements[0].combinator=new He.Combinator("")),t=0;t=0;i--)if((n=e[i])instanceof He.Declaration)if(r[n.name]){(t=r[n.name])instanceof He.Declaration&&(t=r[n.name]=[r[n.name].toCSS(this._context)]);var s=n.toCSS(this._context);-1!==t.indexOf(s)?e.splice(i,1):t.push(s)}else r[n.name]=n}},_mergeRules:function(e){if(e){for(var t={},n=[],i=0;i0){var t=e[0],n=[],i=[new He.Expression(n)];e.forEach((function(e){"+"===e.merge&&n.length>0&&i.push(new He.Expression(n=[])),n.push(e.value),t.important=t.important||e.important})),t.value=new He.Value(i)}}))}}};var Y={Visitor:N,ImportVisitor:W,MarkVisibleSelectorsVisitor:J,ExtendVisitor:Q,JoinSelectorVisitor:K,ToCSSVisitor:X};var ee=function(){var e,t,n,i,r,s,o,a=[],l={};function u(n){for(var i,a,c,h=l.i,f=t,p=l.i-o,v=l.i+s.length-p,d=l.i+=n,m=e;l.i=0){c={index:l.i,text:m.substr(l.i,y+2-l.i),isLineComment:!1},l.i+=c.text.length-1,l.commentStore.push(c);continue}}break}if(32!==i&&10!==i&&9!==i&&13!==i)break}if(s=s.slice(n+l.i-d+p),o=l.i,!s.length){if(tn||l.i===n&&e&&!i)&&(n=l.i,i=e);var r=a.pop();s=r.current,o=l.i=r.i,t=r.j},l.forget=function(){a.pop()},l.isWhitespace=function(t){var n=l.i+(t||0),i=e.charCodeAt(n);return 32===i||13===i||9===i||10===i},l.$re=function(e){l.i>o&&(s=s.slice(l.i-o),o=l.i);var t=e.exec(s);return t?(u(t[0].length),"string"==typeof t?t:1===t.length?t[0]:t):null},l.$char=function(t){return e.charAt(l.i)!==t?null:(u(1),t)},l.$peekChar=function(t){return e.charAt(l.i)!==t?null:t},l.$str=function(t){for(var n=t.length,i=0;ih&&(d=!1)}}while(d);return r||null},l.autoCommentAbsorb=!0,l.commentStore=[],l.finished=!1,l.peek=function(t){if("string"==typeof t){for(var n=0;n57||t<43||47===t||44===t},l.start=function(i,a,c){e=i,l.i=t=o=n=0,r=a?function(e,t){var n,i,r,s,o,a,l,u,c,h=e.length,f=0,p=0,v=[],d=0;function m(t){var n=o-d;n<512&&!t||!n||(v.push(e.slice(d,o+1)),d=o+1)}for(o=0;o=97&&l<=122||l<34))switch(l){case 40:p++,i=o;continue;case 41:if(--p<0)return t("missing opening `(`",o);continue;case 59:p||m();continue;case 123:f++,n=o;continue;case 125:if(--f<0)return t("missing opening `{`",o);f||p||m();continue;case 92:if(o96)){if(u==l){c=1;break}if(92==u){if(o==h-1)return t("unescaped `\\`",o);o++}}if(c)continue;return t("unmatched `".concat(String.fromCharCode(l),"`"),a);case 47:if(p||o==h-1)continue;if(47==(u=e.charCodeAt(o+1)))for(o+=2;on&&s>r?"missing closing `}` or `*/`":"missing closing `}`",n):0!==p?t("missing closing `)`",i):(m(!0),v)}(i,c):[i],s=r[0],u(0)},l.end=function(){var t,r=l.i>=e.length;return l.i=e.length-1,furthestChar:e[l.i]}},l};var te=function e(t){return{_data:{},add:function(e,t){e=e.toLowerCase(),this._data.hasOwnProperty(e),this._data[e]=t},addMultiple:function(e){var t=this;Object.keys(e).forEach((function(n){t.add(n,e[n])}))},get:function(e){return this._data[e]||t&&t.get(e)},getLocalFunctions:function(){return this._data},inherit:function(){return e(this)},create:function(t){return e(t)}}}(null),ne={queryInParens:!0},ie={queryInParens:!0},re=function(e,t,n,i,r,s){this.value=e,this._index=t,this._fileInfo=n,this.mapLines=i,this.rulesetLike=void 0!==r&&r,this.allowRoot=!0,this.copyVisibilityInfo(s)};re.prototype=Object.assign(new u,{type:"Anonymous",eval:function(){return new re(this.value,this._index,this._fileInfo,this.mapLines,this.rulesetLike,this.visibilityInfo())},compare:function(e){return e.toCSS&&this.toCSS()===e.toCSS()?0:void 0},isRulesetLike:function(){return this.rulesetLike},genCSS:function(e,t){this.nodeVisible=Boolean(this.value),this.nodeVisible&&t.add(this.value,this._fileInfo,this._index,this.mapLines)}});var se=function e(t,n,i,s){var o;s=s||0;var a=ee();function l(e,t){throw new V({index:a.i,filename:i.filename,type:t||"Syntax",message:e},n)}function u(e,s,o){t.quiet||r.warn(new V({index:null!=s?s:a.i,filename:i.filename,type:o?"".concat(o.toUpperCase()," WARNING"):"WARNING",message:e},n).toString())}function c(e,t){var n=e instanceof Function?e.call(o):a.$re(e);if(n)return n;l(t||("string"==typeof e?"expected '".concat(e,"' got '").concat(a.currentChar(),"'"):"unexpected token"))}function h(e,t){if(a.$char(e))return e;l(t||"expected '".concat(e,"' got '").concat(a.currentChar(),"'"))}function f(e){var t=i.filename;return{lineNumber:C(e,a.getInput()).line+1,fileName:t}}return{parserInput:a,imports:n,fileInfo:i,parseNode:function(e,t,r){var l,u=[],c=a;try{c.start(e,!1,(function(e,t){r({message:e,index:t+s})}));for(var h=0,f=void 0;f=t[h];h++)l=o[f](),u.push(l||null);c.end().isFinished?r(null,u):r(!0,null)}catch(e){throw new V({index:e.index+s,message:e.message},n,i.filename)}},parse:function(r,s,u){var c,h,f,p,v=null,d="";if(u&&u.disablePluginRule&&(o.plugin=function(){a.$re(/^@plugin?\s+/)&&l("@plugin statements are not allowed when disablePluginRule is set to true")}),h=u&&u.globalVars?"".concat(e.serializeVars(u.globalVars),"\n"):"",f=u&&u.modifyVars?"\n".concat(e.serializeVars(u.modifyVars)):"",t.pluginManager)for(var m=t.pluginManager.getPreProcessors(),g=0;g");return e},args:function(e){var t,n,i,r,s,u,c,h=o.entities,f={args:null,variadic:!1},p=[],v=[],d=[],m=!0;for(a.save();;){if(e)u=o.detachedRuleset()||o.expression();else{if(a.commentStore.length=0,a.$str("...")){f.variadic=!0,a.$char(";")&&!t&&(t=!0),(t?v:d).push({variadic:!0});break}u=h.variable()||h.property()||h.literal()||h.keyword()||this.call(!0)}if(!u||!m)break;r=null,u.throwAwayComments&&u.throwAwayComments(),s=u;var g=null;if(e?u.value&&1==u.value.length&&(g=u.value[0]):g=u,g&&(g instanceof He.Variable||g instanceof He.Property))if(a.$char(":")){if(p.length>0&&(t&&l("Cannot mix ; and , as delimiter types"),n=!0),!(s=o.detachedRuleset()||o.expression())){if(!e)return a.restore(),f.args=[],f;l("could not understand value for named argument")}r=i=g.name}else if(a.$str("...")){if(!e){f.variadic=!0,a.$char(";")&&!t&&(t=!0),(t?v:d).push({name:u.name,variadic:!0});break}c=!0}else e||(i=r=g.name,s=null);s&&p.push(s),d.push({name:r,value:s,expand:c}),a.$char(",")?m=!0:((m=";"===a.$char(";"))||t)&&(n&&l("Cannot mix ; and , as delimiter types"),t=!0,p.length>1&&(s=new He.Value(p)),v.push({name:i,value:s,expand:c}),i=null,p=[],n=!1)}return a.forget(),f.args=t?v:d,f},definition:function(){var e,t,n,i,r=[],s=!1;if(!("."!==a.currentChar()&&"#"!==a.currentChar()||a.peek(/^[^{]*\}/)))if(a.save(),t=a.$re(/^([#.](?:[\w-]|\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+)\s*\(/)){e=t[1];var l=this.args(!1);if(r=l.args,s=l.variadic,!a.$char(")"))return void a.restore("Missing closing ')'");if(a.commentStore.length=0,a.$str("when")&&(i=c(o.conditions,"expected condition")),n=o.block())return a.forget(),new He.mixin.Definition(e,r,n,i,s);a.restore()}else a.restore()},ruleLookups:function(){var e,t=[];if("["===a.currentChar()){for(;;){if(a.save(),!(e=this.lookupValue())&&""!==e){a.restore();break}t.push(e),a.forget()}return t.length>0?t:void 0}},lookupValue:function(){if(a.save(),a.$char("[")){var e=a.$re(/^(?:[@$]{0,2})[_a-zA-Z0-9-]*/);if(a.$char("]"))return e||""===e?(a.forget(),e):void a.restore();a.restore()}else a.restore()}},entity:function(){var e=this.entities;return this.comment()||e.literal()||e.variable()||e.url()||e.property()||e.call()||e.keyword()||this.mixin.call(!0)||e.javascript()},end:function(){return a.$char(";")||a.peek("}")},ieAlpha:function(){var e;if(a.$re(/^opacity=/i))return(e=a.$re(/^\d+/))||(e=c(o.entities.variable,"Could not parse alpha"),e="@{".concat(e.name.slice(1),"}")),h(")"),new He.Quoted("","alpha(opacity=".concat(e,")"))},element:function(){var e,t,n,r=a.i;if(t=this.combinator(),!(e=a.$re(/^(?:\d+\.\d+|\d+)%/)||a.$re(/^(?:[.#]?|:*)(?:[\w-]|[^\x00-\x9f]|\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+/)||a.$char("*")||a.$char("&")||this.attribute()||a.$re(/^\([^&()@]+\)/)||a.$re(/^[.#:](?=@)/)||this.entities.variableCurly()))if(a.save(),a.$char("("))if(n=this.selector(!1)){for(var o=[];a.$char(",");)o.push(n),o.push(new re(",")),n=this.selector(!1);o.push(n),a.$char(")")?(e=o.length>1?new He.Paren(new oe(o)):new He.Paren(n),a.forget()):a.restore("Missing closing ')'")}else a.restore("Missing closing ')'");else a.forget();if(e)return new He.Element(t,e,e instanceof He.Variable,r+s,i)},combinator:function(){var e=a.currentChar();if("/"===e){a.save();var t=a.$re(/^\/[a-z]+\//i);if(t)return a.forget(),new He.Combinator(t);a.restore()}if(">"===e||"+"===e||"~"===e||"|"===e||"^"===e){for(a.i++,"^"===e&&"^"===a.currentChar()&&(e="^^",a.i++);a.isWhitespace();)a.i++;return new He.Combinator(e)}return a.isWhitespace(-1)?new He.Combinator(" "):new He.Combinator(null)},selector:function(e){var t,n,r,o,u,h,f,p=a.i;for(e=!1!==e;(e&&(n=this.extend())||e&&(h=a.$str("when"))||(o=this.element()))&&(h?f=c(this.conditions,"expected condition"):f?l("CSS guard can only be used at the end of selector"):n?u=u?u.concat(n):n:(u&&l("Extend can only be used at the end of selector"),r=a.currentChar(),Array.isArray(o)&&o.forEach((function(e){return t.push(e)})),t?t.push(o):t=[o],o=null),"{"!==r&&"}"!==r&&";"!==r&&","!==r&&")"!==r););if(t)return new He.Selector(t,u,f,p+s,i);u&&l("Extend must be used to extend a selector, it cannot be used on its own")},selectors:function(){for(var e,t;(e=this.selector())&&(t?t.push(e):t=[e],a.commentStore.length=0,e.condition&&t.length>1&&l("Guards are only currently allowed on a single selector."),a.$char(","));)e.condition&&l("Guards are only currently allowed on a single selector."),a.commentStore.length=0;return t},attribute:function(){if(a.$char("[")){var e,t,n,i,r=this.entities;return(e=r.variableCurly())||(e=c(/^(?:[_A-Za-z0-9-*]*\|)?(?:[_A-Za-z0-9-]|\\.)+/)),(n=a.$re(/^[|~*$^]?=/))&&(t=r.quoted()||a.$re(/^[0-9]+%/)||a.$re(/^[\w-]+/)||r.variableCurly())&&(i=a.$re(/^[iIsS]/)),h("]"),new He.Attribute(e,n,t,i)}},block:function(){var e;if(a.$char("{")&&(e=this.primary())&&a.$char("}"))return e},blockRuleset:function(){var e=this.block();return e&&(e=new He.Ruleset(null,e)),e},detachedRuleset:function(){var e,t,n;if(a.save(),!a.$re(/^[.#]\(/)||(t=(e=this.mixin.args(!1)).args,n=e.variadic,a.$char(")"))){var i=this.blockRuleset();if(i)return a.forget(),t?new He.mixin.Definition(null,t,i,null,n):new He.DetachedRuleset(i);a.restore()}else a.restore()},ruleset:function(){var e,n,i;if(a.save(),t.dumpLineNumbers&&(i=f(a.i)),(e=this.selectors())&&(n=this.block())){a.forget();var r=new He.Ruleset(e,n,t.strictImports);return t.dumpLineNumbers&&(r.debugInfo=i),r}a.restore()},declaration:function(){var e,t,n,r,o,l,u=a.i,c=a.currentChar();if("."!==c&&"#"!==c&&"&"!==c&&":"!==c)if(a.save(),e=this.variable()||this.ruleProperty()){if((l="string"==typeof e)&&(t=this.detachedRuleset())&&(n=!0),a.commentStore.length=0,!t){if(o=!l&&e.length>1&&e.pop().value,t=e[0].value&&"--"===e[0].value.slice(0,2)?a.$char(";")?new re(""):this.permissiveValue(/[;}]/):this.anonymousValue())return a.forget(),new He.Declaration(e,t,!1,o,u+s,i);t||(t=this.value()),t?r=this.important():l&&(t=this.permissiveValue())}if(t&&(this.end()||n))return a.forget(),new He.Declaration(e,t,r,o,u+s,i);a.restore()}else a.restore()},anonymousValue:function(){var e=a.i,t=a.$re(/^([^.#@$+/'"*`(;{}-]*);/);if(t)return new He.Anonymous(t[1],e+s)},permissiveValue:function(e){var t,n,r,s,o=e||";",u=a.i,c=[];function h(){var e=a.currentChar();return"string"==typeof o?e===o:o.test(e)}if(!h()){s=[];do{(n=this.comment())?s.push(n):((n=this.entity())&&s.push(n),a.peek(",")&&(s.push(new He.Anonymous(",",a.i)),a.$char(",")))}while(n);if(r=h(),s.length>0){if(s=new He.Expression(s),r)return s;c.push(s)," "===a.prevChar()&&c.push(new He.Anonymous(" ",u))}if(a.save(),s=a.$parseUntil(o)){if("string"==typeof s&&l("Expected '".concat(s,"'"),"Parse"),1===s.length&&" "===s[0])return a.forget(),new He.Anonymous("",u);var f=void 0;for(t=0;t]=|<=|>=|[<>]|=)/)?(a.restore(),n=this.condition(),a.save(),(r=this.atomicCondition(null,n.rvalue))||a.restore()):(a.restore(),t=this.value()),a.$char(")")?n&&!t?(u.push(new He.Paren(new He.QueryInParens(n.op,n.lvalue,n.rvalue,r?r.op:null,r?r.rvalue:null,n._index))),t=n):n&&t?u.push(new He.Paren(new He.Declaration(n,t,null,null,a.i+s,i,!0))):t?u.push(new He.Paren(t)):l("badly formed media feature definition"):l("Missing closing ')'","Parse"))}while(t);if(a.forget(),u.length>0)return new He.Expression(u)},mediaFeatures:function(e){var t,n=this.entities,i=[];do{if(t=this.mediaFeature(e)){if(i.push(t),!a.$char(","))break}else if((t=n.variable()||n.mixinLookup())&&(i.push(t),!a.$char(",")))break}while(t);return i.length>0?i:null},prepareAndGetNestableAtRule:function(e,n,r,o){var u=this.mediaFeatures(o),c=this.block();c||l("media definitions require block statements after any features"),a.forget();var h=new e(c,u,n+s,i);return t.dumpLineNumbers&&(h.debugInfo=r),h},nestableAtRule:function(){var e,n=a.i;if(t.dumpLineNumbers&&(e=f(n)),a.save(),a.$peekChar("@")){if(a.$str("@media"))return this.prepareAndGetNestableAtRule(He.Media,n,e,ne);if(a.$str("@container"))return this.prepareAndGetNestableAtRule(He.Container,n,e,ie)}a.restore()},plugin:function(){var e,t,n,r=a.i;if(a.$re(/^@plugin\s+/)){if(n=(t=this.pluginArgs())?{pluginArgs:t,isPlugin:!0}:{isPlugin:!0},e=this.entities.quoted()||this.entities.url())return a.$char(";")||(a.i=r,l("missing semi-colon on @plugin")),new He.Import(e,null,n,r+s,i);a.i=r,l("malformed @plugin statement")}},pluginArgs:function(){if(a.save(),!a.$char("("))return a.restore(),null;var e=a.$re(/^\s*([^);]+)\)\s*/);return e[1]?(a.forget(),e[1].trim()):(a.restore(),null)},atrule:function(){var e,n,r,o,u,c,h,p=a.i,v=!0,d=!0;if("@"===a.currentChar()){if(n=this.import()||this.plugin()||this.nestableAtRule())return n;if(a.save(),e=a.$re(/^@[a-z-]+/)){switch(o=e,"-"==e.charAt(1)&&e.indexOf("-",2)>0&&(o="@".concat(e.slice(e.indexOf("-",2)+1))),o){case"@charset":u=!0,v=!1;break;case"@namespace":c=!0,v=!1;break;case"@keyframes":case"@counter-style":u=!0;break;case"@document":case"@supports":h=!0,d=!1;break;default:h=!0}if(a.commentStore.length=0,u?(n=this.entity())||l("expected ".concat(e," identifier")):c?(n=this.expression())||l("expected ".concat(e," expression")):h&&(n=this.permissiveValue(/^[{;]/),v="{"===a.currentChar(),n?n.value||(n=null):v||";"===a.currentChar()||l("".concat(e," rule is missing block or ending semi-colon"))),v&&(r=this.blockRuleset()),r||!v&&n&&a.$char(";"))return a.forget(),new He.AtRule(e,n,r,p+s,i,t.dumpLineNumbers?f(p):null,d);a.restore("at-rule options not recognised")}}},value:function(){var e,t=[],n=a.i;do{if((e=this.expression())&&(t.push(e),!a.$char(",")))break}while(e);if(t.length>0)return new He.Value(t,n+s)},important:function(){if("!"===a.currentChar())return a.$re(/^! *important/)},sub:function(){var e,t;if(a.save(),a.$char("("))return(e=this.addition())&&a.$char(")")?(a.forget(),(t=new He.Expression([e])).parens=!0,t):void a.restore("Expected ')'");a.restore()},multiplication:function(){var e,t,n,i,r;if(e=this.operand()){for(r=a.isWhitespace(-1);!a.peek(/^\/[*/]/);){if(a.save(),!(n=a.$char("/")||a.$char("*"))){var s=a.i;(n=a.$str("./"))&&u("./ operator is deprecated",s,"DEPRECATED")}if(!n){a.forget();break}if(!(t=this.operand())){a.restore();break}a.forget(),e.parensInOp=!0,t.parensInOp=!0,i=new He.Operation(n,[i||e,t],r),r=a.isWhitespace(-1)}return i||e}},addition:function(){var e,t,n,i,r;if(e=this.multiplication()){for(r=a.isWhitespace(-1);(n=a.$re(/^[-+]\s+/)||!r&&(a.$char("+")||a.$char("-")))&&(t=this.multiplication());)e.parensInOp=!0,t.parensInOp=!0,i=new He.Operation(n,[i||e,t],r),r=a.isWhitespace(-1);return i||e}},conditions:function(){var e,t,n,i=a.i;if(e=this.condition(!0)){for(;a.peek(/^,\s*(not\s*)?\(/)&&a.$char(",")&&(t=this.condition(!0));)n=new He.Condition("or",n||e,t,i+s);return n||e}},condition:function(e){var t,n,i;if(t=this.conditionAnd(e)){if(n=a.$str("or")){if(!(i=this.condition(e)))return;t=new He.Condition(n,t,i)}return t}},conditionAnd:function(e){var t,n,i,r,s=this;if(t=(r=s.negatedCondition(e)||s.parenthesisCondition(e))||e?r:s.atomicCondition(e)){if(n=a.$str("and")){if(!(i=this.conditionAnd(e)))return;t=new He.Condition(n,t,i)}return t}},negatedCondition:function(e){if(a.$str("not")){var t=this.parenthesisCondition(e);return t&&(t.negate=!t.negate),t}},parenthesisCondition:function(e){var t;if(a.save(),a.$str("(")){if(t=function(t){var n;if(a.save(),n=t.condition(e)){if(a.$char(")"))return a.forget(),n;a.restore()}else a.restore()}(this))return a.forget(),t;if(t=this.atomicCondition(e)){if(a.$char(")"))return a.forget(),t;a.restore("expected ')' got '".concat(a.currentChar(),"'"))}else a.restore()}else a.restore()},atomicCondition:function(e,t){var n,i,r,o,u=this.entities,c=a.i,h=function(){return this.addition()||u.keyword()||u.quoted()||u.mixinLookup()}.bind(this);if(n=t||h())return a.$char(">")?o=a.$char("=")?">=":">":a.$char("<")?o=a.$char("=")?"<=":"<":a.$char("=")&&(o=a.$char(">")?"=>":a.$char("<")?"=<":"="),o?(i=h())?r=new He.Condition(o,n,i,c+s,!1):l("expected expression"):t||(r=new He.Condition("=",n,new He.Keyword("true"),c+s,!1)),r},operand:function(){var e,t=this.entities;a.peek(/^-[@$(]/)&&(e=a.$char("-"));var n=this.sub()||t.dimension()||t.color()||t.variable()||t.property()||t.call()||t.quoted(!0)||t.colorKeyword()||t.mixinLookup();return e&&(n.parensInOp=!0,n=new He.Negative(n)),n},expression:function(){var e,t,n=[],i=a.i;do{!(e=this.comment())||e.isLineComment?((e=this.addition()||this.entity())instanceof He.Comment&&(e=null),e&&(n.push(e),a.peek(/^\/[/*]/)||(t=a.$char("/"))&&n.push(new He.Anonymous(t,i+s)))):n.push(e)}while(e);if(n.length>0)return new He.Expression(n)},property:function(){var e=a.$re(/^(\*?-?[_a-zA-Z0-9-]+)\s*:/);if(e)return e[1]},ruleProperty:function(){var e,t,n=[],r=[];a.save();var o=a.$re(/^([_a-zA-Z0-9-]+)\s*:/);if(o)return n=[new He.Keyword(o[1])],a.forget(),n;function l(e){var t=a.i,i=a.$re(e);if(i)return r.push(t),n.push(i[1])}for(l(/^(\*?)/);l(/^((?:[\w-]+)|(?:[@$]\{[\w-]+\}))/););if(n.length>1&&l(/^((?:\+_|\+)?)\s*:/)){for(a.forget(),""===n[0]&&(n.shift(),r.shift()),t=0;t0;e--){var t=this.rules[e-1];if(t instanceof ce)return this.parseValue(t)}},parseValue:function(e){var t=this;function n(e){return e.value instanceof re&&!e.parsed?("string"==typeof e.value.value?new se(this.parse.context,this.parse.importManager,e.fileInfo(),e.value.getIndex()).parseNode(e.value.value,["value","important"],(function(t,n){t&&(e.parsed=!0),n&&(e.value=n[0],e.important=n[1]||"",e.parsed=!0)})):e.parsed=!0,e):e}if(Array.isArray(e)){var i=[];return e.forEach((function(e){i.push(n.call(t,e))})),i}return n.call(t,e)},rulesets:function(){if(!this.rules)return[];var e,t,n=[],i=this.rules;for(e=0;t=i[e];e++)t.isRuleset&&n.push(t);return n},prependRule:function(e){var t=this.rules;t?t.unshift(e):this.rules=[e],this.setParent(e,this)},find:function(e,t,n){t=t||this;var i,r,s=[],o=e.toCSS();return o in this._lookups?this._lookups[o]:(this.rulesets().forEach((function(o){if(o!==t)for(var a=0;ai){if(!n||n(o)){r=o.find(new oe(e.elements.slice(i)),t,n);for(var l=0;l0&&t.add(l),e.firstSelector=!0,o[0].genCSS(e,t),e.firstSelector=!1,i=1;i0?(s=(r=k(e)).pop(),o=i.createDerived(k(s.elements))):o=i.createDerived([]),t.length>0){var a=n.combinator,l=t[0].elements[0];a.emptyOrWhitespace&&!l.combinator.emptyOrWhitespace&&(a=l.combinator),o.elements.push(new m(a,l.value,n.isVariable,n._index,n._fileInfo)),o.elements=o.elements.concat(t[0].elements.slice(1))}if(0!==o.elements.length&&r.push(o),t.length>1){var u=t.slice(1);u=u.map((function(e){return e.createDerived(e.elements,[])})),r=r.concat(u)}return r}function o(e,t,n,i,r){var o;for(o=0;o0?i[i.length-1]=i[i.length-1].createDerived(i[i.length-1].elements.concat(e)):i.push(new oe(e));else t.push([new oe(e)])}function l(e,t){var n=t.createDerived(t.elements,t.extendList,t.evaldCondition);return n.copyVisibilityInfo(e),n}var u,c;if(!function e(t,n,l){var u,c,h,f,v,d,g,y,b,w,x,S,I=!1;for(f=[],v=[[]],u=0;y=l.elements[u];u++)if("&"!==y.value){var C=(S=void 0,(x=y).value instanceof p&&(S=x.value.value)instanceof oe?S:null);if(null!==C){a(f,v);var k,_=[],A=[];for(k=e(_,n,C),I=I||k,h=0;h<_.length;h++){o(v,[r(i(_[h],y),y)],y,l,A)}v=A,f=[]}else f.push(y)}else{for(I=!0,d=[],a(f,v),c=0;c0&&g[0].elements.push(new m(y.combinator,"",y.isVariable,y._index,y._fileInfo)),d.push(g);else for(h=0;h0&&(t.push(v[u]),w=v[u][b-1],v[u][b-1]=w.createDerived(w.elements,l.extendList));return I}(c=[],t,n))if(t.length>0)for(c=[],u=0;u0)for(t=0;t-1e-6&&(i=n.toFixed(20).replace(/0+$/,"")),e&&e.compress){if(0===n&&this.unit.isLength())return void t.add(i);n>0&&n<1&&(i=i.substr(1))}t.add(i),this.unit.genCSS(e,t)},operate:function(e,t,n){var i=this._operate(e,t,this.value,n.value),r=this.unit.clone();if("+"===t||"-"===t)if(0===r.numerator.length&&0===r.denominator.length)r=n.unit.clone(),this.unit.backupUnit&&(r.backupUnit=this.unit.backupUnit);else if(0===n.unit.numerator.length&&0===r.denominator.length);else{if(n=n.convertTo(this.unit.usedUnits()),e.strictUnits&&n.unit.toString()!==r.toString())throw new Error("Incompatible units. Change the units or use the unit function. "+"Bad units: '".concat(r.toString(),"' and '").concat(n.unit.toString(),"'."));i=this._operate(e,t,this.value,n.value)}else"*"===t?(r.numerator=r.numerator.concat(n.unit.numerator).sort(),r.denominator=r.denominator.concat(n.unit.denominator).sort(),r.cancel()):"/"===t&&(r.numerator=r.numerator.concat(n.unit.denominator).sort(),r.denominator=r.denominator.concat(n.unit.numerator).sort(),r.cancel());return new we(i,r)},compare:function(e){var t,n;if(e instanceof we){if(this.unit.isEmpty()||e.unit.isEmpty())t=this,n=e;else if(t=this.unify(),n=e.unify(),0!==t.unit.compare(n.unit))return;return u.numericCompare(t.value,n.value)}},unify:function(){return this.convertTo({length:"px",duration:"s",angle:"rad"})},convertTo:function(e){var t,n,i,r,s,o=this.value,l=this.unit.clone(),u={};if("string"==typeof e){for(t in a)a[t].hasOwnProperty(e)&&((u={})[t]=e);e=u}for(n in s=function(e,t){return i.hasOwnProperty(e)?(t?o/=i[e]/i[r]:o*=i[e]/i[r],r):e},e)e.hasOwnProperty(n)&&(r=e[n],i=a[n],l.map(s));return l.cancel(),new we(o,l)}});var xe=g,Se=function(e,t,n){this.op=e.trim(),this.operands=t,this.isSpaced=n};Se.prototype=Object.assign(new u,{type:"Operation",accept:function(e){this.operands=e.visitArray(this.operands)},eval:function(e){var t,n=this.operands[0].eval(e),i=this.operands[1].eval(e);if(e.isMathOn(this.op)){if(t="./"===this.op?"/":this.op,n instanceof we&&i instanceof c&&(n=n.toColor()),i instanceof we&&n instanceof c&&(i=i.toColor()),!n.operate||!i.operate){if((n instanceof Se||i instanceof Se)&&"/"===n.op&&e.math===xe.PARENS_DIVISION)return new Se(this.op,[n,i],this.isSpaced);throw{type:"Operation",message:"Operation on an invalid type"}}return n.operate(e,t,i)}return new Se(this.op,[n,i],this.isSpaced)},genCSS:function(e,t){this.operands[0].genCSS(e,t),this.isSpaced&&t.add(" "),t.add(this.op),this.isSpaced&&t.add(" "),this.operands[1].genCSS(e,t)}});var Ie=function(){return(Ie=Object.assign||function(e){for(var t,n=1,i=arguments.length;n1?t=new Ce(this.value.map((function(t){return t.eval?t.eval(e):t})),this.noSpacing):1===this.value.length?(!this.value[0].parens||this.value[0].parensInOp||e.inCalc||(r=!0),t=this.value[0].eval(e)):t=this,i&&e.outOfParenthesis(),!this.parens||!this.parensInOp||n||r||t instanceof we||(t=new p(t)),t},genCSS:function(e,t){for(var n=0;n1){var n=new oe([],null,null,this.getIndex(),this.fileInfo()).createEmptySelectors();(t=new me(n,e.mediaBlocks)).multiMedia=!0,t.copyVisibilityInfo(this.visibilityInfo()),this.setParent(t,this)}return delete e.mediaBlocks,delete e.mediaPath,t},evalNested:function(e){var t,n,i=e.mediaPath.concat([this]);for(t=0;t0;t--)e.splice(t,0,new re("and"));return new Ce(e)}))),this.setParent(this.features,this),new me([],[])},permute:function(e){if(0===e.length)return[];if(1===e.length)return e[0];for(var t=[],n=this.permute(e.slice(1)),i=0;i1?"[".concat(e.value.map((function(e){return e.toCSS()})).join(", "),"]"):e.toCSS()}});var Le=function(e,t,n,i){this.escaped=t,this.expression=e,this._index=n,this._fileInfo=i};Le.prototype=Object.assign(new $e,{type:"JavaScript",eval:function(e){var t=this.evaluateJavaScript(this.expression,e),n=typeof t;return"number"!==n||isNaN(t)?"string"===n?new Me('"'.concat(t,'"'),t,this.escaped,this._index):Array.isArray(t)?new re(t.join(", ")):new re(t):new we(t)}});var je=function(e,t){this.key=e,this.value=t};je.prototype=Object.assign(new u,{type:"Assignment",accept:function(e){this.value=e.visit(this.value)},eval:function(e){return this.value.eval?new je(this.key,this.value.eval(e)):this},genCSS:function(e,t){t.add("".concat(this.key,"=")),this.value.genCSS?this.value.genCSS(e,t):t.add(this.value)}});var Ne=function(e,t,n,i,r){this.op=e.trim(),this.lvalue=t,this.rvalue=n,this._index=i,this.negate=r};Ne.prototype=Object.assign(new u,{type:"Condition",accept:function(e){this.lvalue=e.visit(this.lvalue),this.rvalue=e.visit(this.rvalue)},eval:function(e){var t=function(e,t,n){switch(e){case"and":return t&&n;case"or":return t||n;default:switch(u.compare(t,n)){case-1:return"<"===e||"=<"===e||"<="===e;case 0:return"="===e||">="===e||"=<"===e||"<="===e;case 1:return">"===e||">="===e;default:return!1}}}(this.op,this.lvalue.eval(e),this.rvalue.eval(e));return this.negate?!t:t}});var De=function(e,t,n,i,r,s){this.op=e.trim(),this.lvalue=t,this.mvalue=n,this.op2=i?i.trim():null,this.rvalue=r,this._index=s,this.mvalues=[]};De.prototype=Object.assign(new u,{type:"QueryInParens",accept:function(e){this.lvalue=e.visit(this.lvalue),this.mvalue=e.visit(this.mvalue),this.rvalue&&(this.rvalue=e.visit(this.rvalue))},eval:function(e){var t,n;this.lvalue=this.lvalue.eval(e);for(var i=0;(n=e.frames[i])&&("Ruleset"!==n.type||!(t=n.rules.find((function(e){return!!(e instanceof ce&&e.variable)}))));i++);return this.mvalueCopy||(this.mvalueCopy=I(this.mvalue)),t?(this.mvalue=this.mvalueCopy,this.mvalue=this.mvalue.eval(e),this.mvalues.push(this.mvalue)):this.mvalue=this.mvalue.eval(e),this.rvalue&&(this.rvalue=this.rvalue.eval(e)),this},genCSS:function(e,t){this.lvalue.genCSS(e,t),t.add(" "+this.op+" "),this.mvalues.length>0&&(this.mvalue=this.mvalues.shift()),this.mvalue.genCSS(e,t),this.rvalue&&(t.add(" "+this.op2+" "),this.rvalue.genCSS(e,t))}});var Be=function(e,t,n,i,r){this._index=n,this._fileInfo=i;var s=new oe([],null,null,this._index,this._fileInfo).createEmptySelectors();this.features=new ae(t),this.rules=[new me(s,e)],this.rules[0].allowImports=!0,this.copyVisibilityInfo(r),this.allowRoot=!0,this.setParent(s,this),this.setParent(this.features,this),this.setParent(this.rules,this)};Be.prototype=Object.assign(new ge,Ie(Ie({type:"Container"},Oe),{genCSS:function(e,t){t.add("@container ",this._fileInfo,this._index),this.features.genCSS(e,t),this.outputRuleset(e,t,this.rules)},eval:function(e){e.mediaBlocks||(e.mediaBlocks=[],e.mediaPath=[]);var t=new Be(null,[],this._index,this._fileInfo,this.visibilityInfo());return this.debugInfo&&(this.rules[0].debugInfo=this.debugInfo,t.debugInfo=this.debugInfo),t.features=this.features.eval(e),e.mediaPath.push(t),e.mediaBlocks.push(t),this.rules[0].functionRegistry=e.frames[0].functionRegistry.inherit(),e.frames.unshift(this.rules[0]),t.rules=[this.rules[0].eval(e)],e.frames.shift(),e.mediaPath.pop(),0===e.mediaPath.length?t.evalTop(e):t.evalNested(e)}}));var Ue=function(e){this.value=e};Ue.prototype=Object.assign(new u,{type:"UnicodeDescriptor"});var qe=function(e){this.value=e};qe.prototype=Object.assign(new u,{type:"Negative",genCSS:function(e,t){t.add("-"),this.value.genCSS(e,t)},eval:function(e){return e.isMathOn()?new Se("*",[new we(-1),this.value]).eval(e):new qe(this.value.eval(e))}});var Te=function(e,t,n,i,r){switch(this.selector=e,this.option=t,this.object_id=Te.next_id++,this.parent_ids=[this.object_id],this._index=n,this._fileInfo=i,this.copyVisibilityInfo(r),this.allowRoot=!0,t){case"all":this.allowBefore=!0,this.allowAfter=!0;break;default:this.allowBefore=!1,this.allowAfter=!1}this.setParent(this.selector,this)};Te.prototype=Object.assign(new u,{type:"Extend",accept:function(e){this.selector=e.visit(this.selector)},eval:function(e){return new Te(this.selector.eval(e),this.option,this.getIndex(),this.fileInfo(),this.visibilityInfo())},clone:function(e){return new Te(this.selector,this.option,this.getIndex(),this.fileInfo(),this.visibilityInfo())},findSelfSelectors:function(e){var t,n,i=[];for(t=0;t0&&n.length&&""===n[0].combinator.value&&(n[0].combinator.value=" "),i=i.concat(e[t].elements);this.selfSelectors=[new oe(i)],this.selfSelectors[0].copyVisibilityInfo(this.visibilityInfo())}}),Te.next_id=0;var ze=function(e,t,n){this.variable=e,this._index=t,this._fileInfo=n,this.allowRoot=!0};ze.prototype=Object.assign(new u,{type:"VariableCall",eval:function(e){var t,n=new Ae(this.variable,this.getIndex(),this.fileInfo()).eval(e),i=new V({message:"Could not evaluate variable call ".concat(this.variable)});if(!n.ruleset){if(n.rules)t=n;else if(Array.isArray(n))t=new me("",n);else{if(!Array.isArray(n.value))throw i;t=new me("",n.value)}n=new ye(t)}if(n.ruleset)return n.callEval(e);throw i}});var Ge=function(e,t,n,i){this.value=e,this.lookups=t,this._index=n,this._fileInfo=i};Ge.prototype=Object.assign(new u,{type:"NamespaceValue",eval:function(e){var t,n,i=this.value.eval(e);for(t=0;tthis.params.length)return!1}n=Math.min(s,this.arity);for(var o=0;o0){for(c=!0,a=0;a0)f=2;else if(f=1,p[1]+p[2]>1)throw{type:"Runtime",message:"Ambiguous use of `default()` found when matching for `".concat(this.format(m),"`"),index:this.getIndex(),filename:this.fileInfo().filename};for(a=0;a0&&(e=e.slice(0,t)),(t=e.lastIndexOf("/"))<0&&(t=e.lastIndexOf("\\")),t<0?"":e.slice(0,t+1)},e.prototype.tryAppendExtension=function(e,t){return/(\.[a-z]*$)|([?;].*)$/.test(e)?e:e+t},e.prototype.tryAppendLessExtension=function(e){return this.tryAppendExtension(e,".less")},e.prototype.supportsSync=function(){return!1},e.prototype.alwaysMakePathsAbsolute=function(){return!1},e.prototype.isPathAbsolute=function(e){return/^(?:[a-z-]+:|\/|\\|#)/i.test(e)},e.prototype.join=function(e,t){return e?e+t:t},e.prototype.pathDiff=function(e,t){var n,i,r,s,o=this.extractUrlParts(e),a=this.extractUrlParts(t),l="";if(o.hostPart!==a.hostPart)return"";for(i=Math.max(a.directories.length,o.directories.length),n=0;nparseInt(t[n])?-1:1;return 0},e.prototype.versionToString=function(e){for(var t="",n=0;n1?e-1:e)<1?r+(s-r)*e*6:2*e<1?s:3*e<2?r+(s-r)*(2/3-e)*6:r}try{if(e instanceof c)return i=t?st(t):e.alpha,new c(e.rgb,i,"hsla");e=st(e)%360/360,t=tt(st(t)),n=tt(st(n)),i=tt(st(i)),r=2*n-(s=n<=.5?n*(t+1):n+t-n*t);var a=[255*o(e+1/3),255*o(e),255*o(e-1/3)];return i=st(i),new c(a,i,"hsla")}catch(e){}},hsv:function(e,t,n){return Ye.hsva(e,t,n,1)},hsva:function(e,t,n,i){var r,s;e=st(e)%360/360*360,t=st(t),n=st(n),i=st(i);var o=[n,n*(1-t),n*(1-(s=e/60-(r=Math.floor(e/60%6)))*t),n*(1-(1-s)*t)],a=[[0,3,1],[2,0,1],[1,0,3],[1,2,0],[3,1,0],[0,1,2]];return Ye.rgba(255*o[a[r][0]],255*o[a[r][1]],255*o[a[r][2]],i)},hue:function(e){return new we(it(e).h)},saturation:function(e){return new we(100*it(e).s,"%")},lightness:function(e){return new we(100*it(e).l,"%")},hsvhue:function(e){return new we(rt(e).h)},hsvsaturation:function(e){return new we(100*rt(e).s,"%")},hsvvalue:function(e){return new we(100*rt(e).v,"%")},red:function(e){return new we(e.rgb[0])},green:function(e){return new we(e.rgb[1])},blue:function(e){return new we(e.rgb[2])},alpha:function(e){return new we(it(e).a)},luma:function(e){return new we(e.luma()*e.alpha*100,"%")},luminance:function(e){var t=.2126*e.rgb[0]/255+.7152*e.rgb[1]/255+.0722*e.rgb[2]/255;return new we(t*e.alpha*100,"%")},saturate:function(e,t,n){if(!e.rgb)return null;var i=it(e);return void 0!==n&&"relative"===n.value?i.s+=i.s*t.value/100:i.s+=t.value/100,i.s=tt(i.s),nt(e,i)},desaturate:function(e,t,n){var i=it(e);return void 0!==n&&"relative"===n.value?i.s-=i.s*t.value/100:i.s-=t.value/100,i.s=tt(i.s),nt(e,i)},lighten:function(e,t,n){var i=it(e);return void 0!==n&&"relative"===n.value?i.l+=i.l*t.value/100:i.l+=t.value/100,i.l=tt(i.l),nt(e,i)},darken:function(e,t,n){var i=it(e);return void 0!==n&&"relative"===n.value?i.l-=i.l*t.value/100:i.l-=t.value/100,i.l=tt(i.l),nt(e,i)},fadein:function(e,t,n){var i=it(e);return void 0!==n&&"relative"===n.value?i.a+=i.a*t.value/100:i.a+=t.value/100,i.a=tt(i.a),nt(e,i)},fadeout:function(e,t,n){var i=it(e);return void 0!==n&&"relative"===n.value?i.a-=i.a*t.value/100:i.a-=t.value/100,i.a=tt(i.a),nt(e,i)},fade:function(e,t){var n=it(e);return n.a=t.value/100,n.a=tt(n.a),nt(e,n)},spin:function(e,t){var n=it(e),i=(n.h+t.value)%360;return n.h=i<0?360+i:i,nt(e,n)},mix:function(e,t,n){n||(n=new we(50));var i=n.value/100,r=2*i-1,s=it(e).a-it(t).a,o=((r*s==-1?r:(r+s)/(1+r*s))+1)/2,a=1-o,l=[e.rgb[0]*o+t.rgb[0]*a,e.rgb[1]*o+t.rgb[1]*a,e.rgb[2]*o+t.rgb[2]*a],u=e.alpha*i+t.alpha*(1-i);return new c(l,u)},greyscale:function(e){return Ye.desaturate(e,new we(100))},contrast:function(e,t,n,i){if(!e.rgb)return null;if(void 0===n&&(n=Ye.rgba(255,255,255,1)),void 0===t&&(t=Ye.rgba(0,0,0,1)),t.luma()>n.luma()){var r=n;n=t,t=r}return i=void 0===i?.43:st(i),e.luma().5&&(i=1,n=e>.25?Math.sqrt(e):((16*e-12)*e+4)*e),e-(1-2*t)*i*(n-e)},hardlight:function(e,t){return lt.overlay(t,e)},difference:function(e,t){return Math.abs(e-t)},exclusion:function(e,t){return e+t-2*e*t},average:function(e,t){return(e+t)/2},negation:function(e,t){return 1-Math.abs(e+t-1)}};for(var ut in lt)lt.hasOwnProperty(ut)&&(at[ut]=at.bind(null,lt[ut]));var ct=function(e){return Array.isArray(e.value)?e.value:Array(e)},ht={_SELF:function(e){return e},"~":function(){for(var e=[],t=0;to.value)&&(h[i]=r);else{if(void 0!==l&&a!==l)throw{type:"Argument",message:"incompatible types"};f[a]=h.length,h.push(r)}}return 1==h.length?h[0]:(t=h.map((function(e){return e.toCSS(c.context)})).join(this.context.compress?",":", "),new re("".concat(e?"min":"max","(").concat(t,")")))},mt={min:function(){for(var e=[],t=0;t<'.concat(u,'Gradient id="g" ').concat(n,">"),r=0;r ");return i+="".concat(u,"Gradient> '),i=encodeURIComponent(i),i="data:image/svg+xml,".concat(i),new Re(new Me("'".concat(i,"'"),i,!1,this.index,this.currentFileInfo),this.index,this.currentFileInfo)}}),te.addMultiple(wt),te.addMultiple(St),t};function Ct(e,t){var n,i=(t=t||{}).variables,r=new D.Eval(t);"object"!=typeof i||Array.isArray(i)||(i=Object.keys(i).map((function(e){var t=i[e];return t instanceof He.Value||(t instanceof He.Expression||(t=new He.Expression([t])),t=new He.Value([t])),new He.Declaration("@".concat(e),t,!1,null,0)})),r.frames=[new He.Ruleset(null,i)]);var s,o,a=[new Y.JoinSelectorVisitor,new Y.MarkVisibleSelectorsVisitor(!0),new Y.ExtendVisitor,new Y.ToCSSVisitor({compress:Boolean(t.compress)})],l=[];if(t.pluginManager){o=t.pluginManager.visitor();for(var u=0;u<2;u++)for(o.first();s=o.get();)s.isPreEvalVisitor?0!==u&&-1!==l.indexOf(s)||(l.push(s),s.run(e)):0!==u&&-1!==a.indexOf(s)||(s.isPreVisitor?a.unshift(s):a.push(s))}n=e.eval(r);for(var c=0;c=t);n++);this.preProcessors.splice(n,0,{preProcessor:e,priority:t})},e.prototype.addPostProcessor=function(e,t){var n;for(n=0;n=t);n++);this.postProcessors.splice(n,0,{postProcessor:e,priority:t})},e.prototype.addFileManager=function(e){this.fileManagers.push(e)},e.prototype.getPreProcessors=function(){for(var e=[],t=0;t0){var i=void 0,r=JSON.stringify(this._sourceMapGenerator.toJSON());this.sourceMapURL?i=this.sourceMapURL:this._sourceMapFilename&&(i=this._sourceMapFilename),this.sourceMapURL=i,this.sourceMap=r}return this._css.join("")},t}()}(e=new s(e,t)),e)),a=function(e){return function(){function t(e,t,n){this.less=e,this.rootFilename=n.filename,this.paths=t.paths||[],this.contents={},this.contentsIgnoredChars={},this.mime=t.mime,this.error=null,this.context=t,this.queue=[],this.files={}}return t.prototype.push=function(t,n,i,s,o){var a=this,l=this.context.pluginManager.Loader;this.queue.push(t);var u=function(e,n,i){a.queue.splice(a.queue.indexOf(t),1);var l=i===a.rootFilename;s.optional&&e?(o(null,{rules:[]},!1,null),r.info("The file ".concat(i," was skipped because it was not found and the import was marked optional."))):(a.files[i]||s.inline||(a.files[i]={root:n,options:s}),e&&!a.error&&(a.error=e),o(e,n,l,i))},c={rewriteUrls:this.context.rewriteUrls,entryPath:i.entryPath,rootpath:i.rootpath,rootFilename:i.rootFilename},h=e.getFileManager(t,i.currentDirectory,this.context,e);if(h){var f,p,v=function(e){var t,n=e.filename,r=e.contents.replace(/^\uFEFF/,"");c.currentDirectory=h.getPath(n),c.rewriteUrls&&(c.rootpath=h.join(a.context.rootpath||"",h.pathDiff(c.currentDirectory,c.entryPath)),!h.isPathAbsolute(c.rootpath)&&h.alwaysMakePathsAbsolute()&&(c.rootpath=h.join(c.entryPath,c.rootpath))),c.filename=n;var o=new D.Parse(a.context);o.processImports=!1,a.contents[n]=r,(i.reference||s.reference)&&(c.reference=!0),s.isPlugin?(t=l.evalPlugin(r,o,a,s.pluginArgs,c))instanceof V?u(t,null,n):u(null,t,n):s.inline?u(null,r,n):!a.files[n]||a.files[n].options.multiple||s.multiple?new se(o,a,c).parse(r,(function(e,t){u(e,t,n)})):u(null,a.files[n].root,n)},d=_(this.context);n&&(d.ext=s.isPlugin?".js":".less"),s.isPlugin?(d.mime="application/javascript",d.syncImport?f=l.loadPluginSync(t,i.currentDirectory,d,e,h):p=l.loadPlugin(t,i.currentDirectory,d,e,h)):d.syncImport?f=h.loadFileSync(t,i.currentDirectory,d,e):p=h.loadFile(t,i.currentDirectory,d,e,(function(e,t){e?u(e):v(t)})),f?f.filename?v(f):u(f):p&&p.then(v,u)}else u({message:"Could not find a file-manager for ".concat(t)})},t}()}(e);var u,c=function(e,t){var n=function(e,i,r){if("function"==typeof i?(r=i,i=P(this.options,{})):i=P(this.options,i||{}),!r){var s=this;return new Promise((function(t,r){n.call(s,e,i,(function(e,n){e?r(e):t(n)}))}))}this.parse(e,i,(function(e,n,i,s){if(e)return r(e);var o;try{o=new t(n,i).toCSS(s)}catch(e){return r(e)}r(null,o)}))};return n}(0,o),h=function(e,t,n){var i=function(e,t,r){if("function"==typeof t?(r=t,t=P(this.options,{})):t=P(this.options,t||{}),!r){var s=this;return new Promise((function(n,r){i.call(s,e,t,(function(e,t){e?r(e):n(t)}))}))}var o,a=void 0,l=new At(this,!t.reUsePluginManager);if(t.pluginManager=l,o=new D.Parse(t),t.rootFileInfo)a=t.rootFileInfo;else{var u=t.filename||"input",c=u.replace(/[^/\\]*$/,"");(a={filename:u,rewriteUrls:o.rewriteUrls,rootpath:o.rootpath||"",currentDirectory:c,entryPath:c,rootFilename:u}).rootpath&&"/"!==a.rootpath.slice(-1)&&(a.rootpath+="/")}var h=new n(this,o,a);this.importManager=h,t.plugins&&t.plugins.forEach((function(e){var t,n;if(e.fileContent){if(n=e.fileContent.replace(/^\uFEFF/,""),(t=l.Loader.evalPlugin(n,o,h,e.options,e.filename))instanceof V)return r(t)}else l.addPlugin(e)})),new se(o,h,a).parse(e,(function(e,n){if(e)return r(e);r(null,n,h,t)}),t)};return i}(0,0,a),f=Mt("v".concat("4.2.2")),p={version:[f.major,f.minor,f.patch],data:l,tree:He,Environment:s,AbstractFileManager:Qe,AbstractPluginLoader:Ke,environment:e,visitors:Y,Parser:se,functions:It(e),contexts:D,SourceMapOutput:n,SourceMapBuilder:i,ParseTree:o,ImportManager:a,render:c,parse:h,LessError:V,transformTree:Ct,utils:R,PluginManager:At,logger:r},v=function(e){return function(){var t=Object.create(e.prototype);return e.apply(t,Array.prototype.slice.call(arguments,0)),t}},d=Object.create(p);for(var m in p.tree)if("function"==typeof(u=p.tree[m]))d[m.toLowerCase()]=v(u);else for(var g in d[m]=Object.create(null),u)d[m][g.toLowerCase()]=v(u[g]);return p.parse=p.parse.bind(d),p.render=p.render.bind(d),d}var Ot={},Vt=function(){};Vt.prototype=Object.assign(new Qe,{alwaysMakePathsAbsolute:function(){return!0},join:function(e,t){return e?this.extractUrlParts(t,e).path:t},doXHR:function(e,t,n,i){var r=new XMLHttpRequest,s=!Pt.isFileProtocol||Pt.fileAsync;function o(t,n,i){t.status>=200&&t.status<300?n(t.responseText,t.getResponseHeader("Last-Modified")):"function"==typeof i&&i(t.status,e)}"function"==typeof r.overrideMimeType&&r.overrideMimeType("text/css"),Et.debug("XHR: Getting '".concat(e,"'")),r.open("GET",e,s),r.setRequestHeader("Accept",t||"text/x-less, text/css; q=0.9, */*; q=0.5"),r.send(null),Pt.isFileProtocol&&!Pt.fileAsync?0===r.status||r.status>=200&&r.status<300?n(r.responseText):i(r.status,e):s?r.onreadystatechange=function(){4==r.readyState&&o(r,n,i)}:o(r,n,i)},supports:function(){return!0},clearFileCache:function(){Ot={}},loadFile:function(e,t,n){t&&!this.isPathAbsolute(e)&&(e=t+e),e=n.ext?this.tryAppendExtension(e,n.ext):e,n=n||{};var i=this.extractUrlParts(e,window.location.href).url,r=this;return new Promise((function(e,t){if(n.useFileCache&&Ot[i])try{var s=Ot[i];return e({contents:s,filename:i,webInfo:{lastModified:new Date}})}catch(e){return t({filename:i,message:"Error loading file ".concat(i," error was ").concat(e.message)})}r.doXHR(i,n.mime,(function(t,n){Ot[i]=t,e({contents:t,filename:i,webInfo:{lastModified:n}})}),(function(e,n){t({type:"File",message:"'".concat(n,"' wasn't found (").concat(e,")"),href:i})}))}))}});var Ft=function(e,t){return Pt=e,Et=t,Vt},$t=function(e){this.less=e};$t.prototype=Object.assign(new Ke,{loadPlugin:function(e,t,n,i,r){return new Promise((function(s,o){r.loadFile(e,t,n,i).then(s).catch(o)}))}});var Lt=function(t,i,r){return{add:function(s,o){r.errorReporting&&"html"!==r.errorReporting?"console"===r.errorReporting?function(e,t){var n=e.filename||t,s=[],o="".concat(e.type||"Syntax","Error: ").concat(e.message||"There is an error in your .less file"," in ").concat(n),a=function(e,t,n){void 0!==e.extract[t]&&s.push("{line} {content}".replace(/\{line\}/,(parseInt(e.line,10)||0)+(t-1)).replace(/\{class\}/,n).replace(/\{content\}/,e.extract[t]))};e.line&&(a(e,0,""),a(e,1,"line"),a(e,2,""),o+=" on line ".concat(e.line,", column ").concat(e.column+1,":\n").concat(s.join("\n"))),e.stack&&(e.extract||r.logLevel>=4)&&(o+="\nStack Trace\n".concat(e.stack)),i.logger.error(o)}(s,o):"function"==typeof r.errorReporting&&r.errorReporting("add",s,o):function(i,s){var o,a,l="less-error-message:".concat(e(s||"")),u=t.document.createElement("div"),c=[],h=i.filename||s,f=h.match(/([^/]+(\?.*)?)$/)[1];u.id=l,u.className="less-error-message",a="".concat(i.type||"Syntax","Error: ").concat(i.message||"There is an error in your .less file")+' in ').concat(f," ");var p=function(e,t,n){void 0!==e.extract[t]&&c.push('
{line} {content} '.replace(/\{line\}/,(parseInt(e.line,10)||0)+(t-1)).replace(/\{class\}/,n).replace(/\{content\}/,e.extract[t]))};i.line&&(p(i,0,""),p(i,1,"line"),p(i,2,""),a+="on line ".concat(i.line,", column ").concat(i.column+1,":")),i.stack&&(i.extract||r.logLevel>=4)&&(a+=" Stack Trace".concat(i.stack.split("\n").slice(1).join(" "))),u.innerHTML=a,n(t.document,[".less-error-message ul, .less-error-message li {","list-style-type: none;","margin-right: 15px;","padding: 4px 0;","margin: 0;","}",".less-error-message label {","font-size: 12px;","margin-right: 15px;","padding: 4px 0;","color: #cc7777;","}",".less-error-message pre {","color: #dd6666;","padding: 4px 0;","margin: 0;","display: inline-block;","}",".less-error-message pre.line {","color: #ff0000;","}",".less-error-message h3 {","font-size: 20px;","font-weight: bold;","padding: 15px 0 5px 0;","margin: 0;","}",".less-error-message a {","color: #10a","}",".less-error-message .error {","color: red;","font-weight: bold;","padding-bottom: 2px;","border-bottom: 1px dashed red;","}"].join("\n"),{title:"error-message"}),u.style.cssText=["font-family: Arial, sans-serif","border: 1px solid #e00","background-color: #eee","border-radius: 5px","-webkit-border-radius: 5px","-moz-border-radius: 5px","color: #e00","padding: 15px","margin-bottom: 15px"].join(";"),"development"===r.env&&(o=setInterval((function(){var e=t.document,n=e.body;n&&(e.getElementById(l)?n.replaceChild(u,e.getElementById(l)):n.insertBefore(u,n.firstChild),clearInterval(o))}),10))}(s,o)},remove:function(n){r.errorReporting&&"html"!==r.errorReporting?"console"===r.errorReporting||"function"==typeof r.errorReporting&&r.errorReporting("remove",n):function(n){var i=t.document.getElementById("less-error-message:".concat(e(n)));i&&i.parentNode.removeChild(i)}(n)}}},jt={javascriptEnabled:!1,depends:!1,compress:!1,lint:!1,paths:[],color:!0,strictImports:!1,insecure:!1,rootpath:"",rewriteUrls:!1,math:1,strictUnits:!1,globalVars:null,modifyVars:null,urlArgs:""};if(window.less)for(var Nt in window.less)Object.prototype.hasOwnProperty.call(window.less,Nt)&&(jt[Nt]=window.less[Nt]);!function(e,n){t(n,i(e)),void 0===n.isFileProtocol&&(n.isFileProtocol=/^(file|(chrome|safari)(-extension)?|resource|qrc|app):/.test(e.location.protocol)),n.async=n.async||!1,n.fileAsync=n.fileAsync||!1,n.poll=n.poll||(n.isFileProtocol?1e3:1500),n.env=n.env||("127.0.0.1"==e.location.hostname||"0.0.0.0"==e.location.hostname||"localhost"==e.location.hostname||e.location.port&&e.location.port.length>0||n.isFileProtocol?"development":"production");var r=/!dumpLineNumbers:(comments|mediaquery|all)/.exec(e.location.hash);r&&(n.dumpLineNumbers=r[1]),void 0===n.useFileCache&&(n.useFileCache=!0),void 0===n.onReady&&(n.onReady=!0),n.relativeUrls&&(n.rewriteUrls="all")}(window,jt),jt.plugins=jt.plugins||[],window.LESS_PLUGINS&&(jt.plugins=jt.plugins.concat(window.LESS_PLUGINS));var Dt,Bt,Ut,qt=function(e,i){var r=e.document,s=Rt();s.options=i;var o=s.environment,a=Ft(i,s.logger),l=new a;o.addFileManager(l),s.FileManager=a,s.PluginLoader=$t,function(e,t){t.logLevel=void 0!==t.logLevel?t.logLevel:"development"===t.env?3:1,t.loggers||(t.loggers=[{debug:function(e){t.logLevel>=4&&console.log(e)},info:function(e){t.logLevel>=3&&console.log(e)},warn:function(e){t.logLevel>=2&&console.warn(e)},error:function(e){t.logLevel>=1&&console.error(e)}}]);for(var n=0;n 0 && styleNode.childNodes.length > 0 &&\n oldStyleNode.firstChild.nodeValue === styleNode.firstChild.nodeValue);\n }\n\n const head = document.getElementsByTagName('head')[0];\n\n // If there is no oldStyleNode, just append; otherwise, only append if we need\n // to replace oldStyleNode with an updated stylesheet\n if (oldStyleNode === null || keepOldStyleNode === false) {\n const nextEl = sheet && sheet.nextSibling || null;\n if (nextEl) {\n nextEl.parentNode.insertBefore(styleNode, nextEl);\n } else {\n head.appendChild(styleNode);\n }\n }\n if (oldStyleNode && keepOldStyleNode === false) {\n oldStyleNode.parentNode.removeChild(oldStyleNode);\n }\n\n // For IE.\n // This needs to happen *after* the style element is added to the DOM, otherwise IE 7 and 8 may crash.\n // See http://social.msdn.microsoft.com/Forums/en-US/7e081b65-878a-4c22-8e68-c10d39c2ed32/internet-explorer-crashes-appending-style-element-to-head\n if (styleNode.styleSheet) {\n try {\n styleNode.styleSheet.cssText = styles;\n } catch (e) {\n throw new Error('Couldn\\'t reassign styleSheet.cssText.');\n }\n }\n },\n currentScript: function(window) {\n const document = window.document;\n return document.currentScript || (() => {\n const scripts = document.getElementsByTagName('script');\n return scripts[scripts.length - 1];\n })();\n }\n};\n","export default {\n error: function(msg) {\n this._fireEvent('error', msg);\n },\n warn: function(msg) {\n this._fireEvent('warn', msg);\n },\n info: function(msg) {\n this._fireEvent('info', msg);\n },\n debug: function(msg) {\n this._fireEvent('debug', msg);\n },\n addListener: function(listener) {\n this._listeners.push(listener);\n },\n removeListener: function(listener) {\n for (let i = 0; i < this._listeners.length; i++) {\n if (this._listeners[i] === listener) {\n this._listeners.splice(i, 1);\n return;\n }\n }\n },\n _fireEvent: function(type, msg) {\n for (let i = 0; i < this._listeners.length; i++) {\n const logFunction = this._listeners[i][type];\n if (logFunction) {\n logFunction(msg);\n }\n }\n },\n _listeners: []\n};\n","/**\n * @todo Document why this abstraction exists, and the relationship between\n * environment, file managers, and plugin manager\n */\n\nimport logger from '../logger';\n\nclass Environment {\n constructor(externalEnvironment, fileManagers) {\n this.fileManagers = fileManagers || [];\n externalEnvironment = externalEnvironment || {};\n\n const optionalFunctions = ['encodeBase64', 'mimeLookup', 'charsetLookup', 'getSourceMapGenerator'];\n const requiredFunctions = [];\n const functions = requiredFunctions.concat(optionalFunctions);\n\n for (let i = 0; i < functions.length; i++) {\n const propName = functions[i];\n const environmentFunc = externalEnvironment[propName];\n if (environmentFunc) {\n this[propName] = environmentFunc.bind(externalEnvironment);\n } else if (i < requiredFunctions.length) {\n this.warn(`missing required function in environment - ${propName}`);\n }\n }\n }\n\n getFileManager(filename, currentDirectory, options, environment, isSync) {\n\n if (!filename) {\n logger.warn('getFileManager called with no filename.. Please report this issue. continuing.');\n }\n if (currentDirectory === undefined) {\n logger.warn('getFileManager called with null directory.. Please report this issue. continuing.');\n }\n\n let fileManagers = this.fileManagers;\n if (options.pluginManager) {\n fileManagers = [].concat(fileManagers).concat(options.pluginManager.getFileManagers());\n }\n for (let i = fileManagers.length - 1; i >= 0 ; i--) {\n const fileManager = fileManagers[i];\n if (fileManager[isSync ? 'supportsSync' : 'supports'](filename, currentDirectory, options, environment)) {\n return fileManager;\n }\n }\n return null;\n }\n\n addFileManager(fileManager) {\n this.fileManagers.push(fileManager);\n }\n\n clearFileManagers() {\n this.fileManagers = [];\n }\n}\n\nexport default Environment;\n","export default {\n 'aliceblue':'#f0f8ff',\n 'antiquewhite':'#faebd7',\n 'aqua':'#00ffff',\n 'aquamarine':'#7fffd4',\n 'azure':'#f0ffff',\n 'beige':'#f5f5dc',\n 'bisque':'#ffe4c4',\n 'black':'#000000',\n 'blanchedalmond':'#ffebcd',\n 'blue':'#0000ff',\n 'blueviolet':'#8a2be2',\n 'brown':'#a52a2a',\n 'burlywood':'#deb887',\n 'cadetblue':'#5f9ea0',\n 'chartreuse':'#7fff00',\n 'chocolate':'#d2691e',\n 'coral':'#ff7f50',\n 'cornflowerblue':'#6495ed',\n 'cornsilk':'#fff8dc',\n 'crimson':'#dc143c',\n 'cyan':'#00ffff',\n 'darkblue':'#00008b',\n 'darkcyan':'#008b8b',\n 'darkgoldenrod':'#b8860b',\n 'darkgray':'#a9a9a9',\n 'darkgrey':'#a9a9a9',\n 'darkgreen':'#006400',\n 'darkkhaki':'#bdb76b',\n 'darkmagenta':'#8b008b',\n 'darkolivegreen':'#556b2f',\n 'darkorange':'#ff8c00',\n 'darkorchid':'#9932cc',\n 'darkred':'#8b0000',\n 'darksalmon':'#e9967a',\n 'darkseagreen':'#8fbc8f',\n 'darkslateblue':'#483d8b',\n 'darkslategray':'#2f4f4f',\n 'darkslategrey':'#2f4f4f',\n 'darkturquoise':'#00ced1',\n 'darkviolet':'#9400d3',\n 'deeppink':'#ff1493',\n 'deepskyblue':'#00bfff',\n 'dimgray':'#696969',\n 'dimgrey':'#696969',\n 'dodgerblue':'#1e90ff',\n 'firebrick':'#b22222',\n 'floralwhite':'#fffaf0',\n 'forestgreen':'#228b22',\n 'fuchsia':'#ff00ff',\n 'gainsboro':'#dcdcdc',\n 'ghostwhite':'#f8f8ff',\n 'gold':'#ffd700',\n 'goldenrod':'#daa520',\n 'gray':'#808080',\n 'grey':'#808080',\n 'green':'#008000',\n 'greenyellow':'#adff2f',\n 'honeydew':'#f0fff0',\n 'hotpink':'#ff69b4',\n 'indianred':'#cd5c5c',\n 'indigo':'#4b0082',\n 'ivory':'#fffff0',\n 'khaki':'#f0e68c',\n 'lavender':'#e6e6fa',\n 'lavenderblush':'#fff0f5',\n 'lawngreen':'#7cfc00',\n 'lemonchiffon':'#fffacd',\n 'lightblue':'#add8e6',\n 'lightcoral':'#f08080',\n 'lightcyan':'#e0ffff',\n 'lightgoldenrodyellow':'#fafad2',\n 'lightgray':'#d3d3d3',\n 'lightgrey':'#d3d3d3',\n 'lightgreen':'#90ee90',\n 'lightpink':'#ffb6c1',\n 'lightsalmon':'#ffa07a',\n 'lightseagreen':'#20b2aa',\n 'lightskyblue':'#87cefa',\n 'lightslategray':'#778899',\n 'lightslategrey':'#778899',\n 'lightsteelblue':'#b0c4de',\n 'lightyellow':'#ffffe0',\n 'lime':'#00ff00',\n 'limegreen':'#32cd32',\n 'linen':'#faf0e6',\n 'magenta':'#ff00ff',\n 'maroon':'#800000',\n 'mediumaquamarine':'#66cdaa',\n 'mediumblue':'#0000cd',\n 'mediumorchid':'#ba55d3',\n 'mediumpurple':'#9370d8',\n 'mediumseagreen':'#3cb371',\n 'mediumslateblue':'#7b68ee',\n 'mediumspringgreen':'#00fa9a',\n 'mediumturquoise':'#48d1cc',\n 'mediumvioletred':'#c71585',\n 'midnightblue':'#191970',\n 'mintcream':'#f5fffa',\n 'mistyrose':'#ffe4e1',\n 'moccasin':'#ffe4b5',\n 'navajowhite':'#ffdead',\n 'navy':'#000080',\n 'oldlace':'#fdf5e6',\n 'olive':'#808000',\n 'olivedrab':'#6b8e23',\n 'orange':'#ffa500',\n 'orangered':'#ff4500',\n 'orchid':'#da70d6',\n 'palegoldenrod':'#eee8aa',\n 'palegreen':'#98fb98',\n 'paleturquoise':'#afeeee',\n 'palevioletred':'#d87093',\n 'papayawhip':'#ffefd5',\n 'peachpuff':'#ffdab9',\n 'peru':'#cd853f',\n 'pink':'#ffc0cb',\n 'plum':'#dda0dd',\n 'powderblue':'#b0e0e6',\n 'purple':'#800080',\n 'rebeccapurple':'#663399',\n 'red':'#ff0000',\n 'rosybrown':'#bc8f8f',\n 'royalblue':'#4169e1',\n 'saddlebrown':'#8b4513',\n 'salmon':'#fa8072',\n 'sandybrown':'#f4a460',\n 'seagreen':'#2e8b57',\n 'seashell':'#fff5ee',\n 'sienna':'#a0522d',\n 'silver':'#c0c0c0',\n 'skyblue':'#87ceeb',\n 'slateblue':'#6a5acd',\n 'slategray':'#708090',\n 'slategrey':'#708090',\n 'snow':'#fffafa',\n 'springgreen':'#00ff7f',\n 'steelblue':'#4682b4',\n 'tan':'#d2b48c',\n 'teal':'#008080',\n 'thistle':'#d8bfd8',\n 'tomato':'#ff6347',\n 'turquoise':'#40e0d0',\n 'violet':'#ee82ee',\n 'wheat':'#f5deb3',\n 'white':'#ffffff',\n 'whitesmoke':'#f5f5f5',\n 'yellow':'#ffff00',\n 'yellowgreen':'#9acd32'\n};","export default {\n length: {\n 'm': 1,\n 'cm': 0.01,\n 'mm': 0.001,\n 'in': 0.0254,\n 'px': 0.0254 / 96,\n 'pt': 0.0254 / 72,\n 'pc': 0.0254 / 72 * 12\n },\n duration: {\n 's': 1,\n 'ms': 0.001\n },\n angle: {\n 'rad': 1 / (2 * Math.PI),\n 'deg': 1 / 360,\n 'grad': 1 / 400,\n 'turn': 1\n }\n};","import colors from './colors';\nimport unitConversions from './unit-conversions';\n\nexport default { colors, unitConversions };\n","/**\n * The reason why Node is a class and other nodes simply do not extend\n * from Node (since we're transpiling) is due to this issue:\n * \n * @see https://github.com/less/less.js/issues/3434\n */\nclass Node {\n constructor() {\n this.parent = null;\n this.visibilityBlocks = undefined;\n this.nodeVisible = undefined;\n this.rootNode = null;\n this.parsed = null;\n }\n\n get currentFileInfo() {\n return this.fileInfo();\n }\n\n get index() {\n return this.getIndex();\n }\n\n setParent(nodes, parent) {\n function set(node) {\n if (node && node instanceof Node) {\n node.parent = parent;\n }\n }\n if (Array.isArray(nodes)) {\n nodes.forEach(set);\n }\n else {\n set(nodes);\n }\n }\n\n getIndex() {\n return this._index || (this.parent && this.parent.getIndex()) || 0;\n }\n\n fileInfo() {\n return this._fileInfo || (this.parent && this.parent.fileInfo()) || {};\n }\n\n isRulesetLike() { return false; }\n\n toCSS(context) {\n const strs = [];\n this.genCSS(context, {\n // remove when genCSS has JSDoc types\n // eslint-disable-next-line no-unused-vars\n add: function(chunk, fileInfo, index) {\n strs.push(chunk);\n },\n isEmpty: function () {\n return strs.length === 0;\n }\n });\n return strs.join('');\n }\n\n genCSS(context, output) {\n output.add(this.value);\n }\n\n accept(visitor) {\n this.value = visitor.visit(this.value);\n }\n\n eval() { return this; }\n\n _operate(context, op, a, b) {\n switch (op) {\n case '+': return a + b;\n case '-': return a - b;\n case '*': return a * b;\n case '/': return a / b;\n }\n }\n\n fround(context, value) {\n const precision = context && context.numPrecision;\n // add \"epsilon\" to ensure numbers like 1.000000005 (represented as 1.000000004999...) are properly rounded:\n return (precision) ? Number((value + 2e-16).toFixed(precision)) : value;\n }\n\n static compare(a, b) {\n /* returns:\n -1: a < b\n 0: a = b\n 1: a > b\n and *any* other value for a != b (e.g. undefined, NaN, -2 etc.) */\n\n if ((a.compare) &&\n // for \"symmetric results\" force toCSS-based comparison\n // of Quoted or Anonymous if either value is one of those\n !(b.type === 'Quoted' || b.type === 'Anonymous')) {\n return a.compare(b);\n } else if (b.compare) {\n return -b.compare(a);\n } else if (a.type !== b.type) {\n return undefined;\n }\n\n a = a.value;\n b = b.value;\n if (!Array.isArray(a)) {\n return a === b ? 0 : undefined;\n }\n if (a.length !== b.length) {\n return undefined;\n }\n for (let i = 0; i < a.length; i++) {\n if (Node.compare(a[i], b[i]) !== 0) {\n return undefined;\n }\n }\n return 0;\n }\n\n static numericCompare(a, b) {\n return a < b ? -1\n : a === b ? 0\n : a > b ? 1 : undefined;\n }\n\n // Returns true if this node represents root of ast imported by reference\n blocksVisibility() {\n if (this.visibilityBlocks === undefined) {\n this.visibilityBlocks = 0;\n }\n return this.visibilityBlocks !== 0;\n }\n\n addVisibilityBlock() {\n if (this.visibilityBlocks === undefined) {\n this.visibilityBlocks = 0;\n }\n this.visibilityBlocks = this.visibilityBlocks + 1;\n }\n\n removeVisibilityBlock() {\n if (this.visibilityBlocks === undefined) {\n this.visibilityBlocks = 0;\n }\n this.visibilityBlocks = this.visibilityBlocks - 1;\n }\n\n // Turns on node visibility - if called node will be shown in output regardless\n // of whether it comes from import by reference or not\n ensureVisibility() {\n this.nodeVisible = true;\n }\n\n // Turns off node visibility - if called node will NOT be shown in output regardless\n // of whether it comes from import by reference or not\n ensureInvisibility() {\n this.nodeVisible = false;\n }\n\n // return values:\n // false - the node must not be visible\n // true - the node must be visible\n // undefined or null - the node has the same visibility as its parent\n isVisible() {\n return this.nodeVisible;\n }\n\n visibilityInfo() {\n return {\n visibilityBlocks: this.visibilityBlocks,\n nodeVisible: this.nodeVisible\n };\n }\n\n copyVisibilityInfo(info) {\n if (!info) {\n return;\n }\n this.visibilityBlocks = info.visibilityBlocks;\n this.nodeVisible = info.nodeVisible;\n }\n}\n\nexport default Node;\n","import Node from './node';\nimport colors from '../data/colors';\n\n//\n// RGB Colors - #ff0014, #eee\n//\nconst Color = function(rgb, a, originalForm) {\n const self = this;\n //\n // The end goal here, is to parse the arguments\n // into an integer triplet, such as `128, 255, 0`\n //\n // This facilitates operations and conversions.\n //\n if (Array.isArray(rgb)) {\n this.rgb = rgb;\n } else if (rgb.length >= 6) {\n this.rgb = [];\n rgb.match(/.{2}/g).map(function (c, i) {\n if (i < 3) {\n self.rgb.push(parseInt(c, 16));\n } else {\n self.alpha = (parseInt(c, 16)) / 255;\n }\n });\n } else {\n this.rgb = [];\n rgb.split('').map(function (c, i) {\n if (i < 3) {\n self.rgb.push(parseInt(c + c, 16));\n } else {\n self.alpha = (parseInt(c + c, 16)) / 255;\n }\n });\n }\n this.alpha = this.alpha || (typeof a === 'number' ? a : 1);\n if (typeof originalForm !== 'undefined') {\n this.value = originalForm;\n }\n}\n\nColor.prototype = Object.assign(new Node(), {\n type: 'Color',\n\n luma() {\n let r = this.rgb[0] / 255, g = this.rgb[1] / 255, b = this.rgb[2] / 255;\n\n r = (r <= 0.03928) ? r / 12.92 : Math.pow(((r + 0.055) / 1.055), 2.4);\n g = (g <= 0.03928) ? g / 12.92 : Math.pow(((g + 0.055) / 1.055), 2.4);\n b = (b <= 0.03928) ? b / 12.92 : Math.pow(((b + 0.055) / 1.055), 2.4);\n\n return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n },\n\n genCSS(context, output) {\n output.add(this.toCSS(context));\n },\n\n toCSS(context, doNotCompress) {\n const compress = context && context.compress && !doNotCompress;\n let color;\n let alpha;\n let colorFunction;\n let args = [];\n\n // `value` is set if this color was originally\n // converted from a named color string so we need\n // to respect this and try to output named color too.\n alpha = this.fround(context, this.alpha);\n\n if (this.value) {\n if (this.value.indexOf('rgb') === 0) {\n if (alpha < 1) {\n colorFunction = 'rgba';\n }\n } else if (this.value.indexOf('hsl') === 0) {\n if (alpha < 1) {\n colorFunction = 'hsla';\n } else {\n colorFunction = 'hsl';\n }\n } else {\n return this.value;\n }\n } else {\n if (alpha < 1) {\n colorFunction = 'rgba';\n }\n }\n\n switch (colorFunction) {\n case 'rgba':\n args = this.rgb.map(function (c) {\n return clamp(Math.round(c), 255);\n }).concat(clamp(alpha, 1));\n break;\n case 'hsla':\n args.push(clamp(alpha, 1));\n // eslint-disable-next-line no-fallthrough\n case 'hsl':\n color = this.toHSL();\n args = [\n this.fround(context, color.h),\n `${this.fround(context, color.s * 100)}%`,\n `${this.fround(context, color.l * 100)}%`\n ].concat(args);\n }\n\n if (colorFunction) {\n // Values are capped between `0` and `255`, rounded and zero-padded.\n return `${colorFunction}(${args.join(`,${compress ? '' : ' '}`)})`;\n }\n\n color = this.toRGB();\n\n if (compress) {\n const splitcolor = color.split('');\n\n // Convert color to short format\n if (splitcolor[1] === splitcolor[2] && splitcolor[3] === splitcolor[4] && splitcolor[5] === splitcolor[6]) {\n color = `#${splitcolor[1]}${splitcolor[3]}${splitcolor[5]}`;\n }\n }\n\n return color;\n },\n\n //\n // Operations have to be done per-channel, if not,\n // channels will spill onto each other. Once we have\n // our result, in the form of an integer triplet,\n // we create a new Color node to hold the result.\n //\n operate(context, op, other) {\n const rgb = new Array(3);\n const alpha = this.alpha * (1 - other.alpha) + other.alpha;\n for (let c = 0; c < 3; c++) {\n rgb[c] = this._operate(context, op, this.rgb[c], other.rgb[c]);\n }\n return new Color(rgb, alpha);\n },\n\n toRGB() {\n return toHex(this.rgb);\n },\n\n toHSL() {\n const r = this.rgb[0] / 255, g = this.rgb[1] / 255, b = this.rgb[2] / 255, a = this.alpha;\n\n const max = Math.max(r, g, b), min = Math.min(r, g, b);\n let h;\n let s;\n const l = (max + min) / 2;\n const d = max - min;\n\n if (max === min) {\n h = s = 0;\n } else {\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n\n switch (max) {\n case r: h = (g - b) / d + (g < b ? 6 : 0); break;\n case g: h = (b - r) / d + 2; break;\n case b: h = (r - g) / d + 4; break;\n }\n h /= 6;\n }\n return { h: h * 360, s, l, a };\n },\n\n // Adapted from http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript\n toHSV() {\n const r = this.rgb[0] / 255, g = this.rgb[1] / 255, b = this.rgb[2] / 255, a = this.alpha;\n\n const max = Math.max(r, g, b), min = Math.min(r, g, b);\n let h;\n let s;\n const v = max;\n\n const d = max - min;\n if (max === 0) {\n s = 0;\n } else {\n s = d / max;\n }\n\n if (max === min) {\n h = 0;\n } else {\n switch (max) {\n case r: h = (g - b) / d + (g < b ? 6 : 0); break;\n case g: h = (b - r) / d + 2; break;\n case b: h = (r - g) / d + 4; break;\n }\n h /= 6;\n }\n return { h: h * 360, s, v, a };\n },\n\n toARGB() {\n return toHex([this.alpha * 255].concat(this.rgb));\n },\n\n compare(x) {\n return (x.rgb &&\n x.rgb[0] === this.rgb[0] &&\n x.rgb[1] === this.rgb[1] &&\n x.rgb[2] === this.rgb[2] &&\n x.alpha === this.alpha) ? 0 : undefined;\n }\n});\n\nColor.fromKeyword = function(keyword) {\n let c;\n const key = keyword.toLowerCase();\n // eslint-disable-next-line no-prototype-builtins\n if (colors.hasOwnProperty(key)) {\n c = new Color(colors[key].slice(1));\n }\n else if (key === 'transparent') {\n c = new Color([0, 0, 0], 0);\n }\n\n if (c) {\n c.value = keyword;\n return c;\n }\n};\n\nfunction clamp(v, max) {\n return Math.min(Math.max(v, 0), max);\n}\n\nfunction toHex(v) {\n return `#${v.map(function (c) {\n c = clamp(Math.round(c), 255);\n return (c < 16 ? '0' : '') + c.toString(16);\n }).join('')}`;\n}\n\nexport default Color;\n","import Node from './node';\n\nconst Paren = function(node) {\n this.value = node;\n};\n\nParen.prototype = Object.assign(new Node(), {\n type: 'Paren',\n\n genCSS(context, output) {\n output.add('(');\n this.value.genCSS(context, output);\n output.add(')');\n },\n\n eval(context) {\n return new Paren(this.value.eval(context));\n }\n});\n\nexport default Paren;\n","import Node from './node';\nconst _noSpaceCombinators = {\n '': true,\n ' ': true,\n '|': true\n};\n\nconst Combinator = function(value) {\n if (value === ' ') {\n this.value = ' ';\n this.emptyOrWhitespace = true;\n } else {\n this.value = value ? value.trim() : '';\n this.emptyOrWhitespace = this.value === '';\n }\n}\n\nCombinator.prototype = Object.assign(new Node(), {\n type: 'Combinator',\n\n genCSS(context, output) {\n const spaceOrEmpty = (context.compress || _noSpaceCombinators[this.value]) ? '' : ' ';\n output.add(spaceOrEmpty + this.value + spaceOrEmpty);\n }\n});\n\nexport default Combinator;\n","import Node from './node';\nimport Paren from './paren';\nimport Combinator from './combinator';\n\nconst Element = function(combinator, value, isVariable, index, currentFileInfo, visibilityInfo) {\n this.combinator = combinator instanceof Combinator ?\n combinator : new Combinator(combinator);\n\n if (typeof value === 'string') {\n this.value = value.trim();\n } else if (value) {\n this.value = value;\n } else {\n this.value = '';\n }\n this.isVariable = isVariable;\n this._index = index;\n this._fileInfo = currentFileInfo;\n this.copyVisibilityInfo(visibilityInfo);\n this.setParent(this.combinator, this);\n}\n\nElement.prototype = Object.assign(new Node(), {\n type: 'Element',\n\n accept(visitor) {\n const value = this.value;\n this.combinator = visitor.visit(this.combinator);\n if (typeof value === 'object') {\n this.value = visitor.visit(value);\n }\n },\n\n eval(context) {\n return new Element(this.combinator,\n this.value.eval ? this.value.eval(context) : this.value,\n this.isVariable,\n this.getIndex(),\n this.fileInfo(), this.visibilityInfo());\n },\n\n clone() {\n return new Element(this.combinator,\n this.value,\n this.isVariable,\n this.getIndex(),\n this.fileInfo(), this.visibilityInfo());\n },\n\n genCSS(context, output) {\n output.add(this.toCSS(context), this.fileInfo(), this.getIndex());\n },\n\n toCSS(context) {\n context = context || {};\n let value = this.value;\n const firstSelector = context.firstSelector;\n if (value instanceof Paren) {\n // selector in parens should not be affected by outer selector\n // flags (breaks only interpolated selectors - see #1973)\n context.firstSelector = true;\n }\n value = value.toCSS ? value.toCSS(context) : value;\n context.firstSelector = firstSelector;\n if (value === '' && this.combinator.value.charAt(0) === '&') {\n return '';\n } else {\n return this.combinator.toCSS(context) + value;\n }\n }\n});\n\nexport default Element;\n","\nexport const Math = {\n ALWAYS: 0,\n PARENS_DIVISION: 1,\n PARENS: 2\n // removed - STRICT_LEGACY: 3\n};\n\nexport const RewriteUrls = {\n OFF: 0,\n LOCAL: 1,\n ALL: 2\n};","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","/**\r\n * Returns the object type of the given payload\r\n *\r\n * @param {*} payload\r\n * @returns {string}\r\n */\r\nfunction getType(payload) {\r\n return Object.prototype.toString.call(payload).slice(8, -1);\r\n}\r\n/**\r\n * Returns whether the payload is undefined\r\n *\r\n * @param {*} payload\r\n * @returns {payload is undefined}\r\n */\r\nfunction isUndefined(payload) {\r\n return getType(payload) === 'Undefined';\r\n}\r\n/**\r\n * Returns whether the payload is null\r\n *\r\n * @param {*} payload\r\n * @returns {payload is null}\r\n */\r\nfunction isNull(payload) {\r\n return getType(payload) === 'Null';\r\n}\r\n/**\r\n * Returns whether the payload is a plain JavaScript object (excluding special classes or objects with other prototypes)\r\n *\r\n * @param {*} payload\r\n * @returns {payload is PlainObject}\r\n */\r\nfunction isPlainObject(payload) {\r\n if (getType(payload) !== 'Object')\r\n return false;\r\n return payload.constructor === Object && Object.getPrototypeOf(payload) === Object.prototype;\r\n}\r\n/**\r\n * Returns whether the payload is a plain JavaScript object (excluding special classes or objects with other prototypes)\r\n *\r\n * @param {*} payload\r\n * @returns {payload is PlainObject}\r\n */\r\nfunction isObject(payload) {\r\n return isPlainObject(payload);\r\n}\r\n/**\r\n * Returns whether the payload is a an empty object (excluding special classes or objects with other prototypes)\r\n *\r\n * @param {*} payload\r\n * @returns {payload is { [K in any]: never }}\r\n */\r\nfunction isEmptyObject(payload) {\r\n return isPlainObject(payload) && Object.keys(payload).length === 0;\r\n}\r\n/**\r\n * Returns whether the payload is a an empty object (excluding special classes or objects with other prototypes)\r\n *\r\n * @param {*} payload\r\n * @returns {payload is PlainObject}\r\n */\r\nfunction isFullObject(payload) {\r\n return isPlainObject(payload) && Object.keys(payload).length > 0;\r\n}\r\n/**\r\n * Returns whether the payload is an any kind of object (including special classes or objects with different prototypes)\r\n *\r\n * @param {*} payload\r\n * @returns {payload is PlainObject}\r\n */\r\nfunction isAnyObject(payload) {\r\n return getType(payload) === 'Object';\r\n}\r\n/**\r\n * Returns whether the payload is an object like a type passed in < >\r\n *\r\n * Usage: isObjectLike<{id: any}>(payload) // will make sure it's an object and has an `id` prop.\r\n *\r\n * @template T this must be passed in < >\r\n * @param {*} payload\r\n * @returns {payload is T}\r\n */\r\nfunction isObjectLike(payload) {\r\n return isAnyObject(payload);\r\n}\r\n/**\r\n * Returns whether the payload is a function (regular or async)\r\n *\r\n * @param {*} payload\r\n * @returns {payload is AnyFunction}\r\n */\r\nfunction isFunction(payload) {\r\n return typeof payload === 'function';\r\n}\r\n/**\r\n * Returns whether the payload is an array\r\n *\r\n * @param {any} payload\r\n * @returns {payload is any[]}\r\n */\r\nfunction isArray(payload) {\r\n return getType(payload) === 'Array';\r\n}\r\n/**\r\n * Returns whether the payload is a an array with at least 1 item\r\n *\r\n * @param {*} payload\r\n * @returns {payload is any[]}\r\n */\r\nfunction isFullArray(payload) {\r\n return isArray(payload) && payload.length > 0;\r\n}\r\n/**\r\n * Returns whether the payload is a an empty array\r\n *\r\n * @param {*} payload\r\n * @returns {payload is []}\r\n */\r\nfunction isEmptyArray(payload) {\r\n return isArray(payload) && payload.length === 0;\r\n}\r\n/**\r\n * Returns whether the payload is a string\r\n *\r\n * @param {*} payload\r\n * @returns {payload is string}\r\n */\r\nfunction isString(payload) {\r\n return getType(payload) === 'String';\r\n}\r\n/**\r\n * Returns whether the payload is a string, BUT returns false for ''\r\n *\r\n * @param {*} payload\r\n * @returns {payload is string}\r\n */\r\nfunction isFullString(payload) {\r\n return isString(payload) && payload !== '';\r\n}\r\n/**\r\n * Returns whether the payload is ''\r\n *\r\n * @param {*} payload\r\n * @returns {payload is string}\r\n */\r\nfunction isEmptyString(payload) {\r\n return payload === '';\r\n}\r\n/**\r\n * Returns whether the payload is a number (but not NaN)\r\n *\r\n * This will return `false` for `NaN`!!\r\n *\r\n * @param {*} payload\r\n * @returns {payload is number}\r\n */\r\nfunction isNumber(payload) {\r\n return getType(payload) === 'Number' && !isNaN(payload);\r\n}\r\n/**\r\n * Returns whether the payload is a boolean\r\n *\r\n * @param {*} payload\r\n * @returns {payload is boolean}\r\n */\r\nfunction isBoolean(payload) {\r\n return getType(payload) === 'Boolean';\r\n}\r\n/**\r\n * Returns whether the payload is a regular expression (RegExp)\r\n *\r\n * @param {*} payload\r\n * @returns {payload is RegExp}\r\n */\r\nfunction isRegExp(payload) {\r\n return getType(payload) === 'RegExp';\r\n}\r\n/**\r\n * Returns whether the payload is a Map\r\n *\r\n * @param {*} payload\r\n * @returns {payload is Map}\r\n */\r\nfunction isMap(payload) {\r\n return getType(payload) === 'Map';\r\n}\r\n/**\r\n * Returns whether the payload is a WeakMap\r\n *\r\n * @param {*} payload\r\n * @returns {payload is WeakMap}\r\n */\r\nfunction isWeakMap(payload) {\r\n return getType(payload) === 'WeakMap';\r\n}\r\n/**\r\n * Returns whether the payload is a Set\r\n *\r\n * @param {*} payload\r\n * @returns {payload is Set}\r\n */\r\nfunction isSet(payload) {\r\n return getType(payload) === 'Set';\r\n}\r\n/**\r\n * Returns whether the payload is a WeakSet\r\n *\r\n * @param {*} payload\r\n * @returns {payload is WeakSet}\r\n */\r\nfunction isWeakSet(payload) {\r\n return getType(payload) === 'WeakSet';\r\n}\r\n/**\r\n * Returns whether the payload is a Symbol\r\n *\r\n * @param {*} payload\r\n * @returns {payload is symbol}\r\n */\r\nfunction isSymbol(payload) {\r\n return getType(payload) === 'Symbol';\r\n}\r\n/**\r\n * Returns whether the payload is a Date, and that the date is valid\r\n *\r\n * @param {*} payload\r\n * @returns {payload is Date}\r\n */\r\nfunction isDate(payload) {\r\n return getType(payload) === 'Date' && !isNaN(payload);\r\n}\r\n/**\r\n * Returns whether the payload is a Blob\r\n *\r\n * @param {*} payload\r\n * @returns {payload is Blob}\r\n */\r\nfunction isBlob(payload) {\r\n return getType(payload) === 'Blob';\r\n}\r\n/**\r\n * Returns whether the payload is a File\r\n *\r\n * @param {*} payload\r\n * @returns {payload is File}\r\n */\r\nfunction isFile(payload) {\r\n return getType(payload) === 'File';\r\n}\r\n/**\r\n * Returns whether the payload is a Promise\r\n *\r\n * @param {*} payload\r\n * @returns {payload is Promise}\r\n */\r\nfunction isPromise(payload) {\r\n return getType(payload) === 'Promise';\r\n}\r\n/**\r\n * Returns whether the payload is an Error\r\n *\r\n * @param {*} payload\r\n * @returns {payload is Error}\r\n */\r\nfunction isError(payload) {\r\n return getType(payload) === 'Error';\r\n}\r\n/**\r\n * Returns whether the payload is literally the value `NaN` (it's `NaN` and also a `number`)\r\n *\r\n * @param {*} payload\r\n * @returns {payload is typeof NaN}\r\n */\r\nfunction isNaNValue(payload) {\r\n return getType(payload) === 'Number' && isNaN(payload);\r\n}\r\n/**\r\n * Returns whether the payload is a primitive type (eg. Boolean | Null | Undefined | Number | String | Symbol)\r\n *\r\n * @param {*} payload\r\n * @returns {(payload is boolean | null | undefined | number | string | symbol)}\r\n */\r\nfunction isPrimitive(payload) {\r\n return (isBoolean(payload) ||\r\n isNull(payload) ||\r\n isUndefined(payload) ||\r\n isNumber(payload) ||\r\n isString(payload) ||\r\n isSymbol(payload));\r\n}\r\n/**\r\n * Returns true whether the payload is null or undefined\r\n *\r\n * @param {*} payload\r\n * @returns {(payload is null | undefined)}\r\n */\r\nvar isNullOrUndefined = isOneOf(isNull, isUndefined);\r\nfunction isOneOf(a, b, c, d, e) {\r\n return function (value) {\r\n return a(value) || b(value) || (!!c && c(value)) || (!!d && d(value)) || (!!e && e(value));\r\n };\r\n}\r\n/**\r\n * Does a generic check to check that the given payload is of a given type.\r\n * In cases like Number, it will return true for NaN as NaN is a Number (thanks javascript!);\r\n * It will, however, differentiate between object and null\r\n *\r\n * @template T\r\n * @param {*} payload\r\n * @param {T} type\r\n * @throws {TypeError} Will throw type error if type is an invalid type\r\n * @returns {payload is T}\r\n */\r\nfunction isType(payload, type) {\r\n if (!(type instanceof Function)) {\r\n throw new TypeError('Type must be a function');\r\n }\r\n if (!Object.prototype.hasOwnProperty.call(type, 'prototype')) {\r\n throw new TypeError('Type is not a class');\r\n }\r\n // Classes usually have names (as functions usually have names)\r\n var name = type.name;\r\n return getType(payload) === name || Boolean(payload && payload.constructor === type);\r\n}\n\nexport { getType, isAnyObject, isArray, isBlob, isBoolean, isDate, isEmptyArray, isEmptyObject, isEmptyString, isError, isFile, isFullArray, isFullObject, isFullString, isFunction, isMap, isNaNValue, isNull, isNullOrUndefined, isNumber, isObject, isObjectLike, isOneOf, isPlainObject, isPrimitive, isPromise, isRegExp, isSet, isString, isSymbol, isType, isUndefined, isWeakMap, isWeakSet };\n","import { isArray, isPlainObject } from 'is-what';\n\nfunction assignProp(carry, key, newVal, originalObject, includeNonenumerable) {\r\n const propType = {}.propertyIsEnumerable.call(originalObject, key)\r\n ? 'enumerable'\r\n : 'nonenumerable';\r\n if (propType === 'enumerable')\r\n carry[key] = newVal;\r\n if (includeNonenumerable && propType === 'nonenumerable') {\r\n Object.defineProperty(carry, key, {\r\n value: newVal,\r\n enumerable: false,\r\n writable: true,\r\n configurable: true,\r\n });\r\n }\r\n}\r\n/**\r\n * Copy (clone) an object and all its props recursively to get rid of any prop referenced of the original object. Arrays are also cloned, however objects inside arrays are still linked.\r\n *\r\n * @export\r\n * @template T\r\n * @param {T} target Target can be anything\r\n * @param {Options} [options = {}] Options can be `props` or `nonenumerable`\r\n * @returns {T} the target with replaced values\r\n * @export\r\n */\r\nfunction copy(target, options = {}) {\r\n if (isArray(target)) {\r\n return target.map((item) => copy(item, options));\r\n }\r\n if (!isPlainObject(target)) {\r\n return target;\r\n }\r\n const props = Object.getOwnPropertyNames(target);\r\n const symbols = Object.getOwnPropertySymbols(target);\r\n return [...props, ...symbols].reduce((carry, key) => {\r\n if (isArray(options.props) && !options.props.includes(key)) {\r\n return carry;\r\n }\r\n const val = target[key];\r\n const newVal = copy(val, options);\r\n assignProp(carry, key, newVal, target, options.nonenumerable);\r\n return carry;\r\n }, {});\r\n}\n\nexport { copy };\n","/* jshint proto: true */\nimport * as Constants from './constants';\nimport { copy } from 'copy-anything';\n\nexport function getLocation(index, inputStream) {\n let n = index + 1;\n let line = null;\n let column = -1;\n\n while (--n >= 0 && inputStream.charAt(n) !== '\\n') {\n column++;\n }\n\n if (typeof index === 'number') {\n line = (inputStream.slice(0, index).match(/\\n/g) || '').length;\n }\n\n return {\n line,\n column\n };\n}\n\nexport function copyArray(arr) {\n let i;\n const length = arr.length;\n const copy = new Array(length);\n\n for (i = 0; i < length; i++) {\n copy[i] = arr[i];\n }\n return copy;\n}\n\nexport function clone(obj) {\n const cloned = {};\n for (const prop in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, prop)) {\n cloned[prop] = obj[prop];\n }\n }\n return cloned;\n}\n\nexport function defaults(obj1, obj2) {\n let newObj = obj2 || {};\n if (!obj2._defaults) {\n newObj = {};\n const defaults = copy(obj1);\n newObj._defaults = defaults;\n const cloned = obj2 ? copy(obj2) : {};\n Object.assign(newObj, defaults, cloned);\n }\n return newObj;\n}\n\nexport function copyOptions(obj1, obj2) {\n if (obj2 && obj2._defaults) {\n return obj2;\n }\n const opts = defaults(obj1, obj2);\n if (opts.strictMath) {\n opts.math = Constants.Math.PARENS;\n }\n // Back compat with changed relativeUrls option\n if (opts.relativeUrls) {\n opts.rewriteUrls = Constants.RewriteUrls.ALL;\n }\n if (typeof opts.math === 'string') {\n switch (opts.math.toLowerCase()) {\n case 'always':\n opts.math = Constants.Math.ALWAYS;\n break;\n case 'parens-division':\n opts.math = Constants.Math.PARENS_DIVISION;\n break;\n case 'strict':\n case 'parens':\n opts.math = Constants.Math.PARENS;\n break;\n default:\n opts.math = Constants.Math.PARENS;\n }\n }\n if (typeof opts.rewriteUrls === 'string') {\n switch (opts.rewriteUrls.toLowerCase()) {\n case 'off':\n opts.rewriteUrls = Constants.RewriteUrls.OFF;\n break;\n case 'local':\n opts.rewriteUrls = Constants.RewriteUrls.LOCAL;\n break;\n case 'all':\n opts.rewriteUrls = Constants.RewriteUrls.ALL;\n break;\n }\n }\n return opts;\n}\n\nexport function merge(obj1, obj2) {\n for (const prop in obj2) {\n if (Object.prototype.hasOwnProperty.call(obj2, prop)) {\n obj1[prop] = obj2[prop];\n }\n }\n return obj1;\n}\n\nexport function flattenArray(arr, result = []) {\n for (let i = 0, length = arr.length; i < length; i++) {\n const value = arr[i];\n if (Array.isArray(value)) {\n flattenArray(value, result);\n } else {\n if (value !== undefined) {\n result.push(value);\n }\n }\n }\n return result;\n}\n\nexport function isNullOrUndefined(val) {\n return val === null || val === undefined\n}","import * as utils from './utils';\n\nconst anonymousFunc = /(|Function):(\\d+):(\\d+)/;\n\n/**\n * This is a centralized class of any error that could be thrown internally (mostly by the parser).\n * Besides standard .message it keeps some additional data like a path to the file where the error\n * occurred along with line and column numbers.\n *\n * @class\n * @extends Error\n * @type {module.LessError}\n *\n * @prop {string} type\n * @prop {string} filename\n * @prop {number} index\n * @prop {number} line\n * @prop {number} column\n * @prop {number} callLine\n * @prop {number} callExtract\n * @prop {string[]} extract\n *\n * @param {Object} e - An error object to wrap around or just a descriptive object\n * @param {Object} fileContentMap - An object with file contents in 'contents' property (like importManager) @todo - move to fileManager?\n * @param {string} [currentFilename]\n */\nconst LessError = function(e, fileContentMap, currentFilename) {\n Error.call(this);\n\n const filename = e.filename || currentFilename;\n\n this.message = e.message;\n this.stack = e.stack;\n\n if (fileContentMap && filename) {\n const input = fileContentMap.contents[filename];\n const loc = utils.getLocation(e.index, input);\n var line = loc.line;\n const col = loc.column;\n const callLine = e.call && utils.getLocation(e.call, input).line;\n const lines = input ? input.split('\\n') : '';\n\n this.type = e.type || 'Syntax';\n this.filename = filename;\n this.index = e.index;\n this.line = typeof line === 'number' ? line + 1 : null;\n this.column = col;\n\n if (!this.line && this.stack) {\n const found = this.stack.match(anonymousFunc);\n\n /**\n * We have to figure out how this environment stringifies anonymous functions\n * so we can correctly map plugin errors.\n * \n * Note, in Node 8, the output of anonymous funcs varied based on parameters\n * being present or not, so we inject dummy params.\n */\n const func = new Function('a', 'throw new Error()');\n let lineAdjust = 0;\n try {\n func();\n } catch (e) {\n const match = e.stack.match(anonymousFunc);\n lineAdjust = 1 - parseInt(match[2]);\n }\n\n if (found) {\n if (found[2]) {\n this.line = parseInt(found[2]) + lineAdjust;\n }\n if (found[3]) {\n this.column = parseInt(found[3]);\n }\n }\n }\n\n this.callLine = callLine + 1;\n this.callExtract = lines[callLine];\n\n this.extract = [\n lines[this.line - 2],\n lines[this.line - 1],\n lines[this.line]\n ];\n }\n\n};\n\nif (typeof Object.create === 'undefined') {\n const F = function () {};\n F.prototype = Error.prototype;\n LessError.prototype = new F();\n} else {\n LessError.prototype = Object.create(Error.prototype);\n}\n\nLessError.prototype.constructor = LessError;\n\n/**\n * An overridden version of the default Object.prototype.toString\n * which uses additional information to create a helpful message.\n *\n * @param {Object} options\n * @returns {string}\n */\nLessError.prototype.toString = function(options) {\n options = options || {};\n\n let message = '';\n const extract = this.extract || [];\n let error = [];\n let stylize = function (str) { return str; };\n if (options.stylize) {\n const type = typeof options.stylize;\n if (type !== 'function') {\n throw Error(`options.stylize should be a function, got a ${type}!`);\n }\n stylize = options.stylize;\n }\n\n if (this.line !== null) {\n if (typeof extract[0] === 'string') {\n error.push(stylize(`${this.line - 1} ${extract[0]}`, 'grey'));\n }\n\n if (typeof extract[1] === 'string') {\n let errorTxt = `${this.line} `;\n if (extract[1]) {\n errorTxt += extract[1].slice(0, this.column) +\n stylize(stylize(stylize(extract[1].substr(this.column, 1), 'bold') +\n extract[1].slice(this.column + 1), 'red'), 'inverse');\n }\n error.push(errorTxt);\n }\n\n if (typeof extract[2] === 'string') {\n error.push(stylize(`${this.line + 1} ${extract[2]}`, 'grey'));\n }\n error = `${error.join('\\n') + stylize('', 'reset')}\\n`;\n }\n\n message += stylize(`${this.type}Error: ${this.message}`, 'red');\n if (this.filename) {\n message += stylize(' in ', 'red') + this.filename;\n }\n if (this.line) {\n message += stylize(` on line ${this.line}, column ${this.column + 1}:`, 'grey');\n }\n\n message += `\\n${error}`;\n\n if (this.callLine) {\n message += `${stylize('from ', 'red') + (this.filename || '')}/n`;\n message += `${stylize(this.callLine, 'grey')} ${this.callExtract}/n`;\n }\n\n return message;\n};\n\nexport default LessError;","import tree from '../tree';\n\nconst _visitArgs = { visitDeeper: true };\nlet _hasIndexed = false;\n\nfunction _noop(node) {\n return node;\n}\n\nfunction indexNodeTypes(parent, ticker) {\n // add .typeIndex to tree node types for lookup table\n let key, child;\n for (key in parent) { \n /* eslint guard-for-in: 0 */\n child = parent[key];\n switch (typeof child) {\n case 'function':\n // ignore bound functions directly on tree which do not have a prototype\n // or aren't nodes\n if (child.prototype && child.prototype.type) {\n child.prototype.typeIndex = ticker++;\n }\n break;\n case 'object':\n ticker = indexNodeTypes(child, ticker);\n break;\n \n }\n }\n return ticker;\n}\n\nclass Visitor {\n constructor(implementation) {\n this._implementation = implementation;\n this._visitInCache = {};\n this._visitOutCache = {};\n\n if (!_hasIndexed) {\n indexNodeTypes(tree, 1);\n _hasIndexed = true;\n }\n }\n\n visit(node) {\n if (!node) {\n return node;\n }\n\n const nodeTypeIndex = node.typeIndex;\n if (!nodeTypeIndex) {\n // MixinCall args aren't a node type?\n if (node.value && node.value.typeIndex) {\n this.visit(node.value);\n }\n return node;\n }\n\n const impl = this._implementation;\n let func = this._visitInCache[nodeTypeIndex];\n let funcOut = this._visitOutCache[nodeTypeIndex];\n const visitArgs = _visitArgs;\n let fnName;\n\n visitArgs.visitDeeper = true;\n\n if (!func) {\n fnName = `visit${node.type}`;\n func = impl[fnName] || _noop;\n funcOut = impl[`${fnName}Out`] || _noop;\n this._visitInCache[nodeTypeIndex] = func;\n this._visitOutCache[nodeTypeIndex] = funcOut;\n }\n\n if (func !== _noop) {\n const newNode = func.call(impl, node, visitArgs);\n if (node && impl.isReplacing) {\n node = newNode;\n }\n }\n\n if (visitArgs.visitDeeper && node) {\n if (node.length) {\n for (let i = 0, cnt = node.length; i < cnt; i++) {\n if (node[i].accept) {\n node[i].accept(this);\n }\n }\n } else if (node.accept) {\n node.accept(this);\n }\n }\n\n if (funcOut != _noop) {\n funcOut.call(impl, node);\n }\n\n return node;\n }\n\n visitArray(nodes, nonReplacing) {\n if (!nodes) {\n return nodes;\n }\n\n const cnt = nodes.length;\n let i;\n\n // Non-replacing\n if (nonReplacing || !this._implementation.isReplacing) {\n for (i = 0; i < cnt; i++) {\n this.visit(nodes[i]);\n }\n return nodes;\n }\n\n // Replacing\n const out = [];\n for (i = 0; i < cnt; i++) {\n const evald = this.visit(nodes[i]);\n if (evald === undefined) { continue; }\n if (!evald.splice) {\n out.push(evald);\n } else if (evald.length) {\n this.flatten(evald, out);\n }\n }\n return out;\n }\n\n flatten(arr, out) {\n if (!out) {\n out = [];\n }\n\n let cnt, i, item, nestedCnt, j, nestedItem;\n\n for (i = 0, cnt = arr.length; i < cnt; i++) {\n item = arr[i];\n if (item === undefined) {\n continue;\n }\n if (!item.splice) {\n out.push(item);\n continue;\n }\n\n for (j = 0, nestedCnt = item.length; j < nestedCnt; j++) {\n nestedItem = item[j];\n if (nestedItem === undefined) {\n continue;\n }\n if (!nestedItem.splice) {\n out.push(nestedItem);\n } else if (nestedItem.length) {\n this.flatten(nestedItem, out);\n }\n }\n }\n\n return out;\n }\n}\n\nexport default Visitor;\n","const contexts = {};\nexport default contexts;\nimport * as Constants from './constants';\n\nconst copyFromOriginal = function copyFromOriginal(original, destination, propertiesToCopy) {\n if (!original) { return; }\n\n for (let i = 0; i < propertiesToCopy.length; i++) {\n if (Object.prototype.hasOwnProperty.call(original, propertiesToCopy[i])) {\n destination[propertiesToCopy[i]] = original[propertiesToCopy[i]];\n }\n }\n};\n\n/*\n parse is used whilst parsing\n */\nconst parseCopyProperties = [\n // options\n 'paths', // option - unmodified - paths to search for imports on\n 'rewriteUrls', // option - whether to adjust URL's to be relative\n 'rootpath', // option - rootpath to append to URL's\n 'strictImports', // option -\n 'insecure', // option - whether to allow imports from insecure ssl hosts\n 'dumpLineNumbers', // option - whether to dump line numbers\n 'compress', // option - whether to compress\n 'syncImport', // option - whether to import synchronously\n 'chunkInput', // option - whether to chunk input. more performant but causes parse issues.\n 'mime', // browser only - mime type for sheet import\n 'useFileCache', // browser only - whether to use the per file session cache\n // context\n 'processImports', // option & context - whether to process imports. if false then imports will not be imported.\n // Used by the import manager to stop multiple import visitors being created.\n 'pluginManager' // Used as the plugin manager for the session\n];\n\ncontexts.Parse = function(options) {\n copyFromOriginal(options, this, parseCopyProperties);\n\n if (typeof this.paths === 'string') { this.paths = [this.paths]; }\n};\n\nconst evalCopyProperties = [\n 'paths', // additional include paths\n 'compress', // whether to compress\n 'math', // whether math has to be within parenthesis\n 'strictUnits', // whether units need to evaluate correctly\n 'sourceMap', // whether to output a source map\n 'importMultiple', // whether we are currently importing multiple copies\n 'urlArgs', // whether to add args into url tokens\n 'javascriptEnabled', // option - whether Inline JavaScript is enabled. if undefined, defaults to false\n 'pluginManager', // Used as the plugin manager for the session\n 'importantScope', // used to bubble up !important statements\n 'rewriteUrls' // option - whether to adjust URL's to be relative\n];\n\ncontexts.Eval = function(options, frames) {\n copyFromOriginal(options, this, evalCopyProperties);\n\n if (typeof this.paths === 'string') { this.paths = [this.paths]; }\n\n this.frames = frames || [];\n this.importantScope = this.importantScope || [];\n};\n\ncontexts.Eval.prototype.enterCalc = function () {\n if (!this.calcStack) {\n this.calcStack = [];\n }\n this.calcStack.push(true);\n this.inCalc = true;\n};\n\ncontexts.Eval.prototype.exitCalc = function () {\n this.calcStack.pop();\n if (!this.calcStack.length) {\n this.inCalc = false;\n }\n};\n\ncontexts.Eval.prototype.inParenthesis = function () {\n if (!this.parensStack) {\n this.parensStack = [];\n }\n this.parensStack.push(true);\n};\n\ncontexts.Eval.prototype.outOfParenthesis = function () {\n this.parensStack.pop();\n};\n\ncontexts.Eval.prototype.inCalc = false;\ncontexts.Eval.prototype.mathOn = true;\ncontexts.Eval.prototype.isMathOn = function (op) {\n if (!this.mathOn) {\n return false;\n }\n if (op === '/' && this.math !== Constants.Math.ALWAYS && (!this.parensStack || !this.parensStack.length)) {\n return false;\n }\n if (this.math > Constants.Math.PARENS_DIVISION) {\n return this.parensStack && this.parensStack.length;\n }\n return true;\n};\n\ncontexts.Eval.prototype.pathRequiresRewrite = function (path) {\n const isRelative = this.rewriteUrls === Constants.RewriteUrls.LOCAL ? isPathLocalRelative : isPathRelative;\n\n return isRelative(path);\n};\n\ncontexts.Eval.prototype.rewritePath = function (path, rootpath) {\n let newPath;\n\n rootpath = rootpath || '';\n newPath = this.normalizePath(rootpath + path);\n\n // If a path was explicit relative and the rootpath was not an absolute path\n // we must ensure that the new path is also explicit relative.\n if (isPathLocalRelative(path) &&\n isPathRelative(rootpath) &&\n isPathLocalRelative(newPath) === false) {\n newPath = `./${newPath}`;\n }\n\n return newPath;\n};\n\ncontexts.Eval.prototype.normalizePath = function (path) {\n const segments = path.split('/').reverse();\n let segment;\n\n path = [];\n while (segments.length !== 0) {\n segment = segments.pop();\n switch ( segment ) {\n case '.':\n break;\n case '..':\n if ((path.length === 0) || (path[path.length - 1] === '..')) {\n path.push( segment );\n } else {\n path.pop();\n }\n break;\n default:\n path.push(segment);\n break;\n }\n }\n\n return path.join('/');\n};\n\nfunction isPathRelative(path) {\n return !/^(?:[a-z-]+:|\\/|#)/i.test(path);\n}\n\nfunction isPathLocalRelative(path) {\n return path.charAt(0) === '.';\n}\n\n// todo - do the same for the toCSS ?\n","class ImportSequencer {\n constructor(onSequencerEmpty) {\n this.imports = [];\n this.variableImports = [];\n this._onSequencerEmpty = onSequencerEmpty;\n this._currentDepth = 0;\n }\n\n addImport(callback) {\n const importSequencer = this,\n importItem = {\n callback,\n args: null,\n isReady: false\n };\n this.imports.push(importItem);\n return function() {\n importItem.args = Array.prototype.slice.call(arguments, 0);\n importItem.isReady = true;\n importSequencer.tryRun();\n };\n }\n\n addVariableImport(callback) {\n this.variableImports.push(callback);\n }\n\n tryRun() {\n this._currentDepth++;\n try {\n while (true) {\n while (this.imports.length > 0) {\n const importItem = this.imports[0];\n if (!importItem.isReady) {\n return;\n }\n this.imports = this.imports.slice(1);\n importItem.callback.apply(null, importItem.args);\n }\n if (this.variableImports.length === 0) {\n break;\n }\n const variableImport = this.variableImports[0];\n this.variableImports = this.variableImports.slice(1);\n variableImport();\n }\n } finally {\n this._currentDepth--;\n }\n if (this._currentDepth === 0 && this._onSequencerEmpty) {\n this._onSequencerEmpty();\n }\n }\n}\n\nexport default ImportSequencer;\n","/* eslint-disable no-unused-vars */\n/**\n * @todo - Remove unused when JSDoc types are added for visitor methods\n */\nimport contexts from '../contexts';\nimport Visitor from './visitor';\nimport ImportSequencer from './import-sequencer';\nimport * as utils from '../utils';\n\nconst ImportVisitor = function(importer, finish) {\n\n this._visitor = new Visitor(this);\n this._importer = importer;\n this._finish = finish;\n this.context = new contexts.Eval();\n this.importCount = 0;\n this.onceFileDetectionMap = {};\n this.recursionDetector = {};\n this._sequencer = new ImportSequencer(this._onSequencerEmpty.bind(this));\n};\n\nImportVisitor.prototype = {\n isReplacing: false,\n run: function (root) {\n try {\n // process the contents\n this._visitor.visit(root);\n }\n catch (e) {\n this.error = e;\n }\n\n this.isFinished = true;\n this._sequencer.tryRun();\n },\n _onSequencerEmpty: function() {\n if (!this.isFinished) {\n return;\n }\n this._finish(this.error);\n },\n visitImport: function (importNode, visitArgs) {\n const inlineCSS = importNode.options.inline;\n\n if (!importNode.css || inlineCSS) {\n\n const context = new contexts.Eval(this.context, utils.copyArray(this.context.frames));\n const importParent = context.frames[0];\n\n this.importCount++;\n if (importNode.isVariableImport()) {\n this._sequencer.addVariableImport(this.processImportNode.bind(this, importNode, context, importParent));\n } else {\n this.processImportNode(importNode, context, importParent);\n }\n }\n visitArgs.visitDeeper = false;\n },\n processImportNode: function(importNode, context, importParent) {\n let evaldImportNode;\n const inlineCSS = importNode.options.inline;\n\n try {\n evaldImportNode = importNode.evalForImport(context);\n } catch (e) {\n if (!e.filename) { e.index = importNode.getIndex(); e.filename = importNode.fileInfo().filename; }\n // attempt to eval properly and treat as css\n importNode.css = true;\n // if that fails, this error will be thrown\n importNode.error = e;\n }\n\n if (evaldImportNode && (!evaldImportNode.css || inlineCSS)) {\n\n if (evaldImportNode.options.multiple) {\n context.importMultiple = true;\n }\n\n // try appending if we haven't determined if it is css or not\n const tryAppendLessExtension = evaldImportNode.css === undefined;\n\n for (let i = 0; i < importParent.rules.length; i++) {\n if (importParent.rules[i] === importNode) {\n importParent.rules[i] = evaldImportNode;\n break;\n }\n }\n\n const onImported = this.onImported.bind(this, evaldImportNode, context), sequencedOnImported = this._sequencer.addImport(onImported);\n\n this._importer.push(evaldImportNode.getPath(), tryAppendLessExtension, evaldImportNode.fileInfo(),\n evaldImportNode.options, sequencedOnImported);\n } else {\n this.importCount--;\n if (this.isFinished) {\n this._sequencer.tryRun();\n }\n }\n },\n onImported: function (importNode, context, e, root, importedAtRoot, fullPath) {\n if (e) {\n if (!e.filename) {\n e.index = importNode.getIndex(); e.filename = importNode.fileInfo().filename;\n }\n this.error = e;\n }\n\n const importVisitor = this,\n inlineCSS = importNode.options.inline,\n isPlugin = importNode.options.isPlugin,\n isOptional = importNode.options.optional,\n duplicateImport = importedAtRoot || fullPath in importVisitor.recursionDetector;\n\n if (!context.importMultiple) {\n if (duplicateImport) {\n importNode.skip = true;\n } else {\n importNode.skip = function() {\n if (fullPath in importVisitor.onceFileDetectionMap) {\n return true;\n }\n importVisitor.onceFileDetectionMap[fullPath] = true;\n return false;\n };\n }\n }\n\n if (!fullPath && isOptional) {\n importNode.skip = true;\n }\n\n if (root) {\n importNode.root = root;\n importNode.importedFilename = fullPath;\n\n if (!inlineCSS && !isPlugin && (context.importMultiple || !duplicateImport)) {\n importVisitor.recursionDetector[fullPath] = true;\n\n const oldContext = this.context;\n this.context = context;\n try {\n this._visitor.visit(root);\n } catch (e) {\n this.error = e;\n }\n this.context = oldContext;\n }\n }\n\n importVisitor.importCount--;\n\n if (importVisitor.isFinished) {\n importVisitor._sequencer.tryRun();\n }\n },\n visitDeclaration: function (declNode, visitArgs) {\n if (declNode.value.type === 'DetachedRuleset') {\n this.context.frames.unshift(declNode);\n } else {\n visitArgs.visitDeeper = false;\n }\n },\n visitDeclarationOut: function(declNode) {\n if (declNode.value.type === 'DetachedRuleset') {\n this.context.frames.shift();\n }\n },\n visitAtRule: function (atRuleNode, visitArgs) {\n this.context.frames.unshift(atRuleNode);\n },\n visitAtRuleOut: function (atRuleNode) {\n this.context.frames.shift();\n },\n visitMixinDefinition: function (mixinDefinitionNode, visitArgs) {\n this.context.frames.unshift(mixinDefinitionNode);\n },\n visitMixinDefinitionOut: function (mixinDefinitionNode) {\n this.context.frames.shift();\n },\n visitRuleset: function (rulesetNode, visitArgs) {\n this.context.frames.unshift(rulesetNode);\n },\n visitRulesetOut: function (rulesetNode) {\n this.context.frames.shift();\n },\n visitMedia: function (mediaNode, visitArgs) {\n this.context.frames.unshift(mediaNode.rules[0]);\n },\n visitMediaOut: function (mediaNode) {\n this.context.frames.shift();\n }\n};\nexport default ImportVisitor;\n","class SetTreeVisibilityVisitor {\n constructor(visible) {\n this.visible = visible;\n }\n\n run(root) {\n this.visit(root);\n }\n\n visitArray(nodes) {\n if (!nodes) {\n return nodes;\n }\n\n const cnt = nodes.length;\n let i;\n for (i = 0; i < cnt; i++) {\n this.visit(nodes[i]);\n }\n return nodes;\n }\n\n visit(node) {\n if (!node) {\n return node;\n }\n if (node.constructor === Array) {\n return this.visitArray(node);\n }\n\n if (!node.blocksVisibility || node.blocksVisibility()) {\n return node;\n }\n if (this.visible) {\n node.ensureVisibility();\n } else {\n node.ensureInvisibility();\n }\n\n node.accept(this);\n return node;\n }\n}\n\nexport default SetTreeVisibilityVisitor;","/* eslint-disable no-unused-vars */\n/**\n * @todo - Remove unused when JSDoc types are added for visitor methods\n */\nimport tree from '../tree';\nimport Visitor from './visitor';\nimport logger from '../logger';\nimport * as utils from '../utils';\n\n/* jshint loopfunc:true */\n\nclass ExtendFinderVisitor {\n constructor() {\n this._visitor = new Visitor(this);\n this.contexts = [];\n this.allExtendsStack = [[]];\n }\n\n run(root) {\n root = this._visitor.visit(root);\n root.allExtends = this.allExtendsStack[0];\n return root;\n }\n\n visitDeclaration(declNode, visitArgs) {\n visitArgs.visitDeeper = false;\n }\n\n visitMixinDefinition(mixinDefinitionNode, visitArgs) {\n visitArgs.visitDeeper = false;\n }\n\n visitRuleset(rulesetNode, visitArgs) {\n if (rulesetNode.root) {\n return;\n }\n\n let i;\n let j;\n let extend;\n const allSelectorsExtendList = [];\n let extendList;\n\n // get &:extend(.a); rules which apply to all selectors in this ruleset\n const rules = rulesetNode.rules, ruleCnt = rules ? rules.length : 0;\n for (i = 0; i < ruleCnt; i++) {\n if (rulesetNode.rules[i] instanceof tree.Extend) {\n allSelectorsExtendList.push(rules[i]);\n rulesetNode.extendOnEveryPath = true;\n }\n }\n\n // now find every selector and apply the extends that apply to all extends\n // and the ones which apply to an individual extend\n const paths = rulesetNode.paths;\n for (i = 0; i < paths.length; i++) {\n const selectorPath = paths[i], selector = selectorPath[selectorPath.length - 1], selExtendList = selector.extendList;\n\n extendList = selExtendList ? utils.copyArray(selExtendList).concat(allSelectorsExtendList)\n : allSelectorsExtendList;\n\n if (extendList) {\n extendList = extendList.map(function(allSelectorsExtend) {\n return allSelectorsExtend.clone();\n });\n }\n\n for (j = 0; j < extendList.length; j++) {\n this.foundExtends = true;\n extend = extendList[j];\n extend.findSelfSelectors(selectorPath);\n extend.ruleset = rulesetNode;\n if (j === 0) { extend.firstExtendOnThisSelectorPath = true; }\n this.allExtendsStack[this.allExtendsStack.length - 1].push(extend);\n }\n }\n\n this.contexts.push(rulesetNode.selectors);\n }\n\n visitRulesetOut(rulesetNode) {\n if (!rulesetNode.root) {\n this.contexts.length = this.contexts.length - 1;\n }\n }\n\n visitMedia(mediaNode, visitArgs) {\n mediaNode.allExtends = [];\n this.allExtendsStack.push(mediaNode.allExtends);\n }\n\n visitMediaOut(mediaNode) {\n this.allExtendsStack.length = this.allExtendsStack.length - 1;\n }\n\n visitAtRule(atRuleNode, visitArgs) {\n atRuleNode.allExtends = [];\n this.allExtendsStack.push(atRuleNode.allExtends);\n }\n\n visitAtRuleOut(atRuleNode) {\n this.allExtendsStack.length = this.allExtendsStack.length - 1;\n }\n}\n\nclass ProcessExtendsVisitor {\n constructor() {\n this._visitor = new Visitor(this);\n }\n\n run(root) {\n const extendFinder = new ExtendFinderVisitor();\n this.extendIndices = {};\n extendFinder.run(root);\n if (!extendFinder.foundExtends) { return root; }\n root.allExtends = root.allExtends.concat(this.doExtendChaining(root.allExtends, root.allExtends));\n this.allExtendsStack = [root.allExtends];\n const newRoot = this._visitor.visit(root);\n this.checkExtendsForNonMatched(root.allExtends);\n return newRoot;\n }\n\n checkExtendsForNonMatched(extendList) {\n const indices = this.extendIndices;\n extendList.filter(function(extend) {\n return !extend.hasFoundMatches && extend.parent_ids.length == 1;\n }).forEach(function(extend) {\n let selector = '_unknown_';\n try {\n selector = extend.selector.toCSS({});\n }\n catch (_) {}\n\n if (!indices[`${extend.index} ${selector}`]) {\n indices[`${extend.index} ${selector}`] = true;\n logger.warn(`extend '${selector}' has no matches`);\n }\n });\n }\n\n doExtendChaining(extendsList, extendsListTarget, iterationCount) {\n //\n // chaining is different from normal extension.. if we extend an extend then we are not just copying, altering\n // and pasting the selector we would do normally, but we are also adding an extend with the same target selector\n // this means this new extend can then go and alter other extends\n //\n // this method deals with all the chaining work - without it, extend is flat and doesn't work on other extend selectors\n // this is also the most expensive.. and a match on one selector can cause an extension of a selector we had already\n // processed if we look at each selector at a time, as is done in visitRuleset\n\n let extendIndex;\n\n let targetExtendIndex;\n let matches;\n const extendsToAdd = [];\n let newSelector;\n const extendVisitor = this;\n let selectorPath;\n let extend;\n let targetExtend;\n let newExtend;\n\n iterationCount = iterationCount || 0;\n\n // loop through comparing every extend with every target extend.\n // a target extend is the one on the ruleset we are looking at copy/edit/pasting in place\n // e.g. .a:extend(.b) {} and .b:extend(.c) {} then the first extend extends the second one\n // and the second is the target.\n // the separation into two lists allows us to process a subset of chains with a bigger set, as is the\n // case when processing media queries\n for (extendIndex = 0; extendIndex < extendsList.length; extendIndex++) {\n for (targetExtendIndex = 0; targetExtendIndex < extendsListTarget.length; targetExtendIndex++) {\n\n extend = extendsList[extendIndex];\n targetExtend = extendsListTarget[targetExtendIndex];\n\n // look for circular references\n if ( extend.parent_ids.indexOf( targetExtend.object_id ) >= 0 ) { continue; }\n\n // find a match in the target extends self selector (the bit before :extend)\n selectorPath = [targetExtend.selfSelectors[0]];\n matches = extendVisitor.findMatch(extend, selectorPath);\n\n if (matches.length) {\n extend.hasFoundMatches = true;\n\n // we found a match, so for each self selector..\n extend.selfSelectors.forEach(function(selfSelector) {\n const info = targetExtend.visibilityInfo();\n\n // process the extend as usual\n newSelector = extendVisitor.extendSelector(matches, selectorPath, selfSelector, extend.isVisible());\n\n // but now we create a new extend from it\n newExtend = new(tree.Extend)(targetExtend.selector, targetExtend.option, 0, targetExtend.fileInfo(), info);\n newExtend.selfSelectors = newSelector;\n\n // add the extend onto the list of extends for that selector\n newSelector[newSelector.length - 1].extendList = [newExtend];\n\n // record that we need to add it.\n extendsToAdd.push(newExtend);\n newExtend.ruleset = targetExtend.ruleset;\n\n // remember its parents for circular references\n newExtend.parent_ids = newExtend.parent_ids.concat(targetExtend.parent_ids, extend.parent_ids);\n\n // only process the selector once.. if we have :extend(.a,.b) then multiple\n // extends will look at the same selector path, so when extending\n // we know that any others will be duplicates in terms of what is added to the css\n if (targetExtend.firstExtendOnThisSelectorPath) {\n newExtend.firstExtendOnThisSelectorPath = true;\n targetExtend.ruleset.paths.push(newSelector);\n }\n });\n }\n }\n }\n\n if (extendsToAdd.length) {\n // try to detect circular references to stop a stack overflow.\n // may no longer be needed.\n this.extendChainCount++;\n if (iterationCount > 100) {\n let selectorOne = '{unable to calculate}';\n let selectorTwo = '{unable to calculate}';\n try {\n selectorOne = extendsToAdd[0].selfSelectors[0].toCSS();\n selectorTwo = extendsToAdd[0].selector.toCSS();\n }\n catch (e) {}\n throw { message: `extend circular reference detected. One of the circular extends is currently:${selectorOne}:extend(${selectorTwo})`};\n }\n\n // now process the new extends on the existing rules so that we can handle a extending b extending c extending\n // d extending e...\n return extendsToAdd.concat(extendVisitor.doExtendChaining(extendsToAdd, extendsListTarget, iterationCount + 1));\n } else {\n return extendsToAdd;\n }\n }\n\n visitDeclaration(ruleNode, visitArgs) {\n visitArgs.visitDeeper = false;\n }\n\n visitMixinDefinition(mixinDefinitionNode, visitArgs) {\n visitArgs.visitDeeper = false;\n }\n\n visitSelector(selectorNode, visitArgs) {\n visitArgs.visitDeeper = false;\n }\n\n visitRuleset(rulesetNode, visitArgs) {\n if (rulesetNode.root) {\n return;\n }\n let matches;\n let pathIndex;\n let extendIndex;\n const allExtends = this.allExtendsStack[this.allExtendsStack.length - 1];\n const selectorsToAdd = [];\n const extendVisitor = this;\n let selectorPath;\n\n // look at each selector path in the ruleset, find any extend matches and then copy, find and replace\n\n for (extendIndex = 0; extendIndex < allExtends.length; extendIndex++) {\n for (pathIndex = 0; pathIndex < rulesetNode.paths.length; pathIndex++) {\n selectorPath = rulesetNode.paths[pathIndex];\n\n // extending extends happens initially, before the main pass\n if (rulesetNode.extendOnEveryPath) { continue; }\n const extendList = selectorPath[selectorPath.length - 1].extendList;\n if (extendList && extendList.length) { continue; }\n\n matches = this.findMatch(allExtends[extendIndex], selectorPath);\n\n if (matches.length) {\n allExtends[extendIndex].hasFoundMatches = true;\n\n allExtends[extendIndex].selfSelectors.forEach(function(selfSelector) {\n let extendedSelectors;\n extendedSelectors = extendVisitor.extendSelector(matches, selectorPath, selfSelector, allExtends[extendIndex].isVisible());\n selectorsToAdd.push(extendedSelectors);\n });\n }\n }\n }\n rulesetNode.paths = rulesetNode.paths.concat(selectorsToAdd);\n }\n\n findMatch(extend, haystackSelectorPath) {\n //\n // look through the haystack selector path to try and find the needle - extend.selector\n // returns an array of selector matches that can then be replaced\n //\n let haystackSelectorIndex;\n\n let hackstackSelector;\n let hackstackElementIndex;\n let haystackElement;\n let targetCombinator;\n let i;\n const extendVisitor = this;\n const needleElements = extend.selector.elements;\n const potentialMatches = [];\n let potentialMatch;\n const matches = [];\n\n // loop through the haystack elements\n for (haystackSelectorIndex = 0; haystackSelectorIndex < haystackSelectorPath.length; haystackSelectorIndex++) {\n hackstackSelector = haystackSelectorPath[haystackSelectorIndex];\n\n for (hackstackElementIndex = 0; hackstackElementIndex < hackstackSelector.elements.length; hackstackElementIndex++) {\n\n haystackElement = hackstackSelector.elements[hackstackElementIndex];\n\n // if we allow elements before our match we can add a potential match every time. otherwise only at the first element.\n if (extend.allowBefore || (haystackSelectorIndex === 0 && hackstackElementIndex === 0)) {\n potentialMatches.push({pathIndex: haystackSelectorIndex, index: hackstackElementIndex, matched: 0,\n initialCombinator: haystackElement.combinator});\n }\n\n for (i = 0; i < potentialMatches.length; i++) {\n potentialMatch = potentialMatches[i];\n\n // selectors add \" \" onto the first element. When we use & it joins the selectors together, but if we don't\n // then each selector in haystackSelectorPath has a space before it added in the toCSS phase. so we need to\n // work out what the resulting combinator will be\n targetCombinator = haystackElement.combinator.value;\n if (targetCombinator === '' && hackstackElementIndex === 0) {\n targetCombinator = ' ';\n }\n\n // if we don't match, null our match to indicate failure\n if (!extendVisitor.isElementValuesEqual(needleElements[potentialMatch.matched].value, haystackElement.value) ||\n (potentialMatch.matched > 0 && needleElements[potentialMatch.matched].combinator.value !== targetCombinator)) {\n potentialMatch = null;\n } else {\n potentialMatch.matched++;\n }\n\n // if we are still valid and have finished, test whether we have elements after and whether these are allowed\n if (potentialMatch) {\n potentialMatch.finished = potentialMatch.matched === needleElements.length;\n if (potentialMatch.finished &&\n (!extend.allowAfter &&\n (hackstackElementIndex + 1 < hackstackSelector.elements.length || haystackSelectorIndex + 1 < haystackSelectorPath.length))) {\n potentialMatch = null;\n }\n }\n // if null we remove, if not, we are still valid, so either push as a valid match or continue\n if (potentialMatch) {\n if (potentialMatch.finished) {\n potentialMatch.length = needleElements.length;\n potentialMatch.endPathIndex = haystackSelectorIndex;\n potentialMatch.endPathElementIndex = hackstackElementIndex + 1; // index after end of match\n potentialMatches.length = 0; // we don't allow matches to overlap, so start matching again\n matches.push(potentialMatch);\n }\n } else {\n potentialMatches.splice(i, 1);\n i--;\n }\n }\n }\n }\n return matches;\n }\n\n isElementValuesEqual(elementValue1, elementValue2) {\n if (typeof elementValue1 === 'string' || typeof elementValue2 === 'string') {\n return elementValue1 === elementValue2;\n }\n if (elementValue1 instanceof tree.Attribute) {\n if (elementValue1.op !== elementValue2.op || elementValue1.key !== elementValue2.key) {\n return false;\n }\n if (!elementValue1.value || !elementValue2.value) {\n if (elementValue1.value || elementValue2.value) {\n return false;\n }\n return true;\n }\n elementValue1 = elementValue1.value.value || elementValue1.value;\n elementValue2 = elementValue2.value.value || elementValue2.value;\n return elementValue1 === elementValue2;\n }\n elementValue1 = elementValue1.value;\n elementValue2 = elementValue2.value;\n if (elementValue1 instanceof tree.Selector) {\n if (!(elementValue2 instanceof tree.Selector) || elementValue1.elements.length !== elementValue2.elements.length) {\n return false;\n }\n for (let i = 0; i < elementValue1.elements.length; i++) {\n if (elementValue1.elements[i].combinator.value !== elementValue2.elements[i].combinator.value) {\n if (i !== 0 || (elementValue1.elements[i].combinator.value || ' ') !== (elementValue2.elements[i].combinator.value || ' ')) {\n return false;\n }\n }\n if (!this.isElementValuesEqual(elementValue1.elements[i].value, elementValue2.elements[i].value)) {\n return false;\n }\n }\n return true;\n }\n return false;\n }\n\n extendSelector(matches, selectorPath, replacementSelector, isVisible) {\n\n // for a set of matches, replace each match with the replacement selector\n\n let currentSelectorPathIndex = 0, currentSelectorPathElementIndex = 0, path = [], matchIndex, selector, firstElement, match, newElements;\n\n for (matchIndex = 0; matchIndex < matches.length; matchIndex++) {\n match = matches[matchIndex];\n selector = selectorPath[match.pathIndex];\n firstElement = new tree.Element(\n match.initialCombinator,\n replacementSelector.elements[0].value,\n replacementSelector.elements[0].isVariable,\n replacementSelector.elements[0].getIndex(),\n replacementSelector.elements[0].fileInfo()\n );\n\n if (match.pathIndex > currentSelectorPathIndex && currentSelectorPathElementIndex > 0) {\n path[path.length - 1].elements = path[path.length - 1]\n .elements.concat(selectorPath[currentSelectorPathIndex].elements.slice(currentSelectorPathElementIndex));\n currentSelectorPathElementIndex = 0;\n currentSelectorPathIndex++;\n }\n\n newElements = selector.elements\n .slice(currentSelectorPathElementIndex, match.index)\n .concat([firstElement])\n .concat(replacementSelector.elements.slice(1));\n\n if (currentSelectorPathIndex === match.pathIndex && matchIndex > 0) {\n path[path.length - 1].elements =\n path[path.length - 1].elements.concat(newElements);\n } else {\n path = path.concat(selectorPath.slice(currentSelectorPathIndex, match.pathIndex));\n\n path.push(new tree.Selector(\n newElements\n ));\n }\n currentSelectorPathIndex = match.endPathIndex;\n currentSelectorPathElementIndex = match.endPathElementIndex;\n if (currentSelectorPathElementIndex >= selectorPath[currentSelectorPathIndex].elements.length) {\n currentSelectorPathElementIndex = 0;\n currentSelectorPathIndex++;\n }\n }\n\n if (currentSelectorPathIndex < selectorPath.length && currentSelectorPathElementIndex > 0) {\n path[path.length - 1].elements = path[path.length - 1]\n .elements.concat(selectorPath[currentSelectorPathIndex].elements.slice(currentSelectorPathElementIndex));\n currentSelectorPathIndex++;\n }\n\n path = path.concat(selectorPath.slice(currentSelectorPathIndex, selectorPath.length));\n path = path.map(function (currentValue) {\n // we can re-use elements here, because the visibility property matters only for selectors\n const derived = currentValue.createDerived(currentValue.elements);\n if (isVisible) {\n derived.ensureVisibility();\n } else {\n derived.ensureInvisibility();\n }\n return derived;\n });\n return path;\n }\n\n visitMedia(mediaNode, visitArgs) {\n let newAllExtends = mediaNode.allExtends.concat(this.allExtendsStack[this.allExtendsStack.length - 1]);\n newAllExtends = newAllExtends.concat(this.doExtendChaining(newAllExtends, mediaNode.allExtends));\n this.allExtendsStack.push(newAllExtends);\n }\n\n visitMediaOut(mediaNode) {\n const lastIndex = this.allExtendsStack.length - 1;\n this.allExtendsStack.length = lastIndex;\n }\n\n visitAtRule(atRuleNode, visitArgs) {\n let newAllExtends = atRuleNode.allExtends.concat(this.allExtendsStack[this.allExtendsStack.length - 1]);\n newAllExtends = newAllExtends.concat(this.doExtendChaining(newAllExtends, atRuleNode.allExtends));\n this.allExtendsStack.push(newAllExtends);\n }\n\n visitAtRuleOut(atRuleNode) {\n const lastIndex = this.allExtendsStack.length - 1;\n this.allExtendsStack.length = lastIndex;\n }\n}\n\nexport default ProcessExtendsVisitor;\n","/* eslint-disable no-unused-vars */\n/**\n * @todo - Remove unused when JSDoc types are added for visitor methods\n */\nimport Visitor from './visitor';\n\nclass JoinSelectorVisitor {\n constructor() {\n this.contexts = [[]];\n this._visitor = new Visitor(this);\n }\n\n run(root) {\n return this._visitor.visit(root);\n }\n\n visitDeclaration(declNode, visitArgs) {\n visitArgs.visitDeeper = false;\n }\n\n visitMixinDefinition(mixinDefinitionNode, visitArgs) {\n visitArgs.visitDeeper = false;\n }\n\n visitRuleset(rulesetNode, visitArgs) {\n const context = this.contexts[this.contexts.length - 1];\n const paths = [];\n let selectors;\n\n this.contexts.push(paths);\n\n if (!rulesetNode.root) {\n selectors = rulesetNode.selectors;\n if (selectors) {\n selectors = selectors.filter(function(selector) { return selector.getIsOutput(); });\n rulesetNode.selectors = selectors.length ? selectors : (selectors = null);\n if (selectors) { rulesetNode.joinSelectors(paths, context, selectors); }\n }\n if (!selectors) { rulesetNode.rules = null; }\n rulesetNode.paths = paths;\n }\n }\n\n visitRulesetOut(rulesetNode) {\n this.contexts.length = this.contexts.length - 1;\n }\n\n visitMedia(mediaNode, visitArgs) {\n const context = this.contexts[this.contexts.length - 1];\n mediaNode.rules[0].root = (context.length === 0 || context[0].multiMedia);\n }\n\n visitAtRule(atRuleNode, visitArgs) {\n const context = this.contexts[this.contexts.length - 1];\n if (atRuleNode.rules && atRuleNode.rules.length) {\n atRuleNode.rules[0].root = (atRuleNode.isRooted || context.length === 0 || null);\n }\n }\n}\n\nexport default JoinSelectorVisitor;\n","/* eslint-disable no-unused-vars */\n/**\n * @todo - Remove unused when JSDoc types are added for visitor methods\n */\nimport tree from '../tree';\nimport Visitor from './visitor';\n\nclass CSSVisitorUtils {\n constructor(context) {\n this._visitor = new Visitor(this);\n this._context = context;\n }\n\n containsSilentNonBlockedChild(bodyRules) {\n let rule;\n if (!bodyRules) {\n return false;\n }\n for (let r = 0; r < bodyRules.length; r++) {\n rule = bodyRules[r];\n if (rule.isSilent && rule.isSilent(this._context) && !rule.blocksVisibility()) {\n // the atrule contains something that was referenced (likely by extend)\n // therefore it needs to be shown in output too\n return true;\n }\n }\n return false;\n }\n\n keepOnlyVisibleChilds(owner) {\n if (owner && owner.rules) {\n owner.rules = owner.rules.filter(thing => thing.isVisible());\n }\n }\n\n isEmpty(owner) {\n return (owner && owner.rules) \n ? (owner.rules.length === 0) : true;\n }\n\n hasVisibleSelector(rulesetNode) {\n return (rulesetNode && rulesetNode.paths)\n ? (rulesetNode.paths.length > 0) : false;\n }\n\n resolveVisibility(node) {\n if (!node.blocksVisibility()) {\n if (this.isEmpty(node)) {\n return ;\n }\n\n return node;\n }\n\n const compiledRulesBody = node.rules[0];\n this.keepOnlyVisibleChilds(compiledRulesBody);\n\n if (this.isEmpty(compiledRulesBody)) {\n return ;\n }\n\n node.ensureVisibility();\n node.removeVisibilityBlock();\n\n return node;\n }\n\n isVisibleRuleset(rulesetNode) {\n if (rulesetNode.firstRoot) {\n return true;\n }\n\n if (this.isEmpty(rulesetNode)) {\n return false;\n }\n\n if (!rulesetNode.root && !this.hasVisibleSelector(rulesetNode)) {\n return false;\n }\n\n return true;\n }\n}\n\nconst ToCSSVisitor = function(context) {\n this._visitor = new Visitor(this);\n this._context = context;\n this.utils = new CSSVisitorUtils(context);\n};\n\nToCSSVisitor.prototype = {\n isReplacing: true,\n run: function (root) {\n return this._visitor.visit(root);\n },\n\n visitDeclaration: function (declNode, visitArgs) {\n if (declNode.blocksVisibility() || declNode.variable) {\n return;\n }\n return declNode;\n },\n\n visitMixinDefinition: function (mixinNode, visitArgs) {\n // mixin definitions do not get eval'd - this means they keep state\n // so we have to clear that state here so it isn't used if toCSS is called twice\n mixinNode.frames = [];\n },\n\n visitExtend: function (extendNode, visitArgs) {\n },\n\n visitComment: function (commentNode, visitArgs) {\n if (commentNode.blocksVisibility() || commentNode.isSilent(this._context)) {\n return;\n }\n return commentNode;\n },\n\n visitMedia: function(mediaNode, visitArgs) {\n const originalRules = mediaNode.rules[0].rules;\n mediaNode.accept(this._visitor);\n visitArgs.visitDeeper = false;\n\n return this.utils.resolveVisibility(mediaNode, originalRules);\n },\n\n visitImport: function (importNode, visitArgs) {\n if (importNode.blocksVisibility()) {\n return ;\n }\n return importNode;\n },\n\n visitAtRule: function(atRuleNode, visitArgs) {\n if (atRuleNode.rules && atRuleNode.rules.length) {\n return this.visitAtRuleWithBody(atRuleNode, visitArgs);\n } else {\n return this.visitAtRuleWithoutBody(atRuleNode, visitArgs);\n }\n },\n\n visitAnonymous: function(anonymousNode, visitArgs) {\n if (!anonymousNode.blocksVisibility()) {\n anonymousNode.accept(this._visitor);\n return anonymousNode;\n }\n },\n\n visitAtRuleWithBody: function(atRuleNode, visitArgs) {\n // if there is only one nested ruleset and that one has no path, then it is\n // just fake ruleset\n function hasFakeRuleset(atRuleNode) {\n const bodyRules = atRuleNode.rules;\n return bodyRules.length === 1 && (!bodyRules[0].paths || bodyRules[0].paths.length === 0);\n }\n function getBodyRules(atRuleNode) {\n const nodeRules = atRuleNode.rules;\n if (hasFakeRuleset(atRuleNode)) {\n return nodeRules[0].rules;\n }\n\n return nodeRules;\n }\n // it is still true that it is only one ruleset in array\n // this is last such moment\n // process childs\n const originalRules = getBodyRules(atRuleNode);\n atRuleNode.accept(this._visitor);\n visitArgs.visitDeeper = false;\n\n if (!this.utils.isEmpty(atRuleNode)) {\n this._mergeRules(atRuleNode.rules[0].rules);\n }\n\n return this.utils.resolveVisibility(atRuleNode, originalRules);\n },\n\n visitAtRuleWithoutBody: function(atRuleNode, visitArgs) {\n if (atRuleNode.blocksVisibility()) {\n return;\n }\n\n if (atRuleNode.name === '@charset') {\n // Only output the debug info together with subsequent @charset definitions\n // a comment (or @media statement) before the actual @charset atrule would\n // be considered illegal css as it has to be on the first line\n if (this.charset) {\n if (atRuleNode.debugInfo) {\n const comment = new tree.Comment(`/* ${atRuleNode.toCSS(this._context).replace(/\\n/g, '')} */\\n`);\n comment.debugInfo = atRuleNode.debugInfo;\n return this._visitor.visit(comment);\n }\n return;\n }\n this.charset = true;\n }\n\n return atRuleNode;\n },\n\n checkValidNodes: function(rules, isRoot) {\n if (!rules) {\n return;\n }\n\n for (let i = 0; i < rules.length; i++) {\n const ruleNode = rules[i];\n if (isRoot && ruleNode instanceof tree.Declaration && !ruleNode.variable) {\n throw { message: 'Properties must be inside selector blocks. They cannot be in the root',\n index: ruleNode.getIndex(), filename: ruleNode.fileInfo() && ruleNode.fileInfo().filename};\n }\n if (ruleNode instanceof tree.Call) {\n throw { message: `Function '${ruleNode.name}' did not return a root node`,\n index: ruleNode.getIndex(), filename: ruleNode.fileInfo() && ruleNode.fileInfo().filename};\n }\n if (ruleNode.type && !ruleNode.allowRoot) {\n throw { message: `${ruleNode.type} node returned by a function is not valid here`,\n index: ruleNode.getIndex(), filename: ruleNode.fileInfo() && ruleNode.fileInfo().filename};\n }\n }\n },\n\n visitRuleset: function (rulesetNode, visitArgs) {\n // at this point rulesets are nested into each other\n let rule;\n\n const rulesets = [];\n\n this.checkValidNodes(rulesetNode.rules, rulesetNode.firstRoot);\n\n if (!rulesetNode.root) {\n // remove invisible paths\n this._compileRulesetPaths(rulesetNode);\n\n // remove rulesets from this ruleset body and compile them separately\n const nodeRules = rulesetNode.rules;\n\n let nodeRuleCnt = nodeRules ? nodeRules.length : 0;\n for (let i = 0; i < nodeRuleCnt; ) {\n rule = nodeRules[i];\n if (rule && rule.rules) {\n // visit because we are moving them out from being a child\n rulesets.push(this._visitor.visit(rule));\n nodeRules.splice(i, 1);\n nodeRuleCnt--;\n continue;\n }\n i++;\n }\n // accept the visitor to remove rules and refactor itself\n // then we can decide nogw whether we want it or not\n // compile body\n if (nodeRuleCnt > 0) {\n rulesetNode.accept(this._visitor);\n } else {\n rulesetNode.rules = null;\n }\n visitArgs.visitDeeper = false;\n } else { // if (! rulesetNode.root) {\n rulesetNode.accept(this._visitor);\n visitArgs.visitDeeper = false;\n }\n\n if (rulesetNode.rules) {\n this._mergeRules(rulesetNode.rules);\n this._removeDuplicateRules(rulesetNode.rules);\n }\n\n // now decide whether we keep the ruleset\n if (this.utils.isVisibleRuleset(rulesetNode)) {\n rulesetNode.ensureVisibility();\n rulesets.splice(0, 0, rulesetNode);\n }\n\n if (rulesets.length === 1) {\n return rulesets[0];\n }\n return rulesets;\n },\n\n _compileRulesetPaths: function(rulesetNode) {\n if (rulesetNode.paths) {\n rulesetNode.paths = rulesetNode.paths\n .filter(p => {\n let i;\n if (p[0].elements[0].combinator.value === ' ') {\n p[0].elements[0].combinator = new(tree.Combinator)('');\n }\n for (i = 0; i < p.length; i++) {\n if (p[i].isVisible() && p[i].getIsOutput()) {\n return true;\n }\n }\n return false;\n });\n }\n },\n\n _removeDuplicateRules: function(rules) {\n if (!rules) { return; }\n\n // remove duplicates\n const ruleCache = {};\n\n let ruleList;\n let rule;\n let i;\n\n for (i = rules.length - 1; i >= 0 ; i--) {\n rule = rules[i];\n if (rule instanceof tree.Declaration) {\n if (!ruleCache[rule.name]) {\n ruleCache[rule.name] = rule;\n } else {\n ruleList = ruleCache[rule.name];\n if (ruleList instanceof tree.Declaration) {\n ruleList = ruleCache[rule.name] = [ruleCache[rule.name].toCSS(this._context)];\n }\n const ruleCSS = rule.toCSS(this._context);\n if (ruleList.indexOf(ruleCSS) !== -1) {\n rules.splice(i, 1);\n } else {\n ruleList.push(ruleCSS);\n }\n }\n }\n }\n },\n\n _mergeRules: function(rules) {\n if (!rules) {\n return; \n }\n\n const groups = {};\n const groupsArr = [];\n\n for (let i = 0; i < rules.length; i++) {\n const rule = rules[i];\n if (rule.merge) {\n const key = rule.name;\n groups[key] ? rules.splice(i--, 1) : \n groupsArr.push(groups[key] = []);\n groups[key].push(rule);\n }\n }\n\n groupsArr.forEach(group => {\n if (group.length > 0) {\n const result = group[0];\n let space = [];\n const comma = [new tree.Expression(space)];\n group.forEach(rule => {\n if ((rule.merge === '+') && (space.length > 0)) {\n comma.push(new tree.Expression(space = []));\n }\n space.push(rule.value);\n result.important = result.important || rule.important;\n });\n result.value = new tree.Value(comma);\n }\n });\n }\n};\n\nexport default ToCSSVisitor;\n","import Visitor from './visitor';\nimport ImportVisitor from './import-visitor';\nimport MarkVisibleSelectorsVisitor from './set-tree-visibility-visitor';\nimport ExtendVisitor from './extend-visitor';\nimport JoinSelectorVisitor from './join-selector-visitor';\nimport ToCSSVisitor from './to-css-visitor';\n\nexport default {\n Visitor,\n ImportVisitor,\n MarkVisibleSelectorsVisitor,\n ExtendVisitor,\n JoinSelectorVisitor,\n ToCSSVisitor\n};\n","import chunker from './chunker';\n\nexport default () => {\n let // Less input string\n input;\n\n let // current chunk\n j;\n\n const // holds state for backtracking\n saveStack = [];\n\n let // furthest index the parser has gone to\n furthest;\n\n let // if this is furthest we got to, this is the probably cause\n furthestPossibleErrorMessage;\n\n let // chunkified input\n chunks;\n\n let // current chunk\n current;\n\n let // index of current chunk, in `input`\n currentPos;\n\n const parserInput = {};\n const CHARCODE_SPACE = 32;\n const CHARCODE_TAB = 9;\n const CHARCODE_LF = 10;\n const CHARCODE_CR = 13;\n const CHARCODE_PLUS = 43;\n const CHARCODE_COMMA = 44;\n const CHARCODE_FORWARD_SLASH = 47;\n const CHARCODE_9 = 57;\n\n function skipWhitespace(length) {\n const oldi = parserInput.i;\n const oldj = j;\n const curr = parserInput.i - currentPos;\n const endIndex = parserInput.i + current.length - curr;\n const mem = (parserInput.i += length);\n const inp = input;\n let c;\n let nextChar;\n let comment;\n\n for (; parserInput.i < endIndex; parserInput.i++) {\n c = inp.charCodeAt(parserInput.i);\n\n if (parserInput.autoCommentAbsorb && c === CHARCODE_FORWARD_SLASH) {\n nextChar = inp.charAt(parserInput.i + 1);\n if (nextChar === '/') {\n comment = {index: parserInput.i, isLineComment: true};\n let nextNewLine = inp.indexOf('\\n', parserInput.i + 2);\n if (nextNewLine < 0) {\n nextNewLine = endIndex;\n }\n parserInput.i = nextNewLine;\n comment.text = inp.substr(comment.index, parserInput.i - comment.index);\n parserInput.commentStore.push(comment);\n continue;\n } else if (nextChar === '*') {\n const nextStarSlash = inp.indexOf('*/', parserInput.i + 2);\n if (nextStarSlash >= 0) {\n comment = {\n index: parserInput.i,\n text: inp.substr(parserInput.i, nextStarSlash + 2 - parserInput.i),\n isLineComment: false\n };\n parserInput.i += comment.text.length - 1;\n parserInput.commentStore.push(comment);\n continue;\n }\n }\n break;\n }\n\n if ((c !== CHARCODE_SPACE) && (c !== CHARCODE_LF) && (c !== CHARCODE_TAB) && (c !== CHARCODE_CR)) {\n break;\n }\n }\n\n current = current.slice(length + parserInput.i - mem + curr);\n currentPos = parserInput.i;\n\n if (!current.length) {\n if (j < chunks.length - 1) {\n current = chunks[++j];\n skipWhitespace(0); // skip space at the beginning of a chunk\n return true; // things changed\n }\n parserInput.finished = true;\n }\n\n return oldi !== parserInput.i || oldj !== j;\n }\n\n parserInput.save = () => {\n currentPos = parserInput.i;\n saveStack.push( { current, i: parserInput.i, j });\n };\n parserInput.restore = possibleErrorMessage => {\n\n if (parserInput.i > furthest || (parserInput.i === furthest && possibleErrorMessage && !furthestPossibleErrorMessage)) {\n furthest = parserInput.i;\n furthestPossibleErrorMessage = possibleErrorMessage;\n }\n const state = saveStack.pop();\n current = state.current;\n currentPos = parserInput.i = state.i;\n j = state.j;\n };\n parserInput.forget = () => {\n saveStack.pop();\n };\n parserInput.isWhitespace = offset => {\n const pos = parserInput.i + (offset || 0);\n const code = input.charCodeAt(pos);\n return (code === CHARCODE_SPACE || code === CHARCODE_CR || code === CHARCODE_TAB || code === CHARCODE_LF);\n };\n\n // Specialization of $(tok)\n parserInput.$re = tok => {\n if (parserInput.i > currentPos) {\n current = current.slice(parserInput.i - currentPos);\n currentPos = parserInput.i;\n }\n\n const m = tok.exec(current);\n if (!m) {\n return null;\n }\n\n skipWhitespace(m[0].length);\n if (typeof m === 'string') {\n return m;\n }\n\n return m.length === 1 ? m[0] : m;\n };\n\n parserInput.$char = tok => {\n if (input.charAt(parserInput.i) !== tok) {\n return null;\n }\n skipWhitespace(1);\n return tok;\n };\n\n parserInput.$peekChar = tok => {\n if (input.charAt(parserInput.i) !== tok) {\n return null;\n }\n return tok;\n };\n\n parserInput.$str = tok => {\n const tokLength = tok.length;\n\n // https://jsperf.com/string-startswith/21\n for (let i = 0; i < tokLength; i++) {\n if (input.charAt(parserInput.i + i) !== tok.charAt(i)) {\n return null;\n }\n }\n\n skipWhitespace(tokLength);\n return tok;\n };\n\n parserInput.$quoted = loc => {\n const pos = loc || parserInput.i;\n const startChar = input.charAt(pos);\n\n if (startChar !== '\\'' && startChar !== '\"') {\n return;\n }\n const length = input.length;\n const currentPosition = pos;\n\n for (let i = 1; i + currentPosition < length; i++) {\n const nextChar = input.charAt(i + currentPosition);\n switch (nextChar) {\n case '\\\\':\n i++;\n continue;\n case '\\r':\n case '\\n':\n break;\n case startChar: {\n const str = input.substr(currentPosition, i + 1);\n if (!loc && loc !== 0) {\n skipWhitespace(i + 1);\n return str\n }\n return [startChar, str];\n }\n default:\n }\n }\n return null;\n };\n\n /**\n * Permissive parsing. Ignores everything except matching {} [] () and quotes\n * until matching token (outside of blocks)\n */\n parserInput.$parseUntil = tok => {\n let quote = '';\n let returnVal = null;\n let inComment = false;\n let blockDepth = 0;\n const blockStack = [];\n const parseGroups = [];\n const length = input.length;\n const startPos = parserInput.i;\n let lastPos = parserInput.i;\n let i = parserInput.i;\n let loop = true;\n let testChar;\n\n if (typeof tok === 'string') {\n testChar = char => char === tok\n } else {\n testChar = char => tok.test(char)\n }\n\n do {\n let nextChar = input.charAt(i);\n if (blockDepth === 0 && testChar(nextChar)) {\n returnVal = input.substr(lastPos, i - lastPos);\n if (returnVal) {\n parseGroups.push(returnVal);\n }\n else {\n parseGroups.push(' ');\n }\n returnVal = parseGroups;\n skipWhitespace(i - startPos);\n loop = false\n } else {\n if (inComment) {\n if (nextChar === '*' && \n input.charAt(i + 1) === '/') {\n i++;\n blockDepth--;\n inComment = false;\n }\n i++;\n continue;\n }\n switch (nextChar) {\n case '\\\\':\n i++;\n nextChar = input.charAt(i);\n parseGroups.push(input.substr(lastPos, i - lastPos + 1));\n lastPos = i + 1;\n break;\n case '/':\n if (input.charAt(i + 1) === '*') {\n i++;\n inComment = true;\n blockDepth++;\n }\n break;\n case '\\'':\n case '\"':\n quote = parserInput.$quoted(i);\n if (quote) {\n parseGroups.push(input.substr(lastPos, i - lastPos), quote);\n i += quote[1].length - 1;\n lastPos = i + 1;\n }\n else {\n skipWhitespace(i - startPos);\n returnVal = nextChar;\n loop = false;\n }\n break;\n case '{':\n blockStack.push('}');\n blockDepth++;\n break;\n case '(':\n blockStack.push(')');\n blockDepth++;\n break;\n case '[':\n blockStack.push(']');\n blockDepth++;\n break;\n case '}':\n case ')':\n case ']': {\n const expected = blockStack.pop();\n if (nextChar === expected) {\n blockDepth--;\n } else {\n // move the parser to the error and return expected\n skipWhitespace(i - startPos);\n returnVal = expected;\n loop = false;\n }\n }\n }\n i++;\n if (i > length) {\n loop = false;\n }\n }\n } while (loop);\n\n return returnVal ? returnVal : null;\n }\n\n parserInput.autoCommentAbsorb = true;\n parserInput.commentStore = [];\n parserInput.finished = false;\n\n // Same as $(), but don't change the state of the parser,\n // just return the match.\n parserInput.peek = tok => {\n if (typeof tok === 'string') {\n // https://jsperf.com/string-startswith/21\n for (let i = 0; i < tok.length; i++) {\n if (input.charAt(parserInput.i + i) !== tok.charAt(i)) {\n return false;\n }\n }\n return true;\n } else {\n return tok.test(current);\n }\n };\n\n // Specialization of peek()\n // TODO remove or change some currentChar calls to peekChar\n parserInput.peekChar = tok => input.charAt(parserInput.i) === tok;\n\n parserInput.currentChar = () => input.charAt(parserInput.i);\n\n parserInput.prevChar = () => input.charAt(parserInput.i - 1);\n\n parserInput.getInput = () => input;\n\n parserInput.peekNotNumeric = () => {\n const c = input.charCodeAt(parserInput.i);\n // Is the first char of the dimension 0-9, '.', '+' or '-'\n return (c > CHARCODE_9 || c < CHARCODE_PLUS) || c === CHARCODE_FORWARD_SLASH || c === CHARCODE_COMMA;\n };\n\n parserInput.start = (str, chunkInput, failFunction) => {\n input = str;\n parserInput.i = j = currentPos = furthest = 0;\n\n // chunking apparently makes things quicker (but my tests indicate\n // it might actually make things slower in node at least)\n // and it is a non-perfect parse - it can't recognise\n // unquoted urls, meaning it can't distinguish comments\n // meaning comments with quotes or {}() in them get 'counted'\n // and then lead to parse errors.\n // In addition if the chunking chunks in the wrong place we might\n // not be able to parse a parser statement in one go\n // this is officially deprecated but can be switched on via an option\n // in the case it causes too much performance issues.\n if (chunkInput) {\n chunks = chunker(str, failFunction);\n } else {\n chunks = [str];\n }\n\n current = chunks[0];\n\n skipWhitespace(0);\n };\n\n parserInput.end = () => {\n let message;\n const isFinished = parserInput.i >= input.length;\n\n if (parserInput.i < furthest) {\n message = furthestPossibleErrorMessage;\n parserInput.i = furthest;\n }\n return {\n isFinished,\n furthest: parserInput.i,\n furthestPossibleErrorMessage: message,\n furthestReachedEnd: parserInput.i >= input.length - 1,\n furthestChar: input[parserInput.i]\n };\n };\n\n return parserInput;\n};\n","// Split the input into chunks.\nexport default function (input, fail) {\n const len = input.length;\n let level = 0;\n let parenLevel = 0;\n let lastOpening;\n let lastOpeningParen;\n let lastMultiComment;\n let lastMultiCommentEndBrace;\n const chunks = [];\n let emitFrom = 0;\n let chunkerCurrentIndex;\n let currentChunkStartIndex;\n let cc;\n let cc2;\n let matched;\n\n function emitChunk(force) {\n const len = chunkerCurrentIndex - emitFrom;\n if (((len < 512) && !force) || !len) {\n return;\n }\n chunks.push(input.slice(emitFrom, chunkerCurrentIndex + 1));\n emitFrom = chunkerCurrentIndex + 1;\n }\n\n for (chunkerCurrentIndex = 0; chunkerCurrentIndex < len; chunkerCurrentIndex++) {\n cc = input.charCodeAt(chunkerCurrentIndex);\n if (((cc >= 97) && (cc <= 122)) || (cc < 34)) {\n // a-z or whitespace\n continue;\n }\n\n switch (cc) {\n case 40: // (\n parenLevel++;\n lastOpeningParen = chunkerCurrentIndex;\n continue;\n case 41: // )\n if (--parenLevel < 0) {\n return fail('missing opening `(`', chunkerCurrentIndex);\n }\n continue;\n case 59: // ;\n if (!parenLevel) { emitChunk(); }\n continue;\n case 123: // {\n level++;\n lastOpening = chunkerCurrentIndex;\n continue;\n case 125: // }\n if (--level < 0) {\n return fail('missing opening `{`', chunkerCurrentIndex);\n }\n if (!level && !parenLevel) { emitChunk(); }\n continue;\n case 92: // \\\n if (chunkerCurrentIndex < len - 1) { chunkerCurrentIndex++; continue; }\n return fail('unescaped `\\\\`', chunkerCurrentIndex);\n case 34:\n case 39:\n case 96: // \", ' and `\n matched = 0;\n currentChunkStartIndex = chunkerCurrentIndex;\n for (chunkerCurrentIndex = chunkerCurrentIndex + 1; chunkerCurrentIndex < len; chunkerCurrentIndex++) {\n cc2 = input.charCodeAt(chunkerCurrentIndex);\n if (cc2 > 96) { continue; }\n if (cc2 == cc) { matched = 1; break; }\n if (cc2 == 92) { // \\\n if (chunkerCurrentIndex == len - 1) {\n return fail('unescaped `\\\\`', chunkerCurrentIndex);\n }\n chunkerCurrentIndex++;\n }\n }\n if (matched) { continue; }\n return fail(`unmatched \\`${String.fromCharCode(cc)}\\``, currentChunkStartIndex);\n case 47: // /, check for comment\n if (parenLevel || (chunkerCurrentIndex == len - 1)) { continue; }\n cc2 = input.charCodeAt(chunkerCurrentIndex + 1);\n if (cc2 == 47) {\n // //, find lnfeed\n for (chunkerCurrentIndex = chunkerCurrentIndex + 2; chunkerCurrentIndex < len; chunkerCurrentIndex++) {\n cc2 = input.charCodeAt(chunkerCurrentIndex);\n if ((cc2 <= 13) && ((cc2 == 10) || (cc2 == 13))) { break; }\n }\n } else if (cc2 == 42) {\n // /*, find */\n lastMultiComment = currentChunkStartIndex = chunkerCurrentIndex;\n for (chunkerCurrentIndex = chunkerCurrentIndex + 2; chunkerCurrentIndex < len - 1; chunkerCurrentIndex++) {\n cc2 = input.charCodeAt(chunkerCurrentIndex);\n if (cc2 == 125) { lastMultiCommentEndBrace = chunkerCurrentIndex; }\n if (cc2 != 42) { continue; }\n if (input.charCodeAt(chunkerCurrentIndex + 1) == 47) { break; }\n }\n if (chunkerCurrentIndex == len - 1) {\n return fail('missing closing `*/`', currentChunkStartIndex);\n }\n chunkerCurrentIndex++;\n }\n continue;\n case 42: // *, check for unmatched */\n if ((chunkerCurrentIndex < len - 1) && (input.charCodeAt(chunkerCurrentIndex + 1) == 47)) {\n return fail('unmatched `/*`', chunkerCurrentIndex);\n }\n continue;\n }\n }\n\n if (level !== 0) {\n if ((lastMultiComment > lastOpening) && (lastMultiCommentEndBrace > lastMultiComment)) {\n return fail('missing closing `}` or `*/`', lastOpening);\n } else {\n return fail('missing closing `}`', lastOpening);\n }\n } else if (parenLevel !== 0) {\n return fail('missing closing `)`', lastOpeningParen);\n }\n\n emitChunk(true);\n return chunks;\n}\n","function makeRegistry( base ) {\n return {\n _data: {},\n add: function(name, func) {\n // precautionary case conversion, as later querying of\n // the registry by function-caller uses lower case as well.\n name = name.toLowerCase();\n\n // eslint-disable-next-line no-prototype-builtins\n if (this._data.hasOwnProperty(name)) {\n // TODO warn\n }\n this._data[name] = func;\n },\n addMultiple: function(functions) {\n Object.keys(functions).forEach(\n name => {\n this.add(name, functions[name]);\n });\n },\n get: function(name) {\n return this._data[name] || ( base && base.get( name ));\n },\n getLocalFunctions: function() {\n return this._data;\n },\n inherit: function() {\n return makeRegistry( this );\n },\n create: function(base) {\n return makeRegistry(base);\n }\n };\n}\n\nexport default makeRegistry( null );","export const MediaSyntaxOptions = {\n queryInParens: true\n};\n\nexport const ContainerSyntaxOptions = {\n queryInParens: true\n};\n","import Node from './node';\n\nconst Anonymous = function(value, index, currentFileInfo, mapLines, rulesetLike, visibilityInfo) {\n this.value = value;\n this._index = index;\n this._fileInfo = currentFileInfo;\n this.mapLines = mapLines;\n this.rulesetLike = (typeof rulesetLike === 'undefined') ? false : rulesetLike;\n this.allowRoot = true;\n this.copyVisibilityInfo(visibilityInfo);\n}\n\nAnonymous.prototype = Object.assign(new Node(), {\n type: 'Anonymous',\n eval() {\n return new Anonymous(this.value, this._index, this._fileInfo, this.mapLines, this.rulesetLike, this.visibilityInfo());\n },\n compare(other) {\n return other.toCSS && this.toCSS() === other.toCSS() ? 0 : undefined;\n },\n isRulesetLike() {\n return this.rulesetLike;\n },\n genCSS(context, output) {\n this.nodeVisible = Boolean(this.value);\n if (this.nodeVisible) {\n output.add(this.value, this._fileInfo, this._index, this.mapLines);\n }\n }\n})\n\nexport default Anonymous;\n","import LessError from '../less-error';\nimport tree from '../tree';\nimport visitors from '../visitors';\nimport getParserInput from './parser-input';\nimport * as utils from '../utils';\nimport functionRegistry from '../functions/function-registry';\nimport { ContainerSyntaxOptions, MediaSyntaxOptions } from '../tree/atrule-syntax';\nimport Selector from '../tree/selector';\nimport Anonymous from '../tree/anonymous';\n\n//\n// less.js - parser\n//\n// A relatively straight-forward predictive parser.\n// There is no tokenization/lexing stage, the input is parsed\n// in one sweep.\n//\n// To make the parser fast enough to run in the browser, several\n// optimization had to be made:\n//\n// - Matching and slicing on a huge input is often cause of slowdowns.\n// The solution is to chunkify the input into smaller strings.\n// The chunks are stored in the `chunks` var,\n// `j` holds the current chunk index, and `currentPos` holds\n// the index of the current chunk in relation to `input`.\n// This gives us an almost 4x speed-up.\n//\n// - In many cases, we don't need to match individual tokens;\n// for example, if a value doesn't hold any variables, operations\n// or dynamic references, the parser can effectively 'skip' it,\n// treating it as a literal.\n// An example would be '1px solid #000' - which evaluates to itself,\n// we don't need to know what the individual components are.\n// The drawback, of course is that you don't get the benefits of\n// syntax-checking on the CSS. This gives us a 50% speed-up in the parser,\n// and a smaller speed-up in the code-gen.\n//\n//\n// Token matching is done with the `$` function, which either takes\n// a terminal string or regexp, or a non-terminal function to call.\n// It also takes care of moving all the indices forwards.\n//\n\nconst Parser = function Parser(context, imports, fileInfo, currentIndex) {\n currentIndex = currentIndex || 0;\n let parsers;\n const parserInput = getParserInput();\n\n function error(msg, type) {\n throw new LessError(\n {\n index: parserInput.i,\n filename: fileInfo.filename,\n type: type || 'Syntax',\n message: msg\n },\n imports\n );\n }\n\n function expect(arg, msg) {\n // some older browsers return typeof 'function' for RegExp\n const result = (arg instanceof Function) ? arg.call(parsers) : parserInput.$re(arg);\n if (result) {\n return result;\n }\n\n error(msg || (typeof arg === 'string'\n ? `expected '${arg}' got '${parserInput.currentChar()}'`\n : 'unexpected token'));\n }\n\n // Specialization of expect()\n function expectChar(arg, msg) {\n if (parserInput.$char(arg)) {\n return arg;\n }\n error(msg || `expected '${arg}' got '${parserInput.currentChar()}'`);\n }\n\n function getDebugInfo(index) {\n const filename = fileInfo.filename;\n\n return {\n lineNumber: utils.getLocation(index, parserInput.getInput()).line + 1,\n fileName: filename\n };\n }\n\n /**\n * Used after initial parsing to create nodes on the fly\n *\n * @param {String} str - string to parse\n * @param {Array} parseList - array of parsers to run input through e.g. [\"value\", \"important\"]\n * @param {Number} currentIndex - start number to begin indexing\n * @param {Object} fileInfo - fileInfo to attach to created nodes\n */\n function parseNode(str, parseList, callback) {\n let result;\n const returnNodes = [];\n const parser = parserInput;\n\n try {\n parser.start(str, false, function fail(msg, index) {\n callback({\n message: msg,\n index: index + currentIndex\n });\n });\n for (let x = 0, p; (p = parseList[x]); x++) {\n result = parsers[p]();\n returnNodes.push(result || null);\n }\n\n const endInfo = parser.end();\n if (endInfo.isFinished) {\n callback(null, returnNodes);\n }\n else {\n callback(true, null);\n }\n } catch (e) {\n throw new LessError({\n index: e.index + currentIndex,\n message: e.message\n }, imports, fileInfo.filename);\n }\n }\n\n //\n // The Parser\n //\n return {\n parserInput,\n imports,\n fileInfo,\n parseNode,\n //\n // Parse an input string into an abstract syntax tree,\n // @param str A string containing 'less' markup\n // @param callback call `callback` when done.\n // @param [additionalData] An optional map which can contains vars - a map (key, value) of variables to apply\n //\n parse: function (str, callback, additionalData) {\n let root;\n let err = null;\n let globalVars;\n let modifyVars;\n let ignored;\n let preText = '';\n\n // Optionally disable @plugin parsing\n if (additionalData && additionalData.disablePluginRule) {\n parsers.plugin = function() {\n var dir = parserInput.$re(/^@plugin?\\s+/);\n if (dir) {\n error('@plugin statements are not allowed when disablePluginRule is set to true');\n }\n }\n }\n\n globalVars = (additionalData && additionalData.globalVars) ? `${Parser.serializeVars(additionalData.globalVars)}\\n` : '';\n modifyVars = (additionalData && additionalData.modifyVars) ? `\\n${Parser.serializeVars(additionalData.modifyVars)}` : '';\n\n if (context.pluginManager) {\n const preProcessors = context.pluginManager.getPreProcessors();\n for (let i = 0; i < preProcessors.length; i++) {\n str = preProcessors[i].process(str, { context, imports, fileInfo });\n }\n }\n\n if (globalVars || (additionalData && additionalData.banner)) {\n preText = ((additionalData && additionalData.banner) ? additionalData.banner : '') + globalVars;\n ignored = imports.contentsIgnoredChars;\n ignored[fileInfo.filename] = ignored[fileInfo.filename] || 0;\n ignored[fileInfo.filename] += preText.length;\n }\n\n str = str.replace(/\\r\\n?/g, '\\n');\n // Remove potential UTF Byte Order Mark\n str = preText + str.replace(/^\\uFEFF/, '') + modifyVars;\n imports.contents[fileInfo.filename] = str;\n\n // Start with the primary rule.\n // The whole syntax tree is held under a Ruleset node,\n // with the `root` property set to true, so no `{}` are\n // output. The callback is called when the input is parsed.\n try {\n parserInput.start(str, context.chunkInput, function fail(msg, index) {\n throw new LessError({\n index,\n type: 'Parse',\n message: msg,\n filename: fileInfo.filename\n }, imports);\n });\n\n tree.Node.prototype.parse = this;\n root = new tree.Ruleset(null, this.parsers.primary());\n tree.Node.prototype.rootNode = root;\n root.root = true;\n root.firstRoot = true;\n root.functionRegistry = functionRegistry.inherit();\n\n } catch (e) {\n return callback(new LessError(e, imports, fileInfo.filename));\n }\n\n // If `i` is smaller than the `input.length - 1`,\n // it means the parser wasn't able to parse the whole\n // string, so we've got a parsing error.\n //\n // We try to extract a \\n delimited string,\n // showing the line where the parse error occurred.\n // We split it up into two parts (the part which parsed,\n // and the part which didn't), so we can color them differently.\n const endInfo = parserInput.end();\n if (!endInfo.isFinished) {\n\n let message = endInfo.furthestPossibleErrorMessage;\n\n if (!message) {\n message = 'Unrecognised input';\n if (endInfo.furthestChar === '}') {\n message += '. Possibly missing opening \\'{\\'';\n } else if (endInfo.furthestChar === ')') {\n message += '. Possibly missing opening \\'(\\'';\n } else if (endInfo.furthestReachedEnd) {\n message += '. Possibly missing something';\n }\n }\n\n err = new LessError({\n type: 'Parse',\n message,\n index: endInfo.furthest,\n filename: fileInfo.filename\n }, imports);\n }\n\n const finish = e => {\n e = err || e || imports.error;\n\n if (e) {\n if (!(e instanceof LessError)) {\n e = new LessError(e, imports, fileInfo.filename);\n }\n\n return callback(e);\n }\n else {\n return callback(null, root);\n }\n };\n\n if (context.processImports !== false) {\n new visitors.ImportVisitor(imports, finish)\n .run(root);\n } else {\n return finish();\n }\n },\n\n //\n // Here in, the parsing rules/functions\n //\n // The basic structure of the syntax tree generated is as follows:\n //\n // Ruleset -> Declaration -> Value -> Expression -> Entity\n //\n // Here's some Less code:\n //\n // .class {\n // color: #fff;\n // border: 1px solid #000;\n // width: @w + 4px;\n // > .child {...}\n // }\n //\n // And here's what the parse tree might look like:\n //\n // Ruleset (Selector '.class', [\n // Declaration (\"color\", Value ([Expression [Color #fff]]))\n // Declaration (\"border\", Value ([Expression [Dimension 1px][Keyword \"solid\"][Color #000]]))\n // Declaration (\"width\", Value ([Expression [Operation \" + \" [Variable \"@w\"][Dimension 4px]]]))\n // Ruleset (Selector [Element '>', '.child'], [...])\n // ])\n //\n // In general, most rules will try to parse a token with the `$re()` function, and if the return\n // value is truly, will return a new node, of the relevant type. Sometimes, we need to check\n // first, before parsing, that's when we use `peek()`.\n //\n parsers: parsers = {\n //\n // The `primary` rule is the *entry* and *exit* point of the parser.\n // The rules here can appear at any level of the parse tree.\n //\n // The recursive nature of the grammar is an interplay between the `block`\n // rule, which represents `{ ... }`, the `ruleset` rule, and this `primary` rule,\n // as represented by this simplified grammar:\n //\n // primary → (ruleset | declaration)+\n // ruleset → selector+ block\n // block → '{' primary '}'\n //\n // Only at one point is the primary rule not called from the\n // block rule: at the root level.\n //\n primary: function () {\n const mixin = this.mixin;\n let root = [];\n let node;\n\n while (true) {\n while (true) {\n node = this.comment();\n if (!node) { break; }\n root.push(node);\n }\n // always process comments before deciding if finished\n if (parserInput.finished) {\n break;\n }\n if (parserInput.peek('}')) {\n break;\n }\n\n node = this.extendRule();\n if (node) {\n root = root.concat(node);\n continue;\n }\n\n node = mixin.definition() || this.declaration() || mixin.call(false, false) ||\n this.ruleset() || this.variableCall() || this.entities.call() || this.atrule();\n if (node) {\n root.push(node);\n } else {\n let foundSemiColon = false;\n while (parserInput.$char(';')) {\n foundSemiColon = true;\n }\n if (!foundSemiColon) {\n break;\n }\n }\n }\n\n return root;\n },\n\n // comments are collected by the main parsing mechanism and then assigned to nodes\n // where the current structure allows it\n comment: function () {\n if (parserInput.commentStore.length) {\n const comment = parserInput.commentStore.shift();\n return new(tree.Comment)(comment.text, comment.isLineComment, comment.index + currentIndex, fileInfo);\n }\n },\n\n //\n // Entities are tokens which can be found inside an Expression\n //\n entities: {\n mixinLookup: function() {\n return parsers.mixin.call(true, true);\n },\n //\n // A string, which supports escaping \" and '\n //\n // \"milky way\" 'he\\'s the one!'\n //\n quoted: function (forceEscaped) {\n let str;\n const index = parserInput.i;\n let isEscaped = false;\n\n parserInput.save();\n if (parserInput.$char('~')) {\n isEscaped = true;\n } else if (forceEscaped) {\n parserInput.restore();\n return;\n }\n\n str = parserInput.$quoted();\n if (!str) {\n parserInput.restore();\n return;\n }\n parserInput.forget();\n\n return new(tree.Quoted)(str.charAt(0), str.substr(1, str.length - 2), isEscaped, index + currentIndex, fileInfo);\n },\n\n //\n // A catch-all word, such as:\n //\n // black border-collapse\n //\n keyword: function () {\n const k = parserInput.$char('%') || parserInput.$re(/^\\[?(?:[\\w-]|\\\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+\\]?/);\n if (k) {\n return tree.Color.fromKeyword(k) || new(tree.Keyword)(k);\n }\n },\n\n //\n // A function call\n //\n // rgb(255, 0, 255)\n //\n // The arguments are parsed with the `entities.arguments` parser.\n //\n call: function () {\n let name;\n let args;\n let func;\n const index = parserInput.i;\n\n // http://jsperf.com/case-insensitive-regex-vs-strtolower-then-regex/18\n if (parserInput.peek(/^url\\(/i)) {\n return;\n }\n\n parserInput.save();\n\n name = parserInput.$re(/^([\\w-]+|%|~|progid:[\\w.]+)\\(/);\n if (!name) {\n parserInput.forget();\n return;\n }\n\n name = name[1];\n func = this.customFuncCall(name);\n if (func) {\n args = func.parse();\n if (args && func.stop) {\n parserInput.forget();\n return args;\n }\n }\n\n args = this.arguments(args);\n\n if (!parserInput.$char(')')) {\n parserInput.restore('Could not parse call arguments or missing \\')\\'');\n return;\n }\n\n parserInput.forget();\n\n return new(tree.Call)(name, args, index + currentIndex, fileInfo);\n },\n\n declarationCall: function () {\n let validCall;\n let args;\n const index = parserInput.i;\n\n parserInput.save();\n\n validCall = parserInput.$re(/^[\\w]+\\(/);\n if (!validCall) {\n parserInput.forget();\n return;\n }\n\n validCall = validCall.substring(0, validCall.length - 1);\n\n let rule = this.ruleProperty();\n let value;\n \n if (rule) {\n value = this.value();\n }\n \n if (rule && value) {\n args = [new (tree.Declaration)(rule, value, null, null, parserInput.i + currentIndex, fileInfo, true)];\n }\n\n if (!parserInput.$char(')')) {\n parserInput.restore('Could not parse call arguments or missing \\')\\'');\n return;\n }\n\n parserInput.forget();\n\n return new(tree.Call)(validCall, args, index + currentIndex, fileInfo);\n },\n\n //\n // Parsing rules for functions with non-standard args, e.g.:\n //\n // boolean(not(2 > 1))\n //\n // This is a quick prototype, to be modified/improved when\n // more custom-parsed funcs come (e.g. `selector(...)`)\n //\n\n customFuncCall: function (name) {\n /* Ideally the table is to be moved out of here for faster perf.,\n but it's quite tricky since it relies on all these `parsers`\n and `expect` available only here */\n return {\n alpha: f(parsers.ieAlpha, true),\n boolean: f(condition),\n 'if': f(condition)\n }[name.toLowerCase()];\n\n function f(parse, stop) {\n return {\n parse, // parsing function\n stop // when true - stop after parse() and return its result,\n // otherwise continue for plain args\n };\n }\n\n function condition() {\n return [expect(parsers.condition, 'expected condition')];\n }\n },\n\n arguments: function (prevArgs) {\n let argsComma = prevArgs || [];\n const argsSemiColon = [];\n let isSemiColonSeparated;\n let value;\n\n parserInput.save();\n\n while (true) {\n if (prevArgs) {\n prevArgs = false;\n } else {\n value = parsers.detachedRuleset() || this.assignment() || parsers.expression();\n if (!value) {\n break;\n }\n\n if (value.value && value.value.length == 1) {\n value = value.value[0];\n }\n\n argsComma.push(value);\n }\n\n if (parserInput.$char(',')) {\n continue;\n }\n\n if (parserInput.$char(';') || isSemiColonSeparated) {\n isSemiColonSeparated = true;\n value = (argsComma.length < 1) ? argsComma[0]\n : new tree.Value(argsComma);\n argsSemiColon.push(value);\n argsComma = [];\n }\n }\n\n parserInput.forget();\n return isSemiColonSeparated ? argsSemiColon : argsComma;\n },\n literal: function () {\n return this.dimension() ||\n this.color() ||\n this.quoted() ||\n this.unicodeDescriptor();\n },\n\n // Assignments are argument entities for calls.\n // They are present in ie filter properties as shown below.\n //\n // filter: progid:DXImageTransform.Microsoft.Alpha( *opacity=50* )\n //\n\n assignment: function () {\n let key;\n let value;\n parserInput.save();\n key = parserInput.$re(/^\\w+(?=\\s?=)/i);\n if (!key) {\n parserInput.restore();\n return;\n }\n if (!parserInput.$char('=')) {\n parserInput.restore();\n return;\n }\n value = parsers.entity();\n if (value) {\n parserInput.forget();\n return new(tree.Assignment)(key, value);\n } else {\n parserInput.restore();\n }\n },\n\n //\n // Parse url() tokens\n //\n // We use a specific rule for urls, because they don't really behave like\n // standard function calls. The difference is that the argument doesn't have\n // to be enclosed within a string, so it can't be parsed as an Expression.\n //\n url: function () {\n let value;\n const index = parserInput.i;\n\n parserInput.autoCommentAbsorb = false;\n\n if (!parserInput.$str('url(')) {\n parserInput.autoCommentAbsorb = true;\n return;\n }\n\n value = this.quoted() || this.variable() || this.property() ||\n parserInput.$re(/^(?:(?:\\\\[()'\"])|[^()'\"])+/) || '';\n\n parserInput.autoCommentAbsorb = true;\n\n expectChar(')');\n\n return new(tree.URL)((value.value !== undefined ||\n value instanceof tree.Variable ||\n value instanceof tree.Property) ?\n value : new(tree.Anonymous)(value, index), index + currentIndex, fileInfo);\n },\n\n //\n // A Variable entity, such as `@fink`, in\n //\n // width: @fink + 2px\n //\n // We use a different parser for variable definitions,\n // see `parsers.variable`.\n //\n variable: function () {\n let ch;\n let name;\n const index = parserInput.i;\n\n parserInput.save();\n if (parserInput.currentChar() === '@' && (name = parserInput.$re(/^@@?[\\w-]+/))) {\n ch = parserInput.currentChar();\n if (ch === '(' || ch === '[' && !parserInput.prevChar().match(/^\\s/)) {\n // this may be a VariableCall lookup\n const result = parsers.variableCall(name);\n if (result) {\n parserInput.forget();\n return result;\n }\n }\n parserInput.forget();\n return new(tree.Variable)(name, index + currentIndex, fileInfo);\n }\n parserInput.restore();\n },\n\n // A variable entity using the protective {} e.g. @{var}\n variableCurly: function () {\n let curly;\n const index = parserInput.i;\n\n if (parserInput.currentChar() === '@' && (curly = parserInput.$re(/^@\\{([\\w-]+)\\}/))) {\n return new(tree.Variable)(`@${curly[1]}`, index + currentIndex, fileInfo);\n }\n },\n //\n // A Property accessor, such as `$color`, in\n //\n // background-color: $color\n //\n property: function () {\n let name;\n const index = parserInput.i;\n\n if (parserInput.currentChar() === '$' && (name = parserInput.$re(/^\\$[\\w-]+/))) {\n return new(tree.Property)(name, index + currentIndex, fileInfo);\n }\n },\n\n // A property entity useing the protective {} e.g. ${prop}\n propertyCurly: function () {\n let curly;\n const index = parserInput.i;\n\n if (parserInput.currentChar() === '$' && (curly = parserInput.$re(/^\\$\\{([\\w-]+)\\}/))) {\n return new(tree.Property)(`$${curly[1]}`, index + currentIndex, fileInfo);\n }\n },\n //\n // A Hexadecimal color\n //\n // #4F3C2F\n //\n // `rgb` and `hsl` colors are parsed through the `entities.call` parser.\n //\n color: function () {\n let rgb;\n parserInput.save();\n\n if (parserInput.currentChar() === '#' && (rgb = parserInput.$re(/^#([A-Fa-f0-9]{8}|[A-Fa-f0-9]{6}|[A-Fa-f0-9]{3,4})([\\w.#[])?/))) {\n if (!rgb[2]) {\n parserInput.forget();\n return new(tree.Color)(rgb[1], undefined, rgb[0]);\n }\n }\n parserInput.restore();\n },\n\n colorKeyword: function () {\n parserInput.save();\n const autoCommentAbsorb = parserInput.autoCommentAbsorb;\n parserInput.autoCommentAbsorb = false;\n const k = parserInput.$re(/^[_A-Za-z-][_A-Za-z0-9-]+/);\n parserInput.autoCommentAbsorb = autoCommentAbsorb;\n if (!k) {\n parserInput.forget();\n return;\n }\n parserInput.restore();\n const color = tree.Color.fromKeyword(k);\n if (color) {\n parserInput.$str(k);\n return color;\n }\n },\n\n //\n // A Dimension, that is, a number and a unit\n //\n // 0.5em 95%\n //\n dimension: function () {\n if (parserInput.peekNotNumeric()) {\n return;\n }\n\n const value = parserInput.$re(/^([+-]?\\d*\\.?\\d+)(%|[a-z_]+)?/i);\n if (value) {\n return new(tree.Dimension)(value[1], value[2]);\n }\n },\n\n //\n // A unicode descriptor, as is used in unicode-range\n //\n // U+0?? or U+00A1-00A9\n //\n unicodeDescriptor: function () {\n let ud;\n\n ud = parserInput.$re(/^U\\+[0-9a-fA-F?]+(-[0-9a-fA-F?]+)?/);\n if (ud) {\n return new(tree.UnicodeDescriptor)(ud[0]);\n }\n },\n\n //\n // JavaScript code to be evaluated\n //\n // `window.location.href`\n //\n javascript: function () {\n let js;\n const index = parserInput.i;\n\n parserInput.save();\n\n const escape = parserInput.$char('~');\n const jsQuote = parserInput.$char('`');\n\n if (!jsQuote) {\n parserInput.restore();\n return;\n }\n\n js = parserInput.$re(/^[^`]*`/);\n if (js) {\n parserInput.forget();\n return new(tree.JavaScript)(js.substr(0, js.length - 1), Boolean(escape), index + currentIndex, fileInfo);\n }\n parserInput.restore('invalid javascript definition');\n }\n },\n\n //\n // The variable part of a variable definition. Used in the `rule` parser\n //\n // @fink:\n //\n variable: function () {\n let name;\n\n if (parserInput.currentChar() === '@' && (name = parserInput.$re(/^(@[\\w-]+)\\s*:/))) { return name[1]; }\n },\n\n //\n // Call a variable value to retrieve a detached ruleset\n // or a value from a detached ruleset's rules.\n //\n // @fink();\n // @fink;\n // color: @fink[@color];\n //\n variableCall: function (parsedName) {\n let lookups;\n const i = parserInput.i;\n const inValue = !!parsedName;\n let name = parsedName;\n\n parserInput.save();\n\n if (name || (parserInput.currentChar() === '@'\n && (name = parserInput.$re(/^(@[\\w-]+)(\\(\\s*\\))?/)))) {\n\n lookups = this.mixin.ruleLookups();\n\n if (!lookups && ((inValue && parserInput.$str('()') !== '()') || (name[2] !== '()'))) {\n parserInput.restore('Missing \\'[...]\\' lookup in variable call');\n return;\n }\n\n if (!inValue) {\n name = name[1];\n }\n\n const call = new tree.VariableCall(name, i, fileInfo);\n if (!inValue && parsers.end()) {\n parserInput.forget();\n return call;\n }\n else {\n parserInput.forget();\n return new tree.NamespaceValue(call, lookups, i, fileInfo);\n }\n }\n\n parserInput.restore();\n },\n\n //\n // extend syntax - used to extend selectors\n //\n extend: function(isRule) {\n let elements;\n let e;\n const index = parserInput.i;\n let option;\n let extendList;\n let extend;\n\n if (!parserInput.$str(isRule ? '&:extend(' : ':extend(')) {\n return;\n }\n\n do {\n option = null;\n elements = null;\n while (!(option = parserInput.$re(/^(all)(?=\\s*(\\)|,))/))) {\n e = this.element();\n if (!e) {\n break;\n }\n if (elements) {\n elements.push(e);\n } else {\n elements = [ e ];\n }\n }\n\n option = option && option[1];\n if (!elements) {\n error('Missing target selector for :extend().');\n }\n extend = new(tree.Extend)(new(tree.Selector)(elements), option, index + currentIndex, fileInfo);\n if (extendList) {\n extendList.push(extend);\n } else {\n extendList = [ extend ];\n }\n } while (parserInput.$char(','));\n\n expect(/^\\)/);\n\n if (isRule) {\n expect(/^;/);\n }\n\n return extendList;\n },\n\n //\n // extendRule - used in a rule to extend all the parent selectors\n //\n extendRule: function() {\n return this.extend(true);\n },\n\n //\n // Mixins\n //\n mixin: {\n //\n // A Mixin call, with an optional argument list\n //\n // #mixins > .square(#fff);\n // #mixins.square(#fff);\n // .rounded(4px, black);\n // .button;\n //\n // We can lookup / return a value using the lookup syntax:\n //\n // color: #mixin.square(#fff)[@color];\n //\n // The `while` loop is there because mixins can be\n // namespaced, but we only support the child and descendant\n // selector for now.\n //\n call: function (inValue, getLookup) {\n const s = parserInput.currentChar();\n let important = false;\n let lookups;\n const index = parserInput.i;\n let elements;\n let args;\n let hasParens;\n\n if (s !== '.' && s !== '#') { return; }\n\n parserInput.save(); // stop us absorbing part of an invalid selector\n\n elements = this.elements();\n\n if (elements) {\n if (parserInput.$char('(')) {\n args = this.args(true).args;\n expectChar(')');\n hasParens = true;\n }\n\n if (getLookup !== false) {\n lookups = this.ruleLookups();\n }\n if (getLookup === true && !lookups) {\n parserInput.restore();\n return;\n }\n\n if (inValue && !lookups && !hasParens) {\n // This isn't a valid in-value mixin call\n parserInput.restore();\n return;\n }\n\n if (!inValue && parsers.important()) {\n important = true;\n }\n\n if (inValue || parsers.end()) {\n parserInput.forget();\n const mixin = new(tree.mixin.Call)(elements, args, index + currentIndex, fileInfo, !lookups && important);\n if (lookups) {\n return new tree.NamespaceValue(mixin, lookups);\n }\n else {\n return mixin;\n }\n }\n }\n\n parserInput.restore();\n },\n /**\n * Matching elements for mixins\n * (Start with . or # and can have > )\n */\n elements: function() {\n let elements;\n let e;\n let c;\n let elem;\n let elemIndex;\n const re = /^[#.](?:[\\w-]|\\\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+/;\n while (true) {\n elemIndex = parserInput.i;\n e = parserInput.$re(re);\n\n if (!e) {\n break;\n }\n elem = new(tree.Element)(c, e, false, elemIndex + currentIndex, fileInfo);\n if (elements) {\n elements.push(elem);\n } else {\n elements = [ elem ];\n }\n c = parserInput.$char('>');\n }\n return elements;\n },\n args: function (isCall) {\n const entities = parsers.entities;\n const returner = { args:null, variadic: false };\n let expressions = [];\n const argsSemiColon = [];\n const argsComma = [];\n let isSemiColonSeparated;\n let expressionContainsNamed;\n let name;\n let nameLoop;\n let value;\n let arg;\n let expand;\n let hasSep = true;\n\n parserInput.save();\n\n while (true) {\n if (isCall) {\n arg = parsers.detachedRuleset() || parsers.expression();\n } else {\n parserInput.commentStore.length = 0;\n if (parserInput.$str('...')) {\n returner.variadic = true;\n if (parserInput.$char(';') && !isSemiColonSeparated) {\n isSemiColonSeparated = true;\n }\n (isSemiColonSeparated ? argsSemiColon : argsComma)\n .push({ variadic: true });\n break;\n }\n arg = entities.variable() || entities.property() || entities.literal() || entities.keyword() || this.call(true);\n }\n\n if (!arg || !hasSep) {\n break;\n }\n\n nameLoop = null;\n if (arg.throwAwayComments) {\n arg.throwAwayComments();\n }\n value = arg;\n let val = null;\n\n if (isCall) {\n // Variable\n if (arg.value && arg.value.length == 1) {\n val = arg.value[0];\n }\n } else {\n val = arg;\n }\n\n if (val && (val instanceof tree.Variable || val instanceof tree.Property)) {\n if (parserInput.$char(':')) {\n if (expressions.length > 0) {\n if (isSemiColonSeparated) {\n error('Cannot mix ; and , as delimiter types');\n }\n expressionContainsNamed = true;\n }\n\n value = parsers.detachedRuleset() || parsers.expression();\n\n if (!value) {\n if (isCall) {\n error('could not understand value for named argument');\n } else {\n parserInput.restore();\n returner.args = [];\n return returner;\n }\n }\n nameLoop = (name = val.name);\n } else if (parserInput.$str('...')) {\n if (!isCall) {\n returner.variadic = true;\n if (parserInput.$char(';') && !isSemiColonSeparated) {\n isSemiColonSeparated = true;\n }\n (isSemiColonSeparated ? argsSemiColon : argsComma)\n .push({ name: arg.name, variadic: true });\n break;\n } else {\n expand = true;\n }\n } else if (!isCall) {\n name = nameLoop = val.name;\n value = null;\n }\n }\n\n if (value) {\n expressions.push(value);\n }\n\n argsComma.push({ name:nameLoop, value, expand });\n\n if (parserInput.$char(',')) {\n hasSep = true;\n continue;\n }\n hasSep = parserInput.$char(';') === ';';\n\n if (hasSep || isSemiColonSeparated) {\n\n if (expressionContainsNamed) {\n error('Cannot mix ; and , as delimiter types');\n }\n\n isSemiColonSeparated = true;\n\n if (expressions.length > 1) {\n value = new(tree.Value)(expressions);\n }\n argsSemiColon.push({ name, value, expand });\n\n name = null;\n expressions = [];\n expressionContainsNamed = false;\n }\n }\n\n parserInput.forget();\n returner.args = isSemiColonSeparated ? argsSemiColon : argsComma;\n return returner;\n },\n //\n // A Mixin definition, with a list of parameters\n //\n // .rounded (@radius: 2px, @color) {\n // ...\n // }\n //\n // Until we have a finer grained state-machine, we have to\n // do a look-ahead, to make sure we don't have a mixin call.\n // See the `rule` function for more information.\n //\n // We start by matching `.rounded (`, and then proceed on to\n // the argument list, which has optional default values.\n // We store the parameters in `params`, with a `value` key,\n // if there is a value, such as in the case of `@radius`.\n //\n // Once we've got our params list, and a closing `)`, we parse\n // the `{...}` block.\n //\n definition: function () {\n let name;\n let params = [];\n let match;\n let ruleset;\n let cond;\n let variadic = false;\n if ((parserInput.currentChar() !== '.' && parserInput.currentChar() !== '#') ||\n parserInput.peek(/^[^{]*\\}/)) {\n return;\n }\n\n parserInput.save();\n\n match = parserInput.$re(/^([#.](?:[\\w-]|\\\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+)\\s*\\(/);\n if (match) {\n name = match[1];\n\n const argInfo = this.args(false);\n params = argInfo.args;\n variadic = argInfo.variadic;\n\n // .mixincall(\"@{a}\");\n // looks a bit like a mixin definition..\n // also\n // .mixincall(@a: {rule: set;});\n // so we have to be nice and restore\n if (!parserInput.$char(')')) {\n parserInput.restore('Missing closing \\')\\'');\n return;\n }\n\n parserInput.commentStore.length = 0;\n\n if (parserInput.$str('when')) { // Guard\n cond = expect(parsers.conditions, 'expected condition');\n }\n\n ruleset = parsers.block();\n\n if (ruleset) {\n parserInput.forget();\n return new(tree.mixin.Definition)(name, params, ruleset, cond, variadic);\n } else {\n parserInput.restore();\n }\n } else {\n parserInput.restore();\n }\n },\n\n ruleLookups: function() {\n let rule;\n const lookups = [];\n\n if (parserInput.currentChar() !== '[') {\n return;\n }\n\n while (true) {\n parserInput.save();\n rule = this.lookupValue();\n if (!rule && rule !== '') {\n parserInput.restore();\n break;\n }\n lookups.push(rule);\n parserInput.forget();\n }\n if (lookups.length > 0) {\n return lookups;\n }\n },\n\n lookupValue: function() {\n parserInput.save();\n\n if (!parserInput.$char('[')) {\n parserInput.restore();\n return;\n }\n\n const name = parserInput.$re(/^(?:[@$]{0,2})[_a-zA-Z0-9-]*/);\n\n if (!parserInput.$char(']')) {\n parserInput.restore();\n return;\n }\n\n if (name || name === '') {\n parserInput.forget();\n return name;\n }\n\n parserInput.restore();\n }\n },\n //\n // Entities are the smallest recognized token,\n // and can be found inside a rule's value.\n //\n entity: function () {\n const entities = this.entities;\n\n return this.comment() || entities.literal() || entities.variable() || entities.url() ||\n entities.property() || entities.call() || entities.keyword() || this.mixin.call(true) ||\n entities.javascript();\n },\n\n //\n // A Declaration terminator. Note that we use `peek()` to check for '}',\n // because the `block` rule will be expecting it, but we still need to make sure\n // it's there, if ';' was omitted.\n //\n end: function () {\n return parserInput.$char(';') || parserInput.peek('}');\n },\n\n //\n // IE's alpha function\n //\n // alpha(opacity=88)\n //\n ieAlpha: function () {\n let value;\n\n // http://jsperf.com/case-insensitive-regex-vs-strtolower-then-regex/18\n if (!parserInput.$re(/^opacity=/i)) { return; }\n value = parserInput.$re(/^\\d+/);\n if (!value) {\n value = expect(parsers.entities.variable, 'Could not parse alpha');\n value = `@{${value.name.slice(1)}}`;\n }\n expectChar(')');\n return new tree.Quoted('', `alpha(opacity=${value})`);\n },\n\n //\n // A Selector Element\n //\n // div\n // + h1\n // #socks\n // input[type=\"text\"]\n //\n // Elements are the building blocks for Selectors,\n // they are made out of a `Combinator` (see combinator rule),\n // and an element name, such as a tag a class, or `*`.\n //\n element: function () {\n let e;\n let c;\n let v;\n const index = parserInput.i;\n\n c = this.combinator();\n\n e = parserInput.$re(/^(?:\\d+\\.\\d+|\\d+)%/) ||\n // eslint-disable-next-line no-control-regex\n parserInput.$re(/^(?:[.#]?|:*)(?:[\\w-]|[^\\x00-\\x9f]|\\\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+/) ||\n parserInput.$char('*') || parserInput.$char('&') || this.attribute() ||\n parserInput.$re(/^\\([^&()@]+\\)/) || parserInput.$re(/^[.#:](?=@)/) ||\n this.entities.variableCurly();\n\n if (!e) {\n parserInput.save();\n if (parserInput.$char('(')) {\n if ((v = this.selector(false))) {\n let selectors = [];\n while (parserInput.$char(',')) {\n selectors.push(v);\n selectors.push(new Anonymous(','));\n v = this.selector(false);\n }\n selectors.push(v);\n \n if (parserInput.$char(')')) {\n if (selectors.length > 1) {\n e = new (tree.Paren)(new Selector(selectors));\n } else {\n e = new(tree.Paren)(v);\n }\n parserInput.forget();\n } else {\n parserInput.restore('Missing closing \\')\\'');\n }\n } else {\n parserInput.restore('Missing closing \\')\\'');\n }\n } else {\n parserInput.forget();\n }\n }\n\n if (e) { return new(tree.Element)(c, e, e instanceof tree.Variable, index + currentIndex, fileInfo); }\n },\n\n //\n // Combinators combine elements together, in a Selector.\n //\n // Because our parser isn't white-space sensitive, special care\n // has to be taken, when parsing the descendant combinator, ` `,\n // as it's an empty space. We have to check the previous character\n // in the input, to see if it's a ` ` character. More info on how\n // we deal with this in *combinator.js*.\n //\n combinator: function () {\n let c = parserInput.currentChar();\n\n if (c === '/') {\n parserInput.save();\n const slashedCombinator = parserInput.$re(/^\\/[a-z]+\\//i);\n if (slashedCombinator) {\n parserInput.forget();\n return new(tree.Combinator)(slashedCombinator);\n }\n parserInput.restore();\n }\n\n if (c === '>' || c === '+' || c === '~' || c === '|' || c === '^') {\n parserInput.i++;\n if (c === '^' && parserInput.currentChar() === '^') {\n c = '^^';\n parserInput.i++;\n }\n while (parserInput.isWhitespace()) { parserInput.i++; }\n return new(tree.Combinator)(c);\n } else if (parserInput.isWhitespace(-1)) {\n return new(tree.Combinator)(' ');\n } else {\n return new(tree.Combinator)(null);\n }\n },\n //\n // A CSS Selector\n // with less extensions e.g. the ability to extend and guard\n //\n // .class > div + h1\n // li a:hover\n //\n // Selectors are made out of one or more Elements, see above.\n //\n selector: function (isLess) {\n const index = parserInput.i;\n let elements;\n let extendList;\n let c;\n let e;\n let allExtends;\n let when;\n let condition;\n isLess = isLess !== false;\n while ((isLess && (extendList = this.extend())) || (isLess && (when = parserInput.$str('when'))) || (e = this.element())) {\n if (when) {\n condition = expect(this.conditions, 'expected condition');\n } else if (condition) {\n error('CSS guard can only be used at the end of selector');\n } else if (extendList) {\n if (allExtends) {\n allExtends = allExtends.concat(extendList);\n } else {\n allExtends = extendList;\n }\n } else {\n if (allExtends) { error('Extend can only be used at the end of selector'); }\n c = parserInput.currentChar();\n if (Array.isArray(e)){\n e.forEach(ele => elements.push(ele));\n } if (elements) {\n elements.push(e);\n } else {\n elements = [ e ];\n }\n e = null;\n }\n if (c === '{' || c === '}' || c === ';' || c === ',' || c === ')') {\n break;\n }\n }\n\n if (elements) { return new(tree.Selector)(elements, allExtends, condition, index + currentIndex, fileInfo); }\n if (allExtends) { error('Extend must be used to extend a selector, it cannot be used on its own'); }\n },\n selectors: function () {\n let s;\n let selectors;\n while (true) {\n s = this.selector();\n if (!s) {\n break;\n }\n if (selectors) {\n selectors.push(s);\n } else {\n selectors = [ s ];\n }\n parserInput.commentStore.length = 0;\n if (s.condition && selectors.length > 1) {\n error('Guards are only currently allowed on a single selector.');\n }\n if (!parserInput.$char(',')) { break; }\n if (s.condition) {\n error('Guards are only currently allowed on a single selector.');\n }\n parserInput.commentStore.length = 0;\n }\n return selectors;\n },\n attribute: function () {\n if (!parserInput.$char('[')) { return; }\n\n const entities = this.entities;\n let key;\n let val;\n let op;\n //\n // case-insensitive flag\n // e.g. [attr operator value i]\n //\n let cif;\n\n if (!(key = entities.variableCurly())) {\n key = expect(/^(?:[_A-Za-z0-9-*]*\\|)?(?:[_A-Za-z0-9-]|\\\\.)+/);\n }\n\n op = parserInput.$re(/^[|~*$^]?=/);\n if (op) {\n val = entities.quoted() || parserInput.$re(/^[0-9]+%/) || parserInput.$re(/^[\\w-]+/) || entities.variableCurly();\n if (val) {\n cif = parserInput.$re(/^[iIsS]/);\n }\n }\n\n expectChar(']');\n\n return new(tree.Attribute)(key, op, val, cif);\n },\n\n //\n // The `block` rule is used by `ruleset` and `mixin.definition`.\n // It's a wrapper around the `primary` rule, with added `{}`.\n //\n block: function () {\n let content;\n if (parserInput.$char('{') && (content = this.primary()) && parserInput.$char('}')) {\n return content;\n }\n },\n\n blockRuleset: function() {\n let block = this.block();\n\n if (block) {\n block = new tree.Ruleset(null, block);\n }\n return block;\n },\n\n detachedRuleset: function() {\n let argInfo;\n let params;\n let variadic;\n\n parserInput.save();\n if (parserInput.$re(/^[.#]\\(/)) {\n /**\n * DR args currently only implemented for each() function, and not\n * yet settable as `@dr: #(@arg) {}`\n * This should be done when DRs are merged with mixins.\n * See: https://github.com/less/less-meta/issues/16\n */\n argInfo = this.mixin.args(false);\n params = argInfo.args;\n variadic = argInfo.variadic;\n if (!parserInput.$char(')')) {\n parserInput.restore();\n return;\n }\n }\n const blockRuleset = this.blockRuleset();\n if (blockRuleset) {\n parserInput.forget();\n if (params) {\n return new tree.mixin.Definition(null, params, blockRuleset, null, variadic);\n }\n return new tree.DetachedRuleset(blockRuleset);\n }\n parserInput.restore();\n },\n\n //\n // div, .class, body > p {...}\n //\n ruleset: function () {\n let selectors;\n let rules;\n let debugInfo;\n\n parserInput.save();\n\n if (context.dumpLineNumbers) {\n debugInfo = getDebugInfo(parserInput.i);\n }\n\n selectors = this.selectors();\n\n if (selectors && (rules = this.block())) {\n parserInput.forget();\n const ruleset = new(tree.Ruleset)(selectors, rules, context.strictImports);\n if (context.dumpLineNumbers) {\n ruleset.debugInfo = debugInfo;\n }\n return ruleset;\n } else {\n parserInput.restore();\n }\n },\n declaration: function () {\n let name;\n let value;\n const index = parserInput.i;\n let hasDR;\n const c = parserInput.currentChar();\n let important;\n let merge;\n let isVariable;\n\n if (c === '.' || c === '#' || c === '&' || c === ':') { return; }\n\n parserInput.save();\n\n name = this.variable() || this.ruleProperty();\n if (name) {\n isVariable = typeof name === 'string';\n\n if (isVariable) {\n value = this.detachedRuleset();\n if (value) {\n hasDR = true;\n }\n }\n\n parserInput.commentStore.length = 0;\n if (!value) {\n // a name returned by this.ruleProperty() is always an array of the form:\n // [string-1, ..., string-n, \"\"] or [string-1, ..., string-n, \"+\"]\n // where each item is a tree.Keyword or tree.Variable\n merge = !isVariable && name.length > 1 && name.pop().value;\n\n // Custom property values get permissive parsing\n if (name[0].value && name[0].value.slice(0, 2) === '--') {\n if (parserInput.$char(';')) {\n value = new Anonymous('');\n } else {\n value = this.permissiveValue(/[;}]/);\n }\n }\n // Try to store values as anonymous\n // If we need the value later we'll re-parse it in ruleset.parseValue\n else {\n value = this.anonymousValue();\n }\n if (value) {\n parserInput.forget();\n // anonymous values absorb the end ';' which is required for them to work\n return new(tree.Declaration)(name, value, false, merge, index + currentIndex, fileInfo);\n }\n\n if (!value) {\n value = this.value();\n }\n\n if (value) {\n important = this.important();\n } else if (isVariable) {\n // As a last resort, try permissiveValue\n value = this.permissiveValue();\n }\n }\n\n if (value && (this.end() || hasDR)) {\n parserInput.forget();\n return new(tree.Declaration)(name, value, important, merge, index + currentIndex, fileInfo);\n }\n else {\n parserInput.restore();\n }\n } else {\n parserInput.restore();\n }\n },\n anonymousValue: function () {\n const index = parserInput.i;\n const match = parserInput.$re(/^([^.#@$+/'\"*`(;{}-]*);/);\n if (match) {\n return new(tree.Anonymous)(match[1], index + currentIndex);\n }\n },\n /**\n * Used for custom properties, at-rules, and variables (as fallback)\n * Parses almost anything inside of {} [] () \"\" blocks\n * until it reaches outer-most tokens.\n *\n * First, it will try to parse comments and entities to reach\n * the end. This is mostly like the Expression parser except no\n * math is allowed.\n */\n permissiveValue: function (untilTokens) {\n let i;\n let e;\n let done;\n let value;\n const tok = untilTokens || ';';\n const index = parserInput.i;\n const result = [];\n\n function testCurrentChar() {\n const char = parserInput.currentChar();\n if (typeof tok === 'string') {\n return char === tok;\n } else {\n return tok.test(char);\n }\n }\n if (testCurrentChar()) {\n return;\n }\n value = [];\n do {\n e = this.comment();\n if (e) {\n value.push(e);\n continue;\n }\n e = this.entity();\n if (e) {\n value.push(e);\n }\n if (parserInput.peek(',')) {\n value.push(new (tree.Anonymous)(',', parserInput.i));\n parserInput.$char(',');\n }\n } while (e);\n\n done = testCurrentChar();\n\n if (value.length > 0) {\n value = new(tree.Expression)(value);\n if (done) {\n return value;\n }\n else {\n result.push(value);\n }\n // Preserve space before $parseUntil as it will not\n if (parserInput.prevChar() === ' ') {\n result.push(new tree.Anonymous(' ', index));\n }\n }\n parserInput.save();\n\n value = parserInput.$parseUntil(tok);\n\n if (value) {\n if (typeof value === 'string') {\n error(`Expected '${value}'`, 'Parse');\n }\n if (value.length === 1 && value[0] === ' ') {\n parserInput.forget();\n return new tree.Anonymous('', index);\n }\n let item;\n for (i = 0; i < value.length; i++) {\n item = value[i];\n if (Array.isArray(item)) {\n // Treat actual quotes as normal quoted values\n result.push(new tree.Quoted(item[0], item[1], true, index, fileInfo));\n }\n else {\n if (i === value.length - 1) {\n item = item.trim();\n }\n // Treat like quoted values, but replace vars like unquoted expressions\n const quote = new tree.Quoted('\\'', item, true, index, fileInfo);\n if (!item.startsWith('@{')) {\n quote.variableRegex = /@([\\w-]+)/g;\n }\n quote.propRegex = /\\$([\\w-]+)/g;\n result.push(quote);\n }\n }\n parserInput.forget();\n return new tree.Expression(result, true);\n }\n parserInput.restore();\n },\n\n //\n // An @import atrule\n //\n // @import \"lib\";\n //\n // Depending on our environment, importing is done differently:\n // In the browser, it's an XHR request, in Node, it would be a\n // file-system operation. The function used for importing is\n // stored in `import`, which we pass to the Import constructor.\n //\n 'import': function () {\n let path;\n let features;\n const index = parserInput.i;\n\n const dir = parserInput.$re(/^@import\\s+/);\n\n if (dir) {\n const options = (dir ? this.importOptions() : null) || {};\n\n if ((path = this.entities.quoted() || this.entities.url())) {\n features = this.mediaFeatures({});\n\n if (!parserInput.$char(';')) {\n parserInput.i = index;\n error('missing semi-colon or unrecognised media features on import');\n }\n features = features && new(tree.Value)(features);\n return new(tree.Import)(path, features, options, index + currentIndex, fileInfo);\n }\n else {\n parserInput.i = index;\n error('malformed import statement');\n }\n }\n },\n\n importOptions: function() {\n let o;\n const options = {};\n let optionName;\n let value;\n\n // list of options, surrounded by parens\n if (!parserInput.$char('(')) { return null; }\n do {\n o = this.importOption();\n if (o) {\n optionName = o;\n value = true;\n switch (optionName) {\n case 'css':\n optionName = 'less';\n value = false;\n break;\n case 'once':\n optionName = 'multiple';\n value = false;\n break;\n }\n options[optionName] = value;\n if (!parserInput.$char(',')) { break; }\n }\n } while (o);\n expectChar(')');\n return options;\n },\n\n importOption: function() {\n const opt = parserInput.$re(/^(less|css|multiple|once|inline|reference|optional)/);\n if (opt) {\n return opt[1];\n }\n },\n\n mediaFeature: function (syntaxOptions) {\n const entities = this.entities;\n const nodes = [];\n let e;\n let p;\n let rangeP;\n parserInput.save();\n do {\n e = entities.declarationCall.bind(this)() || entities.keyword() || entities.variable() || entities.mixinLookup()\n if (e) {\n nodes.push(e);\n } else if (parserInput.$char('(')) {\n p = this.property();\n parserInput.save();\n if (!p && syntaxOptions.queryInParens && parserInput.$re(/^[0-9a-z-]*\\s*([<>]=|<=|>=|[<>]|=)/)) {\n parserInput.restore();\n p = this.condition();\n\n parserInput.save();\n rangeP = this.atomicCondition(null, p.rvalue);\n if (!rangeP) {\n parserInput.restore();\n }\n } else {\n parserInput.restore();\n e = this.value();\n }\n if (parserInput.$char(')')) {\n if (p && !e) {\n nodes.push(new (tree.Paren)(new (tree.QueryInParens)(p.op, p.lvalue, p.rvalue, rangeP ? rangeP.op : null, rangeP ? rangeP.rvalue : null, p._index)));\t\t\t\t \n e = p;\n } else if (p && e) {\n nodes.push(new (tree.Paren)(new (tree.Declaration)(p, e, null, null, parserInput.i + currentIndex, fileInfo, true)));\n } else if (e) {\n nodes.push(new(tree.Paren)(e));\n } else {\n error('badly formed media feature definition');\n }\n } else {\n error('Missing closing \\')\\'', 'Parse');\n }\n }\n } while (e);\n\n parserInput.forget();\n if (nodes.length > 0) {\n return new(tree.Expression)(nodes);\n }\n },\n\n mediaFeatures: function (syntaxOptions) {\n const entities = this.entities;\n const features = [];\n let e;\n do {\n e = this.mediaFeature(syntaxOptions);\n if (e) {\n features.push(e);\n if (!parserInput.$char(',')) { break; }\n } else {\n e = entities.variable() || entities.mixinLookup();\n if (e) {\n features.push(e);\n if (!parserInput.$char(',')) { break; }\n }\n }\n } while (e);\n\n return features.length > 0 ? features : null;\n },\n\n prepareAndGetNestableAtRule: function (treeType, index, debugInfo, syntaxOptions) {\n const features = this.mediaFeatures(syntaxOptions);\n\n const rules = this.block();\n\n if (!rules) {\n error('media definitions require block statements after any features');\n }\n\n parserInput.forget();\n\n const atRule = new (treeType)(rules, features, index + currentIndex, fileInfo);\n if (context.dumpLineNumbers) {\n atRule.debugInfo = debugInfo;\n }\n\n return atRule;\n },\n\n nestableAtRule: function () {\n let debugInfo;\n const index = parserInput.i;\n\n if (context.dumpLineNumbers) {\n debugInfo = getDebugInfo(index);\n }\n parserInput.save();\n\n if (parserInput.$peekChar('@')) {\n if (parserInput.$str('@media')) {\n return this.prepareAndGetNestableAtRule(tree.Media, index, debugInfo, MediaSyntaxOptions);\n }\n \n if (parserInput.$str('@container')) {\n return this.prepareAndGetNestableAtRule(tree.Container, index, debugInfo, ContainerSyntaxOptions);\n }\n }\n \n parserInput.restore();\n },\n\n //\n\n // A @plugin directive, used to import plugins dynamically.\n //\n // @plugin (args) \"lib\";\n //\n plugin: function () {\n let path;\n let args;\n let options;\n const index = parserInput.i;\n const dir = parserInput.$re(/^@plugin\\s+/);\n\n if (dir) {\n args = this.pluginArgs();\n\n if (args) {\n options = {\n pluginArgs: args,\n isPlugin: true\n };\n }\n else {\n options = { isPlugin: true };\n }\n\n if ((path = this.entities.quoted() || this.entities.url())) {\n\n if (!parserInput.$char(';')) {\n parserInput.i = index;\n error('missing semi-colon on @plugin');\n }\n return new(tree.Import)(path, null, options, index + currentIndex, fileInfo);\n }\n else {\n parserInput.i = index;\n error('malformed @plugin statement');\n }\n }\n },\n\n pluginArgs: function() {\n // list of options, surrounded by parens\n parserInput.save();\n if (!parserInput.$char('(')) {\n parserInput.restore();\n return null;\n }\n const args = parserInput.$re(/^\\s*([^);]+)\\)\\s*/);\n if (args[1]) {\n parserInput.forget();\n return args[1].trim();\n }\n else {\n parserInput.restore();\n return null;\n }\n },\n\n //\n // A CSS AtRule\n //\n // @charset \"utf-8\";\n //\n atrule: function () {\n const index = parserInput.i;\n let name;\n let value;\n let rules;\n let nonVendorSpecificName;\n let hasIdentifier;\n let hasExpression;\n let hasUnknown;\n let hasBlock = true;\n let isRooted = true;\n\n if (parserInput.currentChar() !== '@') { return; }\n\n value = this['import']() || this.plugin() || this.nestableAtRule();\n if (value) {\n return value;\n }\n\n parserInput.save();\n\n name = parserInput.$re(/^@[a-z-]+/);\n\n if (!name) { return; }\n\n nonVendorSpecificName = name;\n if (name.charAt(1) == '-' && name.indexOf('-', 2) > 0) {\n nonVendorSpecificName = `@${name.slice(name.indexOf('-', 2) + 1)}`;\n }\n\n switch (nonVendorSpecificName) {\n case '@charset':\n hasIdentifier = true;\n hasBlock = false;\n break;\n case '@namespace':\n hasExpression = true;\n hasBlock = false;\n break;\n case '@keyframes':\n case '@counter-style':\n hasIdentifier = true;\n break;\n case '@document':\n case '@supports':\n hasUnknown = true;\n isRooted = false;\n break;\n default:\n hasUnknown = true;\n break;\n }\n\n parserInput.commentStore.length = 0;\n\n if (hasIdentifier) {\n value = this.entity();\n if (!value) {\n error(`expected ${name} identifier`);\n }\n } else if (hasExpression) {\n value = this.expression();\n if (!value) {\n error(`expected ${name} expression`);\n }\n } else if (hasUnknown) {\n value = this.permissiveValue(/^[{;]/);\n hasBlock = (parserInput.currentChar() === '{');\n if (!value) {\n if (!hasBlock && parserInput.currentChar() !== ';') {\n error(`${name} rule is missing block or ending semi-colon`);\n }\n }\n else if (!value.value) {\n value = null;\n }\n }\n\n if (hasBlock) {\n rules = this.blockRuleset();\n }\n\n if (rules || (!hasBlock && value && parserInput.$char(';'))) {\n parserInput.forget();\n return new(tree.AtRule)(name, value, rules, index + currentIndex, fileInfo,\n context.dumpLineNumbers ? getDebugInfo(index) : null,\n isRooted\n );\n }\n\n parserInput.restore('at-rule options not recognised');\n },\n\n //\n // A Value is a comma-delimited list of Expressions\n //\n // font-family: Baskerville, Georgia, serif;\n //\n // In a Rule, a Value represents everything after the `:`,\n // and before the `;`.\n //\n value: function () {\n let e;\n const expressions = [];\n const index = parserInput.i;\n\n do {\n e = this.expression();\n if (e) {\n expressions.push(e);\n if (!parserInput.$char(',')) { break; }\n }\n } while (e);\n\n if (expressions.length > 0) {\n return new(tree.Value)(expressions, index + currentIndex);\n }\n },\n important: function () {\n if (parserInput.currentChar() === '!') {\n return parserInput.$re(/^! *important/);\n }\n },\n sub: function () {\n let a;\n let e;\n\n parserInput.save();\n if (parserInput.$char('(')) {\n a = this.addition();\n if (a && parserInput.$char(')')) {\n parserInput.forget();\n e = new(tree.Expression)([a]);\n e.parens = true;\n return e;\n }\n parserInput.restore('Expected \\')\\'');\n return;\n }\n parserInput.restore();\n },\n multiplication: function () {\n let m;\n let a;\n let op;\n let operation;\n let isSpaced;\n m = this.operand();\n if (m) {\n isSpaced = parserInput.isWhitespace(-1);\n while (true) {\n if (parserInput.peek(/^\\/[*/]/)) {\n break;\n }\n\n parserInput.save();\n\n op = parserInput.$char('/') || parserInput.$char('*') || parserInput.$str('./');\n\n if (!op) { parserInput.forget(); break; }\n\n a = this.operand();\n\n if (!a) { parserInput.restore(); break; }\n parserInput.forget();\n\n m.parensInOp = true;\n a.parensInOp = true;\n operation = new(tree.Operation)(op, [operation || m, a], isSpaced);\n isSpaced = parserInput.isWhitespace(-1);\n }\n return operation || m;\n }\n },\n addition: function () {\n let m;\n let a;\n let op;\n let operation;\n let isSpaced;\n m = this.multiplication();\n if (m) {\n isSpaced = parserInput.isWhitespace(-1);\n while (true) {\n op = parserInput.$re(/^[-+]\\s+/) || (!isSpaced && (parserInput.$char('+') || parserInput.$char('-')));\n if (!op) {\n break;\n }\n a = this.multiplication();\n if (!a) {\n break;\n }\n\n m.parensInOp = true;\n a.parensInOp = true;\n operation = new(tree.Operation)(op, [operation || m, a], isSpaced);\n isSpaced = parserInput.isWhitespace(-1);\n }\n return operation || m;\n }\n },\n conditions: function () {\n let a;\n let b;\n const index = parserInput.i;\n let condition;\n\n a = this.condition(true);\n if (a) {\n while (true) {\n if (!parserInput.peek(/^,\\s*(not\\s*)?\\(/) || !parserInput.$char(',')) {\n break;\n }\n b = this.condition(true);\n if (!b) {\n break;\n }\n condition = new(tree.Condition)('or', condition || a, b, index + currentIndex);\n }\n return condition || a;\n }\n },\n condition: function (needsParens) {\n let result;\n let logical;\n let next;\n function or() {\n return parserInput.$str('or');\n }\n\n result = this.conditionAnd(needsParens);\n if (!result) {\n return ;\n }\n logical = or();\n if (logical) {\n next = this.condition(needsParens);\n if (next) {\n result = new(tree.Condition)(logical, result, next);\n } else {\n return ;\n }\n }\n return result;\n },\n conditionAnd: function (needsParens) {\n let result;\n let logical;\n let next;\n const self = this;\n function insideCondition() {\n const cond = self.negatedCondition(needsParens) || self.parenthesisCondition(needsParens);\n if (!cond && !needsParens) {\n return self.atomicCondition(needsParens);\n }\n return cond;\n }\n function and() {\n return parserInput.$str('and');\n }\n\n result = insideCondition();\n if (!result) {\n return ;\n }\n logical = and();\n if (logical) {\n next = this.conditionAnd(needsParens);\n if (next) {\n result = new(tree.Condition)(logical, result, next);\n } else {\n return ;\n }\n }\n return result;\n },\n negatedCondition: function (needsParens) {\n if (parserInput.$str('not')) {\n const result = this.parenthesisCondition(needsParens);\n if (result) {\n result.negate = !result.negate;\n }\n return result;\n }\n },\n parenthesisCondition: function (needsParens) {\n function tryConditionFollowedByParenthesis(me) {\n let body;\n parserInput.save();\n body = me.condition(needsParens);\n if (!body) {\n parserInput.restore();\n return ;\n }\n if (!parserInput.$char(')')) {\n parserInput.restore();\n return ;\n }\n parserInput.forget();\n return body;\n }\n\n let body;\n parserInput.save();\n if (!parserInput.$str('(')) {\n parserInput.restore();\n return ;\n }\n body = tryConditionFollowedByParenthesis(this);\n if (body) {\n parserInput.forget();\n return body;\n }\n\n body = this.atomicCondition(needsParens);\n if (!body) {\n parserInput.restore();\n return ;\n }\n if (!parserInput.$char(')')) {\n parserInput.restore(`expected ')' got '${parserInput.currentChar()}'`);\n return ;\n }\n parserInput.forget();\n return body;\n },\n atomicCondition: function (needsParens, preparsedCond) {\n const entities = this.entities;\n const index = parserInput.i;\n let a;\n let b;\n let c;\n let op;\n\n const cond = (function() {\n return this.addition() || entities.keyword() || entities.quoted() || entities.mixinLookup();\n }).bind(this)\n\n if (preparsedCond) {\n a = preparsedCond;\n } else {\n a = cond();\n }\n\n if (a) {\n if (parserInput.$char('>')) {\n if (parserInput.$char('=')) {\n op = '>=';\n } else {\n op = '>';\n }\n } else\n if (parserInput.$char('<')) {\n if (parserInput.$char('=')) {\n op = '<=';\n } else {\n op = '<';\n }\n } else\n if (parserInput.$char('=')) {\n if (parserInput.$char('>')) {\n op = '=>';\n } else if (parserInput.$char('<')) {\n op = '=<';\n } else {\n op = '=';\n }\n }\n if (op) {\n b = cond();\n if (b) {\n c = new(tree.Condition)(op, a, b, index + currentIndex, false);\n } else {\n error('expected expression');\n }\n } else if (!preparsedCond) {\n c = new(tree.Condition)('=', a, new(tree.Keyword)('true'), index + currentIndex, false);\n }\n return c;\n }\n },\n\n //\n // An operand is anything that can be part of an operation,\n // such as a Color, or a Variable\n //\n operand: function () {\n const entities = this.entities;\n let negate;\n\n if (parserInput.peek(/^-[@$(]/)) {\n negate = parserInput.$char('-');\n }\n\n let o = this.sub() || entities.dimension() ||\n entities.color() || entities.variable() ||\n entities.property() || entities.call() ||\n entities.quoted(true) || entities.colorKeyword() ||\n entities.mixinLookup();\n\n if (negate) {\n o.parensInOp = true;\n o = new(tree.Negative)(o);\n }\n\n return o;\n },\n\n //\n // Expressions either represent mathematical operations,\n // or white-space delimited Entities.\n //\n // 1px solid black\n // @var * 2\n //\n expression: function () {\n const entities = [];\n let e;\n let delim;\n const index = parserInput.i;\n\n do {\n e = this.comment();\n if (e && !e.isLineComment) {\n entities.push(e);\n continue;\n }\n e = this.addition() || this.entity();\n\n if (e instanceof tree.Comment) {\n e = null;\n }\n\n if (e) {\n entities.push(e);\n // operations do not allow keyword \"/\" dimension (e.g. small/20px) so we support that here\n if (!parserInput.peek(/^\\/[/*]/)) {\n delim = parserInput.$char('/');\n if (delim) {\n entities.push(new(tree.Anonymous)(delim, index + currentIndex));\n }\n }\n }\n } while (e);\n if (entities.length > 0) {\n return new(tree.Expression)(entities);\n }\n },\n property: function () {\n const name = parserInput.$re(/^(\\*?-?[_a-zA-Z0-9-]+)\\s*:/);\n if (name) {\n return name[1];\n }\n },\n ruleProperty: function () {\n let name = [];\n const index = [];\n let s;\n let k;\n\n parserInput.save();\n\n const simpleProperty = parserInput.$re(/^([_a-zA-Z0-9-]+)\\s*:/);\n if (simpleProperty) {\n name = [new(tree.Keyword)(simpleProperty[1])];\n parserInput.forget();\n return name;\n }\n\n function match(re) {\n const i = parserInput.i;\n const chunk = parserInput.$re(re);\n if (chunk) {\n index.push(i);\n return name.push(chunk[1]);\n }\n }\n\n match(/^(\\*?)/);\n while (true) {\n if (!match(/^((?:[\\w-]+)|(?:[@$]\\{[\\w-]+\\}))/)) {\n break;\n }\n }\n\n if ((name.length > 1) && match(/^((?:\\+_|\\+)?)\\s*:/)) {\n parserInput.forget();\n\n // at last, we have the complete match now. move forward,\n // convert name particles to tree objects and return:\n if (name[0] === '') {\n name.shift();\n index.shift();\n }\n for (k = 0; k < name.length; k++) {\n s = name[k];\n name[k] = (s.charAt(0) !== '@' && s.charAt(0) !== '$') ?\n new(tree.Keyword)(s) :\n (s.charAt(0) === '@' ?\n new(tree.Variable)(`@${s.slice(2, -1)}`, index[k] + currentIndex, fileInfo) :\n new(tree.Property)(`$${s.slice(2, -1)}`, index[k] + currentIndex, fileInfo));\n }\n return name;\n }\n parserInput.restore();\n }\n }\n };\n};\nParser.serializeVars = vars => {\n let s = '';\n\n for (const name in vars) {\n if (Object.hasOwnProperty.call(vars, name)) {\n const value = vars[name];\n s += `${((name[0] === '@') ? '' : '@') + name}: ${value}${(String(value).slice(-1) === ';') ? '' : ';'}`;\n }\n }\n\n return s;\n};\n\nexport default Parser;","import Node from './node';\nimport Element from './element';\nimport LessError from '../less-error';\nimport * as utils from '../utils';\nimport Parser from '../parser/parser';\n\nconst Selector = function(elements, extendList, condition, index, currentFileInfo, visibilityInfo) {\n this.extendList = extendList;\n this.condition = condition;\n this.evaldCondition = !condition;\n this._index = index;\n this._fileInfo = currentFileInfo;\n this.elements = this.getElements(elements);\n this.mixinElements_ = undefined;\n this.copyVisibilityInfo(visibilityInfo);\n this.setParent(this.elements, this);\n};\n\nSelector.prototype = Object.assign(new Node(), {\n type: 'Selector',\n\n accept(visitor) {\n if (this.elements) {\n this.elements = visitor.visitArray(this.elements);\n }\n if (this.extendList) {\n this.extendList = visitor.visitArray(this.extendList);\n }\n if (this.condition) {\n this.condition = visitor.visit(this.condition);\n }\n },\n\n createDerived(elements, extendList, evaldCondition) {\n elements = this.getElements(elements);\n const newSelector = new Selector(elements, extendList || this.extendList,\n null, this.getIndex(), this.fileInfo(), this.visibilityInfo());\n newSelector.evaldCondition = (!utils.isNullOrUndefined(evaldCondition)) ? evaldCondition : this.evaldCondition;\n newSelector.mediaEmpty = this.mediaEmpty;\n return newSelector;\n },\n\n getElements(els) {\n if (!els) {\n return [new Element('', '&', false, this._index, this._fileInfo)];\n }\n if (typeof els === 'string') {\n new Parser(this.parse.context, this.parse.importManager, this._fileInfo, this._index).parseNode(\n els,\n ['selector'],\n function(err, result) {\n if (err) {\n throw new LessError({\n index: err.index,\n message: err.message\n }, this.parse.imports, this._fileInfo.filename);\n }\n els = result[0].elements;\n });\n }\n return els;\n },\n\n createEmptySelectors() {\n const el = new Element('', '&', false, this._index, this._fileInfo), sels = [new Selector([el], null, null, this._index, this._fileInfo)];\n sels[0].mediaEmpty = true;\n return sels;\n },\n\n match(other) {\n const elements = this.elements;\n const len = elements.length;\n let olen;\n let i;\n\n other = other.mixinElements();\n olen = other.length;\n if (olen === 0 || len < olen) {\n return 0;\n } else {\n for (i = 0; i < olen; i++) {\n if (elements[i].value !== other[i]) {\n return 0;\n }\n }\n }\n\n return olen; // return number of matched elements\n },\n\n mixinElements() {\n if (this.mixinElements_) {\n return this.mixinElements_;\n }\n\n let elements = this.elements.map( function(v) {\n return v.combinator.value + (v.value.value || v.value);\n }).join('').match(/[,*.\\w-]([\\w-]|(\\\\.))*/g);\n\n if (elements) {\n if (elements[0] === '&') {\n elements.shift();\n }\n } else {\n elements = [];\n }\n\n return (this.mixinElements_ = elements);\n },\n\n isJustParentSelector() {\n return !this.mediaEmpty &&\n this.elements.length === 1 &&\n this.elements[0].value === '&' &&\n (this.elements[0].combinator.value === ' ' || this.elements[0].combinator.value === '');\n },\n\n eval(context) {\n const evaldCondition = this.condition && this.condition.eval(context);\n let elements = this.elements;\n let extendList = this.extendList;\n\n elements = elements && elements.map(function (e) { return e.eval(context); });\n extendList = extendList && extendList.map(function(extend) { return extend.eval(context); });\n\n return this.createDerived(elements, extendList, evaldCondition);\n },\n\n genCSS(context, output) {\n let i, element;\n if ((!context || !context.firstSelector) && this.elements[0].combinator.value === '') {\n output.add(' ', this.fileInfo(), this.getIndex());\n }\n for (i = 0; i < this.elements.length; i++) {\n element = this.elements[i];\n element.genCSS(context, output);\n }\n },\n\n getIsOutput() {\n return this.evaldCondition;\n }\n});\n\nexport default Selector;\n","import Node from './node';\n\nconst Value = function(value) {\n if (!value) {\n throw new Error('Value requires an array argument');\n }\n if (!Array.isArray(value)) {\n this.value = [ value ];\n }\n else {\n this.value = value;\n }\n};\n\nValue.prototype = Object.assign(new Node(), {\n type: 'Value',\n\n accept(visitor) {\n if (this.value) {\n this.value = visitor.visitArray(this.value);\n }\n },\n\n eval(context) {\n if (this.value.length === 1) {\n return this.value[0].eval(context);\n } else {\n return new Value(this.value.map(function (v) {\n return v.eval(context);\n }));\n }\n },\n\n genCSS(context, output) {\n let i;\n for (i = 0; i < this.value.length; i++) {\n this.value[i].genCSS(context, output);\n if (i + 1 < this.value.length) {\n output.add((context && context.compress) ? ',' : ', ');\n }\n }\n }\n});\n\nexport default Value;\n","import Node from './node';\n\nconst Keyword = function(value) {\n this.value = value;\n};\n\nKeyword.prototype = Object.assign(new Node(), {\n type: 'Keyword',\n\n genCSS(context, output) {\n if (this.value === '%') { throw { type: 'Syntax', message: 'Invalid % without number' }; }\n output.add(this.value);\n }\n});\n\nKeyword.True = new Keyword('true');\nKeyword.False = new Keyword('false');\n\nexport default Keyword;\n","import Node from './node';\nimport Value from './value';\nimport Keyword from './keyword';\nimport Anonymous from './anonymous';\nimport * as Constants from '../constants';\nconst MATH = Constants.Math;\n\nfunction evalName(context, name) {\n let value = '';\n let i;\n const n = name.length;\n const output = {add: function (s) {value += s;}};\n for (i = 0; i < n; i++) {\n name[i].eval(context).genCSS(context, output);\n }\n return value;\n}\n\nconst Declaration = function(name, value, important, merge, index, currentFileInfo, inline, variable) {\n this.name = name;\n this.value = (value instanceof Node) ? value : new Value([value ? new Anonymous(value) : null]);\n this.important = important ? ` ${important.trim()}` : '';\n this.merge = merge;\n this._index = index;\n this._fileInfo = currentFileInfo;\n this.inline = inline || false;\n this.variable = (variable !== undefined) ? variable\n : (name.charAt && (name.charAt(0) === '@'));\n this.allowRoot = true;\n this.setParent(this.value, this);\n};\n\nDeclaration.prototype = Object.assign(new Node(), {\n type: 'Declaration',\n\n genCSS(context, output) {\n output.add(this.name + (context.compress ? ':' : ': '), this.fileInfo(), this.getIndex());\n try {\n this.value.genCSS(context, output);\n }\n catch (e) {\n e.index = this._index;\n e.filename = this._fileInfo.filename;\n throw e;\n }\n output.add(this.important + ((this.inline || (context.lastRule && context.compress)) ? '' : ';'), this._fileInfo, this._index);\n },\n\n eval(context) {\n let mathBypass = false, prevMath, name = this.name, evaldValue, variable = this.variable;\n if (typeof name !== 'string') {\n // expand 'primitive' name directly to get\n // things faster (~10% for benchmark.less):\n name = (name.length === 1) && (name[0] instanceof Keyword) ?\n name[0].value : evalName(context, name);\n variable = false; // never treat expanded interpolation as new variable name\n }\n\n // @todo remove when parens-division is default\n if (name === 'font' && context.math === MATH.ALWAYS) {\n mathBypass = true;\n prevMath = context.math;\n context.math = MATH.PARENS_DIVISION;\n }\n try {\n context.importantScope.push({});\n evaldValue = this.value.eval(context);\n\n if (!this.variable && evaldValue.type === 'DetachedRuleset') {\n throw { message: 'Rulesets cannot be evaluated on a property.',\n index: this.getIndex(), filename: this.fileInfo().filename };\n }\n let important = this.important;\n const importantResult = context.importantScope.pop();\n if (!important && importantResult.important) {\n important = importantResult.important;\n }\n\n return new Declaration(name,\n evaldValue,\n important,\n this.merge,\n this.getIndex(), this.fileInfo(), this.inline,\n variable);\n }\n catch (e) {\n if (typeof e.index !== 'number') {\n e.index = this.getIndex();\n e.filename = this.fileInfo().filename;\n }\n throw e;\n }\n finally {\n if (mathBypass) {\n context.math = prevMath;\n }\n }\n },\n\n makeImportant() {\n return new Declaration(this.name,\n this.value,\n '!important',\n this.merge,\n this.getIndex(), this.fileInfo(), this.inline);\n }\n});\n\nexport default Declaration;","function asComment(ctx) {\n return `/* line ${ctx.debugInfo.lineNumber}, ${ctx.debugInfo.fileName} */\\n`;\n}\n\nfunction asMediaQuery(ctx) {\n let filenameWithProtocol = ctx.debugInfo.fileName;\n if (!/^[a-z]+:\\/\\//i.test(filenameWithProtocol)) {\n filenameWithProtocol = `file://${filenameWithProtocol}`;\n }\n return `@media -sass-debug-info{filename{font-family:${filenameWithProtocol.replace(/([.:/\\\\])/g, function (a) {\n if (a == '\\\\') {\n a = '/';\n }\n return `\\\\${a}`;\n })}}line{font-family:\\\\00003${ctx.debugInfo.lineNumber}}}\\n`;\n}\n\nfunction debugInfo(context, ctx, lineSeparator) {\n let result = '';\n if (context.dumpLineNumbers && !context.compress) {\n switch (context.dumpLineNumbers) {\n case 'comments':\n result = asComment(ctx);\n break;\n case 'mediaquery':\n result = asMediaQuery(ctx);\n break;\n case 'all':\n result = asComment(ctx) + (lineSeparator || '') + asMediaQuery(ctx);\n break;\n }\n }\n return result;\n}\n\nexport default debugInfo;\n\n","import Node from './node';\nimport getDebugInfo from './debug-info';\n\nconst Comment = function(value, isLineComment, index, currentFileInfo) {\n this.value = value;\n this.isLineComment = isLineComment;\n this._index = index;\n this._fileInfo = currentFileInfo;\n this.allowRoot = true;\n}\n\nComment.prototype = Object.assign(new Node(), {\n type: 'Comment',\n\n genCSS(context, output) {\n if (this.debugInfo) {\n output.add(getDebugInfo(context, this), this.fileInfo(), this.getIndex());\n }\n output.add(this.value);\n },\n\n isSilent(context) {\n const isCompressed = context.compress && this.value[2] !== '!';\n return this.isLineComment || isCompressed;\n }\n});\n\nexport default Comment;\n","import Keyword from '../tree/keyword';\nimport * as utils from '../utils';\n\nconst defaultFunc = {\n eval: function () {\n const v = this.value_;\n const e = this.error_;\n if (e) {\n throw e;\n }\n if (!utils.isNullOrUndefined(v)) {\n return v ? Keyword.True : Keyword.False;\n }\n },\n value: function (v) {\n this.value_ = v;\n },\n error: function (e) {\n this.error_ = e;\n },\n reset: function () {\n this.value_ = this.error_ = null;\n }\n};\n\nexport default defaultFunc;\n","import Node from './node';\nimport Declaration from './declaration';\nimport Keyword from './keyword';\nimport Comment from './comment';\nimport Paren from './paren';\nimport Selector from './selector';\nimport Element from './element';\nimport Anonymous from './anonymous';\nimport contexts from '../contexts';\nimport globalFunctionRegistry from '../functions/function-registry';\nimport defaultFunc from '../functions/default';\nimport getDebugInfo from './debug-info';\nimport * as utils from '../utils';\nimport Parser from '../parser/parser';\n\nconst Ruleset = function(selectors, rules, strictImports, visibilityInfo) {\n this.selectors = selectors;\n this.rules = rules;\n this._lookups = {};\n this._variables = null;\n this._properties = null;\n this.strictImports = strictImports;\n this.copyVisibilityInfo(visibilityInfo);\n this.allowRoot = true;\n\n this.setParent(this.selectors, this);\n this.setParent(this.rules, this);\n}\n\nRuleset.prototype = Object.assign(new Node(), {\n type: 'Ruleset',\n isRuleset: true,\n\n isRulesetLike() { return true; },\n\n accept(visitor) {\n if (this.paths) {\n this.paths = visitor.visitArray(this.paths, true);\n } else if (this.selectors) {\n this.selectors = visitor.visitArray(this.selectors);\n }\n if (this.rules && this.rules.length) {\n this.rules = visitor.visitArray(this.rules);\n }\n },\n\n eval(context) {\n let selectors;\n let selCnt;\n let selector;\n let i;\n let hasVariable;\n let hasOnePassingSelector = false;\n\n if (this.selectors && (selCnt = this.selectors.length)) {\n selectors = new Array(selCnt);\n defaultFunc.error({\n type: 'Syntax',\n message: 'it is currently only allowed in parametric mixin guards,'\n });\n\n for (i = 0; i < selCnt; i++) {\n selector = this.selectors[i].eval(context);\n for (let j = 0; j < selector.elements.length; j++) {\n if (selector.elements[j].isVariable) {\n hasVariable = true;\n break;\n }\n }\n selectors[i] = selector;\n if (selector.evaldCondition) {\n hasOnePassingSelector = true;\n }\n }\n\n if (hasVariable) {\n const toParseSelectors = new Array(selCnt);\n for (i = 0; i < selCnt; i++) {\n selector = selectors[i];\n toParseSelectors[i] = selector.toCSS(context);\n }\n const startingIndex = selectors[0].getIndex();\n const selectorFileInfo = selectors[0].fileInfo();\n new Parser(context, this.parse.importManager, selectorFileInfo, startingIndex).parseNode(\n toParseSelectors.join(','),\n ['selectors'],\n function(err, result) {\n if (result) {\n selectors = utils.flattenArray(result);\n }\n });\n }\n\n defaultFunc.reset();\n } else {\n hasOnePassingSelector = true;\n }\n\n let rules = this.rules ? utils.copyArray(this.rules) : null;\n const ruleset = new Ruleset(selectors, rules, this.strictImports, this.visibilityInfo());\n let rule;\n let subRule;\n\n ruleset.originalRuleset = this;\n ruleset.root = this.root;\n ruleset.firstRoot = this.firstRoot;\n ruleset.allowImports = this.allowImports;\n\n if (this.debugInfo) {\n ruleset.debugInfo = this.debugInfo;\n }\n\n if (!hasOnePassingSelector) {\n rules.length = 0;\n }\n\n // inherit a function registry from the frames stack when possible;\n // otherwise from the global registry\n ruleset.functionRegistry = (function (frames) {\n let i = 0;\n const n = frames.length;\n let found;\n for ( ; i !== n ; ++i ) {\n found = frames[ i ].functionRegistry;\n if ( found ) { return found; }\n }\n return globalFunctionRegistry;\n }(context.frames)).inherit();\n\n // push the current ruleset to the frames stack\n const ctxFrames = context.frames;\n ctxFrames.unshift(ruleset);\n\n // currrent selectors\n let ctxSelectors = context.selectors;\n if (!ctxSelectors) {\n context.selectors = ctxSelectors = [];\n }\n ctxSelectors.unshift(this.selectors);\n\n // Evaluate imports\n if (ruleset.root || ruleset.allowImports || !ruleset.strictImports) {\n ruleset.evalImports(context);\n }\n\n // Store the frames around mixin definitions,\n // so they can be evaluated like closures when the time comes.\n const rsRules = ruleset.rules;\n for (i = 0; (rule = rsRules[i]); i++) {\n if (rule.evalFirst) {\n rsRules[i] = rule.eval(context);\n }\n }\n\n const mediaBlockCount = (context.mediaBlocks && context.mediaBlocks.length) || 0;\n\n // Evaluate mixin calls.\n for (i = 0; (rule = rsRules[i]); i++) {\n if (rule.type === 'MixinCall') {\n /* jshint loopfunc:true */\n rules = rule.eval(context).filter(function(r) {\n if ((r instanceof Declaration) && r.variable) {\n // do not pollute the scope if the variable is\n // already there. consider returning false here\n // but we need a way to \"return\" variable from mixins\n return !(ruleset.variable(r.name));\n }\n return true;\n });\n rsRules.splice.apply(rsRules, [i, 1].concat(rules));\n i += rules.length - 1;\n ruleset.resetCache();\n } else if (rule.type === 'VariableCall') {\n /* jshint loopfunc:true */\n rules = rule.eval(context).rules.filter(function(r) {\n if ((r instanceof Declaration) && r.variable) {\n // do not pollute the scope at all\n return false;\n }\n return true;\n });\n rsRules.splice.apply(rsRules, [i, 1].concat(rules));\n i += rules.length - 1;\n ruleset.resetCache();\n }\n }\n\n // Evaluate everything else\n for (i = 0; (rule = rsRules[i]); i++) {\n if (!rule.evalFirst) {\n rsRules[i] = rule = rule.eval ? rule.eval(context) : rule;\n }\n }\n\n // Evaluate everything else\n for (i = 0; (rule = rsRules[i]); i++) {\n // for rulesets, check if it is a css guard and can be removed\n if (rule instanceof Ruleset && rule.selectors && rule.selectors.length === 1) {\n // check if it can be folded in (e.g. & where)\n if (rule.selectors[0] && rule.selectors[0].isJustParentSelector()) {\n rsRules.splice(i--, 1);\n\n for (let j = 0; (subRule = rule.rules[j]); j++) {\n if (subRule instanceof Node) {\n subRule.copyVisibilityInfo(rule.visibilityInfo());\n if (!(subRule instanceof Declaration) || !subRule.variable) {\n rsRules.splice(++i, 0, subRule);\n }\n }\n }\n }\n }\n }\n\n // Pop the stack\n ctxFrames.shift();\n ctxSelectors.shift();\n\n if (context.mediaBlocks) {\n for (i = mediaBlockCount; i < context.mediaBlocks.length; i++) {\n context.mediaBlocks[i].bubbleSelectors(selectors);\n }\n }\n\n return ruleset;\n },\n\n evalImports(context) {\n const rules = this.rules;\n let i;\n let importRules;\n if (!rules) { return; }\n\n for (i = 0; i < rules.length; i++) {\n if (rules[i].type === 'Import') {\n importRules = rules[i].eval(context);\n if (importRules && (importRules.length || importRules.length === 0)) {\n rules.splice.apply(rules, [i, 1].concat(importRules));\n i += importRules.length - 1;\n } else {\n rules.splice(i, 1, importRules);\n }\n this.resetCache();\n }\n }\n },\n\n makeImportant() {\n const result = new Ruleset(this.selectors, this.rules.map(function (r) {\n if (r.makeImportant) {\n return r.makeImportant();\n } else {\n return r;\n }\n }), this.strictImports, this.visibilityInfo());\n\n return result;\n },\n\n matchArgs(args) {\n return !args || args.length === 0;\n },\n\n // lets you call a css selector with a guard\n matchCondition(args, context) {\n const lastSelector = this.selectors[this.selectors.length - 1];\n if (!lastSelector.evaldCondition) {\n return false;\n }\n if (lastSelector.condition &&\n !lastSelector.condition.eval(\n new contexts.Eval(context,\n context.frames))) {\n return false;\n }\n return true;\n },\n\n resetCache() {\n this._rulesets = null;\n this._variables = null;\n this._properties = null;\n this._lookups = {};\n },\n\n variables() {\n if (!this._variables) {\n this._variables = !this.rules ? {} : this.rules.reduce(function (hash, r) {\n if (r instanceof Declaration && r.variable === true) {\n hash[r.name] = r;\n }\n // when evaluating variables in an import statement, imports have not been eval'd\n // so we need to go inside import statements.\n // guard against root being a string (in the case of inlined less)\n if (r.type === 'Import' && r.root && r.root.variables) {\n const vars = r.root.variables();\n for (const name in vars) {\n // eslint-disable-next-line no-prototype-builtins\n if (vars.hasOwnProperty(name)) {\n hash[name] = r.root.variable(name);\n }\n }\n }\n return hash;\n }, {});\n }\n return this._variables;\n },\n\n properties() {\n if (!this._properties) {\n this._properties = !this.rules ? {} : this.rules.reduce(function (hash, r) {\n if (r instanceof Declaration && r.variable !== true) {\n const name = (r.name.length === 1) && (r.name[0] instanceof Keyword) ?\n r.name[0].value : r.name;\n // Properties don't overwrite as they can merge\n if (!hash[`$${name}`]) {\n hash[`$${name}`] = [ r ];\n }\n else {\n hash[`$${name}`].push(r);\n }\n }\n return hash;\n }, {});\n }\n return this._properties;\n },\n\n variable(name) {\n const decl = this.variables()[name];\n if (decl) {\n return this.parseValue(decl);\n }\n },\n\n property(name) {\n const decl = this.properties()[name];\n if (decl) {\n return this.parseValue(decl);\n }\n },\n\n lastDeclaration() {\n for (let i = this.rules.length; i > 0; i--) {\n const decl = this.rules[i - 1];\n if (decl instanceof Declaration) {\n return this.parseValue(decl);\n }\n }\n },\n\n parseValue(toParse) {\n const self = this;\n function transformDeclaration(decl) {\n if (decl.value instanceof Anonymous && !decl.parsed) {\n if (typeof decl.value.value === 'string') {\n new Parser(this.parse.context, this.parse.importManager, decl.fileInfo(), decl.value.getIndex()).parseNode(\n decl.value.value,\n ['value', 'important'],\n function(err, result) {\n if (err) {\n decl.parsed = true;\n }\n if (result) {\n decl.value = result[0];\n decl.important = result[1] || '';\n decl.parsed = true;\n }\n });\n } else {\n decl.parsed = true;\n }\n\n return decl;\n }\n else {\n return decl;\n }\n }\n if (!Array.isArray(toParse)) {\n return transformDeclaration.call(self, toParse);\n }\n else {\n const nodes = [];\n toParse.forEach(function(n) {\n nodes.push(transformDeclaration.call(self, n));\n });\n return nodes;\n }\n },\n\n rulesets() {\n if (!this.rules) { return []; }\n\n const filtRules = [];\n const rules = this.rules;\n let i;\n let rule;\n\n for (i = 0; (rule = rules[i]); i++) {\n if (rule.isRuleset) {\n filtRules.push(rule);\n }\n }\n\n return filtRules;\n },\n\n prependRule(rule) {\n const rules = this.rules;\n if (rules) {\n rules.unshift(rule);\n } else {\n this.rules = [ rule ];\n }\n this.setParent(rule, this);\n },\n\n find(selector, self, filter) {\n self = self || this;\n const rules = [];\n let match;\n let foundMixins;\n const key = selector.toCSS();\n\n if (key in this._lookups) { return this._lookups[key]; }\n\n this.rulesets().forEach(function (rule) {\n if (rule !== self) {\n for (let j = 0; j < rule.selectors.length; j++) {\n match = selector.match(rule.selectors[j]);\n if (match) {\n if (selector.elements.length > match) {\n if (!filter || filter(rule)) {\n foundMixins = rule.find(new Selector(selector.elements.slice(match)), self, filter);\n for (let i = 0; i < foundMixins.length; ++i) {\n foundMixins[i].path.push(rule);\n }\n Array.prototype.push.apply(rules, foundMixins);\n }\n } else {\n rules.push({ rule, path: []});\n }\n break;\n }\n }\n }\n });\n this._lookups[key] = rules;\n return rules;\n },\n\n genCSS(context, output) {\n let i;\n let j;\n const charsetRuleNodes = [];\n let ruleNodes = [];\n\n let // Line number debugging\n debugInfo;\n\n let rule;\n let path;\n\n context.tabLevel = (context.tabLevel || 0);\n\n if (!this.root) {\n context.tabLevel++;\n }\n\n const tabRuleStr = context.compress ? '' : Array(context.tabLevel + 1).join(' ');\n const tabSetStr = context.compress ? '' : Array(context.tabLevel).join(' ');\n let sep;\n\n let charsetNodeIndex = 0;\n let importNodeIndex = 0;\n for (i = 0; (rule = this.rules[i]); i++) {\n if (rule instanceof Comment) {\n if (importNodeIndex === i) {\n importNodeIndex++;\n }\n ruleNodes.push(rule);\n } else if (rule.isCharset && rule.isCharset()) {\n ruleNodes.splice(charsetNodeIndex, 0, rule);\n charsetNodeIndex++;\n importNodeIndex++;\n } else if (rule.type === 'Import') {\n ruleNodes.splice(importNodeIndex, 0, rule);\n importNodeIndex++;\n } else {\n ruleNodes.push(rule);\n }\n }\n ruleNodes = charsetRuleNodes.concat(ruleNodes);\n\n // If this is the root node, we don't render\n // a selector, or {}.\n if (!this.root) {\n debugInfo = getDebugInfo(context, this, tabSetStr);\n\n if (debugInfo) {\n output.add(debugInfo);\n output.add(tabSetStr);\n }\n\n const paths = this.paths;\n const pathCnt = paths.length;\n let pathSubCnt;\n\n sep = context.compress ? ',' : (`,\\n${tabSetStr}`);\n\n for (i = 0; i < pathCnt; i++) {\n path = paths[i];\n if (!(pathSubCnt = path.length)) { continue; }\n if (i > 0) { output.add(sep); }\n\n context.firstSelector = true;\n path[0].genCSS(context, output);\n\n context.firstSelector = false;\n for (j = 1; j < pathSubCnt; j++) {\n path[j].genCSS(context, output);\n }\n }\n\n output.add((context.compress ? '{' : ' {\\n') + tabRuleStr);\n }\n\n // Compile rules and rulesets\n for (i = 0; (rule = ruleNodes[i]); i++) {\n\n if (i + 1 === ruleNodes.length) {\n context.lastRule = true;\n }\n\n const currentLastRule = context.lastRule;\n if (rule.isRulesetLike(rule)) {\n context.lastRule = false;\n }\n\n if (rule.genCSS) {\n rule.genCSS(context, output);\n } else if (rule.value) {\n output.add(rule.value.toString());\n }\n\n context.lastRule = currentLastRule;\n\n if (!context.lastRule && rule.isVisible()) {\n output.add(context.compress ? '' : (`\\n${tabRuleStr}`));\n } else {\n context.lastRule = false;\n }\n }\n\n if (!this.root) {\n output.add((context.compress ? '}' : `\\n${tabSetStr}}`));\n context.tabLevel--;\n }\n\n if (!output.isEmpty() && !context.compress && this.firstRoot) {\n output.add('\\n');\n }\n },\n\n joinSelectors(paths, context, selectors) {\n for (let s = 0; s < selectors.length; s++) {\n this.joinSelector(paths, context, selectors[s]);\n }\n },\n\n joinSelector(paths, context, selector) {\n\n function createParenthesis(elementsToPak, originalElement) {\n let replacementParen, j;\n if (elementsToPak.length === 0) {\n replacementParen = new Paren(elementsToPak[0]);\n } else {\n const insideParent = new Array(elementsToPak.length);\n for (j = 0; j < elementsToPak.length; j++) {\n insideParent[j] = new Element(\n null,\n elementsToPak[j],\n originalElement.isVariable,\n originalElement._index,\n originalElement._fileInfo\n );\n }\n replacementParen = new Paren(new Selector(insideParent));\n }\n return replacementParen;\n }\n\n function createSelector(containedElement, originalElement) {\n let element, selector;\n element = new Element(null, containedElement, originalElement.isVariable, originalElement._index, originalElement._fileInfo);\n selector = new Selector([element]);\n return selector;\n }\n\n // joins selector path from `beginningPath` with selector path in `addPath`\n // `replacedElement` contains element that is being replaced by `addPath`\n // returns concatenated path\n function addReplacementIntoPath(beginningPath, addPath, replacedElement, originalSelector) {\n let newSelectorPath, lastSelector, newJoinedSelector;\n // our new selector path\n newSelectorPath = [];\n\n // construct the joined selector - if & is the first thing this will be empty,\n // if not newJoinedSelector will be the last set of elements in the selector\n if (beginningPath.length > 0) {\n newSelectorPath = utils.copyArray(beginningPath);\n lastSelector = newSelectorPath.pop();\n newJoinedSelector = originalSelector.createDerived(utils.copyArray(lastSelector.elements));\n }\n else {\n newJoinedSelector = originalSelector.createDerived([]);\n }\n\n if (addPath.length > 0) {\n // /deep/ is a CSS4 selector - (removed, so should deprecate)\n // that is valid without anything in front of it\n // so if the & does not have a combinator that is \"\" or \" \" then\n // and there is a combinator on the parent, then grab that.\n // this also allows + a { & .b { .a & { ... though not sure why you would want to do that\n let combinator = replacedElement.combinator;\n\n const parentEl = addPath[0].elements[0];\n if (combinator.emptyOrWhitespace && !parentEl.combinator.emptyOrWhitespace) {\n combinator = parentEl.combinator;\n }\n // join the elements so far with the first part of the parent\n newJoinedSelector.elements.push(new Element(\n combinator,\n parentEl.value,\n replacedElement.isVariable,\n replacedElement._index,\n replacedElement._fileInfo\n ));\n newJoinedSelector.elements = newJoinedSelector.elements.concat(addPath[0].elements.slice(1));\n }\n\n // now add the joined selector - but only if it is not empty\n if (newJoinedSelector.elements.length !== 0) {\n newSelectorPath.push(newJoinedSelector);\n }\n\n // put together the parent selectors after the join (e.g. the rest of the parent)\n if (addPath.length > 1) {\n let restOfPath = addPath.slice(1);\n restOfPath = restOfPath.map(function (selector) {\n return selector.createDerived(selector.elements, []);\n });\n newSelectorPath = newSelectorPath.concat(restOfPath);\n }\n return newSelectorPath;\n }\n\n // joins selector path from `beginningPath` with every selector path in `addPaths` array\n // `replacedElement` contains element that is being replaced by `addPath`\n // returns array with all concatenated paths\n function addAllReplacementsIntoPath( beginningPath, addPaths, replacedElement, originalSelector, result) {\n let j;\n for (j = 0; j < beginningPath.length; j++) {\n const newSelectorPath = addReplacementIntoPath(beginningPath[j], addPaths, replacedElement, originalSelector);\n result.push(newSelectorPath);\n }\n return result;\n }\n\n function mergeElementsOnToSelectors(elements, selectors) {\n let i, sel;\n\n if (elements.length === 0) {\n return ;\n }\n if (selectors.length === 0) {\n selectors.push([ new Selector(elements) ]);\n return;\n }\n\n for (i = 0; (sel = selectors[i]); i++) {\n // if the previous thing in sel is a parent this needs to join on to it\n if (sel.length > 0) {\n sel[sel.length - 1] = sel[sel.length - 1].createDerived(sel[sel.length - 1].elements.concat(elements));\n }\n else {\n sel.push(new Selector(elements));\n }\n }\n }\n\n // replace all parent selectors inside `inSelector` by content of `context` array\n // resulting selectors are returned inside `paths` array\n // returns true if `inSelector` contained at least one parent selector\n function replaceParentSelector(paths, context, inSelector) {\n // The paths are [[Selector]]\n // The first list is a list of comma separated selectors\n // The inner list is a list of inheritance separated selectors\n // e.g.\n // .a, .b {\n // .c {\n // }\n // }\n // == [[.a] [.c]] [[.b] [.c]]\n //\n let i, j, k, currentElements, newSelectors, selectorsMultiplied, sel, el, hadParentSelector = false, length, lastSelector;\n function findNestedSelector(element) {\n let maybeSelector;\n if (!(element.value instanceof Paren)) {\n return null;\n }\n\n maybeSelector = element.value.value;\n if (!(maybeSelector instanceof Selector)) {\n return null;\n }\n\n return maybeSelector;\n }\n\n // the elements from the current selector so far\n currentElements = [];\n // the current list of new selectors to add to the path.\n // We will build it up. We initiate it with one empty selector as we \"multiply\" the new selectors\n // by the parents\n newSelectors = [\n []\n ];\n\n for (i = 0; (el = inSelector.elements[i]); i++) {\n // non parent reference elements just get added\n if (el.value !== '&') {\n const nestedSelector = findNestedSelector(el);\n if (nestedSelector !== null) {\n // merge the current list of non parent selector elements\n // on to the current list of selectors to add\n mergeElementsOnToSelectors(currentElements, newSelectors);\n\n const nestedPaths = [];\n let replaced;\n const replacedNewSelectors = [];\n replaced = replaceParentSelector(nestedPaths, context, nestedSelector);\n hadParentSelector = hadParentSelector || replaced;\n // the nestedPaths array should have only one member - replaceParentSelector does not multiply selectors\n for (k = 0; k < nestedPaths.length; k++) {\n const replacementSelector = createSelector(createParenthesis(nestedPaths[k], el), el);\n addAllReplacementsIntoPath(newSelectors, [replacementSelector], el, inSelector, replacedNewSelectors);\n }\n newSelectors = replacedNewSelectors;\n currentElements = [];\n } else {\n currentElements.push(el);\n }\n\n } else {\n hadParentSelector = true;\n // the new list of selectors to add\n selectorsMultiplied = [];\n\n // merge the current list of non parent selector elements\n // on to the current list of selectors to add\n mergeElementsOnToSelectors(currentElements, newSelectors);\n\n // loop through our current selectors\n for (j = 0; j < newSelectors.length; j++) {\n sel = newSelectors[j];\n // if we don't have any parent paths, the & might be in a mixin so that it can be used\n // whether there are parents or not\n if (context.length === 0) {\n // the combinator used on el should now be applied to the next element instead so that\n // it is not lost\n if (sel.length > 0) {\n sel[0].elements.push(new Element(el.combinator, '', el.isVariable, el._index, el._fileInfo));\n }\n selectorsMultiplied.push(sel);\n }\n else {\n // and the parent selectors\n for (k = 0; k < context.length; k++) {\n // We need to put the current selectors\n // then join the last selector's elements on to the parents selectors\n const newSelectorPath = addReplacementIntoPath(sel, context[k], el, inSelector);\n // add that to our new set of selectors\n selectorsMultiplied.push(newSelectorPath);\n }\n }\n }\n\n // our new selectors has been multiplied, so reset the state\n newSelectors = selectorsMultiplied;\n currentElements = [];\n }\n }\n\n // if we have any elements left over (e.g. .a& .b == .b)\n // add them on to all the current selectors\n mergeElementsOnToSelectors(currentElements, newSelectors);\n\n for (i = 0; i < newSelectors.length; i++) {\n length = newSelectors[i].length;\n if (length > 0) {\n paths.push(newSelectors[i]);\n lastSelector = newSelectors[i][length - 1];\n newSelectors[i][length - 1] = lastSelector.createDerived(lastSelector.elements, inSelector.extendList);\n }\n }\n\n return hadParentSelector;\n }\n\n function deriveSelector(visibilityInfo, deriveFrom) {\n const newSelector = deriveFrom.createDerived(deriveFrom.elements, deriveFrom.extendList, deriveFrom.evaldCondition);\n newSelector.copyVisibilityInfo(visibilityInfo);\n return newSelector;\n }\n\n // joinSelector code follows\n let i, newPaths, hadParentSelector;\n\n newPaths = [];\n hadParentSelector = replaceParentSelector(newPaths, context, selector);\n\n if (!hadParentSelector) {\n if (context.length > 0) {\n newPaths = [];\n for (i = 0; i < context.length; i++) {\n\n const concatenated = context[i].map(deriveSelector.bind(this, selector.visibilityInfo()));\n\n concatenated.push(selector);\n newPaths.push(concatenated);\n }\n }\n else {\n newPaths = [[selector]];\n }\n }\n\n for (i = 0; i < newPaths.length; i++) {\n paths.push(newPaths[i]);\n }\n\n }\n});\n\nexport default Ruleset;\n","import Node from './node';\nimport Selector from './selector';\nimport Ruleset from './ruleset';\nimport Anonymous from './anonymous';\n\nconst AtRule = function(\n name,\n value,\n rules,\n index,\n currentFileInfo,\n debugInfo,\n isRooted,\n visibilityInfo\n) {\n let i;\n\n this.name = name;\n this.value = (value instanceof Node) ? value : (value ? new Anonymous(value) : value);\n if (rules) {\n if (Array.isArray(rules)) {\n this.rules = rules;\n } else {\n this.rules = [rules];\n this.rules[0].selectors = (new Selector([], null, null, index, currentFileInfo)).createEmptySelectors();\n }\n for (i = 0; i < this.rules.length; i++) {\n this.rules[i].allowImports = true;\n }\n this.setParent(this.rules, this);\n }\n this._index = index;\n this._fileInfo = currentFileInfo;\n this.debugInfo = debugInfo;\n this.isRooted = isRooted || false;\n this.copyVisibilityInfo(visibilityInfo);\n this.allowRoot = true;\n}\n\nAtRule.prototype = Object.assign(new Node(), {\n type: 'AtRule',\n accept(visitor) {\n const value = this.value, rules = this.rules;\n if (rules) {\n this.rules = visitor.visitArray(rules);\n }\n if (value) {\n this.value = visitor.visit(value);\n }\n },\n\n isRulesetLike() {\n return this.rules || !this.isCharset();\n },\n\n isCharset() {\n return '@charset' === this.name;\n },\n\n genCSS(context, output) {\n const value = this.value, rules = this.rules;\n output.add(this.name, this.fileInfo(), this.getIndex());\n if (value) {\n output.add(' ');\n value.genCSS(context, output);\n }\n if (rules) {\n this.outputRuleset(context, output, rules);\n } else {\n output.add(';');\n }\n },\n\n eval(context) {\n let mediaPathBackup, mediaBlocksBackup, value = this.value, rules = this.rules;\n\n // media stored inside other atrule should not bubble over it\n // backpup media bubbling information\n mediaPathBackup = context.mediaPath;\n mediaBlocksBackup = context.mediaBlocks;\n // deleted media bubbling information\n context.mediaPath = [];\n context.mediaBlocks = [];\n\n if (value) {\n value = value.eval(context);\n }\n if (rules) {\n // assuming that there is only one rule at this point - that is how parser constructs the rule\n rules = [rules[0].eval(context)];\n rules[0].root = true;\n }\n // restore media bubbling information\n context.mediaPath = mediaPathBackup;\n context.mediaBlocks = mediaBlocksBackup;\n\n return new AtRule(this.name, value, rules,\n this.getIndex(), this.fileInfo(), this.debugInfo, this.isRooted, this.visibilityInfo());\n },\n\n variable(name) {\n if (this.rules) {\n // assuming that there is only one rule at this point - that is how parser constructs the rule\n return Ruleset.prototype.variable.call(this.rules[0], name);\n }\n },\n\n find() {\n if (this.rules) {\n // assuming that there is only one rule at this point - that is how parser constructs the rule\n return Ruleset.prototype.find.apply(this.rules[0], arguments);\n }\n },\n\n rulesets() {\n if (this.rules) {\n // assuming that there is only one rule at this point - that is how parser constructs the rule\n return Ruleset.prototype.rulesets.apply(this.rules[0]);\n }\n },\n\n outputRuleset(context, output, rules) {\n const ruleCnt = rules.length;\n let i;\n context.tabLevel = (context.tabLevel | 0) + 1;\n\n // Compressed\n if (context.compress) {\n output.add('{');\n for (i = 0; i < ruleCnt; i++) {\n rules[i].genCSS(context, output);\n }\n output.add('}');\n context.tabLevel--;\n return;\n }\n\n // Non-compressed\n const tabSetStr = `\\n${Array(context.tabLevel).join(' ')}`, tabRuleStr = `${tabSetStr} `;\n if (!ruleCnt) {\n output.add(` {${tabSetStr}}`);\n } else {\n output.add(` {${tabRuleStr}`);\n rules[0].genCSS(context, output);\n for (i = 1; i < ruleCnt; i++) {\n output.add(tabRuleStr);\n rules[i].genCSS(context, output);\n }\n output.add(`${tabSetStr}}`);\n }\n\n context.tabLevel--;\n }\n});\n\nexport default AtRule;\n","import Node from './node';\nimport contexts from '../contexts';\nimport * as utils from '../utils';\n\nconst DetachedRuleset = function(ruleset, frames) {\n this.ruleset = ruleset;\n this.frames = frames;\n this.setParent(this.ruleset, this);\n};\n\nDetachedRuleset.prototype = Object.assign(new Node(), {\n type: 'DetachedRuleset',\n evalFirst: true,\n\n accept(visitor) {\n this.ruleset = visitor.visit(this.ruleset);\n },\n\n eval(context) {\n const frames = this.frames || utils.copyArray(context.frames);\n return new DetachedRuleset(this.ruleset, frames);\n },\n\n callEval(context) {\n return this.ruleset.eval(this.frames ? new contexts.Eval(context, this.frames.concat(context.frames)) : context);\n }\n});\n\nexport default DetachedRuleset;\n","import Node from './node';\nimport unitConversions from '../data/unit-conversions';\nimport * as utils from '../utils';\n\nconst Unit = function(numerator, denominator, backupUnit) {\n this.numerator = numerator ? utils.copyArray(numerator).sort() : [];\n this.denominator = denominator ? utils.copyArray(denominator).sort() : [];\n if (backupUnit) {\n this.backupUnit = backupUnit;\n } else if (numerator && numerator.length) {\n this.backupUnit = numerator[0];\n }\n};\n\nUnit.prototype = Object.assign(new Node(), {\n type: 'Unit',\n\n clone() {\n return new Unit(utils.copyArray(this.numerator), utils.copyArray(this.denominator), this.backupUnit);\n },\n\n genCSS(context, output) {\n // Dimension checks the unit is singular and throws an error if in strict math mode.\n const strictUnits = context && context.strictUnits;\n if (this.numerator.length === 1) {\n output.add(this.numerator[0]); // the ideal situation\n } else if (!strictUnits && this.backupUnit) {\n output.add(this.backupUnit);\n } else if (!strictUnits && this.denominator.length) {\n output.add(this.denominator[0]);\n }\n },\n\n toString() {\n let i, returnStr = this.numerator.join('*');\n for (i = 0; i < this.denominator.length; i++) {\n returnStr += `/${this.denominator[i]}`;\n }\n return returnStr;\n },\n\n compare(other) {\n return this.is(other.toString()) ? 0 : undefined;\n },\n\n is(unitString) {\n return this.toString().toUpperCase() === unitString.toUpperCase();\n },\n\n isLength() {\n return RegExp('^(px|em|ex|ch|rem|in|cm|mm|pc|pt|ex|vw|vh|vmin|vmax)$', 'gi').test(this.toCSS());\n },\n\n isEmpty() {\n return this.numerator.length === 0 && this.denominator.length === 0;\n },\n\n isSingular() {\n return this.numerator.length <= 1 && this.denominator.length === 0;\n },\n\n map(callback) {\n let i;\n\n for (i = 0; i < this.numerator.length; i++) {\n this.numerator[i] = callback(this.numerator[i], false);\n }\n\n for (i = 0; i < this.denominator.length; i++) {\n this.denominator[i] = callback(this.denominator[i], true);\n }\n },\n\n usedUnits() {\n let group;\n const result = {};\n let mapUnit;\n let groupName;\n\n mapUnit = function (atomicUnit) {\n // eslint-disable-next-line no-prototype-builtins\n if (group.hasOwnProperty(atomicUnit) && !result[groupName]) {\n result[groupName] = atomicUnit;\n }\n\n return atomicUnit;\n };\n\n for (groupName in unitConversions) {\n // eslint-disable-next-line no-prototype-builtins\n if (unitConversions.hasOwnProperty(groupName)) {\n group = unitConversions[groupName];\n\n this.map(mapUnit);\n }\n }\n\n return result;\n },\n\n cancel() {\n const counter = {};\n let atomicUnit;\n let i;\n\n for (i = 0; i < this.numerator.length; i++) {\n atomicUnit = this.numerator[i];\n counter[atomicUnit] = (counter[atomicUnit] || 0) + 1;\n }\n\n for (i = 0; i < this.denominator.length; i++) {\n atomicUnit = this.denominator[i];\n counter[atomicUnit] = (counter[atomicUnit] || 0) - 1;\n }\n\n this.numerator = [];\n this.denominator = [];\n\n for (atomicUnit in counter) {\n // eslint-disable-next-line no-prototype-builtins\n if (counter.hasOwnProperty(atomicUnit)) {\n const count = counter[atomicUnit];\n\n if (count > 0) {\n for (i = 0; i < count; i++) {\n this.numerator.push(atomicUnit);\n }\n } else if (count < 0) {\n for (i = 0; i < -count; i++) {\n this.denominator.push(atomicUnit);\n }\n }\n }\n }\n\n this.numerator.sort();\n this.denominator.sort();\n }\n});\n\nexport default Unit;\n","/* eslint-disable no-prototype-builtins */\nimport Node from './node';\nimport unitConversions from '../data/unit-conversions';\nimport Unit from './unit';\nimport Color from './color';\n\n//\n// A number with a unit\n//\nconst Dimension = function(value, unit) {\n this.value = parseFloat(value);\n if (isNaN(this.value)) {\n throw new Error('Dimension is not a number.');\n }\n this.unit = (unit && unit instanceof Unit) ? unit :\n new Unit(unit ? [unit] : undefined);\n this.setParent(this.unit, this);\n};\n\nDimension.prototype = Object.assign(new Node(), {\n type: 'Dimension',\n\n accept(visitor) {\n this.unit = visitor.visit(this.unit);\n },\n\n // remove when Nodes have JSDoc types\n // eslint-disable-next-line no-unused-vars\n eval(context) {\n return this;\n },\n\n toColor() {\n return new Color([this.value, this.value, this.value]);\n },\n\n genCSS(context, output) {\n if ((context && context.strictUnits) && !this.unit.isSingular()) {\n throw new Error(`Multiple units in dimension. Correct the units or use the unit function. Bad unit: ${this.unit.toString()}`);\n }\n\n const value = this.fround(context, this.value);\n let strValue = String(value);\n\n if (value !== 0 && value < 0.000001 && value > -0.000001) {\n // would be output 1e-6 etc.\n strValue = value.toFixed(20).replace(/0+$/, '');\n }\n\n if (context && context.compress) {\n // Zero values doesn't need a unit\n if (value === 0 && this.unit.isLength()) {\n output.add(strValue);\n return;\n }\n\n // Float values doesn't need a leading zero\n if (value > 0 && value < 1) {\n strValue = (strValue).substr(1);\n }\n }\n\n output.add(strValue);\n this.unit.genCSS(context, output);\n },\n\n // In an operation between two Dimensions,\n // we default to the first Dimension's unit,\n // so `1px + 2` will yield `3px`.\n operate(context, op, other) {\n /* jshint noempty:false */\n let value = this._operate(context, op, this.value, other.value);\n let unit = this.unit.clone();\n\n if (op === '+' || op === '-') {\n if (unit.numerator.length === 0 && unit.denominator.length === 0) {\n unit = other.unit.clone();\n if (this.unit.backupUnit) {\n unit.backupUnit = this.unit.backupUnit;\n }\n } else if (other.unit.numerator.length === 0 && unit.denominator.length === 0) {\n // do nothing\n } else {\n other = other.convertTo(this.unit.usedUnits());\n\n if (context.strictUnits && other.unit.toString() !== unit.toString()) {\n throw new Error('Incompatible units. Change the units or use the unit function. '\n + `Bad units: '${unit.toString()}' and '${other.unit.toString()}'.`);\n }\n\n value = this._operate(context, op, this.value, other.value);\n }\n } else if (op === '*') {\n unit.numerator = unit.numerator.concat(other.unit.numerator).sort();\n unit.denominator = unit.denominator.concat(other.unit.denominator).sort();\n unit.cancel();\n } else if (op === '/') {\n unit.numerator = unit.numerator.concat(other.unit.denominator).sort();\n unit.denominator = unit.denominator.concat(other.unit.numerator).sort();\n unit.cancel();\n }\n return new Dimension(value, unit);\n },\n\n compare(other) {\n let a, b;\n\n if (!(other instanceof Dimension)) {\n return undefined;\n }\n\n if (this.unit.isEmpty() || other.unit.isEmpty()) {\n a = this;\n b = other;\n } else {\n a = this.unify();\n b = other.unify();\n if (a.unit.compare(b.unit) !== 0) {\n return undefined;\n }\n }\n\n return Node.numericCompare(a.value, b.value);\n },\n\n unify() {\n return this.convertTo({ length: 'px', duration: 's', angle: 'rad' });\n },\n\n convertTo(conversions) {\n let value = this.value;\n const unit = this.unit.clone();\n let i;\n let groupName;\n let group;\n let targetUnit;\n let derivedConversions = {};\n let applyUnit;\n\n if (typeof conversions === 'string') {\n for (i in unitConversions) {\n if (unitConversions[i].hasOwnProperty(conversions)) {\n derivedConversions = {};\n derivedConversions[i] = conversions;\n }\n }\n conversions = derivedConversions;\n }\n applyUnit = function (atomicUnit, denominator) {\n if (group.hasOwnProperty(atomicUnit)) {\n if (denominator) {\n value = value / (group[atomicUnit] / group[targetUnit]);\n } else {\n value = value * (group[atomicUnit] / group[targetUnit]);\n }\n\n return targetUnit;\n }\n\n return atomicUnit;\n };\n\n for (groupName in conversions) {\n if (conversions.hasOwnProperty(groupName)) {\n targetUnit = conversions[groupName];\n group = unitConversions[groupName];\n\n unit.map(applyUnit);\n }\n }\n\n unit.cancel();\n\n return new Dimension(value, unit);\n }\n});\n\nexport default Dimension;\n","import Node from './node';\nimport Color from './color';\nimport Dimension from './dimension';\nimport * as Constants from '../constants';\nconst MATH = Constants.Math;\n\n\nconst Operation = function(op, operands, isSpaced) {\n this.op = op.trim();\n this.operands = operands;\n this.isSpaced = isSpaced;\n};\n\nOperation.prototype = Object.assign(new Node(), {\n type: 'Operation',\n\n accept(visitor) {\n this.operands = visitor.visitArray(this.operands);\n },\n\n eval(context) {\n let a = this.operands[0].eval(context), b = this.operands[1].eval(context), op;\n\n if (context.isMathOn(this.op)) {\n op = this.op === './' ? '/' : this.op;\n if (a instanceof Dimension && b instanceof Color) {\n a = a.toColor();\n }\n if (b instanceof Dimension && a instanceof Color) {\n b = b.toColor();\n }\n if (!a.operate || !b.operate) {\n if (\n (a instanceof Operation || b instanceof Operation)\n && a.op === '/' && context.math === MATH.PARENS_DIVISION\n ) {\n return new Operation(this.op, [a, b], this.isSpaced);\n }\n throw { type: 'Operation',\n message: 'Operation on an invalid type' };\n }\n\n return a.operate(context, op, b);\n } else {\n return new Operation(this.op, [a, b], this.isSpaced);\n }\n },\n\n genCSS(context, output) {\n this.operands[0].genCSS(context, output);\n if (this.isSpaced) {\n output.add(' ');\n }\n output.add(this.op);\n if (this.isSpaced) {\n output.add(' ');\n }\n this.operands[1].genCSS(context, output);\n }\n});\n\nexport default Operation;\n","import Node from './node';\nimport Paren from './paren';\nimport Comment from './comment';\nimport Dimension from './dimension';\nimport Anonymous from './anonymous';\n\nconst Expression = function(value, noSpacing) {\n this.value = value;\n this.noSpacing = noSpacing;\n if (!value) {\n throw new Error('Expression requires an array parameter');\n }\n};\n\nExpression.prototype = Object.assign(new Node(), {\n type: 'Expression',\n\n accept(visitor) {\n this.value = visitor.visitArray(this.value);\n },\n\n eval(context) {\n let returnValue;\n const mathOn = context.isMathOn();\n const inParenthesis = this.parens;\n\n let doubleParen = false;\n if (inParenthesis) {\n context.inParenthesis();\n }\n if (this.value.length > 1) {\n returnValue = new Expression(this.value.map(function (e) {\n if (!e.eval) {\n return e;\n }\n return e.eval(context);\n }), this.noSpacing);\n } else if (this.value.length === 1) {\n if (this.value[0].parens && !this.value[0].parensInOp && !context.inCalc) {\n doubleParen = true;\n }\n returnValue = this.value[0].eval(context);\n } else {\n returnValue = this;\n }\n if (inParenthesis) {\n context.outOfParenthesis();\n }\n if (this.parens && this.parensInOp && !mathOn && !doubleParen\n && (!(returnValue instanceof Dimension))) {\n returnValue = new Paren(returnValue);\n }\n return returnValue;\n },\n\n genCSS(context, output) {\n for (let i = 0; i < this.value.length; i++) {\n this.value[i].genCSS(context, output);\n if (!this.noSpacing && i + 1 < this.value.length) {\n if (i + 1 < this.value.length && !(this.value[i + 1] instanceof Anonymous) ||\n this.value[i + 1] instanceof Anonymous && this.value[i + 1].value !== ',') {\n output.add(' ');\n }\n }\n }\n },\n\n throwAwayComments() {\n this.value = this.value.filter(function(v) {\n return !(v instanceof Comment);\n });\n }\n});\n\nexport default Expression;\n","import Expression from '../tree/expression';\n\nclass functionCaller {\n constructor(name, context, index, currentFileInfo) {\n this.name = name.toLowerCase();\n this.index = index;\n this.context = context;\n this.currentFileInfo = currentFileInfo;\n\n this.func = context.frames[0].functionRegistry.get(this.name);\n }\n\n isValid() {\n return Boolean(this.func);\n }\n\n call(args) {\n if (!(Array.isArray(args))) {\n args = [args];\n }\n const evalArgs = this.func.evalArgs;\n if (evalArgs !== false) {\n args = args.map(a => a.eval(this.context));\n }\n const commentFilter = item => !(item.type === 'Comment');\n\n // This code is terrible and should be replaced as per this issue...\n // https://github.com/less/less.js/issues/2477\n args = args\n .filter(commentFilter)\n .map(item => {\n if (item.type === 'Expression') {\n const subNodes = item.value.filter(commentFilter);\n if (subNodes.length === 1) {\n // https://github.com/less/less.js/issues/3616\n if (item.parens && subNodes[0].op === '/') {\n return item;\n }\n return subNodes[0];\n } else {\n return new Expression(subNodes);\n }\n }\n return item;\n });\n\n if (evalArgs === false) {\n return this.func(this.context, ...args);\n }\n\n return this.func(...args);\n }\n}\n\nexport default functionCaller;\n","import Node from './node';\nimport Anonymous from './anonymous';\nimport FunctionCaller from '../functions/function-caller';\n\n//\n// A function call node.\n//\nconst Call = function(name, args, index, currentFileInfo) {\n this.name = name;\n this.args = args;\n this.calc = name === 'calc';\n this._index = index;\n this._fileInfo = currentFileInfo;\n}\n\nCall.prototype = Object.assign(new Node(), {\n type: 'Call',\n\n accept(visitor) {\n if (this.args) {\n this.args = visitor.visitArray(this.args);\n }\n },\n\n //\n // When evaluating a function call,\n // we either find the function in the functionRegistry,\n // in which case we call it, passing the evaluated arguments,\n // if this returns null or we cannot find the function, we\n // simply print it out as it appeared originally [2].\n //\n // The reason why we evaluate the arguments, is in the case where\n // we try to pass a variable to a function, like: `saturate(@color)`.\n // The function should receive the value, not the variable.\n //\n eval(context) {\n /**\n * Turn off math for calc(), and switch back on for evaluating nested functions\n */\n const currentMathContext = context.mathOn;\n context.mathOn = !this.calc;\n if (this.calc || context.inCalc) {\n context.enterCalc();\n }\n\n const exitCalc = () => {\n if (this.calc || context.inCalc) {\n context.exitCalc();\n }\n context.mathOn = currentMathContext;\n };\n\n let result;\n const funcCaller = new FunctionCaller(this.name, context, this.getIndex(), this.fileInfo());\n\n if (funcCaller.isValid()) {\n try {\n result = funcCaller.call(this.args);\n exitCalc();\n } catch (e) {\n // eslint-disable-next-line no-prototype-builtins\n if (e.hasOwnProperty('line') && e.hasOwnProperty('column')) {\n throw e;\n }\n throw { \n type: e.type || 'Runtime',\n message: `Error evaluating function \\`${this.name}\\`${e.message ? `: ${e.message}` : ''}`,\n index: this.getIndex(), \n filename: this.fileInfo().filename,\n line: e.lineNumber,\n column: e.columnNumber\n };\n }\n }\n\n if (result !== null && result !== undefined) {\n // Results that that are not nodes are cast as Anonymous nodes\n // Falsy values or booleans are returned as empty nodes\n if (!(result instanceof Node)) {\n if (!result || result === true) {\n result = new Anonymous(null); \n }\n else {\n result = new Anonymous(result.toString()); \n }\n \n }\n result._index = this._index;\n result._fileInfo = this._fileInfo;\n return result;\n }\n\n const args = this.args.map(a => a.eval(context));\n exitCalc();\n\n return new Call(this.name, args, this.getIndex(), this.fileInfo());\n },\n\n genCSS(context, output) {\n output.add(`${this.name}(`, this.fileInfo(), this.getIndex());\n\n for (let i = 0; i < this.args.length; i++) {\n this.args[i].genCSS(context, output);\n if (i + 1 < this.args.length) {\n output.add(', ');\n }\n }\n\n output.add(')');\n }\n});\n\nexport default Call;\n","import Node from './node';\nimport Call from './call';\n\nconst Variable = function(name, index, currentFileInfo) {\n this.name = name;\n this._index = index;\n this._fileInfo = currentFileInfo;\n};\n\nVariable.prototype = Object.assign(new Node(), {\n type: 'Variable',\n\n eval(context) {\n let variable, name = this.name;\n\n if (name.indexOf('@@') === 0) {\n name = `@${new Variable(name.slice(1), this.getIndex(), this.fileInfo()).eval(context).value}`;\n }\n\n if (this.evaluating) {\n throw { type: 'Name',\n message: `Recursive variable definition for ${name}`,\n filename: this.fileInfo().filename,\n index: this.getIndex() };\n }\n\n this.evaluating = true;\n\n variable = this.find(context.frames, function (frame) {\n const v = frame.variable(name);\n if (v) {\n if (v.important) {\n const importantScope = context.importantScope[context.importantScope.length - 1];\n importantScope.important = v.important;\n }\n // If in calc, wrap vars in a function call to cascade evaluate args first\n if (context.inCalc) {\n return (new Call('_SELF', [v.value])).eval(context);\n }\n else {\n return v.value.eval(context);\n }\n }\n });\n if (variable) {\n this.evaluating = false;\n return variable;\n } else {\n throw { type: 'Name',\n message: `variable ${name} is undefined`,\n filename: this.fileInfo().filename,\n index: this.getIndex() };\n }\n },\n\n find(obj, fun) {\n for (let i = 0, r; i < obj.length; i++) {\n r = fun.call(obj, obj[i]);\n if (r) { return r; }\n }\n return null;\n }\n});\n\nexport default Variable;\n","import Node from './node';\nimport Declaration from './declaration';\n\nconst Property = function(name, index, currentFileInfo) {\n this.name = name;\n this._index = index;\n this._fileInfo = currentFileInfo;\n};\n\nProperty.prototype = Object.assign(new Node(), {\n type: 'Property',\n\n eval(context) {\n let property;\n const name = this.name;\n // TODO: shorten this reference\n const mergeRules = context.pluginManager.less.visitors.ToCSSVisitor.prototype._mergeRules;\n\n if (this.evaluating) {\n throw { type: 'Name',\n message: `Recursive property reference for ${name}`,\n filename: this.fileInfo().filename,\n index: this.getIndex() };\n }\n\n this.evaluating = true;\n\n property = this.find(context.frames, function (frame) {\n let v;\n const vArr = frame.property(name);\n if (vArr) {\n for (let i = 0; i < vArr.length; i++) {\n v = vArr[i];\n\n vArr[i] = new Declaration(v.name,\n v.value,\n v.important,\n v.merge,\n v.index,\n v.currentFileInfo,\n v.inline,\n v.variable\n );\n }\n mergeRules(vArr);\n\n v = vArr[vArr.length - 1];\n if (v.important) {\n const importantScope = context.importantScope[context.importantScope.length - 1];\n importantScope.important = v.important;\n }\n v = v.value.eval(context);\n return v;\n }\n });\n if (property) {\n this.evaluating = false;\n return property;\n } else {\n throw { type: 'Name',\n message: `Property '${name}' is undefined`,\n filename: this.currentFileInfo.filename,\n index: this.index };\n }\n },\n\n find(obj, fun) {\n for (let i = 0, r; i < obj.length; i++) {\n r = fun.call(obj, obj[i]);\n if (r) { return r; }\n }\n return null;\n }\n});\n\nexport default Property;\n","import Node from './node';\n\nconst Attribute = function(key, op, value, cif) {\n this.key = key;\n this.op = op;\n this.value = value;\n this.cif = cif;\n}\n\nAttribute.prototype = Object.assign(new Node(), {\n type: 'Attribute',\n\n eval(context) {\n return new Attribute(\n this.key.eval ? this.key.eval(context) : this.key,\n this.op,\n (this.value && this.value.eval) ? this.value.eval(context) : this.value,\n this.cif\n );\n },\n\n genCSS(context, output) {\n output.add(this.toCSS(context));\n },\n\n toCSS(context) {\n let value = this.key.toCSS ? this.key.toCSS(context) : this.key;\n\n if (this.op) {\n value += this.op;\n value += (this.value.toCSS ? this.value.toCSS(context) : this.value);\n }\n\n if (this.cif) {\n value = value + ' ' + this.cif;\n }\n\n return `[${value}]`;\n }\n});\n\nexport default Attribute;\n","import Node from './node';\nimport Variable from './variable';\nimport Property from './property';\n\nconst Quoted = function(str, content, escaped, index, currentFileInfo) {\n this.escaped = (escaped === undefined) ? true : escaped;\n this.value = content || '';\n this.quote = str.charAt(0);\n this._index = index;\n this._fileInfo = currentFileInfo;\n this.variableRegex = /@\\{([\\w-]+)\\}/g;\n this.propRegex = /\\$\\{([\\w-]+)\\}/g;\n this.allowRoot = escaped;\n};\n\nQuoted.prototype = Object.assign(new Node(), {\n type: 'Quoted',\n\n genCSS(context, output) {\n if (!this.escaped) {\n output.add(this.quote, this.fileInfo(), this.getIndex());\n }\n output.add(this.value);\n if (!this.escaped) {\n output.add(this.quote);\n }\n },\n\n containsVariables() {\n return this.value.match(this.variableRegex);\n },\n\n eval(context) {\n const that = this;\n let value = this.value;\n const variableReplacement = function (_, name) {\n const v = new Variable(`@${name}`, that.getIndex(), that.fileInfo()).eval(context, true);\n return (v instanceof Quoted) ? v.value : v.toCSS();\n };\n const propertyReplacement = function (_, name) {\n const v = new Property(`$${name}`, that.getIndex(), that.fileInfo()).eval(context, true);\n return (v instanceof Quoted) ? v.value : v.toCSS();\n };\n function iterativeReplace(value, regexp, replacementFnc) {\n let evaluatedValue = value;\n do {\n value = evaluatedValue.toString();\n evaluatedValue = value.replace(regexp, replacementFnc);\n } while (value !== evaluatedValue);\n return evaluatedValue;\n }\n value = iterativeReplace(value, this.variableRegex, variableReplacement);\n value = iterativeReplace(value, this.propRegex, propertyReplacement);\n return new Quoted(this.quote + value + this.quote, value, this.escaped, this.getIndex(), this.fileInfo());\n },\n\n compare(other) {\n // when comparing quoted strings allow the quote to differ\n if (other.type === 'Quoted' && !this.escaped && !other.escaped) {\n return Node.numericCompare(this.value, other.value);\n } else {\n return other.toCSS && this.toCSS() === other.toCSS() ? 0 : undefined;\n }\n }\n});\n\nexport default Quoted;\n","import Node from './node';\n\nfunction escapePath(path) {\n return path.replace(/[()'\"\\s]/g, function(match) { return `\\\\${match}`; });\n}\n\nconst URL = function(val, index, currentFileInfo, isEvald) {\n this.value = val;\n this._index = index;\n this._fileInfo = currentFileInfo;\n this.isEvald = isEvald;\n};\n\nURL.prototype = Object.assign(new Node(), {\n type: 'Url',\n\n accept(visitor) {\n this.value = visitor.visit(this.value);\n },\n\n genCSS(context, output) {\n output.add('url(');\n this.value.genCSS(context, output);\n output.add(')');\n },\n\n eval(context) {\n const val = this.value.eval(context);\n let rootpath;\n\n if (!this.isEvald) {\n // Add the rootpath if the URL requires a rewrite\n rootpath = this.fileInfo() && this.fileInfo().rootpath;\n if (typeof rootpath === 'string' &&\n typeof val.value === 'string' &&\n context.pathRequiresRewrite(val.value)) {\n if (!val.quote) {\n rootpath = escapePath(rootpath);\n }\n val.value = context.rewritePath(val.value, rootpath);\n } else {\n val.value = context.normalizePath(val.value);\n }\n\n // Add url args if enabled\n if (context.urlArgs) {\n if (!val.value.match(/^\\s*data:/)) {\n const delimiter = val.value.indexOf('?') === -1 ? '?' : '&';\n const urlArgs = delimiter + context.urlArgs;\n if (val.value.indexOf('#') !== -1) {\n val.value = val.value.replace('#', `${urlArgs}#`);\n } else {\n val.value += urlArgs;\n }\n }\n }\n }\n\n return new URL(val, this.getIndex(), this.fileInfo(), true);\n }\n});\n\nexport default URL;\n","import Ruleset from './ruleset';\nimport Value from './value';\nimport Selector from './selector';\nimport Anonymous from './anonymous';\nimport Expression from './expression';\nimport * as utils from '../utils';\n\nconst NestableAtRulePrototype = {\n\n isRulesetLike() {\n return true;\n },\n\n accept(visitor) {\n if (this.features) {\n this.features = visitor.visit(this.features);\n }\n if (this.rules) {\n this.rules = visitor.visitArray(this.rules);\n }\n },\n\n evalTop(context) {\n let result = this;\n\n // Render all dependent Media blocks.\n if (context.mediaBlocks.length > 1) {\n const selectors = (new Selector([], null, null, this.getIndex(), this.fileInfo())).createEmptySelectors();\n result = new Ruleset(selectors, context.mediaBlocks);\n result.multiMedia = true;\n result.copyVisibilityInfo(this.visibilityInfo());\n this.setParent(result, this);\n }\n\n delete context.mediaBlocks;\n delete context.mediaPath;\n\n return result;\n },\n\n evalNested(context) {\n let i;\n let value;\n const path = context.mediaPath.concat([this]);\n\n // Extract the media-query conditions separated with `,` (OR).\n for (i = 0; i < path.length; i++) {\n if (path[i].type !== this.type) { \n context.mediaBlocks.splice(i, 1); \n \n return this; \n }\n \n value = path[i].features instanceof Value ?\n path[i].features.value : path[i].features;\n path[i] = Array.isArray(value) ? value : [value];\n }\n\n // Trace all permutations to generate the resulting media-query.\n //\n // (a, b and c) with nested (d, e) ->\n // a and d\n // a and e\n // b and c and d\n // b and c and e\n this.features = new Value(this.permute(path).map(path => {\n path = path.map(fragment => fragment.toCSS ? fragment : new Anonymous(fragment));\n\n for (i = path.length - 1; i > 0; i--) {\n path.splice(i, 0, new Anonymous('and'));\n }\n\n return new Expression(path);\n }));\n this.setParent(this.features, this);\n\n // Fake a tree-node that doesn't output anything.\n return new Ruleset([], []);\n },\n\n permute(arr) {\n if (arr.length === 0) {\n return [];\n } else if (arr.length === 1) {\n return arr[0];\n } else {\n const result = [];\n const rest = this.permute(arr.slice(1));\n for (let i = 0; i < rest.length; i++) {\n for (let j = 0; j < arr[0].length; j++) {\n result.push([arr[0][j]].concat(rest[i]));\n }\n }\n return result;\n }\n },\n\n bubbleSelectors(selectors) {\n if (!selectors) {\n return;\n }\n this.rules = [new Ruleset(utils.copyArray(selectors), [this.rules[0]])];\n this.setParent(this.rules, this);\n }\n};\n\nexport default NestableAtRulePrototype;\n","import Ruleset from './ruleset';\nimport Value from './value';\nimport Selector from './selector';\nimport AtRule from './atrule';\nimport NestableAtRulePrototype from './nested-at-rule';\n\nconst Media = function(value, features, index, currentFileInfo, visibilityInfo) {\n this._index = index;\n this._fileInfo = currentFileInfo;\n\n const selectors = (new Selector([], null, null, this._index, this._fileInfo)).createEmptySelectors();\n\n this.features = new Value(features);\n this.rules = [new Ruleset(selectors, value)];\n this.rules[0].allowImports = true;\n this.copyVisibilityInfo(visibilityInfo);\n this.allowRoot = true;\n this.setParent(selectors, this);\n this.setParent(this.features, this);\n this.setParent(this.rules, this);\n};\n\nMedia.prototype = Object.assign(new AtRule(), {\n type: 'Media',\n\n ...NestableAtRulePrototype,\n\n genCSS(context, output) {\n output.add('@media ', this._fileInfo, this._index);\n this.features.genCSS(context, output);\n this.outputRuleset(context, output, this.rules);\n },\n\n eval(context) {\n if (!context.mediaBlocks) {\n context.mediaBlocks = [];\n context.mediaPath = [];\n }\n\n const media = new Media(null, [], this._index, this._fileInfo, this.visibilityInfo());\n if (this.debugInfo) {\n this.rules[0].debugInfo = this.debugInfo;\n media.debugInfo = this.debugInfo;\n }\n \n media.features = this.features.eval(context);\n\n context.mediaPath.push(media);\n context.mediaBlocks.push(media);\n\n this.rules[0].functionRegistry = context.frames[0].functionRegistry.inherit();\n context.frames.unshift(this.rules[0]);\n media.rules = [this.rules[0].eval(context)];\n context.frames.shift();\n\n context.mediaPath.pop();\n\n return context.mediaPath.length === 0 ? media.evalTop(context) :\n media.evalNested(context);\n }\n});\n\nexport default Media;\n","import Node from './node';\nimport Media from './media';\nimport URL from './url';\nimport Quoted from './quoted';\nimport Ruleset from './ruleset';\nimport Anonymous from './anonymous';\nimport * as utils from '../utils';\nimport LessError from '../less-error';\n\n//\n// CSS @import node\n//\n// The general strategy here is that we don't want to wait\n// for the parsing to be completed, before we start importing\n// the file. That's because in the context of a browser,\n// most of the time will be spent waiting for the server to respond.\n//\n// On creation, we push the import path to our import queue, though\n// `import,push`, we also pass it a callback, which it'll call once\n// the file has been fetched, and parsed.\n//\nconst Import = function(path, features, options, index, currentFileInfo, visibilityInfo) {\n this.options = options;\n this._index = index;\n this._fileInfo = currentFileInfo;\n this.path = path;\n this.features = features;\n this.allowRoot = true;\n\n if (this.options.less !== undefined || this.options.inline) {\n this.css = !this.options.less || this.options.inline;\n } else {\n const pathValue = this.getPath();\n if (pathValue && /[#.&?]css([?;].*)?$/.test(pathValue)) {\n this.css = true;\n }\n }\n this.copyVisibilityInfo(visibilityInfo);\n this.setParent(this.features, this);\n this.setParent(this.path, this);\n};\n\nImport.prototype = Object.assign(new Node(), {\n type: 'Import',\n\n accept(visitor) {\n if (this.features) {\n this.features = visitor.visit(this.features);\n }\n this.path = visitor.visit(this.path);\n if (!this.options.isPlugin && !this.options.inline && this.root) {\n this.root = visitor.visit(this.root);\n }\n },\n\n genCSS(context, output) {\n if (this.css && this.path._fileInfo.reference === undefined) {\n output.add('@import ', this._fileInfo, this._index);\n this.path.genCSS(context, output);\n if (this.features) {\n output.add(' ');\n this.features.genCSS(context, output);\n }\n output.add(';');\n }\n },\n\n getPath() {\n return (this.path instanceof URL) ?\n this.path.value.value : this.path.value;\n },\n\n isVariableImport() {\n let path = this.path;\n if (path instanceof URL) {\n path = path.value;\n }\n if (path instanceof Quoted) {\n return path.containsVariables();\n }\n\n return true;\n },\n\n evalForImport(context) {\n let path = this.path;\n\n if (path instanceof URL) {\n path = path.value;\n }\n\n return new Import(path.eval(context), this.features, this.options, this._index, this._fileInfo, this.visibilityInfo());\n },\n\n evalPath(context) {\n const path = this.path.eval(context);\n const fileInfo = this._fileInfo;\n\n if (!(path instanceof URL)) {\n // Add the rootpath if the URL requires a rewrite\n const pathValue = path.value;\n if (fileInfo &&\n pathValue &&\n context.pathRequiresRewrite(pathValue)) {\n path.value = context.rewritePath(pathValue, fileInfo.rootpath);\n } else {\n path.value = context.normalizePath(path.value);\n }\n }\n\n return path;\n },\n\n eval(context) {\n const result = this.doEval(context);\n if (this.options.reference || this.blocksVisibility()) {\n if (result.length || result.length === 0) {\n result.forEach(function (node) {\n node.addVisibilityBlock();\n }\n );\n } else {\n result.addVisibilityBlock();\n }\n }\n return result;\n },\n\n doEval(context) {\n let ruleset;\n let registry;\n const features = this.features && this.features.eval(context);\n\n if (this.options.isPlugin) {\n if (this.root && this.root.eval) {\n try {\n this.root.eval(context);\n }\n catch (e) {\n e.message = 'Plugin error during evaluation';\n throw new LessError(e, this.root.imports, this.root.filename);\n }\n }\n registry = context.frames[0] && context.frames[0].functionRegistry;\n if ( registry && this.root && this.root.functions ) {\n registry.addMultiple( this.root.functions );\n }\n\n return [];\n }\n\n if (this.skip) {\n if (typeof this.skip === 'function') {\n this.skip = this.skip();\n }\n if (this.skip) {\n return [];\n }\n }\n if (this.options.inline) {\n const contents = new Anonymous(this.root, 0,\n {\n filename: this.importedFilename,\n reference: this.path._fileInfo && this.path._fileInfo.reference\n }, true, true);\n\n return this.features ? new Media([contents], this.features.value) : [contents];\n } else if (this.css) {\n const newImport = new Import(this.evalPath(context), features, this.options, this._index);\n if (!newImport.css && this.error) {\n throw this.error;\n }\n return newImport;\n } else if (this.root) {\n ruleset = new Ruleset(null, utils.copyArray(this.root.rules));\n ruleset.evalImports(context);\n\n return this.features ? new Media(ruleset.rules, this.features.value) : ruleset.rules;\n } else {\n return [];\n }\n }\n});\n\nexport default Import;\n","import Node from './node';\nimport Variable from './variable';\n\nconst JsEvalNode = function() {};\n\nJsEvalNode.prototype = Object.assign(new Node(), {\n evaluateJavaScript(expression, context) {\n let result;\n const that = this;\n const evalContext = {};\n\n if (!context.javascriptEnabled) {\n throw { message: 'Inline JavaScript is not enabled. Is it set in your options?',\n filename: this.fileInfo().filename,\n index: this.getIndex() };\n }\n\n expression = expression.replace(/@\\{([\\w-]+)\\}/g, function (_, name) {\n return that.jsify(new Variable(`@${name}`, that.getIndex(), that.fileInfo()).eval(context));\n });\n\n try {\n expression = new Function(`return (${expression})`);\n } catch (e) {\n throw { message: `JavaScript evaluation error: ${e.message} from \\`${expression}\\`` ,\n filename: this.fileInfo().filename,\n index: this.getIndex() };\n }\n\n const variables = context.frames[0].variables();\n for (const k in variables) {\n // eslint-disable-next-line no-prototype-builtins\n if (variables.hasOwnProperty(k)) {\n evalContext[k.slice(1)] = {\n value: variables[k].value,\n toJS: function () {\n return this.value.eval(context).toCSS();\n }\n };\n }\n }\n\n try {\n result = expression.call(evalContext);\n } catch (e) {\n throw { message: `JavaScript evaluation error: '${e.name}: ${e.message.replace(/[\"]/g, '\\'')}'` ,\n filename: this.fileInfo().filename,\n index: this.getIndex() };\n }\n return result;\n },\n\n jsify(obj) {\n if (Array.isArray(obj.value) && (obj.value.length > 1)) {\n return `[${obj.value.map(function (v) { return v.toCSS(); }).join(', ')}]`;\n } else {\n return obj.toCSS();\n }\n }\n});\n\nexport default JsEvalNode;\n","import JsEvalNode from './js-eval-node';\nimport Dimension from './dimension';\nimport Quoted from './quoted';\nimport Anonymous from './anonymous';\n\nconst JavaScript = function(string, escaped, index, currentFileInfo) {\n this.escaped = escaped;\n this.expression = string;\n this._index = index;\n this._fileInfo = currentFileInfo;\n}\n\nJavaScript.prototype = Object.assign(new JsEvalNode(), {\n type: 'JavaScript',\n\n eval(context) {\n const result = this.evaluateJavaScript(this.expression, context);\n const type = typeof result;\n\n if (type === 'number' && !isNaN(result)) {\n return new Dimension(result);\n } else if (type === 'string') {\n return new Quoted(`\"${result}\"`, result, this.escaped, this._index);\n } else if (Array.isArray(result)) {\n return new Anonymous(result.join(', '));\n } else {\n return new Anonymous(result);\n }\n }\n});\n\nexport default JavaScript;\n","import Node from './node';\n\nconst Assignment = function(key, val) {\n this.key = key;\n this.value = val;\n}\n\nAssignment.prototype = Object.assign(new Node(), {\n type: 'Assignment',\n\n accept(visitor) {\n this.value = visitor.visit(this.value);\n },\n\n eval(context) {\n if (this.value.eval) {\n return new Assignment(this.key, this.value.eval(context));\n }\n return this;\n },\n\n genCSS(context, output) {\n output.add(`${this.key}=`);\n if (this.value.genCSS) {\n this.value.genCSS(context, output);\n } else {\n output.add(this.value);\n }\n }\n});\n\nexport default Assignment;\n","import Node from './node';\n\nconst Condition = function(op, l, r, i, negate) {\n this.op = op.trim();\n this.lvalue = l;\n this.rvalue = r;\n this._index = i;\n this.negate = negate;\n};\n\nCondition.prototype = Object.assign(new Node(), {\n type: 'Condition',\n\n accept(visitor) {\n this.lvalue = visitor.visit(this.lvalue);\n this.rvalue = visitor.visit(this.rvalue);\n },\n\n eval(context) {\n const result = (function (op, a, b) {\n switch (op) {\n case 'and': return a && b;\n case 'or': return a || b;\n default:\n switch (Node.compare(a, b)) {\n case -1:\n return op === '<' || op === '=<' || op === '<=';\n case 0:\n return op === '=' || op === '>=' || op === '=<' || op === '<=';\n case 1:\n return op === '>' || op === '>=';\n default:\n return false;\n }\n }\n })(this.op, this.lvalue.eval(context), this.rvalue.eval(context));\n\n return this.negate ? !result : result;\n }\n});\n\nexport default Condition;\n","import { copy } from 'copy-anything';\nimport Declaration from './declaration';\nimport Node from './node';\n\nconst QueryInParens = function (op, l, m, op2, r, i) {\n this.op = op.trim();\n this.lvalue = l;\n this.mvalue = m;\n this.op2 = op2 ? op2.trim() : null;\n this.rvalue = r;\n this._index = i;\n this.mvalues = [];\n};\n\nQueryInParens.prototype = Object.assign(new Node(), {\n type: 'QueryInParens',\n\n accept(visitor) {\n this.lvalue = visitor.visit(this.lvalue);\n this.mvalue = visitor.visit(this.mvalue);\n if (this.rvalue) {\n this.rvalue = visitor.visit(this.rvalue);\n }\n },\n\n eval(context) {\n this.lvalue = this.lvalue.eval(context);\n \n let variableDeclaration;\n let rule;\n\n for (let i = 0; (rule = context.frames[i]); i++) {\n if (rule.type === 'Ruleset') {\n variableDeclaration = rule.rules.find(function (r) {\n if ((r instanceof Declaration) && r.variable) {\n return true;\n }\n\n return false;\n });\n \n if (variableDeclaration) {\n break;\n }\n }\n }\n\n if (!this.mvalueCopy) {\n this.mvalueCopy = copy(this.mvalue);\n }\n \n if (variableDeclaration) {\n this.mvalue = this.mvalueCopy;\n this.mvalue = this.mvalue.eval(context);\n this.mvalues.push(this.mvalue);\n } else {\n this.mvalue = this.mvalue.eval(context);\n }\n\n if (this.rvalue) {\n this.rvalue = this.rvalue.eval(context);\n }\n return this;\n },\n\n genCSS(context, output) {\n this.lvalue.genCSS(context, output);\n output.add(' ' + this.op + ' ');\n if (this.mvalues.length > 0) {\n this.mvalue = this.mvalues.shift();\n }\n this.mvalue.genCSS(context, output);\n if (this.rvalue) {\n output.add(' ' + this.op2 + ' ');\n this.rvalue.genCSS(context, output);\n }\n },\n});\n\nexport default QueryInParens;\n","import Ruleset from './ruleset';\nimport Value from './value';\nimport Selector from './selector';\nimport AtRule from './atrule';\nimport NestableAtRulePrototype from './nested-at-rule';\n\nconst Container = function(value, features, index, currentFileInfo, visibilityInfo) {\n this._index = index;\n this._fileInfo = currentFileInfo;\n\n const selectors = (new Selector([], null, null, this._index, this._fileInfo)).createEmptySelectors();\n\n this.features = new Value(features);\n this.rules = [new Ruleset(selectors, value)];\n this.rules[0].allowImports = true;\n this.copyVisibilityInfo(visibilityInfo);\n this.allowRoot = true;\n this.setParent(selectors, this);\n this.setParent(this.features, this);\n this.setParent(this.rules, this);\n};\n\nContainer.prototype = Object.assign(new AtRule(), {\n type: 'Container',\n\n ...NestableAtRulePrototype,\n\n genCSS(context, output) {\n output.add('@container ', this._fileInfo, this._index);\n this.features.genCSS(context, output);\n this.outputRuleset(context, output, this.rules);\n },\n\n eval(context) {\n if (!context.mediaBlocks) {\n context.mediaBlocks = [];\n context.mediaPath = [];\n }\n\n const media = new Container(null, [], this._index, this._fileInfo, this.visibilityInfo());\n if (this.debugInfo) {\n this.rules[0].debugInfo = this.debugInfo;\n media.debugInfo = this.debugInfo;\n }\n \n media.features = this.features.eval(context);\n\n context.mediaPath.push(media);\n context.mediaBlocks.push(media);\n\n this.rules[0].functionRegistry = context.frames[0].functionRegistry.inherit();\n context.frames.unshift(this.rules[0]);\n media.rules = [this.rules[0].eval(context)];\n context.frames.shift();\n\n context.mediaPath.pop();\n\n return context.mediaPath.length === 0 ? media.evalTop(context) :\n media.evalNested(context);\n }\n});\n\nexport default Container;\n","import Node from './node';\n\nconst UnicodeDescriptor = function(value) {\n this.value = value;\n}\n\nUnicodeDescriptor.prototype = Object.assign(new Node(), {\n type: 'UnicodeDescriptor'\n})\n\nexport default UnicodeDescriptor;\n","import Node from './node';\nimport Operation from './operation';\nimport Dimension from './dimension';\n\nconst Negative = function(node) {\n this.value = node;\n};\n\nNegative.prototype = Object.assign(new Node(), {\n type: 'Negative',\n\n genCSS(context, output) {\n output.add('-');\n this.value.genCSS(context, output);\n },\n\n eval(context) {\n if (context.isMathOn()) {\n return (new Operation('*', [new Dimension(-1), this.value])).eval(context);\n }\n return new Negative(this.value.eval(context));\n }\n});\n\nexport default Negative;\n","import Node from './node';\nimport Selector from './selector';\n\nconst Extend = function(selector, option, index, currentFileInfo, visibilityInfo) {\n this.selector = selector;\n this.option = option;\n this.object_id = Extend.next_id++;\n this.parent_ids = [this.object_id];\n this._index = index;\n this._fileInfo = currentFileInfo;\n this.copyVisibilityInfo(visibilityInfo);\n this.allowRoot = true;\n\n switch (option) {\n case 'all':\n this.allowBefore = true;\n this.allowAfter = true;\n break;\n default:\n this.allowBefore = false;\n this.allowAfter = false;\n break;\n }\n this.setParent(this.selector, this);\n};\n\nExtend.prototype = Object.assign(new Node(), {\n type: 'Extend',\n\n accept(visitor) {\n this.selector = visitor.visit(this.selector);\n },\n\n eval(context) {\n return new Extend(this.selector.eval(context), this.option, this.getIndex(), this.fileInfo(), this.visibilityInfo());\n },\n\n // remove when Nodes have JSDoc types\n // eslint-disable-next-line no-unused-vars\n clone(context) {\n return new Extend(this.selector, this.option, this.getIndex(), this.fileInfo(), this.visibilityInfo());\n },\n\n // it concatenates (joins) all selectors in selector array\n findSelfSelectors(selectors) {\n let selfElements = [], i, selectorElements;\n\n for (i = 0; i < selectors.length; i++) {\n selectorElements = selectors[i].elements;\n // duplicate the logic in genCSS function inside the selector node.\n // future TODO - move both logics into the selector joiner visitor\n if (i > 0 && selectorElements.length && selectorElements[0].combinator.value === '') {\n selectorElements[0].combinator.value = ' ';\n }\n selfElements = selfElements.concat(selectors[i].elements);\n }\n\n this.selfSelectors = [new Selector(selfElements)];\n this.selfSelectors[0].copyVisibilityInfo(this.visibilityInfo());\n }\n});\n\nExtend.next_id = 0;\nexport default Extend;\n","import Node from './node';\nimport Variable from './variable';\nimport Ruleset from './ruleset';\nimport DetachedRuleset from './detached-ruleset';\nimport LessError from '../less-error';\n\nconst VariableCall = function(variable, index, currentFileInfo) {\n this.variable = variable;\n this._index = index;\n this._fileInfo = currentFileInfo;\n this.allowRoot = true;\n};\n\nVariableCall.prototype = Object.assign(new Node(), {\n type: 'VariableCall',\n\n eval(context) {\n let rules;\n let detachedRuleset = new Variable(this.variable, this.getIndex(), this.fileInfo()).eval(context);\n const error = new LessError({message: `Could not evaluate variable call ${this.variable}`});\n\n if (!detachedRuleset.ruleset) {\n if (detachedRuleset.rules) {\n rules = detachedRuleset;\n }\n else if (Array.isArray(detachedRuleset)) {\n rules = new Ruleset('', detachedRuleset);\n }\n else if (Array.isArray(detachedRuleset.value)) {\n rules = new Ruleset('', detachedRuleset.value);\n }\n else {\n throw error;\n }\n detachedRuleset = new DetachedRuleset(rules);\n }\n\n if (detachedRuleset.ruleset) {\n return detachedRuleset.callEval(context);\n }\n throw error;\n }\n});\n\nexport default VariableCall;\n","import Node from './node';\nimport Variable from './variable';\nimport Ruleset from './ruleset';\nimport Selector from './selector';\n\nconst NamespaceValue = function(ruleCall, lookups, index, fileInfo) {\n this.value = ruleCall;\n this.lookups = lookups;\n this._index = index;\n this._fileInfo = fileInfo;\n};\n\nNamespaceValue.prototype = Object.assign(new Node(), {\n type: 'NamespaceValue',\n\n eval(context) {\n let i, name, rules = this.value.eval(context);\n \n for (i = 0; i < this.lookups.length; i++) {\n name = this.lookups[i];\n\n /**\n * Eval'd DRs return rulesets.\n * Eval'd mixins return rules, so let's make a ruleset if we need it.\n * We need to do this because of late parsing of values\n */\n if (Array.isArray(rules)) {\n rules = new Ruleset([new Selector()], rules);\n }\n\n if (name === '') {\n rules = rules.lastDeclaration();\n }\n else if (name.charAt(0) === '@') {\n if (name.charAt(1) === '@') {\n name = `@${new Variable(name.substr(1)).eval(context).value}`;\n }\n if (rules.variables) {\n rules = rules.variable(name);\n }\n \n if (!rules) {\n throw { type: 'Name',\n message: `variable ${name} not found`,\n filename: this.fileInfo().filename,\n index: this.getIndex() };\n }\n }\n else {\n if (name.substring(0, 2) === '$@') {\n name = `$${new Variable(name.substr(1)).eval(context).value}`;\n }\n else {\n name = name.charAt(0) === '$' ? name : `$${name}`;\n }\n if (rules.properties) {\n rules = rules.property(name);\n }\n \n if (!rules) {\n throw { type: 'Name',\n message: `property \"${name.substr(1)}\" not found`,\n filename: this.fileInfo().filename,\n index: this.getIndex() };\n }\n // Properties are an array of values, since a ruleset can have multiple props.\n // We pick the last one (the \"cascaded\" value)\n rules = rules[rules.length - 1];\n }\n\n if (rules.value) {\n rules = rules.eval(context).value;\n }\n if (rules.ruleset) {\n rules = rules.ruleset.eval(context);\n }\n }\n return rules;\n }\n});\n\nexport default NamespaceValue;\n","import Selector from './selector';\nimport Element from './element';\nimport Ruleset from './ruleset';\nimport Declaration from './declaration';\nimport DetachedRuleset from './detached-ruleset';\nimport Expression from './expression';\nimport contexts from '../contexts';\nimport * as utils from '../utils';\n\nconst Definition = function(name, params, rules, condition, variadic, frames, visibilityInfo) {\n this.name = name || 'anonymous mixin';\n this.selectors = [new Selector([new Element(null, name, false, this._index, this._fileInfo)])];\n this.params = params;\n this.condition = condition;\n this.variadic = variadic;\n this.arity = params.length;\n this.rules = rules;\n this._lookups = {};\n const optionalParameters = [];\n this.required = params.reduce(function (count, p) {\n if (!p.name || (p.name && !p.value)) {\n return count + 1;\n }\n else {\n optionalParameters.push(p.name);\n return count;\n }\n }, 0);\n this.optionalParameters = optionalParameters;\n this.frames = frames;\n this.copyVisibilityInfo(visibilityInfo);\n this.allowRoot = true;\n}\n\nDefinition.prototype = Object.assign(new Ruleset(), {\n type: 'MixinDefinition',\n evalFirst: true,\n\n accept(visitor) {\n if (this.params && this.params.length) {\n this.params = visitor.visitArray(this.params);\n }\n this.rules = visitor.visitArray(this.rules);\n if (this.condition) {\n this.condition = visitor.visit(this.condition);\n }\n },\n\n evalParams(context, mixinEnv, args, evaldArguments) {\n /* jshint boss:true */\n const frame = new Ruleset(null, null);\n\n let varargs;\n let arg;\n const params = utils.copyArray(this.params);\n let i;\n let j;\n let val;\n let name;\n let isNamedFound;\n let argIndex;\n let argsLength = 0;\n\n if (mixinEnv.frames && mixinEnv.frames[0] && mixinEnv.frames[0].functionRegistry) {\n frame.functionRegistry = mixinEnv.frames[0].functionRegistry.inherit();\n }\n mixinEnv = new contexts.Eval(mixinEnv, [frame].concat(mixinEnv.frames));\n\n if (args) {\n args = utils.copyArray(args);\n argsLength = args.length;\n\n for (i = 0; i < argsLength; i++) {\n arg = args[i];\n if (name = (arg && arg.name)) {\n isNamedFound = false;\n for (j = 0; j < params.length; j++) {\n if (!evaldArguments[j] && name === params[j].name) {\n evaldArguments[j] = arg.value.eval(context);\n frame.prependRule(new Declaration(name, arg.value.eval(context)));\n isNamedFound = true;\n break;\n }\n }\n if (isNamedFound) {\n args.splice(i, 1);\n i--;\n continue;\n } else {\n throw { type: 'Runtime', message: `Named argument for ${this.name} ${args[i].name} not found` };\n }\n }\n }\n }\n argIndex = 0;\n for (i = 0; i < params.length; i++) {\n if (evaldArguments[i]) { continue; }\n\n arg = args && args[argIndex];\n\n if (name = params[i].name) {\n if (params[i].variadic) {\n varargs = [];\n for (j = argIndex; j < argsLength; j++) {\n varargs.push(args[j].value.eval(context));\n }\n frame.prependRule(new Declaration(name, new Expression(varargs).eval(context)));\n } else {\n val = arg && arg.value;\n if (val) {\n // This was a mixin call, pass in a detached ruleset of it's eval'd rules\n if (Array.isArray(val)) {\n val = new DetachedRuleset(new Ruleset('', val));\n }\n else {\n val = val.eval(context);\n }\n } else if (params[i].value) {\n val = params[i].value.eval(mixinEnv);\n frame.resetCache();\n } else {\n throw { type: 'Runtime', message: `wrong number of arguments for ${this.name} (${argsLength} for ${this.arity})` };\n }\n\n frame.prependRule(new Declaration(name, val));\n evaldArguments[i] = val;\n }\n }\n\n if (params[i].variadic && args) {\n for (j = argIndex; j < argsLength; j++) {\n evaldArguments[j] = args[j].value.eval(context);\n }\n }\n argIndex++;\n }\n\n return frame;\n },\n\n makeImportant() {\n const rules = !this.rules ? this.rules : this.rules.map(function (r) {\n if (r.makeImportant) {\n return r.makeImportant(true);\n } else {\n return r;\n }\n });\n const result = new Definition(this.name, this.params, rules, this.condition, this.variadic, this.frames);\n return result;\n },\n\n eval(context) {\n return new Definition(this.name, this.params, this.rules, this.condition, this.variadic, this.frames || utils.copyArray(context.frames));\n },\n\n evalCall(context, args, important) {\n const _arguments = [];\n const mixinFrames = this.frames ? this.frames.concat(context.frames) : context.frames;\n const frame = this.evalParams(context, new contexts.Eval(context, mixinFrames), args, _arguments);\n let rules;\n let ruleset;\n\n frame.prependRule(new Declaration('@arguments', new Expression(_arguments).eval(context)));\n\n rules = utils.copyArray(this.rules);\n\n ruleset = new Ruleset(null, rules);\n ruleset.originalRuleset = this;\n ruleset = ruleset.eval(new contexts.Eval(context, [this, frame].concat(mixinFrames)));\n if (important) {\n ruleset = ruleset.makeImportant();\n }\n return ruleset;\n },\n\n matchCondition(args, context) {\n if (this.condition && !this.condition.eval(\n new contexts.Eval(context,\n [this.evalParams(context, /* the parameter variables */\n new contexts.Eval(context, this.frames ? this.frames.concat(context.frames) : context.frames), args, [])]\n .concat(this.frames || []) // the parent namespace/mixin frames\n .concat(context.frames)))) { // the current environment frames\n return false;\n }\n return true;\n },\n\n matchArgs(args, context) {\n const allArgsCnt = (args && args.length) || 0;\n let len;\n const optionalParameters = this.optionalParameters;\n const requiredArgsCnt = !args ? 0 : args.reduce(function (count, p) {\n if (optionalParameters.indexOf(p.name) < 0) {\n return count + 1;\n } else {\n return count;\n }\n }, 0);\n\n if (!this.variadic) {\n if (requiredArgsCnt < this.required) {\n return false;\n }\n if (allArgsCnt > this.params.length) {\n return false;\n }\n } else {\n if (requiredArgsCnt < (this.required - 1)) {\n return false;\n }\n }\n\n // check patterns\n len = Math.min(requiredArgsCnt, this.arity);\n\n for (let i = 0; i < len; i++) {\n if (!this.params[i].name && !this.params[i].variadic) {\n if (args[i].value.eval(context).toCSS() != this.params[i].value.eval(context).toCSS()) {\n return false;\n }\n }\n }\n return true;\n }\n});\n\nexport default Definition;\n","import Node from './node';\nimport Selector from './selector';\nimport MixinDefinition from './mixin-definition';\nimport defaultFunc from '../functions/default';\n\nconst MixinCall = function(elements, args, index, currentFileInfo, important) {\n this.selector = new Selector(elements);\n this.arguments = args || [];\n this._index = index;\n this._fileInfo = currentFileInfo;\n this.important = important;\n this.allowRoot = true;\n this.setParent(this.selector, this);\n};\n\nMixinCall.prototype = Object.assign(new Node(), {\n type: 'MixinCall',\n\n accept(visitor) {\n if (this.selector) {\n this.selector = visitor.visit(this.selector);\n }\n if (this.arguments.length) {\n this.arguments = visitor.visitArray(this.arguments);\n }\n },\n\n eval(context) {\n let mixins;\n let mixin;\n let mixinPath;\n const args = [];\n let arg;\n let argValue;\n const rules = [];\n let match = false;\n let i;\n let m;\n let f;\n let isRecursive;\n let isOneFound;\n const candidates = [];\n let candidate;\n const conditionResult = [];\n let defaultResult;\n const defFalseEitherCase = -1;\n const defNone = 0;\n const defTrue = 1;\n const defFalse = 2;\n let count;\n let originalRuleset;\n let noArgumentsFilter;\n\n this.selector = this.selector.eval(context);\n\n function calcDefGroup(mixin, mixinPath) {\n let f, p, namespace;\n\n for (f = 0; f < 2; f++) {\n conditionResult[f] = true;\n defaultFunc.value(f);\n for (p = 0; p < mixinPath.length && conditionResult[f]; p++) {\n namespace = mixinPath[p];\n if (namespace.matchCondition) {\n conditionResult[f] = conditionResult[f] && namespace.matchCondition(null, context);\n }\n }\n if (mixin.matchCondition) {\n conditionResult[f] = conditionResult[f] && mixin.matchCondition(args, context);\n }\n }\n if (conditionResult[0] || conditionResult[1]) {\n if (conditionResult[0] != conditionResult[1]) {\n return conditionResult[1] ?\n defTrue : defFalse;\n }\n\n return defNone;\n }\n return defFalseEitherCase;\n }\n\n for (i = 0; i < this.arguments.length; i++) {\n arg = this.arguments[i];\n argValue = arg.value.eval(context);\n if (arg.expand && Array.isArray(argValue.value)) {\n argValue = argValue.value;\n for (m = 0; m < argValue.length; m++) {\n args.push({value: argValue[m]});\n }\n } else {\n args.push({name: arg.name, value: argValue});\n }\n }\n\n noArgumentsFilter = function(rule) {return rule.matchArgs(null, context);};\n\n for (i = 0; i < context.frames.length; i++) {\n if ((mixins = context.frames[i].find(this.selector, null, noArgumentsFilter)).length > 0) {\n isOneFound = true;\n\n // To make `default()` function independent of definition order we have two \"subpasses\" here.\n // At first we evaluate each guard *twice* (with `default() == true` and `default() == false`),\n // and build candidate list with corresponding flags. Then, when we know all possible matches,\n // we make a final decision.\n\n for (m = 0; m < mixins.length; m++) {\n mixin = mixins[m].rule;\n mixinPath = mixins[m].path;\n isRecursive = false;\n for (f = 0; f < context.frames.length; f++) {\n if ((!(mixin instanceof MixinDefinition)) && mixin === (context.frames[f].originalRuleset || context.frames[f])) {\n isRecursive = true;\n break;\n }\n }\n if (isRecursive) {\n continue;\n }\n\n if (mixin.matchArgs(args, context)) {\n candidate = {mixin, group: calcDefGroup(mixin, mixinPath)};\n\n if (candidate.group !== defFalseEitherCase) {\n candidates.push(candidate);\n }\n\n match = true;\n }\n }\n\n defaultFunc.reset();\n\n count = [0, 0, 0];\n for (m = 0; m < candidates.length; m++) {\n count[candidates[m].group]++;\n }\n\n if (count[defNone] > 0) {\n defaultResult = defFalse;\n } else {\n defaultResult = defTrue;\n if ((count[defTrue] + count[defFalse]) > 1) {\n throw { type: 'Runtime',\n message: `Ambiguous use of \\`default()\\` found when matching for \\`${this.format(args)}\\``,\n index: this.getIndex(), filename: this.fileInfo().filename };\n }\n }\n\n for (m = 0; m < candidates.length; m++) {\n candidate = candidates[m].group;\n if ((candidate === defNone) || (candidate === defaultResult)) {\n try {\n mixin = candidates[m].mixin;\n if (!(mixin instanceof MixinDefinition)) {\n originalRuleset = mixin.originalRuleset || mixin;\n mixin = new MixinDefinition('', [], mixin.rules, null, false, null, originalRuleset.visibilityInfo());\n mixin.originalRuleset = originalRuleset;\n }\n const newRules = mixin.evalCall(context, args, this.important).rules;\n this._setVisibilityToReplacement(newRules);\n Array.prototype.push.apply(rules, newRules);\n } catch (e) {\n throw { message: e.message, index: this.getIndex(), filename: this.fileInfo().filename, stack: e.stack };\n }\n }\n }\n\n if (match) {\n return rules;\n }\n }\n }\n if (isOneFound) {\n throw { type: 'Runtime',\n message: `No matching definition was found for \\`${this.format(args)}\\``,\n index: this.getIndex(), filename: this.fileInfo().filename };\n } else {\n throw { type: 'Name',\n message: `${this.selector.toCSS().trim()} is undefined`,\n index: this.getIndex(), filename: this.fileInfo().filename };\n }\n },\n\n _setVisibilityToReplacement(replacement) {\n let i, rule;\n if (this.blocksVisibility()) {\n for (i = 0; i < replacement.length; i++) {\n rule = replacement[i];\n rule.addVisibilityBlock();\n }\n }\n },\n\n format(args) {\n return `${this.selector.toCSS().trim()}(${args ? args.map(function (a) {\n let argValue = '';\n if (a.name) {\n argValue += `${a.name}:`;\n }\n if (a.value.toCSS) {\n argValue += a.value.toCSS();\n } else {\n argValue += '???';\n }\n return argValue;\n }).join(', ') : ''})`;\n }\n});\n\nexport default MixinCall;\n","import Node from './node';\nimport Color from './color';\nimport AtRule from './atrule';\nimport DetachedRuleset from './detached-ruleset';\nimport Operation from './operation';\nimport Dimension from './dimension';\nimport Unit from './unit';\nimport Keyword from './keyword';\nimport Variable from './variable';\nimport Property from './property';\nimport Ruleset from './ruleset';\nimport Element from './element';\nimport Attribute from './attribute';\nimport Combinator from './combinator';\nimport Selector from './selector';\nimport Quoted from './quoted';\nimport Expression from './expression';\nimport Declaration from './declaration';\nimport Call from './call';\nimport URL from './url';\nimport Import from './import';\nimport Comment from './comment';\nimport Anonymous from './anonymous';\nimport Value from './value';\nimport JavaScript from './javascript';\nimport Assignment from './assignment';\nimport Condition from './condition';\nimport QueryInParens from './query-in-parens';\nimport Paren from './paren';\nimport Media from './media';\nimport Container from './container';\nimport UnicodeDescriptor from './unicode-descriptor';\nimport Negative from './negative';\nimport Extend from './extend';\nimport VariableCall from './variable-call';\nimport NamespaceValue from './namespace-value';\n\n// mixins\nimport MixinCall from './mixin-call';\nimport MixinDefinition from './mixin-definition';\n\nexport default {\n Node, Color, AtRule, DetachedRuleset, Operation,\n Dimension, Unit, Keyword, Variable, Property,\n Ruleset, Element, Attribute, Combinator, Selector,\n Quoted, Expression, Declaration, Call, URL, Import,\n Comment, Anonymous, Value, JavaScript, Assignment,\n Condition, Paren, Media, Container, QueryInParens, \n UnicodeDescriptor, Negative, Extend, VariableCall, \n NamespaceValue,\n mixin: {\n Call: MixinCall,\n Definition: MixinDefinition\n }\n};","class AbstractFileManager {\n getPath(filename) {\n let j = filename.lastIndexOf('?');\n if (j > 0) {\n filename = filename.slice(0, j);\n }\n j = filename.lastIndexOf('/');\n if (j < 0) {\n j = filename.lastIndexOf('\\\\');\n }\n if (j < 0) {\n return '';\n }\n return filename.slice(0, j + 1);\n }\n\n tryAppendExtension(path, ext) {\n return /(\\.[a-z]*$)|([?;].*)$/.test(path) ? path : path + ext;\n }\n\n tryAppendLessExtension(path) {\n return this.tryAppendExtension(path, '.less');\n }\n\n supportsSync() {\n return false;\n }\n\n alwaysMakePathsAbsolute() {\n return false;\n }\n\n isPathAbsolute(filename) {\n return (/^(?:[a-z-]+:|\\/|\\\\|#)/i).test(filename);\n }\n\n // TODO: pull out / replace?\n join(basePath, laterPath) {\n if (!basePath) {\n return laterPath;\n }\n return basePath + laterPath;\n }\n\n pathDiff(url, baseUrl) {\n // diff between two paths to create a relative path\n\n const urlParts = this.extractUrlParts(url);\n\n const baseUrlParts = this.extractUrlParts(baseUrl);\n let i;\n let max;\n let urlDirectories;\n let baseUrlDirectories;\n let diff = '';\n if (urlParts.hostPart !== baseUrlParts.hostPart) {\n return '';\n }\n max = Math.max(baseUrlParts.directories.length, urlParts.directories.length);\n for (i = 0; i < max; i++) {\n if (baseUrlParts.directories[i] !== urlParts.directories[i]) { break; }\n }\n baseUrlDirectories = baseUrlParts.directories.slice(i);\n urlDirectories = urlParts.directories.slice(i);\n for (i = 0; i < baseUrlDirectories.length - 1; i++) {\n diff += '../';\n }\n for (i = 0; i < urlDirectories.length - 1; i++) {\n diff += `${urlDirectories[i]}/`;\n }\n return diff;\n }\n\n /**\n * Helper function, not part of API.\n * This should be replaceable by newer Node / Browser APIs\n * \n * @param {string} url \n * @param {string} baseUrl\n */\n extractUrlParts(url, baseUrl) {\n // urlParts[1] = protocol://hostname/ OR /\n // urlParts[2] = / if path relative to host base\n // urlParts[3] = directories\n // urlParts[4] = filename\n // urlParts[5] = parameters\n\n const urlPartsRegex = /^((?:[a-z-]+:)?\\/{2}(?:[^/?#]*\\/)|([/\\\\]))?((?:[^/\\\\?#]*[/\\\\])*)([^/\\\\?#]*)([#?].*)?$/i;\n\n const urlParts = url.match(urlPartsRegex);\n const returner = {};\n let rawDirectories = [];\n const directories = [];\n let i;\n let baseUrlParts;\n\n if (!urlParts) {\n throw new Error(`Could not parse sheet href - '${url}'`);\n }\n\n // Stylesheets in IE don't always return the full path\n if (baseUrl && (!urlParts[1] || urlParts[2])) {\n baseUrlParts = baseUrl.match(urlPartsRegex);\n if (!baseUrlParts) {\n throw new Error(`Could not parse page url - '${baseUrl}'`);\n }\n urlParts[1] = urlParts[1] || baseUrlParts[1] || '';\n if (!urlParts[2]) {\n urlParts[3] = baseUrlParts[3] + urlParts[3];\n }\n }\n\n if (urlParts[3]) {\n rawDirectories = urlParts[3].replace(/\\\\/g, '/').split('/');\n\n // collapse '..' and skip '.'\n for (i = 0; i < rawDirectories.length; i++) {\n\n if (rawDirectories[i] === '..') {\n directories.pop();\n }\n else if (rawDirectories[i] !== '.') {\n directories.push(rawDirectories[i]);\n }\n \n }\n }\n\n returner.hostPart = urlParts[1];\n returner.directories = directories;\n returner.rawPath = (urlParts[1] || '') + rawDirectories.join('/');\n returner.path = (urlParts[1] || '') + directories.join('/');\n returner.filename = urlParts[4];\n returner.fileUrl = returner.path + (urlParts[4] || '');\n returner.url = returner.fileUrl + (urlParts[5] || '');\n return returner;\n }\n}\n\nexport default AbstractFileManager;\n","import functionRegistry from '../functions/function-registry';\nimport LessError from '../less-error';\n\nclass AbstractPluginLoader {\n constructor() {\n // Implemented by Node.js plugin loader\n this.require = function() {\n return null;\n }\n }\n\n evalPlugin(contents, context, imports, pluginOptions, fileInfo) {\n\n let loader, registry, pluginObj, localModule, pluginManager, filename, result;\n\n pluginManager = context.pluginManager;\n\n if (fileInfo) {\n if (typeof fileInfo === 'string') {\n filename = fileInfo;\n }\n else {\n filename = fileInfo.filename;\n }\n }\n const shortname = (new this.less.FileManager()).extractUrlParts(filename).filename;\n\n if (filename) {\n pluginObj = pluginManager.get(filename);\n\n if (pluginObj) {\n result = this.trySetOptions(pluginObj, filename, shortname, pluginOptions);\n if (result) {\n return result;\n }\n try {\n if (pluginObj.use) {\n pluginObj.use.call(this.context, pluginObj);\n }\n }\n catch (e) {\n e.message = e.message || 'Error during @plugin call';\n return new LessError(e, imports, filename);\n }\n return pluginObj;\n }\n }\n localModule = {\n exports: {},\n pluginManager,\n fileInfo\n };\n registry = functionRegistry.create();\n\n const registerPlugin = function(obj) {\n pluginObj = obj;\n };\n\n try {\n loader = new Function('module', 'require', 'registerPlugin', 'functions', 'tree', 'less', 'fileInfo', contents);\n loader(localModule, this.require(filename), registerPlugin, registry, this.less.tree, this.less, fileInfo);\n }\n catch (e) {\n return new LessError(e, imports, filename);\n }\n\n if (!pluginObj) {\n pluginObj = localModule.exports;\n }\n pluginObj = this.validatePlugin(pluginObj, filename, shortname);\n\n if (pluginObj instanceof LessError) {\n return pluginObj;\n }\n\n if (pluginObj) {\n pluginObj.imports = imports;\n pluginObj.filename = filename;\n\n // For < 3.x (or unspecified minVersion) - setOptions() before install()\n if (!pluginObj.minVersion || this.compareVersion('3.0.0', pluginObj.minVersion) < 0) {\n result = this.trySetOptions(pluginObj, filename, shortname, pluginOptions);\n\n if (result) {\n return result;\n }\n }\n\n // Run on first load\n pluginManager.addPlugin(pluginObj, fileInfo.filename, registry);\n pluginObj.functions = registry.getLocalFunctions();\n\n // Need to call setOptions again because the pluginObj might have functions\n result = this.trySetOptions(pluginObj, filename, shortname, pluginOptions);\n if (result) {\n return result;\n }\n\n // Run every @plugin call\n try {\n if (pluginObj.use) {\n pluginObj.use.call(this.context, pluginObj);\n }\n }\n catch (e) {\n e.message = e.message || 'Error during @plugin call';\n return new LessError(e, imports, filename);\n }\n\n }\n else {\n return new LessError({ message: 'Not a valid plugin' }, imports, filename);\n }\n\n return pluginObj;\n\n }\n\n trySetOptions(plugin, filename, name, options) {\n if (options && !plugin.setOptions) {\n return new LessError({\n message: `Options have been provided but the plugin ${name} does not support any options.`\n });\n }\n try {\n plugin.setOptions && plugin.setOptions(options);\n }\n catch (e) {\n return new LessError(e);\n }\n }\n\n validatePlugin(plugin, filename, name) {\n if (plugin) {\n // support plugins being a function\n // so that the plugin can be more usable programmatically\n if (typeof plugin === 'function') {\n plugin = new plugin();\n }\n\n if (plugin.minVersion) {\n if (this.compareVersion(plugin.minVersion, this.less.version) < 0) {\n return new LessError({\n message: `Plugin ${name} requires version ${this.versionToString(plugin.minVersion)}`\n });\n }\n }\n return plugin;\n }\n return null;\n }\n\n compareVersion(aVersion, bVersion) {\n if (typeof aVersion === 'string') {\n aVersion = aVersion.match(/^(\\d+)\\.?(\\d+)?\\.?(\\d+)?/);\n aVersion.shift();\n }\n for (let i = 0; i < aVersion.length; i++) {\n if (aVersion[i] !== bVersion[i]) {\n return parseInt(aVersion[i]) > parseInt(bVersion[i]) ? -1 : 1;\n }\n }\n return 0;\n }\n\n versionToString(version) {\n let versionString = '';\n for (let i = 0; i < version.length; i++) {\n versionString += (versionString ? '.' : '') + version[i];\n }\n return versionString;\n }\n\n printUsage(plugins) {\n for (let i = 0; i < plugins.length; i++) {\n const plugin = plugins[i];\n if (plugin.printUsage) {\n plugin.printUsage();\n }\n }\n }\n}\n\nexport default AbstractPluginLoader;\n\n","import Anonymous from '../tree/anonymous';\nimport Keyword from '../tree/keyword';\n\nfunction boolean(condition) {\n return condition ? Keyword.True : Keyword.False;\n}\n\n/**\n * Functions with evalArgs set to false are sent context\n * as the first argument.\n */\nfunction If(context, condition, trueValue, falseValue) {\n return condition.eval(context) ? trueValue.eval(context)\n : (falseValue ? falseValue.eval(context) : new Anonymous);\n}\nIf.evalArgs = false;\n\nfunction isdefined(context, variable) {\n try {\n variable.eval(context);\n return Keyword.True;\n } catch (e) {\n return Keyword.False;\n }\n}\n\nisdefined.evalArgs = false;\n\nexport default { isdefined, boolean, 'if': If };\n","import Dimension from '../tree/dimension';\nimport Color from '../tree/color';\nimport Quoted from '../tree/quoted';\nimport Anonymous from '../tree/anonymous';\nimport Expression from '../tree/expression';\nimport Operation from '../tree/operation';\nlet colorFunctions;\n\nfunction clamp(val) {\n return Math.min(1, Math.max(0, val));\n}\nfunction hsla(origColor, hsl) {\n const color = colorFunctions.hsla(hsl.h, hsl.s, hsl.l, hsl.a);\n if (color) {\n if (origColor.value && \n /^(rgb|hsl)/.test(origColor.value)) {\n color.value = origColor.value;\n } else {\n color.value = 'rgb';\n }\n return color;\n }\n}\nfunction toHSL(color) {\n if (color.toHSL) {\n return color.toHSL();\n } else {\n throw new Error('Argument cannot be evaluated to a color');\n }\n}\n\nfunction toHSV(color) {\n if (color.toHSV) {\n return color.toHSV();\n } else {\n throw new Error('Argument cannot be evaluated to a color');\n }\n}\n\nfunction number(n) {\n if (n instanceof Dimension) {\n return parseFloat(n.unit.is('%') ? n.value / 100 : n.value);\n } else if (typeof n === 'number') {\n return n;\n } else {\n throw {\n type: 'Argument',\n message: 'color functions take numbers as parameters'\n };\n }\n}\nfunction scaled(n, size) {\n if (n instanceof Dimension && n.unit.is('%')) {\n return parseFloat(n.value * size / 100);\n } else {\n return number(n);\n }\n}\ncolorFunctions = {\n rgb: function (r, g, b) {\n let a = 1\n /**\n * Comma-less syntax\n * e.g. rgb(0 128 255 / 50%)\n */\n if (r instanceof Expression) {\n const val = r.value\n r = val[0]\n g = val[1]\n b = val[2]\n /** \n * @todo - should this be normalized in\n * function caller? Or parsed differently?\n */\n if (b instanceof Operation) {\n const op = b\n b = op.operands[0]\n a = op.operands[1]\n }\n }\n const color = colorFunctions.rgba(r, g, b, a);\n if (color) {\n color.value = 'rgb';\n return color;\n }\n },\n rgba: function (r, g, b, a) {\n try {\n if (r instanceof Color) {\n if (g) {\n a = number(g);\n } else {\n a = r.alpha;\n }\n return new Color(r.rgb, a, 'rgba');\n }\n const rgb = [r, g, b].map(c => scaled(c, 255));\n a = number(a);\n return new Color(rgb, a, 'rgba');\n }\n catch (e) {}\n },\n hsl: function (h, s, l) {\n let a = 1\n if (h instanceof Expression) {\n const val = h.value\n h = val[0]\n s = val[1]\n l = val[2]\n\n if (l instanceof Operation) {\n const op = l\n l = op.operands[0]\n a = op.operands[1]\n }\n }\n const color = colorFunctions.hsla(h, s, l, a);\n if (color) {\n color.value = 'hsl';\n return color;\n }\n },\n hsla: function (h, s, l, a) {\n let m1;\n let m2;\n\n function hue(h) {\n h = h < 0 ? h + 1 : (h > 1 ? h - 1 : h);\n if (h * 6 < 1) {\n return m1 + (m2 - m1) * h * 6;\n }\n else if (h * 2 < 1) {\n return m2;\n }\n else if (h * 3 < 2) {\n return m1 + (m2 - m1) * (2 / 3 - h) * 6;\n }\n else {\n return m1;\n }\n }\n\n try {\n if (h instanceof Color) {\n if (s) {\n a = number(s);\n } else {\n a = h.alpha;\n }\n return new Color(h.rgb, a, 'hsla');\n }\n\n h = (number(h) % 360) / 360;\n s = clamp(number(s));l = clamp(number(l));a = clamp(number(a));\n\n m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\n m1 = l * 2 - m2;\n\n const rgb = [\n hue(h + 1 / 3) * 255,\n hue(h) * 255,\n hue(h - 1 / 3) * 255\n ];\n a = number(a);\n return new Color(rgb, a, 'hsla');\n }\n catch (e) {}\n },\n\n hsv: function(h, s, v) {\n return colorFunctions.hsva(h, s, v, 1.0);\n },\n\n hsva: function(h, s, v, a) {\n h = ((number(h) % 360) / 360) * 360;\n s = number(s);v = number(v);a = number(a);\n\n let i;\n let f;\n i = Math.floor((h / 60) % 6);\n f = (h / 60) - i;\n\n const vs = [v,\n v * (1 - s),\n v * (1 - f * s),\n v * (1 - (1 - f) * s)];\n const perm = [[0, 3, 1],\n [2, 0, 1],\n [1, 0, 3],\n [1, 2, 0],\n [3, 1, 0],\n [0, 1, 2]];\n\n return colorFunctions.rgba(vs[perm[i][0]] * 255,\n vs[perm[i][1]] * 255,\n vs[perm[i][2]] * 255,\n a);\n },\n\n hue: function (color) {\n return new Dimension(toHSL(color).h);\n },\n saturation: function (color) {\n return new Dimension(toHSL(color).s * 100, '%');\n },\n lightness: function (color) {\n return new Dimension(toHSL(color).l * 100, '%');\n },\n hsvhue: function(color) {\n return new Dimension(toHSV(color).h);\n },\n hsvsaturation: function (color) {\n return new Dimension(toHSV(color).s * 100, '%');\n },\n hsvvalue: function (color) {\n return new Dimension(toHSV(color).v * 100, '%');\n },\n red: function (color) {\n return new Dimension(color.rgb[0]);\n },\n green: function (color) {\n return new Dimension(color.rgb[1]);\n },\n blue: function (color) {\n return new Dimension(color.rgb[2]);\n },\n alpha: function (color) {\n return new Dimension(toHSL(color).a);\n },\n luma: function (color) {\n return new Dimension(color.luma() * color.alpha * 100, '%');\n },\n luminance: function (color) {\n const luminance =\n (0.2126 * color.rgb[0] / 255) +\n (0.7152 * color.rgb[1] / 255) +\n (0.0722 * color.rgb[2] / 255);\n\n return new Dimension(luminance * color.alpha * 100, '%');\n },\n saturate: function (color, amount, method) {\n // filter: saturate(3.2);\n // should be kept as is, so check for color\n if (!color.rgb) {\n return null;\n }\n const hsl = toHSL(color);\n\n if (typeof method !== 'undefined' && method.value === 'relative') {\n hsl.s += hsl.s * amount.value / 100;\n }\n else {\n hsl.s += amount.value / 100;\n }\n hsl.s = clamp(hsl.s);\n return hsla(color, hsl);\n },\n desaturate: function (color, amount, method) {\n const hsl = toHSL(color);\n\n if (typeof method !== 'undefined' && method.value === 'relative') {\n hsl.s -= hsl.s * amount.value / 100;\n }\n else {\n hsl.s -= amount.value / 100;\n }\n hsl.s = clamp(hsl.s);\n return hsla(color, hsl);\n },\n lighten: function (color, amount, method) {\n const hsl = toHSL(color);\n\n if (typeof method !== 'undefined' && method.value === 'relative') {\n hsl.l += hsl.l * amount.value / 100;\n }\n else {\n hsl.l += amount.value / 100;\n }\n hsl.l = clamp(hsl.l);\n return hsla(color, hsl);\n },\n darken: function (color, amount, method) {\n const hsl = toHSL(color);\n\n if (typeof method !== 'undefined' && method.value === 'relative') {\n hsl.l -= hsl.l * amount.value / 100;\n }\n else {\n hsl.l -= amount.value / 100;\n }\n hsl.l = clamp(hsl.l);\n return hsla(color, hsl);\n },\n fadein: function (color, amount, method) {\n const hsl = toHSL(color);\n\n if (typeof method !== 'undefined' && method.value === 'relative') {\n hsl.a += hsl.a * amount.value / 100;\n }\n else {\n hsl.a += amount.value / 100;\n }\n hsl.a = clamp(hsl.a);\n return hsla(color, hsl);\n },\n fadeout: function (color, amount, method) {\n const hsl = toHSL(color);\n\n if (typeof method !== 'undefined' && method.value === 'relative') {\n hsl.a -= hsl.a * amount.value / 100;\n }\n else {\n hsl.a -= amount.value / 100;\n }\n hsl.a = clamp(hsl.a);\n return hsla(color, hsl);\n },\n fade: function (color, amount) {\n const hsl = toHSL(color);\n\n hsl.a = amount.value / 100;\n hsl.a = clamp(hsl.a);\n return hsla(color, hsl);\n },\n spin: function (color, amount) {\n const hsl = toHSL(color);\n const hue = (hsl.h + amount.value) % 360;\n\n hsl.h = hue < 0 ? 360 + hue : hue;\n\n return hsla(color, hsl);\n },\n //\n // Copyright (c) 2006-2009 Hampton Catlin, Natalie Weizenbaum, and Chris Eppstein\n // http://sass-lang.com\n //\n mix: function (color1, color2, weight) {\n if (!weight) {\n weight = new Dimension(50);\n }\n const p = weight.value / 100.0;\n const w = p * 2 - 1;\n const a = toHSL(color1).a - toHSL(color2).a;\n\n const w1 = (((w * a == -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n const w2 = 1 - w1;\n\n const rgb = [color1.rgb[0] * w1 + color2.rgb[0] * w2,\n color1.rgb[1] * w1 + color2.rgb[1] * w2,\n color1.rgb[2] * w1 + color2.rgb[2] * w2];\n\n const alpha = color1.alpha * p + color2.alpha * (1 - p);\n\n return new Color(rgb, alpha);\n },\n greyscale: function (color) {\n return colorFunctions.desaturate(color, new Dimension(100));\n },\n contrast: function (color, dark, light, threshold) {\n // filter: contrast(3.2);\n // should be kept as is, so check for color\n if (!color.rgb) {\n return null;\n }\n if (typeof light === 'undefined') {\n light = colorFunctions.rgba(255, 255, 255, 1.0);\n }\n if (typeof dark === 'undefined') {\n dark = colorFunctions.rgba(0, 0, 0, 1.0);\n }\n // Figure out which is actually light and dark:\n if (dark.luma() > light.luma()) {\n const t = light;\n light = dark;\n dark = t;\n }\n if (typeof threshold === 'undefined') {\n threshold = 0.43;\n } else {\n threshold = number(threshold);\n }\n if (color.luma() < threshold) {\n return light;\n } else {\n return dark;\n }\n },\n // Changes made in 2.7.0 - Reverted in 3.0.0\n // contrast: function (color, color1, color2, threshold) {\n // // Return which of `color1` and `color2` has the greatest contrast with `color`\n // // according to the standard WCAG contrast ratio calculation.\n // // http://www.w3.org/TR/WCAG20/#contrast-ratiodef\n // // The threshold param is no longer used, in line with SASS.\n // // filter: contrast(3.2);\n // // should be kept as is, so check for color\n // if (!color.rgb) {\n // return null;\n // }\n // if (typeof color1 === 'undefined') {\n // color1 = colorFunctions.rgba(0, 0, 0, 1.0);\n // }\n // if (typeof color2 === 'undefined') {\n // color2 = colorFunctions.rgba(255, 255, 255, 1.0);\n // }\n // var contrast1, contrast2;\n // var luma = color.luma();\n // var luma1 = color1.luma();\n // var luma2 = color2.luma();\n // // Calculate contrast ratios for each color\n // if (luma > luma1) {\n // contrast1 = (luma + 0.05) / (luma1 + 0.05);\n // } else {\n // contrast1 = (luma1 + 0.05) / (luma + 0.05);\n // }\n // if (luma > luma2) {\n // contrast2 = (luma + 0.05) / (luma2 + 0.05);\n // } else {\n // contrast2 = (luma2 + 0.05) / (luma + 0.05);\n // }\n // if (contrast1 > contrast2) {\n // return color1;\n // } else {\n // return color2;\n // }\n // },\n argb: function (color) {\n return new Anonymous(color.toARGB());\n },\n color: function(c) {\n if ((c instanceof Quoted) &&\n (/^#([A-Fa-f0-9]{8}|[A-Fa-f0-9]{6}|[A-Fa-f0-9]{3,4})$/i.test(c.value))) {\n const val = c.value.slice(1);\n return new Color(val, undefined, `#${val}`);\n }\n if ((c instanceof Color) || (c = Color.fromKeyword(c.value))) {\n c.value = undefined;\n return c;\n }\n throw {\n type: 'Argument',\n message: 'argument must be a color keyword or 3|4|6|8 digit hex e.g. #FFF'\n };\n },\n tint: function(color, amount) {\n return colorFunctions.mix(colorFunctions.rgb(255, 255, 255), color, amount);\n },\n shade: function(color, amount) {\n return colorFunctions.mix(colorFunctions.rgb(0, 0, 0), color, amount);\n }\n};\n\nexport default colorFunctions;\n","import Color from '../tree/color';\n\n// Color Blending\n// ref: http://www.w3.org/TR/compositing-1\n\nfunction colorBlend(mode, color1, color2) {\n const ab = color1.alpha; // result\n\n let // backdrop\n cb;\n\n const as = color2.alpha;\n\n let // source\n cs;\n\n let ar;\n let cr;\n const r = [];\n\n ar = as + ab * (1 - as);\n for (let i = 0; i < 3; i++) {\n cb = color1.rgb[i] / 255;\n cs = color2.rgb[i] / 255;\n cr = mode(cb, cs);\n if (ar) {\n cr = (as * cs + ab * (cb -\n as * (cb + cs - cr))) / ar;\n }\n r[i] = cr * 255;\n }\n\n return new Color(r, ar);\n}\n\nconst colorBlendModeFunctions = {\n multiply: function(cb, cs) {\n return cb * cs;\n },\n screen: function(cb, cs) {\n return cb + cs - cb * cs;\n },\n overlay: function(cb, cs) {\n cb *= 2;\n return (cb <= 1) ?\n colorBlendModeFunctions.multiply(cb, cs) :\n colorBlendModeFunctions.screen(cb - 1, cs);\n },\n softlight: function(cb, cs) {\n let d = 1;\n let e = cb;\n if (cs > 0.5) {\n e = 1;\n d = (cb > 0.25) ? Math.sqrt(cb)\n : ((16 * cb - 12) * cb + 4) * cb;\n }\n return cb - (1 - 2 * cs) * e * (d - cb);\n },\n hardlight: function(cb, cs) {\n return colorBlendModeFunctions.overlay(cs, cb);\n },\n difference: function(cb, cs) {\n return Math.abs(cb - cs);\n },\n exclusion: function(cb, cs) {\n return cb + cs - 2 * cb * cs;\n },\n\n // non-w3c functions:\n average: function(cb, cs) {\n return (cb + cs) / 2;\n },\n negation: function(cb, cs) {\n return 1 - Math.abs(cb + cs - 1);\n }\n};\n\nfor (const f in colorBlendModeFunctions) {\n // eslint-disable-next-line no-prototype-builtins\n if (colorBlendModeFunctions.hasOwnProperty(f)) {\n colorBlend[f] = colorBlend.bind(null, colorBlendModeFunctions[f]);\n }\n}\n\nexport default colorBlend;\n","import Quoted from '../tree/quoted';\nimport URL from '../tree/url';\nimport * as utils from '../utils';\nimport logger from '../logger';\n\nexport default environment => {\n \n const fallback = (functionThis, node) => new URL(node, functionThis.index, functionThis.currentFileInfo).eval(functionThis.context); \n\n return { 'data-uri': function(mimetypeNode, filePathNode) {\n\n if (!filePathNode) {\n filePathNode = mimetypeNode;\n mimetypeNode = null;\n }\n\n let mimetype = mimetypeNode && mimetypeNode.value;\n let filePath = filePathNode.value;\n const currentFileInfo = this.currentFileInfo;\n const currentDirectory = currentFileInfo.rewriteUrls ?\n currentFileInfo.currentDirectory : currentFileInfo.entryPath;\n\n const fragmentStart = filePath.indexOf('#');\n let fragment = '';\n if (fragmentStart !== -1) {\n fragment = filePath.slice(fragmentStart);\n filePath = filePath.slice(0, fragmentStart);\n }\n const context = utils.clone(this.context);\n context.rawBuffer = true;\n\n const fileManager = environment.getFileManager(filePath, currentDirectory, context, environment, true);\n\n if (!fileManager) {\n return fallback(this, filePathNode);\n }\n\n let useBase64 = false;\n\n // detect the mimetype if not given\n if (!mimetypeNode) {\n\n mimetype = environment.mimeLookup(filePath);\n\n if (mimetype === 'image/svg+xml') {\n useBase64 = false;\n } else {\n // use base 64 unless it's an ASCII or UTF-8 format\n const charset = environment.charsetLookup(mimetype);\n useBase64 = ['US-ASCII', 'UTF-8'].indexOf(charset) < 0;\n }\n if (useBase64) { mimetype += ';base64'; }\n }\n else {\n useBase64 = /;base64$/.test(mimetype);\n }\n\n const fileSync = fileManager.loadFileSync(filePath, currentDirectory, context, environment);\n if (!fileSync.contents) {\n logger.warn(`Skipped data-uri embedding of ${filePath} because file not found`);\n return fallback(this, filePathNode || mimetypeNode);\n }\n let buf = fileSync.contents;\n if (useBase64 && !environment.encodeBase64) {\n return fallback(this, filePathNode);\n }\n\n buf = useBase64 ? environment.encodeBase64(buf) : encodeURIComponent(buf);\n\n const uri = `data:${mimetype},${buf}${fragment}`;\n\n return new URL(new Quoted(`\"${uri}\"`, uri, false, this.index, this.currentFileInfo), this.index, this.currentFileInfo);\n }};\n};\n","import Comment from '../tree/comment';\nimport Node from '../tree/node';\nimport Dimension from '../tree/dimension';\nimport Declaration from '../tree/declaration';\nimport Expression from '../tree/expression';\nimport Ruleset from '../tree/ruleset';\nimport Selector from '../tree/selector';\nimport Element from '../tree/element';\nimport Quote from '../tree/quoted';\nimport Value from '../tree/value';\n\nconst getItemsFromNode = node => {\n // handle non-array values as an array of length 1\n // return 'undefined' if index is invalid\n const items = Array.isArray(node.value) ?\n node.value : Array(node);\n\n return items;\n};\n\nexport default {\n _SELF: function(n) {\n return n;\n },\n '~': function(...expr) {\n if (expr.length === 1) {\n return expr[0];\n }\n return new Value(expr);\n },\n extract: function(values, index) {\n // (1-based index)\n index = index.value - 1;\n\n return getItemsFromNode(values)[index];\n },\n length: function(values) {\n return new Dimension(getItemsFromNode(values).length);\n },\n /**\n * Creates a Less list of incremental values.\n * Modeled after Lodash's range function, also exists natively in PHP\n * \n * @param {Dimension} [start=1]\n * @param {Dimension} end - e.g. 10 or 10px - unit is added to output\n * @param {Dimension} [step=1] \n */\n range: function(start, end, step) {\n let from;\n let to;\n let stepValue = 1;\n const list = [];\n if (end) {\n to = end;\n from = start.value;\n if (step) {\n stepValue = step.value;\n }\n }\n else {\n from = 1;\n to = start;\n }\n\n for (let i = from; i <= to.value; i += stepValue) {\n list.push(new Dimension(i, to.unit));\n }\n\n return new Expression(list);\n },\n each: function(list, rs) {\n const rules = [];\n let newRules;\n let iterator;\n\n const tryEval = val => {\n if (val instanceof Node) {\n return val.eval(this.context);\n }\n return val;\n };\n\n if (list.value && !(list instanceof Quote)) {\n if (Array.isArray(list.value)) {\n iterator = list.value.map(tryEval);\n } else {\n iterator = [tryEval(list.value)];\n }\n } else if (list.ruleset) {\n iterator = tryEval(list.ruleset).rules;\n } else if (list.rules) {\n iterator = list.rules.map(tryEval);\n } else if (Array.isArray(list)) {\n iterator = list.map(tryEval);\n } else {\n iterator = [tryEval(list)];\n }\n\n let valueName = '@value';\n let keyName = '@key';\n let indexName = '@index';\n\n if (rs.params) {\n valueName = rs.params[0] && rs.params[0].name;\n keyName = rs.params[1] && rs.params[1].name;\n indexName = rs.params[2] && rs.params[2].name;\n rs = rs.rules;\n } else {\n rs = rs.ruleset;\n }\n\n for (let i = 0; i < iterator.length; i++) {\n let key;\n let value;\n const item = iterator[i];\n if (item instanceof Declaration) {\n key = typeof item.name === 'string' ? item.name : item.name[0].value;\n value = item.value;\n } else {\n key = new Dimension(i + 1);\n value = item;\n }\n\n if (item instanceof Comment) {\n continue;\n }\n\n newRules = rs.rules.slice(0);\n if (valueName) {\n newRules.push(new Declaration(valueName,\n value,\n false, false, this.index, this.currentFileInfo));\n }\n if (indexName) {\n newRules.push(new Declaration(indexName,\n new Dimension(i + 1),\n false, false, this.index, this.currentFileInfo));\n }\n if (keyName) {\n newRules.push(new Declaration(keyName,\n key,\n false, false, this.index, this.currentFileInfo));\n }\n\n rules.push(new Ruleset([ new(Selector)([ new Element('', '&') ]) ],\n newRules,\n rs.strictImports,\n rs.visibilityInfo()\n ));\n }\n\n return new Ruleset([ new(Selector)([ new Element('', '&') ]) ],\n rules,\n rs.strictImports,\n rs.visibilityInfo()\n ).eval(this.context);\n }\n};\n","import Dimension from '../tree/dimension';\n\nconst MathHelper = (fn, unit, n) => {\n if (!(n instanceof Dimension)) {\n throw { type: 'Argument', message: 'argument must be a number' };\n }\n if (unit === null) {\n unit = n.unit;\n } else {\n n = n.unify();\n }\n return new Dimension(fn(parseFloat(n.value)), unit);\n};\n\nexport default MathHelper;","import mathHelper from './math-helper.js';\n\nconst mathFunctions = {\n // name, unit\n ceil: null,\n floor: null,\n sqrt: null,\n abs: null,\n tan: '',\n sin: '',\n cos: '',\n atan: 'rad',\n asin: 'rad',\n acos: 'rad'\n};\n\nfor (const f in mathFunctions) {\n // eslint-disable-next-line no-prototype-builtins\n if (mathFunctions.hasOwnProperty(f)) {\n mathFunctions[f] = mathHelper.bind(null, Math[f], mathFunctions[f]);\n }\n}\n\nmathFunctions.round = (n, f) => {\n const fraction = typeof f === 'undefined' ? 0 : f.value;\n return mathHelper(num => num.toFixed(fraction), null, n);\n};\n\nexport default mathFunctions;\n","import Dimension from '../tree/dimension';\nimport Anonymous from '../tree/anonymous';\nimport mathHelper from './math-helper.js';\n\nconst minMax = function (isMin, args) {\n args = Array.prototype.slice.call(args);\n switch (args.length) {\n case 0: throw { type: 'Argument', message: 'one or more arguments required' };\n }\n let i; // key is the unit.toString() for unified Dimension values,\n let j;\n let current;\n let currentUnified;\n let referenceUnified;\n let unit;\n let unitStatic;\n let unitClone;\n\n const // elems only contains original argument values.\n order = [];\n\n const values = {};\n // value is the index into the order array.\n for (i = 0; i < args.length; i++) {\n current = args[i];\n if (!(current instanceof Dimension)) {\n if (Array.isArray(args[i].value)) {\n Array.prototype.push.apply(args, Array.prototype.slice.call(args[i].value));\n continue;\n } else {\n throw { type: 'Argument', message: 'incompatible types' };\n }\n }\n currentUnified = current.unit.toString() === '' && unitClone !== undefined ? new Dimension(current.value, unitClone).unify() : current.unify();\n unit = currentUnified.unit.toString() === '' && unitStatic !== undefined ? unitStatic : currentUnified.unit.toString();\n unitStatic = unit !== '' && unitStatic === undefined || unit !== '' && order[0].unify().unit.toString() === '' ? unit : unitStatic;\n unitClone = unit !== '' && unitClone === undefined ? current.unit.toString() : unitClone;\n j = values[''] !== undefined && unit !== '' && unit === unitStatic ? values[''] : values[unit];\n if (j === undefined) {\n if (unitStatic !== undefined && unit !== unitStatic) {\n throw { type: 'Argument', message: 'incompatible types' };\n }\n values[unit] = order.length;\n order.push(current);\n continue;\n }\n referenceUnified = order[j].unit.toString() === '' && unitClone !== undefined ? new Dimension(order[j].value, unitClone).unify() : order[j].unify();\n if ( isMin && currentUnified.value < referenceUnified.value ||\n !isMin && currentUnified.value > referenceUnified.value) {\n order[j] = current;\n }\n }\n if (order.length == 1) {\n return order[0];\n }\n args = order.map(a => { return a.toCSS(this.context); }).join(this.context.compress ? ',' : ', ');\n return new Anonymous(`${isMin ? 'min' : 'max'}(${args})`);\n};\n\nexport default {\n min: function(...args) {\n try {\n return minMax.call(this, true, args);\n } catch (e) {}\n },\n max: function(...args) {\n try {\n return minMax.call(this, false, args);\n } catch (e) {}\n },\n convert: function (val, unit) {\n return val.convertTo(unit.value);\n },\n pi: function () {\n return new Dimension(Math.PI);\n },\n mod: function(a, b) {\n return new Dimension(a.value % b.value, a.unit);\n },\n pow: function(x, y) {\n if (typeof x === 'number' && typeof y === 'number') {\n x = new Dimension(x);\n y = new Dimension(y);\n } else if (!(x instanceof Dimension) || !(y instanceof Dimension)) {\n throw { type: 'Argument', message: 'arguments must be numbers' };\n }\n\n return new Dimension(Math.pow(x.value, y.value), x.unit);\n },\n percentage: function (n) {\n const result = mathHelper(num => num * 100, '%', n);\n\n return result;\n }\n};\n","import Quoted from '../tree/quoted';\nimport Anonymous from '../tree/anonymous';\nimport JavaScript from '../tree/javascript';\n\nexport default {\n e: function (str) {\n return new Quoted('\"', str instanceof JavaScript ? str.evaluated : str.value, true);\n },\n escape: function (str) {\n return new Anonymous(\n encodeURI(str.value).replace(/=/g, '%3D').replace(/:/g, '%3A').replace(/#/g, '%23').replace(/;/g, '%3B')\n .replace(/\\(/g, '%28').replace(/\\)/g, '%29'));\n },\n replace: function (string, pattern, replacement, flags) {\n let result = string.value;\n replacement = (replacement.type === 'Quoted') ?\n replacement.value : replacement.toCSS();\n result = result.replace(new RegExp(pattern.value, flags ? flags.value : ''), replacement);\n return new Quoted(string.quote || '', result, string.escaped);\n },\n '%': function (string /* arg, arg, ... */) {\n const args = Array.prototype.slice.call(arguments, 1);\n let result = string.value;\n\n for (let i = 0; i < args.length; i++) {\n /* jshint loopfunc:true */\n result = result.replace(/%[sda]/i, token => {\n const value = ((args[i].type === 'Quoted') &&\n token.match(/s/i)) ? args[i].value : args[i].toCSS();\n return token.match(/[A-Z]$/) ? encodeURIComponent(value) : value;\n });\n }\n result = result.replace(/%%/g, '%');\n return new Quoted(string.quote || '', result, string.escaped);\n }\n};\n","import Keyword from '../tree/keyword';\nimport DetachedRuleset from '../tree/detached-ruleset';\nimport Dimension from '../tree/dimension';\nimport Color from '../tree/color';\nimport Quoted from '../tree/quoted';\nimport Anonymous from '../tree/anonymous';\nimport URL from '../tree/url';\nimport Operation from '../tree/operation';\n\nconst isa = (n, Type) => (n instanceof Type) ? Keyword.True : Keyword.False;\nconst isunit = (n, unit) => {\n if (unit === undefined) {\n throw { type: 'Argument', message: 'missing the required second argument to isunit.' };\n }\n unit = typeof unit.value === 'string' ? unit.value : unit;\n if (typeof unit !== 'string') {\n throw { type: 'Argument', message: 'Second argument to isunit should be a unit or a string.' };\n }\n return (n instanceof Dimension) && n.unit.is(unit) ? Keyword.True : Keyword.False;\n};\n\nexport default {\n isruleset: function (n) {\n return isa(n, DetachedRuleset);\n },\n iscolor: function (n) {\n return isa(n, Color);\n },\n isnumber: function (n) {\n return isa(n, Dimension);\n },\n isstring: function (n) {\n return isa(n, Quoted);\n },\n iskeyword: function (n) {\n return isa(n, Keyword);\n },\n isurl: function (n) {\n return isa(n, URL);\n },\n ispixel: function (n) {\n return isunit(n, 'px');\n },\n ispercentage: function (n) {\n return isunit(n, '%');\n },\n isem: function (n) {\n return isunit(n, 'em');\n },\n isunit,\n unit: function (val, unit) {\n if (!(val instanceof Dimension)) {\n throw { type: 'Argument',\n message: `the first argument to unit must be a number${val instanceof Operation ? '. Have you forgotten parenthesis?' : ''}` };\n }\n if (unit) {\n if (unit instanceof Keyword) {\n unit = unit.value;\n } else {\n unit = unit.toCSS();\n }\n } else {\n unit = '';\n }\n return new Dimension(val.value, unit);\n },\n 'get-unit': function (n) {\n return new Anonymous(n.unit);\n }\n};\n","import Variable from '../tree/variable';\nimport Anonymous from '../tree/variable';\n\nconst styleExpression = function (args) {\n args = Array.prototype.slice.call(args);\n switch (args.length) {\n case 0: throw { type: 'Argument', message: 'one or more arguments required' };\n }\n \n const entityList = [new Variable(args[0].value, this.index, this.currentFileInfo).eval(this.context)];\n \n args = entityList.map(a => { return a.toCSS(this.context); }).join(this.context.compress ? ',' : ', ');\n \n return new Anonymous(`style(${args})`);\n};\n\nexport default {\n style: function(...args) {\n try {\n return styleExpression.call(this, args);\n } catch (e) {}\n },\n};\n","import functionRegistry from './function-registry';\nimport functionCaller from './function-caller';\n\nimport boolean from './boolean';\nimport defaultFunc from './default';\nimport color from './color';\nimport colorBlending from './color-blending';\nimport dataUri from './data-uri';\nimport list from './list';\nimport math from './math';\nimport number from './number';\nimport string from './string';\nimport svg from './svg';\nimport types from './types';\nimport style from './style';\n\nexport default environment => {\n const functions = { functionRegistry, functionCaller };\n\n // register functions\n functionRegistry.addMultiple(boolean);\n functionRegistry.add('default', defaultFunc.eval.bind(defaultFunc));\n functionRegistry.addMultiple(color);\n functionRegistry.addMultiple(colorBlending);\n functionRegistry.addMultiple(dataUri(environment));\n functionRegistry.addMultiple(list);\n functionRegistry.addMultiple(math);\n functionRegistry.addMultiple(number);\n functionRegistry.addMultiple(string);\n functionRegistry.addMultiple(svg(environment));\n functionRegistry.addMultiple(types);\n functionRegistry.addMultiple(style);\n\n return functions;\n};\n","import Dimension from '../tree/dimension';\nimport Color from '../tree/color';\nimport Expression from '../tree/expression';\nimport Quoted from '../tree/quoted';\nimport URL from '../tree/url';\n\nexport default () => {\n return { 'svg-gradient': function(direction) {\n let stops;\n let gradientDirectionSvg;\n let gradientType = 'linear';\n let rectangleDimension = 'x=\"0\" y=\"0\" width=\"1\" height=\"1\"';\n const renderEnv = {compress: false};\n let returner;\n const directionValue = direction.toCSS(renderEnv);\n let i;\n let color;\n let position;\n let positionValue;\n let alpha;\n\n function throwArgumentDescriptor() {\n throw { type: 'Argument',\n message: 'svg-gradient expects direction, start_color [start_position], [color position,]...,' +\n ' end_color [end_position] or direction, color list' };\n }\n\n if (arguments.length == 2) {\n if (arguments[1].value.length < 2) {\n throwArgumentDescriptor();\n }\n stops = arguments[1].value;\n } else if (arguments.length < 3) {\n throwArgumentDescriptor();\n } else {\n stops = Array.prototype.slice.call(arguments, 1);\n }\n\n switch (directionValue) {\n case 'to bottom':\n gradientDirectionSvg = 'x1=\"0%\" y1=\"0%\" x2=\"0%\" y2=\"100%\"';\n break;\n case 'to right':\n gradientDirectionSvg = 'x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"0%\"';\n break;\n case 'to bottom right':\n gradientDirectionSvg = 'x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"100%\"';\n break;\n case 'to top right':\n gradientDirectionSvg = 'x1=\"0%\" y1=\"100%\" x2=\"100%\" y2=\"0%\"';\n break;\n case 'ellipse':\n case 'ellipse at center':\n gradientType = 'radial';\n gradientDirectionSvg = 'cx=\"50%\" cy=\"50%\" r=\"75%\"';\n rectangleDimension = 'x=\"-50\" y=\"-50\" width=\"101\" height=\"101\"';\n break;\n default:\n throw { type: 'Argument', message: 'svg-gradient direction must be \\'to bottom\\', \\'to right\\',' +\n ' \\'to bottom right\\', \\'to top right\\' or \\'ellipse at center\\'' };\n }\n returner = `<${gradientType}Gradient id=\"g\" ${gradientDirectionSvg}>`;\n\n for (i = 0; i < stops.length; i += 1) {\n if (stops[i] instanceof Expression) {\n color = stops[i].value[0];\n position = stops[i].value[1];\n } else {\n color = stops[i];\n position = undefined;\n }\n\n if (!(color instanceof Color) || (!((i === 0 || i + 1 === stops.length) && position === undefined) && !(position instanceof Dimension))) {\n throwArgumentDescriptor();\n }\n positionValue = position ? position.toCSS(renderEnv) : i === 0 ? '0%' : '100%';\n alpha = color.alpha;\n returner += ` `;\n }\n returner += `${gradientType}Gradient> `;\n\n returner = encodeURIComponent(returner);\n\n returner = `data:image/svg+xml,${returner}`;\n return new URL(new Quoted(`'${returner}'`, returner, false, this.index, this.currentFileInfo), this.index, this.currentFileInfo);\n }};\n};\n","import contexts from './contexts';\nimport visitor from './visitors';\nimport tree from './tree';\n\nexport default function(root, options) {\n options = options || {};\n let evaldRoot;\n let variables = options.variables;\n const evalEnv = new contexts.Eval(options);\n\n //\n // Allows setting variables with a hash, so:\n //\n // `{ color: new tree.Color('#f01') }` will become:\n //\n // new tree.Declaration('@color',\n // new tree.Value([\n // new tree.Expression([\n // new tree.Color('#f01')\n // ])\n // ])\n // )\n //\n if (typeof variables === 'object' && !Array.isArray(variables)) {\n variables = Object.keys(variables).map(function (k) {\n let value = variables[k];\n\n if (!(value instanceof tree.Value)) {\n if (!(value instanceof tree.Expression)) {\n value = new tree.Expression([value]);\n }\n value = new tree.Value([value]);\n }\n return new tree.Declaration(`@${k}`, value, false, null, 0);\n });\n evalEnv.frames = [new tree.Ruleset(null, variables)];\n }\n\n const visitors = [\n new visitor.JoinSelectorVisitor(),\n new visitor.MarkVisibleSelectorsVisitor(true),\n new visitor.ExtendVisitor(),\n new visitor.ToCSSVisitor({compress: Boolean(options.compress)})\n ];\n\n const preEvalVisitors = [];\n let v;\n let visitorIterator;\n\n /**\n * first() / get() allows visitors to be added while visiting\n * \n * @todo Add scoping for visitors just like functions for @plugin; right now they're global\n */\n if (options.pluginManager) {\n visitorIterator = options.pluginManager.visitor();\n for (let i = 0; i < 2; i++) {\n visitorIterator.first();\n while ((v = visitorIterator.get())) {\n if (v.isPreEvalVisitor) {\n if (i === 0 || preEvalVisitors.indexOf(v) === -1) {\n preEvalVisitors.push(v);\n v.run(root);\n }\n }\n else {\n if (i === 0 || visitors.indexOf(v) === -1) {\n if (v.isPreVisitor) {\n visitors.unshift(v);\n }\n else {\n visitors.push(v);\n }\n }\n }\n }\n }\n }\n\n evaldRoot = root.eval(evalEnv);\n\n for (let i = 0; i < visitors.length; i++) {\n visitors[i].run(evaldRoot);\n }\n\n // Run any remaining visitors added after eval pass\n if (options.pluginManager) {\n visitorIterator.first();\n while ((v = visitorIterator.get())) {\n if (visitors.indexOf(v) === -1 && preEvalVisitors.indexOf(v) === -1) {\n v.run(evaldRoot);\n }\n }\n }\n\n return evaldRoot;\n}\n","/**\n * Plugin Manager\n */\nclass PluginManager {\n constructor(less) {\n this.less = less;\n this.visitors = [];\n this.preProcessors = [];\n this.postProcessors = [];\n this.installedPlugins = [];\n this.fileManagers = [];\n this.iterator = -1;\n this.pluginCache = {};\n this.Loader = new less.PluginLoader(less);\n }\n\n /**\n * Adds all the plugins in the array\n * @param {Array} plugins\n */\n addPlugins(plugins) {\n if (plugins) {\n for (let i = 0; i < plugins.length; i++) {\n this.addPlugin(plugins[i]);\n }\n }\n }\n\n /**\n *\n * @param plugin\n * @param {String} filename\n */\n addPlugin(plugin, filename, functionRegistry) {\n this.installedPlugins.push(plugin);\n if (filename) {\n this.pluginCache[filename] = plugin;\n }\n if (plugin.install) {\n plugin.install(this.less, this, functionRegistry || this.less.functions.functionRegistry);\n }\n }\n\n /**\n *\n * @param filename\n */\n get(filename) {\n return this.pluginCache[filename];\n }\n\n /**\n * Adds a visitor. The visitor object has options on itself to determine\n * when it should run.\n * @param visitor\n */\n addVisitor(visitor) {\n this.visitors.push(visitor);\n }\n\n /**\n * Adds a pre processor object\n * @param {object} preProcessor\n * @param {number} priority - guidelines 1 = before import, 1000 = import, 2000 = after import\n */\n addPreProcessor(preProcessor, priority) {\n let indexToInsertAt;\n for (indexToInsertAt = 0; indexToInsertAt < this.preProcessors.length; indexToInsertAt++) {\n if (this.preProcessors[indexToInsertAt].priority >= priority) {\n break;\n }\n }\n this.preProcessors.splice(indexToInsertAt, 0, {preProcessor, priority});\n }\n\n /**\n * Adds a post processor object\n * @param {object} postProcessor\n * @param {number} priority - guidelines 1 = before compression, 1000 = compression, 2000 = after compression\n */\n addPostProcessor(postProcessor, priority) {\n let indexToInsertAt;\n for (indexToInsertAt = 0; indexToInsertAt < this.postProcessors.length; indexToInsertAt++) {\n if (this.postProcessors[indexToInsertAt].priority >= priority) {\n break;\n }\n }\n this.postProcessors.splice(indexToInsertAt, 0, {postProcessor, priority});\n }\n\n /**\n *\n * @param manager\n */\n addFileManager(manager) {\n this.fileManagers.push(manager);\n }\n\n /**\n *\n * @returns {Array}\n * @private\n */\n getPreProcessors() {\n const preProcessors = [];\n for (let i = 0; i < this.preProcessors.length; i++) {\n preProcessors.push(this.preProcessors[i].preProcessor);\n }\n return preProcessors;\n }\n\n /**\n *\n * @returns {Array}\n * @private\n */\n getPostProcessors() {\n const postProcessors = [];\n for (let i = 0; i < this.postProcessors.length; i++) {\n postProcessors.push(this.postProcessors[i].postProcessor);\n }\n return postProcessors;\n }\n\n /**\n *\n * @returns {Array}\n * @private\n */\n getVisitors() {\n return this.visitors;\n }\n\n visitor() {\n const self = this;\n return {\n first: function() {\n self.iterator = -1;\n return self.visitors[self.iterator];\n },\n get: function() {\n self.iterator += 1;\n return self.visitors[self.iterator];\n }\n };\n }\n\n /**\n *\n * @returns {Array}\n * @private\n */\n getFileManagers() {\n return this.fileManagers;\n }\n}\n\nlet pm;\n\nconst PluginManagerFactory = function(less, newFactory) {\n if (newFactory || !pm) {\n pm = new PluginManager(less);\n }\n return pm;\n};\n\n//\nexport default PluginManagerFactory;\n","'use strict';\n\nfunction parseNodeVersion(version) {\n var match = version.match(/^v(\\d{1,2})\\.(\\d{1,2})\\.(\\d{1,2})(?:-([0-9A-Za-z-.]+))?(?:\\+([0-9A-Za-z-.]+))?$/); // eslint-disable-line max-len\n if (!match) {\n throw new Error('Unable to parse: ' + version);\n }\n\n var res = {\n major: parseInt(match[1], 10),\n minor: parseInt(match[2], 10),\n patch: parseInt(match[3], 10),\n pre: match[4] || '',\n build: match[5] || '',\n };\n\n return res;\n}\n\nmodule.exports = parseNodeVersion;\n","import AbstractFileManager from '../less/environment/abstract-file-manager.js';\n\nlet options;\nlet logger;\nlet fileCache = {};\n\n// TODOS - move log somewhere. pathDiff and doing something similar in node. use pathDiff in the other browser file for the initial load\nconst FileManager = function() {}\nFileManager.prototype = Object.assign(new AbstractFileManager(), {\n alwaysMakePathsAbsolute() {\n return true;\n },\n\n join(basePath, laterPath) {\n if (!basePath) {\n return laterPath;\n }\n return this.extractUrlParts(laterPath, basePath).path;\n },\n\n doXHR(url, type, callback, errback) {\n const xhr = new XMLHttpRequest();\n const async = options.isFileProtocol ? options.fileAsync : true;\n\n if (typeof xhr.overrideMimeType === 'function') {\n xhr.overrideMimeType('text/css');\n }\n logger.debug(`XHR: Getting '${url}'`);\n xhr.open('GET', url, async);\n xhr.setRequestHeader('Accept', type || 'text/x-less, text/css; q=0.9, */*; q=0.5');\n xhr.send(null);\n\n function handleResponse(xhr, callback, errback) {\n if (xhr.status >= 200 && xhr.status < 300) {\n callback(xhr.responseText,\n xhr.getResponseHeader('Last-Modified'));\n } else if (typeof errback === 'function') {\n errback(xhr.status, url);\n }\n }\n\n if (options.isFileProtocol && !options.fileAsync) {\n if (xhr.status === 0 || (xhr.status >= 200 && xhr.status < 300)) {\n callback(xhr.responseText);\n } else {\n errback(xhr.status, url);\n }\n } else if (async) {\n xhr.onreadystatechange = () => {\n if (xhr.readyState == 4) {\n handleResponse(xhr, callback, errback);\n }\n };\n } else {\n handleResponse(xhr, callback, errback);\n }\n },\n\n supports() {\n return true;\n },\n\n clearFileCache() {\n fileCache = {};\n },\n\n loadFile(filename, currentDirectory, options) {\n // TODO: Add prefix support like less-node?\n // What about multiple paths?\n\n if (currentDirectory && !this.isPathAbsolute(filename)) {\n filename = currentDirectory + filename;\n }\n\n filename = options.ext ? this.tryAppendExtension(filename, options.ext) : filename;\n\n options = options || {};\n\n // sheet may be set to the stylesheet for the initial load or a collection of properties including\n // some context variables for imports\n const hrefParts = this.extractUrlParts(filename, window.location.href);\n const href = hrefParts.url;\n const self = this;\n \n return new Promise((resolve, reject) => {\n if (options.useFileCache && fileCache[href]) {\n try {\n const lessText = fileCache[href];\n return resolve({ contents: lessText, filename: href, webInfo: { lastModified: new Date() }});\n } catch (e) {\n return reject({ filename: href, message: `Error loading file ${href} error was ${e.message}` });\n }\n }\n\n self.doXHR(href, options.mime, function doXHRCallback(data, lastModified) {\n // per file cache\n fileCache[href] = data;\n\n // Use remote copy (re-parse)\n resolve({ contents: data, filename: href, webInfo: { lastModified }});\n }, function doXHRError(status, url) {\n reject({ type: 'File', message: `'${url}' wasn't found (${status})`, href });\n });\n });\n }\n});\n\nexport default (opts, log) => {\n options = opts;\n logger = log;\n return FileManager;\n}\n","import Environment from './environment/environment';\nimport data from './data';\nimport tree from './tree';\nimport AbstractFileManager from './environment/abstract-file-manager';\nimport AbstractPluginLoader from './environment/abstract-plugin-loader';\nimport visitors from './visitors';\nimport Parser from './parser/parser';\nimport functions from './functions';\nimport contexts from './contexts';\nimport LessError from './less-error';\nimport transformTree from './transform-tree';\nimport * as utils from './utils';\nimport PluginManager from './plugin-manager';\nimport logger from './logger';\nimport SourceMapOutput from './source-map-output';\nimport SourceMapBuilder from './source-map-builder';\nimport ParseTree from './parse-tree';\nimport ImportManager from './import-manager';\nimport Parse from './parse';\nimport Render from './render';\nimport { version } from '../../package.json';\nimport parseVersion from 'parse-node-version';\n\nexport default function(environment, fileManagers) {\n let sourceMapOutput, sourceMapBuilder, parseTree, importManager;\n\n environment = new Environment(environment, fileManagers);\n sourceMapOutput = SourceMapOutput(environment);\n sourceMapBuilder = SourceMapBuilder(sourceMapOutput, environment);\n parseTree = ParseTree(sourceMapBuilder);\n importManager = ImportManager(environment);\n\n const render = Render(environment, parseTree, importManager);\n const parse = Parse(environment, parseTree, importManager);\n\n const v = parseVersion(`v${version}`);\n const initial = {\n version: [v.major, v.minor, v.patch],\n data,\n tree,\n Environment,\n AbstractFileManager,\n AbstractPluginLoader,\n environment,\n visitors,\n Parser,\n functions: functions(environment),\n contexts,\n SourceMapOutput: sourceMapOutput,\n SourceMapBuilder: sourceMapBuilder,\n ParseTree: parseTree,\n ImportManager: importManager,\n render,\n parse,\n LessError,\n transformTree,\n utils,\n PluginManager,\n logger\n };\n\n // Create a public API\n\n const ctor = function(t) {\n return function() {\n const obj = Object.create(t.prototype);\n t.apply(obj, Array.prototype.slice.call(arguments, 0));\n return obj;\n };\n };\n let t;\n const api = Object.create(initial);\n for (const n in initial.tree) {\n /* eslint guard-for-in: 0 */\n t = initial.tree[n];\n if (typeof t === 'function') {\n api[n.toLowerCase()] = ctor(t);\n }\n else {\n api[n] = Object.create(null);\n for (const o in t) {\n /* eslint guard-for-in: 0 */\n api[n][o.toLowerCase()] = ctor(t[o]);\n }\n }\n }\n\n /**\n * Some of the functions assume a `this` context of the API object,\n * which causes it to fail when wrapped for ES6 imports.\n * \n * An assumed `this` should be removed in the future.\n */\n initial.parse = initial.parse.bind(api);\n initial.render = initial.render.bind(api);\n\n return api;\n}\n","import LessError from './less-error';\nimport transformTree from './transform-tree';\nimport logger from './logger';\n\nexport default function(SourceMapBuilder) {\n class ParseTree {\n constructor(root, imports) {\n this.root = root;\n this.imports = imports;\n }\n\n toCSS(options) {\n let evaldRoot;\n const result = {};\n let sourceMapBuilder;\n try {\n evaldRoot = transformTree(this.root, options);\n } catch (e) {\n throw new LessError(e, this.imports);\n }\n\n try {\n const compress = Boolean(options.compress);\n if (compress) {\n logger.warn('The compress option has been deprecated. ' + \n 'We recommend you use a dedicated css minifier, for instance see less-plugin-clean-css.');\n }\n\n const toCSSOptions = {\n compress,\n dumpLineNumbers: options.dumpLineNumbers,\n strictUnits: Boolean(options.strictUnits),\n numPrecision: 8};\n\n if (options.sourceMap) {\n sourceMapBuilder = new SourceMapBuilder(options.sourceMap);\n result.css = sourceMapBuilder.toCSS(evaldRoot, toCSSOptions, this.imports);\n } else {\n result.css = evaldRoot.toCSS(toCSSOptions);\n }\n } catch (e) {\n throw new LessError(e, this.imports);\n }\n\n if (options.pluginManager) {\n const postProcessors = options.pluginManager.getPostProcessors();\n for (let i = 0; i < postProcessors.length; i++) {\n result.css = postProcessors[i].process(result.css, { sourceMap: sourceMapBuilder, options, imports: this.imports });\n }\n }\n if (options.sourceMap) {\n result.map = sourceMapBuilder.getExternalSourceMap();\n }\n\n result.imports = [];\n for (const file in this.imports.files) {\n if (Object.prototype.hasOwnProperty.call(this.imports.files, file) && file !== this.imports.rootFilename) {\n result.imports.push(file);\n }\n }\n return result;\n }\n }\n\n return ParseTree;\n}\n","export default function (SourceMapOutput, environment) {\n class SourceMapBuilder {\n constructor(options) {\n this.options = options;\n }\n\n toCSS(rootNode, options, imports) {\n const sourceMapOutput = new SourceMapOutput(\n {\n contentsIgnoredCharsMap: imports.contentsIgnoredChars,\n rootNode,\n contentsMap: imports.contents,\n sourceMapFilename: this.options.sourceMapFilename,\n sourceMapURL: this.options.sourceMapURL,\n outputFilename: this.options.sourceMapOutputFilename,\n sourceMapBasepath: this.options.sourceMapBasepath,\n sourceMapRootpath: this.options.sourceMapRootpath,\n outputSourceFiles: this.options.outputSourceFiles,\n sourceMapGenerator: this.options.sourceMapGenerator,\n sourceMapFileInline: this.options.sourceMapFileInline, \n disableSourcemapAnnotation: this.options.disableSourcemapAnnotation\n });\n\n const css = sourceMapOutput.toCSS(options);\n this.sourceMap = sourceMapOutput.sourceMap;\n this.sourceMapURL = sourceMapOutput.sourceMapURL;\n if (this.options.sourceMapInputFilename) {\n this.sourceMapInputFilename = sourceMapOutput.normalizeFilename(this.options.sourceMapInputFilename);\n }\n if (this.options.sourceMapBasepath !== undefined && this.sourceMapURL !== undefined) {\n this.sourceMapURL = sourceMapOutput.removeBasepath(this.sourceMapURL);\n }\n return css + this.getCSSAppendage();\n }\n\n getCSSAppendage() {\n\n let sourceMapURL = this.sourceMapURL;\n if (this.options.sourceMapFileInline) {\n if (this.sourceMap === undefined) {\n return '';\n }\n sourceMapURL = `data:application/json;base64,${environment.encodeBase64(this.sourceMap)}`;\n }\n\n if (this.options.disableSourcemapAnnotation) {\n return '';\n }\n\n if (sourceMapURL) {\n return `/*# sourceMappingURL=${sourceMapURL} */`;\n }\n return '';\n }\n\n getExternalSourceMap() {\n return this.sourceMap;\n }\n\n setExternalSourceMap(sourceMap) {\n this.sourceMap = sourceMap;\n }\n\n isInline() {\n return this.options.sourceMapFileInline;\n }\n\n getSourceMapURL() {\n return this.sourceMapURL;\n }\n\n getOutputFilename() {\n return this.options.sourceMapOutputFilename;\n }\n\n getInputFilename() {\n return this.sourceMapInputFilename;\n }\n }\n\n return SourceMapBuilder;\n}\n","export default function (environment) {\n class SourceMapOutput {\n constructor(options) {\n this._css = [];\n this._rootNode = options.rootNode;\n this._contentsMap = options.contentsMap;\n this._contentsIgnoredCharsMap = options.contentsIgnoredCharsMap;\n if (options.sourceMapFilename) {\n this._sourceMapFilename = options.sourceMapFilename.replace(/\\\\/g, '/');\n }\n this._outputFilename = options.outputFilename;\n this.sourceMapURL = options.sourceMapURL;\n if (options.sourceMapBasepath) {\n this._sourceMapBasepath = options.sourceMapBasepath.replace(/\\\\/g, '/');\n }\n if (options.sourceMapRootpath) {\n this._sourceMapRootpath = options.sourceMapRootpath.replace(/\\\\/g, '/');\n if (this._sourceMapRootpath.charAt(this._sourceMapRootpath.length - 1) !== '/') {\n this._sourceMapRootpath += '/';\n }\n } else {\n this._sourceMapRootpath = '';\n }\n this._outputSourceFiles = options.outputSourceFiles;\n this._sourceMapGeneratorConstructor = environment.getSourceMapGenerator();\n\n this._lineNumber = 0;\n this._column = 0;\n }\n\n removeBasepath(path) {\n if (this._sourceMapBasepath && path.indexOf(this._sourceMapBasepath) === 0) {\n path = path.substring(this._sourceMapBasepath.length);\n if (path.charAt(0) === '\\\\' || path.charAt(0) === '/') {\n path = path.substring(1);\n }\n }\n\n return path;\n }\n\n normalizeFilename(filename) {\n filename = filename.replace(/\\\\/g, '/');\n filename = this.removeBasepath(filename);\n return (this._sourceMapRootpath || '') + filename;\n }\n\n add(chunk, fileInfo, index, mapLines) {\n\n // ignore adding empty strings\n if (!chunk) {\n return;\n }\n\n let lines, sourceLines, columns, sourceColumns, i;\n\n if (fileInfo && fileInfo.filename) {\n let inputSource = this._contentsMap[fileInfo.filename];\n\n // remove vars/banner added to the top of the file\n if (this._contentsIgnoredCharsMap[fileInfo.filename]) {\n // adjust the index\n index -= this._contentsIgnoredCharsMap[fileInfo.filename];\n if (index < 0) { index = 0; }\n // adjust the source\n inputSource = inputSource.slice(this._contentsIgnoredCharsMap[fileInfo.filename]);\n }\n\n /** \n * ignore empty content, or failsafe\n * if contents map is incorrect\n */\n if (inputSource === undefined) {\n this._css.push(chunk);\n return;\n }\n\n inputSource = inputSource.substring(0, index);\n sourceLines = inputSource.split('\\n');\n sourceColumns = sourceLines[sourceLines.length - 1];\n }\n\n lines = chunk.split('\\n');\n columns = lines[lines.length - 1];\n\n if (fileInfo && fileInfo.filename) {\n if (!mapLines) {\n this._sourceMapGenerator.addMapping({ generated: { line: this._lineNumber + 1, column: this._column},\n original: { line: sourceLines.length, column: sourceColumns.length},\n source: this.normalizeFilename(fileInfo.filename)});\n } else {\n for (i = 0; i < lines.length; i++) {\n this._sourceMapGenerator.addMapping({ generated: { line: this._lineNumber + i + 1, column: i === 0 ? this._column : 0},\n original: { line: sourceLines.length + i, column: i === 0 ? sourceColumns.length : 0},\n source: this.normalizeFilename(fileInfo.filename)});\n }\n }\n }\n\n if (lines.length === 1) {\n this._column += columns.length;\n } else {\n this._lineNumber += lines.length - 1;\n this._column = columns.length;\n }\n\n this._css.push(chunk);\n }\n\n isEmpty() {\n return this._css.length === 0;\n }\n\n toCSS(context) {\n this._sourceMapGenerator = new this._sourceMapGeneratorConstructor({ file: this._outputFilename, sourceRoot: null });\n\n if (this._outputSourceFiles) {\n for (const filename in this._contentsMap) {\n // eslint-disable-next-line no-prototype-builtins\n if (this._contentsMap.hasOwnProperty(filename)) {\n let source = this._contentsMap[filename];\n if (this._contentsIgnoredCharsMap[filename]) {\n source = source.slice(this._contentsIgnoredCharsMap[filename]);\n }\n this._sourceMapGenerator.setSourceContent(this.normalizeFilename(filename), source);\n }\n }\n }\n\n this._rootNode.genCSS(context, this);\n\n if (this._css.length > 0) {\n let sourceMapURL;\n const sourceMapContent = JSON.stringify(this._sourceMapGenerator.toJSON());\n\n if (this.sourceMapURL) {\n sourceMapURL = this.sourceMapURL;\n } else if (this._sourceMapFilename) {\n sourceMapURL = this._sourceMapFilename;\n }\n this.sourceMapURL = sourceMapURL;\n\n this.sourceMap = sourceMapContent;\n }\n\n return this._css.join('');\n }\n }\n\n return SourceMapOutput;\n}\n","import contexts from './contexts';\nimport Parser from './parser/parser';\nimport LessError from './less-error';\nimport * as utils from './utils';\nimport logger from './logger';\n\nexport default function(environment) {\n // FileInfo = {\n // 'rewriteUrls' - option - whether to adjust URL's to be relative\n // 'filename' - full resolved filename of current file\n // 'rootpath' - path to append to normal URLs for this node\n // 'currentDirectory' - path to the current file, absolute\n // 'rootFilename' - filename of the base file\n // 'entryPath' - absolute path to the entry file\n // 'reference' - whether the file should not be output and only output parts that are referenced\n\n class ImportManager {\n constructor(less, context, rootFileInfo) {\n this.less = less;\n this.rootFilename = rootFileInfo.filename;\n this.paths = context.paths || []; // Search paths, when importing\n this.contents = {}; // map - filename to contents of all the files\n this.contentsIgnoredChars = {}; // map - filename to lines at the beginning of each file to ignore\n this.mime = context.mime;\n this.error = null;\n this.context = context;\n // Deprecated? Unused outside of here, could be useful.\n this.queue = []; // Files which haven't been imported yet\n this.files = {}; // Holds the imported parse trees.\n }\n\n /**\n * Add an import to be imported\n * @param path - the raw path\n * @param tryAppendExtension - whether to try appending a file extension (.less or .js if the path has no extension)\n * @param currentFileInfo - the current file info (used for instance to work out relative paths)\n * @param importOptions - import options\n * @param callback - callback for when it is imported\n */\n push(path, tryAppendExtension, currentFileInfo, importOptions, callback) {\n const importManager = this, pluginLoader = this.context.pluginManager.Loader;\n\n this.queue.push(path);\n\n const fileParsedFunc = function (e, root, fullPath) {\n importManager.queue.splice(importManager.queue.indexOf(path), 1); // Remove the path from the queue\n\n const importedEqualsRoot = fullPath === importManager.rootFilename;\n if (importOptions.optional && e) {\n callback(null, {rules:[]}, false, null);\n logger.info(`The file ${fullPath} was skipped because it was not found and the import was marked optional.`);\n }\n else {\n // Inline imports aren't cached here.\n // If we start to cache them, please make sure they won't conflict with non-inline imports of the\n // same name as they used to do before this comment and the condition below have been added.\n if (!importManager.files[fullPath] && !importOptions.inline) {\n importManager.files[fullPath] = { root, options: importOptions };\n }\n if (e && !importManager.error) { importManager.error = e; }\n callback(e, root, importedEqualsRoot, fullPath);\n }\n };\n\n const newFileInfo = {\n rewriteUrls: this.context.rewriteUrls,\n entryPath: currentFileInfo.entryPath,\n rootpath: currentFileInfo.rootpath,\n rootFilename: currentFileInfo.rootFilename\n };\n\n const fileManager = environment.getFileManager(path, currentFileInfo.currentDirectory, this.context, environment);\n\n if (!fileManager) {\n fileParsedFunc({ message: `Could not find a file-manager for ${path}` });\n return;\n }\n\n const loadFileCallback = function(loadedFile) {\n let plugin;\n const resolvedFilename = loadedFile.filename;\n const contents = loadedFile.contents.replace(/^\\uFEFF/, '');\n\n // Pass on an updated rootpath if path of imported file is relative and file\n // is in a (sub|sup) directory\n //\n // Examples:\n // - If path of imported file is 'module/nav/nav.less' and rootpath is 'less/',\n // then rootpath should become 'less/module/nav/'\n // - If path of imported file is '../mixins.less' and rootpath is 'less/',\n // then rootpath should become 'less/../'\n newFileInfo.currentDirectory = fileManager.getPath(resolvedFilename);\n if (newFileInfo.rewriteUrls) {\n newFileInfo.rootpath = fileManager.join(\n (importManager.context.rootpath || ''),\n fileManager.pathDiff(newFileInfo.currentDirectory, newFileInfo.entryPath));\n\n if (!fileManager.isPathAbsolute(newFileInfo.rootpath) && fileManager.alwaysMakePathsAbsolute()) {\n newFileInfo.rootpath = fileManager.join(newFileInfo.entryPath, newFileInfo.rootpath);\n }\n }\n newFileInfo.filename = resolvedFilename;\n\n const newEnv = new contexts.Parse(importManager.context);\n\n newEnv.processImports = false;\n importManager.contents[resolvedFilename] = contents;\n\n if (currentFileInfo.reference || importOptions.reference) {\n newFileInfo.reference = true;\n }\n\n if (importOptions.isPlugin) {\n plugin = pluginLoader.evalPlugin(contents, newEnv, importManager, importOptions.pluginArgs, newFileInfo);\n if (plugin instanceof LessError) {\n fileParsedFunc(plugin, null, resolvedFilename);\n }\n else {\n fileParsedFunc(null, plugin, resolvedFilename);\n }\n } else if (importOptions.inline) {\n fileParsedFunc(null, contents, resolvedFilename);\n } else {\n // import (multiple) parse trees apparently get altered and can't be cached.\n // TODO: investigate why this is\n if (importManager.files[resolvedFilename]\n && !importManager.files[resolvedFilename].options.multiple\n && !importOptions.multiple) {\n\n fileParsedFunc(null, importManager.files[resolvedFilename].root, resolvedFilename);\n }\n else {\n new Parser(newEnv, importManager, newFileInfo).parse(contents, function (e, root) {\n fileParsedFunc(e, root, resolvedFilename);\n });\n }\n }\n };\n let loadedFile;\n let promise;\n const context = utils.clone(this.context);\n\n if (tryAppendExtension) {\n context.ext = importOptions.isPlugin ? '.js' : '.less';\n }\n\n if (importOptions.isPlugin) {\n context.mime = 'application/javascript';\n\n if (context.syncImport) {\n loadedFile = pluginLoader.loadPluginSync(path, currentFileInfo.currentDirectory, context, environment, fileManager);\n } else {\n promise = pluginLoader.loadPlugin(path, currentFileInfo.currentDirectory, context, environment, fileManager);\n }\n }\n else {\n if (context.syncImport) {\n loadedFile = fileManager.loadFileSync(path, currentFileInfo.currentDirectory, context, environment);\n } else {\n promise = fileManager.loadFile(path, currentFileInfo.currentDirectory, context, environment,\n (err, loadedFile) => {\n if (err) {\n fileParsedFunc(err);\n } else {\n loadFileCallback(loadedFile);\n }\n });\n }\n }\n if (loadedFile) {\n if (!loadedFile.filename) {\n fileParsedFunc(loadedFile);\n } else {\n loadFileCallback(loadedFile);\n }\n } else if (promise) {\n promise.then(loadFileCallback, fileParsedFunc);\n }\n }\n }\n\n return ImportManager;\n}\n","import * as utils from './utils';\n\nexport default function(environment, ParseTree) {\n const render = function (input, options, callback) {\n if (typeof options === 'function') {\n callback = options;\n options = utils.copyOptions(this.options, {});\n }\n else {\n options = utils.copyOptions(this.options, options || {});\n }\n\n if (!callback) {\n const self = this;\n return new Promise(function (resolve, reject) {\n render.call(self, input, options, function(err, output) {\n if (err) {\n reject(err);\n } else {\n resolve(output);\n }\n });\n });\n } else {\n this.parse(input, options, function(err, root, imports, options) {\n if (err) { return callback(err); }\n\n let result;\n try {\n const parseTree = new ParseTree(root, imports);\n result = parseTree.toCSS(options);\n }\n catch (err) { return callback(err); }\n\n callback(null, result);\n });\n }\n };\n\n return render;\n}\n","import contexts from './contexts';\nimport Parser from './parser/parser';\nimport PluginManager from './plugin-manager';\nimport LessError from './less-error';\nimport * as utils from './utils';\n\nexport default function(environment, ParseTree, ImportManager) {\n const parse = function (input, options, callback) {\n\n if (typeof options === 'function') {\n callback = options;\n options = utils.copyOptions(this.options, {});\n }\n else {\n options = utils.copyOptions(this.options, options || {});\n }\n\n if (!callback) {\n const self = this;\n return new Promise(function (resolve, reject) {\n parse.call(self, input, options, function(err, output) {\n if (err) {\n reject(err);\n } else {\n resolve(output);\n }\n });\n });\n } else {\n let context;\n let rootFileInfo;\n const pluginManager = new PluginManager(this, !options.reUsePluginManager);\n\n options.pluginManager = pluginManager;\n\n context = new contexts.Parse(options);\n\n if (options.rootFileInfo) {\n rootFileInfo = options.rootFileInfo;\n } else {\n const filename = options.filename || 'input';\n const entryPath = filename.replace(/[^/\\\\]*$/, '');\n rootFileInfo = {\n filename,\n rewriteUrls: context.rewriteUrls,\n rootpath: context.rootpath || '',\n currentDirectory: entryPath,\n entryPath,\n rootFilename: filename\n };\n // add in a missing trailing slash\n if (rootFileInfo.rootpath && rootFileInfo.rootpath.slice(-1) !== '/') {\n rootFileInfo.rootpath += '/';\n }\n }\n\n const imports = new ImportManager(this, context, rootFileInfo);\n this.importManager = imports;\n\n // TODO: allow the plugins to be just a list of paths or names\n // Do an async plugin queue like lessc\n\n if (options.plugins) {\n options.plugins.forEach(function(plugin) {\n let evalResult, contents;\n if (plugin.fileContent) {\n contents = plugin.fileContent.replace(/^\\uFEFF/, '');\n evalResult = pluginManager.Loader.evalPlugin(contents, context, imports, plugin.options, plugin.filename);\n if (evalResult instanceof LessError) {\n return callback(evalResult);\n }\n }\n else {\n pluginManager.addPlugin(plugin);\n }\n });\n }\n\n new Parser(context, imports, rootFileInfo)\n .parse(input, function (e, root) {\n if (e) { return callback(e); }\n callback(null, root, imports, options);\n }, options);\n }\n };\n return parse;\n}\n","/**\n * @todo Add tests for browser `@plugin`\n */\nimport AbstractPluginLoader from '../less/environment/abstract-plugin-loader.js';\n\n/**\n * Browser Plugin Loader\n */\nconst PluginLoader = function(less) {\n this.less = less;\n // Should we shim this.require for browser? Probably not?\n};\n\nPluginLoader.prototype = Object.assign(new AbstractPluginLoader(), {\n loadPlugin(filename, basePath, context, environment, fileManager) {\n return new Promise((fulfill, reject) => {\n fileManager.loadFile(filename, basePath, context, environment)\n .then(fulfill).catch(reject);\n });\n }\n});\n\nexport default PluginLoader;\n\n","export default (less, options) => {\n const logLevel_debug = 4;\n const logLevel_info = 3;\n const logLevel_warn = 2;\n const logLevel_error = 1;\n\n // The amount of logging in the javascript console.\n // 3 - Debug, information and errors\n // 2 - Information and errors\n // 1 - Errors\n // 0 - None\n // Defaults to 2\n options.logLevel = typeof options.logLevel !== 'undefined' ? options.logLevel : (options.env === 'development' ? logLevel_info : logLevel_error);\n\n if (!options.loggers) {\n options.loggers = [{\n debug: function(msg) {\n if (options.logLevel >= logLevel_debug) {\n console.log(msg);\n }\n },\n info: function(msg) {\n if (options.logLevel >= logLevel_info) {\n console.log(msg);\n }\n },\n warn: function(msg) {\n if (options.logLevel >= logLevel_warn) {\n console.warn(msg);\n }\n },\n error: function(msg) {\n if (options.logLevel >= logLevel_error) {\n console.error(msg);\n }\n }\n }];\n }\n for (let i = 0; i < options.loggers.length; i++) {\n less.logger.addListener(options.loggers[i]);\n }\n};\n","import * as utils from './utils';\nimport browser from './browser';\n\nexport default (window, less, options) => {\n\n function errorHTML(e, rootHref) {\n const id = `less-error-message:${utils.extractId(rootHref || '')}`;\n const template = '{line} {content} ';\n const elem = window.document.createElement('div');\n let timer;\n let content;\n const errors = [];\n const filename = e.filename || rootHref;\n const filenameNoPath = filename.match(/([^/]+(\\?.*)?)$/)[1];\n\n elem.id = id;\n elem.className = 'less-error-message';\n\n content = `${e.type || 'Syntax'}Error: ${e.message || 'There is an error in your .less file'}` + \n ` in ${filenameNoPath} `;\n\n const errorline = (e, i, classname) => {\n if (e.extract[i] !== undefined) {\n errors.push(template.replace(/\\{line\\}/, (parseInt(e.line, 10) || 0) + (i - 1))\n .replace(/\\{class\\}/, classname)\n .replace(/\\{content\\}/, e.extract[i]));\n }\n };\n\n if (e.line) {\n errorline(e, 0, '');\n errorline(e, 1, 'line');\n errorline(e, 2, '');\n content += `on line ${e.line}, column ${e.column + 1}:
`;\n }\n if (e.stack && (e.extract || options.logLevel >= 4)) {\n content += ` Stack Trace${e.stack.split('\\n').slice(1).join(' ')}`;\n }\n elem.innerHTML = content;\n\n // CSS for error messages\n browser.createCSS(window.document, [\n '.less-error-message ul, .less-error-message li {',\n 'list-style-type: none;',\n 'margin-right: 15px;',\n 'padding: 4px 0;',\n 'margin: 0;',\n '}',\n '.less-error-message label {',\n 'font-size: 12px;',\n 'margin-right: 15px;',\n 'padding: 4px 0;',\n 'color: #cc7777;',\n '}',\n '.less-error-message pre {',\n 'color: #dd6666;',\n 'padding: 4px 0;',\n 'margin: 0;',\n 'display: inline-block;',\n '}',\n '.less-error-message pre.line {',\n 'color: #ff0000;',\n '}',\n '.less-error-message h3 {',\n 'font-size: 20px;',\n 'font-weight: bold;',\n 'padding: 15px 0 5px 0;',\n 'margin: 0;',\n '}',\n '.less-error-message a {',\n 'color: #10a',\n '}',\n '.less-error-message .error {',\n 'color: red;',\n 'font-weight: bold;',\n 'padding-bottom: 2px;',\n 'border-bottom: 1px dashed red;',\n '}'\n ].join('\\n'), { title: 'error-message' });\n\n elem.style.cssText = [\n 'font-family: Arial, sans-serif',\n 'border: 1px solid #e00',\n 'background-color: #eee',\n 'border-radius: 5px',\n '-webkit-border-radius: 5px',\n '-moz-border-radius: 5px',\n 'color: #e00',\n 'padding: 15px',\n 'margin-bottom: 15px'\n ].join(';');\n\n if (options.env === 'development') {\n timer = setInterval(() => {\n const document = window.document;\n const body = document.body;\n if (body) {\n if (document.getElementById(id)) {\n body.replaceChild(elem, document.getElementById(id));\n } else {\n body.insertBefore(elem, body.firstChild);\n }\n clearInterval(timer);\n }\n }, 10);\n }\n }\n\n function removeErrorHTML(path) {\n const node = window.document.getElementById(`less-error-message:${utils.extractId(path)}`);\n if (node) {\n node.parentNode.removeChild(node);\n }\n }\n\n function removeErrorConsole() {\n // no action\n }\n\n function removeError(path) {\n if (!options.errorReporting || options.errorReporting === 'html') {\n removeErrorHTML(path);\n } else if (options.errorReporting === 'console') {\n removeErrorConsole(path);\n } else if (typeof options.errorReporting === 'function') {\n options.errorReporting('remove', path);\n }\n }\n\n function errorConsole(e, rootHref) {\n const template = '{line} {content}';\n const filename = e.filename || rootHref;\n const errors = [];\n let content = `${e.type || 'Syntax'}Error: ${e.message || 'There is an error in your .less file'} in ${filename}`;\n\n const errorline = (e, i, classname) => {\n if (e.extract[i] !== undefined) {\n errors.push(template.replace(/\\{line\\}/, (parseInt(e.line, 10) || 0) + (i - 1))\n .replace(/\\{class\\}/, classname)\n .replace(/\\{content\\}/, e.extract[i]));\n }\n };\n\n if (e.line) {\n errorline(e, 0, '');\n errorline(e, 1, 'line');\n errorline(e, 2, '');\n content += ` on line ${e.line}, column ${e.column + 1}:\\n${errors.join('\\n')}`;\n }\n if (e.stack && (e.extract || options.logLevel >= 4)) {\n content += `\\nStack Trace\\n${e.stack}`;\n }\n less.logger.error(content);\n }\n\n function error(e, rootHref) {\n if (!options.errorReporting || options.errorReporting === 'html') {\n errorHTML(e, rootHref);\n } else if (options.errorReporting === 'console') {\n errorConsole(e, rootHref);\n } else if (typeof options.errorReporting === 'function') {\n options.errorReporting('add', e, rootHref);\n }\n }\n\n return {\n add: error,\n remove: removeError\n };\n};\n","/**\n * Kicks off less and compiles any stylesheets\n * used in the browser distributed version of less\n * to kick-start less using the browser api\n */\nimport defaultOptions from '../less/default-options';\nimport addDefaultOptions from './add-default-options';\nimport root from './index';\n\nconst options = defaultOptions();\n\nif (window.less) {\n for (const key in window.less) {\n if (Object.prototype.hasOwnProperty.call(window.less, key)) {\n options[key] = window.less[key];\n }\n }\n}\naddDefaultOptions(window, options);\n\noptions.plugins = options.plugins || [];\n\nif (window.LESS_PLUGINS) {\n options.plugins = options.plugins.concat(window.LESS_PLUGINS);\n}\n\nconst less = root(window, options);\nexport default less;\n\nwindow.less = less;\n\nlet css;\nlet head;\nlet style;\n\n// Always restore page visibility\nfunction resolveOrReject(data) {\n if (data.filename) {\n console.warn(data);\n }\n if (!options.async) {\n head.removeChild(style);\n }\n}\n\nif (options.onReady) {\n if (/!watch/.test(window.location.hash)) {\n less.watch();\n }\n // Simulate synchronous stylesheet loading by hiding page rendering\n if (!options.async) {\n css = 'body { display: none !important }';\n head = document.head || document.getElementsByTagName('head')[0];\n style = document.createElement('style');\n\n style.type = 'text/css';\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n\n head.appendChild(style);\n }\n less.registerStylesheetsImmediately();\n less.pageLoadFinished = less.refresh(less.env === 'development').then(resolveOrReject, resolveOrReject);\n}\n","// Export a new default each time\nexport default function() {\n return {\n /* Inline Javascript - @plugin still allowed */\n javascriptEnabled: false,\n\n /* Outputs a makefile import dependency list to stdout. */\n depends: false,\n\n /* (DEPRECATED) Compress using less built-in compression. \n * This does an okay job but does not utilise all the tricks of \n * dedicated css compression. */\n compress: false,\n\n /* Runs the less parser and just reports errors without any output. */\n lint: false,\n\n /* Sets available include paths.\n * If the file in an @import rule does not exist at that exact location, \n * less will look for it at the location(s) passed to this option. \n * You might use this for instance to specify a path to a library which \n * you want to be referenced simply and relatively in the less files. */\n paths: [],\n\n /* color output in the terminal */\n color: true,\n\n /* The strictImports controls whether the compiler will allow an @import inside of either \n * @media blocks or (a later addition) other selector blocks.\n * See: https://github.com/less/less.js/issues/656 */\n strictImports: false,\n\n /* Allow Imports from Insecure HTTPS Hosts */\n insecure: false,\n\n /* Allows you to add a path to every generated import and url in your css. \n * This does not affect less import statements that are processed, just ones \n * that are left in the output css. */\n rootpath: '',\n\n /* By default URLs are kept as-is, so if you import a file in a sub-directory \n * that references an image, exactly the same URL will be output in the css. \n * This option allows you to re-write URL's in imported files so that the \n * URL is always relative to the base imported file */\n rewriteUrls: false,\n\n /* How to process math \n * 0 always - eagerly try to solve all operations\n * 1 parens-division - require parens for division \"/\"\n * 2 parens | strict - require parens for all operations\n * 3 strict-legacy - legacy strict behavior (super-strict)\n */\n math: 1,\n\n /* Without this option, less attempts to guess at the output unit when it does maths. */\n strictUnits: false,\n\n /* Effectively the declaration is put at the top of your base Less file, \n * meaning it can be used but it also can be overridden if this variable \n * is defined in the file. */\n globalVars: null,\n\n /* As opposed to the global variable option, this puts the declaration at the\n * end of your base file, meaning it will override anything defined in your Less file. */\n modifyVars: null,\n\n /* This option allows you to specify a argument to go on to every URL. */\n urlArgs: ''\n }\n}","import {addDataAttr} from './utils';\nimport browser from './browser';\n\nexport default (window, options) => {\n\n // use options from the current script tag data attribues\n addDataAttr(options, browser.currentScript(window));\n\n if (options.isFileProtocol === undefined) {\n options.isFileProtocol = /^(file|(chrome|safari)(-extension)?|resource|qrc|app):/.test(window.location.protocol);\n }\n\n // Load styles asynchronously (default: false)\n //\n // This is set to `false` by default, so that the body\n // doesn't start loading before the stylesheets are parsed.\n // Setting this to `true` can result in flickering.\n //\n options.async = options.async || false;\n options.fileAsync = options.fileAsync || false;\n\n // Interval between watch polls\n options.poll = options.poll || (options.isFileProtocol ? 1000 : 1500);\n\n options.env = options.env || (window.location.hostname == '127.0.0.1' ||\n window.location.hostname == '0.0.0.0' ||\n window.location.hostname == 'localhost' ||\n (window.location.port &&\n window.location.port.length > 0) ||\n options.isFileProtocol ? 'development'\n : 'production');\n\n const dumpLineNumbers = /!dumpLineNumbers:(comments|mediaquery|all)/.exec(window.location.hash);\n if (dumpLineNumbers) {\n options.dumpLineNumbers = dumpLineNumbers[1];\n }\n\n if (options.useFileCache === undefined) {\n options.useFileCache = true;\n }\n\n if (options.onReady === undefined) {\n options.onReady = true;\n }\n\n if (options.relativeUrls) {\n options.rewriteUrls = 'all';\n }\n};\n","//\n// index.js\n// Should expose the additional browser functions on to the less object\n//\nimport {addDataAttr} from './utils';\nimport lessRoot from '../less';\nimport browser from './browser';\nimport FM from './file-manager';\nimport PluginLoader from './plugin-loader';\nimport LogListener from './log-listener';\nimport ErrorReporting from './error-reporting';\nimport Cache from './cache';\nimport ImageSize from './image-size';\n\nexport default (window, options) => {\n const document = window.document;\n const less = lessRoot();\n\n less.options = options;\n const environment = less.environment;\n const FileManager = FM(options, less.logger);\n const fileManager = new FileManager();\n environment.addFileManager(fileManager);\n less.FileManager = FileManager;\n less.PluginLoader = PluginLoader;\n\n LogListener(less, options);\n const errors = ErrorReporting(window, less, options);\n const cache = less.cache = options.cache || Cache(window, options, less.logger);\n ImageSize(less.environment);\n\n // Setup user functions - Deprecate?\n if (options.functions) {\n less.functions.functionRegistry.addMultiple(options.functions);\n }\n\n const typePattern = /^text\\/(x-)?less$/;\n\n function clone(obj) {\n const cloned = {};\n for (const prop in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, prop)) {\n cloned[prop] = obj[prop];\n }\n }\n return cloned;\n }\n\n // only really needed for phantom\n function bind(func, thisArg) {\n const curryArgs = Array.prototype.slice.call(arguments, 2);\n return function() {\n const args = curryArgs.concat(Array.prototype.slice.call(arguments, 0));\n return func.apply(thisArg, args);\n };\n }\n\n function loadStyles(modifyVars) {\n const styles = document.getElementsByTagName('style');\n let style;\n\n for (let i = 0; i < styles.length; i++) {\n style = styles[i];\n if (style.type.match(typePattern)) {\n const instanceOptions = clone(options);\n instanceOptions.modifyVars = modifyVars;\n const lessText = style.innerHTML || '';\n instanceOptions.filename = document.location.href.replace(/#.*$/, '');\n\n /* jshint loopfunc:true */\n // use closure to store current style\n less.render(lessText, instanceOptions,\n bind((style, e, result) => {\n if (e) {\n errors.add(e, 'inline');\n } else {\n style.type = 'text/css';\n if (style.styleSheet) {\n style.styleSheet.cssText = result.css;\n } else {\n style.innerHTML = result.css;\n }\n }\n }, null, style));\n }\n }\n }\n\n function loadStyleSheet(sheet, callback, reload, remaining, modifyVars) {\n\n const instanceOptions = clone(options);\n addDataAttr(instanceOptions, sheet);\n instanceOptions.mime = sheet.type;\n\n if (modifyVars) {\n instanceOptions.modifyVars = modifyVars;\n }\n\n function loadInitialFileCallback(loadedFile) {\n const data = loadedFile.contents;\n const path = loadedFile.filename;\n const webInfo = loadedFile.webInfo;\n\n const newFileInfo = {\n currentDirectory: fileManager.getPath(path),\n filename: path,\n rootFilename: path,\n rewriteUrls: instanceOptions.rewriteUrls\n };\n\n newFileInfo.entryPath = newFileInfo.currentDirectory;\n newFileInfo.rootpath = instanceOptions.rootpath || newFileInfo.currentDirectory;\n\n if (webInfo) {\n webInfo.remaining = remaining;\n\n const css = cache.getCSS(path, webInfo, instanceOptions.modifyVars);\n if (!reload && css) {\n webInfo.local = true;\n callback(null, css, data, sheet, webInfo, path);\n return;\n }\n\n }\n\n // TODO add tests around how this behaves when reloading\n errors.remove(path);\n\n instanceOptions.rootFileInfo = newFileInfo;\n less.render(data, instanceOptions, (e, result) => {\n if (e) {\n e.href = path;\n callback(e);\n } else {\n cache.setCSS(sheet.href, webInfo.lastModified, instanceOptions.modifyVars, result.css);\n callback(null, result.css, data, sheet, webInfo, path);\n }\n });\n }\n\n fileManager.loadFile(sheet.href, null, instanceOptions, environment)\n .then(loadedFile => {\n loadInitialFileCallback(loadedFile);\n }).catch(err => {\n console.log(err);\n callback(err);\n });\n\n }\n\n function loadStyleSheets(callback, reload, modifyVars) {\n for (let i = 0; i < less.sheets.length; i++) {\n loadStyleSheet(less.sheets[i], callback, reload, less.sheets.length - (i + 1), modifyVars);\n }\n }\n\n function initRunningMode() {\n if (less.env === 'development') {\n less.watchTimer = setInterval(() => {\n if (less.watchMode) {\n fileManager.clearFileCache();\n /**\n * @todo remove when this is typed with JSDoc\n */\n // eslint-disable-next-line no-unused-vars\n loadStyleSheets((e, css, _, sheet, webInfo) => {\n if (e) {\n errors.add(e, e.href || sheet.href);\n } else if (css) {\n browser.createCSS(window.document, css, sheet);\n }\n });\n }\n }, options.poll);\n }\n }\n\n //\n // Watch mode\n //\n less.watch = function () {\n if (!less.watchMode ) {\n less.env = 'development';\n initRunningMode();\n }\n this.watchMode = true;\n return true;\n };\n\n less.unwatch = function () {clearInterval(less.watchTimer); this.watchMode = false; return false; };\n\n //\n // Synchronously get all tags with the 'rel' attribute set to\n // \"stylesheet/less\".\n //\n less.registerStylesheetsImmediately = () => {\n const links = document.getElementsByTagName('link');\n less.sheets = [];\n\n for (let i = 0; i < links.length; i++) {\n if (links[i].rel === 'stylesheet/less' || (links[i].rel.match(/stylesheet/) &&\n (links[i].type.match(typePattern)))) {\n less.sheets.push(links[i]);\n }\n }\n };\n\n //\n // Asynchronously get all tags with the 'rel' attribute set to\n // \"stylesheet/less\", returning a Promise.\n //\n less.registerStylesheets = () => new Promise((resolve) => {\n less.registerStylesheetsImmediately();\n resolve();\n });\n\n //\n // With this function, it's possible to alter variables and re-render\n // CSS without reloading less-files\n //\n less.modifyVars = record => less.refresh(true, record, false);\n\n less.refresh = (reload, modifyVars, clearFileCache) => {\n if ((reload || clearFileCache) && clearFileCache !== false) {\n fileManager.clearFileCache();\n }\n return new Promise((resolve, reject) => {\n let startTime;\n let endTime;\n let totalMilliseconds;\n let remainingSheets;\n startTime = endTime = new Date();\n\n // Set counter for remaining unprocessed sheets\n remainingSheets = less.sheets.length;\n\n if (remainingSheets === 0) {\n\n endTime = new Date();\n totalMilliseconds = endTime - startTime;\n less.logger.info('Less has finished and no sheets were loaded.');\n resolve({\n startTime,\n endTime,\n totalMilliseconds,\n sheets: less.sheets.length\n });\n\n } else {\n // Relies on less.sheets array, callback seems to be guaranteed to be called for every element of the array\n loadStyleSheets((e, css, _, sheet, webInfo) => {\n if (e) {\n errors.add(e, e.href || sheet.href);\n reject(e);\n return;\n }\n if (webInfo.local) {\n less.logger.info(`Loading ${sheet.href} from cache.`);\n } else {\n less.logger.info(`Rendered ${sheet.href} successfully.`);\n }\n browser.createCSS(window.document, css, sheet);\n less.logger.info(`CSS for ${sheet.href} generated in ${new Date() - endTime}ms`);\n\n // Count completed sheet\n remainingSheets--;\n\n // Check if the last remaining sheet was processed and then call the promise\n if (remainingSheets === 0) {\n totalMilliseconds = new Date() - startTime;\n less.logger.info(`Less has finished. CSS generated in ${totalMilliseconds}ms`);\n resolve({\n startTime,\n endTime,\n totalMilliseconds,\n sheets: less.sheets.length\n });\n }\n endTime = new Date();\n }, reload, modifyVars);\n }\n\n loadStyles(modifyVars);\n });\n };\n\n less.refreshStyles = loadStyles;\n return less;\n};\n","// Cache system is a bit outdated and could do with work\n\nexport default (window, options, logger) => {\n let cache = null;\n if (options.env !== 'development') {\n try {\n cache = (typeof window.localStorage === 'undefined') ? null : window.localStorage;\n } catch (_) {}\n }\n return {\n setCSS: function(path, lastModified, modifyVars, styles) {\n if (cache) {\n logger.info(`saving ${path} to cache.`);\n try {\n cache.setItem(path, styles);\n cache.setItem(`${path}:timestamp`, lastModified);\n if (modifyVars) {\n cache.setItem(`${path}:vars`, JSON.stringify(modifyVars));\n }\n } catch (e) {\n // TODO - could do with adding more robust error handling\n logger.error(`failed to save \"${path}\" to local storage for caching.`);\n }\n }\n },\n getCSS: function(path, webInfo, modifyVars) {\n const css = cache && cache.getItem(path);\n const timestamp = cache && cache.getItem(`${path}:timestamp`);\n let vars = cache && cache.getItem(`${path}:vars`);\n\n modifyVars = modifyVars || {};\n vars = vars || '{}'; // if not set, treat as the JSON representation of an empty object\n\n if (timestamp && webInfo.lastModified &&\n (new Date(webInfo.lastModified).valueOf() ===\n new Date(timestamp).valueOf()) &&\n JSON.stringify(modifyVars) === vars) {\n // Use local copy\n return css;\n }\n }\n };\n};\n","\nimport functionRegistry from './../less/functions/function-registry';\n\nexport default () => {\n function imageSize() {\n throw {\n type: 'Runtime',\n message: 'Image size functions are not supported in browser version of less'\n };\n }\n\n const imageFunctions = {\n 'image-size': function(filePathNode) {\n imageSize(this, filePathNode);\n return -1;\n },\n 'image-width': function(filePathNode) {\n imageSize(this, filePathNode);\n return -1;\n },\n 'image-height': function(filePathNode) {\n imageSize(this, filePathNode);\n return -1;\n }\n };\n\n functionRegistry.addMultiple(imageFunctions);\n};\n"],"names":["extractId","href","replace","addDataAttr","options","tag","opt","dataset","Object","prototype","hasOwnProperty","call","JSON","parse","_","browser","document","styles","sheet","id","concat","title","utils.extractId","oldStyleNode","getElementById","keepOldStyleNode","styleNode","createElement","setAttribute","media","styleSheet","appendChild","createTextNode","childNodes","length","firstChild","nodeValue","head","getElementsByTagName","nextEl","nextSibling","parentNode","insertBefore","removeChild","cssText","e","Error","window","scripts","currentScript","logger$1","error","msg","this","_fireEvent","warn","info","debug","addListener","listener","_listeners","push","removeListener","i_1","splice","type","i_2","logFunction","Environment","externalEnvironment","fileManagers","requiredFunctions","functions","propName","environmentFunc","bind","getFileManager","filename","currentDirectory","environment","isSync","logger","undefined","pluginManager","getFileManagers","fileManager","addFileManager","clearFileManagers","colors","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgrey","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","grey","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgrey","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","unitConversions","m","cm","mm","in","px","pt","pc","duration","s","ms","angle","rad","Math","PI","deg","grad","turn","data","Node","parent","visibilityBlocks","nodeVisible","rootNode","parsed","defineProperty","get","fileInfo","getIndex","setParent","nodes","set","node","Array","isArray","forEach","_index","_fileInfo","isRulesetLike","toCSS","context","strs","genCSS","add","chunk","index","isEmpty","join","output","value","accept","visitor","visit","eval","_operate","op","a","b","fround","precision","numPrecision","Number","toFixed","compare","numericCompare","blocksVisibility","addVisibilityBlock","removeVisibilityBlock","ensureVisibility","ensureInvisibility","isVisible","visibilityInfo","copyVisibilityInfo","Color","rgb","originalForm","self","match","map","c","i","parseInt","alpha","split","clamp","v","max","min","toHex","round","toString","assign","luma","r","g","pow","doNotCompress","color","colorFunction","compress","args","indexOf","toHSL","h","l","toRGB","splitcolor","operate","other","d","toHSV","toARGB","x","fromKeyword","keyword","key","toLowerCase","slice","Paren","_noSpaceCombinators"," ","|","Combinator","emptyOrWhitespace","trim","spaceOrEmpty","Element","combinator","isVariable","currentFileInfo","clone","firstSelector","charAt","ALWAYS","PARENS_DIVISION","PARENS","RewriteUrls","__assign","t","n","arguments","p","apply","__spreadArray","to","from","pack","ar","getType","payload","copy","target","item","constructor","getPrototypeOf","props","getOwnPropertyNames","symbols","getOwnPropertySymbols","reduce","carry","includes","newVal","originalObject","includeNonenumerable","propType","propertyIsEnumerable","enumerable","writable","configurable","assignProp","nonenumerable","getLocation","inputStream","line","column","copyArray","arr","obj","cloned","prop","defaults","obj1","obj2","newObj","_defaults","defaults_1","copyOptions","opts","strictMath","math","Constants.Math","relativeUrls","rewriteUrls","Constants.RewriteUrls","flattenArray","result","length_1","isNullOrUndefined","val","SuppressedError","anonymousFunc","LessError","fileContentMap","currentFilename","message","stack","input","contents","loc","utils.getLocation","col","callLine","lines","found","func","Function","lineAdjust","callExtract","extract","create","F","stylize","str","errorTxt","substr","_visitArgs","visitDeeper","_hasIndexed","_noop","Visitor","implementation","_implementation","_visitInCache","_visitOutCache","indexNodeTypes","ticker","child","typeIndex","tree","nodeTypeIndex","fnName","impl","funcOut","visitArgs","newNode","isReplacing","cnt","visitArray","nonReplacing","out","evald","flatten","nestedCnt","j","nestedItem","contexts","copyFromOriginal","original","destination","propertiesToCopy","parseCopyProperties","Parse","paths","evalCopyProperties","isPathRelative","path","test","isPathLocalRelative","Eval","frames","importantScope","enterCalc","calcStack","inCalc","exitCalc","pop","inParenthesis","parensStack","outOfParenthesis","mathOn","isMathOn","pathRequiresRewrite","rewritePath","rootpath","newPath","normalizePath","segment","segments","reverse","ImportSequencer","onSequencerEmpty","imports","variableImports","_onSequencerEmpty","_currentDepth","addImport","callback","importSequencer","importItem","isReady","tryRun","addVariableImport","variableImport","ImportVisitor","importer","finish","_visitor","_importer","_finish","importCount","onceFileDetectionMap","recursionDetector","_sequencer","run","root","isFinished","visitImport","importNode","inlineCSS","inline","css","utils.copyArray","importParent","isVariableImport","processImportNode","evaldImportNode","evalForImport","multiple","importMultiple","tryAppendLessExtension","rules","onImported","sequencedOnImported","getPath","importedAtRoot","fullPath","importVisitor","isPlugin","isOptional","optional","duplicateImport","skip","importedFilename","oldContext","visitDeclaration","declNode","unshift","visitDeclarationOut","shift","visitAtRule","atRuleNode","visitAtRuleOut","visitMixinDefinition","mixinDefinitionNode","visitMixinDefinitionOut","visitRuleset","rulesetNode","visitRulesetOut","visitMedia","mediaNode","visitMediaOut","SetTreeVisibilityVisitor","visible","ExtendFinderVisitor","allExtendsStack","allExtends","extend","extendList","allSelectorsExtendList","ruleCnt","Extend","extendOnEveryPath","selectorPath","selExtendList","allSelectorsExtend","foundExtends","findSelfSelectors","ruleset","firstExtendOnThisSelectorPath","selectors","ProcessExtendsVisitor","extendFinder","extendIndices","doExtendChaining","newRoot","checkExtendsForNonMatched","indices","filter","hasFoundMatches","parent_ids","selector","extendsList","extendsListTarget","iterationCount","extendIndex","targetExtendIndex","matches","newSelector","targetExtend","newExtend","extendsToAdd","extendVisitor","object_id","selfSelectors","findMatch","selfSelector","extendSelector","option","extendChainCount","selectorOne","selectorTwo","ruleNode","visitSelector","selectorNode","pathIndex","selectorsToAdd","extendedSelectors","haystackSelectorPath","haystackSelectorIndex","hackstackSelector","hackstackElementIndex","haystackElement","targetCombinator","potentialMatch","needleElements","elements","potentialMatches","allowBefore","matched","initialCombinator","isElementValuesEqual","finished","allowAfter","endPathIndex","endPathElementIndex","elementValue1","elementValue2","Attribute","Selector","replacementSelector","matchIndex","firstElement","newElements","currentSelectorPathIndex","currentSelectorPathElementIndex","currentValue","derived","createDerived","newAllExtends","lastIndex","JoinSelectorVisitor","getIsOutput","joinSelectors","multiMedia","isRooted","CSSVisitorUtils","_context","containsSilentNonBlockedChild","bodyRules","rule","isSilent","keepOnlyVisibleChilds","owner","thing","hasVisibleSelector","resolveVisibility","compiledRulesBody","isVisibleRuleset","firstRoot","ToCSSVisitor","utils","variable","mixinNode","visitExtend","extendNode","visitComment","commentNode","originalRules","visitAtRuleWithBody","visitAtRuleWithoutBody","visitAnonymous","anonymousNode","nodeRules","hasFakeRuleset","getBodyRules","_mergeRules","name","charset","debugInfo","comment","Comment","checkValidNodes","isRoot","Declaration","Call","allowRoot","rulesets","_compileRulesetPaths","nodeRuleCnt","_removeDuplicateRules","ruleList","ruleCache","ruleCSS","groups","groupsArr","i_3","merge","group","result_1","space_1","comma_1","Expression","important","Value","visitors","MarkVisibleSelectorsVisitor","ExtendVisitor","getParserInput","furthest","furthestPossibleErrorMessage","chunks","current","currentPos","saveStack","parserInput","skipWhitespace","nextChar","oldi","oldj","curr","endIndex","mem","inp","charCodeAt","autoCommentAbsorb","isLineComment","nextNewLine","text","commentStore","nextStarSlash","save","restore","possibleErrorMessage","state","forget","isWhitespace","offset","pos","code","$re","tok","exec","$char","$peekChar","$str","tokLength","$quoted","startChar","currentPosition","$parseUntil","testChar","quote","returnVal","inComment","blockDepth","blockStack","parseGroups","startPos","lastPos","loop","char","expected","peek","peekChar","currentChar","prevChar","getInput","peekNotNumeric","start","chunkInput","failFunction","fail","lastOpening","lastOpeningParen","lastMultiComment","lastMultiCommentEndBrace","chunkerCurrentIndex","currentChunkStartIndex","cc","cc2","len","level","parenLevel","emitFrom","emitChunk","force","String","fromCharCode","chunker","end","furthestReachedEnd","furthestChar","functionRegistry","makeRegistry","base","_data","addMultiple","_this","keys","getLocalFunctions","inherit","MediaSyntaxOptions","queryInParens","ContainerSyntaxOptions","Anonymous","mapLines","rulesetLike","Boolean","Parser","currentIndex","parsers","expect","arg","expectChar","getDebugInfo","lineNumber","fileName","parseNode","parseList","returnNodes","parser","additionalData","globalVars","modifyVars","ignored","err","preText","disablePluginRule","plugin","serializeVars","preProcessors","getPreProcessors","process","banner","contentsIgnoredChars","Ruleset","primary","endInfo","processImports","mixin","extendRule","definition","declaration","variableCall","entities","atrule","foundSemiColon","mixinLookup","quoted","forceEscaped","isEscaped","k","customFuncCall","stop","declarationCall","validCall","substring","ruleProperty","f","ieAlpha","boolean","condition","if","prevArgs","isSemiColonSeparated","argsComma","argsSemiColon","detachedRuleset","assignment","expression","literal","dimension","unicodeDescriptor","entity","url","property","Variable","Property","ch","variableCurly","curly","propertyCurly","colorKeyword","ud","javascript","js","escape","parsedName","lookups","inValue","ruleLookups","VariableCall","NamespaceValue","isRule","element","getLookup","hasParens","elem","elemIndex","re","isCall","expressionContainsNamed","nameLoop","expand","returner","variadic","expressions","hasSep","throwAwayComments","cond","params","argInfo","conditions","block","lookupValue","Quoted","attribute","slashedCombinator","isLess","when","ele","cif","content","blockRuleset","Definition","DetachedRuleset","dumpLineNumbers","strictImports","hasDR","permissiveValue","anonymousValue","untilTokens","done","testCurrentChar","startsWith","variableRegex","propRegex","import","features","dir","importOptions","mediaFeatures","o","optionName","importOption","mediaFeature","syntaxOptions","rangeP","atomicCondition","rvalue","lvalue","prepareAndGetNestableAtRule","treeType","atRule","nestableAtRule","Media","Container","pluginArgs","nonVendorSpecificName","hasIdentifier","hasExpression","hasUnknown","hasBlock","sub","addition","parens","multiplication","operation","isSpaced","operand","parensInOp","needsParens","logical","next","conditionAnd","negatedCondition","parenthesisCondition","negate","body","me","tryConditionFollowedByParenthesis","preparsedCond","delim","simpleProperty","vars","name_1","evaldCondition","getElements","mixinElements_","utils.isNullOrUndefined","mediaEmpty","els","importManager","createEmptySelectors","el","sels","olen","mixinElements","isJustParentSelector","Keyword","True","False","MATH","asComment","ctx","asMediaQuery","filenameWithProtocol","lineSeparator","lastRule","prevMath","evaldValue","mathBypass","evalName","importantResult","makeImportant","isCompressed","defaultFunc","value_","error_","reset","_lookups","_variables","_properties","isRuleset","selCnt","hasVariable","hasOnePassingSelector","toParseSelectors","startingIndex","selectorFileInfo","utils.flattenArray","subRule","originalRuleset","allowImports","globalFunctionRegistry","ctxFrames","ctxSelectors","evalImports","rsRules","evalFirst","mediaBlockCount","mediaBlocks","resetCache","bubbleSelectors","importRules","matchArgs","matchCondition","lastSelector","_rulesets","variables","hash","properties","name_2","decl","parseValue","lastDeclaration","toParse","transformDeclaration","nodes_1","filtRules","prependRule","find","foundMixins","ruleNodes","tabLevel","sep","tabRuleStr","tabSetStr","charsetNodeIndex","importNodeIndex","isCharset","pathCnt","pathSubCnt","currentLastRule","joinSelector","createParenthesis","elementsToPak","originalElement","replacementParen","insideParent","createSelector","containedElement","addReplacementIntoPath","beginningPath","addPath","replacedElement","originalSelector","newSelectorPath","newJoinedSelector","parentEl","restOfPath","addAllReplacementsIntoPath","addPaths","mergeElementsOnToSelectors","sel","deriveSelector","deriveFrom","newPaths","replaceParentSelector","inSelector","currentElements","newSelectors","selectorsMultiplied","maybeSelector","hadParentSelector","nestedSelector","replaced","nestedPaths","replacedNewSelectors","concatenated","AtRule","outputRuleset","mediaPathBackup","mediaBlocksBackup","mediaPath","callEval","Unit","numerator","denominator","backupUnit","sort","strictUnits","returnStr","is","unitString","toUpperCase","isLength","RegExp","isSingular","usedUnits","mapUnit","groupName","atomicUnit","cancel","counter","count","Dimension","unit","parseFloat","isNaN","toColor","strValue","convertTo","unify","conversions","targetUnit","applyUnit","derivedConversions","Operation","operands","noSpacing","returnValue","doubleParen","functionCaller","isValid","evalArgs","commentFilter","subNodes","calc","currentMathContext","funcCaller","FunctionCaller","columnNumber","evaluating","frame","fun","mergeRules","less","vArr","escaped","containsVariables","that","iterativeReplace","regexp","replacementFnc","evaluatedValue","URL","isEvald","urlArgs","NestableAtRulePrototype","evalTop","evalNested","permute","fragment","rest","Import","pathValue","reference","evalPath","doEval","registry","newImport","JsEvalNode","evaluateJavaScript","evalContext","javascriptEnabled","jsify","toJS","JavaScript","string","Assignment","Condition","QueryInParens","op2","mvalue","mvalues","variableDeclaration","mvalueCopy","UnicodeDescriptor","Negative","next_id","selectorElements","selfElements","ruleCall","arity","optionalParameters","required","evalParams","mixinEnv","evaldArguments","varargs","isNamedFound","argIndex","argsLength","evalCall","_arguments","mixinFrames","allArgsCnt","requiredArgsCnt","MixinCall","mixins","mixinPath","argValue","isRecursive","isOneFound","candidate","defaultResult","noArgumentsFilter","candidates","conditionResult","calcDefGroup","namespace","MixinDefinition","format","newRules","_setVisibilityToReplacement","replacement","AbstractFileManager","lastIndexOf","tryAppendExtension","ext","supportsSync","alwaysMakePathsAbsolute","isPathAbsolute","basePath","laterPath","pathDiff","baseUrl","urlDirectories","baseUrlDirectories","urlParts","extractUrlParts","baseUrlParts","diff","hostPart","directories","urlPartsRegex","rawDirectories","rawPath","fileUrl","AbstractPluginLoader","require","evalPlugin","pluginOptions","pluginObj","localModule","shortname","FileManager","trySetOptions","use","exports","loader","validatePlugin","minVersion","compareVersion","addPlugin","setOptions","version","versionToString","aVersion","bVersion","versionString","printUsage","plugins","If","trueValue","falseValue","isdefined","colorFunctions","boolean$1","hsla","origColor","hsl","number","rgba","size","m1","m2","hue","hsv","hsva","vs","floor","perm","saturation","lightness","hsvhue","hsvsaturation","hsvvalue","luminance","saturate","amount","method","desaturate","lighten","darken","fadein","fadeout","fade","spin","mix","color1","color2","weight","w","w1","w2","greyscale","contrast","dark","light","threshold","argb","tint","shade","colorBlend","mode","cb","cs","cr","ab","as","colorBlendModeFunctions","multiply","screen","overlay","softlight","sqrt","hardlight","difference","abs","exclusion","average","negation","getItemsFromNode","list","_SELF","~","expr","_i","values","range","step","stepValue","each","rs","iterator","tryEval","Quote","valueName","keyName","indexName","MathHelper","fn","mathFunctions","ceil","sin","cos","atan","asin","acos","mathHelper","fraction","num","minMax","isMin","currentUnified","referenceUnified","unitStatic","unitClone","order","convert","pi","mod","y","percentage","evaluated","encodeURI","pattern","flags","%","token","encodeURIComponent","isa","Type","isunit","types","isruleset","iscolor","isnumber","isstring","iskeyword","isurl","ispixel","ispercentage","isem","get-unit","styleExpression","style$1","style","colorBlending","fallback","functionThis","data-uri","mimetypeNode","filePathNode","mimetype","filePath","entryPath","fragmentStart","utils.clone","rawBuffer","useBase64","mimeLookup","charsetLookup","fileSync","loadFileSync","buf","encodeBase64","uri","dataUri","svg-gradient","direction","stops","gradientDirectionSvg","position","positionValue","gradientType","rectangleDimension","renderEnv","directionValue","throwArgumentDescriptor","transformTree","evaldRoot","evalEnv","visitorIterator","preEvalVisitors","first","isPreEvalVisitor","isPreVisitor","pm","PluginManager","postProcessors","installedPlugins","pluginCache","Loader","PluginLoader","addPlugins","install","addVisitor","addPreProcessor","preProcessor","priority","indexToInsertAt","addPostProcessor","postProcessor","manager","getPostProcessors","getVisitors","PluginManagerFactory","newFactory","parseNodeVersion_1","major","minor","patch","pre","build","lessRoot","sourceMapOutput","sourceMapBuilder","parseTree","SourceMapBuilder","ParseTree","toCSSOptions","sourceMap","file_1","getExternalSourceMap","files","rootFilename","SourceMapOutput","contentsIgnoredCharsMap","contentsMap","sourceMapFilename","sourceMapURL","outputFilename","sourceMapOutputFilename","sourceMapBasepath","sourceMapRootpath","outputSourceFiles","sourceMapGenerator","sourceMapFileInline","disableSourcemapAnnotation","sourceMapInputFilename","normalizeFilename","removeBasepath","getCSSAppendage","setExternalSourceMap","isInline","getSourceMapURL","getOutputFilename","getInputFilename","_css","_rootNode","_contentsMap","_contentsIgnoredCharsMap","_sourceMapFilename","_outputFilename","_sourceMapBasepath","_sourceMapRootpath","_outputSourceFiles","_sourceMapGeneratorConstructor","getSourceMapGenerator","_lineNumber","_column","sourceLines","columns","sourceColumns","inputSource","_sourceMapGenerator","addMapping","generated","source","file","sourceRoot","setSourceContent","sourceMapContent","stringify","toJSON","ImportManager","rootFileInfo","mime","queue","pluginLoader","fileParsedFunc","importedEqualsRoot","newFileInfo","loadedFile","promise","loadFileCallback","resolvedFilename","newEnv","syncImport","loadPluginSync","loadPlugin","loadFile","then","render","utils.copyOptions","self_1","Promise","resolve","reject","Render","context_1","pluginManager_1","reUsePluginManager","imports_1","evalResult","fileContent","parseVersion","initial","ctor","api","fileCache","doXHR","errback","xhr","XMLHttpRequest","async","isFileProtocol","fileAsync","handleResponse","status","responseText","getResponseHeader","overrideMimeType","open","setRequestHeader","send","onreadystatechange","readyState","supports","clearFileCache","location","useFileCache","lessText_1","webInfo","lastModified","Date","FM","log","fulfill","catch","ErrorReporting","rootHref","errorReporting","errors","errorline","classname","logLevel","errorConsole","timer","filenameNoPath","className","innerHTML","env","setInterval","replaceChild","clearInterval","errorHTML","remove","removeErrorHTML","depends","lint","insecure","protocol","poll","hostname","port","onReady","addDefaultOptions","LESS_PLUGINS","loggers","console","LogListener","cache","localStorage","setCSS","setItem","getCSS","getItem","timestamp","valueOf","Cache","imageSize","imageFunctions","image-size","image-width","image-height","ImageSize","typePattern","thisArg","curryArgs","loadStyles","instanceOptions","loadStyleSheet","reload","remaining","local","loadInitialFileCallback","loadStyleSheets","sheets","watch","watchMode","watchTimer","unwatch","registerStylesheetsImmediately","links","rel","registerStylesheets","record","refresh","startTime","endTime","totalMilliseconds","remainingSheets","refreshStyles","resolveOrReject","pageLoadFinished"],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"less.min.js","sources":["../src/less-browser/utils.js","../src/less-browser/browser.js","../src/less/logger.js","../src/less/environment/environment.js","../src/less/data/colors.js","../src/less/data/unit-conversions.js","../src/less/data/index.js","../src/less/tree/node.js","../src/less/tree/color.js","../src/less/tree/paren.js","../src/less/tree/combinator.js","../src/less/tree/element.js","../src/less/constants.js","../../../node_modules/.pnpm/is-what@3.14.1/node_modules/is-what/dist/index.esm.js","../../../node_modules/.pnpm/copy-anything@2.0.6/node_modules/copy-anything/dist/index.es.js","../src/less/utils.js","../src/less/less-error.js","../src/less/visitors/visitor.js","../src/less/contexts.js","../src/less/visitors/import-sequencer.js","../src/less/visitors/import-visitor.js","../src/less/visitors/set-tree-visibility-visitor.js","../src/less/visitors/extend-visitor.js","../src/less/visitors/join-selector-visitor.js","../src/less/visitors/to-css-visitor.js","../src/less/visitors/index.js","../src/less/parser/parser-input.js","../src/less/parser/chunker.js","../src/less/functions/function-registry.js","../src/less/tree/atrule-syntax.js","../src/less/tree/anonymous.js","../src/less/parser/parser.js","../src/less/tree/selector.js","../src/less/tree/value.js","../src/less/tree/keyword.js","../src/less/tree/declaration.js","../src/less/tree/debug-info.js","../src/less/tree/comment.js","../src/less/functions/default.js","../src/less/tree/ruleset.js","../src/less/tree/atrule.js","../src/less/tree/detached-ruleset.js","../src/less/tree/unit.js","../src/less/tree/dimension.js","../src/less/tree/operation.js","../../../node_modules/.pnpm/tslib@2.8.1/node_modules/tslib/tslib.es6.mjs","../src/less/tree/expression.js","../src/less/functions/function-caller.js","../src/less/tree/call.js","../src/less/tree/variable.js","../src/less/tree/property.js","../src/less/tree/attribute.js","../src/less/tree/quoted.js","../src/less/tree/url.js","../src/less/tree/nested-at-rule.js","../src/less/tree/media.js","../src/less/tree/import.js","../src/less/tree/js-eval-node.js","../src/less/tree/javascript.js","../src/less/tree/assignment.js","../src/less/tree/condition.js","../src/less/tree/query-in-parens.js","../src/less/tree/container.js","../src/less/tree/unicode-descriptor.js","../src/less/tree/negative.js","../src/less/tree/extend.js","../src/less/tree/variable-call.js","../src/less/tree/namespace-value.js","../src/less/tree/mixin-definition.js","../src/less/tree/mixin-call.js","../src/less/tree/index.js","../src/less/environment/abstract-file-manager.js","../src/less/environment/abstract-plugin-loader.js","../src/less/functions/boolean.js","../src/less/functions/color.js","../src/less/functions/color-blending.js","../src/less/functions/data-uri.js","../src/less/functions/list.js","../src/less/functions/math-helper.js","../src/less/functions/math.js","../src/less/functions/number.js","../src/less/functions/string.js","../src/less/functions/types.js","../src/less/functions/style.js","../src/less/functions/index.js","../src/less/functions/svg.js","../src/less/transform-tree.js","../src/less/plugin-manager.js","../../../node_modules/.pnpm/parse-node-version@1.0.1/node_modules/parse-node-version/index.js","../src/less-browser/file-manager.js","../src/less/index.js","../src/less/parse-tree.js","../src/less/source-map-builder.js","../src/less/source-map-output.js","../src/less/import-manager.js","../src/less/render.js","../src/less/parse.js","../src/less-browser/plugin-loader.js","../src/less-browser/log-listener.js","../src/less-browser/error-reporting.js","../src/less-browser/bootstrap.js","../src/less/default-options.js","../src/less-browser/add-default-options.js","../src/less-browser/index.js","../src/less-browser/cache.js","../src/less-browser/image-size.js"],"sourcesContent":["\nexport function extractId(href) {\n return href.replace(/^[a-z-]+:\\/+?[^/]+/, '') // Remove protocol & domain\n .replace(/[?&]livereload=\\w+/, '') // Remove LiveReload cachebuster\n .replace(/^\\//, '') // Remove root /\n .replace(/\\.[a-zA-Z]+$/, '') // Remove simple extension\n .replace(/[^.\\w-]+/g, '-') // Replace illegal characters\n .replace(/\\./g, ':'); // Replace dots with colons(for valid id)\n}\n\nexport function addDataAttr(options, tag) {\n if (!tag) {return;} // in case of tag is null or undefined\n for (const opt in tag.dataset) {\n if (Object.prototype.hasOwnProperty.call(tag.dataset, opt)) {\n if (opt === 'env' || opt === 'dumpLineNumbers' || opt === 'rootpath' || opt === 'errorReporting') {\n options[opt] = tag.dataset[opt];\n } else {\n try {\n options[opt] = JSON.parse(tag.dataset[opt]);\n }\n catch (_) {}\n }\n }\n }\n}\n","import * as utils from './utils';\n\nexport default {\n createCSS: function (document, styles, sheet) {\n // Strip the query-string\n const href = sheet.href || '';\n\n // If there is no title set, use the filename, minus the extension\n const id = `less:${sheet.title || utils.extractId(href)}`;\n\n // If this has already been inserted into the DOM, we may need to replace it\n const oldStyleNode = document.getElementById(id);\n let keepOldStyleNode = false;\n\n // Create a new stylesheet node for insertion or (if necessary) replacement\n const styleNode = document.createElement('style');\n styleNode.setAttribute('type', 'text/css');\n if (sheet.media) {\n styleNode.setAttribute('media', sheet.media);\n }\n styleNode.id = id;\n\n if (!styleNode.styleSheet) {\n styleNode.appendChild(document.createTextNode(styles));\n\n // If new contents match contents of oldStyleNode, don't replace oldStyleNode\n keepOldStyleNode = (oldStyleNode !== null && oldStyleNode.childNodes.length > 0 && styleNode.childNodes.length > 0 &&\n oldStyleNode.firstChild.nodeValue === styleNode.firstChild.nodeValue);\n }\n\n const head = document.getElementsByTagName('head')[0];\n\n // If there is no oldStyleNode, just append; otherwise, only append if we need\n // to replace oldStyleNode with an updated stylesheet\n if (oldStyleNode === null || keepOldStyleNode === false) {\n const nextEl = sheet && sheet.nextSibling || null;\n if (nextEl) {\n nextEl.parentNode.insertBefore(styleNode, nextEl);\n } else {\n head.appendChild(styleNode);\n }\n }\n if (oldStyleNode && keepOldStyleNode === false) {\n oldStyleNode.parentNode.removeChild(oldStyleNode);\n }\n\n // For IE.\n // This needs to happen *after* the style element is added to the DOM, otherwise IE 7 and 8 may crash.\n // See http://social.msdn.microsoft.com/Forums/en-US/7e081b65-878a-4c22-8e68-c10d39c2ed32/internet-explorer-crashes-appending-style-element-to-head\n if (styleNode.styleSheet) {\n try {\n styleNode.styleSheet.cssText = styles;\n } catch (e) {\n throw new Error('Couldn\\'t reassign styleSheet.cssText.');\n }\n }\n },\n currentScript: function(window) {\n const document = window.document;\n return document.currentScript || (() => {\n const scripts = document.getElementsByTagName('script');\n return scripts[scripts.length - 1];\n })();\n }\n};\n","export default {\n error: function(msg) {\n this._fireEvent('error', msg);\n },\n warn: function(msg) {\n this._fireEvent('warn', msg);\n },\n info: function(msg) {\n this._fireEvent('info', msg);\n },\n debug: function(msg) {\n this._fireEvent('debug', msg);\n },\n addListener: function(listener) {\n this._listeners.push(listener);\n },\n removeListener: function(listener) {\n for (let i = 0; i < this._listeners.length; i++) {\n if (this._listeners[i] === listener) {\n this._listeners.splice(i, 1);\n return;\n }\n }\n },\n _fireEvent: function(type, msg) {\n for (let i = 0; i < this._listeners.length; i++) {\n const logFunction = this._listeners[i][type];\n if (logFunction) {\n logFunction(msg);\n }\n }\n },\n _listeners: []\n};\n","/**\n * @todo Document why this abstraction exists, and the relationship between\n * environment, file managers, and plugin manager\n */\n\nimport logger from '../logger';\n\nclass Environment {\n constructor(externalEnvironment, fileManagers) {\n this.fileManagers = fileManagers || [];\n externalEnvironment = externalEnvironment || {};\n\n const optionalFunctions = ['encodeBase64', 'mimeLookup', 'charsetLookup', 'getSourceMapGenerator'];\n const requiredFunctions = [];\n const functions = requiredFunctions.concat(optionalFunctions);\n\n for (let i = 0; i < functions.length; i++) {\n const propName = functions[i];\n const environmentFunc = externalEnvironment[propName];\n if (environmentFunc) {\n this[propName] = environmentFunc.bind(externalEnvironment);\n } else if (i < requiredFunctions.length) {\n this.warn(`missing required function in environment - ${propName}`);\n }\n }\n }\n\n getFileManager(filename, currentDirectory, options, environment, isSync) {\n\n if (!filename) {\n logger.warn('getFileManager called with no filename.. Please report this issue. continuing.');\n }\n if (currentDirectory === undefined) {\n logger.warn('getFileManager called with null directory.. Please report this issue. continuing.');\n }\n\n let fileManagers = this.fileManagers;\n if (options.pluginManager) {\n fileManagers = [].concat(fileManagers).concat(options.pluginManager.getFileManagers());\n }\n for (let i = fileManagers.length - 1; i >= 0 ; i--) {\n const fileManager = fileManagers[i];\n if (fileManager[isSync ? 'supportsSync' : 'supports'](filename, currentDirectory, options, environment)) {\n return fileManager;\n }\n }\n return null;\n }\n\n addFileManager(fileManager) {\n this.fileManagers.push(fileManager);\n }\n\n clearFileManagers() {\n this.fileManagers = [];\n }\n}\n\nexport default Environment;\n","export default {\n 'aliceblue':'#f0f8ff',\n 'antiquewhite':'#faebd7',\n 'aqua':'#00ffff',\n 'aquamarine':'#7fffd4',\n 'azure':'#f0ffff',\n 'beige':'#f5f5dc',\n 'bisque':'#ffe4c4',\n 'black':'#000000',\n 'blanchedalmond':'#ffebcd',\n 'blue':'#0000ff',\n 'blueviolet':'#8a2be2',\n 'brown':'#a52a2a',\n 'burlywood':'#deb887',\n 'cadetblue':'#5f9ea0',\n 'chartreuse':'#7fff00',\n 'chocolate':'#d2691e',\n 'coral':'#ff7f50',\n 'cornflowerblue':'#6495ed',\n 'cornsilk':'#fff8dc',\n 'crimson':'#dc143c',\n 'cyan':'#00ffff',\n 'darkblue':'#00008b',\n 'darkcyan':'#008b8b',\n 'darkgoldenrod':'#b8860b',\n 'darkgray':'#a9a9a9',\n 'darkgrey':'#a9a9a9',\n 'darkgreen':'#006400',\n 'darkkhaki':'#bdb76b',\n 'darkmagenta':'#8b008b',\n 'darkolivegreen':'#556b2f',\n 'darkorange':'#ff8c00',\n 'darkorchid':'#9932cc',\n 'darkred':'#8b0000',\n 'darksalmon':'#e9967a',\n 'darkseagreen':'#8fbc8f',\n 'darkslateblue':'#483d8b',\n 'darkslategray':'#2f4f4f',\n 'darkslategrey':'#2f4f4f',\n 'darkturquoise':'#00ced1',\n 'darkviolet':'#9400d3',\n 'deeppink':'#ff1493',\n 'deepskyblue':'#00bfff',\n 'dimgray':'#696969',\n 'dimgrey':'#696969',\n 'dodgerblue':'#1e90ff',\n 'firebrick':'#b22222',\n 'floralwhite':'#fffaf0',\n 'forestgreen':'#228b22',\n 'fuchsia':'#ff00ff',\n 'gainsboro':'#dcdcdc',\n 'ghostwhite':'#f8f8ff',\n 'gold':'#ffd700',\n 'goldenrod':'#daa520',\n 'gray':'#808080',\n 'grey':'#808080',\n 'green':'#008000',\n 'greenyellow':'#adff2f',\n 'honeydew':'#f0fff0',\n 'hotpink':'#ff69b4',\n 'indianred':'#cd5c5c',\n 'indigo':'#4b0082',\n 'ivory':'#fffff0',\n 'khaki':'#f0e68c',\n 'lavender':'#e6e6fa',\n 'lavenderblush':'#fff0f5',\n 'lawngreen':'#7cfc00',\n 'lemonchiffon':'#fffacd',\n 'lightblue':'#add8e6',\n 'lightcoral':'#f08080',\n 'lightcyan':'#e0ffff',\n 'lightgoldenrodyellow':'#fafad2',\n 'lightgray':'#d3d3d3',\n 'lightgrey':'#d3d3d3',\n 'lightgreen':'#90ee90',\n 'lightpink':'#ffb6c1',\n 'lightsalmon':'#ffa07a',\n 'lightseagreen':'#20b2aa',\n 'lightskyblue':'#87cefa',\n 'lightslategray':'#778899',\n 'lightslategrey':'#778899',\n 'lightsteelblue':'#b0c4de',\n 'lightyellow':'#ffffe0',\n 'lime':'#00ff00',\n 'limegreen':'#32cd32',\n 'linen':'#faf0e6',\n 'magenta':'#ff00ff',\n 'maroon':'#800000',\n 'mediumaquamarine':'#66cdaa',\n 'mediumblue':'#0000cd',\n 'mediumorchid':'#ba55d3',\n 'mediumpurple':'#9370d8',\n 'mediumseagreen':'#3cb371',\n 'mediumslateblue':'#7b68ee',\n 'mediumspringgreen':'#00fa9a',\n 'mediumturquoise':'#48d1cc',\n 'mediumvioletred':'#c71585',\n 'midnightblue':'#191970',\n 'mintcream':'#f5fffa',\n 'mistyrose':'#ffe4e1',\n 'moccasin':'#ffe4b5',\n 'navajowhite':'#ffdead',\n 'navy':'#000080',\n 'oldlace':'#fdf5e6',\n 'olive':'#808000',\n 'olivedrab':'#6b8e23',\n 'orange':'#ffa500',\n 'orangered':'#ff4500',\n 'orchid':'#da70d6',\n 'palegoldenrod':'#eee8aa',\n 'palegreen':'#98fb98',\n 'paleturquoise':'#afeeee',\n 'palevioletred':'#d87093',\n 'papayawhip':'#ffefd5',\n 'peachpuff':'#ffdab9',\n 'peru':'#cd853f',\n 'pink':'#ffc0cb',\n 'plum':'#dda0dd',\n 'powderblue':'#b0e0e6',\n 'purple':'#800080',\n 'rebeccapurple':'#663399',\n 'red':'#ff0000',\n 'rosybrown':'#bc8f8f',\n 'royalblue':'#4169e1',\n 'saddlebrown':'#8b4513',\n 'salmon':'#fa8072',\n 'sandybrown':'#f4a460',\n 'seagreen':'#2e8b57',\n 'seashell':'#fff5ee',\n 'sienna':'#a0522d',\n 'silver':'#c0c0c0',\n 'skyblue':'#87ceeb',\n 'slateblue':'#6a5acd',\n 'slategray':'#708090',\n 'slategrey':'#708090',\n 'snow':'#fffafa',\n 'springgreen':'#00ff7f',\n 'steelblue':'#4682b4',\n 'tan':'#d2b48c',\n 'teal':'#008080',\n 'thistle':'#d8bfd8',\n 'tomato':'#ff6347',\n 'turquoise':'#40e0d0',\n 'violet':'#ee82ee',\n 'wheat':'#f5deb3',\n 'white':'#ffffff',\n 'whitesmoke':'#f5f5f5',\n 'yellow':'#ffff00',\n 'yellowgreen':'#9acd32'\n};","export default {\n length: {\n 'm': 1,\n 'cm': 0.01,\n 'mm': 0.001,\n 'in': 0.0254,\n 'px': 0.0254 / 96,\n 'pt': 0.0254 / 72,\n 'pc': 0.0254 / 72 * 12\n },\n duration: {\n 's': 1,\n 'ms': 0.001\n },\n angle: {\n 'rad': 1 / (2 * Math.PI),\n 'deg': 1 / 360,\n 'grad': 1 / 400,\n 'turn': 1\n }\n};","import colors from './colors';\nimport unitConversions from './unit-conversions';\n\nexport default { colors, unitConversions };\n","/**\n * The reason why Node is a class and other nodes simply do not extend\n * from Node (since we're transpiling) is due to this issue:\n * \n * @see https://github.com/less/less.js/issues/3434\n */\nclass Node {\n constructor() {\n this.parent = null;\n this.visibilityBlocks = undefined;\n this.nodeVisible = undefined;\n this.rootNode = null;\n this.parsed = null;\n }\n\n get currentFileInfo() {\n return this.fileInfo();\n }\n\n get index() {\n return this.getIndex();\n }\n\n setParent(nodes, parent) {\n function set(node) {\n if (node && node instanceof Node) {\n node.parent = parent;\n }\n }\n if (Array.isArray(nodes)) {\n nodes.forEach(set);\n }\n else {\n set(nodes);\n }\n }\n\n getIndex() {\n return this._index || (this.parent && this.parent.getIndex()) || 0;\n }\n\n fileInfo() {\n return this._fileInfo || (this.parent && this.parent.fileInfo()) || {};\n }\n\n isRulesetLike() { return false; }\n\n toCSS(context) {\n const strs = [];\n this.genCSS(context, {\n // remove when genCSS has JSDoc types\n // eslint-disable-next-line no-unused-vars\n add: function(chunk, fileInfo, index) {\n strs.push(chunk);\n },\n isEmpty: function () {\n return strs.length === 0;\n }\n });\n return strs.join('');\n }\n\n genCSS(context, output) {\n output.add(this.value);\n }\n\n accept(visitor) {\n this.value = visitor.visit(this.value);\n }\n\n eval() { return this; }\n\n _operate(context, op, a, b) {\n switch (op) {\n case '+': return a + b;\n case '-': return a - b;\n case '*': return a * b;\n case '/': return a / b;\n }\n }\n\n fround(context, value) {\n const precision = context && context.numPrecision;\n // add \"epsilon\" to ensure numbers like 1.000000005 (represented as 1.000000004999...) are properly rounded:\n return (precision) ? Number((value + 2e-16).toFixed(precision)) : value;\n }\n\n static compare(a, b) {\n /* returns:\n -1: a < b\n 0: a = b\n 1: a > b\n and *any* other value for a != b (e.g. undefined, NaN, -2 etc.) */\n\n if ((a.compare) &&\n // for \"symmetric results\" force toCSS-based comparison\n // of Quoted or Anonymous if either value is one of those\n !(b.type === 'Quoted' || b.type === 'Anonymous')) {\n return a.compare(b);\n } else if (b.compare) {\n return -b.compare(a);\n } else if (a.type !== b.type) {\n return undefined;\n }\n\n a = a.value;\n b = b.value;\n if (!Array.isArray(a)) {\n return a === b ? 0 : undefined;\n }\n if (a.length !== b.length) {\n return undefined;\n }\n for (let i = 0; i < a.length; i++) {\n if (Node.compare(a[i], b[i]) !== 0) {\n return undefined;\n }\n }\n return 0;\n }\n\n static numericCompare(a, b) {\n return a < b ? -1\n : a === b ? 0\n : a > b ? 1 : undefined;\n }\n\n // Returns true if this node represents root of ast imported by reference\n blocksVisibility() {\n if (this.visibilityBlocks === undefined) {\n this.visibilityBlocks = 0;\n }\n return this.visibilityBlocks !== 0;\n }\n\n addVisibilityBlock() {\n if (this.visibilityBlocks === undefined) {\n this.visibilityBlocks = 0;\n }\n this.visibilityBlocks = this.visibilityBlocks + 1;\n }\n\n removeVisibilityBlock() {\n if (this.visibilityBlocks === undefined) {\n this.visibilityBlocks = 0;\n }\n this.visibilityBlocks = this.visibilityBlocks - 1;\n }\n\n // Turns on node visibility - if called node will be shown in output regardless\n // of whether it comes from import by reference or not\n ensureVisibility() {\n this.nodeVisible = true;\n }\n\n // Turns off node visibility - if called node will NOT be shown in output regardless\n // of whether it comes from import by reference or not\n ensureInvisibility() {\n this.nodeVisible = false;\n }\n\n // return values:\n // false - the node must not be visible\n // true - the node must be visible\n // undefined or null - the node has the same visibility as its parent\n isVisible() {\n return this.nodeVisible;\n }\n\n visibilityInfo() {\n return {\n visibilityBlocks: this.visibilityBlocks,\n nodeVisible: this.nodeVisible\n };\n }\n\n copyVisibilityInfo(info) {\n if (!info) {\n return;\n }\n this.visibilityBlocks = info.visibilityBlocks;\n this.nodeVisible = info.nodeVisible;\n }\n}\n\nexport default Node;\n","import Node from './node';\nimport colors from '../data/colors';\n\n//\n// RGB Colors - #ff0014, #eee\n//\nconst Color = function(rgb, a, originalForm) {\n const self = this;\n //\n // The end goal here, is to parse the arguments\n // into an integer triplet, such as `128, 255, 0`\n //\n // This facilitates operations and conversions.\n //\n if (Array.isArray(rgb)) {\n this.rgb = rgb;\n } else if (rgb.length >= 6) {\n this.rgb = [];\n rgb.match(/.{2}/g).map(function (c, i) {\n if (i < 3) {\n self.rgb.push(parseInt(c, 16));\n } else {\n self.alpha = (parseInt(c, 16)) / 255;\n }\n });\n } else {\n this.rgb = [];\n rgb.split('').map(function (c, i) {\n if (i < 3) {\n self.rgb.push(parseInt(c + c, 16));\n } else {\n self.alpha = (parseInt(c + c, 16)) / 255;\n }\n });\n }\n this.alpha = this.alpha || (typeof a === 'number' ? a : 1);\n if (typeof originalForm !== 'undefined') {\n this.value = originalForm;\n }\n}\n\nColor.prototype = Object.assign(new Node(), {\n type: 'Color',\n\n luma() {\n let r = this.rgb[0] / 255, g = this.rgb[1] / 255, b = this.rgb[2] / 255;\n\n r = (r <= 0.03928) ? r / 12.92 : Math.pow(((r + 0.055) / 1.055), 2.4);\n g = (g <= 0.03928) ? g / 12.92 : Math.pow(((g + 0.055) / 1.055), 2.4);\n b = (b <= 0.03928) ? b / 12.92 : Math.pow(((b + 0.055) / 1.055), 2.4);\n\n return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n },\n\n genCSS(context, output) {\n output.add(this.toCSS(context));\n },\n\n toCSS(context, doNotCompress) {\n const compress = context && context.compress && !doNotCompress;\n let color;\n let alpha;\n let colorFunction;\n let args = [];\n\n // `value` is set if this color was originally\n // converted from a named color string so we need\n // to respect this and try to output named color too.\n alpha = this.fround(context, this.alpha);\n\n if (this.value) {\n if (this.value.indexOf('rgb') === 0) {\n if (alpha < 1) {\n colorFunction = 'rgba';\n }\n } else if (this.value.indexOf('hsl') === 0) {\n if (alpha < 1) {\n colorFunction = 'hsla';\n } else {\n colorFunction = 'hsl';\n }\n } else {\n return this.value;\n }\n } else {\n if (alpha < 1) {\n colorFunction = 'rgba';\n }\n }\n\n switch (colorFunction) {\n case 'rgba':\n args = this.rgb.map(function (c) {\n return clamp(Math.round(c), 255);\n }).concat(clamp(alpha, 1));\n break;\n case 'hsla':\n args.push(clamp(alpha, 1));\n // eslint-disable-next-line no-fallthrough\n case 'hsl':\n color = this.toHSL();\n args = [\n this.fround(context, color.h),\n `${this.fround(context, color.s * 100)}%`,\n `${this.fround(context, color.l * 100)}%`\n ].concat(args);\n }\n\n if (colorFunction) {\n // Values are capped between `0` and `255`, rounded and zero-padded.\n return `${colorFunction}(${args.join(`,${compress ? '' : ' '}`)})`;\n }\n\n color = this.toRGB();\n\n if (compress) {\n const splitcolor = color.split('');\n\n // Convert color to short format\n if (splitcolor[1] === splitcolor[2] && splitcolor[3] === splitcolor[4] && splitcolor[5] === splitcolor[6]) {\n color = `#${splitcolor[1]}${splitcolor[3]}${splitcolor[5]}`;\n }\n }\n\n return color;\n },\n\n //\n // Operations have to be done per-channel, if not,\n // channels will spill onto each other. Once we have\n // our result, in the form of an integer triplet,\n // we create a new Color node to hold the result.\n //\n operate(context, op, other) {\n const rgb = new Array(3);\n const alpha = this.alpha * (1 - other.alpha) + other.alpha;\n for (let c = 0; c < 3; c++) {\n rgb[c] = this._operate(context, op, this.rgb[c], other.rgb[c]);\n }\n return new Color(rgb, alpha);\n },\n\n toRGB() {\n return toHex(this.rgb);\n },\n\n toHSL() {\n const r = this.rgb[0] / 255, g = this.rgb[1] / 255, b = this.rgb[2] / 255, a = this.alpha;\n\n const max = Math.max(r, g, b), min = Math.min(r, g, b);\n let h;\n let s;\n const l = (max + min) / 2;\n const d = max - min;\n\n if (max === min) {\n h = s = 0;\n } else {\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n\n switch (max) {\n case r: h = (g - b) / d + (g < b ? 6 : 0); break;\n case g: h = (b - r) / d + 2; break;\n case b: h = (r - g) / d + 4; break;\n }\n h /= 6;\n }\n return { h: h * 360, s, l, a };\n },\n\n // Adapted from http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript\n toHSV() {\n const r = this.rgb[0] / 255, g = this.rgb[1] / 255, b = this.rgb[2] / 255, a = this.alpha;\n\n const max = Math.max(r, g, b), min = Math.min(r, g, b);\n let h;\n let s;\n const v = max;\n\n const d = max - min;\n if (max === 0) {\n s = 0;\n } else {\n s = d / max;\n }\n\n if (max === min) {\n h = 0;\n } else {\n switch (max) {\n case r: h = (g - b) / d + (g < b ? 6 : 0); break;\n case g: h = (b - r) / d + 2; break;\n case b: h = (r - g) / d + 4; break;\n }\n h /= 6;\n }\n return { h: h * 360, s, v, a };\n },\n\n toARGB() {\n return toHex([this.alpha * 255].concat(this.rgb));\n },\n\n compare(x) {\n return (x.rgb &&\n x.rgb[0] === this.rgb[0] &&\n x.rgb[1] === this.rgb[1] &&\n x.rgb[2] === this.rgb[2] &&\n x.alpha === this.alpha) ? 0 : undefined;\n }\n});\n\nColor.fromKeyword = function(keyword) {\n let c;\n const key = keyword.toLowerCase();\n // eslint-disable-next-line no-prototype-builtins\n if (colors.hasOwnProperty(key)) {\n c = new Color(colors[key].slice(1));\n }\n else if (key === 'transparent') {\n c = new Color([0, 0, 0], 0);\n }\n\n if (c) {\n c.value = keyword;\n return c;\n }\n};\n\nfunction clamp(v, max) {\n return Math.min(Math.max(v, 0), max);\n}\n\nfunction toHex(v) {\n return `#${v.map(function (c) {\n c = clamp(Math.round(c), 255);\n return (c < 16 ? '0' : '') + c.toString(16);\n }).join('')}`;\n}\n\nexport default Color;\n","import Node from './node';\n\nconst Paren = function(node) {\n this.value = node;\n};\n\nParen.prototype = Object.assign(new Node(), {\n type: 'Paren',\n\n genCSS(context, output) {\n output.add('(');\n this.value.genCSS(context, output);\n output.add(')');\n },\n\n eval(context) {\n return new Paren(this.value.eval(context));\n }\n});\n\nexport default Paren;\n","import Node from './node';\nconst _noSpaceCombinators = {\n '': true,\n ' ': true,\n '|': true\n};\n\nconst Combinator = function(value) {\n if (value === ' ') {\n this.value = ' ';\n this.emptyOrWhitespace = true;\n } else {\n this.value = value ? value.trim() : '';\n this.emptyOrWhitespace = this.value === '';\n }\n}\n\nCombinator.prototype = Object.assign(new Node(), {\n type: 'Combinator',\n\n genCSS(context, output) {\n const spaceOrEmpty = (context.compress || _noSpaceCombinators[this.value]) ? '' : ' ';\n output.add(spaceOrEmpty + this.value + spaceOrEmpty);\n }\n});\n\nexport default Combinator;\n","import Node from './node';\nimport Paren from './paren';\nimport Combinator from './combinator';\n\nconst Element = function(combinator, value, isVariable, index, currentFileInfo, visibilityInfo) {\n this.combinator = combinator instanceof Combinator ?\n combinator : new Combinator(combinator);\n\n if (typeof value === 'string') {\n this.value = value.trim();\n } else if (value) {\n this.value = value;\n } else {\n this.value = '';\n }\n this.isVariable = isVariable;\n this._index = index;\n this._fileInfo = currentFileInfo;\n this.copyVisibilityInfo(visibilityInfo);\n this.setParent(this.combinator, this);\n}\n\nElement.prototype = Object.assign(new Node(), {\n type: 'Element',\n\n accept(visitor) {\n const value = this.value;\n this.combinator = visitor.visit(this.combinator);\n if (typeof value === 'object') {\n this.value = visitor.visit(value);\n }\n },\n\n eval(context) {\n return new Element(this.combinator,\n this.value.eval ? this.value.eval(context) : this.value,\n this.isVariable,\n this.getIndex(),\n this.fileInfo(), this.visibilityInfo());\n },\n\n clone() {\n return new Element(this.combinator,\n this.value,\n this.isVariable,\n this.getIndex(),\n this.fileInfo(), this.visibilityInfo());\n },\n\n genCSS(context, output) {\n output.add(this.toCSS(context), this.fileInfo(), this.getIndex());\n },\n\n toCSS(context) {\n context = context || {};\n let value = this.value;\n const firstSelector = context.firstSelector;\n if (value instanceof Paren) {\n // selector in parens should not be affected by outer selector\n // flags (breaks only interpolated selectors - see #1973)\n context.firstSelector = true;\n }\n value = value.toCSS ? value.toCSS(context) : value;\n context.firstSelector = firstSelector;\n if (value === '' && this.combinator.value.charAt(0) === '&') {\n return '';\n } else {\n return this.combinator.toCSS(context) + value;\n }\n }\n});\n\nexport default Element;\n","\nexport const Math = {\n ALWAYS: 0,\n PARENS_DIVISION: 1,\n PARENS: 2\n // removed - STRICT_LEGACY: 3\n};\n\nexport const RewriteUrls = {\n OFF: 0,\n LOCAL: 1,\n ALL: 2\n};","/**\r\n * Returns the object type of the given payload\r\n *\r\n * @param {*} payload\r\n * @returns {string}\r\n */\r\nfunction getType(payload) {\r\n return Object.prototype.toString.call(payload).slice(8, -1);\r\n}\r\n/**\r\n * Returns whether the payload is undefined\r\n *\r\n * @param {*} payload\r\n * @returns {payload is undefined}\r\n */\r\nfunction isUndefined(payload) {\r\n return getType(payload) === 'Undefined';\r\n}\r\n/**\r\n * Returns whether the payload is null\r\n *\r\n * @param {*} payload\r\n * @returns {payload is null}\r\n */\r\nfunction isNull(payload) {\r\n return getType(payload) === 'Null';\r\n}\r\n/**\r\n * Returns whether the payload is a plain JavaScript object (excluding special classes or objects with other prototypes)\r\n *\r\n * @param {*} payload\r\n * @returns {payload is PlainObject}\r\n */\r\nfunction isPlainObject(payload) {\r\n if (getType(payload) !== 'Object')\r\n return false;\r\n return payload.constructor === Object && Object.getPrototypeOf(payload) === Object.prototype;\r\n}\r\n/**\r\n * Returns whether the payload is a plain JavaScript object (excluding special classes or objects with other prototypes)\r\n *\r\n * @param {*} payload\r\n * @returns {payload is PlainObject}\r\n */\r\nfunction isObject(payload) {\r\n return isPlainObject(payload);\r\n}\r\n/**\r\n * Returns whether the payload is a an empty object (excluding special classes or objects with other prototypes)\r\n *\r\n * @param {*} payload\r\n * @returns {payload is { [K in any]: never }}\r\n */\r\nfunction isEmptyObject(payload) {\r\n return isPlainObject(payload) && Object.keys(payload).length === 0;\r\n}\r\n/**\r\n * Returns whether the payload is a an empty object (excluding special classes or objects with other prototypes)\r\n *\r\n * @param {*} payload\r\n * @returns {payload is PlainObject}\r\n */\r\nfunction isFullObject(payload) {\r\n return isPlainObject(payload) && Object.keys(payload).length > 0;\r\n}\r\n/**\r\n * Returns whether the payload is an any kind of object (including special classes or objects with different prototypes)\r\n *\r\n * @param {*} payload\r\n * @returns {payload is PlainObject}\r\n */\r\nfunction isAnyObject(payload) {\r\n return getType(payload) === 'Object';\r\n}\r\n/**\r\n * Returns whether the payload is an object like a type passed in < >\r\n *\r\n * Usage: isObjectLike<{id: any}>(payload) // will make sure it's an object and has an `id` prop.\r\n *\r\n * @template T this must be passed in < >\r\n * @param {*} payload\r\n * @returns {payload is T}\r\n */\r\nfunction isObjectLike(payload) {\r\n return isAnyObject(payload);\r\n}\r\n/**\r\n * Returns whether the payload is a function (regular or async)\r\n *\r\n * @param {*} payload\r\n * @returns {payload is AnyFunction}\r\n */\r\nfunction isFunction(payload) {\r\n return typeof payload === 'function';\r\n}\r\n/**\r\n * Returns whether the payload is an array\r\n *\r\n * @param {any} payload\r\n * @returns {payload is any[]}\r\n */\r\nfunction isArray(payload) {\r\n return getType(payload) === 'Array';\r\n}\r\n/**\r\n * Returns whether the payload is a an array with at least 1 item\r\n *\r\n * @param {*} payload\r\n * @returns {payload is any[]}\r\n */\r\nfunction isFullArray(payload) {\r\n return isArray(payload) && payload.length > 0;\r\n}\r\n/**\r\n * Returns whether the payload is a an empty array\r\n *\r\n * @param {*} payload\r\n * @returns {payload is []}\r\n */\r\nfunction isEmptyArray(payload) {\r\n return isArray(payload) && payload.length === 0;\r\n}\r\n/**\r\n * Returns whether the payload is a string\r\n *\r\n * @param {*} payload\r\n * @returns {payload is string}\r\n */\r\nfunction isString(payload) {\r\n return getType(payload) === 'String';\r\n}\r\n/**\r\n * Returns whether the payload is a string, BUT returns false for ''\r\n *\r\n * @param {*} payload\r\n * @returns {payload is string}\r\n */\r\nfunction isFullString(payload) {\r\n return isString(payload) && payload !== '';\r\n}\r\n/**\r\n * Returns whether the payload is ''\r\n *\r\n * @param {*} payload\r\n * @returns {payload is string}\r\n */\r\nfunction isEmptyString(payload) {\r\n return payload === '';\r\n}\r\n/**\r\n * Returns whether the payload is a number (but not NaN)\r\n *\r\n * This will return `false` for `NaN`!!\r\n *\r\n * @param {*} payload\r\n * @returns {payload is number}\r\n */\r\nfunction isNumber(payload) {\r\n return getType(payload) === 'Number' && !isNaN(payload);\r\n}\r\n/**\r\n * Returns whether the payload is a boolean\r\n *\r\n * @param {*} payload\r\n * @returns {payload is boolean}\r\n */\r\nfunction isBoolean(payload) {\r\n return getType(payload) === 'Boolean';\r\n}\r\n/**\r\n * Returns whether the payload is a regular expression (RegExp)\r\n *\r\n * @param {*} payload\r\n * @returns {payload is RegExp}\r\n */\r\nfunction isRegExp(payload) {\r\n return getType(payload) === 'RegExp';\r\n}\r\n/**\r\n * Returns whether the payload is a Map\r\n *\r\n * @param {*} payload\r\n * @returns {payload is Map}\r\n */\r\nfunction isMap(payload) {\r\n return getType(payload) === 'Map';\r\n}\r\n/**\r\n * Returns whether the payload is a WeakMap\r\n *\r\n * @param {*} payload\r\n * @returns {payload is WeakMap}\r\n */\r\nfunction isWeakMap(payload) {\r\n return getType(payload) === 'WeakMap';\r\n}\r\n/**\r\n * Returns whether the payload is a Set\r\n *\r\n * @param {*} payload\r\n * @returns {payload is Set}\r\n */\r\nfunction isSet(payload) {\r\n return getType(payload) === 'Set';\r\n}\r\n/**\r\n * Returns whether the payload is a WeakSet\r\n *\r\n * @param {*} payload\r\n * @returns {payload is WeakSet}\r\n */\r\nfunction isWeakSet(payload) {\r\n return getType(payload) === 'WeakSet';\r\n}\r\n/**\r\n * Returns whether the payload is a Symbol\r\n *\r\n * @param {*} payload\r\n * @returns {payload is symbol}\r\n */\r\nfunction isSymbol(payload) {\r\n return getType(payload) === 'Symbol';\r\n}\r\n/**\r\n * Returns whether the payload is a Date, and that the date is valid\r\n *\r\n * @param {*} payload\r\n * @returns {payload is Date}\r\n */\r\nfunction isDate(payload) {\r\n return getType(payload) === 'Date' && !isNaN(payload);\r\n}\r\n/**\r\n * Returns whether the payload is a Blob\r\n *\r\n * @param {*} payload\r\n * @returns {payload is Blob}\r\n */\r\nfunction isBlob(payload) {\r\n return getType(payload) === 'Blob';\r\n}\r\n/**\r\n * Returns whether the payload is a File\r\n *\r\n * @param {*} payload\r\n * @returns {payload is File}\r\n */\r\nfunction isFile(payload) {\r\n return getType(payload) === 'File';\r\n}\r\n/**\r\n * Returns whether the payload is a Promise\r\n *\r\n * @param {*} payload\r\n * @returns {payload is Promise}\r\n */\r\nfunction isPromise(payload) {\r\n return getType(payload) === 'Promise';\r\n}\r\n/**\r\n * Returns whether the payload is an Error\r\n *\r\n * @param {*} payload\r\n * @returns {payload is Error}\r\n */\r\nfunction isError(payload) {\r\n return getType(payload) === 'Error';\r\n}\r\n/**\r\n * Returns whether the payload is literally the value `NaN` (it's `NaN` and also a `number`)\r\n *\r\n * @param {*} payload\r\n * @returns {payload is typeof NaN}\r\n */\r\nfunction isNaNValue(payload) {\r\n return getType(payload) === 'Number' && isNaN(payload);\r\n}\r\n/**\r\n * Returns whether the payload is a primitive type (eg. Boolean | Null | Undefined | Number | String | Symbol)\r\n *\r\n * @param {*} payload\r\n * @returns {(payload is boolean | null | undefined | number | string | symbol)}\r\n */\r\nfunction isPrimitive(payload) {\r\n return (isBoolean(payload) ||\r\n isNull(payload) ||\r\n isUndefined(payload) ||\r\n isNumber(payload) ||\r\n isString(payload) ||\r\n isSymbol(payload));\r\n}\r\n/**\r\n * Returns true whether the payload is null or undefined\r\n *\r\n * @param {*} payload\r\n * @returns {(payload is null | undefined)}\r\n */\r\nvar isNullOrUndefined = isOneOf(isNull, isUndefined);\r\nfunction isOneOf(a, b, c, d, e) {\r\n return function (value) {\r\n return a(value) || b(value) || (!!c && c(value)) || (!!d && d(value)) || (!!e && e(value));\r\n };\r\n}\r\n/**\r\n * Does a generic check to check that the given payload is of a given type.\r\n * In cases like Number, it will return true for NaN as NaN is a Number (thanks javascript!);\r\n * It will, however, differentiate between object and null\r\n *\r\n * @template T\r\n * @param {*} payload\r\n * @param {T} type\r\n * @throws {TypeError} Will throw type error if type is an invalid type\r\n * @returns {payload is T}\r\n */\r\nfunction isType(payload, type) {\r\n if (!(type instanceof Function)) {\r\n throw new TypeError('Type must be a function');\r\n }\r\n if (!Object.prototype.hasOwnProperty.call(type, 'prototype')) {\r\n throw new TypeError('Type is not a class');\r\n }\r\n // Classes usually have names (as functions usually have names)\r\n var name = type.name;\r\n return getType(payload) === name || Boolean(payload && payload.constructor === type);\r\n}\n\nexport { getType, isAnyObject, isArray, isBlob, isBoolean, isDate, isEmptyArray, isEmptyObject, isEmptyString, isError, isFile, isFullArray, isFullObject, isFullString, isFunction, isMap, isNaNValue, isNull, isNullOrUndefined, isNumber, isObject, isObjectLike, isOneOf, isPlainObject, isPrimitive, isPromise, isRegExp, isSet, isString, isSymbol, isType, isUndefined, isWeakMap, isWeakSet };\n","import { isArray, isPlainObject } from 'is-what';\n\nfunction assignProp(carry, key, newVal, originalObject, includeNonenumerable) {\r\n const propType = {}.propertyIsEnumerable.call(originalObject, key)\r\n ? 'enumerable'\r\n : 'nonenumerable';\r\n if (propType === 'enumerable')\r\n carry[key] = newVal;\r\n if (includeNonenumerable && propType === 'nonenumerable') {\r\n Object.defineProperty(carry, key, {\r\n value: newVal,\r\n enumerable: false,\r\n writable: true,\r\n configurable: true,\r\n });\r\n }\r\n}\r\n/**\r\n * Copy (clone) an object and all its props recursively to get rid of any prop referenced of the original object. Arrays are also cloned, however objects inside arrays are still linked.\r\n *\r\n * @export\r\n * @template T\r\n * @param {T} target Target can be anything\r\n * @param {Options} [options = {}] Options can be `props` or `nonenumerable`\r\n * @returns {T} the target with replaced values\r\n * @export\r\n */\r\nfunction copy(target, options = {}) {\r\n if (isArray(target)) {\r\n return target.map((item) => copy(item, options));\r\n }\r\n if (!isPlainObject(target)) {\r\n return target;\r\n }\r\n const props = Object.getOwnPropertyNames(target);\r\n const symbols = Object.getOwnPropertySymbols(target);\r\n return [...props, ...symbols].reduce((carry, key) => {\r\n if (isArray(options.props) && !options.props.includes(key)) {\r\n return carry;\r\n }\r\n const val = target[key];\r\n const newVal = copy(val, options);\r\n assignProp(carry, key, newVal, target, options.nonenumerable);\r\n return carry;\r\n }, {});\r\n}\n\nexport { copy };\n","/* jshint proto: true */\nimport * as Constants from './constants';\nimport { copy } from 'copy-anything';\n\nexport function getLocation(index, inputStream) {\n let n = index + 1;\n let line = null;\n let column = -1;\n\n while (--n >= 0 && inputStream.charAt(n) !== '\\n') {\n column++;\n }\n\n if (typeof index === 'number') {\n line = (inputStream.slice(0, index).match(/\\n/g) || '').length;\n }\n\n return {\n line,\n column\n };\n}\n\nexport function copyArray(arr) {\n let i;\n const length = arr.length;\n const copy = new Array(length);\n\n for (i = 0; i < length; i++) {\n copy[i] = arr[i];\n }\n return copy;\n}\n\nexport function clone(obj) {\n const cloned = {};\n for (const prop in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, prop)) {\n cloned[prop] = obj[prop];\n }\n }\n return cloned;\n}\n\nexport function defaults(obj1, obj2) {\n let newObj = obj2 || {};\n if (!obj2._defaults) {\n newObj = {};\n const defaults = copy(obj1);\n newObj._defaults = defaults;\n const cloned = obj2 ? copy(obj2) : {};\n Object.assign(newObj, defaults, cloned);\n }\n return newObj;\n}\n\nexport function copyOptions(obj1, obj2) {\n if (obj2 && obj2._defaults) {\n return obj2;\n }\n const opts = defaults(obj1, obj2);\n if (opts.strictMath) {\n opts.math = Constants.Math.PARENS;\n }\n // Back compat with changed relativeUrls option\n if (opts.relativeUrls) {\n opts.rewriteUrls = Constants.RewriteUrls.ALL;\n }\n if (typeof opts.math === 'string') {\n switch (opts.math.toLowerCase()) {\n case 'always':\n opts.math = Constants.Math.ALWAYS;\n break;\n case 'parens-division':\n opts.math = Constants.Math.PARENS_DIVISION;\n break;\n case 'strict':\n case 'parens':\n opts.math = Constants.Math.PARENS;\n break;\n default:\n opts.math = Constants.Math.PARENS;\n }\n }\n if (typeof opts.rewriteUrls === 'string') {\n switch (opts.rewriteUrls.toLowerCase()) {\n case 'off':\n opts.rewriteUrls = Constants.RewriteUrls.OFF;\n break;\n case 'local':\n opts.rewriteUrls = Constants.RewriteUrls.LOCAL;\n break;\n case 'all':\n opts.rewriteUrls = Constants.RewriteUrls.ALL;\n break;\n }\n }\n return opts;\n}\n\nexport function merge(obj1, obj2) {\n for (const prop in obj2) {\n if (Object.prototype.hasOwnProperty.call(obj2, prop)) {\n obj1[prop] = obj2[prop];\n }\n }\n return obj1;\n}\n\nexport function flattenArray(arr, result = []) {\n for (let i = 0, length = arr.length; i < length; i++) {\n const value = arr[i];\n if (Array.isArray(value)) {\n flattenArray(value, result);\n } else {\n if (value !== undefined) {\n result.push(value);\n }\n }\n }\n return result;\n}\n\nexport function isNullOrUndefined(val) {\n return val === null || val === undefined\n}","import * as utils from './utils';\n\nconst anonymousFunc = /(|Function):(\\d+):(\\d+)/;\n\n/**\n * This is a centralized class of any error that could be thrown internally (mostly by the parser).\n * Besides standard .message it keeps some additional data like a path to the file where the error\n * occurred along with line and column numbers.\n *\n * @class\n * @extends Error\n * @type {module.LessError}\n *\n * @prop {string} type\n * @prop {string} filename\n * @prop {number} index\n * @prop {number} line\n * @prop {number} column\n * @prop {number} callLine\n * @prop {number} callExtract\n * @prop {string[]} extract\n *\n * @param {Object} e - An error object to wrap around or just a descriptive object\n * @param {Object} fileContentMap - An object with file contents in 'contents' property (like importManager) @todo - move to fileManager?\n * @param {string} [currentFilename]\n */\nconst LessError = function(e, fileContentMap, currentFilename) {\n Error.call(this);\n\n const filename = e.filename || currentFilename;\n\n this.message = e.message;\n this.stack = e.stack;\n\n if (fileContentMap && filename) {\n const input = fileContentMap.contents[filename];\n const loc = utils.getLocation(e.index, input);\n var line = loc.line;\n const col = loc.column;\n const callLine = e.call && utils.getLocation(e.call, input).line;\n const lines = input ? input.split('\\n') : '';\n\n this.type = e.type || 'Syntax';\n this.filename = filename;\n this.index = e.index;\n this.line = typeof line === 'number' ? line + 1 : null;\n this.column = col;\n\n if (!this.line && this.stack) {\n const found = this.stack.match(anonymousFunc);\n\n /**\n * We have to figure out how this environment stringifies anonymous functions\n * so we can correctly map plugin errors.\n * \n * Note, in Node 8, the output of anonymous funcs varied based on parameters\n * being present or not, so we inject dummy params.\n */\n const func = new Function('a', 'throw new Error()');\n let lineAdjust = 0;\n try {\n func();\n } catch (e) {\n const match = e.stack.match(anonymousFunc);\n lineAdjust = 1 - parseInt(match[2]);\n }\n\n if (found) {\n if (found[2]) {\n this.line = parseInt(found[2]) + lineAdjust;\n }\n if (found[3]) {\n this.column = parseInt(found[3]);\n }\n }\n }\n\n this.callLine = callLine + 1;\n this.callExtract = lines[callLine];\n\n this.extract = [\n lines[this.line - 2],\n lines[this.line - 1],\n lines[this.line]\n ];\n }\n\n};\n\nif (typeof Object.create === 'undefined') {\n const F = function () {};\n F.prototype = Error.prototype;\n LessError.prototype = new F();\n} else {\n LessError.prototype = Object.create(Error.prototype);\n}\n\nLessError.prototype.constructor = LessError;\n\n/**\n * An overridden version of the default Object.prototype.toString\n * which uses additional information to create a helpful message.\n *\n * @param {Object} options\n * @returns {string}\n */\nLessError.prototype.toString = function(options) {\n options = options || {};\n const isWarning = (this.type ?? '').toLowerCase().includes('warning');\n const type = isWarning ? this.type : `${this.type}Error`;\n const color = isWarning ? 'yellow' : 'red';\n\n let message = '';\n const extract = this.extract || [];\n let error = [];\n let stylize = function (str) { return str; };\n if (options.stylize) {\n const type = typeof options.stylize;\n if (type !== 'function') {\n throw Error(`options.stylize should be a function, got a ${type}!`);\n }\n stylize = options.stylize;\n }\n\n if (this.line !== null) {\n if (!isWarning && typeof extract[0] === 'string') {\n error.push(stylize(`${this.line - 1} ${extract[0]}`, 'grey'));\n }\n\n if (typeof extract[1] === 'string') {\n let errorTxt = `${this.line} `;\n if (extract[1]) {\n errorTxt += extract[1].slice(0, this.column) +\n stylize(stylize(stylize(extract[1].substr(this.column, 1), 'bold') +\n extract[1].slice(this.column + 1), 'red'), 'inverse');\n }\n error.push(errorTxt);\n }\n\n if (!isWarning && typeof extract[2] === 'string') {\n error.push(stylize(`${this.line + 1} ${extract[2]}`, 'grey'));\n }\n error = `${error.join('\\n') + stylize('', 'reset')}\\n`;\n }\n\n message += stylize(`${type}: ${this.message}`, color);\n if (this.filename) {\n message += stylize(' in ', color) + this.filename;\n }\n if (this.line) {\n message += stylize(` on line ${this.line}, column ${this.column + 1}:`, 'grey');\n }\n\n message += `\\n${error}`;\n\n if (this.callLine) {\n message += `${stylize('from ', color) + (this.filename || '')}/n`;\n message += `${stylize(this.callLine, 'grey')} ${this.callExtract}/n`;\n }\n\n return message;\n};\n\nexport default LessError;","import tree from '../tree';\n\nconst _visitArgs = { visitDeeper: true };\nlet _hasIndexed = false;\n\nfunction _noop(node) {\n return node;\n}\n\nfunction indexNodeTypes(parent, ticker) {\n // add .typeIndex to tree node types for lookup table\n let key, child;\n for (key in parent) { \n /* eslint guard-for-in: 0 */\n child = parent[key];\n switch (typeof child) {\n case 'function':\n // ignore bound functions directly on tree which do not have a prototype\n // or aren't nodes\n if (child.prototype && child.prototype.type) {\n child.prototype.typeIndex = ticker++;\n }\n break;\n case 'object':\n ticker = indexNodeTypes(child, ticker);\n break;\n \n }\n }\n return ticker;\n}\n\nclass Visitor {\n constructor(implementation) {\n this._implementation = implementation;\n this._visitInCache = {};\n this._visitOutCache = {};\n\n if (!_hasIndexed) {\n indexNodeTypes(tree, 1);\n _hasIndexed = true;\n }\n }\n\n visit(node) {\n if (!node) {\n return node;\n }\n\n const nodeTypeIndex = node.typeIndex;\n if (!nodeTypeIndex) {\n // MixinCall args aren't a node type?\n if (node.value && node.value.typeIndex) {\n this.visit(node.value);\n }\n return node;\n }\n\n const impl = this._implementation;\n let func = this._visitInCache[nodeTypeIndex];\n let funcOut = this._visitOutCache[nodeTypeIndex];\n const visitArgs = _visitArgs;\n let fnName;\n\n visitArgs.visitDeeper = true;\n\n if (!func) {\n fnName = `visit${node.type}`;\n func = impl[fnName] || _noop;\n funcOut = impl[`${fnName}Out`] || _noop;\n this._visitInCache[nodeTypeIndex] = func;\n this._visitOutCache[nodeTypeIndex] = funcOut;\n }\n\n if (func !== _noop) {\n const newNode = func.call(impl, node, visitArgs);\n if (node && impl.isReplacing) {\n node = newNode;\n }\n }\n\n if (visitArgs.visitDeeper && node) {\n if (node.length) {\n for (let i = 0, cnt = node.length; i < cnt; i++) {\n if (node[i].accept) {\n node[i].accept(this);\n }\n }\n } else if (node.accept) {\n node.accept(this);\n }\n }\n\n if (funcOut != _noop) {\n funcOut.call(impl, node);\n }\n\n return node;\n }\n\n visitArray(nodes, nonReplacing) {\n if (!nodes) {\n return nodes;\n }\n\n const cnt = nodes.length;\n let i;\n\n // Non-replacing\n if (nonReplacing || !this._implementation.isReplacing) {\n for (i = 0; i < cnt; i++) {\n this.visit(nodes[i]);\n }\n return nodes;\n }\n\n // Replacing\n const out = [];\n for (i = 0; i < cnt; i++) {\n const evald = this.visit(nodes[i]);\n if (evald === undefined) { continue; }\n if (!evald.splice) {\n out.push(evald);\n } else if (evald.length) {\n this.flatten(evald, out);\n }\n }\n return out;\n }\n\n flatten(arr, out) {\n if (!out) {\n out = [];\n }\n\n let cnt, i, item, nestedCnt, j, nestedItem;\n\n for (i = 0, cnt = arr.length; i < cnt; i++) {\n item = arr[i];\n if (item === undefined) {\n continue;\n }\n if (!item.splice) {\n out.push(item);\n continue;\n }\n\n for (j = 0, nestedCnt = item.length; j < nestedCnt; j++) {\n nestedItem = item[j];\n if (nestedItem === undefined) {\n continue;\n }\n if (!nestedItem.splice) {\n out.push(nestedItem);\n } else if (nestedItem.length) {\n this.flatten(nestedItem, out);\n }\n }\n }\n\n return out;\n }\n}\n\nexport default Visitor;\n","const contexts = {};\nexport default contexts;\nimport * as Constants from './constants';\n\nconst copyFromOriginal = function copyFromOriginal(original, destination, propertiesToCopy) {\n if (!original) { return; }\n\n for (let i = 0; i < propertiesToCopy.length; i++) {\n if (Object.prototype.hasOwnProperty.call(original, propertiesToCopy[i])) {\n destination[propertiesToCopy[i]] = original[propertiesToCopy[i]];\n }\n }\n};\n\n/*\n parse is used whilst parsing\n */\nconst parseCopyProperties = [\n // options\n 'paths', // option - unmodified - paths to search for imports on\n 'rewriteUrls', // option - whether to adjust URL's to be relative\n 'rootpath', // option - rootpath to append to URL's\n 'strictImports', // option -\n 'insecure', // option - whether to allow imports from insecure ssl hosts\n 'dumpLineNumbers', // option - whether to dump line numbers\n 'compress', // option - whether to compress\n 'syncImport', // option - whether to import synchronously\n 'chunkInput', // option - whether to chunk input. more performant but causes parse issues.\n 'mime', // browser only - mime type for sheet import\n 'useFileCache', // browser only - whether to use the per file session cache\n // context\n 'processImports', // option & context - whether to process imports. if false then imports will not be imported.\n // Used by the import manager to stop multiple import visitors being created.\n 'pluginManager', // Used as the plugin manager for the session\n 'quiet', // option - whether to log warnings\n];\n\ncontexts.Parse = function(options) {\n copyFromOriginal(options, this, parseCopyProperties);\n\n if (typeof this.paths === 'string') { this.paths = [this.paths]; }\n};\n\nconst evalCopyProperties = [\n 'paths', // additional include paths\n 'compress', // whether to compress\n 'math', // whether math has to be within parenthesis\n 'strictUnits', // whether units need to evaluate correctly\n 'sourceMap', // whether to output a source map\n 'importMultiple', // whether we are currently importing multiple copies\n 'urlArgs', // whether to add args into url tokens\n 'javascriptEnabled', // option - whether Inline JavaScript is enabled. if undefined, defaults to false\n 'pluginManager', // Used as the plugin manager for the session\n 'importantScope', // used to bubble up !important statements\n 'rewriteUrls' // option - whether to adjust URL's to be relative\n];\n\ncontexts.Eval = function(options, frames) {\n copyFromOriginal(options, this, evalCopyProperties);\n\n if (typeof this.paths === 'string') { this.paths = [this.paths]; }\n\n this.frames = frames || [];\n this.importantScope = this.importantScope || [];\n};\n\ncontexts.Eval.prototype.enterCalc = function () {\n if (!this.calcStack) {\n this.calcStack = [];\n }\n this.calcStack.push(true);\n this.inCalc = true;\n};\n\ncontexts.Eval.prototype.exitCalc = function () {\n this.calcStack.pop();\n if (!this.calcStack.length) {\n this.inCalc = false;\n }\n};\n\ncontexts.Eval.prototype.inParenthesis = function () {\n if (!this.parensStack) {\n this.parensStack = [];\n }\n this.parensStack.push(true);\n};\n\ncontexts.Eval.prototype.outOfParenthesis = function () {\n this.parensStack.pop();\n};\n\ncontexts.Eval.prototype.inCalc = false;\ncontexts.Eval.prototype.mathOn = true;\ncontexts.Eval.prototype.isMathOn = function (op) {\n if (!this.mathOn) {\n return false;\n }\n if (op === '/' && this.math !== Constants.Math.ALWAYS && (!this.parensStack || !this.parensStack.length)) {\n return false;\n }\n if (this.math > Constants.Math.PARENS_DIVISION) {\n return this.parensStack && this.parensStack.length;\n }\n return true;\n};\n\ncontexts.Eval.prototype.pathRequiresRewrite = function (path) {\n const isRelative = this.rewriteUrls === Constants.RewriteUrls.LOCAL ? isPathLocalRelative : isPathRelative;\n\n return isRelative(path);\n};\n\ncontexts.Eval.prototype.rewritePath = function (path, rootpath) {\n let newPath;\n\n rootpath = rootpath || '';\n newPath = this.normalizePath(rootpath + path);\n\n // If a path was explicit relative and the rootpath was not an absolute path\n // we must ensure that the new path is also explicit relative.\n if (isPathLocalRelative(path) &&\n isPathRelative(rootpath) &&\n isPathLocalRelative(newPath) === false) {\n newPath = `./${newPath}`;\n }\n\n return newPath;\n};\n\ncontexts.Eval.prototype.normalizePath = function (path) {\n const segments = path.split('/').reverse();\n let segment;\n\n path = [];\n while (segments.length !== 0) {\n segment = segments.pop();\n switch ( segment ) {\n case '.':\n break;\n case '..':\n if ((path.length === 0) || (path[path.length - 1] === '..')) {\n path.push( segment );\n } else {\n path.pop();\n }\n break;\n default:\n path.push(segment);\n break;\n }\n }\n\n return path.join('/');\n};\n\nfunction isPathRelative(path) {\n return !/^(?:[a-z-]+:|\\/|#)/i.test(path);\n}\n\nfunction isPathLocalRelative(path) {\n return path.charAt(0) === '.';\n}\n\n// todo - do the same for the toCSS ?\n","class ImportSequencer {\n constructor(onSequencerEmpty) {\n this.imports = [];\n this.variableImports = [];\n this._onSequencerEmpty = onSequencerEmpty;\n this._currentDepth = 0;\n }\n\n addImport(callback) {\n const importSequencer = this,\n importItem = {\n callback,\n args: null,\n isReady: false\n };\n this.imports.push(importItem);\n return function() {\n importItem.args = Array.prototype.slice.call(arguments, 0);\n importItem.isReady = true;\n importSequencer.tryRun();\n };\n }\n\n addVariableImport(callback) {\n this.variableImports.push(callback);\n }\n\n tryRun() {\n this._currentDepth++;\n try {\n while (true) {\n while (this.imports.length > 0) {\n const importItem = this.imports[0];\n if (!importItem.isReady) {\n return;\n }\n this.imports = this.imports.slice(1);\n importItem.callback.apply(null, importItem.args);\n }\n if (this.variableImports.length === 0) {\n break;\n }\n const variableImport = this.variableImports[0];\n this.variableImports = this.variableImports.slice(1);\n variableImport();\n }\n } finally {\n this._currentDepth--;\n }\n if (this._currentDepth === 0 && this._onSequencerEmpty) {\n this._onSequencerEmpty();\n }\n }\n}\n\nexport default ImportSequencer;\n","/* eslint-disable no-unused-vars */\n/**\n * @todo - Remove unused when JSDoc types are added for visitor methods\n */\nimport contexts from '../contexts';\nimport Visitor from './visitor';\nimport ImportSequencer from './import-sequencer';\nimport * as utils from '../utils';\n\nconst ImportVisitor = function(importer, finish) {\n\n this._visitor = new Visitor(this);\n this._importer = importer;\n this._finish = finish;\n this.context = new contexts.Eval();\n this.importCount = 0;\n this.onceFileDetectionMap = {};\n this.recursionDetector = {};\n this._sequencer = new ImportSequencer(this._onSequencerEmpty.bind(this));\n};\n\nImportVisitor.prototype = {\n isReplacing: false,\n run: function (root) {\n try {\n // process the contents\n this._visitor.visit(root);\n }\n catch (e) {\n this.error = e;\n }\n\n this.isFinished = true;\n this._sequencer.tryRun();\n },\n _onSequencerEmpty: function() {\n if (!this.isFinished) {\n return;\n }\n this._finish(this.error);\n },\n visitImport: function (importNode, visitArgs) {\n const inlineCSS = importNode.options.inline;\n\n if (!importNode.css || inlineCSS) {\n\n const context = new contexts.Eval(this.context, utils.copyArray(this.context.frames));\n const importParent = context.frames[0];\n\n this.importCount++;\n if (importNode.isVariableImport()) {\n this._sequencer.addVariableImport(this.processImportNode.bind(this, importNode, context, importParent));\n } else {\n this.processImportNode(importNode, context, importParent);\n }\n }\n visitArgs.visitDeeper = false;\n },\n processImportNode: function(importNode, context, importParent) {\n let evaldImportNode;\n const inlineCSS = importNode.options.inline;\n\n try {\n evaldImportNode = importNode.evalForImport(context);\n } catch (e) {\n if (!e.filename) { e.index = importNode.getIndex(); e.filename = importNode.fileInfo().filename; }\n // attempt to eval properly and treat as css\n importNode.css = true;\n // if that fails, this error will be thrown\n importNode.error = e;\n }\n\n if (evaldImportNode && (!evaldImportNode.css || inlineCSS)) {\n\n if (evaldImportNode.options.multiple) {\n context.importMultiple = true;\n }\n\n // try appending if we haven't determined if it is css or not\n const tryAppendLessExtension = evaldImportNode.css === undefined;\n\n for (let i = 0; i < importParent.rules.length; i++) {\n if (importParent.rules[i] === importNode) {\n importParent.rules[i] = evaldImportNode;\n break;\n }\n }\n\n const onImported = this.onImported.bind(this, evaldImportNode, context), sequencedOnImported = this._sequencer.addImport(onImported);\n\n this._importer.push(evaldImportNode.getPath(), tryAppendLessExtension, evaldImportNode.fileInfo(),\n evaldImportNode.options, sequencedOnImported);\n } else {\n this.importCount--;\n if (this.isFinished) {\n this._sequencer.tryRun();\n }\n }\n },\n onImported: function (importNode, context, e, root, importedAtRoot, fullPath) {\n if (e) {\n if (!e.filename) {\n e.index = importNode.getIndex(); e.filename = importNode.fileInfo().filename;\n }\n this.error = e;\n }\n\n const importVisitor = this,\n inlineCSS = importNode.options.inline,\n isPlugin = importNode.options.isPlugin,\n isOptional = importNode.options.optional,\n duplicateImport = importedAtRoot || fullPath in importVisitor.recursionDetector;\n\n if (!context.importMultiple) {\n if (duplicateImport) {\n importNode.skip = true;\n } else {\n importNode.skip = function() {\n if (fullPath in importVisitor.onceFileDetectionMap) {\n return true;\n }\n importVisitor.onceFileDetectionMap[fullPath] = true;\n return false;\n };\n }\n }\n\n if (!fullPath && isOptional) {\n importNode.skip = true;\n }\n\n if (root) {\n importNode.root = root;\n importNode.importedFilename = fullPath;\n\n if (!inlineCSS && !isPlugin && (context.importMultiple || !duplicateImport)) {\n importVisitor.recursionDetector[fullPath] = true;\n\n const oldContext = this.context;\n this.context = context;\n try {\n this._visitor.visit(root);\n } catch (e) {\n this.error = e;\n }\n this.context = oldContext;\n }\n }\n\n importVisitor.importCount--;\n\n if (importVisitor.isFinished) {\n importVisitor._sequencer.tryRun();\n }\n },\n visitDeclaration: function (declNode, visitArgs) {\n if (declNode.value.type === 'DetachedRuleset') {\n this.context.frames.unshift(declNode);\n } else {\n visitArgs.visitDeeper = false;\n }\n },\n visitDeclarationOut: function(declNode) {\n if (declNode.value.type === 'DetachedRuleset') {\n this.context.frames.shift();\n }\n },\n visitAtRule: function (atRuleNode, visitArgs) {\n this.context.frames.unshift(atRuleNode);\n },\n visitAtRuleOut: function (atRuleNode) {\n this.context.frames.shift();\n },\n visitMixinDefinition: function (mixinDefinitionNode, visitArgs) {\n this.context.frames.unshift(mixinDefinitionNode);\n },\n visitMixinDefinitionOut: function (mixinDefinitionNode) {\n this.context.frames.shift();\n },\n visitRuleset: function (rulesetNode, visitArgs) {\n this.context.frames.unshift(rulesetNode);\n },\n visitRulesetOut: function (rulesetNode) {\n this.context.frames.shift();\n },\n visitMedia: function (mediaNode, visitArgs) {\n this.context.frames.unshift(mediaNode.rules[0]);\n },\n visitMediaOut: function (mediaNode) {\n this.context.frames.shift();\n }\n};\nexport default ImportVisitor;\n","class SetTreeVisibilityVisitor {\n constructor(visible) {\n this.visible = visible;\n }\n\n run(root) {\n this.visit(root);\n }\n\n visitArray(nodes) {\n if (!nodes) {\n return nodes;\n }\n\n const cnt = nodes.length;\n let i;\n for (i = 0; i < cnt; i++) {\n this.visit(nodes[i]);\n }\n return nodes;\n }\n\n visit(node) {\n if (!node) {\n return node;\n }\n if (node.constructor === Array) {\n return this.visitArray(node);\n }\n\n if (!node.blocksVisibility || node.blocksVisibility()) {\n return node;\n }\n if (this.visible) {\n node.ensureVisibility();\n } else {\n node.ensureInvisibility();\n }\n\n node.accept(this);\n return node;\n }\n}\n\nexport default SetTreeVisibilityVisitor;","/* eslint-disable no-unused-vars */\n/**\n * @todo - Remove unused when JSDoc types are added for visitor methods\n */\nimport tree from '../tree';\nimport Visitor from './visitor';\nimport logger from '../logger';\nimport * as utils from '../utils';\n\n/* jshint loopfunc:true */\n\nclass ExtendFinderVisitor {\n constructor() {\n this._visitor = new Visitor(this);\n this.contexts = [];\n this.allExtendsStack = [[]];\n }\n\n run(root) {\n root = this._visitor.visit(root);\n root.allExtends = this.allExtendsStack[0];\n return root;\n }\n\n visitDeclaration(declNode, visitArgs) {\n visitArgs.visitDeeper = false;\n }\n\n visitMixinDefinition(mixinDefinitionNode, visitArgs) {\n visitArgs.visitDeeper = false;\n }\n\n visitRuleset(rulesetNode, visitArgs) {\n if (rulesetNode.root) {\n return;\n }\n\n let i;\n let j;\n let extend;\n const allSelectorsExtendList = [];\n let extendList;\n\n // get &:extend(.a); rules which apply to all selectors in this ruleset\n const rules = rulesetNode.rules, ruleCnt = rules ? rules.length : 0;\n for (i = 0; i < ruleCnt; i++) {\n if (rulesetNode.rules[i] instanceof tree.Extend) {\n allSelectorsExtendList.push(rules[i]);\n rulesetNode.extendOnEveryPath = true;\n }\n }\n\n // now find every selector and apply the extends that apply to all extends\n // and the ones which apply to an individual extend\n const paths = rulesetNode.paths;\n for (i = 0; i < paths.length; i++) {\n const selectorPath = paths[i], selector = selectorPath[selectorPath.length - 1], selExtendList = selector.extendList;\n\n extendList = selExtendList ? utils.copyArray(selExtendList).concat(allSelectorsExtendList)\n : allSelectorsExtendList;\n\n if (extendList) {\n extendList = extendList.map(function(allSelectorsExtend) {\n return allSelectorsExtend.clone();\n });\n }\n\n for (j = 0; j < extendList.length; j++) {\n this.foundExtends = true;\n extend = extendList[j];\n extend.findSelfSelectors(selectorPath);\n extend.ruleset = rulesetNode;\n if (j === 0) { extend.firstExtendOnThisSelectorPath = true; }\n this.allExtendsStack[this.allExtendsStack.length - 1].push(extend);\n }\n }\n\n this.contexts.push(rulesetNode.selectors);\n }\n\n visitRulesetOut(rulesetNode) {\n if (!rulesetNode.root) {\n this.contexts.length = this.contexts.length - 1;\n }\n }\n\n visitMedia(mediaNode, visitArgs) {\n mediaNode.allExtends = [];\n this.allExtendsStack.push(mediaNode.allExtends);\n }\n\n visitMediaOut(mediaNode) {\n this.allExtendsStack.length = this.allExtendsStack.length - 1;\n }\n\n visitAtRule(atRuleNode, visitArgs) {\n atRuleNode.allExtends = [];\n this.allExtendsStack.push(atRuleNode.allExtends);\n }\n\n visitAtRuleOut(atRuleNode) {\n this.allExtendsStack.length = this.allExtendsStack.length - 1;\n }\n}\n\nclass ProcessExtendsVisitor {\n constructor() {\n this._visitor = new Visitor(this);\n }\n\n run(root) {\n const extendFinder = new ExtendFinderVisitor();\n this.extendIndices = {};\n extendFinder.run(root);\n if (!extendFinder.foundExtends) { return root; }\n root.allExtends = root.allExtends.concat(this.doExtendChaining(root.allExtends, root.allExtends));\n this.allExtendsStack = [root.allExtends];\n const newRoot = this._visitor.visit(root);\n this.checkExtendsForNonMatched(root.allExtends);\n return newRoot;\n }\n\n checkExtendsForNonMatched(extendList) {\n const indices = this.extendIndices;\n extendList.filter(function(extend) {\n return !extend.hasFoundMatches && extend.parent_ids.length == 1;\n }).forEach(function(extend) {\n let selector = '_unknown_';\n try {\n selector = extend.selector.toCSS({});\n }\n catch (_) {}\n\n if (!indices[`${extend.index} ${selector}`]) {\n indices[`${extend.index} ${selector}`] = true;\n /**\n * @todo Shouldn't this be an error? To alert the developer\n * that they may have made an error in the selector they are\n * targeting?\n */\n logger.warn(`WARNING: extend '${selector}' has no matches`);\n }\n });\n }\n\n doExtendChaining(extendsList, extendsListTarget, iterationCount) {\n //\n // chaining is different from normal extension.. if we extend an extend then we are not just copying, altering\n // and pasting the selector we would do normally, but we are also adding an extend with the same target selector\n // this means this new extend can then go and alter other extends\n //\n // this method deals with all the chaining work - without it, extend is flat and doesn't work on other extend selectors\n // this is also the most expensive.. and a match on one selector can cause an extension of a selector we had already\n // processed if we look at each selector at a time, as is done in visitRuleset\n\n let extendIndex;\n\n let targetExtendIndex;\n let matches;\n const extendsToAdd = [];\n let newSelector;\n const extendVisitor = this;\n let selectorPath;\n let extend;\n let targetExtend;\n let newExtend;\n\n iterationCount = iterationCount || 0;\n\n // loop through comparing every extend with every target extend.\n // a target extend is the one on the ruleset we are looking at copy/edit/pasting in place\n // e.g. .a:extend(.b) {} and .b:extend(.c) {} then the first extend extends the second one\n // and the second is the target.\n // the separation into two lists allows us to process a subset of chains with a bigger set, as is the\n // case when processing media queries\n for (extendIndex = 0; extendIndex < extendsList.length; extendIndex++) {\n for (targetExtendIndex = 0; targetExtendIndex < extendsListTarget.length; targetExtendIndex++) {\n\n extend = extendsList[extendIndex];\n targetExtend = extendsListTarget[targetExtendIndex];\n\n // look for circular references\n if ( extend.parent_ids.indexOf( targetExtend.object_id ) >= 0 ) { continue; }\n\n // find a match in the target extends self selector (the bit before :extend)\n selectorPath = [targetExtend.selfSelectors[0]];\n matches = extendVisitor.findMatch(extend, selectorPath);\n\n if (matches.length) {\n extend.hasFoundMatches = true;\n\n // we found a match, so for each self selector..\n extend.selfSelectors.forEach(function(selfSelector) {\n const info = targetExtend.visibilityInfo();\n\n // process the extend as usual\n newSelector = extendVisitor.extendSelector(matches, selectorPath, selfSelector, extend.isVisible());\n\n // but now we create a new extend from it\n newExtend = new(tree.Extend)(targetExtend.selector, targetExtend.option, 0, targetExtend.fileInfo(), info);\n newExtend.selfSelectors = newSelector;\n\n // add the extend onto the list of extends for that selector\n newSelector[newSelector.length - 1].extendList = [newExtend];\n\n // record that we need to add it.\n extendsToAdd.push(newExtend);\n newExtend.ruleset = targetExtend.ruleset;\n\n // remember its parents for circular references\n newExtend.parent_ids = newExtend.parent_ids.concat(targetExtend.parent_ids, extend.parent_ids);\n\n // only process the selector once.. if we have :extend(.a,.b) then multiple\n // extends will look at the same selector path, so when extending\n // we know that any others will be duplicates in terms of what is added to the css\n if (targetExtend.firstExtendOnThisSelectorPath) {\n newExtend.firstExtendOnThisSelectorPath = true;\n targetExtend.ruleset.paths.push(newSelector);\n }\n });\n }\n }\n }\n\n if (extendsToAdd.length) {\n // try to detect circular references to stop a stack overflow.\n // may no longer be needed.\n this.extendChainCount++;\n if (iterationCount > 100) {\n let selectorOne = '{unable to calculate}';\n let selectorTwo = '{unable to calculate}';\n try {\n selectorOne = extendsToAdd[0].selfSelectors[0].toCSS();\n selectorTwo = extendsToAdd[0].selector.toCSS();\n }\n catch (e) {}\n throw { message: `extend circular reference detected. One of the circular extends is currently:${selectorOne}:extend(${selectorTwo})`};\n }\n\n // now process the new extends on the existing rules so that we can handle a extending b extending c extending\n // d extending e...\n return extendsToAdd.concat(extendVisitor.doExtendChaining(extendsToAdd, extendsListTarget, iterationCount + 1));\n } else {\n return extendsToAdd;\n }\n }\n\n visitDeclaration(ruleNode, visitArgs) {\n visitArgs.visitDeeper = false;\n }\n\n visitMixinDefinition(mixinDefinitionNode, visitArgs) {\n visitArgs.visitDeeper = false;\n }\n\n visitSelector(selectorNode, visitArgs) {\n visitArgs.visitDeeper = false;\n }\n\n visitRuleset(rulesetNode, visitArgs) {\n if (rulesetNode.root) {\n return;\n }\n let matches;\n let pathIndex;\n let extendIndex;\n const allExtends = this.allExtendsStack[this.allExtendsStack.length - 1];\n const selectorsToAdd = [];\n const extendVisitor = this;\n let selectorPath;\n\n // look at each selector path in the ruleset, find any extend matches and then copy, find and replace\n\n for (extendIndex = 0; extendIndex < allExtends.length; extendIndex++) {\n for (pathIndex = 0; pathIndex < rulesetNode.paths.length; pathIndex++) {\n selectorPath = rulesetNode.paths[pathIndex];\n\n // extending extends happens initially, before the main pass\n if (rulesetNode.extendOnEveryPath) { continue; }\n const extendList = selectorPath[selectorPath.length - 1].extendList;\n if (extendList && extendList.length) { continue; }\n\n matches = this.findMatch(allExtends[extendIndex], selectorPath);\n\n if (matches.length) {\n allExtends[extendIndex].hasFoundMatches = true;\n\n allExtends[extendIndex].selfSelectors.forEach(function(selfSelector) {\n let extendedSelectors;\n extendedSelectors = extendVisitor.extendSelector(matches, selectorPath, selfSelector, allExtends[extendIndex].isVisible());\n selectorsToAdd.push(extendedSelectors);\n });\n }\n }\n }\n rulesetNode.paths = rulesetNode.paths.concat(selectorsToAdd);\n }\n\n findMatch(extend, haystackSelectorPath) {\n //\n // look through the haystack selector path to try and find the needle - extend.selector\n // returns an array of selector matches that can then be replaced\n //\n let haystackSelectorIndex;\n\n let hackstackSelector;\n let hackstackElementIndex;\n let haystackElement;\n let targetCombinator;\n let i;\n const extendVisitor = this;\n const needleElements = extend.selector.elements;\n const potentialMatches = [];\n let potentialMatch;\n const matches = [];\n\n // loop through the haystack elements\n for (haystackSelectorIndex = 0; haystackSelectorIndex < haystackSelectorPath.length; haystackSelectorIndex++) {\n hackstackSelector = haystackSelectorPath[haystackSelectorIndex];\n\n for (hackstackElementIndex = 0; hackstackElementIndex < hackstackSelector.elements.length; hackstackElementIndex++) {\n\n haystackElement = hackstackSelector.elements[hackstackElementIndex];\n\n // if we allow elements before our match we can add a potential match every time. otherwise only at the first element.\n if (extend.allowBefore || (haystackSelectorIndex === 0 && hackstackElementIndex === 0)) {\n potentialMatches.push({pathIndex: haystackSelectorIndex, index: hackstackElementIndex, matched: 0,\n initialCombinator: haystackElement.combinator});\n }\n\n for (i = 0; i < potentialMatches.length; i++) {\n potentialMatch = potentialMatches[i];\n\n // selectors add \" \" onto the first element. When we use & it joins the selectors together, but if we don't\n // then each selector in haystackSelectorPath has a space before it added in the toCSS phase. so we need to\n // work out what the resulting combinator will be\n targetCombinator = haystackElement.combinator.value;\n if (targetCombinator === '' && hackstackElementIndex === 0) {\n targetCombinator = ' ';\n }\n\n // if we don't match, null our match to indicate failure\n if (!extendVisitor.isElementValuesEqual(needleElements[potentialMatch.matched].value, haystackElement.value) ||\n (potentialMatch.matched > 0 && needleElements[potentialMatch.matched].combinator.value !== targetCombinator)) {\n potentialMatch = null;\n } else {\n potentialMatch.matched++;\n }\n\n // if we are still valid and have finished, test whether we have elements after and whether these are allowed\n if (potentialMatch) {\n potentialMatch.finished = potentialMatch.matched === needleElements.length;\n if (potentialMatch.finished &&\n (!extend.allowAfter &&\n (hackstackElementIndex + 1 < hackstackSelector.elements.length || haystackSelectorIndex + 1 < haystackSelectorPath.length))) {\n potentialMatch = null;\n }\n }\n // if null we remove, if not, we are still valid, so either push as a valid match or continue\n if (potentialMatch) {\n if (potentialMatch.finished) {\n potentialMatch.length = needleElements.length;\n potentialMatch.endPathIndex = haystackSelectorIndex;\n potentialMatch.endPathElementIndex = hackstackElementIndex + 1; // index after end of match\n potentialMatches.length = 0; // we don't allow matches to overlap, so start matching again\n matches.push(potentialMatch);\n }\n } else {\n potentialMatches.splice(i, 1);\n i--;\n }\n }\n }\n }\n return matches;\n }\n\n isElementValuesEqual(elementValue1, elementValue2) {\n if (typeof elementValue1 === 'string' || typeof elementValue2 === 'string') {\n return elementValue1 === elementValue2;\n }\n if (elementValue1 instanceof tree.Attribute) {\n if (elementValue1.op !== elementValue2.op || elementValue1.key !== elementValue2.key) {\n return false;\n }\n if (!elementValue1.value || !elementValue2.value) {\n if (elementValue1.value || elementValue2.value) {\n return false;\n }\n return true;\n }\n elementValue1 = elementValue1.value.value || elementValue1.value;\n elementValue2 = elementValue2.value.value || elementValue2.value;\n return elementValue1 === elementValue2;\n }\n elementValue1 = elementValue1.value;\n elementValue2 = elementValue2.value;\n if (elementValue1 instanceof tree.Selector) {\n if (!(elementValue2 instanceof tree.Selector) || elementValue1.elements.length !== elementValue2.elements.length) {\n return false;\n }\n for (let i = 0; i < elementValue1.elements.length; i++) {\n if (elementValue1.elements[i].combinator.value !== elementValue2.elements[i].combinator.value) {\n if (i !== 0 || (elementValue1.elements[i].combinator.value || ' ') !== (elementValue2.elements[i].combinator.value || ' ')) {\n return false;\n }\n }\n if (!this.isElementValuesEqual(elementValue1.elements[i].value, elementValue2.elements[i].value)) {\n return false;\n }\n }\n return true;\n }\n return false;\n }\n\n extendSelector(matches, selectorPath, replacementSelector, isVisible) {\n\n // for a set of matches, replace each match with the replacement selector\n\n let currentSelectorPathIndex = 0, currentSelectorPathElementIndex = 0, path = [], matchIndex, selector, firstElement, match, newElements;\n\n for (matchIndex = 0; matchIndex < matches.length; matchIndex++) {\n match = matches[matchIndex];\n selector = selectorPath[match.pathIndex];\n firstElement = new tree.Element(\n match.initialCombinator,\n replacementSelector.elements[0].value,\n replacementSelector.elements[0].isVariable,\n replacementSelector.elements[0].getIndex(),\n replacementSelector.elements[0].fileInfo()\n );\n\n if (match.pathIndex > currentSelectorPathIndex && currentSelectorPathElementIndex > 0) {\n path[path.length - 1].elements = path[path.length - 1]\n .elements.concat(selectorPath[currentSelectorPathIndex].elements.slice(currentSelectorPathElementIndex));\n currentSelectorPathElementIndex = 0;\n currentSelectorPathIndex++;\n }\n\n newElements = selector.elements\n .slice(currentSelectorPathElementIndex, match.index)\n .concat([firstElement])\n .concat(replacementSelector.elements.slice(1));\n\n if (currentSelectorPathIndex === match.pathIndex && matchIndex > 0) {\n path[path.length - 1].elements =\n path[path.length - 1].elements.concat(newElements);\n } else {\n path = path.concat(selectorPath.slice(currentSelectorPathIndex, match.pathIndex));\n\n path.push(new tree.Selector(\n newElements\n ));\n }\n currentSelectorPathIndex = match.endPathIndex;\n currentSelectorPathElementIndex = match.endPathElementIndex;\n if (currentSelectorPathElementIndex >= selectorPath[currentSelectorPathIndex].elements.length) {\n currentSelectorPathElementIndex = 0;\n currentSelectorPathIndex++;\n }\n }\n\n if (currentSelectorPathIndex < selectorPath.length && currentSelectorPathElementIndex > 0) {\n path[path.length - 1].elements = path[path.length - 1]\n .elements.concat(selectorPath[currentSelectorPathIndex].elements.slice(currentSelectorPathElementIndex));\n currentSelectorPathIndex++;\n }\n\n path = path.concat(selectorPath.slice(currentSelectorPathIndex, selectorPath.length));\n path = path.map(function (currentValue) {\n // we can re-use elements here, because the visibility property matters only for selectors\n const derived = currentValue.createDerived(currentValue.elements);\n if (isVisible) {\n derived.ensureVisibility();\n } else {\n derived.ensureInvisibility();\n }\n return derived;\n });\n return path;\n }\n\n visitMedia(mediaNode, visitArgs) {\n let newAllExtends = mediaNode.allExtends.concat(this.allExtendsStack[this.allExtendsStack.length - 1]);\n newAllExtends = newAllExtends.concat(this.doExtendChaining(newAllExtends, mediaNode.allExtends));\n this.allExtendsStack.push(newAllExtends);\n }\n\n visitMediaOut(mediaNode) {\n const lastIndex = this.allExtendsStack.length - 1;\n this.allExtendsStack.length = lastIndex;\n }\n\n visitAtRule(atRuleNode, visitArgs) {\n let newAllExtends = atRuleNode.allExtends.concat(this.allExtendsStack[this.allExtendsStack.length - 1]);\n newAllExtends = newAllExtends.concat(this.doExtendChaining(newAllExtends, atRuleNode.allExtends));\n this.allExtendsStack.push(newAllExtends);\n }\n\n visitAtRuleOut(atRuleNode) {\n const lastIndex = this.allExtendsStack.length - 1;\n this.allExtendsStack.length = lastIndex;\n }\n}\n\nexport default ProcessExtendsVisitor;\n","/* eslint-disable no-unused-vars */\n/**\n * @todo - Remove unused when JSDoc types are added for visitor methods\n */\nimport Visitor from './visitor';\n\nclass JoinSelectorVisitor {\n constructor() {\n this.contexts = [[]];\n this._visitor = new Visitor(this);\n }\n\n run(root) {\n return this._visitor.visit(root);\n }\n\n visitDeclaration(declNode, visitArgs) {\n visitArgs.visitDeeper = false;\n }\n\n visitMixinDefinition(mixinDefinitionNode, visitArgs) {\n visitArgs.visitDeeper = false;\n }\n\n visitRuleset(rulesetNode, visitArgs) {\n const context = this.contexts[this.contexts.length - 1];\n const paths = [];\n let selectors;\n\n this.contexts.push(paths);\n\n if (!rulesetNode.root) {\n selectors = rulesetNode.selectors;\n if (selectors) {\n selectors = selectors.filter(function(selector) { return selector.getIsOutput(); });\n rulesetNode.selectors = selectors.length ? selectors : (selectors = null);\n if (selectors) { rulesetNode.joinSelectors(paths, context, selectors); }\n }\n if (!selectors) { rulesetNode.rules = null; }\n rulesetNode.paths = paths;\n }\n }\n\n visitRulesetOut(rulesetNode) {\n this.contexts.length = this.contexts.length - 1;\n }\n\n visitMedia(mediaNode, visitArgs) {\n const context = this.contexts[this.contexts.length - 1];\n mediaNode.rules[0].root = (context.length === 0 || context[0].multiMedia);\n }\n\n visitAtRule(atRuleNode, visitArgs) {\n const context = this.contexts[this.contexts.length - 1];\n if (atRuleNode.rules && atRuleNode.rules.length) {\n atRuleNode.rules[0].root = (atRuleNode.isRooted || context.length === 0 || null);\n }\n }\n}\n\nexport default JoinSelectorVisitor;\n","/* eslint-disable no-unused-vars */\n/**\n * @todo - Remove unused when JSDoc types are added for visitor methods\n */\nimport tree from '../tree';\nimport Visitor from './visitor';\n\nclass CSSVisitorUtils {\n constructor(context) {\n this._visitor = new Visitor(this);\n this._context = context;\n }\n\n containsSilentNonBlockedChild(bodyRules) {\n let rule;\n if (!bodyRules) {\n return false;\n }\n for (let r = 0; r < bodyRules.length; r++) {\n rule = bodyRules[r];\n if (rule.isSilent && rule.isSilent(this._context) && !rule.blocksVisibility()) {\n // the atrule contains something that was referenced (likely by extend)\n // therefore it needs to be shown in output too\n return true;\n }\n }\n return false;\n }\n\n keepOnlyVisibleChilds(owner) {\n if (owner && owner.rules) {\n owner.rules = owner.rules.filter(thing => thing.isVisible());\n }\n }\n\n isEmpty(owner) {\n return (owner && owner.rules) \n ? (owner.rules.length === 0) : true;\n }\n\n hasVisibleSelector(rulesetNode) {\n return (rulesetNode && rulesetNode.paths)\n ? (rulesetNode.paths.length > 0) : false;\n }\n\n resolveVisibility(node) {\n if (!node.blocksVisibility()) {\n if (this.isEmpty(node)) {\n return ;\n }\n\n return node;\n }\n\n const compiledRulesBody = node.rules[0];\n this.keepOnlyVisibleChilds(compiledRulesBody);\n\n if (this.isEmpty(compiledRulesBody)) {\n return ;\n }\n\n node.ensureVisibility();\n node.removeVisibilityBlock();\n\n return node;\n }\n\n isVisibleRuleset(rulesetNode) {\n if (rulesetNode.firstRoot) {\n return true;\n }\n\n if (this.isEmpty(rulesetNode)) {\n return false;\n }\n\n if (!rulesetNode.root && !this.hasVisibleSelector(rulesetNode)) {\n return false;\n }\n\n return true;\n }\n}\n\nconst ToCSSVisitor = function(context) {\n this._visitor = new Visitor(this);\n this._context = context;\n this.utils = new CSSVisitorUtils(context);\n};\n\nToCSSVisitor.prototype = {\n isReplacing: true,\n run: function (root) {\n return this._visitor.visit(root);\n },\n\n visitDeclaration: function (declNode, visitArgs) {\n if (declNode.blocksVisibility() || declNode.variable) {\n return;\n }\n return declNode;\n },\n\n visitMixinDefinition: function (mixinNode, visitArgs) {\n // mixin definitions do not get eval'd - this means they keep state\n // so we have to clear that state here so it isn't used if toCSS is called twice\n mixinNode.frames = [];\n },\n\n visitExtend: function (extendNode, visitArgs) {\n },\n\n visitComment: function (commentNode, visitArgs) {\n if (commentNode.blocksVisibility() || commentNode.isSilent(this._context)) {\n return;\n }\n return commentNode;\n },\n\n visitMedia: function(mediaNode, visitArgs) {\n const originalRules = mediaNode.rules[0].rules;\n mediaNode.accept(this._visitor);\n visitArgs.visitDeeper = false;\n\n return this.utils.resolveVisibility(mediaNode, originalRules);\n },\n\n visitImport: function (importNode, visitArgs) {\n if (importNode.blocksVisibility()) {\n return ;\n }\n return importNode;\n },\n\n visitAtRule: function(atRuleNode, visitArgs) {\n if (atRuleNode.rules && atRuleNode.rules.length) {\n return this.visitAtRuleWithBody(atRuleNode, visitArgs);\n } else {\n return this.visitAtRuleWithoutBody(atRuleNode, visitArgs);\n }\n },\n\n visitAnonymous: function(anonymousNode, visitArgs) {\n if (!anonymousNode.blocksVisibility()) {\n anonymousNode.accept(this._visitor);\n return anonymousNode;\n }\n },\n\n visitAtRuleWithBody: function(atRuleNode, visitArgs) {\n // if there is only one nested ruleset and that one has no path, then it is\n // just fake ruleset\n function hasFakeRuleset(atRuleNode) {\n const bodyRules = atRuleNode.rules;\n return bodyRules.length === 1 && (!bodyRules[0].paths || bodyRules[0].paths.length === 0);\n }\n function getBodyRules(atRuleNode) {\n const nodeRules = atRuleNode.rules;\n if (hasFakeRuleset(atRuleNode)) {\n return nodeRules[0].rules;\n }\n\n return nodeRules;\n }\n // it is still true that it is only one ruleset in array\n // this is last such moment\n // process childs\n const originalRules = getBodyRules(atRuleNode);\n atRuleNode.accept(this._visitor);\n visitArgs.visitDeeper = false;\n\n if (!this.utils.isEmpty(atRuleNode)) {\n this._mergeRules(atRuleNode.rules[0].rules);\n }\n\n return this.utils.resolveVisibility(atRuleNode, originalRules);\n },\n\n visitAtRuleWithoutBody: function(atRuleNode, visitArgs) {\n if (atRuleNode.blocksVisibility()) {\n return;\n }\n\n if (atRuleNode.name === '@charset') {\n // Only output the debug info together with subsequent @charset definitions\n // a comment (or @media statement) before the actual @charset atrule would\n // be considered illegal css as it has to be on the first line\n if (this.charset) {\n if (atRuleNode.debugInfo) {\n const comment = new tree.Comment(`/* ${atRuleNode.toCSS(this._context).replace(/\\n/g, '')} */\\n`);\n comment.debugInfo = atRuleNode.debugInfo;\n return this._visitor.visit(comment);\n }\n return;\n }\n this.charset = true;\n }\n\n return atRuleNode;\n },\n\n checkValidNodes: function(rules, isRoot) {\n if (!rules) {\n return;\n }\n\n for (let i = 0; i < rules.length; i++) {\n const ruleNode = rules[i];\n if (isRoot && ruleNode instanceof tree.Declaration && !ruleNode.variable) {\n throw { message: 'Properties must be inside selector blocks. They cannot be in the root',\n index: ruleNode.getIndex(), filename: ruleNode.fileInfo() && ruleNode.fileInfo().filename};\n }\n if (ruleNode instanceof tree.Call) {\n throw { message: `Function '${ruleNode.name}' did not return a root node`,\n index: ruleNode.getIndex(), filename: ruleNode.fileInfo() && ruleNode.fileInfo().filename};\n }\n if (ruleNode.type && !ruleNode.allowRoot) {\n throw { message: `${ruleNode.type} node returned by a function is not valid here`,\n index: ruleNode.getIndex(), filename: ruleNode.fileInfo() && ruleNode.fileInfo().filename};\n }\n }\n },\n\n visitRuleset: function (rulesetNode, visitArgs) {\n // at this point rulesets are nested into each other\n let rule;\n\n const rulesets = [];\n\n this.checkValidNodes(rulesetNode.rules, rulesetNode.firstRoot);\n\n if (!rulesetNode.root) {\n // remove invisible paths\n this._compileRulesetPaths(rulesetNode);\n\n // remove rulesets from this ruleset body and compile them separately\n const nodeRules = rulesetNode.rules;\n\n let nodeRuleCnt = nodeRules ? nodeRules.length : 0;\n for (let i = 0; i < nodeRuleCnt; ) {\n rule = nodeRules[i];\n if (rule && rule.rules) {\n // visit because we are moving them out from being a child\n rulesets.push(this._visitor.visit(rule));\n nodeRules.splice(i, 1);\n nodeRuleCnt--;\n continue;\n }\n i++;\n }\n // accept the visitor to remove rules and refactor itself\n // then we can decide nogw whether we want it or not\n // compile body\n if (nodeRuleCnt > 0) {\n rulesetNode.accept(this._visitor);\n } else {\n rulesetNode.rules = null;\n }\n visitArgs.visitDeeper = false;\n } else { // if (! rulesetNode.root) {\n rulesetNode.accept(this._visitor);\n visitArgs.visitDeeper = false;\n }\n\n if (rulesetNode.rules) {\n this._mergeRules(rulesetNode.rules);\n this._removeDuplicateRules(rulesetNode.rules);\n }\n\n // now decide whether we keep the ruleset\n if (this.utils.isVisibleRuleset(rulesetNode)) {\n rulesetNode.ensureVisibility();\n rulesets.splice(0, 0, rulesetNode);\n }\n\n if (rulesets.length === 1) {\n return rulesets[0];\n }\n return rulesets;\n },\n\n _compileRulesetPaths: function(rulesetNode) {\n if (rulesetNode.paths) {\n rulesetNode.paths = rulesetNode.paths\n .filter(p => {\n let i;\n if (p[0].elements[0].combinator.value === ' ') {\n p[0].elements[0].combinator = new(tree.Combinator)('');\n }\n for (i = 0; i < p.length; i++) {\n if (p[i].isVisible() && p[i].getIsOutput()) {\n return true;\n }\n }\n return false;\n });\n }\n },\n\n _removeDuplicateRules: function(rules) {\n if (!rules) { return; }\n\n // remove duplicates\n const ruleCache = {};\n\n let ruleList;\n let rule;\n let i;\n\n for (i = rules.length - 1; i >= 0 ; i--) {\n rule = rules[i];\n if (rule instanceof tree.Declaration) {\n if (!ruleCache[rule.name]) {\n ruleCache[rule.name] = rule;\n } else {\n ruleList = ruleCache[rule.name];\n if (ruleList instanceof tree.Declaration) {\n ruleList = ruleCache[rule.name] = [ruleCache[rule.name].toCSS(this._context)];\n }\n const ruleCSS = rule.toCSS(this._context);\n if (ruleList.indexOf(ruleCSS) !== -1) {\n rules.splice(i, 1);\n } else {\n ruleList.push(ruleCSS);\n }\n }\n }\n }\n },\n\n _mergeRules: function(rules) {\n if (!rules) {\n return; \n }\n\n const groups = {};\n const groupsArr = [];\n\n for (let i = 0; i < rules.length; i++) {\n const rule = rules[i];\n if (rule.merge) {\n const key = rule.name;\n groups[key] ? rules.splice(i--, 1) : \n groupsArr.push(groups[key] = []);\n groups[key].push(rule);\n }\n }\n\n groupsArr.forEach(group => {\n if (group.length > 0) {\n const result = group[0];\n let space = [];\n const comma = [new tree.Expression(space)];\n group.forEach(rule => {\n if ((rule.merge === '+') && (space.length > 0)) {\n comma.push(new tree.Expression(space = []));\n }\n space.push(rule.value);\n result.important = result.important || rule.important;\n });\n result.value = new tree.Value(comma);\n }\n });\n }\n};\n\nexport default ToCSSVisitor;\n","import Visitor from './visitor';\nimport ImportVisitor from './import-visitor';\nimport MarkVisibleSelectorsVisitor from './set-tree-visibility-visitor';\nimport ExtendVisitor from './extend-visitor';\nimport JoinSelectorVisitor from './join-selector-visitor';\nimport ToCSSVisitor from './to-css-visitor';\n\nexport default {\n Visitor,\n ImportVisitor,\n MarkVisibleSelectorsVisitor,\n ExtendVisitor,\n JoinSelectorVisitor,\n ToCSSVisitor\n};\n","import chunker from './chunker';\n\nexport default () => {\n let // Less input string\n input;\n\n let // current chunk\n j;\n\n const // holds state for backtracking\n saveStack = [];\n\n let // furthest index the parser has gone to\n furthest;\n\n let // if this is furthest we got to, this is the probably cause\n furthestPossibleErrorMessage;\n\n let // chunkified input\n chunks;\n\n let // current chunk\n current;\n\n let // index of current chunk, in `input`\n currentPos;\n\n const parserInput = {};\n const CHARCODE_SPACE = 32;\n const CHARCODE_TAB = 9;\n const CHARCODE_LF = 10;\n const CHARCODE_CR = 13;\n const CHARCODE_PLUS = 43;\n const CHARCODE_COMMA = 44;\n const CHARCODE_FORWARD_SLASH = 47;\n const CHARCODE_9 = 57;\n\n function skipWhitespace(length) {\n const oldi = parserInput.i;\n const oldj = j;\n const curr = parserInput.i - currentPos;\n const endIndex = parserInput.i + current.length - curr;\n const mem = (parserInput.i += length);\n const inp = input;\n let c;\n let nextChar;\n let comment;\n\n for (; parserInput.i < endIndex; parserInput.i++) {\n c = inp.charCodeAt(parserInput.i);\n\n if (parserInput.autoCommentAbsorb && c === CHARCODE_FORWARD_SLASH) {\n nextChar = inp.charAt(parserInput.i + 1);\n if (nextChar === '/') {\n comment = {index: parserInput.i, isLineComment: true};\n let nextNewLine = inp.indexOf('\\n', parserInput.i + 2);\n if (nextNewLine < 0) {\n nextNewLine = endIndex;\n }\n parserInput.i = nextNewLine;\n comment.text = inp.substr(comment.index, parserInput.i - comment.index);\n parserInput.commentStore.push(comment);\n continue;\n } else if (nextChar === '*') {\n const nextStarSlash = inp.indexOf('*/', parserInput.i + 2);\n if (nextStarSlash >= 0) {\n comment = {\n index: parserInput.i,\n text: inp.substr(parserInput.i, nextStarSlash + 2 - parserInput.i),\n isLineComment: false\n };\n parserInput.i += comment.text.length - 1;\n parserInput.commentStore.push(comment);\n continue;\n }\n }\n break;\n }\n\n if ((c !== CHARCODE_SPACE) && (c !== CHARCODE_LF) && (c !== CHARCODE_TAB) && (c !== CHARCODE_CR)) {\n break;\n }\n }\n\n current = current.slice(length + parserInput.i - mem + curr);\n currentPos = parserInput.i;\n\n if (!current.length) {\n if (j < chunks.length - 1) {\n current = chunks[++j];\n skipWhitespace(0); // skip space at the beginning of a chunk\n return true; // things changed\n }\n parserInput.finished = true;\n }\n\n return oldi !== parserInput.i || oldj !== j;\n }\n\n parserInput.save = () => {\n currentPos = parserInput.i;\n saveStack.push( { current, i: parserInput.i, j });\n };\n parserInput.restore = possibleErrorMessage => {\n\n if (parserInput.i > furthest || (parserInput.i === furthest && possibleErrorMessage && !furthestPossibleErrorMessage)) {\n furthest = parserInput.i;\n furthestPossibleErrorMessage = possibleErrorMessage;\n }\n const state = saveStack.pop();\n current = state.current;\n currentPos = parserInput.i = state.i;\n j = state.j;\n };\n parserInput.forget = () => {\n saveStack.pop();\n };\n parserInput.isWhitespace = offset => {\n const pos = parserInput.i + (offset || 0);\n const code = input.charCodeAt(pos);\n return (code === CHARCODE_SPACE || code === CHARCODE_CR || code === CHARCODE_TAB || code === CHARCODE_LF);\n };\n\n // Specialization of $(tok)\n parserInput.$re = tok => {\n if (parserInput.i > currentPos) {\n current = current.slice(parserInput.i - currentPos);\n currentPos = parserInput.i;\n }\n\n const m = tok.exec(current);\n if (!m) {\n return null;\n }\n\n skipWhitespace(m[0].length);\n if (typeof m === 'string') {\n return m;\n }\n\n return m.length === 1 ? m[0] : m;\n };\n\n parserInput.$char = tok => {\n if (input.charAt(parserInput.i) !== tok) {\n return null;\n }\n skipWhitespace(1);\n return tok;\n };\n\n parserInput.$peekChar = tok => {\n if (input.charAt(parserInput.i) !== tok) {\n return null;\n }\n return tok;\n };\n\n parserInput.$str = tok => {\n const tokLength = tok.length;\n\n // https://jsperf.com/string-startswith/21\n for (let i = 0; i < tokLength; i++) {\n if (input.charAt(parserInput.i + i) !== tok.charAt(i)) {\n return null;\n }\n }\n\n skipWhitespace(tokLength);\n return tok;\n };\n\n parserInput.$quoted = loc => {\n const pos = loc || parserInput.i;\n const startChar = input.charAt(pos);\n\n if (startChar !== '\\'' && startChar !== '\"') {\n return;\n }\n const length = input.length;\n const currentPosition = pos;\n\n for (let i = 1; i + currentPosition < length; i++) {\n const nextChar = input.charAt(i + currentPosition);\n switch (nextChar) {\n case '\\\\':\n i++;\n continue;\n case '\\r':\n case '\\n':\n break;\n case startChar: {\n const str = input.substr(currentPosition, i + 1);\n if (!loc && loc !== 0) {\n skipWhitespace(i + 1);\n return str\n }\n return [startChar, str];\n }\n default:\n }\n }\n return null;\n };\n\n /**\n * Permissive parsing. Ignores everything except matching {} [] () and quotes\n * until matching token (outside of blocks)\n */\n parserInput.$parseUntil = tok => {\n let quote = '';\n let returnVal = null;\n let inComment = false;\n let blockDepth = 0;\n const blockStack = [];\n const parseGroups = [];\n const length = input.length;\n const startPos = parserInput.i;\n let lastPos = parserInput.i;\n let i = parserInput.i;\n let loop = true;\n let testChar;\n\n if (typeof tok === 'string') {\n testChar = char => char === tok\n } else {\n testChar = char => tok.test(char)\n }\n\n do {\n let nextChar = input.charAt(i);\n if (blockDepth === 0 && testChar(nextChar)) {\n returnVal = input.substr(lastPos, i - lastPos);\n if (returnVal) {\n parseGroups.push(returnVal);\n }\n else {\n parseGroups.push(' ');\n }\n returnVal = parseGroups;\n skipWhitespace(i - startPos);\n loop = false\n } else {\n if (inComment) {\n if (nextChar === '*' && \n input.charAt(i + 1) === '/') {\n i++;\n blockDepth--;\n inComment = false;\n }\n i++;\n continue;\n }\n switch (nextChar) {\n case '\\\\':\n i++;\n nextChar = input.charAt(i);\n parseGroups.push(input.substr(lastPos, i - lastPos + 1));\n lastPos = i + 1;\n break;\n case '/':\n if (input.charAt(i + 1) === '*') {\n i++;\n inComment = true;\n blockDepth++;\n }\n break;\n case '\\'':\n case '\"':\n quote = parserInput.$quoted(i);\n if (quote) {\n parseGroups.push(input.substr(lastPos, i - lastPos), quote);\n i += quote[1].length - 1;\n lastPos = i + 1;\n }\n else {\n skipWhitespace(i - startPos);\n returnVal = nextChar;\n loop = false;\n }\n break;\n case '{':\n blockStack.push('}');\n blockDepth++;\n break;\n case '(':\n blockStack.push(')');\n blockDepth++;\n break;\n case '[':\n blockStack.push(']');\n blockDepth++;\n break;\n case '}':\n case ')':\n case ']': {\n const expected = blockStack.pop();\n if (nextChar === expected) {\n blockDepth--;\n } else {\n // move the parser to the error and return expected\n skipWhitespace(i - startPos);\n returnVal = expected;\n loop = false;\n }\n }\n }\n i++;\n if (i > length) {\n loop = false;\n }\n }\n } while (loop);\n\n return returnVal ? returnVal : null;\n }\n\n parserInput.autoCommentAbsorb = true;\n parserInput.commentStore = [];\n parserInput.finished = false;\n\n // Same as $(), but don't change the state of the parser,\n // just return the match.\n parserInput.peek = tok => {\n if (typeof tok === 'string') {\n // https://jsperf.com/string-startswith/21\n for (let i = 0; i < tok.length; i++) {\n if (input.charAt(parserInput.i + i) !== tok.charAt(i)) {\n return false;\n }\n }\n return true;\n } else {\n return tok.test(current);\n }\n };\n\n // Specialization of peek()\n // TODO remove or change some currentChar calls to peekChar\n parserInput.peekChar = tok => input.charAt(parserInput.i) === tok;\n\n parserInput.currentChar = () => input.charAt(parserInput.i);\n\n parserInput.prevChar = () => input.charAt(parserInput.i - 1);\n\n parserInput.getInput = () => input;\n\n parserInput.peekNotNumeric = () => {\n const c = input.charCodeAt(parserInput.i);\n // Is the first char of the dimension 0-9, '.', '+' or '-'\n return (c > CHARCODE_9 || c < CHARCODE_PLUS) || c === CHARCODE_FORWARD_SLASH || c === CHARCODE_COMMA;\n };\n\n parserInput.start = (str, chunkInput, failFunction) => {\n input = str;\n parserInput.i = j = currentPos = furthest = 0;\n\n // chunking apparently makes things quicker (but my tests indicate\n // it might actually make things slower in node at least)\n // and it is a non-perfect parse - it can't recognise\n // unquoted urls, meaning it can't distinguish comments\n // meaning comments with quotes or {}() in them get 'counted'\n // and then lead to parse errors.\n // In addition if the chunking chunks in the wrong place we might\n // not be able to parse a parser statement in one go\n // this is officially deprecated but can be switched on via an option\n // in the case it causes too much performance issues.\n if (chunkInput) {\n chunks = chunker(str, failFunction);\n } else {\n chunks = [str];\n }\n\n current = chunks[0];\n\n skipWhitespace(0);\n };\n\n parserInput.end = () => {\n let message;\n const isFinished = parserInput.i >= input.length;\n\n if (parserInput.i < furthest) {\n message = furthestPossibleErrorMessage;\n parserInput.i = furthest;\n }\n return {\n isFinished,\n furthest: parserInput.i,\n furthestPossibleErrorMessage: message,\n furthestReachedEnd: parserInput.i >= input.length - 1,\n furthestChar: input[parserInput.i]\n };\n };\n\n return parserInput;\n};\n","// Split the input into chunks.\nexport default function (input, fail) {\n const len = input.length;\n let level = 0;\n let parenLevel = 0;\n let lastOpening;\n let lastOpeningParen;\n let lastMultiComment;\n let lastMultiCommentEndBrace;\n const chunks = [];\n let emitFrom = 0;\n let chunkerCurrentIndex;\n let currentChunkStartIndex;\n let cc;\n let cc2;\n let matched;\n\n function emitChunk(force) {\n const len = chunkerCurrentIndex - emitFrom;\n if (((len < 512) && !force) || !len) {\n return;\n }\n chunks.push(input.slice(emitFrom, chunkerCurrentIndex + 1));\n emitFrom = chunkerCurrentIndex + 1;\n }\n\n for (chunkerCurrentIndex = 0; chunkerCurrentIndex < len; chunkerCurrentIndex++) {\n cc = input.charCodeAt(chunkerCurrentIndex);\n if (((cc >= 97) && (cc <= 122)) || (cc < 34)) {\n // a-z or whitespace\n continue;\n }\n\n switch (cc) {\n case 40: // (\n parenLevel++;\n lastOpeningParen = chunkerCurrentIndex;\n continue;\n case 41: // )\n if (--parenLevel < 0) {\n return fail('missing opening `(`', chunkerCurrentIndex);\n }\n continue;\n case 59: // ;\n if (!parenLevel) { emitChunk(); }\n continue;\n case 123: // {\n level++;\n lastOpening = chunkerCurrentIndex;\n continue;\n case 125: // }\n if (--level < 0) {\n return fail('missing opening `{`', chunkerCurrentIndex);\n }\n if (!level && !parenLevel) { emitChunk(); }\n continue;\n case 92: // \\\n if (chunkerCurrentIndex < len - 1) { chunkerCurrentIndex++; continue; }\n return fail('unescaped `\\\\`', chunkerCurrentIndex);\n case 34:\n case 39:\n case 96: // \", ' and `\n matched = 0;\n currentChunkStartIndex = chunkerCurrentIndex;\n for (chunkerCurrentIndex = chunkerCurrentIndex + 1; chunkerCurrentIndex < len; chunkerCurrentIndex++) {\n cc2 = input.charCodeAt(chunkerCurrentIndex);\n if (cc2 > 96) { continue; }\n if (cc2 == cc) { matched = 1; break; }\n if (cc2 == 92) { // \\\n if (chunkerCurrentIndex == len - 1) {\n return fail('unescaped `\\\\`', chunkerCurrentIndex);\n }\n chunkerCurrentIndex++;\n }\n }\n if (matched) { continue; }\n return fail(`unmatched \\`${String.fromCharCode(cc)}\\``, currentChunkStartIndex);\n case 47: // /, check for comment\n if (parenLevel || (chunkerCurrentIndex == len - 1)) { continue; }\n cc2 = input.charCodeAt(chunkerCurrentIndex + 1);\n if (cc2 == 47) {\n // //, find lnfeed\n for (chunkerCurrentIndex = chunkerCurrentIndex + 2; chunkerCurrentIndex < len; chunkerCurrentIndex++) {\n cc2 = input.charCodeAt(chunkerCurrentIndex);\n if ((cc2 <= 13) && ((cc2 == 10) || (cc2 == 13))) { break; }\n }\n } else if (cc2 == 42) {\n // /*, find */\n lastMultiComment = currentChunkStartIndex = chunkerCurrentIndex;\n for (chunkerCurrentIndex = chunkerCurrentIndex + 2; chunkerCurrentIndex < len - 1; chunkerCurrentIndex++) {\n cc2 = input.charCodeAt(chunkerCurrentIndex);\n if (cc2 == 125) { lastMultiCommentEndBrace = chunkerCurrentIndex; }\n if (cc2 != 42) { continue; }\n if (input.charCodeAt(chunkerCurrentIndex + 1) == 47) { break; }\n }\n if (chunkerCurrentIndex == len - 1) {\n return fail('missing closing `*/`', currentChunkStartIndex);\n }\n chunkerCurrentIndex++;\n }\n continue;\n case 42: // *, check for unmatched */\n if ((chunkerCurrentIndex < len - 1) && (input.charCodeAt(chunkerCurrentIndex + 1) == 47)) {\n return fail('unmatched `/*`', chunkerCurrentIndex);\n }\n continue;\n }\n }\n\n if (level !== 0) {\n if ((lastMultiComment > lastOpening) && (lastMultiCommentEndBrace > lastMultiComment)) {\n return fail('missing closing `}` or `*/`', lastOpening);\n } else {\n return fail('missing closing `}`', lastOpening);\n }\n } else if (parenLevel !== 0) {\n return fail('missing closing `)`', lastOpeningParen);\n }\n\n emitChunk(true);\n return chunks;\n}\n","function makeRegistry( base ) {\n return {\n _data: {},\n add: function(name, func) {\n // precautionary case conversion, as later querying of\n // the registry by function-caller uses lower case as well.\n name = name.toLowerCase();\n\n // eslint-disable-next-line no-prototype-builtins\n if (this._data.hasOwnProperty(name)) {\n // TODO warn\n }\n this._data[name] = func;\n },\n addMultiple: function(functions) {\n Object.keys(functions).forEach(\n name => {\n this.add(name, functions[name]);\n });\n },\n get: function(name) {\n return this._data[name] || ( base && base.get( name ));\n },\n getLocalFunctions: function() {\n return this._data;\n },\n inherit: function() {\n return makeRegistry( this );\n },\n create: function(base) {\n return makeRegistry(base);\n }\n };\n}\n\nexport default makeRegistry( null );","export const MediaSyntaxOptions = {\n queryInParens: true\n};\n\nexport const ContainerSyntaxOptions = {\n queryInParens: true\n};\n","import Node from './node';\n\nconst Anonymous = function(value, index, currentFileInfo, mapLines, rulesetLike, visibilityInfo) {\n this.value = value;\n this._index = index;\n this._fileInfo = currentFileInfo;\n this.mapLines = mapLines;\n this.rulesetLike = (typeof rulesetLike === 'undefined') ? false : rulesetLike;\n this.allowRoot = true;\n this.copyVisibilityInfo(visibilityInfo);\n}\n\nAnonymous.prototype = Object.assign(new Node(), {\n type: 'Anonymous',\n eval() {\n return new Anonymous(this.value, this._index, this._fileInfo, this.mapLines, this.rulesetLike, this.visibilityInfo());\n },\n compare(other) {\n return other.toCSS && this.toCSS() === other.toCSS() ? 0 : undefined;\n },\n isRulesetLike() {\n return this.rulesetLike;\n },\n genCSS(context, output) {\n this.nodeVisible = Boolean(this.value);\n if (this.nodeVisible) {\n output.add(this.value, this._fileInfo, this._index, this.mapLines);\n }\n }\n})\n\nexport default Anonymous;\n","import LessError from '../less-error';\nimport tree from '../tree';\nimport visitors from '../visitors';\nimport getParserInput from './parser-input';\nimport * as utils from '../utils';\nimport functionRegistry from '../functions/function-registry';\nimport { ContainerSyntaxOptions, MediaSyntaxOptions } from '../tree/atrule-syntax';\nimport logger from '../logger';\nimport Selector from '../tree/selector';\nimport Anonymous from '../tree/anonymous';\n\n//\n// less.js - parser\n//\n// A relatively straight-forward predictive parser.\n// There is no tokenization/lexing stage, the input is parsed\n// in one sweep.\n//\n// To make the parser fast enough to run in the browser, several\n// optimization had to be made:\n//\n// - Matching and slicing on a huge input is often cause of slowdowns.\n// The solution is to chunkify the input into smaller strings.\n// The chunks are stored in the `chunks` var,\n// `j` holds the current chunk index, and `currentPos` holds\n// the index of the current chunk in relation to `input`.\n// This gives us an almost 4x speed-up.\n//\n// - In many cases, we don't need to match individual tokens;\n// for example, if a value doesn't hold any variables, operations\n// or dynamic references, the parser can effectively 'skip' it,\n// treating it as a literal.\n// An example would be '1px solid #000' - which evaluates to itself,\n// we don't need to know what the individual components are.\n// The drawback, of course is that you don't get the benefits of\n// syntax-checking on the CSS. This gives us a 50% speed-up in the parser,\n// and a smaller speed-up in the code-gen.\n//\n//\n// Token matching is done with the `$` function, which either takes\n// a terminal string or regexp, or a non-terminal function to call.\n// It also takes care of moving all the indices forwards.\n//\n\nconst Parser = function Parser(context, imports, fileInfo, currentIndex) {\n currentIndex = currentIndex || 0;\n let parsers;\n const parserInput = getParserInput();\n\n function error(msg, type) {\n throw new LessError(\n {\n index: parserInput.i,\n filename: fileInfo.filename,\n type: type || 'Syntax',\n message: msg\n },\n imports\n );\n }\n\n /**\n * \n * @param {string} msg \n * @param {number} index \n * @param {string} type \n */\n function warn(msg, index, type) {\n if (!context.quiet) {\n logger.warn(\n (new LessError(\n {\n index: index ?? parserInput.i,\n filename: fileInfo.filename,\n type: type ? `${type.toUpperCase()} WARNING` : 'WARNING',\n message: msg\n },\n imports\n )).toString()\n );\n }\n }\n\n function expect(arg, msg) {\n // some older browsers return typeof 'function' for RegExp\n const result = (arg instanceof Function) ? arg.call(parsers) : parserInput.$re(arg);\n if (result) {\n return result;\n }\n\n error(msg || (typeof arg === 'string'\n ? `expected '${arg}' got '${parserInput.currentChar()}'`\n : 'unexpected token'));\n }\n\n // Specialization of expect()\n function expectChar(arg, msg) {\n if (parserInput.$char(arg)) {\n return arg;\n }\n error(msg || `expected '${arg}' got '${parserInput.currentChar()}'`);\n }\n\n function getDebugInfo(index) {\n const filename = fileInfo.filename;\n\n return {\n lineNumber: utils.getLocation(index, parserInput.getInput()).line + 1,\n fileName: filename\n };\n }\n\n /**\n * Used after initial parsing to create nodes on the fly\n *\n * @param {String} str - string to parse\n * @param {Array} parseList - array of parsers to run input through e.g. [\"value\", \"important\"]\n * @param {Number} currentIndex - start number to begin indexing\n * @param {Object} fileInfo - fileInfo to attach to created nodes\n */\n function parseNode(str, parseList, callback) {\n let result;\n const returnNodes = [];\n const parser = parserInput;\n\n try {\n parser.start(str, false, function fail(msg, index) {\n callback({\n message: msg,\n index: index + currentIndex\n });\n });\n for (let x = 0, p; (p = parseList[x]); x++) {\n result = parsers[p]();\n returnNodes.push(result || null);\n }\n\n const endInfo = parser.end();\n if (endInfo.isFinished) {\n callback(null, returnNodes);\n }\n else {\n callback(true, null);\n }\n } catch (e) {\n throw new LessError({\n index: e.index + currentIndex,\n message: e.message\n }, imports, fileInfo.filename);\n }\n }\n\n //\n // The Parser\n //\n return {\n parserInput,\n imports,\n fileInfo,\n parseNode,\n //\n // Parse an input string into an abstract syntax tree,\n // @param str A string containing 'less' markup\n // @param callback call `callback` when done.\n // @param [additionalData] An optional map which can contains vars - a map (key, value) of variables to apply\n //\n parse: function (str, callback, additionalData) {\n let root;\n let err = null;\n let globalVars;\n let modifyVars;\n let ignored;\n let preText = '';\n\n // Optionally disable @plugin parsing\n if (additionalData && additionalData.disablePluginRule) {\n parsers.plugin = function() {\n var dir = parserInput.$re(/^@plugin?\\s+/);\n if (dir) {\n error('@plugin statements are not allowed when disablePluginRule is set to true');\n }\n }\n }\n\n globalVars = (additionalData && additionalData.globalVars) ? `${Parser.serializeVars(additionalData.globalVars)}\\n` : '';\n modifyVars = (additionalData && additionalData.modifyVars) ? `\\n${Parser.serializeVars(additionalData.modifyVars)}` : '';\n\n if (context.pluginManager) {\n const preProcessors = context.pluginManager.getPreProcessors();\n for (let i = 0; i < preProcessors.length; i++) {\n str = preProcessors[i].process(str, { context, imports, fileInfo });\n }\n }\n\n if (globalVars || (additionalData && additionalData.banner)) {\n preText = ((additionalData && additionalData.banner) ? additionalData.banner : '') + globalVars;\n ignored = imports.contentsIgnoredChars;\n ignored[fileInfo.filename] = ignored[fileInfo.filename] || 0;\n ignored[fileInfo.filename] += preText.length;\n }\n\n str = str.replace(/\\r\\n?/g, '\\n');\n // Remove potential UTF Byte Order Mark\n str = preText + str.replace(/^\\uFEFF/, '') + modifyVars;\n imports.contents[fileInfo.filename] = str;\n\n // Start with the primary rule.\n // The whole syntax tree is held under a Ruleset node,\n // with the `root` property set to true, so no `{}` are\n // output. The callback is called when the input is parsed.\n try {\n parserInput.start(str, context.chunkInput, function fail(msg, index) {\n throw new LessError({\n index,\n type: 'Parse',\n message: msg,\n filename: fileInfo.filename\n }, imports);\n });\n\n tree.Node.prototype.parse = this;\n root = new tree.Ruleset(null, this.parsers.primary());\n tree.Node.prototype.rootNode = root;\n root.root = true;\n root.firstRoot = true;\n root.functionRegistry = functionRegistry.inherit();\n\n } catch (e) {\n return callback(new LessError(e, imports, fileInfo.filename));\n }\n\n // If `i` is smaller than the `input.length - 1`,\n // it means the parser wasn't able to parse the whole\n // string, so we've got a parsing error.\n //\n // We try to extract a \\n delimited string,\n // showing the line where the parse error occurred.\n // We split it up into two parts (the part which parsed,\n // and the part which didn't), so we can color them differently.\n const endInfo = parserInput.end();\n if (!endInfo.isFinished) {\n\n let message = endInfo.furthestPossibleErrorMessage;\n\n if (!message) {\n message = 'Unrecognised input';\n if (endInfo.furthestChar === '}') {\n message += '. Possibly missing opening \\'{\\'';\n } else if (endInfo.furthestChar === ')') {\n message += '. Possibly missing opening \\'(\\'';\n } else if (endInfo.furthestReachedEnd) {\n message += '. Possibly missing something';\n }\n }\n\n err = new LessError({\n type: 'Parse',\n message,\n index: endInfo.furthest,\n filename: fileInfo.filename\n }, imports);\n }\n\n const finish = e => {\n e = err || e || imports.error;\n\n if (e) {\n if (!(e instanceof LessError)) {\n e = new LessError(e, imports, fileInfo.filename);\n }\n\n return callback(e);\n }\n else {\n return callback(null, root);\n }\n };\n\n if (context.processImports !== false) {\n new visitors.ImportVisitor(imports, finish)\n .run(root);\n } else {\n return finish();\n }\n },\n\n //\n // Here in, the parsing rules/functions\n //\n // The basic structure of the syntax tree generated is as follows:\n //\n // Ruleset -> Declaration -> Value -> Expression -> Entity\n //\n // Here's some Less code:\n //\n // .class {\n // color: #fff;\n // border: 1px solid #000;\n // width: @w + 4px;\n // > .child {...}\n // }\n //\n // And here's what the parse tree might look like:\n //\n // Ruleset (Selector '.class', [\n // Declaration (\"color\", Value ([Expression [Color #fff]]))\n // Declaration (\"border\", Value ([Expression [Dimension 1px][Keyword \"solid\"][Color #000]]))\n // Declaration (\"width\", Value ([Expression [Operation \" + \" [Variable \"@w\"][Dimension 4px]]]))\n // Ruleset (Selector [Element '>', '.child'], [...])\n // ])\n //\n // In general, most rules will try to parse a token with the `$re()` function, and if the return\n // value is truly, will return a new node, of the relevant type. Sometimes, we need to check\n // first, before parsing, that's when we use `peek()`.\n //\n parsers: parsers = {\n //\n // The `primary` rule is the *entry* and *exit* point of the parser.\n // The rules here can appear at any level of the parse tree.\n //\n // The recursive nature of the grammar is an interplay between the `block`\n // rule, which represents `{ ... }`, the `ruleset` rule, and this `primary` rule,\n // as represented by this simplified grammar:\n //\n // primary → (ruleset | declaration)+\n // ruleset → selector+ block\n // block → '{' primary '}'\n //\n // Only at one point is the primary rule not called from the\n // block rule: at the root level.\n //\n primary: function () {\n const mixin = this.mixin;\n let root = [];\n let node;\n\n while (true) {\n while (true) {\n node = this.comment();\n if (!node) { break; }\n root.push(node);\n }\n // always process comments before deciding if finished\n if (parserInput.finished) {\n break;\n }\n if (parserInput.peek('}')) {\n break;\n }\n\n node = this.extendRule();\n if (node) {\n root = root.concat(node);\n continue;\n }\n\n node = mixin.definition() || this.declaration() || mixin.call(false, false) ||\n this.ruleset() || this.variableCall() || this.entities.call() || this.atrule();\n if (node) {\n root.push(node);\n } else {\n let foundSemiColon = false;\n while (parserInput.$char(';')) {\n foundSemiColon = true;\n }\n if (!foundSemiColon) {\n break;\n }\n }\n }\n\n return root;\n },\n\n // comments are collected by the main parsing mechanism and then assigned to nodes\n // where the current structure allows it\n comment: function () {\n if (parserInput.commentStore.length) {\n const comment = parserInput.commentStore.shift();\n return new(tree.Comment)(comment.text, comment.isLineComment, comment.index + currentIndex, fileInfo);\n }\n },\n\n //\n // Entities are tokens which can be found inside an Expression\n //\n entities: {\n mixinLookup: function() {\n return parsers.mixin.call(true, true);\n },\n //\n // A string, which supports escaping \" and '\n //\n // \"milky way\" 'he\\'s the one!'\n //\n quoted: function (forceEscaped) {\n let str;\n const index = parserInput.i;\n let isEscaped = false;\n\n parserInput.save();\n if (parserInput.$char('~')) {\n isEscaped = true;\n } else if (forceEscaped) {\n parserInput.restore();\n return;\n }\n\n str = parserInput.$quoted();\n if (!str) {\n parserInput.restore();\n return;\n }\n parserInput.forget();\n\n return new(tree.Quoted)(str.charAt(0), str.substr(1, str.length - 2), isEscaped, index + currentIndex, fileInfo);\n },\n\n //\n // A catch-all word, such as:\n //\n // black border-collapse\n //\n keyword: function () {\n const k = parserInput.$char('%') || parserInput.$re(/^\\[?(?:[\\w-]|\\\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+\\]?/);\n if (k) {\n return tree.Color.fromKeyword(k) || new(tree.Keyword)(k);\n }\n },\n\n //\n // A function call\n //\n // rgb(255, 0, 255)\n //\n // The arguments are parsed with the `entities.arguments` parser.\n //\n call: function () {\n let name;\n let args;\n let func;\n const index = parserInput.i;\n\n // http://jsperf.com/case-insensitive-regex-vs-strtolower-then-regex/18\n if (parserInput.peek(/^url\\(/i)) {\n return;\n }\n\n parserInput.save();\n\n name = parserInput.$re(/^([\\w-]+|%|~|progid:[\\w.]+)\\(/);\n if (!name) {\n parserInput.forget();\n return;\n }\n\n name = name[1];\n func = this.customFuncCall(name);\n if (func) {\n args = func.parse();\n if (args && func.stop) {\n parserInput.forget();\n return args;\n }\n }\n\n args = this.arguments(args);\n\n if (!parserInput.$char(')')) {\n parserInput.restore('Could not parse call arguments or missing \\')\\'');\n return;\n }\n\n parserInput.forget();\n\n return new(tree.Call)(name, args, index + currentIndex, fileInfo);\n },\n\n declarationCall: function () {\n let validCall;\n let args;\n const index = parserInput.i;\n\n parserInput.save();\n\n validCall = parserInput.$re(/^[\\w]+\\(/);\n if (!validCall) {\n parserInput.forget();\n return;\n }\n\n validCall = validCall.substring(0, validCall.length - 1);\n\n let rule = this.ruleProperty();\n let value;\n \n if (rule) {\n value = this.value();\n }\n \n if (rule && value) {\n args = [new (tree.Declaration)(rule, value, null, null, parserInput.i + currentIndex, fileInfo, true)];\n }\n\n if (!parserInput.$char(')')) {\n parserInput.restore('Could not parse call arguments or missing \\')\\'');\n return;\n }\n\n parserInput.forget();\n\n return new(tree.Call)(validCall, args, index + currentIndex, fileInfo);\n },\n\n //\n // Parsing rules for functions with non-standard args, e.g.:\n //\n // boolean(not(2 > 1))\n //\n // This is a quick prototype, to be modified/improved when\n // more custom-parsed funcs come (e.g. `selector(...)`)\n //\n\n customFuncCall: function (name) {\n /* Ideally the table is to be moved out of here for faster perf.,\n but it's quite tricky since it relies on all these `parsers`\n and `expect` available only here */\n return {\n alpha: f(parsers.ieAlpha, true),\n boolean: f(condition),\n 'if': f(condition)\n }[name.toLowerCase()];\n\n function f(parse, stop) {\n return {\n parse, // parsing function\n stop // when true - stop after parse() and return its result,\n // otherwise continue for plain args\n };\n }\n\n function condition() {\n return [expect(parsers.condition, 'expected condition')];\n }\n },\n\n arguments: function (prevArgs) {\n let argsComma = prevArgs || [];\n const argsSemiColon = [];\n let isSemiColonSeparated;\n let value;\n\n parserInput.save();\n\n while (true) {\n if (prevArgs) {\n prevArgs = false;\n } else {\n value = parsers.detachedRuleset() || this.assignment() || parsers.expression();\n if (!value) {\n break;\n }\n\n if (value.value && value.value.length == 1) {\n value = value.value[0];\n }\n\n argsComma.push(value);\n }\n\n if (parserInput.$char(',')) {\n continue;\n }\n\n if (parserInput.$char(';') || isSemiColonSeparated) {\n isSemiColonSeparated = true;\n value = (argsComma.length < 1) ? argsComma[0]\n : new tree.Value(argsComma);\n argsSemiColon.push(value);\n argsComma = [];\n }\n }\n\n parserInput.forget();\n return isSemiColonSeparated ? argsSemiColon : argsComma;\n },\n literal: function () {\n return this.dimension() ||\n this.color() ||\n this.quoted() ||\n this.unicodeDescriptor();\n },\n\n // Assignments are argument entities for calls.\n // They are present in ie filter properties as shown below.\n //\n // filter: progid:DXImageTransform.Microsoft.Alpha( *opacity=50* )\n //\n\n assignment: function () {\n let key;\n let value;\n parserInput.save();\n key = parserInput.$re(/^\\w+(?=\\s?=)/i);\n if (!key) {\n parserInput.restore();\n return;\n }\n if (!parserInput.$char('=')) {\n parserInput.restore();\n return;\n }\n value = parsers.entity();\n if (value) {\n parserInput.forget();\n return new(tree.Assignment)(key, value);\n } else {\n parserInput.restore();\n }\n },\n\n //\n // Parse url() tokens\n //\n // We use a specific rule for urls, because they don't really behave like\n // standard function calls. The difference is that the argument doesn't have\n // to be enclosed within a string, so it can't be parsed as an Expression.\n //\n url: function () {\n let value;\n const index = parserInput.i;\n\n parserInput.autoCommentAbsorb = false;\n\n if (!parserInput.$str('url(')) {\n parserInput.autoCommentAbsorb = true;\n return;\n }\n\n value = this.quoted() || this.variable() || this.property() ||\n parserInput.$re(/^(?:(?:\\\\[()'\"])|[^()'\"])+/) || '';\n\n parserInput.autoCommentAbsorb = true;\n\n expectChar(')');\n\n return new(tree.URL)((value.value !== undefined ||\n value instanceof tree.Variable ||\n value instanceof tree.Property) ?\n value : new(tree.Anonymous)(value, index), index + currentIndex, fileInfo);\n },\n\n //\n // A Variable entity, such as `@fink`, in\n //\n // width: @fink + 2px\n //\n // We use a different parser for variable definitions,\n // see `parsers.variable`.\n //\n variable: function () {\n let ch;\n let name;\n const index = parserInput.i;\n\n parserInput.save();\n if (parserInput.currentChar() === '@' && (name = parserInput.$re(/^@@?[\\w-]+/))) {\n ch = parserInput.currentChar();\n if (ch === '(' || ch === '[' && !parserInput.prevChar().match(/^\\s/)) {\n // this may be a VariableCall lookup\n const result = parsers.variableCall(name);\n if (result) {\n parserInput.forget();\n return result;\n }\n }\n parserInput.forget();\n return new(tree.Variable)(name, index + currentIndex, fileInfo);\n }\n parserInput.restore();\n },\n\n // A variable entity using the protective {} e.g. @{var}\n variableCurly: function () {\n let curly;\n const index = parserInput.i;\n\n if (parserInput.currentChar() === '@' && (curly = parserInput.$re(/^@\\{([\\w-]+)\\}/))) {\n return new(tree.Variable)(`@${curly[1]}`, index + currentIndex, fileInfo);\n }\n },\n //\n // A Property accessor, such as `$color`, in\n //\n // background-color: $color\n //\n property: function () {\n let name;\n const index = parserInput.i;\n\n if (parserInput.currentChar() === '$' && (name = parserInput.$re(/^\\$[\\w-]+/))) {\n return new(tree.Property)(name, index + currentIndex, fileInfo);\n }\n },\n\n // A property entity useing the protective {} e.g. ${prop}\n propertyCurly: function () {\n let curly;\n const index = parserInput.i;\n\n if (parserInput.currentChar() === '$' && (curly = parserInput.$re(/^\\$\\{([\\w-]+)\\}/))) {\n return new(tree.Property)(`$${curly[1]}`, index + currentIndex, fileInfo);\n }\n },\n //\n // A Hexadecimal color\n //\n // #4F3C2F\n //\n // `rgb` and `hsl` colors are parsed through the `entities.call` parser.\n //\n color: function () {\n let rgb;\n parserInput.save();\n\n if (parserInput.currentChar() === '#' && (rgb = parserInput.$re(/^#([A-Fa-f0-9]{8}|[A-Fa-f0-9]{6}|[A-Fa-f0-9]{3,4})([\\w.#[])?/))) {\n if (!rgb[2]) {\n parserInput.forget();\n return new(tree.Color)(rgb[1], undefined, rgb[0]);\n }\n }\n parserInput.restore();\n },\n\n colorKeyword: function () {\n parserInput.save();\n const autoCommentAbsorb = parserInput.autoCommentAbsorb;\n parserInput.autoCommentAbsorb = false;\n const k = parserInput.$re(/^[_A-Za-z-][_A-Za-z0-9-]+/);\n parserInput.autoCommentAbsorb = autoCommentAbsorb;\n if (!k) {\n parserInput.forget();\n return;\n }\n parserInput.restore();\n const color = tree.Color.fromKeyword(k);\n if (color) {\n parserInput.$str(k);\n return color;\n }\n },\n\n //\n // A Dimension, that is, a number and a unit\n //\n // 0.5em 95%\n //\n dimension: function () {\n if (parserInput.peekNotNumeric()) {\n return;\n }\n\n const value = parserInput.$re(/^([+-]?\\d*\\.?\\d+)(%|[a-z_]+)?/i);\n if (value) {\n return new(tree.Dimension)(value[1], value[2]);\n }\n },\n\n //\n // A unicode descriptor, as is used in unicode-range\n //\n // U+0?? or U+00A1-00A9\n //\n unicodeDescriptor: function () {\n let ud;\n\n ud = parserInput.$re(/^U\\+[0-9a-fA-F?]+(-[0-9a-fA-F?]+)?/);\n if (ud) {\n return new(tree.UnicodeDescriptor)(ud[0]);\n }\n },\n\n //\n // JavaScript code to be evaluated\n //\n // `window.location.href`\n //\n javascript: function () {\n let js;\n const index = parserInput.i;\n\n parserInput.save();\n\n const escape = parserInput.$char('~');\n const jsQuote = parserInput.$char('`');\n\n if (!jsQuote) {\n parserInput.restore();\n return;\n }\n\n js = parserInput.$re(/^[^`]*`/);\n if (js) {\n parserInput.forget();\n return new(tree.JavaScript)(js.substr(0, js.length - 1), Boolean(escape), index + currentIndex, fileInfo);\n }\n parserInput.restore('invalid javascript definition');\n }\n },\n\n //\n // The variable part of a variable definition. Used in the `rule` parser\n //\n // @fink:\n //\n variable: function () {\n let name;\n\n if (parserInput.currentChar() === '@' && (name = parserInput.$re(/^(@[\\w-]+)\\s*:/))) { return name[1]; }\n },\n\n //\n // Call a variable value to retrieve a detached ruleset\n // or a value from a detached ruleset's rules.\n //\n // @fink();\n // @fink;\n // color: @fink[@color];\n //\n variableCall: function (parsedName) {\n let lookups;\n const i = parserInput.i;\n const inValue = !!parsedName;\n let name = parsedName;\n\n parserInput.save();\n\n if (name || (parserInput.currentChar() === '@'\n && (name = parserInput.$re(/^(@[\\w-]+)(\\(\\s*\\))?/)))) {\n\n lookups = this.mixin.ruleLookups();\n\n if (!lookups && ((inValue && parserInput.$str('()') !== '()') || (name[2] !== '()'))) {\n parserInput.restore('Missing \\'[...]\\' lookup in variable call');\n return;\n }\n\n if (!inValue) {\n name = name[1];\n }\n\n const call = new tree.VariableCall(name, i, fileInfo);\n if (!inValue && parsers.end()) {\n parserInput.forget();\n return call;\n }\n else {\n parserInput.forget();\n return new tree.NamespaceValue(call, lookups, i, fileInfo);\n }\n }\n\n parserInput.restore();\n },\n\n //\n // extend syntax - used to extend selectors\n //\n extend: function(isRule) {\n let elements;\n let e;\n const index = parserInput.i;\n let option;\n let extendList;\n let extend;\n\n if (!parserInput.$str(isRule ? '&:extend(' : ':extend(')) {\n return;\n }\n\n do {\n option = null;\n elements = null;\n let first = true;\n while (!(option = parserInput.$re(/^(all)(?=\\s*(\\)|,))/))) {\n e = this.element();\n\n if (!e) {\n break;\n }\n /**\n * @note - This will not catch selectors in pseudos like :is() and :where() because\n * they don't currently parse their contents as selectors.\n */\n if (!first && e.combinator.value) {\n warn('Targeting complex selectors can have unexpected behavior, and this behavior may change in the future.', index)\n }\n\n first = false;\n if (elements) {\n elements.push(e);\n } else {\n elements = [ e ];\n }\n }\n\n option = option && option[1];\n if (!elements) {\n error('Missing target selector for :extend().');\n }\n extend = new(tree.Extend)(new(tree.Selector)(elements), option, index + currentIndex, fileInfo);\n if (extendList) {\n extendList.push(extend);\n } else {\n extendList = [ extend ];\n }\n } while (parserInput.$char(','));\n\n expect(/^\\)/);\n\n if (isRule) {\n expect(/^;/);\n }\n\n return extendList;\n },\n\n //\n // extendRule - used in a rule to extend all the parent selectors\n //\n extendRule: function() {\n return this.extend(true);\n },\n\n //\n // Mixins\n //\n mixin: {\n //\n // A Mixin call, with an optional argument list\n //\n // #mixins > .square(#fff);\n // #mixins.square(#fff);\n // .rounded(4px, black);\n // .button;\n //\n // We can lookup / return a value using the lookup syntax:\n //\n // color: #mixin.square(#fff)[@color];\n //\n // The `while` loop is there because mixins can be\n // namespaced, but we only support the child and descendant\n // selector for now.\n //\n call: function (inValue, getLookup) {\n const s = parserInput.currentChar();\n let important = false;\n let lookups;\n const index = parserInput.i;\n let elements;\n let args;\n let hasParens;\n let parensIndex;\n let parensWS = false;\n\n if (s !== '.' && s !== '#') { return; }\n\n parserInput.save(); // stop us absorbing part of an invalid selector\n\n elements = this.elements();\n\n if (elements) {\n parensIndex = parserInput.i;\n if (parserInput.$char('(')) {\n parensWS = parserInput.isWhitespace(-2);\n args = this.args(true).args;\n expectChar(')');\n hasParens = true;\n if (parensWS) {\n warn('Whitespace between a mixin name and parentheses for a mixin call is deprecated', parensIndex, 'DEPRECATED');\n }\n }\n\n if (getLookup !== false) {\n lookups = this.ruleLookups();\n }\n if (getLookup === true && !lookups) {\n parserInput.restore();\n return;\n }\n\n if (inValue && !lookups && !hasParens) {\n // This isn't a valid in-value mixin call\n parserInput.restore();\n return;\n }\n\n if (!inValue && parsers.important()) {\n important = true;\n }\n\n if (inValue || parsers.end()) {\n parserInput.forget();\n const mixin = new(tree.mixin.Call)(elements, args, index + currentIndex, fileInfo, !lookups && important);\n if (lookups) {\n return new tree.NamespaceValue(mixin, lookups);\n }\n else {\n if (!hasParens) {\n warn('Calling a mixin without parentheses is deprecated', parensIndex, 'DEPRECATED');\n }\n return mixin;\n }\n }\n }\n\n parserInput.restore();\n },\n /**\n * Matching elements for mixins\n * (Start with . or # and can have > )\n */\n elements: function() {\n let elements;\n let e;\n let c;\n let elem;\n let elemIndex;\n const re = /^[#.](?:[\\w-]|\\\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+/;\n while (true) {\n elemIndex = parserInput.i;\n e = parserInput.$re(re);\n\n if (!e) {\n break;\n }\n elem = new(tree.Element)(c, e, false, elemIndex + currentIndex, fileInfo);\n if (elements) {\n elements.push(elem);\n } else {\n elements = [ elem ];\n }\n c = parserInput.$char('>');\n }\n return elements;\n },\n args: function (isCall) {\n const entities = parsers.entities;\n const returner = { args:null, variadic: false };\n let expressions = [];\n const argsSemiColon = [];\n const argsComma = [];\n let isSemiColonSeparated;\n let expressionContainsNamed;\n let name;\n let nameLoop;\n let value;\n let arg;\n let expand;\n let hasSep = true;\n\n parserInput.save();\n\n while (true) {\n if (isCall) {\n arg = parsers.detachedRuleset() || parsers.expression();\n } else {\n parserInput.commentStore.length = 0;\n if (parserInput.$str('...')) {\n returner.variadic = true;\n if (parserInput.$char(';') && !isSemiColonSeparated) {\n isSemiColonSeparated = true;\n }\n (isSemiColonSeparated ? argsSemiColon : argsComma)\n .push({ variadic: true });\n break;\n }\n arg = entities.variable() || entities.property() || entities.literal() || entities.keyword() || this.call(true);\n }\n\n if (!arg || !hasSep) {\n break;\n }\n\n nameLoop = null;\n if (arg.throwAwayComments) {\n arg.throwAwayComments();\n }\n value = arg;\n let val = null;\n\n if (isCall) {\n // Variable\n if (arg.value && arg.value.length == 1) {\n val = arg.value[0];\n }\n } else {\n val = arg;\n }\n\n if (val && (val instanceof tree.Variable || val instanceof tree.Property)) {\n if (parserInput.$char(':')) {\n if (expressions.length > 0) {\n if (isSemiColonSeparated) {\n error('Cannot mix ; and , as delimiter types');\n }\n expressionContainsNamed = true;\n }\n\n value = parsers.detachedRuleset() || parsers.expression();\n\n if (!value) {\n if (isCall) {\n error('could not understand value for named argument');\n } else {\n parserInput.restore();\n returner.args = [];\n return returner;\n }\n }\n nameLoop = (name = val.name);\n } else if (parserInput.$str('...')) {\n if (!isCall) {\n returner.variadic = true;\n if (parserInput.$char(';') && !isSemiColonSeparated) {\n isSemiColonSeparated = true;\n }\n (isSemiColonSeparated ? argsSemiColon : argsComma)\n .push({ name: arg.name, variadic: true });\n break;\n } else {\n expand = true;\n }\n } else if (!isCall) {\n name = nameLoop = val.name;\n value = null;\n }\n }\n\n if (value) {\n expressions.push(value);\n }\n\n argsComma.push({ name:nameLoop, value, expand });\n\n if (parserInput.$char(',')) {\n hasSep = true;\n continue;\n }\n hasSep = parserInput.$char(';') === ';';\n\n if (hasSep || isSemiColonSeparated) {\n\n if (expressionContainsNamed) {\n error('Cannot mix ; and , as delimiter types');\n }\n\n isSemiColonSeparated = true;\n\n if (expressions.length > 1) {\n value = new(tree.Value)(expressions);\n }\n argsSemiColon.push({ name, value, expand });\n\n name = null;\n expressions = [];\n expressionContainsNamed = false;\n }\n }\n\n parserInput.forget();\n returner.args = isSemiColonSeparated ? argsSemiColon : argsComma;\n return returner;\n },\n //\n // A Mixin definition, with a list of parameters\n //\n // .rounded (@radius: 2px, @color) {\n // ...\n // }\n //\n // Until we have a finer grained state-machine, we have to\n // do a look-ahead, to make sure we don't have a mixin call.\n // See the `rule` function for more information.\n //\n // We start by matching `.rounded (`, and then proceed on to\n // the argument list, which has optional default values.\n // We store the parameters in `params`, with a `value` key,\n // if there is a value, such as in the case of `@radius`.\n //\n // Once we've got our params list, and a closing `)`, we parse\n // the `{...}` block.\n //\n definition: function () {\n let name;\n let params = [];\n let match;\n let ruleset;\n let cond;\n let variadic = false;\n if ((parserInput.currentChar() !== '.' && parserInput.currentChar() !== '#') ||\n parserInput.peek(/^[^{]*\\}/)) {\n return;\n }\n\n parserInput.save();\n\n match = parserInput.$re(/^([#.](?:[\\w-]|\\\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+)\\s*\\(/);\n if (match) {\n name = match[1];\n\n const argInfo = this.args(false);\n params = argInfo.args;\n variadic = argInfo.variadic;\n\n // .mixincall(\"@{a}\");\n // looks a bit like a mixin definition..\n // also\n // .mixincall(@a: {rule: set;});\n // so we have to be nice and restore\n if (!parserInput.$char(')')) {\n parserInput.restore('Missing closing \\')\\'');\n return;\n }\n\n parserInput.commentStore.length = 0;\n\n if (parserInput.$str('when')) { // Guard\n cond = expect(parsers.conditions, 'expected condition');\n }\n\n ruleset = parsers.block();\n\n if (ruleset) {\n parserInput.forget();\n return new(tree.mixin.Definition)(name, params, ruleset, cond, variadic);\n } else {\n parserInput.restore();\n }\n } else {\n parserInput.restore();\n }\n },\n\n ruleLookups: function() {\n let rule;\n const lookups = [];\n\n if (parserInput.currentChar() !== '[') {\n return;\n }\n\n while (true) {\n parserInput.save();\n rule = this.lookupValue();\n if (!rule && rule !== '') {\n parserInput.restore();\n break;\n }\n lookups.push(rule);\n parserInput.forget();\n }\n if (lookups.length > 0) {\n return lookups;\n }\n },\n\n lookupValue: function() {\n parserInput.save();\n\n if (!parserInput.$char('[')) {\n parserInput.restore();\n return;\n }\n\n const name = parserInput.$re(/^(?:[@$]{0,2})[_a-zA-Z0-9-]*/);\n\n if (!parserInput.$char(']')) {\n parserInput.restore();\n return;\n }\n\n if (name || name === '') {\n parserInput.forget();\n return name;\n }\n\n parserInput.restore();\n }\n },\n //\n // Entities are the smallest recognized token,\n // and can be found inside a rule's value.\n //\n entity: function () {\n const entities = this.entities;\n\n return this.comment() || entities.literal() || entities.variable() || entities.url() ||\n entities.property() || entities.call() || entities.keyword() || this.mixin.call(true) ||\n entities.javascript();\n },\n\n //\n // A Declaration terminator. Note that we use `peek()` to check for '}',\n // because the `block` rule will be expecting it, but we still need to make sure\n // it's there, if ';' was omitted.\n //\n end: function () {\n return parserInput.$char(';') || parserInput.peek('}');\n },\n\n //\n // IE's alpha function\n //\n // alpha(opacity=88)\n //\n ieAlpha: function () {\n let value;\n\n // http://jsperf.com/case-insensitive-regex-vs-strtolower-then-regex/18\n if (!parserInput.$re(/^opacity=/i)) { return; }\n value = parserInput.$re(/^\\d+/);\n if (!value) {\n value = expect(parsers.entities.variable, 'Could not parse alpha');\n value = `@{${value.name.slice(1)}}`;\n }\n expectChar(')');\n return new tree.Quoted('', `alpha(opacity=${value})`);\n },\n\n /** \n * A Selector Element\n *\n * div\n * + h1\n * #socks\n * input[type=\"text\"]\n *\n * Elements are the building blocks for Selectors,\n * they are made out of a `Combinator` (see combinator rule),\n * and an element name, such as a tag a class, or `*`.\n */\n element: function () {\n let e;\n let c;\n let v;\n const index = parserInput.i;\n\n c = this.combinator();\n\n /** This selector parser is quite simplistic and will pass a number of invalid selectors. */\n e = parserInput.$re(/^(?:\\d+\\.\\d+|\\d+)%/) ||\n // eslint-disable-next-line no-control-regex\n parserInput.$re(/^(?:[.#]?|:*)(?:[\\w-]|[^\\x00-\\x9f]|\\\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+/) ||\n parserInput.$char('*') || parserInput.$char('&') || this.attribute() ||\n parserInput.$re(/^\\([^&()@]+\\)/) || parserInput.$re(/^[.#:](?=@)/) ||\n this.entities.variableCurly();\n\n if (!e) {\n parserInput.save();\n if (parserInput.$char('(')) {\n if ((v = this.selector(false))) {\n let selectors = [];\n while (parserInput.$char(',')) {\n selectors.push(v);\n selectors.push(new Anonymous(','));\n v = this.selector(false);\n }\n selectors.push(v);\n \n if (parserInput.$char(')')) {\n if (selectors.length > 1) {\n e = new (tree.Paren)(new Selector(selectors));\n } else {\n e = new(tree.Paren)(v);\n }\n parserInput.forget();\n } else {\n parserInput.restore('Missing closing \\')\\'');\n }\n } else {\n parserInput.restore('Missing closing \\')\\'');\n }\n } else {\n parserInput.forget();\n }\n }\n\n if (e) { return new(tree.Element)(c, e, e instanceof tree.Variable, index + currentIndex, fileInfo); }\n },\n\n //\n // Combinators combine elements together, in a Selector.\n //\n // Because our parser isn't white-space sensitive, special care\n // has to be taken, when parsing the descendant combinator, ` `,\n // as it's an empty space. We have to check the previous character\n // in the input, to see if it's a ` ` character. More info on how\n // we deal with this in *combinator.js*.\n //\n combinator: function () {\n let c = parserInput.currentChar();\n\n if (c === '/') {\n parserInput.save();\n const slashedCombinator = parserInput.$re(/^\\/[a-z]+\\//i);\n if (slashedCombinator) {\n parserInput.forget();\n return new(tree.Combinator)(slashedCombinator);\n }\n parserInput.restore();\n }\n\n if (c === '>' || c === '+' || c === '~' || c === '|' || c === '^') {\n parserInput.i++;\n if (c === '^' && parserInput.currentChar() === '^') {\n c = '^^';\n parserInput.i++;\n }\n while (parserInput.isWhitespace()) { parserInput.i++; }\n return new(tree.Combinator)(c);\n } else if (parserInput.isWhitespace(-1)) {\n return new(tree.Combinator)(' ');\n } else {\n return new(tree.Combinator)(null);\n }\n },\n //\n // A CSS Selector\n // with less extensions e.g. the ability to extend and guard\n //\n // .class > div + h1\n // li a:hover\n //\n // Selectors are made out of one or more Elements, see above.\n //\n selector: function (isLess) {\n const index = parserInput.i;\n let elements;\n let extendList;\n let c;\n let e;\n let allExtends;\n let when;\n let condition;\n isLess = isLess !== false;\n while ((isLess && (extendList = this.extend())) || (isLess && (when = parserInput.$str('when'))) || (e = this.element())) {\n if (when) {\n condition = expect(this.conditions, 'expected condition');\n } else if (condition) {\n error('CSS guard can only be used at the end of selector');\n } else if (extendList) {\n if (allExtends) {\n allExtends = allExtends.concat(extendList);\n } else {\n allExtends = extendList;\n }\n } else {\n if (allExtends) { error('Extend can only be used at the end of selector'); }\n c = parserInput.currentChar();\n if (Array.isArray(e)){\n e.forEach(ele => elements.push(ele));\n } if (elements) {\n elements.push(e);\n } else {\n elements = [ e ];\n }\n e = null;\n }\n if (c === '{' || c === '}' || c === ';' || c === ',' || c === ')') {\n break;\n }\n }\n\n if (elements) { return new(tree.Selector)(elements, allExtends, condition, index + currentIndex, fileInfo); }\n if (allExtends) { error('Extend must be used to extend a selector, it cannot be used on its own'); }\n },\n selectors: function () {\n let s;\n let selectors;\n while (true) {\n s = this.selector();\n if (!s) {\n break;\n }\n if (selectors) {\n selectors.push(s);\n } else {\n selectors = [ s ];\n }\n parserInput.commentStore.length = 0;\n if (s.condition && selectors.length > 1) {\n error('Guards are only currently allowed on a single selector.');\n }\n if (!parserInput.$char(',')) { break; }\n if (s.condition) {\n error('Guards are only currently allowed on a single selector.');\n }\n parserInput.commentStore.length = 0;\n }\n return selectors;\n },\n attribute: function () {\n if (!parserInput.$char('[')) { return; }\n\n const entities = this.entities;\n let key;\n let val;\n let op;\n //\n // case-insensitive flag\n // e.g. [attr operator value i]\n //\n let cif;\n\n if (!(key = entities.variableCurly())) {\n key = expect(/^(?:[_A-Za-z0-9-*]*\\|)?(?:[_A-Za-z0-9-]|\\\\.)+/);\n }\n\n op = parserInput.$re(/^[|~*$^]?=/);\n if (op) {\n val = entities.quoted() || parserInput.$re(/^[0-9]+%/) || parserInput.$re(/^[\\w-]+/) || entities.variableCurly();\n if (val) {\n cif = parserInput.$re(/^[iIsS]/);\n }\n }\n\n expectChar(']');\n\n return new(tree.Attribute)(key, op, val, cif);\n },\n\n //\n // The `block` rule is used by `ruleset` and `mixin.definition`.\n // It's a wrapper around the `primary` rule, with added `{}`.\n //\n block: function () {\n let content;\n if (parserInput.$char('{') && (content = this.primary()) && parserInput.$char('}')) {\n return content;\n }\n },\n\n blockRuleset: function() {\n let block = this.block();\n\n if (block) {\n block = new tree.Ruleset(null, block);\n }\n return block;\n },\n\n detachedRuleset: function() {\n let argInfo;\n let params;\n let variadic;\n\n parserInput.save();\n if (parserInput.$re(/^[.#]\\(/)) {\n /**\n * DR args currently only implemented for each() function, and not\n * yet settable as `@dr: #(@arg) {}`\n * This should be done when DRs are merged with mixins.\n * See: https://github.com/less/less-meta/issues/16\n */\n argInfo = this.mixin.args(false);\n params = argInfo.args;\n variadic = argInfo.variadic;\n if (!parserInput.$char(')')) {\n parserInput.restore();\n return;\n }\n }\n const blockRuleset = this.blockRuleset();\n if (blockRuleset) {\n parserInput.forget();\n if (params) {\n return new tree.mixin.Definition(null, params, blockRuleset, null, variadic);\n }\n return new tree.DetachedRuleset(blockRuleset);\n }\n parserInput.restore();\n },\n\n //\n // div, .class, body > p {...}\n //\n ruleset: function () {\n let selectors;\n let rules;\n let debugInfo;\n\n parserInput.save();\n\n if (context.dumpLineNumbers) {\n debugInfo = getDebugInfo(parserInput.i);\n }\n\n selectors = this.selectors();\n\n if (selectors && (rules = this.block())) {\n parserInput.forget();\n const ruleset = new(tree.Ruleset)(selectors, rules, context.strictImports);\n if (context.dumpLineNumbers) {\n ruleset.debugInfo = debugInfo;\n }\n return ruleset;\n } else {\n parserInput.restore();\n }\n },\n declaration: function () {\n let name;\n let value;\n const index = parserInput.i;\n let hasDR;\n const c = parserInput.currentChar();\n let important;\n let merge;\n let isVariable;\n\n if (c === '.' || c === '#' || c === '&' || c === ':') { return; }\n\n parserInput.save();\n\n name = this.variable() || this.ruleProperty();\n if (name) {\n isVariable = typeof name === 'string';\n\n if (isVariable) {\n value = this.detachedRuleset();\n if (value) {\n hasDR = true;\n }\n }\n\n parserInput.commentStore.length = 0;\n if (!value) {\n // a name returned by this.ruleProperty() is always an array of the form:\n // [string-1, ..., string-n, \"\"] or [string-1, ..., string-n, \"+\"]\n // where each item is a tree.Keyword or tree.Variable\n merge = !isVariable && name.length > 1 && name.pop().value;\n\n // Custom property values get permissive parsing\n if (name[0].value && name[0].value.slice(0, 2) === '--') {\n if (parserInput.$char(';')) {\n value = new Anonymous('');\n } else {\n value = this.permissiveValue(/[;}]/);\n }\n }\n // Try to store values as anonymous\n // If we need the value later we'll re-parse it in ruleset.parseValue\n else {\n value = this.anonymousValue();\n }\n if (value) {\n parserInput.forget();\n // anonymous values absorb the end ';' which is required for them to work\n return new(tree.Declaration)(name, value, false, merge, index + currentIndex, fileInfo);\n }\n\n if (!value) {\n value = this.value();\n }\n\n if (value) {\n important = this.important();\n } else if (isVariable) {\n // As a last resort, try permissiveValue\n value = this.permissiveValue();\n }\n }\n\n if (value && (this.end() || hasDR)) {\n parserInput.forget();\n return new(tree.Declaration)(name, value, important, merge, index + currentIndex, fileInfo);\n }\n else {\n parserInput.restore();\n }\n } else {\n parserInput.restore();\n }\n },\n anonymousValue: function () {\n const index = parserInput.i;\n const match = parserInput.$re(/^([^.#@$+/'\"*`(;{}-]*);/);\n if (match) {\n return new(tree.Anonymous)(match[1], index + currentIndex);\n }\n },\n /**\n * Used for custom properties, at-rules, and variables (as fallback)\n * Parses almost anything inside of {} [] () \"\" blocks\n * until it reaches outer-most tokens.\n *\n * First, it will try to parse comments and entities to reach\n * the end. This is mostly like the Expression parser except no\n * math is allowed.\n */\n permissiveValue: function (untilTokens) {\n let i;\n let e;\n let done;\n let value;\n const tok = untilTokens || ';';\n const index = parserInput.i;\n const result = [];\n\n function testCurrentChar() {\n const char = parserInput.currentChar();\n if (typeof tok === 'string') {\n return char === tok;\n } else {\n return tok.test(char);\n }\n }\n if (testCurrentChar()) {\n return;\n }\n value = [];\n do {\n e = this.comment();\n if (e) {\n value.push(e);\n continue;\n }\n e = this.entity();\n if (e) {\n value.push(e);\n }\n if (parserInput.peek(',')) {\n value.push(new (tree.Anonymous)(',', parserInput.i));\n parserInput.$char(',');\n }\n } while (e);\n\n done = testCurrentChar();\n\n if (value.length > 0) {\n value = new(tree.Expression)(value);\n if (done) {\n return value;\n }\n else {\n result.push(value);\n }\n // Preserve space before $parseUntil as it will not\n if (parserInput.prevChar() === ' ') {\n result.push(new tree.Anonymous(' ', index));\n }\n }\n parserInput.save();\n\n value = parserInput.$parseUntil(tok);\n\n if (value) {\n if (typeof value === 'string') {\n error(`Expected '${value}'`, 'Parse');\n }\n if (value.length === 1 && value[0] === ' ') {\n parserInput.forget();\n return new tree.Anonymous('', index);\n }\n let item;\n for (i = 0; i < value.length; i++) {\n item = value[i];\n if (Array.isArray(item)) {\n // Treat actual quotes as normal quoted values\n result.push(new tree.Quoted(item[0], item[1], true, index, fileInfo));\n }\n else {\n if (i === value.length - 1) {\n item = item.trim();\n }\n // Treat like quoted values, but replace vars like unquoted expressions\n const quote = new tree.Quoted('\\'', item, true, index, fileInfo);\n if (!item.startsWith('@{')) {\n quote.variableRegex = /@([\\w-]+)/g;\n }\n quote.propRegex = /\\$([\\w-]+)/g;\n result.push(quote);\n }\n }\n parserInput.forget();\n return new tree.Expression(result, true);\n }\n parserInput.restore();\n },\n\n //\n // An @import atrule\n //\n // @import \"lib\";\n //\n // Depending on our environment, importing is done differently:\n // In the browser, it's an XHR request, in Node, it would be a\n // file-system operation. The function used for importing is\n // stored in `import`, which we pass to the Import constructor.\n //\n 'import': function () {\n let path;\n let features;\n const index = parserInput.i;\n\n const dir = parserInput.$re(/^@import\\s+/);\n\n if (dir) {\n const options = (dir ? this.importOptions() : null) || {};\n\n if ((path = this.entities.quoted() || this.entities.url())) {\n features = this.mediaFeatures({});\n\n if (!parserInput.$char(';')) {\n parserInput.i = index;\n error('missing semi-colon or unrecognised media features on import');\n }\n features = features && new(tree.Value)(features);\n return new(tree.Import)(path, features, options, index + currentIndex, fileInfo);\n }\n else {\n parserInput.i = index;\n error('malformed import statement');\n }\n }\n },\n\n importOptions: function() {\n let o;\n const options = {};\n let optionName;\n let value;\n\n // list of options, surrounded by parens\n if (!parserInput.$char('(')) { return null; }\n do {\n o = this.importOption();\n if (o) {\n optionName = o;\n value = true;\n switch (optionName) {\n case 'css':\n optionName = 'less';\n value = false;\n break;\n case 'once':\n optionName = 'multiple';\n value = false;\n break;\n }\n options[optionName] = value;\n if (!parserInput.$char(',')) { break; }\n }\n } while (o);\n expectChar(')');\n return options;\n },\n\n importOption: function() {\n const opt = parserInput.$re(/^(less|css|multiple|once|inline|reference|optional)/);\n if (opt) {\n return opt[1];\n }\n },\n\n mediaFeature: function (syntaxOptions) {\n const entities = this.entities;\n const nodes = [];\n let e;\n let p;\n let rangeP;\n parserInput.save();\n do {\n e = entities.declarationCall.bind(this)() || entities.keyword() || entities.variable() || entities.mixinLookup()\n if (e) {\n nodes.push(e);\n } else if (parserInput.$char('(')) {\n p = this.property();\n parserInput.save();\n if (!p && syntaxOptions.queryInParens && parserInput.$re(/^[0-9a-z-]*\\s*([<>]=|<=|>=|[<>]|=)/)) {\n parserInput.restore();\n p = this.condition();\n\n parserInput.save();\n rangeP = this.atomicCondition(null, p.rvalue);\n if (!rangeP) {\n parserInput.restore();\n }\n } else {\n parserInput.restore();\n e = this.value();\n }\n if (parserInput.$char(')')) {\n if (p && !e) {\n nodes.push(new (tree.Paren)(new (tree.QueryInParens)(p.op, p.lvalue, p.rvalue, rangeP ? rangeP.op : null, rangeP ? rangeP.rvalue : null, p._index)));\t\t\t\t \n e = p;\n } else if (p && e) {\n nodes.push(new (tree.Paren)(new (tree.Declaration)(p, e, null, null, parserInput.i + currentIndex, fileInfo, true)));\n } else if (e) {\n nodes.push(new(tree.Paren)(e));\n } else {\n error('badly formed media feature definition');\n }\n } else {\n error('Missing closing \\')\\'', 'Parse');\n }\n }\n } while (e);\n\n parserInput.forget();\n if (nodes.length > 0) {\n return new(tree.Expression)(nodes);\n }\n },\n\n mediaFeatures: function (syntaxOptions) {\n const entities = this.entities;\n const features = [];\n let e;\n do {\n e = this.mediaFeature(syntaxOptions);\n if (e) {\n features.push(e);\n if (!parserInput.$char(',')) { break; }\n } else {\n e = entities.variable() || entities.mixinLookup();\n if (e) {\n features.push(e);\n if (!parserInput.$char(',')) { break; }\n }\n }\n } while (e);\n\n return features.length > 0 ? features : null;\n },\n\n prepareAndGetNestableAtRule: function (treeType, index, debugInfo, syntaxOptions) {\n const features = this.mediaFeatures(syntaxOptions);\n\n const rules = this.block();\n\n if (!rules) {\n error('media definitions require block statements after any features');\n }\n\n parserInput.forget();\n\n const atRule = new (treeType)(rules, features, index + currentIndex, fileInfo);\n if (context.dumpLineNumbers) {\n atRule.debugInfo = debugInfo;\n }\n\n return atRule;\n },\n\n nestableAtRule: function () {\n let debugInfo;\n const index = parserInput.i;\n\n if (context.dumpLineNumbers) {\n debugInfo = getDebugInfo(index);\n }\n parserInput.save();\n\n if (parserInput.$peekChar('@')) {\n if (parserInput.$str('@media')) {\n return this.prepareAndGetNestableAtRule(tree.Media, index, debugInfo, MediaSyntaxOptions);\n }\n \n if (parserInput.$str('@container')) {\n return this.prepareAndGetNestableAtRule(tree.Container, index, debugInfo, ContainerSyntaxOptions);\n }\n }\n \n parserInput.restore();\n },\n\n //\n\n // A @plugin directive, used to import plugins dynamically.\n //\n // @plugin (args) \"lib\";\n //\n plugin: function () {\n let path;\n let args;\n let options;\n const index = parserInput.i;\n const dir = parserInput.$re(/^@plugin\\s+/);\n\n if (dir) {\n args = this.pluginArgs();\n\n if (args) {\n options = {\n pluginArgs: args,\n isPlugin: true\n };\n }\n else {\n options = { isPlugin: true };\n }\n\n if ((path = this.entities.quoted() || this.entities.url())) {\n\n if (!parserInput.$char(';')) {\n parserInput.i = index;\n error('missing semi-colon on @plugin');\n }\n return new(tree.Import)(path, null, options, index + currentIndex, fileInfo);\n }\n else {\n parserInput.i = index;\n error('malformed @plugin statement');\n }\n }\n },\n\n pluginArgs: function() {\n // list of options, surrounded by parens\n parserInput.save();\n if (!parserInput.$char('(')) {\n parserInput.restore();\n return null;\n }\n const args = parserInput.$re(/^\\s*([^);]+)\\)\\s*/);\n if (args[1]) {\n parserInput.forget();\n return args[1].trim();\n }\n else {\n parserInput.restore();\n return null;\n }\n },\n\n //\n // A CSS AtRule\n //\n // @charset \"utf-8\";\n //\n atrule: function () {\n const index = parserInput.i;\n let name;\n let value;\n let rules;\n let nonVendorSpecificName;\n let hasIdentifier;\n let hasExpression;\n let hasUnknown;\n let hasBlock = true;\n let isRooted = true;\n\n if (parserInput.currentChar() !== '@') { return; }\n\n value = this['import']() || this.plugin() || this.nestableAtRule();\n if (value) {\n return value;\n }\n\n parserInput.save();\n\n name = parserInput.$re(/^@[a-z-]+/);\n\n if (!name) { return; }\n\n nonVendorSpecificName = name;\n if (name.charAt(1) == '-' && name.indexOf('-', 2) > 0) {\n nonVendorSpecificName = `@${name.slice(name.indexOf('-', 2) + 1)}`;\n }\n\n switch (nonVendorSpecificName) {\n case '@charset':\n hasIdentifier = true;\n hasBlock = false;\n break;\n case '@namespace':\n hasExpression = true;\n hasBlock = false;\n break;\n case '@keyframes':\n case '@counter-style':\n hasIdentifier = true;\n break;\n case '@document':\n case '@supports':\n hasUnknown = true;\n isRooted = false;\n break;\n default:\n hasUnknown = true;\n break;\n }\n\n parserInput.commentStore.length = 0;\n\n if (hasIdentifier) {\n value = this.entity();\n if (!value) {\n error(`expected ${name} identifier`);\n }\n } else if (hasExpression) {\n value = this.expression();\n if (!value) {\n error(`expected ${name} expression`);\n }\n } else if (hasUnknown) {\n value = this.permissiveValue(/^[{;]/);\n hasBlock = (parserInput.currentChar() === '{');\n if (!value) {\n if (!hasBlock && parserInput.currentChar() !== ';') {\n error(`${name} rule is missing block or ending semi-colon`);\n }\n }\n else if (!value.value) {\n value = null;\n }\n }\n\n if (hasBlock) {\n rules = this.blockRuleset();\n }\n\n if (rules || (!hasBlock && value && parserInput.$char(';'))) {\n parserInput.forget();\n return new(tree.AtRule)(name, value, rules, index + currentIndex, fileInfo,\n context.dumpLineNumbers ? getDebugInfo(index) : null,\n isRooted\n );\n }\n\n parserInput.restore('at-rule options not recognised');\n },\n\n //\n // A Value is a comma-delimited list of Expressions\n //\n // font-family: Baskerville, Georgia, serif;\n //\n // In a Rule, a Value represents everything after the `:`,\n // and before the `;`.\n //\n value: function () {\n let e;\n const expressions = [];\n const index = parserInput.i;\n\n do {\n e = this.expression();\n if (e) {\n expressions.push(e);\n if (!parserInput.$char(',')) { break; }\n }\n } while (e);\n\n if (expressions.length > 0) {\n return new(tree.Value)(expressions, index + currentIndex);\n }\n },\n important: function () {\n if (parserInput.currentChar() === '!') {\n return parserInput.$re(/^! *important/);\n }\n },\n sub: function () {\n let a;\n let e;\n\n parserInput.save();\n if (parserInput.$char('(')) {\n a = this.addition();\n if (a && parserInput.$char(')')) {\n parserInput.forget();\n e = new(tree.Expression)([a]);\n e.parens = true;\n return e;\n }\n parserInput.restore('Expected \\')\\'');\n return;\n }\n parserInput.restore();\n },\n multiplication: function () {\n let m;\n let a;\n let op;\n let operation;\n let isSpaced;\n m = this.operand();\n if (m) {\n isSpaced = parserInput.isWhitespace(-1);\n while (true) {\n if (parserInput.peek(/^\\/[*/]/)) {\n break;\n }\n\n parserInput.save();\n\n op = parserInput.$char('/') || parserInput.$char('*');\n if (!op) {\n let index = parserInput.i;\n op = parserInput.$str('./');\n if (op) {\n warn('./ operator is deprecated', index, 'DEPRECATED');\n }\n }\n\n if (!op) { parserInput.forget(); break; }\n\n a = this.operand();\n\n if (!a) { parserInput.restore(); break; }\n parserInput.forget();\n\n m.parensInOp = true;\n a.parensInOp = true;\n operation = new(tree.Operation)(op, [operation || m, a], isSpaced);\n isSpaced = parserInput.isWhitespace(-1);\n }\n return operation || m;\n }\n },\n addition: function () {\n let m;\n let a;\n let op;\n let operation;\n let isSpaced;\n m = this.multiplication();\n if (m) {\n isSpaced = parserInput.isWhitespace(-1);\n while (true) {\n op = parserInput.$re(/^[-+]\\s+/) || (!isSpaced && (parserInput.$char('+') || parserInput.$char('-')));\n if (!op) {\n break;\n }\n a = this.multiplication();\n if (!a) {\n break;\n }\n\n m.parensInOp = true;\n a.parensInOp = true;\n operation = new(tree.Operation)(op, [operation || m, a], isSpaced);\n isSpaced = parserInput.isWhitespace(-1);\n }\n return operation || m;\n }\n },\n conditions: function () {\n let a;\n let b;\n const index = parserInput.i;\n let condition;\n\n a = this.condition(true);\n if (a) {\n while (true) {\n if (!parserInput.peek(/^,\\s*(not\\s*)?\\(/) || !parserInput.$char(',')) {\n break;\n }\n b = this.condition(true);\n if (!b) {\n break;\n }\n condition = new(tree.Condition)('or', condition || a, b, index + currentIndex);\n }\n return condition || a;\n }\n },\n condition: function (needsParens) {\n let result;\n let logical;\n let next;\n function or() {\n return parserInput.$str('or');\n }\n\n result = this.conditionAnd(needsParens);\n if (!result) {\n return ;\n }\n logical = or();\n if (logical) {\n next = this.condition(needsParens);\n if (next) {\n result = new(tree.Condition)(logical, result, next);\n } else {\n return ;\n }\n }\n return result;\n },\n conditionAnd: function (needsParens) {\n let result;\n let logical;\n let next;\n const self = this;\n function insideCondition() {\n const cond = self.negatedCondition(needsParens) || self.parenthesisCondition(needsParens);\n if (!cond && !needsParens) {\n return self.atomicCondition(needsParens);\n }\n return cond;\n }\n function and() {\n return parserInput.$str('and');\n }\n\n result = insideCondition();\n if (!result) {\n return ;\n }\n logical = and();\n if (logical) {\n next = this.conditionAnd(needsParens);\n if (next) {\n result = new(tree.Condition)(logical, result, next);\n } else {\n return ;\n }\n }\n return result;\n },\n negatedCondition: function (needsParens) {\n if (parserInput.$str('not')) {\n const result = this.parenthesisCondition(needsParens);\n if (result) {\n result.negate = !result.negate;\n }\n return result;\n }\n },\n parenthesisCondition: function (needsParens) {\n function tryConditionFollowedByParenthesis(me) {\n let body;\n parserInput.save();\n body = me.condition(needsParens);\n if (!body) {\n parserInput.restore();\n return ;\n }\n if (!parserInput.$char(')')) {\n parserInput.restore();\n return ;\n }\n parserInput.forget();\n return body;\n }\n\n let body;\n parserInput.save();\n if (!parserInput.$str('(')) {\n parserInput.restore();\n return ;\n }\n body = tryConditionFollowedByParenthesis(this);\n if (body) {\n parserInput.forget();\n return body;\n }\n\n body = this.atomicCondition(needsParens);\n if (!body) {\n parserInput.restore();\n return ;\n }\n if (!parserInput.$char(')')) {\n parserInput.restore(`expected ')' got '${parserInput.currentChar()}'`);\n return ;\n }\n parserInput.forget();\n return body;\n },\n atomicCondition: function (needsParens, preparsedCond) {\n const entities = this.entities;\n const index = parserInput.i;\n let a;\n let b;\n let c;\n let op;\n\n const cond = (function() {\n return this.addition() || entities.keyword() || entities.quoted() || entities.mixinLookup();\n }).bind(this)\n\n if (preparsedCond) {\n a = preparsedCond;\n } else {\n a = cond();\n }\n\n if (a) {\n if (parserInput.$char('>')) {\n if (parserInput.$char('=')) {\n op = '>=';\n } else {\n op = '>';\n }\n } else\n if (parserInput.$char('<')) {\n if (parserInput.$char('=')) {\n op = '<=';\n } else {\n op = '<';\n }\n } else\n if (parserInput.$char('=')) {\n if (parserInput.$char('>')) {\n op = '=>';\n } else if (parserInput.$char('<')) {\n op = '=<';\n } else {\n op = '=';\n }\n }\n if (op) {\n b = cond();\n if (b) {\n c = new(tree.Condition)(op, a, b, index + currentIndex, false);\n } else {\n error('expected expression');\n }\n } else if (!preparsedCond) {\n c = new(tree.Condition)('=', a, new(tree.Keyword)('true'), index + currentIndex, false);\n }\n return c;\n }\n },\n\n //\n // An operand is anything that can be part of an operation,\n // such as a Color, or a Variable\n //\n operand: function () {\n const entities = this.entities;\n let negate;\n\n if (parserInput.peek(/^-[@$(]/)) {\n negate = parserInput.$char('-');\n }\n\n let o = this.sub() || entities.dimension() ||\n entities.color() || entities.variable() ||\n entities.property() || entities.call() ||\n entities.quoted(true) || entities.colorKeyword() ||\n entities.mixinLookup();\n\n if (negate) {\n o.parensInOp = true;\n o = new(tree.Negative)(o);\n }\n\n return o;\n },\n\n //\n // Expressions either represent mathematical operations,\n // or white-space delimited Entities.\n //\n // 1px solid black\n // @var * 2\n //\n expression: function () {\n const entities = [];\n let e;\n let delim;\n const index = parserInput.i;\n\n do {\n e = this.comment();\n if (e && !e.isLineComment) {\n entities.push(e);\n continue;\n }\n e = this.addition() || this.entity();\n\n if (e instanceof tree.Comment) {\n e = null;\n }\n\n if (e) {\n entities.push(e);\n // operations do not allow keyword \"/\" dimension (e.g. small/20px) so we support that here\n if (!parserInput.peek(/^\\/[/*]/)) {\n delim = parserInput.$char('/');\n if (delim) {\n entities.push(new(tree.Anonymous)(delim, index + currentIndex));\n }\n }\n }\n } while (e);\n if (entities.length > 0) {\n return new(tree.Expression)(entities);\n }\n },\n property: function () {\n const name = parserInput.$re(/^(\\*?-?[_a-zA-Z0-9-]+)\\s*:/);\n if (name) {\n return name[1];\n }\n },\n ruleProperty: function () {\n let name = [];\n const index = [];\n let s;\n let k;\n\n parserInput.save();\n\n const simpleProperty = parserInput.$re(/^([_a-zA-Z0-9-]+)\\s*:/);\n if (simpleProperty) {\n name = [new(tree.Keyword)(simpleProperty[1])];\n parserInput.forget();\n return name;\n }\n\n function match(re) {\n const i = parserInput.i;\n const chunk = parserInput.$re(re);\n if (chunk) {\n index.push(i);\n return name.push(chunk[1]);\n }\n }\n\n match(/^(\\*?)/);\n while (true) {\n if (!match(/^((?:[\\w-]+)|(?:[@$]\\{[\\w-]+\\}))/)) {\n break;\n }\n }\n\n if ((name.length > 1) && match(/^((?:\\+_|\\+)?)\\s*:/)) {\n parserInput.forget();\n\n // at last, we have the complete match now. move forward,\n // convert name particles to tree objects and return:\n if (name[0] === '') {\n name.shift();\n index.shift();\n }\n for (k = 0; k < name.length; k++) {\n s = name[k];\n name[k] = (s.charAt(0) !== '@' && s.charAt(0) !== '$') ?\n new(tree.Keyword)(s) :\n (s.charAt(0) === '@' ?\n new(tree.Variable)(`@${s.slice(2, -1)}`, index[k] + currentIndex, fileInfo) :\n new(tree.Property)(`$${s.slice(2, -1)}`, index[k] + currentIndex, fileInfo));\n }\n return name;\n }\n parserInput.restore();\n }\n }\n };\n};\nParser.serializeVars = vars => {\n let s = '';\n\n for (const name in vars) {\n if (Object.hasOwnProperty.call(vars, name)) {\n const value = vars[name];\n s += `${((name[0] === '@') ? '' : '@') + name}: ${value}${(String(value).slice(-1) === ';') ? '' : ';'}`;\n }\n }\n\n return s;\n};\n\nexport default Parser;","import Node from './node';\nimport Element from './element';\nimport LessError from '../less-error';\nimport * as utils from '../utils';\nimport Parser from '../parser/parser';\n\nconst Selector = function(elements, extendList, condition, index, currentFileInfo, visibilityInfo) {\n this.extendList = extendList;\n this.condition = condition;\n this.evaldCondition = !condition;\n this._index = index;\n this._fileInfo = currentFileInfo;\n this.elements = this.getElements(elements);\n this.mixinElements_ = undefined;\n this.copyVisibilityInfo(visibilityInfo);\n this.setParent(this.elements, this);\n};\n\nSelector.prototype = Object.assign(new Node(), {\n type: 'Selector',\n\n accept(visitor) {\n if (this.elements) {\n this.elements = visitor.visitArray(this.elements);\n }\n if (this.extendList) {\n this.extendList = visitor.visitArray(this.extendList);\n }\n if (this.condition) {\n this.condition = visitor.visit(this.condition);\n }\n },\n\n createDerived(elements, extendList, evaldCondition) {\n elements = this.getElements(elements);\n const newSelector = new Selector(elements, extendList || this.extendList,\n null, this.getIndex(), this.fileInfo(), this.visibilityInfo());\n newSelector.evaldCondition = (!utils.isNullOrUndefined(evaldCondition)) ? evaldCondition : this.evaldCondition;\n newSelector.mediaEmpty = this.mediaEmpty;\n return newSelector;\n },\n\n getElements(els) {\n if (!els) {\n return [new Element('', '&', false, this._index, this._fileInfo)];\n }\n if (typeof els === 'string') {\n new Parser(this.parse.context, this.parse.importManager, this._fileInfo, this._index).parseNode(\n els,\n ['selector'],\n function(err, result) {\n if (err) {\n throw new LessError({\n index: err.index,\n message: err.message\n }, this.parse.imports, this._fileInfo.filename);\n }\n els = result[0].elements;\n });\n }\n return els;\n },\n\n createEmptySelectors() {\n const el = new Element('', '&', false, this._index, this._fileInfo), sels = [new Selector([el], null, null, this._index, this._fileInfo)];\n sels[0].mediaEmpty = true;\n return sels;\n },\n\n match(other) {\n const elements = this.elements;\n const len = elements.length;\n let olen;\n let i;\n\n other = other.mixinElements();\n olen = other.length;\n if (olen === 0 || len < olen) {\n return 0;\n } else {\n for (i = 0; i < olen; i++) {\n if (elements[i].value !== other[i]) {\n return 0;\n }\n }\n }\n\n return olen; // return number of matched elements\n },\n\n mixinElements() {\n if (this.mixinElements_) {\n return this.mixinElements_;\n }\n\n let elements = this.elements.map( function(v) {\n return v.combinator.value + (v.value.value || v.value);\n }).join('').match(/[,*.\\w-]([\\w-]|(\\\\.))*/g);\n\n if (elements) {\n if (elements[0] === '&') {\n elements.shift();\n }\n } else {\n elements = [];\n }\n\n return (this.mixinElements_ = elements);\n },\n\n isJustParentSelector() {\n return !this.mediaEmpty &&\n this.elements.length === 1 &&\n this.elements[0].value === '&' &&\n (this.elements[0].combinator.value === ' ' || this.elements[0].combinator.value === '');\n },\n\n eval(context) {\n const evaldCondition = this.condition && this.condition.eval(context);\n let elements = this.elements;\n let extendList = this.extendList;\n\n elements = elements && elements.map(function (e) { return e.eval(context); });\n extendList = extendList && extendList.map(function(extend) { return extend.eval(context); });\n\n return this.createDerived(elements, extendList, evaldCondition);\n },\n\n genCSS(context, output) {\n let i, element;\n if ((!context || !context.firstSelector) && this.elements[0].combinator.value === '') {\n output.add(' ', this.fileInfo(), this.getIndex());\n }\n for (i = 0; i < this.elements.length; i++) {\n element = this.elements[i];\n element.genCSS(context, output);\n }\n },\n\n getIsOutput() {\n return this.evaldCondition;\n }\n});\n\nexport default Selector;\n","import Node from './node';\n\nconst Value = function(value) {\n if (!value) {\n throw new Error('Value requires an array argument');\n }\n if (!Array.isArray(value)) {\n this.value = [ value ];\n }\n else {\n this.value = value;\n }\n};\n\nValue.prototype = Object.assign(new Node(), {\n type: 'Value',\n\n accept(visitor) {\n if (this.value) {\n this.value = visitor.visitArray(this.value);\n }\n },\n\n eval(context) {\n if (this.value.length === 1) {\n return this.value[0].eval(context);\n } else {\n return new Value(this.value.map(function (v) {\n return v.eval(context);\n }));\n }\n },\n\n genCSS(context, output) {\n let i;\n for (i = 0; i < this.value.length; i++) {\n this.value[i].genCSS(context, output);\n if (i + 1 < this.value.length) {\n output.add((context && context.compress) ? ',' : ', ');\n }\n }\n }\n});\n\nexport default Value;\n","import Node from './node';\n\nconst Keyword = function(value) {\n this.value = value;\n};\n\nKeyword.prototype = Object.assign(new Node(), {\n type: 'Keyword',\n\n genCSS(context, output) {\n if (this.value === '%') { throw { type: 'Syntax', message: 'Invalid % without number' }; }\n output.add(this.value);\n }\n});\n\nKeyword.True = new Keyword('true');\nKeyword.False = new Keyword('false');\n\nexport default Keyword;\n","import Node from './node';\nimport Value from './value';\nimport Keyword from './keyword';\nimport Anonymous from './anonymous';\nimport * as Constants from '../constants';\nconst MATH = Constants.Math;\n\nfunction evalName(context, name) {\n let value = '';\n let i;\n const n = name.length;\n const output = {add: function (s) {value += s;}};\n for (i = 0; i < n; i++) {\n name[i].eval(context).genCSS(context, output);\n }\n return value;\n}\n\nconst Declaration = function(name, value, important, merge, index, currentFileInfo, inline, variable) {\n this.name = name;\n this.value = (value instanceof Node) ? value : new Value([value ? new Anonymous(value) : null]);\n this.important = important ? ` ${important.trim()}` : '';\n this.merge = merge;\n this._index = index;\n this._fileInfo = currentFileInfo;\n this.inline = inline || false;\n this.variable = (variable !== undefined) ? variable\n : (name.charAt && (name.charAt(0) === '@'));\n this.allowRoot = true;\n this.setParent(this.value, this);\n};\n\nDeclaration.prototype = Object.assign(new Node(), {\n type: 'Declaration',\n\n genCSS(context, output) {\n output.add(this.name + (context.compress ? ':' : ': '), this.fileInfo(), this.getIndex());\n try {\n this.value.genCSS(context, output);\n }\n catch (e) {\n e.index = this._index;\n e.filename = this._fileInfo.filename;\n throw e;\n }\n output.add(this.important + ((this.inline || (context.lastRule && context.compress)) ? '' : ';'), this._fileInfo, this._index);\n },\n\n eval(context) {\n let mathBypass = false, prevMath, name = this.name, evaldValue, variable = this.variable;\n if (typeof name !== 'string') {\n // expand 'primitive' name directly to get\n // things faster (~10% for benchmark.less):\n name = (name.length === 1) && (name[0] instanceof Keyword) ?\n name[0].value : evalName(context, name);\n variable = false; // never treat expanded interpolation as new variable name\n }\n\n // @todo remove when parens-division is default\n if (name === 'font' && context.math === MATH.ALWAYS) {\n mathBypass = true;\n prevMath = context.math;\n context.math = MATH.PARENS_DIVISION;\n }\n try {\n context.importantScope.push({});\n evaldValue = this.value.eval(context);\n\n if (!this.variable && evaldValue.type === 'DetachedRuleset') {\n throw { message: 'Rulesets cannot be evaluated on a property.',\n index: this.getIndex(), filename: this.fileInfo().filename };\n }\n let important = this.important;\n const importantResult = context.importantScope.pop();\n if (!important && importantResult.important) {\n important = importantResult.important;\n }\n\n return new Declaration(name,\n evaldValue,\n important,\n this.merge,\n this.getIndex(), this.fileInfo(), this.inline,\n variable);\n }\n catch (e) {\n if (typeof e.index !== 'number') {\n e.index = this.getIndex();\n e.filename = this.fileInfo().filename;\n }\n throw e;\n }\n finally {\n if (mathBypass) {\n context.math = prevMath;\n }\n }\n },\n\n makeImportant() {\n return new Declaration(this.name,\n this.value,\n '!important',\n this.merge,\n this.getIndex(), this.fileInfo(), this.inline);\n }\n});\n\nexport default Declaration;","function asComment(ctx) {\n return `/* line ${ctx.debugInfo.lineNumber}, ${ctx.debugInfo.fileName} */\\n`;\n}\n\nfunction asMediaQuery(ctx) {\n let filenameWithProtocol = ctx.debugInfo.fileName;\n if (!/^[a-z]+:\\/\\//i.test(filenameWithProtocol)) {\n filenameWithProtocol = `file://${filenameWithProtocol}`;\n }\n return `@media -sass-debug-info{filename{font-family:${filenameWithProtocol.replace(/([.:/\\\\])/g, function (a) {\n if (a == '\\\\') {\n a = '/';\n }\n return `\\\\${a}`;\n })}}line{font-family:\\\\00003${ctx.debugInfo.lineNumber}}}\\n`;\n}\n\nfunction debugInfo(context, ctx, lineSeparator) {\n let result = '';\n if (context.dumpLineNumbers && !context.compress) {\n switch (context.dumpLineNumbers) {\n case 'comments':\n result = asComment(ctx);\n break;\n case 'mediaquery':\n result = asMediaQuery(ctx);\n break;\n case 'all':\n result = asComment(ctx) + (lineSeparator || '') + asMediaQuery(ctx);\n break;\n }\n }\n return result;\n}\n\nexport default debugInfo;\n\n","import Node from './node';\nimport getDebugInfo from './debug-info';\n\nconst Comment = function(value, isLineComment, index, currentFileInfo) {\n this.value = value;\n this.isLineComment = isLineComment;\n this._index = index;\n this._fileInfo = currentFileInfo;\n this.allowRoot = true;\n}\n\nComment.prototype = Object.assign(new Node(), {\n type: 'Comment',\n\n genCSS(context, output) {\n if (this.debugInfo) {\n output.add(getDebugInfo(context, this), this.fileInfo(), this.getIndex());\n }\n output.add(this.value);\n },\n\n isSilent(context) {\n const isCompressed = context.compress && this.value[2] !== '!';\n return this.isLineComment || isCompressed;\n }\n});\n\nexport default Comment;\n","import Keyword from '../tree/keyword';\nimport * as utils from '../utils';\n\nconst defaultFunc = {\n eval: function () {\n const v = this.value_;\n const e = this.error_;\n if (e) {\n throw e;\n }\n if (!utils.isNullOrUndefined(v)) {\n return v ? Keyword.True : Keyword.False;\n }\n },\n value: function (v) {\n this.value_ = v;\n },\n error: function (e) {\n this.error_ = e;\n },\n reset: function () {\n this.value_ = this.error_ = null;\n }\n};\n\nexport default defaultFunc;\n","import Node from './node';\nimport Declaration from './declaration';\nimport Keyword from './keyword';\nimport Comment from './comment';\nimport Paren from './paren';\nimport Selector from './selector';\nimport Element from './element';\nimport Anonymous from './anonymous';\nimport contexts from '../contexts';\nimport globalFunctionRegistry from '../functions/function-registry';\nimport defaultFunc from '../functions/default';\nimport getDebugInfo from './debug-info';\nimport * as utils from '../utils';\nimport Parser from '../parser/parser';\n\nconst Ruleset = function(selectors, rules, strictImports, visibilityInfo) {\n this.selectors = selectors;\n this.rules = rules;\n this._lookups = {};\n this._variables = null;\n this._properties = null;\n this.strictImports = strictImports;\n this.copyVisibilityInfo(visibilityInfo);\n this.allowRoot = true;\n\n this.setParent(this.selectors, this);\n this.setParent(this.rules, this);\n}\n\nRuleset.prototype = Object.assign(new Node(), {\n type: 'Ruleset',\n isRuleset: true,\n\n isRulesetLike() { return true; },\n\n accept(visitor) {\n if (this.paths) {\n this.paths = visitor.visitArray(this.paths, true);\n } else if (this.selectors) {\n this.selectors = visitor.visitArray(this.selectors);\n }\n if (this.rules && this.rules.length) {\n this.rules = visitor.visitArray(this.rules);\n }\n },\n\n eval(context) {\n let selectors;\n let selCnt;\n let selector;\n let i;\n let hasVariable;\n let hasOnePassingSelector = false;\n\n if (this.selectors && (selCnt = this.selectors.length)) {\n selectors = new Array(selCnt);\n defaultFunc.error({\n type: 'Syntax',\n message: 'it is currently only allowed in parametric mixin guards,'\n });\n\n for (i = 0; i < selCnt; i++) {\n selector = this.selectors[i].eval(context);\n for (let j = 0; j < selector.elements.length; j++) {\n if (selector.elements[j].isVariable) {\n hasVariable = true;\n break;\n }\n }\n selectors[i] = selector;\n if (selector.evaldCondition) {\n hasOnePassingSelector = true;\n }\n }\n\n if (hasVariable) {\n const toParseSelectors = new Array(selCnt);\n for (i = 0; i < selCnt; i++) {\n selector = selectors[i];\n toParseSelectors[i] = selector.toCSS(context);\n }\n const startingIndex = selectors[0].getIndex();\n const selectorFileInfo = selectors[0].fileInfo();\n new Parser(context, this.parse.importManager, selectorFileInfo, startingIndex).parseNode(\n toParseSelectors.join(','),\n ['selectors'],\n function(err, result) {\n if (result) {\n selectors = utils.flattenArray(result);\n }\n });\n }\n\n defaultFunc.reset();\n } else {\n hasOnePassingSelector = true;\n }\n\n let rules = this.rules ? utils.copyArray(this.rules) : null;\n const ruleset = new Ruleset(selectors, rules, this.strictImports, this.visibilityInfo());\n let rule;\n let subRule;\n\n ruleset.originalRuleset = this;\n ruleset.root = this.root;\n ruleset.firstRoot = this.firstRoot;\n ruleset.allowImports = this.allowImports;\n\n if (this.debugInfo) {\n ruleset.debugInfo = this.debugInfo;\n }\n\n if (!hasOnePassingSelector) {\n rules.length = 0;\n }\n\n // inherit a function registry from the frames stack when possible;\n // otherwise from the global registry\n ruleset.functionRegistry = (function (frames) {\n let i = 0;\n const n = frames.length;\n let found;\n for ( ; i !== n ; ++i ) {\n found = frames[ i ].functionRegistry;\n if ( found ) { return found; }\n }\n return globalFunctionRegistry;\n }(context.frames)).inherit();\n\n // push the current ruleset to the frames stack\n const ctxFrames = context.frames;\n ctxFrames.unshift(ruleset);\n\n // currrent selectors\n let ctxSelectors = context.selectors;\n if (!ctxSelectors) {\n context.selectors = ctxSelectors = [];\n }\n ctxSelectors.unshift(this.selectors);\n\n // Evaluate imports\n if (ruleset.root || ruleset.allowImports || !ruleset.strictImports) {\n ruleset.evalImports(context);\n }\n\n // Store the frames around mixin definitions,\n // so they can be evaluated like closures when the time comes.\n const rsRules = ruleset.rules;\n for (i = 0; (rule = rsRules[i]); i++) {\n if (rule.evalFirst) {\n rsRules[i] = rule.eval(context);\n }\n }\n\n const mediaBlockCount = (context.mediaBlocks && context.mediaBlocks.length) || 0;\n\n // Evaluate mixin calls.\n for (i = 0; (rule = rsRules[i]); i++) {\n if (rule.type === 'MixinCall') {\n /* jshint loopfunc:true */\n rules = rule.eval(context).filter(function(r) {\n if ((r instanceof Declaration) && r.variable) {\n // do not pollute the scope if the variable is\n // already there. consider returning false here\n // but we need a way to \"return\" variable from mixins\n return !(ruleset.variable(r.name));\n }\n return true;\n });\n rsRules.splice.apply(rsRules, [i, 1].concat(rules));\n i += rules.length - 1;\n ruleset.resetCache();\n } else if (rule.type === 'VariableCall') {\n /* jshint loopfunc:true */\n rules = rule.eval(context).rules.filter(function(r) {\n if ((r instanceof Declaration) && r.variable) {\n // do not pollute the scope at all\n return false;\n }\n return true;\n });\n rsRules.splice.apply(rsRules, [i, 1].concat(rules));\n i += rules.length - 1;\n ruleset.resetCache();\n }\n }\n\n // Evaluate everything else\n for (i = 0; (rule = rsRules[i]); i++) {\n if (!rule.evalFirst) {\n rsRules[i] = rule = rule.eval ? rule.eval(context) : rule;\n }\n }\n\n // Evaluate everything else\n for (i = 0; (rule = rsRules[i]); i++) {\n // for rulesets, check if it is a css guard and can be removed\n if (rule instanceof Ruleset && rule.selectors && rule.selectors.length === 1) {\n // check if it can be folded in (e.g. & where)\n if (rule.selectors[0] && rule.selectors[0].isJustParentSelector()) {\n rsRules.splice(i--, 1);\n\n for (let j = 0; (subRule = rule.rules[j]); j++) {\n if (subRule instanceof Node) {\n subRule.copyVisibilityInfo(rule.visibilityInfo());\n if (!(subRule instanceof Declaration) || !subRule.variable) {\n rsRules.splice(++i, 0, subRule);\n }\n }\n }\n }\n }\n }\n\n // Pop the stack\n ctxFrames.shift();\n ctxSelectors.shift();\n\n if (context.mediaBlocks) {\n for (i = mediaBlockCount; i < context.mediaBlocks.length; i++) {\n context.mediaBlocks[i].bubbleSelectors(selectors);\n }\n }\n\n return ruleset;\n },\n\n evalImports(context) {\n const rules = this.rules;\n let i;\n let importRules;\n if (!rules) { return; }\n\n for (i = 0; i < rules.length; i++) {\n if (rules[i].type === 'Import') {\n importRules = rules[i].eval(context);\n if (importRules && (importRules.length || importRules.length === 0)) {\n rules.splice.apply(rules, [i, 1].concat(importRules));\n i += importRules.length - 1;\n } else {\n rules.splice(i, 1, importRules);\n }\n this.resetCache();\n }\n }\n },\n\n makeImportant() {\n const result = new Ruleset(this.selectors, this.rules.map(function (r) {\n if (r.makeImportant) {\n return r.makeImportant();\n } else {\n return r;\n }\n }), this.strictImports, this.visibilityInfo());\n\n return result;\n },\n\n matchArgs(args) {\n return !args || args.length === 0;\n },\n\n // lets you call a css selector with a guard\n matchCondition(args, context) {\n const lastSelector = this.selectors[this.selectors.length - 1];\n if (!lastSelector.evaldCondition) {\n return false;\n }\n if (lastSelector.condition &&\n !lastSelector.condition.eval(\n new contexts.Eval(context,\n context.frames))) {\n return false;\n }\n return true;\n },\n\n resetCache() {\n this._rulesets = null;\n this._variables = null;\n this._properties = null;\n this._lookups = {};\n },\n\n variables() {\n if (!this._variables) {\n this._variables = !this.rules ? {} : this.rules.reduce(function (hash, r) {\n if (r instanceof Declaration && r.variable === true) {\n hash[r.name] = r;\n }\n // when evaluating variables in an import statement, imports have not been eval'd\n // so we need to go inside import statements.\n // guard against root being a string (in the case of inlined less)\n if (r.type === 'Import' && r.root && r.root.variables) {\n const vars = r.root.variables();\n for (const name in vars) {\n // eslint-disable-next-line no-prototype-builtins\n if (vars.hasOwnProperty(name)) {\n hash[name] = r.root.variable(name);\n }\n }\n }\n return hash;\n }, {});\n }\n return this._variables;\n },\n\n properties() {\n if (!this._properties) {\n this._properties = !this.rules ? {} : this.rules.reduce(function (hash, r) {\n if (r instanceof Declaration && r.variable !== true) {\n const name = (r.name.length === 1) && (r.name[0] instanceof Keyword) ?\n r.name[0].value : r.name;\n // Properties don't overwrite as they can merge\n if (!hash[`$${name}`]) {\n hash[`$${name}`] = [ r ];\n }\n else {\n hash[`$${name}`].push(r);\n }\n }\n return hash;\n }, {});\n }\n return this._properties;\n },\n\n variable(name) {\n const decl = this.variables()[name];\n if (decl) {\n return this.parseValue(decl);\n }\n },\n\n property(name) {\n const decl = this.properties()[name];\n if (decl) {\n return this.parseValue(decl);\n }\n },\n\n lastDeclaration() {\n for (let i = this.rules.length; i > 0; i--) {\n const decl = this.rules[i - 1];\n if (decl instanceof Declaration) {\n return this.parseValue(decl);\n }\n }\n },\n\n parseValue(toParse) {\n const self = this;\n function transformDeclaration(decl) {\n if (decl.value instanceof Anonymous && !decl.parsed) {\n if (typeof decl.value.value === 'string') {\n new Parser(this.parse.context, this.parse.importManager, decl.fileInfo(), decl.value.getIndex()).parseNode(\n decl.value.value,\n ['value', 'important'],\n function(err, result) {\n if (err) {\n decl.parsed = true;\n }\n if (result) {\n decl.value = result[0];\n decl.important = result[1] || '';\n decl.parsed = true;\n }\n });\n } else {\n decl.parsed = true;\n }\n\n return decl;\n }\n else {\n return decl;\n }\n }\n if (!Array.isArray(toParse)) {\n return transformDeclaration.call(self, toParse);\n }\n else {\n const nodes = [];\n toParse.forEach(function(n) {\n nodes.push(transformDeclaration.call(self, n));\n });\n return nodes;\n }\n },\n\n rulesets() {\n if (!this.rules) { return []; }\n\n const filtRules = [];\n const rules = this.rules;\n let i;\n let rule;\n\n for (i = 0; (rule = rules[i]); i++) {\n if (rule.isRuleset) {\n filtRules.push(rule);\n }\n }\n\n return filtRules;\n },\n\n prependRule(rule) {\n const rules = this.rules;\n if (rules) {\n rules.unshift(rule);\n } else {\n this.rules = [ rule ];\n }\n this.setParent(rule, this);\n },\n\n find(selector, self, filter) {\n self = self || this;\n const rules = [];\n let match;\n let foundMixins;\n const key = selector.toCSS();\n\n if (key in this._lookups) { return this._lookups[key]; }\n\n this.rulesets().forEach(function (rule) {\n if (rule !== self) {\n for (let j = 0; j < rule.selectors.length; j++) {\n match = selector.match(rule.selectors[j]);\n if (match) {\n if (selector.elements.length > match) {\n if (!filter || filter(rule)) {\n foundMixins = rule.find(new Selector(selector.elements.slice(match)), self, filter);\n for (let i = 0; i < foundMixins.length; ++i) {\n foundMixins[i].path.push(rule);\n }\n Array.prototype.push.apply(rules, foundMixins);\n }\n } else {\n rules.push({ rule, path: []});\n }\n break;\n }\n }\n }\n });\n this._lookups[key] = rules;\n return rules;\n },\n\n genCSS(context, output) {\n let i;\n let j;\n const charsetRuleNodes = [];\n let ruleNodes = [];\n\n let // Line number debugging\n debugInfo;\n\n let rule;\n let path;\n\n context.tabLevel = (context.tabLevel || 0);\n\n if (!this.root) {\n context.tabLevel++;\n }\n\n const tabRuleStr = context.compress ? '' : Array(context.tabLevel + 1).join(' ');\n const tabSetStr = context.compress ? '' : Array(context.tabLevel).join(' ');\n let sep;\n\n let charsetNodeIndex = 0;\n let importNodeIndex = 0;\n for (i = 0; (rule = this.rules[i]); i++) {\n if (rule instanceof Comment) {\n if (importNodeIndex === i) {\n importNodeIndex++;\n }\n ruleNodes.push(rule);\n } else if (rule.isCharset && rule.isCharset()) {\n ruleNodes.splice(charsetNodeIndex, 0, rule);\n charsetNodeIndex++;\n importNodeIndex++;\n } else if (rule.type === 'Import') {\n ruleNodes.splice(importNodeIndex, 0, rule);\n importNodeIndex++;\n } else {\n ruleNodes.push(rule);\n }\n }\n ruleNodes = charsetRuleNodes.concat(ruleNodes);\n\n // If this is the root node, we don't render\n // a selector, or {}.\n if (!this.root) {\n debugInfo = getDebugInfo(context, this, tabSetStr);\n\n if (debugInfo) {\n output.add(debugInfo);\n output.add(tabSetStr);\n }\n\n const paths = this.paths;\n const pathCnt = paths.length;\n let pathSubCnt;\n\n sep = context.compress ? ',' : (`,\\n${tabSetStr}`);\n\n for (i = 0; i < pathCnt; i++) {\n path = paths[i];\n if (!(pathSubCnt = path.length)) { continue; }\n if (i > 0) { output.add(sep); }\n\n context.firstSelector = true;\n path[0].genCSS(context, output);\n\n context.firstSelector = false;\n for (j = 1; j < pathSubCnt; j++) {\n path[j].genCSS(context, output);\n }\n }\n\n output.add((context.compress ? '{' : ' {\\n') + tabRuleStr);\n }\n\n // Compile rules and rulesets\n for (i = 0; (rule = ruleNodes[i]); i++) {\n\n if (i + 1 === ruleNodes.length) {\n context.lastRule = true;\n }\n\n const currentLastRule = context.lastRule;\n if (rule.isRulesetLike(rule)) {\n context.lastRule = false;\n }\n\n if (rule.genCSS) {\n rule.genCSS(context, output);\n } else if (rule.value) {\n output.add(rule.value.toString());\n }\n\n context.lastRule = currentLastRule;\n\n if (!context.lastRule && rule.isVisible()) {\n output.add(context.compress ? '' : (`\\n${tabRuleStr}`));\n } else {\n context.lastRule = false;\n }\n }\n\n if (!this.root) {\n output.add((context.compress ? '}' : `\\n${tabSetStr}}`));\n context.tabLevel--;\n }\n\n if (!output.isEmpty() && !context.compress && this.firstRoot) {\n output.add('\\n');\n }\n },\n\n joinSelectors(paths, context, selectors) {\n for (let s = 0; s < selectors.length; s++) {\n this.joinSelector(paths, context, selectors[s]);\n }\n },\n\n joinSelector(paths, context, selector) {\n\n function createParenthesis(elementsToPak, originalElement) {\n let replacementParen, j;\n if (elementsToPak.length === 0) {\n replacementParen = new Paren(elementsToPak[0]);\n } else {\n const insideParent = new Array(elementsToPak.length);\n for (j = 0; j < elementsToPak.length; j++) {\n insideParent[j] = new Element(\n null,\n elementsToPak[j],\n originalElement.isVariable,\n originalElement._index,\n originalElement._fileInfo\n );\n }\n replacementParen = new Paren(new Selector(insideParent));\n }\n return replacementParen;\n }\n\n function createSelector(containedElement, originalElement) {\n let element, selector;\n element = new Element(null, containedElement, originalElement.isVariable, originalElement._index, originalElement._fileInfo);\n selector = new Selector([element]);\n return selector;\n }\n\n // joins selector path from `beginningPath` with selector path in `addPath`\n // `replacedElement` contains element that is being replaced by `addPath`\n // returns concatenated path\n function addReplacementIntoPath(beginningPath, addPath, replacedElement, originalSelector) {\n let newSelectorPath, lastSelector, newJoinedSelector;\n // our new selector path\n newSelectorPath = [];\n\n // construct the joined selector - if & is the first thing this will be empty,\n // if not newJoinedSelector will be the last set of elements in the selector\n if (beginningPath.length > 0) {\n newSelectorPath = utils.copyArray(beginningPath);\n lastSelector = newSelectorPath.pop();\n newJoinedSelector = originalSelector.createDerived(utils.copyArray(lastSelector.elements));\n }\n else {\n newJoinedSelector = originalSelector.createDerived([]);\n }\n\n if (addPath.length > 0) {\n // /deep/ is a CSS4 selector - (removed, so should deprecate)\n // that is valid without anything in front of it\n // so if the & does not have a combinator that is \"\" or \" \" then\n // and there is a combinator on the parent, then grab that.\n // this also allows + a { & .b { .a & { ... though not sure why you would want to do that\n let combinator = replacedElement.combinator;\n\n const parentEl = addPath[0].elements[0];\n if (combinator.emptyOrWhitespace && !parentEl.combinator.emptyOrWhitespace) {\n combinator = parentEl.combinator;\n }\n // join the elements so far with the first part of the parent\n newJoinedSelector.elements.push(new Element(\n combinator,\n parentEl.value,\n replacedElement.isVariable,\n replacedElement._index,\n replacedElement._fileInfo\n ));\n newJoinedSelector.elements = newJoinedSelector.elements.concat(addPath[0].elements.slice(1));\n }\n\n // now add the joined selector - but only if it is not empty\n if (newJoinedSelector.elements.length !== 0) {\n newSelectorPath.push(newJoinedSelector);\n }\n\n // put together the parent selectors after the join (e.g. the rest of the parent)\n if (addPath.length > 1) {\n let restOfPath = addPath.slice(1);\n restOfPath = restOfPath.map(function (selector) {\n return selector.createDerived(selector.elements, []);\n });\n newSelectorPath = newSelectorPath.concat(restOfPath);\n }\n return newSelectorPath;\n }\n\n // joins selector path from `beginningPath` with every selector path in `addPaths` array\n // `replacedElement` contains element that is being replaced by `addPath`\n // returns array with all concatenated paths\n function addAllReplacementsIntoPath( beginningPath, addPaths, replacedElement, originalSelector, result) {\n let j;\n for (j = 0; j < beginningPath.length; j++) {\n const newSelectorPath = addReplacementIntoPath(beginningPath[j], addPaths, replacedElement, originalSelector);\n result.push(newSelectorPath);\n }\n return result;\n }\n\n function mergeElementsOnToSelectors(elements, selectors) {\n let i, sel;\n\n if (elements.length === 0) {\n return ;\n }\n if (selectors.length === 0) {\n selectors.push([ new Selector(elements) ]);\n return;\n }\n\n for (i = 0; (sel = selectors[i]); i++) {\n // if the previous thing in sel is a parent this needs to join on to it\n if (sel.length > 0) {\n sel[sel.length - 1] = sel[sel.length - 1].createDerived(sel[sel.length - 1].elements.concat(elements));\n }\n else {\n sel.push(new Selector(elements));\n }\n }\n }\n\n // replace all parent selectors inside `inSelector` by content of `context` array\n // resulting selectors are returned inside `paths` array\n // returns true if `inSelector` contained at least one parent selector\n function replaceParentSelector(paths, context, inSelector) {\n // The paths are [[Selector]]\n // The first list is a list of comma separated selectors\n // The inner list is a list of inheritance separated selectors\n // e.g.\n // .a, .b {\n // .c {\n // }\n // }\n // == [[.a] [.c]] [[.b] [.c]]\n //\n let i, j, k, currentElements, newSelectors, selectorsMultiplied, sel, el, hadParentSelector = false, length, lastSelector;\n function findNestedSelector(element) {\n let maybeSelector;\n if (!(element.value instanceof Paren)) {\n return null;\n }\n\n maybeSelector = element.value.value;\n if (!(maybeSelector instanceof Selector)) {\n return null;\n }\n\n return maybeSelector;\n }\n\n // the elements from the current selector so far\n currentElements = [];\n // the current list of new selectors to add to the path.\n // We will build it up. We initiate it with one empty selector as we \"multiply\" the new selectors\n // by the parents\n newSelectors = [\n []\n ];\n\n for (i = 0; (el = inSelector.elements[i]); i++) {\n // non parent reference elements just get added\n if (el.value !== '&') {\n const nestedSelector = findNestedSelector(el);\n if (nestedSelector !== null) {\n // merge the current list of non parent selector elements\n // on to the current list of selectors to add\n mergeElementsOnToSelectors(currentElements, newSelectors);\n\n const nestedPaths = [];\n let replaced;\n const replacedNewSelectors = [];\n replaced = replaceParentSelector(nestedPaths, context, nestedSelector);\n hadParentSelector = hadParentSelector || replaced;\n // the nestedPaths array should have only one member - replaceParentSelector does not multiply selectors\n for (k = 0; k < nestedPaths.length; k++) {\n const replacementSelector = createSelector(createParenthesis(nestedPaths[k], el), el);\n addAllReplacementsIntoPath(newSelectors, [replacementSelector], el, inSelector, replacedNewSelectors);\n }\n newSelectors = replacedNewSelectors;\n currentElements = [];\n } else {\n currentElements.push(el);\n }\n\n } else {\n hadParentSelector = true;\n // the new list of selectors to add\n selectorsMultiplied = [];\n\n // merge the current list of non parent selector elements\n // on to the current list of selectors to add\n mergeElementsOnToSelectors(currentElements, newSelectors);\n\n // loop through our current selectors\n for (j = 0; j < newSelectors.length; j++) {\n sel = newSelectors[j];\n // if we don't have any parent paths, the & might be in a mixin so that it can be used\n // whether there are parents or not\n if (context.length === 0) {\n // the combinator used on el should now be applied to the next element instead so that\n // it is not lost\n if (sel.length > 0) {\n sel[0].elements.push(new Element(el.combinator, '', el.isVariable, el._index, el._fileInfo));\n }\n selectorsMultiplied.push(sel);\n }\n else {\n // and the parent selectors\n for (k = 0; k < context.length; k++) {\n // We need to put the current selectors\n // then join the last selector's elements on to the parents selectors\n const newSelectorPath = addReplacementIntoPath(sel, context[k], el, inSelector);\n // add that to our new set of selectors\n selectorsMultiplied.push(newSelectorPath);\n }\n }\n }\n\n // our new selectors has been multiplied, so reset the state\n newSelectors = selectorsMultiplied;\n currentElements = [];\n }\n }\n\n // if we have any elements left over (e.g. .a& .b == .b)\n // add them on to all the current selectors\n mergeElementsOnToSelectors(currentElements, newSelectors);\n\n for (i = 0; i < newSelectors.length; i++) {\n length = newSelectors[i].length;\n if (length > 0) {\n paths.push(newSelectors[i]);\n lastSelector = newSelectors[i][length - 1];\n newSelectors[i][length - 1] = lastSelector.createDerived(lastSelector.elements, inSelector.extendList);\n }\n }\n\n return hadParentSelector;\n }\n\n function deriveSelector(visibilityInfo, deriveFrom) {\n const newSelector = deriveFrom.createDerived(deriveFrom.elements, deriveFrom.extendList, deriveFrom.evaldCondition);\n newSelector.copyVisibilityInfo(visibilityInfo);\n return newSelector;\n }\n\n // joinSelector code follows\n let i, newPaths, hadParentSelector;\n\n newPaths = [];\n hadParentSelector = replaceParentSelector(newPaths, context, selector);\n\n if (!hadParentSelector) {\n if (context.length > 0) {\n newPaths = [];\n for (i = 0; i < context.length; i++) {\n\n const concatenated = context[i].map(deriveSelector.bind(this, selector.visibilityInfo()));\n\n concatenated.push(selector);\n newPaths.push(concatenated);\n }\n }\n else {\n newPaths = [[selector]];\n }\n }\n\n for (i = 0; i < newPaths.length; i++) {\n paths.push(newPaths[i]);\n }\n\n }\n});\n\nexport default Ruleset;\n","import Node from './node';\nimport Selector from './selector';\nimport Ruleset from './ruleset';\nimport Anonymous from './anonymous';\n\nconst AtRule = function(\n name,\n value,\n rules,\n index,\n currentFileInfo,\n debugInfo,\n isRooted,\n visibilityInfo\n) {\n let i;\n\n this.name = name;\n this.value = (value instanceof Node) ? value : (value ? new Anonymous(value) : value);\n if (rules) {\n if (Array.isArray(rules)) {\n this.rules = rules;\n } else {\n this.rules = [rules];\n this.rules[0].selectors = (new Selector([], null, null, index, currentFileInfo)).createEmptySelectors();\n }\n for (i = 0; i < this.rules.length; i++) {\n this.rules[i].allowImports = true;\n }\n this.setParent(this.rules, this);\n }\n this._index = index;\n this._fileInfo = currentFileInfo;\n this.debugInfo = debugInfo;\n this.isRooted = isRooted || false;\n this.copyVisibilityInfo(visibilityInfo);\n this.allowRoot = true;\n}\n\nAtRule.prototype = Object.assign(new Node(), {\n type: 'AtRule',\n accept(visitor) {\n const value = this.value, rules = this.rules;\n if (rules) {\n this.rules = visitor.visitArray(rules);\n }\n if (value) {\n this.value = visitor.visit(value);\n }\n },\n\n isRulesetLike() {\n return this.rules || !this.isCharset();\n },\n\n isCharset() {\n return '@charset' === this.name;\n },\n\n genCSS(context, output) {\n const value = this.value, rules = this.rules;\n output.add(this.name, this.fileInfo(), this.getIndex());\n if (value) {\n output.add(' ');\n value.genCSS(context, output);\n }\n if (rules) {\n this.outputRuleset(context, output, rules);\n } else {\n output.add(';');\n }\n },\n\n eval(context) {\n let mediaPathBackup, mediaBlocksBackup, value = this.value, rules = this.rules;\n\n // media stored inside other atrule should not bubble over it\n // backpup media bubbling information\n mediaPathBackup = context.mediaPath;\n mediaBlocksBackup = context.mediaBlocks;\n // deleted media bubbling information\n context.mediaPath = [];\n context.mediaBlocks = [];\n\n if (value) {\n value = value.eval(context);\n }\n if (rules) {\n // assuming that there is only one rule at this point - that is how parser constructs the rule\n rules = [rules[0].eval(context)];\n rules[0].root = true;\n }\n // restore media bubbling information\n context.mediaPath = mediaPathBackup;\n context.mediaBlocks = mediaBlocksBackup;\n\n return new AtRule(this.name, value, rules,\n this.getIndex(), this.fileInfo(), this.debugInfo, this.isRooted, this.visibilityInfo());\n },\n\n variable(name) {\n if (this.rules) {\n // assuming that there is only one rule at this point - that is how parser constructs the rule\n return Ruleset.prototype.variable.call(this.rules[0], name);\n }\n },\n\n find() {\n if (this.rules) {\n // assuming that there is only one rule at this point - that is how parser constructs the rule\n return Ruleset.prototype.find.apply(this.rules[0], arguments);\n }\n },\n\n rulesets() {\n if (this.rules) {\n // assuming that there is only one rule at this point - that is how parser constructs the rule\n return Ruleset.prototype.rulesets.apply(this.rules[0]);\n }\n },\n\n outputRuleset(context, output, rules) {\n const ruleCnt = rules.length;\n let i;\n context.tabLevel = (context.tabLevel | 0) + 1;\n\n // Compressed\n if (context.compress) {\n output.add('{');\n for (i = 0; i < ruleCnt; i++) {\n rules[i].genCSS(context, output);\n }\n output.add('}');\n context.tabLevel--;\n return;\n }\n\n // Non-compressed\n const tabSetStr = `\\n${Array(context.tabLevel).join(' ')}`, tabRuleStr = `${tabSetStr} `;\n if (!ruleCnt) {\n output.add(` {${tabSetStr}}`);\n } else {\n output.add(` {${tabRuleStr}`);\n rules[0].genCSS(context, output);\n for (i = 1; i < ruleCnt; i++) {\n output.add(tabRuleStr);\n rules[i].genCSS(context, output);\n }\n output.add(`${tabSetStr}}`);\n }\n\n context.tabLevel--;\n }\n});\n\nexport default AtRule;\n","import Node from './node';\nimport contexts from '../contexts';\nimport * as utils from '../utils';\n\nconst DetachedRuleset = function(ruleset, frames) {\n this.ruleset = ruleset;\n this.frames = frames;\n this.setParent(this.ruleset, this);\n};\n\nDetachedRuleset.prototype = Object.assign(new Node(), {\n type: 'DetachedRuleset',\n evalFirst: true,\n\n accept(visitor) {\n this.ruleset = visitor.visit(this.ruleset);\n },\n\n eval(context) {\n const frames = this.frames || utils.copyArray(context.frames);\n return new DetachedRuleset(this.ruleset, frames);\n },\n\n callEval(context) {\n return this.ruleset.eval(this.frames ? new contexts.Eval(context, this.frames.concat(context.frames)) : context);\n }\n});\n\nexport default DetachedRuleset;\n","import Node from './node';\nimport unitConversions from '../data/unit-conversions';\nimport * as utils from '../utils';\n\nconst Unit = function(numerator, denominator, backupUnit) {\n this.numerator = numerator ? utils.copyArray(numerator).sort() : [];\n this.denominator = denominator ? utils.copyArray(denominator).sort() : [];\n if (backupUnit) {\n this.backupUnit = backupUnit;\n } else if (numerator && numerator.length) {\n this.backupUnit = numerator[0];\n }\n};\n\nUnit.prototype = Object.assign(new Node(), {\n type: 'Unit',\n\n clone() {\n return new Unit(utils.copyArray(this.numerator), utils.copyArray(this.denominator), this.backupUnit);\n },\n\n genCSS(context, output) {\n // Dimension checks the unit is singular and throws an error if in strict math mode.\n const strictUnits = context && context.strictUnits;\n if (this.numerator.length === 1) {\n output.add(this.numerator[0]); // the ideal situation\n } else if (!strictUnits && this.backupUnit) {\n output.add(this.backupUnit);\n } else if (!strictUnits && this.denominator.length) {\n output.add(this.denominator[0]);\n }\n },\n\n toString() {\n let i, returnStr = this.numerator.join('*');\n for (i = 0; i < this.denominator.length; i++) {\n returnStr += `/${this.denominator[i]}`;\n }\n return returnStr;\n },\n\n compare(other) {\n return this.is(other.toString()) ? 0 : undefined;\n },\n\n is(unitString) {\n return this.toString().toUpperCase() === unitString.toUpperCase();\n },\n\n isLength() {\n return RegExp('^(px|em|ex|ch|rem|in|cm|mm|pc|pt|ex|vw|vh|vmin|vmax)$', 'gi').test(this.toCSS());\n },\n\n isEmpty() {\n return this.numerator.length === 0 && this.denominator.length === 0;\n },\n\n isSingular() {\n return this.numerator.length <= 1 && this.denominator.length === 0;\n },\n\n map(callback) {\n let i;\n\n for (i = 0; i < this.numerator.length; i++) {\n this.numerator[i] = callback(this.numerator[i], false);\n }\n\n for (i = 0; i < this.denominator.length; i++) {\n this.denominator[i] = callback(this.denominator[i], true);\n }\n },\n\n usedUnits() {\n let group;\n const result = {};\n let mapUnit;\n let groupName;\n\n mapUnit = function (atomicUnit) {\n // eslint-disable-next-line no-prototype-builtins\n if (group.hasOwnProperty(atomicUnit) && !result[groupName]) {\n result[groupName] = atomicUnit;\n }\n\n return atomicUnit;\n };\n\n for (groupName in unitConversions) {\n // eslint-disable-next-line no-prototype-builtins\n if (unitConversions.hasOwnProperty(groupName)) {\n group = unitConversions[groupName];\n\n this.map(mapUnit);\n }\n }\n\n return result;\n },\n\n cancel() {\n const counter = {};\n let atomicUnit;\n let i;\n\n for (i = 0; i < this.numerator.length; i++) {\n atomicUnit = this.numerator[i];\n counter[atomicUnit] = (counter[atomicUnit] || 0) + 1;\n }\n\n for (i = 0; i < this.denominator.length; i++) {\n atomicUnit = this.denominator[i];\n counter[atomicUnit] = (counter[atomicUnit] || 0) - 1;\n }\n\n this.numerator = [];\n this.denominator = [];\n\n for (atomicUnit in counter) {\n // eslint-disable-next-line no-prototype-builtins\n if (counter.hasOwnProperty(atomicUnit)) {\n const count = counter[atomicUnit];\n\n if (count > 0) {\n for (i = 0; i < count; i++) {\n this.numerator.push(atomicUnit);\n }\n } else if (count < 0) {\n for (i = 0; i < -count; i++) {\n this.denominator.push(atomicUnit);\n }\n }\n }\n }\n\n this.numerator.sort();\n this.denominator.sort();\n }\n});\n\nexport default Unit;\n","/* eslint-disable no-prototype-builtins */\nimport Node from './node';\nimport unitConversions from '../data/unit-conversions';\nimport Unit from './unit';\nimport Color from './color';\n\n//\n// A number with a unit\n//\nconst Dimension = function(value, unit) {\n this.value = parseFloat(value);\n if (isNaN(this.value)) {\n throw new Error('Dimension is not a number.');\n }\n this.unit = (unit && unit instanceof Unit) ? unit :\n new Unit(unit ? [unit] : undefined);\n this.setParent(this.unit, this);\n};\n\nDimension.prototype = Object.assign(new Node(), {\n type: 'Dimension',\n\n accept(visitor) {\n this.unit = visitor.visit(this.unit);\n },\n\n // remove when Nodes have JSDoc types\n // eslint-disable-next-line no-unused-vars\n eval(context) {\n return this;\n },\n\n toColor() {\n return new Color([this.value, this.value, this.value]);\n },\n\n genCSS(context, output) {\n if ((context && context.strictUnits) && !this.unit.isSingular()) {\n throw new Error(`Multiple units in dimension. Correct the units or use the unit function. Bad unit: ${this.unit.toString()}`);\n }\n\n const value = this.fround(context, this.value);\n let strValue = String(value);\n\n if (value !== 0 && value < 0.000001 && value > -0.000001) {\n // would be output 1e-6 etc.\n strValue = value.toFixed(20).replace(/0+$/, '');\n }\n\n if (context && context.compress) {\n // Zero values doesn't need a unit\n if (value === 0 && this.unit.isLength()) {\n output.add(strValue);\n return;\n }\n\n // Float values doesn't need a leading zero\n if (value > 0 && value < 1) {\n strValue = (strValue).substr(1);\n }\n }\n\n output.add(strValue);\n this.unit.genCSS(context, output);\n },\n\n // In an operation between two Dimensions,\n // we default to the first Dimension's unit,\n // so `1px + 2` will yield `3px`.\n operate(context, op, other) {\n /* jshint noempty:false */\n let value = this._operate(context, op, this.value, other.value);\n let unit = this.unit.clone();\n\n if (op === '+' || op === '-') {\n if (unit.numerator.length === 0 && unit.denominator.length === 0) {\n unit = other.unit.clone();\n if (this.unit.backupUnit) {\n unit.backupUnit = this.unit.backupUnit;\n }\n } else if (other.unit.numerator.length === 0 && unit.denominator.length === 0) {\n // do nothing\n } else {\n other = other.convertTo(this.unit.usedUnits());\n\n if (context.strictUnits && other.unit.toString() !== unit.toString()) {\n throw new Error('Incompatible units. Change the units or use the unit function. '\n + `Bad units: '${unit.toString()}' and '${other.unit.toString()}'.`);\n }\n\n value = this._operate(context, op, this.value, other.value);\n }\n } else if (op === '*') {\n unit.numerator = unit.numerator.concat(other.unit.numerator).sort();\n unit.denominator = unit.denominator.concat(other.unit.denominator).sort();\n unit.cancel();\n } else if (op === '/') {\n unit.numerator = unit.numerator.concat(other.unit.denominator).sort();\n unit.denominator = unit.denominator.concat(other.unit.numerator).sort();\n unit.cancel();\n }\n return new Dimension(value, unit);\n },\n\n compare(other) {\n let a, b;\n\n if (!(other instanceof Dimension)) {\n return undefined;\n }\n\n if (this.unit.isEmpty() || other.unit.isEmpty()) {\n a = this;\n b = other;\n } else {\n a = this.unify();\n b = other.unify();\n if (a.unit.compare(b.unit) !== 0) {\n return undefined;\n }\n }\n\n return Node.numericCompare(a.value, b.value);\n },\n\n unify() {\n return this.convertTo({ length: 'px', duration: 's', angle: 'rad' });\n },\n\n convertTo(conversions) {\n let value = this.value;\n const unit = this.unit.clone();\n let i;\n let groupName;\n let group;\n let targetUnit;\n let derivedConversions = {};\n let applyUnit;\n\n if (typeof conversions === 'string') {\n for (i in unitConversions) {\n if (unitConversions[i].hasOwnProperty(conversions)) {\n derivedConversions = {};\n derivedConversions[i] = conversions;\n }\n }\n conversions = derivedConversions;\n }\n applyUnit = function (atomicUnit, denominator) {\n if (group.hasOwnProperty(atomicUnit)) {\n if (denominator) {\n value = value / (group[atomicUnit] / group[targetUnit]);\n } else {\n value = value * (group[atomicUnit] / group[targetUnit]);\n }\n\n return targetUnit;\n }\n\n return atomicUnit;\n };\n\n for (groupName in conversions) {\n if (conversions.hasOwnProperty(groupName)) {\n targetUnit = conversions[groupName];\n group = unitConversions[groupName];\n\n unit.map(applyUnit);\n }\n }\n\n unit.cancel();\n\n return new Dimension(value, unit);\n }\n});\n\nexport default Dimension;\n","import Node from './node';\nimport Color from './color';\nimport Dimension from './dimension';\nimport * as Constants from '../constants';\nconst MATH = Constants.Math;\n\n\nconst Operation = function(op, operands, isSpaced) {\n this.op = op.trim();\n this.operands = operands;\n this.isSpaced = isSpaced;\n};\n\nOperation.prototype = Object.assign(new Node(), {\n type: 'Operation',\n\n accept(visitor) {\n this.operands = visitor.visitArray(this.operands);\n },\n\n eval(context) {\n let a = this.operands[0].eval(context), b = this.operands[1].eval(context), op;\n\n if (context.isMathOn(this.op)) {\n op = this.op === './' ? '/' : this.op;\n if (a instanceof Dimension && b instanceof Color) {\n a = a.toColor();\n }\n if (b instanceof Dimension && a instanceof Color) {\n b = b.toColor();\n }\n if (!a.operate || !b.operate) {\n if (\n (a instanceof Operation || b instanceof Operation)\n && a.op === '/' && context.math === MATH.PARENS_DIVISION\n ) {\n return new Operation(this.op, [a, b], this.isSpaced);\n }\n throw { type: 'Operation',\n message: 'Operation on an invalid type' };\n }\n\n return a.operate(context, op, b);\n } else {\n return new Operation(this.op, [a, b], this.isSpaced);\n }\n },\n\n genCSS(context, output) {\n this.operands[0].genCSS(context, output);\n if (this.isSpaced) {\n output.add(' ');\n }\n output.add(this.op);\n if (this.isSpaced) {\n output.add(' ');\n }\n this.operands[1].genCSS(context, output);\n }\n});\n\nexport default Operation;\n","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n","import Node from './node';\nimport Paren from './paren';\nimport Comment from './comment';\nimport Dimension from './dimension';\nimport Anonymous from './anonymous';\n\nconst Expression = function(value, noSpacing) {\n this.value = value;\n this.noSpacing = noSpacing;\n if (!value) {\n throw new Error('Expression requires an array parameter');\n }\n};\n\nExpression.prototype = Object.assign(new Node(), {\n type: 'Expression',\n\n accept(visitor) {\n this.value = visitor.visitArray(this.value);\n },\n\n eval(context) {\n let returnValue;\n const mathOn = context.isMathOn();\n const inParenthesis = this.parens;\n\n let doubleParen = false;\n if (inParenthesis) {\n context.inParenthesis();\n }\n if (this.value.length > 1) {\n returnValue = new Expression(this.value.map(function (e) {\n if (!e.eval) {\n return e;\n }\n return e.eval(context);\n }), this.noSpacing);\n } else if (this.value.length === 1) {\n if (this.value[0].parens && !this.value[0].parensInOp && !context.inCalc) {\n doubleParen = true;\n }\n returnValue = this.value[0].eval(context);\n } else {\n returnValue = this;\n }\n if (inParenthesis) {\n context.outOfParenthesis();\n }\n if (this.parens && this.parensInOp && !mathOn && !doubleParen\n && (!(returnValue instanceof Dimension))) {\n returnValue = new Paren(returnValue);\n }\n return returnValue;\n },\n\n genCSS(context, output) {\n for (let i = 0; i < this.value.length; i++) {\n this.value[i].genCSS(context, output);\n if (!this.noSpacing && i + 1 < this.value.length) {\n if (i + 1 < this.value.length && !(this.value[i + 1] instanceof Anonymous) ||\n this.value[i + 1] instanceof Anonymous && this.value[i + 1].value !== ',') {\n output.add(' ');\n }\n }\n }\n },\n\n throwAwayComments() {\n this.value = this.value.filter(function(v) {\n return !(v instanceof Comment);\n });\n }\n});\n\nexport default Expression;\n","import Expression from '../tree/expression';\n\nclass functionCaller {\n constructor(name, context, index, currentFileInfo) {\n this.name = name.toLowerCase();\n this.index = index;\n this.context = context;\n this.currentFileInfo = currentFileInfo;\n\n this.func = context.frames[0].functionRegistry.get(this.name);\n }\n\n isValid() {\n return Boolean(this.func);\n }\n\n call(args) {\n if (!(Array.isArray(args))) {\n args = [args];\n }\n const evalArgs = this.func.evalArgs;\n if (evalArgs !== false) {\n args = args.map(a => a.eval(this.context));\n }\n const commentFilter = item => !(item.type === 'Comment');\n\n // This code is terrible and should be replaced as per this issue...\n // https://github.com/less/less.js/issues/2477\n args = args\n .filter(commentFilter)\n .map(item => {\n if (item.type === 'Expression') {\n const subNodes = item.value.filter(commentFilter);\n if (subNodes.length === 1) {\n // https://github.com/less/less.js/issues/3616\n if (item.parens && subNodes[0].op === '/') {\n return item;\n }\n return subNodes[0];\n } else {\n return new Expression(subNodes);\n }\n }\n return item;\n });\n\n if (evalArgs === false) {\n return this.func(this.context, ...args);\n }\n\n return this.func(...args);\n }\n}\n\nexport default functionCaller;\n","import Node from './node';\nimport Anonymous from './anonymous';\nimport FunctionCaller from '../functions/function-caller';\n\n//\n// A function call node.\n//\nconst Call = function(name, args, index, currentFileInfo) {\n this.name = name;\n this.args = args;\n this.calc = name === 'calc';\n this._index = index;\n this._fileInfo = currentFileInfo;\n}\n\nCall.prototype = Object.assign(new Node(), {\n type: 'Call',\n\n accept(visitor) {\n if (this.args) {\n this.args = visitor.visitArray(this.args);\n }\n },\n\n //\n // When evaluating a function call,\n // we either find the function in the functionRegistry,\n // in which case we call it, passing the evaluated arguments,\n // if this returns null or we cannot find the function, we\n // simply print it out as it appeared originally [2].\n //\n // The reason why we evaluate the arguments, is in the case where\n // we try to pass a variable to a function, like: `saturate(@color)`.\n // The function should receive the value, not the variable.\n //\n eval(context) {\n /**\n * Turn off math for calc(), and switch back on for evaluating nested functions\n */\n const currentMathContext = context.mathOn;\n context.mathOn = !this.calc;\n if (this.calc || context.inCalc) {\n context.enterCalc();\n }\n\n const exitCalc = () => {\n if (this.calc || context.inCalc) {\n context.exitCalc();\n }\n context.mathOn = currentMathContext;\n };\n\n let result;\n const funcCaller = new FunctionCaller(this.name, context, this.getIndex(), this.fileInfo());\n\n if (funcCaller.isValid()) {\n try {\n result = funcCaller.call(this.args);\n exitCalc();\n } catch (e) {\n // eslint-disable-next-line no-prototype-builtins\n if (e.hasOwnProperty('line') && e.hasOwnProperty('column')) {\n throw e;\n }\n throw { \n type: e.type || 'Runtime',\n message: `Error evaluating function \\`${this.name}\\`${e.message ? `: ${e.message}` : ''}`,\n index: this.getIndex(), \n filename: this.fileInfo().filename,\n line: e.lineNumber,\n column: e.columnNumber\n };\n }\n }\n\n if (result !== null && result !== undefined) {\n // Results that that are not nodes are cast as Anonymous nodes\n // Falsy values or booleans are returned as empty nodes\n if (!(result instanceof Node)) {\n if (!result || result === true) {\n result = new Anonymous(null); \n }\n else {\n result = new Anonymous(result.toString()); \n }\n \n }\n result._index = this._index;\n result._fileInfo = this._fileInfo;\n return result;\n }\n\n const args = this.args.map(a => a.eval(context));\n exitCalc();\n\n return new Call(this.name, args, this.getIndex(), this.fileInfo());\n },\n\n genCSS(context, output) {\n output.add(`${this.name}(`, this.fileInfo(), this.getIndex());\n\n for (let i = 0; i < this.args.length; i++) {\n this.args[i].genCSS(context, output);\n if (i + 1 < this.args.length) {\n output.add(', ');\n }\n }\n\n output.add(')');\n }\n});\n\nexport default Call;\n","import Node from './node';\nimport Call from './call';\n\nconst Variable = function(name, index, currentFileInfo) {\n this.name = name;\n this._index = index;\n this._fileInfo = currentFileInfo;\n};\n\nVariable.prototype = Object.assign(new Node(), {\n type: 'Variable',\n\n eval(context) {\n let variable, name = this.name;\n\n if (name.indexOf('@@') === 0) {\n name = `@${new Variable(name.slice(1), this.getIndex(), this.fileInfo()).eval(context).value}`;\n }\n\n if (this.evaluating) {\n throw { type: 'Name',\n message: `Recursive variable definition for ${name}`,\n filename: this.fileInfo().filename,\n index: this.getIndex() };\n }\n\n this.evaluating = true;\n\n variable = this.find(context.frames, function (frame) {\n const v = frame.variable(name);\n if (v) {\n if (v.important) {\n const importantScope = context.importantScope[context.importantScope.length - 1];\n importantScope.important = v.important;\n }\n // If in calc, wrap vars in a function call to cascade evaluate args first\n if (context.inCalc) {\n return (new Call('_SELF', [v.value])).eval(context);\n }\n else {\n return v.value.eval(context);\n }\n }\n });\n if (variable) {\n this.evaluating = false;\n return variable;\n } else {\n throw { type: 'Name',\n message: `variable ${name} is undefined`,\n filename: this.fileInfo().filename,\n index: this.getIndex() };\n }\n },\n\n find(obj, fun) {\n for (let i = 0, r; i < obj.length; i++) {\n r = fun.call(obj, obj[i]);\n if (r) { return r; }\n }\n return null;\n }\n});\n\nexport default Variable;\n","import Node from './node';\nimport Declaration from './declaration';\n\nconst Property = function(name, index, currentFileInfo) {\n this.name = name;\n this._index = index;\n this._fileInfo = currentFileInfo;\n};\n\nProperty.prototype = Object.assign(new Node(), {\n type: 'Property',\n\n eval(context) {\n let property;\n const name = this.name;\n // TODO: shorten this reference\n const mergeRules = context.pluginManager.less.visitors.ToCSSVisitor.prototype._mergeRules;\n\n if (this.evaluating) {\n throw { type: 'Name',\n message: `Recursive property reference for ${name}`,\n filename: this.fileInfo().filename,\n index: this.getIndex() };\n }\n\n this.evaluating = true;\n\n property = this.find(context.frames, function (frame) {\n let v;\n const vArr = frame.property(name);\n if (vArr) {\n for (let i = 0; i < vArr.length; i++) {\n v = vArr[i];\n\n vArr[i] = new Declaration(v.name,\n v.value,\n v.important,\n v.merge,\n v.index,\n v.currentFileInfo,\n v.inline,\n v.variable\n );\n }\n mergeRules(vArr);\n\n v = vArr[vArr.length - 1];\n if (v.important) {\n const importantScope = context.importantScope[context.importantScope.length - 1];\n importantScope.important = v.important;\n }\n v = v.value.eval(context);\n return v;\n }\n });\n if (property) {\n this.evaluating = false;\n return property;\n } else {\n throw { type: 'Name',\n message: `Property '${name}' is undefined`,\n filename: this.currentFileInfo.filename,\n index: this.index };\n }\n },\n\n find(obj, fun) {\n for (let i = 0, r; i < obj.length; i++) {\n r = fun.call(obj, obj[i]);\n if (r) { return r; }\n }\n return null;\n }\n});\n\nexport default Property;\n","import Node from './node';\n\nconst Attribute = function(key, op, value, cif) {\n this.key = key;\n this.op = op;\n this.value = value;\n this.cif = cif;\n}\n\nAttribute.prototype = Object.assign(new Node(), {\n type: 'Attribute',\n\n eval(context) {\n return new Attribute(\n this.key.eval ? this.key.eval(context) : this.key,\n this.op,\n (this.value && this.value.eval) ? this.value.eval(context) : this.value,\n this.cif\n );\n },\n\n genCSS(context, output) {\n output.add(this.toCSS(context));\n },\n\n toCSS(context) {\n let value = this.key.toCSS ? this.key.toCSS(context) : this.key;\n\n if (this.op) {\n value += this.op;\n value += (this.value.toCSS ? this.value.toCSS(context) : this.value);\n }\n\n if (this.cif) {\n value = value + ' ' + this.cif;\n }\n\n return `[${value}]`;\n }\n});\n\nexport default Attribute;\n","import Node from './node';\nimport Variable from './variable';\nimport Property from './property';\n\nconst Quoted = function(str, content, escaped, index, currentFileInfo) {\n this.escaped = (escaped === undefined) ? true : escaped;\n this.value = content || '';\n this.quote = str.charAt(0);\n this._index = index;\n this._fileInfo = currentFileInfo;\n this.variableRegex = /@\\{([\\w-]+)\\}/g;\n this.propRegex = /\\$\\{([\\w-]+)\\}/g;\n this.allowRoot = escaped;\n};\n\nQuoted.prototype = Object.assign(new Node(), {\n type: 'Quoted',\n\n genCSS(context, output) {\n if (!this.escaped) {\n output.add(this.quote, this.fileInfo(), this.getIndex());\n }\n output.add(this.value);\n if (!this.escaped) {\n output.add(this.quote);\n }\n },\n\n containsVariables() {\n return this.value.match(this.variableRegex);\n },\n\n eval(context) {\n const that = this;\n let value = this.value;\n const variableReplacement = function (_, name) {\n const v = new Variable(`@${name}`, that.getIndex(), that.fileInfo()).eval(context, true);\n return (v instanceof Quoted) ? v.value : v.toCSS();\n };\n const propertyReplacement = function (_, name) {\n const v = new Property(`$${name}`, that.getIndex(), that.fileInfo()).eval(context, true);\n return (v instanceof Quoted) ? v.value : v.toCSS();\n };\n function iterativeReplace(value, regexp, replacementFnc) {\n let evaluatedValue = value;\n do {\n value = evaluatedValue.toString();\n evaluatedValue = value.replace(regexp, replacementFnc);\n } while (value !== evaluatedValue);\n return evaluatedValue;\n }\n value = iterativeReplace(value, this.variableRegex, variableReplacement);\n value = iterativeReplace(value, this.propRegex, propertyReplacement);\n return new Quoted(this.quote + value + this.quote, value, this.escaped, this.getIndex(), this.fileInfo());\n },\n\n compare(other) {\n // when comparing quoted strings allow the quote to differ\n if (other.type === 'Quoted' && !this.escaped && !other.escaped) {\n return Node.numericCompare(this.value, other.value);\n } else {\n return other.toCSS && this.toCSS() === other.toCSS() ? 0 : undefined;\n }\n }\n});\n\nexport default Quoted;\n","import Node from './node';\n\nfunction escapePath(path) {\n return path.replace(/[()'\"\\s]/g, function(match) { return `\\\\${match}`; });\n}\n\nconst URL = function(val, index, currentFileInfo, isEvald) {\n this.value = val;\n this._index = index;\n this._fileInfo = currentFileInfo;\n this.isEvald = isEvald;\n};\n\nURL.prototype = Object.assign(new Node(), {\n type: 'Url',\n\n accept(visitor) {\n this.value = visitor.visit(this.value);\n },\n\n genCSS(context, output) {\n output.add('url(');\n this.value.genCSS(context, output);\n output.add(')');\n },\n\n eval(context) {\n const val = this.value.eval(context);\n let rootpath;\n\n if (!this.isEvald) {\n // Add the rootpath if the URL requires a rewrite\n rootpath = this.fileInfo() && this.fileInfo().rootpath;\n if (typeof rootpath === 'string' &&\n typeof val.value === 'string' &&\n context.pathRequiresRewrite(val.value)) {\n if (!val.quote) {\n rootpath = escapePath(rootpath);\n }\n val.value = context.rewritePath(val.value, rootpath);\n } else {\n val.value = context.normalizePath(val.value);\n }\n\n // Add url args if enabled\n if (context.urlArgs) {\n if (!val.value.match(/^\\s*data:/)) {\n const delimiter = val.value.indexOf('?') === -1 ? '?' : '&';\n const urlArgs = delimiter + context.urlArgs;\n if (val.value.indexOf('#') !== -1) {\n val.value = val.value.replace('#', `${urlArgs}#`);\n } else {\n val.value += urlArgs;\n }\n }\n }\n }\n\n return new URL(val, this.getIndex(), this.fileInfo(), true);\n }\n});\n\nexport default URL;\n","import Ruleset from './ruleset';\nimport Value from './value';\nimport Selector from './selector';\nimport Anonymous from './anonymous';\nimport Expression from './expression';\nimport * as utils from '../utils';\n\nconst NestableAtRulePrototype = {\n\n isRulesetLike() {\n return true;\n },\n\n accept(visitor) {\n if (this.features) {\n this.features = visitor.visit(this.features);\n }\n if (this.rules) {\n this.rules = visitor.visitArray(this.rules);\n }\n },\n\n evalTop(context) {\n let result = this;\n\n // Render all dependent Media blocks.\n if (context.mediaBlocks.length > 1) {\n const selectors = (new Selector([], null, null, this.getIndex(), this.fileInfo())).createEmptySelectors();\n result = new Ruleset(selectors, context.mediaBlocks);\n result.multiMedia = true;\n result.copyVisibilityInfo(this.visibilityInfo());\n this.setParent(result, this);\n }\n\n delete context.mediaBlocks;\n delete context.mediaPath;\n\n return result;\n },\n\n evalNested(context) {\n let i;\n let value;\n const path = context.mediaPath.concat([this]);\n\n // Extract the media-query conditions separated with `,` (OR).\n for (i = 0; i < path.length; i++) {\n if (path[i].type !== this.type) { \n context.mediaBlocks.splice(i, 1); \n \n return this; \n }\n \n value = path[i].features instanceof Value ?\n path[i].features.value : path[i].features;\n path[i] = Array.isArray(value) ? value : [value];\n }\n\n // Trace all permutations to generate the resulting media-query.\n //\n // (a, b and c) with nested (d, e) ->\n // a and d\n // a and e\n // b and c and d\n // b and c and e\n this.features = new Value(this.permute(path).map(path => {\n path = path.map(fragment => fragment.toCSS ? fragment : new Anonymous(fragment));\n\n for (i = path.length - 1; i > 0; i--) {\n path.splice(i, 0, new Anonymous('and'));\n }\n\n return new Expression(path);\n }));\n this.setParent(this.features, this);\n\n // Fake a tree-node that doesn't output anything.\n return new Ruleset([], []);\n },\n\n permute(arr) {\n if (arr.length === 0) {\n return [];\n } else if (arr.length === 1) {\n return arr[0];\n } else {\n const result = [];\n const rest = this.permute(arr.slice(1));\n for (let i = 0; i < rest.length; i++) {\n for (let j = 0; j < arr[0].length; j++) {\n result.push([arr[0][j]].concat(rest[i]));\n }\n }\n return result;\n }\n },\n\n bubbleSelectors(selectors) {\n if (!selectors) {\n return;\n }\n this.rules = [new Ruleset(utils.copyArray(selectors), [this.rules[0]])];\n this.setParent(this.rules, this);\n }\n};\n\nexport default NestableAtRulePrototype;\n","import Ruleset from './ruleset';\nimport Value from './value';\nimport Selector from './selector';\nimport AtRule from './atrule';\nimport NestableAtRulePrototype from './nested-at-rule';\n\nconst Media = function(value, features, index, currentFileInfo, visibilityInfo) {\n this._index = index;\n this._fileInfo = currentFileInfo;\n\n const selectors = (new Selector([], null, null, this._index, this._fileInfo)).createEmptySelectors();\n\n this.features = new Value(features);\n this.rules = [new Ruleset(selectors, value)];\n this.rules[0].allowImports = true;\n this.copyVisibilityInfo(visibilityInfo);\n this.allowRoot = true;\n this.setParent(selectors, this);\n this.setParent(this.features, this);\n this.setParent(this.rules, this);\n};\n\nMedia.prototype = Object.assign(new AtRule(), {\n type: 'Media',\n\n ...NestableAtRulePrototype,\n\n genCSS(context, output) {\n output.add('@media ', this._fileInfo, this._index);\n this.features.genCSS(context, output);\n this.outputRuleset(context, output, this.rules);\n },\n\n eval(context) {\n if (!context.mediaBlocks) {\n context.mediaBlocks = [];\n context.mediaPath = [];\n }\n\n const media = new Media(null, [], this._index, this._fileInfo, this.visibilityInfo());\n if (this.debugInfo) {\n this.rules[0].debugInfo = this.debugInfo;\n media.debugInfo = this.debugInfo;\n }\n \n media.features = this.features.eval(context);\n\n context.mediaPath.push(media);\n context.mediaBlocks.push(media);\n\n this.rules[0].functionRegistry = context.frames[0].functionRegistry.inherit();\n context.frames.unshift(this.rules[0]);\n media.rules = [this.rules[0].eval(context)];\n context.frames.shift();\n\n context.mediaPath.pop();\n\n return context.mediaPath.length === 0 ? media.evalTop(context) :\n media.evalNested(context);\n }\n});\n\nexport default Media;\n","import Node from './node';\nimport Media from './media';\nimport URL from './url';\nimport Quoted from './quoted';\nimport Ruleset from './ruleset';\nimport Anonymous from './anonymous';\nimport * as utils from '../utils';\nimport LessError from '../less-error';\n\n//\n// CSS @import node\n//\n// The general strategy here is that we don't want to wait\n// for the parsing to be completed, before we start importing\n// the file. That's because in the context of a browser,\n// most of the time will be spent waiting for the server to respond.\n//\n// On creation, we push the import path to our import queue, though\n// `import,push`, we also pass it a callback, which it'll call once\n// the file has been fetched, and parsed.\n//\nconst Import = function(path, features, options, index, currentFileInfo, visibilityInfo) {\n this.options = options;\n this._index = index;\n this._fileInfo = currentFileInfo;\n this.path = path;\n this.features = features;\n this.allowRoot = true;\n\n if (this.options.less !== undefined || this.options.inline) {\n this.css = !this.options.less || this.options.inline;\n } else {\n const pathValue = this.getPath();\n if (pathValue && /[#.&?]css([?;].*)?$/.test(pathValue)) {\n this.css = true;\n }\n }\n this.copyVisibilityInfo(visibilityInfo);\n this.setParent(this.features, this);\n this.setParent(this.path, this);\n};\n\nImport.prototype = Object.assign(new Node(), {\n type: 'Import',\n\n accept(visitor) {\n if (this.features) {\n this.features = visitor.visit(this.features);\n }\n this.path = visitor.visit(this.path);\n if (!this.options.isPlugin && !this.options.inline && this.root) {\n this.root = visitor.visit(this.root);\n }\n },\n\n genCSS(context, output) {\n if (this.css && this.path._fileInfo.reference === undefined) {\n output.add('@import ', this._fileInfo, this._index);\n this.path.genCSS(context, output);\n if (this.features) {\n output.add(' ');\n this.features.genCSS(context, output);\n }\n output.add(';');\n }\n },\n\n getPath() {\n return (this.path instanceof URL) ?\n this.path.value.value : this.path.value;\n },\n\n isVariableImport() {\n let path = this.path;\n if (path instanceof URL) {\n path = path.value;\n }\n if (path instanceof Quoted) {\n return path.containsVariables();\n }\n\n return true;\n },\n\n evalForImport(context) {\n let path = this.path;\n\n if (path instanceof URL) {\n path = path.value;\n }\n\n return new Import(path.eval(context), this.features, this.options, this._index, this._fileInfo, this.visibilityInfo());\n },\n\n evalPath(context) {\n const path = this.path.eval(context);\n const fileInfo = this._fileInfo;\n\n if (!(path instanceof URL)) {\n // Add the rootpath if the URL requires a rewrite\n const pathValue = path.value;\n if (fileInfo &&\n pathValue &&\n context.pathRequiresRewrite(pathValue)) {\n path.value = context.rewritePath(pathValue, fileInfo.rootpath);\n } else {\n path.value = context.normalizePath(path.value);\n }\n }\n\n return path;\n },\n\n eval(context) {\n const result = this.doEval(context);\n if (this.options.reference || this.blocksVisibility()) {\n if (result.length || result.length === 0) {\n result.forEach(function (node) {\n node.addVisibilityBlock();\n }\n );\n } else {\n result.addVisibilityBlock();\n }\n }\n return result;\n },\n\n doEval(context) {\n let ruleset;\n let registry;\n const features = this.features && this.features.eval(context);\n\n if (this.options.isPlugin) {\n if (this.root && this.root.eval) {\n try {\n this.root.eval(context);\n }\n catch (e) {\n e.message = 'Plugin error during evaluation';\n throw new LessError(e, this.root.imports, this.root.filename);\n }\n }\n registry = context.frames[0] && context.frames[0].functionRegistry;\n if ( registry && this.root && this.root.functions ) {\n registry.addMultiple( this.root.functions );\n }\n\n return [];\n }\n\n if (this.skip) {\n if (typeof this.skip === 'function') {\n this.skip = this.skip();\n }\n if (this.skip) {\n return [];\n }\n }\n if (this.options.inline) {\n const contents = new Anonymous(this.root, 0,\n {\n filename: this.importedFilename,\n reference: this.path._fileInfo && this.path._fileInfo.reference\n }, true, true);\n\n return this.features ? new Media([contents], this.features.value) : [contents];\n } else if (this.css) {\n const newImport = new Import(this.evalPath(context), features, this.options, this._index);\n if (!newImport.css && this.error) {\n throw this.error;\n }\n return newImport;\n } else if (this.root) {\n ruleset = new Ruleset(null, utils.copyArray(this.root.rules));\n ruleset.evalImports(context);\n\n return this.features ? new Media(ruleset.rules, this.features.value) : ruleset.rules;\n } else {\n return [];\n }\n }\n});\n\nexport default Import;\n","import Node from './node';\nimport Variable from './variable';\n\nconst JsEvalNode = function() {};\n\nJsEvalNode.prototype = Object.assign(new Node(), {\n evaluateJavaScript(expression, context) {\n let result;\n const that = this;\n const evalContext = {};\n\n if (!context.javascriptEnabled) {\n throw { message: 'Inline JavaScript is not enabled. Is it set in your options?',\n filename: this.fileInfo().filename,\n index: this.getIndex() };\n }\n\n expression = expression.replace(/@\\{([\\w-]+)\\}/g, function (_, name) {\n return that.jsify(new Variable(`@${name}`, that.getIndex(), that.fileInfo()).eval(context));\n });\n\n try {\n expression = new Function(`return (${expression})`);\n } catch (e) {\n throw { message: `JavaScript evaluation error: ${e.message} from \\`${expression}\\`` ,\n filename: this.fileInfo().filename,\n index: this.getIndex() };\n }\n\n const variables = context.frames[0].variables();\n for (const k in variables) {\n // eslint-disable-next-line no-prototype-builtins\n if (variables.hasOwnProperty(k)) {\n evalContext[k.slice(1)] = {\n value: variables[k].value,\n toJS: function () {\n return this.value.eval(context).toCSS();\n }\n };\n }\n }\n\n try {\n result = expression.call(evalContext);\n } catch (e) {\n throw { message: `JavaScript evaluation error: '${e.name}: ${e.message.replace(/[\"]/g, '\\'')}'` ,\n filename: this.fileInfo().filename,\n index: this.getIndex() };\n }\n return result;\n },\n\n jsify(obj) {\n if (Array.isArray(obj.value) && (obj.value.length > 1)) {\n return `[${obj.value.map(function (v) { return v.toCSS(); }).join(', ')}]`;\n } else {\n return obj.toCSS();\n }\n }\n});\n\nexport default JsEvalNode;\n","import JsEvalNode from './js-eval-node';\nimport Dimension from './dimension';\nimport Quoted from './quoted';\nimport Anonymous from './anonymous';\n\nconst JavaScript = function(string, escaped, index, currentFileInfo) {\n this.escaped = escaped;\n this.expression = string;\n this._index = index;\n this._fileInfo = currentFileInfo;\n}\n\nJavaScript.prototype = Object.assign(new JsEvalNode(), {\n type: 'JavaScript',\n\n eval(context) {\n const result = this.evaluateJavaScript(this.expression, context);\n const type = typeof result;\n\n if (type === 'number' && !isNaN(result)) {\n return new Dimension(result);\n } else if (type === 'string') {\n return new Quoted(`\"${result}\"`, result, this.escaped, this._index);\n } else if (Array.isArray(result)) {\n return new Anonymous(result.join(', '));\n } else {\n return new Anonymous(result);\n }\n }\n});\n\nexport default JavaScript;\n","import Node from './node';\n\nconst Assignment = function(key, val) {\n this.key = key;\n this.value = val;\n}\n\nAssignment.prototype = Object.assign(new Node(), {\n type: 'Assignment',\n\n accept(visitor) {\n this.value = visitor.visit(this.value);\n },\n\n eval(context) {\n if (this.value.eval) {\n return new Assignment(this.key, this.value.eval(context));\n }\n return this;\n },\n\n genCSS(context, output) {\n output.add(`${this.key}=`);\n if (this.value.genCSS) {\n this.value.genCSS(context, output);\n } else {\n output.add(this.value);\n }\n }\n});\n\nexport default Assignment;\n","import Node from './node';\n\nconst Condition = function(op, l, r, i, negate) {\n this.op = op.trim();\n this.lvalue = l;\n this.rvalue = r;\n this._index = i;\n this.negate = negate;\n};\n\nCondition.prototype = Object.assign(new Node(), {\n type: 'Condition',\n\n accept(visitor) {\n this.lvalue = visitor.visit(this.lvalue);\n this.rvalue = visitor.visit(this.rvalue);\n },\n\n eval(context) {\n const result = (function (op, a, b) {\n switch (op) {\n case 'and': return a && b;\n case 'or': return a || b;\n default:\n switch (Node.compare(a, b)) {\n case -1:\n return op === '<' || op === '=<' || op === '<=';\n case 0:\n return op === '=' || op === '>=' || op === '=<' || op === '<=';\n case 1:\n return op === '>' || op === '>=';\n default:\n return false;\n }\n }\n })(this.op, this.lvalue.eval(context), this.rvalue.eval(context));\n\n return this.negate ? !result : result;\n }\n});\n\nexport default Condition;\n","import { copy } from 'copy-anything';\nimport Declaration from './declaration';\nimport Node from './node';\n\nconst QueryInParens = function (op, l, m, op2, r, i) {\n this.op = op.trim();\n this.lvalue = l;\n this.mvalue = m;\n this.op2 = op2 ? op2.trim() : null;\n this.rvalue = r;\n this._index = i;\n this.mvalues = [];\n};\n\nQueryInParens.prototype = Object.assign(new Node(), {\n type: 'QueryInParens',\n\n accept(visitor) {\n this.lvalue = visitor.visit(this.lvalue);\n this.mvalue = visitor.visit(this.mvalue);\n if (this.rvalue) {\n this.rvalue = visitor.visit(this.rvalue);\n }\n },\n\n eval(context) {\n this.lvalue = this.lvalue.eval(context);\n \n let variableDeclaration;\n let rule;\n\n for (let i = 0; (rule = context.frames[i]); i++) {\n if (rule.type === 'Ruleset') {\n variableDeclaration = rule.rules.find(function (r) {\n if ((r instanceof Declaration) && r.variable) {\n return true;\n }\n\n return false;\n });\n \n if (variableDeclaration) {\n break;\n }\n }\n }\n\n if (!this.mvalueCopy) {\n this.mvalueCopy = copy(this.mvalue);\n }\n \n if (variableDeclaration) {\n this.mvalue = this.mvalueCopy;\n this.mvalue = this.mvalue.eval(context);\n this.mvalues.push(this.mvalue);\n } else {\n this.mvalue = this.mvalue.eval(context);\n }\n\n if (this.rvalue) {\n this.rvalue = this.rvalue.eval(context);\n }\n return this;\n },\n\n genCSS(context, output) {\n this.lvalue.genCSS(context, output);\n output.add(' ' + this.op + ' ');\n if (this.mvalues.length > 0) {\n this.mvalue = this.mvalues.shift();\n }\n this.mvalue.genCSS(context, output);\n if (this.rvalue) {\n output.add(' ' + this.op2 + ' ');\n this.rvalue.genCSS(context, output);\n }\n },\n});\n\nexport default QueryInParens;\n","import Ruleset from './ruleset';\nimport Value from './value';\nimport Selector from './selector';\nimport AtRule from './atrule';\nimport NestableAtRulePrototype from './nested-at-rule';\n\nconst Container = function(value, features, index, currentFileInfo, visibilityInfo) {\n this._index = index;\n this._fileInfo = currentFileInfo;\n\n const selectors = (new Selector([], null, null, this._index, this._fileInfo)).createEmptySelectors();\n\n this.features = new Value(features);\n this.rules = [new Ruleset(selectors, value)];\n this.rules[0].allowImports = true;\n this.copyVisibilityInfo(visibilityInfo);\n this.allowRoot = true;\n this.setParent(selectors, this);\n this.setParent(this.features, this);\n this.setParent(this.rules, this);\n};\n\nContainer.prototype = Object.assign(new AtRule(), {\n type: 'Container',\n\n ...NestableAtRulePrototype,\n\n genCSS(context, output) {\n output.add('@container ', this._fileInfo, this._index);\n this.features.genCSS(context, output);\n this.outputRuleset(context, output, this.rules);\n },\n\n eval(context) {\n if (!context.mediaBlocks) {\n context.mediaBlocks = [];\n context.mediaPath = [];\n }\n\n const media = new Container(null, [], this._index, this._fileInfo, this.visibilityInfo());\n if (this.debugInfo) {\n this.rules[0].debugInfo = this.debugInfo;\n media.debugInfo = this.debugInfo;\n }\n \n media.features = this.features.eval(context);\n\n context.mediaPath.push(media);\n context.mediaBlocks.push(media);\n\n this.rules[0].functionRegistry = context.frames[0].functionRegistry.inherit();\n context.frames.unshift(this.rules[0]);\n media.rules = [this.rules[0].eval(context)];\n context.frames.shift();\n\n context.mediaPath.pop();\n\n return context.mediaPath.length === 0 ? media.evalTop(context) :\n media.evalNested(context);\n }\n});\n\nexport default Container;\n","import Node from './node';\n\nconst UnicodeDescriptor = function(value) {\n this.value = value;\n}\n\nUnicodeDescriptor.prototype = Object.assign(new Node(), {\n type: 'UnicodeDescriptor'\n})\n\nexport default UnicodeDescriptor;\n","import Node from './node';\nimport Operation from './operation';\nimport Dimension from './dimension';\n\nconst Negative = function(node) {\n this.value = node;\n};\n\nNegative.prototype = Object.assign(new Node(), {\n type: 'Negative',\n\n genCSS(context, output) {\n output.add('-');\n this.value.genCSS(context, output);\n },\n\n eval(context) {\n if (context.isMathOn()) {\n return (new Operation('*', [new Dimension(-1), this.value])).eval(context);\n }\n return new Negative(this.value.eval(context));\n }\n});\n\nexport default Negative;\n","import Node from './node';\nimport Selector from './selector';\n\nconst Extend = function(selector, option, index, currentFileInfo, visibilityInfo) {\n this.selector = selector;\n this.option = option;\n this.object_id = Extend.next_id++;\n this.parent_ids = [this.object_id];\n this._index = index;\n this._fileInfo = currentFileInfo;\n this.copyVisibilityInfo(visibilityInfo);\n this.allowRoot = true;\n\n switch (option) {\n case 'all':\n this.allowBefore = true;\n this.allowAfter = true;\n break;\n default:\n this.allowBefore = false;\n this.allowAfter = false;\n break;\n }\n this.setParent(this.selector, this);\n};\n\nExtend.prototype = Object.assign(new Node(), {\n type: 'Extend',\n\n accept(visitor) {\n this.selector = visitor.visit(this.selector);\n },\n\n eval(context) {\n return new Extend(this.selector.eval(context), this.option, this.getIndex(), this.fileInfo(), this.visibilityInfo());\n },\n\n // remove when Nodes have JSDoc types\n // eslint-disable-next-line no-unused-vars\n clone(context) {\n return new Extend(this.selector, this.option, this.getIndex(), this.fileInfo(), this.visibilityInfo());\n },\n\n // it concatenates (joins) all selectors in selector array\n findSelfSelectors(selectors) {\n let selfElements = [], i, selectorElements;\n\n for (i = 0; i < selectors.length; i++) {\n selectorElements = selectors[i].elements;\n // duplicate the logic in genCSS function inside the selector node.\n // future TODO - move both logics into the selector joiner visitor\n if (i > 0 && selectorElements.length && selectorElements[0].combinator.value === '') {\n selectorElements[0].combinator.value = ' ';\n }\n selfElements = selfElements.concat(selectors[i].elements);\n }\n\n this.selfSelectors = [new Selector(selfElements)];\n this.selfSelectors[0].copyVisibilityInfo(this.visibilityInfo());\n }\n});\n\nExtend.next_id = 0;\nexport default Extend;\n","import Node from './node';\nimport Variable from './variable';\nimport Ruleset from './ruleset';\nimport DetachedRuleset from './detached-ruleset';\nimport LessError from '../less-error';\n\nconst VariableCall = function(variable, index, currentFileInfo) {\n this.variable = variable;\n this._index = index;\n this._fileInfo = currentFileInfo;\n this.allowRoot = true;\n};\n\nVariableCall.prototype = Object.assign(new Node(), {\n type: 'VariableCall',\n\n eval(context) {\n let rules;\n let detachedRuleset = new Variable(this.variable, this.getIndex(), this.fileInfo()).eval(context);\n const error = new LessError({message: `Could not evaluate variable call ${this.variable}`});\n\n if (!detachedRuleset.ruleset) {\n if (detachedRuleset.rules) {\n rules = detachedRuleset;\n }\n else if (Array.isArray(detachedRuleset)) {\n rules = new Ruleset('', detachedRuleset);\n }\n else if (Array.isArray(detachedRuleset.value)) {\n rules = new Ruleset('', detachedRuleset.value);\n }\n else {\n throw error;\n }\n detachedRuleset = new DetachedRuleset(rules);\n }\n\n if (detachedRuleset.ruleset) {\n return detachedRuleset.callEval(context);\n }\n throw error;\n }\n});\n\nexport default VariableCall;\n","import Node from './node';\nimport Variable from './variable';\nimport Ruleset from './ruleset';\nimport Selector from './selector';\n\nconst NamespaceValue = function(ruleCall, lookups, index, fileInfo) {\n this.value = ruleCall;\n this.lookups = lookups;\n this._index = index;\n this._fileInfo = fileInfo;\n};\n\nNamespaceValue.prototype = Object.assign(new Node(), {\n type: 'NamespaceValue',\n\n eval(context) {\n let i, name, rules = this.value.eval(context);\n \n for (i = 0; i < this.lookups.length; i++) {\n name = this.lookups[i];\n\n /**\n * Eval'd DRs return rulesets.\n * Eval'd mixins return rules, so let's make a ruleset if we need it.\n * We need to do this because of late parsing of values\n */\n if (Array.isArray(rules)) {\n rules = new Ruleset([new Selector()], rules);\n }\n\n if (name === '') {\n rules = rules.lastDeclaration();\n }\n else if (name.charAt(0) === '@') {\n if (name.charAt(1) === '@') {\n name = `@${new Variable(name.substr(1)).eval(context).value}`;\n }\n if (rules.variables) {\n rules = rules.variable(name);\n }\n \n if (!rules) {\n throw { type: 'Name',\n message: `variable ${name} not found`,\n filename: this.fileInfo().filename,\n index: this.getIndex() };\n }\n }\n else {\n if (name.substring(0, 2) === '$@') {\n name = `$${new Variable(name.substr(1)).eval(context).value}`;\n }\n else {\n name = name.charAt(0) === '$' ? name : `$${name}`;\n }\n if (rules.properties) {\n rules = rules.property(name);\n }\n \n if (!rules) {\n throw { type: 'Name',\n message: `property \"${name.substr(1)}\" not found`,\n filename: this.fileInfo().filename,\n index: this.getIndex() };\n }\n // Properties are an array of values, since a ruleset can have multiple props.\n // We pick the last one (the \"cascaded\" value)\n rules = rules[rules.length - 1];\n }\n\n if (rules.value) {\n rules = rules.eval(context).value;\n }\n if (rules.ruleset) {\n rules = rules.ruleset.eval(context);\n }\n }\n return rules;\n }\n});\n\nexport default NamespaceValue;\n","import Selector from './selector';\nimport Element from './element';\nimport Ruleset from './ruleset';\nimport Declaration from './declaration';\nimport DetachedRuleset from './detached-ruleset';\nimport Expression from './expression';\nimport contexts from '../contexts';\nimport * as utils from '../utils';\n\nconst Definition = function(name, params, rules, condition, variadic, frames, visibilityInfo) {\n this.name = name || 'anonymous mixin';\n this.selectors = [new Selector([new Element(null, name, false, this._index, this._fileInfo)])];\n this.params = params;\n this.condition = condition;\n this.variadic = variadic;\n this.arity = params.length;\n this.rules = rules;\n this._lookups = {};\n const optionalParameters = [];\n this.required = params.reduce(function (count, p) {\n if (!p.name || (p.name && !p.value)) {\n return count + 1;\n }\n else {\n optionalParameters.push(p.name);\n return count;\n }\n }, 0);\n this.optionalParameters = optionalParameters;\n this.frames = frames;\n this.copyVisibilityInfo(visibilityInfo);\n this.allowRoot = true;\n}\n\nDefinition.prototype = Object.assign(new Ruleset(), {\n type: 'MixinDefinition',\n evalFirst: true,\n\n accept(visitor) {\n if (this.params && this.params.length) {\n this.params = visitor.visitArray(this.params);\n }\n this.rules = visitor.visitArray(this.rules);\n if (this.condition) {\n this.condition = visitor.visit(this.condition);\n }\n },\n\n evalParams(context, mixinEnv, args, evaldArguments) {\n /* jshint boss:true */\n const frame = new Ruleset(null, null);\n\n let varargs;\n let arg;\n const params = utils.copyArray(this.params);\n let i;\n let j;\n let val;\n let name;\n let isNamedFound;\n let argIndex;\n let argsLength = 0;\n\n if (mixinEnv.frames && mixinEnv.frames[0] && mixinEnv.frames[0].functionRegistry) {\n frame.functionRegistry = mixinEnv.frames[0].functionRegistry.inherit();\n }\n mixinEnv = new contexts.Eval(mixinEnv, [frame].concat(mixinEnv.frames));\n\n if (args) {\n args = utils.copyArray(args);\n argsLength = args.length;\n\n for (i = 0; i < argsLength; i++) {\n arg = args[i];\n if (name = (arg && arg.name)) {\n isNamedFound = false;\n for (j = 0; j < params.length; j++) {\n if (!evaldArguments[j] && name === params[j].name) {\n evaldArguments[j] = arg.value.eval(context);\n frame.prependRule(new Declaration(name, arg.value.eval(context)));\n isNamedFound = true;\n break;\n }\n }\n if (isNamedFound) {\n args.splice(i, 1);\n i--;\n continue;\n } else {\n throw { type: 'Runtime', message: `Named argument for ${this.name} ${args[i].name} not found` };\n }\n }\n }\n }\n argIndex = 0;\n for (i = 0; i < params.length; i++) {\n if (evaldArguments[i]) { continue; }\n\n arg = args && args[argIndex];\n\n if (name = params[i].name) {\n if (params[i].variadic) {\n varargs = [];\n for (j = argIndex; j < argsLength; j++) {\n varargs.push(args[j].value.eval(context));\n }\n frame.prependRule(new Declaration(name, new Expression(varargs).eval(context)));\n } else {\n val = arg && arg.value;\n if (val) {\n // This was a mixin call, pass in a detached ruleset of it's eval'd rules\n if (Array.isArray(val)) {\n val = new DetachedRuleset(new Ruleset('', val));\n }\n else {\n val = val.eval(context);\n }\n } else if (params[i].value) {\n val = params[i].value.eval(mixinEnv);\n frame.resetCache();\n } else {\n throw { type: 'Runtime', message: `wrong number of arguments for ${this.name} (${argsLength} for ${this.arity})` };\n }\n\n frame.prependRule(new Declaration(name, val));\n evaldArguments[i] = val;\n }\n }\n\n if (params[i].variadic && args) {\n for (j = argIndex; j < argsLength; j++) {\n evaldArguments[j] = args[j].value.eval(context);\n }\n }\n argIndex++;\n }\n\n return frame;\n },\n\n makeImportant() {\n const rules = !this.rules ? this.rules : this.rules.map(function (r) {\n if (r.makeImportant) {\n return r.makeImportant(true);\n } else {\n return r;\n }\n });\n const result = new Definition(this.name, this.params, rules, this.condition, this.variadic, this.frames);\n return result;\n },\n\n eval(context) {\n return new Definition(this.name, this.params, this.rules, this.condition, this.variadic, this.frames || utils.copyArray(context.frames));\n },\n\n evalCall(context, args, important) {\n const _arguments = [];\n const mixinFrames = this.frames ? this.frames.concat(context.frames) : context.frames;\n const frame = this.evalParams(context, new contexts.Eval(context, mixinFrames), args, _arguments);\n let rules;\n let ruleset;\n\n frame.prependRule(new Declaration('@arguments', new Expression(_arguments).eval(context)));\n\n rules = utils.copyArray(this.rules);\n\n ruleset = new Ruleset(null, rules);\n ruleset.originalRuleset = this;\n ruleset = ruleset.eval(new contexts.Eval(context, [this, frame].concat(mixinFrames)));\n if (important) {\n ruleset = ruleset.makeImportant();\n }\n return ruleset;\n },\n\n matchCondition(args, context) {\n if (this.condition && !this.condition.eval(\n new contexts.Eval(context,\n [this.evalParams(context, /* the parameter variables */\n new contexts.Eval(context, this.frames ? this.frames.concat(context.frames) : context.frames), args, [])]\n .concat(this.frames || []) // the parent namespace/mixin frames\n .concat(context.frames)))) { // the current environment frames\n return false;\n }\n return true;\n },\n\n matchArgs(args, context) {\n const allArgsCnt = (args && args.length) || 0;\n let len;\n const optionalParameters = this.optionalParameters;\n const requiredArgsCnt = !args ? 0 : args.reduce(function (count, p) {\n if (optionalParameters.indexOf(p.name) < 0) {\n return count + 1;\n } else {\n return count;\n }\n }, 0);\n\n if (!this.variadic) {\n if (requiredArgsCnt < this.required) {\n return false;\n }\n if (allArgsCnt > this.params.length) {\n return false;\n }\n } else {\n if (requiredArgsCnt < (this.required - 1)) {\n return false;\n }\n }\n\n // check patterns\n len = Math.min(requiredArgsCnt, this.arity);\n\n for (let i = 0; i < len; i++) {\n if (!this.params[i].name && !this.params[i].variadic) {\n if (args[i].value.eval(context).toCSS() != this.params[i].value.eval(context).toCSS()) {\n return false;\n }\n }\n }\n return true;\n }\n});\n\nexport default Definition;\n","import Node from './node';\nimport Selector from './selector';\nimport MixinDefinition from './mixin-definition';\nimport defaultFunc from '../functions/default';\n\nconst MixinCall = function(elements, args, index, currentFileInfo, important) {\n this.selector = new Selector(elements);\n this.arguments = args || [];\n this._index = index;\n this._fileInfo = currentFileInfo;\n this.important = important;\n this.allowRoot = true;\n this.setParent(this.selector, this);\n};\n\nMixinCall.prototype = Object.assign(new Node(), {\n type: 'MixinCall',\n\n accept(visitor) {\n if (this.selector) {\n this.selector = visitor.visit(this.selector);\n }\n if (this.arguments.length) {\n this.arguments = visitor.visitArray(this.arguments);\n }\n },\n\n eval(context) {\n let mixins;\n let mixin;\n let mixinPath;\n const args = [];\n let arg;\n let argValue;\n const rules = [];\n let match = false;\n let i;\n let m;\n let f;\n let isRecursive;\n let isOneFound;\n const candidates = [];\n let candidate;\n const conditionResult = [];\n let defaultResult;\n const defFalseEitherCase = -1;\n const defNone = 0;\n const defTrue = 1;\n const defFalse = 2;\n let count;\n let originalRuleset;\n let noArgumentsFilter;\n\n this.selector = this.selector.eval(context);\n\n function calcDefGroup(mixin, mixinPath) {\n let f, p, namespace;\n\n for (f = 0; f < 2; f++) {\n conditionResult[f] = true;\n defaultFunc.value(f);\n for (p = 0; p < mixinPath.length && conditionResult[f]; p++) {\n namespace = mixinPath[p];\n if (namespace.matchCondition) {\n conditionResult[f] = conditionResult[f] && namespace.matchCondition(null, context);\n }\n }\n if (mixin.matchCondition) {\n conditionResult[f] = conditionResult[f] && mixin.matchCondition(args, context);\n }\n }\n if (conditionResult[0] || conditionResult[1]) {\n if (conditionResult[0] != conditionResult[1]) {\n return conditionResult[1] ?\n defTrue : defFalse;\n }\n\n return defNone;\n }\n return defFalseEitherCase;\n }\n\n for (i = 0; i < this.arguments.length; i++) {\n arg = this.arguments[i];\n argValue = arg.value.eval(context);\n if (arg.expand && Array.isArray(argValue.value)) {\n argValue = argValue.value;\n for (m = 0; m < argValue.length; m++) {\n args.push({value: argValue[m]});\n }\n } else {\n args.push({name: arg.name, value: argValue});\n }\n }\n\n noArgumentsFilter = function(rule) {return rule.matchArgs(null, context);};\n\n for (i = 0; i < context.frames.length; i++) {\n if ((mixins = context.frames[i].find(this.selector, null, noArgumentsFilter)).length > 0) {\n isOneFound = true;\n\n // To make `default()` function independent of definition order we have two \"subpasses\" here.\n // At first we evaluate each guard *twice* (with `default() == true` and `default() == false`),\n // and build candidate list with corresponding flags. Then, when we know all possible matches,\n // we make a final decision.\n\n for (m = 0; m < mixins.length; m++) {\n mixin = mixins[m].rule;\n mixinPath = mixins[m].path;\n isRecursive = false;\n for (f = 0; f < context.frames.length; f++) {\n if ((!(mixin instanceof MixinDefinition)) && mixin === (context.frames[f].originalRuleset || context.frames[f])) {\n isRecursive = true;\n break;\n }\n }\n if (isRecursive) {\n continue;\n }\n\n if (mixin.matchArgs(args, context)) {\n candidate = {mixin, group: calcDefGroup(mixin, mixinPath)};\n\n if (candidate.group !== defFalseEitherCase) {\n candidates.push(candidate);\n }\n\n match = true;\n }\n }\n\n defaultFunc.reset();\n\n count = [0, 0, 0];\n for (m = 0; m < candidates.length; m++) {\n count[candidates[m].group]++;\n }\n\n if (count[defNone] > 0) {\n defaultResult = defFalse;\n } else {\n defaultResult = defTrue;\n if ((count[defTrue] + count[defFalse]) > 1) {\n throw { type: 'Runtime',\n message: `Ambiguous use of \\`default()\\` found when matching for \\`${this.format(args)}\\``,\n index: this.getIndex(), filename: this.fileInfo().filename };\n }\n }\n\n for (m = 0; m < candidates.length; m++) {\n candidate = candidates[m].group;\n if ((candidate === defNone) || (candidate === defaultResult)) {\n try {\n mixin = candidates[m].mixin;\n if (!(mixin instanceof MixinDefinition)) {\n originalRuleset = mixin.originalRuleset || mixin;\n mixin = new MixinDefinition('', [], mixin.rules, null, false, null, originalRuleset.visibilityInfo());\n mixin.originalRuleset = originalRuleset;\n }\n const newRules = mixin.evalCall(context, args, this.important).rules;\n this._setVisibilityToReplacement(newRules);\n Array.prototype.push.apply(rules, newRules);\n } catch (e) {\n throw { message: e.message, index: this.getIndex(), filename: this.fileInfo().filename, stack: e.stack };\n }\n }\n }\n\n if (match) {\n return rules;\n }\n }\n }\n if (isOneFound) {\n throw { type: 'Runtime',\n message: `No matching definition was found for \\`${this.format(args)}\\``,\n index: this.getIndex(), filename: this.fileInfo().filename };\n } else {\n throw { type: 'Name',\n message: `${this.selector.toCSS().trim()} is undefined`,\n index: this.getIndex(), filename: this.fileInfo().filename };\n }\n },\n\n _setVisibilityToReplacement(replacement) {\n let i, rule;\n if (this.blocksVisibility()) {\n for (i = 0; i < replacement.length; i++) {\n rule = replacement[i];\n rule.addVisibilityBlock();\n }\n }\n },\n\n format(args) {\n return `${this.selector.toCSS().trim()}(${args ? args.map(function (a) {\n let argValue = '';\n if (a.name) {\n argValue += `${a.name}:`;\n }\n if (a.value.toCSS) {\n argValue += a.value.toCSS();\n } else {\n argValue += '???';\n }\n return argValue;\n }).join(', ') : ''})`;\n }\n});\n\nexport default MixinCall;\n","import Node from './node';\nimport Color from './color';\nimport AtRule from './atrule';\nimport DetachedRuleset from './detached-ruleset';\nimport Operation from './operation';\nimport Dimension from './dimension';\nimport Unit from './unit';\nimport Keyword from './keyword';\nimport Variable from './variable';\nimport Property from './property';\nimport Ruleset from './ruleset';\nimport Element from './element';\nimport Attribute from './attribute';\nimport Combinator from './combinator';\nimport Selector from './selector';\nimport Quoted from './quoted';\nimport Expression from './expression';\nimport Declaration from './declaration';\nimport Call from './call';\nimport URL from './url';\nimport Import from './import';\nimport Comment from './comment';\nimport Anonymous from './anonymous';\nimport Value from './value';\nimport JavaScript from './javascript';\nimport Assignment from './assignment';\nimport Condition from './condition';\nimport QueryInParens from './query-in-parens';\nimport Paren from './paren';\nimport Media from './media';\nimport Container from './container';\nimport UnicodeDescriptor from './unicode-descriptor';\nimport Negative from './negative';\nimport Extend from './extend';\nimport VariableCall from './variable-call';\nimport NamespaceValue from './namespace-value';\n\n// mixins\nimport MixinCall from './mixin-call';\nimport MixinDefinition from './mixin-definition';\n\nexport default {\n Node, Color, AtRule, DetachedRuleset, Operation,\n Dimension, Unit, Keyword, Variable, Property,\n Ruleset, Element, Attribute, Combinator, Selector,\n Quoted, Expression, Declaration, Call, URL, Import,\n Comment, Anonymous, Value, JavaScript, Assignment,\n Condition, Paren, Media, Container, QueryInParens, \n UnicodeDescriptor, Negative, Extend, VariableCall, \n NamespaceValue,\n mixin: {\n Call: MixinCall,\n Definition: MixinDefinition\n }\n};","class AbstractFileManager {\n getPath(filename) {\n let j = filename.lastIndexOf('?');\n if (j > 0) {\n filename = filename.slice(0, j);\n }\n j = filename.lastIndexOf('/');\n if (j < 0) {\n j = filename.lastIndexOf('\\\\');\n }\n if (j < 0) {\n return '';\n }\n return filename.slice(0, j + 1);\n }\n\n tryAppendExtension(path, ext) {\n return /(\\.[a-z]*$)|([?;].*)$/.test(path) ? path : path + ext;\n }\n\n tryAppendLessExtension(path) {\n return this.tryAppendExtension(path, '.less');\n }\n\n supportsSync() {\n return false;\n }\n\n alwaysMakePathsAbsolute() {\n return false;\n }\n\n isPathAbsolute(filename) {\n return (/^(?:[a-z-]+:|\\/|\\\\|#)/i).test(filename);\n }\n\n // TODO: pull out / replace?\n join(basePath, laterPath) {\n if (!basePath) {\n return laterPath;\n }\n return basePath + laterPath;\n }\n\n pathDiff(url, baseUrl) {\n // diff between two paths to create a relative path\n\n const urlParts = this.extractUrlParts(url);\n\n const baseUrlParts = this.extractUrlParts(baseUrl);\n let i;\n let max;\n let urlDirectories;\n let baseUrlDirectories;\n let diff = '';\n if (urlParts.hostPart !== baseUrlParts.hostPart) {\n return '';\n }\n max = Math.max(baseUrlParts.directories.length, urlParts.directories.length);\n for (i = 0; i < max; i++) {\n if (baseUrlParts.directories[i] !== urlParts.directories[i]) { break; }\n }\n baseUrlDirectories = baseUrlParts.directories.slice(i);\n urlDirectories = urlParts.directories.slice(i);\n for (i = 0; i < baseUrlDirectories.length - 1; i++) {\n diff += '../';\n }\n for (i = 0; i < urlDirectories.length - 1; i++) {\n diff += `${urlDirectories[i]}/`;\n }\n return diff;\n }\n\n /**\n * Helper function, not part of API.\n * This should be replaceable by newer Node / Browser APIs\n * \n * @param {string} url \n * @param {string} baseUrl\n */\n extractUrlParts(url, baseUrl) {\n // urlParts[1] = protocol://hostname/ OR /\n // urlParts[2] = / if path relative to host base\n // urlParts[3] = directories\n // urlParts[4] = filename\n // urlParts[5] = parameters\n\n const urlPartsRegex = /^((?:[a-z-]+:)?\\/{2}(?:[^/?#]*\\/)|([/\\\\]))?((?:[^/\\\\?#]*[/\\\\])*)([^/\\\\?#]*)([#?].*)?$/i;\n\n const urlParts = url.match(urlPartsRegex);\n const returner = {};\n let rawDirectories = [];\n const directories = [];\n let i;\n let baseUrlParts;\n\n if (!urlParts) {\n throw new Error(`Could not parse sheet href - '${url}'`);\n }\n\n // Stylesheets in IE don't always return the full path\n if (baseUrl && (!urlParts[1] || urlParts[2])) {\n baseUrlParts = baseUrl.match(urlPartsRegex);\n if (!baseUrlParts) {\n throw new Error(`Could not parse page url - '${baseUrl}'`);\n }\n urlParts[1] = urlParts[1] || baseUrlParts[1] || '';\n if (!urlParts[2]) {\n urlParts[3] = baseUrlParts[3] + urlParts[3];\n }\n }\n\n if (urlParts[3]) {\n rawDirectories = urlParts[3].replace(/\\\\/g, '/').split('/');\n\n // collapse '..' and skip '.'\n for (i = 0; i < rawDirectories.length; i++) {\n\n if (rawDirectories[i] === '..') {\n directories.pop();\n }\n else if (rawDirectories[i] !== '.') {\n directories.push(rawDirectories[i]);\n }\n \n }\n }\n\n returner.hostPart = urlParts[1];\n returner.directories = directories;\n returner.rawPath = (urlParts[1] || '') + rawDirectories.join('/');\n returner.path = (urlParts[1] || '') + directories.join('/');\n returner.filename = urlParts[4];\n returner.fileUrl = returner.path + (urlParts[4] || '');\n returner.url = returner.fileUrl + (urlParts[5] || '');\n return returner;\n }\n}\n\nexport default AbstractFileManager;\n","import functionRegistry from '../functions/function-registry';\nimport LessError from '../less-error';\n\nclass AbstractPluginLoader {\n constructor() {\n // Implemented by Node.js plugin loader\n this.require = function() {\n return null;\n }\n }\n\n evalPlugin(contents, context, imports, pluginOptions, fileInfo) {\n\n let loader, registry, pluginObj, localModule, pluginManager, filename, result;\n\n pluginManager = context.pluginManager;\n\n if (fileInfo) {\n if (typeof fileInfo === 'string') {\n filename = fileInfo;\n }\n else {\n filename = fileInfo.filename;\n }\n }\n const shortname = (new this.less.FileManager()).extractUrlParts(filename).filename;\n\n if (filename) {\n pluginObj = pluginManager.get(filename);\n\n if (pluginObj) {\n result = this.trySetOptions(pluginObj, filename, shortname, pluginOptions);\n if (result) {\n return result;\n }\n try {\n if (pluginObj.use) {\n pluginObj.use.call(this.context, pluginObj);\n }\n }\n catch (e) {\n e.message = e.message || 'Error during @plugin call';\n return new LessError(e, imports, filename);\n }\n return pluginObj;\n }\n }\n localModule = {\n exports: {},\n pluginManager,\n fileInfo\n };\n registry = functionRegistry.create();\n\n const registerPlugin = function(obj) {\n pluginObj = obj;\n };\n\n try {\n loader = new Function('module', 'require', 'registerPlugin', 'functions', 'tree', 'less', 'fileInfo', contents);\n loader(localModule, this.require(filename), registerPlugin, registry, this.less.tree, this.less, fileInfo);\n }\n catch (e) {\n return new LessError(e, imports, filename);\n }\n\n if (!pluginObj) {\n pluginObj = localModule.exports;\n }\n pluginObj = this.validatePlugin(pluginObj, filename, shortname);\n\n if (pluginObj instanceof LessError) {\n return pluginObj;\n }\n\n if (pluginObj) {\n pluginObj.imports = imports;\n pluginObj.filename = filename;\n\n // For < 3.x (or unspecified minVersion) - setOptions() before install()\n if (!pluginObj.minVersion || this.compareVersion('3.0.0', pluginObj.minVersion) < 0) {\n result = this.trySetOptions(pluginObj, filename, shortname, pluginOptions);\n\n if (result) {\n return result;\n }\n }\n\n // Run on first load\n pluginManager.addPlugin(pluginObj, fileInfo.filename, registry);\n pluginObj.functions = registry.getLocalFunctions();\n\n // Need to call setOptions again because the pluginObj might have functions\n result = this.trySetOptions(pluginObj, filename, shortname, pluginOptions);\n if (result) {\n return result;\n }\n\n // Run every @plugin call\n try {\n if (pluginObj.use) {\n pluginObj.use.call(this.context, pluginObj);\n }\n }\n catch (e) {\n e.message = e.message || 'Error during @plugin call';\n return new LessError(e, imports, filename);\n }\n\n }\n else {\n return new LessError({ message: 'Not a valid plugin' }, imports, filename);\n }\n\n return pluginObj;\n\n }\n\n trySetOptions(plugin, filename, name, options) {\n if (options && !plugin.setOptions) {\n return new LessError({\n message: `Options have been provided but the plugin ${name} does not support any options.`\n });\n }\n try {\n plugin.setOptions && plugin.setOptions(options);\n }\n catch (e) {\n return new LessError(e);\n }\n }\n\n validatePlugin(plugin, filename, name) {\n if (plugin) {\n // support plugins being a function\n // so that the plugin can be more usable programmatically\n if (typeof plugin === 'function') {\n plugin = new plugin();\n }\n\n if (plugin.minVersion) {\n if (this.compareVersion(plugin.minVersion, this.less.version) < 0) {\n return new LessError({\n message: `Plugin ${name} requires version ${this.versionToString(plugin.minVersion)}`\n });\n }\n }\n return plugin;\n }\n return null;\n }\n\n compareVersion(aVersion, bVersion) {\n if (typeof aVersion === 'string') {\n aVersion = aVersion.match(/^(\\d+)\\.?(\\d+)?\\.?(\\d+)?/);\n aVersion.shift();\n }\n for (let i = 0; i < aVersion.length; i++) {\n if (aVersion[i] !== bVersion[i]) {\n return parseInt(aVersion[i]) > parseInt(bVersion[i]) ? -1 : 1;\n }\n }\n return 0;\n }\n\n versionToString(version) {\n let versionString = '';\n for (let i = 0; i < version.length; i++) {\n versionString += (versionString ? '.' : '') + version[i];\n }\n return versionString;\n }\n\n printUsage(plugins) {\n for (let i = 0; i < plugins.length; i++) {\n const plugin = plugins[i];\n if (plugin.printUsage) {\n plugin.printUsage();\n }\n }\n }\n}\n\nexport default AbstractPluginLoader;\n\n","import Anonymous from '../tree/anonymous';\nimport Keyword from '../tree/keyword';\n\nfunction boolean(condition) {\n return condition ? Keyword.True : Keyword.False;\n}\n\n/**\n * Functions with evalArgs set to false are sent context\n * as the first argument.\n */\nfunction If(context, condition, trueValue, falseValue) {\n return condition.eval(context) ? trueValue.eval(context)\n : (falseValue ? falseValue.eval(context) : new Anonymous);\n}\nIf.evalArgs = false;\n\nfunction isdefined(context, variable) {\n try {\n variable.eval(context);\n return Keyword.True;\n } catch (e) {\n return Keyword.False;\n }\n}\n\nisdefined.evalArgs = false;\n\nexport default { isdefined, boolean, 'if': If };\n","import Dimension from '../tree/dimension';\nimport Color from '../tree/color';\nimport Quoted from '../tree/quoted';\nimport Anonymous from '../tree/anonymous';\nimport Expression from '../tree/expression';\nimport Operation from '../tree/operation';\nlet colorFunctions;\n\nfunction clamp(val) {\n return Math.min(1, Math.max(0, val));\n}\nfunction hsla(origColor, hsl) {\n const color = colorFunctions.hsla(hsl.h, hsl.s, hsl.l, hsl.a);\n if (color) {\n if (origColor.value && \n /^(rgb|hsl)/.test(origColor.value)) {\n color.value = origColor.value;\n } else {\n color.value = 'rgb';\n }\n return color;\n }\n}\nfunction toHSL(color) {\n if (color.toHSL) {\n return color.toHSL();\n } else {\n throw new Error('Argument cannot be evaluated to a color');\n }\n}\n\nfunction toHSV(color) {\n if (color.toHSV) {\n return color.toHSV();\n } else {\n throw new Error('Argument cannot be evaluated to a color');\n }\n}\n\nfunction number(n) {\n if (n instanceof Dimension) {\n return parseFloat(n.unit.is('%') ? n.value / 100 : n.value);\n } else if (typeof n === 'number') {\n return n;\n } else {\n throw {\n type: 'Argument',\n message: 'color functions take numbers as parameters'\n };\n }\n}\nfunction scaled(n, size) {\n if (n instanceof Dimension && n.unit.is('%')) {\n return parseFloat(n.value * size / 100);\n } else {\n return number(n);\n }\n}\ncolorFunctions = {\n rgb: function (r, g, b) {\n let a = 1\n /**\n * Comma-less syntax\n * e.g. rgb(0 128 255 / 50%)\n */\n if (r instanceof Expression) {\n const val = r.value\n r = val[0]\n g = val[1]\n b = val[2]\n /** \n * @todo - should this be normalized in\n * function caller? Or parsed differently?\n */\n if (b instanceof Operation) {\n const op = b\n b = op.operands[0]\n a = op.operands[1]\n }\n }\n const color = colorFunctions.rgba(r, g, b, a);\n if (color) {\n color.value = 'rgb';\n return color;\n }\n },\n rgba: function (r, g, b, a) {\n try {\n if (r instanceof Color) {\n if (g) {\n a = number(g);\n } else {\n a = r.alpha;\n }\n return new Color(r.rgb, a, 'rgba');\n }\n const rgb = [r, g, b].map(c => scaled(c, 255));\n a = number(a);\n return new Color(rgb, a, 'rgba');\n }\n catch (e) {}\n },\n hsl: function (h, s, l) {\n let a = 1\n if (h instanceof Expression) {\n const val = h.value\n h = val[0]\n s = val[1]\n l = val[2]\n\n if (l instanceof Operation) {\n const op = l\n l = op.operands[0]\n a = op.operands[1]\n }\n }\n const color = colorFunctions.hsla(h, s, l, a);\n if (color) {\n color.value = 'hsl';\n return color;\n }\n },\n hsla: function (h, s, l, a) {\n let m1;\n let m2;\n\n function hue(h) {\n h = h < 0 ? h + 1 : (h > 1 ? h - 1 : h);\n if (h * 6 < 1) {\n return m1 + (m2 - m1) * h * 6;\n }\n else if (h * 2 < 1) {\n return m2;\n }\n else if (h * 3 < 2) {\n return m1 + (m2 - m1) * (2 / 3 - h) * 6;\n }\n else {\n return m1;\n }\n }\n\n try {\n if (h instanceof Color) {\n if (s) {\n a = number(s);\n } else {\n a = h.alpha;\n }\n return new Color(h.rgb, a, 'hsla');\n }\n\n h = (number(h) % 360) / 360;\n s = clamp(number(s));l = clamp(number(l));a = clamp(number(a));\n\n m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\n m1 = l * 2 - m2;\n\n const rgb = [\n hue(h + 1 / 3) * 255,\n hue(h) * 255,\n hue(h - 1 / 3) * 255\n ];\n a = number(a);\n return new Color(rgb, a, 'hsla');\n }\n catch (e) {}\n },\n\n hsv: function(h, s, v) {\n return colorFunctions.hsva(h, s, v, 1.0);\n },\n\n hsva: function(h, s, v, a) {\n h = ((number(h) % 360) / 360) * 360;\n s = number(s);v = number(v);a = number(a);\n\n let i;\n let f;\n i = Math.floor((h / 60) % 6);\n f = (h / 60) - i;\n\n const vs = [v,\n v * (1 - s),\n v * (1 - f * s),\n v * (1 - (1 - f) * s)];\n const perm = [[0, 3, 1],\n [2, 0, 1],\n [1, 0, 3],\n [1, 2, 0],\n [3, 1, 0],\n [0, 1, 2]];\n\n return colorFunctions.rgba(vs[perm[i][0]] * 255,\n vs[perm[i][1]] * 255,\n vs[perm[i][2]] * 255,\n a);\n },\n\n hue: function (color) {\n return new Dimension(toHSL(color).h);\n },\n saturation: function (color) {\n return new Dimension(toHSL(color).s * 100, '%');\n },\n lightness: function (color) {\n return new Dimension(toHSL(color).l * 100, '%');\n },\n hsvhue: function(color) {\n return new Dimension(toHSV(color).h);\n },\n hsvsaturation: function (color) {\n return new Dimension(toHSV(color).s * 100, '%');\n },\n hsvvalue: function (color) {\n return new Dimension(toHSV(color).v * 100, '%');\n },\n red: function (color) {\n return new Dimension(color.rgb[0]);\n },\n green: function (color) {\n return new Dimension(color.rgb[1]);\n },\n blue: function (color) {\n return new Dimension(color.rgb[2]);\n },\n alpha: function (color) {\n return new Dimension(toHSL(color).a);\n },\n luma: function (color) {\n return new Dimension(color.luma() * color.alpha * 100, '%');\n },\n luminance: function (color) {\n const luminance =\n (0.2126 * color.rgb[0] / 255) +\n (0.7152 * color.rgb[1] / 255) +\n (0.0722 * color.rgb[2] / 255);\n\n return new Dimension(luminance * color.alpha * 100, '%');\n },\n saturate: function (color, amount, method) {\n // filter: saturate(3.2);\n // should be kept as is, so check for color\n if (!color.rgb) {\n return null;\n }\n const hsl = toHSL(color);\n\n if (typeof method !== 'undefined' && method.value === 'relative') {\n hsl.s += hsl.s * amount.value / 100;\n }\n else {\n hsl.s += amount.value / 100;\n }\n hsl.s = clamp(hsl.s);\n return hsla(color, hsl);\n },\n desaturate: function (color, amount, method) {\n const hsl = toHSL(color);\n\n if (typeof method !== 'undefined' && method.value === 'relative') {\n hsl.s -= hsl.s * amount.value / 100;\n }\n else {\n hsl.s -= amount.value / 100;\n }\n hsl.s = clamp(hsl.s);\n return hsla(color, hsl);\n },\n lighten: function (color, amount, method) {\n const hsl = toHSL(color);\n\n if (typeof method !== 'undefined' && method.value === 'relative') {\n hsl.l += hsl.l * amount.value / 100;\n }\n else {\n hsl.l += amount.value / 100;\n }\n hsl.l = clamp(hsl.l);\n return hsla(color, hsl);\n },\n darken: function (color, amount, method) {\n const hsl = toHSL(color);\n\n if (typeof method !== 'undefined' && method.value === 'relative') {\n hsl.l -= hsl.l * amount.value / 100;\n }\n else {\n hsl.l -= amount.value / 100;\n }\n hsl.l = clamp(hsl.l);\n return hsla(color, hsl);\n },\n fadein: function (color, amount, method) {\n const hsl = toHSL(color);\n\n if (typeof method !== 'undefined' && method.value === 'relative') {\n hsl.a += hsl.a * amount.value / 100;\n }\n else {\n hsl.a += amount.value / 100;\n }\n hsl.a = clamp(hsl.a);\n return hsla(color, hsl);\n },\n fadeout: function (color, amount, method) {\n const hsl = toHSL(color);\n\n if (typeof method !== 'undefined' && method.value === 'relative') {\n hsl.a -= hsl.a * amount.value / 100;\n }\n else {\n hsl.a -= amount.value / 100;\n }\n hsl.a = clamp(hsl.a);\n return hsla(color, hsl);\n },\n fade: function (color, amount) {\n const hsl = toHSL(color);\n\n hsl.a = amount.value / 100;\n hsl.a = clamp(hsl.a);\n return hsla(color, hsl);\n },\n spin: function (color, amount) {\n const hsl = toHSL(color);\n const hue = (hsl.h + amount.value) % 360;\n\n hsl.h = hue < 0 ? 360 + hue : hue;\n\n return hsla(color, hsl);\n },\n //\n // Copyright (c) 2006-2009 Hampton Catlin, Natalie Weizenbaum, and Chris Eppstein\n // http://sass-lang.com\n //\n mix: function (color1, color2, weight) {\n if (!weight) {\n weight = new Dimension(50);\n }\n const p = weight.value / 100.0;\n const w = p * 2 - 1;\n const a = toHSL(color1).a - toHSL(color2).a;\n\n const w1 = (((w * a == -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n const w2 = 1 - w1;\n\n const rgb = [color1.rgb[0] * w1 + color2.rgb[0] * w2,\n color1.rgb[1] * w1 + color2.rgb[1] * w2,\n color1.rgb[2] * w1 + color2.rgb[2] * w2];\n\n const alpha = color1.alpha * p + color2.alpha * (1 - p);\n\n return new Color(rgb, alpha);\n },\n greyscale: function (color) {\n return colorFunctions.desaturate(color, new Dimension(100));\n },\n contrast: function (color, dark, light, threshold) {\n // filter: contrast(3.2);\n // should be kept as is, so check for color\n if (!color.rgb) {\n return null;\n }\n if (typeof light === 'undefined') {\n light = colorFunctions.rgba(255, 255, 255, 1.0);\n }\n if (typeof dark === 'undefined') {\n dark = colorFunctions.rgba(0, 0, 0, 1.0);\n }\n // Figure out which is actually light and dark:\n if (dark.luma() > light.luma()) {\n const t = light;\n light = dark;\n dark = t;\n }\n if (typeof threshold === 'undefined') {\n threshold = 0.43;\n } else {\n threshold = number(threshold);\n }\n if (color.luma() < threshold) {\n return light;\n } else {\n return dark;\n }\n },\n // Changes made in 2.7.0 - Reverted in 3.0.0\n // contrast: function (color, color1, color2, threshold) {\n // // Return which of `color1` and `color2` has the greatest contrast with `color`\n // // according to the standard WCAG contrast ratio calculation.\n // // http://www.w3.org/TR/WCAG20/#contrast-ratiodef\n // // The threshold param is no longer used, in line with SASS.\n // // filter: contrast(3.2);\n // // should be kept as is, so check for color\n // if (!color.rgb) {\n // return null;\n // }\n // if (typeof color1 === 'undefined') {\n // color1 = colorFunctions.rgba(0, 0, 0, 1.0);\n // }\n // if (typeof color2 === 'undefined') {\n // color2 = colorFunctions.rgba(255, 255, 255, 1.0);\n // }\n // var contrast1, contrast2;\n // var luma = color.luma();\n // var luma1 = color1.luma();\n // var luma2 = color2.luma();\n // // Calculate contrast ratios for each color\n // if (luma > luma1) {\n // contrast1 = (luma + 0.05) / (luma1 + 0.05);\n // } else {\n // contrast1 = (luma1 + 0.05) / (luma + 0.05);\n // }\n // if (luma > luma2) {\n // contrast2 = (luma + 0.05) / (luma2 + 0.05);\n // } else {\n // contrast2 = (luma2 + 0.05) / (luma + 0.05);\n // }\n // if (contrast1 > contrast2) {\n // return color1;\n // } else {\n // return color2;\n // }\n // },\n argb: function (color) {\n return new Anonymous(color.toARGB());\n },\n color: function(c) {\n if ((c instanceof Quoted) &&\n (/^#([A-Fa-f0-9]{8}|[A-Fa-f0-9]{6}|[A-Fa-f0-9]{3,4})$/i.test(c.value))) {\n const val = c.value.slice(1);\n return new Color(val, undefined, `#${val}`);\n }\n if ((c instanceof Color) || (c = Color.fromKeyword(c.value))) {\n c.value = undefined;\n return c;\n }\n throw {\n type: 'Argument',\n message: 'argument must be a color keyword or 3|4|6|8 digit hex e.g. #FFF'\n };\n },\n tint: function(color, amount) {\n return colorFunctions.mix(colorFunctions.rgb(255, 255, 255), color, amount);\n },\n shade: function(color, amount) {\n return colorFunctions.mix(colorFunctions.rgb(0, 0, 0), color, amount);\n }\n};\n\nexport default colorFunctions;\n","import Color from '../tree/color';\n\n// Color Blending\n// ref: http://www.w3.org/TR/compositing-1\n\nfunction colorBlend(mode, color1, color2) {\n const ab = color1.alpha; // result\n\n let // backdrop\n cb;\n\n const as = color2.alpha;\n\n let // source\n cs;\n\n let ar;\n let cr;\n const r = [];\n\n ar = as + ab * (1 - as);\n for (let i = 0; i < 3; i++) {\n cb = color1.rgb[i] / 255;\n cs = color2.rgb[i] / 255;\n cr = mode(cb, cs);\n if (ar) {\n cr = (as * cs + ab * (cb -\n as * (cb + cs - cr))) / ar;\n }\n r[i] = cr * 255;\n }\n\n return new Color(r, ar);\n}\n\nconst colorBlendModeFunctions = {\n multiply: function(cb, cs) {\n return cb * cs;\n },\n screen: function(cb, cs) {\n return cb + cs - cb * cs;\n },\n overlay: function(cb, cs) {\n cb *= 2;\n return (cb <= 1) ?\n colorBlendModeFunctions.multiply(cb, cs) :\n colorBlendModeFunctions.screen(cb - 1, cs);\n },\n softlight: function(cb, cs) {\n let d = 1;\n let e = cb;\n if (cs > 0.5) {\n e = 1;\n d = (cb > 0.25) ? Math.sqrt(cb)\n : ((16 * cb - 12) * cb + 4) * cb;\n }\n return cb - (1 - 2 * cs) * e * (d - cb);\n },\n hardlight: function(cb, cs) {\n return colorBlendModeFunctions.overlay(cs, cb);\n },\n difference: function(cb, cs) {\n return Math.abs(cb - cs);\n },\n exclusion: function(cb, cs) {\n return cb + cs - 2 * cb * cs;\n },\n\n // non-w3c functions:\n average: function(cb, cs) {\n return (cb + cs) / 2;\n },\n negation: function(cb, cs) {\n return 1 - Math.abs(cb + cs - 1);\n }\n};\n\nfor (const f in colorBlendModeFunctions) {\n // eslint-disable-next-line no-prototype-builtins\n if (colorBlendModeFunctions.hasOwnProperty(f)) {\n colorBlend[f] = colorBlend.bind(null, colorBlendModeFunctions[f]);\n }\n}\n\nexport default colorBlend;\n","import Quoted from '../tree/quoted';\nimport URL from '../tree/url';\nimport * as utils from '../utils';\nimport logger from '../logger';\n\nexport default environment => {\n \n const fallback = (functionThis, node) => new URL(node, functionThis.index, functionThis.currentFileInfo).eval(functionThis.context); \n\n return { 'data-uri': function(mimetypeNode, filePathNode) {\n\n if (!filePathNode) {\n filePathNode = mimetypeNode;\n mimetypeNode = null;\n }\n\n let mimetype = mimetypeNode && mimetypeNode.value;\n let filePath = filePathNode.value;\n const currentFileInfo = this.currentFileInfo;\n const currentDirectory = currentFileInfo.rewriteUrls ?\n currentFileInfo.currentDirectory : currentFileInfo.entryPath;\n\n const fragmentStart = filePath.indexOf('#');\n let fragment = '';\n if (fragmentStart !== -1) {\n fragment = filePath.slice(fragmentStart);\n filePath = filePath.slice(0, fragmentStart);\n }\n const context = utils.clone(this.context);\n context.rawBuffer = true;\n\n const fileManager = environment.getFileManager(filePath, currentDirectory, context, environment, true);\n\n if (!fileManager) {\n return fallback(this, filePathNode);\n }\n\n let useBase64 = false;\n\n // detect the mimetype if not given\n if (!mimetypeNode) {\n\n mimetype = environment.mimeLookup(filePath);\n\n if (mimetype === 'image/svg+xml') {\n useBase64 = false;\n } else {\n // use base 64 unless it's an ASCII or UTF-8 format\n const charset = environment.charsetLookup(mimetype);\n useBase64 = ['US-ASCII', 'UTF-8'].indexOf(charset) < 0;\n }\n if (useBase64) { mimetype += ';base64'; }\n }\n else {\n useBase64 = /;base64$/.test(mimetype);\n }\n\n const fileSync = fileManager.loadFileSync(filePath, currentDirectory, context, environment);\n if (!fileSync.contents) {\n logger.warn(`Skipped data-uri embedding of ${filePath} because file not found`);\n return fallback(this, filePathNode || mimetypeNode);\n }\n let buf = fileSync.contents;\n if (useBase64 && !environment.encodeBase64) {\n return fallback(this, filePathNode);\n }\n\n buf = useBase64 ? environment.encodeBase64(buf) : encodeURIComponent(buf);\n\n const uri = `data:${mimetype},${buf}${fragment}`;\n\n return new URL(new Quoted(`\"${uri}\"`, uri, false, this.index, this.currentFileInfo), this.index, this.currentFileInfo);\n }};\n};\n","import Comment from '../tree/comment';\nimport Node from '../tree/node';\nimport Dimension from '../tree/dimension';\nimport Declaration from '../tree/declaration';\nimport Expression from '../tree/expression';\nimport Ruleset from '../tree/ruleset';\nimport Selector from '../tree/selector';\nimport Element from '../tree/element';\nimport Quote from '../tree/quoted';\nimport Value from '../tree/value';\n\nconst getItemsFromNode = node => {\n // handle non-array values as an array of length 1\n // return 'undefined' if index is invalid\n const items = Array.isArray(node.value) ?\n node.value : Array(node);\n\n return items;\n};\n\nexport default {\n _SELF: function(n) {\n return n;\n },\n '~': function(...expr) {\n if (expr.length === 1) {\n return expr[0];\n }\n return new Value(expr);\n },\n extract: function(values, index) {\n // (1-based index)\n index = index.value - 1;\n\n return getItemsFromNode(values)[index];\n },\n length: function(values) {\n return new Dimension(getItemsFromNode(values).length);\n },\n /**\n * Creates a Less list of incremental values.\n * Modeled after Lodash's range function, also exists natively in PHP\n * \n * @param {Dimension} [start=1]\n * @param {Dimension} end - e.g. 10 or 10px - unit is added to output\n * @param {Dimension} [step=1] \n */\n range: function(start, end, step) {\n let from;\n let to;\n let stepValue = 1;\n const list = [];\n if (end) {\n to = end;\n from = start.value;\n if (step) {\n stepValue = step.value;\n }\n }\n else {\n from = 1;\n to = start;\n }\n\n for (let i = from; i <= to.value; i += stepValue) {\n list.push(new Dimension(i, to.unit));\n }\n\n return new Expression(list);\n },\n each: function(list, rs) {\n const rules = [];\n let newRules;\n let iterator;\n\n const tryEval = val => {\n if (val instanceof Node) {\n return val.eval(this.context);\n }\n return val;\n };\n\n if (list.value && !(list instanceof Quote)) {\n if (Array.isArray(list.value)) {\n iterator = list.value.map(tryEval);\n } else {\n iterator = [tryEval(list.value)];\n }\n } else if (list.ruleset) {\n iterator = tryEval(list.ruleset).rules;\n } else if (list.rules) {\n iterator = list.rules.map(tryEval);\n } else if (Array.isArray(list)) {\n iterator = list.map(tryEval);\n } else {\n iterator = [tryEval(list)];\n }\n\n let valueName = '@value';\n let keyName = '@key';\n let indexName = '@index';\n\n if (rs.params) {\n valueName = rs.params[0] && rs.params[0].name;\n keyName = rs.params[1] && rs.params[1].name;\n indexName = rs.params[2] && rs.params[2].name;\n rs = rs.rules;\n } else {\n rs = rs.ruleset;\n }\n\n for (let i = 0; i < iterator.length; i++) {\n let key;\n let value;\n const item = iterator[i];\n if (item instanceof Declaration) {\n key = typeof item.name === 'string' ? item.name : item.name[0].value;\n value = item.value;\n } else {\n key = new Dimension(i + 1);\n value = item;\n }\n\n if (item instanceof Comment) {\n continue;\n }\n\n newRules = rs.rules.slice(0);\n if (valueName) {\n newRules.push(new Declaration(valueName,\n value,\n false, false, this.index, this.currentFileInfo));\n }\n if (indexName) {\n newRules.push(new Declaration(indexName,\n new Dimension(i + 1),\n false, false, this.index, this.currentFileInfo));\n }\n if (keyName) {\n newRules.push(new Declaration(keyName,\n key,\n false, false, this.index, this.currentFileInfo));\n }\n\n rules.push(new Ruleset([ new(Selector)([ new Element('', '&') ]) ],\n newRules,\n rs.strictImports,\n rs.visibilityInfo()\n ));\n }\n\n return new Ruleset([ new(Selector)([ new Element('', '&') ]) ],\n rules,\n rs.strictImports,\n rs.visibilityInfo()\n ).eval(this.context);\n }\n};\n","import Dimension from '../tree/dimension';\n\nconst MathHelper = (fn, unit, n) => {\n if (!(n instanceof Dimension)) {\n throw { type: 'Argument', message: 'argument must be a number' };\n }\n if (unit === null) {\n unit = n.unit;\n } else {\n n = n.unify();\n }\n return new Dimension(fn(parseFloat(n.value)), unit);\n};\n\nexport default MathHelper;","import mathHelper from './math-helper.js';\n\nconst mathFunctions = {\n // name, unit\n ceil: null,\n floor: null,\n sqrt: null,\n abs: null,\n tan: '',\n sin: '',\n cos: '',\n atan: 'rad',\n asin: 'rad',\n acos: 'rad'\n};\n\nfor (const f in mathFunctions) {\n // eslint-disable-next-line no-prototype-builtins\n if (mathFunctions.hasOwnProperty(f)) {\n mathFunctions[f] = mathHelper.bind(null, Math[f], mathFunctions[f]);\n }\n}\n\nmathFunctions.round = (n, f) => {\n const fraction = typeof f === 'undefined' ? 0 : f.value;\n return mathHelper(num => num.toFixed(fraction), null, n);\n};\n\nexport default mathFunctions;\n","import Dimension from '../tree/dimension';\nimport Anonymous from '../tree/anonymous';\nimport mathHelper from './math-helper.js';\n\nconst minMax = function (isMin, args) {\n args = Array.prototype.slice.call(args);\n switch (args.length) {\n case 0: throw { type: 'Argument', message: 'one or more arguments required' };\n }\n let i; // key is the unit.toString() for unified Dimension values,\n let j;\n let current;\n let currentUnified;\n let referenceUnified;\n let unit;\n let unitStatic;\n let unitClone;\n\n const // elems only contains original argument values.\n order = [];\n\n const values = {};\n // value is the index into the order array.\n for (i = 0; i < args.length; i++) {\n current = args[i];\n if (!(current instanceof Dimension)) {\n if (Array.isArray(args[i].value)) {\n Array.prototype.push.apply(args, Array.prototype.slice.call(args[i].value));\n continue;\n } else {\n throw { type: 'Argument', message: 'incompatible types' };\n }\n }\n currentUnified = current.unit.toString() === '' && unitClone !== undefined ? new Dimension(current.value, unitClone).unify() : current.unify();\n unit = currentUnified.unit.toString() === '' && unitStatic !== undefined ? unitStatic : currentUnified.unit.toString();\n unitStatic = unit !== '' && unitStatic === undefined || unit !== '' && order[0].unify().unit.toString() === '' ? unit : unitStatic;\n unitClone = unit !== '' && unitClone === undefined ? current.unit.toString() : unitClone;\n j = values[''] !== undefined && unit !== '' && unit === unitStatic ? values[''] : values[unit];\n if (j === undefined) {\n if (unitStatic !== undefined && unit !== unitStatic) {\n throw { type: 'Argument', message: 'incompatible types' };\n }\n values[unit] = order.length;\n order.push(current);\n continue;\n }\n referenceUnified = order[j].unit.toString() === '' && unitClone !== undefined ? new Dimension(order[j].value, unitClone).unify() : order[j].unify();\n if ( isMin && currentUnified.value < referenceUnified.value ||\n !isMin && currentUnified.value > referenceUnified.value) {\n order[j] = current;\n }\n }\n if (order.length == 1) {\n return order[0];\n }\n args = order.map(a => { return a.toCSS(this.context); }).join(this.context.compress ? ',' : ', ');\n return new Anonymous(`${isMin ? 'min' : 'max'}(${args})`);\n};\n\nexport default {\n min: function(...args) {\n try {\n return minMax.call(this, true, args);\n } catch (e) {}\n },\n max: function(...args) {\n try {\n return minMax.call(this, false, args);\n } catch (e) {}\n },\n convert: function (val, unit) {\n return val.convertTo(unit.value);\n },\n pi: function () {\n return new Dimension(Math.PI);\n },\n mod: function(a, b) {\n return new Dimension(a.value % b.value, a.unit);\n },\n pow: function(x, y) {\n if (typeof x === 'number' && typeof y === 'number') {\n x = new Dimension(x);\n y = new Dimension(y);\n } else if (!(x instanceof Dimension) || !(y instanceof Dimension)) {\n throw { type: 'Argument', message: 'arguments must be numbers' };\n }\n\n return new Dimension(Math.pow(x.value, y.value), x.unit);\n },\n percentage: function (n) {\n const result = mathHelper(num => num * 100, '%', n);\n\n return result;\n }\n};\n","import Quoted from '../tree/quoted';\nimport Anonymous from '../tree/anonymous';\nimport JavaScript from '../tree/javascript';\n\nexport default {\n e: function (str) {\n return new Quoted('\"', str instanceof JavaScript ? str.evaluated : str.value, true);\n },\n escape: function (str) {\n return new Anonymous(\n encodeURI(str.value).replace(/=/g, '%3D').replace(/:/g, '%3A').replace(/#/g, '%23').replace(/;/g, '%3B')\n .replace(/\\(/g, '%28').replace(/\\)/g, '%29'));\n },\n replace: function (string, pattern, replacement, flags) {\n let result = string.value;\n replacement = (replacement.type === 'Quoted') ?\n replacement.value : replacement.toCSS();\n result = result.replace(new RegExp(pattern.value, flags ? flags.value : ''), replacement);\n return new Quoted(string.quote || '', result, string.escaped);\n },\n '%': function (string /* arg, arg, ... */) {\n const args = Array.prototype.slice.call(arguments, 1);\n let result = string.value;\n\n for (let i = 0; i < args.length; i++) {\n /* jshint loopfunc:true */\n result = result.replace(/%[sda]/i, token => {\n const value = ((args[i].type === 'Quoted') &&\n token.match(/s/i)) ? args[i].value : args[i].toCSS();\n return token.match(/[A-Z]$/) ? encodeURIComponent(value) : value;\n });\n }\n result = result.replace(/%%/g, '%');\n return new Quoted(string.quote || '', result, string.escaped);\n }\n};\n","import Keyword from '../tree/keyword';\nimport DetachedRuleset from '../tree/detached-ruleset';\nimport Dimension from '../tree/dimension';\nimport Color from '../tree/color';\nimport Quoted from '../tree/quoted';\nimport Anonymous from '../tree/anonymous';\nimport URL from '../tree/url';\nimport Operation from '../tree/operation';\n\nconst isa = (n, Type) => (n instanceof Type) ? Keyword.True : Keyword.False;\nconst isunit = (n, unit) => {\n if (unit === undefined) {\n throw { type: 'Argument', message: 'missing the required second argument to isunit.' };\n }\n unit = typeof unit.value === 'string' ? unit.value : unit;\n if (typeof unit !== 'string') {\n throw { type: 'Argument', message: 'Second argument to isunit should be a unit or a string.' };\n }\n return (n instanceof Dimension) && n.unit.is(unit) ? Keyword.True : Keyword.False;\n};\n\nexport default {\n isruleset: function (n) {\n return isa(n, DetachedRuleset);\n },\n iscolor: function (n) {\n return isa(n, Color);\n },\n isnumber: function (n) {\n return isa(n, Dimension);\n },\n isstring: function (n) {\n return isa(n, Quoted);\n },\n iskeyword: function (n) {\n return isa(n, Keyword);\n },\n isurl: function (n) {\n return isa(n, URL);\n },\n ispixel: function (n) {\n return isunit(n, 'px');\n },\n ispercentage: function (n) {\n return isunit(n, '%');\n },\n isem: function (n) {\n return isunit(n, 'em');\n },\n isunit,\n unit: function (val, unit) {\n if (!(val instanceof Dimension)) {\n throw { type: 'Argument',\n message: `the first argument to unit must be a number${val instanceof Operation ? '. Have you forgotten parenthesis?' : ''}` };\n }\n if (unit) {\n if (unit instanceof Keyword) {\n unit = unit.value;\n } else {\n unit = unit.toCSS();\n }\n } else {\n unit = '';\n }\n return new Dimension(val.value, unit);\n },\n 'get-unit': function (n) {\n return new Anonymous(n.unit);\n }\n};\n","import Variable from '../tree/variable';\nimport Anonymous from '../tree/variable';\n\nconst styleExpression = function (args) {\n args = Array.prototype.slice.call(args);\n switch (args.length) {\n case 0: throw { type: 'Argument', message: 'one or more arguments required' };\n }\n \n const entityList = [new Variable(args[0].value, this.index, this.currentFileInfo).eval(this.context)];\n \n args = entityList.map(a => { return a.toCSS(this.context); }).join(this.context.compress ? ',' : ', ');\n \n return new Anonymous(`style(${args})`);\n};\n\nexport default {\n style: function(...args) {\n try {\n return styleExpression.call(this, args);\n } catch (e) {}\n },\n};\n","import functionRegistry from './function-registry';\nimport functionCaller from './function-caller';\n\nimport boolean from './boolean';\nimport defaultFunc from './default';\nimport color from './color';\nimport colorBlending from './color-blending';\nimport dataUri from './data-uri';\nimport list from './list';\nimport math from './math';\nimport number from './number';\nimport string from './string';\nimport svg from './svg';\nimport types from './types';\nimport style from './style';\n\nexport default environment => {\n const functions = { functionRegistry, functionCaller };\n\n // register functions\n functionRegistry.addMultiple(boolean);\n functionRegistry.add('default', defaultFunc.eval.bind(defaultFunc));\n functionRegistry.addMultiple(color);\n functionRegistry.addMultiple(colorBlending);\n functionRegistry.addMultiple(dataUri(environment));\n functionRegistry.addMultiple(list);\n functionRegistry.addMultiple(math);\n functionRegistry.addMultiple(number);\n functionRegistry.addMultiple(string);\n functionRegistry.addMultiple(svg(environment));\n functionRegistry.addMultiple(types);\n functionRegistry.addMultiple(style);\n\n return functions;\n};\n","import Dimension from '../tree/dimension';\nimport Color from '../tree/color';\nimport Expression from '../tree/expression';\nimport Quoted from '../tree/quoted';\nimport URL from '../tree/url';\n\nexport default () => {\n return { 'svg-gradient': function(direction) {\n let stops;\n let gradientDirectionSvg;\n let gradientType = 'linear';\n let rectangleDimension = 'x=\"0\" y=\"0\" width=\"1\" height=\"1\"';\n const renderEnv = {compress: false};\n let returner;\n const directionValue = direction.toCSS(renderEnv);\n let i;\n let color;\n let position;\n let positionValue;\n let alpha;\n\n function throwArgumentDescriptor() {\n throw { type: 'Argument',\n message: 'svg-gradient expects direction, start_color [start_position], [color position,]...,' +\n ' end_color [end_position] or direction, color list' };\n }\n\n if (arguments.length == 2) {\n if (arguments[1].value.length < 2) {\n throwArgumentDescriptor();\n }\n stops = arguments[1].value;\n } else if (arguments.length < 3) {\n throwArgumentDescriptor();\n } else {\n stops = Array.prototype.slice.call(arguments, 1);\n }\n\n switch (directionValue) {\n case 'to bottom':\n gradientDirectionSvg = 'x1=\"0%\" y1=\"0%\" x2=\"0%\" y2=\"100%\"';\n break;\n case 'to right':\n gradientDirectionSvg = 'x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"0%\"';\n break;\n case 'to bottom right':\n gradientDirectionSvg = 'x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"100%\"';\n break;\n case 'to top right':\n gradientDirectionSvg = 'x1=\"0%\" y1=\"100%\" x2=\"100%\" y2=\"0%\"';\n break;\n case 'ellipse':\n case 'ellipse at center':\n gradientType = 'radial';\n gradientDirectionSvg = 'cx=\"50%\" cy=\"50%\" r=\"75%\"';\n rectangleDimension = 'x=\"-50\" y=\"-50\" width=\"101\" height=\"101\"';\n break;\n default:\n throw { type: 'Argument', message: 'svg-gradient direction must be \\'to bottom\\', \\'to right\\',' +\n ' \\'to bottom right\\', \\'to top right\\' or \\'ellipse at center\\'' };\n }\n returner = `<${gradientType}Gradient id=\"g\" ${gradientDirectionSvg}>`;\n\n for (i = 0; i < stops.length; i += 1) {\n if (stops[i] instanceof Expression) {\n color = stops[i].value[0];\n position = stops[i].value[1];\n } else {\n color = stops[i];\n position = undefined;\n }\n\n if (!(color instanceof Color) || (!((i === 0 || i + 1 === stops.length) && position === undefined) && !(position instanceof Dimension))) {\n throwArgumentDescriptor();\n }\n positionValue = position ? position.toCSS(renderEnv) : i === 0 ? '0%' : '100%';\n alpha = color.alpha;\n returner += ` `;\n }\n returner += `${gradientType}Gradient> `;\n\n returner = encodeURIComponent(returner);\n\n returner = `data:image/svg+xml,${returner}`;\n return new URL(new Quoted(`'${returner}'`, returner, false, this.index, this.currentFileInfo), this.index, this.currentFileInfo);\n }};\n};\n","import contexts from './contexts';\nimport visitor from './visitors';\nimport tree from './tree';\n\nexport default function(root, options) {\n options = options || {};\n let evaldRoot;\n let variables = options.variables;\n const evalEnv = new contexts.Eval(options);\n\n //\n // Allows setting variables with a hash, so:\n //\n // `{ color: new tree.Color('#f01') }` will become:\n //\n // new tree.Declaration('@color',\n // new tree.Value([\n // new tree.Expression([\n // new tree.Color('#f01')\n // ])\n // ])\n // )\n //\n if (typeof variables === 'object' && !Array.isArray(variables)) {\n variables = Object.keys(variables).map(function (k) {\n let value = variables[k];\n\n if (!(value instanceof tree.Value)) {\n if (!(value instanceof tree.Expression)) {\n value = new tree.Expression([value]);\n }\n value = new tree.Value([value]);\n }\n return new tree.Declaration(`@${k}`, value, false, null, 0);\n });\n evalEnv.frames = [new tree.Ruleset(null, variables)];\n }\n\n const visitors = [\n new visitor.JoinSelectorVisitor(),\n new visitor.MarkVisibleSelectorsVisitor(true),\n new visitor.ExtendVisitor(),\n new visitor.ToCSSVisitor({compress: Boolean(options.compress)})\n ];\n\n const preEvalVisitors = [];\n let v;\n let visitorIterator;\n\n /**\n * first() / get() allows visitors to be added while visiting\n * \n * @todo Add scoping for visitors just like functions for @plugin; right now they're global\n */\n if (options.pluginManager) {\n visitorIterator = options.pluginManager.visitor();\n for (let i = 0; i < 2; i++) {\n visitorIterator.first();\n while ((v = visitorIterator.get())) {\n if (v.isPreEvalVisitor) {\n if (i === 0 || preEvalVisitors.indexOf(v) === -1) {\n preEvalVisitors.push(v);\n v.run(root);\n }\n }\n else {\n if (i === 0 || visitors.indexOf(v) === -1) {\n if (v.isPreVisitor) {\n visitors.unshift(v);\n }\n else {\n visitors.push(v);\n }\n }\n }\n }\n }\n }\n\n evaldRoot = root.eval(evalEnv);\n\n for (let i = 0; i < visitors.length; i++) {\n visitors[i].run(evaldRoot);\n }\n\n // Run any remaining visitors added after eval pass\n if (options.pluginManager) {\n visitorIterator.first();\n while ((v = visitorIterator.get())) {\n if (visitors.indexOf(v) === -1 && preEvalVisitors.indexOf(v) === -1) {\n v.run(evaldRoot);\n }\n }\n }\n\n return evaldRoot;\n}\n","/**\n * Plugin Manager\n */\nclass PluginManager {\n constructor(less) {\n this.less = less;\n this.visitors = [];\n this.preProcessors = [];\n this.postProcessors = [];\n this.installedPlugins = [];\n this.fileManagers = [];\n this.iterator = -1;\n this.pluginCache = {};\n this.Loader = new less.PluginLoader(less);\n }\n\n /**\n * Adds all the plugins in the array\n * @param {Array} plugins\n */\n addPlugins(plugins) {\n if (plugins) {\n for (let i = 0; i < plugins.length; i++) {\n this.addPlugin(plugins[i]);\n }\n }\n }\n\n /**\n *\n * @param plugin\n * @param {String} filename\n */\n addPlugin(plugin, filename, functionRegistry) {\n this.installedPlugins.push(plugin);\n if (filename) {\n this.pluginCache[filename] = plugin;\n }\n if (plugin.install) {\n plugin.install(this.less, this, functionRegistry || this.less.functions.functionRegistry);\n }\n }\n\n /**\n *\n * @param filename\n */\n get(filename) {\n return this.pluginCache[filename];\n }\n\n /**\n * Adds a visitor. The visitor object has options on itself to determine\n * when it should run.\n * @param visitor\n */\n addVisitor(visitor) {\n this.visitors.push(visitor);\n }\n\n /**\n * Adds a pre processor object\n * @param {object} preProcessor\n * @param {number} priority - guidelines 1 = before import, 1000 = import, 2000 = after import\n */\n addPreProcessor(preProcessor, priority) {\n let indexToInsertAt;\n for (indexToInsertAt = 0; indexToInsertAt < this.preProcessors.length; indexToInsertAt++) {\n if (this.preProcessors[indexToInsertAt].priority >= priority) {\n break;\n }\n }\n this.preProcessors.splice(indexToInsertAt, 0, {preProcessor, priority});\n }\n\n /**\n * Adds a post processor object\n * @param {object} postProcessor\n * @param {number} priority - guidelines 1 = before compression, 1000 = compression, 2000 = after compression\n */\n addPostProcessor(postProcessor, priority) {\n let indexToInsertAt;\n for (indexToInsertAt = 0; indexToInsertAt < this.postProcessors.length; indexToInsertAt++) {\n if (this.postProcessors[indexToInsertAt].priority >= priority) {\n break;\n }\n }\n this.postProcessors.splice(indexToInsertAt, 0, {postProcessor, priority});\n }\n\n /**\n *\n * @param manager\n */\n addFileManager(manager) {\n this.fileManagers.push(manager);\n }\n\n /**\n *\n * @returns {Array}\n * @private\n */\n getPreProcessors() {\n const preProcessors = [];\n for (let i = 0; i < this.preProcessors.length; i++) {\n preProcessors.push(this.preProcessors[i].preProcessor);\n }\n return preProcessors;\n }\n\n /**\n *\n * @returns {Array}\n * @private\n */\n getPostProcessors() {\n const postProcessors = [];\n for (let i = 0; i < this.postProcessors.length; i++) {\n postProcessors.push(this.postProcessors[i].postProcessor);\n }\n return postProcessors;\n }\n\n /**\n *\n * @returns {Array}\n * @private\n */\n getVisitors() {\n return this.visitors;\n }\n\n visitor() {\n const self = this;\n return {\n first: function() {\n self.iterator = -1;\n return self.visitors[self.iterator];\n },\n get: function() {\n self.iterator += 1;\n return self.visitors[self.iterator];\n }\n };\n }\n\n /**\n *\n * @returns {Array}\n * @private\n */\n getFileManagers() {\n return this.fileManagers;\n }\n}\n\nlet pm;\n\nconst PluginManagerFactory = function(less, newFactory) {\n if (newFactory || !pm) {\n pm = new PluginManager(less);\n }\n return pm;\n};\n\n//\nexport default PluginManagerFactory;\n","'use strict';\n\nfunction parseNodeVersion(version) {\n var match = version.match(/^v(\\d{1,2})\\.(\\d{1,2})\\.(\\d{1,2})(?:-([0-9A-Za-z-.]+))?(?:\\+([0-9A-Za-z-.]+))?$/); // eslint-disable-line max-len\n if (!match) {\n throw new Error('Unable to parse: ' + version);\n }\n\n var res = {\n major: parseInt(match[1], 10),\n minor: parseInt(match[2], 10),\n patch: parseInt(match[3], 10),\n pre: match[4] || '',\n build: match[5] || '',\n };\n\n return res;\n}\n\nmodule.exports = parseNodeVersion;\n","import AbstractFileManager from '../less/environment/abstract-file-manager.js';\n\nlet options;\nlet logger;\nlet fileCache = {};\n\n// TODOS - move log somewhere. pathDiff and doing something similar in node. use pathDiff in the other browser file for the initial load\nconst FileManager = function() {}\nFileManager.prototype = Object.assign(new AbstractFileManager(), {\n alwaysMakePathsAbsolute() {\n return true;\n },\n\n join(basePath, laterPath) {\n if (!basePath) {\n return laterPath;\n }\n return this.extractUrlParts(laterPath, basePath).path;\n },\n\n doXHR(url, type, callback, errback) {\n const xhr = new XMLHttpRequest();\n const async = options.isFileProtocol ? options.fileAsync : true;\n\n if (typeof xhr.overrideMimeType === 'function') {\n xhr.overrideMimeType('text/css');\n }\n logger.debug(`XHR: Getting '${url}'`);\n xhr.open('GET', url, async);\n xhr.setRequestHeader('Accept', type || 'text/x-less, text/css; q=0.9, */*; q=0.5');\n xhr.send(null);\n\n function handleResponse(xhr, callback, errback) {\n if (xhr.status >= 200 && xhr.status < 300) {\n callback(xhr.responseText,\n xhr.getResponseHeader('Last-Modified'));\n } else if (typeof errback === 'function') {\n errback(xhr.status, url);\n }\n }\n\n if (options.isFileProtocol && !options.fileAsync) {\n if (xhr.status === 0 || (xhr.status >= 200 && xhr.status < 300)) {\n callback(xhr.responseText);\n } else {\n errback(xhr.status, url);\n }\n } else if (async) {\n xhr.onreadystatechange = () => {\n if (xhr.readyState == 4) {\n handleResponse(xhr, callback, errback);\n }\n };\n } else {\n handleResponse(xhr, callback, errback);\n }\n },\n\n supports() {\n return true;\n },\n\n clearFileCache() {\n fileCache = {};\n },\n\n loadFile(filename, currentDirectory, options) {\n // TODO: Add prefix support like less-node?\n // What about multiple paths?\n\n if (currentDirectory && !this.isPathAbsolute(filename)) {\n filename = currentDirectory + filename;\n }\n\n filename = options.ext ? this.tryAppendExtension(filename, options.ext) : filename;\n\n options = options || {};\n\n // sheet may be set to the stylesheet for the initial load or a collection of properties including\n // some context variables for imports\n const hrefParts = this.extractUrlParts(filename, window.location.href);\n const href = hrefParts.url;\n const self = this;\n \n return new Promise((resolve, reject) => {\n if (options.useFileCache && fileCache[href]) {\n try {\n const lessText = fileCache[href];\n return resolve({ contents: lessText, filename: href, webInfo: { lastModified: new Date() }});\n } catch (e) {\n return reject({ filename: href, message: `Error loading file ${href} error was ${e.message}` });\n }\n }\n\n self.doXHR(href, options.mime, function doXHRCallback(data, lastModified) {\n // per file cache\n fileCache[href] = data;\n\n // Use remote copy (re-parse)\n resolve({ contents: data, filename: href, webInfo: { lastModified }});\n }, function doXHRError(status, url) {\n reject({ type: 'File', message: `'${url}' wasn't found (${status})`, href });\n });\n });\n }\n});\n\nexport default (opts, log) => {\n options = opts;\n logger = log;\n return FileManager;\n}\n","import Environment from './environment/environment';\nimport data from './data';\nimport tree from './tree';\nimport AbstractFileManager from './environment/abstract-file-manager';\nimport AbstractPluginLoader from './environment/abstract-plugin-loader';\nimport visitors from './visitors';\nimport Parser from './parser/parser';\nimport functions from './functions';\nimport contexts from './contexts';\nimport LessError from './less-error';\nimport transformTree from './transform-tree';\nimport * as utils from './utils';\nimport PluginManager from './plugin-manager';\nimport logger from './logger';\nimport SourceMapOutput from './source-map-output';\nimport SourceMapBuilder from './source-map-builder';\nimport ParseTree from './parse-tree';\nimport ImportManager from './import-manager';\nimport Parse from './parse';\nimport Render from './render';\nimport { version } from '../../package.json';\nimport parseVersion from 'parse-node-version';\n\nexport default function(environment, fileManagers) {\n let sourceMapOutput, sourceMapBuilder, parseTree, importManager;\n\n environment = new Environment(environment, fileManagers);\n sourceMapOutput = SourceMapOutput(environment);\n sourceMapBuilder = SourceMapBuilder(sourceMapOutput, environment);\n parseTree = ParseTree(sourceMapBuilder);\n importManager = ImportManager(environment);\n\n const render = Render(environment, parseTree, importManager);\n const parse = Parse(environment, parseTree, importManager);\n\n const v = parseVersion(`v${version}`);\n const initial = {\n version: [v.major, v.minor, v.patch],\n data,\n tree,\n Environment,\n AbstractFileManager,\n AbstractPluginLoader,\n environment,\n visitors,\n Parser,\n functions: functions(environment),\n contexts,\n SourceMapOutput: sourceMapOutput,\n SourceMapBuilder: sourceMapBuilder,\n ParseTree: parseTree,\n ImportManager: importManager,\n render,\n parse,\n LessError,\n transformTree,\n utils,\n PluginManager,\n logger\n };\n\n // Create a public API\n\n const ctor = function(t) {\n return function() {\n const obj = Object.create(t.prototype);\n t.apply(obj, Array.prototype.slice.call(arguments, 0));\n return obj;\n };\n };\n let t;\n const api = Object.create(initial);\n for (const n in initial.tree) {\n /* eslint guard-for-in: 0 */\n t = initial.tree[n];\n if (typeof t === 'function') {\n api[n.toLowerCase()] = ctor(t);\n }\n else {\n api[n] = Object.create(null);\n for (const o in t) {\n /* eslint guard-for-in: 0 */\n api[n][o.toLowerCase()] = ctor(t[o]);\n }\n }\n }\n\n /**\n * Some of the functions assume a `this` context of the API object,\n * which causes it to fail when wrapped for ES6 imports.\n * \n * An assumed `this` should be removed in the future.\n */\n initial.parse = initial.parse.bind(api);\n initial.render = initial.render.bind(api);\n\n return api;\n}\n","import LessError from './less-error';\nimport transformTree from './transform-tree';\nimport logger from './logger';\n\nexport default function(SourceMapBuilder) {\n class ParseTree {\n constructor(root, imports) {\n this.root = root;\n this.imports = imports;\n }\n\n toCSS(options) {\n let evaldRoot;\n const result = {};\n let sourceMapBuilder;\n try {\n evaldRoot = transformTree(this.root, options);\n } catch (e) {\n throw new LessError(e, this.imports);\n }\n\n try {\n const compress = Boolean(options.compress);\n if (compress) {\n logger.warn('The compress option has been deprecated. ' + \n 'We recommend you use a dedicated css minifier, for instance see less-plugin-clean-css.');\n }\n\n const toCSSOptions = {\n compress,\n dumpLineNumbers: options.dumpLineNumbers,\n strictUnits: Boolean(options.strictUnits),\n numPrecision: 8};\n\n if (options.sourceMap) {\n sourceMapBuilder = new SourceMapBuilder(options.sourceMap);\n result.css = sourceMapBuilder.toCSS(evaldRoot, toCSSOptions, this.imports);\n } else {\n result.css = evaldRoot.toCSS(toCSSOptions);\n }\n } catch (e) {\n throw new LessError(e, this.imports);\n }\n\n if (options.pluginManager) {\n const postProcessors = options.pluginManager.getPostProcessors();\n for (let i = 0; i < postProcessors.length; i++) {\n result.css = postProcessors[i].process(result.css, { sourceMap: sourceMapBuilder, options, imports: this.imports });\n }\n }\n if (options.sourceMap) {\n result.map = sourceMapBuilder.getExternalSourceMap();\n }\n\n result.imports = [];\n for (const file in this.imports.files) {\n if (Object.prototype.hasOwnProperty.call(this.imports.files, file) && file !== this.imports.rootFilename) {\n result.imports.push(file);\n }\n }\n return result;\n }\n }\n\n return ParseTree;\n}\n","export default function (SourceMapOutput, environment) {\n class SourceMapBuilder {\n constructor(options) {\n this.options = options;\n }\n\n toCSS(rootNode, options, imports) {\n const sourceMapOutput = new SourceMapOutput(\n {\n contentsIgnoredCharsMap: imports.contentsIgnoredChars,\n rootNode,\n contentsMap: imports.contents,\n sourceMapFilename: this.options.sourceMapFilename,\n sourceMapURL: this.options.sourceMapURL,\n outputFilename: this.options.sourceMapOutputFilename,\n sourceMapBasepath: this.options.sourceMapBasepath,\n sourceMapRootpath: this.options.sourceMapRootpath,\n outputSourceFiles: this.options.outputSourceFiles,\n sourceMapGenerator: this.options.sourceMapGenerator,\n sourceMapFileInline: this.options.sourceMapFileInline, \n disableSourcemapAnnotation: this.options.disableSourcemapAnnotation\n });\n\n const css = sourceMapOutput.toCSS(options);\n this.sourceMap = sourceMapOutput.sourceMap;\n this.sourceMapURL = sourceMapOutput.sourceMapURL;\n if (this.options.sourceMapInputFilename) {\n this.sourceMapInputFilename = sourceMapOutput.normalizeFilename(this.options.sourceMapInputFilename);\n }\n if (this.options.sourceMapBasepath !== undefined && this.sourceMapURL !== undefined) {\n this.sourceMapURL = sourceMapOutput.removeBasepath(this.sourceMapURL);\n }\n return css + this.getCSSAppendage();\n }\n\n getCSSAppendage() {\n\n let sourceMapURL = this.sourceMapURL;\n if (this.options.sourceMapFileInline) {\n if (this.sourceMap === undefined) {\n return '';\n }\n sourceMapURL = `data:application/json;base64,${environment.encodeBase64(this.sourceMap)}`;\n }\n\n if (this.options.disableSourcemapAnnotation) {\n return '';\n }\n\n if (sourceMapURL) {\n return `/*# sourceMappingURL=${sourceMapURL} */`;\n }\n return '';\n }\n\n getExternalSourceMap() {\n return this.sourceMap;\n }\n\n setExternalSourceMap(sourceMap) {\n this.sourceMap = sourceMap;\n }\n\n isInline() {\n return this.options.sourceMapFileInline;\n }\n\n getSourceMapURL() {\n return this.sourceMapURL;\n }\n\n getOutputFilename() {\n return this.options.sourceMapOutputFilename;\n }\n\n getInputFilename() {\n return this.sourceMapInputFilename;\n }\n }\n\n return SourceMapBuilder;\n}\n","export default function (environment) {\n class SourceMapOutput {\n constructor(options) {\n this._css = [];\n this._rootNode = options.rootNode;\n this._contentsMap = options.contentsMap;\n this._contentsIgnoredCharsMap = options.contentsIgnoredCharsMap;\n if (options.sourceMapFilename) {\n this._sourceMapFilename = options.sourceMapFilename.replace(/\\\\/g, '/');\n }\n this._outputFilename = options.outputFilename;\n this.sourceMapURL = options.sourceMapURL;\n if (options.sourceMapBasepath) {\n this._sourceMapBasepath = options.sourceMapBasepath.replace(/\\\\/g, '/');\n }\n if (options.sourceMapRootpath) {\n this._sourceMapRootpath = options.sourceMapRootpath.replace(/\\\\/g, '/');\n if (this._sourceMapRootpath.charAt(this._sourceMapRootpath.length - 1) !== '/') {\n this._sourceMapRootpath += '/';\n }\n } else {\n this._sourceMapRootpath = '';\n }\n this._outputSourceFiles = options.outputSourceFiles;\n this._sourceMapGeneratorConstructor = environment.getSourceMapGenerator();\n\n this._lineNumber = 0;\n this._column = 0;\n }\n\n removeBasepath(path) {\n if (this._sourceMapBasepath && path.indexOf(this._sourceMapBasepath) === 0) {\n path = path.substring(this._sourceMapBasepath.length);\n if (path.charAt(0) === '\\\\' || path.charAt(0) === '/') {\n path = path.substring(1);\n }\n }\n\n return path;\n }\n\n normalizeFilename(filename) {\n filename = filename.replace(/\\\\/g, '/');\n filename = this.removeBasepath(filename);\n return (this._sourceMapRootpath || '') + filename;\n }\n\n add(chunk, fileInfo, index, mapLines) {\n\n // ignore adding empty strings\n if (!chunk) {\n return;\n }\n\n let lines, sourceLines, columns, sourceColumns, i;\n\n if (fileInfo && fileInfo.filename) {\n let inputSource = this._contentsMap[fileInfo.filename];\n\n // remove vars/banner added to the top of the file\n if (this._contentsIgnoredCharsMap[fileInfo.filename]) {\n // adjust the index\n index -= this._contentsIgnoredCharsMap[fileInfo.filename];\n if (index < 0) { index = 0; }\n // adjust the source\n inputSource = inputSource.slice(this._contentsIgnoredCharsMap[fileInfo.filename]);\n }\n\n /** \n * ignore empty content, or failsafe\n * if contents map is incorrect\n */\n if (inputSource === undefined) {\n this._css.push(chunk);\n return;\n }\n\n inputSource = inputSource.substring(0, index);\n sourceLines = inputSource.split('\\n');\n sourceColumns = sourceLines[sourceLines.length - 1];\n }\n\n lines = chunk.split('\\n');\n columns = lines[lines.length - 1];\n\n if (fileInfo && fileInfo.filename) {\n if (!mapLines) {\n this._sourceMapGenerator.addMapping({ generated: { line: this._lineNumber + 1, column: this._column},\n original: { line: sourceLines.length, column: sourceColumns.length},\n source: this.normalizeFilename(fileInfo.filename)});\n } else {\n for (i = 0; i < lines.length; i++) {\n this._sourceMapGenerator.addMapping({ generated: { line: this._lineNumber + i + 1, column: i === 0 ? this._column : 0},\n original: { line: sourceLines.length + i, column: i === 0 ? sourceColumns.length : 0},\n source: this.normalizeFilename(fileInfo.filename)});\n }\n }\n }\n\n if (lines.length === 1) {\n this._column += columns.length;\n } else {\n this._lineNumber += lines.length - 1;\n this._column = columns.length;\n }\n\n this._css.push(chunk);\n }\n\n isEmpty() {\n return this._css.length === 0;\n }\n\n toCSS(context) {\n this._sourceMapGenerator = new this._sourceMapGeneratorConstructor({ file: this._outputFilename, sourceRoot: null });\n\n if (this._outputSourceFiles) {\n for (const filename in this._contentsMap) {\n // eslint-disable-next-line no-prototype-builtins\n if (this._contentsMap.hasOwnProperty(filename)) {\n let source = this._contentsMap[filename];\n if (this._contentsIgnoredCharsMap[filename]) {\n source = source.slice(this._contentsIgnoredCharsMap[filename]);\n }\n this._sourceMapGenerator.setSourceContent(this.normalizeFilename(filename), source);\n }\n }\n }\n\n this._rootNode.genCSS(context, this);\n\n if (this._css.length > 0) {\n let sourceMapURL;\n const sourceMapContent = JSON.stringify(this._sourceMapGenerator.toJSON());\n\n if (this.sourceMapURL) {\n sourceMapURL = this.sourceMapURL;\n } else if (this._sourceMapFilename) {\n sourceMapURL = this._sourceMapFilename;\n }\n this.sourceMapURL = sourceMapURL;\n\n this.sourceMap = sourceMapContent;\n }\n\n return this._css.join('');\n }\n }\n\n return SourceMapOutput;\n}\n","import contexts from './contexts';\nimport Parser from './parser/parser';\nimport LessError from './less-error';\nimport * as utils from './utils';\nimport logger from './logger';\n\nexport default function(environment) {\n // FileInfo = {\n // 'rewriteUrls' - option - whether to adjust URL's to be relative\n // 'filename' - full resolved filename of current file\n // 'rootpath' - path to append to normal URLs for this node\n // 'currentDirectory' - path to the current file, absolute\n // 'rootFilename' - filename of the base file\n // 'entryPath' - absolute path to the entry file\n // 'reference' - whether the file should not be output and only output parts that are referenced\n\n class ImportManager {\n constructor(less, context, rootFileInfo) {\n this.less = less;\n this.rootFilename = rootFileInfo.filename;\n this.paths = context.paths || []; // Search paths, when importing\n this.contents = {}; // map - filename to contents of all the files\n this.contentsIgnoredChars = {}; // map - filename to lines at the beginning of each file to ignore\n this.mime = context.mime;\n this.error = null;\n this.context = context;\n // Deprecated? Unused outside of here, could be useful.\n this.queue = []; // Files which haven't been imported yet\n this.files = {}; // Holds the imported parse trees.\n }\n\n /**\n * Add an import to be imported\n * @param path - the raw path\n * @param tryAppendExtension - whether to try appending a file extension (.less or .js if the path has no extension)\n * @param currentFileInfo - the current file info (used for instance to work out relative paths)\n * @param importOptions - import options\n * @param callback - callback for when it is imported\n */\n push(path, tryAppendExtension, currentFileInfo, importOptions, callback) {\n const importManager = this, pluginLoader = this.context.pluginManager.Loader;\n\n this.queue.push(path);\n\n const fileParsedFunc = function (e, root, fullPath) {\n importManager.queue.splice(importManager.queue.indexOf(path), 1); // Remove the path from the queue\n\n const importedEqualsRoot = fullPath === importManager.rootFilename;\n if (importOptions.optional && e) {\n callback(null, {rules:[]}, false, null);\n logger.info(`The file ${fullPath} was skipped because it was not found and the import was marked optional.`);\n }\n else {\n // Inline imports aren't cached here.\n // If we start to cache them, please make sure they won't conflict with non-inline imports of the\n // same name as they used to do before this comment and the condition below have been added.\n if (!importManager.files[fullPath] && !importOptions.inline) {\n importManager.files[fullPath] = { root, options: importOptions };\n }\n if (e && !importManager.error) { importManager.error = e; }\n callback(e, root, importedEqualsRoot, fullPath);\n }\n };\n\n const newFileInfo = {\n rewriteUrls: this.context.rewriteUrls,\n entryPath: currentFileInfo.entryPath,\n rootpath: currentFileInfo.rootpath,\n rootFilename: currentFileInfo.rootFilename\n };\n\n const fileManager = environment.getFileManager(path, currentFileInfo.currentDirectory, this.context, environment);\n\n if (!fileManager) {\n fileParsedFunc({ message: `Could not find a file-manager for ${path}` });\n return;\n }\n\n const loadFileCallback = function(loadedFile) {\n let plugin;\n const resolvedFilename = loadedFile.filename;\n const contents = loadedFile.contents.replace(/^\\uFEFF/, '');\n\n // Pass on an updated rootpath if path of imported file is relative and file\n // is in a (sub|sup) directory\n //\n // Examples:\n // - If path of imported file is 'module/nav/nav.less' and rootpath is 'less/',\n // then rootpath should become 'less/module/nav/'\n // - If path of imported file is '../mixins.less' and rootpath is 'less/',\n // then rootpath should become 'less/../'\n newFileInfo.currentDirectory = fileManager.getPath(resolvedFilename);\n if (newFileInfo.rewriteUrls) {\n newFileInfo.rootpath = fileManager.join(\n (importManager.context.rootpath || ''),\n fileManager.pathDiff(newFileInfo.currentDirectory, newFileInfo.entryPath));\n\n if (!fileManager.isPathAbsolute(newFileInfo.rootpath) && fileManager.alwaysMakePathsAbsolute()) {\n newFileInfo.rootpath = fileManager.join(newFileInfo.entryPath, newFileInfo.rootpath);\n }\n }\n newFileInfo.filename = resolvedFilename;\n\n const newEnv = new contexts.Parse(importManager.context);\n\n newEnv.processImports = false;\n importManager.contents[resolvedFilename] = contents;\n\n if (currentFileInfo.reference || importOptions.reference) {\n newFileInfo.reference = true;\n }\n\n if (importOptions.isPlugin) {\n plugin = pluginLoader.evalPlugin(contents, newEnv, importManager, importOptions.pluginArgs, newFileInfo);\n if (plugin instanceof LessError) {\n fileParsedFunc(plugin, null, resolvedFilename);\n }\n else {\n fileParsedFunc(null, plugin, resolvedFilename);\n }\n } else if (importOptions.inline) {\n fileParsedFunc(null, contents, resolvedFilename);\n } else {\n // import (multiple) parse trees apparently get altered and can't be cached.\n // TODO: investigate why this is\n if (importManager.files[resolvedFilename]\n && !importManager.files[resolvedFilename].options.multiple\n && !importOptions.multiple) {\n\n fileParsedFunc(null, importManager.files[resolvedFilename].root, resolvedFilename);\n }\n else {\n new Parser(newEnv, importManager, newFileInfo).parse(contents, function (e, root) {\n fileParsedFunc(e, root, resolvedFilename);\n });\n }\n }\n };\n let loadedFile;\n let promise;\n const context = utils.clone(this.context);\n\n if (tryAppendExtension) {\n context.ext = importOptions.isPlugin ? '.js' : '.less';\n }\n\n if (importOptions.isPlugin) {\n context.mime = 'application/javascript';\n\n if (context.syncImport) {\n loadedFile = pluginLoader.loadPluginSync(path, currentFileInfo.currentDirectory, context, environment, fileManager);\n } else {\n promise = pluginLoader.loadPlugin(path, currentFileInfo.currentDirectory, context, environment, fileManager);\n }\n }\n else {\n if (context.syncImport) {\n loadedFile = fileManager.loadFileSync(path, currentFileInfo.currentDirectory, context, environment);\n } else {\n promise = fileManager.loadFile(path, currentFileInfo.currentDirectory, context, environment,\n (err, loadedFile) => {\n if (err) {\n fileParsedFunc(err);\n } else {\n loadFileCallback(loadedFile);\n }\n });\n }\n }\n if (loadedFile) {\n if (!loadedFile.filename) {\n fileParsedFunc(loadedFile);\n } else {\n loadFileCallback(loadedFile);\n }\n } else if (promise) {\n promise.then(loadFileCallback, fileParsedFunc);\n }\n }\n }\n\n return ImportManager;\n}\n","import * as utils from './utils';\n\nexport default function(environment, ParseTree) {\n const render = function (input, options, callback) {\n if (typeof options === 'function') {\n callback = options;\n options = utils.copyOptions(this.options, {});\n }\n else {\n options = utils.copyOptions(this.options, options || {});\n }\n\n if (!callback) {\n const self = this;\n return new Promise(function (resolve, reject) {\n render.call(self, input, options, function(err, output) {\n if (err) {\n reject(err);\n } else {\n resolve(output);\n }\n });\n });\n } else {\n this.parse(input, options, function(err, root, imports, options) {\n if (err) { return callback(err); }\n\n let result;\n try {\n const parseTree = new ParseTree(root, imports);\n result = parseTree.toCSS(options);\n }\n catch (err) { return callback(err); }\n\n callback(null, result);\n });\n }\n };\n\n return render;\n}\n","import contexts from './contexts';\nimport Parser from './parser/parser';\nimport PluginManager from './plugin-manager';\nimport LessError from './less-error';\nimport * as utils from './utils';\n\nexport default function(environment, ParseTree, ImportManager) {\n const parse = function (input, options, callback) {\n\n if (typeof options === 'function') {\n callback = options;\n options = utils.copyOptions(this.options, {});\n }\n else {\n options = utils.copyOptions(this.options, options || {});\n }\n\n if (!callback) {\n const self = this;\n return new Promise(function (resolve, reject) {\n parse.call(self, input, options, function(err, output) {\n if (err) {\n reject(err);\n } else {\n resolve(output);\n }\n });\n });\n } else {\n let context;\n let rootFileInfo;\n const pluginManager = new PluginManager(this, !options.reUsePluginManager);\n\n options.pluginManager = pluginManager;\n\n context = new contexts.Parse(options);\n\n if (options.rootFileInfo) {\n rootFileInfo = options.rootFileInfo;\n } else {\n const filename = options.filename || 'input';\n const entryPath = filename.replace(/[^/\\\\]*$/, '');\n rootFileInfo = {\n filename,\n rewriteUrls: context.rewriteUrls,\n rootpath: context.rootpath || '',\n currentDirectory: entryPath,\n entryPath,\n rootFilename: filename\n };\n // add in a missing trailing slash\n if (rootFileInfo.rootpath && rootFileInfo.rootpath.slice(-1) !== '/') {\n rootFileInfo.rootpath += '/';\n }\n }\n\n const imports = new ImportManager(this, context, rootFileInfo);\n this.importManager = imports;\n\n // TODO: allow the plugins to be just a list of paths or names\n // Do an async plugin queue like lessc\n\n if (options.plugins) {\n options.plugins.forEach(function(plugin) {\n let evalResult, contents;\n if (plugin.fileContent) {\n contents = plugin.fileContent.replace(/^\\uFEFF/, '');\n evalResult = pluginManager.Loader.evalPlugin(contents, context, imports, plugin.options, plugin.filename);\n if (evalResult instanceof LessError) {\n return callback(evalResult);\n }\n }\n else {\n pluginManager.addPlugin(plugin);\n }\n });\n }\n\n new Parser(context, imports, rootFileInfo)\n .parse(input, function (e, root) {\n if (e) { return callback(e); }\n callback(null, root, imports, options);\n }, options);\n }\n };\n return parse;\n}\n","/**\n * @todo Add tests for browser `@plugin`\n */\nimport AbstractPluginLoader from '../less/environment/abstract-plugin-loader.js';\n\n/**\n * Browser Plugin Loader\n */\nconst PluginLoader = function(less) {\n this.less = less;\n // Should we shim this.require for browser? Probably not?\n};\n\nPluginLoader.prototype = Object.assign(new AbstractPluginLoader(), {\n loadPlugin(filename, basePath, context, environment, fileManager) {\n return new Promise((fulfill, reject) => {\n fileManager.loadFile(filename, basePath, context, environment)\n .then(fulfill).catch(reject);\n });\n }\n});\n\nexport default PluginLoader;\n\n","export default (less, options) => {\n const logLevel_debug = 4;\n const logLevel_info = 3;\n const logLevel_warn = 2;\n const logLevel_error = 1;\n\n // The amount of logging in the javascript console.\n // 3 - Debug, information and errors\n // 2 - Information and errors\n // 1 - Errors\n // 0 - None\n // Defaults to 2\n options.logLevel = typeof options.logLevel !== 'undefined' ? options.logLevel : (options.env === 'development' ? logLevel_info : logLevel_error);\n\n if (!options.loggers) {\n options.loggers = [{\n debug: function(msg) {\n if (options.logLevel >= logLevel_debug) {\n console.log(msg);\n }\n },\n info: function(msg) {\n if (options.logLevel >= logLevel_info) {\n console.log(msg);\n }\n },\n warn: function(msg) {\n if (options.logLevel >= logLevel_warn) {\n console.warn(msg);\n }\n },\n error: function(msg) {\n if (options.logLevel >= logLevel_error) {\n console.error(msg);\n }\n }\n }];\n }\n for (let i = 0; i < options.loggers.length; i++) {\n less.logger.addListener(options.loggers[i]);\n }\n};\n","import * as utils from './utils';\nimport browser from './browser';\n\nexport default (window, less, options) => {\n\n function errorHTML(e, rootHref) {\n const id = `less-error-message:${utils.extractId(rootHref || '')}`;\n const template = '{line} {content} ';\n const elem = window.document.createElement('div');\n let timer;\n let content;\n const errors = [];\n const filename = e.filename || rootHref;\n const filenameNoPath = filename.match(/([^/]+(\\?.*)?)$/)[1];\n\n elem.id = id;\n elem.className = 'less-error-message';\n\n content = `${e.type || 'Syntax'}Error: ${e.message || 'There is an error in your .less file'}` + \n ` in ${filenameNoPath} `;\n\n const errorline = (e, i, classname) => {\n if (e.extract[i] !== undefined) {\n errors.push(template.replace(/\\{line\\}/, (parseInt(e.line, 10) || 0) + (i - 1))\n .replace(/\\{class\\}/, classname)\n .replace(/\\{content\\}/, e.extract[i]));\n }\n };\n\n if (e.line) {\n errorline(e, 0, '');\n errorline(e, 1, 'line');\n errorline(e, 2, '');\n content += `on line ${e.line}, column ${e.column + 1}:
`;\n }\n if (e.stack && (e.extract || options.logLevel >= 4)) {\n content += ` Stack Trace${e.stack.split('\\n').slice(1).join(' ')}`;\n }\n elem.innerHTML = content;\n\n // CSS for error messages\n browser.createCSS(window.document, [\n '.less-error-message ul, .less-error-message li {',\n 'list-style-type: none;',\n 'margin-right: 15px;',\n 'padding: 4px 0;',\n 'margin: 0;',\n '}',\n '.less-error-message label {',\n 'font-size: 12px;',\n 'margin-right: 15px;',\n 'padding: 4px 0;',\n 'color: #cc7777;',\n '}',\n '.less-error-message pre {',\n 'color: #dd6666;',\n 'padding: 4px 0;',\n 'margin: 0;',\n 'display: inline-block;',\n '}',\n '.less-error-message pre.line {',\n 'color: #ff0000;',\n '}',\n '.less-error-message h3 {',\n 'font-size: 20px;',\n 'font-weight: bold;',\n 'padding: 15px 0 5px 0;',\n 'margin: 0;',\n '}',\n '.less-error-message a {',\n 'color: #10a',\n '}',\n '.less-error-message .error {',\n 'color: red;',\n 'font-weight: bold;',\n 'padding-bottom: 2px;',\n 'border-bottom: 1px dashed red;',\n '}'\n ].join('\\n'), { title: 'error-message' });\n\n elem.style.cssText = [\n 'font-family: Arial, sans-serif',\n 'border: 1px solid #e00',\n 'background-color: #eee',\n 'border-radius: 5px',\n '-webkit-border-radius: 5px',\n '-moz-border-radius: 5px',\n 'color: #e00',\n 'padding: 15px',\n 'margin-bottom: 15px'\n ].join(';');\n\n if (options.env === 'development') {\n timer = setInterval(() => {\n const document = window.document;\n const body = document.body;\n if (body) {\n if (document.getElementById(id)) {\n body.replaceChild(elem, document.getElementById(id));\n } else {\n body.insertBefore(elem, body.firstChild);\n }\n clearInterval(timer);\n }\n }, 10);\n }\n }\n\n function removeErrorHTML(path) {\n const node = window.document.getElementById(`less-error-message:${utils.extractId(path)}`);\n if (node) {\n node.parentNode.removeChild(node);\n }\n }\n\n function removeErrorConsole() {\n // no action\n }\n\n function removeError(path) {\n if (!options.errorReporting || options.errorReporting === 'html') {\n removeErrorHTML(path);\n } else if (options.errorReporting === 'console') {\n removeErrorConsole(path);\n } else if (typeof options.errorReporting === 'function') {\n options.errorReporting('remove', path);\n }\n }\n\n function errorConsole(e, rootHref) {\n const template = '{line} {content}';\n const filename = e.filename || rootHref;\n const errors = [];\n let content = `${e.type || 'Syntax'}Error: ${e.message || 'There is an error in your .less file'} in ${filename}`;\n\n const errorline = (e, i, classname) => {\n if (e.extract[i] !== undefined) {\n errors.push(template.replace(/\\{line\\}/, (parseInt(e.line, 10) || 0) + (i - 1))\n .replace(/\\{class\\}/, classname)\n .replace(/\\{content\\}/, e.extract[i]));\n }\n };\n\n if (e.line) {\n errorline(e, 0, '');\n errorline(e, 1, 'line');\n errorline(e, 2, '');\n content += ` on line ${e.line}, column ${e.column + 1}:\\n${errors.join('\\n')}`;\n }\n if (e.stack && (e.extract || options.logLevel >= 4)) {\n content += `\\nStack Trace\\n${e.stack}`;\n }\n less.logger.error(content);\n }\n\n function error(e, rootHref) {\n if (!options.errorReporting || options.errorReporting === 'html') {\n errorHTML(e, rootHref);\n } else if (options.errorReporting === 'console') {\n errorConsole(e, rootHref);\n } else if (typeof options.errorReporting === 'function') {\n options.errorReporting('add', e, rootHref);\n }\n }\n\n return {\n add: error,\n remove: removeError\n };\n};\n","/**\n * Kicks off less and compiles any stylesheets\n * used in the browser distributed version of less\n * to kick-start less using the browser api\n */\nimport defaultOptions from '../less/default-options';\nimport addDefaultOptions from './add-default-options';\nimport root from './index';\n\nconst options = defaultOptions();\n\nif (window.less) {\n for (const key in window.less) {\n if (Object.prototype.hasOwnProperty.call(window.less, key)) {\n options[key] = window.less[key];\n }\n }\n}\naddDefaultOptions(window, options);\n\noptions.plugins = options.plugins || [];\n\nif (window.LESS_PLUGINS) {\n options.plugins = options.plugins.concat(window.LESS_PLUGINS);\n}\n\nconst less = root(window, options);\nexport default less;\n\nwindow.less = less;\n\nlet css;\nlet head;\nlet style;\n\n// Always restore page visibility\nfunction resolveOrReject(data) {\n if (data.filename) {\n console.warn(data);\n }\n if (!options.async) {\n head.removeChild(style);\n }\n}\n\nif (options.onReady) {\n if (/!watch/.test(window.location.hash)) {\n less.watch();\n }\n // Simulate synchronous stylesheet loading by hiding page rendering\n if (!options.async) {\n css = 'body { display: none !important }';\n head = document.head || document.getElementsByTagName('head')[0];\n style = document.createElement('style');\n\n style.type = 'text/css';\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n\n head.appendChild(style);\n }\n less.registerStylesheetsImmediately();\n less.pageLoadFinished = less.refresh(less.env === 'development').then(resolveOrReject, resolveOrReject);\n}\n","// Export a new default each time\nexport default function() {\n return {\n /* Inline Javascript - @plugin still allowed */\n javascriptEnabled: false,\n\n /* Outputs a makefile import dependency list to stdout. */\n depends: false,\n\n /* (DEPRECATED) Compress using less built-in compression. \n * This does an okay job but does not utilise all the tricks of \n * dedicated css compression. */\n compress: false,\n\n /* Runs the less parser and just reports errors without any output. */\n lint: false,\n\n /* Sets available include paths.\n * If the file in an @import rule does not exist at that exact location, \n * less will look for it at the location(s) passed to this option. \n * You might use this for instance to specify a path to a library which \n * you want to be referenced simply and relatively in the less files. */\n paths: [],\n\n /* color output in the terminal */\n color: true,\n\n /* The strictImports controls whether the compiler will allow an @import inside of either \n * @media blocks or (a later addition) other selector blocks.\n * See: https://github.com/less/less.js/issues/656 */\n strictImports: false,\n\n /* Allow Imports from Insecure HTTPS Hosts */\n insecure: false,\n\n /* Allows you to add a path to every generated import and url in your css. \n * This does not affect less import statements that are processed, just ones \n * that are left in the output css. */\n rootpath: '',\n\n /* By default URLs are kept as-is, so if you import a file in a sub-directory \n * that references an image, exactly the same URL will be output in the css. \n * This option allows you to re-write URL's in imported files so that the \n * URL is always relative to the base imported file */\n rewriteUrls: false,\n\n /* How to process math \n * 0 always - eagerly try to solve all operations\n * 1 parens-division - require parens for division \"/\"\n * 2 parens | strict - require parens for all operations\n * 3 strict-legacy - legacy strict behavior (super-strict)\n */\n math: 1,\n\n /* Without this option, less attempts to guess at the output unit when it does maths. */\n strictUnits: false,\n\n /* Effectively the declaration is put at the top of your base Less file, \n * meaning it can be used but it also can be overridden if this variable \n * is defined in the file. */\n globalVars: null,\n\n /* As opposed to the global variable option, this puts the declaration at the\n * end of your base file, meaning it will override anything defined in your Less file. */\n modifyVars: null,\n\n /* This option allows you to specify a argument to go on to every URL. */\n urlArgs: ''\n }\n}","import {addDataAttr} from './utils';\nimport browser from './browser';\n\nexport default (window, options) => {\n\n // use options from the current script tag data attribues\n addDataAttr(options, browser.currentScript(window));\n\n if (options.isFileProtocol === undefined) {\n options.isFileProtocol = /^(file|(chrome|safari)(-extension)?|resource|qrc|app):/.test(window.location.protocol);\n }\n\n // Load styles asynchronously (default: false)\n //\n // This is set to `false` by default, so that the body\n // doesn't start loading before the stylesheets are parsed.\n // Setting this to `true` can result in flickering.\n //\n options.async = options.async || false;\n options.fileAsync = options.fileAsync || false;\n\n // Interval between watch polls\n options.poll = options.poll || (options.isFileProtocol ? 1000 : 1500);\n\n options.env = options.env || (window.location.hostname == '127.0.0.1' ||\n window.location.hostname == '0.0.0.0' ||\n window.location.hostname == 'localhost' ||\n (window.location.port &&\n window.location.port.length > 0) ||\n options.isFileProtocol ? 'development'\n : 'production');\n\n const dumpLineNumbers = /!dumpLineNumbers:(comments|mediaquery|all)/.exec(window.location.hash);\n if (dumpLineNumbers) {\n options.dumpLineNumbers = dumpLineNumbers[1];\n }\n\n if (options.useFileCache === undefined) {\n options.useFileCache = true;\n }\n\n if (options.onReady === undefined) {\n options.onReady = true;\n }\n\n if (options.relativeUrls) {\n options.rewriteUrls = 'all';\n }\n};\n","//\n// index.js\n// Should expose the additional browser functions on to the less object\n//\nimport {addDataAttr} from './utils';\nimport lessRoot from '../less';\nimport browser from './browser';\nimport FM from './file-manager';\nimport PluginLoader from './plugin-loader';\nimport LogListener from './log-listener';\nimport ErrorReporting from './error-reporting';\nimport Cache from './cache';\nimport ImageSize from './image-size';\n\nexport default (window, options) => {\n const document = window.document;\n const less = lessRoot();\n\n less.options = options;\n const environment = less.environment;\n const FileManager = FM(options, less.logger);\n const fileManager = new FileManager();\n environment.addFileManager(fileManager);\n less.FileManager = FileManager;\n less.PluginLoader = PluginLoader;\n\n LogListener(less, options);\n const errors = ErrorReporting(window, less, options);\n const cache = less.cache = options.cache || Cache(window, options, less.logger);\n ImageSize(less.environment);\n\n // Setup user functions - Deprecate?\n if (options.functions) {\n less.functions.functionRegistry.addMultiple(options.functions);\n }\n\n const typePattern = /^text\\/(x-)?less$/;\n\n function clone(obj) {\n const cloned = {};\n for (const prop in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, prop)) {\n cloned[prop] = obj[prop];\n }\n }\n return cloned;\n }\n\n // only really needed for phantom\n function bind(func, thisArg) {\n const curryArgs = Array.prototype.slice.call(arguments, 2);\n return function() {\n const args = curryArgs.concat(Array.prototype.slice.call(arguments, 0));\n return func.apply(thisArg, args);\n };\n }\n\n function loadStyles(modifyVars) {\n const styles = document.getElementsByTagName('style');\n let style;\n\n for (let i = 0; i < styles.length; i++) {\n style = styles[i];\n if (style.type.match(typePattern)) {\n const instanceOptions = clone(options);\n instanceOptions.modifyVars = modifyVars;\n const lessText = style.innerHTML || '';\n instanceOptions.filename = document.location.href.replace(/#.*$/, '');\n\n /* jshint loopfunc:true */\n // use closure to store current style\n less.render(lessText, instanceOptions,\n bind((style, e, result) => {\n if (e) {\n errors.add(e, 'inline');\n } else {\n style.type = 'text/css';\n if (style.styleSheet) {\n style.styleSheet.cssText = result.css;\n } else {\n style.innerHTML = result.css;\n }\n }\n }, null, style));\n }\n }\n }\n\n function loadStyleSheet(sheet, callback, reload, remaining, modifyVars) {\n\n const instanceOptions = clone(options);\n addDataAttr(instanceOptions, sheet);\n instanceOptions.mime = sheet.type;\n\n if (modifyVars) {\n instanceOptions.modifyVars = modifyVars;\n }\n\n function loadInitialFileCallback(loadedFile) {\n const data = loadedFile.contents;\n const path = loadedFile.filename;\n const webInfo = loadedFile.webInfo;\n\n const newFileInfo = {\n currentDirectory: fileManager.getPath(path),\n filename: path,\n rootFilename: path,\n rewriteUrls: instanceOptions.rewriteUrls\n };\n\n newFileInfo.entryPath = newFileInfo.currentDirectory;\n newFileInfo.rootpath = instanceOptions.rootpath || newFileInfo.currentDirectory;\n\n if (webInfo) {\n webInfo.remaining = remaining;\n\n const css = cache.getCSS(path, webInfo, instanceOptions.modifyVars);\n if (!reload && css) {\n webInfo.local = true;\n callback(null, css, data, sheet, webInfo, path);\n return;\n }\n\n }\n\n // TODO add tests around how this behaves when reloading\n errors.remove(path);\n\n instanceOptions.rootFileInfo = newFileInfo;\n less.render(data, instanceOptions, (e, result) => {\n if (e) {\n e.href = path;\n callback(e);\n } else {\n cache.setCSS(sheet.href, webInfo.lastModified, instanceOptions.modifyVars, result.css);\n callback(null, result.css, data, sheet, webInfo, path);\n }\n });\n }\n\n fileManager.loadFile(sheet.href, null, instanceOptions, environment)\n .then(loadedFile => {\n loadInitialFileCallback(loadedFile);\n }).catch(err => {\n console.log(err);\n callback(err);\n });\n\n }\n\n function loadStyleSheets(callback, reload, modifyVars) {\n for (let i = 0; i < less.sheets.length; i++) {\n loadStyleSheet(less.sheets[i], callback, reload, less.sheets.length - (i + 1), modifyVars);\n }\n }\n\n function initRunningMode() {\n if (less.env === 'development') {\n less.watchTimer = setInterval(() => {\n if (less.watchMode) {\n fileManager.clearFileCache();\n /**\n * @todo remove when this is typed with JSDoc\n */\n // eslint-disable-next-line no-unused-vars\n loadStyleSheets((e, css, _, sheet, webInfo) => {\n if (e) {\n errors.add(e, e.href || sheet.href);\n } else if (css) {\n browser.createCSS(window.document, css, sheet);\n }\n });\n }\n }, options.poll);\n }\n }\n\n //\n // Watch mode\n //\n less.watch = function () {\n if (!less.watchMode ) {\n less.env = 'development';\n initRunningMode();\n }\n this.watchMode = true;\n return true;\n };\n\n less.unwatch = function () {clearInterval(less.watchTimer); this.watchMode = false; return false; };\n\n //\n // Synchronously get all tags with the 'rel' attribute set to\n // \"stylesheet/less\".\n //\n less.registerStylesheetsImmediately = () => {\n const links = document.getElementsByTagName('link');\n less.sheets = [];\n\n for (let i = 0; i < links.length; i++) {\n if (links[i].rel === 'stylesheet/less' || (links[i].rel.match(/stylesheet/) &&\n (links[i].type.match(typePattern)))) {\n less.sheets.push(links[i]);\n }\n }\n };\n\n //\n // Asynchronously get all tags with the 'rel' attribute set to\n // \"stylesheet/less\", returning a Promise.\n //\n less.registerStylesheets = () => new Promise((resolve) => {\n less.registerStylesheetsImmediately();\n resolve();\n });\n\n //\n // With this function, it's possible to alter variables and re-render\n // CSS without reloading less-files\n //\n less.modifyVars = record => less.refresh(true, record, false);\n\n less.refresh = (reload, modifyVars, clearFileCache) => {\n if ((reload || clearFileCache) && clearFileCache !== false) {\n fileManager.clearFileCache();\n }\n return new Promise((resolve, reject) => {\n let startTime;\n let endTime;\n let totalMilliseconds;\n let remainingSheets;\n startTime = endTime = new Date();\n\n // Set counter for remaining unprocessed sheets\n remainingSheets = less.sheets.length;\n\n if (remainingSheets === 0) {\n\n endTime = new Date();\n totalMilliseconds = endTime - startTime;\n less.logger.info('Less has finished and no sheets were loaded.');\n resolve({\n startTime,\n endTime,\n totalMilliseconds,\n sheets: less.sheets.length\n });\n\n } else {\n // Relies on less.sheets array, callback seems to be guaranteed to be called for every element of the array\n loadStyleSheets((e, css, _, sheet, webInfo) => {\n if (e) {\n errors.add(e, e.href || sheet.href);\n reject(e);\n return;\n }\n if (webInfo.local) {\n less.logger.info(`Loading ${sheet.href} from cache.`);\n } else {\n less.logger.info(`Rendered ${sheet.href} successfully.`);\n }\n browser.createCSS(window.document, css, sheet);\n less.logger.info(`CSS for ${sheet.href} generated in ${new Date() - endTime}ms`);\n\n // Count completed sheet\n remainingSheets--;\n\n // Check if the last remaining sheet was processed and then call the promise\n if (remainingSheets === 0) {\n totalMilliseconds = new Date() - startTime;\n less.logger.info(`Less has finished. CSS generated in ${totalMilliseconds}ms`);\n resolve({\n startTime,\n endTime,\n totalMilliseconds,\n sheets: less.sheets.length\n });\n }\n endTime = new Date();\n }, reload, modifyVars);\n }\n\n loadStyles(modifyVars);\n });\n };\n\n less.refreshStyles = loadStyles;\n return less;\n};\n","// Cache system is a bit outdated and could do with work\n\nexport default (window, options, logger) => {\n let cache = null;\n if (options.env !== 'development') {\n try {\n cache = (typeof window.localStorage === 'undefined') ? null : window.localStorage;\n } catch (_) {}\n }\n return {\n setCSS: function(path, lastModified, modifyVars, styles) {\n if (cache) {\n logger.info(`saving ${path} to cache.`);\n try {\n cache.setItem(path, styles);\n cache.setItem(`${path}:timestamp`, lastModified);\n if (modifyVars) {\n cache.setItem(`${path}:vars`, JSON.stringify(modifyVars));\n }\n } catch (e) {\n // TODO - could do with adding more robust error handling\n logger.error(`failed to save \"${path}\" to local storage for caching.`);\n }\n }\n },\n getCSS: function(path, webInfo, modifyVars) {\n const css = cache && cache.getItem(path);\n const timestamp = cache && cache.getItem(`${path}:timestamp`);\n let vars = cache && cache.getItem(`${path}:vars`);\n\n modifyVars = modifyVars || {};\n vars = vars || '{}'; // if not set, treat as the JSON representation of an empty object\n\n if (timestamp && webInfo.lastModified &&\n (new Date(webInfo.lastModified).valueOf() ===\n new Date(timestamp).valueOf()) &&\n JSON.stringify(modifyVars) === vars) {\n // Use local copy\n return css;\n }\n }\n };\n};\n","\nimport functionRegistry from './../less/functions/function-registry';\n\nexport default () => {\n function imageSize() {\n throw {\n type: 'Runtime',\n message: 'Image size functions are not supported in browser version of less'\n };\n }\n\n const imageFunctions = {\n 'image-size': function(filePathNode) {\n imageSize(this, filePathNode);\n return -1;\n },\n 'image-width': function(filePathNode) {\n imageSize(this, filePathNode);\n return -1;\n },\n 'image-height': function(filePathNode) {\n imageSize(this, filePathNode);\n return -1;\n }\n };\n\n functionRegistry.addMultiple(imageFunctions);\n};\n"],"names":["extractId","href","replace","addDataAttr","options","tag","opt","dataset","Object","prototype","hasOwnProperty","call","JSON","parse","_","browser","document","styles","sheet","id","concat","title","utils.extractId","oldStyleNode","getElementById","keepOldStyleNode","styleNode","createElement","setAttribute","media","styleSheet","appendChild","createTextNode","childNodes","length","firstChild","nodeValue","head","getElementsByTagName","nextEl","nextSibling","parentNode","insertBefore","removeChild","cssText","e","Error","window","scripts","currentScript","logger$1","error","msg","this","_fireEvent","warn","info","debug","addListener","listener","_listeners","push","removeListener","i_1","splice","type","i_2","logFunction","Environment","externalEnvironment","fileManagers","requiredFunctions","functions","propName","environmentFunc","bind","getFileManager","filename","currentDirectory","environment","isSync","logger","undefined","pluginManager","getFileManagers","fileManager","addFileManager","clearFileManagers","colors","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgrey","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","grey","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgrey","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","unitConversions","m","cm","mm","in","px","pt","pc","duration","s","ms","angle","rad","Math","PI","deg","grad","turn","data","Node","parent","visibilityBlocks","nodeVisible","rootNode","parsed","defineProperty","get","fileInfo","getIndex","setParent","nodes","set","node","Array","isArray","forEach","_index","_fileInfo","isRulesetLike","toCSS","context","strs","genCSS","add","chunk","index","isEmpty","join","output","value","accept","visitor","visit","eval","_operate","op","a","b","fround","precision","numPrecision","Number","toFixed","compare","numericCompare","blocksVisibility","addVisibilityBlock","removeVisibilityBlock","ensureVisibility","ensureInvisibility","isVisible","visibilityInfo","copyVisibilityInfo","Color","rgb","originalForm","self","match","map","c","i","parseInt","alpha","split","clamp","v","max","min","toHex","round","toString","assign","luma","r","g","pow","doNotCompress","color","colorFunction","compress","args","indexOf","toHSL","h","l","toRGB","splitcolor","operate","other","d","toHSV","toARGB","x","fromKeyword","keyword","key","toLowerCase","slice","Paren","_noSpaceCombinators"," ","|","Combinator","emptyOrWhitespace","trim","spaceOrEmpty","Element","combinator","isVariable","currentFileInfo","clone","firstSelector","charAt","ALWAYS","PARENS_DIVISION","PARENS","RewriteUrls","getType","payload","copy","target","item","constructor","getPrototypeOf","getOwnPropertyNames","getOwnPropertySymbols","reduce","carry","props","includes","newVal","originalObject","includeNonenumerable","propType","propertyIsEnumerable","enumerable","writable","configurable","assignProp","nonenumerable","getLocation","inputStream","n","line","column","copyArray","arr","obj","cloned","prop","defaults","obj1","obj2","newObj","_defaults","defaults_1","copyOptions","opts","strictMath","math","Constants.Math","relativeUrls","rewriteUrls","Constants.RewriteUrls","flattenArray","result","length_1","isNullOrUndefined","val","anonymousFunc","LessError","fileContentMap","currentFilename","message","stack","input","contents","loc","utils.getLocation","col","callLine","lines","found","func","Function","lineAdjust","callExtract","extract","create","F","isWarning","_a","stylize","str","type_1","errorTxt","substr","_visitArgs","visitDeeper","_hasIndexed","_noop","Visitor","implementation","_implementation","_visitInCache","_visitOutCache","indexNodeTypes","ticker","child","typeIndex","tree","nodeTypeIndex","fnName","impl","funcOut","visitArgs","newNode","isReplacing","cnt","visitArray","nonReplacing","out","evald","flatten","nestedCnt","j","nestedItem","contexts","copyFromOriginal","original","destination","propertiesToCopy","parseCopyProperties","Parse","paths","evalCopyProperties","isPathRelative","path","test","isPathLocalRelative","Eval","frames","importantScope","enterCalc","calcStack","inCalc","exitCalc","pop","inParenthesis","parensStack","outOfParenthesis","mathOn","isMathOn","pathRequiresRewrite","rewritePath","rootpath","newPath","normalizePath","segment","segments","reverse","ImportSequencer","onSequencerEmpty","imports","variableImports","_onSequencerEmpty","_currentDepth","addImport","callback","importSequencer","importItem","isReady","arguments","tryRun","addVariableImport","apply","variableImport","ImportVisitor","importer","finish","_visitor","_importer","_finish","importCount","onceFileDetectionMap","recursionDetector","_sequencer","run","root","isFinished","visitImport","importNode","inlineCSS","inline","css","utils.copyArray","importParent","isVariableImport","processImportNode","evaldImportNode","evalForImport","multiple","importMultiple","tryAppendLessExtension","rules","onImported","sequencedOnImported","getPath","importedAtRoot","fullPath","importVisitor","isPlugin","isOptional","optional","duplicateImport","skip","importedFilename","oldContext","visitDeclaration","declNode","unshift","visitDeclarationOut","shift","visitAtRule","atRuleNode","visitAtRuleOut","visitMixinDefinition","mixinDefinitionNode","visitMixinDefinitionOut","visitRuleset","rulesetNode","visitRulesetOut","visitMedia","mediaNode","visitMediaOut","SetTreeVisibilityVisitor","visible","ExtendFinderVisitor","allExtendsStack","allExtends","extend","extendList","allSelectorsExtendList","ruleCnt","Extend","extendOnEveryPath","selectorPath","selExtendList","allSelectorsExtend","foundExtends","findSelfSelectors","ruleset","firstExtendOnThisSelectorPath","selectors","ProcessExtendsVisitor","extendFinder","extendIndices","doExtendChaining","newRoot","checkExtendsForNonMatched","indices","filter","hasFoundMatches","parent_ids","selector","extendsList","extendsListTarget","iterationCount","extendIndex","targetExtendIndex","matches","newSelector","targetExtend","newExtend","extendsToAdd","extendVisitor","object_id","selfSelectors","findMatch","selfSelector","extendSelector","option","extendChainCount","selectorOne","selectorTwo","ruleNode","visitSelector","selectorNode","pathIndex","selectorsToAdd","extendedSelectors","haystackSelectorPath","haystackSelectorIndex","hackstackSelector","hackstackElementIndex","haystackElement","targetCombinator","potentialMatch","needleElements","elements","potentialMatches","allowBefore","matched","initialCombinator","isElementValuesEqual","finished","allowAfter","endPathIndex","endPathElementIndex","elementValue1","elementValue2","Attribute","Selector","replacementSelector","matchIndex","firstElement","newElements","currentSelectorPathIndex","currentSelectorPathElementIndex","currentValue","derived","createDerived","newAllExtends","lastIndex","JoinSelectorVisitor","getIsOutput","joinSelectors","multiMedia","isRooted","CSSVisitorUtils","_context","containsSilentNonBlockedChild","bodyRules","rule","isSilent","keepOnlyVisibleChilds","owner","thing","hasVisibleSelector","resolveVisibility","compiledRulesBody","isVisibleRuleset","firstRoot","ToCSSVisitor","utils","variable","mixinNode","visitExtend","extendNode","visitComment","commentNode","originalRules","visitAtRuleWithBody","visitAtRuleWithoutBody","visitAnonymous","anonymousNode","nodeRules","hasFakeRuleset","getBodyRules","_mergeRules","name","charset","debugInfo","comment","Comment","checkValidNodes","isRoot","Declaration","Call","allowRoot","rulesets","_compileRulesetPaths","nodeRuleCnt","_removeDuplicateRules","p","ruleList","ruleCache","ruleCSS","groups","groupsArr","i_3","merge","group","result_1","space_1","comma_1","Expression","important","Value","visitors","MarkVisibleSelectorsVisitor","ExtendVisitor","getParserInput","furthest","furthestPossibleErrorMessage","chunks","current","currentPos","saveStack","parserInput","skipWhitespace","nextChar","oldi","oldj","curr","endIndex","mem","inp","charCodeAt","autoCommentAbsorb","isLineComment","nextNewLine","text","commentStore","nextStarSlash","save","restore","possibleErrorMessage","state","forget","isWhitespace","offset","pos","code","$re","tok","exec","$char","$peekChar","$str","tokLength","$quoted","startChar","currentPosition","$parseUntil","testChar","quote","returnVal","inComment","blockDepth","blockStack","parseGroups","startPos","lastPos","loop","char","expected","peek","peekChar","currentChar","prevChar","getInput","peekNotNumeric","start","chunkInput","failFunction","fail","lastOpening","lastOpeningParen","lastMultiComment","lastMultiCommentEndBrace","chunkerCurrentIndex","currentChunkStartIndex","cc","cc2","len","level","parenLevel","emitFrom","emitChunk","force","String","fromCharCode","chunker","end","furthestReachedEnd","furthestChar","functionRegistry","makeRegistry","base","_data","addMultiple","_this","keys","getLocalFunctions","inherit","MediaSyntaxOptions","queryInParens","ContainerSyntaxOptions","Anonymous","mapLines","rulesetLike","Boolean","Parser","currentIndex","parsers","quiet","toUpperCase","expect","arg","expectChar","getDebugInfo","lineNumber","fileName","parseNode","parseList","returnNodes","parser","additionalData","globalVars","modifyVars","ignored","err","preText","disablePluginRule","plugin","serializeVars","preProcessors","getPreProcessors","process","banner","contentsIgnoredChars","Ruleset","primary","endInfo","processImports","mixin","extendRule","definition","declaration","variableCall","entities","atrule","foundSemiColon","mixinLookup","quoted","forceEscaped","isEscaped","k","customFuncCall","stop","declarationCall","validCall","substring","ruleProperty","f","ieAlpha","boolean","condition","if","prevArgs","isSemiColonSeparated","argsComma","argsSemiColon","detachedRuleset","assignment","expression","literal","dimension","unicodeDescriptor","entity","url","property","Variable","Property","ch","variableCurly","curly","propertyCurly","colorKeyword","ud","javascript","js","escape","parsedName","lookups","inValue","ruleLookups","VariableCall","NamespaceValue","isRule","first","element","getLookup","hasParens","parensIndex","parensWS","elem","elemIndex","re","isCall","expressionContainsNamed","nameLoop","expand","returner","variadic","expressions","hasSep","throwAwayComments","cond","params","argInfo","conditions","block","lookupValue","Quoted","attribute","slashedCombinator","isLess","when","ele","cif","content","blockRuleset","Definition","DetachedRuleset","dumpLineNumbers","strictImports","hasDR","permissiveValue","anonymousValue","untilTokens","done","testCurrentChar","startsWith","variableRegex","propRegex","import","features","dir","importOptions","mediaFeatures","o","optionName","importOption","mediaFeature","syntaxOptions","rangeP","atomicCondition","rvalue","lvalue","prepareAndGetNestableAtRule","treeType","atRule","nestableAtRule","Media","Container","pluginArgs","nonVendorSpecificName","hasIdentifier","hasExpression","hasUnknown","hasBlock","sub","addition","parens","multiplication","operation","isSpaced","operand","parensInOp","needsParens","logical","next","conditionAnd","negatedCondition","parenthesisCondition","negate","body","me","tryConditionFollowedByParenthesis","preparsedCond","delim","simpleProperty","vars","name_1","evaldCondition","getElements","mixinElements_","utils.isNullOrUndefined","mediaEmpty","els","importManager","createEmptySelectors","el","sels","olen","mixinElements","isJustParentSelector","Keyword","True","False","MATH","asComment","ctx","asMediaQuery","filenameWithProtocol","lineSeparator","lastRule","prevMath","evaldValue","mathBypass","evalName","importantResult","makeImportant","isCompressed","defaultFunc","value_","error_","reset","_lookups","_variables","_properties","isRuleset","selCnt","hasVariable","hasOnePassingSelector","toParseSelectors","startingIndex","selectorFileInfo","utils.flattenArray","subRule","originalRuleset","allowImports","globalFunctionRegistry","ctxFrames","ctxSelectors","evalImports","rsRules","evalFirst","mediaBlockCount","mediaBlocks","resetCache","bubbleSelectors","importRules","matchArgs","matchCondition","lastSelector","_rulesets","variables","hash","properties","name_2","decl","parseValue","lastDeclaration","toParse","transformDeclaration","nodes_1","filtRules","prependRule","find","foundMixins","ruleNodes","tabLevel","sep","tabRuleStr","tabSetStr","charsetNodeIndex","importNodeIndex","isCharset","pathCnt","pathSubCnt","currentLastRule","joinSelector","createParenthesis","elementsToPak","originalElement","replacementParen","insideParent","createSelector","containedElement","addReplacementIntoPath","beginningPath","addPath","replacedElement","originalSelector","newSelectorPath","newJoinedSelector","parentEl","restOfPath","addAllReplacementsIntoPath","addPaths","mergeElementsOnToSelectors","sel","deriveSelector","deriveFrom","newPaths","replaceParentSelector","inSelector","currentElements","newSelectors","selectorsMultiplied","maybeSelector","hadParentSelector","nestedSelector","replaced","nestedPaths","replacedNewSelectors","concatenated","AtRule","outputRuleset","mediaPathBackup","mediaBlocksBackup","mediaPath","callEval","Unit","numerator","denominator","backupUnit","sort","strictUnits","returnStr","is","unitString","isLength","RegExp","isSingular","usedUnits","mapUnit","groupName","atomicUnit","cancel","counter","count","Dimension","unit","parseFloat","isNaN","toColor","strValue","convertTo","unify","conversions","targetUnit","applyUnit","derivedConversions","Operation","operands","__assign","t","SuppressedError","noSpacing","returnValue","doubleParen","functionCaller","isValid","evalArgs","commentFilter","subNodes","to","from","pack","ar","__spreadArray","calc","currentMathContext","funcCaller","FunctionCaller","columnNumber","evaluating","frame","fun","mergeRules","less","vArr","escaped","containsVariables","that","iterativeReplace","regexp","replacementFnc","evaluatedValue","URL","isEvald","urlArgs","NestableAtRulePrototype","evalTop","evalNested","permute","fragment","rest","Import","pathValue","reference","evalPath","doEval","registry","newImport","JsEvalNode","evaluateJavaScript","evalContext","javascriptEnabled","jsify","toJS","JavaScript","string","Assignment","Condition","QueryInParens","op2","mvalue","mvalues","variableDeclaration","mvalueCopy","UnicodeDescriptor","Negative","next_id","selectorElements","selfElements","ruleCall","arity","optionalParameters","required","evalParams","mixinEnv","evaldArguments","varargs","isNamedFound","argIndex","argsLength","evalCall","_arguments","mixinFrames","allArgsCnt","requiredArgsCnt","MixinCall","mixins","mixinPath","argValue","isRecursive","isOneFound","candidate","defaultResult","noArgumentsFilter","candidates","conditionResult","calcDefGroup","namespace","MixinDefinition","format","newRules","_setVisibilityToReplacement","replacement","AbstractFileManager","lastIndexOf","tryAppendExtension","ext","supportsSync","alwaysMakePathsAbsolute","isPathAbsolute","basePath","laterPath","pathDiff","baseUrl","urlDirectories","baseUrlDirectories","urlParts","extractUrlParts","baseUrlParts","diff","hostPart","directories","urlPartsRegex","rawDirectories","rawPath","fileUrl","AbstractPluginLoader","require","evalPlugin","pluginOptions","pluginObj","localModule","shortname","FileManager","trySetOptions","use","exports","loader","validatePlugin","minVersion","compareVersion","addPlugin","setOptions","version","versionToString","aVersion","bVersion","versionString","printUsage","plugins","If","trueValue","falseValue","isdefined","colorFunctions","boolean$1","hsla","origColor","hsl","number","rgba","size","m1","m2","hue","hsv","hsva","vs","floor","perm","saturation","lightness","hsvhue","hsvsaturation","hsvvalue","luminance","saturate","amount","method","desaturate","lighten","darken","fadein","fadeout","fade","spin","mix","color1","color2","weight","w","w1","w2","greyscale","contrast","dark","light","threshold","argb","tint","shade","colorBlend","mode","cb","cs","cr","ab","as","colorBlendModeFunctions","multiply","screen","overlay","softlight","sqrt","hardlight","difference","abs","exclusion","average","negation","getItemsFromNode","list","_SELF","~","expr","_i","values","range","step","stepValue","each","rs","iterator","tryEval","Quote","valueName","keyName","indexName","MathHelper","fn","mathFunctions","ceil","sin","cos","atan","asin","acos","mathHelper","fraction","num","minMax","isMin","currentUnified","referenceUnified","unitStatic","unitClone","order","convert","pi","mod","y","percentage","evaluated","encodeURI","pattern","flags","%","token","encodeURIComponent","isa","Type","isunit","types","isruleset","iscolor","isnumber","isstring","iskeyword","isurl","ispixel","ispercentage","isem","get-unit","styleExpression","style$1","style","colorBlending","fallback","functionThis","data-uri","mimetypeNode","filePathNode","mimetype","filePath","entryPath","fragmentStart","utils.clone","rawBuffer","useBase64","mimeLookup","charsetLookup","fileSync","loadFileSync","buf","encodeBase64","uri","dataUri","svg-gradient","direction","stops","gradientDirectionSvg","position","positionValue","gradientType","rectangleDimension","renderEnv","directionValue","throwArgumentDescriptor","transformTree","evaldRoot","evalEnv","visitorIterator","preEvalVisitors","isPreEvalVisitor","isPreVisitor","pm","PluginManager","postProcessors","installedPlugins","pluginCache","Loader","PluginLoader","addPlugins","install","addVisitor","addPreProcessor","preProcessor","priority","indexToInsertAt","addPostProcessor","postProcessor","manager","getPostProcessors","getVisitors","PluginManagerFactory","newFactory","parseNodeVersion_1","major","minor","patch","pre","build","lessRoot","sourceMapOutput","sourceMapBuilder","parseTree","SourceMapBuilder","ParseTree","toCSSOptions","sourceMap","file_1","getExternalSourceMap","files","rootFilename","SourceMapOutput","contentsIgnoredCharsMap","contentsMap","sourceMapFilename","sourceMapURL","outputFilename","sourceMapOutputFilename","sourceMapBasepath","sourceMapRootpath","outputSourceFiles","sourceMapGenerator","sourceMapFileInline","disableSourcemapAnnotation","sourceMapInputFilename","normalizeFilename","removeBasepath","getCSSAppendage","setExternalSourceMap","isInline","getSourceMapURL","getOutputFilename","getInputFilename","_css","_rootNode","_contentsMap","_contentsIgnoredCharsMap","_sourceMapFilename","_outputFilename","_sourceMapBasepath","_sourceMapRootpath","_outputSourceFiles","_sourceMapGeneratorConstructor","getSourceMapGenerator","_lineNumber","_column","sourceLines","columns","sourceColumns","inputSource","_sourceMapGenerator","addMapping","generated","source","file","sourceRoot","setSourceContent","sourceMapContent","stringify","toJSON","ImportManager","rootFileInfo","mime","queue","pluginLoader","fileParsedFunc","importedEqualsRoot","newFileInfo","loadedFile","promise","loadFileCallback","resolvedFilename","newEnv","syncImport","loadPluginSync","loadPlugin","loadFile","then","render","utils.copyOptions","self_1","Promise","resolve","reject","Render","context_1","pluginManager_1","reUsePluginManager","imports_1","evalResult","fileContent","parseVersion","initial","ctor","api","fileCache","doXHR","errback","xhr","XMLHttpRequest","async","isFileProtocol","fileAsync","handleResponse","status","responseText","getResponseHeader","overrideMimeType","open","setRequestHeader","send","onreadystatechange","readyState","supports","clearFileCache","location","useFileCache","lessText_1","webInfo","lastModified","Date","FM","log","fulfill","catch","ErrorReporting","rootHref","errorReporting","errors","errorline","classname","logLevel","errorConsole","timer","filenameNoPath","className","innerHTML","env","setInterval","replaceChild","clearInterval","errorHTML","remove","removeErrorHTML","depends","lint","insecure","protocol","poll","hostname","port","onReady","addDefaultOptions","LESS_PLUGINS","loggers","console","LogListener","cache","localStorage","setCSS","setItem","getCSS","getItem","timestamp","valueOf","Cache","imageSize","imageFunctions","image-size","image-width","image-height","ImageSize","typePattern","thisArg","curryArgs","loadStyles","instanceOptions","loadStyleSheet","reload","remaining","local","loadInitialFileCallback","loadStyleSheets","sheets","watch","watchMode","watchTimer","unwatch","registerStylesheetsImmediately","links","rel","registerStylesheets","record","refresh","startTime","endTime","totalMilliseconds","remainingSheets","refreshStyles","resolveOrReject","pageLoadFinished"],"mappings":";;;;;;;;;qOACM,SAAUA,EAAUC,GACtB,OAAOA,EAAKC,QAAQ,qBAAsB,IACrCA,QAAQ,qBAAsB,IAC9BA,QAAQ,MAAO,IACfA,QAAQ,eAAgB,IACxBA,QAAQ,YAAa,KACrBA,QAAQ,MAAO,KAGR,SAAAC,EAAYC,EAASC,GACjC,GAAKA,EACL,IAAK,IAAMC,KAAOD,EAAIE,QAClB,GAAIC,OAAOC,UAAUC,eAAeC,KAAKN,EAAIE,QAASD,GAClD,GAAY,QAARA,GAAyB,oBAARA,GAAqC,aAARA,GAA8B,mBAARA,EACpEF,EAAQE,GAAOD,EAAIE,QAAQD,QAE3B,IACIF,EAAQE,GAAOM,KAAKC,MAAMR,EAAIE,QAAQD,IAE1C,MAAOQ,KClBR,IAAAC,EACA,SAAUC,EAAUC,EAAQC,GAEnC,IAAMjB,EAAOiB,EAAMjB,MAAQ,GAGrBkB,EAAK,QAAQC,OAAAF,EAAMG,OAASC,EAAgBrB,IAG5CsB,EAAeP,EAASQ,eAAeL,GACzCM,GAAmB,EAGjBC,EAAYV,EAASW,cAAc,SACzCD,EAAUE,aAAa,OAAQ,YAC3BV,EAAMW,OACNH,EAAUE,aAAa,QAASV,EAAMW,OAE1CH,EAAUP,GAAKA,EAEVO,EAAUI,aACXJ,EAAUK,YAAYf,EAASgB,eAAef,IAG9CQ,EAAqC,OAAjBF,GAAyBA,EAAaU,WAAWC,OAAS,GAAKR,EAAUO,WAAWC,OAAS,GAC7GX,EAAaY,WAAWC,YAAcV,EAAUS,WAAWC,WAGnE,IAAMC,EAAOrB,EAASsB,qBAAqB,QAAQ,GAInD,GAAqB,OAAjBf,IAA8C,IAArBE,EAA4B,CACrD,IAAMc,EAASrB,GAASA,EAAMsB,aAAe,KACzCD,EACAA,EAAOE,WAAWC,aAAahB,EAAWa,GAE1CF,EAAKN,YAAYL,GAUzB,GAPIH,IAAqC,IAArBE,GAChBF,EAAakB,WAAWE,YAAYpB,GAMpCG,EAAUI,WACV,IACIJ,EAAUI,WAAWc,QAAU3B,EACjC,MAAO4B,GACL,MAAM,IAAIC,MAAM,2CAnDjB/B,EAuDI,SAASgC,GACpB,IAEUC,EAFJhC,EAAW+B,EAAO/B,SACxB,OAAOA,EAASiC,gBACND,EAAUhC,EAASsB,qBAAqB,WAC/BU,EAAQd,OAAS,IC7D7BgB,EAAA,CACXC,MAAO,SAASC,GACZC,KAAKC,WAAW,QAASF,IAE7BG,KAAM,SAASH,GACXC,KAAKC,WAAW,OAAQF,IAE5BI,KAAM,SAASJ,GACXC,KAAKC,WAAW,OAAQF,IAE5BK,MAAO,SAASL,GACZC,KAAKC,WAAW,QAASF,IAE7BM,YAAa,SAASC,GAClBN,KAAKO,WAAWC,KAAKF,IAEzBG,eAAgB,SAASH,GACrB,IAAK,IAAII,EAAI,EAAGA,EAAIV,KAAKO,WAAW1B,OAAQ6B,IACxC,GAAIV,KAAKO,WAAWG,KAAOJ,EAEvB,YADAN,KAAKO,WAAWI,OAAOD,EAAG,IAKtCT,WAAY,SAASW,EAAMb,GACvB,IAAK,IAAIc,EAAI,EAAGA,EAAIb,KAAKO,WAAW1B,OAAQgC,IAAK,CAC7C,IAAMC,EAAcd,KAAKO,WAAWM,GAAGD,GACnCE,GACAA,EAAYf,KAIxBQ,WAAY,ICzBhBQ,EAAA,WACI,SAAYA,EAAAC,EAAqBC,GAC7BjB,KAAKiB,aAAeA,GAAgB,GACpCD,EAAsBA,GAAuB,GAM7C,IAJA,IACME,EAAoB,GACpBC,EAAYD,EAAkBnD,OAFV,CAAC,eAAgB,aAAc,gBAAiB,0BAIjE2C,EAAI,EAAGA,EAAIS,EAAUtC,OAAQ6B,IAAK,CACvC,IAAMU,EAAWD,EAAUT,GACrBW,EAAkBL,EAAoBI,GACxCC,EACArB,KAAKoB,GAAYC,EAAgBC,KAAKN,GAC/BN,EAAIQ,EAAkBrC,QAC7BmB,KAAKE,KAAK,qDAA8CkB,KAkCxE,OA7BIL,EAAc3D,UAAAmE,eAAd,SAAeC,EAAUC,EAAkB1E,EAAS2E,EAAaC,GAExDH,GACDI,EAAO1B,KAAK,uFAES2B,IAArBJ,GACAG,EAAO1B,KAAK,qFAGhB,IAAIe,EAAejB,KAAKiB,aACpBlE,EAAQ+E,gBACRb,EAAe,GAAGlD,OAAOkD,GAAclD,OAAOhB,EAAQ+E,cAAcC,oBAExE,IAAK,IAAIlB,EAAII,EAAapC,OAAS,EAAGgC,GAAK,EAAIA,IAAK,CAChD,IAAMmB,EAAcf,EAAaJ,GACjC,GAAImB,EAAYL,EAAS,eAAiB,YAAYH,EAAUC,EAAkB1E,EAAS2E,GACvF,OAAOM,EAGf,OAAO,MAGXjB,EAAc3D,UAAA6E,eAAd,SAAeD,GACXhC,KAAKiB,aAAaT,KAAKwB,IAG3BjB,EAAA3D,UAAA8E,kBAAA,WACIlC,KAAKiB,aAAe,IAE3BF,KCxDcoB,EAAA,CACXC,UAAY,UACZC,aAAe,UACfC,KAAO,UACPC,WAAa,UACbC,MAAQ,UACRC,MAAQ,UACRC,OAAS,UACTC,MAAQ,UACRC,eAAiB,UACjBC,KAAO,UACPC,WAAa,UACbC,MAAQ,UACRC,UAAY,UACZC,UAAY,UACZC,WAAa,UACbC,UAAY,UACZC,MAAQ,UACRC,eAAiB,UACjBC,SAAW,UACXC,QAAU,UACVC,KAAO,UACPC,SAAW,UACXC,SAAW,UACXC,cAAgB,UAChBC,SAAW,UACXC,SAAW,UACXC,UAAY,UACZC,UAAY,UACZC,YAAc,UACdC,eAAiB,UACjBC,WAAa,UACbC,WAAa,UACbC,QAAU,UACVC,WAAa,UACbC,aAAe,UACfC,cAAgB,UAChBC,cAAgB,UAChBC,cAAgB,UAChBC,cAAgB,UAChBC,WAAa,UACbC,SAAW,UACXC,YAAc,UACdC,QAAU,UACVC,QAAU,UACVC,WAAa,UACbC,UAAY,UACZC,YAAc,UACdC,YAAc,UACdC,QAAU,UACVC,UAAY,UACZC,WAAa,UACbC,KAAO,UACPC,UAAY,UACZC,KAAO,UACPC,KAAO,UACPC,MAAQ,UACRC,YAAc,UACdC,SAAW,UACXC,QAAU,UACVC,UAAY,UACZC,OAAS,UACTC,MAAQ,UACRC,MAAQ,UACRC,SAAW,UACXC,cAAgB,UAChBC,UAAY,UACZC,aAAe,UACfC,UAAY,UACZC,WAAa,UACbC,UAAY,UACZC,qBAAuB,UACvBC,UAAY,UACZC,UAAY,UACZC,WAAa,UACbC,UAAY,UACZC,YAAc,UACdC,cAAgB,UAChBC,aAAe,UACfC,eAAiB,UACjBC,eAAiB,UACjBC,eAAiB,UACjBC,YAAc,UACdC,KAAO,UACPC,UAAY,UACZC,MAAQ,UACRC,QAAU,UACVC,OAAS,UACTC,iBAAmB,UACnBC,WAAa,UACbC,aAAe,UACfC,aAAe,UACfC,eAAiB,UACjBC,gBAAkB,UAClBC,kBAAoB,UACpBC,gBAAkB,UAClBC,gBAAkB,UAClBC,aAAe,UACfC,UAAY,UACZC,UAAY,UACZC,SAAW,UACXC,YAAc,UACdC,KAAO,UACPC,QAAU,UACVC,MAAQ,UACRC,UAAY,UACZC,OAAS,UACTC,UAAY,UACZC,OAAS,UACTC,cAAgB,UAChBC,UAAY,UACZC,cAAgB,UAChBC,cAAgB,UAChBC,WAAa,UACbC,UAAY,UACZC,KAAO,UACPC,KAAO,UACPC,KAAO,UACPC,WAAa,UACbC,OAAS,UACTC,cAAgB,UAChBC,IAAM,UACNC,UAAY,UACZC,UAAY,UACZC,YAAc,UACdC,OAAS,UACTC,WAAa,UACbC,SAAW,UACXC,SAAW,UACXC,OAAS,UACTC,OAAS,UACTC,QAAU,UACVC,UAAY,UACZC,UAAY,UACZC,UAAY,UACZC,KAAO,UACPC,YAAc,UACdC,UAAY,UACZC,IAAM,UACNC,KAAO,UACPC,QAAU,UACVC,OAAS,UACTC,UAAY,UACZC,OAAS,UACTC,MAAQ,UACRC,MAAQ,UACRC,WAAa,UACbC,OAAS,UACTC,YAAc,WCpJHC,EAAA,CACX3M,OAAQ,CACJ4M,EAAK,EACLC,GAAM,IACNC,GAAM,KACNC,GAAM,MACNC,GAAM,MAAS,GACfC,GAAM,MAAS,GACfC,GAAM,MAAS,GAAK,IAExBC,SAAU,CACNC,EAAK,EACLC,GAAM,MAEVC,MAAO,CACHC,IAAO,GAAK,EAAIC,KAAKC,IACrBC,IAAO,EAAI,IACXC,KAAQ,EAAI,IACZC,KAAQ,ICfDC,EAAA,CAAEvK,OAAMA,EAAEqJ,gBAAeA,GCGxCmB,EAAA,WACI,SAAAA,IACI3M,KAAK4M,OAAS,KACd5M,KAAK6M,sBAAmBhL,EACxB7B,KAAK8M,iBAAcjL,EACnB7B,KAAK+M,SAAW,KAChB/M,KAAKgN,OAAS,KA2KtB,OAxKI7P,OAAA8P,eAAIN,EAAevP,UAAA,kBAAA,CAAnB8P,IAAA,WACI,OAAOlN,KAAKmN,4CAGhBhQ,OAAA8P,eAAIN,EAAKvP,UAAA,QAAA,CAAT8P,IAAA,WACI,OAAOlN,KAAKoN,4CAGhBT,EAAAvP,UAAAiQ,UAAA,SAAUC,EAAOV,GACb,SAASW,EAAIC,GACLA,GAAQA,aAAgBb,IACxBa,EAAKZ,OAASA,GAGlBa,MAAMC,QAAQJ,GACdA,EAAMK,QAAQJ,GAGdA,EAAID,IAIZX,EAAAvP,UAAAgQ,SAAA,WACI,OAAOpN,KAAK4N,QAAW5N,KAAK4M,QAAU5M,KAAK4M,OAAOQ,YAAe,GAGrET,EAAAvP,UAAA+P,SAAA,WACI,OAAOnN,KAAK6N,WAAc7N,KAAK4M,QAAU5M,KAAK4M,OAAOO,YAAe,IAGxER,EAAAvP,UAAA0Q,cAAA,WAAkB,OAAO,GAEzBnB,EAAKvP,UAAA2Q,MAAL,SAAMC,GACF,IAAMC,EAAO,GAWb,OAVAjO,KAAKkO,OAAOF,EAAS,CAGjBG,IAAK,SAASC,EAAOjB,EAAUkB,GAC3BJ,EAAKzN,KAAK4N,IAEdE,QAAS,WACL,OAAuB,IAAhBL,EAAKpP,UAGboP,EAAKM,KAAK,KAGrB5B,EAAAvP,UAAA8Q,OAAA,SAAOF,EAASQ,GACZA,EAAOL,IAAInO,KAAKyO,QAGpB9B,EAAMvP,UAAAsR,OAAN,SAAOC,GACH3O,KAAKyO,MAAQE,EAAQC,MAAM5O,KAAKyO,QAGpC9B,EAAAvP,UAAAyR,KAAA,WAAS,OAAO7O,MAEhB2M,EAAQvP,UAAA0R,SAAR,SAASd,EAASe,EAAIC,EAAGC,GACrB,OAAQF,GACJ,IAAK,IAAK,OAAOC,EAAIC,EACrB,IAAK,IAAK,OAAOD,EAAIC,EACrB,IAAK,IAAK,OAAOD,EAAIC,EACrB,IAAK,IAAK,OAAOD,EAAIC,IAI7BtC,EAAAvP,UAAA8R,OAAA,SAAOlB,EAASS,GACZ,IAAMU,EAAYnB,GAAWA,EAAQoB,aAErC,OAAO,EAAcC,QAAQZ,EAAQ,OAAOa,QAAQH,IAAcV,GAG/D9B,EAAA4C,QAAP,SAAeP,EAAGC,GAOd,GAAKD,EAAS,SAGG,WAAXC,EAAErO,MAAgC,cAAXqO,EAAErO,KAC3B,OAAOoO,EAAEO,QAAQN,GACd,GAAIA,EAAEM,QACT,OAAQN,EAAEM,QAAQP,GACf,GAAIA,EAAEpO,OAASqO,EAAErO,KAAjB,CAMP,GAFAoO,EAAIA,EAAEP,MACNQ,EAAIA,EAAER,OACDhB,MAAMC,QAAQsB,GACf,OAAOA,IAAMC,EAAI,OAAIpN,EAEzB,GAAImN,EAAEnQ,SAAWoQ,EAAEpQ,OAAnB,CAGA,IAAK,IAAI6B,EAAI,EAAGA,EAAIsO,EAAEnQ,OAAQ6B,IAC1B,GAAiC,IAA7BiM,EAAK4C,QAAQP,EAAEtO,GAAIuO,EAAEvO,IACrB,OAGR,OAAO,KAGJiM,EAAA6C,eAAP,SAAsBR,EAAGC,GACrB,OAAOD,EAAMC,GAAK,EACZD,IAAMC,EAAK,EACPD,EAAMC,EAAK,OAAIpN,GAI7B8K,EAAAvP,UAAAqS,iBAAA,WAII,YAH8B5N,IAA1B7B,KAAK6M,mBACL7M,KAAK6M,iBAAmB,GAEK,IAA1B7M,KAAK6M,kBAGhBF,EAAAvP,UAAAsS,mBAAA,gBACkC7N,IAA1B7B,KAAK6M,mBACL7M,KAAK6M,iBAAmB,GAE5B7M,KAAK6M,iBAAmB7M,KAAK6M,iBAAmB,GAGpDF,EAAAvP,UAAAuS,sBAAA,gBACkC9N,IAA1B7B,KAAK6M,mBACL7M,KAAK6M,iBAAmB,GAE5B7M,KAAK6M,iBAAmB7M,KAAK6M,iBAAmB,GAKpDF,EAAAvP,UAAAwS,iBAAA,WACI5P,KAAK8M,aAAc,GAKvBH,EAAAvP,UAAAyS,mBAAA,WACI7P,KAAK8M,aAAc,GAOvBH,EAAAvP,UAAA0S,UAAA,WACI,OAAO9P,KAAK8M,aAGhBH,EAAAvP,UAAA2S,eAAA,WACI,MAAO,CACHlD,iBAAkB7M,KAAK6M,iBACvBC,YAAa9M,KAAK8M,cAI1BH,EAAkBvP,UAAA4S,mBAAlB,SAAmB7P,GACVA,IAGLH,KAAK6M,iBAAmB1M,EAAK0M,iBAC7B7M,KAAK8M,YAAc3M,EAAK2M,cAE/BH,KCjLKsD,EAAQ,SAASC,EAAKlB,EAAGmB,GAC3B,IAAMC,EAAOpQ,KAOTyN,MAAMC,QAAQwC,GACdlQ,KAAKkQ,IAAMA,EACJA,EAAIrR,QAAU,GACrBmB,KAAKkQ,IAAM,GACXA,EAAIG,MAAM,SAASC,KAAI,SAAUC,EAAGC,GAC5BA,EAAI,EACJJ,EAAKF,IAAI1P,KAAKiQ,SAASF,EAAG,KAE1BH,EAAKM,MAASD,SAASF,EAAG,IAAO,SAIzCvQ,KAAKkQ,IAAM,GACXA,EAAIS,MAAM,IAAIL,KAAI,SAAUC,EAAGC,GACvBA,EAAI,EACJJ,EAAKF,IAAI1P,KAAKiQ,SAASF,EAAIA,EAAG,KAE9BH,EAAKM,MAASD,SAASF,EAAIA,EAAG,IAAO,QAIjDvQ,KAAK0Q,MAAQ1Q,KAAK0Q,QAAuB,iBAAN1B,EAAiBA,EAAI,QAC5B,IAAjBmB,IACPnQ,KAAKyO,MAAQ0B,IAgMrB,SAASS,EAAMC,EAAGC,GACd,OAAOzE,KAAK0E,IAAI1E,KAAKyE,IAAID,EAAG,GAAIC,GAGpC,SAASE,EAAMH,GACX,MAAO,WAAIA,EAAEP,KAAI,SAAUC,GAEvB,QADAA,EAAIK,EAAMvE,KAAK4E,MAAMV,GAAI,MACb,GAAK,IAAM,IAAMA,EAAEW,SAAS,OACzC3C,KAAK,KApMZ0B,EAAM7S,UAAYD,OAAOgU,OAAO,IAAIxE,EAAQ,CACxC/L,KAAM,QAENwQ,KAAI,WACA,IAAIC,EAAIrR,KAAKkQ,IAAI,GAAK,IAAKoB,EAAItR,KAAKkQ,IAAI,GAAK,IAAKjB,EAAIjP,KAAKkQ,IAAI,GAAK,IAMpE,MAAO,OAJPmB,EAAKA,GAAK,OAAWA,EAAI,MAAQhF,KAAKkF,KAAMF,EAAI,MAAS,MAAQ,MAI7C,OAHpBC,EAAKA,GAAK,OAAWA,EAAI,MAAQjF,KAAKkF,KAAMD,EAAI,MAAS,MAAQ,MAGhC,OAFjCrC,EAAKA,GAAK,OAAWA,EAAI,MAAQ5C,KAAKkF,KAAMtC,EAAI,MAAS,MAAQ,OAKrEf,OAAM,SAACF,EAASQ,GACZA,EAAOL,IAAInO,KAAK+N,MAAMC,KAG1BD,MAAK,SAACC,EAASwD,GACX,IACIC,EACAf,EACAgB,EAHEC,EAAW3D,GAAWA,EAAQ2D,WAAaH,EAI7CI,EAAO,GAOX,GAFAlB,EAAQ1Q,KAAKkP,OAAOlB,EAAShO,KAAK0Q,OAE9B1Q,KAAKyO,MACL,GAAkC,IAA9BzO,KAAKyO,MAAMoD,QAAQ,OACfnB,EAAQ,IACRgB,EAAgB,YAEjB,CAAA,GAAkC,IAA9B1R,KAAKyO,MAAMoD,QAAQ,OAO1B,OAAO7R,KAAKyO,MALRiD,EADAhB,EAAQ,EACQ,OAEA,WAMpBA,EAAQ,IACRgB,EAAgB,QAIxB,OAAQA,GACJ,IAAK,OACDE,EAAO5R,KAAKkQ,IAAII,KAAI,SAAUC,GAC1B,OAAOK,EAAMvE,KAAK4E,MAAMV,GAAI,QAC7BxS,OAAO6S,EAAMF,EAAO,IACvB,MACJ,IAAK,OACDkB,EAAKpR,KAAKoQ,EAAMF,EAAO,IAE3B,IAAK,MACDe,EAAQzR,KAAK8R,QACbF,EAAO,CACH5R,KAAKkP,OAAOlB,EAASyD,EAAMM,GAC3B,GAAAhU,OAAGiC,KAAKkP,OAAOlB,EAAmB,IAAVyD,EAAMxF,GAAW,KACzC,GAAAlO,OAAGiC,KAAKkP,OAAOlB,EAAmB,IAAVyD,EAAMO,GAAW,MAC3CjU,OAAO6T,GAGjB,GAAIF,EAEA,MAAO,GAAA3T,OAAG2T,EAAiB,KAAA3T,OAAA6T,EAAKrD,KAAK,WAAIoD,EAAW,GAAK,WAK7D,GAFAF,EAAQzR,KAAKiS,QAETN,EAAU,CACV,IAAMO,EAAaT,EAAMd,MAAM,IAG3BuB,EAAW,KAAOA,EAAW,IAAMA,EAAW,KAAOA,EAAW,IAAMA,EAAW,KAAOA,EAAW,KACnGT,EAAQ,IAAI1T,OAAAmU,EAAW,IAAKnU,OAAAmU,EAAW,IAAKnU,OAAAmU,EAAW,KAI/D,OAAOT,GASXU,QAAQ,SAAAnE,EAASe,EAAIqD,GAGjB,IAFA,IAAMlC,EAAM,IAAIzC,MAAM,GAChBiD,EAAQ1Q,KAAK0Q,OAAS,EAAI0B,EAAM1B,OAAS0B,EAAM1B,MAC5CH,EAAI,EAAGA,EAAI,EAAGA,IACnBL,EAAIK,GAAKvQ,KAAK8O,SAASd,EAASe,EAAI/O,KAAKkQ,IAAIK,GAAI6B,EAAMlC,IAAIK,IAE/D,OAAO,IAAIN,EAAMC,EAAKQ,IAG1BuB,MAAK,WACD,OAAOjB,EAAMhR,KAAKkQ,MAGtB4B,MAAK,WACD,IAGIC,EACA9F,EAJEoF,EAAIrR,KAAKkQ,IAAI,GAAK,IAAKoB,EAAItR,KAAKkQ,IAAI,GAAK,IAAKjB,EAAIjP,KAAKkQ,IAAI,GAAK,IAAKlB,EAAIhP,KAAK0Q,MAE9EI,EAAMzE,KAAKyE,IAAIO,EAAGC,EAAGrC,GAAI8B,EAAM1E,KAAK0E,IAAIM,EAAGC,EAAGrC,GAG9C+C,GAAKlB,EAAMC,GAAO,EAClBsB,EAAIvB,EAAMC,EAEhB,GAAID,IAAQC,EACRgB,EAAI9F,EAAI,MACL,CAGH,OAFAA,EAAI+F,EAAI,GAAMK,GAAK,EAAIvB,EAAMC,GAAOsB,GAAKvB,EAAMC,GAEvCD,GACJ,KAAKO,EAAGU,GAAKT,EAAIrC,GAAKoD,GAAKf,EAAIrC,EAAI,EAAI,GAAI,MAC3C,KAAKqC,EAAGS,GAAK9C,EAAIoC,GAAKgB,EAAI,EAAiB,MAC3C,KAAKpD,EAAG8C,GAAKV,EAAIC,GAAKe,EAAI,EAE9BN,GAAK,EAET,MAAO,CAAEA,EAAO,IAAJA,EAAS9F,EAACA,EAAE+F,EAACA,EAAEhD,EAACA,IAIhCsD,MAAK,WACD,IAGIP,EACA9F,EAJEoF,EAAIrR,KAAKkQ,IAAI,GAAK,IAAKoB,EAAItR,KAAKkQ,IAAI,GAAK,IAAKjB,EAAIjP,KAAKkQ,IAAI,GAAK,IAAKlB,EAAIhP,KAAK0Q,MAE9EI,EAAMzE,KAAKyE,IAAIO,EAAGC,EAAGrC,GAAI8B,EAAM1E,KAAK0E,IAAIM,EAAGC,EAAGrC,GAG9C4B,EAAIC,EAEJuB,EAAIvB,EAAMC,EAOhB,GALI9E,EADQ,IAAR6E,EACI,EAEAuB,EAAIvB,EAGRA,IAAQC,EACRgB,EAAI,MACD,CACH,OAAQjB,GACJ,KAAKO,EAAGU,GAAKT,EAAIrC,GAAKoD,GAAKf,EAAIrC,EAAI,EAAI,GAAI,MAC3C,KAAKqC,EAAGS,GAAK9C,EAAIoC,GAAKgB,EAAI,EAAG,MAC7B,KAAKpD,EAAG8C,GAAKV,EAAIC,GAAKe,EAAI,EAE9BN,GAAK,EAET,MAAO,CAAEA,EAAO,IAAJA,EAAS9F,EAACA,EAAE4E,EAACA,EAAE7B,EAACA,IAGhCuD,OAAM,WACF,OAAOvB,EAAM,CAAc,IAAbhR,KAAK0Q,OAAa3S,OAAOiC,KAAKkQ,OAGhDX,iBAAQiD,GACJ,OAAQA,EAAEtC,KACNsC,EAAEtC,IAAI,KAAOlQ,KAAKkQ,IAAI,IACtBsC,EAAEtC,IAAI,KAAOlQ,KAAKkQ,IAAI,IACtBsC,EAAEtC,IAAI,KAAOlQ,KAAKkQ,IAAI,IACtBsC,EAAE9B,QAAW1Q,KAAK0Q,MAAS,OAAI7O,KAI3CoO,EAAMwC,YAAc,SAASC,GACzB,IAAInC,EACEoC,EAAMD,EAAQE,cASpB,GAPIzQ,EAAO9E,eAAesV,GACtBpC,EAAI,IAAIN,EAAM9N,EAAOwQ,GAAKE,MAAM,IAEnB,gBAARF,IACLpC,EAAI,IAAIN,EAAM,CAAC,EAAG,EAAG,GAAI,IAGzBM,EAEA,OADAA,EAAE9B,MAAQiE,EACHnC,GC/Nf,IAAMuC,EAAQ,SAAStF,GACnBxN,KAAKyO,MAAQjB,GAGjBsF,EAAM1V,UAAYD,OAAOgU,OAAO,IAAIxE,EAAQ,CACxC/L,KAAM,QAENsN,OAAM,SAACF,EAASQ,GACZA,EAAOL,IAAI,KACXnO,KAAKyO,MAAMP,OAAOF,EAASQ,GAC3BA,EAAOL,IAAI,MAGfU,cAAKb,GACD,OAAO,IAAI8E,EAAM9S,KAAKyO,MAAMI,KAAKb,OCfzC,IAAM+E,EAAsB,CACxB,IAAI,EACJC,KAAK,EACLC,KAAK,GAGHC,EAAa,SAASzE,GACV,MAAVA,GACAzO,KAAKyO,MAAQ,IACbzO,KAAKmT,mBAAoB,IAEzBnT,KAAKyO,MAAQA,EAAQA,EAAM2E,OAAS,GACpCpT,KAAKmT,kBAAmC,KAAfnT,KAAKyO,QAItCyE,EAAW9V,UAAYD,OAAOgU,OAAO,IAAIxE,EAAQ,CAC7C/L,KAAM,aAENsN,OAAM,SAACF,EAASQ,GACZ,IAAM6E,EAAgBrF,EAAQ2D,UAAYoB,EAAoB/S,KAAKyO,OAAU,GAAK,IAClFD,EAAOL,IAAIkF,EAAerT,KAAKyO,MAAQ4E,MClB/C,IAAMC,EAAU,SAASC,EAAY9E,EAAO+E,EAAYnF,EAAOoF,EAAiB1D,GAC5E/P,KAAKuT,WAAaA,aAAsBL,EACpCK,EAAa,IAAIL,EAAWK,GAG5BvT,KAAKyO,MADY,iBAAVA,EACMA,EAAM2E,OACZ3E,GAGM,GAEjBzO,KAAKwT,WAAaA,EAClBxT,KAAK4N,OAASS,EACdrO,KAAK6N,UAAY4F,EACjBzT,KAAKgQ,mBAAmBD,GACxB/P,KAAKqN,UAAUrN,KAAKuT,WAAYvT,OAGpCsT,EAAQlW,UAAYD,OAAOgU,OAAO,IAAIxE,EAAQ,CAC1C/L,KAAM,UAEN8N,gBAAOC,GACH,IAAMF,EAAQzO,KAAKyO,MACnBzO,KAAKuT,WAAa5E,EAAQC,MAAM5O,KAAKuT,YAChB,iBAAV9E,IACPzO,KAAKyO,MAAQE,EAAQC,MAAMH,KAInCI,cAAKb,GACD,OAAO,IAAIsF,EAAQtT,KAAKuT,WACpBvT,KAAKyO,MAAMI,KAAO7O,KAAKyO,MAAMI,KAAKb,GAAWhO,KAAKyO,MAClDzO,KAAKwT,WACLxT,KAAKoN,WACLpN,KAAKmN,WAAYnN,KAAK+P,mBAG9B2D,MAAK,WACD,OAAO,IAAIJ,EAAQtT,KAAKuT,WACpBvT,KAAKyO,MACLzO,KAAKwT,WACLxT,KAAKoN,WACLpN,KAAKmN,WAAYnN,KAAK+P,mBAG9B7B,OAAM,SAACF,EAASQ,GACZA,EAAOL,IAAInO,KAAK+N,MAAMC,GAAUhO,KAAKmN,WAAYnN,KAAKoN,aAG1DW,eAAMC,GACFA,EAAUA,GAAW,GACrB,IAAIS,EAAQzO,KAAKyO,MACXkF,EAAgB3F,EAAQ2F,cAQ9B,OAPIlF,aAAiBqE,IAGjB9E,EAAQ2F,eAAgB,GAE5BlF,EAAQA,EAAMV,MAAQU,EAAMV,MAAMC,GAAWS,EAC7CT,EAAQ2F,cAAgBA,EACV,KAAVlF,GAAoD,MAApCzO,KAAKuT,WAAW9E,MAAMmF,OAAO,GACtC,GAEA5T,KAAKuT,WAAWxF,MAAMC,GAAWS,KClE7C,IAAMpC,EAAO,CAChBwH,OAAQ,EACRC,gBAAiB,EACjBC,OAAQ,GAICC,EACJ,EADIA,EAEF,EAFEA,EAGJ,ECLT,SAASC,EAAQC,GACb,OAAO/W,OAAOC,UAAU8T,SAAS5T,KAAK4W,GAASrB,MAAM,GAAI,GA8F7D,SAASnF,EAAQwG,GACb,MAA4B,UAArBD,EAAQC,GC3EnB,SAASC,EAAKC,EAAQrX,EAAU,IAC5B,GAAI2Q,EAAQ0G,GACR,OAAOA,EAAO9D,IAAK+D,GAASF,EAAKE,EAAMtX,IAE3C,GDGyB,WAArBkX,EADeC,ECFAE,IDKZF,EAAQI,cAAgBnX,QAAUA,OAAOoX,eAAeL,KAAa/W,OAAOC,UCJ/E,OAAOgX,EDCf,IAAuBF,ECGnB,MAAO,IAFO/W,OAAOqX,oBAAoBJ,MACzBjX,OAAOsX,sBAAsBL,IACfM,OAAO,CAACC,EAAOhC,KACzC,GAAIjF,EAAQ3Q,EAAQ6X,SAAW7X,EAAQ6X,MAAMC,SAASlC,GAClD,OAAOgC,EAKX,OAzCR,SAAoBA,EAAOhC,EAAKmC,EAAQC,EAAgBC,GACpD,MAAMC,EAAW,GAAGC,qBAAqB5X,KAAKyX,EAAgBpC,GACxD,aACA,gBACW,eAAbsC,IACAN,EAAMhC,GAAOmC,GACbE,GAAqC,kBAAbC,GACxB9X,OAAO8P,eAAe0H,EAAOhC,EAAK,CAC9BlE,MAAOqG,EACPK,YAAY,EACZC,UAAU,EACVC,cAAc,IA6BlBC,CAAWX,EAAOhC,EADHwB,EADHC,EAAOzB,GACM5V,GACMqX,EAAQrX,EAAQwY,eACxCZ,GACR,ICxCS,SAAAa,EAAYnH,EAAOoH,GAK/B,IAJA,IAAIC,EAAIrH,EAAQ,EACZsH,EAAO,KACPC,GAAU,IAELF,GAAK,GAA+B,OAA1BD,EAAY7B,OAAO8B,IAClCE,IAOJ,MAJqB,iBAAVvH,IACPsH,GAAQF,EAAY5C,MAAM,EAAGxE,GAAOgC,MAAM,QAAU,IAAIxR,QAGrD,CACH8W,KAAIA,EACJC,OAAMA,GAIR,SAAUC,EAAUC,GACtB,IAAItF,EACE3R,EAASiX,EAAIjX,OACbsV,EAAO,IAAI1G,MAAM5O,GAEvB,IAAK2R,EAAI,EAAGA,EAAI3R,EAAQ2R,IACpB2D,EAAK3D,GAAKsF,EAAItF,GAElB,OAAO2D,EAGL,SAAUT,EAAMqC,GAClB,IAAMC,EAAS,GACf,IAAK,IAAMC,KAAQF,EACX5Y,OAAOC,UAAUC,eAAeC,KAAKyY,EAAKE,KAC1CD,EAAOC,GAAQF,EAAIE,IAG3B,OAAOD,EAGK,SAAAE,EAASC,EAAMC,GAC3B,IAAIC,EAASD,GAAQ,GACrB,IAAKA,EAAKE,UAAW,CACjBD,EAAS,GACT,IAAME,EAAWpC,EAAKgC,GACtBE,EAAOC,UAAYC,EACnB,IAAMP,EAASI,EAAOjC,EAAKiC,GAAQ,GACnCjZ,OAAOgU,OAAOkF,EAAQE,EAAUP,GAEpC,OAAOK,EAGK,SAAAG,EAAYL,EAAMC,GAC9B,GAAIA,GAAQA,EAAKE,UACb,OAAOF,EAEX,IAAMK,EAAOP,EAASC,EAAMC,GAQ5B,GAPIK,EAAKC,aACLD,EAAKE,KAAOC,EAAe7C,QAG3B0C,EAAKI,eACLJ,EAAKK,YAAcC,GAEE,iBAAdN,EAAKE,KACZ,OAAQF,EAAKE,KAAK/D,eACd,IAAK,SACD6D,EAAKE,KAAOC,EAAe/C,OAC3B,MACJ,IAAK,kBACD4C,EAAKE,KAAOC,EAAe9C,gBAC3B,MACJ,IAAK,SACL,IAAK,SACD2C,EAAKE,KAAOC,EAAe7C,OAC3B,MACJ,QACI0C,EAAKE,KAAOC,EAAe7C,OAGvC,GAAgC,iBAArB0C,EAAKK,YACZ,OAAQL,EAAKK,YAAYlE,eACrB,IAAK,MACD6D,EAAKK,YAAcC,EACnB,MACJ,IAAK,QACDN,EAAKK,YAAcC,EACnB,MACJ,IAAK,MACDN,EAAKK,YAAcC,EAI/B,OAAON,EAYK,SAAAO,EAAalB,EAAKmB,QAAA,IAAAA,IAAAA,EAAW,IACzC,IAAK,IAAIvW,EAAI,EAAGwW,EAASpB,EAAIjX,OAAQ6B,EAAIwW,EAAQxW,IAAK,CAClD,IAAM+N,EAAQqH,EAAIpV,GACd+M,MAAMC,QAAQe,GACduI,EAAavI,EAAOwI,QAENpV,IAAV4M,GACAwI,EAAOzW,KAAKiO,GAIxB,OAAOwI,EAGL,SAAUE,EAAkBC,GAC9B,OAAOA,MAAAA,uGAxBK,SAAMjB,EAAMC,GACxB,IAAK,IAAMH,KAAQG,EACXjZ,OAAOC,UAAUC,eAAeC,KAAK8Y,EAAMH,KAC3CE,EAAKF,GAAQG,EAAKH,IAG1B,OAAOE,wCCxGLkB,EAAgB,qCAwBhBC,EAAY,SAAS9X,EAAG+X,EAAgBC,GAC1C/X,MAAMnC,KAAK0C,MAEX,IAAMwB,EAAWhC,EAAEgC,UAAYgW,EAK/B,GAHAxX,KAAKyX,QAAUjY,EAAEiY,QACjBzX,KAAK0X,MAAQlY,EAAEkY,MAEXH,GAAkB/V,EAAU,CAC5B,IAAMmW,EAAQJ,EAAeK,SAASpW,GAChCqW,EAAMC,EAAkBtY,EAAE6O,MAAOsJ,GACnChC,EAAOkC,EAAIlC,KACToC,EAAOF,EAAIjC,OACXoC,EAAWxY,EAAElC,MAAQwa,EAAkBtY,EAAElC,KAAMqa,GAAOhC,KACtDsC,EAAQN,EAAQA,EAAMhH,MAAM,MAAQ,GAQ1C,GANA3Q,KAAKY,KAAOpB,EAAEoB,MAAQ,SACtBZ,KAAKwB,SAAWA,EAChBxB,KAAKqO,MAAQ7O,EAAE6O,MACfrO,KAAK2V,KAAuB,iBAATA,EAAoBA,EAAO,EAAI,KAClD3V,KAAK4V,OAASmC,GAET/X,KAAK2V,MAAQ3V,KAAK0X,MAAO,CAC1B,IAAMQ,EAAQlY,KAAK0X,MAAMrH,MAAMgH,GASzBc,EAAO,IAAIC,SAAS,IAAK,qBAC3BC,EAAa,EACjB,IACIF,IACF,MAAO3Y,GACL,IAAM6Q,EAAQ7Q,EAAEkY,MAAMrH,MAAMgH,GAC5BgB,EAAa,EAAI5H,SAASJ,EAAM,IAGhC6H,IACIA,EAAM,KACNlY,KAAK2V,KAAOlF,SAASyH,EAAM,IAAMG,GAEjCH,EAAM,KACNlY,KAAK4V,OAASnF,SAASyH,EAAM,MAKzClY,KAAKgY,SAAWA,EAAW,EAC3BhY,KAAKsY,YAAcL,EAAMD,GAEzBhY,KAAKuY,QAAU,CACXN,EAAMjY,KAAK2V,KAAO,GAClBsC,EAAMjY,KAAK2V,KAAO,GAClBsC,EAAMjY,KAAK2V,SAMvB,QAA6B,IAAlBxY,OAAOqb,OAAwB,CACtC,IAAMC,EAAI,aACVA,EAAErb,UAAYqC,MAAMrC,UACpBka,EAAUla,UAAY,IAAIqb,OAE1BnB,EAAUla,UAAYD,OAAOqb,OAAO/Y,MAAMrC,WAG9Cka,EAAUla,UAAUkX,YAAcgD,EASlCA,EAAUla,UAAU8T,SAAW,SAASnU,SACpCA,EAAUA,GAAW,GACrB,IAAM2b,GAA0B,UAAb1Y,KAAKY,YAAQ,IAAA+X,EAAAA,EAAA,IAAI/F,cAAciC,SAAS,WACrDjU,EAAO8X,EAAY1Y,KAAKY,KAAO,GAAA7C,OAAGiC,KAAKY,cACvC6Q,EAAQiH,EAAY,SAAW,MAEjCjB,EAAU,GACRc,EAAUvY,KAAKuY,SAAW,GAC5BzY,EAAQ,GACR8Y,EAAU,SAAUC,GAAO,OAAOA,GACtC,GAAI9b,EAAQ6b,QAAS,CACjB,IAAME,SAAc/b,EAAQ6b,QAC5B,GAAa,aAATE,EACA,MAAMrZ,MAAM,+CAAA1B,OAA+C+a,EAAI,MAEnEF,EAAU7b,EAAQ6b,QAGtB,GAAkB,OAAd5Y,KAAK2V,KAAe,CAKpB,GAJK+C,GAAmC,iBAAfH,EAAQ,IAC7BzY,EAAMU,KAAKoY,EAAQ,GAAG7a,OAAAiC,KAAK2V,KAAO,EAAK,KAAA5X,OAAAwa,EAAQ,IAAM,SAG/B,iBAAfA,EAAQ,GAAiB,CAChC,IAAIQ,EAAW,GAAAhb,OAAGiC,KAAK2V,UACnB4C,EAAQ,KACRQ,GAAYR,EAAQ,GAAG1F,MAAM,EAAG7S,KAAK4V,QACjCgD,EAAQA,EAAQA,EAAQL,EAAQ,GAAGS,OAAOhZ,KAAK4V,OAAQ,GAAI,QACvD2C,EAAQ,GAAG1F,MAAM7S,KAAK4V,OAAS,GAAI,OAAQ,YAEvD9V,EAAMU,KAAKuY,GAGVL,GAAmC,iBAAfH,EAAQ,IAC7BzY,EAAMU,KAAKoY,EAAQ,GAAG7a,OAAAiC,KAAK2V,KAAO,EAAK,KAAA5X,OAAAwa,EAAQ,IAAM,SAEzDzY,EAAQ,GAAG/B,OAAA+B,EAAMyO,KAAK,MAAQqK,EAAQ,GAAI,eAkB9C,OAfAnB,GAAWmB,EAAQ,GAAA7a,OAAG6C,EAAI,MAAA7C,OAAKiC,KAAKyX,SAAWhG,GAC3CzR,KAAKwB,WACLiW,GAAWmB,EAAQ,OAAQnH,GAASzR,KAAKwB,UAEzCxB,KAAK2V,OACL8B,GAAWmB,EAAQ,YAAY7a,OAAAiC,KAAK2V,KAAI,aAAA5X,OAAYiC,KAAK4V,OAAS,OAAM,SAG5E6B,GAAW,KAAA1Z,OAAK+B,GAEZE,KAAKgY,WACLP,GAAW,GAAG1Z,OAAA6a,EAAQ,QAASnH,IAAUzR,KAAKwB,UAAY,UAC1DiW,GAAW,GAAA1Z,OAAG6a,EAAQ5Y,KAAKgY,SAAU,QAAW,KAAAja,OAAAiC,KAAKsY,mBAGlDb,GC9JX,IAAMwB,EAAa,CAAEC,aAAa,GAC9BC,GAAc,EAElB,SAASC,EAAM5L,GACX,OAAOA,EA0BX,IAAA6L,EAAA,WACI,SAAAA,EAAYC,GACRtZ,KAAKuZ,gBAAkBD,EACvBtZ,KAAKwZ,cAAgB,GACrBxZ,KAAKyZ,eAAiB,GAEjBN,KA7Bb,SAASO,EAAe9M,EAAQ+M,GAE5B,IAAIhH,EAAKiH,EACT,IAAKjH,KAAO/F,EAGR,cADAgN,EAAQhN,EAAO+F,KAEX,IAAK,WAGGiH,EAAMxc,WAAawc,EAAMxc,UAAUwD,OACnCgZ,EAAMxc,UAAUyc,UAAYF,KAEhC,MACJ,IAAK,SACDA,EAASD,EAAeE,EAAOD,GAK3C,OAAOA,EAUCD,CAAeI,GAAM,GACrBX,GAAc,GA0H1B,OAtHIE,EAAKjc,UAAAwR,MAAL,SAAMpB,GACF,IAAKA,EACD,OAAOA,EAGX,IAAMuM,EAAgBvM,EAAKqM,UAC3B,IAAKE,EAKD,OAHIvM,EAAKiB,OAASjB,EAAKiB,MAAMoL,WACzB7Z,KAAK4O,MAAMpB,EAAKiB,OAEbjB,EAGX,IAIIwM,EAJEC,EAAOja,KAAKuZ,gBACdpB,EAAOnY,KAAKwZ,cAAcO,GAC1BG,EAAUla,KAAKyZ,eAAeM,GAC5BI,EAAYlB,EAalB,GAVAkB,EAAUjB,aAAc,EAEnBf,IAEDA,EAAO8B,EADPD,EAAS,QAAQjc,OAAAyP,EAAK5M,QACCwY,EACvBc,EAAUD,EAAK,GAAAlc,OAAGic,EAAW,SAAKZ,EAClCpZ,KAAKwZ,cAAcO,GAAiB5B,EACpCnY,KAAKyZ,eAAeM,GAAiBG,GAGrC/B,IAASiB,EAAO,CAChB,IAAMgB,EAAUjC,EAAK7a,KAAK2c,EAAMzM,EAAM2M,GAClC3M,GAAQyM,EAAKI,cACb7M,EAAO4M,GAIf,GAAID,EAAUjB,aAAe1L,EACzB,GAAIA,EAAK3O,OACL,IAAK,IAAI6B,EAAI,EAAG4Z,EAAM9M,EAAK3O,OAAQ6B,EAAI4Z,EAAK5Z,IACpC8M,EAAK9M,GAAGgO,QACRlB,EAAK9M,GAAGgO,OAAO1O,WAGhBwN,EAAKkB,QACZlB,EAAKkB,OAAO1O,MAQpB,OAJIka,GAAWd,GACXc,EAAQ5c,KAAK2c,EAAMzM,GAGhBA,GAGX6L,EAAAjc,UAAAmd,WAAA,SAAWjN,EAAOkN,GACd,IAAKlN,EACD,OAAOA,EAGX,IACIkD,EADE8J,EAAMhN,EAAMzO,OAIlB,GAAI2b,IAAiBxa,KAAKuZ,gBAAgBc,YAAa,CACnD,IAAK7J,EAAI,EAAGA,EAAI8J,EAAK9J,IACjBxQ,KAAK4O,MAAMtB,EAAMkD,IAErB,OAAOlD,EAIX,IAAMmN,EAAM,GACZ,IAAKjK,EAAI,EAAGA,EAAI8J,EAAK9J,IAAK,CACtB,IAAMkK,EAAQ1a,KAAK4O,MAAMtB,EAAMkD,SACjB3O,IAAV6Y,IACCA,EAAM/Z,OAEA+Z,EAAM7b,QACbmB,KAAK2a,QAAQD,EAAOD,GAFpBA,EAAIja,KAAKka,IAKjB,OAAOD,GAGXpB,EAAAjc,UAAAud,QAAA,SAAQ7E,EAAK2E,GAKT,IAAIH,EAAK9J,EAAG6D,EAAMuG,EAAWC,EAAGC,EAEhC,IANKL,IACDA,EAAM,IAKLjK,EAAI,EAAG8J,EAAMxE,EAAIjX,OAAQ2R,EAAI8J,EAAK9J,IAEnC,QAAa3O,KADbwS,EAAOyB,EAAItF,IAIX,GAAK6D,EAAK1T,OAKV,IAAKka,EAAI,EAAGD,EAAYvG,EAAKxV,OAAQgc,EAAID,EAAWC,SAE7BhZ,KADnBiZ,EAAazG,EAAKwG,MAIbC,EAAWna,OAELma,EAAWjc,QAClBmB,KAAK2a,QAAQG,EAAYL,GAFzBA,EAAIja,KAAKsa,SAVbL,EAAIja,KAAK6T,GAiBjB,OAAOoG,GAEdpB,KClKK0B,EAAW,GAIXC,EAAmB,SAA0BC,EAAUC,EAAaC,GACtE,GAAKF,EAEL,IAAK,IAAIva,EAAI,EAAGA,EAAIya,EAAiBtc,OAAQ6B,IACrCvD,OAAOC,UAAUC,eAAeC,KAAK2d,EAAUE,EAAiBza,MAChEwa,EAAYC,EAAiBza,IAAMua,EAASE,EAAiBza,MAQnE0a,EAAsB,CAExB,QACA,cACA,WACA,gBACA,WACA,kBACA,WACA,aACA,aACA,OACA,eAEA,iBAEA,gBACA,SAGJL,EAASM,MAAQ,SAASte,GACtBie,EAAiBje,EAASiD,KAAMob,GAEN,iBAAfpb,KAAKsb,QAAsBtb,KAAKsb,MAAQ,CAACtb,KAAKsb,SAG7D,IAAMC,EAAqB,CACvB,QACA,WACA,OACA,cACA,YACA,iBACA,UACA,oBACA,gBACA,iBACA,eAsGJ,SAASC,EAAeC,GACpB,OAAQ,sBAAsBC,KAAKD,GAGvC,SAASE,EAAoBF,GACzB,MAA0B,MAAnBA,EAAK7H,OAAO,GAxGvBmH,EAASa,KAAO,SAAS7e,EAAS8e,GAC9Bb,EAAiBje,EAASiD,KAAMub,GAEN,iBAAfvb,KAAKsb,QAAsBtb,KAAKsb,MAAQ,CAACtb,KAAKsb,QAEzDtb,KAAK6b,OAASA,GAAU,GACxB7b,KAAK8b,eAAiB9b,KAAK8b,gBAAkB,IAGjDf,EAASa,KAAKxe,UAAU2e,UAAY,WAC3B/b,KAAKgc,YACNhc,KAAKgc,UAAY,IAErBhc,KAAKgc,UAAUxb,MAAK,GACpBR,KAAKic,QAAS,GAGlBlB,EAASa,KAAKxe,UAAU8e,SAAW,WAC/Blc,KAAKgc,UAAUG,MACVnc,KAAKgc,UAAUnd,SAChBmB,KAAKic,QAAS,IAItBlB,EAASa,KAAKxe,UAAUgf,cAAgB,WAC/Bpc,KAAKqc,cACNrc,KAAKqc,YAAc,IAEvBrc,KAAKqc,YAAY7b,MAAK,IAG1Bua,EAASa,KAAKxe,UAAUkf,iBAAmB,WACvCtc,KAAKqc,YAAYF,OAGrBpB,EAASa,KAAKxe,UAAU6e,QAAS,EACjClB,EAASa,KAAKxe,UAAUmf,QAAS,EACjCxB,EAASa,KAAKxe,UAAUof,SAAW,SAAUzN,GACzC,QAAK/O,KAAKuc,YAGC,MAAPxN,GAAc/O,KAAK2W,OAASC,EAAe/C,QAAY7T,KAAKqc,aAAgBrc,KAAKqc,YAAYxd,YAG7FmB,KAAK2W,KAAOC,EAAe9C,kBACpB9T,KAAKqc,aAAerc,KAAKqc,YAAYxd,UAKpDkc,EAASa,KAAKxe,UAAUqf,oBAAsB,SAAUhB,GAGpD,OAFmBzb,KAAK8W,cAAgBC,EAA8B4E,EAAsBH,GAE1EC,IAGtBV,EAASa,KAAKxe,UAAUsf,YAAc,SAAUjB,EAAMkB,GAClD,IAAIC,EAaJ,OAXAD,EAAWA,GAAY,GACvBC,EAAU5c,KAAK6c,cAAcF,EAAWlB,GAIpCE,EAAoBF,IACpBD,EAAemB,KACkB,IAAjChB,EAAoBiB,KACpBA,EAAU,KAAA7e,OAAK6e,IAGZA,GAGX7B,EAASa,KAAKxe,UAAUyf,cAAgB,SAAUpB,GAC9C,IACIqB,EADEC,EAAWtB,EAAK9K,MAAM,KAAKqM,UAIjC,IADAvB,EAAO,GACoB,IAApBsB,EAASle,QAEZ,OADAie,EAAUC,EAASZ,OAEf,IAAK,IACD,MACJ,IAAK,KACoB,IAAhBV,EAAK5c,QAA4C,OAA1B4c,EAAKA,EAAK5c,OAAS,GAC3C4c,EAAKjb,KAAMsc,GAEXrB,EAAKU,MAET,MACJ,QACIV,EAAKjb,KAAKsc,GAKtB,OAAOrB,EAAKlN,KAAK,MCzJrB,IAAA0O,EAAA,WACI,SAAAA,EAAYC,GACRld,KAAKmd,QAAU,GACfnd,KAAKod,gBAAkB,GACvBpd,KAAKqd,kBAAoBH,EACzBld,KAAKsd,cAAgB,EAgD7B,OA7CIL,EAAS7f,UAAAmgB,UAAT,SAAUC,GACN,IAAMC,EAAkBzd,KACpB0d,EAAa,CACTF,SAAQA,EACR5L,KAAM,KACN+L,SAAS,GAGjB,OADA3d,KAAKmd,QAAQ3c,KAAKkd,GACX,WACHA,EAAW9L,KAAOnE,MAAMrQ,UAAUyV,MAAMvV,KAAKsgB,UAAW,GACxDF,EAAWC,SAAU,EACrBF,EAAgBI,WAIxBZ,EAAiB7f,UAAA0gB,kBAAjB,SAAkBN,GACdxd,KAAKod,gBAAgB5c,KAAKgd,IAG9BP,EAAA7f,UAAAygB,OAAA,WACI7d,KAAKsd,gBACL,IACI,OAAa,CACT,KAAOtd,KAAKmd,QAAQte,OAAS,GAAG,CAC5B,IAAM6e,EAAa1d,KAAKmd,QAAQ,GAChC,IAAKO,EAAWC,QACZ,OAEJ3d,KAAKmd,QAAUnd,KAAKmd,QAAQtK,MAAM,GAClC6K,EAAWF,SAASO,MAAM,KAAML,EAAW9L,MAE/C,GAAoC,IAAhC5R,KAAKod,gBAAgBve,OACrB,MAEJ,IAAMmf,EAAiBhe,KAAKod,gBAAgB,GAC5Cpd,KAAKod,gBAAkBpd,KAAKod,gBAAgBvK,MAAM,GAClDmL,KAEE,QACNhe,KAAKsd,gBAEkB,IAAvBtd,KAAKsd,eAAuBtd,KAAKqd,mBACjCrd,KAAKqd,qBAGhBJ,KC5CKgB,EAAgB,SAASC,EAAUC,GAErCne,KAAKoe,SAAW,IAAI/E,EAAQrZ,MAC5BA,KAAKqe,UAAYH,EACjBle,KAAKse,QAAUH,EACfne,KAAKgO,QAAU,IAAI+M,EAASa,KAC5B5b,KAAKue,YAAc,EACnBve,KAAKwe,qBAAuB,GAC5Bxe,KAAKye,kBAAoB,GACzBze,KAAK0e,WAAa,IAAIzB,EAAgBjd,KAAKqd,kBAAkB/b,KAAKtB,QAGtEie,EAAc7gB,UAAY,CACtBid,aAAa,EACbsE,IAAK,SAAUC,GACX,IAEI5e,KAAKoe,SAASxP,MAAMgQ,GAExB,MAAOpf,GACHQ,KAAKF,MAAQN,EAGjBQ,KAAK6e,YAAa,EAClB7e,KAAK0e,WAAWb,UAEpBR,kBAAmB,WACVrd,KAAK6e,YAGV7e,KAAKse,QAAQte,KAAKF,QAEtBgf,YAAa,SAAUC,EAAY5E,GAC/B,IAAM6E,EAAYD,EAAWhiB,QAAQkiB,OAErC,IAAKF,EAAWG,KAAOF,EAAW,CAE9B,IAAMhR,EAAU,IAAI+M,EAASa,KAAK5b,KAAKgO,QAASmR,EAAgBnf,KAAKgO,QAAQ6N,SACvEuD,EAAepR,EAAQ6N,OAAO,GAEpC7b,KAAKue,cACDQ,EAAWM,mBACXrf,KAAK0e,WAAWZ,kBAAkB9d,KAAKsf,kBAAkBhe,KAAKtB,KAAM+e,EAAY/Q,EAASoR,IAEzFpf,KAAKsf,kBAAkBP,EAAY/Q,EAASoR,GAGpDjF,EAAUjB,aAAc,GAE5BoG,kBAAmB,SAASP,EAAY/Q,EAASoR,GAC7C,IAAIG,EACEP,EAAYD,EAAWhiB,QAAQkiB,OAErC,IACIM,EAAkBR,EAAWS,cAAcxR,GAC7C,MAAOxO,GACAA,EAAEgC,WAAYhC,EAAE6O,MAAQ0Q,EAAW3R,WAAY5N,EAAEgC,SAAWud,EAAW5R,WAAW3L,UAEvFud,EAAWG,KAAM,EAEjBH,EAAWjf,MAAQN,EAGvB,IAAI+f,GAAqBA,EAAgBL,MAAOF,EAqB5Chf,KAAKue,cACDve,KAAK6e,YACL7e,KAAK0e,WAAWb,aAvBoC,CAEpD0B,EAAgBxiB,QAAQ0iB,WACxBzR,EAAQ0R,gBAAiB,GAM7B,IAFA,IAAMC,OAAiD9d,IAAxB0d,EAAgBL,IAEtCxe,EAAI,EAAGA,EAAI0e,EAAaQ,MAAM/gB,OAAQ6B,IAC3C,GAAI0e,EAAaQ,MAAMlf,KAAOqe,EAAY,CACtCK,EAAaQ,MAAMlf,GAAK6e,EACxB,MAIR,IAAMM,EAAa7f,KAAK6f,WAAWve,KAAKtB,KAAMuf,EAAiBvR,GAAU8R,EAAsB9f,KAAK0e,WAAWnB,UAAUsC,GAEzH7f,KAAKqe,UAAU7d,KAAK+e,EAAgBQ,UAAWJ,EAAwBJ,EAAgBpS,WACnFoS,EAAgBxiB,QAAS+iB,KAQrCD,WAAY,SAAUd,EAAY/Q,EAASxO,EAAGof,EAAMoB,EAAgBC,GAC5DzgB,IACKA,EAAEgC,WACHhC,EAAE6O,MAAQ0Q,EAAW3R,WAAY5N,EAAEgC,SAAWud,EAAW5R,WAAW3L,UAExExB,KAAKF,MAAQN,GAGjB,IAAM0gB,EAAgBlgB,KAClBgf,EAAYD,EAAWhiB,QAAQkiB,OAC/BkB,EAAWpB,EAAWhiB,QAAQojB,SAC9BC,EAAarB,EAAWhiB,QAAQsjB,SAChCC,EAAkBN,GAAkBC,KAAYC,EAAczB,kBAoBlE,GAlBKzQ,EAAQ0R,iBAELX,EAAWwB,OADXD,GAGkB,WACd,OAAIL,KAAYC,EAAc1B,uBAG9B0B,EAAc1B,qBAAqByB,IAAY,GACxC,MAKdA,GAAYG,IACbrB,EAAWwB,MAAO,GAGlB3B,IACAG,EAAWH,KAAOA,EAClBG,EAAWyB,iBAAmBP,GAEzBjB,IAAcmB,IAAanS,EAAQ0R,iBAAmBY,IAAkB,CACzEJ,EAAczB,kBAAkBwB,IAAY,EAE5C,IAAMQ,EAAazgB,KAAKgO,QACxBhO,KAAKgO,QAAUA,EACf,IACIhO,KAAKoe,SAASxP,MAAMgQ,GACtB,MAAOpf,GACLQ,KAAKF,MAAQN,EAEjBQ,KAAKgO,QAAUyS,EAIvBP,EAAc3B,cAEV2B,EAAcrB,YACdqB,EAAcxB,WAAWb,UAGjC6C,iBAAkB,SAAUC,EAAUxG,GACN,oBAAxBwG,EAASlS,MAAM7N,KACfZ,KAAKgO,QAAQ6N,OAAO+E,QAAQD,GAE5BxG,EAAUjB,aAAc,GAGhC2H,oBAAqB,SAASF,GACE,oBAAxBA,EAASlS,MAAM7N,MACfZ,KAAKgO,QAAQ6N,OAAOiF,SAG5BC,YAAa,SAAUC,EAAY7G,GAC/Bna,KAAKgO,QAAQ6N,OAAO+E,QAAQI,IAEhCC,eAAgB,SAAUD,GACtBhhB,KAAKgO,QAAQ6N,OAAOiF,SAExBI,qBAAsB,SAAUC,EAAqBhH,GACjDna,KAAKgO,QAAQ6N,OAAO+E,QAAQO,IAEhCC,wBAAyB,SAAUD,GAC/BnhB,KAAKgO,QAAQ6N,OAAOiF,SAExBO,aAAc,SAAUC,EAAanH,GACjCna,KAAKgO,QAAQ6N,OAAO+E,QAAQU,IAEhCC,gBAAiB,SAAUD,GACvBthB,KAAKgO,QAAQ6N,OAAOiF,SAExBU,WAAY,SAAUC,EAAWtH,GAC7Bna,KAAKgO,QAAQ6N,OAAO+E,QAAQa,EAAU7B,MAAM,KAEhD8B,cAAe,SAAUD,GACrBzhB,KAAKgO,QAAQ6N,OAAOiF,UC7L5B,IAAAa,EAAA,WACI,SAAAA,EAAYC,GACR5hB,KAAK4hB,QAAUA,EAwCvB,OArCID,EAAGvkB,UAAAuhB,IAAH,SAAIC,GACA5e,KAAK4O,MAAMgQ,IAGf+C,EAAUvkB,UAAAmd,WAAV,SAAWjN,GACP,IAAKA,EACD,OAAOA,EAGX,IACIkD,EADE8J,EAAMhN,EAAMzO,OAElB,IAAK2R,EAAI,EAAGA,EAAI8J,EAAK9J,IACjBxQ,KAAK4O,MAAMtB,EAAMkD,IAErB,OAAOlD,GAGXqU,EAAKvkB,UAAAwR,MAAL,SAAMpB,GACF,OAAKA,EAGDA,EAAK8G,cAAgB7G,MACdzN,KAAKua,WAAW/M,KAGtBA,EAAKiC,kBAAoBjC,EAAKiC,qBAG/BzP,KAAK4hB,QACLpU,EAAKoC,mBAELpC,EAAKqC,qBAGTrC,EAAKkB,OAAO1O,OARDwN,GAPAA,GAkBlBmU,KC/BDE,EAAA,WACI,SAAAA,IACI7hB,KAAKoe,SAAW,IAAI/E,EAAQrZ,MAC5BA,KAAK+a,SAAW,GAChB/a,KAAK8hB,gBAAkB,CAAC,IAwFhC,OArFID,EAAGzkB,UAAAuhB,IAAH,SAAIC,GAGA,OAFAA,EAAO5e,KAAKoe,SAASxP,MAAMgQ,IACtBmD,WAAa/hB,KAAK8hB,gBAAgB,GAChClD,GAGXiD,EAAAzkB,UAAAsjB,iBAAA,SAAiBC,EAAUxG,GACvBA,EAAUjB,aAAc,GAG5B2I,EAAAzkB,UAAA8jB,qBAAA,SAAqBC,EAAqBhH,GACtCA,EAAUjB,aAAc,GAG5B2I,EAAAzkB,UAAAikB,aAAA,SAAaC,EAAanH,GACtB,IAAImH,EAAY1C,KAAhB,CAIA,IAAIpO,EACAqK,EACAmH,EAEAC,EADEC,EAAyB,GAIzBtC,EAAQ0B,EAAY1B,MAAOuC,EAAUvC,EAAQA,EAAM/gB,OAAS,EAClE,IAAK2R,EAAI,EAAGA,EAAI2R,EAAS3R,IACjB8Q,EAAY1B,MAAMpP,aAAcsJ,GAAKsI,SACrCF,EAAuB1hB,KAAKof,EAAMpP,IAClC8Q,EAAYe,mBAAoB,GAMxC,IAAM/G,EAAQgG,EAAYhG,MAC1B,IAAK9K,EAAI,EAAGA,EAAI8K,EAAMzc,OAAQ2R,IAAK,CAC/B,IAAM8R,EAAehH,EAAM9K,GAAsD+R,EAAvCD,EAAaA,EAAazjB,OAAS,GAA6BojB,WAW1G,KATAA,EAAaM,EAAgBpD,EAAgBoD,GAAexkB,OAAOmkB,GAC7DA,KAGFD,EAAaA,EAAW3R,KAAI,SAASkS,GACjC,OAAOA,EAAmB9O,YAI7BmH,EAAI,EAAGA,EAAIoH,EAAWpjB,OAAQgc,IAC/B7a,KAAKyiB,cAAe,GACpBT,EAASC,EAAWpH,IACb6H,kBAAkBJ,GACzBN,EAAOW,QAAUrB,EACP,IAANzG,IAAWmH,EAAOY,+BAAgC,GACtD5iB,KAAK8hB,gBAAgB9hB,KAAK8hB,gBAAgBjjB,OAAS,GAAG2B,KAAKwhB,GAInEhiB,KAAK+a,SAASva,KAAK8gB,EAAYuB,aAGnChB,EAAezkB,UAAAmkB,gBAAf,SAAgBD,GACPA,EAAY1C,OACb5e,KAAK+a,SAASlc,OAASmB,KAAK+a,SAASlc,OAAS,IAItDgjB,EAAAzkB,UAAAokB,WAAA,SAAWC,EAAWtH,GAClBsH,EAAUM,WAAa,GACvB/hB,KAAK8hB,gBAAgBthB,KAAKihB,EAAUM,aAGxCF,EAAazkB,UAAAskB,cAAb,SAAcD,GACVzhB,KAAK8hB,gBAAgBjjB,OAASmB,KAAK8hB,gBAAgBjjB,OAAS,GAGhEgjB,EAAAzkB,UAAA2jB,YAAA,SAAYC,EAAY7G,GACpB6G,EAAWe,WAAa,GACxB/hB,KAAK8hB,gBAAgBthB,KAAKwgB,EAAWe,aAGzCF,EAAczkB,UAAA6jB,eAAd,SAAeD,GACXhhB,KAAK8hB,gBAAgBjjB,OAASmB,KAAK8hB,gBAAgBjjB,OAAS,GAEnEgjB,KAEDiB,EAAA,WACI,SAAAA,IACI9iB,KAAKoe,SAAW,IAAI/E,EAAQrZ,MA6YpC,OA1YI8iB,EAAG1lB,UAAAuhB,IAAH,SAAIC,GACA,IAAMmE,EAAe,IAAIlB,EAGzB,GAFA7hB,KAAKgjB,cAAgB,GACrBD,EAAapE,IAAIC,IACZmE,EAAaN,aAAgB,OAAO7D,EACzCA,EAAKmD,WAAanD,EAAKmD,WAAWhkB,OAAOiC,KAAKijB,iBAAiBrE,EAAKmD,WAAYnD,EAAKmD,aACrF/hB,KAAK8hB,gBAAkB,CAAClD,EAAKmD,YAC7B,IAAMmB,EAAUljB,KAAKoe,SAASxP,MAAMgQ,GAEpC,OADA5e,KAAKmjB,0BAA0BvE,EAAKmD,YAC7BmB,GAGXJ,EAAyB1lB,UAAA+lB,0BAAzB,SAA0BlB,GACtB,IAAMmB,EAAUpjB,KAAKgjB,cACrBf,EAAWoB,QAAO,SAASrB,GACvB,OAAQA,EAAOsB,iBAA+C,GAA5BtB,EAAOuB,WAAW1kB,UACrD8O,SAAQ,SAASqU,GAChB,IAAIwB,EAAW,YACf,IACIA,EAAWxB,EAAOwB,SAASzV,MAAM,IAErC,MAAOtQ,IAEF2lB,EAAQ,GAAGrlB,OAAAikB,EAAO3T,MAAS,KAAAtQ,OAAAylB,MAC5BJ,EAAQ,GAAGrlB,OAAAikB,EAAO3T,MAAS,KAAAtQ,OAAAylB,KAAc,EAMzC5hB,EAAO1B,KAAK,2BAAoBsjB,EAAQ,0BAKpDV,EAAA1lB,UAAA6lB,iBAAA,SAAiBQ,EAAaC,EAAmBC,GAU7C,IAAIC,EAEAC,EACAC,EAEAC,EAEAzB,EACAN,EACAgC,EACAC,EANEC,EAAe,GAEfC,EAAgBnkB,KActB,IARA2jB,EAAiBA,GAAkB,EAQ9BC,EAAc,EAAGA,EAAcH,EAAY5kB,OAAQ+kB,IACpD,IAAKC,EAAoB,EAAGA,EAAoBH,EAAkB7kB,OAAQglB,IAEtE7B,EAASyB,EAAYG,GACrBI,EAAeN,EAAkBG,GAG5B7B,EAAOuB,WAAW1R,QAASmS,EAAaI,YAAe,IAG5D9B,EAAe,CAAC0B,EAAaK,cAAc,KAC3CP,EAAUK,EAAcG,UAAUtC,EAAQM,IAE9BzjB,SACRmjB,EAAOsB,iBAAkB,EAGzBtB,EAAOqC,cAAc1W,SAAQ,SAAS4W,GAClC,IAAMpkB,EAAO6jB,EAAajU,iBAG1BgU,EAAcI,EAAcK,eAAeV,EAASxB,EAAciC,EAAcvC,EAAOlS,cAGvFmU,EAAY,IAAInK,GAAW,OAAEkK,EAAaR,SAAUQ,EAAaS,OAAQ,EAAGT,EAAa7W,WAAYhN,IAC3FkkB,cAAgBN,EAG1BA,EAAYA,EAAYllB,OAAS,GAAGojB,WAAa,CAACgC,GAGlDC,EAAa1jB,KAAKyjB,GAClBA,EAAUtB,QAAUqB,EAAarB,QAGjCsB,EAAUV,WAAaU,EAAUV,WAAWxlB,OAAOimB,EAAaT,WAAYvB,EAAOuB,YAK/ES,EAAapB,gCACbqB,EAAUrB,+BAAgC,EAC1CoB,EAAarB,QAAQrH,MAAM9a,KAAKujB,SAOpD,GAAIG,EAAarlB,OAAQ,CAIrB,GADAmB,KAAK0kB,mBACDf,EAAiB,IAAK,CACtB,IAAIgB,EAAc,wBACdC,EAAc,wBAClB,IACID,EAAcT,EAAa,GAAGG,cAAc,GAAGtW,QAC/C6W,EAAcV,EAAa,GAAGV,SAASzV,QAE3C,MAAOvO,IACP,KAAM,CAAEiY,QAAS,gFAAA1Z,OAAgF4mB,EAAsB,YAAA5mB,OAAA6mB,EAAc,MAKzI,OAAOV,EAAanmB,OAAOomB,EAAclB,iBAAiBiB,EAAcR,EAAmBC,EAAiB,IAE5G,OAAOO,GAIfpB,EAAA1lB,UAAAsjB,iBAAA,SAAiBmE,EAAU1K,GACvBA,EAAUjB,aAAc,GAG5B4J,EAAA1lB,UAAA8jB,qBAAA,SAAqBC,EAAqBhH,GACtCA,EAAUjB,aAAc,GAG5B4J,EAAA1lB,UAAA0nB,cAAA,SAAcC,EAAc5K,GACxBA,EAAUjB,aAAc,GAG5B4J,EAAA1lB,UAAAikB,aAAA,SAAaC,EAAanH,GACtB,IAAImH,EAAY1C,KAAhB,CAGA,IAAIkF,EACAkB,EACApB,EAIAtB,EAHEP,EAAa/hB,KAAK8hB,gBAAgB9hB,KAAK8hB,gBAAgBjjB,OAAS,GAChEomB,EAAiB,GACjBd,EAAgBnkB,KAKtB,IAAK4jB,EAAc,EAAGA,EAAc7B,EAAWljB,OAAQ+kB,IACnD,IAAKoB,EAAY,EAAGA,EAAY1D,EAAYhG,MAAMzc,OAAQmmB,IAItD,GAHA1C,EAAehB,EAAYhG,MAAM0J,IAG7B1D,EAAYe,kBAAhB,CACA,IAAMJ,EAAaK,EAAaA,EAAazjB,OAAS,GAAGojB,WACrDA,GAAcA,EAAWpjB,SAE7BilB,EAAU9jB,KAAKskB,UAAUvC,EAAW6B,GAActB,IAEtCzjB,SACRkjB,EAAW6B,GAAaN,iBAAkB,EAE1CvB,EAAW6B,GAAaS,cAAc1W,SAAQ,SAAS4W,GACnD,IAAIW,EACJA,EAAoBf,EAAcK,eAAeV,EAASxB,EAAciC,EAAcxC,EAAW6B,GAAa9T,aAC9GmV,EAAezkB,KAAK0kB,OAKpC5D,EAAYhG,MAAQgG,EAAYhG,MAAMvd,OAAOknB,KAGjDnC,EAAA1lB,UAAAknB,UAAA,SAAUtC,EAAQmD,GAKd,IAAIC,EAEAC,EACAC,EACAC,EACAC,EACAhV,EAIAiV,EAFEC,EAAiB1D,EAAOwB,SAASmC,SACjCC,EAAmB,GAEnB9B,EAAU,GAGhB,IAAKsB,EAAwB,EAAGA,EAAwBD,EAAqBtmB,OAAQumB,IAGjF,IAFAC,EAAoBF,EAAqBC,GAEpCE,EAAwB,EAAGA,EAAwBD,EAAkBM,SAAS9mB,OAAQymB,IAUvF,IARAC,EAAkBF,EAAkBM,SAASL,IAGzCtD,EAAO6D,aAA0C,IAA1BT,GAAyD,IAA1BE,IACtDM,EAAiBplB,KAAK,CAACwkB,UAAWI,EAAuB/W,MAAOiX,EAAuBQ,QAAS,EAC5FC,kBAAmBR,EAAgBhS,aAGtC/C,EAAI,EAAGA,EAAIoV,EAAiB/mB,OAAQ2R,IACrCiV,EAAiBG,EAAiBpV,GAMT,MADzBgV,EAAmBD,EAAgBhS,WAAW9E,QACW,IAA1B6W,IAC3BE,EAAmB,MA5BbxlB,KAgCSgmB,qBAAqBN,EAAeD,EAAeK,SAASrX,MAAO8W,EAAgB9W,QACjGgX,EAAeK,QAAU,GAAKJ,EAAeD,EAAeK,SAASvS,WAAW9E,QAAU+W,EAC3FC,EAAiB,KAEjBA,EAAeK,UAIfL,IACAA,EAAeQ,SAAWR,EAAeK,UAAYJ,EAAe7mB,OAChE4mB,EAAeQ,WACbjE,EAAOkE,aACJZ,EAAwB,EAAID,EAAkBM,SAAS9mB,QAAUumB,EAAwB,EAAID,EAAqBtmB,UACvH4mB,EAAiB,OAIrBA,EACIA,EAAeQ,WACfR,EAAe5mB,OAAS6mB,EAAe7mB,OACvC4mB,EAAeU,aAAef,EAC9BK,EAAeW,oBAAsBd,EAAwB,EAC7DM,EAAiB/mB,OAAS,EAC1BilB,EAAQtjB,KAAKilB,KAGjBG,EAAiBjlB,OAAO6P,EAAG,GAC3BA,KAKhB,OAAOsT,GAGXhB,EAAA1lB,UAAA4oB,qBAAA,SAAqBK,EAAeC,GAChC,GAA6B,iBAAlBD,GAAuD,iBAAlBC,EAC5C,OAAOD,IAAkBC,EAE7B,GAAID,aAAyBvM,GAAKyM,UAC9B,OAAIF,EAActX,KAAOuX,EAAcvX,IAAMsX,EAAc1T,MAAQ2T,EAAc3T,MAG5E0T,EAAc5X,OAAU6X,EAAc7X,OAM3C4X,EAAgBA,EAAc5X,MAAMA,OAAS4X,EAAc5X,UAC3D6X,EAAgBA,EAAc7X,MAAMA,OAAS6X,EAAc7X,QANnD4X,EAAc5X,QAAS6X,EAAc7X,OAWjD,GAFA4X,EAAgBA,EAAc5X,MAC9B6X,EAAgBA,EAAc7X,MAC1B4X,aAAyBvM,GAAK0M,SAAU,CACxC,KAAMF,aAAyBxM,GAAK0M,WAAaH,EAAcV,SAAS9mB,SAAWynB,EAAcX,SAAS9mB,OACtG,OAAO,EAEX,IAAK,IAAI6B,EAAI,EAAGA,EAAK2lB,EAAcV,SAAS9mB,OAAQ6B,IAAK,CACrD,GAAI2lB,EAAcV,SAASjlB,GAAG6S,WAAW9E,QAAU6X,EAAcX,SAASjlB,GAAG6S,WAAW9E,QAC1E,IAAN/N,IAAY2lB,EAAcV,SAASjlB,GAAG6S,WAAW9E,OAAS,QAAU6X,EAAcX,SAASjlB,GAAG6S,WAAW9E,OAAS,MAClH,OAAO,EAGf,IAAKzO,KAAKgmB,qBAAqBK,EAAcV,SAASjlB,GAAG+N,MAAO6X,EAAcX,SAASjlB,GAAG+N,OACtF,OAAO,EAGf,OAAO,EAEX,OAAO,GAGXqU,EAAc1lB,UAAAonB,eAAd,SAAeV,EAASxB,EAAcmE,EAAqB3W,GAIvD,IAAkF4W,EAAYlD,EAAUmD,EAActW,EAAOuW,EAAzHC,EAA2B,EAAGC,EAAkC,EAAGrL,EAAO,GAE9E,IAAKiL,EAAa,EAAGA,EAAa5C,EAAQjlB,OAAQ6nB,IAE9ClD,EAAWlB,GADXjS,EAAQyT,EAAQ4C,IACc1B,WAC9B2B,EAAe,IAAI7M,GAAKxG,QACpBjD,EAAM0V,kBACNU,EAAoBd,SAAS,GAAGlX,MAChCgY,EAAoBd,SAAS,GAAGnS,WAChCiT,EAAoBd,SAAS,GAAGvY,WAChCqZ,EAAoBd,SAAS,GAAGxY,YAGhCkD,EAAM2U,UAAY6B,GAA4BC,EAAkC,IAChFrL,EAAKA,EAAK5c,OAAS,GAAG8mB,SAAWlK,EAAKA,EAAK5c,OAAS,GAC/C8mB,SAAS5nB,OAAOukB,EAAauE,GAA0BlB,SAAS9S,MAAMiU,IAC3EA,EAAkC,EAClCD,KAGJD,EAAcpD,EAASmC,SAClB9S,MAAMiU,EAAiCzW,EAAMhC,OAC7CtQ,OAAO,CAAC4oB,IACR5oB,OAAO0oB,EAAoBd,SAAS9S,MAAM,IAE3CgU,IAA6BxW,EAAM2U,WAAa0B,EAAa,EAC7DjL,EAAKA,EAAK5c,OAAS,GAAG8mB,SAClBlK,EAAKA,EAAK5c,OAAS,GAAG8mB,SAAS5nB,OAAO6oB,IAE1CnL,EAAOA,EAAK1d,OAAOukB,EAAazP,MAAMgU,EAA0BxW,EAAM2U,aAEjExkB,KAAK,IAAIsZ,GAAK0M,SACfI,IAGRC,EAA2BxW,EAAM8V,cACjCW,EAAkCzW,EAAM+V,sBACD9D,EAAauE,GAA0BlB,SAAS9mB,SACnFioB,EAAkC,EAClCD,KAqBR,OAjBIA,EAA2BvE,EAAazjB,QAAUioB,EAAkC,IACpFrL,EAAKA,EAAK5c,OAAS,GAAG8mB,SAAWlK,EAAKA,EAAK5c,OAAS,GAC/C8mB,SAAS5nB,OAAOukB,EAAauE,GAA0BlB,SAAS9S,MAAMiU,IAC3ED,KAIJpL,GADAA,EAAOA,EAAK1d,OAAOukB,EAAazP,MAAMgU,EAA0BvE,EAAazjB,UACjEyR,KAAI,SAAUyW,GAEtB,IAAMC,EAAUD,EAAaE,cAAcF,EAAapB,UAMxD,OALI7V,EACAkX,EAAQpX,mBAERoX,EAAQnX,qBAELmX,MAKflE,EAAA1lB,UAAAokB,WAAA,SAAWC,EAAWtH,GAClB,IAAI+M,EAAgBzF,EAAUM,WAAWhkB,OAAOiC,KAAK8hB,gBAAgB9hB,KAAK8hB,gBAAgBjjB,OAAS,IACnGqoB,EAAgBA,EAAcnpB,OAAOiC,KAAKijB,iBAAiBiE,EAAezF,EAAUM,aACpF/hB,KAAK8hB,gBAAgBthB,KAAK0mB,IAG9BpE,EAAa1lB,UAAAskB,cAAb,SAAcD,GACV,IAAM0F,EAAYnnB,KAAK8hB,gBAAgBjjB,OAAS,EAChDmB,KAAK8hB,gBAAgBjjB,OAASsoB,GAGlCrE,EAAA1lB,UAAA2jB,YAAA,SAAYC,EAAY7G,GACpB,IAAI+M,EAAgBlG,EAAWe,WAAWhkB,OAAOiC,KAAK8hB,gBAAgB9hB,KAAK8hB,gBAAgBjjB,OAAS,IACpGqoB,EAAgBA,EAAcnpB,OAAOiC,KAAKijB,iBAAiBiE,EAAelG,EAAWe,aACrF/hB,KAAK8hB,gBAAgBthB,KAAK0mB,IAG9BpE,EAAc1lB,UAAA6jB,eAAd,SAAeD,GACX,IAAMmG,EAAYnnB,KAAK8hB,gBAAgBjjB,OAAS,EAChDmB,KAAK8hB,gBAAgBjjB,OAASsoB,GAErCrE,KClfDsE,EAAA,WACI,SAAAA,IACIpnB,KAAK+a,SAAW,CAAC,IACjB/a,KAAKoe,SAAW,IAAI/E,EAAQrZ,MAiDpC,OA9CIonB,EAAGhqB,UAAAuhB,IAAH,SAAIC,GACA,OAAO5e,KAAKoe,SAASxP,MAAMgQ,IAG/BwI,EAAAhqB,UAAAsjB,iBAAA,SAAiBC,EAAUxG,GACvBA,EAAUjB,aAAc,GAG5BkO,EAAAhqB,UAAA8jB,qBAAA,SAAqBC,EAAqBhH,GACtCA,EAAUjB,aAAc,GAG5BkO,EAAAhqB,UAAAikB,aAAA,SAAaC,EAAanH,GACtB,IAEI0I,EAFE7U,EAAUhO,KAAK+a,SAAS/a,KAAK+a,SAASlc,OAAS,GAC/Cyc,EAAQ,GAGdtb,KAAK+a,SAASva,KAAK8a,GAEdgG,EAAY1C,QACbiE,EAAYvB,EAAYuB,aAEpBA,EAAYA,EAAUQ,QAAO,SAASG,GAAY,OAAOA,EAAS6D,iBAClE/F,EAAYuB,UAAYA,EAAUhkB,OAASgkB,EAAaA,EAAY,KAChEA,GAAavB,EAAYgG,cAAchM,EAAOtN,EAAS6U,IAE1DA,IAAavB,EAAY1B,MAAQ,MACtC0B,EAAYhG,MAAQA,IAI5B8L,EAAehqB,UAAAmkB,gBAAf,SAAgBD,GACZthB,KAAK+a,SAASlc,OAASmB,KAAK+a,SAASlc,OAAS,GAGlDuoB,EAAAhqB,UAAAokB,WAAA,SAAWC,EAAWtH,GAClB,IAAMnM,EAAUhO,KAAK+a,SAAS/a,KAAK+a,SAASlc,OAAS,GACrD4iB,EAAU7B,MAAM,GAAGhB,KAA2B,IAAnB5Q,EAAQnP,QAAgBmP,EAAQ,GAAGuZ,YAGlEH,EAAAhqB,UAAA2jB,YAAA,SAAYC,EAAY7G,GACpB,IAAMnM,EAAUhO,KAAK+a,SAAS/a,KAAK+a,SAASlc,OAAS,GACjDmiB,EAAWpB,OAASoB,EAAWpB,MAAM/gB,SACrCmiB,EAAWpB,MAAM,GAAGhB,KAAQoC,EAAWwG,UAA+B,IAAnBxZ,EAAQnP,QAAgB,OAGtFuoB,KCnDDK,EAAA,WACI,SAAAA,EAAYzZ,GACRhO,KAAKoe,SAAW,IAAI/E,EAAQrZ,MAC5BA,KAAK0nB,SAAW1Z,EAwExB,OArEIyZ,EAA6BrqB,UAAAuqB,8BAA7B,SAA8BC,GAC1B,IAAIC,EACJ,IAAKD,EACD,OAAO,EAEX,IAAK,IAAIvW,EAAI,EAAGA,EAAIuW,EAAU/oB,OAAQwS,IAElC,IADAwW,EAAOD,EAAUvW,IACRyW,UAAYD,EAAKC,SAAS9nB,KAAK0nB,YAAcG,EAAKpY,mBAGvD,OAAO,EAGf,OAAO,GAGXgY,EAAqBrqB,UAAA2qB,sBAArB,SAAsBC,GACdA,GAASA,EAAMpI,QACfoI,EAAMpI,MAAQoI,EAAMpI,MAAMyD,QAAO,SAAA4E,GAAS,OAAAA,EAAMnY,iBAIxD2X,EAAOrqB,UAAAkR,QAAP,SAAQ0Z,GACJ,OAAQA,IAASA,EAAMpI,OACO,IAAvBoI,EAAMpI,MAAM/gB,QAGvB4oB,EAAkBrqB,UAAA8qB,mBAAlB,SAAmB5G,GACf,SAAQA,IAAeA,EAAYhG,QAC5BgG,EAAYhG,MAAMzc,OAAS,GAGtC4oB,EAAiBrqB,UAAA+qB,kBAAjB,SAAkB3a,GACd,IAAKA,EAAKiC,mBAAoB,CAC1B,GAAIzP,KAAKsO,QAAQd,GACb,OAGJ,OAAOA,EAGX,IAAM4a,EAAoB5a,EAAKoS,MAAM,GAGrC,GAFA5f,KAAK+nB,sBAAsBK,IAEvBpoB,KAAKsO,QAAQ8Z,GAOjB,OAHA5a,EAAKoC,mBACLpC,EAAKmC,wBAEEnC,GAGXia,EAAgBrqB,UAAAirB,iBAAhB,SAAiB/G,GACb,QAAIA,EAAYgH,YAIZtoB,KAAKsO,QAAQgT,OAIZA,EAAY1C,OAAS5e,KAAKkoB,mBAAmB5G,KAMzDmG,KAEKc,EAAe,SAASva,GAC1BhO,KAAKoe,SAAW,IAAI/E,EAAQrZ,MAC5BA,KAAK0nB,SAAW1Z,EAChBhO,KAAKwoB,MAAQ,IAAIf,EAAgBzZ,IAGrCua,EAAanrB,UAAY,CACrBid,aAAa,EACbsE,IAAK,SAAUC,GACX,OAAO5e,KAAKoe,SAASxP,MAAMgQ,IAG/B8B,iBAAkB,SAAUC,EAAUxG,GAClC,IAAIwG,EAASlR,qBAAsBkR,EAAS8H,SAG5C,OAAO9H,GAGXO,qBAAsB,SAAUwH,EAAWvO,GAGvCuO,EAAU7M,OAAS,IAGvB8M,YAAa,SAAUC,EAAYzO,KAGnC0O,aAAc,SAAUC,EAAa3O,GACjC,IAAI2O,EAAYrZ,qBAAsBqZ,EAAYhB,SAAS9nB,KAAK0nB,UAGhE,OAAOoB,GAGXtH,WAAY,SAASC,EAAWtH,GAC5B,IAAM4O,EAAgBtH,EAAU7B,MAAM,GAAGA,MAIzC,OAHA6B,EAAU/S,OAAO1O,KAAKoe,UACtBjE,EAAUjB,aAAc,EAEjBlZ,KAAKwoB,MAAML,kBAAkB1G,EAAWsH,IAGnDjK,YAAa,SAAUC,EAAY5E,GAC/B,IAAI4E,EAAWtP,mBAGf,OAAOsP,GAGXgC,YAAa,SAASC,EAAY7G,GAC9B,OAAI6G,EAAWpB,OAASoB,EAAWpB,MAAM/gB,OAC9BmB,KAAKgpB,oBAAoBhI,EAAY7G,GAErCna,KAAKipB,uBAAuBjI,EAAY7G,IAIvD+O,eAAgB,SAASC,EAAehP,GACpC,IAAKgP,EAAc1Z,mBAEf,OADA0Z,EAAcza,OAAO1O,KAAKoe,UACnB+K,GAIfH,oBAAqB,SAAShI,EAAY7G,GAkBtC,IAAM4O,EAXN,SAAsB/H,GAClB,IAAMoI,EAAYpI,EAAWpB,MAC7B,OANJ,SAAwBoB,GACpB,IAAM4G,EAAY5G,EAAWpB,MAC7B,OAA4B,IAArBgI,EAAU/oB,UAAkB+oB,EAAU,GAAGtM,OAAuC,IAA9BsM,EAAU,GAAGtM,MAAMzc,QAIxEwqB,CAAerI,GACRoI,EAAU,GAAGxJ,MAGjBwJ,EAKWE,CAAatI,GAQnC,OAPAA,EAAWtS,OAAO1O,KAAKoe,UACvBjE,EAAUjB,aAAc,EAEnBlZ,KAAKwoB,MAAMla,QAAQ0S,IACpBhhB,KAAKupB,YAAYvI,EAAWpB,MAAM,GAAGA,OAGlC5f,KAAKwoB,MAAML,kBAAkBnH,EAAY+H,IAGpDE,uBAAwB,SAASjI,EAAY7G,GACzC,IAAI6G,EAAWvR,mBAAf,CAIA,GAAwB,aAApBuR,EAAWwI,KAAqB,CAIhC,GAAIxpB,KAAKypB,QAAS,CACd,GAAIzI,EAAW0I,UAAW,CACtB,IAAMC,EAAU,IAAI7P,GAAK8P,QAAQ,MAAA7rB,OAAMijB,EAAWjT,MAAM/N,KAAK0nB,UAAU7qB,QAAQ,MAAO,IAAU,UAEhG,OADA8sB,EAAQD,UAAY1I,EAAW0I,UACxB1pB,KAAKoe,SAASxP,MAAM+a,GAE/B,OAEJ3pB,KAAKypB,SAAU,EAGnB,OAAOzI,IAGX6I,gBAAiB,SAASjK,EAAOkK,GAC7B,GAAKlK,EAIL,IAAK,IAAIlf,EAAI,EAAGA,EAAIkf,EAAM/gB,OAAQ6B,IAAK,CACnC,IAAMmkB,EAAWjF,EAAMlf,GACvB,GAAIopB,GAAUjF,aAAoB/K,GAAKiQ,cAAgBlF,EAAS4D,SAC5D,KAAM,CAAEhR,QAAS,wEACbpJ,MAAOwW,EAASzX,WAAY5L,SAAUqjB,EAAS1X,YAAc0X,EAAS1X,WAAW3L,UAEzF,GAAIqjB,aAAoB/K,GAAKkQ,KACzB,KAAM,CAAEvS,QAAS,oBAAaoN,EAAS2E,KAAkC,gCACrEnb,MAAOwW,EAASzX,WAAY5L,SAAUqjB,EAAS1X,YAAc0X,EAAS1X,WAAW3L,UAEzF,GAAIqjB,EAASjkB,OAASikB,EAASoF,UAC3B,KAAM,CAAExS,QAAS,UAAGoN,EAASjkB,KAAoD,kDAC7EyN,MAAOwW,EAASzX,WAAY5L,SAAUqjB,EAAS1X,YAAc0X,EAAS1X,WAAW3L,YAKjG6f,aAAc,SAAUC,EAAanH,GAEjC,IAAI0N,EAEEqC,EAAW,GAIjB,GAFAlqB,KAAK6pB,gBAAgBvI,EAAY1B,MAAO0B,EAAYgH,WAE/ChH,EAAY1C,KA6Bb0C,EAAY5S,OAAO1O,KAAKoe,UACxBjE,EAAUjB,aAAc,MA9BL,CAEnBlZ,KAAKmqB,qBAAqB7I,GAM1B,IAHA,IAAM8H,EAAY9H,EAAY1B,MAE1BwK,EAAchB,EAAYA,EAAUvqB,OAAS,EACxCgC,EAAI,EAAGA,EAAIupB,IAChBvC,EAAOuB,EAAUvoB,KACLgnB,EAAKjI,OAEbsK,EAAS1pB,KAAKR,KAAKoe,SAASxP,MAAMiZ,IAClCuB,EAAUzoB,OAAOE,EAAG,GACpBupB,KAGJvpB,IAKAupB,EAAc,EACd9I,EAAY5S,OAAO1O,KAAKoe,UAExBkD,EAAY1B,MAAQ,KAExBzF,EAAUjB,aAAc,EAiB5B,OAXIoI,EAAY1B,QACZ5f,KAAKupB,YAAYjI,EAAY1B,OAC7B5f,KAAKqqB,sBAAsB/I,EAAY1B,QAIvC5f,KAAKwoB,MAAMH,iBAAiB/G,KAC5BA,EAAY1R,mBACZsa,EAASvpB,OAAO,EAAG,EAAG2gB,IAGF,IAApB4I,EAASrrB,OACFqrB,EAAS,GAEbA,GAGXC,qBAAsB,SAAS7I,GACvBA,EAAYhG,QACZgG,EAAYhG,MAAQgG,EAAYhG,MAC3B+H,QAAO,SAAAiH,GACJ,IAAI9Z,EAIJ,IAH0C,MAAtC8Z,EAAE,GAAG3E,SAAS,GAAGpS,WAAW9E,QAC5B6b,EAAE,GAAG3E,SAAS,GAAGpS,WAAa,IAAIuG,GAAe,WAAE,KAElDtJ,EAAI,EAAGA,EAAI8Z,EAAEzrB,OAAQ2R,IACtB,GAAI8Z,EAAE9Z,GAAGV,aAAewa,EAAE9Z,GAAG6W,cACzB,OAAO,EAGf,OAAO,OAKvBgD,sBAAuB,SAASzK,GAC5B,GAAKA,EAAL,CAGA,IAEI2K,EACA1C,EACArX,EAJEga,EAAY,GAMlB,IAAKha,EAAIoP,EAAM/gB,OAAS,EAAG2R,GAAK,EAAIA,IAEhC,IADAqX,EAAOjI,EAAMpP,cACOsJ,GAAKiQ,YACrB,GAAKS,EAAU3C,EAAK2B,MAEb,EACHe,EAAWC,EAAU3C,EAAK2B,iBACF1P,GAAKiQ,cACzBQ,EAAWC,EAAU3C,EAAK2B,MAAQ,CAACgB,EAAU3C,EAAK2B,MAAMzb,MAAM/N,KAAK0nB,YAEvE,IAAM+C,EAAU5C,EAAK9Z,MAAM/N,KAAK0nB,WACG,IAA/B6C,EAAS1Y,QAAQ4Y,GACjB7K,EAAMjf,OAAO6P,EAAG,GAEhB+Z,EAAS/pB,KAAKiqB,QAVlBD,EAAU3C,EAAK2B,MAAQ3B,IAiBvC0B,YAAa,SAAS3J,GAClB,GAAKA,EAAL,CAOA,IAHA,IAAM8K,EAAY,GACZC,EAAY,GAETC,EAAI,EAAGA,EAAIhL,EAAM/gB,OAAQ+rB,IAAK,CACnC,IAAM/C,EAAOjI,EAAMgL,GACnB,GAAI/C,EAAKgD,MAAO,CACZ,IAAMlY,EAAMkV,EAAK2B,KACjBkB,EAAO/X,GAAOiN,EAAMjf,OAAOiqB,IAAK,GAC5BD,EAAUnqB,KAAKkqB,EAAO/X,GAAO,IACjC+X,EAAO/X,GAAKnS,KAAKqnB,IAIzB8C,EAAUhd,SAAQ,SAAAmd,GACd,GAAIA,EAAMjsB,OAAS,EAAG,CAClB,IAAMksB,EAASD,EAAM,GACjBE,EAAS,GACPC,EAAS,CAAC,IAAInR,GAAKoR,WAAWF,IACpCF,EAAMnd,SAAQ,SAAAka,GACU,MAAfA,EAAKgD,OAAmBG,EAAMnsB,OAAS,GACxCosB,EAAMzqB,KAAK,IAAIsZ,GAAKoR,WAAWF,EAAQ,KAE3CA,EAAMxqB,KAAKqnB,EAAKpZ,OAChBsc,EAAOI,UAAYJ,EAAOI,WAAatD,EAAKsD,aAEhDJ,EAAOtc,MAAQ,IAAIqL,GAAKsR,MAAMH,UCjW/B,IAAAI,EAAA,CACXhS,QAAOA,EACP4E,cAAaA,EACbqN,4BAA2BA,EAC3BC,cAAaA,EACbnE,oBAAmBA,EACnBmB,aAAYA,GCXhB,IAAAiD,GAAe,WACX,IACI7T,EAGAkD,EAMA4Q,EAGAC,EAGAC,EAGAC,EAGAC,EAfAC,EAAY,GAiBVC,EAAc,GAUpB,SAASC,EAAentB,GAWpB,IAVA,IAMI0R,EACA0b,EACAtC,EAREuC,EAAOH,EAAYvb,EACnB2b,EAAOtR,EACPuR,EAAOL,EAAYvb,EAAIqb,EACvBQ,EAAWN,EAAYvb,EAAIob,EAAQ/sB,OAASutB,EAC5CE,EAAOP,EAAYvb,GAAK3R,EACxB0tB,EAAM5U,EAKLoU,EAAYvb,EAAI6b,EAAUN,EAAYvb,IAAK,CAG9C,GAFAD,EAAIgc,EAAIC,WAAWT,EAAYvb,GAE3Bub,EAAYU,mBAjBO,KAiBclc,EAA8B,CAE/D,GAAiB,OADjB0b,EAAWM,EAAI3Y,OAAOmY,EAAYvb,EAAI,IAChB,CAClBmZ,EAAU,CAACtb,MAAO0d,EAAYvb,EAAGkc,eAAe,GAChD,IAAIC,EAAcJ,EAAI1a,QAAQ,KAAMka,EAAYvb,EAAI,GAChDmc,EAAc,IACdA,EAAcN,GAElBN,EAAYvb,EAAImc,EAChBhD,EAAQiD,KAAOL,EAAIvT,OAAO2Q,EAAQtb,MAAO0d,EAAYvb,EAAImZ,EAAQtb,OACjE0d,EAAYc,aAAarsB,KAAKmpB,GAC9B,SACG,GAAiB,MAAbsC,EAAkB,CACzB,IAAMa,EAAgBP,EAAI1a,QAAQ,KAAMka,EAAYvb,EAAI,GACxD,GAAIsc,GAAiB,EAAG,CACpBnD,EAAU,CACNtb,MAAO0d,EAAYvb,EACnBoc,KAAML,EAAIvT,OAAO+S,EAAYvb,EAAGsc,EAAgB,EAAIf,EAAYvb,GAChEkc,eAAe,GAEnBX,EAAYvb,GAAKmZ,EAAQiD,KAAK/tB,OAAS,EACvCktB,EAAYc,aAAarsB,KAAKmpB,GAC9B,UAGR,MAGJ,GAnDe,KAmDVpZ,GAjDO,KAiDmBA,GAlDlB,IAkDyCA,GAhD1C,KAgDkEA,EAC1E,MAOR,GAHAqb,EAAUA,EAAQ/Y,MAAMhU,EAASktB,EAAYvb,EAAI8b,EAAMF,GACvDP,EAAaE,EAAYvb,GAEpBob,EAAQ/sB,OAAQ,CACjB,GAAIgc,EAAI8Q,EAAO9sB,OAAS,EAGpB,OAFA+sB,EAAUD,IAAS9Q,GACnBmR,EAAe,IACR,EAEXD,EAAY9F,UAAW,EAG3B,OAAOiG,IAASH,EAAYvb,GAAK2b,IAAStR,EA2S9C,OAxSAkR,EAAYgB,KAAO,WACflB,EAAaE,EAAYvb,EACzBsb,EAAUtrB,KAAM,CAAEorB,UAASpb,EAAGub,EAAYvb,EAAGqK,EAACA,KAElDkR,EAAYiB,QAAU,SAAAC,IAEdlB,EAAYvb,EAAIib,GAAaM,EAAYvb,IAAMib,GAAYwB,IAAyBvB,KACpFD,EAAWM,EAAYvb,EACvBkb,EAA+BuB,GAEnC,IAAMC,EAAQpB,EAAU3P,MACxByP,EAAUsB,EAAMtB,QAChBC,EAAaE,EAAYvb,EAAI0c,EAAM1c,EACnCqK,EAAIqS,EAAMrS,GAEdkR,EAAYoB,OAAS,WACjBrB,EAAU3P,OAEd4P,EAAYqB,aAAe,SAAAC,GACvB,IAAMC,EAAMvB,EAAYvb,GAAK6c,GAAU,GACjCE,EAAO5V,EAAM6U,WAAWc,GAC9B,OA5FmB,KA4FXC,GAzFQ,KAyFmBA,GA3FlB,IA2F0CA,GA1F3C,KA0FoEA,GAIxFxB,EAAYyB,IAAM,SAAAC,GACV1B,EAAYvb,EAAIqb,IAChBD,EAAUA,EAAQ/Y,MAAMkZ,EAAYvb,EAAIqb,GACxCA,EAAaE,EAAYvb,GAG7B,IAAM/E,EAAIgiB,EAAIC,KAAK9B,GACnB,OAAKngB,GAILugB,EAAevgB,EAAE,GAAG5M,QACH,iBAAN4M,EACAA,EAGS,IAAbA,EAAE5M,OAAe4M,EAAE,GAAKA,GARpB,MAWfsgB,EAAY4B,MAAQ,SAAAF,GAChB,OAAI9V,EAAM/D,OAAOmY,EAAYvb,KAAOid,EACzB,MAEXzB,EAAe,GACRyB,IAGX1B,EAAY6B,UAAY,SAAAH,GACpB,OAAI9V,EAAM/D,OAAOmY,EAAYvb,KAAOid,EACzB,KAEJA,GAGX1B,EAAY8B,KAAO,SAAAJ,GAIf,IAHA,IAAMK,EAAYL,EAAI5uB,OAGb6B,EAAI,EAAGA,EAAIotB,EAAWptB,IAC3B,GAAIiX,EAAM/D,OAAOmY,EAAYvb,EAAI9P,KAAO+sB,EAAI7Z,OAAOlT,GAC/C,OAAO,KAKf,OADAsrB,EAAe8B,GACRL,GAGX1B,EAAYgC,QAAU,SAAAlW,GAClB,IAAMyV,EAAMzV,GAAOkU,EAAYvb,EACzBwd,EAAYrW,EAAM/D,OAAO0Z,GAE/B,GAAkB,MAAdU,GAAoC,MAAdA,EAA1B,CAMA,IAHA,IAAMnvB,EAAS8Y,EAAM9Y,OACfovB,EAAkBX,EAEfzsB,EAAI,EAAGA,EAAIotB,EAAkBpvB,EAAQgC,IAAK,CAE/C,OADiB8W,EAAM/D,OAAO/S,EAAIotB,IAE9B,IAAK,KACDptB,IACA,SACJ,IAAK,KACL,IAAK,KACD,MACJ,KAAKmtB,EACD,IAAMnV,EAAMlB,EAAMqB,OAAOiV,EAAiBptB,EAAI,GAC9C,OAAKgX,GAAe,IAARA,EAIL,CAACmW,EAAWnV,IAHfmT,EAAenrB,EAAI,GACZgY,IAOvB,OAAO,OAOXkT,EAAYmC,YAAc,SAAAT,GACtB,IAWIU,EAXAC,EAAQ,GACRC,EAAY,KACZC,GAAY,EACZC,EAAa,EACXC,EAAa,GACbC,EAAc,GACd5vB,EAAS8Y,EAAM9Y,OACf6vB,EAAW3C,EAAYvb,EACzBme,EAAU5C,EAAYvb,EACtBA,EAAIub,EAAYvb,EAChBoe,GAAO,EAIPT,EADe,iBAARV,EACI,SAAAoB,GAAQ,OAAAA,IAASpB,GAEjB,SAAAoB,GAAQ,OAAApB,EAAI/R,KAAKmT,IAGhC,EAAG,CACC,IAAI5C,EAAWtU,EAAM/D,OAAOpD,GAC5B,GAAmB,IAAf+d,GAAoBJ,EAASlC,IAC7BoC,EAAY1W,EAAMqB,OAAO2V,EAASne,EAAIme,IAElCF,EAAYjuB,KAAK6tB,GAGjBI,EAAYjuB,KAAK,KAErB6tB,EAAYI,EACZzC,EAAexb,EAAIke,GACnBE,GAAO,MACJ,CACH,GAAIN,EAAW,CACM,MAAbrC,GACwB,MAAxBtU,EAAM/D,OAAOpD,EAAI,KACjBA,IACA+d,IACAD,GAAY,GAEhB9d,IACA,SAEJ,OAAQyb,GACJ,IAAK,KACDzb,IACAyb,EAAWtU,EAAM/D,OAAOpD,GACxBie,EAAYjuB,KAAKmX,EAAMqB,OAAO2V,EAASne,EAAIme,EAAU,IACrDA,EAAUne,EAAI,EACd,MACJ,IAAK,IAC2B,MAAxBmH,EAAM/D,OAAOpD,EAAI,KACjBA,IACA8d,GAAY,EACZC,KAEJ,MACJ,IAAK,IACL,IAAK,KACDH,EAAQrC,EAAYgC,QAAQvd,KAExBie,EAAYjuB,KAAKmX,EAAMqB,OAAO2V,EAASne,EAAIme,GAAUP,GAErDO,GADAne,GAAK4d,EAAM,GAAGvvB,OAAS,GACT,IAGdmtB,EAAexb,EAAIke,GACnBL,EAAYpC,EACZ2C,GAAO,GAEX,MACJ,IAAK,IACDJ,EAAWhuB,KAAK,KAChB+tB,IACA,MACJ,IAAK,IACDC,EAAWhuB,KAAK,KAChB+tB,IACA,MACJ,IAAK,IACDC,EAAWhuB,KAAK,KAChB+tB,IACA,MACJ,IAAK,IACL,IAAK,IACL,IAAK,IACD,IAAMO,EAAWN,EAAWrS,MACxB8P,IAAa6C,EACbP,KAGAvC,EAAexb,EAAIke,GACnBL,EAAYS,EACZF,GAAO,KAInBpe,EACQ3R,IACJ+vB,GAAO,UAGVA,GAET,OAAOP,GAAwB,MAGnCtC,EAAYU,mBAAoB,EAChCV,EAAYc,aAAe,GAC3Bd,EAAY9F,UAAW,EAIvB8F,EAAYgD,KAAO,SAAAtB,GACf,GAAmB,iBAARA,EAAkB,CAEzB,IAAK,IAAI7C,EAAI,EAAGA,EAAI6C,EAAI5uB,OAAQ+rB,IAC5B,GAAIjT,EAAM/D,OAAOmY,EAAYvb,EAAIoa,KAAO6C,EAAI7Z,OAAOgX,GAC/C,OAAO,EAGf,OAAO,EAEP,OAAO6C,EAAI/R,KAAKkQ,IAMxBG,EAAYiD,SAAW,SAAAvB,GAAO,OAAA9V,EAAM/D,OAAOmY,EAAYvb,KAAOid,GAE9D1B,EAAYkD,YAAc,WAAM,OAAAtX,EAAM/D,OAAOmY,EAAYvb,IAEzDub,EAAYmD,SAAW,WAAM,OAAAvX,EAAM/D,OAAOmY,EAAYvb,EAAI,IAE1Dub,EAAYoD,SAAW,WAAM,OAAAxX,GAE7BoU,EAAYqD,eAAiB,WACzB,IAAM7e,EAAIoH,EAAM6U,WAAWT,EAAYvb,GAEvC,OAAQD,EA3TO,IA2TWA,EA9TR,IAES,KA4TqBA,GA7T7B,KA6T6DA,GAGpFwb,EAAYsD,MAAQ,SAACxW,EAAKyW,EAAYC,GAClC5X,EAAQkB,EACRkT,EAAYvb,EAAIqK,EAAIgR,EAAaJ,EAAW,EAaxCE,EADA2D,EC9Wa,SAAA3X,EAAO6X,GAC5B,IAGIC,EACAC,EACAC,EACAC,EAGAC,EACAC,EACAC,EACAC,EACAlK,EAbEmK,EAAMtY,EAAM9Y,OACdqxB,EAAQ,EACRC,EAAa,EAKXxE,EAAS,GACXyE,EAAW,EAOf,SAASC,EAAUC,GACf,IAAML,EAAMJ,EAAsBO,EAC5BH,EAAM,MAASK,IAAWL,IAGhCtE,EAAOnrB,KAAKmX,EAAM9E,MAAMud,EAAUP,EAAsB,IACxDO,EAAWP,EAAsB,GAGrC,IAAKA,EAAsB,EAAGA,EAAsBI,EAAKJ,IAErD,MADAE,EAAKpY,EAAM6U,WAAWqD,KACV,IAAQE,GAAM,KAAUA,EAAK,IAKzC,OAAQA,GACJ,KAAK,GACDI,IACAT,EAAmBG,EACnB,SACJ,KAAK,GACD,KAAMM,EAAa,EACf,OAAOX,EAAK,sBAAuBK,GAEvC,SACJ,KAAK,GACIM,GAAcE,IACnB,SACJ,KAAK,IACDH,IACAT,EAAcI,EACd,SACJ,KAAK,IACD,KAAMK,EAAQ,EACV,OAAOV,EAAK,sBAAuBK,GAElCK,GAAUC,GAAcE,IAC7B,SACJ,KAAK,GACD,GAAIR,EAAsBI,EAAM,EAAG,CAAEJ,IAAuB,SAC5D,OAAOL,EAAK,iBAAkBK,GAClC,KAAK,GACL,KAAK,GACL,KAAK,GAGD,IAFA/J,EAAU,EACVgK,EAAyBD,EACpBA,GAA4C,EAAGA,EAAsBI,EAAKJ,IAE3E,MADAG,EAAMrY,EAAM6U,WAAWqD,IACb,IAAV,CACA,GAAIG,GAAOD,EAAI,CAAEjK,EAAU,EAAG,MAC9B,GAAW,IAAPkK,EAAW,CACX,GAAIH,GAAuBI,EAAM,EAC7B,OAAOT,EAAK,iBAAkBK,GAElCA,KAGR,GAAI/J,EAAW,SACf,OAAO0J,EAAK,cAAezxB,OAAAwyB,OAAOC,aAAaT,GAAG,KAAMD,GAC5D,KAAK,GACD,GAAIK,GAAeN,GAAuBI,EAAM,EAAM,SAEtD,GAAW,KADXD,EAAMrY,EAAM6U,WAAWqD,EAAsB,IAGzC,IAAKA,GAA4C,EAAGA,EAAsBI,OACtED,EAAMrY,EAAM6U,WAAWqD,KACX,KAAgB,IAAPG,GAAsB,IAAPA,GAFuCH,UAI5E,GAAW,IAAPG,EAAW,CAGlB,IADAL,EAAmBG,EAAyBD,EACvCA,GAA4C,EAAGA,EAAsBI,EAAM,IAEjE,MADXD,EAAMrY,EAAM6U,WAAWqD,MACLD,EAA2BC,GAClC,IAAPG,GAC6C,IAA7CrY,EAAM6U,WAAWqD,EAAsB,IAJoCA,KAMnF,GAAIA,GAAuBI,EAAM,EAC7B,OAAOT,EAAK,uBAAwBM,GAExCD,IAEJ,SACJ,KAAK,GACD,GAAKA,EAAsBI,EAAM,GAAoD,IAA7CtY,EAAM6U,WAAWqD,EAAsB,GAC3E,OAAOL,EAAK,iBAAkBK,GAElC,SAIZ,OAAc,IAAVK,EAEWV,EADNG,EAAmBF,GAAiBG,EAA2BD,EACpD,8BAEA,sBAF+BF,GAIzB,IAAfU,EACAX,EAAK,sBAAuBE,IAGvCW,GAAU,GACH1E,GDwPU8E,CAAQ5X,EAAK0W,GAEb,CAAC1W,GAGd+S,EAAUD,EAAO,GAEjBK,EAAe,IAGnBD,EAAY2E,IAAM,WACd,IAAIjZ,EACEoH,EAAakN,EAAYvb,GAAKmH,EAAM9Y,OAM1C,OAJIktB,EAAYvb,EAAIib,IAChBhU,EAAUiU,EACVK,EAAYvb,EAAIib,GAEb,CACH5M,WAAUA,EACV4M,SAAUM,EAAYvb,EACtBkb,6BAA8BjU,EAC9BkZ,mBAAoB5E,EAAYvb,GAAKmH,EAAM9Y,OAAS,EACpD+xB,aAAcjZ,EAAMoU,EAAYvb,KAIjCub,GExWI,IAAA8E,GAnCf,SAASC,EAAcC,GACnB,MAAO,CACHC,MAAO,GACP7iB,IAAK,SAASqb,EAAMrR,GAGhBqR,EAAOA,EAAK5W,cAGR5S,KAAKgxB,MAAM3zB,eAAemsB,GAG9BxpB,KAAKgxB,MAAMxH,GAAQrR,GAEvB8Y,YAAa,SAAS9vB,GAAT,IAKZ+vB,EAAAlxB,KAJG7C,OAAOg0B,KAAKhwB,GAAWwM,SACnB,SAAA6b,GACI0H,EAAK/iB,IAAIqb,EAAMroB,EAAUqoB,QAGrCtc,IAAK,SAASsc,GACV,OAAOxpB,KAAKgxB,MAAMxH,IAAWuH,GAAQA,EAAK7jB,IAAKsc,IAEnD4H,kBAAmB,WACf,OAAOpxB,KAAKgxB,OAEhBK,QAAS,WACL,OAAOP,EAAc9wB,OAEzBwY,OAAQ,SAASuY,GACb,OAAOD,EAAaC,KAKjBD,CAAc,MCnChBQ,GAAqB,CAC9BC,eAAe,GAGNC,GAAyB,CAClCD,eAAe,GCHbE,GAAY,SAAShjB,EAAOJ,EAAOoF,EAAiBie,EAAUC,EAAa5hB,GAC7E/P,KAAKyO,MAAQA,EACbzO,KAAK4N,OAASS,EACdrO,KAAK6N,UAAY4F,EACjBzT,KAAK0xB,SAAWA,EAChB1xB,KAAK2xB,iBAAsC,IAAhBA,GAAuCA,EAClE3xB,KAAKiqB,WAAY,EACjBjqB,KAAKgQ,mBAAmBD,IAG5B0hB,GAAUr0B,UAAYD,OAAOgU,OAAO,IAAIxE,EAAQ,CAC5C/L,KAAM,YACNiO,KAAI,WACA,OAAO,IAAI4iB,GAAUzxB,KAAKyO,MAAOzO,KAAK4N,OAAQ5N,KAAK6N,UAAW7N,KAAK0xB,SAAU1xB,KAAK2xB,YAAa3xB,KAAK+P,mBAExGR,iBAAQ6C,GACJ,OAAOA,EAAMrE,OAAS/N,KAAK+N,UAAYqE,EAAMrE,QAAU,OAAIlM,GAE/DiM,cAAa,WACT,OAAO9N,KAAK2xB,aAEhBzjB,OAAM,SAACF,EAASQ,GACZxO,KAAK8M,YAAc8kB,QAAQ5xB,KAAKyO,OAC5BzO,KAAK8M,aACL0B,EAAOL,IAAInO,KAAKyO,MAAOzO,KAAK6N,UAAW7N,KAAK4N,OAAQ5N,KAAK0xB,aCkBrE,IAAMG,GAAS,SAASA,EAAO7jB,EAASmP,EAAShQ,EAAU2kB,GAEvD,IAAIC,EADJD,EAAeA,GAAgB,EAE/B,IAAM/F,EAAcP,KAEpB,SAAS1rB,EAAMC,EAAKa,GAChB,MAAM,IAAI0W,EACN,CACIjJ,MAAO0d,EAAYvb,EACnBhP,SAAU2L,EAAS3L,SACnBZ,KAAMA,GAAQ,SACd6W,QAAS1X,GAEbod,GAUR,SAASjd,EAAKH,EAAKsO,EAAOzN,GACjBoN,EAAQgkB,OACTpwB,EAAO1B,KACH,IAAKoX,EACD,CACIjJ,MAAOA,MAAAA,EAAAA,EAAS0d,EAAYvb,EAC5BhP,SAAU2L,EAAS3L,SACnBZ,KAAMA,EAAO,GAAG7C,OAAA6C,EAAKqxB,cAAa,YAAa,UAC/Cxa,QAAS1X,GAEbod,GACDjM,YAKf,SAASghB,EAAOC,EAAKpyB,GAEjB,IAAMkX,EAAUkb,aAAe/Z,SAAY+Z,EAAI70B,KAAKy0B,GAAWhG,EAAYyB,IAAI2E,GAC/E,GAAIlb,EACA,OAAOA,EAGXnX,EAAMC,IAAuB,iBAARoyB,EACf,oBAAaA,EAAG,WAAAp0B,OAAUguB,EAAYkD,cAAgB,KACtD,qBAIV,SAASmD,EAAWD,EAAKpyB,GACrB,GAAIgsB,EAAY4B,MAAMwE,GAClB,OAAOA,EAEXryB,EAAMC,GAAO,aAAAhC,OAAao0B,EAAG,WAAAp0B,OAAUguB,EAAYkD,cAAgB,MAGvE,SAASoD,EAAahkB,GAClB,IAAM7M,EAAW2L,EAAS3L,SAE1B,MAAO,CACH8wB,WAAYxa,EAAkBzJ,EAAO0d,EAAYoD,YAAYxZ,KAAO,EACpE4c,SAAU/wB,GA+ClB,MAAO,CACHuqB,YAAWA,EACX5O,QAAOA,EACPhQ,SAAQA,EACRqlB,UAvCJ,SAAmB3Z,EAAK4Z,EAAWjV,GAC/B,IAAIvG,EACEyb,EAAc,GACdC,EAAS5G,EAEf,IACI4G,EAAOtD,MAAMxW,GAAK,GAAO,SAAc9Y,EAAKsO,GACxCmP,EAAS,CACL/F,QAAS1X,EACTsO,MAAOA,EAAQyjB,OAGvB,IAAK,IAAItf,EAAI,EAAG8X,SAAIA,EAAImI,EAAUjgB,GAAKA,IACnCyE,EAAS8a,EAAQzH,KACjBoI,EAAYlyB,KAAKyW,GAAU,MAGf0b,EAAOjC,MACX7R,WACRrB,EAAS,KAAMkV,GAGflV,GAAS,EAAM,MAErB,MAAOhe,GACL,MAAM,IAAI8X,EAAU,CAChBjJ,MAAO7O,EAAE6O,MAAQyjB,EACjBra,QAASjY,EAAEiY,SACZ0F,EAAShQ,EAAS3L,YAkBzBhE,MAAO,SAAUqb,EAAK2E,EAAUoV,GAC5B,IAAIhU,EAEAiU,EACAC,EACAC,EAHAC,EAAM,KAINC,EAAU,GAed,GAZIL,GAAkBA,EAAeM,oBACjCnB,EAAQoB,OAAS,WACHpH,EAAYyB,IAAI,iBAEtB1tB,EAAM,8EAKlB+yB,EAAcD,GAAkBA,EAAeC,WAAc,GAAA90B,OAAG8zB,EAAOuB,cAAcR,EAAeC,YAAW,MAAO,GACtHC,EAAcF,GAAkBA,EAAeE,WAAc,KAAA/0B,OAAK8zB,EAAOuB,cAAcR,EAAeE,aAAgB,GAElH9kB,EAAQlM,cAER,IADA,IAAMuxB,EAAgBrlB,EAAQlM,cAAcwxB,mBACnC5yB,EAAI,EAAGA,EAAI2yB,EAAcx0B,OAAQ6B,IACtCmY,EAAMwa,EAAc3yB,GAAG6yB,QAAQ1a,EAAK,CAAE7K,QAAOA,EAAEmP,QAAOA,EAAEhQ,SAAQA,KAIpE0lB,GAAeD,GAAkBA,EAAeY,UAChDP,GAAYL,GAAkBA,EAAeY,OAAUZ,EAAeY,OAAS,IAAMX,GACrFE,EAAU5V,EAAQsW,sBACVtmB,EAAS3L,UAAYuxB,EAAQ5lB,EAAS3L,WAAa,EAC3DuxB,EAAQ5lB,EAAS3L,WAAayxB,EAAQp0B,QAK1Cga,EAAMoa,GAFNpa,EAAMA,EAAIhc,QAAQ,SAAU,OAERA,QAAQ,UAAW,IAAMi2B,EAC7C3V,EAAQvF,SAASzK,EAAS3L,UAAYqX,EAMtC,IACIkT,EAAYsD,MAAMxW,EAAK7K,EAAQshB,YAAY,SAAcvvB,EAAKsO,GAC1D,MAAM,IAAIiJ,EAAU,CAChBjJ,MAAKA,EACLzN,KAAM,QACN6W,QAAS1X,EACTyB,SAAU2L,EAAS3L,UACpB2b,MAGPrD,GAAKnN,KAAKvP,UAAUI,MAAQwC,KAC5B4e,EAAO,IAAI9E,GAAK4Z,QAAQ,KAAM1zB,KAAK+xB,QAAQ4B,WAC3C7Z,GAAKnN,KAAKvP,UAAU2P,SAAW6R,EAC/BA,EAAKA,MAAO,EACZA,EAAK0J,WAAY,EACjB1J,EAAKiS,iBAAmBA,GAAiBQ,UAE3C,MAAO7xB,GACL,OAAOge,EAAS,IAAIlG,EAAU9X,EAAG2d,EAAShQ,EAAS3L,WAWvD,IAAMoyB,EAAU7H,EAAY2E,MAC5B,IAAKkD,EAAQ/U,WAAY,CAErB,IAAIpH,EAAUmc,EAAQlI,6BAEjBjU,IACDA,EAAU,qBACmB,MAAzBmc,EAAQhD,aACRnZ,GAAW,iCACqB,MAAzBmc,EAAQhD,aACfnZ,GAAW,iCACJmc,EAAQjD,qBACflZ,GAAW,iCAInBub,EAAM,IAAI1b,EAAU,CAChB1W,KAAM,QACN6W,QAAOA,EACPpJ,MAAOulB,EAAQnI,SACfjqB,SAAU2L,EAAS3L,UACpB2b,GAGP,IAAMgB,EAAS,SAAA3e,GAGX,OAFAA,EAAIwzB,GAAOxzB,GAAK2d,EAAQrd,QAGdN,aAAa8X,IACf9X,EAAI,IAAI8X,EAAU9X,EAAG2d,EAAShQ,EAAS3L,WAGpCgc,EAAShe,IAGTge,EAAS,KAAMoB,IAI9B,IAA+B,IAA3B5Q,EAAQ6lB,eAIR,OAAO1V,IAHP,IAAIkN,EAASpN,cAAcd,EAASgB,GAC/BQ,IAAIC,IAmCjBmT,QAASA,EAAU,CAgBf4B,QAAS,WAKL,IAJA,IAEInmB,EAFEsmB,EAAQ9zB,KAAK8zB,MACflV,EAAO,KAGE,CACT,KACIpR,EAAOxN,KAAK2pB,WAEZ/K,EAAKpe,KAAKgN,GAGd,GAAIue,EAAY9F,SACZ,MAEJ,GAAI8F,EAAYgD,KAAK,KACjB,MAIJ,GADAvhB,EAAOxN,KAAK+zB,aAERnV,EAAOA,EAAK7gB,OAAOyP,QAMvB,GAFAA,EAAOsmB,EAAME,cAAgBh0B,KAAKi0B,eAAiBH,EAAMx2B,MAAK,GAAO,IACjE0C,KAAK2iB,WAAa3iB,KAAKk0B,gBAAkBl0B,KAAKm0B,SAAS72B,QAAU0C,KAAKo0B,SAEtExV,EAAKpe,KAAKgN,OACP,CAEH,IADA,IAAI6mB,GAAiB,EACdtI,EAAY4B,MAAM,MACrB0G,GAAiB,EAErB,IAAKA,EACD,OAKZ,OAAOzV,GAKX+K,QAAS,WACL,GAAIoC,EAAYc,aAAahuB,OAAQ,CACjC,IAAM8qB,EAAUoC,EAAYc,aAAa/L,QACzC,OAAO,IAAIhH,GAAY,QAAE6P,EAAQiD,KAAMjD,EAAQ+C,cAAe/C,EAAQtb,MAAQyjB,EAAc3kB,KAOpGgnB,SAAU,CACNG,YAAa,WACT,OAAOvC,EAAQ+B,MAAMx2B,MAAK,GAAM,IAOpCi3B,OAAQ,SAAUC,GACd,IAAI3b,EACExK,EAAQ0d,EAAYvb,EACtBikB,GAAY,EAGhB,GADA1I,EAAYgB,OACRhB,EAAY4B,MAAM,KAClB8G,GAAY,OACT,GAAID,EAEP,YADAzI,EAAYiB,UAKhB,GADAnU,EAAMkT,EAAYgC,UAOlB,OAFAhC,EAAYoB,SAEL,IAAIrT,GAAW,OAAEjB,EAAIjF,OAAO,GAAIiF,EAAIG,OAAO,EAAGH,EAAIha,OAAS,GAAI41B,EAAWpmB,EAAQyjB,EAAc3kB,GALnG4e,EAAYiB,WAapBta,QAAS,WACL,IAAMgiB,EAAI3I,EAAY4B,MAAM,MAAQ5B,EAAYyB,IAAI,2DACpD,GAAIkH,EACA,OAAO5a,GAAK7J,MAAMwC,YAAYiiB,IAAM,IAAI5a,GAAY,QAAE4a,IAW9Dp3B,KAAM,WACF,IAAIksB,EACA5X,EACAuG,EACE9J,EAAQ0d,EAAYvb,EAG1B,IAAIub,EAAYgD,KAAK,WAOrB,GAHAhD,EAAYgB,OAEZvD,EAAOuC,EAAYyB,IAAI,iCACvB,CAOA,GAFAhE,EAAOA,EAAK,IACZrR,EAAOnY,KAAK20B,eAAenL,MAEvB5X,EAAOuG,EAAK3a,UACA2a,EAAKyc,KAEb,OADA7I,EAAYoB,SACLvb,EAMf,GAFAA,EAAO5R,KAAK4d,UAAUhM,GAEjBma,EAAY4B,MAAM,KAOvB,OAFA5B,EAAYoB,SAEL,IAAIrT,GAAS,KAAE0P,EAAM5X,EAAMvD,EAAQyjB,EAAc3kB,GANpD4e,EAAYiB,QAAQ,sDAjBpBjB,EAAYoB,UA0BpB0H,gBAAiB,WACb,IAAIC,EACAljB,EACEvD,EAAQ0d,EAAYvb,EAK1B,GAHAub,EAAYgB,OAEZ+H,EAAY/I,EAAYyB,IAAI,YAC5B,CAKAsH,EAAYA,EAAUC,UAAU,EAAGD,EAAUj2B,OAAS,GAEtD,IACI4P,EADAoZ,EAAO7nB,KAAKg1B,eAWhB,GARInN,IACApZ,EAAQzO,KAAKyO,SAGboZ,GAAQpZ,IACRmD,EAAO,CAAC,IAAKkI,GAAgB,YAAE+N,EAAMpZ,EAAO,KAAM,KAAMsd,EAAYvb,EAAIshB,EAAc3kB,GAAU,KAG/F4e,EAAY4B,MAAM,KAOvB,OAFA5B,EAAYoB,SAEL,IAAIrT,GAAS,KAAEgb,EAAWljB,EAAMvD,EAAQyjB,EAAc3kB,GANzD4e,EAAYiB,QAAQ,sDAlBpBjB,EAAYoB,UAoCpBwH,eAAgB,SAAUnL,GAItB,MAAO,CACH9Y,MAASukB,EAAElD,EAAQmD,SAAS,GAC5BC,QAASF,EAAEG,GACXC,GAASJ,EAAEG,IACb5L,EAAK5W,eAEP,SAASqiB,EAAEz3B,EAAOo3B,GACd,MAAO,CACHp3B,MAAKA,EACLo3B,KAAIA,GAKZ,SAASQ,IACL,MAAO,CAAClD,EAAOH,EAAQqD,UAAW,yBAI1CxX,UAAW,SAAU0X,GACjB,IAEIC,EACA9mB,EAHA+mB,EAAYF,GAAY,GACtBG,EAAgB,GAMtB,IAFA1J,EAAYgB,SAEC,CACT,GAAIuI,EACAA,GAAW,MACR,CAEH,KADA7mB,EAAQsjB,EAAQ2D,mBAAqB11B,KAAK21B,cAAgB5D,EAAQ6D,cAE9D,MAGAnnB,EAAMA,OAA+B,GAAtBA,EAAMA,MAAM5P,SAC3B4P,EAAQA,EAAMA,MAAM,IAGxB+mB,EAAUh1B,KAAKiO,GAGfsd,EAAY4B,MAAM,OAIlB5B,EAAY4B,MAAM,MAAQ4H,KAC1BA,GAAuB,EACvB9mB,EAAS+mB,EAAU32B,OAAS,EAAK22B,EAAU,GACrC,IAAI1b,GAAKsR,MAAMoK,GACrBC,EAAcj1B,KAAKiO,GACnB+mB,EAAY,IAKpB,OADAzJ,EAAYoB,SACLoI,EAAuBE,EAAgBD,GAElDK,QAAS,WACL,OAAO71B,KAAK81B,aACL91B,KAAKyR,SACLzR,KAAKu0B,UACLv0B,KAAK+1B,qBAShBJ,WAAY,WACR,IAAIhjB,EACAlE,EAGJ,GAFAsd,EAAYgB,OACZpa,EAAMoZ,EAAYyB,IAAI,iBAKtB,GAAKzB,EAAY4B,MAAM,KAAvB,CAKA,GADAlf,EAAQsjB,EAAQiE,SAGZ,OADAjK,EAAYoB,SACL,IAAIrT,GAAe,WAAEnH,EAAKlE,GAEjCsd,EAAYiB,eARZjB,EAAYiB,eAJZjB,EAAYiB,WAuBpBiJ,IAAK,WACD,IAAIxnB,EACEJ,EAAQ0d,EAAYvb,EAI1B,GAFAub,EAAYU,mBAAoB,EAE3BV,EAAY8B,KAAK,QAYtB,OAPApf,EAAQzO,KAAKu0B,UAAYv0B,KAAKyoB,YAAczoB,KAAKk2B,YACzCnK,EAAYyB,IAAI,+BAAiC,GAEzDzB,EAAYU,mBAAoB,EAEhC2F,EAAW,KAEJ,IAAItY,GAAQ,SAAmBjY,IAAhB4M,EAAMA,OACxBA,aAAiBqL,GAAKqc,UACtB1nB,aAAiBqL,GAAKsc,SACtB3nB,EAAQ,IAAIqL,GAAc,UAAErL,EAAOJ,GAAQA,EAAQyjB,EAAc3kB,GAdjE4e,EAAYU,mBAAoB,GAyBxChE,SAAU,WACN,IAAI4N,EACA7M,EACEnb,EAAQ0d,EAAYvb,EAG1B,GADAub,EAAYgB,OACsB,MAA9BhB,EAAYkD,gBAA0BzF,EAAOuC,EAAYyB,IAAI,eAAgB,CAE7E,GAAW,OADX6I,EAAKtK,EAAYkD,gBACQ,MAAPoH,IAAetK,EAAYmD,WAAW7e,MAAM,OAAQ,CAElE,IAAM4G,EAAS8a,EAAQmC,aAAa1K,GACpC,GAAIvS,EAEA,OADA8U,EAAYoB,SACLlW,EAIf,OADA8U,EAAYoB,SACL,IAAIrT,GAAa,SAAE0P,EAAMnb,EAAQyjB,EAAc3kB,GAE1D4e,EAAYiB,WAIhBsJ,cAAe,WACX,IAAIC,EACEloB,EAAQ0d,EAAYvb,EAE1B,GAAkC,MAA9Bub,EAAYkD,gBAA0BsH,EAAQxK,EAAYyB,IAAI,mBAC9D,OAAO,IAAI1T,GAAa,SAAE,WAAIyc,EAAM,IAAMloB,EAAQyjB,EAAc3kB,IAQxE+oB,SAAU,WACN,IAAI1M,EACEnb,EAAQ0d,EAAYvb,EAE1B,GAAkC,MAA9Bub,EAAYkD,gBAA0BzF,EAAOuC,EAAYyB,IAAI,cAC7D,OAAO,IAAI1T,GAAa,SAAE0P,EAAMnb,EAAQyjB,EAAc3kB,IAK9DqpB,cAAe,WACX,IAAID,EACEloB,EAAQ0d,EAAYvb,EAE1B,GAAkC,MAA9Bub,EAAYkD,gBAA0BsH,EAAQxK,EAAYyB,IAAI,oBAC9D,OAAO,IAAI1T,GAAa,SAAE,WAAIyc,EAAM,IAAMloB,EAAQyjB,EAAc3kB,IAUxEsE,MAAO,WACH,IAAIvB,EAGJ,GAFA6b,EAAYgB,OAEsB,MAA9BhB,EAAYkD,gBAA0B/e,EAAM6b,EAAYyB,IAAI,mEACvDtd,EAAI,GAEL,OADA6b,EAAYoB,SACL,IAAIrT,GAAU,MAAE5J,EAAI,QAAIrO,EAAWqO,EAAI,IAGtD6b,EAAYiB,WAGhByJ,aAAc,WACV1K,EAAYgB,OACZ,IAAMN,EAAoBV,EAAYU,kBACtCV,EAAYU,mBAAoB,EAChC,IAAMiI,EAAI3I,EAAYyB,IAAI,6BAE1B,GADAzB,EAAYU,kBAAoBA,EAC3BiI,EAAL,CAIA3I,EAAYiB,UACZ,IAAMvb,EAAQqI,GAAK7J,MAAMwC,YAAYiiB,GACrC,OAAIjjB,GACAsa,EAAY8B,KAAK6G,GACVjjB,QAFX,EALIsa,EAAYoB,UAgBpB2I,UAAW,WACP,IAAI/J,EAAYqD,iBAAhB,CAIA,IAAM3gB,EAAQsd,EAAYyB,IAAI,kCAC9B,OAAI/e,EACO,IAAIqL,GAAc,UAAErL,EAAM,GAAIA,EAAM,SAD/C,IAUJsnB,kBAAmB,WACf,IAAIW,EAGJ,GADAA,EAAK3K,EAAYyB,IAAI,sCAEjB,OAAO,IAAI1T,GAAsB,kBAAE4c,EAAG,KAS9CC,WAAY,WACR,IAAIC,EACEvoB,EAAQ0d,EAAYvb,EAE1Bub,EAAYgB,OAEZ,IAAM8J,EAAS9K,EAAY4B,MAAM,KAGjC,GAFgB5B,EAAY4B,MAAM,KAElC,CAMA,GADAiJ,EAAK7K,EAAYyB,IAAI,WAGjB,OADAzB,EAAYoB,SACL,IAAIrT,GAAe,WAAE8c,EAAG5d,OAAO,EAAG4d,EAAG/3B,OAAS,GAAI+yB,QAAQiF,GAASxoB,EAAQyjB,EAAc3kB,GAEpG4e,EAAYiB,QAAQ,sCAThBjB,EAAYiB,YAkBxBvE,SAAU,WACN,IAAIe,EAEJ,GAAkC,MAA9BuC,EAAYkD,gBAA0BzF,EAAOuC,EAAYyB,IAAI,mBAAsB,OAAOhE,EAAK,IAWvG0K,aAAc,SAAU4C,GACpB,IAAIC,EACEvmB,EAAIub,EAAYvb,EAChBwmB,IAAYF,EACdtN,EAAOsN,EAIX,GAFA/K,EAAYgB,OAERvD,GAAuC,MAA9BuC,EAAYkD,gBACjBzF,EAAOuC,EAAYyB,IAAI,yBAA2B,CAItD,KAFAuJ,EAAU/2B,KAAK8zB,MAAMmD,iBAEHD,GAAsC,OAA3BjL,EAAY8B,KAAK,OAAgC,OAAZrE,EAAK,IAEnE,YADAuC,EAAYiB,QAAQ,2CAInBgK,IACDxN,EAAOA,EAAK,IAGhB,IAAMlsB,EAAO,IAAIwc,GAAKod,aAAa1N,EAAMhZ,EAAGrD,GAC5C,OAAK6pB,GAAWjF,EAAQrB,OACpB3E,EAAYoB,SACL7vB,IAGPyuB,EAAYoB,SACL,IAAIrT,GAAKqd,eAAe75B,EAAMy5B,EAASvmB,EAAGrD,IAIzD4e,EAAYiB,WAMhBhL,OAAQ,SAASoV,GACb,IAAIzR,EACAnmB,EAEAilB,EACAxC,EACAD,EAHE3T,EAAQ0d,EAAYvb,EAK1B,GAAKub,EAAY8B,KAAKuJ,EAAS,YAAc,YAA7C,CAIA,EAAG,CACC3S,EAAS,KACTkB,EAAW,KAEX,IADA,IAAI0R,GAAQ,IACH5S,EAASsH,EAAYyB,IAAI,0BAC9BhuB,EAAIQ,KAAKs3B,aASJD,GAAS73B,EAAE+T,WAAW9E,OACvBvO,EAAK,wGAAyGmO,GAGlHgpB,GAAQ,EACJ1R,EACAA,EAASnlB,KAAKhB,GAEdmmB,EAAW,CAAEnmB,GAIrBilB,EAASA,GAAUA,EAAO,GACrBkB,GACD7lB,EAAM,0CAEVkiB,EAAS,IAAIlI,GAAW,OAAE,IAAIA,GAAa,SAAE6L,GAAWlB,EAAQpW,EAAQyjB,EAAc3kB,GAClF8U,EACAA,EAAWzhB,KAAKwhB,GAEhBC,EAAa,CAAED,SAEd+J,EAAY4B,MAAM,MAQ3B,OANAuE,EAAO,OAEHkF,GACAlF,EAAO,MAGJjQ,IAMX8R,WAAY,WACR,OAAO/zB,KAAKgiB,QAAO,IAMvB8R,MAAO,CAiBHx2B,KAAM,SAAU05B,EAASO,GACrB,IAEIR,EAEApR,EACA/T,EACA4lB,EACAC,EAPExrB,EAAI8f,EAAYkD,cAClB9D,GAAY,EAEV9c,EAAQ0d,EAAYvb,EAKtBknB,GAAW,EAEf,GAAU,MAANzrB,GAAmB,MAANA,EAAjB,CAMA,GAJA8f,EAAYgB,OAEZpH,EAAW3lB,KAAK2lB,WAEF,CAeV,GAdA8R,EAAc1L,EAAYvb,EACtBub,EAAY4B,MAAM,OAClB+J,EAAW3L,EAAYqB,cAAc,GACrCxb,EAAO5R,KAAK4R,MAAK,GAAMA,KACvBwgB,EAAW,KACXoF,GAAY,EACRE,GACAx3B,EAAK,iFAAkFu3B,EAAa,gBAI1F,IAAdF,IACAR,EAAU/2B,KAAKi3B,gBAED,IAAdM,IAAuBR,EAEvB,YADAhL,EAAYiB,UAIhB,GAAIgK,IAAYD,IAAYS,EAGxB,YADAzL,EAAYiB,UAQhB,IAJKgK,GAAWjF,EAAQ5G,cACpBA,GAAY,GAGZ6L,GAAWjF,EAAQrB,MAAO,CAC1B3E,EAAYoB,SACZ,IAAM2G,EAAQ,IAAIha,GAAKga,MAAU,KAAEnO,EAAU/T,EAAMvD,EAAQyjB,EAAc3kB,GAAW4pB,GAAW5L,GAC/F,OAAI4L,EACO,IAAIjd,GAAKqd,eAAerD,EAAOiD,IAGjCS,GACDt3B,EAAK,oDAAqDu3B,EAAa,cAEpE3D,IAKnB/H,EAAYiB,YAMhBrH,SAAU,WAON,IANA,IAAIA,EACAnmB,EACA+Q,EACAonB,EACAC,EACEC,EAAK,wDAEPD,EAAY7L,EAAYvb,EACxBhR,EAAIusB,EAAYyB,IAAIqK,IAKpBF,EAAO,IAAI7d,GAAY,QAAEvJ,EAAG/Q,GAAG,EAAOo4B,EAAY9F,EAAc3kB,GAC5DwY,EACAA,EAASnlB,KAAKm3B,GAEdhS,EAAW,CAAEgS,GAEjBpnB,EAAIwb,EAAY4B,MAAM,KAE1B,OAAOhI,GAEX/T,KAAM,SAAUkmB,GACZ,IAKIvC,EACAwC,EACAvO,EACAwO,EACAvpB,EACA0jB,EACA8F,EAXE9D,EAAWpC,EAAQoC,SACnB+D,EAAW,CAAEtmB,KAAK,KAAMumB,UAAU,GACpCC,EAAc,GACZ3C,EAAgB,GAChBD,EAAY,GAQd6C,GAAS,EAIb,IAFAtM,EAAYgB,SAEC,CACT,GAAI+K,EACA3F,EAAMJ,EAAQ2D,mBAAqB3D,EAAQ6D,iBACxC,CAEH,GADA7J,EAAYc,aAAahuB,OAAS,EAC9BktB,EAAY8B,KAAK,OAAQ,CACzBqK,EAASC,UAAW,EAChBpM,EAAY4B,MAAM,OAAS4H,IAC3BA,GAAuB,IAE1BA,EAAuBE,EAAgBD,GACnCh1B,KAAK,CAAE23B,UAAU,IACtB,MAEJhG,EAAMgC,EAAS1L,YAAc0L,EAAS+B,YAAc/B,EAAS0B,WAAa1B,EAASzhB,WAAa1S,KAAK1C,MAAK,GAG9G,IAAK60B,IAAQkG,EACT,MAGJL,EAAW,KACP7F,EAAImG,mBACJnG,EAAImG,oBAER7pB,EAAQ0jB,EACR,IAAI/a,EAAM,KAWV,GATI0gB,EAEI3F,EAAI1jB,OAA6B,GAApB0jB,EAAI1jB,MAAM5P,SACvBuY,EAAM+a,EAAI1jB,MAAM,IAGpB2I,EAAM+a,EAGN/a,IAAQA,aAAe0C,GAAKqc,UAAY/e,aAAe0C,GAAKsc,UAC5D,GAAIrK,EAAY4B,MAAM,KAAM,CAUxB,GATIyK,EAAYv5B,OAAS,IACjB02B,GACAz1B,EAAM,yCAEVi4B,GAA0B,KAG9BtpB,EAAQsjB,EAAQ2D,mBAAqB3D,EAAQ6D,cAEjC,CACR,IAAIkC,EAKA,OAFA/L,EAAYiB,UACZkL,EAAStmB,KAAO,GACTsmB,EAJPp4B,EAAM,iDAOdk4B,EAAYxO,EAAOpS,EAAIoS,UACpB,GAAIuC,EAAY8B,KAAK,OAAQ,CAChC,IAAKiK,EAAQ,CACTI,EAASC,UAAW,EAChBpM,EAAY4B,MAAM,OAAS4H,IAC3BA,GAAuB,IAE1BA,EAAuBE,EAAgBD,GACnCh1B,KAAK,CAAEgpB,KAAM2I,EAAI3I,KAAM2O,UAAU,IACtC,MAEAF,GAAS,OAELH,IACRtO,EAAOwO,EAAW5gB,EAAIoS,KACtB/a,EAAQ,MAIZA,GACA2pB,EAAY53B,KAAKiO,GAGrB+mB,EAAUh1B,KAAK,CAAEgpB,KAAKwO,EAAUvpB,QAAOwpB,OAAMA,IAEzClM,EAAY4B,MAAM,KAClB0K,GAAS,IAGbA,EAAoC,MAA3BtM,EAAY4B,MAAM,OAEb4H,KAENwC,GACAj4B,EAAM,yCAGVy1B,GAAuB,EAEnB6C,EAAYv5B,OAAS,IACrB4P,EAAQ,IAAIqL,GAAU,MAAEse,IAE5B3C,EAAcj1B,KAAK,CAAEgpB,KAAIA,EAAE/a,MAAKA,EAAEwpB,OAAMA,IAExCzO,EAAO,KACP4O,EAAc,GACdL,GAA0B,GAMlC,OAFAhM,EAAYoB,SACZ+K,EAAStmB,KAAO2jB,EAAuBE,EAAgBD,EAChD0C,GAqBXlE,WAAY,WACR,IAAIxK,EAEAnZ,EACAsS,EACA4V,EAHAC,EAAS,GAITL,GAAW,EACf,KAAmC,MAA9BpM,EAAYkD,eAAuD,MAA9BlD,EAAYkD,eAClDlD,EAAYgD,KAAK,aAOrB,GAHAhD,EAAYgB,OAEZ1c,EAAQ0b,EAAYyB,IAAI,gEACb,CACPhE,EAAOnZ,EAAM,GAEb,IAAMooB,EAAUz4B,KAAK4R,MAAK,GAS1B,GARA4mB,EAASC,EAAQ7mB,KACjBumB,EAAWM,EAAQN,UAOdpM,EAAY4B,MAAM,KAEnB,YADA5B,EAAYiB,QAAQ,uBAYxB,GARAjB,EAAYc,aAAahuB,OAAS,EAE9BktB,EAAY8B,KAAK,UACjB0K,EAAOrG,EAAOH,EAAQ2G,WAAY,uBAGtC/V,EAAUoP,EAAQ4G,QAId,OADA5M,EAAYoB,SACL,IAAIrT,GAAKga,MAAgB,WAAEtK,EAAMgP,EAAQ7V,EAAS4V,EAAMJ,GAE/DpM,EAAYiB,eAGhBjB,EAAYiB,WAIpBiK,YAAa,WACT,IAAIpP,EACEkP,EAAU,GAEhB,GAAkC,MAA9BhL,EAAYkD,cAAhB,CAIA,OAAa,CAGT,GAFAlD,EAAYgB,SACZlF,EAAO7nB,KAAK44B,gBACU,KAAT/Q,EAAa,CACtBkE,EAAYiB,UACZ,MAEJ+J,EAAQv2B,KAAKqnB,GACbkE,EAAYoB,SAEhB,OAAI4J,EAAQl4B,OAAS,EACVk4B,OADX,IAKJ6B,YAAa,WAGT,GAFA7M,EAAYgB,OAEPhB,EAAY4B,MAAM,KAAvB,CAKA,IAAMnE,EAAOuC,EAAYyB,IAAI,gCAE7B,GAAKzB,EAAY4B,MAAM,KAKvB,OAAInE,GAAiB,KAATA,GACRuC,EAAYoB,SACL3D,QAGXuC,EAAYiB,UATRjB,EAAYiB,eAPZjB,EAAYiB,YAuBxBgJ,OAAQ,WACJ,IAAM7B,EAAWn0B,KAAKm0B,SAEtB,OAAOn0B,KAAK2pB,WAAawK,EAAS0B,WAAa1B,EAAS1L,YAAc0L,EAAS8B,OAC3E9B,EAAS+B,YAAc/B,EAAS72B,QAAU62B,EAASzhB,WAAa1S,KAAK8zB,MAAMx2B,MAAK,IAChF62B,EAASwC,cAQjBjG,IAAK,WACD,OAAO3E,EAAY4B,MAAM,MAAQ5B,EAAYgD,KAAK,MAQtDmG,QAAS,WACL,IAAIzmB,EAGJ,GAAKsd,EAAYyB,IAAI,cAOrB,OANA/e,EAAQsd,EAAYyB,IAAI,WAEpB/e,EAAQyjB,EAAOH,EAAQoC,SAAS1L,SAAU,yBAC1Cha,EAAQ,KAAK1Q,OAAA0Q,EAAM+a,KAAK3W,MAAM,GAAE,MAEpCuf,EAAW,KACJ,IAAItY,GAAK+e,OAAO,GAAI,iBAAiB96B,OAAA0Q,EAAQ,OAexD6oB,QAAS,WACL,IAAI93B,EACA+Q,EACAM,EACExC,EAAQ0d,EAAYvb,EAY1B,GAVAD,EAAIvQ,KAAKuT,eAGT/T,EAAIusB,EAAYyB,IAAI,uBAEhBzB,EAAYyB,IAAI,+EAChBzB,EAAY4B,MAAM,MAAQ5B,EAAY4B,MAAM,MAAQ3tB,KAAK84B,aACzD/M,EAAYyB,IAAI,kBAAqBzB,EAAYyB,IAAI,gBACrDxtB,KAAKm0B,SAASmC,iBAId,GADAvK,EAAYgB,OACRhB,EAAY4B,MAAM,KAClB,GAAK9c,EAAI7Q,KAAKwjB,UAAS,GAAS,CAE5B,IADA,IAAIX,EAAY,GACTkJ,EAAY4B,MAAM,MACrB9K,EAAUriB,KAAKqQ,GACfgS,EAAUriB,KAAK,IAAIixB,GAAU,MAC7B5gB,EAAI7Q,KAAKwjB,UAAS,GAEtBX,EAAUriB,KAAKqQ,GAEXkb,EAAY4B,MAAM,MAEdnuB,EADAqjB,EAAUhkB,OAAS,EACf,IAAKib,GAAU,MAAE,IAAI0M,GAAS3D,IAE9B,IAAI/I,GAAU,MAAEjJ,GAExBkb,EAAYoB,UAEZpB,EAAYiB,QAAQ,4BAGxBjB,EAAYiB,QAAQ,4BAGxBjB,EAAYoB,SAIpB,GAAI3tB,EAAK,OAAO,IAAIsa,GAAY,QAAEvJ,EAAG/Q,EAAGA,aAAasa,GAAKqc,SAAU9nB,EAAQyjB,EAAc3kB,IAY9FoG,WAAY,WACR,IAAIhD,EAAIwb,EAAYkD,cAEpB,GAAU,MAAN1e,EAAW,CACXwb,EAAYgB,OACZ,IAAMgM,EAAoBhN,EAAYyB,IAAI,gBAC1C,GAAIuL,EAEA,OADAhN,EAAYoB,SACL,IAAIrT,GAAe,WAAEif,GAEhChN,EAAYiB,UAGhB,GAAU,MAANzc,GAAmB,MAANA,GAAmB,MAANA,GAAmB,MAANA,GAAmB,MAANA,EAAW,CAM/D,IALAwb,EAAYvb,IACF,MAAND,GAA2C,MAA9Bwb,EAAYkD,gBACzB1e,EAAI,KACJwb,EAAYvb,KAETub,EAAYqB,gBAAkBrB,EAAYvb,IACjD,OAAO,IAAIsJ,GAAe,WAAEvJ,GACzB,OAAIwb,EAAYqB,cAAc,GAC1B,IAAItT,GAAe,WAAE,KAErB,IAAIA,GAAe,WAAE,OAYpC0J,SAAU,SAAUwV,GAChB,IACIrT,EACA1D,EACA1R,EACA/Q,EACAuiB,EACAkX,EACA7D,EAPE/mB,EAAQ0d,EAAYvb,EAS1B,IADAwoB,GAAoB,IAAXA,GACDA,IAAW/W,EAAajiB,KAAKgiB,WAAegX,IAAWC,EAAOlN,EAAY8B,KAAK,WAAcruB,EAAIQ,KAAKs3B,cACtG2B,EACA7D,EAAYlD,EAAOlyB,KAAK04B,WAAY,sBAC7BtD,EACPt1B,EAAM,qDACCmiB,EAEHF,EADAA,EACaA,EAAWhkB,OAAOkkB,GAElBA,GAGbF,GAAcjiB,EAAM,kDACxByQ,EAAIwb,EAAYkD,cACZxhB,MAAMC,QAAQlO,IACdA,EAAEmO,SAAQ,SAAAurB,GAAO,OAAAvT,EAASnlB,KAAK04B,MAC7BvT,EACFA,EAASnlB,KAAKhB,GAEdmmB,EAAW,CAAEnmB,GAEjBA,EAAI,MAEE,MAAN+Q,GAAmB,MAANA,GAAmB,MAANA,GAAmB,MAANA,GAAmB,MAANA,KAK5D,GAAIoV,EAAY,OAAO,IAAI7L,GAAa,SAAE6L,EAAU5D,EAAYqT,EAAW/mB,EAAQyjB,EAAc3kB,GAC7F4U,GAAcjiB,EAAM,2EAE5B+iB,UAAW,WAGP,IAFA,IAAI5W,EACA4W,GAEA5W,EAAIjM,KAAKwjB,cAILX,EACAA,EAAUriB,KAAKyL,GAEf4W,EAAY,CAAE5W,GAElB8f,EAAYc,aAAahuB,OAAS,EAC9BoN,EAAEmpB,WAAavS,EAAUhkB,OAAS,GAClCiB,EAAM,2DAELisB,EAAY4B,MAAM,OACnB1hB,EAAEmpB,WACFt1B,EAAM,2DAEVisB,EAAYc,aAAahuB,OAAS,EAEtC,OAAOgkB,GAEXiW,UAAW,WACP,GAAK/M,EAAY4B,MAAM,KAAvB,CAEA,IACIhb,EACAyE,EACArI,EAKAoqB,EAREhF,EAAWn0B,KAAKm0B,SAwBtB,OAdMxhB,EAAMwhB,EAASmC,mBACjB3jB,EAAMuf,EAAO,mDAGjBnjB,EAAKgd,EAAYyB,IAAI,iBAEjBpW,EAAM+c,EAASI,UAAYxI,EAAYyB,IAAI,aAAezB,EAAYyB,IAAI,YAAc2G,EAASmC,mBAE7F6C,EAAMpN,EAAYyB,IAAI,YAI9B4E,EAAW,KAEJ,IAAItY,GAAc,UAAEnH,EAAK5D,EAAIqI,EAAK+hB,KAO7CR,MAAO,WACH,IAAIS,EACJ,GAAIrN,EAAY4B,MAAM,OAASyL,EAAUp5B,KAAK2zB,YAAc5H,EAAY4B,MAAM,KAC1E,OAAOyL,GAIfC,aAAc,WACV,IAAIV,EAAQ34B,KAAK24B,QAKjB,OAHIA,IACAA,EAAQ,IAAI7e,GAAK4Z,QAAQ,KAAMiF,IAE5BA,GAGXjD,gBAAiB,WACb,IAAI+C,EACAD,EACAL,EAGJ,GADApM,EAAYgB,QACRhB,EAAYyB,IAAI,aAQhBgL,GADAC,EAAUz4B,KAAK8zB,MAAMliB,MAAK,IACTA,KACjBumB,EAAWM,EAAQN,SACdpM,EAAY4B,MAAM,MAV3B,CAeA,IAAM0L,EAAer5B,KAAKq5B,eAC1B,GAAIA,EAEA,OADAtN,EAAYoB,SACRqL,EACO,IAAI1e,GAAKga,MAAMwF,WAAW,KAAMd,EAAQa,EAAc,KAAMlB,GAEhE,IAAIre,GAAKyf,gBAAgBF,GAEpCtN,EAAYiB,eAZJjB,EAAYiB,WAkBxBrK,QAAS,WACL,IAAIE,EACAjD,EACA8J,EAUJ,GARAqC,EAAYgB,OAER/e,EAAQwrB,kBACR9P,EAAY2I,EAAatG,EAAYvb,KAGzCqS,EAAY7iB,KAAK6iB,eAECjD,EAAQ5f,KAAK24B,SAAU,CACrC5M,EAAYoB,SACZ,IAAMxK,EAAU,IAAI7I,GAAY,QAAE+I,EAAWjD,EAAO5R,EAAQyrB,eAI5D,OAHIzrB,EAAQwrB,kBACR7W,EAAQ+G,UAAYA,GAEjB/G,EAEPoJ,EAAYiB,WAGpBiH,YAAa,WACT,IAAIzK,EACA/a,EAEAirB,EAEAvO,EACAN,EACArX,EALEnF,EAAQ0d,EAAYvb,EAEpBD,EAAIwb,EAAYkD,cAKtB,GAAU,MAAN1e,GAAmB,MAANA,GAAmB,MAANA,GAAmB,MAANA,EAK3C,GAHAwb,EAAYgB,OAEZvD,EAAOxpB,KAAKyoB,YAAczoB,KAAKg1B,eACrB,CAWN,IAVAxhB,EAA6B,iBAATgW,KAGhB/a,EAAQzO,KAAK01B,qBAETgE,GAAQ,GAIhB3N,EAAYc,aAAahuB,OAAS,GAC7B4P,EAAO,CAmBR,GAfAoc,GAASrX,GAAcgW,EAAK3qB,OAAS,GAAK2qB,EAAKrN,MAAM1N,MAK7CA,EAFJ+a,EAAK,GAAG/a,OAAuC,OAA9B+a,EAAK,GAAG/a,MAAMoE,MAAM,EAAG,GACpCkZ,EAAY4B,MAAM,KACV,IAAI8D,GAAU,IAEdzxB,KAAK25B,gBAAgB,QAMzB35B,KAAK45B,iBAKb,OAFA7N,EAAYoB,SAEL,IAAIrT,GAAgB,YAAE0P,EAAM/a,GAAO,EAAOoc,EAAOxc,EAAQyjB,EAAc3kB,GAG7EsB,IACDA,EAAQzO,KAAKyO,SAGbA,EACA0c,EAAYnrB,KAAKmrB,YACV3X,IAEP/E,EAAQzO,KAAK25B,mBAIrB,GAAIlrB,IAAUzO,KAAK0wB,OAASgJ,GAExB,OADA3N,EAAYoB,SACL,IAAIrT,GAAgB,YAAE0P,EAAM/a,EAAO0c,EAAWN,EAAOxc,EAAQyjB,EAAc3kB,GAGlF4e,EAAYiB,eAGhBjB,EAAYiB,WAGpB4M,eAAgB,WACZ,IAAMvrB,EAAQ0d,EAAYvb,EACpBH,EAAQ0b,EAAYyB,IAAI,2BAC9B,GAAInd,EACA,OAAO,IAAIyJ,GAAc,UAAEzJ,EAAM,GAAIhC,EAAQyjB,IAYrD6H,gBAAiB,SAAUE,GACvB,IAAIrpB,EACAhR,EACAs6B,EACArrB,EACEgf,EAAMoM,GAAe,IACrBxrB,EAAQ0d,EAAYvb,EACpByG,EAAS,GAEf,SAAS8iB,IACL,IAAMlL,EAAO9C,EAAYkD,cACzB,MAAmB,iBAARxB,EACAoB,IAASpB,EAETA,EAAI/R,KAAKmT,GAGxB,IAAIkL,IAAJ,CAGAtrB,EAAQ,GACR,IACIjP,EAAIQ,KAAK2pB,WAELlb,EAAMjO,KAAKhB,KAGfA,EAAIQ,KAAKg2B,WAELvnB,EAAMjO,KAAKhB,GAEXusB,EAAYgD,KAAK,OACjBtgB,EAAMjO,KAAK,IAAKsZ,GAAc,UAAE,IAAKiS,EAAYvb,IACjDub,EAAY4B,MAAM,aAEjBnuB,GAIT,GAFAs6B,EAAOC,IAEHtrB,EAAM5P,OAAS,EAAG,CAElB,GADA4P,EAAQ,IAAIqL,GAAe,WAAErL,GACzBqrB,EACA,OAAOrrB,EAGPwI,EAAOzW,KAAKiO,GAGe,MAA3Bsd,EAAYmD,YACZjY,EAAOzW,KAAK,IAAIsZ,GAAK2X,UAAU,IAAKpjB,IAO5C,GAJA0d,EAAYgB,OAEZte,EAAQsd,EAAYmC,YAAYT,GAErB,CAIP,GAHqB,iBAAVhf,GACP3O,EAAM,aAAa/B,OAAA0Q,OAAU,SAEZ,IAAjBA,EAAM5P,QAA6B,MAAb4P,EAAM,GAE5B,OADAsd,EAAYoB,SACL,IAAIrT,GAAK2X,UAAU,GAAIpjB,GAElC,IAAIgG,SACJ,IAAK7D,EAAI,EAAGA,EAAI/B,EAAM5P,OAAQ2R,IAE1B,GADA6D,EAAO5F,EAAM+B,GACT/C,MAAMC,QAAQ2G,GAEd4C,EAAOzW,KAAK,IAAIsZ,GAAK+e,OAAOxkB,EAAK,GAAIA,EAAK,IAAI,EAAMhG,EAAOlB,QAE1D,CACGqD,IAAM/B,EAAM5P,OAAS,IACrBwV,EAAOA,EAAKjB,QAGhB,IAAMgb,EAAQ,IAAItU,GAAK+e,OAAO,IAAMxkB,GAAM,EAAMhG,EAAOlB,GAClDkH,EAAK2lB,WAAW,QACjB5L,EAAM6L,cAAgB,cAE1B7L,EAAM8L,UAAY,cAClBjjB,EAAOzW,KAAK4tB,GAIpB,OADArC,EAAYoB,SACL,IAAIrT,GAAKoR,WAAWjU,GAAQ,GAEvC8U,EAAYiB,YAahBmN,OAAU,WACN,IAAI1e,EACA2e,EACE/rB,EAAQ0d,EAAYvb,EAEpB6pB,EAAMtO,EAAYyB,IAAI,eAE5B,GAAI6M,EAAK,CACL,IAAMt9B,GAAWs9B,EAAMr6B,KAAKs6B,gBAAkB,OAAS,GAEvD,GAAK7e,EAAOzb,KAAKm0B,SAASI,UAAYv0B,KAAKm0B,SAAS8B,MAQhD,OAPAmE,EAAWp6B,KAAKu6B,cAAc,IAEzBxO,EAAY4B,MAAM,OACnB5B,EAAYvb,EAAInC,EAChBvO,EAAM,gEAEVs6B,EAAWA,GAAY,IAAItgB,GAAU,MAAEsgB,GAChC,IAAItgB,GAAW,OAAE2B,EAAM2e,EAAUr9B,EAASsR,EAAQyjB,EAAc3kB,GAGvE4e,EAAYvb,EAAInC,EAChBvO,EAAM,gCAKlBw6B,cAAe,WACX,IAAIE,EAEAC,EACAhsB,EAFE1R,EAAU,GAKhB,IAAKgvB,EAAY4B,MAAM,KAAQ,OAAO,KACtC,GAEI,GADA6M,EAAIx6B,KAAK06B,eACF,CAGH,OADAjsB,GAAQ,EADRgsB,EAAaD,GAGT,IAAK,MACDC,EAAa,OACbhsB,GAAQ,EACR,MACJ,IAAK,OACDgsB,EAAa,WACbhsB,GAAQ,EAIhB,GADA1R,EAAQ09B,GAAchsB,GACjBsd,EAAY4B,MAAM,KAAQ,aAE9B6M,GAET,OADApI,EAAW,KACJr1B,GAGX29B,aAAc,WACV,IAAMz9B,EAAM8uB,EAAYyB,IAAI,uDAC5B,GAAIvwB,EACA,OAAOA,EAAI,IAInB09B,aAAc,SAAUC,GACpB,IAEIp7B,EACA8qB,EACAuQ,EAJE1G,EAAWn0B,KAAKm0B,SAChB7mB,EAAQ,GAIdye,EAAYgB,OACZ,IACIvtB,EAAI20B,EAASU,gBAAgBvzB,KAAKtB,KAA9Bm0B,IAAyCA,EAASzhB,WAAayhB,EAAS1L,YAAc0L,EAASG,eAE/FhnB,EAAM9M,KAAKhB,GACJusB,EAAY4B,MAAM,OACzBrD,EAAItqB,KAAKk2B,WACTnK,EAAYgB,QACPzC,GAAKsQ,EAAcrJ,eAAiBxF,EAAYyB,IAAI,uCACrDzB,EAAYiB,UACZ1C,EAAItqB,KAAKo1B,YAETrJ,EAAYgB,QACZ8N,EAAS76B,KAAK86B,gBAAgB,KAAMxQ,EAAEyQ,UAElChP,EAAYiB,YAGhBjB,EAAYiB,UACZxtB,EAAIQ,KAAKyO,SAETsd,EAAY4B,MAAM,KACdrD,IAAM9qB,GACN8N,EAAM9M,KAAK,IAAKsZ,GAAU,MAAE,IAAKA,GAAkB,cAAEwQ,EAAEvb,GAAIub,EAAE0Q,OAAQ1Q,EAAEyQ,OAAQF,EAASA,EAAO9rB,GAAK,KAAM8rB,EAASA,EAAOE,OAAS,KAAMzQ,EAAE1c,UAC3IpO,EAAI8qB,GACGA,GAAK9qB,EACZ8N,EAAM9M,KAAK,IAAKsZ,GAAU,MAAE,IAAKA,GAAgB,YAAEwQ,EAAG9qB,EAAG,KAAM,KAAMusB,EAAYvb,EAAIshB,EAAc3kB,GAAU,KACtG3N,EACP8N,EAAM9M,KAAK,IAAIsZ,GAAU,MAAEta,IAE3BM,EAAM,yCAGVA,EAAM,sBAAyB,gBAGlCN,GAGT,GADAusB,EAAYoB,SACR7f,EAAMzO,OAAS,EACf,OAAO,IAAIib,GAAe,WAAExM,IAIpCitB,cAAe,SAAUK,GACrB,IAEIp7B,EAFE20B,EAAWn0B,KAAKm0B,SAChBiG,EAAW,GAEjB,GAEI,GADA56B,EAAIQ,KAAK26B,aAAaC,IAGlB,GADAR,EAAS55B,KAAKhB,IACTusB,EAAY4B,MAAM,KAAQ,WAG/B,IADAnuB,EAAI20B,EAAS1L,YAAc0L,EAASG,iBAEhC8F,EAAS55B,KAAKhB,IACTusB,EAAY4B,MAAM,MAAQ,YAGlCnuB,GAET,OAAO46B,EAASv7B,OAAS,EAAIu7B,EAAW,MAG5Ca,4BAA6B,SAAUC,EAAU7sB,EAAOqb,EAAWkR,GAC/D,IAAMR,EAAWp6B,KAAKu6B,cAAcK,GAE9Bhb,EAAQ5f,KAAK24B,QAEd/Y,GACD9f,EAAM,iEAGVisB,EAAYoB,SAEZ,IAAMgO,EAAS,IAAK,EAAUvb,EAAOwa,EAAU/rB,EAAQyjB,EAAc3kB,GAKrE,OAJIa,EAAQwrB,kBACR2B,EAAOzR,UAAYA,GAGhByR,GAGXC,eAAgB,WACZ,IAAI1R,EACErb,EAAQ0d,EAAYvb,EAO1B,GALIxC,EAAQwrB,kBACR9P,EAAY2I,EAAahkB,IAE7B0d,EAAYgB,OAERhB,EAAY6B,UAAU,KAAM,CAC5B,GAAI7B,EAAY8B,KAAK,UACjB,OAAO7tB,KAAKi7B,4BAA4BnhB,GAAKuhB,MAAOhtB,EAAOqb,EAAW4H,IAG1E,GAAIvF,EAAY8B,KAAK,cACjB,OAAO7tB,KAAKi7B,4BAA4BnhB,GAAKwhB,UAAWjtB,EAAOqb,EAAW8H,IAIlFzF,EAAYiB,WAShBmG,OAAQ,WACJ,IAAI1X,EACA7J,EACA7U,EACEsR,EAAQ0d,EAAYvb,EAG1B,GAFcub,EAAYyB,IAAI,eAErB,CAaL,GATIzwB,GAHJ6U,EAAO5R,KAAKu7B,cAGE,CACNA,WAAY3pB,EACZuO,UAAU,GAIJ,CAAEA,UAAU,GAGrB1E,EAAOzb,KAAKm0B,SAASI,UAAYv0B,KAAKm0B,SAAS8B,MAMhD,OAJKlK,EAAY4B,MAAM,OACnB5B,EAAYvb,EAAInC,EAChBvO,EAAM,kCAEH,IAAIga,GAAW,OAAE2B,EAAM,KAAM1e,EAASsR,EAAQyjB,EAAc3kB,GAGnE4e,EAAYvb,EAAInC,EAChBvO,EAAM,iCAKlBy7B,WAAY,WAGR,GADAxP,EAAYgB,QACPhB,EAAY4B,MAAM,KAEnB,OADA5B,EAAYiB,UACL,KAEX,IAAMpb,EAAOma,EAAYyB,IAAI,qBAC7B,OAAI5b,EAAK,IACLma,EAAYoB,SACLvb,EAAK,GAAGwB,SAGf2Y,EAAYiB,UACL,OASfoH,OAAQ,WACJ,IACI5K,EACA/a,EACAmR,EACA4b,EACAC,EACAC,EACAC,EAPEttB,EAAQ0d,EAAYvb,EAQtBorB,GAAW,EACXpU,GAAW,EAEf,GAAkC,MAA9BuE,EAAYkD,cAAhB,CAGA,GADAxgB,EAAQzO,KAAa,UAAOA,KAAKmzB,UAAYnzB,KAAKo7B,iBAE9C,OAAO3sB,EAOX,GAJAsd,EAAYgB,OAEZvD,EAAOuC,EAAYyB,IAAI,aAEvB,CAOA,OALAgO,EAAwBhS,EACF,KAAlBA,EAAK5V,OAAO,IAAa4V,EAAK3X,QAAQ,IAAK,GAAK,IAChD2pB,EAAwB,IAAIz9B,OAAAyrB,EAAK3W,MAAM2W,EAAK3X,QAAQ,IAAK,GAAK,KAG1D2pB,GACJ,IAAK,WACDC,GAAgB,EAChBG,GAAW,EACX,MACJ,IAAK,aACDF,GAAgB,EAChBE,GAAW,EACX,MACJ,IAAK,aACL,IAAK,iBACDH,GAAgB,EAChB,MACJ,IAAK,YACL,IAAK,YACDE,GAAa,EACbnU,GAAW,EACX,MACJ,QACImU,GAAa,EAiCrB,GA7BA5P,EAAYc,aAAahuB,OAAS,EAE9B48B,GACAhtB,EAAQzO,KAAKg2B,WAETl2B,EAAM,YAAA/B,OAAYyrB,EAAI,gBAEnBkS,GACPjtB,EAAQzO,KAAK41B,eAET91B,EAAM,YAAA/B,OAAYyrB,EAAI,gBAEnBmS,IACPltB,EAAQzO,KAAK25B,gBAAgB,SAC7BiC,EAA0C,MAA9B7P,EAAYkD,cACnBxgB,EAKKA,EAAMA,QACZA,EAAQ,MALHmtB,GAA0C,MAA9B7P,EAAYkD,eACzBnvB,EAAM,GAAA/B,OAAGyrB,EAAI,iDAQrBoS,IACAhc,EAAQ5f,KAAKq5B,gBAGbzZ,IAAWgc,GAAYntB,GAASsd,EAAY4B,MAAM,KAElD,OADA5B,EAAYoB,SACL,IAAIrT,GAAW,OAAE0P,EAAM/a,EAAOmR,EAAOvR,EAAQyjB,EAAc3kB,EAC9Da,EAAQwrB,gBAAkBnH,EAAahkB,GAAS,KAChDmZ,GAIRuE,EAAYiB,QAAQ,qCAWxBve,MAAO,WACH,IAAIjP,EACE44B,EAAc,GACd/pB,EAAQ0d,EAAYvb,EAE1B,GAEI,IADAhR,EAAIQ,KAAK41B,gBAELwC,EAAY53B,KAAKhB,IACZusB,EAAY4B,MAAM,MAAQ,YAE9BnuB,GAET,GAAI44B,EAAYv5B,OAAS,EACrB,OAAO,IAAIib,GAAU,MAAEse,EAAa/pB,EAAQyjB,IAGpD3G,UAAW,WACP,GAAkC,MAA9BY,EAAYkD,cACZ,OAAOlD,EAAYyB,IAAI,kBAG/BqO,IAAK,WACD,IAAI7sB,EACAxP,EAGJ,GADAusB,EAAYgB,OACRhB,EAAY4B,MAAM,KAElB,OADA3e,EAAIhP,KAAK87B,aACA/P,EAAY4B,MAAM,MACvB5B,EAAYoB,UACZ3tB,EAAI,IAAIsa,GAAe,WAAE,CAAC9K,KACxB+sB,QAAS,EACJv8B,QAEXusB,EAAYiB,QAAQ,gBAGxBjB,EAAYiB,WAEhBgP,eAAgB,WACZ,IAAIvwB,EACAuD,EACAD,EACAktB,EACAC,EAEJ,GADAzwB,EAAIzL,KAAKm8B,UACF,CAEH,IADAD,EAAWnQ,EAAYqB,cAAc,IAE7BrB,EAAYgD,KAAK,YADZ,CAQT,GAHAhD,EAAYgB,SAEZhe,EAAKgd,EAAY4B,MAAM,MAAQ5B,EAAY4B,MAAM,MACxC,CACL,IAAItf,EAAQ0d,EAAYvb,GACxBzB,EAAKgd,EAAY8B,KAAK,QAElB3tB,EAAK,4BAA6BmO,EAAO,cAIjD,IAAKU,EAAI,CAAEgd,EAAYoB,SAAU,MAIjC,KAFAne,EAAIhP,KAAKm8B,WAED,CAAEpQ,EAAYiB,UAAW,MACjCjB,EAAYoB,SAEZ1hB,EAAE2wB,YAAa,EACfptB,EAAEotB,YAAa,EACfH,EAAY,IAAIniB,GAAc,UAAE/K,EAAI,CAACktB,GAAaxwB,EAAGuD,GAAIktB,GACzDA,EAAWnQ,EAAYqB,cAAc,GAEzC,OAAO6O,GAAaxwB,IAG5BqwB,SAAU,WACN,IAAIrwB,EACAuD,EACAD,EACAktB,EACAC,EAEJ,GADAzwB,EAAIzL,KAAKg8B,iBACF,CAEH,IADAE,EAAWnQ,EAAYqB,cAAc,IAEjCre,EAAKgd,EAAYyB,IAAI,cAAiB0O,IAAanQ,EAAY4B,MAAM,MAAQ5B,EAAY4B,MAAM,SAI/F3e,EAAIhP,KAAKg8B,mBAKTvwB,EAAE2wB,YAAa,EACfptB,EAAEotB,YAAa,EACfH,EAAY,IAAIniB,GAAc,UAAE/K,EAAI,CAACktB,GAAaxwB,EAAGuD,GAAIktB,GACzDA,EAAWnQ,EAAYqB,cAAc,GAEzC,OAAO6O,GAAaxwB,IAG5BitB,WAAY,WACR,IAAI1pB,EACAC,EAEAmmB,EADE/mB,EAAQ0d,EAAYvb,EAI1B,GADAxB,EAAIhP,KAAKo1B,WAAU,GACZ,CACH,KACSrJ,EAAYgD,KAAK,qBAAwBhD,EAAY4B,MAAM,OAGhE1e,EAAIjP,KAAKo1B,WAAU,KAInBA,EAAY,IAAItb,GAAc,UAAE,KAAMsb,GAAapmB,EAAGC,EAAGZ,EAAQyjB,GAErE,OAAOsD,GAAapmB,IAG5BomB,UAAW,SAAUiH,GACjB,IAAIplB,EACAqlB,EACAC,EAMJ,GADAtlB,EAASjX,KAAKw8B,aAAaH,GAC3B,CAIA,GADAC,EAPWvQ,EAAY8B,KAAK,MAQf,CAET,KADA0O,EAAOv8B,KAAKo1B,UAAUiH,IAIlB,OAFAplB,EAAS,IAAI6C,GAAc,UAAEwiB,EAASrlB,EAAQslB,GAKtD,OAAOtlB,IAEXulB,aAAc,SAAUH,GACpB,IAAIplB,EACAqlB,EACAC,EAGMhE,EAFJnoB,EAAOpQ,KAab,GADAiX,GAVUshB,EAAOnoB,EAAKqsB,iBAAiBJ,IAAgBjsB,EAAKssB,qBAAqBL,KAC/DA,EAGP9D,EAFInoB,EAAK0qB,gBAAgBuB,GASpC,CAIA,GADAC,EAPWvQ,EAAY8B,KAAK,OAQf,CAET,KADA0O,EAAOv8B,KAAKw8B,aAAaH,IAIrB,OAFAplB,EAAS,IAAI6C,GAAc,UAAEwiB,EAASrlB,EAAQslB,GAKtD,OAAOtlB,IAEXwlB,iBAAkB,SAAUJ,GACxB,GAAItQ,EAAY8B,KAAK,OAAQ,CACzB,IAAM5W,EAASjX,KAAK08B,qBAAqBL,GAIzC,OAHIplB,IACAA,EAAO0lB,QAAU1lB,EAAO0lB,QAErB1lB,IAGfylB,qBAAsB,SAAUL,GAiB5B,IAAIO,EAEJ,GADA7Q,EAAYgB,OACPhB,EAAY8B,KAAK,KAAtB,CAKA,GADA+O,EAtBA,SAA2CC,GACvC,IAAID,EAGJ,GAFA7Q,EAAYgB,OACZ6P,EAAOC,EAAGzH,UAAUiH,GACpB,CAIA,GAAKtQ,EAAY4B,MAAM,KAKvB,OADA5B,EAAYoB,SACLyP,EAJH7Q,EAAYiB,eAJZjB,EAAYiB,UAiBb8P,CAAkC98B,MAGrC,OADA+rB,EAAYoB,SACLyP,EAIX,GADAA,EAAO58B,KAAK86B,gBAAgBuB,GAC5B,CAIA,GAAKtQ,EAAY4B,MAAM,KAKvB,OADA5B,EAAYoB,SACLyP,EAJH7Q,EAAYiB,QAAQ,qBAAqBjvB,OAAAguB,EAAYkD,cAAgB,WAJrElD,EAAYiB,eAXZjB,EAAYiB,WAqBpB8N,gBAAiB,SAAUuB,EAAaU,GACpC,IAEI/tB,EACAC,EACAsB,EACAxB,EALEolB,EAAWn0B,KAAKm0B,SAChB9lB,EAAQ0d,EAAYvb,EAMpB+nB,EAAO,WACT,OAAOv4B,KAAK87B,YAAc3H,EAASzhB,WAAayhB,EAASI,UAAYJ,EAASG,eAC/EhzB,KAAKtB,MAQR,GALIgP,EADA+tB,GAGIxE,IAqCJ,OAjCIxM,EAAY4B,MAAM,KAEd5e,EADAgd,EAAY4B,MAAM,KACb,KAEA,IAGT5B,EAAY4B,MAAM,KAEd5e,EADAgd,EAAY4B,MAAM,KACb,KAEA,IAGT5B,EAAY4B,MAAM,OAEd5e,EADAgd,EAAY4B,MAAM,KACb,KACE5B,EAAY4B,MAAM,KACpB,KAEA,KAGT5e,GACAE,EAAIspB,KAEAhoB,EAAI,IAAIuJ,GAAc,UAAE/K,EAAIC,EAAGC,EAAGZ,EAAQyjB,GAAc,GAExDhyB,EAAM,uBAEFi9B,IACRxsB,EAAI,IAAIuJ,GAAc,UAAE,IAAK9K,EAAG,IAAI8K,GAAY,QAAE,QAASzL,EAAQyjB,GAAc,IAE9EvhB,GAQf4rB,QAAS,WACL,IACIQ,EADExI,EAAWn0B,KAAKm0B,SAGlBpI,EAAYgD,KAAK,aACjB4N,EAAS5Q,EAAY4B,MAAM,MAG/B,IAAI6M,EAAIx6B,KAAK67B,OAAS1H,EAAS2B,aACvB3B,EAAS1iB,SAAW0iB,EAAS1L,YAC7B0L,EAAS+B,YAAc/B,EAAS72B,QAChC62B,EAASI,QAAO,IAASJ,EAASsC,gBAClCtC,EAASG,cAOjB,OALIqI,IACAnC,EAAE4B,YAAa,EACf5B,EAAI,IAAI1gB,GAAa,SAAE0gB,IAGpBA,GAUX5E,WAAY,WACR,IACIp2B,EACAw9B,EAFE7I,EAAW,GAGX9lB,EAAQ0d,EAAYvb,EAE1B,KACIhR,EAAIQ,KAAK2pB,YACCnqB,EAAEktB,gBAIZltB,EAAIQ,KAAK87B,YAAc97B,KAAKg2B,oBAEXlc,GAAK8P,UAClBpqB,EAAI,MAGJA,IACA20B,EAAS3zB,KAAKhB,GAETusB,EAAYgD,KAAK,aAClBiO,EAAQjR,EAAY4B,MAAM,OAEtBwG,EAAS3zB,KAAK,IAAIsZ,GAAc,UAAEkjB,EAAO3uB,EAAQyjB,MAfzDqC,EAAS3zB,KAAKhB,SAmBbA,GACT,GAAI20B,EAASt1B,OAAS,EAClB,OAAO,IAAIib,GAAe,WAAEqa,IAGpC+B,SAAU,WACN,IAAM1M,EAAOuC,EAAYyB,IAAI,8BAC7B,GAAIhE,EACA,OAAOA,EAAK,IAGpBwL,aAAc,WACV,IAEI/oB,EACAyoB,EAHAlL,EAAO,GACLnb,EAAQ,GAId0d,EAAYgB,OAEZ,IAAMkQ,EAAiBlR,EAAYyB,IAAI,yBACvC,GAAIyP,EAGA,OAFAzT,EAAO,CAAC,IAAI1P,GAAY,QAAEmjB,EAAe,KACzClR,EAAYoB,SACL3D,EAGX,SAASnZ,EAAMwnB,GACX,IAAMrnB,EAAIub,EAAYvb,EAChBpC,EAAQ2d,EAAYyB,IAAIqK,GAC9B,GAAIzpB,EAEA,OADAC,EAAM7N,KAAKgQ,GACJgZ,EAAKhpB,KAAK4N,EAAM,IAK/B,IADAiC,EAAM,UAEGA,EAAM,sCAKf,GAAKmZ,EAAK3qB,OAAS,GAAMwR,EAAM,sBAAuB,CASlD,IARA0b,EAAYoB,SAII,KAAZ3D,EAAK,KACLA,EAAK1I,QACLzS,EAAMyS,SAEL4T,EAAI,EAAGA,EAAIlL,EAAK3qB,OAAQ61B,IACzBzoB,EAAIud,EAAKkL,GACTlL,EAAKkL,GAAsB,MAAhBzoB,EAAE2H,OAAO,IAA8B,MAAhB3H,EAAE2H,OAAO,GACvC,IAAIkG,GAAY,QAAE7N,GACD,MAAhBA,EAAE2H,OAAO,GACN,IAAIkG,GAAa,SAAE,IAAI/b,OAAAkO,EAAE4G,MAAM,GAAI,IAAMxE,EAAMqmB,GAAK5C,EAAc3kB,GAClE,IAAI2M,GAAa,SAAE,IAAI/b,OAAAkO,EAAE4G,MAAM,GAAI,IAAMxE,EAAMqmB,GAAK5C,EAAc3kB,GAE9E,OAAOqc,EAEXuC,EAAYiB,cAK5B6E,GAAOuB,cAAgB,SAAA8J,GACnB,IAAIjxB,EAAI,GAER,IAAK,IAAMkxB,KAAQD,EACf,GAAI//B,OAAOE,eAAeC,KAAK4/B,EAAMC,GAAO,CACxC,IAAM1uB,EAAQyuB,EAAKC,GACnBlxB,GAAK,WAAiB,MAAZkxB,EAAK,GAAc,GAAK,KAAOA,EAAS,MAAAp/B,OAAA0Q,UAAqC,MAA5B8hB,OAAO9hB,GAAOoE,OAAO,GAAc,GAAK,KAI3G,OAAO5G,GClgFX,IAAMua,GAAW,SAASb,EAAU1D,EAAYmT,EAAW/mB,EAAOoF,EAAiB1D,GAC/E/P,KAAKiiB,WAAaA,EAClBjiB,KAAKo1B,UAAYA,EACjBp1B,KAAKo9B,gBAAkBhI,EACvBp1B,KAAK4N,OAASS,EACdrO,KAAK6N,UAAY4F,EACjBzT,KAAK2lB,SAAW3lB,KAAKq9B,YAAY1X,GACjC3lB,KAAKs9B,oBAAiBz7B,EACtB7B,KAAKgQ,mBAAmBD,GACxB/P,KAAKqN,UAAUrN,KAAK2lB,SAAU3lB,OAGlCwmB,GAASppB,UAAYD,OAAOgU,OAAO,IAAIxE,EAAQ,CAC3C/L,KAAM,WAEN8N,gBAAOC,GACC3O,KAAK2lB,WACL3lB,KAAK2lB,SAAWhX,EAAQ4L,WAAWva,KAAK2lB,WAExC3lB,KAAKiiB,aACLjiB,KAAKiiB,WAAatT,EAAQ4L,WAAWva,KAAKiiB,aAE1CjiB,KAAKo1B,YACLp1B,KAAKo1B,UAAYzmB,EAAQC,MAAM5O,KAAKo1B,aAI5CnO,cAAc,SAAAtB,EAAU1D,EAAYmb,GAChCzX,EAAW3lB,KAAKq9B,YAAY1X,GAC5B,IAAM5B,EAAc,IAAIyC,GAASb,EAAU1D,GAAcjiB,KAAKiiB,WAC1D,KAAMjiB,KAAKoN,WAAYpN,KAAKmN,WAAYnN,KAAK+P,kBAGjD,OAFAgU,EAAYqZ,eAAmBG,EAAwBH,GAAoCp9B,KAAKo9B,eAAtBA,EAC1ErZ,EAAYyZ,WAAax9B,KAAKw9B,WACvBzZ,GAGXsZ,qBAAYI,GACR,OAAKA,GAGc,iBAARA,GACP,IAAI5L,GAAO7xB,KAAKxC,MAAMwQ,QAAShO,KAAKxC,MAAMkgC,cAAe19B,KAAK6N,UAAW7N,KAAK4N,QAAQ4kB,UAClFiL,EACA,CAAC,aACD,SAASzK,EAAK/b,GACV,GAAI+b,EACA,MAAM,IAAI1b,EAAU,CAChBjJ,MAAO2kB,EAAI3kB,MACXoJ,QAASub,EAAIvb,SACdzX,KAAKxC,MAAM2f,QAASnd,KAAK6N,UAAUrM,UAE1Ci8B,EAAMxmB,EAAO,GAAG0O,YAGrB8X,GAhBI,CAAC,IAAInqB,EAAQ,GAAI,KAAK,EAAOtT,KAAK4N,OAAQ5N,KAAK6N,aAmB9D8vB,qBAAoB,WAChB,IAAMC,EAAK,IAAItqB,EAAQ,GAAI,KAAK,EAAOtT,KAAK4N,OAAQ5N,KAAK6N,WAAYgwB,EAAO,CAAC,IAAIrX,GAAS,CAACoX,GAAK,KAAM,KAAM59B,KAAK4N,OAAQ5N,KAAK6N,YAE9H,OADAgwB,EAAK,GAAGL,YAAa,EACdK,GAGXxtB,eAAM+B,GACF,IAEI0rB,EACAttB,EAHEmV,EAAW3lB,KAAK2lB,SAChBsK,EAAMtK,EAAS9mB,OAMrB,GAAa,KADbi/B,GADA1rB,EAAQA,EAAM2rB,iBACDl/B,SACKoxB,EAAM6N,EACpB,OAAO,EAEP,IAAKttB,EAAI,EAAGA,EAAIstB,EAAMttB,IAClB,GAAImV,EAASnV,GAAG/B,QAAU2D,EAAM5B,GAC5B,OAAO,EAKnB,OAAOstB,GAGXC,cAAa,WACT,GAAI/9B,KAAKs9B,eACL,OAAOt9B,KAAKs9B,eAGhB,IAAI3X,EAAW3lB,KAAK2lB,SAASrV,KAAK,SAASO,GACvC,OAAOA,EAAE0C,WAAW9E,OAASoC,EAAEpC,MAAMA,OAASoC,EAAEpC,UACjDF,KAAK,IAAI8B,MAAM,6BAUlB,OARIsV,EACoB,MAAhBA,EAAS,IACTA,EAAS7E,QAGb6E,EAAW,GAGP3lB,KAAKs9B,eAAiB3X,GAGlCqY,qBAAoB,WAChB,OAAQh+B,KAAKw9B,YACgB,IAAzBx9B,KAAK2lB,SAAS9mB,QACa,MAA3BmB,KAAK2lB,SAAS,GAAGlX,QACsB,MAAtCzO,KAAK2lB,SAAS,GAAGpS,WAAW9E,OAAuD,KAAtCzO,KAAK2lB,SAAS,GAAGpS,WAAW9E,QAGlFI,cAAKb,GACD,IAAMovB,EAAiBp9B,KAAKo1B,WAAap1B,KAAKo1B,UAAUvmB,KAAKb,GACzD2X,EAAW3lB,KAAK2lB,SAChB1D,EAAajiB,KAAKiiB,WAKtB,OAHA0D,EAAWA,GAAYA,EAASrV,KAAI,SAAU9Q,GAAK,OAAOA,EAAEqP,KAAKb,MACjEiU,EAAaA,GAAcA,EAAW3R,KAAI,SAAS0R,GAAU,OAAOA,EAAOnT,KAAKb,MAEzEhO,KAAKinB,cAActB,EAAU1D,EAAYmb,IAGpDlvB,OAAM,SAACF,EAASQ,GACZ,IAAIgC,EAIJ,IAHMxC,GAAYA,EAAQ2F,eAAwD,KAAtC3T,KAAK2lB,SAAS,GAAGpS,WAAW9E,OACpED,EAAOL,IAAI,IAAKnO,KAAKmN,WAAYnN,KAAKoN,YAErCoD,EAAI,EAAGA,EAAIxQ,KAAK2lB,SAAS9mB,OAAQ2R,IACxBxQ,KAAK2lB,SAASnV,GAChBtC,OAAOF,EAASQ,IAIhC6Y,YAAW,WACP,OAAOrnB,KAAKo9B,kBC1IpB,IAAMhS,GAAQ,SAAS3c,GACnB,IAAKA,EACD,MAAM,IAAIhP,MAAM,oCAEfgO,MAAMC,QAAQe,GAIfzO,KAAKyO,MAAQA,EAHbzO,KAAKyO,MAAQ,CAAEA,IAOvB2c,GAAMhuB,UAAYD,OAAOgU,OAAO,IAAIxE,EAAQ,CACxC/L,KAAM,QAEN8N,gBAAOC,GACC3O,KAAKyO,QACLzO,KAAKyO,MAAQE,EAAQ4L,WAAWva,KAAKyO,SAI7CI,cAAKb,GACD,OAA0B,IAAtBhO,KAAKyO,MAAM5P,OACJmB,KAAKyO,MAAM,GAAGI,KAAKb,GAEnB,IAAIod,GAAMprB,KAAKyO,MAAM6B,KAAI,SAAUO,GACtC,OAAOA,EAAEhC,KAAKb,QAK1BE,OAAM,SAACF,EAASQ,GACZ,IAAIgC,EACJ,IAAKA,EAAI,EAAGA,EAAIxQ,KAAKyO,MAAM5P,OAAQ2R,IAC/BxQ,KAAKyO,MAAM+B,GAAGtC,OAAOF,EAASQ,GAC1BgC,EAAI,EAAIxQ,KAAKyO,MAAM5P,QACnB2P,EAAOL,IAAKH,GAAWA,EAAQ2D,SAAY,IAAM,SCpCjE,IAAMssB,GAAU,SAASxvB,GACrBzO,KAAKyO,MAAQA,GAGjBwvB,GAAQ7gC,UAAYD,OAAOgU,OAAO,IAAIxE,EAAQ,CAC1C/L,KAAM,UAENsN,OAAM,SAACF,EAASQ,GACZ,GAAmB,MAAfxO,KAAKyO,MAAiB,KAAM,CAAE7N,KAAM,SAAU6W,QAAS,4BAC3DjJ,EAAOL,IAAInO,KAAKyO,UAIxBwvB,GAAQC,KAAO,IAAID,GAAQ,QAC3BA,GAAQE,MAAQ,IAAIF,GAAQ,SCX5B,IAAMG,GAAOxnB,EAab,IAAMmT,GAAc,SAASP,EAAM/a,EAAO0c,EAAWN,EAAOxc,EAAOoF,EAAiBwL,EAAQwJ,GACxFzoB,KAAKwpB,KAAOA,EACZxpB,KAAKyO,MAASA,aAAiB9B,EAAQ8B,EAAQ,IAAI2c,GAAM,CAAC3c,EAAQ,IAAIgjB,GAAUhjB,GAAS,OACzFzO,KAAKmrB,UAAYA,EAAY,IAAAptB,OAAIotB,EAAU/X,QAAW,GACtDpT,KAAK6qB,MAAQA,EACb7qB,KAAK4N,OAASS,EACdrO,KAAK6N,UAAY4F,EACjBzT,KAAKif,OAASA,IAAU,EACxBjf,KAAKyoB,cAAyB5mB,IAAb4mB,EAA0BA,EACpCe,EAAK5V,QAA8B,MAAnB4V,EAAK5V,OAAO,GACnC5T,KAAKiqB,WAAY,EACjBjqB,KAAKqN,UAAUrN,KAAKyO,MAAOzO,OC7B/B,SAASq+B,GAAUC,GACf,MAAO,WAAWvgC,OAAAugC,EAAI5U,UAAU4I,WAAe,MAAAv0B,OAAAugC,EAAI5U,UAAU6I,kBAGjE,SAASgM,GAAaD,GAClB,IAAIE,EAAuBF,EAAI5U,UAAU6I,SAIzC,MAHK,gBAAgB7W,KAAK8iB,KACtBA,EAAuB,UAAAzgC,OAAUygC,IAE9B,gDAAAzgC,OAAgDygC,EAAqB3hC,QAAQ,cAAc,SAAUmS,GAIxG,MAHS,MAALA,IACAA,EAAI,KAED,KAAAjR,OAAKiR,0CACcsvB,EAAI5U,UAAU4I,mBAGhD,SAAS5I,GAAU1b,EAASswB,EAAKG,GAC7B,IAAIxnB,EAAS,GACb,GAAIjJ,EAAQwrB,kBAAoBxrB,EAAQ2D,SACpC,OAAQ3D,EAAQwrB,iBACZ,IAAK,WACDviB,EAASonB,GAAUC,GACnB,MACJ,IAAK,aACDrnB,EAASsnB,GAAaD,GACtB,MACJ,IAAK,MACDrnB,EAASonB,GAAUC,IAAQG,GAAiB,IAAMF,GAAaD,GAI3E,OAAOrnB,EDAX8S,GAAY3sB,UAAYD,OAAOgU,OAAO,IAAIxE,EAAQ,CAC9C/L,KAAM,cAENsN,OAAM,SAACF,EAASQ,GACZA,EAAOL,IAAInO,KAAKwpB,MAAQxb,EAAQ2D,SAAW,IAAM,MAAO3R,KAAKmN,WAAYnN,KAAKoN,YAC9E,IACIpN,KAAKyO,MAAMP,OAAOF,EAASQ,GAE/B,MAAOhP,GAGH,MAFAA,EAAE6O,MAAQrO,KAAK4N,OACfpO,EAAEgC,SAAWxB,KAAK6N,UAAUrM,SACtBhC,EAEVgP,EAAOL,IAAInO,KAAKmrB,WAAcnrB,KAAKif,QAAWjR,EAAQ0wB,UAAY1wB,EAAQ2D,SAAa,GAAK,KAAM3R,KAAK6N,UAAW7N,KAAK4N,SAG3HiB,cAAKb,GACD,IAAwB2wB,EAA4BC,EAAhDC,GAAa,EAAiBrV,EAAOxpB,KAAKwpB,KAAkBf,EAAWzoB,KAAKyoB,SAC5D,iBAATe,IAGPA,EAAwB,IAAhBA,EAAK3qB,QAAkB2qB,EAAK,aAAcyU,GAC9CzU,EAAK,GAAG/a,MA/CxB,SAAkBT,EAASwb,GACvB,IACIhZ,EADA/B,EAAQ,GAENiH,EAAI8T,EAAK3qB,OACT2P,EAAS,CAACL,IAAK,SAAUlC,GAAIwC,GAASxC,IAC5C,IAAKuE,EAAI,EAAGA,EAAIkF,EAAGlF,IACfgZ,EAAKhZ,GAAG3B,KAAKb,GAASE,OAAOF,EAASQ,GAE1C,OAAOC,EAuCqBqwB,CAAS9wB,EAASwb,GACtCf,GAAW,GAIF,SAATe,GAAmBxb,EAAQ2I,OAASynB,GAAKvqB,SACzCgrB,GAAa,EACbF,EAAW3wB,EAAQ2I,KACnB3I,EAAQ2I,KAAOynB,GAAKtqB,iBAExB,IAII,GAHA9F,EAAQ8N,eAAetb,KAAK,IAC5Bo+B,EAAa5+B,KAAKyO,MAAMI,KAAKb,IAExBhO,KAAKyoB,UAAgC,oBAApBmW,EAAWh+B,KAC7B,KAAM,CAAE6W,QAAS,8CACbpJ,MAAOrO,KAAKoN,WAAY5L,SAAUxB,KAAKmN,WAAW3L,UAE1D,IAAI2pB,EAAYnrB,KAAKmrB,UACf4T,EAAkB/wB,EAAQ8N,eAAeK,MAK/C,OAJKgP,GAAa4T,EAAgB5T,YAC9BA,EAAY4T,EAAgB5T,WAGzB,IAAIpB,GAAYP,EACnBoV,EACAzT,EACAnrB,KAAK6qB,MACL7qB,KAAKoN,WAAYpN,KAAKmN,WAAYnN,KAAKif,OACvCwJ,GAER,MAAOjpB,GAKH,KAJuB,iBAAZA,EAAE6O,QACT7O,EAAE6O,MAAQrO,KAAKoN,WACf5N,EAAEgC,SAAWxB,KAAKmN,WAAW3L,UAE3BhC,EAEF,QACAq/B,IACA7wB,EAAQ2I,KAAOgoB,KAK3BK,cAAa,WACT,OAAO,IAAIjV,GAAY/pB,KAAKwpB,KACxBxpB,KAAKyO,MACL,aACAzO,KAAK6qB,MACL7qB,KAAKoN,WAAYpN,KAAKmN,WAAYnN,KAAKif,WErGnD,IAAM2K,GAAU,SAASnb,EAAOie,EAAere,EAAOoF,GAClDzT,KAAKyO,MAAQA,EACbzO,KAAK0sB,cAAgBA,EACrB1sB,KAAK4N,OAASS,EACdrO,KAAK6N,UAAY4F,EACjBzT,KAAKiqB,WAAY,GAGrBL,GAAQxsB,UAAYD,OAAOgU,OAAO,IAAIxE,EAAQ,CAC1C/L,KAAM,UAENsN,OAAM,SAACF,EAASQ,GACRxO,KAAK0pB,WACLlb,EAAOL,IAAIkkB,GAAarkB,EAAShO,MAAOA,KAAKmN,WAAYnN,KAAKoN,YAElEoB,EAAOL,IAAInO,KAAKyO,QAGpBqZ,kBAAS9Z,GACL,IAAMixB,EAAejxB,EAAQ2D,UAA8B,MAAlB3R,KAAKyO,MAAM,GACpD,OAAOzO,KAAK0sB,eAAiBuS,KCpBrC,IAAMC,GAAc,CAChBrwB,KAAM,WACF,IAAMgC,EAAI7Q,KAAKm/B,OACT3/B,EAAIQ,KAAKo/B,OACf,GAAI5/B,EACA,MAAMA,EAEV,IAAK+9B,EAAwB1sB,GACzB,OAAOA,EAAIotB,GAAQC,KAAOD,GAAQE,OAG1C1vB,MAAO,SAAUoC,GACb7Q,KAAKm/B,OAAStuB,GAElB/Q,MAAO,SAAUN,GACbQ,KAAKo/B,OAAS5/B,GAElB6/B,MAAO,WACHr/B,KAAKm/B,OAASn/B,KAAKo/B,OAAS,OCN9B1L,GAAU,SAAS7Q,EAAWjD,EAAO6Z,EAAe1pB,GACtD/P,KAAK6iB,UAAYA,EACjB7iB,KAAK4f,MAAQA,EACb5f,KAAKs/B,SAAW,GAChBt/B,KAAKu/B,WAAa,KAClBv/B,KAAKw/B,YAAc,KACnBx/B,KAAKy5B,cAAgBA,EACrBz5B,KAAKgQ,mBAAmBD,GACxB/P,KAAKiqB,WAAY,EAEjBjqB,KAAKqN,UAAUrN,KAAK6iB,UAAW7iB,MAC/BA,KAAKqN,UAAUrN,KAAK4f,MAAO5f,OAG/B0zB,GAAQt2B,UAAYD,OAAOgU,OAAO,IAAIxE,EAAQ,CAC1C/L,KAAM,UACN6+B,WAAW,EAEX3xB,cAAkB,WAAA,OAAO,GAEzBY,gBAAOC,GACC3O,KAAKsb,MACLtb,KAAKsb,MAAQ3M,EAAQ4L,WAAWva,KAAKsb,OAAO,GACrCtb,KAAK6iB,YACZ7iB,KAAK6iB,UAAYlU,EAAQ4L,WAAWva,KAAK6iB,YAEzC7iB,KAAK4f,OAAS5f,KAAK4f,MAAM/gB,SACzBmB,KAAK4f,MAAQjR,EAAQ4L,WAAWva,KAAK4f,SAI7C/Q,cAAKb,GACD,IAAI6U,EACA6c,EACAlc,EACAhT,EACAmvB,EACAC,GAAwB,EAE5B,GAAI5/B,KAAK6iB,YAAc6c,EAAS1/B,KAAK6iB,UAAUhkB,QAAS,CAOpD,IANAgkB,EAAY,IAAIpV,MAAMiyB,GACtBR,GAAYp/B,MAAM,CACdc,KAAM,SACN6W,QAAS,6DAGRjH,EAAI,EAAGA,EAAIkvB,EAAQlvB,IAAK,CACzBgT,EAAWxjB,KAAK6iB,UAAUrS,GAAG3B,KAAKb,GAClC,IAAK,IAAI6M,EAAI,EAAGA,EAAI2I,EAASmC,SAAS9mB,OAAQgc,IAC1C,GAAI2I,EAASmC,SAAS9K,GAAGrH,WAAY,CACjCmsB,GAAc,EACd,MAGR9c,EAAUrS,GAAKgT,EACXA,EAAS4Z,iBACTwC,GAAwB,GAIhC,GAAID,EAAa,CACb,IAAME,EAAmB,IAAIpyB,MAAMiyB,GACnC,IAAKlvB,EAAI,EAAGA,EAAIkvB,EAAQlvB,IACpBgT,EAAWX,EAAUrS,GACrBqvB,EAAiBrvB,GAAKgT,EAASzV,MAAMC,GAEzC,IAAM8xB,EAAgBjd,EAAU,GAAGzV,WAC7B2yB,EAAmBld,EAAU,GAAG1V,WACtC,IAAI0kB,GAAO7jB,EAAShO,KAAKxC,MAAMkgC,cAAeqC,EAAkBD,GAAetN,UAC3EqN,EAAiBtxB,KAAK,KACtB,CAAC,cACD,SAASykB,EAAK/b,GACNA,IACA4L,EAAYmd,EAAmB/oB,OAK/CioB,GAAYG,aAEZO,GAAwB,EAG5B,IAEI/X,EACAoY,EAHArgB,EAAQ5f,KAAK4f,MAAQT,EAAgBnf,KAAK4f,OAAS,KACjD+C,EAAU,IAAI+Q,GAAQ7Q,EAAWjD,EAAO5f,KAAKy5B,cAAez5B,KAAK+P,kBAIvE4S,EAAQud,gBAAkBlgC,KAC1B2iB,EAAQ/D,KAAO5e,KAAK4e,KACpB+D,EAAQ2F,UAAYtoB,KAAKsoB,UACzB3F,EAAQwd,aAAengC,KAAKmgC,aAExBngC,KAAK0pB,YACL/G,EAAQ+G,UAAY1pB,KAAK0pB,WAGxBkW,IACDhgB,EAAM/gB,OAAS,GAKnB8jB,EAAQkO,iBAAoB,SAAUhV,GAIlC,IAHA,IAEI3D,EAFA1H,EAAI,EACFkF,EAAImG,EAAOhd,OAET2R,IAAMkF,IAAMlF,EAEhB,GADA0H,EAAQ2D,EAAQrL,GAAIqgB,iBACL,OAAO3Y,EAE1B,OAAOkoB,GARgB,CASzBpyB,EAAQ6N,QAASwV,UAGnB,IAAMgP,EAAYryB,EAAQ6N,OAC1BwkB,EAAUzf,QAAQ+B,GAGlB,IAAI2d,EAAetyB,EAAQ6U,UACtByd,IACDtyB,EAAQ6U,UAAYyd,EAAe,IAEvCA,EAAa1f,QAAQ5gB,KAAK6iB,YAGtBF,EAAQ/D,MAAQ+D,EAAQwd,eAAiBxd,EAAQ8W,gBACjD9W,EAAQ4d,YAAYvyB,GAKxB,IAAMwyB,EAAU7d,EAAQ/C,MACxB,IAAKpP,EAAI,EAAIqX,EAAO2Y,EAAQhwB,GAAKA,IACzBqX,EAAK4Y,YACLD,EAAQhwB,GAAKqX,EAAKhZ,KAAKb,IAI/B,IAAM0yB,EAAmB1yB,EAAQ2yB,aAAe3yB,EAAQ2yB,YAAY9hC,QAAW,EAG/E,IAAK2R,EAAI,EAAIqX,EAAO2Y,EAAQhwB,GAAKA,IACX,cAAdqX,EAAKjnB,MAELgf,EAAQiI,EAAKhZ,KAAKb,GAASqV,QAAO,SAAShS,GACvC,QAAKA,aAAa0Y,IAAgB1Y,EAAEoX,YAIvB9F,EAAQ8F,SAASpX,EAAEmY,SAIpCgX,EAAQ7/B,OAAOod,MAAMyiB,EAAS,CAAChwB,EAAG,GAAGzS,OAAO6hB,IAC5CpP,GAAKoP,EAAM/gB,OAAS,EACpB8jB,EAAQie,cACc,iBAAf/Y,EAAKjnB,OAEZgf,EAAQiI,EAAKhZ,KAAKb,GAAS4R,MAAMyD,QAAO,SAAShS,GAC7C,QAAKA,aAAa0Y,IAAgB1Y,EAAEoX,aAMxC+X,EAAQ7/B,OAAOod,MAAMyiB,EAAS,CAAChwB,EAAG,GAAGzS,OAAO6hB,IAC5CpP,GAAKoP,EAAM/gB,OAAS,EACpB8jB,EAAQie,cAKhB,IAAKpwB,EAAI,EAAIqX,EAAO2Y,EAAQhwB,GAAKA,IACxBqX,EAAK4Y,YACND,EAAQhwB,GAAKqX,EAAOA,EAAKhZ,KAAOgZ,EAAKhZ,KAAKb,GAAW6Z,GAK7D,IAAKrX,EAAI,EAAIqX,EAAO2Y,EAAQhwB,GAAKA,IAE7B,GAAIqX,aAAgB6L,IAAW7L,EAAKhF,WAAuC,IAA1BgF,EAAKhF,UAAUhkB,QAExDgpB,EAAKhF,UAAU,IAAMgF,EAAKhF,UAAU,GAAGmb,uBAAwB,CAC/DwC,EAAQ7/B,OAAO6P,IAAK,GAEpB,IAASqK,EAAI,EAAIolB,EAAUpY,EAAKjI,MAAM/E,GAAKA,IACnColB,aAAmBtzB,IACnBszB,EAAQjwB,mBAAmB6X,EAAK9X,kBAC1BkwB,aAAmBlW,IAAiBkW,EAAQxX,UAC9C+X,EAAQ7/B,SAAS6P,EAAG,EAAGyvB,IAY/C,GAHAI,EAAUvf,QACVwf,EAAaxf,QAET9S,EAAQ2yB,YACR,IAAKnwB,EAAIkwB,EAAiBlwB,EAAIxC,EAAQ2yB,YAAY9hC,OAAQ2R,IACtDxC,EAAQ2yB,YAAYnwB,GAAGqwB,gBAAgBhe,GAI/C,OAAOF,GAGX4d,qBAAYvyB,GACR,IACIwC,EACAswB,EAFElhB,EAAQ5f,KAAK4f,MAGnB,GAAKA,EAEL,IAAKpP,EAAI,EAAGA,EAAIoP,EAAM/gB,OAAQ2R,IACJ,WAAlBoP,EAAMpP,GAAG5P,QACTkgC,EAAclhB,EAAMpP,GAAG3B,KAAKb,MACR8yB,EAAYjiC,QAAiC,IAAvBiiC,EAAYjiC,SAClD+gB,EAAMjf,OAAOod,MAAM6B,EAAO,CAACpP,EAAG,GAAGzS,OAAO+iC,IACxCtwB,GAAKswB,EAAYjiC,OAAS,GAE1B+gB,EAAMjf,OAAO6P,EAAG,EAAGswB,GAEvB9gC,KAAK4gC,eAKjB5B,cAAa,WAST,OARe,IAAItL,GAAQ1zB,KAAK6iB,UAAW7iB,KAAK4f,MAAMtP,KAAI,SAAUe,GAChE,OAAIA,EAAE2tB,cACK3tB,EAAE2tB,gBAEF3tB,KAEXrR,KAAKy5B,cAAez5B,KAAK+P,mBAKjCgxB,mBAAUnvB,GACN,OAAQA,GAAwB,IAAhBA,EAAK/S,QAIzBmiC,eAAc,SAACpvB,EAAM5D,GACjB,IAAMizB,EAAejhC,KAAK6iB,UAAU7iB,KAAK6iB,UAAUhkB,OAAS,GAC5D,QAAKoiC,EAAa7D,kBAGd6D,EAAa7L,YACZ6L,EAAa7L,UAAUvmB,KACpB,IAAIkM,EAASa,KAAK5N,EACdA,EAAQ6N,WAMxB+kB,WAAU,WACN5gC,KAAKkhC,UAAY,KACjBlhC,KAAKu/B,WAAa,KAClBv/B,KAAKw/B,YAAc,KACnBx/B,KAAKs/B,SAAW,IAGpB6B,UAAS,WAqBL,OApBKnhC,KAAKu/B,aACNv/B,KAAKu/B,WAAcv/B,KAAK4f,MAAa5f,KAAK4f,MAAMlL,QAAO,SAAU0sB,EAAM/vB,GAOnE,GANIA,aAAa0Y,KAA8B,IAAf1Y,EAAEoX,WAC9B2Y,EAAK/vB,EAAEmY,MAAQnY,GAKJ,WAAXA,EAAEzQ,MAAqByQ,EAAEuN,MAAQvN,EAAEuN,KAAKuiB,UAAW,CACnD,IAAMjE,EAAO7rB,EAAEuN,KAAKuiB,YACpB,IAAK,IAAMhE,KAAQD,EAEXA,EAAK7/B,eAAe8/B,KACpBiE,EAAKjE,GAAQ9rB,EAAEuN,KAAK6J,SAAS0U,IAIzC,OAAOiE,IACR,IAjB6B,IAmB7BphC,KAAKu/B,YAGhB8B,WAAU,WAiBN,OAhBKrhC,KAAKw/B,cACNx/B,KAAKw/B,YAAex/B,KAAK4f,MAAa5f,KAAK4f,MAAMlL,QAAO,SAAU0sB,EAAM/vB,GACpE,GAAIA,aAAa0Y,KAA8B,IAAf1Y,EAAEoX,SAAmB,CACjD,IAAM6Y,EAA0B,IAAlBjwB,EAAEmY,KAAK3qB,QAAkBwS,EAAEmY,KAAK,aAAcyU,GACxD5sB,EAAEmY,KAAK,GAAG/a,MAAQ4C,EAAEmY,KAEnB4X,EAAK,WAAIE,IAIVF,EAAK,IAAIrjC,OAAAujC,IAAQ9gC,KAAK6Q,GAHtB+vB,EAAK,WAAIE,IAAU,CAAEjwB,GAM7B,OAAO+vB,IACR,IAb8B,IAe9BphC,KAAKw/B,aAGhB/W,kBAASe,GACL,IAAM+X,EAAOvhC,KAAKmhC,YAAY3X,GAC9B,GAAI+X,EACA,OAAOvhC,KAAKwhC,WAAWD,IAI/BrL,kBAAS1M,GACL,IAAM+X,EAAOvhC,KAAKqhC,aAAa7X,GAC/B,GAAI+X,EACA,OAAOvhC,KAAKwhC,WAAWD,IAI/BE,gBAAe,WACX,IAAK,IAAI/gC,EAAIV,KAAK4f,MAAM/gB,OAAQ6B,EAAI,EAAGA,IAAK,CACxC,IAAM6gC,EAAOvhC,KAAK4f,MAAMlf,EAAI,GAC5B,GAAI6gC,aAAgBxX,GAChB,OAAO/pB,KAAKwhC,WAAWD,KAKnCC,oBAAWE,GACP,IAAMtxB,EAAOpQ,KACb,SAAS2hC,EAAqBJ,GAC1B,OAAIA,EAAK9yB,iBAAiBgjB,KAAc8P,EAAKv0B,QACT,iBAArBu0B,EAAK9yB,MAAMA,MAClB,IAAIojB,GAAO7xB,KAAKxC,MAAMwQ,QAAShO,KAAKxC,MAAMkgC,cAAe6D,EAAKp0B,WAAYo0B,EAAK9yB,MAAMrB,YAAYolB,UAC7F+O,EAAK9yB,MAAMA,MACX,CAAC,QAAS,cACV,SAASukB,EAAK/b,GACN+b,IACAuO,EAAKv0B,QAAS,GAEdiK,IACAsqB,EAAK9yB,MAAQwI,EAAO,GACpBsqB,EAAKpW,UAAYlU,EAAO,IAAM,GAC9BsqB,EAAKv0B,QAAS,MAI1Bu0B,EAAKv0B,QAAS,EAGXu0B,GAGAA,EAGf,GAAK9zB,MAAMC,QAAQg0B,GAGd,CACD,IAAME,EAAQ,GAId,OAHAF,EAAQ/zB,SAAQ,SAAS+H,GACrBksB,EAAMphC,KAAKmhC,EAAqBrkC,KAAK8S,EAAMsF,OAExCksB,EAPP,OAAOD,EAAqBrkC,KAAK8S,EAAMsxB,IAW/CxX,SAAQ,WACJ,IAAKlqB,KAAK4f,MAAS,MAAO,GAE1B,IAEIpP,EACAqX,EAHEga,EAAY,GACZjiB,EAAQ5f,KAAK4f,MAInB,IAAKpP,EAAI,EAAIqX,EAAOjI,EAAMpP,GAAKA,IACvBqX,EAAK4X,WACLoC,EAAUrhC,KAAKqnB,GAIvB,OAAOga,GAGXC,qBAAYja,GACR,IAAMjI,EAAQ5f,KAAK4f,MACfA,EACAA,EAAMgB,QAAQiH,GAEd7nB,KAAK4f,MAAQ,CAAEiI,GAEnB7nB,KAAKqN,UAAUwa,EAAM7nB,OAGzB+hC,KAAK,SAAAve,EAAUpT,EAAMiT,GACjBjT,EAAOA,GAAQpQ,KACf,IACIqQ,EACA2xB,EAFEpiB,EAAQ,GAGRjN,EAAM6Q,EAASzV,QAErB,OAAI4E,KAAO3S,KAAKs/B,SAAmBt/B,KAAKs/B,SAAS3sB,IAEjD3S,KAAKkqB,WAAWvc,SAAQ,SAAUka,GAC9B,GAAIA,IAASzX,EACT,IAAK,IAAIyK,EAAI,EAAGA,EAAIgN,EAAKhF,UAAUhkB,OAAQgc,IAEvC,GADAxK,EAAQmT,EAASnT,MAAMwX,EAAKhF,UAAUhI,IAC3B,CACP,GAAI2I,EAASmC,SAAS9mB,OAASwR,GAC3B,IAAKgT,GAAUA,EAAOwE,GAAO,CACzBma,EAAcna,EAAKka,KAAK,IAAIvb,GAAShD,EAASmC,SAAS9S,MAAMxC,IAASD,EAAMiT,GAC5E,IAAK,IAAIxiB,EAAI,EAAGA,EAAImhC,EAAYnjC,SAAUgC,EACtCmhC,EAAYnhC,GAAG4a,KAAKjb,KAAKqnB,GAE7Bpa,MAAMrQ,UAAUoD,KAAKud,MAAM6B,EAAOoiB,SAGtCpiB,EAAMpf,KAAK,CAAEqnB,KAAIA,EAAEpM,KAAM,KAE7B,UAKhBzb,KAAKs/B,SAAS3sB,GAAOiN,EACdA,IAGX1R,OAAM,SAACF,EAASQ,GACZ,IAAIgC,EACAqK,EAKA6O,EAEA7B,EACApM,EANAwmB,EAAY,GAQhBj0B,EAAQk0B,SAAYl0B,EAAQk0B,UAAY,EAEnCliC,KAAK4e,MACN5Q,EAAQk0B,WAGZ,IAEIC,EAFEC,EAAap0B,EAAQ2D,SAAW,GAAKlE,MAAMO,EAAQk0B,SAAW,GAAG3zB,KAAK,MACtE8zB,EAAYr0B,EAAQ2D,SAAW,GAAKlE,MAAMO,EAAQk0B,UAAU3zB,KAAK,MAGnE+zB,EAAmB,EACnBC,EAAkB,EACtB,IAAK/xB,EAAI,EAAIqX,EAAO7nB,KAAK4f,MAAMpP,GAAKA,IAC5BqX,aAAgB+B,IACZ2Y,IAAoB/xB,GACpB+xB,IAEJN,EAAUzhC,KAAKqnB,IACRA,EAAK2a,WAAa3a,EAAK2a,aAC9BP,EAAUthC,OAAO2hC,EAAkB,EAAGza,GACtCya,IACAC,KACqB,WAAd1a,EAAKjnB,MACZqhC,EAAUthC,OAAO4hC,EAAiB,EAAG1a,GACrC0a,KAEAN,EAAUzhC,KAAKqnB,GAOvB,GAJAoa,EAtCyB,GAsCIlkC,OAAOkkC,IAI/BjiC,KAAK4e,KAAM,EACZ8K,EAAY2I,GAAarkB,EAAShO,KAAMqiC,MAGpC7zB,EAAOL,IAAIub,GACXlb,EAAOL,IAAIk0B,IAGf,IAAM/mB,EAAQtb,KAAKsb,MACbmnB,EAAUnnB,EAAMzc,OAClB6jC,SAIJ,IAFAP,EAAMn0B,EAAQ2D,SAAW,IAAO,MAAA5T,OAAMskC,GAEjC7xB,EAAI,EAAGA,EAAIiyB,EAASjyB,IAErB,GAAMkyB,GADNjnB,EAAOH,EAAM9K,IACW3R,OAOxB,IANI2R,EAAI,GAAKhC,EAAOL,IAAIg0B,GAExBn0B,EAAQ2F,eAAgB,EACxB8H,EAAK,GAAGvN,OAAOF,EAASQ,GAExBR,EAAQ2F,eAAgB,EACnBkH,EAAI,EAAGA,EAAI6nB,EAAY7nB,IACxBY,EAAKZ,GAAG3M,OAAOF,EAASQ,GAIhCA,EAAOL,KAAKH,EAAQ2D,SAAW,IAAM,QAAUywB,GAInD,IAAK5xB,EAAI,EAAIqX,EAAOoa,EAAUzxB,GAAKA,IAAK,CAEhCA,EAAI,IAAMyxB,EAAUpjC,SACpBmP,EAAQ0wB,UAAW,GAGvB,IAAMiE,EAAkB30B,EAAQ0wB,SAC5B7W,EAAK/Z,cAAc+Z,KACnB7Z,EAAQ0wB,UAAW,GAGnB7W,EAAK3Z,OACL2Z,EAAK3Z,OAAOF,EAASQ,GACdqZ,EAAKpZ,OACZD,EAAOL,IAAI0Z,EAAKpZ,MAAMyC,YAG1BlD,EAAQ0wB,SAAWiE,GAEd30B,EAAQ0wB,UAAY7W,EAAK/X,YAC1BtB,EAAOL,IAAIH,EAAQ2D,SAAW,GAAM,KAAA5T,OAAKqkC,IAEzCp0B,EAAQ0wB,UAAW,EAItB1+B,KAAK4e,OACNpQ,EAAOL,IAAKH,EAAQ2D,SAAW,IAAM,KAAA5T,OAAKskC,EAAY,MACtDr0B,EAAQk0B,YAGP1zB,EAAOF,WAAcN,EAAQ2D,WAAY3R,KAAKsoB,WAC/C9Z,EAAOL,IAAI,OAInBmZ,cAAc,SAAAhM,EAAOtN,EAAS6U,GAC1B,IAAK,IAAI5W,EAAI,EAAGA,EAAI4W,EAAUhkB,OAAQoN,IAClCjM,KAAK4iC,aAAatnB,EAAOtN,EAAS6U,EAAU5W,KAIpD22B,aAAa,SAAAtnB,EAAOtN,EAASwV,GAEzB,SAASqf,EAAkBC,EAAeC,GACtC,IAAIC,EAAkBnoB,EACtB,GAA6B,IAAzBioB,EAAcjkC,OACdmkC,EAAmB,IAAIlwB,EAAMgwB,EAAc,QACxC,CACH,IAAMG,EAAe,IAAIx1B,MAAMq1B,EAAcjkC,QAC7C,IAAKgc,EAAI,EAAGA,EAAIioB,EAAcjkC,OAAQgc,IAClCooB,EAAapoB,GAAK,IAAIvH,EAClB,KACAwvB,EAAcjoB,GACdkoB,EAAgBvvB,WAChBuvB,EAAgBn1B,OAChBm1B,EAAgBl1B,WAGxBm1B,EAAmB,IAAIlwB,EAAM,IAAI0T,GAASyc,IAE9C,OAAOD,EAGX,SAASE,EAAeC,EAAkBJ,GACtC,IAAIzL,EAGJ,OAFAA,EAAU,IAAIhkB,EAAQ,KAAM6vB,EAAkBJ,EAAgBvvB,WAAYuvB,EAAgBn1B,OAAQm1B,EAAgBl1B,WACvG,IAAI2Y,GAAS,CAAC8Q,IAO7B,SAAS8L,EAAuBC,EAAeC,EAASC,EAAiBC,GACrE,IAAIC,EAAiBxC,EAAcyC,EAenC,GAbAD,EAAkB,GAIdJ,EAAcxkC,OAAS,GAEvBoiC,GADAwC,EAAkBtkB,EAAgBkkB,IACHlnB,MAC/BunB,EAAoBF,EAAiBvc,cAAc9H,EAAgB8hB,EAAatb,YAGhF+d,EAAoBF,EAAiBvc,cAAc,IAGnDqc,EAAQzkC,OAAS,EAAG,CAMpB,IAAI0U,EAAagwB,EAAgBhwB,WAE3BowB,EAAWL,EAAQ,GAAG3d,SAAS,GACjCpS,EAAWJ,oBAAsBwwB,EAASpwB,WAAWJ,oBACrDI,EAAaowB,EAASpwB,YAG1BmwB,EAAkB/d,SAASnlB,KAAK,IAAI8S,EAChCC,EACAowB,EAASl1B,MACT80B,EAAgB/vB,WAChB+vB,EAAgB31B,OAChB21B,EAAgB11B,YAEpB61B,EAAkB/d,SAAW+d,EAAkB/d,SAAS5nB,OAAOulC,EAAQ,GAAG3d,SAAS9S,MAAM,IAS7F,GAL0C,IAAtC6wB,EAAkB/d,SAAS9mB,QAC3B4kC,EAAgBjjC,KAAKkjC,GAIrBJ,EAAQzkC,OAAS,EAAG,CACpB,IAAI+kC,EAAaN,EAAQzwB,MAAM,GAC/B+wB,EAAaA,EAAWtzB,KAAI,SAAUkT,GAClC,OAAOA,EAASyD,cAAczD,EAASmC,SAAU,OAErD8d,EAAkBA,EAAgB1lC,OAAO6lC,GAE7C,OAAOH,EAMX,SAASI,EAA4BR,EAAeS,EAAUP,EAAiBC,EAAkBvsB,GAC7F,IAAI4D,EACJ,IAAKA,EAAI,EAAGA,EAAIwoB,EAAcxkC,OAAQgc,IAAK,CACvC,IAAM4oB,EAAkBL,EAAuBC,EAAcxoB,GAAIipB,EAAUP,EAAiBC,GAC5FvsB,EAAOzW,KAAKijC,GAEhB,OAAOxsB,EAGX,SAAS8sB,EAA2Bpe,EAAU9C,GAC1C,IAAIrS,EAAGwzB,EAEP,GAAwB,IAApBre,EAAS9mB,OAGb,GAAyB,IAArBgkB,EAAUhkB,OAKd,IAAK2R,EAAI,EAAIwzB,EAAMnhB,EAAUrS,GAAKA,IAE1BwzB,EAAInlC,OAAS,EACbmlC,EAAIA,EAAInlC,OAAS,GAAKmlC,EAAIA,EAAInlC,OAAS,GAAGooB,cAAc+c,EAAIA,EAAInlC,OAAS,GAAG8mB,SAAS5nB,OAAO4nB,IAG5Fqe,EAAIxjC,KAAK,IAAIgmB,GAASb,SAV1B9C,EAAUriB,KAAK,CAAE,IAAIgmB,GAASb,KAsItC,SAASse,EAAel0B,EAAgBm0B,GACpC,IAAMngB,EAAcmgB,EAAWjd,cAAcid,EAAWve,SAAUue,EAAWjiB,WAAYiiB,EAAW9G,gBAEpG,OADArZ,EAAY/T,mBAAmBD,GACxBgU,EAIX,IAAIvT,EAAG2zB,EAKP,IAhIA,SAASC,EAAsB9oB,EAAOtN,EAASq2B,GAW3C,IAAI7zB,EAAGqK,EAAG6Z,EAAG4P,EAAiBC,EAAcC,EAAqBR,EAAKpG,EAA+B/+B,EAAQoiC,EACjF3J,EACpBmN,EAFkEC,GAAoB,EAwB9F,IARAJ,EAAkB,GAIlBC,EAAe,CACX,IAGC/zB,EAAI,EAAIotB,EAAKyG,EAAW1e,SAASnV,GAAKA,IAEvC,GAAiB,MAAbotB,EAAGnvB,MAAe,CAClB,IAAMk2B,GAzBNF,OAAAA,GADoBnN,EA0BsBsG,GAxBhCnvB,iBAAiBqE,IAI/B2xB,EAAgBnN,EAAQ7oB,MAAMA,iBACC+X,GAIxBie,EARI,MAwBP,GAAuB,OAAnBE,EAAyB,CAGzBZ,EAA2BO,EAAiBC,GAE5C,IACIK,EADEC,EAAc,GAEdC,EAAuB,GAI7B,IAHAF,EAAWR,EAAsBS,EAAa72B,EAAS22B,GACvDD,EAAoBA,GAAqBE,EAEpClQ,EAAI,EAAGA,EAAImQ,EAAYhmC,OAAQ61B,IAAK,CAErCmP,EAA2BU,EAAc,CADbrB,EAAeL,EAAkBgC,EAAYnQ,GAAIkJ,GAAKA,IAClBA,EAAIyG,EAAYS,GAEpFP,EAAeO,EACfR,EAAkB,QAElBA,EAAgB9jC,KAAKo9B,OAGtB,CAUH,IATA8G,GAAoB,EAEpBF,EAAsB,GAItBT,EAA2BO,EAAiBC,GAGvC1pB,EAAI,EAAGA,EAAI0pB,EAAa1lC,OAAQgc,IAIjC,GAHAmpB,EAAMO,EAAa1pB,GAGI,IAAnB7M,EAAQnP,OAGJmlC,EAAInlC,OAAS,GACbmlC,EAAI,GAAGre,SAASnlB,KAAK,IAAI8S,EAAQsqB,EAAGrqB,WAAY,GAAIqqB,EAAGpqB,WAAYoqB,EAAGhwB,OAAQgwB,EAAG/vB,YAErF22B,EAAoBhkC,KAAKwjC,QAIzB,IAAKtP,EAAI,EAAGA,EAAI1mB,EAAQnP,OAAQ61B,IAAK,CAGjC,IAAM+O,EAAkBL,EAAuBY,EAAKh2B,EAAQ0mB,GAAIkJ,EAAIyG,GAEpEG,EAAoBhkC,KAAKijC,GAMrCc,EAAeC,EACfF,EAAkB,GAQ1B,IAFAP,EAA2BO,EAAiBC,GAEvC/zB,EAAI,EAAGA,EAAI+zB,EAAa1lC,OAAQ2R,KACjC3R,EAAS0lC,EAAa/zB,GAAG3R,QACZ,IACTyc,EAAM9a,KAAK+jC,EAAa/zB,IACxBywB,EAAesD,EAAa/zB,GAAG3R,EAAS,GACxC0lC,EAAa/zB,GAAG3R,EAAS,GAAKoiC,EAAaha,cAAcga,EAAatb,SAAU0e,EAAWpiB,aAInG,OAAOyiB,EAaSN,CADpBD,EAAW,GACyCn2B,EAASwV,GAGzD,GAAIxV,EAAQnP,OAAS,EAEjB,IADAslC,EAAW,GACN3zB,EAAI,EAAGA,EAAIxC,EAAQnP,OAAQ2R,IAAK,CAEjC,IAAMu0B,EAAe/2B,EAAQwC,GAAGF,IAAI2zB,EAAe3iC,KAAKtB,KAAMwjB,EAASzT,mBAEvEg1B,EAAavkC,KAAKgjB,GAClB2gB,EAAS3jC,KAAKukC,QAIlBZ,EAAW,CAAC,CAAC3gB,IAIrB,IAAKhT,EAAI,EAAGA,EAAI2zB,EAAStlC,OAAQ2R,IAC7B8K,EAAM9a,KAAK2jC,EAAS3zB,OCp0BhC,IAAMw0B,GAAS,SACXxb,EACA/a,EACAmR,EACAvR,EACAoF,EACAiW,EACAlC,EACAzX,GAEA,IAAIS,EAIJ,GAFAxQ,KAAKwpB,KAAQA,EACbxpB,KAAKyO,MAASA,aAAiB9B,EAAQ8B,EAASA,EAAQ,IAAIgjB,GAAUhjB,GAASA,EAC3EmR,EAAO,CAOP,IANInS,MAAMC,QAAQkS,GACd5f,KAAK4f,MAAQA,GAEb5f,KAAK4f,MAAQ,CAACA,GACd5f,KAAK4f,MAAM,GAAGiD,UAAY,IAAK2D,GAAS,GAAI,KAAM,KAAMnY,EAAOoF,GAAkBkqB,wBAEhFntB,EAAI,EAAGA,EAAIxQ,KAAK4f,MAAM/gB,OAAQ2R,IAC/BxQ,KAAK4f,MAAMpP,GAAG2vB,cAAe,EAEjCngC,KAAKqN,UAAUrN,KAAK4f,MAAO5f,MAE/BA,KAAK4N,OAASS,EACdrO,KAAK6N,UAAY4F,EACjBzT,KAAK0pB,UAAYA,EACjB1pB,KAAKwnB,SAAWA,IAAY,EAC5BxnB,KAAKgQ,mBAAmBD,GACxB/P,KAAKiqB,WAAY,GAGrB+a,GAAO5nC,UAAYD,OAAOgU,OAAO,IAAIxE,EAAQ,CACzC/L,KAAM,SACN8N,gBAAOC,GACH,IAAMF,EAAQzO,KAAKyO,MAAOmR,EAAQ5f,KAAK4f,MACnCA,IACA5f,KAAK4f,MAAQjR,EAAQ4L,WAAWqF,IAEhCnR,IACAzO,KAAKyO,MAAQE,EAAQC,MAAMH,KAInCX,cAAa,WACT,OAAO9N,KAAK4f,QAAU5f,KAAKwiC,aAG/BA,UAAS,WACL,MAAO,aAAexiC,KAAKwpB,MAG/Btb,OAAM,SAACF,EAASQ,GACZ,IAAMC,EAAQzO,KAAKyO,MAAOmR,EAAQ5f,KAAK4f,MACvCpR,EAAOL,IAAInO,KAAKwpB,KAAMxpB,KAAKmN,WAAYnN,KAAKoN,YACxCqB,IACAD,EAAOL,IAAI,KACXM,EAAMP,OAAOF,EAASQ,IAEtBoR,EACA5f,KAAKilC,cAAcj3B,EAASQ,EAAQoR,GAEpCpR,EAAOL,IAAI,MAInBU,cAAKb,GACD,IAAIk3B,EAAiBC,EAAmB12B,EAAQzO,KAAKyO,MAAOmR,EAAQ5f,KAAK4f,MAsBzE,OAlBAslB,EAAkBl3B,EAAQo3B,UAC1BD,EAAoBn3B,EAAQ2yB,YAE5B3yB,EAAQo3B,UAAY,GACpBp3B,EAAQ2yB,YAAc,GAElBlyB,IACAA,EAAQA,EAAMI,KAAKb,IAEnB4R,KAEAA,EAAQ,CAACA,EAAM,GAAG/Q,KAAKb,KACjB,GAAG4Q,MAAO,GAGpB5Q,EAAQo3B,UAAYF,EACpBl3B,EAAQ2yB,YAAcwE,EAEf,IAAIH,GAAOhlC,KAAKwpB,KAAM/a,EAAOmR,EAChC5f,KAAKoN,WAAYpN,KAAKmN,WAAYnN,KAAK0pB,UAAW1pB,KAAKwnB,SAAUxnB,KAAK+P,mBAG9E0Y,kBAASe,GACL,GAAIxpB,KAAK4f,MAEL,OAAO8T,GAAQt2B,UAAUqrB,SAASnrB,KAAK0C,KAAK4f,MAAM,GAAI4J,IAI9DuY,KAAI,WACA,GAAI/hC,KAAK4f,MAEL,OAAO8T,GAAQt2B,UAAU2kC,KAAKhkB,MAAM/d,KAAK4f,MAAM,GAAIhC,YAI3DsM,SAAQ,WACJ,GAAIlqB,KAAK4f,MAEL,OAAO8T,GAAQt2B,UAAU8sB,SAASnM,MAAM/d,KAAK4f,MAAM,KAI3DqlB,cAAc,SAAAj3B,EAASQ,EAAQoR,GAC3B,IACIpP,EADE2R,EAAUvC,EAAM/gB,OAKtB,GAHAmP,EAAQk0B,SAAoC,GAAL,EAAnBl0B,EAAQk0B,UAGxBl0B,EAAQ2D,SAAU,CAElB,IADAnD,EAAOL,IAAI,KACNqC,EAAI,EAAGA,EAAI2R,EAAS3R,IACrBoP,EAAMpP,GAAGtC,OAAOF,EAASQ,GAI7B,OAFAA,EAAOL,IAAI,UACXH,EAAQk0B,WAKZ,IAAMG,EAAY,KAAKtkC,OAAA0P,MAAMO,EAAQk0B,UAAU3zB,KAAK,OAAS6zB,EAAa,GAAArkC,OAAGskC,EAAS,MACtF,GAAKlgB,EAEE,CAGH,IAFA3T,EAAOL,IAAI,YAAKi0B,IAChBxiB,EAAM,GAAG1R,OAAOF,EAASQ,GACpBgC,EAAI,EAAGA,EAAI2R,EAAS3R,IACrBhC,EAAOL,IAAIi0B,GACXxiB,EAAMpP,GAAGtC,OAAOF,EAASQ,GAE7BA,EAAOL,IAAI,UAAGk0B,EAAS,WARvB7zB,EAAOL,IAAI,YAAKk0B,EAAS,MAW7Br0B,EAAQk0B,cCnJhB,IAAM3I,GAAkB,SAAS5W,EAAS9G,GACtC7b,KAAK2iB,QAAUA,EACf3iB,KAAK6b,OAASA,EACd7b,KAAKqN,UAAUrN,KAAK2iB,QAAS3iB,OAGjCu5B,GAAgBn8B,UAAYD,OAAOgU,OAAO,IAAIxE,EAAQ,CAClD/L,KAAM,kBACN6/B,WAAW,EAEX/xB,gBAAOC,GACH3O,KAAK2iB,QAAUhU,EAAQC,MAAM5O,KAAK2iB,UAGtC9T,cAAKb,GACD,IAAM6N,EAAS7b,KAAK6b,QAAUsD,EAAgBnR,EAAQ6N,QACtD,OAAO,IAAI0d,GAAgBv5B,KAAK2iB,QAAS9G,IAG7CwpB,kBAASr3B,GACL,OAAOhO,KAAK2iB,QAAQ9T,KAAK7O,KAAK6b,OAAS,IAAId,EAASa,KAAK5N,EAAShO,KAAK6b,OAAO9d,OAAOiQ,EAAQ6N,SAAW7N,MCpBhH,IAAMs3B,GAAO,SAASC,EAAWC,EAAaC,GAC1CzlC,KAAKulC,UAAYA,EAAYpmB,EAAgBomB,GAAWG,OAAS,GACjE1lC,KAAKwlC,YAAcA,EAAcrmB,EAAgBqmB,GAAaE,OAAS,GACnED,EACAzlC,KAAKylC,WAAaA,EACXF,GAAaA,EAAU1mC,SAC9BmB,KAAKylC,WAAaF,EAAU,KAIpCD,GAAKloC,UAAYD,OAAOgU,OAAO,IAAIxE,EAAQ,CACvC/L,KAAM,OAEN8S,MAAK,WACD,OAAO,IAAI4xB,GAAKnmB,EAAgBnf,KAAKulC,WAAYpmB,EAAgBnf,KAAKwlC,aAAcxlC,KAAKylC,aAG7Fv3B,OAAM,SAACF,EAASQ,GAEZ,IAAMm3B,EAAc33B,GAAWA,EAAQ23B,YACT,IAA1B3lC,KAAKulC,UAAU1mC,OACf2P,EAAOL,IAAInO,KAAKulC,UAAU,KAClBI,GAAe3lC,KAAKylC,WAC5Bj3B,EAAOL,IAAInO,KAAKylC,aACRE,GAAe3lC,KAAKwlC,YAAY3mC,QACxC2P,EAAOL,IAAInO,KAAKwlC,YAAY,KAIpCt0B,SAAQ,WACJ,IAAIV,EAAGo1B,EAAY5lC,KAAKulC,UAAUh3B,KAAK,KACvC,IAAKiC,EAAI,EAAGA,EAAIxQ,KAAKwlC,YAAY3mC,OAAQ2R,IACrCo1B,GAAa,WAAI5lC,KAAKwlC,YAAYh1B,IAEtC,OAAOo1B,GAGXr2B,iBAAQ6C,GACJ,OAAOpS,KAAK6lC,GAAGzzB,EAAMlB,YAAc,OAAIrP,GAG3CgkC,YAAGC,GACC,OAAO9lC,KAAKkR,WAAW+gB,gBAAkB6T,EAAW7T,eAGxD8T,SAAQ,WACJ,OAAOC,OAAO,wDAAyD,MAAMtqB,KAAK1b,KAAK+N,UAG3FO,QAAO,WACH,OAAiC,IAA1BtO,KAAKulC,UAAU1mC,QAA4C,IAA5BmB,KAAKwlC,YAAY3mC,QAG3DonC,WAAU,WACN,OAAOjmC,KAAKulC,UAAU1mC,QAAU,GAAiC,IAA5BmB,KAAKwlC,YAAY3mC,QAG1DyR,aAAIkN,GACA,IAAIhN,EAEJ,IAAKA,EAAI,EAAGA,EAAIxQ,KAAKulC,UAAU1mC,OAAQ2R,IACnCxQ,KAAKulC,UAAU/0B,GAAKgN,EAASxd,KAAKulC,UAAU/0B,IAAI,GAGpD,IAAKA,EAAI,EAAGA,EAAIxQ,KAAKwlC,YAAY3mC,OAAQ2R,IACrCxQ,KAAKwlC,YAAYh1B,GAAKgN,EAASxd,KAAKwlC,YAAYh1B,IAAI,IAI5D01B,UAAS,WACL,IAAIpb,EAEAqb,EACAC,EAFEnvB,EAAS,GAaf,IAAKmvB,KATLD,EAAU,SAAUE,GAMhB,OAJIvb,EAAMztB,eAAegpC,KAAgBpvB,EAAOmvB,KAC5CnvB,EAAOmvB,GAAaC,GAGjBA,GAGO76B,EAEVA,EAAgBnO,eAAe+oC,KAC/Btb,EAAQtf,EAAgB46B,GAExBpmC,KAAKsQ,IAAI61B,IAIjB,OAAOlvB,GAGXqvB,OAAM,WACF,IACID,EACA71B,EAFE+1B,EAAU,GAIhB,IAAK/1B,EAAI,EAAGA,EAAIxQ,KAAKulC,UAAU1mC,OAAQ2R,IAEnC+1B,EADAF,EAAarmC,KAAKulC,UAAU/0B,KACL+1B,EAAQF,IAAe,GAAK,EAGvD,IAAK71B,EAAI,EAAGA,EAAIxQ,KAAKwlC,YAAY3mC,OAAQ2R,IAErC+1B,EADAF,EAAarmC,KAAKwlC,YAAYh1B,KACP+1B,EAAQF,IAAe,GAAK,EAMvD,IAAKA,KAHLrmC,KAAKulC,UAAY,GACjBvlC,KAAKwlC,YAAc,GAEAe,EAEf,GAAIA,EAAQlpC,eAAegpC,GAAa,CACpC,IAAMG,EAAQD,EAAQF,GAEtB,GAAIG,EAAQ,EACR,IAAKh2B,EAAI,EAAGA,EAAIg2B,EAAOh2B,IACnBxQ,KAAKulC,UAAU/kC,KAAK6lC,QAErB,GAAIG,EAAQ,EACf,IAAKh2B,EAAI,EAAGA,GAAKg2B,EAAOh2B,IACpBxQ,KAAKwlC,YAAYhlC,KAAK6lC,GAMtCrmC,KAAKulC,UAAUG,OACf1lC,KAAKwlC,YAAYE,UC/HzB,IAAMe,GAAY,SAASh4B,EAAOi4B,GAE9B,GADA1mC,KAAKyO,MAAQk4B,WAAWl4B,GACpBm4B,MAAM5mC,KAAKyO,OACX,MAAM,IAAIhP,MAAM,8BAEpBO,KAAK0mC,KAAQA,GAAQA,aAAgBpB,GAAQoB,EACzC,IAAIpB,GAAKoB,EAAO,CAACA,QAAQ7kC,GAC7B7B,KAAKqN,UAAUrN,KAAK0mC,KAAM1mC,OAG9BymC,GAAUrpC,UAAYD,OAAOgU,OAAO,IAAIxE,EAAQ,CAC5C/L,KAAM,YAEN8N,gBAAOC,GACH3O,KAAK0mC,KAAO/3B,EAAQC,MAAM5O,KAAK0mC,OAKnC73B,cAAKb,GACD,OAAOhO,MAGX6mC,QAAO,WACH,OAAO,IAAI52B,EAAM,CAACjQ,KAAKyO,MAAOzO,KAAKyO,MAAOzO,KAAKyO,SAGnDP,OAAM,SAACF,EAASQ,GACZ,GAAKR,GAAWA,EAAQ23B,cAAiB3lC,KAAK0mC,KAAKT,aAC/C,MAAM,IAAIxmC,MAAM,sFAAA1B,OAAsFiC,KAAK0mC,KAAKx1B,aAGpH,IAAMzC,EAAQzO,KAAKkP,OAAOlB,EAAShO,KAAKyO,OACpCq4B,EAAWvW,OAAO9hB,GAOtB,GALc,IAAVA,GAAeA,EAAQ,MAAYA,GAAS,OAE5Cq4B,EAAWr4B,EAAMa,QAAQ,IAAIzS,QAAQ,MAAO,KAG5CmR,GAAWA,EAAQ2D,SAAU,CAE7B,GAAc,IAAVlD,GAAezO,KAAK0mC,KAAKX,WAEzB,YADAv3B,EAAOL,IAAI24B,GAKXr4B,EAAQ,GAAKA,EAAQ,IACrBq4B,EAAW,EAAW9tB,OAAO,IAIrCxK,EAAOL,IAAI24B,GACX9mC,KAAK0mC,KAAKx4B,OAAOF,EAASQ,IAM9B2D,QAAQ,SAAAnE,EAASe,EAAIqD,GAEjB,IAAI3D,EAAQzO,KAAK8O,SAASd,EAASe,EAAI/O,KAAKyO,MAAO2D,EAAM3D,OACrDi4B,EAAO1mC,KAAK0mC,KAAKhzB,QAErB,GAAW,MAAP3E,GAAqB,MAAPA,EACd,GAA8B,IAA1B23B,EAAKnB,UAAU1mC,QAA4C,IAA5B6nC,EAAKlB,YAAY3mC,OAChD6nC,EAAOt0B,EAAMs0B,KAAKhzB,QACd1T,KAAK0mC,KAAKjB,aACViB,EAAKjB,WAAazlC,KAAK0mC,KAAKjB,iBAE7B,GAAoC,IAAhCrzB,EAAMs0B,KAAKnB,UAAU1mC,QAA4C,IAA5B6nC,EAAKlB,YAAY3mC,YAE1D,CAGH,GAFAuT,EAAQA,EAAM20B,UAAU/mC,KAAK0mC,KAAKR,aAE9Bl4B,EAAQ23B,aAAevzB,EAAMs0B,KAAKx1B,aAAew1B,EAAKx1B,WACtD,MAAM,IAAIzR,MAAM,kEACV,eAAA1B,OAAe2oC,EAAKx1B,WAAoB,WAAAnT,OAAAqU,EAAMs0B,KAAKx1B,WAAU,OAGvEzC,EAAQzO,KAAK8O,SAASd,EAASe,EAAI/O,KAAKyO,MAAO2D,EAAM3D,WAE3C,MAAPM,GACP23B,EAAKnB,UAAYmB,EAAKnB,UAAUxnC,OAAOqU,EAAMs0B,KAAKnB,WAAWG,OAC7DgB,EAAKlB,YAAckB,EAAKlB,YAAYznC,OAAOqU,EAAMs0B,KAAKlB,aAAaE,OACnEgB,EAAKJ,UACS,MAAPv3B,IACP23B,EAAKnB,UAAYmB,EAAKnB,UAAUxnC,OAAOqU,EAAMs0B,KAAKlB,aAAaE,OAC/DgB,EAAKlB,YAAckB,EAAKlB,YAAYznC,OAAOqU,EAAMs0B,KAAKnB,WAAWG,OACjEgB,EAAKJ,UAET,OAAO,IAAIG,GAAUh4B,EAAOi4B,IAGhCn3B,iBAAQ6C,GACJ,IAAIpD,EAAGC,EAEP,GAAMmD,aAAiBq0B,GAAvB,CAIA,GAAIzmC,KAAK0mC,KAAKp4B,WAAa8D,EAAMs0B,KAAKp4B,UAClCU,EAAIhP,KACJiP,EAAImD,OAIJ,GAFApD,EAAIhP,KAAKgnC,QACT/3B,EAAImD,EAAM40B,QACqB,IAA3Bh4B,EAAE03B,KAAKn3B,QAAQN,EAAEy3B,MACjB,OAIR,OAAO/5B,EAAK6C,eAAeR,EAAEP,MAAOQ,EAAER,SAG1Cu4B,MAAK,WACD,OAAOhnC,KAAK+mC,UAAU,CAAEloC,OAAQ,KAAMmN,SAAU,IAAKG,MAAO,SAGhE46B,mBAAUE,GACN,IAEIz2B,EACA41B,EACAtb,EACAoc,EAEAC,EAPA14B,EAAQzO,KAAKyO,MACXi4B,EAAO1mC,KAAK0mC,KAAKhzB,QAKnB0zB,EAAqB,GAGzB,GAA2B,iBAAhBH,EAA0B,CACjC,IAAKz2B,KAAKhF,EACFA,EAAgBgF,GAAGnT,eAAe4pC,MAClCG,EAAqB,IACF52B,GAAKy2B,GAGhCA,EAAcG,EAgBlB,IAAKhB,KAdLe,EAAY,SAAUd,EAAYb,GAC9B,OAAI1a,EAAMztB,eAAegpC,IACjBb,EACA/2B,GAAiBqc,EAAMub,GAAcvb,EAAMoc,GAE3Cz4B,GAAiBqc,EAAMub,GAAcvb,EAAMoc,GAGxCA,GAGJb,GAGOY,EACVA,EAAY5pC,eAAe+oC,KAC3Bc,EAAaD,EAAYb,GACzBtb,EAAQtf,EAAgB46B,GAExBM,EAAKp2B,IAAI62B,IAMjB,OAFAT,EAAKJ,SAEE,IAAIG,GAAUh4B,EAAOi4B,MCzKpC,IAAMtI,GAAOxnB,EAGPywB,GAAY,SAASt4B,EAAIu4B,EAAUpL,GACrCl8B,KAAK+O,GAAKA,EAAGqE,OACbpT,KAAKsnC,SAAWA,EAChBtnC,KAAKk8B,SAAWA,GAGpBmL,GAAUjqC,UAAYD,OAAOgU,OAAO,IAAIxE,EAAQ,CAC5C/L,KAAM,YAEN8N,gBAAOC,GACH3O,KAAKsnC,SAAW34B,EAAQ4L,WAAWva,KAAKsnC,WAG5Cz4B,cAAKb,GACD,IAA4Ee,EAAxEC,EAAIhP,KAAKsnC,SAAS,GAAGz4B,KAAKb,GAAUiB,EAAIjP,KAAKsnC,SAAS,GAAGz4B,KAAKb,GAElE,GAAIA,EAAQwO,SAASxc,KAAK+O,IAAK,CAQ3B,GAPAA,EAAiB,OAAZ/O,KAAK+O,GAAc,IAAM/O,KAAK+O,GAC/BC,aAAay3B,IAAax3B,aAAagB,IACvCjB,EAAIA,EAAE63B,WAEN53B,aAAaw3B,IAAaz3B,aAAaiB,IACvChB,EAAIA,EAAE43B,YAEL73B,EAAEmD,UAAYlD,EAAEkD,QAAS,CAC1B,IACKnD,aAAaq4B,IAAap4B,aAAao4B,KAC5B,MAATr4B,EAAED,IAAcf,EAAQ2I,OAASynB,GAAKtqB,gBAEzC,OAAO,IAAIuzB,GAAUrnC,KAAK+O,GAAI,CAACC,EAAGC,GAAIjP,KAAKk8B,UAE/C,KAAM,CAAEt7B,KAAM,YACV6W,QAAS,gCAGjB,OAAOzI,EAAEmD,QAAQnE,EAASe,EAAIE,GAE9B,OAAO,IAAIo4B,GAAUrnC,KAAK+O,GAAI,CAACC,EAAGC,GAAIjP,KAAKk8B,WAInDhuB,OAAM,SAACF,EAASQ,GACZxO,KAAKsnC,SAAS,GAAGp5B,OAAOF,EAASQ,GAC7BxO,KAAKk8B,UACL1tB,EAAOL,IAAI,KAEfK,EAAOL,IAAInO,KAAK+O,IACZ/O,KAAKk8B,UACL1tB,EAAOL,IAAI,KAEfnO,KAAKsnC,SAAS,GAAGp5B,OAAOF,EAASQ,MC1BlC,IAAI+4B,GAAW,WAQpB,OAPAA,GAAWpqC,OAAOgU,QAAU,SAAkBq2B,GAC1C,IAAK,IAAIv7B,EAAGuE,EAAI,EAAGkF,EAAIkI,UAAU/e,OAAQ2R,EAAIkF,EAAGlF,IAE5C,IAAK,IAAI8Z,KADTre,EAAI2R,UAAUpN,GACOrT,OAAOC,UAAUC,eAAeC,KAAK2O,EAAGqe,KAAIkd,EAAEld,GAAKre,EAAEqe,IAE9E,OAAOkd,IAEKzpB,MAAM/d,KAAM4d,YAgSoB,mBAApB6pB,iBAAiCA,gBCjU/D,IAAMvc,GAAa,SAASzc,EAAOi5B,GAG/B,GAFA1nC,KAAKyO,MAAQA,EACbzO,KAAK0nC,UAAYA,GACZj5B,EACD,MAAM,IAAIhP,MAAM,2CAIxByrB,GAAW9tB,UAAYD,OAAOgU,OAAO,IAAIxE,EAAQ,CAC7C/L,KAAM,aAEN8N,gBAAOC,GACH3O,KAAKyO,MAAQE,EAAQ4L,WAAWva,KAAKyO,QAGzCI,cAAKb,GACD,IAAI25B,EACEprB,EAASvO,EAAQwO,WACjBJ,EAAgBpc,KAAK+7B,OAEvB6L,GAAc,EA0BlB,OAzBIxrB,GACApO,EAAQoO,gBAERpc,KAAKyO,MAAM5P,OAAS,EACpB8oC,EAAc,IAAIzc,GAAWlrB,KAAKyO,MAAM6B,KAAI,SAAU9Q,GAClD,OAAKA,EAAEqP,KAGArP,EAAEqP,KAAKb,GAFHxO,KAGXQ,KAAK0nC,WACoB,IAAtB1nC,KAAKyO,MAAM5P,SACdmB,KAAKyO,MAAM,GAAGstB,QAAW/7B,KAAKyO,MAAM,GAAG2tB,YAAepuB,EAAQiO,SAC9D2rB,GAAc,GAElBD,EAAc3nC,KAAKyO,MAAM,GAAGI,KAAKb,IAEjC25B,EAAc3nC,KAEdoc,GACApO,EAAQsO,oBAERtc,KAAK+7B,SAAU/7B,KAAKo8B,YAAe7f,GAAWqrB,GACxCD,aAAuBlB,KAC7BkB,EAAc,IAAI70B,EAAM60B,IAErBA,GAGXz5B,OAAM,SAACF,EAASQ,GACZ,IAAK,IAAI9N,EAAI,EAAGA,EAAIV,KAAKyO,MAAM5P,OAAQ6B,IACnCV,KAAKyO,MAAM/N,GAAGwN,OAAOF,EAASQ,IACzBxO,KAAK0nC,WAAahnC,EAAI,EAAIV,KAAKyO,MAAM5P,SAClC6B,EAAI,EAAIV,KAAKyO,MAAM5P,UAAYmB,KAAKyO,MAAM/N,EAAI,aAAc+wB,KAC5DzxB,KAAKyO,MAAM/N,EAAI,aAAc+wB,IAAyC,MAA5BzxB,KAAKyO,MAAM/N,EAAI,GAAG+N,QAC5DD,EAAOL,IAAI,MAM3BmqB,kBAAiB,WACbt4B,KAAKyO,MAAQzO,KAAKyO,MAAM4U,QAAO,SAASxS,GACpC,QAASA,aAAa+Y,UCnElC,IAAAie,GAAA,WACI,SAAAA,EAAYre,EAAMxb,EAASK,EAAOoF,GAC9BzT,KAAKwpB,KAAOA,EAAK5W,cACjB5S,KAAKqO,MAAQA,EACbrO,KAAKgO,QAAUA,EACfhO,KAAKyT,gBAAkBA,EAEvBzT,KAAKmY,KAAOnK,EAAQ6N,OAAO,GAAGgV,iBAAiB3jB,IAAIlN,KAAKwpB,MA2ChE,OAxCIqe,EAAAzqC,UAAA0qC,QAAA,WACI,OAAOlW,QAAQ5xB,KAAKmY,OAGxB0vB,EAAIzqC,UAAAE,KAAJ,SAAKsU,GAAL,IAmCCsf,EAAAlxB,KAlCSyN,MAAMC,QAAQkE,KAChBA,EAAO,CAACA,IAEZ,IAAMm2B,EAAW/nC,KAAKmY,KAAK4vB,UACV,IAAbA,IACAn2B,EAAOA,EAAKtB,KAAI,SAAAtB,GAAK,OAAAA,EAAEH,KAAKqiB,EAAKljB,aAErC,IAAMg6B,EAAgB,SAAA3zB,GAAQ,QAAgB,YAAdA,EAAKzT,OAsBrC,OAlBAgR,EAAOA,EACFyR,OAAO2kB,GACP13B,KAAI,SAAA+D,GACD,GAAkB,eAAdA,EAAKzT,KAAuB,CAC5B,IAAMqnC,EAAW5zB,EAAK5F,MAAM4U,OAAO2kB,GACnC,OAAwB,IAApBC,EAASppC,OAELwV,EAAK0nB,QAA6B,MAAnBkM,EAAS,GAAGl5B,GACpBsF,EAEJ4zB,EAAS,GAET,IAAI/c,GAAW+c,GAG9B,OAAO5zB,MAGE,IAAb0zB,EACO/nC,KAAKmY,KAAL4F,MAAA/d,KFsKZ,SAAuBkoC,EAAIC,EAAMC,GACtC,GAAIA,GAA6B,IAArBxqB,UAAU/e,OAAc,IAAK,IAA4BwpC,EAAxB73B,EAAI,EAAGwB,EAAIm2B,EAAKtpC,OAAY2R,EAAIwB,EAAGxB,KACxE63B,GAAQ73B,KAAK23B,IACRE,IAAIA,EAAK56B,MAAMrQ,UAAUyV,MAAMvV,KAAK6qC,EAAM,EAAG33B,IAClD63B,EAAG73B,GAAK23B,EAAK33B,IAGrB,OAAO03B,EAAGnqC,OAAOsqC,GAAM56B,MAAMrQ,UAAUyV,MAAMvV,KAAK6qC,IE7KvBG,CAAA,CAAAtoC,KAAKgO,SAAY4D,GAAM,IAGrC5R,KAAKmY,WAALnY,KAAa4R,IAE3Bi2B,KC7CK7d,GAAO,SAASR,EAAM5X,EAAMvD,EAAOoF,GACrCzT,KAAKwpB,KAAOA,EACZxpB,KAAK4R,KAAOA,EACZ5R,KAAKuoC,KAAgB,SAAT/e,EACZxpB,KAAK4N,OAASS,EACdrO,KAAK6N,UAAY4F,GAGrBuW,GAAK5sB,UAAYD,OAAOgU,OAAO,IAAIxE,EAAQ,CACvC/L,KAAM,OAEN8N,gBAAOC,GACC3O,KAAK4R,OACL5R,KAAK4R,KAAOjD,EAAQ4L,WAAWva,KAAK4R,QAe5C/C,cAAKb,GAAL,IA6DCkjB,EAAAlxB,KAzDSwoC,EAAqBx6B,EAAQuO,OACnCvO,EAAQuO,QAAUvc,KAAKuoC,MACnBvoC,KAAKuoC,MAAQv6B,EAAQiO,SACrBjO,EAAQ+N,YAGZ,IAOI9E,EAPEiF,EAAW,YACTgV,EAAKqX,MAAQv6B,EAAQiO,SACrBjO,EAAQkO,WAEZlO,EAAQuO,OAASisB,GAIfC,EAAa,IAAIC,GAAe1oC,KAAKwpB,KAAMxb,EAAShO,KAAKoN,WAAYpN,KAAKmN,YAEhF,GAAIs7B,EAAWX,UACX,IACI7wB,EAASwxB,EAAWnrC,KAAK0C,KAAK4R,MAC9BsK,IACF,MAAO1c,GAEL,GAAIA,EAAEnC,eAAe,SAAWmC,EAAEnC,eAAe,UAC7C,MAAMmC,EAEV,KAAM,CACFoB,KAAMpB,EAAEoB,MAAQ,UAChB6W,QAAS,qCAA+BzX,KAAKwpB,KAAS,KAAAzrB,OAAAyB,EAAEiY,QAAU,KAAA1Z,OAAKyB,EAAEiY,SAAY,IACrFpJ,MAAOrO,KAAKoN,WACZ5L,SAAUxB,KAAKmN,WAAW3L,SAC1BmU,KAAMnW,EAAE8yB,WACR1c,OAAQpW,EAAEmpC,cAKtB,GAAI1xB,MAAAA,EAcA,OAXMA,aAAkBtK,IAKhBsK,EAAS,IAAIwa,GAJZxa,IAAqB,IAAXA,EAIYA,EAAO/F,WAHP,OAO/B+F,EAAOrJ,OAAS5N,KAAK4N,OACrBqJ,EAAOpJ,UAAY7N,KAAK6N,UACjBoJ,EAGX,IAAMrF,EAAO5R,KAAK4R,KAAKtB,KAAI,SAAAtB,GAAK,OAAAA,EAAEH,KAAKb,MAGvC,OAFAkO,IAEO,IAAI8N,GAAKhqB,KAAKwpB,KAAM5X,EAAM5R,KAAKoN,WAAYpN,KAAKmN,aAG3De,OAAM,SAACF,EAASQ,GACZA,EAAOL,IAAI,UAAGnO,KAAKwpB,KAAO,KAAExpB,KAAKmN,WAAYnN,KAAKoN,YAElD,IAAK,IAAI1M,EAAI,EAAGA,EAAIV,KAAK4R,KAAK/S,OAAQ6B,IAClCV,KAAK4R,KAAKlR,GAAGwN,OAAOF,EAASQ,GACzB9N,EAAI,EAAIV,KAAK4R,KAAK/S,QAClB2P,EAAOL,IAAI,MAInBK,EAAOL,IAAI,QCzGnB,IAAMgoB,GAAW,SAAS3M,EAAMnb,EAAOoF,GACnCzT,KAAKwpB,KAAOA,EACZxpB,KAAK4N,OAASS,EACdrO,KAAK6N,UAAY4F,GAGrB0iB,GAAS/4B,UAAYD,OAAOgU,OAAO,IAAIxE,EAAQ,CAC3C/L,KAAM,WAENiO,cAAKb,GACD,IAAIya,EAAUe,EAAOxpB,KAAKwpB,KAM1B,GAJ2B,IAAvBA,EAAK3X,QAAQ,QACb2X,EAAO,IAAAzrB,OAAI,IAAIo4B,GAAS3M,EAAK3W,MAAM,GAAI7S,KAAKoN,WAAYpN,KAAKmN,YAAY0B,KAAKb,GAASS,QAGvFzO,KAAK4oC,WACL,KAAM,CAAEhoC,KAAM,OACV6W,QAAS,qCAAqC1Z,OAAAyrB,GAC9ChoB,SAAUxB,KAAKmN,WAAW3L,SAC1B6M,MAAOrO,KAAKoN,YAqBpB,GAlBApN,KAAK4oC,YAAa,EAElBngB,EAAWzoB,KAAK+hC,KAAK/zB,EAAQ6N,QAAQ,SAAUgtB,GAC3C,IAAMh4B,EAAIg4B,EAAMpgB,SAASe,GACzB,GAAI3Y,EAAG,CACH,GAAIA,EAAEsa,UACqBnd,EAAQ8N,eAAe9N,EAAQ8N,eAAejd,OAAS,GAC/DssB,UAAYta,EAAEsa,UAGjC,OAAInd,EAAQiO,OACD,IAAK+N,GAAK,QAAS,CAACnZ,EAAEpC,QAASI,KAAKb,GAGpC6C,EAAEpC,MAAMI,KAAKb,OAM5B,OADAhO,KAAK4oC,YAAa,EACXngB,EAEP,KAAM,CAAE7nB,KAAM,OACV6W,QAAS,YAAY1Z,OAAAyrB,EAAmB,iBACxChoB,SAAUxB,KAAKmN,WAAW3L,SAC1B6M,MAAOrO,KAAKoN,aAIxB20B,KAAI,SAAChsB,EAAK+yB,GACN,IAAK,IAAIpoC,EAAI,EAAG2Q,OAAC,EAAE3Q,EAAIqV,EAAIlX,OAAQ6B,IAE/B,GADA2Q,EAAIy3B,EAAIxrC,KAAKyY,EAAKA,EAAIrV,IACb,OAAO2Q,EAEpB,OAAO,QCzDf,IAAM+kB,GAAW,SAAS5M,EAAMnb,EAAOoF,GACnCzT,KAAKwpB,KAAOA,EACZxpB,KAAK4N,OAASS,EACdrO,KAAK6N,UAAY4F,GAGrB2iB,GAASh5B,UAAYD,OAAOgU,OAAO,IAAIxE,EAAQ,CAC3C/L,KAAM,WAENiO,cAAKb,GACD,IAAIkoB,EACE1M,EAAOxpB,KAAKwpB,KAEZuf,EAAa/6B,EAAQlM,cAAcknC,KAAK3d,SAAS9C,aAAanrB,UAAUmsB,YAE9E,GAAIvpB,KAAK4oC,WACL,KAAM,CAAEhoC,KAAM,OACV6W,QAAS,oCAAoC1Z,OAAAyrB,GAC7ChoB,SAAUxB,KAAKmN,WAAW3L,SAC1B6M,MAAOrO,KAAKoN,YAiCpB,GA9BApN,KAAK4oC,YAAa,EAElB1S,EAAWl2B,KAAK+hC,KAAK/zB,EAAQ6N,QAAQ,SAAUgtB,GAC3C,IAAIh4B,EACEo4B,EAAOJ,EAAM3S,SAAS1M,GAC5B,GAAIyf,EAAM,CACN,IAAK,IAAIvoC,EAAI,EAAGA,EAAIuoC,EAAKpqC,OAAQ6B,IAC7BmQ,EAAIo4B,EAAKvoC,GAETuoC,EAAKvoC,GAAK,IAAIqpB,GAAYlZ,EAAE2Y,KACxB3Y,EAAEpC,MACFoC,EAAEsa,UACFta,EAAEga,MACFha,EAAExC,MACFwC,EAAE4C,gBACF5C,EAAEoO,OACFpO,EAAE4X,UAMV,GAHAsgB,EAAWE,IAEXp4B,EAAIo4B,EAAKA,EAAKpqC,OAAS,IACjBssB,UACqBnd,EAAQ8N,eAAe9N,EAAQ8N,eAAejd,OAAS,GAC/DssB,UAAYta,EAAEsa,UAGjC,OADAta,EAAIA,EAAEpC,MAAMI,KAAKb,OAMrB,OADAhO,KAAK4oC,YAAa,EACX1S,EAEP,KAAM,CAAEt1B,KAAM,OACV6W,QAAS,aAAa1Z,OAAAyrB,EAAoB,kBAC1ChoB,SAAUxB,KAAKyT,gBAAgBjS,SAC/B6M,MAAOrO,KAAKqO,QAIxB0zB,KAAI,SAAChsB,EAAK+yB,GACN,IAAK,IAAIjoC,EAAI,EAAGwQ,OAAC,EAAExQ,EAAIkV,EAAIlX,OAAQgC,IAE/B,GADAwQ,EAAIy3B,EAAIxrC,KAAKyY,EAAKA,EAAIlV,IACb,OAAOwQ,EAEpB,OAAO,QCrEf,IAAMkV,GAAY,SAAS5T,EAAK5D,EAAIN,EAAO0qB,GACvCn5B,KAAK2S,IAAMA,EACX3S,KAAK+O,GAAKA,EACV/O,KAAKyO,MAAQA,EACbzO,KAAKm5B,IAAMA,GAGf5S,GAAUnpB,UAAYD,OAAOgU,OAAO,IAAIxE,EAAQ,CAC5C/L,KAAM,YAENiO,cAAKb,GACD,OAAO,IAAIuY,GACPvmB,KAAK2S,IAAI9D,KAAO7O,KAAK2S,IAAI9D,KAAKb,GAAWhO,KAAK2S,IAC9C3S,KAAK+O,GACJ/O,KAAKyO,OAASzO,KAAKyO,MAAMI,KAAQ7O,KAAKyO,MAAMI,KAAKb,GAAWhO,KAAKyO,MAClEzO,KAAKm5B,MAIbjrB,OAAM,SAACF,EAASQ,GACZA,EAAOL,IAAInO,KAAK+N,MAAMC,KAG1BD,eAAMC,GACF,IAAIS,EAAQzO,KAAK2S,IAAI5E,MAAQ/N,KAAK2S,IAAI5E,MAAMC,GAAWhO,KAAK2S,IAW5D,OATI3S,KAAK+O,KACLN,GAASzO,KAAK+O,GACdN,GAAUzO,KAAKyO,MAAMV,MAAQ/N,KAAKyO,MAAMV,MAAMC,GAAWhO,KAAKyO,OAG9DzO,KAAKm5B,MACL1qB,EAAQA,EAAQ,IAAMzO,KAAKm5B,KAGxB,IAAAp7B,OAAI0Q,EAAK,QCjCxB,IAAMoqB,GAAS,SAAShgB,EAAKugB,EAAS8P,EAAS76B,EAAOoF,GAClDzT,KAAKkpC,aAAuBrnC,IAAZqnC,GAAgCA,EAChDlpC,KAAKyO,MAAQ2qB,GAAW,GACxBp5B,KAAKouB,MAAQvV,EAAIjF,OAAO,GACxB5T,KAAK4N,OAASS,EACdrO,KAAK6N,UAAY4F,EACjBzT,KAAKi6B,cAAgB,iBACrBj6B,KAAKk6B,UAAY,kBACjBl6B,KAAKiqB,UAAYif,GAGrBrQ,GAAOz7B,UAAYD,OAAOgU,OAAO,IAAIxE,EAAQ,CACzC/L,KAAM,SAENsN,OAAM,SAACF,EAASQ,GACPxO,KAAKkpC,SACN16B,EAAOL,IAAInO,KAAKouB,MAAOpuB,KAAKmN,WAAYnN,KAAKoN,YAEjDoB,EAAOL,IAAInO,KAAKyO,OACXzO,KAAKkpC,SACN16B,EAAOL,IAAInO,KAAKouB,QAIxB+a,kBAAiB,WACb,OAAOnpC,KAAKyO,MAAM4B,MAAMrQ,KAAKi6B,gBAGjCprB,cAAKb,GACD,IAAMo7B,EAAOppC,KACTyO,EAAQzO,KAAKyO,MASjB,SAAS46B,EAAiB56B,EAAO66B,EAAQC,GACrC,IAAIC,EAAiB/6B,EACrB,GACIA,EAAQ+6B,EAAet4B,WACvBs4B,EAAiB/6B,EAAM5R,QAAQysC,EAAQC,SAClC96B,IAAU+6B,GACnB,OAAOA,EAIX,OAFA/6B,EAAQ46B,EAAiB56B,EAAOzO,KAAKi6B,eAhBT,SAAUx8B,EAAG+rB,GACrC,IAAM3Y,EAAI,IAAIslB,GAAS,IAAIp4B,OAAAyrB,GAAQ4f,EAAKh8B,WAAYg8B,EAAKj8B,YAAY0B,KAAKb,GAAS,GACnF,OAAQ6C,aAAagoB,GAAUhoB,EAAEpC,MAAQoC,EAAE9C,WAe/CU,EAAQ46B,EAAiB56B,EAAOzO,KAAKk6B,WAbT,SAAUz8B,EAAG+rB,GACrC,IAAM3Y,EAAI,IAAIulB,GAAS,IAAIr4B,OAAAyrB,GAAQ4f,EAAKh8B,WAAYg8B,EAAKj8B,YAAY0B,KAAKb,GAAS,GACnF,OAAQ6C,aAAagoB,GAAUhoB,EAAEpC,MAAQoC,EAAE9C,WAYxC,IAAI8qB,GAAO74B,KAAKouB,MAAQ3f,EAAQzO,KAAKouB,MAAO3f,EAAOzO,KAAKkpC,QAASlpC,KAAKoN,WAAYpN,KAAKmN,aAGlGoC,iBAAQ6C,GAEJ,MAAmB,WAAfA,EAAMxR,MAAsBZ,KAAKkpC,SAAY92B,EAAM82B,QAG5C92B,EAAMrE,OAAS/N,KAAK+N,UAAYqE,EAAMrE,QAAU,OAAIlM,EAFpD8K,EAAK6C,eAAexP,KAAKyO,MAAO2D,EAAM3D,UCrDzD,IAAMg7B,GAAM,SAASryB,EAAK/I,EAAOoF,EAAiBi2B,GAC9C1pC,KAAKyO,MAAQ2I,EACbpX,KAAK4N,OAASS,EACdrO,KAAK6N,UAAY4F,EACjBzT,KAAK0pC,QAAUA,GAGnBD,GAAIrsC,UAAYD,OAAOgU,OAAO,IAAIxE,EAAQ,CACtC/L,KAAM,MAEN8N,gBAAOC,GACH3O,KAAKyO,MAAQE,EAAQC,MAAM5O,KAAKyO,QAGpCP,OAAM,SAACF,EAASQ,GACZA,EAAOL,IAAI,QACXnO,KAAKyO,MAAMP,OAAOF,EAASQ,GAC3BA,EAAOL,IAAI,MAGfU,cAAKb,GACD,IACI2O,EADEvF,EAAMpX,KAAKyO,MAAMI,KAAKb,GAG5B,IAAKhO,KAAK0pC,UAGkB,iBADxB/sB,EAAW3c,KAAKmN,YAAcnN,KAAKmN,WAAWwP,WAErB,iBAAdvF,EAAI3I,OACXT,EAAQyO,oBAAoBrF,EAAI3I,QAC3B2I,EAAIgX,QACLzR,EAAsBA,EAlC1B9f,QAAQ,aAAa,SAASwT,GAAS,MAAO,YAAKA,OAoCnD+G,EAAI3I,MAAQT,EAAQ0O,YAAYtF,EAAI3I,MAAOkO,IAE3CvF,EAAI3I,MAAQT,EAAQ6O,cAAczF,EAAI3I,OAItCT,EAAQ27B,UACHvyB,EAAI3I,MAAM4B,MAAM,cAAc,CAC/B,IACMs5B,IADwC,IAA5BvyB,EAAI3I,MAAMoD,QAAQ,KAAc,IAAM,KAC5B7D,EAAQ27B,SACJ,IAA5BvyB,EAAI3I,MAAMoD,QAAQ,KAClBuF,EAAI3I,MAAQ2I,EAAI3I,MAAM5R,QAAQ,IAAK,GAAAkB,OAAG4rC,EAAO,MAE7CvyB,EAAI3I,OAASk7B,EAM7B,OAAO,IAAIF,GAAIryB,EAAKpX,KAAKoN,WAAYpN,KAAKmN,YAAY,MCnD9D,IAAMy8B,GAA0B,CAE5B97B,cAAa,WACT,OAAO,GAGXY,gBAAOC,GACC3O,KAAKo6B,WACLp6B,KAAKo6B,SAAWzrB,EAAQC,MAAM5O,KAAKo6B,WAEnCp6B,KAAK4f,QACL5f,KAAK4f,MAAQjR,EAAQ4L,WAAWva,KAAK4f,SAI7CiqB,iBAAQ77B,GACJ,IAAIiJ,EAASjX,KAGb,GAAIgO,EAAQ2yB,YAAY9hC,OAAS,EAAG,CAChC,IAAMgkB,EAAY,IAAK2D,GAAS,GAAI,KAAM,KAAMxmB,KAAKoN,WAAYpN,KAAKmN,YAAawwB,wBACnF1mB,EAAS,IAAIyc,GAAQ7Q,EAAW7U,EAAQ2yB,cACjCpZ,YAAa,EACpBtQ,EAAOjH,mBAAmBhQ,KAAK+P,kBAC/B/P,KAAKqN,UAAU4J,EAAQjX,MAM3B,cAHOgO,EAAQ2yB,mBACR3yB,EAAQo3B,UAERnuB,GAGX6yB,oBAAW97B,GACP,IAAIwC,EACA/B,EACEgN,EAAOzN,EAAQo3B,UAAUrnC,OAAO,CAACiC,OAGvC,IAAKwQ,EAAI,EAAGA,EAAIiL,EAAK5c,OAAQ2R,IAAK,CAC9B,GAAIiL,EAAKjL,GAAG5P,OAASZ,KAAKY,KAGtB,OAFAoN,EAAQ2yB,YAAYhgC,OAAO6P,EAAG,GAEvBxQ,KAGXyO,EAAQgN,EAAKjL,GAAG4pB,oBAAoBhP,GAChC3P,EAAKjL,GAAG4pB,SAAS3rB,MAAQgN,EAAKjL,GAAG4pB,SACrC3e,EAAKjL,GAAK/C,MAAMC,QAAQe,GAASA,EAAQ,CAACA,GAsB9C,OAZAzO,KAAKo6B,SAAW,IAAIhP,GAAMprB,KAAK+pC,QAAQtuB,GAAMnL,KAAI,SAAAmL,GAG7C,IAFAA,EAAOA,EAAKnL,KAAI,SAAA05B,GAAY,OAAAA,EAASj8B,MAAQi8B,EAAW,IAAIvY,GAAUuY,MAEjEx5B,EAAIiL,EAAK5c,OAAS,EAAG2R,EAAI,EAAGA,IAC7BiL,EAAK9a,OAAO6P,EAAG,EAAG,IAAIihB,GAAU,QAGpC,OAAO,IAAIvG,GAAWzP,OAE1Bzb,KAAKqN,UAAUrN,KAAKo6B,SAAUp6B,MAGvB,IAAI0zB,GAAQ,GAAI,KAG3BqW,iBAAQj0B,GACJ,GAAmB,IAAfA,EAAIjX,OACJ,MAAO,GACJ,GAAmB,IAAfiX,EAAIjX,OACX,OAAOiX,EAAI,GAIX,IAFA,IAAMmB,EAAS,GACTgzB,EAAOjqC,KAAK+pC,QAAQj0B,EAAIjD,MAAM,IAC3BnS,EAAI,EAAGA,EAAIupC,EAAKprC,OAAQ6B,IAC7B,IAAK,IAAIma,EAAI,EAAGA,EAAI/E,EAAI,GAAGjX,OAAQgc,IAC/B5D,EAAOzW,KAAK,CAACsV,EAAI,GAAG+E,IAAI9c,OAAOksC,EAAKvpC,KAG5C,OAAOuW,GAIf4pB,yBAAgBhe,GACPA,IAGL7iB,KAAK4f,MAAQ,CAAC,IAAI8T,GAAQvU,EAAgB0D,GAAY,CAAC7iB,KAAK4f,MAAM,MAClE5f,KAAKqN,UAAUrN,KAAK4f,MAAO5f,SChG7Bq7B,GAAQ,SAAS5sB,EAAO2rB,EAAU/rB,EAAOoF,EAAiB1D,GAC5D/P,KAAK4N,OAASS,EACdrO,KAAK6N,UAAY4F,EAEjB,IAAMoP,EAAY,IAAK2D,GAAS,GAAI,KAAM,KAAMxmB,KAAK4N,OAAQ5N,KAAK6N,WAAY8vB,uBAE9E39B,KAAKo6B,SAAW,IAAIhP,GAAMgP,GAC1Bp6B,KAAK4f,MAAQ,CAAC,IAAI8T,GAAQ7Q,EAAWpU,IACrCzO,KAAK4f,MAAM,GAAGugB,cAAe,EAC7BngC,KAAKgQ,mBAAmBD,GACxB/P,KAAKiqB,WAAY,EACjBjqB,KAAKqN,UAAUwV,EAAW7iB,MAC1BA,KAAKqN,UAAUrN,KAAKo6B,SAAUp6B,MAC9BA,KAAKqN,UAAUrN,KAAK4f,MAAO5f,OAG/Bq7B,GAAMj+B,UAAYD,OAAOgU,OAAO,IAAI6zB,UAChCpkC,KAAM,SAEHgpC,KAEH17B,OAAM,SAACF,EAASQ,GACZA,EAAOL,IAAI,UAAWnO,KAAK6N,UAAW7N,KAAK4N,QAC3C5N,KAAKo6B,SAASlsB,OAAOF,EAASQ,GAC9BxO,KAAKilC,cAAcj3B,EAASQ,EAAQxO,KAAK4f,QAG7C/Q,KAAI,SAACb,GACIA,EAAQ2yB,cACT3yB,EAAQ2yB,YAAc,GACtB3yB,EAAQo3B,UAAY,IAGxB,IAAM5mC,EAAQ,IAAI68B,GAAM,KAAM,GAAIr7B,KAAK4N,OAAQ5N,KAAK6N,UAAW7N,KAAK+P,kBAkBpE,OAjBI/P,KAAK0pB,YACL1pB,KAAK4f,MAAM,GAAG8J,UAAY1pB,KAAK0pB,UAC/BlrB,EAAMkrB,UAAY1pB,KAAK0pB,WAG3BlrB,EAAM47B,SAAWp6B,KAAKo6B,SAASvrB,KAAKb,GAEpCA,EAAQo3B,UAAU5kC,KAAKhC,GACvBwP,EAAQ2yB,YAAYngC,KAAKhC,GAEzBwB,KAAK4f,MAAM,GAAGiR,iBAAmB7iB,EAAQ6N,OAAO,GAAGgV,iBAAiBQ,UACpErjB,EAAQ6N,OAAO+E,QAAQ5gB,KAAK4f,MAAM,IAClCphB,EAAMohB,MAAQ,CAAC5f,KAAK4f,MAAM,GAAG/Q,KAAKb,IAClCA,EAAQ6N,OAAOiF,QAEf9S,EAAQo3B,UAAUjpB,MAEkB,IAA7BnO,EAAQo3B,UAAUvmC,OAAeL,EAAMqrC,QAAQ77B,GAClDxP,EAAMsrC,WAAW97B,OCrC7B,IAAMk8B,GAAS,SAASzuB,EAAM2e,EAAUr9B,EAASsR,EAAOoF,EAAiB1D,GAQrE,GAPA/P,KAAKjD,QAAUA,EACfiD,KAAK4N,OAASS,EACdrO,KAAK6N,UAAY4F,EACjBzT,KAAKyb,KAAOA,EACZzb,KAAKo6B,SAAWA,EAChBp6B,KAAKiqB,WAAY,OAESpoB,IAAtB7B,KAAKjD,QAAQisC,MAAsBhpC,KAAKjD,QAAQkiB,OAChDjf,KAAKkf,KAAOlf,KAAKjD,QAAQisC,MAAQhpC,KAAKjD,QAAQkiB,WAC3C,CACH,IAAMkrB,EAAYnqC,KAAK+f,UACnBoqB,GAAa,sBAAsBzuB,KAAKyuB,KACxCnqC,KAAKkf,KAAM,GAGnBlf,KAAKgQ,mBAAmBD,GACxB/P,KAAKqN,UAAUrN,KAAKo6B,SAAUp6B,MAC9BA,KAAKqN,UAAUrN,KAAKyb,KAAMzb,OAG9BkqC,GAAO9sC,UAAYD,OAAOgU,OAAO,IAAIxE,EAAQ,CACzC/L,KAAM,SAEN8N,gBAAOC,GACC3O,KAAKo6B,WACLp6B,KAAKo6B,SAAWzrB,EAAQC,MAAM5O,KAAKo6B,WAEvCp6B,KAAKyb,KAAO9M,EAAQC,MAAM5O,KAAKyb,MAC1Bzb,KAAKjD,QAAQojB,UAAangB,KAAKjD,QAAQkiB,SAAUjf,KAAK4e,OACvD5e,KAAK4e,KAAOjQ,EAAQC,MAAM5O,KAAK4e,QAIvC1Q,OAAM,SAACF,EAASQ,GACRxO,KAAKkf,UAAyCrd,IAAlC7B,KAAKyb,KAAK5N,UAAUu8B,YAChC57B,EAAOL,IAAI,WAAYnO,KAAK6N,UAAW7N,KAAK4N,QAC5C5N,KAAKyb,KAAKvN,OAAOF,EAASQ,GACtBxO,KAAKo6B,WACL5rB,EAAOL,IAAI,KACXnO,KAAKo6B,SAASlsB,OAAOF,EAASQ,IAElCA,EAAOL,IAAI,OAInB4R,QAAO,WACH,OAAQ/f,KAAKyb,gBAAgBguB,GACzBzpC,KAAKyb,KAAKhN,MAAMA,MAAQzO,KAAKyb,KAAKhN,OAG1C4Q,iBAAgB,WACZ,IAAI5D,EAAOzb,KAAKyb,KAIhB,OAHIA,aAAgBguB,KAChBhuB,EAAOA,EAAKhN,SAEZgN,aAAgBod,KACTpd,EAAK0tB,qBAMpB3pB,uBAAcxR,GACV,IAAIyN,EAAOzb,KAAKyb,KAMhB,OAJIA,aAAgBguB,KAChBhuB,EAAOA,EAAKhN,OAGT,IAAIy7B,GAAOzuB,EAAK5M,KAAKb,GAAUhO,KAAKo6B,SAAUp6B,KAAKjD,QAASiD,KAAK4N,OAAQ5N,KAAK6N,UAAW7N,KAAK+P,mBAGzGs6B,kBAASr8B,GACL,IAAMyN,EAAOzb,KAAKyb,KAAK5M,KAAKb,GACtBb,EAAWnN,KAAK6N,UAEtB,KAAM4N,aAAgBguB,IAAM,CAExB,IAAMU,EAAY1uB,EAAKhN,MACnBtB,GACAg9B,GACAn8B,EAAQyO,oBAAoB0tB,GAC5B1uB,EAAKhN,MAAQT,EAAQ0O,YAAYytB,EAAWh9B,EAASwP,UAErDlB,EAAKhN,MAAQT,EAAQ6O,cAAcpB,EAAKhN,OAIhD,OAAOgN,GAGX5M,cAAKb,GACD,IAAMiJ,EAASjX,KAAKsqC,OAAOt8B,GAW3B,OAVIhO,KAAKjD,QAAQqtC,WAAapqC,KAAKyP,sBAC3BwH,EAAOpY,QAA4B,IAAlBoY,EAAOpY,OACxBoY,EAAOtJ,SAAQ,SAAUH,GACrBA,EAAKkC,wBAITuH,EAAOvH,sBAGRuH,GAGXqzB,gBAAOt8B,GACH,IAAI2U,EACA4nB,EACEnQ,EAAWp6B,KAAKo6B,UAAYp6B,KAAKo6B,SAASvrB,KAAKb,GAErD,GAAIhO,KAAKjD,QAAQojB,SAAU,CACvB,GAAIngB,KAAK4e,MAAQ5e,KAAK4e,KAAK/P,KACvB,IACI7O,KAAK4e,KAAK/P,KAAKb,GAEnB,MAAOxO,GAEH,MADAA,EAAEiY,QAAU,iCACN,IAAIH,EAAU9X,EAAGQ,KAAK4e,KAAKzB,QAASnd,KAAK4e,KAAKpd,UAQ5D,OALA+oC,EAAWv8B,EAAQ6N,OAAO,IAAM7N,EAAQ6N,OAAO,GAAGgV,mBACjC7wB,KAAK4e,MAAQ5e,KAAK4e,KAAKzd,WACpCopC,EAAStZ,YAAajxB,KAAK4e,KAAKzd,WAG7B,GAGX,GAAInB,KAAKugB,OACoB,mBAAdvgB,KAAKugB,OACZvgB,KAAKugB,KAAOvgB,KAAKugB,QAEjBvgB,KAAKugB,MACL,MAAO,GAGf,GAAIvgB,KAAKjD,QAAQkiB,OAAQ,CACrB,IAAMrH,EAAW,IAAI6Z,GAAUzxB,KAAK4e,KAAM,EACtC,CACIpd,SAAUxB,KAAKwgB,iBACf4pB,UAAWpqC,KAAKyb,KAAK5N,WAAa7N,KAAKyb,KAAK5N,UAAUu8B,YACvD,GAAM,GAEb,OAAOpqC,KAAKo6B,SAAW,IAAIiB,GAAM,CAACzjB,GAAW5X,KAAKo6B,SAAS3rB,OAAS,CAACmJ,GAClE,GAAI5X,KAAKkf,IAAK,CACjB,IAAMsrB,EAAY,IAAIN,GAAOlqC,KAAKqqC,SAASr8B,GAAUosB,EAAUp6B,KAAKjD,QAASiD,KAAK4N,QAClF,IAAK48B,EAAUtrB,KAAOlf,KAAKF,MACvB,MAAME,KAAKF,MAEf,OAAO0qC,EACJ,OAAIxqC,KAAK4e,OACZ+D,EAAU,IAAI+Q,GAAQ,KAAMvU,EAAgBnf,KAAK4e,KAAKgB,SAC9C2gB,YAAYvyB,GAEbhO,KAAKo6B,SAAW,IAAIiB,GAAM1Y,EAAQ/C,MAAO5f,KAAKo6B,SAAS3rB,OAASkU,EAAQ/C,OAExE,MChLnB,IAAM6qB,GAAa,aAEnBA,GAAWrtC,UAAYD,OAAOgU,OAAO,IAAIxE,EAAQ,CAC7C+9B,mBAAkB,SAAC9U,EAAY5nB,GAC3B,IAAIiJ,EACEmyB,EAAOppC,KACP2qC,EAAc,GAEpB,IAAK38B,EAAQ48B,kBACT,KAAM,CAAEnzB,QAAS,+DACbjW,SAAUxB,KAAKmN,WAAW3L,SAC1B6M,MAAOrO,KAAKoN,YAGpBwoB,EAAaA,EAAW/4B,QAAQ,kBAAkB,SAAUY,EAAG+rB,GAC3D,OAAO4f,EAAKyB,MAAM,IAAI1U,GAAS,IAAIp4B,OAAAyrB,GAAQ4f,EAAKh8B,WAAYg8B,EAAKj8B,YAAY0B,KAAKb,OAGtF,IACI4nB,EAAa,IAAIxd,SAAS,kBAAWwd,EAAU,MACjD,MAAOp2B,GACL,KAAM,CAAEiY,QAAS,gCAAA1Z,OAAgCyB,EAAEiY,QAAkB,WAAA1Z,OAAA63B,EAAc,KAC/Ep0B,SAAUxB,KAAKmN,WAAW3L,SAC1B6M,MAAOrO,KAAKoN,YAGpB,IAAM+zB,EAAYnzB,EAAQ6N,OAAO,GAAGslB,YACpC,IAAK,IAAMzM,KAAKyM,EAERA,EAAU9jC,eAAeq3B,KACzBiW,EAAYjW,EAAE7hB,MAAM,IAAM,CACtBpE,MAAO0yB,EAAUzM,GAAGjmB,MACpBq8B,KAAM,WACF,OAAO9qC,KAAKyO,MAAMI,KAAKb,GAASD,WAMhD,IACIkJ,EAAS2e,EAAWt4B,KAAKqtC,GAC3B,MAAOnrC,GACL,KAAM,CAAEiY,QAAS,wCAAiCjY,EAAEgqB,KAAS,MAAAzrB,OAAAyB,EAAEiY,QAAQ5a,QAAQ,OAAQ,KAAQ,KAC3F2E,SAAUxB,KAAKmN,WAAW3L,SAC1B6M,MAAOrO,KAAKoN,YAEpB,OAAO6J,GAGX4zB,eAAM90B,GACF,OAAItI,MAAMC,QAAQqI,EAAItH,QAAWsH,EAAItH,MAAM5P,OAAS,EACzC,IAAAd,OAAIgY,EAAItH,MAAM6B,KAAI,SAAUO,GAAK,OAAOA,EAAE9C,WAAYQ,KAAK,MAAK,KAEhEwH,EAAIhI,WCnDvB,IAAMg9B,GAAa,SAASC,EAAQ9B,EAAS76B,EAAOoF,GAChDzT,KAAKkpC,QAAUA,EACflpC,KAAK41B,WAAaoV,EAClBhrC,KAAK4N,OAASS,EACdrO,KAAK6N,UAAY4F,GAGrBs3B,GAAW3tC,UAAYD,OAAOgU,OAAO,IAAIs5B,GAAc,CACnD7pC,KAAM,aAENiO,cAAKb,GACD,IAAMiJ,EAASjX,KAAK0qC,mBAAmB1qC,KAAK41B,WAAY5nB,GAClDpN,SAAcqW,EAEpB,MAAa,WAATrW,GAAsBgmC,MAAM3vB,GAEZ,WAATrW,EACA,IAAIi4B,GAAO,IAAI96B,OAAAkZ,OAAWA,EAAQjX,KAAKkpC,QAASlpC,KAAK4N,QACrDH,MAAMC,QAAQuJ,GACd,IAAIwa,GAAUxa,EAAO1I,KAAK,OAE1B,IAAIkjB,GAAUxa,GANd,IAAIwvB,GAAUxvB,MClBjC,IAAMg0B,GAAa,SAASt4B,EAAKyE,GAC7BpX,KAAK2S,IAAMA,EACX3S,KAAKyO,MAAQ2I,GAGjB6zB,GAAW7tC,UAAYD,OAAOgU,OAAO,IAAIxE,EAAQ,CAC7C/L,KAAM,aAEN8N,gBAAOC,GACH3O,KAAKyO,MAAQE,EAAQC,MAAM5O,KAAKyO,QAGpCI,cAAKb,GACD,OAAIhO,KAAKyO,MAAMI,KACJ,IAAIo8B,GAAWjrC,KAAK2S,IAAK3S,KAAKyO,MAAMI,KAAKb,IAE7ChO,MAGXkO,OAAM,SAACF,EAASQ,GACZA,EAAOL,IAAI,GAAApQ,OAAGiC,KAAK2S,IAAM,MACrB3S,KAAKyO,MAAMP,OACXlO,KAAKyO,MAAMP,OAAOF,EAASQ,GAE3BA,EAAOL,IAAInO,KAAKyO,UCxB5B,IAAMy8B,GAAY,SAASn8B,EAAIiD,EAAGX,EAAGb,EAAGmsB,GACpC38B,KAAK+O,GAAKA,EAAGqE,OACbpT,KAAKg7B,OAAShpB,EACdhS,KAAK+6B,OAAS1pB,EACdrR,KAAK4N,OAAS4C,EACdxQ,KAAK28B,OAASA,GAGlBuO,GAAU9tC,UAAYD,OAAOgU,OAAO,IAAIxE,EAAQ,CAC5C/L,KAAM,YAEN8N,gBAAOC,GACH3O,KAAKg7B,OAASrsB,EAAQC,MAAM5O,KAAKg7B,QACjCh7B,KAAK+6B,OAASpsB,EAAQC,MAAM5O,KAAK+6B,SAGrClsB,cAAKb,GACD,IAAMiJ,EAAS,SAAWlI,EAAIC,EAAGC,GAC7B,OAAQF,GACJ,IAAK,MAAO,OAAOC,GAAKC,EACxB,IAAK,KAAO,OAAOD,GAAKC,EACxB,QACI,OAAQtC,EAAK4C,QAAQP,EAAGC,IACpB,KAAM,EACF,MAAc,MAAPF,GAAqB,OAAPA,GAAsB,OAAPA,EACxC,KAAK,EACD,MAAc,MAAPA,GAAqB,OAAPA,GAAsB,OAAPA,GAAsB,OAAPA,EACvD,KAAK,EACD,MAAc,MAAPA,GAAqB,OAAPA,EACzB,QACI,OAAO,IAbZ,CAgBZ/O,KAAK+O,GAAI/O,KAAKg7B,OAAOnsB,KAAKb,GAAUhO,KAAK+6B,OAAOlsB,KAAKb,IAExD,OAAOhO,KAAK28B,QAAU1lB,EAASA,KCjCvC,IAAMk0B,GAAgB,SAAUp8B,EAAIiD,EAAGvG,EAAG2/B,EAAK/5B,EAAGb,GAC9CxQ,KAAK+O,GAAKA,EAAGqE,OACbpT,KAAKg7B,OAAShpB,EACdhS,KAAKqrC,OAAS5/B,EACdzL,KAAKorC,IAAMA,EAAMA,EAAIh4B,OAAS,KAC9BpT,KAAK+6B,OAAS1pB,EACdrR,KAAK4N,OAAS4C,EACdxQ,KAAKsrC,QAAU,IAGnBH,GAAc/tC,UAAYD,OAAOgU,OAAO,IAAIxE,EAAQ,CAChD/L,KAAM,gBAEN8N,gBAAOC,GACH3O,KAAKg7B,OAASrsB,EAAQC,MAAM5O,KAAKg7B,QACjCh7B,KAAKqrC,OAAS18B,EAAQC,MAAM5O,KAAKqrC,QAC7BrrC,KAAK+6B,SACL/6B,KAAK+6B,OAASpsB,EAAQC,MAAM5O,KAAK+6B,UAIzClsB,cAAKb,GAGD,IAAIu9B,EACA1jB,EAHJ7nB,KAAKg7B,OAASh7B,KAAKg7B,OAAOnsB,KAAKb,GAK/B,IAAK,IAAItN,EAAI,GAAImnB,EAAO7Z,EAAQ6N,OAAOnb,MACjB,YAAdmnB,EAAKjnB,QACL2qC,EAAsB1jB,EAAKjI,MAAMmiB,MAAK,SAAU1wB,GAC5C,SAAKA,aAAa0Y,IAAgB1Y,EAAEoX,eAHJ/nB,KA+B5C,OAfKV,KAAKwrC,aACNxrC,KAAKwrC,WAAar3B,EAAKnU,KAAKqrC,SAG5BE,GACAvrC,KAAKqrC,OAASrrC,KAAKwrC,WACnBxrC,KAAKqrC,OAASrrC,KAAKqrC,OAAOx8B,KAAKb,GAC/BhO,KAAKsrC,QAAQ9qC,KAAKR,KAAKqrC,SAEvBrrC,KAAKqrC,OAASrrC,KAAKqrC,OAAOx8B,KAAKb,GAG/BhO,KAAK+6B,SACL/6B,KAAK+6B,OAAS/6B,KAAK+6B,OAAOlsB,KAAKb,IAE5BhO,MAGXkO,OAAM,SAACF,EAASQ,GACZxO,KAAKg7B,OAAO9sB,OAAOF,EAASQ,GAC5BA,EAAOL,IAAI,IAAMnO,KAAK+O,GAAK,KACvB/O,KAAKsrC,QAAQzsC,OAAS,IACtBmB,KAAKqrC,OAASrrC,KAAKsrC,QAAQxqB,SAE/B9gB,KAAKqrC,OAAOn9B,OAAOF,EAASQ,GACxBxO,KAAK+6B,SACLvsB,EAAOL,IAAI,IAAMnO,KAAKorC,IAAM,KAC5BprC,KAAK+6B,OAAO7sB,OAAOF,EAASQ,OCpExC,IAAM8sB,GAAY,SAAS7sB,EAAO2rB,EAAU/rB,EAAOoF,EAAiB1D,GAChE/P,KAAK4N,OAASS,EACdrO,KAAK6N,UAAY4F,EAEjB,IAAMoP,EAAY,IAAK2D,GAAS,GAAI,KAAM,KAAMxmB,KAAK4N,OAAQ5N,KAAK6N,WAAY8vB,uBAE9E39B,KAAKo6B,SAAW,IAAIhP,GAAMgP,GAC1Bp6B,KAAK4f,MAAQ,CAAC,IAAI8T,GAAQ7Q,EAAWpU,IACrCzO,KAAK4f,MAAM,GAAGugB,cAAe,EAC7BngC,KAAKgQ,mBAAmBD,GACxB/P,KAAKiqB,WAAY,EACjBjqB,KAAKqN,UAAUwV,EAAW7iB,MAC1BA,KAAKqN,UAAUrN,KAAKo6B,SAAUp6B,MAC9BA,KAAKqN,UAAUrN,KAAK4f,MAAO5f,OAG/Bs7B,GAAUl+B,UAAYD,OAAOgU,OAAO,IAAI6zB,UACpCpkC,KAAM,aAEHgpC,KAEH17B,OAAM,SAACF,EAASQ,GACZA,EAAOL,IAAI,cAAenO,KAAK6N,UAAW7N,KAAK4N,QAC/C5N,KAAKo6B,SAASlsB,OAAOF,EAASQ,GAC9BxO,KAAKilC,cAAcj3B,EAASQ,EAAQxO,KAAK4f,QAG7C/Q,KAAI,SAACb,GACIA,EAAQ2yB,cACT3yB,EAAQ2yB,YAAc,GACtB3yB,EAAQo3B,UAAY,IAGxB,IAAM5mC,EAAQ,IAAI88B,GAAU,KAAM,GAAIt7B,KAAK4N,OAAQ5N,KAAK6N,UAAW7N,KAAK+P,kBAkBxE,OAjBI/P,KAAK0pB,YACL1pB,KAAK4f,MAAM,GAAG8J,UAAY1pB,KAAK0pB,UAC/BlrB,EAAMkrB,UAAY1pB,KAAK0pB,WAG3BlrB,EAAM47B,SAAWp6B,KAAKo6B,SAASvrB,KAAKb,GAEpCA,EAAQo3B,UAAU5kC,KAAKhC,GACvBwP,EAAQ2yB,YAAYngC,KAAKhC,GAEzBwB,KAAK4f,MAAM,GAAGiR,iBAAmB7iB,EAAQ6N,OAAO,GAAGgV,iBAAiBQ,UACpErjB,EAAQ6N,OAAO+E,QAAQ5gB,KAAK4f,MAAM,IAClCphB,EAAMohB,MAAQ,CAAC5f,KAAK4f,MAAM,GAAG/Q,KAAKb,IAClCA,EAAQ6N,OAAOiF,QAEf9S,EAAQo3B,UAAUjpB,MAEkB,IAA7BnO,EAAQo3B,UAAUvmC,OAAeL,EAAMqrC,QAAQ77B,GAClDxP,EAAMsrC,WAAW97B,OCxD7B,IAAMy9B,GAAoB,SAASh9B,GAC/BzO,KAAKyO,MAAQA,GAGjBg9B,GAAkBruC,UAAYD,OAAOgU,OAAO,IAAIxE,EAAQ,CACpD/L,KAAM,sBCHV,IAAM8qC,GAAW,SAASl+B,GACtBxN,KAAKyO,MAAQjB,GAGjBk+B,GAAStuC,UAAYD,OAAOgU,OAAO,IAAIxE,EAAQ,CAC3C/L,KAAM,WAENsN,OAAM,SAACF,EAASQ,GACZA,EAAOL,IAAI,KACXnO,KAAKyO,MAAMP,OAAOF,EAASQ,IAG/BK,cAAKb,GACD,OAAIA,EAAQwO,WACD,IAAK6qB,GAAU,IAAK,CAAC,IAAIZ,IAAW,GAAIzmC,KAAKyO,QAASI,KAAKb,GAE/D,IAAI09B,GAAS1rC,KAAKyO,MAAMI,KAAKb,OCjB5C,IAAMoU,GAAS,SAASoB,EAAUiB,EAAQpW,EAAOoF,EAAiB1D,GAU9D,OATA/P,KAAKwjB,SAAWA,EAChBxjB,KAAKykB,OAASA,EACdzkB,KAAKokB,UAAYhC,GAAOupB,UACxB3rC,KAAKujB,WAAa,CAACvjB,KAAKokB,WACxBpkB,KAAK4N,OAASS,EACdrO,KAAK6N,UAAY4F,EACjBzT,KAAKgQ,mBAAmBD,GACxB/P,KAAKiqB,WAAY,EAETxF,GACJ,IAAK,MACDzkB,KAAK6lB,aAAc,EACnB7lB,KAAKkmB,YAAa,EAClB,MACJ,QACIlmB,KAAK6lB,aAAc,EACnB7lB,KAAKkmB,YAAa,EAG1BlmB,KAAKqN,UAAUrN,KAAKwjB,SAAUxjB,OAGlCoiB,GAAOhlB,UAAYD,OAAOgU,OAAO,IAAIxE,EAAQ,CACzC/L,KAAM,SAEN8N,gBAAOC,GACH3O,KAAKwjB,SAAW7U,EAAQC,MAAM5O,KAAKwjB,WAGvC3U,cAAKb,GACD,OAAO,IAAIoU,GAAOpiB,KAAKwjB,SAAS3U,KAAKb,GAAUhO,KAAKykB,OAAQzkB,KAAKoN,WAAYpN,KAAKmN,WAAYnN,KAAK+P,mBAKvG2D,eAAM1F,GACF,OAAO,IAAIoU,GAAOpiB,KAAKwjB,SAAUxjB,KAAKykB,OAAQzkB,KAAKoN,WAAYpN,KAAKmN,WAAYnN,KAAK+P,mBAIzF2S,2BAAkBG,GACd,IAAuBrS,EAAGo7B,EAAtBC,EAAe,GAEnB,IAAKr7B,EAAI,EAAGA,EAAIqS,EAAUhkB,OAAQ2R,IAC9Bo7B,EAAmB/oB,EAAUrS,GAAGmV,SAG5BnV,EAAI,GAAKo7B,EAAiB/sC,QAAmD,KAAzC+sC,EAAiB,GAAGr4B,WAAW9E,QACnEm9B,EAAiB,GAAGr4B,WAAW9E,MAAQ,KAE3Co9B,EAAeA,EAAa9tC,OAAO8kB,EAAUrS,GAAGmV,UAGpD3lB,KAAKqkB,cAAgB,CAAC,IAAImC,GAASqlB,IACnC7rC,KAAKqkB,cAAc,GAAGrU,mBAAmBhQ,KAAK+P,qBAItDqS,GAAOupB,QAAU,ECxDjB,IAAMzU,GAAe,SAASzO,EAAUpa,EAAOoF,GAC3CzT,KAAKyoB,SAAWA,EAChBzoB,KAAK4N,OAASS,EACdrO,KAAK6N,UAAY4F,EACjBzT,KAAKiqB,WAAY,GAGrBiN,GAAa95B,UAAYD,OAAOgU,OAAO,IAAIxE,EAAQ,CAC/C/L,KAAM,eAENiO,cAAKb,GACD,IAAI4R,EACA8V,EAAkB,IAAIS,GAASn2B,KAAKyoB,SAAUzoB,KAAKoN,WAAYpN,KAAKmN,YAAY0B,KAAKb,GACnFlO,EAAQ,IAAIwX,EAAU,CAACG,QAAS,oCAAA1Z,OAAoCiC,KAAKyoB,YAE/E,IAAKiN,EAAgB/S,QAAS,CAC1B,GAAI+S,EAAgB9V,MAChBA,EAAQ8V,OAEP,GAAIjoB,MAAMC,QAAQgoB,GACnB9V,EAAQ,IAAI8T,GAAQ,GAAIgC,OAEvB,CAAA,IAAIjoB,MAAMC,QAAQgoB,EAAgBjnB,OAInC,MAAM3O,EAHN8f,EAAQ,IAAI8T,GAAQ,GAAIgC,EAAgBjnB,OAK5CinB,EAAkB,IAAI6D,GAAgB3Z,GAG1C,GAAI8V,EAAgB/S,QAChB,OAAO+S,EAAgB2P,SAASr3B,GAEpC,MAAMlO,KCnCd,IAAMq3B,GAAiB,SAAS2U,EAAU/U,EAAS1oB,EAAOlB,GACtDnN,KAAKyO,MAAQq9B,EACb9rC,KAAK+2B,QAAUA,EACf/2B,KAAK4N,OAASS,EACdrO,KAAK6N,UAAYV,GAGrBgqB,GAAe/5B,UAAYD,OAAOgU,OAAO,IAAIxE,EAAQ,CACjD/L,KAAM,iBAENiO,cAAKb,GACD,IAAIwC,EAAGgZ,EAAM5J,EAAQ5f,KAAKyO,MAAMI,KAAKb,GAErC,IAAKwC,EAAI,EAAGA,EAAIxQ,KAAK+2B,QAAQl4B,OAAQ2R,IAAK,CAYtC,GAXAgZ,EAAOxpB,KAAK+2B,QAAQvmB,GAOhB/C,MAAMC,QAAQkS,KACdA,EAAQ,IAAI8T,GAAQ,CAAC,IAAIlN,IAAa5G,IAG7B,KAAT4J,EACA5J,EAAQA,EAAM6hB,uBAEb,GAAuB,MAAnBjY,EAAK5V,OAAO,IAQjB,GAPuB,MAAnB4V,EAAK5V,OAAO,KACZ4V,EAAO,WAAI,IAAI2M,GAAS3M,EAAKxQ,OAAO,IAAInK,KAAKb,GAASS,QAEtDmR,EAAMuhB,YACNvhB,EAAQA,EAAM6I,SAASe,KAGtB5J,EACD,KAAM,CAAEhf,KAAM,OACV6W,QAAS,YAAY1Z,OAAAyrB,EAAgB,cACrChoB,SAAUxB,KAAKmN,WAAW3L,SAC1B6M,MAAOrO,KAAKoN,gBAGnB,CAWD,GATIoc,EADyB,OAAzBA,EAAKuL,UAAU,EAAG,GACX,WAAI,IAAIoB,GAAS3M,EAAKxQ,OAAO,IAAInK,KAAKb,GAASS,OAG5B,MAAnB+a,EAAK5V,OAAO,GAAa4V,EAAO,IAAIzrB,OAAAyrB,GAE3C5J,EAAMyhB,aACNzhB,EAAQA,EAAMsW,SAAS1M,KAGtB5J,EACD,KAAM,CAAEhf,KAAM,OACV6W,QAAS,oBAAa+R,EAAKxQ,OAAO,GAAe,eACjDxX,SAAUxB,KAAKmN,WAAW3L,SAC1B6M,MAAOrO,KAAKoN,YAIpBwS,EAAQA,EAAMA,EAAM/gB,OAAS,GAG7B+gB,EAAMnR,QACNmR,EAAQA,EAAM/Q,KAAKb,GAASS,OAE5BmR,EAAM+C,UACN/C,EAAQA,EAAM+C,QAAQ9T,KAAKb,IAGnC,OAAO4R,KCpEf,IAAM0Z,GAAa,SAAS9P,EAAMgP,EAAQ5Y,EAAOwV,EAAW+C,EAAUtc,EAAQ9L,GAC1E/P,KAAKwpB,KAAOA,GAAQ,kBACpBxpB,KAAK6iB,UAAY,CAAC,IAAI2D,GAAS,CAAC,IAAIlT,EAAQ,KAAMkW,GAAM,EAAOxpB,KAAK4N,OAAQ5N,KAAK6N,cACjF7N,KAAKw4B,OAASA,EACdx4B,KAAKo1B,UAAYA,EACjBp1B,KAAKm4B,SAAWA,EAChBn4B,KAAK+rC,MAAQvT,EAAO35B,OACpBmB,KAAK4f,MAAQA,EACb5f,KAAKs/B,SAAW,GAChB,IAAM0M,EAAqB,GAC3BhsC,KAAKisC,SAAWzT,EAAO9jB,QAAO,SAAU8xB,EAAOlc,GAC3C,OAAKA,EAAEd,MAASc,EAAEd,OAASc,EAAE7b,MAClB+3B,EAAQ,GAGfwF,EAAmBxrC,KAAK8pB,EAAEd,MACnBgd,KAEZ,GACHxmC,KAAKgsC,mBAAqBA,EAC1BhsC,KAAK6b,OAASA,EACd7b,KAAKgQ,mBAAmBD,GACxB/P,KAAKiqB,WAAY,GAGrBqP,GAAWl8B,UAAYD,OAAOgU,OAAO,IAAIuiB,GAAW,CAChD9yB,KAAM,kBACN6/B,WAAW,EAEX/xB,gBAAOC,GACC3O,KAAKw4B,QAAUx4B,KAAKw4B,OAAO35B,SAC3BmB,KAAKw4B,OAAS7pB,EAAQ4L,WAAWva,KAAKw4B,SAE1Cx4B,KAAK4f,MAAQjR,EAAQ4L,WAAWva,KAAK4f,OACjC5f,KAAKo1B,YACLp1B,KAAKo1B,UAAYzmB,EAAQC,MAAM5O,KAAKo1B,aAI5C8W,oBAAWl+B,EAASm+B,EAAUv6B,EAAMw6B,GAEhC,IAEIC,EACAla,EAEA3hB,EACAqK,EACAzD,EACAoS,EACA8iB,EACAC,EAVE1D,EAAQ,IAAInV,GAAQ,KAAM,MAI1B8E,EAASrZ,EAAgBnf,KAAKw4B,QAOhCgU,EAAa,EAOjB,GALIL,EAAStwB,QAAUswB,EAAStwB,OAAO,IAAMswB,EAAStwB,OAAO,GAAGgV,mBAC5DgY,EAAMhY,iBAAmBsb,EAAStwB,OAAO,GAAGgV,iBAAiBQ,WAEjE8a,EAAW,IAAIpxB,EAASa,KAAKuwB,EAAU,CAACtD,GAAO9qC,OAAOouC,EAAStwB,SAE3DjK,EAIA,IAFA46B,GADA56B,EAAOuN,EAAgBvN,IACL/S,OAEb2R,EAAI,EAAGA,EAAIg8B,EAAYh8B,IAExB,GAAIgZ,GADJ2I,EAAMvgB,EAAKpB,KACQ2hB,EAAI3I,KAAO,CAE1B,IADA8iB,GAAe,EACVzxB,EAAI,EAAGA,EAAI2d,EAAO35B,OAAQgc,IAC3B,IAAKuxB,EAAevxB,IAAM2O,IAASgP,EAAO3d,GAAG2O,KAAM,CAC/C4iB,EAAevxB,GAAKsX,EAAI1jB,MAAMI,KAAKb,GACnC66B,EAAM/G,YAAY,IAAI/X,GAAYP,EAAM2I,EAAI1jB,MAAMI,KAAKb,KACvDs+B,GAAe,EACf,MAGR,GAAIA,EAAc,CACd16B,EAAKjR,OAAO6P,EAAG,GACfA,IACA,SAEA,KAAM,CAAE5P,KAAM,UAAW6W,QAAS,6BAAsBzX,KAAKwpB,KAAQ,KAAAzrB,OAAA6T,EAAKpB,GAAGgZ,KAAI,eAMjG,IADA+iB,EAAW,EACN/7B,EAAI,EAAGA,EAAIgoB,EAAO35B,OAAQ2R,IAC3B,IAAI47B,EAAe57B,GAAnB,CAIA,GAFA2hB,EAAMvgB,GAAQA,EAAK26B,GAEf/iB,EAAOgP,EAAOhoB,GAAGgZ,KACjB,GAAIgP,EAAOhoB,GAAG2nB,SAAU,CAEpB,IADAkU,EAAU,GACLxxB,EAAI0xB,EAAU1xB,EAAI2xB,EAAY3xB,IAC/BwxB,EAAQ7rC,KAAKoR,EAAKiJ,GAAGpM,MAAMI,KAAKb,IAEpC66B,EAAM/G,YAAY,IAAI/X,GAAYP,EAAM,IAAI0B,GAAWmhB,GAASx9B,KAAKb,SAClE,CAEH,GADAoJ,EAAM+a,GAAOA,EAAI1jB,MAIT2I,EADA3J,MAAMC,QAAQ0J,GACR,IAAImiB,GAAgB,IAAI7F,GAAQ,GAAItc,IAGpCA,EAAIvI,KAAKb,OAEhB,CAAA,IAAIwqB,EAAOhoB,GAAG/B,MAIjB,KAAM,CAAE7N,KAAM,UAAW6W,QAAS,iCAAiC1Z,OAAAiC,KAAKwpB,KAAI,MAAAzrB,OAAKyuC,EAAkB,SAAAzuC,OAAAiC,KAAK+rC,MAAK,MAH7G30B,EAAMohB,EAAOhoB,GAAG/B,MAAMI,KAAKs9B,GAC3BtD,EAAMjI,aAKViI,EAAM/G,YAAY,IAAI/X,GAAYP,EAAMpS,IACxCg1B,EAAe57B,GAAK4G,EAI5B,GAAIohB,EAAOhoB,GAAG2nB,UAAYvmB,EACtB,IAAKiJ,EAAI0xB,EAAU1xB,EAAI2xB,EAAY3xB,IAC/BuxB,EAAevxB,GAAKjJ,EAAKiJ,GAAGpM,MAAMI,KAAKb,GAG/Cu+B,IAGJ,OAAO1D,GAGX7J,cAAa,WACT,IAAMpf,EAAS5f,KAAK4f,MAAqB5f,KAAK4f,MAAMtP,KAAI,SAAUe,GAC9D,OAAIA,EAAE2tB,cACK3tB,EAAE2tB,eAAc,GAEhB3tB,KAJarR,KAAK4f,MAQjC,OADe,IAAI0Z,GAAWt5B,KAAKwpB,KAAMxpB,KAAKw4B,OAAQ5Y,EAAO5f,KAAKo1B,UAAWp1B,KAAKm4B,SAAUn4B,KAAK6b,SAIrGhN,cAAKb,GACD,OAAO,IAAIsrB,GAAWt5B,KAAKwpB,KAAMxpB,KAAKw4B,OAAQx4B,KAAK4f,MAAO5f,KAAKo1B,UAAWp1B,KAAKm4B,SAAUn4B,KAAK6b,QAAUsD,EAAgBnR,EAAQ6N,UAGpI4wB,SAAS,SAAAz+B,EAAS4D,EAAMuZ,GACpB,IAGIvL,EACA+C,EAJE+pB,EAAa,GACbC,EAAc3sC,KAAK6b,OAAS7b,KAAK6b,OAAO9d,OAAOiQ,EAAQ6N,QAAU7N,EAAQ6N,OACzEgtB,EAAQ7oC,KAAKksC,WAAWl+B,EAAS,IAAI+M,EAASa,KAAK5N,EAAS2+B,GAAc/6B,EAAM86B,GActF,OAVA7D,EAAM/G,YAAY,IAAI/X,GAAY,aAAc,IAAImB,GAAWwhB,GAAY79B,KAAKb,KAEhF4R,EAAQT,EAAgBnf,KAAK4f,QAE7B+C,EAAU,IAAI+Q,GAAQ,KAAM9T,IACpBsgB,gBAAkBlgC,KAC1B2iB,EAAUA,EAAQ9T,KAAK,IAAIkM,EAASa,KAAK5N,EAAS,CAAChO,KAAM6oC,GAAO9qC,OAAO4uC,KACnExhB,IACAxI,EAAUA,EAAQqc,iBAEfrc,GAGXqe,eAAc,SAACpvB,EAAM5D,GACjB,QAAIhO,KAAKo1B,YAAcp1B,KAAKo1B,UAAUvmB,KAClC,IAAIkM,EAASa,KAAK5N,EACd,CAAChO,KAAKksC,WAAWl+B,EACb,IAAI+M,EAASa,KAAK5N,EAAShO,KAAK6b,OAAS7b,KAAK6b,OAAO9d,OAAOiQ,EAAQ6N,QAAU7N,EAAQ6N,QAASjK,EAAM,KACpG7T,OAAOiC,KAAK6b,QAAU,IACtB9d,OAAOiQ,EAAQ6N,YAMhCklB,UAAS,SAACnvB,EAAM5D,GACZ,IACIiiB,EADE2c,EAAch7B,GAAQA,EAAK/S,QAAW,EAEtCmtC,EAAqBhsC,KAAKgsC,mBAC1Ba,EAAmBj7B,EAAWA,EAAK8C,QAAO,SAAU8xB,EAAOlc,GAC7D,OAAI0hB,EAAmBn6B,QAAQyY,EAAEd,MAAQ,EAC9Bgd,EAAQ,EAERA,IAEZ,GAN6B,EAQhC,GAAKxmC,KAAKm4B,UAQN,GAAI0U,EAAmB7sC,KAAKisC,SAAW,EACnC,OAAO,MATK,CAChB,GAAIY,EAAkB7sC,KAAKisC,SACvB,OAAO,EAEX,GAAIW,EAAa5sC,KAAKw4B,OAAO35B,OACzB,OAAO,EASfoxB,EAAM5jB,KAAK0E,IAAI87B,EAAiB7sC,KAAK+rC,OAErC,IAAK,IAAIrrC,EAAI,EAAGA,EAAIuvB,EAAKvvB,IACrB,IAAKV,KAAKw4B,OAAO93B,GAAG8oB,OAASxpB,KAAKw4B,OAAO93B,GAAGy3B,UACpCvmB,EAAKlR,GAAG+N,MAAMI,KAAKb,GAASD,SAAW/N,KAAKw4B,OAAO93B,GAAG+N,MAAMI,KAAKb,GAASD,QAC1E,OAAO,EAInB,OAAO,KC1Nf,IAAM++B,GAAY,SAASnnB,EAAU/T,EAAMvD,EAAOoF,EAAiB0X,GAC/DnrB,KAAKwjB,SAAW,IAAIgD,GAASb,GAC7B3lB,KAAK4d,UAAYhM,GAAQ,GACzB5R,KAAK4N,OAASS,EACdrO,KAAK6N,UAAY4F,EACjBzT,KAAKmrB,UAAYA,EACjBnrB,KAAKiqB,WAAY,EACjBjqB,KAAKqN,UAAUrN,KAAKwjB,SAAUxjB,OAGlC8sC,GAAU1vC,UAAYD,OAAOgU,OAAO,IAAIxE,EAAQ,CAC5C/L,KAAM,YAEN8N,gBAAOC,GACC3O,KAAKwjB,WACLxjB,KAAKwjB,SAAW7U,EAAQC,MAAM5O,KAAKwjB,WAEnCxjB,KAAK4d,UAAU/e,SACfmB,KAAK4d,UAAYjP,EAAQ4L,WAAWva,KAAK4d,aAIjD/O,cAAKb,GACD,IAAI++B,EACAjZ,EACAkZ,EAEA7a,EACA8a,EAGAz8B,EACA/E,EACAwpB,EACAiY,EACAC,EAEAC,EAEAC,EAKA7G,EACAtG,EACAoN,EApBE17B,EAAO,GAGPgO,EAAQ,GACVvP,GAAQ,EAMNk9B,EAAa,GAEbC,EAAkB,GAYxB,SAASC,EAAa3Z,EAAOkZ,GACzB,IAAI/X,EAAG3K,EAAGojB,EAEV,IAAKzY,EAAI,EAAGA,EAAI,EAAGA,IAAK,CAGpB,IAFAuY,EAAgBvY,IAAK,EACrBiK,GAAYzwB,MAAMwmB,GACb3K,EAAI,EAAGA,EAAI0iB,EAAUnuC,QAAU2uC,EAAgBvY,GAAI3K,KACpDojB,EAAYV,EAAU1iB,IACR0W,iBACVwM,EAAgBvY,GAAKuY,EAAgBvY,IAAMyY,EAAU1M,eAAe,KAAMhzB,IAG9E8lB,EAAMkN,iBACNwM,EAAgBvY,GAAKuY,EAAgBvY,IAAMnB,EAAMkN,eAAepvB,EAAM5D,IAG9E,OAAIw/B,EAAgB,IAAMA,EAAgB,GAClCA,EAAgB,IAAMA,EAAgB,GAC/BA,EAAgB,GA1BnB,EACC,EAFD,GADW,EAqC3B,IA7BAxtC,KAAKwjB,SAAWxjB,KAAKwjB,SAAS3U,KAAKb,GA6B9BwC,EAAI,EAAGA,EAAIxQ,KAAK4d,UAAU/e,OAAQ2R,IAGnC,GADAy8B,GADA9a,EAAMnyB,KAAK4d,UAAUpN,IACN/B,MAAMI,KAAKb,GACtBmkB,EAAI8F,QAAUxqB,MAAMC,QAAQu/B,EAASx+B,OAErC,IADAw+B,EAAWA,EAASx+B,MACfhD,EAAI,EAAGA,EAAIwhC,EAASpuC,OAAQ4M,IAC7BmG,EAAKpR,KAAK,CAACiO,MAAOw+B,EAASxhC,UAG/BmG,EAAKpR,KAAK,CAACgpB,KAAM2I,EAAI3I,KAAM/a,MAAOw+B,IAM1C,IAFAK,EAAoB,SAASzlB,GAAO,OAAOA,EAAKkZ,UAAU,KAAM/yB,IAE3DwC,EAAI,EAAGA,EAAIxC,EAAQ6N,OAAOhd,OAAQ2R,IACnC,IAAKu8B,EAAS/+B,EAAQ6N,OAAOrL,GAAGuxB,KAAK/hC,KAAKwjB,SAAU,KAAM8pB,IAAoBzuC,OAAS,EAAG,CAQtF,IAPAsuC,GAAa,EAOR1hC,EAAI,EAAGA,EAAIshC,EAAOluC,OAAQ4M,IAAK,CAIhC,IAHAqoB,EAAQiZ,EAAOthC,GAAGoc,KAClBmlB,EAAYD,EAAOthC,GAAGgQ,KACtByxB,GAAc,EACTjY,EAAI,EAAGA,EAAIjnB,EAAQ6N,OAAOhd,OAAQo2B,IACnC,KAAOnB,aAAiB6Z,KAAqB7Z,KAAW9lB,EAAQ6N,OAAOoZ,GAAGiL,iBAAmBlyB,EAAQ6N,OAAOoZ,IAAK,CAC7GiY,GAAc,EACd,MAGJA,GAIApZ,EAAMiN,UAAUnvB,EAAM5D,MA3EX,KA4EXo/B,EAAY,CAACtZ,MAAKA,EAAEhJ,MAAO2iB,EAAa3Z,EAAOkZ,KAEjCliB,OACVyiB,EAAW/sC,KAAK4sC,GAGpB/8B,GAAQ,GAOhB,IAHA6uB,GAAYG,QAEZmH,EAAQ,CAAC,EAAG,EAAG,GACV/6B,EAAI,EAAGA,EAAI8hC,EAAW1uC,OAAQ4M,IAC/B+6B,EAAM+G,EAAW9hC,GAAGqf,SAGxB,GAAI0b,EA5FI,GA4Fa,EACjB6G,EA3FK,OA8FL,GADAA,EA9FI,EA+FC7G,EA/FD,GA+FkBA,EA9FjB,GA8FoC,EACrC,KAAM,CAAE5lC,KAAM,UACV6W,QAAS,gEAA4DzX,KAAK4tC,OAAOh8B,GAAS,KAC1FvD,MAAOrO,KAAKoN,WAAY5L,SAAUxB,KAAKmN,WAAW3L,UAI9D,IAAKiK,EAAI,EAAGA,EAAI8hC,EAAW1uC,OAAQ4M,IAE/B,GAzGI,KAwGJ2hC,EAAYG,EAAW9hC,GAAGqf,QACMsiB,IAAcC,EAC1C,KACIvZ,EAAQyZ,EAAW9hC,GAAGqoB,iBACC6Z,KACnBzN,EAAkBpM,EAAMoM,iBAAmBpM,GAC3CA,EAAQ,IAAI6Z,GAAgB,GAAI,GAAI7Z,EAAMlU,MAAO,MAAM,EAAO,KAAMsgB,EAAgBnwB,mBAC9EmwB,gBAAkBA,GAE5B,IAAM2N,EAAW/Z,EAAM2Y,SAASz+B,EAAS4D,EAAM5R,KAAKmrB,WAAWvL,MAC/D5f,KAAK8tC,4BAA4BD,GACjCpgC,MAAMrQ,UAAUoD,KAAKud,MAAM6B,EAAOiuB,GACpC,MAAOruC,GACL,KAAM,CAAEiY,QAASjY,EAAEiY,QAASpJ,MAAOrO,KAAKoN,WAAY5L,SAAUxB,KAAKmN,WAAW3L,SAAUkW,MAAOlY,EAAEkY,OAK7G,GAAIrH,EACA,OAAOuP,EAInB,MAAIutB,EACM,CAAEvsC,KAAS,UACb6W,QAAS,gDAA0CzX,KAAK4tC,OAAOh8B,GAAS,KACxEvD,MAASrO,KAAKoN,WAAY5L,SAAUxB,KAAKmN,WAAW3L,UAElD,CAAEZ,KAAS,OACb6W,QAAS,GAAG1Z,OAAAiC,KAAKwjB,SAASzV,QAAQqF,OAAqB,iBACvD/E,MAASrO,KAAKoN,WAAY5L,SAAUxB,KAAKmN,WAAW3L,WAIhEssC,qCAA4BC,GACxB,IAAIv9B,EACJ,GAAIxQ,KAAKyP,mBACL,IAAKe,EAAI,EAAGA,EAAIu9B,EAAYlvC,OAAQ2R,IACzBu9B,EAAYv9B,GACdd,sBAKjBk+B,gBAAOh8B,GACH,MAAO,GAAA7T,OAAGiC,KAAKwjB,SAASzV,QAAQqF,mBAAUxB,EAAOA,EAAKtB,KAAI,SAAUtB,GAChE,IAAIi+B,EAAW,GASf,OARIj+B,EAAEwa,OACFyjB,GAAY,GAAGlvC,OAAAiR,EAAEwa,WAEjBxa,EAAEP,MAAMV,MACRk/B,GAAYj+B,EAAEP,MAAMV,QAEpBk/B,GAAY,MAETA,KACR1+B,KAAK,MAAQ,GAAE,QCrKX,IAAAuL,GAAA,CACXnN,KAAIA,EAAEsD,MAAKA,EAAE+0B,OAAMA,GAAEzL,gBAAeA,GAAE8N,UAASA,GAC/CZ,UAASA,GAAEnB,KAAIA,GAAErH,QAAOA,GAAE9H,SAAQA,GAAEC,SAAQA,GAC5C1C,QAAOA,GAAEpgB,QAAOA,EAAEiT,UAASA,GAAErT,WAAUA,EAAEsT,SAAQA,GACjDqS,OAAMA,GAAE3N,WAAUA,GAAEnB,YAAWA,GAAEC,KAAIA,GAAEyf,IAAGA,GAAES,OAAMA,GAClDtgB,QAAOA,GAAE6H,UAASA,GAAErG,MAAKA,GAAE2f,WAAUA,GAAEE,WAAUA,GACjDC,UAASA,GAAEp4B,MAAKA,EAAEuoB,MAAKA,GAAEC,UAASA,GAAE6P,cAAaA,GACjDM,kBAAiBA,GAAEC,SAAQA,GAAEtpB,OAAMA,GAAE8U,aAAYA,GACjDC,eAAcA,GACdrD,MAAO,CACH9J,KAAM8iB,GACNxT,WAAYqU,KCpDpBK,GAAA,WAAA,SAAAA,KAyIA,OAxIIA,EAAO5wC,UAAA2iB,QAAP,SAAQve,GACJ,IAAIqZ,EAAIrZ,EAASysC,YAAY,KAQ7B,OAPIpzB,EAAI,IACJrZ,EAAWA,EAASqR,MAAM,EAAGgI,KAEjCA,EAAIrZ,EAASysC,YAAY,MACjB,IACJpzB,EAAIrZ,EAASysC,YAAY,OAEzBpzB,EAAI,EACG,GAEJrZ,EAASqR,MAAM,EAAGgI,EAAI,IAGjCmzB,EAAA5wC,UAAA8wC,mBAAA,SAAmBzyB,EAAM0yB,GACrB,MAAO,wBAAwBzyB,KAAKD,GAAQA,EAAOA,EAAO0yB,GAG9DH,EAAsB5wC,UAAAuiB,uBAAtB,SAAuBlE,GACnB,OAAOzb,KAAKkuC,mBAAmBzyB,EAAM,UAGzCuyB,EAAA5wC,UAAAgxC,aAAA,WACI,OAAO,GAGXJ,EAAA5wC,UAAAixC,wBAAA,WACI,OAAO,GAGXL,EAAc5wC,UAAAkxC,eAAd,SAAe9sC,GACX,MAAO,yBAA2Bka,KAAKla,IAI3CwsC,EAAA5wC,UAAAmR,KAAA,SAAKggC,EAAUC,GACX,OAAKD,EAGEA,EAAWC,EAFPA,GAKfR,EAAA5wC,UAAAqxC,SAAA,SAASxY,EAAKyY,GAGV,IAGIl+B,EACAM,EACA69B,EACAC,EANEC,EAAW7uC,KAAK8uC,gBAAgB7Y,GAEhC8Y,EAAe/uC,KAAK8uC,gBAAgBJ,GAKtCM,EAAO,GACX,GAAIH,EAASI,WAAaF,EAAaE,SACnC,MAAO,GAGX,IADAn+B,EAAMzE,KAAKyE,IAAIi+B,EAAaG,YAAYrwC,OAAQgwC,EAASK,YAAYrwC,QAChE2R,EAAI,EAAGA,EAAIM,GACRi+B,EAAaG,YAAY1+B,KAAOq+B,EAASK,YAAY1+B,GADxCA,KAKrB,IAFAo+B,EAAqBG,EAAaG,YAAYr8B,MAAMrC,GACpDm+B,EAAiBE,EAASK,YAAYr8B,MAAMrC,GACvCA,EAAI,EAAGA,EAAIo+B,EAAmB/vC,OAAS,EAAG2R,IAC3Cw+B,GAAQ,MAEZ,IAAKx+B,EAAI,EAAGA,EAAIm+B,EAAe9vC,OAAS,EAAG2R,IACvCw+B,GAAQ,GAAGjxC,OAAA4wC,EAAen+B,QAE9B,OAAOw+B,GAUXhB,EAAA5wC,UAAA0xC,gBAAA,SAAgB7Y,EAAKyY,GAOjB,IAMIl+B,EACAu+B,EAPEI,EAAgB,yFAEhBN,EAAW5Y,EAAI5lB,MAAM8+B,GACrBjX,EAAW,GACbkX,EAAiB,GACfF,EAAc,GAIpB,IAAKL,EACD,MAAM,IAAIpvC,MAAM,wCAAiCw2B,EAAG,MAIxD,GAAIyY,KAAaG,EAAS,IAAMA,EAAS,IAAK,CAE1C,KADAE,EAAeL,EAAQr+B,MAAM8+B,IAEzB,MAAM,IAAI1vC,MAAM,sCAA+BivC,EAAO,MAE1DG,EAAS,GAAKA,EAAS,IAAME,EAAa,IAAM,GAC3CF,EAAS,KACVA,EAAS,GAAKE,EAAa,GAAKF,EAAS,IAIjD,GAAIA,EAAS,GAIT,IAHAO,EAAiBP,EAAS,GAAGhyC,QAAQ,MAAO,KAAK8T,MAAM,KAGlDH,EAAI,EAAGA,EAAI4+B,EAAevwC,OAAQ2R,IAET,OAAtB4+B,EAAe5+B,GACf0+B,EAAY/yB,MAEe,MAAtBizB,EAAe5+B,IACpB0+B,EAAY1uC,KAAK4uC,EAAe5+B,IAa5C,OAPA0nB,EAAS+W,SAAWJ,EAAS,GAC7B3W,EAASgX,YAAcA,EACvBhX,EAASmX,SAAWR,EAAS,IAAM,IAAMO,EAAe7gC,KAAK,KAC7D2pB,EAASzc,MAAQozB,EAAS,IAAM,IAAMK,EAAY3gC,KAAK,KACvD2pB,EAAS12B,SAAWqtC,EAAS,GAC7B3W,EAASoX,QAAUpX,EAASzc,MAAQozB,EAAS,IAAM,IACnD3W,EAASjC,IAAMiC,EAASoX,SAAWT,EAAS,IAAM,IAC3C3W,GAEd8V,KCtIDuB,GAAA,WACI,SAAAA,IAEIvvC,KAAKwvC,QAAU,WACX,OAAO,MA8KnB,OA1KID,EAAUnyC,UAAAqyC,WAAV,SAAW73B,EAAU5J,EAASmP,EAASuyB,EAAeviC,GAElD,IAAYo9B,EAAUoF,EAAWC,EAAa9tC,EAAeN,EAAUyV,EAEvEnV,EAAgBkM,EAAQlM,cAEpBqL,IAEI3L,EADoB,iBAAb2L,EACIA,EAGAA,EAAS3L,UAG5B,IAAMquC,GAAY,IAAK7vC,KAAKgpC,KAAK8G,aAAehB,gBAAgBttC,GAAUA,SAE1E,GAAIA,IACAmuC,EAAY7tC,EAAcoL,IAAI1L,IAEf,CAEX,GADAyV,EAASjX,KAAK+vC,cAAcJ,EAAWnuC,EAAUquC,EAAWH,GAExD,OAAOz4B,EAEX,IACQ04B,EAAUK,KACVL,EAAUK,IAAI1yC,KAAK0C,KAAKgO,QAAS2hC,GAGzC,MAAOnwC,GAEH,OADAA,EAAEiY,QAAUjY,EAAEiY,SAAW,4BAClB,IAAIH,EAAU9X,EAAG2d,EAAS3b,GAErC,OAAOmuC,EAGfC,EAAc,CACVK,QAAS,GACTnuC,cAAaA,EACbqL,SAAQA,GAEZo9B,EAAW1Z,GAAiBrY,SAM5B,IACa,IAAIJ,SAAS,SAAU,UAAW,iBAAkB,YAAa,OAAQ,OAAQ,WAAYR,EACtGs4B,CAAON,EAAa5vC,KAAKwvC,QAAQhuC,IANd,SAASuU,GAC5B45B,EAAY55B,IAKgDw0B,EAAUvqC,KAAKgpC,KAAKlvB,KAAM9Z,KAAKgpC,KAAM77B,GAErG,MAAO3N,GACH,OAAO,IAAI8X,EAAU9X,EAAG2d,EAAS3b,GAQrC,GALKmuC,IACDA,EAAYC,EAAYK,UAE5BN,EAAY3vC,KAAKmwC,eAAeR,EAAWnuC,EAAUquC,cAE5Bv4B,EACrB,OAAOq4B,EAGX,IAAIA,EAoCA,OAAO,IAAIr4B,EAAU,CAAEG,QAAS,sBAAwB0F,EAAS3b,GA/BjE,GAJAmuC,EAAUxyB,QAAUA,EACpBwyB,EAAUnuC,SAAWA,IAGhBmuC,EAAUS,YAAcpwC,KAAKqwC,eAAe,QAASV,EAAUS,YAAc,KAC9En5B,EAASjX,KAAK+vC,cAAcJ,EAAWnuC,EAAUquC,EAAWH,IAGxD,OAAOz4B,EAUf,GALAnV,EAAcwuC,UAAUX,EAAWxiC,EAAS3L,SAAU+oC,GACtDoF,EAAUxuC,UAAYopC,EAASnZ,oBAG/Bna,EAASjX,KAAK+vC,cAAcJ,EAAWnuC,EAAUquC,EAAWH,GAExD,OAAOz4B,EAIX,IACQ04B,EAAUK,KACVL,EAAUK,IAAI1yC,KAAK0C,KAAKgO,QAAS2hC,GAGzC,MAAOnwC,GAEH,OADAA,EAAEiY,QAAUjY,EAAEiY,SAAW,4BAClB,IAAIH,EAAU9X,EAAG2d,EAAS3b,GAQzC,OAAOmuC,GAIXJ,EAAanyC,UAAA2yC,cAAb,SAAc5c,EAAQ3xB,EAAUgoB,EAAMzsB,GAClC,GAAIA,IAAYo2B,EAAOod,WACnB,OAAO,IAAIj5B,EAAU,CACjBG,QAAS,6CAA6C1Z,OAAAyrB,EAAoC,oCAGlG,IACI2J,EAAOod,YAAcpd,EAAOod,WAAWxzC,GAE3C,MAAOyC,GACH,OAAO,IAAI8X,EAAU9X,KAI7B+vC,EAAAnyC,UAAA+yC,eAAA,SAAehd,EAAQ3xB,EAAUgoB,GAC7B,OAAI2J,GAGsB,mBAAXA,IACPA,EAAS,IAAIA,GAGbA,EAAOid,YACHpwC,KAAKqwC,eAAeld,EAAOid,WAAYpwC,KAAKgpC,KAAKwH,SAAW,EACrD,IAAIl5B,EAAU,CACjBG,QAAS,UAAA1Z,OAAUyrB,EAAI,sBAAAzrB,OAAqBiC,KAAKywC,gBAAgBtd,EAAOid,eAI7Ejd,GAEJ,MAGXoc,EAAAnyC,UAAAizC,eAAA,SAAeK,EAAUC,GACG,iBAAbD,IACPA,EAAWA,EAASrgC,MAAM,6BACjByQ,QAEb,IAAK,IAAIpgB,EAAI,EAAGA,EAAIgwC,EAAS7xC,OAAQ6B,IACjC,GAAIgwC,EAAShwC,KAAOiwC,EAASjwC,GACzB,OAAO+P,SAASigC,EAAShwC,IAAM+P,SAASkgC,EAASjwC,KAAO,EAAI,EAGpE,OAAO,GAGX6uC,EAAenyC,UAAAqzC,gBAAf,SAAgBD,GAEZ,IADA,IAAII,EAAgB,GACX/vC,EAAI,EAAGA,EAAI2vC,EAAQ3xC,OAAQgC,IAChC+vC,IAAkBA,EAAgB,IAAM,IAAMJ,EAAQ3vC,GAE1D,OAAO+vC,GAGXrB,EAAUnyC,UAAAyzC,WAAV,SAAWC,GACP,IAAK,IAAIlmB,EAAI,EAAGA,EAAIkmB,EAAQjyC,OAAQ+rB,IAAK,CACrC,IAAMuI,EAAS2d,EAAQlmB,GACnBuI,EAAO0d,YACP1d,EAAO0d,eAItBtB,KC1KD,SAASwB,GAAG/iC,EAASonB,EAAW4b,EAAWC,GACvC,OAAO7b,EAAUvmB,KAAKb,GAAWgjC,EAAUniC,KAAKb,GACzCijC,EAAaA,EAAWpiC,KAAKb,GAAW,IAAIyjB,GAIvD,SAASyf,GAAUljC,EAASya,GACxB,IAEI,OADAA,EAAS5Z,KAAKb,GACPiwB,GAAQC,KACjB,MAAO1+B,GACL,OAAOy+B,GAAQE,OAPvB4S,GAAGhJ,UAAW,EAWdmJ,GAAUnJ,UAAW,EAErB,ICtBIoJ,GDsBJC,GAAe,CAAEF,UAASA,GAAE/b,QAzB5B,SAAiBC,GACb,OAAOA,EAAY6I,GAAQC,KAAOD,GAAQE,OAwBT9I,GAAM0b,ICpB3C,SAASngC,GAAMwG,GACX,OAAO/K,KAAK0E,IAAI,EAAG1E,KAAKyE,IAAI,EAAGsG,IAEnC,SAASi6B,GAAKC,EAAWC,GACrB,IAAM9/B,EAAQ0/B,GAAeE,KAAKE,EAAIx/B,EAAGw/B,EAAItlC,EAAGslC,EAAIv/B,EAAGu/B,EAAIviC,GAC3D,GAAIyC,EAOA,OANI6/B,EAAU7iC,OACV,aAAaiN,KAAK41B,EAAU7iC,OAC5BgD,EAAMhD,MAAQ6iC,EAAU7iC,MAExBgD,EAAMhD,MAAQ,MAEXgD,EAGf,SAASK,GAAML,GACX,GAAIA,EAAMK,MACN,OAAOL,EAAMK,QAEb,MAAM,IAAIrS,MAAM,2CAIxB,SAAS6S,GAAMb,GACX,GAAIA,EAAMa,MACN,OAAOb,EAAMa,QAEb,MAAM,IAAI7S,MAAM,2CAIxB,SAAS+xC,GAAO97B,GACZ,GAAIA,aAAa+wB,GACb,OAAOE,WAAWjxB,EAAEgxB,KAAKb,GAAG,KAAOnwB,EAAEjH,MAAQ,IAAMiH,EAAEjH,OAClD,GAAiB,iBAANiH,EACd,OAAOA,EAEP,KAAM,CACF9U,KAAM,WACN6W,QAAS,8CAoZrB,IAAAhG,GAzYA0/B,GAAiB,CACbjhC,IAAK,SAAUmB,EAAGC,EAAGrC,GACjB,IAAID,EAAI,EAKR,GAAIqC,aAAa6Z,GAAY,CACzB,IAAM9T,EAAM/F,EAAE5C,MAQd,GAPA4C,EAAI+F,EAAI,GACR9F,EAAI8F,EAAI,IACRnI,EAAImI,EAAI,cAKSiwB,GAAW,CACxB,IAAMt4B,EAAKE,EACXA,EAAIF,EAAGu4B,SAAS,GAChBt4B,EAAID,EAAGu4B,SAAS,IAGxB,IAAM71B,EAAQ0/B,GAAeM,KAAKpgC,EAAGC,EAAGrC,EAAGD,GAC3C,GAAIyC,EAEA,OADAA,EAAMhD,MAAQ,MACPgD,GAGfggC,KAAM,SAAUpgC,EAAGC,EAAGrC,EAAGD,GACrB,IACI,GAAIqC,aAAapB,EAMb,OAJIjB,EADAsC,EACIkgC,GAAOlgC,GAEPD,EAAEX,MAEH,IAAIT,EAAMoB,EAAEnB,IAAKlB,EAAG,QAE/B,IAAMkB,EAAM,CAACmB,EAAGC,EAAGrC,GAAGqB,KAAI,SAAAC,GAAK,OA7CxBmhC,EA6CkC,KA7CrCh8B,EA6CkCnF,aA5C7Bk2B,IAAa/wB,EAAEgxB,KAAKb,GAAG,KAC7Bc,WAAWjxB,EAAEjH,MAAQijC,EAAO,KAE5BF,GAAO97B,GAJtB,IAAgBA,EAAGg8B,KA+CP,OADA1iC,EAAIwiC,GAAOxiC,GACJ,IAAIiB,EAAMC,EAAKlB,EAAG,QAE7B,MAAOxP,MAEX+xC,IAAK,SAAUx/B,EAAG9F,EAAG+F,GACjB,IAAIhD,EAAI,EACR,GAAI+C,aAAamZ,GAAY,CACzB,IAAM9T,EAAMrF,EAAEtD,MAKd,GAJAsD,EAAIqF,EAAI,GACRnL,EAAImL,EAAI,IACRpF,EAAIoF,EAAI,cAESiwB,GAAW,CACxB,IAAMt4B,EAAKiD,EACXA,EAAIjD,EAAGu4B,SAAS,GAChBt4B,EAAID,EAAGu4B,SAAS,IAGxB,IAAM71B,EAAQ0/B,GAAeE,KAAKt/B,EAAG9F,EAAG+F,EAAGhD,GAC3C,GAAIyC,EAEA,OADAA,EAAMhD,MAAQ,MACPgD,GAGf4/B,KAAM,SAAUt/B,EAAG9F,EAAG+F,EAAGhD,GACrB,IAAI2iC,EACAC,EAEJ,SAASC,EAAI9/B,GAET,OAAQ,GADRA,EAAIA,EAAI,EAAIA,EAAI,EAAKA,EAAI,EAAIA,EAAI,EAAIA,GACzB,EACD4/B,GAAMC,EAAKD,GAAM5/B,EAAI,EAEnB,EAAJA,EAAQ,EACN6/B,EAEE,EAAJ7/B,EAAQ,EACN4/B,GAAMC,EAAKD,IAAO,EAAI,EAAI5/B,GAAK,EAG/B4/B,EAIf,IACI,GAAI5/B,aAAa9B,EAMb,OAJIjB,EADA/C,EACIulC,GAAOvlC,GAEP8F,EAAErB,MAEH,IAAIT,EAAM8B,EAAE7B,IAAKlB,EAAG,QAG/B+C,EAAKy/B,GAAOz/B,GAAK,IAAO,IACxB9F,EAAI2E,GAAM4gC,GAAOvlC,IAAI+F,EAAIpB,GAAM4gC,GAAOx/B,IAAIhD,EAAI4B,GAAM4gC,GAAOxiC,IAG3D2iC,EAAS,EAAJ3/B,GADL4/B,EAAK5/B,GAAK,GAAMA,GAAK/F,EAAI,GAAK+F,EAAI/F,EAAI+F,EAAI/F,GAG1C,IAAMiE,EAAM,CACS,IAAjB2hC,EAAI9/B,EAAI,EAAI,GACG,IAAf8/B,EAAI9/B,GACa,IAAjB8/B,EAAI9/B,EAAI,EAAI,IAGhB,OADA/C,EAAIwiC,GAAOxiC,GACJ,IAAIiB,EAAMC,EAAKlB,EAAG,QAE7B,MAAOxP,MAGXsyC,IAAK,SAAS//B,EAAG9F,EAAG4E,GAChB,OAAOsgC,GAAeY,KAAKhgC,EAAG9F,EAAG4E,EAAG,IAGxCkhC,KAAM,SAAShgC,EAAG9F,EAAG4E,EAAG7B,GAIpB,IAAIwB,EACAykB,EAJJljB,EAAMy/B,GAAOz/B,GAAK,IAAO,IAAO,IAChC9F,EAAIulC,GAAOvlC,GAAG4E,EAAI2gC,GAAO3gC,GAAG7B,EAAIwiC,GAAOxiC,GAOvC,IAAMgjC,EAAK,CAACnhC,EACRA,GAAK,EAAI5E,GACT4E,GAAK,GAJTokB,EAAKljB,EAAI,IADTvB,EAAInE,KAAK4lC,MAAOlgC,EAAI,GAAM,KAKT9F,GACb4E,GAAK,GAAK,EAAIokB,GAAKhpB,IACjBimC,EAAO,CAAC,CAAC,EAAG,EAAG,GACjB,CAAC,EAAG,EAAG,GACP,CAAC,EAAG,EAAG,GACP,CAAC,EAAG,EAAG,GACP,CAAC,EAAG,EAAG,GACP,CAAC,EAAG,EAAG,IAEX,OAAOf,GAAeM,KAAsB,IAAjBO,EAAGE,EAAK1hC,GAAG,IACjB,IAAjBwhC,EAAGE,EAAK1hC,GAAG,IACM,IAAjBwhC,EAAGE,EAAK1hC,GAAG,IACXxB,IAGR6iC,IAAK,SAAUpgC,GACX,OAAO,IAAIg1B,GAAU30B,GAAML,GAAOM,IAEtCogC,WAAY,SAAU1gC,GAClB,OAAO,IAAIg1B,GAA2B,IAAjB30B,GAAML,GAAOxF,EAAS,MAE/CmmC,UAAW,SAAU3gC,GACjB,OAAO,IAAIg1B,GAA2B,IAAjB30B,GAAML,GAAOO,EAAS,MAE/CqgC,OAAQ,SAAS5gC,GACb,OAAO,IAAIg1B,GAAUn0B,GAAMb,GAAOM,IAEtCugC,cAAe,SAAU7gC,GACrB,OAAO,IAAIg1B,GAA2B,IAAjBn0B,GAAMb,GAAOxF,EAAS,MAE/CsmC,SAAU,SAAU9gC,GAChB,OAAO,IAAIg1B,GAA2B,IAAjBn0B,GAAMb,GAAOZ,EAAS,MAE/CjH,IAAK,SAAU6H,GACX,OAAO,IAAIg1B,GAAUh1B,EAAMvB,IAAI,KAEnCvK,MAAO,SAAU8L,GACb,OAAO,IAAIg1B,GAAUh1B,EAAMvB,IAAI,KAEnCrN,KAAM,SAAU4O,GACZ,OAAO,IAAIg1B,GAAUh1B,EAAMvB,IAAI,KAEnCQ,MAAO,SAAUe,GACb,OAAO,IAAIg1B,GAAU30B,GAAML,GAAOzC,IAEtCoC,KAAM,SAAUK,GACZ,OAAO,IAAIg1B,GAAUh1B,EAAML,OAASK,EAAMf,MAAQ,IAAK,MAE3D8hC,UAAW,SAAU/gC,GACjB,IAAM+gC,EACD,MAAS/gC,EAAMvB,IAAI,GAAK,IACpB,MAASuB,EAAMvB,IAAI,GAAK,IACxB,MAASuB,EAAMvB,IAAI,GAAK,IAEjC,OAAO,IAAIu2B,GAAU+L,EAAY/gC,EAAMf,MAAQ,IAAK,MAExD+hC,SAAU,SAAUhhC,EAAOihC,EAAQC,GAG/B,IAAKlhC,EAAMvB,IACP,OAAO,KAEX,IAAMqhC,EAAMz/B,GAAML,GASlB,YAPsB,IAAXkhC,GAA2C,aAAjBA,EAAOlkC,MACxC8iC,EAAItlC,GAAMslC,EAAItlC,EAAIymC,EAAOjkC,MAAQ,IAGjC8iC,EAAItlC,GAAKymC,EAAOjkC,MAAQ,IAE5B8iC,EAAItlC,EAAI2E,GAAM2gC,EAAItlC,GACXolC,GAAK5/B,EAAO8/B,IAEvBqB,WAAY,SAAUnhC,EAAOihC,EAAQC,GACjC,IAAMpB,EAAMz/B,GAAML,GASlB,YAPsB,IAAXkhC,GAA2C,aAAjBA,EAAOlkC,MACxC8iC,EAAItlC,GAAMslC,EAAItlC,EAAIymC,EAAOjkC,MAAQ,IAGjC8iC,EAAItlC,GAAKymC,EAAOjkC,MAAQ,IAE5B8iC,EAAItlC,EAAI2E,GAAM2gC,EAAItlC,GACXolC,GAAK5/B,EAAO8/B,IAEvBsB,QAAS,SAAUphC,EAAOihC,EAAQC,GAC9B,IAAMpB,EAAMz/B,GAAML,GASlB,YAPsB,IAAXkhC,GAA2C,aAAjBA,EAAOlkC,MACxC8iC,EAAIv/B,GAAMu/B,EAAIv/B,EAAI0gC,EAAOjkC,MAAQ,IAGjC8iC,EAAIv/B,GAAK0gC,EAAOjkC,MAAQ,IAE5B8iC,EAAIv/B,EAAIpB,GAAM2gC,EAAIv/B,GACXq/B,GAAK5/B,EAAO8/B,IAEvBuB,OAAQ,SAAUrhC,EAAOihC,EAAQC,GAC7B,IAAMpB,EAAMz/B,GAAML,GASlB,YAPsB,IAAXkhC,GAA2C,aAAjBA,EAAOlkC,MACxC8iC,EAAIv/B,GAAMu/B,EAAIv/B,EAAI0gC,EAAOjkC,MAAQ,IAGjC8iC,EAAIv/B,GAAK0gC,EAAOjkC,MAAQ,IAE5B8iC,EAAIv/B,EAAIpB,GAAM2gC,EAAIv/B,GACXq/B,GAAK5/B,EAAO8/B,IAEvBwB,OAAQ,SAAUthC,EAAOihC,EAAQC,GAC7B,IAAMpB,EAAMz/B,GAAML,GASlB,YAPsB,IAAXkhC,GAA2C,aAAjBA,EAAOlkC,MACxC8iC,EAAIviC,GAAMuiC,EAAIviC,EAAI0jC,EAAOjkC,MAAQ,IAGjC8iC,EAAIviC,GAAK0jC,EAAOjkC,MAAQ,IAE5B8iC,EAAIviC,EAAI4B,GAAM2gC,EAAIviC,GACXqiC,GAAK5/B,EAAO8/B,IAEvByB,QAAS,SAAUvhC,EAAOihC,EAAQC,GAC9B,IAAMpB,EAAMz/B,GAAML,GASlB,YAPsB,IAAXkhC,GAA2C,aAAjBA,EAAOlkC,MACxC8iC,EAAIviC,GAAMuiC,EAAIviC,EAAI0jC,EAAOjkC,MAAQ,IAGjC8iC,EAAIviC,GAAK0jC,EAAOjkC,MAAQ,IAE5B8iC,EAAIviC,EAAI4B,GAAM2gC,EAAIviC,GACXqiC,GAAK5/B,EAAO8/B,IAEvB0B,KAAM,SAAUxhC,EAAOihC,GACnB,IAAMnB,EAAMz/B,GAAML,GAIlB,OAFA8/B,EAAIviC,EAAI0jC,EAAOjkC,MAAQ,IACvB8iC,EAAIviC,EAAI4B,GAAM2gC,EAAIviC,GACXqiC,GAAK5/B,EAAO8/B,IAEvB2B,KAAM,SAAUzhC,EAAOihC,GACnB,IAAMnB,EAAMz/B,GAAML,GACZogC,GAAON,EAAIx/B,EAAI2gC,EAAOjkC,OAAS,IAIrC,OAFA8iC,EAAIx/B,EAAI8/B,EAAM,EAAI,IAAMA,EAAMA,EAEvBR,GAAK5/B,EAAO8/B,IAMvB4B,IAAK,SAAUC,EAAQC,EAAQC,GACtBA,IACDA,EAAS,IAAI7M,GAAU,KAE3B,IAAMnc,EAAIgpB,EAAO7kC,MAAQ,IACnB8kC,EAAQ,EAAJjpB,EAAQ,EACZtb,EAAI8C,GAAMshC,GAAQpkC,EAAI8C,GAAMuhC,GAAQrkC,EAEpCwkC,IAAQD,EAAIvkC,IAAM,EAAKukC,GAAKA,EAAIvkC,IAAM,EAAIukC,EAAIvkC,IAAM,GAAK,EACzDykC,EAAK,EAAID,EAETtjC,EAAM,CAACkjC,EAAOljC,IAAI,GAAKsjC,EAAKH,EAAOnjC,IAAI,GAAKujC,EAC9CL,EAAOljC,IAAI,GAAKsjC,EAAKH,EAAOnjC,IAAI,GAAKujC,EACrCL,EAAOljC,IAAI,GAAKsjC,EAAKH,EAAOnjC,IAAI,GAAKujC,GAEnC/iC,EAAQ0iC,EAAO1iC,MAAQ4Z,EAAI+oB,EAAO3iC,OAAS,EAAI4Z,GAErD,OAAO,IAAIra,EAAMC,EAAKQ,IAE1BgjC,UAAW,SAAUjiC,GACjB,OAAO0/B,GAAeyB,WAAWnhC,EAAO,IAAIg1B,GAAU,OAE1DkN,SAAU,SAAUliC,EAAOmiC,EAAMC,EAAOC,GAGpC,IAAKriC,EAAMvB,IACP,OAAO,KASX,QAPqB,IAAV2jC,IACPA,EAAQ1C,GAAeM,KAAK,IAAK,IAAK,IAAK,SAE3B,IAATmC,IACPA,EAAOzC,GAAeM,KAAK,EAAG,EAAG,EAAG,IAGpCmC,EAAKxiC,OAASyiC,EAAMziC,OAAQ,CAC5B,IAAMo2B,EAAIqM,EACVA,EAAQD,EACRA,EAAOpM,EAOX,OAJIsM,OADqB,IAAdA,EACK,IAEAtC,GAAOsC,GAEnBriC,EAAML,OAAS0iC,EACRD,EAEAD,GAyCfG,KAAM,SAAUtiC,GACZ,OAAO,IAAIggB,GAAUhgB,EAAMc,WAE/Bd,MAAO,SAASlB,GACZ,GAAKA,aAAasoB,IACb,uDAAuDnd,KAAKnL,EAAE9B,OAAS,CACxE,IAAM2I,EAAM7G,EAAE9B,MAAMoE,MAAM,GAC1B,OAAO,IAAI5C,EAAMmH,OAAKvV,EAAW,IAAI9D,OAAAqZ,IAEzC,GAAK7G,aAAaN,IAAWM,EAAIN,EAAMwC,YAAYlC,EAAE9B,QAEjD,OADA8B,EAAE9B,WAAQ5M,EACH0O,EAEX,KAAM,CACF3P,KAAS,WACT6W,QAAS,oEAGjBu8B,KAAM,SAASviC,EAAOihC,GAClB,OAAOvB,GAAegC,IAAIhC,GAAejhC,IAAI,IAAK,IAAK,KAAMuB,EAAOihC,IAExEuB,MAAO,SAASxiC,EAAOihC,GACnB,OAAOvB,GAAegC,IAAIhC,GAAejhC,IAAI,EAAG,EAAG,GAAIuB,EAAOihC,KC1btE,SAASwB,GAAWC,EAAMf,EAAQC,GAC9B,IAGIe,EAKAC,EAEAhM,EACAiM,EAXEC,EAAKnB,EAAO1iC,MAKZ8jC,EAAKnB,EAAO3iC,MAOZW,EAAI,GAEVg3B,EAAKmM,EAAKD,GAAM,EAAIC,GACpB,IAAK,IAAI9zC,EAAI,EAAGA,EAAI,EAAGA,IAGnB4zC,EAAKH,EAFLC,EAAKhB,EAAOljC,IAAIxP,GAAK,IACrB2zC,EAAKhB,EAAOnjC,IAAIxP,GAAK,KAEjB2nC,IACAiM,GAAME,EAAKH,EAAKE,GAAMH,EAChBI,GAAMJ,EAAKC,EAAKC,KAAQjM,GAElCh3B,EAAE3Q,GAAU,IAAL4zC,EAGX,OAAO,IAAIrkC,EAAMoB,EAAGg3B,GAGxB,IAAMoM,GAA0B,CAC5BC,SAAU,SAASN,EAAIC,GACnB,OAAOD,EAAKC,GAEhBM,OAAQ,SAASP,EAAIC,GACjB,OAAOD,EAAKC,EAAKD,EAAKC,GAE1BO,QAAS,SAASR,EAAIC,GAElB,OADAD,GAAM,IACQ,EACVK,GAAwBC,SAASN,EAAIC,GACrCI,GAAwBE,OAAOP,EAAK,EAAGC,IAE/CQ,UAAW,SAAST,EAAIC,GACpB,IAAIhiC,EAAI,EACJ7S,EAAI40C,EAMR,OALIC,EAAK,KACL70C,EAAI,EACJ6S,EAAK+hC,EAAK,IAAQ/nC,KAAKyoC,KAAKV,KACpB,GAAKA,EAAK,IAAMA,EAAK,GAAKA,GAE/BA,GAAM,EAAI,EAAIC,GAAM70C,GAAK6S,EAAI+hC,IAExCW,UAAW,SAASX,EAAIC,GACpB,OAAOI,GAAwBG,QAAQP,EAAID,IAE/CY,WAAY,SAASZ,EAAIC,GACrB,OAAOhoC,KAAK4oC,IAAIb,EAAKC,IAEzBa,UAAW,SAASd,EAAIC,GACpB,OAAOD,EAAKC,EAAK,EAAID,EAAKC,GAI9Bc,QAAS,SAASf,EAAIC,GAClB,OAAQD,EAAKC,GAAM,GAEvBe,SAAU,SAAShB,EAAIC,GACnB,OAAO,EAAIhoC,KAAK4oC,IAAIb,EAAKC,EAAK,KAItC,IAAK,IAAMpf,MAAKwf,GAERA,GAAwBp3C,eAAe43B,MACvCif,GAAWjf,IAAKif,GAAW5yC,KAAK,KAAMmzC,GAAwBxf,MC3EtE,ICMMogB,GAAmB,SAAA7nC,GAMrB,OAHcC,MAAMC,QAAQF,EAAKiB,OAC7BjB,EAAKiB,MAAQhB,MAAMD,IAKZ8nC,GAAA,CACXC,MAAO,SAAS7/B,GACZ,OAAOA,GAEX8/B,IAAK,eAAS,IAAOC,EAAA,GAAAC,EAAA,EAAPA,EAAO93B,UAAA/e,OAAP62C,IAAAD,EAAOC,GAAA93B,UAAA83B,GACjB,OAAoB,IAAhBD,EAAK52C,OACE42C,EAAK,GAET,IAAIrqB,GAAMqqB,IAErBl9B,QAAS,SAASo9B,EAAQtnC,GAItB,OAFAA,EAAQA,EAAMI,MAAQ,EAEf4mC,GAAiBM,GAAQtnC,IAEpCxP,OAAQ,SAAS82C,GACb,OAAO,IAAIlP,GAAU4O,GAAiBM,GAAQ92C,SAUlD+2C,MAAO,SAASvmB,EAAOqB,EAAKmlB,GACxB,IAAI1N,EACAD,EACA4N,EAAY,EACVR,EAAO,GACT5kB,GACAwX,EAAKxX,EACLyX,EAAO9Y,EAAM5gB,MACTonC,IACAC,EAAYD,EAAKpnC,SAIrB05B,EAAO,EACPD,EAAK7Y,GAGT,IAAK,IAAI3uB,EAAIynC,EAAMznC,GAAKwnC,EAAGz5B,MAAO/N,GAAKo1C,EACnCR,EAAK90C,KAAK,IAAIimC,GAAU/lC,EAAGwnC,EAAGxB,OAGlC,OAAO,IAAIxb,GAAWoqB,IAE1BS,KAAM,SAAST,EAAMU,GAAf,IAEEnI,EACAoI,EAmFP/kB,EAAAlxB,KArFS4f,EAAQ,GAIRs2B,EAAU,SAAA9+B,GACZ,OAAIA,aAAezK,EACRyK,EAAIvI,KAAKqiB,EAAKljB,SAElBoJ,GAUP6+B,GAPAX,EAAK7mC,OAAW6mC,aAAgBa,GAMzBb,EAAK3yB,QACDuzB,EAAQZ,EAAK3yB,SAAS/C,MAC1B01B,EAAK11B,MACD01B,EAAK11B,MAAMtP,IAAI4lC,GACnBzoC,MAAMC,QAAQ4nC,GACVA,EAAKhlC,IAAI4lC,GAET,CAACA,EAAQZ,IAZhB7nC,MAAMC,QAAQ4nC,EAAK7mC,OACR6mC,EAAK7mC,MAAM6B,IAAI4lC,GAEf,CAACA,EAAQZ,EAAK7mC,QAYjC,IAAI2nC,EAAY,SACZC,EAAU,OACVC,EAAY,SAEZN,EAAGxd,QACH4d,EAAYJ,EAAGxd,OAAO,IAAMwd,EAAGxd,OAAO,GAAGhP,KACzC6sB,EAAUL,EAAGxd,OAAO,IAAMwd,EAAGxd,OAAO,GAAGhP,KACvC8sB,EAAYN,EAAGxd,OAAO,IAAMwd,EAAGxd,OAAO,GAAGhP,KACzCwsB,EAAKA,EAAGp2B,OAERo2B,EAAKA,EAAGrzB,QAGZ,IAAK,IAAI9hB,EAAI,EAAGA,EAAIo1C,EAASp3C,OAAQgC,IAAK,CACtC,IAAI8R,SACAlE,SACE4F,EAAO4hC,EAASp1C,GAClBwT,aAAgB0V,IAChBpX,EAA2B,iBAAd0B,EAAKmV,KAAoBnV,EAAKmV,KAAOnV,EAAKmV,KAAK,GAAG/a,MAC/DA,EAAQ4F,EAAK5F,QAEbkE,EAAM,IAAI8zB,GAAU5lC,EAAI,GACxB4N,EAAQ4F,GAGRA,aAAgBuV,KAIpBikB,EAAWmI,EAAGp2B,MAAM/M,MAAM,GACtBujC,GACAvI,EAASrtC,KAAK,IAAIupB,GAAYqsB,EAC1B3nC,GACA,GAAO,EAAOzO,KAAKqO,MAAOrO,KAAKyT,kBAEnC6iC,GACAzI,EAASrtC,KAAK,IAAIupB,GAAYusB,EAC1B,IAAI7P,GAAU5lC,EAAI,IAClB,GAAO,EAAOb,KAAKqO,MAAOrO,KAAKyT,kBAEnC4iC,GACAxI,EAASrtC,KAAK,IAAIupB,GAAYssB,EAC1B1jC,GACA,GAAO,EAAO3S,KAAKqO,MAAOrO,KAAKyT,kBAGvCmM,EAAMpf,KAAK,IAAIkzB,GAAQ,CAAE,IAAA,GAAc,CAAE,IAAIpgB,EAAQ,GAAI,QACrDu6B,EACAmI,EAAGvc,cACHuc,EAAGjmC,oBAIX,OAAO,IAAI2jB,GAAQ,CAAE,OAAc,CAAE,IAAIpgB,EAAQ,GAAI,QACjDsM,EACAo2B,EAAGvc,cACHuc,EAAGjmC,kBACLlB,KAAK7O,KAAKgO,WCzJduoC,GAAa,SAACC,EAAI9P,EAAMhxB,GAC1B,KAAMA,aAAa+wB,IACf,KAAM,CAAE7lC,KAAM,WAAY6W,QAAS,6BAOvC,OALa,OAATivB,EACAA,EAAOhxB,EAAEgxB,KAEThxB,EAAIA,EAAEsxB,QAEH,IAAIP,GAAU+P,EAAG7P,WAAWjxB,EAAEjH,QAASi4B,ICT5C+P,GAAgB,CAElBC,KAAO,KACPzE,MAAO,KACP6C,KAAO,KACPG,IAAO,KACPpqC,IAAO,GACP8rC,IAAO,GACPC,IAAO,GACPC,KAAO,MACPC,KAAO,MACPC,KAAO,OAGX,IAAK,IAAM9hB,MAAKwhB,GAERA,GAAcp5C,eAAe43B,MAC7BwhB,GAAcxhB,IAAK+hB,GAAW11C,KAAK,KAAM+K,KAAK4oB,IAAIwhB,GAAcxhB,MAIxEwhB,GAAcxlC,MAAQ,SAACyE,EAAGuf,GACtB,IAAMgiB,OAAwB,IAANhiB,EAAoB,EAAIA,EAAExmB,MAClD,OAAOuoC,IAAW,SAAAE,GAAO,OAAAA,EAAI5nC,QAAQ2nC,KAAW,KAAMvhC,ICrB1D,IAAMyhC,GAAS,SAAUC,EAAOxlC,GAAjB,IAKPpB,EACAqK,EACA+Q,EACAyrB,EACAC,EACA5Q,EACA6Q,EACAC,EAyCPtmB,EAAAlxB,KAnDG,QADA4R,EAAOnE,MAAMrQ,UAAUyV,MAAMvV,KAAKsU,IACrB/S,QACT,KAAK,EAAG,KAAM,CAAE+B,KAAM,WAAY6W,QAAS,kCAW/C,IACIggC,EAAS,GAEP9B,EAAS,GAEf,IAAKnlC,EAAI,EAAGA,EAAIoB,EAAK/S,OAAQ2R,IAAK,CAE9B,MADAob,EAAUha,EAAKpB,cACUi2B,IAAY,CACjC,GAAIh5B,MAAMC,QAAQkE,EAAKpB,GAAG/B,OAAQ,CAC9BhB,MAAMrQ,UAAUoD,KAAKud,MAAMnM,EAAMnE,MAAMrQ,UAAUyV,MAAMvV,KAAKsU,EAAKpB,GAAG/B,QACpE,SAEA,KAAM,CAAE7N,KAAM,WAAY6W,QAAS,sBAQ3C,GAHA8/B,EAAsB,MADtB7Q,EAA0C,MAD1C2Q,EAA6C,KAA5BzrB,EAAQ8a,KAAKx1B,iBAAmCrP,IAAd21C,EAA0B,IAAI/Q,GAAU7a,EAAQnd,MAAO+oC,GAAWxQ,QAAUpb,EAAQob,SACjHN,KAAKx1B,iBAAoCrP,IAAf01C,EAA2BA,EAAaF,EAAe3Q,KAAKx1B,kBACjErP,IAAf01C,GAAqC,KAAT7Q,GAAoD,KAArC+Q,EAAM,GAAGzQ,QAAQN,KAAKx1B,WAAoBw1B,EAAO6Q,EACxHC,EAAqB,KAAT9Q,QAA6B7kC,IAAd21C,EAA0B5rB,EAAQ8a,KAAKx1B,WAAasmC,OAErE31C,KADVgZ,OAAmBhZ,IAAf8zC,EAAO,KAA8B,KAATjP,GAAeA,IAAS6Q,EAAa5B,EAAO,IAAMA,EAAOjP,IASzF4Q,EAAgD,KAA7BG,EAAM58B,GAAG6rB,KAAKx1B,iBAAmCrP,IAAd21C,EAA0B,IAAI/Q,GAAUgR,EAAM58B,GAAGpM,MAAO+oC,GAAWxQ,QAAUyQ,EAAM58B,GAAGmsB,SACvIoQ,GAASC,EAAe5oC,MAAQ6oC,EAAiB7oC,QACjD2oC,GAASC,EAAe5oC,MAAQ6oC,EAAiB7oC,SAClDgpC,EAAM58B,GAAK+Q,OAXf,CACI,QAAmB/pB,IAAf01C,GAA4B7Q,IAAS6Q,EACrC,KAAM,CAAE32C,KAAM,WAAY6W,QAAS,sBAEvCk+B,EAAOjP,GAAQ+Q,EAAM54C,OACrB44C,EAAMj3C,KAAKorB,IASnB,OAAoB,GAAhB6rB,EAAM54C,OACC44C,EAAM,IAEjB7lC,EAAO6lC,EAAMnnC,KAAI,SAAAtB,GAAO,OAAOA,EAAEjB,MAAMmjB,EAAKljB,YAAaO,KAAKvO,KAAKgO,QAAQ2D,SAAW,IAAM,MACrF,IAAI8f,GAAU,GAAG1zB,OAAAq5C,EAAQ,MAAQ,kBAASxlC,EAAI,QAG1C4/B,GAAA,CACXzgC,IAAK,eAAS,IAAOa,EAAA,GAAA8jC,EAAA,EAAPA,EAAO93B,UAAA/e,OAAP62C,IAAA9jC,EAAO8jC,GAAA93B,UAAA83B,GACjB,IACI,OAAOyB,GAAO75C,KAAK0C,MAAM,EAAM4R,GACjC,MAAOpS,MAEbsR,IAAK,eAAS,IAAOc,EAAA,GAAA8jC,EAAA,EAAPA,EAAO93B,UAAA/e,OAAP62C,IAAA9jC,EAAO8jC,GAAA93B,UAAA83B,GACjB,IACI,OAAOyB,GAAO75C,KAAK0C,MAAM,EAAO4R,GAClC,MAAOpS,MAEbk4C,QAAS,SAAUtgC,EAAKsvB,GACpB,OAAOtvB,EAAI2vB,UAAUL,EAAKj4B,QAE9BkpC,GAAI,WACA,OAAO,IAAIlR,GAAUp6B,KAAKC,KAE9BsrC,IAAK,SAAS5oC,EAAGC,GACb,OAAO,IAAIw3B,GAAUz3B,EAAEP,MAAQQ,EAAER,MAAOO,EAAE03B,OAE9Cn1B,IAAK,SAASiB,EAAGqlC,GACb,GAAiB,iBAANrlC,GAA+B,iBAANqlC,EAChCrlC,EAAI,IAAIi0B,GAAUj0B,GAClBqlC,EAAI,IAAIpR,GAAUoR,QACf,KAAMrlC,aAAai0B,IAAgBoR,aAAapR,IACnD,KAAM,CAAE7lC,KAAM,WAAY6W,QAAS,6BAGvC,OAAO,IAAIgvB,GAAUp6B,KAAKkF,IAAIiB,EAAE/D,MAAOopC,EAAEppC,OAAQ+D,EAAEk0B,OAEvDoR,WAAY,SAAUpiC,GAGlB,OAFeshC,IAAW,SAAAE,GAAO,OAAM,IAANA,IAAW,IAAKxhC,KCtF1Cs1B,GAAA,CACXxrC,EAAG,SAAUqZ,GACT,OAAO,IAAIggB,GAAO,IAAKhgB,aAAekyB,GAAalyB,EAAIk/B,UAAYl/B,EAAIpK,OAAO,IAElFooB,OAAQ,SAAUhe,GACd,OAAO,IAAI4Y,GACPumB,UAAUn/B,EAAIpK,OAAO5R,QAAQ,KAAM,OAAOA,QAAQ,KAAM,OAAOA,QAAQ,KAAM,OAAOA,QAAQ,KAAM,OAC7FA,QAAQ,MAAO,OAAOA,QAAQ,MAAO,SAElDA,QAAS,SAAUmuC,EAAQiN,EAASlK,EAAamK,GAC7C,IAAIjhC,EAAS+zB,EAAOv8B,MAIpB,OAHAs/B,EAAoC,WAArBA,EAAYntC,KACvBmtC,EAAYt/B,MAAQs/B,EAAYhgC,QACpCkJ,EAASA,EAAOpa,QAAQ,IAAImpC,OAAOiS,EAAQxpC,MAAOypC,EAAQA,EAAMzpC,MAAQ,IAAKs/B,GACtE,IAAIlV,GAAOmS,EAAO5c,OAAS,GAAInX,EAAQ+zB,EAAO9B,UAEzDiP,IAAK,SAAUnN,GAIX,IAHA,IAAMp5B,EAAOnE,MAAMrQ,UAAUyV,MAAMvV,KAAKsgB,UAAW,GAC/C3G,EAAS+zB,EAAOv8B,iBAEX/N,GAELuW,EAASA,EAAOpa,QAAQ,WAAW,SAAAu7C,GAC/B,IAAM3pC,EAA2B,WAAjBmD,EAAKlR,GAAGE,MACpBw3C,EAAM/nC,MAAM,MAASuB,EAAKlR,GAAG+N,MAAQmD,EAAKlR,GAAGqN,QACjD,OAAOqqC,EAAM/nC,MAAM,UAAYgoC,mBAAmB5pC,GAASA,MAL1D/N,EAAI,EAAGA,EAAIkR,EAAK/S,OAAQ6B,MAAxBA,GAST,OADAuW,EAASA,EAAOpa,QAAQ,MAAO,KACxB,IAAIg8B,GAAOmS,EAAO5c,OAAS,GAAInX,EAAQ+zB,EAAO9B,WCxBvDoP,GAAM,SAAC5iC,EAAG6iC,GAAS,OAAC7iC,aAAa6iC,EAAQta,GAAQC,KAAOD,GAAQE,OAChEqa,GAAS,SAAC9iC,EAAGgxB,GACf,QAAa7kC,IAAT6kC,EACA,KAAM,CAAE9lC,KAAM,WAAY6W,QAAS,mDAGvC,GAAoB,iBADpBivB,EAA6B,iBAAfA,EAAKj4B,MAAqBi4B,EAAKj4B,MAAQi4B,GAEjD,KAAM,CAAE9lC,KAAM,WAAY6W,QAAS,2DAEvC,OAAQ/B,aAAa+wB,IAAc/wB,EAAEgxB,KAAKb,GAAGa,GAAQzI,GAAQC,KAAOD,GAAQE,OAGjEsa,GAAA,CACXC,UAAW,SAAUhjC,GACjB,OAAO4iC,GAAI5iC,EAAG6jB,KAElBof,QAAS,SAAUjjC,GACf,OAAO4iC,GAAI5iC,EAAGzF,IAElB2oC,SAAU,SAAUljC,GAChB,OAAO4iC,GAAI5iC,EAAG+wB,KAElBoS,SAAU,SAAUnjC,GAChB,OAAO4iC,GAAI5iC,EAAGmjB,KAElBigB,UAAW,SAAUpjC,GACjB,OAAO4iC,GAAI5iC,EAAGuoB,KAElB8a,MAAO,SAAUrjC,GACb,OAAO4iC,GAAI5iC,EAAG+zB,KAElBuP,QAAS,SAAUtjC,GACf,OAAO8iC,GAAO9iC,EAAG,OAErBujC,aAAc,SAAUvjC,GACpB,OAAO8iC,GAAO9iC,EAAG,MAErBwjC,KAAM,SAAUxjC,GACZ,OAAO8iC,GAAO9iC,EAAG,OAErB8iC,OAAMA,GACN9R,KAAM,SAAUtvB,EAAKsvB,GACjB,KAAMtvB,aAAeqvB,IACjB,KAAM,CAAE7lC,KAAM,WACV6W,QAAS,8CAAA1Z,OAA8CqZ,aAAeiwB,GAAY,oCAAsC,KAWhI,OAPQX,EAFJA,EACIA,aAAgBzI,GACTyI,EAAKj4B,MAELi4B,EAAK34B,QAGT,GAEJ,IAAI04B,GAAUrvB,EAAI3I,MAAOi4B,IAEpCyS,WAAY,SAAUzjC,GAClB,OAAO,IAAI+b,GAAU/b,EAAEgxB,QChEzB0S,GAAkB,SAAUxnC,GAAV,IAWvBsf,EAAAlxB,KATG,QADA4R,EAAOnE,MAAMrQ,UAAUyV,MAAMvV,KAAKsU,IACrB/S,QACT,KAAK,EAAG,KAAM,CAAE+B,KAAM,WAAY6W,QAAS,kCAO/C,OAFA7F,EAFmB,CAAC,IAAIukB,GAASvkB,EAAK,GAAGnD,MAAOzO,KAAKqO,MAAOrO,KAAKyT,iBAAiB5E,KAAK7O,KAAKgO,UAE1EsC,KAAI,SAAAtB,GAAO,OAAOA,EAAEjB,MAAMmjB,EAAKljB,YAAaO,KAAKvO,KAAKgO,QAAQ2D,SAAW,IAAM,MAE1F,IAAI8f,GAAU,gBAAS7f,EAAI,OAGvBynC,GAAA,CACXC,MAAO,eAAS,IAAO1nC,EAAA,GAAA8jC,EAAA,EAAPA,EAAO93B,UAAA/e,OAAP62C,IAAA9jC,EAAO8jC,GAAA93B,UAAA83B,GACnB,IACI,OAAO0D,GAAgB97C,KAAK0C,KAAM4R,GACpC,MAAOpS,OCJjB2B,GAAA,SAAeO,GACX,IAAMP,EAAY,CAAE0vB,oBAAkBgX,eAAcA,IAgBpD,OAbAhX,GAAiBI,YAAYkE,IAC7BtE,GAAiB1iB,IAAI,UAAW+wB,GAAYrwB,KAAKvN,KAAK49B,KACtDrO,GAAiBI,YAAYxf,IAC7Bof,GAAiBI,YAAYsoB,IAC7B1oB,GAAiBI,YRnBrB,SAAevvB,GAEX,IAAM83C,EAAW,SAACC,EAAcjsC,GAAS,OAAA,IAAIi8B,GAAIj8B,EAAMisC,EAAaprC,MAAOorC,EAAahmC,iBAAiB5E,KAAK4qC,EAAazrC,UAE3H,MAAO,CAAE0rC,WAAY,SAASC,EAAcC,GAEnCA,IACDA,EAAeD,EACfA,EAAe,MAGnB,IAAIE,EAAWF,GAAgBA,EAAalrC,MACxCqrC,EAAWF,EAAanrC,MACtBgF,EAAkBzT,KAAKyT,gBACvBhS,EAAmBgS,EAAgBqD,YACrCrD,EAAgBhS,iBAAmBgS,EAAgBsmC,UAEjDC,EAAgBF,EAASjoC,QAAQ,KACnCm4B,EAAW,IACQ,IAAnBgQ,IACAhQ,EAAW8P,EAASjnC,MAAMmnC,GAC1BF,EAAWA,EAASjnC,MAAM,EAAGmnC,IAEjC,IAAMhsC,EAAUisC,EAAYj6C,KAAKgO,SACjCA,EAAQksC,WAAY,EAEpB,IAAMl4C,EAAcN,EAAYH,eAAeu4C,EAAUr4C,EAAkBuM,EAAStM,GAAa,GAEjG,IAAKM,EACD,OAAOw3C,EAASx5C,KAAM45C,GAG1B,IAAIO,GAAY,EAGhB,GAAKR,EAcDQ,EAAY,WAAWz+B,KAAKm+B,OAdb,CAIf,GAAiB,mBAFjBA,EAAWn4C,EAAY04C,WAAWN,IAG9BK,GAAY,MACT,CAEH,IAAM1wB,EAAU/nB,EAAY24C,cAAcR,GAC1CM,EAAY,CAAC,WAAY,SAAStoC,QAAQ4X,GAAW,EAErD0wB,IAAaN,GAAY,WAMjC,IAAMS,EAAWt4C,EAAYu4C,aAAaT,EAAUr4C,EAAkBuM,EAAStM,GAC/E,IAAK44C,EAAS1iC,SAEV,OADAhW,EAAO1B,KAAK,wCAAiC45C,EAAQ,4BAC9CN,EAASx5C,KAAM45C,GAAgBD,GAE1C,IAAIa,EAAMF,EAAS1iC,SACnB,GAAIuiC,IAAcz4C,EAAY+4C,aAC1B,OAAOjB,EAASx5C,KAAM45C,GAG1BY,EAAML,EAAYz4C,EAAY+4C,aAAaD,GAAOnC,mBAAmBmC,GAErE,IAAME,EAAM,QAAQ38C,OAAA87C,cAAYW,GAAGz8C,OAAGisC,GAEtC,OAAO,IAAIP,GAAI,IAAI5Q,GAAO,IAAI96B,OAAA28C,EAAM,KAAEA,GAAK,EAAO16C,KAAKqO,MAAOrO,KAAKyT,iBAAkBzT,KAAKqO,MAAOrO,KAAKyT,mBQ/C7EknC,CAAQj5C,IACrCmvB,GAAiBI,YAAYqkB,IAC7BzkB,GAAiBI,YAAYta,IAC7Bka,GAAiBI,YAAYugB,IAC7B3gB,GAAiBI,YAAY+Z,IAC7Bna,GAAiBI,YCtBV,CAAE2pB,eAAgB,SAASC,GAC9B,IAAIC,EACAC,EAIA7iB,EAEA1nB,EACAiB,EACAupC,EACAC,EACAvqC,EATAwqC,EAAe,SACfC,EAAqB,mCACnBC,EAAY,CAACzpC,UAAU,GAEvB0pC,EAAiBR,EAAU9sC,MAAMqtC,GAOvC,SAASE,IACL,KAAM,CAAE16C,KAAM,WACV6W,QAAS,yIAejB,OAXwB,GAApBmG,UAAU/e,QACN+e,UAAU,GAAGnP,MAAM5P,OAAS,GAC5By8C,IAEJR,EAAQl9B,UAAU,GAAGnP,OACdmP,UAAU/e,OAAS,EAC1By8C,IAEAR,EAAQrtC,MAAMrQ,UAAUyV,MAAMvV,KAAKsgB,UAAW,GAG1Cy9B,GACJ,IAAK,YACDN,EAAuB,oCACvB,MACJ,IAAK,WACDA,EAAuB,oCACvB,MACJ,IAAK,kBACDA,EAAuB,sCACvB,MACJ,IAAK,eACDA,EAAuB,sCACvB,MACJ,IAAK,UACL,IAAK,oBACDG,EAAe,SACfH,EAAuB,4BACvBI,EAAqB,2CACrB,MACJ,QACI,KAAM,CAAEv6C,KAAM,WAAY6W,QAAS,oHAK3C,IAFAygB,EAAW,8DAA8Dn6B,OAAAm9C,EAA+B,oBAAAn9C,OAAAg9C,OAEnGvqC,EAAI,EAAGA,EAAIsqC,EAAMj8C,OAAQ2R,GAAK,EAC3BsqC,EAAMtqC,aAAc0a,IACpBzZ,EAAQqpC,EAAMtqC,GAAG/B,MAAM,GACvBusC,EAAWF,EAAMtqC,GAAG/B,MAAM,KAE1BgD,EAAQqpC,EAAMtqC,GACdwqC,OAAWn5C,GAGT4P,aAAiBxB,KAAoB,IAANO,GAAWA,EAAI,IAAMsqC,EAAMj8C,cAAwBgD,IAAbm5C,GAA6BA,aAAoBvU,KACxH6U,IAEJL,EAAgBD,EAAWA,EAASjtC,MAAMqtC,GAAmB,IAAN5qC,EAAU,KAAO,OACxEE,EAAQe,EAAMf,MACdwnB,GAAY,wBAAiB+iB,EAAa,kBAAAl9C,OAAiB0T,EAAMQ,QAAO,KAAAlU,OAAI2S,EAAQ,EAAI,kBAAA3S,OAAkB2S,EAAK,KAAM,GAAE,MAO3H,OALAwnB,GAAY,KAAKn6B,OAAAm9C,EAA8B,mBAAAn9C,OAAAo9C,8BAE/CjjB,EAAWmgB,mBAAmBngB,GAE9BA,EAAW,sBAAAn6B,OAAsBm6B,GAC1B,IAAIuR,GAAI,IAAI5Q,GAAO,IAAI96B,OAAAm6B,EAAW,KAAEA,GAAU,EAAOl4B,KAAKqO,MAAOrO,KAAKyT,iBAAkBzT,KAAKqO,MAAOrO,KAAKyT,oBDtDpHod,GAAiBI,YAAYwnB,IAC7B5nB,GAAiBI,YAAYqoB,IAEtBn4C,GE7Ba,SAAAo6C,GAAA38B,EAAM7hB,GAE1B,IAAIy+C,EACAra,GAFJpkC,EAAUA,GAAW,IAEGokC,UAClBsa,EAAU,IAAI1gC,EAASa,KAAK7e,GAeT,iBAAdokC,GAA2B1zB,MAAMC,QAAQyzB,KAChDA,EAAYhkC,OAAOg0B,KAAKgQ,GAAW7wB,KAAI,SAAUokB,GAC7C,IAAIjmB,EAAQ0yB,EAAUzM,GAQtB,OANMjmB,aAAiBqL,GAAKsR,QAClB3c,aAAiBqL,GAAKoR,aACxBzc,EAAQ,IAAIqL,GAAKoR,WAAW,CAACzc,KAEjCA,EAAQ,IAAIqL,GAAKsR,MAAM,CAAC3c,KAErB,IAAIqL,GAAKiQ,YAAY,WAAI2K,GAAKjmB,GAAO,EAAO,KAAM,MAE7DgtC,EAAQ5/B,OAAS,CAAC,IAAI/B,GAAK4Z,QAAQ,KAAMyN,KAG7C,IAQItwB,EACA6qC,EATErwB,EAAW,CACb,IAAI1c,EAAQyY,oBACZ,IAAIzY,EAAQ2c,6BAA4B,GACxC,IAAI3c,EAAQ4c,cACZ,IAAI5c,EAAQ4Z,aAAa,CAAC5W,SAAUigB,QAAQ70B,EAAQ4U,aAGlDgqC,EAAkB,GASxB,GAAI5+C,EAAQ+E,cAAe,CACvB45C,EAAkB3+C,EAAQ+E,cAAc6M,UACxC,IAAK,IAAIjO,EAAI,EAAGA,EAAI,EAAGA,IAEnB,IADAg7C,EAAgBrkB,QACRxmB,EAAI6qC,EAAgBxuC,OACpB2D,EAAE+qC,iBACQ,IAANl7C,IAA2C,IAAhCi7C,EAAgB9pC,QAAQhB,KACnC8qC,EAAgBn7C,KAAKqQ,GACrBA,EAAE8N,IAAIC,IAIA,IAANle,IAAoC,IAAzB2qB,EAASxZ,QAAQhB,KACxBA,EAAEgrC,aACFxwB,EAASzK,QAAQ/P,GAGjBwa,EAAS7qB,KAAKqQ,IAQtC2qC,EAAY58B,EAAK/P,KAAK4sC,GAEtB,IAAK,IAAI56C,EAAI,EAAGA,EAAIwqB,EAASxsB,OAAQgC,IACjCwqB,EAASxqB,GAAG8d,IAAI68B,GAIpB,GAAIz+C,EAAQ+E,cAER,IADA45C,EAAgBrkB,QACRxmB,EAAI6qC,EAAgBxuC,QACK,IAAzBme,EAASxZ,QAAQhB,KAA6C,IAAhC8qC,EAAgB9pC,QAAQhB,IACtDA,EAAE8N,IAAI68B,GAKlB,OAAOA,EC5FX,IA0JIM,GA1JJC,GAAA,WACI,SAAAA,EAAY/S,GACRhpC,KAAKgpC,KAAOA,EACZhpC,KAAKqrB,SAAW,GAChBrrB,KAAKqzB,cAAgB,GACrBrzB,KAAKg8C,eAAiB,GACtBh8C,KAAKi8C,iBAAmB,GACxBj8C,KAAKiB,aAAe,GACpBjB,KAAKi2C,UAAY,EACjBj2C,KAAKk8C,YAAc,GACnBl8C,KAAKm8C,OAAS,IAAInT,EAAKoT,aAAapT,GA8I5C,OAvII+S,EAAU3+C,UAAAi/C,WAAV,SAAWvL,GACP,GAAIA,EACA,IAAK,IAAIpwC,EAAI,EAAGA,EAAIowC,EAAQjyC,OAAQ6B,IAChCV,KAAKswC,UAAUQ,EAAQpwC,KAUnCq7C,EAAA3+C,UAAAkzC,UAAA,SAAUnd,EAAQ3xB,EAAUqvB,GACxB7wB,KAAKi8C,iBAAiBz7C,KAAK2yB,GACvB3xB,IACAxB,KAAKk8C,YAAY16C,GAAY2xB,GAE7BA,EAAOmpB,SACPnpB,EAAOmpB,QAAQt8C,KAAKgpC,KAAMhpC,KAAM6wB,GAAoB7wB,KAAKgpC,KAAK7nC,UAAU0vB,mBAQhFkrB,EAAG3+C,UAAA8P,IAAH,SAAI1L,GACA,OAAOxB,KAAKk8C,YAAY16C,IAQ5Bu6C,EAAU3+C,UAAAm/C,WAAV,SAAW5tC,GACP3O,KAAKqrB,SAAS7qB,KAAKmO,IAQvBotC,EAAA3+C,UAAAo/C,gBAAA,SAAgBC,EAAcC,GAC1B,IAAIC,EACJ,IAAKA,EAAkB,EAAGA,EAAkB38C,KAAKqzB,cAAcx0B,UACvDmB,KAAKqzB,cAAcspB,GAAiBD,UAAYA,GADeC,KAKvE38C,KAAKqzB,cAAc1yB,OAAOg8C,EAAiB,EAAG,CAACF,aAAYA,EAAEC,SAAQA,KAQzEX,EAAA3+C,UAAAw/C,iBAAA,SAAiBC,EAAeH,GAC5B,IAAIC,EACJ,IAAKA,EAAkB,EAAGA,EAAkB38C,KAAKg8C,eAAen9C,UACxDmB,KAAKg8C,eAAeW,GAAiBD,UAAYA,GADeC,KAKxE38C,KAAKg8C,eAAer7C,OAAOg8C,EAAiB,EAAG,CAACE,cAAaA,EAAEH,SAAQA,KAO3EX,EAAc3+C,UAAA6E,eAAd,SAAe66C,GACX98C,KAAKiB,aAAaT,KAAKs8C,IAQ3Bf,EAAA3+C,UAAAk2B,iBAAA,WAEI,IADA,IAAMD,EAAgB,GACbxyB,EAAI,EAAGA,EAAIb,KAAKqzB,cAAcx0B,OAAQgC,IAC3CwyB,EAAc7yB,KAAKR,KAAKqzB,cAAcxyB,GAAG47C,cAE7C,OAAOppB,GAQX0oB,EAAA3+C,UAAA2/C,kBAAA,WAEI,IADA,IAAMf,EAAiB,GACdpxB,EAAI,EAAGA,EAAI5qB,KAAKg8C,eAAen9C,OAAQ+rB,IAC5CoxB,EAAex7C,KAAKR,KAAKg8C,eAAepxB,GAAGiyB,eAE/C,OAAOb,GAQXD,EAAA3+C,UAAA4/C,YAAA,WACI,OAAOh9C,KAAKqrB,UAGhB0wB,EAAA3+C,UAAAuR,QAAA,WACI,IAAMyB,EAAOpQ,KACb,MAAO,CACHq3B,MAAO,WAEH,OADAjnB,EAAK6lC,UAAY,EACV7lC,EAAKib,SAASjb,EAAK6lC,WAE9B/oC,IAAK,WAED,OADAkD,EAAK6lC,UAAY,EACV7lC,EAAKib,SAASjb,EAAK6lC,aAUtC8F,EAAA3+C,UAAA2E,gBAAA,WACI,OAAO/B,KAAKiB,cAEnB86C,KAIKkB,GAAuB,SAASjU,EAAMkU,GAIxC,OAHIA,GAAepB,KACfA,GAAK,IAAIC,GAAc/S,IAEpB8S,IChJX,ICjBI/+C,GACA6E,GDgBJu7C,GAjBA,SAA0B3M,GACxB,IAAIngC,EAAQmgC,EAAQngC,MAAM,mFAC1B,IAAKA,EACH,MAAM,IAAI5Q,MAAM,oBAAsB+wC,GAWxC,MARU,CACR4M,MAAO3sC,SAASJ,EAAM,GAAI,IAC1BgtC,MAAO5sC,SAASJ,EAAM,GAAI,IAC1BitC,MAAO7sC,SAASJ,EAAM,GAAI,IAC1BktC,IAAKltC,EAAM,IAAM,GACjBmtC,MAAOntC,EAAM,IAAM,KEUC,SAAAotC,GAAA/7C,EAAaT,GACjC,IAAIy8C,EAAiBC,EAAkBC,EAAWlgB,EAKlDkgB,ECzBU,SAAUC,GA4DpB,OA3DA,WACI,SAAYC,EAAAl/B,EAAMzB,GACdnd,KAAK4e,KAAOA,EACZ5e,KAAKmd,QAAUA,EAsDvB,OAnDI2gC,EAAK1gD,UAAA2Q,MAAL,SAAMhR,GACF,IAAIy+C,EAEAmC,EADE1mC,EAAS,GAEf,IACIukC,EAAYD,GAAcv7C,KAAK4e,KAAM7hB,GACvC,MAAOyC,GACL,MAAM,IAAI8X,EAAU9X,EAAGQ,KAAKmd,SAGhC,IACI,IAAMxL,EAAWigB,QAAQ70B,EAAQ4U,UAC7BA,GACA/P,EAAO1B,KAAK,mIAIhB,IAAM69C,EAAe,CACjBpsC,SAAQA,EACR6nB,gBAAiBz8B,EAAQy8B,gBACzBmM,YAAa/T,QAAQ70B,EAAQ4oC,aAC7Bv2B,aAAc,GAEdrS,EAAQihD,WACRL,EAAmB,IAAIE,EAAiB9gD,EAAQihD,WAChD/mC,EAAOiI,IAAMy+B,EAAiB5vC,MAAMytC,EAAWuC,EAAc/9C,KAAKmd,UAElElG,EAAOiI,IAAMs8B,EAAUztC,MAAMgwC,GAEnC,MAAOv+C,GACL,MAAM,IAAI8X,EAAU9X,EAAGQ,KAAKmd,SAGhC,GAAIpgB,EAAQ+E,cAER,IADA,IAAMk6C,EAAiBj/C,EAAQ+E,cAAci7C,oBACpCr8C,EAAI,EAAGA,EAAIs7C,EAAen9C,OAAQ6B,IACvCuW,EAAOiI,IAAM88B,EAAet7C,GAAG6yB,QAAQtc,EAAOiI,IAAK,CAAE8+B,UAAWL,EAAkB5gD,QAAOA,EAAEogB,QAASnd,KAAKmd,UAQjH,IAAK,IAAM8gC,KALPlhD,EAAQihD,YACR/mC,EAAO3G,IAAMqtC,EAAiBO,wBAGlCjnC,EAAOkG,QAAU,GACEnd,KAAKmd,QAAQghC,MACxBhhD,OAAOC,UAAUC,eAAeC,KAAK0C,KAAKmd,QAAQghC,MAAOF,IAASA,IAASj+C,KAAKmd,QAAQihC,cACxFnnC,EAAOkG,QAAQ3c,KAAKy9C,GAG5B,OAAOhnC,GAEd6mC,EAzDD,GDwBYA,CADZH,EE5BqB,SAAAU,EAAiB38C,GAgFtC,OA/EA,WACI,SAAAm8C,EAAY9gD,GACRiD,KAAKjD,QAAUA,EA2EvB,OAxEI8gD,EAAAzgD,UAAA2Q,MAAA,SAAMhB,EAAUhQ,EAASogB,GACrB,IAAMugC,EAAkB,IAAIW,EACxB,CACIC,wBAAyBnhC,EAAQsW,qBACjC1mB,SAAQA,EACRwxC,YAAaphC,EAAQvF,SACrB4mC,kBAAmBx+C,KAAKjD,QAAQyhD,kBAChCC,aAAcz+C,KAAKjD,QAAQ0hD,aAC3BC,eAAgB1+C,KAAKjD,QAAQ4hD,wBAC7BC,kBAAmB5+C,KAAKjD,QAAQ6hD,kBAChCC,kBAAmB7+C,KAAKjD,QAAQ8hD,kBAChCC,kBAAmB9+C,KAAKjD,QAAQ+hD,kBAChCC,mBAAoB/+C,KAAKjD,QAAQgiD,mBACjCC,oBAAqBh/C,KAAKjD,QAAQiiD,oBAClCC,2BAA4Bj/C,KAAKjD,QAAQkiD,6BAG3C//B,EAAMw+B,EAAgB3vC,MAAMhR,GASlC,OARAiD,KAAKg+C,UAAYN,EAAgBM,UACjCh+C,KAAKy+C,aAAef,EAAgBe,aAChCz+C,KAAKjD,QAAQmiD,yBACbl/C,KAAKk/C,uBAAyBxB,EAAgByB,kBAAkBn/C,KAAKjD,QAAQmiD,8BAE1Cr9C,IAAnC7B,KAAKjD,QAAQ6hD,wBAAyD/8C,IAAtB7B,KAAKy+C,eACrDz+C,KAAKy+C,aAAef,EAAgB0B,eAAep/C,KAAKy+C,eAErDv/B,EAAMlf,KAAKq/C,mBAGtBxB,EAAAzgD,UAAAiiD,gBAAA,WAEI,IAAIZ,EAAez+C,KAAKy+C,aACxB,GAAIz+C,KAAKjD,QAAQiiD,oBAAqB,CAClC,QAAuBn9C,IAAnB7B,KAAKg+C,UACL,MAAO,GAEXS,EAAe,gCAAgC1gD,OAAA2D,EAAY+4C,aAAaz6C,KAAKg+C,YAGjF,OAAIh+C,KAAKjD,QAAQkiD,2BACN,GAGPR,EACO,wBAAA1gD,OAAwB0gD,EAAY,OAExC,IAGXZ,EAAAzgD,UAAA8gD,qBAAA,WACI,OAAOl+C,KAAKg+C,WAGhBH,EAAoBzgD,UAAAkiD,qBAApB,SAAqBtB,GACjBh+C,KAAKg+C,UAAYA,GAGrBH,EAAAzgD,UAAAmiD,SAAA,WACI,OAAOv/C,KAAKjD,QAAQiiD,qBAGxBnB,EAAAzgD,UAAAoiD,gBAAA,WACI,OAAOx/C,KAAKy+C,cAGhBZ,EAAAzgD,UAAAqiD,kBAAA,WACI,OAAOz/C,KAAKjD,QAAQ4hD,yBAGxBd,EAAAzgD,UAAAsiD,iBAAA,WACI,OAAO1/C,KAAKk/C,wBAEnBrB,EA7ED,GF2BmBA,CADnBH,EG3BU,SAAWh8C,GAqJrB,OApJA,WACI,SAAA28C,EAAYthD,GACRiD,KAAK2/C,KAAO,GACZ3/C,KAAK4/C,UAAY7iD,EAAQgQ,SACzB/M,KAAK6/C,aAAe9iD,EAAQwhD,YAC5Bv+C,KAAK8/C,yBAA2B/iD,EAAQuhD,wBACpCvhD,EAAQyhD,oBACRx+C,KAAK+/C,mBAAqBhjD,EAAQyhD,kBAAkB3hD,QAAQ,MAAO,MAEvEmD,KAAKggD,gBAAkBjjD,EAAQ2hD,eAC/B1+C,KAAKy+C,aAAe1hD,EAAQ0hD,aACxB1hD,EAAQ6hD,oBACR5+C,KAAKigD,mBAAqBljD,EAAQ6hD,kBAAkB/hD,QAAQ,MAAO,MAEnEE,EAAQ8hD,mBACR7+C,KAAKkgD,mBAAqBnjD,EAAQ8hD,kBAAkBhiD,QAAQ,MAAO,KACQ,MAAvEmD,KAAKkgD,mBAAmBtsC,OAAO5T,KAAKkgD,mBAAmBrhD,OAAS,KAChEmB,KAAKkgD,oBAAsB,MAG/BlgD,KAAKkgD,mBAAqB,GAE9BlgD,KAAKmgD,mBAAqBpjD,EAAQ+hD,kBAClC9+C,KAAKogD,+BAAiC1+C,EAAY2+C,wBAElDrgD,KAAKsgD,YAAc,EACnBtgD,KAAKugD,QAAU,EAwHvB,OArHIlC,EAAcjhD,UAAAgiD,eAAd,SAAe3jC,GAQX,OAPIzb,KAAKigD,oBAAgE,IAA1CxkC,EAAK5J,QAAQ7R,KAAKigD,sBAEtB,QADvBxkC,EAAOA,EAAKsZ,UAAU/0B,KAAKigD,mBAAmBphD,SACrC+U,OAAO,IAAkC,MAAnB6H,EAAK7H,OAAO,KACvC6H,EAAOA,EAAKsZ,UAAU,KAIvBtZ,GAGX4iC,EAAiBjhD,UAAA+hD,kBAAjB,SAAkB39C,GAGd,OAFAA,EAAWA,EAAS3E,QAAQ,MAAO,KACnC2E,EAAWxB,KAAKo/C,eAAe59C,IACvBxB,KAAKkgD,oBAAsB,IAAM1+C,GAG7C68C,EAAGjhD,UAAA+Q,IAAH,SAAIC,EAAOjB,EAAUkB,EAAOqjB,GAGxB,GAAKtjB,EAAL,CAIA,IAAI6J,EAAOuoC,EAAaC,EAASC,EAAelwC,EAEhD,GAAIrD,GAAYA,EAAS3L,SAAU,CAC/B,IAAIm/C,EAAc3gD,KAAK6/C,aAAa1yC,EAAS3L,UAe7C,GAZIxB,KAAK8/C,yBAAyB3yC,EAAS3L,aAEvC6M,GAASrO,KAAK8/C,yBAAyB3yC,EAAS3L,WACpC,IAAK6M,EAAQ,GAEzBsyC,EAAcA,EAAY9tC,MAAM7S,KAAK8/C,yBAAyB3yC,EAAS3L,iBAOvDK,IAAhB8+C,EAEA,YADA3gD,KAAK2/C,KAAKn/C,KAAK4N,GAMnBsyC,GADAF,GADAG,EAAcA,EAAY5rB,UAAU,EAAG1mB,IACbsC,MAAM,OACJ6vC,EAAY3hD,OAAS,GAMrD,GAFA4hD,GADAxoC,EAAQ7J,EAAMuC,MAAM,OACJsH,EAAMpZ,OAAS,GAE3BsO,GAAYA,EAAS3L,SACrB,GAAKkwB,EAKD,IAAKlhB,EAAI,EAAGA,EAAIyH,EAAMpZ,OAAQ2R,IAC1BxQ,KAAK4gD,oBAAoBC,WAAW,CAAEC,UAAW,CAAEnrC,KAAM3V,KAAKsgD,YAAc9vC,EAAI,EAAGoF,OAAc,IAANpF,EAAUxQ,KAAKugD,QAAU,GAChHtlC,SAAU,CAAEtF,KAAM6qC,EAAY3hD,OAAS2R,EAAGoF,OAAc,IAANpF,EAAUkwC,EAAc7hD,OAAS,GACnFkiD,OAAQ/gD,KAAKm/C,kBAAkBhyC,EAAS3L,iBAPhDxB,KAAK4gD,oBAAoBC,WAAW,CAAEC,UAAW,CAAEnrC,KAAM3V,KAAKsgD,YAAc,EAAG1qC,OAAQ5V,KAAKugD,SACxFtlC,SAAU,CAAEtF,KAAM6qC,EAAY3hD,OAAQ+W,OAAQ8qC,EAAc7hD,QAC5DkiD,OAAQ/gD,KAAKm/C,kBAAkBhyC,EAAS3L,YAU/B,IAAjByW,EAAMpZ,OACNmB,KAAKugD,SAAWE,EAAQ5hD,QAExBmB,KAAKsgD,aAAeroC,EAAMpZ,OAAS,EACnCmB,KAAKugD,QAAUE,EAAQ5hD,QAG3BmB,KAAK2/C,KAAKn/C,KAAK4N,KAGnBiwC,EAAAjhD,UAAAkR,QAAA,WACI,OAA4B,IAArBtO,KAAK2/C,KAAK9gD,QAGrBw/C,EAAKjhD,UAAA2Q,MAAL,SAAMC,GAGF,GAFAhO,KAAK4gD,oBAAsB,IAAI5gD,KAAKogD,+BAA+B,CAAEY,KAAMhhD,KAAKggD,gBAAiBiB,WAAY,OAEzGjhD,KAAKmgD,mBACL,IAAK,IAAM3+C,KAAYxB,KAAK6/C,aAExB,GAAI7/C,KAAK6/C,aAAaxiD,eAAemE,GAAW,CAC5C,IAAIu/C,EAAS/gD,KAAK6/C,aAAar+C,GAC3BxB,KAAK8/C,yBAAyBt+C,KAC9Bu/C,EAASA,EAAOluC,MAAM7S,KAAK8/C,yBAAyBt+C,KAExDxB,KAAK4gD,oBAAoBM,iBAAiBlhD,KAAKm/C,kBAAkB39C,GAAWu/C,GAOxF,GAFA/gD,KAAK4/C,UAAU1xC,OAAOF,EAAShO,MAE3BA,KAAK2/C,KAAK9gD,OAAS,EAAG,CACtB,IAAI4/C,SACE0C,EAAmB5jD,KAAK6jD,UAAUphD,KAAK4gD,oBAAoBS,UAE7DrhD,KAAKy+C,aACLA,EAAez+C,KAAKy+C,aACbz+C,KAAK+/C,qBACZtB,EAAez+C,KAAK+/C,oBAExB//C,KAAKy+C,aAAeA,EAEpBz+C,KAAKg+C,UAAYmD,EAGrB,OAAOnhD,KAAK2/C,KAAKpxC,KAAK,KAE7B8vC,EAlJD,GH0BkBA,CADlB38C,EAAc,IAAIX,EAAYW,EAAaT,IAEUS,IAErDg8B,EIxBU,SAAUh8B,GA+KpB,OArKA,WACI,SAAA4/C,EAAYtY,EAAMh7B,EAASuzC,GACvBvhD,KAAKgpC,KAAOA,EACZhpC,KAAKo+C,aAAemD,EAAa//C,SACjCxB,KAAKsb,MAAQtN,EAAQsN,OAAS,GAC9Btb,KAAK4X,SAAW,GAChB5X,KAAKyzB,qBAAuB,GAC5BzzB,KAAKwhD,KAAOxzC,EAAQwzC,KACpBxhD,KAAKF,MAAQ,KACbE,KAAKgO,QAAUA,EAEfhO,KAAKyhD,MAAQ,GACbzhD,KAAKm+C,MAAQ,GAuJrB,OA5IImD,EAAIlkD,UAAAoD,KAAJ,SAAKib,EAAMyyB,EAAoBz6B,EAAiB6mB,EAAe9c,GAC3D,IAAMkgB,EAAgB19B,KAAM0hD,EAAe1hD,KAAKgO,QAAQlM,cAAcq6C,OAEtEn8C,KAAKyhD,MAAMjhD,KAAKib,GAEhB,IAAMkmC,EAAiB,SAAUniD,EAAGof,EAAMqB,GACtCyd,EAAc+jB,MAAM9gD,OAAO+8B,EAAc+jB,MAAM5vC,QAAQ4J,GAAO,GAE9D,IAAMmmC,EAAqB3hC,IAAayd,EAAc0gB,aAClD9jB,EAAcja,UAAY7gB,GAC1Bge,EAAS,KAAM,CAACoC,MAAM,KAAK,EAAO,MAClChe,EAAOzB,KAAK,mBAAY8f,EAAQ,gFAM3Byd,EAAcygB,MAAMl+B,IAAcqa,EAAcrb,SACjDye,EAAcygB,MAAMl+B,GAAY,CAAErB,KAAIA,EAAE7hB,QAASu9B,IAEjD96B,IAAMk+B,EAAc59B,QAAS49B,EAAc59B,MAAQN,GACvDge,EAAShe,EAAGof,EAAMgjC,EAAoB3hC,KAIxC4hC,EAAc,CAChB/qC,YAAa9W,KAAKgO,QAAQ8I,YAC1BijC,UAAWtmC,EAAgBsmC,UAC3Bp9B,SAAUlJ,EAAgBkJ,SAC1ByhC,aAAc3qC,EAAgB2qC,cAG5Bp8C,EAAcN,EAAYH,eAAeka,EAAMhI,EAAgBhS,iBAAkBzB,KAAKgO,QAAStM,GAErG,GAAKM,EAAL,CAKA,IA4DI8/C,EACAC,EA7DEC,EAAmB,SAASF,GAC9B,IAAI3uB,EACE8uB,EAAmBH,EAAWtgD,SAC9BoW,EAAWkqC,EAAWlqC,SAAS/a,QAAQ,UAAW,IAUxDglD,EAAYpgD,iBAAmBO,EAAY+d,QAAQkiC,GAC/CJ,EAAY/qC,cACZ+qC,EAAYllC,SAAW3a,EAAYuM,KAC9BmvB,EAAc1vB,QAAQ2O,UAAY,GACnC3a,EAAYysC,SAASoT,EAAYpgD,iBAAkBogD,EAAY9H,aAE9D/3C,EAAYssC,eAAeuT,EAAYllC,WAAa3a,EAAYqsC,4BACjEwT,EAAYllC,SAAW3a,EAAYuM,KAAKszC,EAAY9H,UAAW8H,EAAYllC,YAGnFklC,EAAYrgD,SAAWygD,EAEvB,IAAMC,EAAS,IAAInnC,EAASM,MAAMqiB,EAAc1vB,SAEhDk0C,EAAOruB,gBAAiB,EACxB6J,EAAc9lB,SAASqqC,GAAoBrqC,GAEvCnE,EAAgB22B,WAAa9P,EAAc8P,aAC3CyX,EAAYzX,WAAY,GAGxB9P,EAAcna,UACdgT,EAASuuB,EAAajS,WAAW73B,EAAUsqC,EAAQxkB,EAAepD,EAAciB,WAAYsmB,cACtEvqC,EAClBqqC,EAAexuB,EAAQ,KAAM8uB,GAG7BN,EAAe,KAAMxuB,EAAQ8uB,GAE1B3nB,EAAcrb,OACrB0iC,EAAe,KAAM/pC,EAAUqqC,IAI3BvkB,EAAcygB,MAAM8D,IAChBvkB,EAAcygB,MAAM8D,GAAkBllD,QAAQ0iB,UAC9C6a,EAAc7a,SAKlB,IAAIoS,GAAOqwB,EAAQxkB,EAAemkB,GAAarkD,MAAMoa,GAAU,SAAUpY,EAAGof,GACxE+iC,EAAeniD,EAAGof,EAAMqjC,MAJ5BN,EAAe,KAAMjkB,EAAcygB,MAAM8D,GAAkBrjC,KAAMqjC,IAWvEj0C,EAAUisC,EAAYj6C,KAAKgO,SAE7BkgC,IACAlgC,EAAQmgC,IAAM7T,EAAcna,SAAW,MAAQ,SAG/Cma,EAAcna,UACdnS,EAAQwzC,KAAO,yBAEXxzC,EAAQm0C,WACRL,EAAaJ,EAAaU,eAAe3mC,EAAMhI,EAAgBhS,iBAAkBuM,EAAStM,EAAaM,GAEvG+/C,EAAUL,EAAaW,WAAW5mC,EAAMhI,EAAgBhS,iBAAkBuM,EAAStM,EAAaM,IAIhGgM,EAAQm0C,WACRL,EAAa9/C,EAAYu4C,aAAa9+B,EAAMhI,EAAgBhS,iBAAkBuM,EAAStM,GAEvFqgD,EAAU//C,EAAYsgD,SAAS7mC,EAAMhI,EAAgBhS,iBAAkBuM,EAAStM,GAC5E,SAACsxB,EAAK8uB,GACE9uB,EACA2uB,EAAe3uB,GAEfgvB,EAAiBF,MAKjCA,EACKA,EAAWtgD,SAGZwgD,EAAiBF,GAFjBH,EAAeG,GAIZC,GACPA,EAAQQ,KAAKP,EAAkBL,QAtG/BA,EAAe,CAAElqC,QAAS,4CAAqCgE,MAyG1E6lC,EAnKD,GJcgBA,CAAc5/C,GAE9B,IAsCI8lC,EAtCEgb,EK9Bc,SAAA9gD,EAAao8C,GACjC,IAAM0E,EAAS,SAAU7qC,EAAO5a,EAASygB,GASrC,GARuB,mBAAZzgB,GACPygB,EAAWzgB,EACXA,EAAU0lD,EAAkBziD,KAAKjD,QAAS,KAG1CA,EAAU0lD,EAAkBziD,KAAKjD,QAASA,GAAW,KAGpDygB,EAAU,CACX,IAAMklC,EAAO1iD,KACb,OAAO,IAAI2iD,SAAQ,SAAUC,EAASC,GAClCL,EAAOllD,KAAKolD,EAAM/qC,EAAO5a,GAAS,SAASi2B,EAAKxkB,GACxCwkB,EACA6vB,EAAO7vB,GAEP4vB,EAAQp0C,SAKpBxO,KAAKxC,MAAMma,EAAO5a,GAAS,SAASi2B,EAAKpU,EAAMzB,EAASpgB,GACpD,GAAIi2B,EAAO,OAAOxV,EAASwV,GAE3B,IAAI/b,EACJ,IAEIA,EADkB,IAAI6mC,EAAUl/B,EAAMzB,GACnBpP,MAAMhR,GAE7B,MAAOi2B,GAAO,OAAOxV,EAASwV,GAE9BxV,EAAS,KAAMvG,OAK3B,OAAOurC,ELPQM,CAAOphD,EAAak8C,GAC7BpgD,EM3BI,SAAUkE,EAAao8C,EAAWwD,GAC5C,IAAM9jD,EAAQ,SAAUma,EAAO5a,EAASygB,GAUpC,GARuB,mBAAZzgB,GACPygB,EAAWzgB,EACXA,EAAU0lD,EAAkBziD,KAAKjD,QAAS,KAG1CA,EAAU0lD,EAAkBziD,KAAKjD,QAASA,GAAW,KAGpDygB,EAAU,CACX,IAAMklC,EAAO1iD,KACb,OAAO,IAAI2iD,SAAQ,SAAUC,EAASC,GAClCrlD,EAAMF,KAAKolD,EAAM/qC,EAAO5a,GAAS,SAASi2B,EAAKxkB,GACvCwkB,EACA6vB,EAAO7vB,GAEP4vB,EAAQp0C,SAKpB,IAAIu0C,EACAxB,SACEyB,EAAgB,IAAIjH,GAAc/7C,MAAOjD,EAAQkmD,oBAMvD,GAJAlmD,EAAQ+E,cAAgBkhD,EAExBD,EAAU,IAAIhoC,EAASM,MAAMte,GAEzBA,EAAQwkD,aACRA,EAAexkD,EAAQwkD,iBACpB,CACH,IAAM//C,EAAWzE,EAAQyE,UAAY,QAC/Bu4C,EAAYv4C,EAAS3E,QAAQ,WAAY,KAC/C0kD,EAAe,CACX//C,SAAQA,EACRsV,YAAaisC,EAAQjsC,YACrB6F,SAAUomC,EAAQpmC,UAAY,GAC9Blb,iBAAkBs4C,EAClBA,UAASA,EACTqE,aAAc58C,IAGDmb,UAAgD,MAApC4kC,EAAa5kC,SAAS9J,OAAO,KACtD0uC,EAAa5kC,UAAY,KAIjC,IAAMumC,EAAU,IAAI5B,EAActhD,KAAM+iD,EAASxB,GACjDvhD,KAAK09B,cAAgBwlB,EAKjBnmD,EAAQ+zC,SACR/zC,EAAQ+zC,QAAQnjC,SAAQ,SAASwlB,GAC7B,IAAIgwB,EAAYvrC,EAChB,GAAIub,EAAOiwB,aAGP,GAFAxrC,EAAWub,EAAOiwB,YAAYvmD,QAAQ,UAAW,KACjDsmD,EAAaH,EAAc7G,OAAO1M,WAAW73B,EAAUmrC,EAASG,EAAS/vB,EAAOp2B,QAASo2B,EAAO3xB,qBACtE8V,EACtB,OAAOkG,EAAS2lC,QAIpBH,EAAc1S,UAAUnd,MAKpC,IAAItB,GAAOkxB,EAASG,EAAS3B,GACxB/jD,MAAMma,GAAO,SAAUnY,EAAGof,GACvB,GAAIpf,EAAK,OAAOge,EAAShe,GACzBge,EAAS,KAAMoB,EAAMskC,EAASnmD,KAC/BA,IAGf,OAAOS,ENpDO6d,CAAM3Z,EAAak8C,EAAWlgB,GAEtC7sB,EAAIwyC,GAAa,qBACjBC,EAAU,CACZ9S,QAAS,CAAC3/B,EAAEusC,MAAOvsC,EAAEwsC,MAAOxsC,EAAEysC,OAC9B5wC,KAAIA,EACJoN,KAAIA,GACJ/Y,YAAWA,EACXitC,oBAAmBA,GACnBuB,qBAAoBA,GACpB7tC,YAAWA,EACX2pB,SAAQA,EACRwG,OAAMA,GACN1wB,UAAWA,GAAUO,GACrBqZ,SAAQA,EACRsjC,gBAAiBX,EACjBG,iBAAkBF,EAClBG,UAAWF,EACX0D,cAAe5jB,EACf8kB,OAAMA,EACNhlD,MAAKA,EACL8Z,UAASA,EACTikC,cAAaA,GACb/yB,MAAKA,EACLuzB,cAAaA,GACbn6C,OAAMA,GAKJ2hD,EAAO,SAAS/b,GAClB,OAAO,WACH,IAAMzxB,EAAM5Y,OAAOqb,OAAOgvB,EAAEpqC,WAE5B,OADAoqC,EAAEzpB,MAAMhI,EAAKtI,MAAMrQ,UAAUyV,MAAMvV,KAAKsgB,UAAW,IAC5C7H,IAITytC,EAAMrmD,OAAOqb,OAAO8qC,GAC1B,IAAK,IAAM5tC,KAAK4tC,EAAQxpC,KAGpB,GAAiB,mBADjB0tB,EAAI8b,EAAQxpC,KAAKpE,IAEb8tC,EAAI9tC,EAAE9C,eAAiB2wC,EAAK/b,QAI5B,IAAK,IAAMhN,KADXgpB,EAAI9tC,GAAKvY,OAAOqb,OAAO,MACPgvB,EAEZgc,EAAI9tC,GAAG8kB,EAAE5nB,eAAiB2wC,EAAK/b,EAAEhN,IAc7C,OAHA8oB,EAAQ9lD,MAAQ8lD,EAAQ9lD,MAAM8D,KAAKkiD,GACnCF,EAAQd,OAASc,EAAQd,OAAOlhD,KAAKkiD,GAE9BA,ED5FX,IAAIC,GAAY,GAGV3T,GAAc,aACpBA,GAAY1yC,UAAYD,OAAOgU,OAAO,IAAI68B,GAAuB,CAC7DK,wBAAuB,WACnB,OAAO,GAGX9/B,KAAI,SAACggC,EAAUC,GACX,OAAKD,EAGEvuC,KAAK8uC,gBAAgBN,EAAWD,GAAU9yB,KAFtC+yB,GAKfkV,eAAMztB,EAAKr1B,EAAM4c,EAAUmmC,GACvB,IAAMC,EAAM,IAAIC,eACVC,GAAQ/mD,GAAQgnD,gBAAiBhnD,GAAQinD,UAU/C,SAASC,EAAeL,EAAKpmC,EAAUmmC,GAC/BC,EAAIM,QAAU,KAAON,EAAIM,OAAS,IAClC1mC,EAASomC,EAAIO,aACTP,EAAIQ,kBAAkB,kBACA,mBAAZT,GACdA,EAAQC,EAAIM,OAAQjuB,GAbQ,mBAAzB2tB,EAAIS,kBACXT,EAAIS,iBAAiB,YAEzBziD,GAAOxB,MAAM,wBAAiB61B,EAAG,MACjC2tB,EAAIU,KAAK,MAAOruB,EAAK6tB,GACrBF,EAAIW,iBAAiB,SAAU3jD,GAAQ,4CACvCgjD,EAAIY,KAAK,MAWLznD,GAAQgnD,iBAAmBhnD,GAAQinD,UAChB,IAAfJ,EAAIM,QAAiBN,EAAIM,QAAU,KAAON,EAAIM,OAAS,IACvD1mC,EAASomC,EAAIO,cAEbR,EAAQC,EAAIM,OAAQjuB,GAEjB6tB,EACPF,EAAIa,mBAAqB,WACC,GAAlBb,EAAIc,YACJT,EAAeL,EAAKpmC,EAAUmmC,IAItCM,EAAeL,EAAKpmC,EAAUmmC,IAItCgB,SAAQ,WACJ,OAAO,GAGXC,eAAc,WACVnB,GAAY,IAGhBnB,SAAS,SAAA9gD,EAAUC,EAAkB1E,GAI7B0E,IAAqBzB,KAAKsuC,eAAe9sC,KACzCA,EAAWC,EAAmBD,GAGlCA,EAAWzE,EAAQoxC,IAAMnuC,KAAKkuC,mBAAmB1sC,EAAUzE,EAAQoxC,KAAO3sC,EAE1EzE,EAAUA,GAAW,GAIrB,IACMH,EADYoD,KAAK8uC,gBAAgBttC,EAAU9B,OAAOmlD,SAASjoD,MACrCq5B,IACtB7lB,EAAYpQ,KAElB,OAAO,IAAI2iD,SAAQ,SAACC,EAASC,GACzB,GAAI9lD,EAAQ+nD,cAAgBrB,GAAU7mD,GAClC,IACI,IAAMmoD,EAAWtB,GAAU7mD,GAC3B,OAAOgmD,EAAQ,CAAEhrC,SAAUmtC,EAAUvjD,SAAU5E,EAAMooD,QAAS,CAAEC,aAAc,IAAIC,QACpF,MAAO1lD,GACL,OAAOqjD,EAAO,CAAErhD,SAAU5E,EAAM6a,QAAS,sBAAsB1Z,OAAAnB,wBAAkB4C,EAAEiY,WAI3FrH,EAAKszC,MAAM9mD,EAAMG,EAAQykD,MAAM,SAAuB90C,EAAMu4C,GAExDxB,GAAU7mD,GAAQ8P,EAGlBk2C,EAAQ,CAAEhrC,SAAUlL,EAAMlL,SAAU5E,EAAMooD,QAAS,CAAEC,qBACtD,SAAoBf,EAAQjuB,GAC3B4sB,EAAO,CAAEjiD,KAAM,OAAQ6W,QAAS,IAAA1Z,OAAIk4B,EAAG,oBAAAl4B,OAAmBmmD,EAAS,KAAEtnD,KAAIA,aAMzF,IAAAuoD,GAAe,SAAC1uC,EAAM2uC,GAGlB,OAFAroD,GAAU0Z,EACV7U,GAASwjD,EACFtV,IQtGLsM,GAAe,SAASpT,GAC1BhpC,KAAKgpC,KAAOA,GAIhBoT,GAAah/C,UAAYD,OAAOgU,OAAO,IAAIo+B,GAAwB,CAC/D8S,WAAU,SAAC7gD,EAAU+sC,EAAUvgC,EAAStM,EAAaM,GACjD,OAAO,IAAI2gD,SAAQ,SAAC0C,EAASxC,GACzB7gD,EAAYsgD,SAAS9gD,EAAU+sC,EAAUvgC,EAAStM,GAC7C6gD,KAAK8C,GAASC,MAAMzC,SCjBrC,ICGA0C,GAAA,SAAgB7lD,EAAQspC,EAAMjsC,GAkK1B,MAAO,CACHoR,IAXJ,SAAe3O,EAAGgmD,GACTzoD,EAAQ0oD,gBAA6C,SAA3B1oD,EAAQ0oD,eAED,YAA3B1oD,EAAQ0oD,eA7BvB,SAAsBjmD,EAAGgmD,GACrB,IACMhkD,EAAWhC,EAAEgC,UAAYgkD,EACzBE,EAAS,GACXtsB,EAAU,GAAAr7B,OAAGyB,EAAEoB,MAAQ,SAAkB,WAAA7C,OAAAyB,EAAEiY,SAAW,uCAA6C,QAAA1Z,OAAAyD,GAEjGmkD,EAAY,SAACnmD,EAAGgR,EAAGo1C,QACA/jD,IAAjBrC,EAAE+Y,QAAQ/H,IACVk1C,EAAOllD,KAPE,mBAOY3D,QAAQ,YAAa4T,SAASjR,EAAEmW,KAAM,KAAO,IAAMnF,EAAI,IACvE3T,QAAQ,YAAa+oD,GACrB/oD,QAAQ,cAAe2C,EAAE+Y,QAAQ/H,MAI1ChR,EAAEmW,OACFgwC,EAAUnmD,EAAG,EAAG,IAChBmmD,EAAUnmD,EAAG,EAAG,QAChBmmD,EAAUnmD,EAAG,EAAG,IAChB45B,GAAW,YAAYr7B,OAAAyB,EAAEmW,KAAI,aAAA5X,OAAYyB,EAAEoW,OAAS,EAAC,OAAA7X,OAAM2nD,EAAOn3C,KAAK,QAEvE/O,EAAEkY,QAAUlY,EAAE+Y,SAAWxb,EAAQ8oD,UAAY,KAC7CzsB,GAAW,kBAAkBr7B,OAAAyB,EAAEkY,QAEnCsxB,EAAKpnC,OAAO9B,MAAMs5B,GAOd0sB,CAAatmD,EAAGgmD,GACyB,mBAA3BzoD,EAAQ0oD,gBACtB1oD,EAAQ0oD,eAAe,MAAOjmD,EAAGgmD,GA5JzC,SAAmBhmD,EAAGgmD,GAClB,IAGIO,EACA3sB,EAJEt7B,EAAK,sBAAsBC,OAAAE,EAAgBunD,GAAY,KAEvD7tB,EAAOj4B,EAAO/B,SAASW,cAAc,OAGrConD,EAAS,GACTlkD,EAAWhC,EAAEgC,UAAYgkD,EACzBQ,EAAiBxkD,EAAS6O,MAAM,mBAAmB,GAEzDsnB,EAAK75B,GAAYA,EACjB65B,EAAKsuB,UAAY,qBAEjB7sB,EAAU,OAAAr7B,OAAOyB,EAAEoB,MAAQ,SAAQ,WAAA7C,OAAUyB,EAAEiY,SAAW,wCACtD,uBAAA1Z,OAAuByD,EAAQ,MAAAzD,OAAKioD,EAAc,SAEtD,IAAML,EAAY,SAACnmD,EAAGgR,EAAGo1C,QACA/jD,IAAjBrC,EAAE+Y,QAAQ/H,IACVk1C,EAAOllD,KAhBE,qEAgBY3D,QAAQ,YAAa4T,SAASjR,EAAEmW,KAAM,KAAO,IAAMnF,EAAI,IACvE3T,QAAQ,YAAa+oD,GACrB/oD,QAAQ,cAAe2C,EAAE+Y,QAAQ/H,MAI1ChR,EAAEmW,OACFgwC,EAAUnmD,EAAG,EAAG,IAChBmmD,EAAUnmD,EAAG,EAAG,QAChBmmD,EAAUnmD,EAAG,EAAG,IAChB45B,GAAW,WAAWr7B,OAAAyB,EAAEmW,KAAI,aAAA5X,OAAYyB,EAAEoW,OAAS,EAAC,aAAA7X,OAAY2nD,EAAOn3C,KAAK,cAE5E/O,EAAEkY,QAAUlY,EAAE+Y,SAAWxb,EAAQ8oD,UAAY,KAC7CzsB,GAAW,iCAA0B55B,EAAEkY,MAAM/G,MAAM,MAAMkC,MAAM,GAAGtE,KAAK,WAE3EopB,EAAKuuB,UAAY9sB,EAGjB17B,EAAkBgC,EAAO/B,SAAU,CAC/B,mDACA,yBACA,sBACA,kBACA,aACA,IACA,8BACA,mBACA,sBACA,kBACA,kBACA,IACA,4BACA,kBACA,kBACA,aACA,yBACA,IACA,iCACA,kBACA,IACA,2BACA,mBACA,qBACA,yBACA,aACA,IACA,0BACA,cACA,IACA,+BACA,cACA,qBACA,uBACA,iCACA,KACF4Q,KAAK,MAAO,CAAEvQ,MAAO,kBAEvB25B,EAAK2hB,MAAM/5C,QAAU,CACjB,iCACA,yBACA,yBACA,qBACA,6BACA,0BACA,cACA,gBACA,uBACFgP,KAAK,KAEa,gBAAhBxR,EAAQopD,MACRJ,EAAQK,aAAY,WAChB,IAAMzoD,EAAW+B,EAAO/B,SAClBi/B,EAAOj/B,EAASi/B,KAClBA,IACIj/B,EAASQ,eAAeL,GACxB8+B,EAAKypB,aAAa1uB,EAAMh6B,EAASQ,eAAeL,IAEhD8+B,EAAKv9B,aAAas4B,EAAMiF,EAAK99B,YAEjCwnD,cAAcP,MAEnB,KAqDHQ,CAAU/mD,EAAGgmD,IAUjBgB,OAhDJ,SAAqB/qC,GACZ1e,EAAQ0oD,gBAA6C,SAA3B1oD,EAAQ0oD,eAED,YAA3B1oD,EAAQ0oD,gBAE0B,mBAA3B1oD,EAAQ0oD,gBACtB1oD,EAAQ0oD,eAAe,SAAUhqC,GAjBzC,SAAyBA,GACrB,IAAMjO,EAAO9N,EAAO/B,SAASQ,eAAe,sBAAsBJ,OAAAE,EAAgBwd,KAC9EjO,GACAA,EAAKpO,WAAWE,YAAYkO,GAU5Bi5C,CAAgBhrC,MChHtB1e,GCPK,CAEH6tC,mBAAmB,EAGnB8b,SAAS,EAKT/0C,UAAU,EAGVg1C,MAAM,EAONrrC,MAAO,GAGP7J,OAAO,EAKPgoB,eAAe,EAGfmtB,UAAU,EAKVjqC,SAAU,GAMV7F,aAAa,EAQbH,KAAM,EAGNgvB,aAAa,EAKb9S,WAAY,KAIZC,WAAY,KAGZ6W,QAAS,IDxDjB,GAAIjqC,OAAOspC,KACP,IAAK,IAAMr2B,MAAOjT,OAAOspC,KACjB7rC,OAAOC,UAAUC,eAAeC,KAAKoC,OAAOspC,KAAMr2B,MAClD5V,GAAQ4V,IAAOjT,OAAOspC,KAAKr2B,MEXxB,SAACjT,EAAQ3C,GAGpBD,EAAYC,EAASW,EAAsBgC,SAEZmC,IAA3B9E,EAAQgnD,iBACRhnD,EAAQgnD,eAAiB,yDAAyDroC,KAAKhc,EAAOmlD,SAASgC,WAS3G9pD,EAAQ+mD,MAAQ/mD,EAAQ+mD,QAAS,EACjC/mD,EAAQinD,UAAYjnD,EAAQinD,YAAa,EAGzCjnD,EAAQ+pD,KAAO/pD,EAAQ+pD,OAAS/pD,EAAQgnD,eAAiB,IAAO,MAEhEhnD,EAAQopD,IAAMppD,EAAQopD,MAAoC,aAA5BzmD,EAAOmlD,SAASkC,UACd,WAA5BrnD,EAAOmlD,SAASkC,UACY,aAA5BrnD,EAAOmlD,SAASkC,UACfrnD,EAAOmlD,SAASmC,MACbtnD,EAAOmlD,SAASmC,KAAKnoD,OAAS,GAClC9B,EAAQgnD,eAAmC,cACzC,cAEN,IAAMvqB,EAAkB,6CAA6C9L,KAAKhuB,EAAOmlD,SAASzjB,MACtF5H,IACAz8B,EAAQy8B,gBAAkBA,EAAgB,SAGjB33B,IAAzB9E,EAAQ+nD,eACR/nD,EAAQ+nD,cAAe,QAGHjjD,IAApB9E,EAAQkqD,UACRlqD,EAAQkqD,SAAU,GAGlBlqD,EAAQ8Z,eACR9Z,EAAQ+Z,YAAc,OF5B9BowC,CAAkBxnD,OAAQ3C,IAE1BA,GAAQ+zC,QAAU/zC,GAAQ+zC,SAAW,GAEjCpxC,OAAOynD,eACPpqD,GAAQ+zC,QAAU/zC,GAAQ+zC,QAAQ/yC,OAAO2B,OAAOynD,eAG9C,IAKFjoC,GACAlgB,GACAs6C,GAPEtQ,GGZS,SAACtpC,EAAQ3C,GACpB,IAAMY,EAAW+B,EAAO/B,SAClBqrC,EAAOyU,KAEbzU,EAAKjsC,QAAUA,EACf,IAAM2E,EAAcsnC,EAAKtnC,YACnBouC,EAAcqV,GAAGpoD,EAASisC,EAAKpnC,QAC/BI,EAAc,IAAI8tC,EACxBpuC,EAAYO,eAAeD,GAC3BgnC,EAAK8G,YAAcA,EACnB9G,EAAKoT,aAAeA,GLxBT,SAACpT,EAAMjsC,GAYlBA,EAAQ8oD,cAAuC,IAArB9oD,EAAQ8oD,SAA2B9oD,EAAQ8oD,SAA4B,gBAAhB9oD,EAAQopD,IAVnE,EAEC,EAUlBppD,EAAQqqD,UACTrqD,EAAQqqD,QAAU,CAAC,CACfhnD,MAAO,SAASL,GACRhD,EAAQ8oD,UAhBD,GAiBPwB,QAAQjC,IAAIrlD,IAGpBI,KAAM,SAASJ,GACPhD,EAAQ8oD,UApBF,GAqBNwB,QAAQjC,IAAIrlD,IAGpBG,KAAM,SAASH,GACPhD,EAAQ8oD,UAxBF,GAyBNwB,QAAQnnD,KAAKH,IAGrBD,MAAO,SAASC,GACRhD,EAAQ8oD,UA5BD,GA6BPwB,QAAQvnD,MAAMC,OAK9B,IAAK,IAAIW,EAAI,EAAGA,EAAI3D,EAAQqqD,QAAQvoD,OAAQ6B,IACxCsoC,EAAKpnC,OAAOvB,YAAYtD,EAAQqqD,QAAQ1mD,IKb5C4mD,CAAYte,EAAMjsC,GAClB,IAAM2oD,EAASH,GAAe7lD,EAAQspC,EAAMjsC,GACtCwqD,EAAQve,EAAKue,MAAQxqD,EAAQwqD,OC1BvC,SAAgB7nD,EAAQ3C,EAAS6E,GAC7B,IAAI2lD,EAAQ,KACZ,GAAoB,gBAAhBxqD,EAAQopD,IACR,IACIoB,OAAwC,IAAxB7nD,EAAO8nD,aAAgC,KAAO9nD,EAAO8nD,aACvE,MAAO/pD,IAEb,MAAO,CACHgqD,OAAQ,SAAShsC,EAAMwpC,EAAcnyB,EAAYl1B,GAC7C,GAAI2pD,EAAO,CACP3lD,EAAOzB,KAAK,iBAAUsb,EAAI,eAC1B,IACI8rC,EAAMG,QAAQjsC,EAAM7d,GACpB2pD,EAAMG,QAAQ,GAAA3pD,OAAG0d,EAAgB,cAAEwpC,GAC/BnyB,GACAy0B,EAAMG,QAAQ,GAAA3pD,OAAG0d,EAAW,SAAEle,KAAK6jD,UAAUtuB,IAEnD,MAAOtzB,GAELoC,EAAO9B,MAAM,0BAAmB2b,EAAI,uCAIhDksC,OAAQ,SAASlsC,EAAMupC,EAASlyB,GAC5B,IAAM5T,EAAYqoC,GAASA,EAAMK,QAAQnsC,GACnCosC,EAAYN,GAASA,EAAMK,QAAQ,GAAG7pD,OAAA0d,EAAgB,eACxDyhB,EAAYqqB,GAASA,EAAMK,QAAQ,GAAG7pD,OAAA0d,EAAW,UAKrD,GAHAqX,EAAaA,GAAc,GAC3BoK,EAAOA,GAAQ,KAEX2qB,GAAa7C,EAAQC,cACpB,IAAIC,KAAKF,EAAQC,cAAc6C,YAC5B,IAAI5C,KAAK2C,GAAWC,WACxBvqD,KAAK6jD,UAAUtuB,KAAgBoK,EAE/B,OAAOhe,IDVyB6oC,CAAMroD,EAAQ3C,EAASisC,EAAKpnC,SEzB7D,WACX,SAASomD,IACL,KAAM,CACFpnD,KAAM,UACN6W,QAAS,qEAIjB,IAAMwwC,EAAiB,CACnBC,aAAc,SAAStO,GAEnB,OADAoO,KACQ,GAEZG,cAAe,SAASvO,GAEpB,OADAoO,KACQ,GAEZI,eAAgB,SAASxO,GAErB,OADAoO,KACQ,IAIhBn3B,GAAiBI,YAAYg3B,GFG7BI,CAAUrf,EAAKtnC,aAGX3E,EAAQoE,WACR6nC,EAAK7nC,UAAU0vB,iBAAiBI,YAAYl0B,EAAQoE,WAGxD,IAAMmnD,EAAc,oBAEpB,SAAS50C,EAAMqC,GACX,IAAMC,EAAS,GACf,IAAK,IAAMC,KAAQF,EACX5Y,OAAOC,UAAUC,eAAeC,KAAKyY,EAAKE,KAC1CD,EAAOC,GAAQF,EAAIE,IAG3B,OAAOD,EAIX,SAAS1U,EAAK6W,EAAMowC,GAChB,IAAMC,EAAY/6C,MAAMrQ,UAAUyV,MAAMvV,KAAKsgB,UAAW,GACxD,OAAO,WACH,IAAMhM,EAAO42C,EAAUzqD,OAAO0P,MAAMrQ,UAAUyV,MAAMvV,KAAKsgB,UAAW,IACpE,OAAOzF,EAAK4F,MAAMwqC,EAAS32C,IAInC,SAAS62C,EAAW31B,GAIhB,IAHA,IACIwmB,EADE17C,EAASD,EAASsB,qBAAqB,SAGpCyB,EAAI,EAAGA,EAAI9C,EAAOiB,OAAQ6B,IAE/B,IADA44C,EAAQ17C,EAAO8C,IACLE,KAAKyP,MAAMi4C,GAAc,CAC/B,IAAMI,EAAkBh1C,EAAM3W,GAC9B2rD,EAAgB51B,WAAaA,EAC7B,IAAMiyB,EAAWzL,EAAM4M,WAAa,GACpCwC,EAAgBlnD,SAAW7D,EAASknD,SAASjoD,KAAKC,QAAQ,OAAQ,IAIlEmsC,EAAKwZ,OAAOuC,EAAU2D,EAClBpnD,GAAK,SAACg4C,EAAO95C,EAAGyX,GACRzX,EACAkmD,EAAOv3C,IAAI3O,EAAG,WAEd85C,EAAM14C,KAAO,WACT04C,EAAM76C,WACN66C,EAAM76C,WAAWc,QAAU0X,EAAOiI,IAElCo6B,EAAM4M,UAAYjvC,EAAOiI,OAGlC,KAAMo6B,KAKzB,SAASqP,EAAe9qD,EAAO2f,EAAUorC,EAAQC,EAAW/1B,GAExD,IAAM41B,EAAkBh1C,EAAM3W,GAC9BD,EAAY4rD,EAAiB7qD,GAC7B6qD,EAAgBlH,KAAO3jD,EAAM+C,KAEzBkyB,IACA41B,EAAgB51B,WAAaA,GA6CjC9wB,EAAYsgD,SAASzkD,EAAMjB,KAAM,KAAM8rD,EAAiBhnD,GACnD6gD,MAAK,SAAAT,IA3CV,SAAiCA,GAC7B,IAAMp1C,EAAOo1C,EAAWlqC,SAClB6D,EAAOqmC,EAAWtgD,SAClBwjD,EAAUlD,EAAWkD,QAErBnD,EAAc,CAChBpgD,iBAAkBO,EAAY+d,QAAQtE,GACtCja,SAAUia,EACV2iC,aAAc3iC,EACd3E,YAAa4xC,EAAgB5xC,aAMjC,GAHA+qC,EAAY9H,UAAY8H,EAAYpgD,iBACpCogD,EAAYllC,SAAW+rC,EAAgB/rC,UAAYklC,EAAYpgD,iBAE3DujD,EAAS,CACTA,EAAQ6D,UAAYA,EAEpB,IAAM3pC,EAAMqoC,EAAMI,OAAOlsC,EAAMupC,EAAS0D,EAAgB51B,YACxD,IAAK81B,GAAU1pC,EAGX,OAFA8lC,EAAQ8D,OAAQ,OAChBtrC,EAAS,KAAM0B,EAAKxS,EAAM7O,EAAOmnD,EAASvpC,GAOlDiqC,EAAOc,OAAO/qC,GAEditC,EAAgBnH,aAAeM,EAC/B7Y,EAAKwZ,OAAO91C,EAAMg8C,GAAiB,SAAClpD,EAAGyX,GAC/BzX,GACAA,EAAE5C,KAAO6e,EACT+B,EAAShe,KAET+nD,EAAME,OAAO5pD,EAAMjB,KAAMooD,EAAQC,aAAcyD,EAAgB51B,WAAY7b,EAAOiI,KAClF1B,EAAS,KAAMvG,EAAOiI,IAAKxS,EAAM7O,EAAOmnD,EAASvpC,OAOrDstC,CAAwBjH,MACzBwD,OAAM,SAAAtyB,GACLq0B,QAAQjC,IAAIpyB,GACZxV,EAASwV,MAKrB,SAASg2B,EAAgBxrC,EAAUorC,EAAQ91B,GACvC,IAAK,IAAIjyB,EAAI,EAAGA,EAAImoC,EAAKigB,OAAOpqD,OAAQgC,IACpC8nD,EAAe3f,EAAKigB,OAAOpoD,GAAI2c,EAAUorC,EAAQ5f,EAAKigB,OAAOpqD,QAAUgC,EAAI,GAAIiyB,GAuIvF,OA3GAkW,EAAKkgB,MAAQ,WAMT,OALKlgB,EAAKmgB,YACNngB,EAAKmd,IAAM,cAzBE,gBAAbnd,EAAKmd,MACLnd,EAAKogB,WAAahD,aAAY,WACtBpd,EAAKmgB,YACLnnD,EAAY4iD,iBAKZoE,GAAgB,SAACxpD,EAAG0f,EAAKzhB,EAAGI,EAAOmnD,GAC3BxlD,EACAkmD,EAAOv3C,IAAI3O,EAAGA,EAAE5C,MAAQiB,EAAMjB,MACvBsiB,GACPxhB,EAAkBgC,EAAO/B,SAAUuhB,EAAKrhB,SAIrDd,EAAQ+pD,QAYf9mD,KAAKmpD,WAAY,GACV,GAGXngB,EAAKqgB,QAAU,WAAqE,OAAxD/C,cAActd,EAAKogB,YAAappD,KAAKmpD,WAAY,GAAc,GAM3FngB,EAAKsgB,+BAAiC,WAClC,IAAMC,EAAQ5rD,EAASsB,qBAAqB,QAC5C+pC,EAAKigB,OAAS,GAEd,IAAK,IAAIr+B,EAAI,EAAGA,EAAI2+B,EAAM1qD,OAAQ+rB,KACT,oBAAjB2+B,EAAM3+B,GAAG4+B,KAA8BD,EAAM3+B,GAAG4+B,IAAIn5C,MAAM,eACzDk5C,EAAM3+B,GAAGhqB,KAAKyP,MAAMi4C,KACrBtf,EAAKigB,OAAOzoD,KAAK+oD,EAAM3+B,KASnCoe,EAAKygB,oBAAsB,WAAM,OAAA,IAAI9G,SAAQ,SAACC,GAC1C5Z,EAAKsgB,iCACL1G,QAOJ5Z,EAAKlW,WAAa,SAAA42B,GAAU,OAAA1gB,EAAK2gB,SAAQ,EAAMD,GAAQ,IAEvD1gB,EAAK2gB,QAAU,SAACf,EAAQ91B,EAAY8xB,GAIhC,OAHKgE,GAAUhE,KAAsC,IAAnBA,GAC9B5iD,EAAY4iD,iBAET,IAAIjC,SAAQ,SAACC,EAASC,GACzB,IAAI+G,EACAC,EACAC,EACAC,EACJH,EAAYC,EAAU,IAAI3E,KAKF,KAFxB6E,EAAkB/gB,EAAKigB,OAAOpqD,SAI1BgrD,EAAU,IAAI3E,KACd4E,EAAoBD,EAAUD,EAC9B5gB,EAAKpnC,OAAOzB,KAAK,gDACjByiD,EAAQ,CACJgH,UAASA,EACTC,QAAOA,EACPC,kBAAiBA,EACjBb,OAAQjgB,EAAKigB,OAAOpqD,UAKxBmqD,GAAgB,SAACxpD,EAAG0f,EAAKzhB,EAAGI,EAAOmnD,GAC/B,GAAIxlD,EAGA,OAFAkmD,EAAOv3C,IAAI3O,EAAGA,EAAE5C,MAAQiB,EAAMjB,WAC9BimD,EAAOrjD,GAGPwlD,EAAQ8D,MACR9f,EAAKpnC,OAAOzB,KAAK,WAAWpC,OAAAF,EAAMjB,KAAkB,iBAEpDosC,EAAKpnC,OAAOzB,KAAK,YAAYpC,OAAAF,EAAMjB,KAAoB,mBAE3Dc,EAAkBgC,EAAO/B,SAAUuhB,EAAKrhB,GACxCmrC,EAAKpnC,OAAOzB,KAAK,kBAAWtC,EAAMjB,KAAI,kBAAAmB,OAAiB,IAAImnD,KAAS2E,EAAO,OAMnD,MAHxBE,IAIID,EAAoB,IAAI5E,KAAS0E,EACjC5gB,EAAKpnC,OAAOzB,KAAK,uCAAuCpC,OAAA+rD,EAAqB,OAC7ElH,EAAQ,CACJgH,UAASA,EACTC,QAAOA,EACPC,kBAAiBA,EACjBb,OAAQjgB,EAAKigB,OAAOpqD,UAG5BgrD,EAAU,IAAI3E,OACf0D,EAAQ91B,GAGf21B,EAAW31B,OAInBkW,EAAKghB,cAAgBvB,EACdzf,EHrQEpqB,CAAKlf,OAAQ3C,IAU1B,SAASktD,GAAgBv9C,GACjBA,EAAKlL,UACL6lD,QAAQnnD,KAAKwM,GAEZ3P,GAAQ+mD,OACT9kD,GAAKM,YAAYg6C,WAZzB55C,OAAOspC,KAAOA,GAgBVjsC,GAAQkqD,UACJ,SAASvrC,KAAKhc,OAAOmlD,SAASzjB,OAC9B4H,GAAKkgB,QAGJnsD,GAAQ+mD,QACT5kC,GAAM,oCACNlgB,GAAOrB,SAASqB,MAAQrB,SAASsB,qBAAqB,QAAQ,IAC9Dq6C,GAAQ37C,SAASW,cAAc,UAEzBsC,KAAO,WACT04C,GAAM76C,WACN66C,GAAM76C,WAAWc,QAAU2f,GAE3Bo6B,GAAM56C,YAAYf,SAASgB,eAAeugB,KAG9ClgB,GAAKN,YAAY46C,KAErBtQ,GAAKsgB,iCACLtgB,GAAKkhB,iBAAmBlhB,GAAK2gB,QAAqB,gBAAb3gB,GAAKmd,KAAuB5D,KAAK0H,GAAiBA"}
\ No newline at end of file
diff --git a/lerna.json b/lerna.json
deleted file mode 100644
index 53b6ab6541..0000000000
--- a/lerna.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "packages": [
- "packages/*"
- ],
- "useNx": false,
- "npmClient": "npm",
- "version": "4.2.2"
-}
diff --git a/package-lock.json b/package-lock.json
deleted file mode 100644
index 5abb2a85b4..0000000000
--- a/package-lock.json
+++ /dev/null
@@ -1,19651 +0,0 @@
-{
- "name": "@less/root",
- "version": "4.2.2",
- "lockfileVersion": 2,
- "requires": true,
- "packages": {
- "": {
- "name": "@less/root",
- "version": "4.2.2",
- "hasInstallScript": true,
- "license": "Apache-2.0",
- "devDependencies": {
- "github-changes": "^1.1.2",
- "lerna": "^3.22.1",
- "npm-run-all": "^4.1.5"
- }
- },
- "node_modules/@babel/code-frame": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/highlight": "^7.22.5"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/helper-validator-identifier": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/highlight": {
- "version": "7.22.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@babel/helper-validator-identifier": "^7.22.5",
- "chalk": "^2.0.0",
- "js-tokens": "^4.0.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@evocateur/libnpmaccess": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/@evocateur/libnpmaccess/-/libnpmaccess-3.1.2.tgz",
- "integrity": "sha512-KSCAHwNWro0CF2ukxufCitT9K5LjL/KuMmNzSu8wuwN2rjyKHD8+cmOsiybK+W5hdnwc5M1SmRlVCaMHQo+3rg==",
- "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
- "dev": true,
- "dependencies": {
- "@evocateur/npm-registry-fetch": "^4.0.0",
- "aproba": "^2.0.0",
- "figgy-pudding": "^3.5.1",
- "get-stream": "^4.0.0",
- "npm-package-arg": "^6.1.0"
- }
- },
- "node_modules/@evocateur/libnpmpublish": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/@evocateur/libnpmpublish/-/libnpmpublish-1.2.2.tgz",
- "integrity": "sha512-MJrrk9ct1FeY9zRlyeoyMieBjGDG9ihyyD9/Ft6MMrTxql9NyoEx2hw9casTIP4CdqEVu+3nQ2nXxoJ8RCXyFg==",
- "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
- "dev": true,
- "dependencies": {
- "@evocateur/npm-registry-fetch": "^4.0.0",
- "aproba": "^2.0.0",
- "figgy-pudding": "^3.5.1",
- "get-stream": "^4.0.0",
- "lodash.clonedeep": "^4.5.0",
- "normalize-package-data": "^2.4.0",
- "npm-package-arg": "^6.1.0",
- "semver": "^5.5.1",
- "ssri": "^6.0.1"
- }
- },
- "node_modules/@evocateur/libnpmpublish/node_modules/semver": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
- "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
- "dev": true,
- "bin": {
- "semver": "bin/semver"
- }
- },
- "node_modules/@evocateur/npm-registry-fetch": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/@evocateur/npm-registry-fetch/-/npm-registry-fetch-4.0.0.tgz",
- "integrity": "sha512-k1WGfKRQyhJpIr+P17O5vLIo2ko1PFLKwoetatdduUSt/aQ4J2sJrJwwatdI5Z3SiYk/mRH9S3JpdmMFd/IK4g==",
- "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
- "dev": true,
- "dependencies": {
- "bluebird": "^3.5.1",
- "figgy-pudding": "^3.4.1",
- "JSONStream": "^1.3.4",
- "lru-cache": "^5.1.1",
- "make-fetch-happen": "^5.0.0",
- "npm-package-arg": "^6.1.0",
- "safe-buffer": "^5.1.2"
- }
- },
- "node_modules/@evocateur/pacote": {
- "version": "9.6.5",
- "resolved": "https://registry.npmjs.org/@evocateur/pacote/-/pacote-9.6.5.tgz",
- "integrity": "sha512-EI552lf0aG2nOV8NnZpTxNo2PcXKPmDbF9K8eCBFQdIZwHNGN/mi815fxtmUMa2wTa1yndotICIDt/V0vpEx2w==",
- "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
- "dev": true,
- "dependencies": {
- "@evocateur/npm-registry-fetch": "^4.0.0",
- "bluebird": "^3.5.3",
- "cacache": "^12.0.3",
- "chownr": "^1.1.2",
- "figgy-pudding": "^3.5.1",
- "get-stream": "^4.1.0",
- "glob": "^7.1.4",
- "infer-owner": "^1.0.4",
- "lru-cache": "^5.1.1",
- "make-fetch-happen": "^5.0.0",
- "minimatch": "^3.0.4",
- "minipass": "^2.3.5",
- "mississippi": "^3.0.0",
- "mkdirp": "^0.5.1",
- "normalize-package-data": "^2.5.0",
- "npm-package-arg": "^6.1.0",
- "npm-packlist": "^1.4.4",
- "npm-pick-manifest": "^3.0.0",
- "osenv": "^0.1.5",
- "promise-inflight": "^1.0.1",
- "promise-retry": "^1.1.1",
- "protoduck": "^5.0.1",
- "rimraf": "^2.6.3",
- "safe-buffer": "^5.2.0",
- "semver": "^5.7.0",
- "ssri": "^6.0.1",
- "tar": "^4.4.10",
- "unique-filename": "^1.1.1",
- "which": "^1.3.1"
- }
- },
- "node_modules/@evocateur/pacote/node_modules/rimraf": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
- "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
- "dev": true,
- "dependencies": {
- "glob": "^7.1.3"
- },
- "bin": {
- "rimraf": "bin.js"
- }
- },
- "node_modules/@evocateur/pacote/node_modules/semver": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
- "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
- "dev": true,
- "bin": {
- "semver": "bin/semver"
- }
- },
- "node_modules/@lerna/add": {
- "version": "3.21.0",
- "resolved": "https://registry.npmjs.org/@lerna/add/-/add-3.21.0.tgz",
- "integrity": "sha512-vhUXXF6SpufBE1EkNEXwz1VLW03f177G9uMOFMQkp6OJ30/PWg4Ekifuz9/3YfgB2/GH8Tu4Lk3O51P2Hskg/A==",
- "dev": true,
- "dependencies": {
- "@evocateur/pacote": "^9.6.3",
- "@lerna/bootstrap": "3.21.0",
- "@lerna/command": "3.21.0",
- "@lerna/filter-options": "3.20.0",
- "@lerna/npm-conf": "3.16.0",
- "@lerna/validation-error": "3.13.0",
- "dedent": "^0.7.0",
- "npm-package-arg": "^6.1.0",
- "p-map": "^2.1.0",
- "semver": "^6.2.0"
- },
- "engines": {
- "node": ">= 6.9.0"
- }
- },
- "node_modules/@lerna/add/node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true,
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/@lerna/bootstrap": {
- "version": "3.21.0",
- "resolved": "https://registry.npmjs.org/@lerna/bootstrap/-/bootstrap-3.21.0.tgz",
- "integrity": "sha512-mtNHlXpmvJn6JTu0KcuTTPl2jLsDNud0QacV/h++qsaKbhAaJr/FElNZ5s7MwZFUM3XaDmvWzHKaszeBMHIbBw==",
- "dev": true,
- "dependencies": {
- "@lerna/command": "3.21.0",
- "@lerna/filter-options": "3.20.0",
- "@lerna/has-npm-version": "3.16.5",
- "@lerna/npm-install": "3.16.5",
- "@lerna/package-graph": "3.18.5",
- "@lerna/pulse-till-done": "3.13.0",
- "@lerna/rimraf-dir": "3.16.5",
- "@lerna/run-lifecycle": "3.16.2",
- "@lerna/run-topologically": "3.18.5",
- "@lerna/symlink-binary": "3.17.0",
- "@lerna/symlink-dependencies": "3.17.0",
- "@lerna/validation-error": "3.13.0",
- "dedent": "^0.7.0",
- "get-port": "^4.2.0",
- "multimatch": "^3.0.0",
- "npm-package-arg": "^6.1.0",
- "npmlog": "^4.1.2",
- "p-finally": "^1.0.0",
- "p-map": "^2.1.0",
- "p-map-series": "^1.0.0",
- "p-waterfall": "^1.0.0",
- "read-package-tree": "^5.1.6",
- "semver": "^6.2.0"
- },
- "engines": {
- "node": ">= 6.9.0"
- }
- },
- "node_modules/@lerna/bootstrap/node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true,
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/@lerna/changed": {
- "version": "3.21.0",
- "resolved": "https://registry.npmjs.org/@lerna/changed/-/changed-3.21.0.tgz",
- "integrity": "sha512-hzqoyf8MSHVjZp0gfJ7G8jaz+++mgXYiNs9iViQGA8JlN/dnWLI5sWDptEH3/B30Izo+fdVz0S0s7ydVE3pWIw==",
- "dev": true,
- "dependencies": {
- "@lerna/collect-updates": "3.20.0",
- "@lerna/command": "3.21.0",
- "@lerna/listable": "3.18.5",
- "@lerna/output": "3.13.0"
- },
- "engines": {
- "node": ">= 6.9.0"
- }
- },
- "node_modules/@lerna/check-working-tree": {
- "version": "3.16.5",
- "resolved": "https://registry.npmjs.org/@lerna/check-working-tree/-/check-working-tree-3.16.5.tgz",
- "integrity": "sha512-xWjVBcuhvB8+UmCSb5tKVLB5OuzSpw96WEhS2uz6hkWVa/Euh1A0/HJwn2cemyK47wUrCQXtczBUiqnq9yX5VQ==",
- "dev": true,
- "dependencies": {
- "@lerna/collect-uncommitted": "3.16.5",
- "@lerna/describe-ref": "3.16.5",
- "@lerna/validation-error": "3.13.0"
- },
- "engines": {
- "node": ">= 6.9.0"
- }
- },
- "node_modules/@lerna/child-process": {
- "version": "3.16.5",
- "resolved": "https://registry.npmjs.org/@lerna/child-process/-/child-process-3.16.5.tgz",
- "integrity": "sha512-vdcI7mzei9ERRV4oO8Y1LHBZ3A5+ampRKg1wq5nutLsUA4mEBN6H7JqjWOMY9xZemv6+kATm2ofjJ3lW5TszQg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.3.1",
- "execa": "^1.0.0",
- "strong-log-transformer": "^2.0.0"
- },
- "engines": {
- "node": ">= 6.9.0"
- }
- },
- "node_modules/@lerna/clean": {
- "version": "3.21.0",
- "resolved": "https://registry.npmjs.org/@lerna/clean/-/clean-3.21.0.tgz",
- "integrity": "sha512-b/L9l+MDgE/7oGbrav6rG8RTQvRiZLO1zTcG17zgJAAuhlsPxJExMlh2DFwJEVi2les70vMhHfST3Ue1IMMjpg==",
- "dev": true,
- "dependencies": {
- "@lerna/command": "3.21.0",
- "@lerna/filter-options": "3.20.0",
- "@lerna/prompt": "3.18.5",
- "@lerna/pulse-till-done": "3.13.0",
- "@lerna/rimraf-dir": "3.16.5",
- "p-map": "^2.1.0",
- "p-map-series": "^1.0.0",
- "p-waterfall": "^1.0.0"
- },
- "engines": {
- "node": ">= 6.9.0"
- }
- },
- "node_modules/@lerna/cli": {
- "version": "3.18.5",
- "resolved": "https://registry.npmjs.org/@lerna/cli/-/cli-3.18.5.tgz",
- "integrity": "sha512-erkbxkj9jfc89vVs/jBLY/fM0I80oLmJkFUV3Q3wk9J3miYhP14zgVEBsPZY68IZlEjT6T3Xlq2xO1AVaatHsA==",
- "dev": true,
- "dependencies": {
- "@lerna/global-options": "3.13.0",
- "dedent": "^0.7.0",
- "npmlog": "^4.1.2",
- "yargs": "^14.2.2"
- },
- "engines": {
- "node": ">= 6.9.0"
- }
- },
- "node_modules/@lerna/collect-uncommitted": {
- "version": "3.16.5",
- "resolved": "https://registry.npmjs.org/@lerna/collect-uncommitted/-/collect-uncommitted-3.16.5.tgz",
- "integrity": "sha512-ZgqnGwpDZiWyzIQVZtQaj9tRizsL4dUOhuOStWgTAw1EMe47cvAY2kL709DzxFhjr6JpJSjXV5rZEAeU3VE0Hg==",
- "dev": true,
- "dependencies": {
- "@lerna/child-process": "3.16.5",
- "chalk": "^2.3.1",
- "figgy-pudding": "^3.5.1",
- "npmlog": "^4.1.2"
- },
- "engines": {
- "node": ">= 6.9.0"
- }
- },
- "node_modules/@lerna/collect-updates": {
- "version": "3.20.0",
- "resolved": "https://registry.npmjs.org/@lerna/collect-updates/-/collect-updates-3.20.0.tgz",
- "integrity": "sha512-qBTVT5g4fupVhBFuY4nI/3FSJtQVcDh7/gEPOpRxoXB/yCSnT38MFHXWl+y4einLciCjt/+0x6/4AG80fjay2Q==",
- "dev": true,
- "dependencies": {
- "@lerna/child-process": "3.16.5",
- "@lerna/describe-ref": "3.16.5",
- "minimatch": "^3.0.4",
- "npmlog": "^4.1.2",
- "slash": "^2.0.0"
- },
- "engines": {
- "node": ">= 6.9.0"
- }
- },
- "node_modules/@lerna/collect-updates/node_modules/slash": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
- "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/@lerna/command": {
- "version": "3.21.0",
- "resolved": "https://registry.npmjs.org/@lerna/command/-/command-3.21.0.tgz",
- "integrity": "sha512-T2bu6R8R3KkH5YoCKdutKv123iUgUbW8efVjdGCDnCMthAQzoentOJfDeodBwn0P2OqCl3ohsiNVtSn9h78fyQ==",
- "dev": true,
- "dependencies": {
- "@lerna/child-process": "3.16.5",
- "@lerna/package-graph": "3.18.5",
- "@lerna/project": "3.21.0",
- "@lerna/validation-error": "3.13.0",
- "@lerna/write-log-file": "3.13.0",
- "clone-deep": "^4.0.1",
- "dedent": "^0.7.0",
- "execa": "^1.0.0",
- "is-ci": "^2.0.0",
- "npmlog": "^4.1.2"
- },
- "engines": {
- "node": ">= 6.9.0"
- }
- },
- "node_modules/@lerna/conventional-commits": {
- "version": "3.22.0",
- "resolved": "https://registry.npmjs.org/@lerna/conventional-commits/-/conventional-commits-3.22.0.tgz",
- "integrity": "sha512-z4ZZk1e8Mhz7+IS8NxHr64wyklHctCJyWpJKEZZPJiLFJ8yKto/x38O80R10pIzC0rr8Sy/OsjSH4bl0TbbgqA==",
- "dev": true,
- "dependencies": {
- "@lerna/validation-error": "3.13.0",
- "conventional-changelog-angular": "^5.0.3",
- "conventional-changelog-core": "^3.1.6",
- "conventional-recommended-bump": "^5.0.0",
- "fs-extra": "^8.1.0",
- "get-stream": "^4.0.0",
- "lodash.template": "^4.5.0",
- "npm-package-arg": "^6.1.0",
- "npmlog": "^4.1.2",
- "pify": "^4.0.1",
- "semver": "^6.2.0"
- },
- "engines": {
- "node": ">= 6.9.0"
- }
- },
- "node_modules/@lerna/conventional-commits/node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true,
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/@lerna/create": {
- "version": "3.22.0",
- "resolved": "https://registry.npmjs.org/@lerna/create/-/create-3.22.0.tgz",
- "integrity": "sha512-MdiQQzCcB4E9fBF1TyMOaAEz9lUjIHp1Ju9H7f3lXze5JK6Fl5NYkouAvsLgY6YSIhXMY8AHW2zzXeBDY4yWkw==",
- "dev": true,
- "dependencies": {
- "@evocateur/pacote": "^9.6.3",
- "@lerna/child-process": "3.16.5",
- "@lerna/command": "3.21.0",
- "@lerna/npm-conf": "3.16.0",
- "@lerna/validation-error": "3.13.0",
- "camelcase": "^5.0.0",
- "dedent": "^0.7.0",
- "fs-extra": "^8.1.0",
- "globby": "^9.2.0",
- "init-package-json": "^1.10.3",
- "npm-package-arg": "^6.1.0",
- "p-reduce": "^1.0.0",
- "pify": "^4.0.1",
- "semver": "^6.2.0",
- "slash": "^2.0.0",
- "validate-npm-package-license": "^3.0.3",
- "validate-npm-package-name": "^3.0.0",
- "whatwg-url": "^7.0.0"
- },
- "engines": {
- "node": ">= 6.9.0"
- }
- },
- "node_modules/@lerna/create-symlink": {
- "version": "3.16.2",
- "resolved": "https://registry.npmjs.org/@lerna/create-symlink/-/create-symlink-3.16.2.tgz",
- "integrity": "sha512-pzXIJp6av15P325sgiIRpsPXLFmkisLhMBCy4764d+7yjf2bzrJ4gkWVMhsv4AdF0NN3OyZ5jjzzTtLNqfR+Jw==",
- "dev": true,
- "dependencies": {
- "@zkochan/cmd-shim": "^3.1.0",
- "fs-extra": "^8.1.0",
- "npmlog": "^4.1.2"
- },
- "engines": {
- "node": ">= 6.9.0"
- }
- },
- "node_modules/@lerna/create/node_modules/@nodelib/fs.stat": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz",
- "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==",
- "dev": true,
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/@lerna/create/node_modules/array-union": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
- "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==",
- "dev": true,
- "dependencies": {
- "array-uniq": "^1.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@lerna/create/node_modules/braces": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
- "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
- "dev": true,
- "dependencies": {
- "arr-flatten": "^1.1.0",
- "array-unique": "^0.3.2",
- "extend-shallow": "^2.0.1",
- "fill-range": "^4.0.0",
- "isobject": "^3.0.1",
- "repeat-element": "^1.1.2",
- "snapdragon": "^0.8.1",
- "snapdragon-node": "^2.0.1",
- "split-string": "^3.0.2",
- "to-regex": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@lerna/create/node_modules/braces/node_modules/extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
- "dev": true,
- "dependencies": {
- "is-extendable": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@lerna/create/node_modules/dir-glob": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz",
- "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==",
- "dev": true,
- "dependencies": {
- "path-type": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@lerna/create/node_modules/fast-glob": {
- "version": "2.2.7",
- "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz",
- "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==",
- "dev": true,
- "dependencies": {
- "@mrmlnc/readdir-enhanced": "^2.2.1",
- "@nodelib/fs.stat": "^1.1.2",
- "glob-parent": "^3.1.0",
- "is-glob": "^4.0.0",
- "merge2": "^1.2.3",
- "micromatch": "^3.1.10"
- },
- "engines": {
- "node": ">=4.0.0"
- }
- },
- "node_modules/@lerna/create/node_modules/fill-range": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
- "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==",
- "dev": true,
- "dependencies": {
- "extend-shallow": "^2.0.1",
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1",
- "to-regex-range": "^2.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@lerna/create/node_modules/fill-range/node_modules/extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
- "dev": true,
- "dependencies": {
- "is-extendable": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@lerna/create/node_modules/glob-parent": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
- "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==",
- "dev": true,
- "dependencies": {
- "is-glob": "^3.1.0",
- "path-dirname": "^1.0.0"
- }
- },
- "node_modules/@lerna/create/node_modules/glob-parent/node_modules/is-glob": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
- "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==",
- "dev": true,
- "dependencies": {
- "is-extglob": "^2.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@lerna/create/node_modules/globby": {
- "version": "9.2.0",
- "resolved": "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz",
- "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==",
- "dev": true,
- "dependencies": {
- "@types/glob": "^7.1.1",
- "array-union": "^1.0.2",
- "dir-glob": "^2.2.2",
- "fast-glob": "^2.2.6",
- "glob": "^7.1.3",
- "ignore": "^4.0.3",
- "pify": "^4.0.1",
- "slash": "^2.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/@lerna/create/node_modules/ignore": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
- "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
- "dev": true,
- "engines": {
- "node": ">= 4"
- }
- },
- "node_modules/@lerna/create/node_modules/is-buffer": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
- "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
- "dev": true
- },
- "node_modules/@lerna/create/node_modules/is-extendable": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
- "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@lerna/create/node_modules/is-number": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
- "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==",
- "dev": true,
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@lerna/create/node_modules/is-number/node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@lerna/create/node_modules/micromatch": {
- "version": "3.1.10",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
- "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
- "dev": true,
- "dependencies": {
- "arr-diff": "^4.0.0",
- "array-unique": "^0.3.2",
- "braces": "^2.3.1",
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "extglob": "^2.0.4",
- "fragment-cache": "^0.2.1",
- "kind-of": "^6.0.2",
- "nanomatch": "^1.2.9",
- "object.pick": "^1.3.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@lerna/create/node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true,
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/@lerna/create/node_modules/slash": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
- "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/@lerna/create/node_modules/to-regex-range": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
- "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==",
- "dev": true,
- "dependencies": {
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@lerna/create/node_modules/tr46": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz",
- "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==",
- "dev": true,
- "dependencies": {
- "punycode": "^2.1.0"
- }
- },
- "node_modules/@lerna/create/node_modules/webidl-conversions": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz",
- "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==",
- "dev": true
- },
- "node_modules/@lerna/create/node_modules/whatwg-url": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz",
- "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==",
- "dev": true,
- "dependencies": {
- "lodash.sortby": "^4.7.0",
- "tr46": "^1.0.1",
- "webidl-conversions": "^4.0.2"
- }
- },
- "node_modules/@lerna/describe-ref": {
- "version": "3.16.5",
- "resolved": "https://registry.npmjs.org/@lerna/describe-ref/-/describe-ref-3.16.5.tgz",
- "integrity": "sha512-c01+4gUF0saOOtDBzbLMFOTJDHTKbDFNErEY6q6i9QaXuzy9LNN62z+Hw4acAAZuJQhrVWncVathcmkkjvSVGw==",
- "dev": true,
- "dependencies": {
- "@lerna/child-process": "3.16.5",
- "npmlog": "^4.1.2"
- },
- "engines": {
- "node": ">= 6.9.0"
- }
- },
- "node_modules/@lerna/diff": {
- "version": "3.21.0",
- "resolved": "https://registry.npmjs.org/@lerna/diff/-/diff-3.21.0.tgz",
- "integrity": "sha512-5viTR33QV3S7O+bjruo1SaR40m7F2aUHJaDAC7fL9Ca6xji+aw1KFkpCtVlISS0G8vikUREGMJh+c/VMSc8Usw==",
- "dev": true,
- "dependencies": {
- "@lerna/child-process": "3.16.5",
- "@lerna/command": "3.21.0",
- "@lerna/validation-error": "3.13.0",
- "npmlog": "^4.1.2"
- },
- "engines": {
- "node": ">= 6.9.0"
- }
- },
- "node_modules/@lerna/exec": {
- "version": "3.21.0",
- "resolved": "https://registry.npmjs.org/@lerna/exec/-/exec-3.21.0.tgz",
- "integrity": "sha512-iLvDBrIE6rpdd4GIKTY9mkXyhwsJ2RvQdB9ZU+/NhR3okXfqKc6py/24tV111jqpXTtZUW6HNydT4dMao2hi1Q==",
- "dev": true,
- "dependencies": {
- "@lerna/child-process": "3.16.5",
- "@lerna/command": "3.21.0",
- "@lerna/filter-options": "3.20.0",
- "@lerna/profiler": "3.20.0",
- "@lerna/run-topologically": "3.18.5",
- "@lerna/validation-error": "3.13.0",
- "p-map": "^2.1.0"
- },
- "engines": {
- "node": ">= 6.9.0"
- }
- },
- "node_modules/@lerna/filter-options": {
- "version": "3.20.0",
- "resolved": "https://registry.npmjs.org/@lerna/filter-options/-/filter-options-3.20.0.tgz",
- "integrity": "sha512-bmcHtvxn7SIl/R9gpiNMVG7yjx7WyT0HSGw34YVZ9B+3xF/83N3r5Rgtjh4hheLZ+Q91Or0Jyu5O3Nr+AwZe2g==",
- "dev": true,
- "dependencies": {
- "@lerna/collect-updates": "3.20.0",
- "@lerna/filter-packages": "3.18.0",
- "dedent": "^0.7.0",
- "figgy-pudding": "^3.5.1",
- "npmlog": "^4.1.2"
- },
- "engines": {
- "node": ">= 6.9.0"
- }
- },
- "node_modules/@lerna/filter-packages": {
- "version": "3.18.0",
- "resolved": "https://registry.npmjs.org/@lerna/filter-packages/-/filter-packages-3.18.0.tgz",
- "integrity": "sha512-6/0pMM04bCHNATIOkouuYmPg6KH3VkPCIgTfQmdkPJTullERyEQfNUKikrefjxo1vHOoCACDpy65JYyKiAbdwQ==",
- "dev": true,
- "dependencies": {
- "@lerna/validation-error": "3.13.0",
- "multimatch": "^3.0.0",
- "npmlog": "^4.1.2"
- },
- "engines": {
- "node": ">= 6.9.0"
- }
- },
- "node_modules/@lerna/get-npm-exec-opts": {
- "version": "3.13.0",
- "resolved": "https://registry.npmjs.org/@lerna/get-npm-exec-opts/-/get-npm-exec-opts-3.13.0.tgz",
- "integrity": "sha512-Y0xWL0rg3boVyJk6An/vurKzubyJKtrxYv2sj4bB8Mc5zZ3tqtv0ccbOkmkXKqbzvNNF7VeUt1OJ3DRgtC/QZw==",
- "dev": true,
- "dependencies": {
- "npmlog": "^4.1.2"
- },
- "engines": {
- "node": ">= 6.9.0"
- }
- },
- "node_modules/@lerna/get-packed": {
- "version": "3.16.0",
- "resolved": "https://registry.npmjs.org/@lerna/get-packed/-/get-packed-3.16.0.tgz",
- "integrity": "sha512-AjsFiaJzo1GCPnJUJZiTW6J1EihrPkc2y3nMu6m3uWFxoleklsSCyImumzVZJssxMi3CPpztj8LmADLedl9kXw==",
- "dev": true,
- "dependencies": {
- "fs-extra": "^8.1.0",
- "ssri": "^6.0.1",
- "tar": "^4.4.8"
- }
- },
- "node_modules/@lerna/github-client": {
- "version": "3.22.0",
- "resolved": "https://registry.npmjs.org/@lerna/github-client/-/github-client-3.22.0.tgz",
- "integrity": "sha512-O/GwPW+Gzr3Eb5bk+nTzTJ3uv+jh5jGho9BOqKlajXaOkMYGBELEAqV5+uARNGWZFvYAiF4PgqHb6aCUu7XdXg==",
- "dev": true,
- "dependencies": {
- "@lerna/child-process": "3.16.5",
- "@octokit/plugin-enterprise-rest": "^6.0.1",
- "@octokit/rest": "^16.28.4",
- "git-url-parse": "^11.1.2",
- "npmlog": "^4.1.2"
- },
- "engines": {
- "node": ">= 6.9.0"
- }
- },
- "node_modules/@lerna/gitlab-client": {
- "version": "3.15.0",
- "resolved": "https://registry.npmjs.org/@lerna/gitlab-client/-/gitlab-client-3.15.0.tgz",
- "integrity": "sha512-OsBvRSejHXUBMgwWQqNoioB8sgzL/Pf1pOUhHKtkiMl6aAWjklaaq5HPMvTIsZPfS6DJ9L5OK2GGZuooP/5c8Q==",
- "dev": true,
- "dependencies": {
- "node-fetch": "^2.5.0",
- "npmlog": "^4.1.2",
- "whatwg-url": "^7.0.0"
- },
- "engines": {
- "node": ">= 6.9.0"
- }
- },
- "node_modules/@lerna/gitlab-client/node_modules/tr46": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz",
- "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==",
- "dev": true,
- "dependencies": {
- "punycode": "^2.1.0"
- }
- },
- "node_modules/@lerna/gitlab-client/node_modules/webidl-conversions": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz",
- "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==",
- "dev": true
- },
- "node_modules/@lerna/gitlab-client/node_modules/whatwg-url": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz",
- "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==",
- "dev": true,
- "dependencies": {
- "lodash.sortby": "^4.7.0",
- "tr46": "^1.0.1",
- "webidl-conversions": "^4.0.2"
- }
- },
- "node_modules/@lerna/global-options": {
- "version": "3.13.0",
- "resolved": "https://registry.npmjs.org/@lerna/global-options/-/global-options-3.13.0.tgz",
- "integrity": "sha512-SlZvh1gVRRzYLVluz9fryY1nJpZ0FHDGB66U9tFfvnnxmueckRQxLopn3tXj3NU1kc3QANT2I5BsQkOqZ4TEFQ==",
- "dev": true,
- "engines": {
- "node": ">= 6.9.0"
- }
- },
- "node_modules/@lerna/has-npm-version": {
- "version": "3.16.5",
- "resolved": "https://registry.npmjs.org/@lerna/has-npm-version/-/has-npm-version-3.16.5.tgz",
- "integrity": "sha512-WL7LycR9bkftyqbYop5rEGJ9sRFIV55tSGmbN1HLrF9idwOCD7CLrT64t235t3t4O5gehDnwKI5h2U3oxTrF8Q==",
- "dev": true,
- "dependencies": {
- "@lerna/child-process": "3.16.5",
- "semver": "^6.2.0"
- },
- "engines": {
- "node": ">= 6.9.0"
- }
- },
- "node_modules/@lerna/has-npm-version/node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true,
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/@lerna/import": {
- "version": "3.22.0",
- "resolved": "https://registry.npmjs.org/@lerna/import/-/import-3.22.0.tgz",
- "integrity": "sha512-uWOlexasM5XR6tXi4YehODtH9Y3OZrFht3mGUFFT3OIl2s+V85xIGFfqFGMTipMPAGb2oF1UBLL48kR43hRsOg==",
- "dev": true,
- "dependencies": {
- "@lerna/child-process": "3.16.5",
- "@lerna/command": "3.21.0",
- "@lerna/prompt": "3.18.5",
- "@lerna/pulse-till-done": "3.13.0",
- "@lerna/validation-error": "3.13.0",
- "dedent": "^0.7.0",
- "fs-extra": "^8.1.0",
- "p-map-series": "^1.0.0"
- },
- "engines": {
- "node": ">= 6.9.0"
- }
- },
- "node_modules/@lerna/info": {
- "version": "3.21.0",
- "resolved": "https://registry.npmjs.org/@lerna/info/-/info-3.21.0.tgz",
- "integrity": "sha512-0XDqGYVBgWxUquFaIptW2bYSIu6jOs1BtkvRTWDDhw4zyEdp6q4eaMvqdSap1CG+7wM5jeLCi6z94wS0AuiuwA==",
- "dev": true,
- "dependencies": {
- "@lerna/command": "3.21.0",
- "@lerna/output": "3.13.0",
- "envinfo": "^7.3.1"
- },
- "engines": {
- "node": ">= 6.9.0"
- }
- },
- "node_modules/@lerna/init": {
- "version": "3.21.0",
- "resolved": "https://registry.npmjs.org/@lerna/init/-/init-3.21.0.tgz",
- "integrity": "sha512-6CM0z+EFUkFfurwdJCR+LQQF6MqHbYDCBPyhu/d086LRf58GtYZYj49J8mKG9ktayp/TOIxL/pKKjgLD8QBPOg==",
- "dev": true,
- "dependencies": {
- "@lerna/child-process": "3.16.5",
- "@lerna/command": "3.21.0",
- "fs-extra": "^8.1.0",
- "p-map": "^2.1.0",
- "write-json-file": "^3.2.0"
- },
- "engines": {
- "node": ">= 6.9.0"
- }
- },
- "node_modules/@lerna/link": {
- "version": "3.21.0",
- "resolved": "https://registry.npmjs.org/@lerna/link/-/link-3.21.0.tgz",
- "integrity": "sha512-tGu9GxrX7Ivs+Wl3w1+jrLi1nQ36kNI32dcOssij6bg0oZ2M2MDEFI9UF2gmoypTaN9uO5TSsjCFS7aR79HbdQ==",
- "dev": true,
- "dependencies": {
- "@lerna/command": "3.21.0",
- "@lerna/package-graph": "3.18.5",
- "@lerna/symlink-dependencies": "3.17.0",
- "p-map": "^2.1.0",
- "slash": "^2.0.0"
- },
- "engines": {
- "node": ">= 6.9.0"
- }
- },
- "node_modules/@lerna/link/node_modules/slash": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
- "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/@lerna/list": {
- "version": "3.21.0",
- "resolved": "https://registry.npmjs.org/@lerna/list/-/list-3.21.0.tgz",
- "integrity": "sha512-KehRjE83B1VaAbRRkRy6jLX1Cin8ltsrQ7FHf2bhwhRHK0S54YuA6LOoBnY/NtA8bHDX/Z+G5sMY78X30NS9tg==",
- "dev": true,
- "dependencies": {
- "@lerna/command": "3.21.0",
- "@lerna/filter-options": "3.20.0",
- "@lerna/listable": "3.18.5",
- "@lerna/output": "3.13.0"
- },
- "engines": {
- "node": ">= 6.9.0"
- }
- },
- "node_modules/@lerna/listable": {
- "version": "3.18.5",
- "resolved": "https://registry.npmjs.org/@lerna/listable/-/listable-3.18.5.tgz",
- "integrity": "sha512-Sdr3pVyaEv5A7ZkGGYR7zN+tTl2iDcinryBPvtuv20VJrXBE8wYcOks1edBTcOWsPjCE/rMP4bo1pseyk3UTsg==",
- "dev": true,
- "dependencies": {
- "@lerna/query-graph": "3.18.5",
- "chalk": "^2.3.1",
- "columnify": "^1.5.4"
- },
- "engines": {
- "node": ">= 6.9.0"
- }
- },
- "node_modules/@lerna/log-packed": {
- "version": "3.16.0",
- "resolved": "https://registry.npmjs.org/@lerna/log-packed/-/log-packed-3.16.0.tgz",
- "integrity": "sha512-Fp+McSNBV/P2mnLUYTaSlG8GSmpXM7krKWcllqElGxvAqv6chk2K3c2k80MeVB4WvJ9tRjUUf+i7HUTiQ9/ckQ==",
- "dev": true,
- "dependencies": {
- "byte-size": "^5.0.1",
- "columnify": "^1.5.4",
- "has-unicode": "^2.0.1",
- "npmlog": "^4.1.2"
- },
- "engines": {
- "node": ">= 6.9.0"
- }
- },
- "node_modules/@lerna/npm-conf": {
- "version": "3.16.0",
- "resolved": "https://registry.npmjs.org/@lerna/npm-conf/-/npm-conf-3.16.0.tgz",
- "integrity": "sha512-HbO3DUrTkCAn2iQ9+FF/eisDpWY5POQAOF1m7q//CZjdC2HSW3UYbKEGsSisFxSfaF9Z4jtrV+F/wX6qWs3CuA==",
- "dev": true,
- "dependencies": {
- "config-chain": "^1.1.11",
- "pify": "^4.0.1"
- },
- "engines": {
- "node": ">= 6.9.0"
- }
- },
- "node_modules/@lerna/npm-dist-tag": {
- "version": "3.18.5",
- "resolved": "https://registry.npmjs.org/@lerna/npm-dist-tag/-/npm-dist-tag-3.18.5.tgz",
- "integrity": "sha512-xw0HDoIG6HreVsJND9/dGls1c+lf6vhu7yJoo56Sz5bvncTloYGLUppIfDHQr4ZvmPCK8rsh0euCVh2giPxzKQ==",
- "dev": true,
- "dependencies": {
- "@evocateur/npm-registry-fetch": "^4.0.0",
- "@lerna/otplease": "3.18.5",
- "figgy-pudding": "^3.5.1",
- "npm-package-arg": "^6.1.0",
- "npmlog": "^4.1.2"
- },
- "engines": {
- "node": ">= 6.9.0"
- }
- },
- "node_modules/@lerna/npm-install": {
- "version": "3.16.5",
- "resolved": "https://registry.npmjs.org/@lerna/npm-install/-/npm-install-3.16.5.tgz",
- "integrity": "sha512-hfiKk8Eku6rB9uApqsalHHTHY+mOrrHeWEs+gtg7+meQZMTS3kzv4oVp5cBZigndQr3knTLjwthT/FX4KvseFg==",
- "dev": true,
- "dependencies": {
- "@lerna/child-process": "3.16.5",
- "@lerna/get-npm-exec-opts": "3.13.0",
- "fs-extra": "^8.1.0",
- "npm-package-arg": "^6.1.0",
- "npmlog": "^4.1.2",
- "signal-exit": "^3.0.2",
- "write-pkg": "^3.1.0"
- },
- "engines": {
- "node": ">= 6.9.0"
- }
- },
- "node_modules/@lerna/npm-publish": {
- "version": "3.18.5",
- "resolved": "https://registry.npmjs.org/@lerna/npm-publish/-/npm-publish-3.18.5.tgz",
- "integrity": "sha512-3etLT9+2L8JAx5F8uf7qp6iAtOLSMj+ZYWY6oUgozPi/uLqU0/gsMsEXh3F0+YVW33q0M61RpduBoAlOOZnaTg==",
- "dev": true,
- "dependencies": {
- "@evocateur/libnpmpublish": "^1.2.2",
- "@lerna/otplease": "3.18.5",
- "@lerna/run-lifecycle": "3.16.2",
- "figgy-pudding": "^3.5.1",
- "fs-extra": "^8.1.0",
- "npm-package-arg": "^6.1.0",
- "npmlog": "^4.1.2",
- "pify": "^4.0.1",
- "read-package-json": "^2.0.13"
- },
- "engines": {
- "node": ">= 6.9.0"
- }
- },
- "node_modules/@lerna/npm-run-script": {
- "version": "3.16.5",
- "resolved": "https://registry.npmjs.org/@lerna/npm-run-script/-/npm-run-script-3.16.5.tgz",
- "integrity": "sha512-1asRi+LjmVn3pMjEdpqKJZFT/3ZNpb+VVeJMwrJaV/3DivdNg7XlPK9LTrORuKU4PSvhdEZvJmSlxCKyDpiXsQ==",
- "dev": true,
- "dependencies": {
- "@lerna/child-process": "3.16.5",
- "@lerna/get-npm-exec-opts": "3.13.0",
- "npmlog": "^4.1.2"
- },
- "engines": {
- "node": ">= 6.9.0"
- }
- },
- "node_modules/@lerna/otplease": {
- "version": "3.18.5",
- "resolved": "https://registry.npmjs.org/@lerna/otplease/-/otplease-3.18.5.tgz",
- "integrity": "sha512-S+SldXAbcXTEDhzdxYLU0ZBKuYyURP/ND2/dK6IpKgLxQYh/z4ScljPDMyKymmEvgiEJmBsPZAAPfmNPEzxjog==",
- "dev": true,
- "dependencies": {
- "@lerna/prompt": "3.18.5",
- "figgy-pudding": "^3.5.1"
- },
- "engines": {
- "node": ">= 6.9.0"
- }
- },
- "node_modules/@lerna/output": {
- "version": "3.13.0",
- "resolved": "https://registry.npmjs.org/@lerna/output/-/output-3.13.0.tgz",
- "integrity": "sha512-7ZnQ9nvUDu/WD+bNsypmPG5MwZBwu86iRoiW6C1WBuXXDxM5cnIAC1m2WxHeFnjyMrYlRXM9PzOQ9VDD+C15Rg==",
- "dev": true,
- "dependencies": {
- "npmlog": "^4.1.2"
- },
- "engines": {
- "node": ">= 6.9.0"
- }
- },
- "node_modules/@lerna/pack-directory": {
- "version": "3.16.4",
- "resolved": "https://registry.npmjs.org/@lerna/pack-directory/-/pack-directory-3.16.4.tgz",
- "integrity": "sha512-uxSF0HZeGyKaaVHz5FroDY9A5NDDiCibrbYR6+khmrhZtY0Bgn6hWq8Gswl9iIlymA+VzCbshWIMX4o2O8C8ng==",
- "dev": true,
- "dependencies": {
- "@lerna/get-packed": "3.16.0",
- "@lerna/package": "3.16.0",
- "@lerna/run-lifecycle": "3.16.2",
- "figgy-pudding": "^3.5.1",
- "npm-packlist": "^1.4.4",
- "npmlog": "^4.1.2",
- "tar": "^4.4.10",
- "temp-write": "^3.4.0"
- }
- },
- "node_modules/@lerna/package": {
- "version": "3.16.0",
- "resolved": "https://registry.npmjs.org/@lerna/package/-/package-3.16.0.tgz",
- "integrity": "sha512-2lHBWpaxcBoiNVbtyLtPUuTYEaB/Z+eEqRS9duxpZs6D+mTTZMNy6/5vpEVSCBmzvdYpyqhqaYjjSLvjjr5Riw==",
- "dev": true,
- "dependencies": {
- "load-json-file": "^5.3.0",
- "npm-package-arg": "^6.1.0",
- "write-pkg": "^3.1.0"
- },
- "engines": {
- "node": ">= 6.9.0"
- }
- },
- "node_modules/@lerna/package-graph": {
- "version": "3.18.5",
- "resolved": "https://registry.npmjs.org/@lerna/package-graph/-/package-graph-3.18.5.tgz",
- "integrity": "sha512-8QDrR9T+dBegjeLr+n9WZTVxUYUhIUjUgZ0gvNxUBN8S1WB9r6H5Yk56/MVaB64tA3oGAN9IIxX6w0WvTfFudA==",
- "dev": true,
- "dependencies": {
- "@lerna/prerelease-id-from-version": "3.16.0",
- "@lerna/validation-error": "3.13.0",
- "npm-package-arg": "^6.1.0",
- "npmlog": "^4.1.2",
- "semver": "^6.2.0"
- },
- "engines": {
- "node": ">= 6.9.0"
- }
- },
- "node_modules/@lerna/package-graph/node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true,
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/@lerna/prerelease-id-from-version": {
- "version": "3.16.0",
- "resolved": "https://registry.npmjs.org/@lerna/prerelease-id-from-version/-/prerelease-id-from-version-3.16.0.tgz",
- "integrity": "sha512-qZyeUyrE59uOK8rKdGn7jQz+9uOpAaF/3hbslJVFL1NqF9ELDTqjCPXivuejMX/lN4OgD6BugTO4cR7UTq/sZA==",
- "dev": true,
- "dependencies": {
- "semver": "^6.2.0"
- },
- "engines": {
- "node": ">= 6.9.0"
- }
- },
- "node_modules/@lerna/prerelease-id-from-version/node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true,
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/@lerna/profiler": {
- "version": "3.20.0",
- "resolved": "https://registry.npmjs.org/@lerna/profiler/-/profiler-3.20.0.tgz",
- "integrity": "sha512-bh8hKxAlm6yu8WEOvbLENm42i2v9SsR4WbrCWSbsmOElx3foRnMlYk7NkGECa+U5c3K4C6GeBbwgqs54PP7Ljg==",
- "dev": true,
- "dependencies": {
- "figgy-pudding": "^3.5.1",
- "fs-extra": "^8.1.0",
- "npmlog": "^4.1.2",
- "upath": "^1.2.0"
- },
- "engines": {
- "node": ">= 6.9.0"
- }
- },
- "node_modules/@lerna/project": {
- "version": "3.21.0",
- "resolved": "https://registry.npmjs.org/@lerna/project/-/project-3.21.0.tgz",
- "integrity": "sha512-xT1mrpET2BF11CY32uypV2GPtPVm6Hgtha7D81GQP9iAitk9EccrdNjYGt5UBYASl4CIDXBRxwmTTVGfrCx82A==",
- "dev": true,
- "dependencies": {
- "@lerna/package": "3.16.0",
- "@lerna/validation-error": "3.13.0",
- "cosmiconfig": "^5.1.0",
- "dedent": "^0.7.0",
- "dot-prop": "^4.2.0",
- "glob-parent": "^5.0.0",
- "globby": "^9.2.0",
- "load-json-file": "^5.3.0",
- "npmlog": "^4.1.2",
- "p-map": "^2.1.0",
- "resolve-from": "^4.0.0",
- "write-json-file": "^3.2.0"
- },
- "engines": {
- "node": ">= 6.9.0"
- }
- },
- "node_modules/@lerna/project/node_modules/@nodelib/fs.stat": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz",
- "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==",
- "dev": true,
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/@lerna/project/node_modules/array-union": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
- "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==",
- "dev": true,
- "dependencies": {
- "array-uniq": "^1.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@lerna/project/node_modules/braces": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
- "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
- "dev": true,
- "dependencies": {
- "arr-flatten": "^1.1.0",
- "array-unique": "^0.3.2",
- "extend-shallow": "^2.0.1",
- "fill-range": "^4.0.0",
- "isobject": "^3.0.1",
- "repeat-element": "^1.1.2",
- "snapdragon": "^0.8.1",
- "snapdragon-node": "^2.0.1",
- "split-string": "^3.0.2",
- "to-regex": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@lerna/project/node_modules/braces/node_modules/extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
- "dev": true,
- "dependencies": {
- "is-extendable": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@lerna/project/node_modules/dir-glob": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz",
- "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==",
- "dev": true,
- "dependencies": {
- "path-type": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@lerna/project/node_modules/fast-glob": {
- "version": "2.2.7",
- "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz",
- "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==",
- "dev": true,
- "dependencies": {
- "@mrmlnc/readdir-enhanced": "^2.2.1",
- "@nodelib/fs.stat": "^1.1.2",
- "glob-parent": "^3.1.0",
- "is-glob": "^4.0.0",
- "merge2": "^1.2.3",
- "micromatch": "^3.1.10"
- },
- "engines": {
- "node": ">=4.0.0"
- }
- },
- "node_modules/@lerna/project/node_modules/fast-glob/node_modules/glob-parent": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
- "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==",
- "dev": true,
- "dependencies": {
- "is-glob": "^3.1.0",
- "path-dirname": "^1.0.0"
- }
- },
- "node_modules/@lerna/project/node_modules/fast-glob/node_modules/glob-parent/node_modules/is-glob": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
- "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==",
- "dev": true,
- "dependencies": {
- "is-extglob": "^2.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@lerna/project/node_modules/fill-range": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
- "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==",
- "dev": true,
- "dependencies": {
- "extend-shallow": "^2.0.1",
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1",
- "to-regex-range": "^2.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@lerna/project/node_modules/fill-range/node_modules/extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
- "dev": true,
- "dependencies": {
- "is-extendable": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@lerna/project/node_modules/globby": {
- "version": "9.2.0",
- "resolved": "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz",
- "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==",
- "dev": true,
- "dependencies": {
- "@types/glob": "^7.1.1",
- "array-union": "^1.0.2",
- "dir-glob": "^2.2.2",
- "fast-glob": "^2.2.6",
- "glob": "^7.1.3",
- "ignore": "^4.0.3",
- "pify": "^4.0.1",
- "slash": "^2.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/@lerna/project/node_modules/ignore": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
- "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
- "dev": true,
- "engines": {
- "node": ">= 4"
- }
- },
- "node_modules/@lerna/project/node_modules/is-buffer": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
- "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
- "dev": true
- },
- "node_modules/@lerna/project/node_modules/is-extendable": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
- "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@lerna/project/node_modules/is-number": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
- "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==",
- "dev": true,
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@lerna/project/node_modules/is-number/node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@lerna/project/node_modules/micromatch": {
- "version": "3.1.10",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
- "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
- "dev": true,
- "dependencies": {
- "arr-diff": "^4.0.0",
- "array-unique": "^0.3.2",
- "braces": "^2.3.1",
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "extglob": "^2.0.4",
- "fragment-cache": "^0.2.1",
- "kind-of": "^6.0.2",
- "nanomatch": "^1.2.9",
- "object.pick": "^1.3.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@lerna/project/node_modules/slash": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
- "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/@lerna/project/node_modules/to-regex-range": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
- "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==",
- "dev": true,
- "dependencies": {
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@lerna/prompt": {
- "version": "3.18.5",
- "resolved": "https://registry.npmjs.org/@lerna/prompt/-/prompt-3.18.5.tgz",
- "integrity": "sha512-rkKj4nm1twSbBEb69+Em/2jAERK8htUuV8/xSjN0NPC+6UjzAwY52/x9n5cfmpa9lyKf/uItp7chCI7eDmNTKQ==",
- "dev": true,
- "dependencies": {
- "inquirer": "^6.2.0",
- "npmlog": "^4.1.2"
- },
- "engines": {
- "node": ">= 6.9.0"
- }
- },
- "node_modules/@lerna/publish": {
- "version": "3.22.1",
- "resolved": "https://registry.npmjs.org/@lerna/publish/-/publish-3.22.1.tgz",
- "integrity": "sha512-PG9CM9HUYDreb1FbJwFg90TCBQooGjj+n/pb3gw/eH5mEDq0p8wKdLFe0qkiqUkm/Ub5C8DbVFertIo0Vd0zcw==",
- "dev": true,
- "dependencies": {
- "@evocateur/libnpmaccess": "^3.1.2",
- "@evocateur/npm-registry-fetch": "^4.0.0",
- "@evocateur/pacote": "^9.6.3",
- "@lerna/check-working-tree": "3.16.5",
- "@lerna/child-process": "3.16.5",
- "@lerna/collect-updates": "3.20.0",
- "@lerna/command": "3.21.0",
- "@lerna/describe-ref": "3.16.5",
- "@lerna/log-packed": "3.16.0",
- "@lerna/npm-conf": "3.16.0",
- "@lerna/npm-dist-tag": "3.18.5",
- "@lerna/npm-publish": "3.18.5",
- "@lerna/otplease": "3.18.5",
- "@lerna/output": "3.13.0",
- "@lerna/pack-directory": "3.16.4",
- "@lerna/prerelease-id-from-version": "3.16.0",
- "@lerna/prompt": "3.18.5",
- "@lerna/pulse-till-done": "3.13.0",
- "@lerna/run-lifecycle": "3.16.2",
- "@lerna/run-topologically": "3.18.5",
- "@lerna/validation-error": "3.13.0",
- "@lerna/version": "3.22.1",
- "figgy-pudding": "^3.5.1",
- "fs-extra": "^8.1.0",
- "npm-package-arg": "^6.1.0",
- "npmlog": "^4.1.2",
- "p-finally": "^1.0.0",
- "p-map": "^2.1.0",
- "p-pipe": "^1.2.0",
- "semver": "^6.2.0"
- },
- "engines": {
- "node": ">= 6.9.0"
- }
- },
- "node_modules/@lerna/publish/node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true,
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/@lerna/pulse-till-done": {
- "version": "3.13.0",
- "resolved": "https://registry.npmjs.org/@lerna/pulse-till-done/-/pulse-till-done-3.13.0.tgz",
- "integrity": "sha512-1SOHpy7ZNTPulzIbargrgaJX387csN7cF1cLOGZiJQA6VqnS5eWs2CIrG8i8wmaUavj2QlQ5oEbRMVVXSsGrzA==",
- "dev": true,
- "dependencies": {
- "npmlog": "^4.1.2"
- },
- "engines": {
- "node": ">= 6.9.0"
- }
- },
- "node_modules/@lerna/query-graph": {
- "version": "3.18.5",
- "resolved": "https://registry.npmjs.org/@lerna/query-graph/-/query-graph-3.18.5.tgz",
- "integrity": "sha512-50Lf4uuMpMWvJ306be3oQDHrWV42nai9gbIVByPBYJuVW8dT8O8pA3EzitNYBUdLL9/qEVbrR0ry1HD7EXwtRA==",
- "dev": true,
- "dependencies": {
- "@lerna/package-graph": "3.18.5",
- "figgy-pudding": "^3.5.1"
- },
- "engines": {
- "node": ">= 6.9.0"
- }
- },
- "node_modules/@lerna/resolve-symlink": {
- "version": "3.16.0",
- "resolved": "https://registry.npmjs.org/@lerna/resolve-symlink/-/resolve-symlink-3.16.0.tgz",
- "integrity": "sha512-Ibj5e7njVHNJ/NOqT4HlEgPFPtPLWsO7iu59AM5bJDcAJcR96mLZ7KGVIsS2tvaO7akMEJvt2P+ErwCdloG3jQ==",
- "dev": true,
- "dependencies": {
- "fs-extra": "^8.1.0",
- "npmlog": "^4.1.2",
- "read-cmd-shim": "^1.0.1"
- },
- "engines": {
- "node": ">= 6.9.0"
- }
- },
- "node_modules/@lerna/rimraf-dir": {
- "version": "3.16.5",
- "resolved": "https://registry.npmjs.org/@lerna/rimraf-dir/-/rimraf-dir-3.16.5.tgz",
- "integrity": "sha512-bQlKmO0pXUsXoF8lOLknhyQjOZsCc0bosQDoX4lujBXSWxHVTg1VxURtWf2lUjz/ACsJVDfvHZbDm8kyBk5okA==",
- "dev": true,
- "dependencies": {
- "@lerna/child-process": "3.16.5",
- "npmlog": "^4.1.2",
- "path-exists": "^3.0.0",
- "rimraf": "^2.6.2"
- },
- "engines": {
- "node": ">= 6.9.0"
- }
- },
- "node_modules/@lerna/rimraf-dir/node_modules/path-exists": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@lerna/rimraf-dir/node_modules/rimraf": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
- "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
- "dev": true,
- "dependencies": {
- "glob": "^7.1.3"
- },
- "bin": {
- "rimraf": "bin.js"
- }
- },
- "node_modules/@lerna/run": {
- "version": "3.21.0",
- "resolved": "https://registry.npmjs.org/@lerna/run/-/run-3.21.0.tgz",
- "integrity": "sha512-fJF68rT3veh+hkToFsBmUJ9MHc9yGXA7LSDvhziAojzOb0AI/jBDp6cEcDQyJ7dbnplba2Lj02IH61QUf9oW0Q==",
- "dev": true,
- "dependencies": {
- "@lerna/command": "3.21.0",
- "@lerna/filter-options": "3.20.0",
- "@lerna/npm-run-script": "3.16.5",
- "@lerna/output": "3.13.0",
- "@lerna/profiler": "3.20.0",
- "@lerna/run-topologically": "3.18.5",
- "@lerna/timer": "3.13.0",
- "@lerna/validation-error": "3.13.0",
- "p-map": "^2.1.0"
- },
- "engines": {
- "node": ">= 6.9.0"
- }
- },
- "node_modules/@lerna/run-lifecycle": {
- "version": "3.16.2",
- "resolved": "https://registry.npmjs.org/@lerna/run-lifecycle/-/run-lifecycle-3.16.2.tgz",
- "integrity": "sha512-RqFoznE8rDpyyF0rOJy3+KjZCeTkO8y/OB9orPauR7G2xQ7PTdCpgo7EO6ZNdz3Al+k1BydClZz/j78gNCmL2A==",
- "dev": true,
- "dependencies": {
- "@lerna/npm-conf": "3.16.0",
- "figgy-pudding": "^3.5.1",
- "npm-lifecycle": "^3.1.2",
- "npmlog": "^4.1.2"
- },
- "engines": {
- "node": ">= 6.9.0"
- }
- },
- "node_modules/@lerna/run-topologically": {
- "version": "3.18.5",
- "resolved": "https://registry.npmjs.org/@lerna/run-topologically/-/run-topologically-3.18.5.tgz",
- "integrity": "sha512-6N1I+6wf4hLOnPW+XDZqwufyIQ6gqoPfHZFkfWlvTQ+Ue7CuF8qIVQ1Eddw5HKQMkxqN10thKOFfq/9NQZ4NUg==",
- "dev": true,
- "dependencies": {
- "@lerna/query-graph": "3.18.5",
- "figgy-pudding": "^3.5.1",
- "p-queue": "^4.0.0"
- },
- "engines": {
- "node": ">= 6.9.0"
- }
- },
- "node_modules/@lerna/symlink-binary": {
- "version": "3.17.0",
- "resolved": "https://registry.npmjs.org/@lerna/symlink-binary/-/symlink-binary-3.17.0.tgz",
- "integrity": "sha512-RLpy9UY6+3nT5J+5jkM5MZyMmjNHxZIZvXLV+Q3MXrf7Eaa1hNqyynyj4RO95fxbS+EZc4XVSk25DGFQbcRNSQ==",
- "dev": true,
- "dependencies": {
- "@lerna/create-symlink": "3.16.2",
- "@lerna/package": "3.16.0",
- "fs-extra": "^8.1.0",
- "p-map": "^2.1.0"
- },
- "engines": {
- "node": ">= 6.9.0"
- }
- },
- "node_modules/@lerna/symlink-dependencies": {
- "version": "3.17.0",
- "resolved": "https://registry.npmjs.org/@lerna/symlink-dependencies/-/symlink-dependencies-3.17.0.tgz",
- "integrity": "sha512-KmjU5YT1bpt6coOmdFueTJ7DFJL4H1w5eF8yAQ2zsGNTtZ+i5SGFBWpb9AQaw168dydc3s4eu0W0Sirda+F59Q==",
- "dev": true,
- "dependencies": {
- "@lerna/create-symlink": "3.16.2",
- "@lerna/resolve-symlink": "3.16.0",
- "@lerna/symlink-binary": "3.17.0",
- "fs-extra": "^8.1.0",
- "p-finally": "^1.0.0",
- "p-map": "^2.1.0",
- "p-map-series": "^1.0.0"
- },
- "engines": {
- "node": ">= 6.9.0"
- }
- },
- "node_modules/@lerna/timer": {
- "version": "3.13.0",
- "resolved": "https://registry.npmjs.org/@lerna/timer/-/timer-3.13.0.tgz",
- "integrity": "sha512-RHWrDl8U4XNPqY5MQHkToWS9jHPnkLZEt5VD+uunCKTfzlxGnRCr3/zVr8VGy/uENMYpVP3wJa4RKGY6M0vkRw==",
- "dev": true,
- "engines": {
- "node": ">= 6.9.0"
- }
- },
- "node_modules/@lerna/validation-error": {
- "version": "3.13.0",
- "resolved": "https://registry.npmjs.org/@lerna/validation-error/-/validation-error-3.13.0.tgz",
- "integrity": "sha512-SiJP75nwB8GhgwLKQfdkSnDufAaCbkZWJqEDlKOUPUvVOplRGnfL+BPQZH5nvq2BYSRXsksXWZ4UHVnQZI/HYA==",
- "dev": true,
- "dependencies": {
- "npmlog": "^4.1.2"
- },
- "engines": {
- "node": ">= 6.9.0"
- }
- },
- "node_modules/@lerna/version": {
- "version": "3.22.1",
- "resolved": "https://registry.npmjs.org/@lerna/version/-/version-3.22.1.tgz",
- "integrity": "sha512-PSGt/K1hVqreAFoi3zjD0VEDupQ2WZVlVIwesrE5GbrL2BjXowjCsTDPqblahDUPy0hp6h7E2kG855yLTp62+g==",
- "dev": true,
- "dependencies": {
- "@lerna/check-working-tree": "3.16.5",
- "@lerna/child-process": "3.16.5",
- "@lerna/collect-updates": "3.20.0",
- "@lerna/command": "3.21.0",
- "@lerna/conventional-commits": "3.22.0",
- "@lerna/github-client": "3.22.0",
- "@lerna/gitlab-client": "3.15.0",
- "@lerna/output": "3.13.0",
- "@lerna/prerelease-id-from-version": "3.16.0",
- "@lerna/prompt": "3.18.5",
- "@lerna/run-lifecycle": "3.16.2",
- "@lerna/run-topologically": "3.18.5",
- "@lerna/validation-error": "3.13.0",
- "chalk": "^2.3.1",
- "dedent": "^0.7.0",
- "load-json-file": "^5.3.0",
- "minimatch": "^3.0.4",
- "npmlog": "^4.1.2",
- "p-map": "^2.1.0",
- "p-pipe": "^1.2.0",
- "p-reduce": "^1.0.0",
- "p-waterfall": "^1.0.0",
- "semver": "^6.2.0",
- "slash": "^2.0.0",
- "temp-write": "^3.4.0",
- "write-json-file": "^3.2.0"
- },
- "engines": {
- "node": ">= 6.9.0"
- }
- },
- "node_modules/@lerna/version/node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true,
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/@lerna/version/node_modules/slash": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
- "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/@lerna/write-log-file": {
- "version": "3.13.0",
- "resolved": "https://registry.npmjs.org/@lerna/write-log-file/-/write-log-file-3.13.0.tgz",
- "integrity": "sha512-RibeMnDPvlL8bFYW5C8cs4mbI3AHfQef73tnJCQ/SgrXZHehmHnsyWUiE7qDQCAo+B1RfTapvSyFF69iPj326A==",
- "dev": true,
- "dependencies": {
- "npmlog": "^4.1.2",
- "write-file-atomic": "^2.3.0"
- },
- "engines": {
- "node": ">= 6.9.0"
- }
- },
- "node_modules/@mrmlnc/readdir-enhanced": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz",
- "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==",
- "dev": true,
- "dependencies": {
- "call-me-maybe": "^1.0.1",
- "glob-to-regexp": "^0.3.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@octokit/auth-token": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz",
- "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==",
- "dev": true,
- "dependencies": {
- "@octokit/types": "^6.0.3"
- }
- },
- "node_modules/@octokit/core": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.0.0.tgz",
- "integrity": "sha512-YbAtMWIrbZ9FCXbLwT9wWB8TyLjq9mxpKdgB3dUNxQcIVTf9hJ70gRPwAcqGZdY6WdJPZ0I7jLaaNDCiloGN2A==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@octokit/auth-token": "^4.0.0",
- "@octokit/graphql": "^7.0.0",
- "@octokit/request": "^8.0.2",
- "@octokit/request-error": "^5.0.0",
- "@octokit/types": "^11.0.0",
- "before-after-hook": "^2.2.0",
- "universal-user-agent": "^6.0.0"
- },
- "engines": {
- "node": ">= 18"
- }
- },
- "node_modules/@octokit/core/node_modules/@octokit/auth-token": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-4.0.0.tgz",
- "integrity": "sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==",
- "dev": true,
- "peer": true,
- "engines": {
- "node": ">= 18"
- }
- },
- "node_modules/@octokit/core/node_modules/@octokit/endpoint": {
- "version": "9.0.0",
- "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.0.tgz",
- "integrity": "sha512-szrQhiqJ88gghWY2Htt8MqUDO6++E/EIXqJ2ZEp5ma3uGS46o7LZAzSLt49myB7rT+Hfw5Y6gO3LmOxGzHijAQ==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@octokit/types": "^11.0.0",
- "is-plain-object": "^5.0.0",
- "universal-user-agent": "^6.0.0"
- },
- "engines": {
- "node": ">= 18"
- }
- },
- "node_modules/@octokit/core/node_modules/@octokit/openapi-types": {
- "version": "18.0.0",
- "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-18.0.0.tgz",
- "integrity": "sha512-V8GImKs3TeQRxRtXFpG2wl19V7444NIOTDF24AWuIbmNaNYOQMWRbjcGDXV5B+0n887fgDcuMNOmlul+k+oJtw==",
- "dev": true,
- "peer": true
- },
- "node_modules/@octokit/core/node_modules/@octokit/request": {
- "version": "8.1.1",
- "resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.1.1.tgz",
- "integrity": "sha512-8N+tdUz4aCqQmXl8FpHYfKG9GelDFd7XGVzyN8rc6WxVlYcfpHECnuRkgquzz+WzvHTK62co5di8gSXnzASZPQ==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@octokit/endpoint": "^9.0.0",
- "@octokit/request-error": "^5.0.0",
- "@octokit/types": "^11.1.0",
- "is-plain-object": "^5.0.0",
- "universal-user-agent": "^6.0.0"
- },
- "engines": {
- "node": ">= 18"
- }
- },
- "node_modules/@octokit/core/node_modules/@octokit/request-error": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.0.0.tgz",
- "integrity": "sha512-1ue0DH0Lif5iEqT52+Rf/hf0RmGO9NWFjrzmrkArpG9trFfDM/efx00BJHdLGuro4BR/gECxCU2Twf5OKrRFsQ==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@octokit/types": "^11.0.0",
- "deprecation": "^2.0.0",
- "once": "^1.4.0"
- },
- "engines": {
- "node": ">= 18"
- }
- },
- "node_modules/@octokit/core/node_modules/@octokit/types": {
- "version": "11.1.0",
- "resolved": "https://registry.npmjs.org/@octokit/types/-/types-11.1.0.tgz",
- "integrity": "sha512-Fz0+7GyLm/bHt8fwEqgvRBWwIV1S6wRRyq+V6exRKLVWaKGsuy6H9QFYeBVDV7rK6fO3XwHgQOPxv+cLj2zpXQ==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@octokit/openapi-types": "^18.0.0"
- }
- },
- "node_modules/@octokit/core/node_modules/universal-user-agent": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz",
- "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==",
- "dev": true,
- "peer": true
- },
- "node_modules/@octokit/endpoint": {
- "version": "6.0.12",
- "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz",
- "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==",
- "dev": true,
- "dependencies": {
- "@octokit/types": "^6.0.3",
- "is-plain-object": "^5.0.0",
- "universal-user-agent": "^6.0.0"
- }
- },
- "node_modules/@octokit/endpoint/node_modules/universal-user-agent": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz",
- "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==",
- "dev": true
- },
- "node_modules/@octokit/graphql": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.0.1.tgz",
- "integrity": "sha512-T5S3oZ1JOE58gom6MIcrgwZXzTaxRnxBso58xhozxHpOqSTgDS6YNeEUvZ/kRvXgPrRz/KHnZhtb7jUMRi9E6w==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@octokit/request": "^8.0.1",
- "@octokit/types": "^11.0.0",
- "universal-user-agent": "^6.0.0"
- },
- "engines": {
- "node": ">= 18"
- }
- },
- "node_modules/@octokit/graphql/node_modules/@octokit/endpoint": {
- "version": "9.0.0",
- "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.0.tgz",
- "integrity": "sha512-szrQhiqJ88gghWY2Htt8MqUDO6++E/EIXqJ2ZEp5ma3uGS46o7LZAzSLt49myB7rT+Hfw5Y6gO3LmOxGzHijAQ==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@octokit/types": "^11.0.0",
- "is-plain-object": "^5.0.0",
- "universal-user-agent": "^6.0.0"
- },
- "engines": {
- "node": ">= 18"
- }
- },
- "node_modules/@octokit/graphql/node_modules/@octokit/openapi-types": {
- "version": "18.0.0",
- "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-18.0.0.tgz",
- "integrity": "sha512-V8GImKs3TeQRxRtXFpG2wl19V7444NIOTDF24AWuIbmNaNYOQMWRbjcGDXV5B+0n887fgDcuMNOmlul+k+oJtw==",
- "dev": true,
- "peer": true
- },
- "node_modules/@octokit/graphql/node_modules/@octokit/request": {
- "version": "8.1.1",
- "resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.1.1.tgz",
- "integrity": "sha512-8N+tdUz4aCqQmXl8FpHYfKG9GelDFd7XGVzyN8rc6WxVlYcfpHECnuRkgquzz+WzvHTK62co5di8gSXnzASZPQ==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@octokit/endpoint": "^9.0.0",
- "@octokit/request-error": "^5.0.0",
- "@octokit/types": "^11.1.0",
- "is-plain-object": "^5.0.0",
- "universal-user-agent": "^6.0.0"
- },
- "engines": {
- "node": ">= 18"
- }
- },
- "node_modules/@octokit/graphql/node_modules/@octokit/request-error": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.0.0.tgz",
- "integrity": "sha512-1ue0DH0Lif5iEqT52+Rf/hf0RmGO9NWFjrzmrkArpG9trFfDM/efx00BJHdLGuro4BR/gECxCU2Twf5OKrRFsQ==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@octokit/types": "^11.0.0",
- "deprecation": "^2.0.0",
- "once": "^1.4.0"
- },
- "engines": {
- "node": ">= 18"
- }
- },
- "node_modules/@octokit/graphql/node_modules/@octokit/types": {
- "version": "11.1.0",
- "resolved": "https://registry.npmjs.org/@octokit/types/-/types-11.1.0.tgz",
- "integrity": "sha512-Fz0+7GyLm/bHt8fwEqgvRBWwIV1S6wRRyq+V6exRKLVWaKGsuy6H9QFYeBVDV7rK6fO3XwHgQOPxv+cLj2zpXQ==",
- "dev": true,
- "peer": true,
- "dependencies": {
- "@octokit/openapi-types": "^18.0.0"
- }
- },
- "node_modules/@octokit/graphql/node_modules/universal-user-agent": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz",
- "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==",
- "dev": true,
- "peer": true
- },
- "node_modules/@octokit/openapi-types": {
- "version": "12.11.0",
- "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz",
- "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==",
- "dev": true
- },
- "node_modules/@octokit/plugin-enterprise-rest": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-6.0.1.tgz",
- "integrity": "sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw==",
- "dev": true
- },
- "node_modules/@octokit/plugin-paginate-rest": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-1.1.2.tgz",
- "integrity": "sha512-jbsSoi5Q1pj63sC16XIUboklNw+8tL9VOnJsWycWYR78TKss5PVpIPb1TUUcMQ+bBh7cY579cVAWmf5qG+dw+Q==",
- "dev": true,
- "dependencies": {
- "@octokit/types": "^2.0.1"
- }
- },
- "node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/types": {
- "version": "2.16.2",
- "resolved": "https://registry.npmjs.org/@octokit/types/-/types-2.16.2.tgz",
- "integrity": "sha512-O75k56TYvJ8WpAakWwYRN8Bgu60KrmX0z1KqFp1kNiFNkgW+JW+9EBKZ+S33PU6SLvbihqd+3drvPxKK68Ee8Q==",
- "dev": true,
- "dependencies": {
- "@types/node": ">= 8"
- }
- },
- "node_modules/@octokit/plugin-request-log": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz",
- "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==",
- "dev": true,
- "peerDependencies": {
- "@octokit/core": ">=3"
- }
- },
- "node_modules/@octokit/plugin-rest-endpoint-methods": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-2.4.0.tgz",
- "integrity": "sha512-EZi/AWhtkdfAYi01obpX0DF7U6b1VRr30QNQ5xSFPITMdLSfhcBqjamE3F+sKcxPbD7eZuMHu3Qkk2V+JGxBDQ==",
- "dev": true,
- "dependencies": {
- "@octokit/types": "^2.0.1",
- "deprecation": "^2.3.1"
- }
- },
- "node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/types": {
- "version": "2.16.2",
- "resolved": "https://registry.npmjs.org/@octokit/types/-/types-2.16.2.tgz",
- "integrity": "sha512-O75k56TYvJ8WpAakWwYRN8Bgu60KrmX0z1KqFp1kNiFNkgW+JW+9EBKZ+S33PU6SLvbihqd+3drvPxKK68Ee8Q==",
- "dev": true,
- "dependencies": {
- "@types/node": ">= 8"
- }
- },
- "node_modules/@octokit/request": {
- "version": "5.6.3",
- "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz",
- "integrity": "sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==",
- "dev": true,
- "dependencies": {
- "@octokit/endpoint": "^6.0.1",
- "@octokit/request-error": "^2.1.0",
- "@octokit/types": "^6.16.1",
- "is-plain-object": "^5.0.0",
- "node-fetch": "^2.6.7",
- "universal-user-agent": "^6.0.0"
- }
- },
- "node_modules/@octokit/request-error": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-1.2.1.tgz",
- "integrity": "sha512-+6yDyk1EES6WK+l3viRDElw96MvwfJxCt45GvmjDUKWjYIb3PJZQkq3i46TwGwoPD4h8NmTrENmtyA1FwbmhRA==",
- "dev": true,
- "dependencies": {
- "@octokit/types": "^2.0.0",
- "deprecation": "^2.0.0",
- "once": "^1.4.0"
- }
- },
- "node_modules/@octokit/request-error/node_modules/@octokit/types": {
- "version": "2.16.2",
- "resolved": "https://registry.npmjs.org/@octokit/types/-/types-2.16.2.tgz",
- "integrity": "sha512-O75k56TYvJ8WpAakWwYRN8Bgu60KrmX0z1KqFp1kNiFNkgW+JW+9EBKZ+S33PU6SLvbihqd+3drvPxKK68Ee8Q==",
- "dev": true,
- "dependencies": {
- "@types/node": ">= 8"
- }
- },
- "node_modules/@octokit/request/node_modules/@octokit/request-error": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz",
- "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==",
- "dev": true,
- "dependencies": {
- "@octokit/types": "^6.0.3",
- "deprecation": "^2.0.0",
- "once": "^1.4.0"
- }
- },
- "node_modules/@octokit/request/node_modules/universal-user-agent": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz",
- "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==",
- "dev": true
- },
- "node_modules/@octokit/rest": {
- "version": "16.43.2",
- "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-16.43.2.tgz",
- "integrity": "sha512-ngDBevLbBTFfrHZeiS7SAMAZ6ssuVmXuya+F/7RaVvlysgGa1JKJkKWY+jV6TCJYcW0OALfJ7nTIGXcBXzycfQ==",
- "dev": true,
- "dependencies": {
- "@octokit/auth-token": "^2.4.0",
- "@octokit/plugin-paginate-rest": "^1.1.1",
- "@octokit/plugin-request-log": "^1.0.0",
- "@octokit/plugin-rest-endpoint-methods": "2.4.0",
- "@octokit/request": "^5.2.0",
- "@octokit/request-error": "^1.0.2",
- "atob-lite": "^2.0.0",
- "before-after-hook": "^2.0.0",
- "btoa-lite": "^1.0.0",
- "deprecation": "^2.0.0",
- "lodash.get": "^4.4.2",
- "lodash.set": "^4.3.2",
- "lodash.uniq": "^4.5.0",
- "octokit-pagination-methods": "^1.1.0",
- "once": "^1.4.0",
- "universal-user-agent": "^4.0.0"
- }
- },
- "node_modules/@octokit/types": {
- "version": "6.41.0",
- "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz",
- "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==",
- "dev": true,
- "dependencies": {
- "@octokit/openapi-types": "^12.11.0"
- }
- },
- "node_modules/@types/glob": {
- "version": "7.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@types/minimatch": "*",
- "@types/node": "*"
- }
- },
- "node_modules/@types/minimatch": {
- "version": "3.0.5",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@types/minimist": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz",
- "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==",
- "dev": true
- },
- "node_modules/@types/node": {
- "version": "20.5.1",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@types/normalize-package-data": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz",
- "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==",
- "dev": true
- },
- "node_modules/@zkochan/cmd-shim": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/@zkochan/cmd-shim/-/cmd-shim-3.1.0.tgz",
- "integrity": "sha512-o8l0+x7C7sMZU3v9GuJIAU10qQLtwR1dtRQIOmlNMtyaqhmpXOzx1HWiYoWfmmf9HHZoAkXpc9TM9PQYF9d4Jg==",
- "dev": true,
- "dependencies": {
- "is-windows": "^1.0.0",
- "mkdirp-promise": "^5.0.1",
- "mz": "^2.5.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/abbrev": {
- "version": "1.1.1",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/agentkeepalive": {
- "version": "3.5.2",
- "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-3.5.2.tgz",
- "integrity": "sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ==",
- "dev": true,
- "dependencies": {
- "humanize-ms": "^1.2.1"
- },
- "engines": {
- "node": ">= 4.0.0"
- }
- },
- "node_modules/ajv": {
- "version": "6.12.6",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- }
- },
- "node_modules/ansi-regex": {
- "version": "5.0.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/ansi-styles": {
- "version": "3.2.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-convert": "^1.9.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/any-promise": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
- "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==",
- "dev": true
- },
- "node_modules/application-config": {
- "version": "0.1.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "application-config-path": "^0.1.0",
- "mkdirp": "^0.5.1"
- }
- },
- "node_modules/application-config-path": {
- "version": "0.1.0",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/aproba": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz",
- "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==",
- "dev": true
- },
- "node_modules/are-we-there-yet": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz",
- "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==",
- "dev": true,
- "dependencies": {
- "delegates": "^1.0.0",
- "readable-stream": "^2.0.6"
- }
- },
- "node_modules/are-we-there-yet/node_modules/readable-stream": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
- "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
- "dev": true,
- "dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "node_modules/are-we-there-yet/node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "node_modules/are-we-there-yet/node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
- "node_modules/argparse": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
- "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
- "dev": true,
- "dependencies": {
- "sprintf-js": "~1.0.2"
- }
- },
- "node_modules/arr-diff": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
- "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/arr-flatten": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
- "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/arr-union": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
- "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/array-buffer-byte-length": {
- "version": "1.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.2",
- "is-array-buffer": "^3.0.1"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/array-differ": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-2.1.0.tgz",
- "integrity": "sha512-KbUpJgx909ZscOc/7CLATBFam7P1Z1QRQInvgT0UztM9Q72aGKCunKASAl7WNW0tnPmPyEMeMhdsfWhfmW037w==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/array-find-index": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
- "integrity": "sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/array-ify": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz",
- "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==",
- "dev": true
- },
- "node_modules/array-uniq": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
- "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/array-unique": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
- "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/array.prototype.reduce": {
- "version": "1.0.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
- "es-abstract": "^1.20.4",
- "es-array-method-boxes-properly": "^1.0.0",
- "is-string": "^1.0.7"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/arraybuffer.prototype.slice": {
- "version": "1.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "array-buffer-byte-length": "^1.0.0",
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "get-intrinsic": "^1.2.1",
- "is-array-buffer": "^3.0.2",
- "is-shared-array-buffer": "^1.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/arrify": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
- "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/asap": {
- "version": "2.0.6",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/asn1": {
- "version": "0.2.6",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "safer-buffer": "~2.1.0"
- }
- },
- "node_modules/assert-plus": {
- "version": "1.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.8"
- }
- },
- "node_modules/assign-symbols": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
- "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/async": {
- "version": "0.2.10",
- "dev": true
- },
- "node_modules/asynckit": {
- "version": "0.4.0",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/atob": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
- "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
- "dev": true,
- "bin": {
- "atob": "bin/atob.js"
- },
- "engines": {
- "node": ">= 4.5.0"
- }
- },
- "node_modules/atob-lite": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/atob-lite/-/atob-lite-2.0.0.tgz",
- "integrity": "sha512-LEeSAWeh2Gfa2FtlQE1shxQ8zi5F9GHarrGKz08TMdODD5T4eH6BMsvtnhbWZ+XQn+Gb6om/917ucvRu7l7ukw==",
- "dev": true
- },
- "node_modules/available-typed-arrays": {
- "version": "1.0.5",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/aws-sign": {
- "version": "0.3.0",
- "dev": true,
- "engines": {
- "node": "*"
- }
- },
- "node_modules/aws-sign2": {
- "version": "0.7.0",
- "dev": true,
- "license": "Apache-2.0",
- "engines": {
- "node": "*"
- }
- },
- "node_modules/aws4": {
- "version": "1.12.0",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/balanced-match": {
- "version": "1.0.0",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/base": {
- "version": "0.11.2",
- "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
- "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
- "dev": true,
- "dependencies": {
- "cache-base": "^1.0.1",
- "class-utils": "^0.3.5",
- "component-emitter": "^1.2.1",
- "define-property": "^1.0.0",
- "isobject": "^3.0.1",
- "mixin-deep": "^1.2.0",
- "pascalcase": "^0.1.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/base/node_modules/define-property": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
- "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",
- "dev": true,
- "dependencies": {
- "is-descriptor": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/bcrypt-pbkdf": {
- "version": "1.0.2",
- "dev": true,
- "license": "BSD-3-Clause",
- "dependencies": {
- "tweetnacl": "^0.14.3"
- }
- },
- "node_modules/before-after-hook": {
- "version": "2.2.3",
- "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz",
- "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==",
- "dev": true
- },
- "node_modules/bl": {
- "version": "0.9.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "readable-stream": "~1.0.26"
- }
- },
- "node_modules/bl/node_modules/isarray": {
- "version": "0.0.1",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/bl/node_modules/readable-stream": {
- "version": "1.0.34",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.1",
- "isarray": "0.0.1",
- "string_decoder": "~0.10.x"
- }
- },
- "node_modules/bl/node_modules/string_decoder": {
- "version": "0.10.31",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/bluebird": {
- "version": "3.7.2",
- "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
- "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==",
- "dev": true
- },
- "node_modules/boom": {
- "version": "0.4.2",
- "dev": true,
- "dependencies": {
- "hoek": "0.9.x"
- },
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/boom/node_modules/hoek": {
- "version": "0.9.1",
- "dev": true,
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/brace-expansion": {
- "version": "1.1.11",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "node_modules/btoa-lite": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/btoa-lite/-/btoa-lite-1.0.0.tgz",
- "integrity": "sha512-gvW7InbIyF8AicrqWoptdW08pUxuhq8BEgowNajy9RhiE86fmGAGl+bLKo6oB8QP0CkqHLowfN0oJdKC/J6LbA==",
- "dev": true
- },
- "node_modules/buffer-from": {
- "version": "1.1.2",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/builtins": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz",
- "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==",
- "dev": true
- },
- "node_modules/byline": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/byline/-/byline-5.0.0.tgz",
- "integrity": "sha512-s6webAy+R4SR8XVuJWt2V2rGvhnrhxN+9S15GNuTK3wKPOXFF6RNc+8ug2XhH+2s4f+uudG4kUVYmYOQWL2g0Q==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/byte-size": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/byte-size/-/byte-size-5.0.1.tgz",
- "integrity": "sha512-/XuKeqWocKsYa/cBY1YbSJSWWqTi4cFgr9S6OyM7PBaPbr9zvNGwWP33vt0uqGhwDdN+y3yhbXVILEUpnwEWGw==",
- "dev": true,
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/cacache": {
- "version": "12.0.4",
- "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz",
- "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==",
- "dev": true,
- "dependencies": {
- "bluebird": "^3.5.5",
- "chownr": "^1.1.1",
- "figgy-pudding": "^3.5.1",
- "glob": "^7.1.4",
- "graceful-fs": "^4.1.15",
- "infer-owner": "^1.0.3",
- "lru-cache": "^5.1.1",
- "mississippi": "^3.0.0",
- "mkdirp": "^0.5.1",
- "move-concurrently": "^1.0.1",
- "promise-inflight": "^1.0.1",
- "rimraf": "^2.6.3",
- "ssri": "^6.0.1",
- "unique-filename": "^1.1.1",
- "y18n": "^4.0.0"
- }
- },
- "node_modules/cacache/node_modules/rimraf": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
- "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
- "dev": true,
- "dependencies": {
- "glob": "^7.1.3"
- },
- "bin": {
- "rimraf": "bin.js"
- }
- },
- "node_modules/cache-base": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
- "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
- "dev": true,
- "dependencies": {
- "collection-visit": "^1.0.0",
- "component-emitter": "^1.2.1",
- "get-value": "^2.0.6",
- "has-value": "^1.0.0",
- "isobject": "^3.0.1",
- "set-value": "^2.0.0",
- "to-object-path": "^0.3.0",
- "union-value": "^1.0.0",
- "unset-value": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/call-bind": {
- "version": "1.0.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "function-bind": "^1.1.1",
- "get-intrinsic": "^1.0.2"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/call-me-maybe": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.2.tgz",
- "integrity": "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==",
- "dev": true
- },
- "node_modules/caller-callsite": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz",
- "integrity": "sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==",
- "dev": true,
- "dependencies": {
- "callsites": "^2.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/caller-callsite/node_modules/callsites": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz",
- "integrity": "sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/caller-path": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz",
- "integrity": "sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==",
- "dev": true,
- "dependencies": {
- "caller-callsite": "^2.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/camelcase": {
- "version": "5.3.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/camelcase-keys": {
- "version": "6.2.2",
- "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz",
- "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==",
- "dev": true,
- "dependencies": {
- "camelcase": "^5.3.1",
- "map-obj": "^4.0.0",
- "quick-lru": "^4.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/caseless": {
- "version": "0.12.0",
- "dev": true,
- "license": "Apache-2.0"
- },
- "node_modules/chalk": {
- "version": "2.4.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/chardet": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
- "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
- "dev": true
- },
- "node_modules/chownr": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
- "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==",
- "dev": true
- },
- "node_modules/ci-info": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
- "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==",
- "dev": true
- },
- "node_modules/class-utils": {
- "version": "0.3.6",
- "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
- "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
- "dev": true,
- "dependencies": {
- "arr-union": "^3.1.0",
- "define-property": "^0.2.5",
- "isobject": "^3.0.0",
- "static-extend": "^0.1.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/class-utils/node_modules/define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
- "dev": true,
- "dependencies": {
- "is-descriptor": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/class-utils/node_modules/is-accessor-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
- "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==",
- "dev": true,
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/class-utils/node_modules/is-accessor-descriptor/node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/class-utils/node_modules/is-buffer": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
- "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
- "dev": true
- },
- "node_modules/class-utils/node_modules/is-data-descriptor": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
- "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==",
- "dev": true,
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/class-utils/node_modules/is-data-descriptor/node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/class-utils/node_modules/is-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
- "dev": true,
- "dependencies": {
- "is-accessor-descriptor": "^0.1.6",
- "is-data-descriptor": "^0.1.4",
- "kind-of": "^5.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/class-utils/node_modules/kind-of": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/cli-width": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz",
- "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==",
- "dev": true
- },
- "node_modules/cliui": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
- "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
- "dev": true,
- "dependencies": {
- "string-width": "^3.1.0",
- "strip-ansi": "^5.2.0",
- "wrap-ansi": "^5.1.0"
- }
- },
- "node_modules/cliui/node_modules/ansi-regex": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
- "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/cliui/node_modules/emoji-regex": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
- "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
- "dev": true
- },
- "node_modules/cliui/node_modules/is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/cliui/node_modules/string-width": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
- "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
- "dev": true,
- "dependencies": {
- "emoji-regex": "^7.0.1",
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^5.1.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/cliui/node_modules/strip-ansi": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
- "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
- "dev": true,
- "dependencies": {
- "ansi-regex": "^4.1.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/cliui/node_modules/wrap-ansi": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
- "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^3.2.0",
- "string-width": "^3.0.0",
- "strip-ansi": "^5.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/clone": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
- "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==",
- "dev": true,
- "engines": {
- "node": ">=0.8"
- }
- },
- "node_modules/clone-deep": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz",
- "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==",
- "dev": true,
- "dependencies": {
- "is-plain-object": "^2.0.4",
- "kind-of": "^6.0.2",
- "shallow-clone": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/clone-deep/node_modules/is-plain-object": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
- "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
- "dev": true,
- "dependencies": {
- "isobject": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/code-point-at": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
- "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/collection-visit": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
- "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==",
- "dev": true,
- "dependencies": {
- "map-visit": "^1.0.0",
- "object-visit": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/color-convert": {
- "version": "1.9.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "color-name": "1.1.3"
- }
- },
- "node_modules/color-name": {
- "version": "1.1.3",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/colors": {
- "version": "0.5.1",
- "dev": true,
- "engines": {
- "node": ">=0.1.90"
- }
- },
- "node_modules/columnify": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.6.0.tgz",
- "integrity": "sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==",
- "dev": true,
- "dependencies": {
- "strip-ansi": "^6.0.1",
- "wcwidth": "^1.0.0"
- },
- "engines": {
- "node": ">=8.0.0"
- }
- },
- "node_modules/combined-stream": {
- "version": "1.0.8",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "delayed-stream": "~1.0.0"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/compare-func": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz",
- "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==",
- "dev": true,
- "dependencies": {
- "array-ify": "^1.0.0",
- "dot-prop": "^5.1.0"
- }
- },
- "node_modules/compare-func/node_modules/dot-prop": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz",
- "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==",
- "dev": true,
- "dependencies": {
- "is-obj": "^2.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/compare-func/node_modules/is-obj": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz",
- "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/component-emitter": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
- "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==",
- "dev": true
- },
- "node_modules/concat-map": {
- "version": "0.0.1",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/concat-stream": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz",
- "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==",
- "dev": true,
- "engines": [
- "node >= 6.0"
- ],
- "dependencies": {
- "buffer-from": "^1.0.0",
- "inherits": "^2.0.3",
- "readable-stream": "^3.0.2",
- "typedarray": "^0.0.6"
- }
- },
- "node_modules/config-chain": {
- "version": "1.1.13",
- "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz",
- "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==",
- "dev": true,
- "dependencies": {
- "ini": "^1.3.4",
- "proto-list": "~1.2.1"
- }
- },
- "node_modules/console-control-strings": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
- "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==",
- "dev": true
- },
- "node_modules/conventional-changelog-angular": {
- "version": "5.0.13",
- "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz",
- "integrity": "sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==",
- "dev": true,
- "dependencies": {
- "compare-func": "^2.0.0",
- "q": "^1.5.1"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/conventional-changelog-angular/node_modules/q": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
- "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==",
- "dev": true,
- "engines": {
- "node": ">=0.6.0",
- "teleport": ">=0.2.0"
- }
- },
- "node_modules/conventional-changelog-core": {
- "version": "3.2.3",
- "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-3.2.3.tgz",
- "integrity": "sha512-LMMX1JlxPIq/Ez5aYAYS5CpuwbOk6QFp8O4HLAcZxe3vxoCtABkhfjetk8IYdRB9CDQGwJFLR3Dr55Za6XKgUQ==",
- "dev": true,
- "dependencies": {
- "conventional-changelog-writer": "^4.0.6",
- "conventional-commits-parser": "^3.0.3",
- "dateformat": "^3.0.0",
- "get-pkg-repo": "^1.0.0",
- "git-raw-commits": "2.0.0",
- "git-remote-origin-url": "^2.0.0",
- "git-semver-tags": "^2.0.3",
- "lodash": "^4.2.1",
- "normalize-package-data": "^2.3.5",
- "q": "^1.5.1",
- "read-pkg": "^3.0.0",
- "read-pkg-up": "^3.0.0",
- "through2": "^3.0.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/conventional-changelog-core/node_modules/q": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
- "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==",
- "dev": true,
- "engines": {
- "node": ">=0.6.0",
- "teleport": ">=0.2.0"
- }
- },
- "node_modules/conventional-changelog-preset-loader": {
- "version": "2.3.4",
- "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz",
- "integrity": "sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g==",
- "dev": true,
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/conventional-changelog-writer": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-4.1.0.tgz",
- "integrity": "sha512-WwKcUp7WyXYGQmkLsX4QmU42AZ1lqlvRW9mqoyiQzdD+rJWbTepdWoKJuwXTS+yq79XKnQNa93/roViPQrAQgw==",
- "dev": true,
- "dependencies": {
- "compare-func": "^2.0.0",
- "conventional-commits-filter": "^2.0.7",
- "dateformat": "^3.0.0",
- "handlebars": "^4.7.6",
- "json-stringify-safe": "^5.0.1",
- "lodash": "^4.17.15",
- "meow": "^8.0.0",
- "semver": "^6.0.0",
- "split": "^1.0.0",
- "through2": "^4.0.0"
- },
- "bin": {
- "conventional-changelog-writer": "cli.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/conventional-changelog-writer/node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true,
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/conventional-changelog-writer/node_modules/through2": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz",
- "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==",
- "dev": true,
- "dependencies": {
- "readable-stream": "3"
- }
- },
- "node_modules/conventional-commits-filter": {
- "version": "2.0.7",
- "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz",
- "integrity": "sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA==",
- "dev": true,
- "dependencies": {
- "lodash.ismatch": "^4.4.0",
- "modify-values": "^1.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/conventional-commits-parser": {
- "version": "3.2.4",
- "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz",
- "integrity": "sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==",
- "dev": true,
- "dependencies": {
- "is-text-path": "^1.0.1",
- "JSONStream": "^1.0.4",
- "lodash": "^4.17.15",
- "meow": "^8.0.0",
- "split2": "^3.0.0",
- "through2": "^4.0.0"
- },
- "bin": {
- "conventional-commits-parser": "cli.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/conventional-commits-parser/node_modules/through2": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz",
- "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==",
- "dev": true,
- "dependencies": {
- "readable-stream": "3"
- }
- },
- "node_modules/conventional-recommended-bump": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-5.0.1.tgz",
- "integrity": "sha512-RVdt0elRcCxL90IrNP0fYCpq1uGt2MALko0eyeQ+zQuDVWtMGAy9ng6yYn3kax42lCj9+XBxQ8ZN6S9bdKxDhQ==",
- "dev": true,
- "dependencies": {
- "concat-stream": "^2.0.0",
- "conventional-changelog-preset-loader": "^2.1.1",
- "conventional-commits-filter": "^2.0.2",
- "conventional-commits-parser": "^3.0.3",
- "git-raw-commits": "2.0.0",
- "git-semver-tags": "^2.0.3",
- "meow": "^4.0.0",
- "q": "^1.5.1"
- },
- "bin": {
- "conventional-recommended-bump": "cli.js"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/conventional-recommended-bump/node_modules/camelcase": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
- "integrity": "sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/conventional-recommended-bump/node_modules/camelcase-keys": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz",
- "integrity": "sha512-Ej37YKYbFUI8QiYlvj9YHb6/Z60dZyPJW0Cs8sFilMbd2lP0bw3ylAq9yJkK4lcTA2dID5fG8LjmJYbO7kWb7Q==",
- "dev": true,
- "dependencies": {
- "camelcase": "^4.1.0",
- "map-obj": "^2.0.0",
- "quick-lru": "^1.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/conventional-recommended-bump/node_modules/indent-string": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz",
- "integrity": "sha512-BYqTHXTGUIvg7t1r4sJNKcbDZkL92nkXA8YtRpbjFHRHGDL/NtUeiBJMeE60kIFN/Mg8ESaWQvftaYMGJzQZCQ==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/conventional-recommended-bump/node_modules/map-obj": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz",
- "integrity": "sha512-TzQSV2DiMYgoF5RycneKVUzIa9bQsj/B3tTgsE3dOGqlzHnGIDaC7XBE7grnA+8kZPnfqSGFe95VHc2oc0VFUQ==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/conventional-recommended-bump/node_modules/meow": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz",
- "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==",
- "dev": true,
- "dependencies": {
- "camelcase-keys": "^4.0.0",
- "decamelize-keys": "^1.0.0",
- "loud-rejection": "^1.0.0",
- "minimist": "^1.1.3",
- "minimist-options": "^3.0.1",
- "normalize-package-data": "^2.3.4",
- "read-pkg-up": "^3.0.0",
- "redent": "^2.0.0",
- "trim-newlines": "^2.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/conventional-recommended-bump/node_modules/minimist-options": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz",
- "integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==",
- "dev": true,
- "dependencies": {
- "arrify": "^1.0.1",
- "is-plain-obj": "^1.1.0"
- },
- "engines": {
- "node": ">= 4"
- }
- },
- "node_modules/conventional-recommended-bump/node_modules/q": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
- "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==",
- "dev": true,
- "engines": {
- "node": ">=0.6.0",
- "teleport": ">=0.2.0"
- }
- },
- "node_modules/conventional-recommended-bump/node_modules/quick-lru": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz",
- "integrity": "sha512-tRS7sTgyxMXtLum8L65daJnHUhfDUgboRdcWW2bR9vBfrj2+O5HSMbQOJfJJjIVSPFqbBCF37FpwWXGitDc5tA==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/conventional-recommended-bump/node_modules/redent": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz",
- "integrity": "sha512-XNwrTx77JQCEMXTeb8movBKuK75MgH0RZkujNuDKCezemx/voapl9i2gCSi8WWm8+ox5ycJi1gxF22fR7c0Ciw==",
- "dev": true,
- "dependencies": {
- "indent-string": "^3.0.0",
- "strip-indent": "^2.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/conventional-recommended-bump/node_modules/strip-indent": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz",
- "integrity": "sha512-RsSNPLpq6YUL7QYy44RnPVTn/lcVZtb48Uof3X5JLbF4zD/Gs7ZFDv2HWol+leoQN2mT86LAzSshGfkTlSOpsA==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/conventional-recommended-bump/node_modules/trim-newlines": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz",
- "integrity": "sha512-MTBWv3jhVjTU7XR3IQHllbiJs8sc75a80OEhB6or/q7pLTWgQ0bMGQXXYQSrSuXe6WiKWDZ5txXY5P59a/coVA==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/cookie-jar": {
- "version": "0.3.0",
- "dev": true,
- "engines": {
- "node": "*"
- }
- },
- "node_modules/copy-concurrently": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz",
- "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==",
- "dev": true,
- "dependencies": {
- "aproba": "^1.1.1",
- "fs-write-stream-atomic": "^1.0.8",
- "iferr": "^0.1.5",
- "mkdirp": "^0.5.1",
- "rimraf": "^2.5.4",
- "run-queue": "^1.0.0"
- }
- },
- "node_modules/copy-concurrently/node_modules/aproba": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
- "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
- "dev": true
- },
- "node_modules/copy-concurrently/node_modules/rimraf": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
- "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
- "dev": true,
- "dependencies": {
- "glob": "^7.1.3"
- },
- "bin": {
- "rimraf": "bin.js"
- }
- },
- "node_modules/copy-descriptor": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
- "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/core-util-is": {
- "version": "1.0.2",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/cosmiconfig": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz",
- "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==",
- "dev": true,
- "dependencies": {
- "import-fresh": "^2.0.0",
- "is-directory": "^0.3.1",
- "js-yaml": "^3.13.1",
- "parse-json": "^4.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/cosmiconfig/node_modules/import-fresh": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz",
- "integrity": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==",
- "dev": true,
- "dependencies": {
- "caller-path": "^2.0.0",
- "resolve-from": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/cosmiconfig/node_modules/resolve-from": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
- "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/cross-spawn": {
- "version": "6.0.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "nice-try": "^1.0.4",
- "path-key": "^2.0.1",
- "semver": "^5.5.0",
- "shebang-command": "^1.2.0",
- "which": "^1.2.9"
- },
- "engines": {
- "node": ">=4.8"
- }
- },
- "node_modules/cross-spawn/node_modules/semver": {
- "version": "5.7.1",
- "dev": true,
- "license": "ISC",
- "bin": {
- "semver": "bin/semver"
- }
- },
- "node_modules/cryptiles": {
- "version": "0.2.2",
- "dev": true,
- "dependencies": {
- "boom": "0.4.x"
- },
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/ctype": {
- "version": "0.5.3",
- "dev": true,
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/currently-unhandled": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
- "integrity": "sha512-/fITjgjGU50vjQ4FH6eUoYu+iUoUKIXws2hL15JJpIR+BbTxaXQsMuuyjtNh2WqsSBS5nsaZHFsFecyw5CCAng==",
- "dev": true,
- "dependencies": {
- "array-find-index": "^1.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/cyclist": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.2.tgz",
- "integrity": "sha512-0sVXIohTfLqVIW3kb/0n6IiWF3Ifj5nm2XaSrLq2DI6fKIGa2fYAZdk917rUneaeLVpYfFcyXE2ft0fe3remsA==",
- "dev": true
- },
- "node_modules/dargs": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/dargs/-/dargs-4.1.0.tgz",
- "integrity": "sha512-jyweV/k0rbv2WK4r9KLayuBrSh2Py0tNmV7LBoSMH4hMQyrG8OPyIOWB2VEx4DJKXWmK4lopYMVvORlDt2S8Aw==",
- "dev": true,
- "dependencies": {
- "number-is-nan": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/dashdash": {
- "version": "1.14.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "assert-plus": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10"
- }
- },
- "node_modules/dateformat": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz",
- "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==",
- "dev": true,
- "engines": {
- "node": "*"
- }
- },
- "node_modules/debuglog": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz",
- "integrity": "sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw==",
- "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
- "dev": true,
- "engines": {
- "node": "*"
- }
- },
- "node_modules/decamelize": {
- "version": "1.2.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/decamelize-keys": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz",
- "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==",
- "dev": true,
- "dependencies": {
- "decamelize": "^1.1.0",
- "map-obj": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/decamelize-keys/node_modules/map-obj": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
- "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/decode-uri-component": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz",
- "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==",
- "dev": true,
- "engines": {
- "node": ">=0.10"
- }
- },
- "node_modules/dedent": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz",
- "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==",
- "dev": true
- },
- "node_modules/defaults": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz",
- "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==",
- "dev": true,
- "dependencies": {
- "clone": "^1.0.2"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/define-properties": {
- "version": "1.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-property-descriptors": "^1.0.0",
- "object-keys": "^1.1.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/define-property": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
- "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
- "dev": true,
- "dependencies": {
- "is-descriptor": "^1.0.2",
- "isobject": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/delayed-stream": {
- "version": "1.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/delegates": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
- "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==",
- "dev": true
- },
- "node_modules/deprecation": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz",
- "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==",
- "dev": true
- },
- "node_modules/detect-indent": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz",
- "integrity": "sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/dezalgo": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz",
- "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==",
- "dev": true,
- "dependencies": {
- "asap": "^2.0.0",
- "wrappy": "1"
- }
- },
- "node_modules/dot-prop": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.1.tgz",
- "integrity": "sha512-l0p4+mIuJIua0mhxGoh4a+iNL9bmeK5DvnSVQa6T0OhrVmaEa1XScX5Etc673FePCJOArq/4Pa2cLGODUWTPOQ==",
- "dev": true,
- "dependencies": {
- "is-obj": "^1.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/duplexer": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz",
- "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==",
- "dev": true
- },
- "node_modules/duplexer2": {
- "version": "0.0.2",
- "dev": true,
- "license": "BSD",
- "dependencies": {
- "readable-stream": "~1.1.9"
- }
- },
- "node_modules/duplexer2/node_modules/isarray": {
- "version": "0.0.1",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/duplexer2/node_modules/readable-stream": {
- "version": "1.1.14",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.1",
- "isarray": "0.0.1",
- "string_decoder": "~0.10.x"
- }
- },
- "node_modules/duplexer2/node_modules/string_decoder": {
- "version": "0.10.31",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/duplexify": {
- "version": "3.7.1",
- "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz",
- "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==",
- "dev": true,
- "dependencies": {
- "end-of-stream": "^1.0.0",
- "inherits": "^2.0.1",
- "readable-stream": "^2.0.0",
- "stream-shift": "^1.0.0"
- }
- },
- "node_modules/duplexify/node_modules/readable-stream": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
- "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
- "dev": true,
- "dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "node_modules/duplexify/node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "node_modules/duplexify/node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
- "node_modules/ecc-jsbn": {
- "version": "0.1.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "jsbn": "~0.1.0",
- "safer-buffer": "^2.1.0"
- }
- },
- "node_modules/emoji-regex": {
- "version": "8.0.0",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/encoding": {
- "version": "0.1.13",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "iconv-lite": "^0.6.2"
- }
- },
- "node_modules/encoding/node_modules/iconv-lite": {
- "version": "0.6.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "safer-buffer": ">= 2.1.2 < 3.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/end-of-stream": {
- "version": "1.4.4",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "once": "^1.4.0"
- }
- },
- "node_modules/env-paths": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
- "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/envinfo": {
- "version": "7.10.0",
- "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.10.0.tgz",
- "integrity": "sha512-ZtUjZO6l5mwTHvc1L9+1q5p/R3wTopcfqMW8r5t8SJSKqeVI/LtajORwRFEKpEFuekjD0VBjwu1HMxL4UalIRw==",
- "dev": true,
- "bin": {
- "envinfo": "dist/cli.js"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/err-code": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz",
- "integrity": "sha512-CJAN+O0/yA1CKfRn9SXOGctSpEM7DCon/r/5r2eXFMY2zCCJBasFhcM5I+1kh3Ap11FsQCX+vGHceNPvpWKhoA==",
- "dev": true
- },
- "node_modules/error-ex": {
- "version": "1.3.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "is-arrayish": "^0.2.1"
- }
- },
- "node_modules/es-abstract": {
- "version": "1.22.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "array-buffer-byte-length": "^1.0.0",
- "arraybuffer.prototype.slice": "^1.0.1",
- "available-typed-arrays": "^1.0.5",
- "call-bind": "^1.0.2",
- "es-set-tostringtag": "^2.0.1",
- "es-to-primitive": "^1.2.1",
- "function.prototype.name": "^1.1.5",
- "get-intrinsic": "^1.2.1",
- "get-symbol-description": "^1.0.0",
- "globalthis": "^1.0.3",
- "gopd": "^1.0.1",
- "has": "^1.0.3",
- "has-property-descriptors": "^1.0.0",
- "has-proto": "^1.0.1",
- "has-symbols": "^1.0.3",
- "internal-slot": "^1.0.5",
- "is-array-buffer": "^3.0.2",
- "is-callable": "^1.2.7",
- "is-negative-zero": "^2.0.2",
- "is-regex": "^1.1.4",
- "is-shared-array-buffer": "^1.0.2",
- "is-string": "^1.0.7",
- "is-typed-array": "^1.1.10",
- "is-weakref": "^1.0.2",
- "object-inspect": "^1.12.3",
- "object-keys": "^1.1.1",
- "object.assign": "^4.1.4",
- "regexp.prototype.flags": "^1.5.0",
- "safe-array-concat": "^1.0.0",
- "safe-regex-test": "^1.0.0",
- "string.prototype.trim": "^1.2.7",
- "string.prototype.trimend": "^1.0.6",
- "string.prototype.trimstart": "^1.0.6",
- "typed-array-buffer": "^1.0.0",
- "typed-array-byte-length": "^1.0.0",
- "typed-array-byte-offset": "^1.0.0",
- "typed-array-length": "^1.0.4",
- "unbox-primitive": "^1.0.2",
- "which-typed-array": "^1.1.10"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/es-abstract/node_modules/object.assign": {
- "version": "4.1.4",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
- "has-symbols": "^1.0.3",
- "object-keys": "^1.1.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/es-array-method-boxes-properly": {
- "version": "1.0.0",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/es-set-tostringtag": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "get-intrinsic": "^1.1.3",
- "has": "^1.0.3",
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/es-to-primitive": {
- "version": "1.2.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "is-callable": "^1.1.4",
- "is-date-object": "^1.0.1",
- "is-symbol": "^1.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/es6-promise": {
- "version": "4.2.8",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/es6-promisify": {
- "version": "5.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "es6-promise": "^4.0.3"
- }
- },
- "node_modules/escape-string-regexp": {
- "version": "1.0.5",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/esprima": {
- "version": "4.0.1",
- "dev": true,
- "license": "BSD-2-Clause",
- "bin": {
- "esparse": "bin/esparse.js",
- "esvalidate": "bin/esvalidate.js"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/eventemitter3": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz",
- "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==",
- "dev": true
- },
- "node_modules/execa": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
- "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
- "dev": true,
- "dependencies": {
- "cross-spawn": "^6.0.0",
- "get-stream": "^4.0.0",
- "is-stream": "^1.1.0",
- "npm-run-path": "^2.0.0",
- "p-finally": "^1.0.0",
- "signal-exit": "^3.0.0",
- "strip-eof": "^1.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/expand-brackets": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
- "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==",
- "dev": true,
- "dependencies": {
- "debug": "^2.3.3",
- "define-property": "^0.2.5",
- "extend-shallow": "^2.0.1",
- "posix-character-classes": "^0.1.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/expand-brackets/node_modules/debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/expand-brackets/node_modules/define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
- "dev": true,
- "dependencies": {
- "is-descriptor": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/expand-brackets/node_modules/extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
- "dev": true,
- "dependencies": {
- "is-extendable": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/expand-brackets/node_modules/is-accessor-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
- "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==",
- "dev": true,
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/expand-brackets/node_modules/is-buffer": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
- "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
- "dev": true
- },
- "node_modules/expand-brackets/node_modules/is-data-descriptor": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
- "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==",
- "dev": true,
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/expand-brackets/node_modules/is-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
- "dev": true,
- "dependencies": {
- "is-accessor-descriptor": "^0.1.6",
- "is-data-descriptor": "^0.1.4",
- "kind-of": "^5.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/expand-brackets/node_modules/is-extendable": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
- "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/expand-brackets/node_modules/kind-of": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/expand-brackets/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
- "dev": true
- },
- "node_modules/extend": {
- "version": "3.0.2",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/extend-shallow": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
- "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
- "dev": true,
- "dependencies": {
- "assign-symbols": "^1.0.0",
- "is-extendable": "^1.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/external-editor": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz",
- "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==",
- "dev": true,
- "dependencies": {
- "chardet": "^0.7.0",
- "iconv-lite": "^0.4.24",
- "tmp": "^0.0.33"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/extglob": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
- "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
- "dev": true,
- "dependencies": {
- "array-unique": "^0.3.2",
- "define-property": "^1.0.0",
- "expand-brackets": "^2.1.4",
- "extend-shallow": "^2.0.1",
- "fragment-cache": "^0.2.1",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/extglob/node_modules/define-property": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
- "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",
- "dev": true,
- "dependencies": {
- "is-descriptor": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/extglob/node_modules/extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
- "dev": true,
- "dependencies": {
- "is-extendable": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/extglob/node_modules/is-extendable": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
- "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/extsprintf": {
- "version": "1.3.0",
- "dev": true,
- "engines": [
- "node >=0.6.0"
- ],
- "license": "MIT"
- },
- "node_modules/fast-deep-equal": {
- "version": "3.1.3",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/fast-json-stable-stringify": {
- "version": "2.1.0",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/figgy-pudding": {
- "version": "3.5.2",
- "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz",
- "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==",
- "dev": true
- },
- "node_modules/figures": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
- "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==",
- "dev": true,
- "dependencies": {
- "escape-string-regexp": "^1.0.5"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/filter-obj": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz",
- "integrity": "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/find-up": {
- "version": "4.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/flush-write-stream": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz",
- "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==",
- "dev": true,
- "dependencies": {
- "inherits": "^2.0.3",
- "readable-stream": "^2.3.6"
- }
- },
- "node_modules/flush-write-stream/node_modules/readable-stream": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
- "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
- "dev": true,
- "dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "node_modules/flush-write-stream/node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "node_modules/flush-write-stream/node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
- "node_modules/for-each": {
- "version": "0.3.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "is-callable": "^1.1.3"
- }
- },
- "node_modules/for-in": {
- "version": "1.0.2",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/foreach": {
- "version": "2.0.5",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/forever-agent": {
- "version": "0.6.1",
- "dev": true,
- "license": "Apache-2.0",
- "engines": {
- "node": "*"
- }
- },
- "node_modules/fragment-cache": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
- "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==",
- "dev": true,
- "dependencies": {
- "map-cache": "^0.2.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/from2": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
- "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==",
- "dev": true,
- "dependencies": {
- "inherits": "^2.0.1",
- "readable-stream": "^2.0.0"
- }
- },
- "node_modules/from2/node_modules/readable-stream": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
- "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
- "dev": true,
- "dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "node_modules/from2/node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "node_modules/from2/node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
- "node_modules/fs-extra": {
- "version": "8.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
- "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
- "dev": true,
- "dependencies": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^4.0.0",
- "universalify": "^0.1.0"
- },
- "engines": {
- "node": ">=6 <7 || >=8"
- }
- },
- "node_modules/fs-extra/node_modules/jsonfile": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
- "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==",
- "dev": true,
- "optionalDependencies": {
- "graceful-fs": "^4.1.6"
- }
- },
- "node_modules/fs-extra/node_modules/universalify": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
- "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
- "dev": true,
- "engines": {
- "node": ">= 4.0.0"
- }
- },
- "node_modules/fs-minipass": {
- "version": "1.2.7",
- "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz",
- "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==",
- "dev": true,
- "dependencies": {
- "minipass": "^2.6.0"
- }
- },
- "node_modules/fs-write-stream-atomic": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz",
- "integrity": "sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA==",
- "dev": true,
- "dependencies": {
- "graceful-fs": "^4.1.2",
- "iferr": "^0.1.5",
- "imurmurhash": "^0.1.4",
- "readable-stream": "1 || 2"
- }
- },
- "node_modules/fs-write-stream-atomic/node_modules/readable-stream": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
- "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
- "dev": true,
- "dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "node_modules/fs-write-stream-atomic/node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "node_modules/fs-write-stream-atomic/node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
- "node_modules/fs.realpath": {
- "version": "1.0.0",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/function-bind": {
- "version": "1.1.1",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/function.prototype.name": {
- "version": "1.1.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.3",
- "es-abstract": "^1.19.0",
- "functions-have-names": "^1.2.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/functions-have-names": {
- "version": "1.2.3",
- "dev": true,
- "license": "MIT",
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/gauge": {
- "version": "2.7.4",
- "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
- "integrity": "sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==",
- "dev": true,
- "dependencies": {
- "aproba": "^1.0.3",
- "console-control-strings": "^1.0.0",
- "has-unicode": "^2.0.0",
- "object-assign": "^4.1.0",
- "signal-exit": "^3.0.0",
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1",
- "wide-align": "^1.1.0"
- }
- },
- "node_modules/gauge/node_modules/ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/gauge/node_modules/aproba": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
- "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
- "dev": true
- },
- "node_modules/gauge/node_modules/is-fullwidth-code-point": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
- "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==",
- "dev": true,
- "dependencies": {
- "number-is-nan": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/gauge/node_modules/string-width": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
- "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==",
- "dev": true,
- "dependencies": {
- "code-point-at": "^1.0.0",
- "is-fullwidth-code-point": "^1.0.0",
- "strip-ansi": "^3.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/gauge/node_modules/strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
- "dev": true,
- "dependencies": {
- "ansi-regex": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/genfun": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/genfun/-/genfun-5.0.0.tgz",
- "integrity": "sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA==",
- "dev": true
- },
- "node_modules/get-caller-file": {
- "version": "2.0.5",
- "dev": true,
- "license": "ISC",
- "engines": {
- "node": "6.* || 8.* || >= 10.*"
- }
- },
- "node_modules/get-intrinsic": {
- "version": "1.2.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "function-bind": "^1.1.1",
- "has": "^1.0.3",
- "has-proto": "^1.0.1",
- "has-symbols": "^1.0.3"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/get-pkg-repo": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-1.4.0.tgz",
- "integrity": "sha512-xPCyvcEOxCJDxhBfXDNH+zA7mIRGb2aY1gIUJWsZkpJbp1BLHl+/Sycg26Dv+ZbZAJkO61tzbBtqHUi30NGBvg==",
- "dev": true,
- "dependencies": {
- "hosted-git-info": "^2.1.4",
- "meow": "^3.3.0",
- "normalize-package-data": "^2.3.0",
- "parse-github-repo-url": "^1.3.0",
- "through2": "^2.0.0"
- },
- "bin": {
- "get-pkg-repo": "cli.js"
- }
- },
- "node_modules/get-pkg-repo/node_modules/camelcase": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
- "integrity": "sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/get-pkg-repo/node_modules/camelcase-keys": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
- "integrity": "sha512-bA/Z/DERHKqoEOrp+qeGKw1QlvEQkGZSc0XaY6VnTxZr+Kv1G5zFwttpjv8qxZ/sBPT4nthwZaAcsAZTJlSKXQ==",
- "dev": true,
- "dependencies": {
- "camelcase": "^2.0.0",
- "map-obj": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/get-pkg-repo/node_modules/find-up": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
- "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==",
- "dev": true,
- "dependencies": {
- "path-exists": "^2.0.0",
- "pinkie-promise": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/get-pkg-repo/node_modules/indent-string": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
- "integrity": "sha512-aqwDFWSgSgfRaEwao5lg5KEcVd/2a+D1rvoG7NdilmYz0NwRk6StWpWdz/Hpk34MKPpx7s8XxUqimfcQK6gGlg==",
- "dev": true,
- "dependencies": {
- "repeating": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/get-pkg-repo/node_modules/load-json-file": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
- "integrity": "sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==",
- "dev": true,
- "dependencies": {
- "graceful-fs": "^4.1.2",
- "parse-json": "^2.2.0",
- "pify": "^2.0.0",
- "pinkie-promise": "^2.0.0",
- "strip-bom": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/get-pkg-repo/node_modules/map-obj": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
- "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/get-pkg-repo/node_modules/meow": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
- "integrity": "sha512-TNdwZs0skRlpPpCUK25StC4VH+tP5GgeY1HQOOGP+lQ2xtdkN2VtT/5tiX9k3IWpkBPV9b3LsAWXn4GGi/PrSA==",
- "dev": true,
- "dependencies": {
- "camelcase-keys": "^2.0.0",
- "decamelize": "^1.1.2",
- "loud-rejection": "^1.0.0",
- "map-obj": "^1.0.1",
- "minimist": "^1.1.3",
- "normalize-package-data": "^2.3.4",
- "object-assign": "^4.0.1",
- "read-pkg-up": "^1.0.1",
- "redent": "^1.0.0",
- "trim-newlines": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/get-pkg-repo/node_modules/parse-json": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
- "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==",
- "dev": true,
- "dependencies": {
- "error-ex": "^1.2.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/get-pkg-repo/node_modules/path-exists": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
- "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==",
- "dev": true,
- "dependencies": {
- "pinkie-promise": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/get-pkg-repo/node_modules/path-type": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
- "integrity": "sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==",
- "dev": true,
- "dependencies": {
- "graceful-fs": "^4.1.2",
- "pify": "^2.0.0",
- "pinkie-promise": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/get-pkg-repo/node_modules/pify": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/get-pkg-repo/node_modules/read-pkg": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
- "integrity": "sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==",
- "dev": true,
- "dependencies": {
- "load-json-file": "^1.0.0",
- "normalize-package-data": "^2.3.2",
- "path-type": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/get-pkg-repo/node_modules/read-pkg-up": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
- "integrity": "sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==",
- "dev": true,
- "dependencies": {
- "find-up": "^1.0.0",
- "read-pkg": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/get-pkg-repo/node_modules/readable-stream": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
- "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
- "dev": true,
- "dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "node_modules/get-pkg-repo/node_modules/redent": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
- "integrity": "sha512-qtW5hKzGQZqKoh6JNSD+4lfitfPKGz42e6QwiRmPM5mmKtR0N41AbJRYu0xJi7nhOJ4WDgRkKvAk6tw4WIwR4g==",
- "dev": true,
- "dependencies": {
- "indent-string": "^2.1.0",
- "strip-indent": "^1.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/get-pkg-repo/node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "node_modules/get-pkg-repo/node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
- "node_modules/get-pkg-repo/node_modules/strip-bom": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
- "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==",
- "dev": true,
- "dependencies": {
- "is-utf8": "^0.2.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/get-pkg-repo/node_modules/strip-indent": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
- "integrity": "sha512-I5iQq6aFMM62fBEAIB/hXzwJD6EEZ0xEGCX2t7oXqaKPIRgt4WruAQ285BISgdkP+HLGWyeGmNJcpIwFeRYRUA==",
- "dev": true,
- "dependencies": {
- "get-stdin": "^4.0.1"
- },
- "bin": {
- "strip-indent": "cli.js"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/get-pkg-repo/node_modules/through2": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
- "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
- "dev": true,
- "dependencies": {
- "readable-stream": "~2.3.6",
- "xtend": "~4.0.1"
- }
- },
- "node_modules/get-pkg-repo/node_modules/trim-newlines": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
- "integrity": "sha512-Nm4cF79FhSTzrLKGDMi3I4utBtFv8qKy4sq1enftf2gMdpqI8oVQTAfySkTz5r49giVzDj88SVZXP4CeYQwjaw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/get-port": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/get-port/-/get-port-4.2.0.tgz",
- "integrity": "sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/get-stdin": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
- "integrity": "sha512-F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/get-stream": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
- "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
- "dev": true,
- "dependencies": {
- "pump": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/get-symbol-description": {
- "version": "1.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.2",
- "get-intrinsic": "^1.1.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/get-value": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
- "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/getpass": {
- "version": "0.1.7",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "assert-plus": "^1.0.0"
- }
- },
- "node_modules/ghauth": {
- "version": "3.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "application-config": "~0.1.1",
- "bl": "~0.9.4",
- "hyperquest": "~1.2.0",
- "mkdirp": "~0.5.0",
- "read": "~1.0.5",
- "xtend": "~4.0.0"
- }
- },
- "node_modules/git-raw-commits": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.0.tgz",
- "integrity": "sha512-w4jFEJFgKXMQJ0H0ikBk2S+4KP2VEjhCvLCNqbNRQC8BgGWgLKNCO7a9K9LI+TVT7Gfoloje502sEnctibffgg==",
- "dev": true,
- "dependencies": {
- "dargs": "^4.0.1",
- "lodash.template": "^4.0.2",
- "meow": "^4.0.0",
- "split2": "^2.0.0",
- "through2": "^2.0.0"
- },
- "bin": {
- "git-raw-commits": "cli.js"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/git-raw-commits/node_modules/camelcase": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
- "integrity": "sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/git-raw-commits/node_modules/camelcase-keys": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz",
- "integrity": "sha512-Ej37YKYbFUI8QiYlvj9YHb6/Z60dZyPJW0Cs8sFilMbd2lP0bw3ylAq9yJkK4lcTA2dID5fG8LjmJYbO7kWb7Q==",
- "dev": true,
- "dependencies": {
- "camelcase": "^4.1.0",
- "map-obj": "^2.0.0",
- "quick-lru": "^1.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/git-raw-commits/node_modules/indent-string": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz",
- "integrity": "sha512-BYqTHXTGUIvg7t1r4sJNKcbDZkL92nkXA8YtRpbjFHRHGDL/NtUeiBJMeE60kIFN/Mg8ESaWQvftaYMGJzQZCQ==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/git-raw-commits/node_modules/map-obj": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz",
- "integrity": "sha512-TzQSV2DiMYgoF5RycneKVUzIa9bQsj/B3tTgsE3dOGqlzHnGIDaC7XBE7grnA+8kZPnfqSGFe95VHc2oc0VFUQ==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/git-raw-commits/node_modules/meow": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz",
- "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==",
- "dev": true,
- "dependencies": {
- "camelcase-keys": "^4.0.0",
- "decamelize-keys": "^1.0.0",
- "loud-rejection": "^1.0.0",
- "minimist": "^1.1.3",
- "minimist-options": "^3.0.1",
- "normalize-package-data": "^2.3.4",
- "read-pkg-up": "^3.0.0",
- "redent": "^2.0.0",
- "trim-newlines": "^2.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/git-raw-commits/node_modules/minimist-options": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz",
- "integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==",
- "dev": true,
- "dependencies": {
- "arrify": "^1.0.1",
- "is-plain-obj": "^1.1.0"
- },
- "engines": {
- "node": ">= 4"
- }
- },
- "node_modules/git-raw-commits/node_modules/quick-lru": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz",
- "integrity": "sha512-tRS7sTgyxMXtLum8L65daJnHUhfDUgboRdcWW2bR9vBfrj2+O5HSMbQOJfJJjIVSPFqbBCF37FpwWXGitDc5tA==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/git-raw-commits/node_modules/readable-stream": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
- "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
- "dev": true,
- "dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "node_modules/git-raw-commits/node_modules/redent": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz",
- "integrity": "sha512-XNwrTx77JQCEMXTeb8movBKuK75MgH0RZkujNuDKCezemx/voapl9i2gCSi8WWm8+ox5ycJi1gxF22fR7c0Ciw==",
- "dev": true,
- "dependencies": {
- "indent-string": "^3.0.0",
- "strip-indent": "^2.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/git-raw-commits/node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "node_modules/git-raw-commits/node_modules/split2": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/split2/-/split2-2.2.0.tgz",
- "integrity": "sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw==",
- "dev": true,
- "dependencies": {
- "through2": "^2.0.2"
- }
- },
- "node_modules/git-raw-commits/node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
- "node_modules/git-raw-commits/node_modules/strip-indent": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz",
- "integrity": "sha512-RsSNPLpq6YUL7QYy44RnPVTn/lcVZtb48Uof3X5JLbF4zD/Gs7ZFDv2HWol+leoQN2mT86LAzSshGfkTlSOpsA==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/git-raw-commits/node_modules/through2": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
- "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
- "dev": true,
- "dependencies": {
- "readable-stream": "~2.3.6",
- "xtend": "~4.0.1"
- }
- },
- "node_modules/git-raw-commits/node_modules/trim-newlines": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz",
- "integrity": "sha512-MTBWv3jhVjTU7XR3IQHllbiJs8sc75a80OEhB6or/q7pLTWgQ0bMGQXXYQSrSuXe6WiKWDZ5txXY5P59a/coVA==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/git-remote-origin-url": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz",
- "integrity": "sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw==",
- "dev": true,
- "dependencies": {
- "gitconfiglocal": "^1.0.0",
- "pify": "^2.3.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/git-remote-origin-url/node_modules/pify": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/git-semver-tags": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-2.0.3.tgz",
- "integrity": "sha512-tj4FD4ww2RX2ae//jSrXZzrocla9db5h0V7ikPl1P/WwoZar9epdUhwR7XHXSgc+ZkNq72BEEerqQuicoEQfzA==",
- "dev": true,
- "dependencies": {
- "meow": "^4.0.0",
- "semver": "^6.0.0"
- },
- "bin": {
- "git-semver-tags": "cli.js"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/git-semver-tags/node_modules/camelcase": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
- "integrity": "sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/git-semver-tags/node_modules/camelcase-keys": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz",
- "integrity": "sha512-Ej37YKYbFUI8QiYlvj9YHb6/Z60dZyPJW0Cs8sFilMbd2lP0bw3ylAq9yJkK4lcTA2dID5fG8LjmJYbO7kWb7Q==",
- "dev": true,
- "dependencies": {
- "camelcase": "^4.1.0",
- "map-obj": "^2.0.0",
- "quick-lru": "^1.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/git-semver-tags/node_modules/indent-string": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz",
- "integrity": "sha512-BYqTHXTGUIvg7t1r4sJNKcbDZkL92nkXA8YtRpbjFHRHGDL/NtUeiBJMeE60kIFN/Mg8ESaWQvftaYMGJzQZCQ==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/git-semver-tags/node_modules/map-obj": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz",
- "integrity": "sha512-TzQSV2DiMYgoF5RycneKVUzIa9bQsj/B3tTgsE3dOGqlzHnGIDaC7XBE7grnA+8kZPnfqSGFe95VHc2oc0VFUQ==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/git-semver-tags/node_modules/meow": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz",
- "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==",
- "dev": true,
- "dependencies": {
- "camelcase-keys": "^4.0.0",
- "decamelize-keys": "^1.0.0",
- "loud-rejection": "^1.0.0",
- "minimist": "^1.1.3",
- "minimist-options": "^3.0.1",
- "normalize-package-data": "^2.3.4",
- "read-pkg-up": "^3.0.0",
- "redent": "^2.0.0",
- "trim-newlines": "^2.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/git-semver-tags/node_modules/minimist-options": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz",
- "integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==",
- "dev": true,
- "dependencies": {
- "arrify": "^1.0.1",
- "is-plain-obj": "^1.1.0"
- },
- "engines": {
- "node": ">= 4"
- }
- },
- "node_modules/git-semver-tags/node_modules/quick-lru": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz",
- "integrity": "sha512-tRS7sTgyxMXtLum8L65daJnHUhfDUgboRdcWW2bR9vBfrj2+O5HSMbQOJfJJjIVSPFqbBCF37FpwWXGitDc5tA==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/git-semver-tags/node_modules/redent": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz",
- "integrity": "sha512-XNwrTx77JQCEMXTeb8movBKuK75MgH0RZkujNuDKCezemx/voapl9i2gCSi8WWm8+ox5ycJi1gxF22fR7c0Ciw==",
- "dev": true,
- "dependencies": {
- "indent-string": "^3.0.0",
- "strip-indent": "^2.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/git-semver-tags/node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true,
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/git-semver-tags/node_modules/strip-indent": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz",
- "integrity": "sha512-RsSNPLpq6YUL7QYy44RnPVTn/lcVZtb48Uof3X5JLbF4zD/Gs7ZFDv2HWol+leoQN2mT86LAzSshGfkTlSOpsA==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/git-semver-tags/node_modules/trim-newlines": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz",
- "integrity": "sha512-MTBWv3jhVjTU7XR3IQHllbiJs8sc75a80OEhB6or/q7pLTWgQ0bMGQXXYQSrSuXe6WiKWDZ5txXY5P59a/coVA==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/git-up": {
- "version": "4.0.5",
- "resolved": "https://registry.npmjs.org/git-up/-/git-up-4.0.5.tgz",
- "integrity": "sha512-YUvVDg/vX3d0syBsk/CKUTib0srcQME0JyHkL5BaYdwLsiCslPWmDSi8PUMo9pXYjrryMcmsCoCgsTpSCJEQaA==",
- "dev": true,
- "dependencies": {
- "is-ssh": "^1.3.0",
- "parse-url": "^6.0.0"
- }
- },
- "node_modules/git-url-parse": {
- "version": "11.6.0",
- "resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-11.6.0.tgz",
- "integrity": "sha512-WWUxvJs5HsyHL6L08wOusa/IXYtMuCAhrMmnTjQPpBU0TTHyDhnOATNH3xNQz7YOQUsqIIPTGr4xiVti1Hsk5g==",
- "dev": true,
- "dependencies": {
- "git-up": "^4.0.0"
- }
- },
- "node_modules/gitconfiglocal": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz",
- "integrity": "sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ==",
- "dev": true,
- "dependencies": {
- "ini": "^1.3.2"
- }
- },
- "node_modules/github": {
- "version": "0.1.16",
- "dev": true
- },
- "node_modules/github-changes": {
- "version": "1.1.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "bluebird": "1.0.3",
- "ghauth": "3.0.0",
- "github": "0.1.16",
- "github-commit-stream": "0.1.0",
- "lodash": "2.4.1",
- "moment-timezone": "0.5.5",
- "nomnom": "1.6.2",
- "parse-link-header": "0.1.0",
- "semver": "5.4.1"
- },
- "bin": {
- "github-changes": "bin/index.js"
- }
- },
- "node_modules/github-changes/node_modules/bluebird": {
- "version": "1.0.3",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/github-changes/node_modules/lodash": {
- "version": "2.4.1",
- "dev": true,
- "engines": [
- "node",
- "rhino"
- ],
- "license": "MIT"
- },
- "node_modules/github-changes/node_modules/semver": {
- "version": "5.4.1",
- "dev": true,
- "license": "ISC",
- "bin": {
- "semver": "bin/semver"
- }
- },
- "node_modules/github-commit-stream": {
- "version": "0.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "async": "~0.2.9",
- "parse-link-header": "~0.1.0",
- "request": "~2.22.0",
- "through": "~2.3.4"
- }
- },
- "node_modules/github-commit-stream/node_modules/asn1": {
- "version": "0.1.11",
- "dev": true,
- "engines": {
- "node": ">=0.4.9"
- }
- },
- "node_modules/github-commit-stream/node_modules/assert-plus": {
- "version": "0.1.5",
- "dev": true,
- "engines": {
- "node": ">=0.8"
- }
- },
- "node_modules/github-commit-stream/node_modules/combined-stream": {
- "version": "0.0.7",
- "dev": true,
- "dependencies": {
- "delayed-stream": "0.0.5"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/github-commit-stream/node_modules/delayed-stream": {
- "version": "0.0.5",
- "dev": true,
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/github-commit-stream/node_modules/forever-agent": {
- "version": "0.5.2",
- "dev": true,
- "engines": {
- "node": "*"
- }
- },
- "node_modules/github-commit-stream/node_modules/form-data": {
- "version": "0.0.8",
- "dev": true,
- "dependencies": {
- "async": "~0.2.7",
- "combined-stream": "~0.0.4",
- "mime": "~1.2.2"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/github-commit-stream/node_modules/http-signature": {
- "version": "0.10.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "asn1": "0.1.11",
- "assert-plus": "^0.1.5",
- "ctype": "0.5.3"
- },
- "engines": {
- "node": ">=0.8"
- }
- },
- "node_modules/github-commit-stream/node_modules/json-stringify-safe": {
- "version": "4.0.0",
- "dev": true,
- "license": "BSD"
- },
- "node_modules/github-commit-stream/node_modules/node-uuid": {
- "version": "1.4.8",
- "dev": true,
- "bin": {
- "uuid": "bin/uuid"
- }
- },
- "node_modules/github-commit-stream/node_modules/oauth-sign": {
- "version": "0.3.0",
- "dev": true,
- "engines": {
- "node": "*"
- }
- },
- "node_modules/github-commit-stream/node_modules/qs": {
- "version": "0.6.6",
- "dev": true,
- "engines": {
- "node": "*"
- }
- },
- "node_modules/github-commit-stream/node_modules/request": {
- "version": "2.22.0",
- "dev": true,
- "engines": [
- "node >= 0.8.0"
- ],
- "dependencies": {
- "aws-sign": "~0.3.0",
- "cookie-jar": "~0.3.0",
- "forever-agent": "~0.5.0",
- "form-data": "0.0.8",
- "hawk": "~0.13.0",
- "http-signature": "~0.10.0",
- "json-stringify-safe": "~4.0.0",
- "mime": "~1.2.9",
- "node-uuid": "~1.4.0",
- "oauth-sign": "~0.3.0",
- "qs": "~0.6.0",
- "tunnel-agent": "~0.3.0"
- }
- },
- "node_modules/github-commit-stream/node_modules/tunnel-agent": {
- "version": "0.3.0",
- "dev": true,
- "engines": {
- "node": "*"
- }
- },
- "node_modules/glob": {
- "version": "7.2.3",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- },
- "engines": {
- "node": "*"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/glob-parent": {
- "version": "5.1.2",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "is-glob": "^4.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/glob-to-regexp": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz",
- "integrity": "sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig==",
- "dev": true
- },
- "node_modules/glob/node_modules/minimatch": {
- "version": "3.1.2",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/globalthis": {
- "version": "1.0.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "define-properties": "^1.1.3"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/gopd": {
- "version": "1.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "get-intrinsic": "^1.1.3"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/graceful-fs": {
- "version": "4.2.11",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/handlebars": {
- "version": "4.7.8",
- "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz",
- "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==",
- "dev": true,
- "dependencies": {
- "minimist": "^1.2.5",
- "neo-async": "^2.6.2",
- "source-map": "^0.6.1",
- "wordwrap": "^1.0.0"
- },
- "bin": {
- "handlebars": "bin/handlebars"
- },
- "engines": {
- "node": ">=0.4.7"
- },
- "optionalDependencies": {
- "uglify-js": "^3.1.4"
- }
- },
- "node_modules/har-schema": {
- "version": "2.0.0",
- "dev": true,
- "license": "ISC",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/har-validator": {
- "version": "5.1.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ajv": "^6.12.3",
- "har-schema": "^2.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/hard-rejection": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz",
- "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/has": {
- "version": "1.0.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "function-bind": "^1.1.1"
- },
- "engines": {
- "node": ">= 0.4.0"
- }
- },
- "node_modules/has-bigints": {
- "version": "1.0.2",
- "dev": true,
- "license": "MIT",
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/has-flag": {
- "version": "3.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/has-property-descriptors": {
- "version": "1.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "get-intrinsic": "^1.1.1"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/has-proto": {
- "version": "1.0.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/has-symbols": {
- "version": "1.0.3",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/has-tostringtag": {
- "version": "1.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-symbols": "^1.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/has-unicode": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
- "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==",
- "dev": true
- },
- "node_modules/has-value": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
- "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==",
- "dev": true,
- "dependencies": {
- "get-value": "^2.0.6",
- "has-values": "^1.0.0",
- "isobject": "^3.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/has-values": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
- "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==",
- "dev": true,
- "dependencies": {
- "is-number": "^3.0.0",
- "kind-of": "^4.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/has-values/node_modules/is-buffer": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
- "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
- "dev": true
- },
- "node_modules/has-values/node_modules/is-number": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
- "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==",
- "dev": true,
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/has-values/node_modules/is-number/node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/has-values/node_modules/kind-of": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
- "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/hawk": {
- "version": "0.13.1",
- "dev": true,
- "dependencies": {
- "boom": "0.4.x",
- "cryptiles": "0.2.x",
- "hoek": "0.8.x",
- "sntp": "0.2.x"
- },
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/hoek": {
- "version": "0.8.5",
- "dev": true,
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/hosted-git-info": {
- "version": "2.8.8",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/http-cache-semantics": {
- "version": "3.8.1",
- "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz",
- "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==",
- "dev": true
- },
- "node_modules/http-proxy-agent": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz",
- "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==",
- "dev": true,
- "dependencies": {
- "agent-base": "4",
- "debug": "3.1.0"
- },
- "engines": {
- "node": ">= 4.5.0"
- }
- },
- "node_modules/http-proxy-agent/node_modules/agent-base": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz",
- "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==",
- "dev": true,
- "dependencies": {
- "es6-promisify": "^5.0.0"
- },
- "engines": {
- "node": ">= 4.0.0"
- }
- },
- "node_modules/http-proxy-agent/node_modules/debug": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
- "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
- "dev": true,
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/http-proxy-agent/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
- "dev": true
- },
- "node_modules/http-signature": {
- "version": "1.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "assert-plus": "^1.0.0",
- "jsprim": "^1.2.2",
- "sshpk": "^1.7.0"
- },
- "engines": {
- "node": ">=0.8",
- "npm": ">=1.3.7"
- }
- },
- "node_modules/humanize-ms": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz",
- "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==",
- "dev": true,
- "dependencies": {
- "ms": "^2.0.0"
- }
- },
- "node_modules/hyperquest": {
- "version": "1.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "duplexer2": "~0.0.2",
- "through2": "~0.6.3"
- }
- },
- "node_modules/hyperquest/node_modules/isarray": {
- "version": "0.0.1",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/hyperquest/node_modules/readable-stream": {
- "version": "1.0.34",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.1",
- "isarray": "0.0.1",
- "string_decoder": "~0.10.x"
- }
- },
- "node_modules/hyperquest/node_modules/string_decoder": {
- "version": "0.10.31",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/hyperquest/node_modules/through2": {
- "version": "0.6.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "readable-stream": ">=1.0.33-1 <1.1.0-0",
- "xtend": ">=4.0.0 <4.1.0-0"
- }
- },
- "node_modules/iconv-lite": {
- "version": "0.4.24",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
- "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
- "dev": true,
- "dependencies": {
- "safer-buffer": ">= 2.1.2 < 3"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/iferr": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz",
- "integrity": "sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA==",
- "dev": true
- },
- "node_modules/ignore-walk": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz",
- "integrity": "sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==",
- "dev": true,
- "dependencies": {
- "minimatch": "^3.0.4"
- }
- },
- "node_modules/import-local": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz",
- "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==",
- "dev": true,
- "dependencies": {
- "pkg-dir": "^3.0.0",
- "resolve-cwd": "^2.0.0"
- },
- "bin": {
- "import-local-fixture": "fixtures/cli.js"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/import-local/node_modules/find-up": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
- "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
- "dev": true,
- "dependencies": {
- "locate-path": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/import-local/node_modules/locate-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
- "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
- "dev": true,
- "dependencies": {
- "p-locate": "^3.0.0",
- "path-exists": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/import-local/node_modules/p-locate": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
- "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
- "dev": true,
- "dependencies": {
- "p-limit": "^2.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/import-local/node_modules/path-exists": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/import-local/node_modules/pkg-dir": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
- "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
- "dev": true,
- "dependencies": {
- "find-up": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/imurmurhash": {
- "version": "0.1.4",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.8.19"
- }
- },
- "node_modules/indent-string": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
- "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/indexof": {
- "version": "0.0.1",
- "dev": true
- },
- "node_modules/infer-owner": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz",
- "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==",
- "dev": true
- },
- "node_modules/inflight": {
- "version": "1.0.6",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "node_modules/inherits": {
- "version": "2.0.4",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/ini": {
- "version": "1.3.8",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/init-package-json": {
- "version": "1.10.3",
- "resolved": "https://registry.npmjs.org/init-package-json/-/init-package-json-1.10.3.tgz",
- "integrity": "sha512-zKSiXKhQveNteyhcj1CoOP8tqp1QuxPIPBl8Bid99DGLFqA1p87M6lNgfjJHSBoWJJlidGOv5rWjyYKEB3g2Jw==",
- "dev": true,
- "dependencies": {
- "glob": "^7.1.1",
- "npm-package-arg": "^4.0.0 || ^5.0.0 || ^6.0.0",
- "promzard": "^0.3.0",
- "read": "~1.0.1",
- "read-package-json": "1 || 2",
- "semver": "2.x || 3.x || 4 || 5",
- "validate-npm-package-license": "^3.0.1",
- "validate-npm-package-name": "^3.0.0"
- }
- },
- "node_modules/init-package-json/node_modules/semver": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
- "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
- "dev": true,
- "bin": {
- "semver": "bin/semver"
- }
- },
- "node_modules/inquirer": {
- "version": "6.5.2",
- "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz",
- "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==",
- "dev": true,
- "dependencies": {
- "ansi-escapes": "^3.2.0",
- "chalk": "^2.4.2",
- "cli-cursor": "^2.1.0",
- "cli-width": "^2.0.0",
- "external-editor": "^3.0.3",
- "figures": "^2.0.0",
- "lodash": "^4.17.12",
- "mute-stream": "0.0.7",
- "run-async": "^2.2.0",
- "rxjs": "^6.4.0",
- "string-width": "^2.1.0",
- "strip-ansi": "^5.1.0",
- "through": "^2.3.6"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/inquirer/node_modules/ansi-escapes": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz",
- "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/inquirer/node_modules/ansi-regex": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
- "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/inquirer/node_modules/cli-cursor": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
- "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==",
- "dev": true,
- "dependencies": {
- "restore-cursor": "^2.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/inquirer/node_modules/is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/inquirer/node_modules/mimic-fn": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
- "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/inquirer/node_modules/onetime": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
- "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==",
- "dev": true,
- "dependencies": {
- "mimic-fn": "^1.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/inquirer/node_modules/restore-cursor": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
- "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==",
- "dev": true,
- "dependencies": {
- "onetime": "^2.0.0",
- "signal-exit": "^3.0.2"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/inquirer/node_modules/string-width": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
- "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
- "dev": true,
- "dependencies": {
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^4.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/inquirer/node_modules/string-width/node_modules/ansi-regex": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz",
- "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/inquirer/node_modules/string-width/node_modules/strip-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
- "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==",
- "dev": true,
- "dependencies": {
- "ansi-regex": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/inquirer/node_modules/strip-ansi": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
- "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
- "dev": true,
- "dependencies": {
- "ansi-regex": "^4.1.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/internal-slot": {
- "version": "1.0.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "get-intrinsic": "^1.2.0",
- "has": "^1.0.3",
- "side-channel": "^1.0.4"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/ip": {
- "version": "1.1.5",
- "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz",
- "integrity": "sha512-rBtCAQAJm8A110nbwn6YdveUnuZH3WrC36IwkRXxDnq53JvXA2NVQvB7IHyKomxK1MJ4VDNw3UtFDdXQ+AvLYA==",
- "dev": true
- },
- "node_modules/is": {
- "version": "0.2.7",
- "dev": true,
- "engines": {
- "node": "*"
- }
- },
- "node_modules/is-accessor-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
- "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
- "dev": true,
- "dependencies": {
- "kind-of": "^6.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-array-buffer": {
- "version": "3.0.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.2",
- "get-intrinsic": "^1.2.0",
- "is-typed-array": "^1.1.10"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-arrayish": {
- "version": "0.2.1",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/is-bigint": {
- "version": "1.0.4",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-bigints": "^1.0.1"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-boolean-object": {
- "version": "1.1.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.2",
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-callable": {
- "version": "1.2.7",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-ci": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz",
- "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==",
- "dev": true,
- "dependencies": {
- "ci-info": "^2.0.0"
- },
- "bin": {
- "is-ci": "bin.js"
- }
- },
- "node_modules/is-core-module": {
- "version": "2.13.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has": "^1.0.3"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-data-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
- "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
- "dev": true,
- "dependencies": {
- "kind-of": "^6.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-date-object": {
- "version": "1.0.2",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-descriptor": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
- "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
- "dev": true,
- "dependencies": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-directory": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz",
- "integrity": "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-extendable": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
- "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
- "dev": true,
- "dependencies": {
- "is-plain-object": "^2.0.4"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-extendable/node_modules/is-plain-object": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
- "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
- "dev": true,
- "dependencies": {
- "isobject": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-extglob": {
- "version": "2.1.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-finite": {
- "version": "1.1.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/is-fullwidth-code-point": {
- "version": "3.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/is-glob": {
- "version": "4.0.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "is-extglob": "^2.1.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-negative-zero": {
- "version": "2.0.2",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-number-object": {
- "version": "1.0.7",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-obj": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
- "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-object": {
- "version": "0.1.2",
- "dev": true
- },
- "node_modules/is-plain-obj": {
- "version": "1.1.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-plain-object": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
- "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-regex": {
- "version": "1.1.4",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.2",
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-shared-array-buffer": {
- "version": "1.0.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.2"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-ssh": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/is-ssh/-/is-ssh-1.4.0.tgz",
- "integrity": "sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ==",
- "dev": true,
- "dependencies": {
- "protocols": "^2.0.1"
- }
- },
- "node_modules/is-stream": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
- "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-string": {
- "version": "1.0.7",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-symbol": {
- "version": "1.0.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-symbols": "^1.0.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-text-path": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz",
- "integrity": "sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==",
- "dev": true,
- "dependencies": {
- "text-extensions": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-typed-array": {
- "version": "1.1.12",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "which-typed-array": "^1.1.11"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-typedarray": {
- "version": "1.0.0",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/is-utf8": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
- "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==",
- "dev": true
- },
- "node_modules/is-weakref": {
- "version": "1.0.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.2"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-windows": {
- "version": "1.0.2",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
- "dev": true
- },
- "node_modules/isexe": {
- "version": "2.0.0",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/isobject": {
- "version": "3.0.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/isstream": {
- "version": "0.1.2",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/js-tokens": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/js-yaml": {
- "version": "3.14.1",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
- "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
- "dev": true,
- "dependencies": {
- "argparse": "^1.0.7",
- "esprima": "^4.0.0"
- },
- "bin": {
- "js-yaml": "bin/js-yaml.js"
- }
- },
- "node_modules/jsbn": {
- "version": "0.1.1",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/json-parse-better-errors": {
- "version": "1.0.2",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/json-parse-even-better-errors": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
- "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
- "dev": true
- },
- "node_modules/json-schema": {
- "version": "0.4.0",
- "dev": true,
- "license": "(AFL-2.1 OR BSD-3-Clause)"
- },
- "node_modules/json-schema-traverse": {
- "version": "0.4.1",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/json-stringify-safe": {
- "version": "5.0.1",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/jsonparse": {
- "version": "1.3.1",
- "dev": true,
- "engines": [
- "node >= 0.2.0"
- ],
- "license": "MIT"
- },
- "node_modules/JSONStream": {
- "version": "1.3.5",
- "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz",
- "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==",
- "dev": true,
- "dependencies": {
- "jsonparse": "^1.2.0",
- "through": ">=2.2.7 <3"
- },
- "bin": {
- "JSONStream": "bin.js"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/jsprim": {
- "version": "1.4.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "assert-plus": "1.0.0",
- "extsprintf": "1.3.0",
- "json-schema": "0.4.0",
- "verror": "1.10.0"
- },
- "engines": {
- "node": ">=0.6.0"
- }
- },
- "node_modules/kind-of": {
- "version": "6.0.3",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/lerna": {
- "version": "3.22.1",
- "resolved": "https://registry.npmjs.org/lerna/-/lerna-3.22.1.tgz",
- "integrity": "sha512-vk1lfVRFm+UuEFA7wkLKeSF7Iz13W+N/vFd48aW2yuS7Kv0RbNm2/qcDPV863056LMfkRlsEe+QYOw3palj5Lg==",
- "dev": true,
- "dependencies": {
- "@lerna/add": "3.21.0",
- "@lerna/bootstrap": "3.21.0",
- "@lerna/changed": "3.21.0",
- "@lerna/clean": "3.21.0",
- "@lerna/cli": "3.18.5",
- "@lerna/create": "3.22.0",
- "@lerna/diff": "3.21.0",
- "@lerna/exec": "3.21.0",
- "@lerna/import": "3.22.0",
- "@lerna/info": "3.21.0",
- "@lerna/init": "3.21.0",
- "@lerna/link": "3.21.0",
- "@lerna/list": "3.21.0",
- "@lerna/publish": "3.22.1",
- "@lerna/run": "3.21.0",
- "@lerna/version": "3.22.1",
- "import-local": "^2.0.0",
- "npmlog": "^4.1.2"
- },
- "bin": {
- "lerna": "cli.js"
- },
- "engines": {
- "node": ">= 6.9.0"
- }
- },
- "node_modules/lines-and-columns": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
- "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
- "dev": true
- },
- "node_modules/load-json-file": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-5.3.0.tgz",
- "integrity": "sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw==",
- "dev": true,
- "dependencies": {
- "graceful-fs": "^4.1.15",
- "parse-json": "^4.0.0",
- "pify": "^4.0.1",
- "strip-bom": "^3.0.0",
- "type-fest": "^0.3.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/load-json-file/node_modules/type-fest": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz",
- "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/locate-path": {
- "version": "5.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "p-locate": "^4.1.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/lodash": {
- "version": "4.17.21",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/lodash._reinterpolate": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz",
- "integrity": "sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA==",
- "dev": true
- },
- "node_modules/lodash.clonedeep": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
- "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==",
- "dev": true
- },
- "node_modules/lodash.get": {
- "version": "4.4.2",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/lodash.ismatch": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz",
- "integrity": "sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g==",
- "dev": true
- },
- "node_modules/lodash.set": {
- "version": "4.3.2",
- "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz",
- "integrity": "sha512-4hNPN5jlm/N/HLMCO43v8BXKq9Z7QdAGc/VGrRD61w8gN9g/6jF9A4L1pbUgBLCffi0w9VsXfTOij5x8iTyFvg==",
- "dev": true
- },
- "node_modules/lodash.sortby": {
- "version": "4.7.0",
- "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
- "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==",
- "dev": true
- },
- "node_modules/lodash.template": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz",
- "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==",
- "dev": true,
- "dependencies": {
- "lodash._reinterpolate": "^3.0.0",
- "lodash.templatesettings": "^4.0.0"
- }
- },
- "node_modules/lodash.templatesettings": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz",
- "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==",
- "dev": true,
- "dependencies": {
- "lodash._reinterpolate": "^3.0.0"
- }
- },
- "node_modules/lodash.uniq": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
- "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==",
- "dev": true
- },
- "node_modules/loud-rejection": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
- "integrity": "sha512-RPNliZOFkqFumDhvYqOaNY4Uz9oJM2K9tC6JWsJJsNdhuONW4LQHRBpb0qf4pJApVffI5N39SwzWZJuEhfd7eQ==",
- "dev": true,
- "dependencies": {
- "currently-unhandled": "^0.4.1",
- "signal-exit": "^3.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/lru-cache": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
- "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
- "dev": true,
- "dependencies": {
- "yallist": "^3.0.2"
- }
- },
- "node_modules/lru-cache/node_modules/yallist": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
- "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
- "dev": true
- },
- "node_modules/macos-release": {
- "version": "2.5.1",
- "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.5.1.tgz",
- "integrity": "sha512-DXqXhEM7gW59OjZO8NIjBCz9AQ1BEMrfiOAl4AYByHCtVHRF4KoGNO8mqQeM8lRCtQe/UnJ4imO/d2HdkKsd+A==",
- "dev": true,
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/make-fetch-happen": {
- "version": "5.0.2",
- "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-5.0.2.tgz",
- "integrity": "sha512-07JHC0r1ykIoruKO8ifMXu+xEU8qOXDFETylktdug6vJDACnP+HKevOu3PXyNPzFyTSlz8vrBYlBO1JZRe8Cag==",
- "dev": true,
- "dependencies": {
- "agentkeepalive": "^3.4.1",
- "cacache": "^12.0.0",
- "http-cache-semantics": "^3.8.1",
- "http-proxy-agent": "^2.1.0",
- "https-proxy-agent": "^2.2.3",
- "lru-cache": "^5.1.1",
- "mississippi": "^3.0.0",
- "node-fetch-npm": "^2.0.2",
- "promise-retry": "^1.1.1",
- "socks-proxy-agent": "^4.0.0",
- "ssri": "^6.0.0"
- }
- },
- "node_modules/make-fetch-happen/node_modules/agent-base": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz",
- "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==",
- "dev": true,
- "dependencies": {
- "es6-promisify": "^5.0.0"
- },
- "engines": {
- "node": ">= 4.0.0"
- }
- },
- "node_modules/make-fetch-happen/node_modules/debug": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
- "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
- "dev": true,
- "dependencies": {
- "ms": "^2.1.1"
- }
- },
- "node_modules/make-fetch-happen/node_modules/https-proxy-agent": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz",
- "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==",
- "dev": true,
- "dependencies": {
- "agent-base": "^4.3.0",
- "debug": "^3.1.0"
- },
- "engines": {
- "node": ">= 4.5.0"
- }
- },
- "node_modules/map-cache": {
- "version": "0.2.2",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/map-obj": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz",
- "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/map-visit": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
- "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==",
- "dev": true,
- "dependencies": {
- "object-visit": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/memorystream": {
- "version": "0.3.1",
- "dev": true,
- "engines": {
- "node": ">= 0.10.0"
- }
- },
- "node_modules/meow": {
- "version": "8.1.2",
- "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz",
- "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==",
- "dev": true,
- "dependencies": {
- "@types/minimist": "^1.2.0",
- "camelcase-keys": "^6.2.2",
- "decamelize-keys": "^1.1.0",
- "hard-rejection": "^2.1.0",
- "minimist-options": "4.1.0",
- "normalize-package-data": "^3.0.0",
- "read-pkg-up": "^7.0.1",
- "redent": "^3.0.0",
- "trim-newlines": "^3.0.0",
- "type-fest": "^0.18.0",
- "yargs-parser": "^20.2.3"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/meow/node_modules/hosted-git-info": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz",
- "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==",
- "dev": true,
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/meow/node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dev": true,
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/meow/node_modules/normalize-package-data": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz",
- "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==",
- "dev": true,
- "dependencies": {
- "hosted-git-info": "^4.0.1",
- "is-core-module": "^2.5.0",
- "semver": "^7.3.4",
- "validate-npm-package-license": "^3.0.1"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/meow/node_modules/parse-json": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
- "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
- "dev": true,
- "dependencies": {
- "@babel/code-frame": "^7.0.0",
- "error-ex": "^1.3.1",
- "json-parse-even-better-errors": "^2.3.0",
- "lines-and-columns": "^1.1.6"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/meow/node_modules/read-pkg": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz",
- "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==",
- "dev": true,
- "dependencies": {
- "@types/normalize-package-data": "^2.4.0",
- "normalize-package-data": "^2.5.0",
- "parse-json": "^5.0.0",
- "type-fest": "^0.6.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/meow/node_modules/read-pkg-up": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz",
- "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==",
- "dev": true,
- "dependencies": {
- "find-up": "^4.1.0",
- "read-pkg": "^5.2.0",
- "type-fest": "^0.8.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/meow/node_modules/read-pkg-up/node_modules/type-fest": {
- "version": "0.8.1",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
- "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/meow/node_modules/read-pkg/node_modules/hosted-git-info": {
- "version": "2.8.9",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
- "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
- "dev": true
- },
- "node_modules/meow/node_modules/read-pkg/node_modules/normalize-package-data": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
- "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
- "dev": true,
- "dependencies": {
- "hosted-git-info": "^2.1.4",
- "resolve": "^1.10.0",
- "semver": "2 || 3 || 4 || 5",
- "validate-npm-package-license": "^3.0.1"
- }
- },
- "node_modules/meow/node_modules/read-pkg/node_modules/semver": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
- "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
- "dev": true,
- "bin": {
- "semver": "bin/semver"
- }
- },
- "node_modules/meow/node_modules/read-pkg/node_modules/type-fest": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz",
- "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/meow/node_modules/type-fest": {
- "version": "0.18.1",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz",
- "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/merge2": {
- "version": "1.4.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/mime": {
- "version": "1.2.11",
- "dev": true
- },
- "node_modules/mime-db": {
- "version": "1.52.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/mime-types": {
- "version": "2.1.35",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "mime-db": "1.52.0"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/min-indent": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz",
- "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/minimatch": {
- "version": "3.0.5",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/minimist": {
- "version": "1.2.8",
- "dev": true,
- "license": "MIT",
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/minimist-options": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz",
- "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==",
- "dev": true,
- "dependencies": {
- "arrify": "^1.0.1",
- "is-plain-obj": "^1.1.0",
- "kind-of": "^6.0.3"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/minipass": {
- "version": "2.9.0",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz",
- "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==",
- "dev": true,
- "dependencies": {
- "safe-buffer": "^5.1.2",
- "yallist": "^3.0.0"
- }
- },
- "node_modules/minipass/node_modules/yallist": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
- "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
- "dev": true
- },
- "node_modules/minizlib": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz",
- "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==",
- "dev": true,
- "dependencies": {
- "minipass": "^2.9.0"
- }
- },
- "node_modules/mississippi": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz",
- "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==",
- "dev": true,
- "dependencies": {
- "concat-stream": "^1.5.0",
- "duplexify": "^3.4.2",
- "end-of-stream": "^1.1.0",
- "flush-write-stream": "^1.0.0",
- "from2": "^2.1.0",
- "parallel-transform": "^1.1.0",
- "pump": "^3.0.0",
- "pumpify": "^1.3.3",
- "stream-each": "^1.1.0",
- "through2": "^2.0.0"
- },
- "engines": {
- "node": ">=4.0.0"
- }
- },
- "node_modules/mississippi/node_modules/concat-stream": {
- "version": "1.6.2",
- "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
- "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
- "dev": true,
- "engines": [
- "node >= 0.8"
- ],
- "dependencies": {
- "buffer-from": "^1.0.0",
- "inherits": "^2.0.3",
- "readable-stream": "^2.2.2",
- "typedarray": "^0.0.6"
- }
- },
- "node_modules/mississippi/node_modules/readable-stream": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
- "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
- "dev": true,
- "dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "node_modules/mississippi/node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "node_modules/mississippi/node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
- "node_modules/mississippi/node_modules/through2": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
- "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
- "dev": true,
- "dependencies": {
- "readable-stream": "~2.3.6",
- "xtend": "~4.0.1"
- }
- },
- "node_modules/mixin-deep": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
- "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==",
- "dev": true,
- "dependencies": {
- "for-in": "^1.0.2",
- "is-extendable": "^1.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/mkdirp": {
- "version": "0.5.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "minimist": "^1.2.5"
- },
- "bin": {
- "mkdirp": "bin/cmd.js"
- }
- },
- "node_modules/mkdirp-promise": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz",
- "integrity": "sha512-Hepn5kb1lJPtVW84RFT40YG1OddBNTOVUZR2bzQUHc+Z03en8/3uX0+060JDhcEzyO08HmipsN9DcnFMxhIL9w==",
- "deprecated": "This package is broken and no longer maintained. 'mkdirp' itself supports promises now, please switch to that.",
- "dev": true,
- "dependencies": {
- "mkdirp": "*"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/modify-values": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz",
- "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/moment": {
- "version": "2.27.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": "*"
- }
- },
- "node_modules/moment-timezone": {
- "version": "0.5.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "moment": ">= 2.6.0"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/move-concurrently": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz",
- "integrity": "sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ==",
- "dev": true,
- "dependencies": {
- "aproba": "^1.1.1",
- "copy-concurrently": "^1.0.0",
- "fs-write-stream-atomic": "^1.0.8",
- "mkdirp": "^0.5.1",
- "rimraf": "^2.5.4",
- "run-queue": "^1.0.3"
- }
- },
- "node_modules/move-concurrently/node_modules/aproba": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
- "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
- "dev": true
- },
- "node_modules/move-concurrently/node_modules/rimraf": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
- "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
- "dev": true,
- "dependencies": {
- "glob": "^7.1.3"
- },
- "bin": {
- "rimraf": "bin.js"
- }
- },
- "node_modules/ms": {
- "version": "2.1.2",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/multimatch": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-3.0.0.tgz",
- "integrity": "sha512-22foS/gqQfANZ3o+W7ST2x25ueHDVNWl/b9OlGcLpy/iKxjCpvcNCM51YCenUi7Mt/jAjjqv8JwZRs8YP5sRjA==",
- "dev": true,
- "dependencies": {
- "array-differ": "^2.0.3",
- "array-union": "^1.0.2",
- "arrify": "^1.0.1",
- "minimatch": "^3.0.4"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/multimatch/node_modules/array-union": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
- "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==",
- "dev": true,
- "dependencies": {
- "array-uniq": "^1.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/mute-stream": {
- "version": "0.0.7",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/mz": {
- "version": "2.7.0",
- "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
- "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==",
- "dev": true,
- "dependencies": {
- "any-promise": "^1.0.0",
- "object-assign": "^4.0.1",
- "thenify-all": "^1.0.0"
- }
- },
- "node_modules/nanomatch": {
- "version": "1.2.13",
- "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
- "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
- "dev": true,
- "dependencies": {
- "arr-diff": "^4.0.0",
- "array-unique": "^0.3.2",
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "fragment-cache": "^0.2.1",
- "is-windows": "^1.0.2",
- "kind-of": "^6.0.2",
- "object.pick": "^1.3.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/neo-async": {
- "version": "2.6.2",
- "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
- "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
- "dev": true
- },
- "node_modules/nice-try": {
- "version": "1.0.5",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/node-fetch": {
- "version": "2.6.7",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "whatwg-url": "^5.0.0"
- },
- "engines": {
- "node": "4.x || >=6.0.0"
- },
- "peerDependencies": {
- "encoding": "^0.1.0"
- },
- "peerDependenciesMeta": {
- "encoding": {
- "optional": true
- }
- }
- },
- "node_modules/node-fetch-npm": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/node-fetch-npm/-/node-fetch-npm-2.0.4.tgz",
- "integrity": "sha512-iOuIQDWDyjhv9qSDrj9aq/klt6F9z1p2otB3AV7v3zBDcL/x+OfGsvGQZZCcMZbUf4Ujw1xGNQkjvGnVT22cKg==",
- "deprecated": "This module is not used anymore, npm uses minipass-fetch for its fetch implementation now",
- "dev": true,
- "dependencies": {
- "encoding": "^0.1.11",
- "json-parse-better-errors": "^1.0.0",
- "safe-buffer": "^5.1.1"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/node-gyp": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-5.1.1.tgz",
- "integrity": "sha512-WH0WKGi+a4i4DUt2mHnvocex/xPLp9pYt5R6M2JdFB7pJ7Z34hveZ4nDTGTiLXCkitA9T8HFZjhinBCiVHYcWw==",
- "dev": true,
- "dependencies": {
- "env-paths": "^2.2.0",
- "glob": "^7.1.4",
- "graceful-fs": "^4.2.2",
- "mkdirp": "^0.5.1",
- "nopt": "^4.0.1",
- "npmlog": "^4.1.2",
- "request": "^2.88.0",
- "rimraf": "^2.6.3",
- "semver": "^5.7.1",
- "tar": "^4.4.12",
- "which": "^1.3.1"
- },
- "bin": {
- "node-gyp": "bin/node-gyp.js"
- },
- "engines": {
- "node": ">= 6.0.0"
- }
- },
- "node_modules/node-gyp/node_modules/rimraf": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
- "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
- "dev": true,
- "dependencies": {
- "glob": "^7.1.3"
- },
- "bin": {
- "rimraf": "bin.js"
- }
- },
- "node_modules/node-gyp/node_modules/semver": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
- "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
- "dev": true,
- "bin": {
- "semver": "bin/semver"
- }
- },
- "node_modules/nomnom": {
- "version": "1.6.2",
- "dev": true,
- "dependencies": {
- "colors": "0.5.x",
- "underscore": "~1.4.4"
- }
- },
- "node_modules/nopt": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz",
- "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==",
- "dev": true,
- "dependencies": {
- "abbrev": "1",
- "osenv": "^0.1.4"
- },
- "bin": {
- "nopt": "bin/nopt.js"
- }
- },
- "node_modules/normalize-package-data": {
- "version": "2.5.0",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "hosted-git-info": "^2.1.4",
- "resolve": "^1.10.0",
- "semver": "2 || 3 || 4 || 5",
- "validate-npm-package-license": "^3.0.1"
- }
- },
- "node_modules/normalize-package-data/node_modules/semver": {
- "version": "5.7.1",
- "dev": true,
- "license": "ISC",
- "bin": {
- "semver": "bin/semver"
- }
- },
- "node_modules/normalize-url": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz",
- "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/npm-bundled": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz",
- "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==",
- "dev": true,
- "dependencies": {
- "npm-normalize-package-bin": "^1.0.1"
- }
- },
- "node_modules/npm-lifecycle": {
- "version": "3.1.5",
- "resolved": "https://registry.npmjs.org/npm-lifecycle/-/npm-lifecycle-3.1.5.tgz",
- "integrity": "sha512-lDLVkjfZmvmfvpvBzA4vzee9cn+Me4orq0QF8glbswJVEbIcSNWib7qGOffolysc3teCqbbPZZkzbr3GQZTL1g==",
- "dev": true,
- "dependencies": {
- "byline": "^5.0.0",
- "graceful-fs": "^4.1.15",
- "node-gyp": "^5.0.2",
- "resolve-from": "^4.0.0",
- "slide": "^1.1.6",
- "uid-number": "0.0.6",
- "umask": "^1.1.0",
- "which": "^1.3.1"
- }
- },
- "node_modules/npm-normalize-package-bin": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz",
- "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==",
- "dev": true
- },
- "node_modules/npm-package-arg": {
- "version": "6.1.1",
- "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.1.tgz",
- "integrity": "sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg==",
- "dev": true,
- "dependencies": {
- "hosted-git-info": "^2.7.1",
- "osenv": "^0.1.5",
- "semver": "^5.6.0",
- "validate-npm-package-name": "^3.0.0"
- }
- },
- "node_modules/npm-package-arg/node_modules/semver": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
- "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
- "dev": true,
- "bin": {
- "semver": "bin/semver"
- }
- },
- "node_modules/npm-packlist": {
- "version": "1.4.8",
- "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz",
- "integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==",
- "dev": true,
- "dependencies": {
- "ignore-walk": "^3.0.1",
- "npm-bundled": "^1.0.1",
- "npm-normalize-package-bin": "^1.0.1"
- }
- },
- "node_modules/npm-pick-manifest": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-3.0.2.tgz",
- "integrity": "sha512-wNprTNg+X5nf+tDi+hbjdHhM4bX+mKqv6XmPh7B5eG+QY9VARfQPfCEH013H5GqfNj6ee8Ij2fg8yk0mzps1Vw==",
- "dev": true,
- "dependencies": {
- "figgy-pudding": "^3.5.1",
- "npm-package-arg": "^6.0.0",
- "semver": "^5.4.1"
- }
- },
- "node_modules/npm-pick-manifest/node_modules/semver": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
- "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
- "dev": true,
- "bin": {
- "semver": "bin/semver"
- }
- },
- "node_modules/npm-run-all": {
- "version": "4.1.5",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-styles": "^3.2.1",
- "chalk": "^2.4.1",
- "cross-spawn": "^6.0.5",
- "memorystream": "^0.3.1",
- "minimatch": "^3.0.4",
- "pidtree": "^0.3.0",
- "read-pkg": "^3.0.0",
- "shell-quote": "^1.6.1",
- "string.prototype.padend": "^3.0.0"
- },
- "bin": {
- "npm-run-all": "bin/npm-run-all/index.js",
- "run-p": "bin/run-p/index.js",
- "run-s": "bin/run-s/index.js"
- },
- "engines": {
- "node": ">= 4"
- }
- },
- "node_modules/npm-run-path": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
- "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==",
- "dev": true,
- "dependencies": {
- "path-key": "^2.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/npmlog": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
- "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
- "dev": true,
- "dependencies": {
- "are-we-there-yet": "~1.1.2",
- "console-control-strings": "~1.1.0",
- "gauge": "~2.7.3",
- "set-blocking": "~2.0.0"
- }
- },
- "node_modules/number-is-nan": {
- "version": "1.0.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/oauth-sign": {
- "version": "0.9.0",
- "dev": true,
- "license": "Apache-2.0",
- "engines": {
- "node": "*"
- }
- },
- "node_modules/object-assign": {
- "version": "4.1.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-copy": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
- "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==",
- "dev": true,
- "dependencies": {
- "copy-descriptor": "^0.1.0",
- "define-property": "^0.2.5",
- "kind-of": "^3.0.3"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-copy/node_modules/define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
- "dev": true,
- "dependencies": {
- "is-descriptor": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-copy/node_modules/is-accessor-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
- "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==",
- "dev": true,
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-copy/node_modules/is-buffer": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
- "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
- "dev": true
- },
- "node_modules/object-copy/node_modules/is-data-descriptor": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
- "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==",
- "dev": true,
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-copy/node_modules/is-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
- "dev": true,
- "dependencies": {
- "is-accessor-descriptor": "^0.1.6",
- "is-data-descriptor": "^0.1.4",
- "kind-of": "^5.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-copy/node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-inspect": {
- "version": "1.12.3",
- "dev": true,
- "license": "MIT",
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/object-keys": {
- "version": "1.1.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/object-visit": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
- "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==",
- "dev": true,
- "dependencies": {
- "isobject": "^3.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object.getownpropertydescriptors": {
- "version": "2.1.6",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "array.prototype.reduce": "^1.0.5",
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.21.2",
- "safe-array-concat": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.8"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/object.pick": {
- "version": "1.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "isobject": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/octokit-pagination-methods": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz",
- "integrity": "sha512-fZ4qZdQ2nxJvtcasX7Ghl+WlWS/d9IgnBIwFZXVNNZUmzpno91SX5bc5vuxiuKoCtK78XxGGNuSCrDC7xYB3OQ==",
- "dev": true
- },
- "node_modules/once": {
- "version": "1.4.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "wrappy": "1"
- }
- },
- "node_modules/os-homedir": {
- "version": "1.0.2",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/os-name": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/os-name/-/os-name-3.1.0.tgz",
- "integrity": "sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg==",
- "dev": true,
- "dependencies": {
- "macos-release": "^2.2.0",
- "windows-release": "^3.1.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/os-tmpdir": {
- "version": "1.0.2",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/osenv": {
- "version": "0.1.5",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "os-homedir": "^1.0.0",
- "os-tmpdir": "^1.0.0"
- }
- },
- "node_modules/p-finally": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
- "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/p-limit": {
- "version": "2.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "p-try": "^2.0.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/p-locate": {
- "version": "4.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "p-limit": "^2.2.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/p-map": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz",
- "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/p-map-series": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-map-series/-/p-map-series-1.0.0.tgz",
- "integrity": "sha512-4k9LlvY6Bo/1FcIdV33wqZQES0Py+iKISU9Uc8p8AjWoZPnFKMpVIVD3s0EYn4jzLh1I+WeUZkJ0Yoa4Qfw3Kg==",
- "dev": true,
- "dependencies": {
- "p-reduce": "^1.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/p-pipe": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/p-pipe/-/p-pipe-1.2.0.tgz",
- "integrity": "sha512-IA8SqjIGA8l9qOksXJvsvkeQ+VGb0TAzNCzvKvz9wt5wWLqfWbV6fXy43gpR2L4Te8sOq3S+Ql9biAaMKPdbtw==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/p-queue": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-4.0.0.tgz",
- "integrity": "sha512-3cRXXn3/O0o3+eVmUroJPSj/esxoEFIm0ZOno/T+NzG/VZgPOqQ8WKmlNqubSEpZmCIngEy34unkHGg83ZIBmg==",
- "dev": true,
- "dependencies": {
- "eventemitter3": "^3.1.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/p-reduce": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz",
- "integrity": "sha512-3Tx1T3oM1xO/Y8Gj0sWyE78EIJZ+t+aEmXUdvQgvGmSMri7aPTHoovbXEreWKkL5j21Er60XAWLTzKbAKYOujQ==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/p-try": {
- "version": "2.2.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/p-waterfall": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-waterfall/-/p-waterfall-1.0.0.tgz",
- "integrity": "sha512-KeXddIp6jBT8qzyxfQGOGzNYc/7ftxKtRc5Uggre02yvbZrSBHE2M2C842/WizMBFD4s0Ngwz3QFOit2A+Ezrg==",
- "dev": true,
- "dependencies": {
- "p-reduce": "^1.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/parallel-transform": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz",
- "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==",
- "dev": true,
- "dependencies": {
- "cyclist": "^1.0.1",
- "inherits": "^2.0.3",
- "readable-stream": "^2.1.5"
- }
- },
- "node_modules/parallel-transform/node_modules/readable-stream": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
- "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
- "dev": true,
- "dependencies": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "node_modules/parallel-transform/node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "node_modules/parallel-transform/node_modules/string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "dependencies": {
- "safe-buffer": "~5.1.0"
- }
- },
- "node_modules/parse-github-repo-url": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/parse-github-repo-url/-/parse-github-repo-url-1.4.1.tgz",
- "integrity": "sha512-bSWyzBKqcSL4RrncTpGsEKoJ7H8a4L3++ifTAbTFeMHyq2wRV+42DGmQcHIrJIvdcacjIOxEuKH/w4tthF17gg==",
- "dev": true
- },
- "node_modules/parse-json": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "error-ex": "^1.3.1",
- "json-parse-better-errors": "^1.0.1"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/parse-link-header": {
- "version": "0.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "xtend": "~2.0.5"
- }
- },
- "node_modules/parse-link-header/node_modules/object-keys": {
- "version": "0.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "foreach": "~2.0.1",
- "indexof": "~0.0.1",
- "is": "~0.2.6"
- }
- },
- "node_modules/parse-link-header/node_modules/xtend": {
- "version": "2.0.6",
- "dev": true,
- "dependencies": {
- "is-object": "~0.1.2",
- "object-keys": "~0.2.0"
- },
- "engines": {
- "node": ">=0.4"
- }
- },
- "node_modules/parse-path": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/parse-path/-/parse-path-4.0.4.tgz",
- "integrity": "sha512-Z2lWUis7jlmXC1jeOG9giRO2+FsuyNipeQ43HAjqAZjwSe3SEf+q/84FGPHoso3kyntbxa4c4i77t3m6fGf8cw==",
- "dev": true,
- "dependencies": {
- "is-ssh": "^1.3.0",
- "protocols": "^1.4.0",
- "qs": "^6.9.4",
- "query-string": "^6.13.8"
- }
- },
- "node_modules/parse-path/node_modules/protocols": {
- "version": "1.4.8",
- "resolved": "https://registry.npmjs.org/protocols/-/protocols-1.4.8.tgz",
- "integrity": "sha512-IgjKyaUSjsROSO8/D49Ab7hP8mJgTYcqApOqdPhLoPxAplXmkp+zRvsrSQjFn5by0rhm4VH0GAUELIPpx7B1yg==",
- "dev": true
- },
- "node_modules/parse-path/node_modules/qs": {
- "version": "6.11.2",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz",
- "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==",
- "dev": true,
- "dependencies": {
- "side-channel": "^1.0.4"
- },
- "engines": {
- "node": ">=0.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/parse-url": {
- "version": "6.0.5",
- "resolved": "https://registry.npmjs.org/parse-url/-/parse-url-6.0.5.tgz",
- "integrity": "sha512-e35AeLTSIlkw/5GFq70IN7po8fmDUjpDPY1rIK+VubRfsUvBonjQ+PBZG+vWMACnQSmNlvl524IucoDmcioMxA==",
- "dev": true,
- "dependencies": {
- "is-ssh": "^1.3.0",
- "normalize-url": "^6.1.0",
- "parse-path": "^4.0.0",
- "protocols": "^1.4.0"
- }
- },
- "node_modules/parse-url/node_modules/protocols": {
- "version": "1.4.8",
- "resolved": "https://registry.npmjs.org/protocols/-/protocols-1.4.8.tgz",
- "integrity": "sha512-IgjKyaUSjsROSO8/D49Ab7hP8mJgTYcqApOqdPhLoPxAplXmkp+zRvsrSQjFn5by0rhm4VH0GAUELIPpx7B1yg==",
- "dev": true
- },
- "node_modules/pascalcase": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
- "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/path-dirname": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
- "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==",
- "dev": true
- },
- "node_modules/path-exists": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/path-is-absolute": {
- "version": "1.0.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/path-key": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/path-parse": {
- "version": "1.0.7",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/path-type": {
- "version": "3.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "pify": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/path-type/node_modules/pify": {
- "version": "3.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/pidtree": {
- "version": "0.3.1",
- "dev": true,
- "license": "MIT",
- "bin": {
- "pidtree": "bin/pidtree.js"
- },
- "engines": {
- "node": ">=0.10"
- }
- },
- "node_modules/pify": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
- "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/pinkie": {
- "version": "2.0.4",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/pinkie-promise": {
- "version": "2.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "pinkie": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/posix-character-classes": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
- "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/process-nextick-args": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
- "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
- "dev": true
- },
- "node_modules/promise-inflight": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
- "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==",
- "dev": true
- },
- "node_modules/promise-retry": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-1.1.1.tgz",
- "integrity": "sha512-StEy2osPr28o17bIW776GtwO6+Q+M9zPiZkYfosciUUMYqjhU/ffwRAH0zN2+uvGyUsn8/YICIHRzLbPacpZGw==",
- "dev": true,
- "dependencies": {
- "err-code": "^1.0.0",
- "retry": "^0.10.0"
- },
- "engines": {
- "node": ">=0.12"
- }
- },
- "node_modules/promzard": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/promzard/-/promzard-0.3.0.tgz",
- "integrity": "sha512-JZeYqd7UAcHCwI+sTOeUDYkvEU+1bQ7iE0UT1MgB/tERkAPkesW46MrpIySzODi+owTjZtiF8Ay5j9m60KmMBw==",
- "dev": true,
- "dependencies": {
- "read": "1"
- }
- },
- "node_modules/proto-list": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz",
- "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==",
- "dev": true
- },
- "node_modules/protocols": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/protocols/-/protocols-2.0.1.tgz",
- "integrity": "sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==",
- "dev": true
- },
- "node_modules/protoduck": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/protoduck/-/protoduck-5.0.1.tgz",
- "integrity": "sha512-WxoCeDCoCBY55BMvj4cAEjdVUFGRWed9ZxPlqTKYyw1nDDTQ4pqmnIMAGfJlg7Dx35uB/M+PHJPTmGOvaCaPTg==",
- "dev": true,
- "dependencies": {
- "genfun": "^5.0.0"
- }
- },
- "node_modules/psl": {
- "version": "1.9.0",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/pump": {
- "version": "3.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "end-of-stream": "^1.1.0",
- "once": "^1.3.1"
- }
- },
- "node_modules/pumpify": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz",
- "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==",
- "dev": true,
- "dependencies": {
- "duplexify": "^3.6.0",
- "inherits": "^2.0.3",
- "pump": "^2.0.0"
- }
- },
- "node_modules/pumpify/node_modules/pump": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz",
- "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==",
- "dev": true,
- "dependencies": {
- "end-of-stream": "^1.1.0",
- "once": "^1.3.1"
- }
- },
- "node_modules/punycode": {
- "version": "2.3.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/qs": {
- "version": "6.5.3",
- "dev": true,
- "license": "BSD-3-Clause",
- "engines": {
- "node": ">=0.6"
- }
- },
- "node_modules/query-string": {
- "version": "6.14.1",
- "resolved": "https://registry.npmjs.org/query-string/-/query-string-6.14.1.tgz",
- "integrity": "sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw==",
- "dev": true,
- "dependencies": {
- "decode-uri-component": "^0.2.0",
- "filter-obj": "^1.1.0",
- "split-on-first": "^1.0.0",
- "strict-uri-encode": "^2.0.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/quick-lru": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz",
- "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/read": {
- "version": "1.0.7",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "mute-stream": "~0.0.4"
- },
- "engines": {
- "node": ">=0.8"
- }
- },
- "node_modules/read-cmd-shim": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-1.0.5.tgz",
- "integrity": "sha512-v5yCqQ/7okKoZZkBQUAfTsQ3sVJtXdNfbPnI5cceppoxEVLYA3k+VtV2omkeo8MS94JCy4fSiUwlRBAwCVRPUA==",
- "dev": true,
- "dependencies": {
- "graceful-fs": "^4.1.2"
- }
- },
- "node_modules/read-package-json": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-2.1.2.tgz",
- "integrity": "sha512-D1KmuLQr6ZSJS0tW8hf3WGpRlwszJOXZ3E8Yd/DNRaM5d+1wVRZdHlpGBLAuovjr28LbWvjpWkBHMxpRGGjzNA==",
- "dev": true,
- "dependencies": {
- "glob": "^7.1.1",
- "json-parse-even-better-errors": "^2.3.0",
- "normalize-package-data": "^2.0.0",
- "npm-normalize-package-bin": "^1.0.0"
- }
- },
- "node_modules/read-package-tree": {
- "version": "5.3.1",
- "resolved": "https://registry.npmjs.org/read-package-tree/-/read-package-tree-5.3.1.tgz",
- "integrity": "sha512-mLUDsD5JVtlZxjSlPPx1RETkNjjvQYuweKwNVt1Sn8kP5Jh44pvYuUHCp6xSVDZWbNxVxG5lyZJ921aJH61sTw==",
- "deprecated": "The functionality that this package provided is now in @npmcli/arborist",
- "dev": true,
- "dependencies": {
- "read-package-json": "^2.0.0",
- "readdir-scoped-modules": "^1.0.0",
- "util-promisify": "^2.1.0"
- }
- },
- "node_modules/read-pkg": {
- "version": "3.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "load-json-file": "^4.0.0",
- "normalize-package-data": "^2.3.2",
- "path-type": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/read-pkg-up": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz",
- "integrity": "sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==",
- "dev": true,
- "dependencies": {
- "find-up": "^2.0.0",
- "read-pkg": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/read-pkg-up/node_modules/find-up": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
- "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==",
- "dev": true,
- "dependencies": {
- "locate-path": "^2.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/read-pkg-up/node_modules/locate-path": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
- "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==",
- "dev": true,
- "dependencies": {
- "p-locate": "^2.0.0",
- "path-exists": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/read-pkg-up/node_modules/p-limit": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
- "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
- "dev": true,
- "dependencies": {
- "p-try": "^1.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/read-pkg-up/node_modules/p-locate": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
- "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==",
- "dev": true,
- "dependencies": {
- "p-limit": "^1.1.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/read-pkg-up/node_modules/p-try": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
- "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/read-pkg-up/node_modules/path-exists": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/read-pkg/node_modules/load-json-file": {
- "version": "4.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "graceful-fs": "^4.1.2",
- "parse-json": "^4.0.0",
- "pify": "^3.0.0",
- "strip-bom": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/read-pkg/node_modules/pify": {
- "version": "3.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/readable-stream": {
- "version": "3.6.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/readdir-scoped-modules": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz",
- "integrity": "sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==",
- "deprecated": "This functionality has been moved to @npmcli/fs",
- "dev": true,
- "dependencies": {
- "debuglog": "^1.0.1",
- "dezalgo": "^1.0.0",
- "graceful-fs": "^4.1.2",
- "once": "^1.3.0"
- }
- },
- "node_modules/redent": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz",
- "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==",
- "dev": true,
- "dependencies": {
- "indent-string": "^4.0.0",
- "strip-indent": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/regex-not": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
- "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
- "dev": true,
- "dependencies": {
- "extend-shallow": "^3.0.2",
- "safe-regex": "^1.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/regexp.prototype.flags": {
- "version": "1.5.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "functions-have-names": "^1.2.3"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/repeat-element": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz",
- "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/repeat-string": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
- "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==",
- "dev": true,
- "engines": {
- "node": ">=0.10"
- }
- },
- "node_modules/repeating": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
- "integrity": "sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A==",
- "dev": true,
- "dependencies": {
- "is-finite": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/request": {
- "version": "2.88.2",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "aws-sign2": "~0.7.0",
- "aws4": "^1.8.0",
- "caseless": "~0.12.0",
- "combined-stream": "~1.0.6",
- "extend": "~3.0.2",
- "forever-agent": "~0.6.1",
- "form-data": "~2.3.2",
- "har-validator": "~5.1.3",
- "http-signature": "~1.2.0",
- "is-typedarray": "~1.0.0",
- "isstream": "~0.1.2",
- "json-stringify-safe": "~5.0.1",
- "mime-types": "~2.1.19",
- "oauth-sign": "~0.9.0",
- "performance-now": "^2.1.0",
- "qs": "~6.5.2",
- "safe-buffer": "^5.1.2",
- "tough-cookie": "~2.5.0",
- "tunnel-agent": "^0.6.0",
- "uuid": "^3.3.2"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/request/node_modules/form-data": {
- "version": "2.3.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.6",
- "mime-types": "^2.1.12"
- },
- "engines": {
- "node": ">= 0.12"
- }
- },
- "node_modules/request/node_modules/performance-now": {
- "version": "2.1.0",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/require-directory": {
- "version": "2.1.1",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/require-main-filename": {
- "version": "2.0.0",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/resolve": {
- "version": "1.17.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "path-parse": "^1.0.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/resolve-cwd": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz",
- "integrity": "sha512-ccu8zQTrzVr954472aUVPLEcB3YpKSYR3cg/3lo1okzobPBM+1INXBbBZlDbnI/hbEocnf8j0QVo43hQKrbchg==",
- "dev": true,
- "dependencies": {
- "resolve-from": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/resolve-cwd/node_modules/resolve-from": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
- "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/resolve-from": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
- "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/resolve-url": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
- "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==",
- "deprecated": "https://github.com/lydell/resolve-url#deprecated",
- "dev": true
- },
- "node_modules/ret": {
- "version": "0.1.15",
- "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
- "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
- "dev": true,
- "engines": {
- "node": ">=0.12"
- }
- },
- "node_modules/retry": {
- "version": "0.10.1",
- "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz",
- "integrity": "sha512-ZXUSQYTHdl3uS7IuCehYfMzKyIDBNoAuUblvy5oGO5UJSUTmStUUVPXbA9Qxd173Bgre53yCQczQuHgRWAdvJQ==",
- "dev": true,
- "engines": {
- "node": "*"
- }
- },
- "node_modules/run-async": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz",
- "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==",
- "dev": true,
- "engines": {
- "node": ">=0.12.0"
- }
- },
- "node_modules/run-queue": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz",
- "integrity": "sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg==",
- "dev": true,
- "dependencies": {
- "aproba": "^1.1.1"
- }
- },
- "node_modules/run-queue/node_modules/aproba": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
- "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
- "dev": true
- },
- "node_modules/rxjs": {
- "version": "6.6.7",
- "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz",
- "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==",
- "dev": true,
- "dependencies": {
- "tslib": "^1.9.0"
- },
- "engines": {
- "npm": ">=2.0.0"
- }
- },
- "node_modules/rxjs/node_modules/tslib": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
- "dev": true
- },
- "node_modules/safe-array-concat": {
- "version": "1.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.2",
- "get-intrinsic": "^1.2.0",
- "has-symbols": "^1.0.3",
- "isarray": "^2.0.5"
- },
- "engines": {
- "node": ">=0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/safe-array-concat/node_modules/isarray": {
- "version": "2.0.5",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/safe-buffer": {
- "version": "5.2.1",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "license": "MIT"
- },
- "node_modules/safe-regex": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
- "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==",
- "dev": true,
- "dependencies": {
- "ret": "~0.1.10"
- }
- },
- "node_modules/safe-regex-test": {
- "version": "1.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.2",
- "get-intrinsic": "^1.1.3",
- "is-regex": "^1.1.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/safer-buffer": {
- "version": "2.1.2",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/semver": {
- "version": "7.5.4",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/semver/node_modules/lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/set-blocking": {
- "version": "2.0.0",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/set-value": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
- "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==",
- "dev": true,
- "dependencies": {
- "extend-shallow": "^2.0.1",
- "is-extendable": "^0.1.1",
- "is-plain-object": "^2.0.3",
- "split-string": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/set-value/node_modules/extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
- "dev": true,
- "dependencies": {
- "is-extendable": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/set-value/node_modules/is-extendable": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
- "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/set-value/node_modules/is-plain-object": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
- "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
- "dev": true,
- "dependencies": {
- "isobject": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/shallow-clone": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz",
- "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==",
- "dev": true,
- "dependencies": {
- "kind-of": "^6.0.2"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/shebang-command": {
- "version": "1.2.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "shebang-regex": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/shebang-regex": {
- "version": "1.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/shell-quote": {
- "version": "1.7.2",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/side-channel": {
- "version": "1.0.4",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.0",
- "get-intrinsic": "^1.0.2",
- "object-inspect": "^1.9.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/signal-exit": {
- "version": "3.0.7",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/slide": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz",
- "integrity": "sha512-NwrtjCg+lZoqhFU8fOwl4ay2ei8PaqCBOUV3/ektPY9trO1yQ1oXEfmHAhKArUVUr/hOHvy5f6AdP17dCM0zMw==",
- "dev": true,
- "engines": {
- "node": "*"
- }
- },
- "node_modules/smart-buffer": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
- "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==",
- "dev": true,
- "engines": {
- "node": ">= 6.0.0",
- "npm": ">= 3.0.0"
- }
- },
- "node_modules/snapdragon": {
- "version": "0.8.2",
- "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
- "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
- "dev": true,
- "dependencies": {
- "base": "^0.11.1",
- "debug": "^2.2.0",
- "define-property": "^0.2.5",
- "extend-shallow": "^2.0.1",
- "map-cache": "^0.2.2",
- "source-map": "^0.5.6",
- "source-map-resolve": "^0.5.0",
- "use": "^3.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon-node": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
- "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
- "dev": true,
- "dependencies": {
- "define-property": "^1.0.0",
- "isobject": "^3.0.0",
- "snapdragon-util": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon-node/node_modules/define-property": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
- "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",
- "dev": true,
- "dependencies": {
- "is-descriptor": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon-util": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
- "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
- "dev": true,
- "dependencies": {
- "kind-of": "^3.2.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon-util/node_modules/is-buffer": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
- "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
- "dev": true
- },
- "node_modules/snapdragon-util/node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon/node_modules/debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/snapdragon/node_modules/define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
- "dev": true,
- "dependencies": {
- "is-descriptor": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon/node_modules/extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
- "dev": true,
- "dependencies": {
- "is-extendable": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon/node_modules/is-accessor-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
- "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==",
- "dev": true,
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon/node_modules/is-accessor-descriptor/node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon/node_modules/is-buffer": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
- "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
- "dev": true
- },
- "node_modules/snapdragon/node_modules/is-data-descriptor": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
- "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==",
- "dev": true,
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon/node_modules/is-data-descriptor/node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon/node_modules/is-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
- "dev": true,
- "dependencies": {
- "is-accessor-descriptor": "^0.1.6",
- "is-data-descriptor": "^0.1.4",
- "kind-of": "^5.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon/node_modules/is-extendable": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
- "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon/node_modules/kind-of": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/snapdragon/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
- "dev": true
- },
- "node_modules/snapdragon/node_modules/source-map": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/sntp": {
- "version": "0.2.4",
- "dev": true,
- "dependencies": {
- "hoek": "0.9.x"
- },
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/sntp/node_modules/hoek": {
- "version": "0.9.1",
- "dev": true,
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/socks": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/socks/-/socks-2.3.3.tgz",
- "integrity": "sha512-o5t52PCNtVdiOvzMry7wU4aOqYWL0PeCXRWBEiJow4/i/wr+wpsJQ9awEu1EonLIqsfGd5qSgDdxEOvCdmBEpA==",
- "dev": true,
- "dependencies": {
- "ip": "1.1.5",
- "smart-buffer": "^4.1.0"
- },
- "engines": {
- "node": ">= 6.0.0",
- "npm": ">= 3.0.0"
- }
- },
- "node_modules/socks-proxy-agent": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-4.0.2.tgz",
- "integrity": "sha512-NT6syHhI9LmuEMSK6Kd2V7gNv5KFZoLE7V5udWmn0de+3Mkj3UMA/AJPLyeNUVmElCurSHtUdM3ETpR3z770Wg==",
- "dev": true,
- "dependencies": {
- "agent-base": "~4.2.1",
- "socks": "~2.3.2"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/socks-proxy-agent/node_modules/agent-base": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz",
- "integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==",
- "dev": true,
- "dependencies": {
- "es6-promisify": "^5.0.0"
- },
- "engines": {
- "node": ">= 4.0.0"
- }
- },
- "node_modules/sort-keys": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz",
- "integrity": "sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==",
- "dev": true,
- "dependencies": {
- "is-plain-obj": "^1.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/source-map": {
- "version": "0.6.1",
- "dev": true,
- "license": "BSD-3-Clause",
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/source-map-resolve": {
- "version": "0.5.3",
- "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz",
- "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==",
- "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated",
- "dev": true,
- "dependencies": {
- "atob": "^2.1.2",
- "decode-uri-component": "^0.2.0",
- "resolve-url": "^0.2.1",
- "source-map-url": "^0.4.0",
- "urix": "^0.1.0"
- }
- },
- "node_modules/source-map-url": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz",
- "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==",
- "deprecated": "See https://github.com/lydell/source-map-url#deprecated",
- "dev": true
- },
- "node_modules/spdx-correct": {
- "version": "3.1.1",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "spdx-expression-parse": "^3.0.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "node_modules/spdx-exceptions": {
- "version": "2.3.0",
- "dev": true,
- "license": "CC-BY-3.0"
- },
- "node_modules/spdx-expression-parse": {
- "version": "3.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "spdx-exceptions": "^2.1.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "node_modules/spdx-license-ids": {
- "version": "3.0.5",
- "dev": true,
- "license": "CC0-1.0"
- },
- "node_modules/split": {
- "version": "1.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "through": "2"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/split-on-first": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz",
- "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/split-string": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
- "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
- "dev": true,
- "dependencies": {
- "extend-shallow": "^3.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/split2": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz",
- "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==",
- "dev": true,
- "dependencies": {
- "readable-stream": "^3.0.0"
- }
- },
- "node_modules/sprintf-js": {
- "version": "1.0.3",
- "dev": true,
- "license": "BSD-3-Clause"
- },
- "node_modules/sshpk": {
- "version": "1.17.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "asn1": "~0.2.3",
- "assert-plus": "^1.0.0",
- "bcrypt-pbkdf": "^1.0.0",
- "dashdash": "^1.12.0",
- "ecc-jsbn": "~0.1.1",
- "getpass": "^0.1.1",
- "jsbn": "~0.1.0",
- "safer-buffer": "^2.0.2",
- "tweetnacl": "~0.14.0"
- },
- "bin": {
- "sshpk-conv": "bin/sshpk-conv",
- "sshpk-sign": "bin/sshpk-sign",
- "sshpk-verify": "bin/sshpk-verify"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/ssri": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz",
- "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==",
- "dev": true,
- "dependencies": {
- "figgy-pudding": "^3.5.1"
- }
- },
- "node_modules/static-extend": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
- "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==",
- "dev": true,
- "dependencies": {
- "define-property": "^0.2.5",
- "object-copy": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/static-extend/node_modules/define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
- "dev": true,
- "dependencies": {
- "is-descriptor": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/static-extend/node_modules/is-accessor-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
- "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==",
- "dev": true,
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/static-extend/node_modules/is-accessor-descriptor/node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/static-extend/node_modules/is-buffer": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
- "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
- "dev": true
- },
- "node_modules/static-extend/node_modules/is-data-descriptor": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
- "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==",
- "dev": true,
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/static-extend/node_modules/is-data-descriptor/node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/static-extend/node_modules/is-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
- "dev": true,
- "dependencies": {
- "is-accessor-descriptor": "^0.1.6",
- "is-data-descriptor": "^0.1.4",
- "kind-of": "^5.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/static-extend/node_modules/kind-of": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/stream-each": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz",
- "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==",
- "dev": true,
- "dependencies": {
- "end-of-stream": "^1.1.0",
- "stream-shift": "^1.0.0"
- }
- },
- "node_modules/stream-shift": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz",
- "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==",
- "dev": true
- },
- "node_modules/strict-uri-encode": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz",
- "integrity": "sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/string_decoder": {
- "version": "1.3.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "safe-buffer": "~5.2.0"
- }
- },
- "node_modules/string-width": {
- "version": "4.2.3",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/string.prototype.padend": {
- "version": "3.1.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "define-properties": "^1.1.3",
- "es-abstract": "^1.17.0-next.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/string.prototype.trim": {
- "version": "1.2.7",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
- "es-abstract": "^1.20.4"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/string.prototype.trimend": {
- "version": "1.0.6",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
- "es-abstract": "^1.20.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/string.prototype.trimstart": {
- "version": "1.0.6",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
- "es-abstract": "^1.20.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/strip-ansi": {
- "version": "6.0.1",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "ansi-regex": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/strip-bom": {
- "version": "3.0.0",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/strip-eof": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
- "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/strip-indent": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz",
- "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==",
- "dev": true,
- "dependencies": {
- "min-indent": "^1.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/strong-log-transformer": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz",
- "integrity": "sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA==",
- "dev": true,
- "dependencies": {
- "duplexer": "^0.1.1",
- "minimist": "^1.2.0",
- "through": "^2.3.4"
- },
- "bin": {
- "sl-log-transformer": "bin/sl-log-transformer.js"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/supports-color": {
- "version": "5.5.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/tar": {
- "version": "4.4.19",
- "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.19.tgz",
- "integrity": "sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==",
- "dev": true,
- "dependencies": {
- "chownr": "^1.1.4",
- "fs-minipass": "^1.2.7",
- "minipass": "^2.9.0",
- "minizlib": "^1.3.3",
- "mkdirp": "^0.5.5",
- "safe-buffer": "^5.2.1",
- "yallist": "^3.1.1"
- },
- "engines": {
- "node": ">=4.5"
- }
- },
- "node_modules/tar/node_modules/yallist": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
- "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
- "dev": true
- },
- "node_modules/temp-dir": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz",
- "integrity": "sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/temp-write": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/temp-write/-/temp-write-3.4.0.tgz",
- "integrity": "sha512-P8NK5aNqcGQBC37i/8pL/K9tFgx14CF2vdwluD/BA/dGWGD4T4E59TE7dAxPyb2wusts2FhMp36EiopBBsGJ2Q==",
- "dev": true,
- "dependencies": {
- "graceful-fs": "^4.1.2",
- "is-stream": "^1.1.0",
- "make-dir": "^1.0.0",
- "pify": "^3.0.0",
- "temp-dir": "^1.0.0",
- "uuid": "^3.0.1"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/temp-write/node_modules/make-dir": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz",
- "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==",
- "dev": true,
- "dependencies": {
- "pify": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/temp-write/node_modules/pify": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
- "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/text-extensions": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz",
- "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==",
- "dev": true,
- "engines": {
- "node": ">=0.10"
- }
- },
- "node_modules/thenify": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz",
- "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==",
- "dev": true,
- "dependencies": {
- "any-promise": "^1.0.0"
- }
- },
- "node_modules/thenify-all": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz",
- "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==",
- "dev": true,
- "dependencies": {
- "thenify": ">= 3.1.0 < 4"
- },
- "engines": {
- "node": ">=0.8"
- }
- },
- "node_modules/through": {
- "version": "2.3.8",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/through2": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz",
- "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==",
- "dev": true,
- "dependencies": {
- "inherits": "^2.0.4",
- "readable-stream": "2 || 3"
- }
- },
- "node_modules/tmp": {
- "version": "0.0.33",
- "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
- "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
- "dev": true,
- "dependencies": {
- "os-tmpdir": "~1.0.2"
- },
- "engines": {
- "node": ">=0.6.0"
- }
- },
- "node_modules/to-object-path": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
- "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==",
- "dev": true,
- "dependencies": {
- "kind-of": "^3.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/to-object-path/node_modules/is-buffer": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
- "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
- "dev": true
- },
- "node_modules/to-object-path/node_modules/kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dev": true,
- "dependencies": {
- "is-buffer": "^1.1.5"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/to-regex": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
- "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
- "dev": true,
- "dependencies": {
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "regex-not": "^1.0.2",
- "safe-regex": "^1.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/tough-cookie": {
- "version": "2.5.0",
- "dev": true,
- "license": "BSD-3-Clause",
- "dependencies": {
- "psl": "^1.1.28",
- "punycode": "^2.1.1"
- },
- "engines": {
- "node": ">=0.8"
- }
- },
- "node_modules/tr46": {
- "version": "0.0.3",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/trim-newlines": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz",
- "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/tunnel-agent": {
- "version": "0.6.0",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "safe-buffer": "^5.0.1"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/tweetnacl": {
- "version": "0.14.5",
- "dev": true,
- "license": "Unlicense"
- },
- "node_modules/typed-array-buffer": {
- "version": "1.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.2",
- "get-intrinsic": "^1.2.1",
- "is-typed-array": "^1.1.10"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/typed-array-byte-length": {
- "version": "1.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.2",
- "for-each": "^0.3.3",
- "has-proto": "^1.0.1",
- "is-typed-array": "^1.1.10"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/typed-array-byte-offset": {
- "version": "1.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "available-typed-arrays": "^1.0.5",
- "call-bind": "^1.0.2",
- "for-each": "^0.3.3",
- "has-proto": "^1.0.1",
- "is-typed-array": "^1.1.10"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/typed-array-length": {
- "version": "1.0.4",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.2",
- "for-each": "^0.3.3",
- "is-typed-array": "^1.1.9"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/typedarray": {
- "version": "0.0.6",
- "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
- "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==",
- "dev": true
- },
- "node_modules/uglify-js": {
- "version": "3.17.4",
- "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz",
- "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==",
- "dev": true,
- "optional": true,
- "bin": {
- "uglifyjs": "bin/uglifyjs"
- },
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/uid-number": {
- "version": "0.0.6",
- "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz",
- "integrity": "sha512-c461FXIljswCuscZn67xq9PpszkPT6RjheWFQTgCyabJrTUozElanb0YEqv2UGgk247YpcJkFBuSGNvBlpXM9w==",
- "dev": true,
- "engines": {
- "node": "*"
- }
- },
- "node_modules/umask": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/umask/-/umask-1.1.0.tgz",
- "integrity": "sha512-lE/rxOhmiScJu9L6RTNVgB/zZbF+vGC0/p6D3xnkAePI2o0sMyFG966iR5Ki50OI/0mNi2yaRnxfLsPmEZF/JA==",
- "dev": true
- },
- "node_modules/unbox-primitive": {
- "version": "1.0.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "call-bind": "^1.0.2",
- "has-bigints": "^1.0.2",
- "has-symbols": "^1.0.3",
- "which-boxed-primitive": "^1.0.2"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/underscore": {
- "version": "1.4.4",
- "dev": true
- },
- "node_modules/union-value": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz",
- "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==",
- "dev": true,
- "dependencies": {
- "arr-union": "^3.1.0",
- "get-value": "^2.0.6",
- "is-extendable": "^0.1.1",
- "set-value": "^2.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/union-value/node_modules/is-extendable": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
- "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/unique-filename": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz",
- "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==",
- "dev": true,
- "dependencies": {
- "unique-slug": "^2.0.0"
- }
- },
- "node_modules/unique-slug": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz",
- "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==",
- "dev": true,
- "dependencies": {
- "imurmurhash": "^0.1.4"
- }
- },
- "node_modules/universal-user-agent": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-4.0.1.tgz",
- "integrity": "sha512-LnST3ebHwVL2aNe4mejI9IQh2HfZ1RLo8Io2HugSif8ekzD1TlWpHpColOB/eh8JHMLkGH3Akqf040I+4ylNxg==",
- "dev": true,
- "dependencies": {
- "os-name": "^3.1.0"
- }
- },
- "node_modules/unset-value": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
- "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==",
- "dev": true,
- "dependencies": {
- "has-value": "^0.3.1",
- "isobject": "^3.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/unset-value/node_modules/has-value": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
- "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==",
- "dev": true,
- "dependencies": {
- "get-value": "^2.0.3",
- "has-values": "^0.1.4",
- "isobject": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/unset-value/node_modules/has-value/node_modules/isobject": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
- "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==",
- "dev": true,
- "dependencies": {
- "isarray": "1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/unset-value/node_modules/has-values": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
- "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/upath": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz",
- "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==",
- "dev": true,
- "engines": {
- "node": ">=4",
- "yarn": "*"
- }
- },
- "node_modules/uri-js": {
- "version": "4.4.1",
- "dev": true,
- "license": "BSD-2-Clause",
- "dependencies": {
- "punycode": "^2.1.0"
- }
- },
- "node_modules/urix": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
- "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==",
- "deprecated": "Please see https://github.com/lydell/urix#deprecated",
- "dev": true
- },
- "node_modules/use": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
- "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/util-deprecate": {
- "version": "1.0.2",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/util-promisify": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/util-promisify/-/util-promisify-2.1.0.tgz",
- "integrity": "sha512-K+5eQPYs14b3+E+hmE2J6gCZ4JmMl9DbYS6BeP2CHq6WMuNxErxf5B/n0fz85L8zUuoO6rIzNNmIQDu/j+1OcA==",
- "dev": true,
- "dependencies": {
- "object.getownpropertydescriptors": "^2.0.3"
- }
- },
- "node_modules/uuid": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
- "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
- "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.",
- "dev": true,
- "bin": {
- "uuid": "bin/uuid"
- }
- },
- "node_modules/validate-npm-package-license": {
- "version": "3.0.4",
- "dev": true,
- "license": "Apache-2.0",
- "dependencies": {
- "spdx-correct": "^3.0.0",
- "spdx-expression-parse": "^3.0.0"
- }
- },
- "node_modules/validate-npm-package-name": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz",
- "integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==",
- "dev": true,
- "dependencies": {
- "builtins": "^1.0.3"
- }
- },
- "node_modules/verror": {
- "version": "1.10.0",
- "dev": true,
- "engines": [
- "node >=0.6.0"
- ],
- "license": "MIT",
- "dependencies": {
- "assert-plus": "^1.0.0",
- "core-util-is": "1.0.2",
- "extsprintf": "^1.2.0"
- }
- },
- "node_modules/wcwidth": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz",
- "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==",
- "dev": true,
- "dependencies": {
- "defaults": "^1.0.3"
- }
- },
- "node_modules/webidl-conversions": {
- "version": "3.0.1",
- "dev": true,
- "license": "BSD-2-Clause"
- },
- "node_modules/whatwg-url": {
- "version": "5.0.0",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "tr46": "~0.0.3",
- "webidl-conversions": "^3.0.0"
- }
- },
- "node_modules/which": {
- "version": "1.3.1",
- "dev": true,
- "license": "ISC",
- "dependencies": {
- "isexe": "^2.0.0"
- },
- "bin": {
- "which": "bin/which"
- }
- },
- "node_modules/which-boxed-primitive": {
- "version": "1.0.2",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "is-bigint": "^1.0.1",
- "is-boolean-object": "^1.1.0",
- "is-number-object": "^1.0.4",
- "is-string": "^1.0.5",
- "is-symbol": "^1.0.3"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/which-module": {
- "version": "2.0.1",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/which-typed-array": {
- "version": "1.1.11",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "available-typed-arrays": "^1.0.5",
- "call-bind": "^1.0.2",
- "for-each": "^0.3.3",
- "gopd": "^1.0.1",
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/wide-align": {
- "version": "1.1.5",
- "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz",
- "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==",
- "dev": true,
- "dependencies": {
- "string-width": "^1.0.2 || 2 || 3 || 4"
- }
- },
- "node_modules/windows-release": {
- "version": "3.3.3",
- "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-3.3.3.tgz",
- "integrity": "sha512-OSOGH1QYiW5yVor9TtmXKQvt2vjQqbYS+DqmsZw+r7xDwLXEeT3JGW0ZppFmHx4diyXmxt238KFR3N9jzevBRg==",
- "dev": true,
- "dependencies": {
- "execa": "^1.0.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/wordwrap": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
- "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==",
- "dev": true
- },
- "node_modules/wrappy": {
- "version": "1.0.2",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/write-file-atomic": {
- "version": "2.4.3",
- "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz",
- "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==",
- "dev": true,
- "dependencies": {
- "graceful-fs": "^4.1.11",
- "imurmurhash": "^0.1.4",
- "signal-exit": "^3.0.2"
- }
- },
- "node_modules/write-json-file": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/write-json-file/-/write-json-file-3.2.0.tgz",
- "integrity": "sha512-3xZqT7Byc2uORAatYiP3DHUUAVEkNOswEWNs9H5KXiicRTvzYzYqKjYc4G7p+8pltvAw641lVByKVtMpf+4sYQ==",
- "dev": true,
- "dependencies": {
- "detect-indent": "^5.0.0",
- "graceful-fs": "^4.1.15",
- "make-dir": "^2.1.0",
- "pify": "^4.0.1",
- "sort-keys": "^2.0.0",
- "write-file-atomic": "^2.4.2"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/write-json-file/node_modules/make-dir": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
- "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
- "dev": true,
- "dependencies": {
- "pify": "^4.0.1",
- "semver": "^5.6.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/write-json-file/node_modules/semver": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
- "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
- "dev": true,
- "bin": {
- "semver": "bin/semver"
- }
- },
- "node_modules/write-pkg": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/write-pkg/-/write-pkg-3.2.0.tgz",
- "integrity": "sha512-tX2ifZ0YqEFOF1wjRW2Pk93NLsj02+n1UP5RvO6rCs0K6R2g1padvf006cY74PQJKMGS2r42NK7FD0dG6Y6paw==",
- "dev": true,
- "dependencies": {
- "sort-keys": "^2.0.0",
- "write-json-file": "^2.2.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/write-pkg/node_modules/make-dir": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz",
- "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==",
- "dev": true,
- "dependencies": {
- "pify": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/write-pkg/node_modules/pify": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
- "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/write-pkg/node_modules/write-json-file": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/write-json-file/-/write-json-file-2.3.0.tgz",
- "integrity": "sha512-84+F0igFp2dPD6UpAQjOUX3CdKUOqUzn6oE9sDBNzUXINR5VceJ1rauZltqQB/bcYsx3EpKys4C7/PivKUAiWQ==",
- "dev": true,
- "dependencies": {
- "detect-indent": "^5.0.0",
- "graceful-fs": "^4.1.2",
- "make-dir": "^1.0.0",
- "pify": "^3.0.0",
- "sort-keys": "^2.0.0",
- "write-file-atomic": "^2.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/xtend": {
- "version": "4.0.2",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=0.4"
- }
- },
- "node_modules/y18n": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
- "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==",
- "dev": true
- },
- "node_modules/yallist": {
- "version": "4.0.0",
- "dev": true,
- "license": "ISC"
- },
- "node_modules/yargs": {
- "version": "14.2.3",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-14.2.3.tgz",
- "integrity": "sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg==",
- "dev": true,
- "dependencies": {
- "cliui": "^5.0.0",
- "decamelize": "^1.2.0",
- "find-up": "^3.0.0",
- "get-caller-file": "^2.0.1",
- "require-directory": "^2.1.1",
- "require-main-filename": "^2.0.0",
- "set-blocking": "^2.0.0",
- "string-width": "^3.0.0",
- "which-module": "^2.0.0",
- "y18n": "^4.0.0",
- "yargs-parser": "^15.0.1"
- }
- },
- "node_modules/yargs-parser": {
- "version": "20.2.9",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
- "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
- "dev": true,
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/yargs/node_modules/ansi-regex": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
- "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/yargs/node_modules/emoji-regex": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
- "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
- "dev": true
- },
- "node_modules/yargs/node_modules/find-up": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
- "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
- "dev": true,
- "dependencies": {
- "locate-path": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/yargs/node_modules/is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/yargs/node_modules/locate-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
- "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
- "dev": true,
- "dependencies": {
- "p-locate": "^3.0.0",
- "path-exists": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/yargs/node_modules/p-locate": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
- "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
- "dev": true,
- "dependencies": {
- "p-limit": "^2.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/yargs/node_modules/path-exists": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/yargs/node_modules/string-width": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
- "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
- "dev": true,
- "dependencies": {
- "emoji-regex": "^7.0.1",
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^5.1.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/yargs/node_modules/strip-ansi": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
- "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
- "dev": true,
- "dependencies": {
- "ansi-regex": "^4.1.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/yargs/node_modules/yargs-parser": {
- "version": "15.0.3",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.3.tgz",
- "integrity": "sha512-/MVEVjTXy/cGAjdtQf8dW3V9b97bPN7rNn8ETj6BmAQL7ibC7O1Q9SPJbGjgh3SlwoBNXMzj/ZGIj8mBgl12YA==",
- "dev": true,
- "dependencies": {
- "camelcase": "^5.0.0",
- "decamelize": "^1.2.0"
- }
- },
- "packages/less": {
- "version": "4.2.0",
- "extraneous": true,
- "license": "Apache-2.0",
- "dependencies": {
- "copy-anything": "^2.0.1",
- "parse-node-version": "^1.0.1",
- "tslib": "^2.3.0"
- },
- "bin": {
- "lessc": "bin/lessc"
- },
- "devDependencies": {
- "@less/test-data": "^4.2.0",
- "@less/test-import-module": "^4.0.0",
- "@rollup/plugin-commonjs": "^17.0.0",
- "@rollup/plugin-json": "^4.1.0",
- "@rollup/plugin-node-resolve": "^11.0.0",
- "@typescript-eslint/eslint-plugin": "^4.28.0",
- "@typescript-eslint/parser": "^4.28.0",
- "benny": "^3.6.12",
- "bootstrap-less-port": "0.3.0",
- "chai": "^4.2.0",
- "cross-env": "^7.0.3",
- "diff": "^3.2.0",
- "eslint": "^7.29.0",
- "fs-extra": "^8.1.0",
- "git-rev": "^0.2.1",
- "globby": "^10.0.1",
- "grunt": "^1.0.4",
- "grunt-cli": "^1.3.2",
- "grunt-contrib-clean": "^1.0.0",
- "grunt-contrib-connect": "^1.0.2",
- "grunt-eslint": "^23.0.0",
- "grunt-saucelabs": "^9.0.1",
- "grunt-shell": "^1.3.0",
- "html-template-tag": "^3.2.0",
- "jit-grunt": "^0.10.0",
- "less-plugin-autoprefix": "^1.5.1",
- "less-plugin-clean-css": "^1.5.1",
- "minimist": "^1.2.0",
- "mocha": "^6.2.1",
- "mocha-headless-chrome": "^4.0.0",
- "mocha-teamcity-reporter": "^3.0.0",
- "nock": "^11.8.2",
- "npm-run-all": "^4.1.5",
- "performance-now": "^0.2.0",
- "phin": "^2.2.3",
- "promise": "^7.1.1",
- "read-glob": "^3.0.0",
- "resolve": "^1.17.0",
- "rollup": "^2.52.2",
- "rollup-plugin-terser": "^5.1.1",
- "rollup-plugin-typescript2": "^0.29.0",
- "semver": "^6.3.0",
- "shx": "^0.3.2",
- "time-grunt": "^1.3.0",
- "ts-node": "^10.9.1",
- "typescript": "^4.3.4",
- "uikit": "2.27.4"
- },
- "engines": {
- "node": ">=6"
- },
- "optionalDependencies": {
- "errno": "^0.1.1",
- "graceful-fs": "^4.1.2",
- "image-size": "~0.5.0",
- "make-dir": "^2.1.0",
- "mime": "^1.4.1",
- "needle": "^3.1.0",
- "source-map": "~0.6.0"
- }
- },
- "packages/test-data": {
- "name": "@less/test-data",
- "version": "4.2.0",
- "extraneous": true,
- "license": "Apache-2.0"
- },
- "packages/test-import-module": {
- "name": "@less/test-import-module",
- "version": "4.0.0",
- "extraneous": true,
- "license": "Apache-2.0"
- }
- },
- "dependencies": {
- "@babel/code-frame": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/highlight": "^7.22.5"
- }
- },
- "@babel/helper-validator-identifier": {
- "version": "7.22.5",
- "dev": true
- },
- "@babel/highlight": {
- "version": "7.22.5",
- "dev": true,
- "requires": {
- "@babel/helper-validator-identifier": "^7.22.5",
- "chalk": "^2.0.0",
- "js-tokens": "^4.0.0"
- }
- },
- "@evocateur/libnpmaccess": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/@evocateur/libnpmaccess/-/libnpmaccess-3.1.2.tgz",
- "integrity": "sha512-KSCAHwNWro0CF2ukxufCitT9K5LjL/KuMmNzSu8wuwN2rjyKHD8+cmOsiybK+W5hdnwc5M1SmRlVCaMHQo+3rg==",
- "dev": true,
- "requires": {
- "@evocateur/npm-registry-fetch": "^4.0.0",
- "aproba": "^2.0.0",
- "figgy-pudding": "^3.5.1",
- "get-stream": "^4.0.0",
- "npm-package-arg": "^6.1.0"
- }
- },
- "@evocateur/libnpmpublish": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/@evocateur/libnpmpublish/-/libnpmpublish-1.2.2.tgz",
- "integrity": "sha512-MJrrk9ct1FeY9zRlyeoyMieBjGDG9ihyyD9/Ft6MMrTxql9NyoEx2hw9casTIP4CdqEVu+3nQ2nXxoJ8RCXyFg==",
- "dev": true,
- "requires": {
- "@evocateur/npm-registry-fetch": "^4.0.0",
- "aproba": "^2.0.0",
- "figgy-pudding": "^3.5.1",
- "get-stream": "^4.0.0",
- "lodash.clonedeep": "^4.5.0",
- "normalize-package-data": "^2.4.0",
- "npm-package-arg": "^6.1.0",
- "semver": "^5.5.1",
- "ssri": "^6.0.1"
- },
- "dependencies": {
- "semver": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
- "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
- "dev": true
- }
- }
- },
- "@evocateur/npm-registry-fetch": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/@evocateur/npm-registry-fetch/-/npm-registry-fetch-4.0.0.tgz",
- "integrity": "sha512-k1WGfKRQyhJpIr+P17O5vLIo2ko1PFLKwoetatdduUSt/aQ4J2sJrJwwatdI5Z3SiYk/mRH9S3JpdmMFd/IK4g==",
- "dev": true,
- "requires": {
- "bluebird": "^3.5.1",
- "figgy-pudding": "^3.4.1",
- "JSONStream": "^1.3.4",
- "lru-cache": "^5.1.1",
- "make-fetch-happen": "^5.0.0",
- "npm-package-arg": "^6.1.0",
- "safe-buffer": "^5.1.2"
- }
- },
- "@evocateur/pacote": {
- "version": "9.6.5",
- "resolved": "https://registry.npmjs.org/@evocateur/pacote/-/pacote-9.6.5.tgz",
- "integrity": "sha512-EI552lf0aG2nOV8NnZpTxNo2PcXKPmDbF9K8eCBFQdIZwHNGN/mi815fxtmUMa2wTa1yndotICIDt/V0vpEx2w==",
- "dev": true,
- "requires": {
- "@evocateur/npm-registry-fetch": "^4.0.0",
- "bluebird": "^3.5.3",
- "cacache": "^12.0.3",
- "chownr": "^1.1.2",
- "figgy-pudding": "^3.5.1",
- "get-stream": "^4.1.0",
- "glob": "^7.1.4",
- "infer-owner": "^1.0.4",
- "lru-cache": "^5.1.1",
- "make-fetch-happen": "^5.0.0",
- "minimatch": "^3.0.4",
- "minipass": "^2.3.5",
- "mississippi": "^3.0.0",
- "mkdirp": "^0.5.1",
- "normalize-package-data": "^2.5.0",
- "npm-package-arg": "^6.1.0",
- "npm-packlist": "^1.4.4",
- "npm-pick-manifest": "^3.0.0",
- "osenv": "^0.1.5",
- "promise-inflight": "^1.0.1",
- "promise-retry": "^1.1.1",
- "protoduck": "^5.0.1",
- "rimraf": "^2.6.3",
- "safe-buffer": "^5.2.0",
- "semver": "^5.7.0",
- "ssri": "^6.0.1",
- "tar": "^4.4.10",
- "unique-filename": "^1.1.1",
- "which": "^1.3.1"
- },
- "dependencies": {
- "rimraf": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
- "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
- "dev": true,
- "requires": {
- "glob": "^7.1.3"
- }
- },
- "semver": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
- "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
- "dev": true
- }
- }
- },
- "@lerna/add": {
- "version": "3.21.0",
- "resolved": "https://registry.npmjs.org/@lerna/add/-/add-3.21.0.tgz",
- "integrity": "sha512-vhUXXF6SpufBE1EkNEXwz1VLW03f177G9uMOFMQkp6OJ30/PWg4Ekifuz9/3YfgB2/GH8Tu4Lk3O51P2Hskg/A==",
- "dev": true,
- "requires": {
- "@evocateur/pacote": "^9.6.3",
- "@lerna/bootstrap": "3.21.0",
- "@lerna/command": "3.21.0",
- "@lerna/filter-options": "3.20.0",
- "@lerna/npm-conf": "3.16.0",
- "@lerna/validation-error": "3.13.0",
- "dedent": "^0.7.0",
- "npm-package-arg": "^6.1.0",
- "p-map": "^2.1.0",
- "semver": "^6.2.0"
- },
- "dependencies": {
- "semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true
- }
- }
- },
- "@lerna/bootstrap": {
- "version": "3.21.0",
- "resolved": "https://registry.npmjs.org/@lerna/bootstrap/-/bootstrap-3.21.0.tgz",
- "integrity": "sha512-mtNHlXpmvJn6JTu0KcuTTPl2jLsDNud0QacV/h++qsaKbhAaJr/FElNZ5s7MwZFUM3XaDmvWzHKaszeBMHIbBw==",
- "dev": true,
- "requires": {
- "@lerna/command": "3.21.0",
- "@lerna/filter-options": "3.20.0",
- "@lerna/has-npm-version": "3.16.5",
- "@lerna/npm-install": "3.16.5",
- "@lerna/package-graph": "3.18.5",
- "@lerna/pulse-till-done": "3.13.0",
- "@lerna/rimraf-dir": "3.16.5",
- "@lerna/run-lifecycle": "3.16.2",
- "@lerna/run-topologically": "3.18.5",
- "@lerna/symlink-binary": "3.17.0",
- "@lerna/symlink-dependencies": "3.17.0",
- "@lerna/validation-error": "3.13.0",
- "dedent": "^0.7.0",
- "get-port": "^4.2.0",
- "multimatch": "^3.0.0",
- "npm-package-arg": "^6.1.0",
- "npmlog": "^4.1.2",
- "p-finally": "^1.0.0",
- "p-map": "^2.1.0",
- "p-map-series": "^1.0.0",
- "p-waterfall": "^1.0.0",
- "read-package-tree": "^5.1.6",
- "semver": "^6.2.0"
- },
- "dependencies": {
- "semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true
- }
- }
- },
- "@lerna/changed": {
- "version": "3.21.0",
- "resolved": "https://registry.npmjs.org/@lerna/changed/-/changed-3.21.0.tgz",
- "integrity": "sha512-hzqoyf8MSHVjZp0gfJ7G8jaz+++mgXYiNs9iViQGA8JlN/dnWLI5sWDptEH3/B30Izo+fdVz0S0s7ydVE3pWIw==",
- "dev": true,
- "requires": {
- "@lerna/collect-updates": "3.20.0",
- "@lerna/command": "3.21.0",
- "@lerna/listable": "3.18.5",
- "@lerna/output": "3.13.0"
- }
- },
- "@lerna/check-working-tree": {
- "version": "3.16.5",
- "resolved": "https://registry.npmjs.org/@lerna/check-working-tree/-/check-working-tree-3.16.5.tgz",
- "integrity": "sha512-xWjVBcuhvB8+UmCSb5tKVLB5OuzSpw96WEhS2uz6hkWVa/Euh1A0/HJwn2cemyK47wUrCQXtczBUiqnq9yX5VQ==",
- "dev": true,
- "requires": {
- "@lerna/collect-uncommitted": "3.16.5",
- "@lerna/describe-ref": "3.16.5",
- "@lerna/validation-error": "3.13.0"
- }
- },
- "@lerna/child-process": {
- "version": "3.16.5",
- "resolved": "https://registry.npmjs.org/@lerna/child-process/-/child-process-3.16.5.tgz",
- "integrity": "sha512-vdcI7mzei9ERRV4oO8Y1LHBZ3A5+ampRKg1wq5nutLsUA4mEBN6H7JqjWOMY9xZemv6+kATm2ofjJ3lW5TszQg==",
- "dev": true,
- "requires": {
- "chalk": "^2.3.1",
- "execa": "^1.0.0",
- "strong-log-transformer": "^2.0.0"
- }
- },
- "@lerna/clean": {
- "version": "3.21.0",
- "resolved": "https://registry.npmjs.org/@lerna/clean/-/clean-3.21.0.tgz",
- "integrity": "sha512-b/L9l+MDgE/7oGbrav6rG8RTQvRiZLO1zTcG17zgJAAuhlsPxJExMlh2DFwJEVi2les70vMhHfST3Ue1IMMjpg==",
- "dev": true,
- "requires": {
- "@lerna/command": "3.21.0",
- "@lerna/filter-options": "3.20.0",
- "@lerna/prompt": "3.18.5",
- "@lerna/pulse-till-done": "3.13.0",
- "@lerna/rimraf-dir": "3.16.5",
- "p-map": "^2.1.0",
- "p-map-series": "^1.0.0",
- "p-waterfall": "^1.0.0"
- }
- },
- "@lerna/cli": {
- "version": "3.18.5",
- "resolved": "https://registry.npmjs.org/@lerna/cli/-/cli-3.18.5.tgz",
- "integrity": "sha512-erkbxkj9jfc89vVs/jBLY/fM0I80oLmJkFUV3Q3wk9J3miYhP14zgVEBsPZY68IZlEjT6T3Xlq2xO1AVaatHsA==",
- "dev": true,
- "requires": {
- "@lerna/global-options": "3.13.0",
- "dedent": "^0.7.0",
- "npmlog": "^4.1.2",
- "yargs": "^14.2.2"
- }
- },
- "@lerna/collect-uncommitted": {
- "version": "3.16.5",
- "resolved": "https://registry.npmjs.org/@lerna/collect-uncommitted/-/collect-uncommitted-3.16.5.tgz",
- "integrity": "sha512-ZgqnGwpDZiWyzIQVZtQaj9tRizsL4dUOhuOStWgTAw1EMe47cvAY2kL709DzxFhjr6JpJSjXV5rZEAeU3VE0Hg==",
- "dev": true,
- "requires": {
- "@lerna/child-process": "3.16.5",
- "chalk": "^2.3.1",
- "figgy-pudding": "^3.5.1",
- "npmlog": "^4.1.2"
- }
- },
- "@lerna/collect-updates": {
- "version": "3.20.0",
- "resolved": "https://registry.npmjs.org/@lerna/collect-updates/-/collect-updates-3.20.0.tgz",
- "integrity": "sha512-qBTVT5g4fupVhBFuY4nI/3FSJtQVcDh7/gEPOpRxoXB/yCSnT38MFHXWl+y4einLciCjt/+0x6/4AG80fjay2Q==",
- "dev": true,
- "requires": {
- "@lerna/child-process": "3.16.5",
- "@lerna/describe-ref": "3.16.5",
- "minimatch": "^3.0.4",
- "npmlog": "^4.1.2",
- "slash": "^2.0.0"
- },
- "dependencies": {
- "slash": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
- "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
- "dev": true
- }
- }
- },
- "@lerna/command": {
- "version": "3.21.0",
- "resolved": "https://registry.npmjs.org/@lerna/command/-/command-3.21.0.tgz",
- "integrity": "sha512-T2bu6R8R3KkH5YoCKdutKv123iUgUbW8efVjdGCDnCMthAQzoentOJfDeodBwn0P2OqCl3ohsiNVtSn9h78fyQ==",
- "dev": true,
- "requires": {
- "@lerna/child-process": "3.16.5",
- "@lerna/package-graph": "3.18.5",
- "@lerna/project": "3.21.0",
- "@lerna/validation-error": "3.13.0",
- "@lerna/write-log-file": "3.13.0",
- "clone-deep": "^4.0.1",
- "dedent": "^0.7.0",
- "execa": "^1.0.0",
- "is-ci": "^2.0.0",
- "npmlog": "^4.1.2"
- }
- },
- "@lerna/conventional-commits": {
- "version": "3.22.0",
- "resolved": "https://registry.npmjs.org/@lerna/conventional-commits/-/conventional-commits-3.22.0.tgz",
- "integrity": "sha512-z4ZZk1e8Mhz7+IS8NxHr64wyklHctCJyWpJKEZZPJiLFJ8yKto/x38O80R10pIzC0rr8Sy/OsjSH4bl0TbbgqA==",
- "dev": true,
- "requires": {
- "@lerna/validation-error": "3.13.0",
- "conventional-changelog-angular": "^5.0.3",
- "conventional-changelog-core": "^3.1.6",
- "conventional-recommended-bump": "^5.0.0",
- "fs-extra": "^8.1.0",
- "get-stream": "^4.0.0",
- "lodash.template": "^4.5.0",
- "npm-package-arg": "^6.1.0",
- "npmlog": "^4.1.2",
- "pify": "^4.0.1",
- "semver": "^6.2.0"
- },
- "dependencies": {
- "semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true
- }
- }
- },
- "@lerna/create": {
- "version": "3.22.0",
- "resolved": "https://registry.npmjs.org/@lerna/create/-/create-3.22.0.tgz",
- "integrity": "sha512-MdiQQzCcB4E9fBF1TyMOaAEz9lUjIHp1Ju9H7f3lXze5JK6Fl5NYkouAvsLgY6YSIhXMY8AHW2zzXeBDY4yWkw==",
- "dev": true,
- "requires": {
- "@evocateur/pacote": "^9.6.3",
- "@lerna/child-process": "3.16.5",
- "@lerna/command": "3.21.0",
- "@lerna/npm-conf": "3.16.0",
- "@lerna/validation-error": "3.13.0",
- "camelcase": "^5.0.0",
- "dedent": "^0.7.0",
- "fs-extra": "^8.1.0",
- "globby": "^9.2.0",
- "init-package-json": "^1.10.3",
- "npm-package-arg": "^6.1.0",
- "p-reduce": "^1.0.0",
- "pify": "^4.0.1",
- "semver": "^6.2.0",
- "slash": "^2.0.0",
- "validate-npm-package-license": "^3.0.3",
- "validate-npm-package-name": "^3.0.0",
- "whatwg-url": "^7.0.0"
- },
- "dependencies": {
- "@nodelib/fs.stat": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz",
- "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==",
- "dev": true
- },
- "array-union": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
- "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==",
- "dev": true,
- "requires": {
- "array-uniq": "^1.0.1"
- }
- },
- "braces": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
- "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
- "dev": true,
- "requires": {
- "arr-flatten": "^1.1.0",
- "array-unique": "^0.3.2",
- "extend-shallow": "^2.0.1",
- "fill-range": "^4.0.0",
- "isobject": "^3.0.1",
- "repeat-element": "^1.1.2",
- "snapdragon": "^0.8.1",
- "snapdragon-node": "^2.0.1",
- "split-string": "^3.0.2",
- "to-regex": "^3.0.1"
- },
- "dependencies": {
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- }
- }
- },
- "dir-glob": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz",
- "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==",
- "dev": true,
- "requires": {
- "path-type": "^3.0.0"
- }
- },
- "fast-glob": {
- "version": "2.2.7",
- "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz",
- "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==",
- "dev": true,
- "requires": {
- "@mrmlnc/readdir-enhanced": "^2.2.1",
- "@nodelib/fs.stat": "^1.1.2",
- "glob-parent": "^3.1.0",
- "is-glob": "^4.0.0",
- "merge2": "^1.2.3",
- "micromatch": "^3.1.10"
- }
- },
- "fill-range": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
- "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==",
- "dev": true,
- "requires": {
- "extend-shallow": "^2.0.1",
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1",
- "to-regex-range": "^2.1.0"
- },
- "dependencies": {
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- }
- }
- },
- "glob-parent": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
- "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==",
- "dev": true,
- "requires": {
- "is-glob": "^3.1.0",
- "path-dirname": "^1.0.0"
- },
- "dependencies": {
- "is-glob": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
- "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==",
- "dev": true,
- "requires": {
- "is-extglob": "^2.1.0"
- }
- }
- }
- },
- "globby": {
- "version": "9.2.0",
- "resolved": "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz",
- "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==",
- "dev": true,
- "requires": {
- "@types/glob": "^7.1.1",
- "array-union": "^1.0.2",
- "dir-glob": "^2.2.2",
- "fast-glob": "^2.2.6",
- "glob": "^7.1.3",
- "ignore": "^4.0.3",
- "pify": "^4.0.1",
- "slash": "^2.0.0"
- }
- },
- "ignore": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
- "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
- "dev": true
- },
- "is-buffer": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
- "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
- "dev": true
- },
- "is-extendable": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
- "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
- "dev": true
- },
- "is-number": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
- "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "micromatch": {
- "version": "3.1.10",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
- "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
- "dev": true,
- "requires": {
- "arr-diff": "^4.0.0",
- "array-unique": "^0.3.2",
- "braces": "^2.3.1",
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "extglob": "^2.0.4",
- "fragment-cache": "^0.2.1",
- "kind-of": "^6.0.2",
- "nanomatch": "^1.2.9",
- "object.pick": "^1.3.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.2"
- }
- },
- "semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true
- },
- "slash": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
- "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
- "dev": true
- },
- "to-regex-range": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
- "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==",
- "dev": true,
- "requires": {
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1"
- }
- },
- "tr46": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz",
- "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==",
- "dev": true,
- "requires": {
- "punycode": "^2.1.0"
- }
- },
- "webidl-conversions": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz",
- "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==",
- "dev": true
- },
- "whatwg-url": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz",
- "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==",
- "dev": true,
- "requires": {
- "lodash.sortby": "^4.7.0",
- "tr46": "^1.0.1",
- "webidl-conversions": "^4.0.2"
- }
- }
- }
- },
- "@lerna/create-symlink": {
- "version": "3.16.2",
- "resolved": "https://registry.npmjs.org/@lerna/create-symlink/-/create-symlink-3.16.2.tgz",
- "integrity": "sha512-pzXIJp6av15P325sgiIRpsPXLFmkisLhMBCy4764d+7yjf2bzrJ4gkWVMhsv4AdF0NN3OyZ5jjzzTtLNqfR+Jw==",
- "dev": true,
- "requires": {
- "@zkochan/cmd-shim": "^3.1.0",
- "fs-extra": "^8.1.0",
- "npmlog": "^4.1.2"
- }
- },
- "@lerna/describe-ref": {
- "version": "3.16.5",
- "resolved": "https://registry.npmjs.org/@lerna/describe-ref/-/describe-ref-3.16.5.tgz",
- "integrity": "sha512-c01+4gUF0saOOtDBzbLMFOTJDHTKbDFNErEY6q6i9QaXuzy9LNN62z+Hw4acAAZuJQhrVWncVathcmkkjvSVGw==",
- "dev": true,
- "requires": {
- "@lerna/child-process": "3.16.5",
- "npmlog": "^4.1.2"
- }
- },
- "@lerna/diff": {
- "version": "3.21.0",
- "resolved": "https://registry.npmjs.org/@lerna/diff/-/diff-3.21.0.tgz",
- "integrity": "sha512-5viTR33QV3S7O+bjruo1SaR40m7F2aUHJaDAC7fL9Ca6xji+aw1KFkpCtVlISS0G8vikUREGMJh+c/VMSc8Usw==",
- "dev": true,
- "requires": {
- "@lerna/child-process": "3.16.5",
- "@lerna/command": "3.21.0",
- "@lerna/validation-error": "3.13.0",
- "npmlog": "^4.1.2"
- }
- },
- "@lerna/exec": {
- "version": "3.21.0",
- "resolved": "https://registry.npmjs.org/@lerna/exec/-/exec-3.21.0.tgz",
- "integrity": "sha512-iLvDBrIE6rpdd4GIKTY9mkXyhwsJ2RvQdB9ZU+/NhR3okXfqKc6py/24tV111jqpXTtZUW6HNydT4dMao2hi1Q==",
- "dev": true,
- "requires": {
- "@lerna/child-process": "3.16.5",
- "@lerna/command": "3.21.0",
- "@lerna/filter-options": "3.20.0",
- "@lerna/profiler": "3.20.0",
- "@lerna/run-topologically": "3.18.5",
- "@lerna/validation-error": "3.13.0",
- "p-map": "^2.1.0"
- }
- },
- "@lerna/filter-options": {
- "version": "3.20.0",
- "resolved": "https://registry.npmjs.org/@lerna/filter-options/-/filter-options-3.20.0.tgz",
- "integrity": "sha512-bmcHtvxn7SIl/R9gpiNMVG7yjx7WyT0HSGw34YVZ9B+3xF/83N3r5Rgtjh4hheLZ+Q91Or0Jyu5O3Nr+AwZe2g==",
- "dev": true,
- "requires": {
- "@lerna/collect-updates": "3.20.0",
- "@lerna/filter-packages": "3.18.0",
- "dedent": "^0.7.0",
- "figgy-pudding": "^3.5.1",
- "npmlog": "^4.1.2"
- }
- },
- "@lerna/filter-packages": {
- "version": "3.18.0",
- "resolved": "https://registry.npmjs.org/@lerna/filter-packages/-/filter-packages-3.18.0.tgz",
- "integrity": "sha512-6/0pMM04bCHNATIOkouuYmPg6KH3VkPCIgTfQmdkPJTullERyEQfNUKikrefjxo1vHOoCACDpy65JYyKiAbdwQ==",
- "dev": true,
- "requires": {
- "@lerna/validation-error": "3.13.0",
- "multimatch": "^3.0.0",
- "npmlog": "^4.1.2"
- }
- },
- "@lerna/get-npm-exec-opts": {
- "version": "3.13.0",
- "resolved": "https://registry.npmjs.org/@lerna/get-npm-exec-opts/-/get-npm-exec-opts-3.13.0.tgz",
- "integrity": "sha512-Y0xWL0rg3boVyJk6An/vurKzubyJKtrxYv2sj4bB8Mc5zZ3tqtv0ccbOkmkXKqbzvNNF7VeUt1OJ3DRgtC/QZw==",
- "dev": true,
- "requires": {
- "npmlog": "^4.1.2"
- }
- },
- "@lerna/get-packed": {
- "version": "3.16.0",
- "resolved": "https://registry.npmjs.org/@lerna/get-packed/-/get-packed-3.16.0.tgz",
- "integrity": "sha512-AjsFiaJzo1GCPnJUJZiTW6J1EihrPkc2y3nMu6m3uWFxoleklsSCyImumzVZJssxMi3CPpztj8LmADLedl9kXw==",
- "dev": true,
- "requires": {
- "fs-extra": "^8.1.0",
- "ssri": "^6.0.1",
- "tar": "^4.4.8"
- }
- },
- "@lerna/github-client": {
- "version": "3.22.0",
- "resolved": "https://registry.npmjs.org/@lerna/github-client/-/github-client-3.22.0.tgz",
- "integrity": "sha512-O/GwPW+Gzr3Eb5bk+nTzTJ3uv+jh5jGho9BOqKlajXaOkMYGBELEAqV5+uARNGWZFvYAiF4PgqHb6aCUu7XdXg==",
- "dev": true,
- "requires": {
- "@lerna/child-process": "3.16.5",
- "@octokit/plugin-enterprise-rest": "^6.0.1",
- "@octokit/rest": "^16.28.4",
- "git-url-parse": "^11.1.2",
- "npmlog": "^4.1.2"
- }
- },
- "@lerna/gitlab-client": {
- "version": "3.15.0",
- "resolved": "https://registry.npmjs.org/@lerna/gitlab-client/-/gitlab-client-3.15.0.tgz",
- "integrity": "sha512-OsBvRSejHXUBMgwWQqNoioB8sgzL/Pf1pOUhHKtkiMl6aAWjklaaq5HPMvTIsZPfS6DJ9L5OK2GGZuooP/5c8Q==",
- "dev": true,
- "requires": {
- "node-fetch": "^2.5.0",
- "npmlog": "^4.1.2",
- "whatwg-url": "^7.0.0"
- },
- "dependencies": {
- "tr46": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz",
- "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==",
- "dev": true,
- "requires": {
- "punycode": "^2.1.0"
- }
- },
- "webidl-conversions": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz",
- "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==",
- "dev": true
- },
- "whatwg-url": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz",
- "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==",
- "dev": true,
- "requires": {
- "lodash.sortby": "^4.7.0",
- "tr46": "^1.0.1",
- "webidl-conversions": "^4.0.2"
- }
- }
- }
- },
- "@lerna/global-options": {
- "version": "3.13.0",
- "resolved": "https://registry.npmjs.org/@lerna/global-options/-/global-options-3.13.0.tgz",
- "integrity": "sha512-SlZvh1gVRRzYLVluz9fryY1nJpZ0FHDGB66U9tFfvnnxmueckRQxLopn3tXj3NU1kc3QANT2I5BsQkOqZ4TEFQ==",
- "dev": true
- },
- "@lerna/has-npm-version": {
- "version": "3.16.5",
- "resolved": "https://registry.npmjs.org/@lerna/has-npm-version/-/has-npm-version-3.16.5.tgz",
- "integrity": "sha512-WL7LycR9bkftyqbYop5rEGJ9sRFIV55tSGmbN1HLrF9idwOCD7CLrT64t235t3t4O5gehDnwKI5h2U3oxTrF8Q==",
- "dev": true,
- "requires": {
- "@lerna/child-process": "3.16.5",
- "semver": "^6.2.0"
- },
- "dependencies": {
- "semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true
- }
- }
- },
- "@lerna/import": {
- "version": "3.22.0",
- "resolved": "https://registry.npmjs.org/@lerna/import/-/import-3.22.0.tgz",
- "integrity": "sha512-uWOlexasM5XR6tXi4YehODtH9Y3OZrFht3mGUFFT3OIl2s+V85xIGFfqFGMTipMPAGb2oF1UBLL48kR43hRsOg==",
- "dev": true,
- "requires": {
- "@lerna/child-process": "3.16.5",
- "@lerna/command": "3.21.0",
- "@lerna/prompt": "3.18.5",
- "@lerna/pulse-till-done": "3.13.0",
- "@lerna/validation-error": "3.13.0",
- "dedent": "^0.7.0",
- "fs-extra": "^8.1.0",
- "p-map-series": "^1.0.0"
- }
- },
- "@lerna/info": {
- "version": "3.21.0",
- "resolved": "https://registry.npmjs.org/@lerna/info/-/info-3.21.0.tgz",
- "integrity": "sha512-0XDqGYVBgWxUquFaIptW2bYSIu6jOs1BtkvRTWDDhw4zyEdp6q4eaMvqdSap1CG+7wM5jeLCi6z94wS0AuiuwA==",
- "dev": true,
- "requires": {
- "@lerna/command": "3.21.0",
- "@lerna/output": "3.13.0",
- "envinfo": "^7.3.1"
- }
- },
- "@lerna/init": {
- "version": "3.21.0",
- "resolved": "https://registry.npmjs.org/@lerna/init/-/init-3.21.0.tgz",
- "integrity": "sha512-6CM0z+EFUkFfurwdJCR+LQQF6MqHbYDCBPyhu/d086LRf58GtYZYj49J8mKG9ktayp/TOIxL/pKKjgLD8QBPOg==",
- "dev": true,
- "requires": {
- "@lerna/child-process": "3.16.5",
- "@lerna/command": "3.21.0",
- "fs-extra": "^8.1.0",
- "p-map": "^2.1.0",
- "write-json-file": "^3.2.0"
- }
- },
- "@lerna/link": {
- "version": "3.21.0",
- "resolved": "https://registry.npmjs.org/@lerna/link/-/link-3.21.0.tgz",
- "integrity": "sha512-tGu9GxrX7Ivs+Wl3w1+jrLi1nQ36kNI32dcOssij6bg0oZ2M2MDEFI9UF2gmoypTaN9uO5TSsjCFS7aR79HbdQ==",
- "dev": true,
- "requires": {
- "@lerna/command": "3.21.0",
- "@lerna/package-graph": "3.18.5",
- "@lerna/symlink-dependencies": "3.17.0",
- "p-map": "^2.1.0",
- "slash": "^2.0.0"
- },
- "dependencies": {
- "slash": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
- "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
- "dev": true
- }
- }
- },
- "@lerna/list": {
- "version": "3.21.0",
- "resolved": "https://registry.npmjs.org/@lerna/list/-/list-3.21.0.tgz",
- "integrity": "sha512-KehRjE83B1VaAbRRkRy6jLX1Cin8ltsrQ7FHf2bhwhRHK0S54YuA6LOoBnY/NtA8bHDX/Z+G5sMY78X30NS9tg==",
- "dev": true,
- "requires": {
- "@lerna/command": "3.21.0",
- "@lerna/filter-options": "3.20.0",
- "@lerna/listable": "3.18.5",
- "@lerna/output": "3.13.0"
- }
- },
- "@lerna/listable": {
- "version": "3.18.5",
- "resolved": "https://registry.npmjs.org/@lerna/listable/-/listable-3.18.5.tgz",
- "integrity": "sha512-Sdr3pVyaEv5A7ZkGGYR7zN+tTl2iDcinryBPvtuv20VJrXBE8wYcOks1edBTcOWsPjCE/rMP4bo1pseyk3UTsg==",
- "dev": true,
- "requires": {
- "@lerna/query-graph": "3.18.5",
- "chalk": "^2.3.1",
- "columnify": "^1.5.4"
- }
- },
- "@lerna/log-packed": {
- "version": "3.16.0",
- "resolved": "https://registry.npmjs.org/@lerna/log-packed/-/log-packed-3.16.0.tgz",
- "integrity": "sha512-Fp+McSNBV/P2mnLUYTaSlG8GSmpXM7krKWcllqElGxvAqv6chk2K3c2k80MeVB4WvJ9tRjUUf+i7HUTiQ9/ckQ==",
- "dev": true,
- "requires": {
- "byte-size": "^5.0.1",
- "columnify": "^1.5.4",
- "has-unicode": "^2.0.1",
- "npmlog": "^4.1.2"
- }
- },
- "@lerna/npm-conf": {
- "version": "3.16.0",
- "resolved": "https://registry.npmjs.org/@lerna/npm-conf/-/npm-conf-3.16.0.tgz",
- "integrity": "sha512-HbO3DUrTkCAn2iQ9+FF/eisDpWY5POQAOF1m7q//CZjdC2HSW3UYbKEGsSisFxSfaF9Z4jtrV+F/wX6qWs3CuA==",
- "dev": true,
- "requires": {
- "config-chain": "^1.1.11",
- "pify": "^4.0.1"
- }
- },
- "@lerna/npm-dist-tag": {
- "version": "3.18.5",
- "resolved": "https://registry.npmjs.org/@lerna/npm-dist-tag/-/npm-dist-tag-3.18.5.tgz",
- "integrity": "sha512-xw0HDoIG6HreVsJND9/dGls1c+lf6vhu7yJoo56Sz5bvncTloYGLUppIfDHQr4ZvmPCK8rsh0euCVh2giPxzKQ==",
- "dev": true,
- "requires": {
- "@evocateur/npm-registry-fetch": "^4.0.0",
- "@lerna/otplease": "3.18.5",
- "figgy-pudding": "^3.5.1",
- "npm-package-arg": "^6.1.0",
- "npmlog": "^4.1.2"
- }
- },
- "@lerna/npm-install": {
- "version": "3.16.5",
- "resolved": "https://registry.npmjs.org/@lerna/npm-install/-/npm-install-3.16.5.tgz",
- "integrity": "sha512-hfiKk8Eku6rB9uApqsalHHTHY+mOrrHeWEs+gtg7+meQZMTS3kzv4oVp5cBZigndQr3knTLjwthT/FX4KvseFg==",
- "dev": true,
- "requires": {
- "@lerna/child-process": "3.16.5",
- "@lerna/get-npm-exec-opts": "3.13.0",
- "fs-extra": "^8.1.0",
- "npm-package-arg": "^6.1.0",
- "npmlog": "^4.1.2",
- "signal-exit": "^3.0.2",
- "write-pkg": "^3.1.0"
- }
- },
- "@lerna/npm-publish": {
- "version": "3.18.5",
- "resolved": "https://registry.npmjs.org/@lerna/npm-publish/-/npm-publish-3.18.5.tgz",
- "integrity": "sha512-3etLT9+2L8JAx5F8uf7qp6iAtOLSMj+ZYWY6oUgozPi/uLqU0/gsMsEXh3F0+YVW33q0M61RpduBoAlOOZnaTg==",
- "dev": true,
- "requires": {
- "@evocateur/libnpmpublish": "^1.2.2",
- "@lerna/otplease": "3.18.5",
- "@lerna/run-lifecycle": "3.16.2",
- "figgy-pudding": "^3.5.1",
- "fs-extra": "^8.1.0",
- "npm-package-arg": "^6.1.0",
- "npmlog": "^4.1.2",
- "pify": "^4.0.1",
- "read-package-json": "^2.0.13"
- }
- },
- "@lerna/npm-run-script": {
- "version": "3.16.5",
- "resolved": "https://registry.npmjs.org/@lerna/npm-run-script/-/npm-run-script-3.16.5.tgz",
- "integrity": "sha512-1asRi+LjmVn3pMjEdpqKJZFT/3ZNpb+VVeJMwrJaV/3DivdNg7XlPK9LTrORuKU4PSvhdEZvJmSlxCKyDpiXsQ==",
- "dev": true,
- "requires": {
- "@lerna/child-process": "3.16.5",
- "@lerna/get-npm-exec-opts": "3.13.0",
- "npmlog": "^4.1.2"
- }
- },
- "@lerna/otplease": {
- "version": "3.18.5",
- "resolved": "https://registry.npmjs.org/@lerna/otplease/-/otplease-3.18.5.tgz",
- "integrity": "sha512-S+SldXAbcXTEDhzdxYLU0ZBKuYyURP/ND2/dK6IpKgLxQYh/z4ScljPDMyKymmEvgiEJmBsPZAAPfmNPEzxjog==",
- "dev": true,
- "requires": {
- "@lerna/prompt": "3.18.5",
- "figgy-pudding": "^3.5.1"
- }
- },
- "@lerna/output": {
- "version": "3.13.0",
- "resolved": "https://registry.npmjs.org/@lerna/output/-/output-3.13.0.tgz",
- "integrity": "sha512-7ZnQ9nvUDu/WD+bNsypmPG5MwZBwu86iRoiW6C1WBuXXDxM5cnIAC1m2WxHeFnjyMrYlRXM9PzOQ9VDD+C15Rg==",
- "dev": true,
- "requires": {
- "npmlog": "^4.1.2"
- }
- },
- "@lerna/pack-directory": {
- "version": "3.16.4",
- "resolved": "https://registry.npmjs.org/@lerna/pack-directory/-/pack-directory-3.16.4.tgz",
- "integrity": "sha512-uxSF0HZeGyKaaVHz5FroDY9A5NDDiCibrbYR6+khmrhZtY0Bgn6hWq8Gswl9iIlymA+VzCbshWIMX4o2O8C8ng==",
- "dev": true,
- "requires": {
- "@lerna/get-packed": "3.16.0",
- "@lerna/package": "3.16.0",
- "@lerna/run-lifecycle": "3.16.2",
- "figgy-pudding": "^3.5.1",
- "npm-packlist": "^1.4.4",
- "npmlog": "^4.1.2",
- "tar": "^4.4.10",
- "temp-write": "^3.4.0"
- }
- },
- "@lerna/package": {
- "version": "3.16.0",
- "resolved": "https://registry.npmjs.org/@lerna/package/-/package-3.16.0.tgz",
- "integrity": "sha512-2lHBWpaxcBoiNVbtyLtPUuTYEaB/Z+eEqRS9duxpZs6D+mTTZMNy6/5vpEVSCBmzvdYpyqhqaYjjSLvjjr5Riw==",
- "dev": true,
- "requires": {
- "load-json-file": "^5.3.0",
- "npm-package-arg": "^6.1.0",
- "write-pkg": "^3.1.0"
- }
- },
- "@lerna/package-graph": {
- "version": "3.18.5",
- "resolved": "https://registry.npmjs.org/@lerna/package-graph/-/package-graph-3.18.5.tgz",
- "integrity": "sha512-8QDrR9T+dBegjeLr+n9WZTVxUYUhIUjUgZ0gvNxUBN8S1WB9r6H5Yk56/MVaB64tA3oGAN9IIxX6w0WvTfFudA==",
- "dev": true,
- "requires": {
- "@lerna/prerelease-id-from-version": "3.16.0",
- "@lerna/validation-error": "3.13.0",
- "npm-package-arg": "^6.1.0",
- "npmlog": "^4.1.2",
- "semver": "^6.2.0"
- },
- "dependencies": {
- "semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true
- }
- }
- },
- "@lerna/prerelease-id-from-version": {
- "version": "3.16.0",
- "resolved": "https://registry.npmjs.org/@lerna/prerelease-id-from-version/-/prerelease-id-from-version-3.16.0.tgz",
- "integrity": "sha512-qZyeUyrE59uOK8rKdGn7jQz+9uOpAaF/3hbslJVFL1NqF9ELDTqjCPXivuejMX/lN4OgD6BugTO4cR7UTq/sZA==",
- "dev": true,
- "requires": {
- "semver": "^6.2.0"
- },
- "dependencies": {
- "semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true
- }
- }
- },
- "@lerna/profiler": {
- "version": "3.20.0",
- "resolved": "https://registry.npmjs.org/@lerna/profiler/-/profiler-3.20.0.tgz",
- "integrity": "sha512-bh8hKxAlm6yu8WEOvbLENm42i2v9SsR4WbrCWSbsmOElx3foRnMlYk7NkGECa+U5c3K4C6GeBbwgqs54PP7Ljg==",
- "dev": true,
- "requires": {
- "figgy-pudding": "^3.5.1",
- "fs-extra": "^8.1.0",
- "npmlog": "^4.1.2",
- "upath": "^1.2.0"
- }
- },
- "@lerna/project": {
- "version": "3.21.0",
- "resolved": "https://registry.npmjs.org/@lerna/project/-/project-3.21.0.tgz",
- "integrity": "sha512-xT1mrpET2BF11CY32uypV2GPtPVm6Hgtha7D81GQP9iAitk9EccrdNjYGt5UBYASl4CIDXBRxwmTTVGfrCx82A==",
- "dev": true,
- "requires": {
- "@lerna/package": "3.16.0",
- "@lerna/validation-error": "3.13.0",
- "cosmiconfig": "^5.1.0",
- "dedent": "^0.7.0",
- "dot-prop": "^4.2.0",
- "glob-parent": "^5.0.0",
- "globby": "^9.2.0",
- "load-json-file": "^5.3.0",
- "npmlog": "^4.1.2",
- "p-map": "^2.1.0",
- "resolve-from": "^4.0.0",
- "write-json-file": "^3.2.0"
- },
- "dependencies": {
- "@nodelib/fs.stat": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz",
- "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==",
- "dev": true
- },
- "array-union": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
- "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==",
- "dev": true,
- "requires": {
- "array-uniq": "^1.0.1"
- }
- },
- "braces": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
- "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
- "dev": true,
- "requires": {
- "arr-flatten": "^1.1.0",
- "array-unique": "^0.3.2",
- "extend-shallow": "^2.0.1",
- "fill-range": "^4.0.0",
- "isobject": "^3.0.1",
- "repeat-element": "^1.1.2",
- "snapdragon": "^0.8.1",
- "snapdragon-node": "^2.0.1",
- "split-string": "^3.0.2",
- "to-regex": "^3.0.1"
- },
- "dependencies": {
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- }
- }
- },
- "dir-glob": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz",
- "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==",
- "dev": true,
- "requires": {
- "path-type": "^3.0.0"
- }
- },
- "fast-glob": {
- "version": "2.2.7",
- "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz",
- "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==",
- "dev": true,
- "requires": {
- "@mrmlnc/readdir-enhanced": "^2.2.1",
- "@nodelib/fs.stat": "^1.1.2",
- "glob-parent": "^3.1.0",
- "is-glob": "^4.0.0",
- "merge2": "^1.2.3",
- "micromatch": "^3.1.10"
- },
- "dependencies": {
- "glob-parent": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
- "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==",
- "dev": true,
- "requires": {
- "is-glob": "^3.1.0",
- "path-dirname": "^1.0.0"
- },
- "dependencies": {
- "is-glob": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
- "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==",
- "dev": true,
- "requires": {
- "is-extglob": "^2.1.0"
- }
- }
- }
- }
- }
- },
- "fill-range": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
- "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==",
- "dev": true,
- "requires": {
- "extend-shallow": "^2.0.1",
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1",
- "to-regex-range": "^2.1.0"
- },
- "dependencies": {
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- }
- }
- },
- "globby": {
- "version": "9.2.0",
- "resolved": "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz",
- "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==",
- "dev": true,
- "requires": {
- "@types/glob": "^7.1.1",
- "array-union": "^1.0.2",
- "dir-glob": "^2.2.2",
- "fast-glob": "^2.2.6",
- "glob": "^7.1.3",
- "ignore": "^4.0.3",
- "pify": "^4.0.1",
- "slash": "^2.0.0"
- }
- },
- "ignore": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
- "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
- "dev": true
- },
- "is-buffer": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
- "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
- "dev": true
- },
- "is-extendable": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
- "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
- "dev": true
- },
- "is-number": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
- "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "micromatch": {
- "version": "3.1.10",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
- "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
- "dev": true,
- "requires": {
- "arr-diff": "^4.0.0",
- "array-unique": "^0.3.2",
- "braces": "^2.3.1",
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "extglob": "^2.0.4",
- "fragment-cache": "^0.2.1",
- "kind-of": "^6.0.2",
- "nanomatch": "^1.2.9",
- "object.pick": "^1.3.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.2"
- }
- },
- "slash": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
- "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
- "dev": true
- },
- "to-regex-range": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
- "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==",
- "dev": true,
- "requires": {
- "is-number": "^3.0.0",
- "repeat-string": "^1.6.1"
- }
- }
- }
- },
- "@lerna/prompt": {
- "version": "3.18.5",
- "resolved": "https://registry.npmjs.org/@lerna/prompt/-/prompt-3.18.5.tgz",
- "integrity": "sha512-rkKj4nm1twSbBEb69+Em/2jAERK8htUuV8/xSjN0NPC+6UjzAwY52/x9n5cfmpa9lyKf/uItp7chCI7eDmNTKQ==",
- "dev": true,
- "requires": {
- "inquirer": "^6.2.0",
- "npmlog": "^4.1.2"
- }
- },
- "@lerna/publish": {
- "version": "3.22.1",
- "resolved": "https://registry.npmjs.org/@lerna/publish/-/publish-3.22.1.tgz",
- "integrity": "sha512-PG9CM9HUYDreb1FbJwFg90TCBQooGjj+n/pb3gw/eH5mEDq0p8wKdLFe0qkiqUkm/Ub5C8DbVFertIo0Vd0zcw==",
- "dev": true,
- "requires": {
- "@evocateur/libnpmaccess": "^3.1.2",
- "@evocateur/npm-registry-fetch": "^4.0.0",
- "@evocateur/pacote": "^9.6.3",
- "@lerna/check-working-tree": "3.16.5",
- "@lerna/child-process": "3.16.5",
- "@lerna/collect-updates": "3.20.0",
- "@lerna/command": "3.21.0",
- "@lerna/describe-ref": "3.16.5",
- "@lerna/log-packed": "3.16.0",
- "@lerna/npm-conf": "3.16.0",
- "@lerna/npm-dist-tag": "3.18.5",
- "@lerna/npm-publish": "3.18.5",
- "@lerna/otplease": "3.18.5",
- "@lerna/output": "3.13.0",
- "@lerna/pack-directory": "3.16.4",
- "@lerna/prerelease-id-from-version": "3.16.0",
- "@lerna/prompt": "3.18.5",
- "@lerna/pulse-till-done": "3.13.0",
- "@lerna/run-lifecycle": "3.16.2",
- "@lerna/run-topologically": "3.18.5",
- "@lerna/validation-error": "3.13.0",
- "@lerna/version": "3.22.1",
- "figgy-pudding": "^3.5.1",
- "fs-extra": "^8.1.0",
- "npm-package-arg": "^6.1.0",
- "npmlog": "^4.1.2",
- "p-finally": "^1.0.0",
- "p-map": "^2.1.0",
- "p-pipe": "^1.2.0",
- "semver": "^6.2.0"
- },
- "dependencies": {
- "semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true
- }
- }
- },
- "@lerna/pulse-till-done": {
- "version": "3.13.0",
- "resolved": "https://registry.npmjs.org/@lerna/pulse-till-done/-/pulse-till-done-3.13.0.tgz",
- "integrity": "sha512-1SOHpy7ZNTPulzIbargrgaJX387csN7cF1cLOGZiJQA6VqnS5eWs2CIrG8i8wmaUavj2QlQ5oEbRMVVXSsGrzA==",
- "dev": true,
- "requires": {
- "npmlog": "^4.1.2"
- }
- },
- "@lerna/query-graph": {
- "version": "3.18.5",
- "resolved": "https://registry.npmjs.org/@lerna/query-graph/-/query-graph-3.18.5.tgz",
- "integrity": "sha512-50Lf4uuMpMWvJ306be3oQDHrWV42nai9gbIVByPBYJuVW8dT8O8pA3EzitNYBUdLL9/qEVbrR0ry1HD7EXwtRA==",
- "dev": true,
- "requires": {
- "@lerna/package-graph": "3.18.5",
- "figgy-pudding": "^3.5.1"
- }
- },
- "@lerna/resolve-symlink": {
- "version": "3.16.0",
- "resolved": "https://registry.npmjs.org/@lerna/resolve-symlink/-/resolve-symlink-3.16.0.tgz",
- "integrity": "sha512-Ibj5e7njVHNJ/NOqT4HlEgPFPtPLWsO7iu59AM5bJDcAJcR96mLZ7KGVIsS2tvaO7akMEJvt2P+ErwCdloG3jQ==",
- "dev": true,
- "requires": {
- "fs-extra": "^8.1.0",
- "npmlog": "^4.1.2",
- "read-cmd-shim": "^1.0.1"
- }
- },
- "@lerna/rimraf-dir": {
- "version": "3.16.5",
- "resolved": "https://registry.npmjs.org/@lerna/rimraf-dir/-/rimraf-dir-3.16.5.tgz",
- "integrity": "sha512-bQlKmO0pXUsXoF8lOLknhyQjOZsCc0bosQDoX4lujBXSWxHVTg1VxURtWf2lUjz/ACsJVDfvHZbDm8kyBk5okA==",
- "dev": true,
- "requires": {
- "@lerna/child-process": "3.16.5",
- "npmlog": "^4.1.2",
- "path-exists": "^3.0.0",
- "rimraf": "^2.6.2"
- },
- "dependencies": {
- "path-exists": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
- "dev": true
- },
- "rimraf": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
- "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
- "dev": true,
- "requires": {
- "glob": "^7.1.3"
- }
- }
- }
- },
- "@lerna/run": {
- "version": "3.21.0",
- "resolved": "https://registry.npmjs.org/@lerna/run/-/run-3.21.0.tgz",
- "integrity": "sha512-fJF68rT3veh+hkToFsBmUJ9MHc9yGXA7LSDvhziAojzOb0AI/jBDp6cEcDQyJ7dbnplba2Lj02IH61QUf9oW0Q==",
- "dev": true,
- "requires": {
- "@lerna/command": "3.21.0",
- "@lerna/filter-options": "3.20.0",
- "@lerna/npm-run-script": "3.16.5",
- "@lerna/output": "3.13.0",
- "@lerna/profiler": "3.20.0",
- "@lerna/run-topologically": "3.18.5",
- "@lerna/timer": "3.13.0",
- "@lerna/validation-error": "3.13.0",
- "p-map": "^2.1.0"
- }
- },
- "@lerna/run-lifecycle": {
- "version": "3.16.2",
- "resolved": "https://registry.npmjs.org/@lerna/run-lifecycle/-/run-lifecycle-3.16.2.tgz",
- "integrity": "sha512-RqFoznE8rDpyyF0rOJy3+KjZCeTkO8y/OB9orPauR7G2xQ7PTdCpgo7EO6ZNdz3Al+k1BydClZz/j78gNCmL2A==",
- "dev": true,
- "requires": {
- "@lerna/npm-conf": "3.16.0",
- "figgy-pudding": "^3.5.1",
- "npm-lifecycle": "^3.1.2",
- "npmlog": "^4.1.2"
- }
- },
- "@lerna/run-topologically": {
- "version": "3.18.5",
- "resolved": "https://registry.npmjs.org/@lerna/run-topologically/-/run-topologically-3.18.5.tgz",
- "integrity": "sha512-6N1I+6wf4hLOnPW+XDZqwufyIQ6gqoPfHZFkfWlvTQ+Ue7CuF8qIVQ1Eddw5HKQMkxqN10thKOFfq/9NQZ4NUg==",
- "dev": true,
- "requires": {
- "@lerna/query-graph": "3.18.5",
- "figgy-pudding": "^3.5.1",
- "p-queue": "^4.0.0"
- }
- },
- "@lerna/symlink-binary": {
- "version": "3.17.0",
- "resolved": "https://registry.npmjs.org/@lerna/symlink-binary/-/symlink-binary-3.17.0.tgz",
- "integrity": "sha512-RLpy9UY6+3nT5J+5jkM5MZyMmjNHxZIZvXLV+Q3MXrf7Eaa1hNqyynyj4RO95fxbS+EZc4XVSk25DGFQbcRNSQ==",
- "dev": true,
- "requires": {
- "@lerna/create-symlink": "3.16.2",
- "@lerna/package": "3.16.0",
- "fs-extra": "^8.1.0",
- "p-map": "^2.1.0"
- }
- },
- "@lerna/symlink-dependencies": {
- "version": "3.17.0",
- "resolved": "https://registry.npmjs.org/@lerna/symlink-dependencies/-/symlink-dependencies-3.17.0.tgz",
- "integrity": "sha512-KmjU5YT1bpt6coOmdFueTJ7DFJL4H1w5eF8yAQ2zsGNTtZ+i5SGFBWpb9AQaw168dydc3s4eu0W0Sirda+F59Q==",
- "dev": true,
- "requires": {
- "@lerna/create-symlink": "3.16.2",
- "@lerna/resolve-symlink": "3.16.0",
- "@lerna/symlink-binary": "3.17.0",
- "fs-extra": "^8.1.0",
- "p-finally": "^1.0.0",
- "p-map": "^2.1.0",
- "p-map-series": "^1.0.0"
- }
- },
- "@lerna/timer": {
- "version": "3.13.0",
- "resolved": "https://registry.npmjs.org/@lerna/timer/-/timer-3.13.0.tgz",
- "integrity": "sha512-RHWrDl8U4XNPqY5MQHkToWS9jHPnkLZEt5VD+uunCKTfzlxGnRCr3/zVr8VGy/uENMYpVP3wJa4RKGY6M0vkRw==",
- "dev": true
- },
- "@lerna/validation-error": {
- "version": "3.13.0",
- "resolved": "https://registry.npmjs.org/@lerna/validation-error/-/validation-error-3.13.0.tgz",
- "integrity": "sha512-SiJP75nwB8GhgwLKQfdkSnDufAaCbkZWJqEDlKOUPUvVOplRGnfL+BPQZH5nvq2BYSRXsksXWZ4UHVnQZI/HYA==",
- "dev": true,
- "requires": {
- "npmlog": "^4.1.2"
- }
- },
- "@lerna/version": {
- "version": "3.22.1",
- "resolved": "https://registry.npmjs.org/@lerna/version/-/version-3.22.1.tgz",
- "integrity": "sha512-PSGt/K1hVqreAFoi3zjD0VEDupQ2WZVlVIwesrE5GbrL2BjXowjCsTDPqblahDUPy0hp6h7E2kG855yLTp62+g==",
- "dev": true,
- "requires": {
- "@lerna/check-working-tree": "3.16.5",
- "@lerna/child-process": "3.16.5",
- "@lerna/collect-updates": "3.20.0",
- "@lerna/command": "3.21.0",
- "@lerna/conventional-commits": "3.22.0",
- "@lerna/github-client": "3.22.0",
- "@lerna/gitlab-client": "3.15.0",
- "@lerna/output": "3.13.0",
- "@lerna/prerelease-id-from-version": "3.16.0",
- "@lerna/prompt": "3.18.5",
- "@lerna/run-lifecycle": "3.16.2",
- "@lerna/run-topologically": "3.18.5",
- "@lerna/validation-error": "3.13.0",
- "chalk": "^2.3.1",
- "dedent": "^0.7.0",
- "load-json-file": "^5.3.0",
- "minimatch": "^3.0.4",
- "npmlog": "^4.1.2",
- "p-map": "^2.1.0",
- "p-pipe": "^1.2.0",
- "p-reduce": "^1.0.0",
- "p-waterfall": "^1.0.0",
- "semver": "^6.2.0",
- "slash": "^2.0.0",
- "temp-write": "^3.4.0",
- "write-json-file": "^3.2.0"
- },
- "dependencies": {
- "semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true
- },
- "slash": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz",
- "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==",
- "dev": true
- }
- }
- },
- "@lerna/write-log-file": {
- "version": "3.13.0",
- "resolved": "https://registry.npmjs.org/@lerna/write-log-file/-/write-log-file-3.13.0.tgz",
- "integrity": "sha512-RibeMnDPvlL8bFYW5C8cs4mbI3AHfQef73tnJCQ/SgrXZHehmHnsyWUiE7qDQCAo+B1RfTapvSyFF69iPj326A==",
- "dev": true,
- "requires": {
- "npmlog": "^4.1.2",
- "write-file-atomic": "^2.3.0"
- }
- },
- "@mrmlnc/readdir-enhanced": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz",
- "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==",
- "dev": true,
- "requires": {
- "call-me-maybe": "^1.0.1",
- "glob-to-regexp": "^0.3.0"
- }
- },
- "@octokit/auth-token": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz",
- "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==",
- "dev": true,
- "requires": {
- "@octokit/types": "^6.0.3"
- }
- },
- "@octokit/core": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.0.0.tgz",
- "integrity": "sha512-YbAtMWIrbZ9FCXbLwT9wWB8TyLjq9mxpKdgB3dUNxQcIVTf9hJ70gRPwAcqGZdY6WdJPZ0I7jLaaNDCiloGN2A==",
- "dev": true,
- "peer": true,
- "requires": {
- "@octokit/auth-token": "^4.0.0",
- "@octokit/graphql": "^7.0.0",
- "@octokit/request": "^8.0.2",
- "@octokit/request-error": "^5.0.0",
- "@octokit/types": "^11.0.0",
- "before-after-hook": "^2.2.0",
- "universal-user-agent": "^6.0.0"
- },
- "dependencies": {
- "@octokit/auth-token": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-4.0.0.tgz",
- "integrity": "sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==",
- "dev": true,
- "peer": true
- },
- "@octokit/endpoint": {
- "version": "9.0.0",
- "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.0.tgz",
- "integrity": "sha512-szrQhiqJ88gghWY2Htt8MqUDO6++E/EIXqJ2ZEp5ma3uGS46o7LZAzSLt49myB7rT+Hfw5Y6gO3LmOxGzHijAQ==",
- "dev": true,
- "peer": true,
- "requires": {
- "@octokit/types": "^11.0.0",
- "is-plain-object": "^5.0.0",
- "universal-user-agent": "^6.0.0"
- }
- },
- "@octokit/openapi-types": {
- "version": "18.0.0",
- "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-18.0.0.tgz",
- "integrity": "sha512-V8GImKs3TeQRxRtXFpG2wl19V7444NIOTDF24AWuIbmNaNYOQMWRbjcGDXV5B+0n887fgDcuMNOmlul+k+oJtw==",
- "dev": true,
- "peer": true
- },
- "@octokit/request": {
- "version": "8.1.1",
- "resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.1.1.tgz",
- "integrity": "sha512-8N+tdUz4aCqQmXl8FpHYfKG9GelDFd7XGVzyN8rc6WxVlYcfpHECnuRkgquzz+WzvHTK62co5di8gSXnzASZPQ==",
- "dev": true,
- "peer": true,
- "requires": {
- "@octokit/endpoint": "^9.0.0",
- "@octokit/request-error": "^5.0.0",
- "@octokit/types": "^11.1.0",
- "is-plain-object": "^5.0.0",
- "universal-user-agent": "^6.0.0"
- }
- },
- "@octokit/request-error": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.0.0.tgz",
- "integrity": "sha512-1ue0DH0Lif5iEqT52+Rf/hf0RmGO9NWFjrzmrkArpG9trFfDM/efx00BJHdLGuro4BR/gECxCU2Twf5OKrRFsQ==",
- "dev": true,
- "peer": true,
- "requires": {
- "@octokit/types": "^11.0.0",
- "deprecation": "^2.0.0",
- "once": "^1.4.0"
- }
- },
- "@octokit/types": {
- "version": "11.1.0",
- "resolved": "https://registry.npmjs.org/@octokit/types/-/types-11.1.0.tgz",
- "integrity": "sha512-Fz0+7GyLm/bHt8fwEqgvRBWwIV1S6wRRyq+V6exRKLVWaKGsuy6H9QFYeBVDV7rK6fO3XwHgQOPxv+cLj2zpXQ==",
- "dev": true,
- "peer": true,
- "requires": {
- "@octokit/openapi-types": "^18.0.0"
- }
- },
- "universal-user-agent": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz",
- "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==",
- "dev": true,
- "peer": true
- }
- }
- },
- "@octokit/endpoint": {
- "version": "6.0.12",
- "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz",
- "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==",
- "dev": true,
- "requires": {
- "@octokit/types": "^6.0.3",
- "is-plain-object": "^5.0.0",
- "universal-user-agent": "^6.0.0"
- },
- "dependencies": {
- "universal-user-agent": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz",
- "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==",
- "dev": true
- }
- }
- },
- "@octokit/graphql": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.0.1.tgz",
- "integrity": "sha512-T5S3oZ1JOE58gom6MIcrgwZXzTaxRnxBso58xhozxHpOqSTgDS6YNeEUvZ/kRvXgPrRz/KHnZhtb7jUMRi9E6w==",
- "dev": true,
- "peer": true,
- "requires": {
- "@octokit/request": "^8.0.1",
- "@octokit/types": "^11.0.0",
- "universal-user-agent": "^6.0.0"
- },
- "dependencies": {
- "@octokit/endpoint": {
- "version": "9.0.0",
- "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.0.tgz",
- "integrity": "sha512-szrQhiqJ88gghWY2Htt8MqUDO6++E/EIXqJ2ZEp5ma3uGS46o7LZAzSLt49myB7rT+Hfw5Y6gO3LmOxGzHijAQ==",
- "dev": true,
- "peer": true,
- "requires": {
- "@octokit/types": "^11.0.0",
- "is-plain-object": "^5.0.0",
- "universal-user-agent": "^6.0.0"
- }
- },
- "@octokit/openapi-types": {
- "version": "18.0.0",
- "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-18.0.0.tgz",
- "integrity": "sha512-V8GImKs3TeQRxRtXFpG2wl19V7444NIOTDF24AWuIbmNaNYOQMWRbjcGDXV5B+0n887fgDcuMNOmlul+k+oJtw==",
- "dev": true,
- "peer": true
- },
- "@octokit/request": {
- "version": "8.1.1",
- "resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.1.1.tgz",
- "integrity": "sha512-8N+tdUz4aCqQmXl8FpHYfKG9GelDFd7XGVzyN8rc6WxVlYcfpHECnuRkgquzz+WzvHTK62co5di8gSXnzASZPQ==",
- "dev": true,
- "peer": true,
- "requires": {
- "@octokit/endpoint": "^9.0.0",
- "@octokit/request-error": "^5.0.0",
- "@octokit/types": "^11.1.0",
- "is-plain-object": "^5.0.0",
- "universal-user-agent": "^6.0.0"
- }
- },
- "@octokit/request-error": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.0.0.tgz",
- "integrity": "sha512-1ue0DH0Lif5iEqT52+Rf/hf0RmGO9NWFjrzmrkArpG9trFfDM/efx00BJHdLGuro4BR/gECxCU2Twf5OKrRFsQ==",
- "dev": true,
- "peer": true,
- "requires": {
- "@octokit/types": "^11.0.0",
- "deprecation": "^2.0.0",
- "once": "^1.4.0"
- }
- },
- "@octokit/types": {
- "version": "11.1.0",
- "resolved": "https://registry.npmjs.org/@octokit/types/-/types-11.1.0.tgz",
- "integrity": "sha512-Fz0+7GyLm/bHt8fwEqgvRBWwIV1S6wRRyq+V6exRKLVWaKGsuy6H9QFYeBVDV7rK6fO3XwHgQOPxv+cLj2zpXQ==",
- "dev": true,
- "peer": true,
- "requires": {
- "@octokit/openapi-types": "^18.0.0"
- }
- },
- "universal-user-agent": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz",
- "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==",
- "dev": true,
- "peer": true
- }
- }
- },
- "@octokit/openapi-types": {
- "version": "12.11.0",
- "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz",
- "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==",
- "dev": true
- },
- "@octokit/plugin-enterprise-rest": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-6.0.1.tgz",
- "integrity": "sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw==",
- "dev": true
- },
- "@octokit/plugin-paginate-rest": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-1.1.2.tgz",
- "integrity": "sha512-jbsSoi5Q1pj63sC16XIUboklNw+8tL9VOnJsWycWYR78TKss5PVpIPb1TUUcMQ+bBh7cY579cVAWmf5qG+dw+Q==",
- "dev": true,
- "requires": {
- "@octokit/types": "^2.0.1"
- },
- "dependencies": {
- "@octokit/types": {
- "version": "2.16.2",
- "resolved": "https://registry.npmjs.org/@octokit/types/-/types-2.16.2.tgz",
- "integrity": "sha512-O75k56TYvJ8WpAakWwYRN8Bgu60KrmX0z1KqFp1kNiFNkgW+JW+9EBKZ+S33PU6SLvbihqd+3drvPxKK68Ee8Q==",
- "dev": true,
- "requires": {
- "@types/node": ">= 8"
- }
- }
- }
- },
- "@octokit/plugin-request-log": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz",
- "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==",
- "dev": true,
- "requires": {}
- },
- "@octokit/plugin-rest-endpoint-methods": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-2.4.0.tgz",
- "integrity": "sha512-EZi/AWhtkdfAYi01obpX0DF7U6b1VRr30QNQ5xSFPITMdLSfhcBqjamE3F+sKcxPbD7eZuMHu3Qkk2V+JGxBDQ==",
- "dev": true,
- "requires": {
- "@octokit/types": "^2.0.1",
- "deprecation": "^2.3.1"
- },
- "dependencies": {
- "@octokit/types": {
- "version": "2.16.2",
- "resolved": "https://registry.npmjs.org/@octokit/types/-/types-2.16.2.tgz",
- "integrity": "sha512-O75k56TYvJ8WpAakWwYRN8Bgu60KrmX0z1KqFp1kNiFNkgW+JW+9EBKZ+S33PU6SLvbihqd+3drvPxKK68Ee8Q==",
- "dev": true,
- "requires": {
- "@types/node": ">= 8"
- }
- }
- }
- },
- "@octokit/request": {
- "version": "5.6.3",
- "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz",
- "integrity": "sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==",
- "dev": true,
- "requires": {
- "@octokit/endpoint": "^6.0.1",
- "@octokit/request-error": "^2.1.0",
- "@octokit/types": "^6.16.1",
- "is-plain-object": "^5.0.0",
- "node-fetch": "^2.6.7",
- "universal-user-agent": "^6.0.0"
- },
- "dependencies": {
- "@octokit/request-error": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz",
- "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==",
- "dev": true,
- "requires": {
- "@octokit/types": "^6.0.3",
- "deprecation": "^2.0.0",
- "once": "^1.4.0"
- }
- },
- "universal-user-agent": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz",
- "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==",
- "dev": true
- }
- }
- },
- "@octokit/request-error": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-1.2.1.tgz",
- "integrity": "sha512-+6yDyk1EES6WK+l3viRDElw96MvwfJxCt45GvmjDUKWjYIb3PJZQkq3i46TwGwoPD4h8NmTrENmtyA1FwbmhRA==",
- "dev": true,
- "requires": {
- "@octokit/types": "^2.0.0",
- "deprecation": "^2.0.0",
- "once": "^1.4.0"
- },
- "dependencies": {
- "@octokit/types": {
- "version": "2.16.2",
- "resolved": "https://registry.npmjs.org/@octokit/types/-/types-2.16.2.tgz",
- "integrity": "sha512-O75k56TYvJ8WpAakWwYRN8Bgu60KrmX0z1KqFp1kNiFNkgW+JW+9EBKZ+S33PU6SLvbihqd+3drvPxKK68Ee8Q==",
- "dev": true,
- "requires": {
- "@types/node": ">= 8"
- }
- }
- }
- },
- "@octokit/rest": {
- "version": "16.43.2",
- "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-16.43.2.tgz",
- "integrity": "sha512-ngDBevLbBTFfrHZeiS7SAMAZ6ssuVmXuya+F/7RaVvlysgGa1JKJkKWY+jV6TCJYcW0OALfJ7nTIGXcBXzycfQ==",
- "dev": true,
- "requires": {
- "@octokit/auth-token": "^2.4.0",
- "@octokit/plugin-paginate-rest": "^1.1.1",
- "@octokit/plugin-request-log": "^1.0.0",
- "@octokit/plugin-rest-endpoint-methods": "2.4.0",
- "@octokit/request": "^5.2.0",
- "@octokit/request-error": "^1.0.2",
- "atob-lite": "^2.0.0",
- "before-after-hook": "^2.0.0",
- "btoa-lite": "^1.0.0",
- "deprecation": "^2.0.0",
- "lodash.get": "^4.4.2",
- "lodash.set": "^4.3.2",
- "lodash.uniq": "^4.5.0",
- "octokit-pagination-methods": "^1.1.0",
- "once": "^1.4.0",
- "universal-user-agent": "^4.0.0"
- }
- },
- "@octokit/types": {
- "version": "6.41.0",
- "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz",
- "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==",
- "dev": true,
- "requires": {
- "@octokit/openapi-types": "^12.11.0"
- }
- },
- "@types/glob": {
- "version": "7.2.0",
- "dev": true,
- "requires": {
- "@types/minimatch": "*",
- "@types/node": "*"
- }
- },
- "@types/minimatch": {
- "version": "3.0.5",
- "dev": true
- },
- "@types/minimist": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz",
- "integrity": "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==",
- "dev": true
- },
- "@types/node": {
- "version": "20.5.1",
- "dev": true
- },
- "@types/normalize-package-data": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz",
- "integrity": "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==",
- "dev": true
- },
- "@zkochan/cmd-shim": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/@zkochan/cmd-shim/-/cmd-shim-3.1.0.tgz",
- "integrity": "sha512-o8l0+x7C7sMZU3v9GuJIAU10qQLtwR1dtRQIOmlNMtyaqhmpXOzx1HWiYoWfmmf9HHZoAkXpc9TM9PQYF9d4Jg==",
- "dev": true,
- "requires": {
- "is-windows": "^1.0.0",
- "mkdirp-promise": "^5.0.1",
- "mz": "^2.5.0"
- }
- },
- "abbrev": {
- "version": "1.1.1",
- "dev": true
- },
- "agentkeepalive": {
- "version": "3.5.2",
- "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-3.5.2.tgz",
- "integrity": "sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ==",
- "dev": true,
- "requires": {
- "humanize-ms": "^1.2.1"
- }
- },
- "ajv": {
- "version": "6.12.6",
- "dev": true,
- "requires": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- }
- },
- "ansi-regex": {
- "version": "5.0.1",
- "dev": true
- },
- "ansi-styles": {
- "version": "3.2.1",
- "dev": true,
- "requires": {
- "color-convert": "^1.9.0"
- }
- },
- "any-promise": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",
- "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==",
- "dev": true
- },
- "application-config": {
- "version": "0.1.2",
- "dev": true,
- "requires": {
- "application-config-path": "^0.1.0",
- "mkdirp": "^0.5.1"
- }
- },
- "application-config-path": {
- "version": "0.1.0",
- "dev": true
- },
- "aproba": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz",
- "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==",
- "dev": true
- },
- "are-we-there-yet": {
- "version": "1.1.7",
- "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz",
- "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==",
- "dev": true,
- "requires": {
- "delegates": "^1.0.0",
- "readable-stream": "^2.0.6"
- },
- "dependencies": {
- "readable-stream": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
- "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
- "dev": true,
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- }
- }
- },
- "argparse": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
- "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
- "dev": true,
- "requires": {
- "sprintf-js": "~1.0.2"
- }
- },
- "arr-diff": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
- "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==",
- "dev": true
- },
- "arr-flatten": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
- "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
- "dev": true
- },
- "arr-union": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
- "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==",
- "dev": true
- },
- "array-buffer-byte-length": {
- "version": "1.0.0",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "is-array-buffer": "^3.0.1"
- }
- },
- "array-differ": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-2.1.0.tgz",
- "integrity": "sha512-KbUpJgx909ZscOc/7CLATBFam7P1Z1QRQInvgT0UztM9Q72aGKCunKASAl7WNW0tnPmPyEMeMhdsfWhfmW037w==",
- "dev": true
- },
- "array-find-index": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz",
- "integrity": "sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==",
- "dev": true
- },
- "array-ify": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz",
- "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==",
- "dev": true
- },
- "array-uniq": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
- "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==",
- "dev": true
- },
- "array-unique": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
- "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==",
- "dev": true
- },
- "array.prototype.reduce": {
- "version": "1.0.5",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
- "es-abstract": "^1.20.4",
- "es-array-method-boxes-properly": "^1.0.0",
- "is-string": "^1.0.7"
- }
- },
- "arraybuffer.prototype.slice": {
- "version": "1.0.1",
- "dev": true,
- "requires": {
- "array-buffer-byte-length": "^1.0.0",
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "get-intrinsic": "^1.2.1",
- "is-array-buffer": "^3.0.2",
- "is-shared-array-buffer": "^1.0.2"
- }
- },
- "arrify": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz",
- "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==",
- "dev": true
- },
- "asap": {
- "version": "2.0.6",
- "dev": true
- },
- "asn1": {
- "version": "0.2.6",
- "dev": true,
- "requires": {
- "safer-buffer": "~2.1.0"
- }
- },
- "assert-plus": {
- "version": "1.0.0",
- "dev": true
- },
- "assign-symbols": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
- "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==",
- "dev": true
- },
- "async": {
- "version": "0.2.10",
- "dev": true
- },
- "asynckit": {
- "version": "0.4.0",
- "dev": true
- },
- "atob": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
- "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
- "dev": true
- },
- "atob-lite": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/atob-lite/-/atob-lite-2.0.0.tgz",
- "integrity": "sha512-LEeSAWeh2Gfa2FtlQE1shxQ8zi5F9GHarrGKz08TMdODD5T4eH6BMsvtnhbWZ+XQn+Gb6om/917ucvRu7l7ukw==",
- "dev": true
- },
- "available-typed-arrays": {
- "version": "1.0.5",
- "dev": true
- },
- "aws-sign": {
- "version": "0.3.0",
- "dev": true
- },
- "aws-sign2": {
- "version": "0.7.0",
- "dev": true
- },
- "aws4": {
- "version": "1.12.0",
- "dev": true
- },
- "balanced-match": {
- "version": "1.0.0",
- "dev": true
- },
- "base": {
- "version": "0.11.2",
- "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
- "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
- "dev": true,
- "requires": {
- "cache-base": "^1.0.1",
- "class-utils": "^0.3.5",
- "component-emitter": "^1.2.1",
- "define-property": "^1.0.0",
- "isobject": "^3.0.1",
- "mixin-deep": "^1.2.0",
- "pascalcase": "^0.1.1"
- },
- "dependencies": {
- "define-property": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
- "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",
- "dev": true,
- "requires": {
- "is-descriptor": "^1.0.0"
- }
- }
- }
- },
- "bcrypt-pbkdf": {
- "version": "1.0.2",
- "dev": true,
- "requires": {
- "tweetnacl": "^0.14.3"
- }
- },
- "before-after-hook": {
- "version": "2.2.3",
- "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz",
- "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==",
- "dev": true
- },
- "bl": {
- "version": "0.9.5",
- "dev": true,
- "requires": {
- "readable-stream": "~1.0.26"
- },
- "dependencies": {
- "isarray": {
- "version": "0.0.1",
- "dev": true
- },
- "readable-stream": {
- "version": "1.0.34",
- "dev": true,
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.1",
- "isarray": "0.0.1",
- "string_decoder": "~0.10.x"
- }
- },
- "string_decoder": {
- "version": "0.10.31",
- "dev": true
- }
- }
- },
- "bluebird": {
- "version": "3.7.2",
- "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
- "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==",
- "dev": true
- },
- "boom": {
- "version": "0.4.2",
- "dev": true,
- "requires": {
- "hoek": "0.9.x"
- },
- "dependencies": {
- "hoek": {
- "version": "0.9.1",
- "dev": true
- }
- }
- },
- "brace-expansion": {
- "version": "1.1.11",
- "dev": true,
- "requires": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "btoa-lite": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/btoa-lite/-/btoa-lite-1.0.0.tgz",
- "integrity": "sha512-gvW7InbIyF8AicrqWoptdW08pUxuhq8BEgowNajy9RhiE86fmGAGl+bLKo6oB8QP0CkqHLowfN0oJdKC/J6LbA==",
- "dev": true
- },
- "buffer-from": {
- "version": "1.1.2",
- "dev": true
- },
- "builtins": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz",
- "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==",
- "dev": true
- },
- "byline": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/byline/-/byline-5.0.0.tgz",
- "integrity": "sha512-s6webAy+R4SR8XVuJWt2V2rGvhnrhxN+9S15GNuTK3wKPOXFF6RNc+8ug2XhH+2s4f+uudG4kUVYmYOQWL2g0Q==",
- "dev": true
- },
- "byte-size": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/byte-size/-/byte-size-5.0.1.tgz",
- "integrity": "sha512-/XuKeqWocKsYa/cBY1YbSJSWWqTi4cFgr9S6OyM7PBaPbr9zvNGwWP33vt0uqGhwDdN+y3yhbXVILEUpnwEWGw==",
- "dev": true
- },
- "cacache": {
- "version": "12.0.4",
- "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz",
- "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==",
- "dev": true,
- "requires": {
- "bluebird": "^3.5.5",
- "chownr": "^1.1.1",
- "figgy-pudding": "^3.5.1",
- "glob": "^7.1.4",
- "graceful-fs": "^4.1.15",
- "infer-owner": "^1.0.3",
- "lru-cache": "^5.1.1",
- "mississippi": "^3.0.0",
- "mkdirp": "^0.5.1",
- "move-concurrently": "^1.0.1",
- "promise-inflight": "^1.0.1",
- "rimraf": "^2.6.3",
- "ssri": "^6.0.1",
- "unique-filename": "^1.1.1",
- "y18n": "^4.0.0"
- },
- "dependencies": {
- "rimraf": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
- "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
- "dev": true,
- "requires": {
- "glob": "^7.1.3"
- }
- }
- }
- },
- "cache-base": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
- "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
- "dev": true,
- "requires": {
- "collection-visit": "^1.0.0",
- "component-emitter": "^1.2.1",
- "get-value": "^2.0.6",
- "has-value": "^1.0.0",
- "isobject": "^3.0.1",
- "set-value": "^2.0.0",
- "to-object-path": "^0.3.0",
- "union-value": "^1.0.0",
- "unset-value": "^1.0.0"
- }
- },
- "call-bind": {
- "version": "1.0.2",
- "dev": true,
- "requires": {
- "function-bind": "^1.1.1",
- "get-intrinsic": "^1.0.2"
- }
- },
- "call-me-maybe": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.2.tgz",
- "integrity": "sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==",
- "dev": true
- },
- "caller-callsite": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz",
- "integrity": "sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==",
- "dev": true,
- "requires": {
- "callsites": "^2.0.0"
- },
- "dependencies": {
- "callsites": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz",
- "integrity": "sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==",
- "dev": true
- }
- }
- },
- "caller-path": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz",
- "integrity": "sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==",
- "dev": true,
- "requires": {
- "caller-callsite": "^2.0.0"
- }
- },
- "camelcase": {
- "version": "5.3.1",
- "dev": true
- },
- "camelcase-keys": {
- "version": "6.2.2",
- "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz",
- "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==",
- "dev": true,
- "requires": {
- "camelcase": "^5.3.1",
- "map-obj": "^4.0.0",
- "quick-lru": "^4.0.1"
- }
- },
- "caseless": {
- "version": "0.12.0",
- "dev": true
- },
- "chalk": {
- "version": "2.4.2",
- "dev": true,
- "requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- }
- },
- "chardet": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
- "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
- "dev": true
- },
- "chownr": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
- "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==",
- "dev": true
- },
- "ci-info": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
- "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==",
- "dev": true
- },
- "class-utils": {
- "version": "0.3.6",
- "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
- "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
- "dev": true,
- "requires": {
- "arr-union": "^3.1.0",
- "define-property": "^0.2.5",
- "isobject": "^3.0.0",
- "static-extend": "^0.1.1"
- },
- "dependencies": {
- "define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
- "dev": true,
- "requires": {
- "is-descriptor": "^0.1.0"
- }
- },
- "is-accessor-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
- "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "is-buffer": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
- "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
- "dev": true
- },
- "is-data-descriptor": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
- "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "is-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
- "dev": true,
- "requires": {
- "is-accessor-descriptor": "^0.1.6",
- "is-data-descriptor": "^0.1.4",
- "kind-of": "^5.0.0"
- }
- },
- "kind-of": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
- "dev": true
- }
- }
- },
- "cli-width": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz",
- "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==",
- "dev": true
- },
- "cliui": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
- "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
- "dev": true,
- "requires": {
- "string-width": "^3.1.0",
- "strip-ansi": "^5.2.0",
- "wrap-ansi": "^5.1.0"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
- "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
- "dev": true
- },
- "emoji-regex": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
- "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
- "dev": true
- },
- "is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
- "dev": true
- },
- "string-width": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
- "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
- "dev": true,
- "requires": {
- "emoji-regex": "^7.0.1",
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^5.1.0"
- }
- },
- "strip-ansi": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
- "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
- "dev": true,
- "requires": {
- "ansi-regex": "^4.1.0"
- }
- },
- "wrap-ansi": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
- "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
- "dev": true,
- "requires": {
- "ansi-styles": "^3.2.0",
- "string-width": "^3.0.0",
- "strip-ansi": "^5.0.0"
- }
- }
- }
- },
- "clone": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
- "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==",
- "dev": true
- },
- "clone-deep": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz",
- "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==",
- "dev": true,
- "requires": {
- "is-plain-object": "^2.0.4",
- "kind-of": "^6.0.2",
- "shallow-clone": "^3.0.0"
- },
- "dependencies": {
- "is-plain-object": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
- "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
- "dev": true,
- "requires": {
- "isobject": "^3.0.1"
- }
- }
- }
- },
- "code-point-at": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
- "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==",
- "dev": true
- },
- "collection-visit": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
- "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==",
- "dev": true,
- "requires": {
- "map-visit": "^1.0.0",
- "object-visit": "^1.0.0"
- }
- },
- "color-convert": {
- "version": "1.9.3",
- "dev": true,
- "requires": {
- "color-name": "1.1.3"
- }
- },
- "color-name": {
- "version": "1.1.3",
- "dev": true
- },
- "colors": {
- "version": "0.5.1",
- "dev": true
- },
- "columnify": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.6.0.tgz",
- "integrity": "sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==",
- "dev": true,
- "requires": {
- "strip-ansi": "^6.0.1",
- "wcwidth": "^1.0.0"
- }
- },
- "combined-stream": {
- "version": "1.0.8",
- "dev": true,
- "requires": {
- "delayed-stream": "~1.0.0"
- }
- },
- "compare-func": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz",
- "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==",
- "dev": true,
- "requires": {
- "array-ify": "^1.0.0",
- "dot-prop": "^5.1.0"
- },
- "dependencies": {
- "dot-prop": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz",
- "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==",
- "dev": true,
- "requires": {
- "is-obj": "^2.0.0"
- }
- },
- "is-obj": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz",
- "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==",
- "dev": true
- }
- }
- },
- "component-emitter": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
- "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==",
- "dev": true
- },
- "concat-map": {
- "version": "0.0.1",
- "dev": true
- },
- "concat-stream": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz",
- "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==",
- "dev": true,
- "requires": {
- "buffer-from": "^1.0.0",
- "inherits": "^2.0.3",
- "readable-stream": "^3.0.2",
- "typedarray": "^0.0.6"
- }
- },
- "config-chain": {
- "version": "1.1.13",
- "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz",
- "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==",
- "dev": true,
- "requires": {
- "ini": "^1.3.4",
- "proto-list": "~1.2.1"
- }
- },
- "console-control-strings": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
- "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==",
- "dev": true
- },
- "conventional-changelog-angular": {
- "version": "5.0.13",
- "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz",
- "integrity": "sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==",
- "dev": true,
- "requires": {
- "compare-func": "^2.0.0",
- "q": "^1.5.1"
- },
- "dependencies": {
- "q": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
- "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==",
- "dev": true
- }
- }
- },
- "conventional-changelog-core": {
- "version": "3.2.3",
- "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-3.2.3.tgz",
- "integrity": "sha512-LMMX1JlxPIq/Ez5aYAYS5CpuwbOk6QFp8O4HLAcZxe3vxoCtABkhfjetk8IYdRB9CDQGwJFLR3Dr55Za6XKgUQ==",
- "dev": true,
- "requires": {
- "conventional-changelog-writer": "^4.0.6",
- "conventional-commits-parser": "^3.0.3",
- "dateformat": "^3.0.0",
- "get-pkg-repo": "^1.0.0",
- "git-raw-commits": "2.0.0",
- "git-remote-origin-url": "^2.0.0",
- "git-semver-tags": "^2.0.3",
- "lodash": "^4.2.1",
- "normalize-package-data": "^2.3.5",
- "q": "^1.5.1",
- "read-pkg": "^3.0.0",
- "read-pkg-up": "^3.0.0",
- "through2": "^3.0.0"
- },
- "dependencies": {
- "q": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
- "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==",
- "dev": true
- }
- }
- },
- "conventional-changelog-preset-loader": {
- "version": "2.3.4",
- "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz",
- "integrity": "sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g==",
- "dev": true
- },
- "conventional-changelog-writer": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-4.1.0.tgz",
- "integrity": "sha512-WwKcUp7WyXYGQmkLsX4QmU42AZ1lqlvRW9mqoyiQzdD+rJWbTepdWoKJuwXTS+yq79XKnQNa93/roViPQrAQgw==",
- "dev": true,
- "requires": {
- "compare-func": "^2.0.0",
- "conventional-commits-filter": "^2.0.7",
- "dateformat": "^3.0.0",
- "handlebars": "^4.7.6",
- "json-stringify-safe": "^5.0.1",
- "lodash": "^4.17.15",
- "meow": "^8.0.0",
- "semver": "^6.0.0",
- "split": "^1.0.0",
- "through2": "^4.0.0"
- },
- "dependencies": {
- "semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true
- },
- "through2": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz",
- "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==",
- "dev": true,
- "requires": {
- "readable-stream": "3"
- }
- }
- }
- },
- "conventional-commits-filter": {
- "version": "2.0.7",
- "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz",
- "integrity": "sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA==",
- "dev": true,
- "requires": {
- "lodash.ismatch": "^4.4.0",
- "modify-values": "^1.0.0"
- }
- },
- "conventional-commits-parser": {
- "version": "3.2.4",
- "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz",
- "integrity": "sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==",
- "dev": true,
- "requires": {
- "is-text-path": "^1.0.1",
- "JSONStream": "^1.0.4",
- "lodash": "^4.17.15",
- "meow": "^8.0.0",
- "split2": "^3.0.0",
- "through2": "^4.0.0"
- },
- "dependencies": {
- "through2": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz",
- "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==",
- "dev": true,
- "requires": {
- "readable-stream": "3"
- }
- }
- }
- },
- "conventional-recommended-bump": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-5.0.1.tgz",
- "integrity": "sha512-RVdt0elRcCxL90IrNP0fYCpq1uGt2MALko0eyeQ+zQuDVWtMGAy9ng6yYn3kax42lCj9+XBxQ8ZN6S9bdKxDhQ==",
- "dev": true,
- "requires": {
- "concat-stream": "^2.0.0",
- "conventional-changelog-preset-loader": "^2.1.1",
- "conventional-commits-filter": "^2.0.2",
- "conventional-commits-parser": "^3.0.3",
- "git-raw-commits": "2.0.0",
- "git-semver-tags": "^2.0.3",
- "meow": "^4.0.0",
- "q": "^1.5.1"
- },
- "dependencies": {
- "camelcase": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
- "integrity": "sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw==",
- "dev": true
- },
- "camelcase-keys": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz",
- "integrity": "sha512-Ej37YKYbFUI8QiYlvj9YHb6/Z60dZyPJW0Cs8sFilMbd2lP0bw3ylAq9yJkK4lcTA2dID5fG8LjmJYbO7kWb7Q==",
- "dev": true,
- "requires": {
- "camelcase": "^4.1.0",
- "map-obj": "^2.0.0",
- "quick-lru": "^1.0.0"
- }
- },
- "indent-string": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz",
- "integrity": "sha512-BYqTHXTGUIvg7t1r4sJNKcbDZkL92nkXA8YtRpbjFHRHGDL/NtUeiBJMeE60kIFN/Mg8ESaWQvftaYMGJzQZCQ==",
- "dev": true
- },
- "map-obj": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz",
- "integrity": "sha512-TzQSV2DiMYgoF5RycneKVUzIa9bQsj/B3tTgsE3dOGqlzHnGIDaC7XBE7grnA+8kZPnfqSGFe95VHc2oc0VFUQ==",
- "dev": true
- },
- "meow": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz",
- "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==",
- "dev": true,
- "requires": {
- "camelcase-keys": "^4.0.0",
- "decamelize-keys": "^1.0.0",
- "loud-rejection": "^1.0.0",
- "minimist": "^1.1.3",
- "minimist-options": "^3.0.1",
- "normalize-package-data": "^2.3.4",
- "read-pkg-up": "^3.0.0",
- "redent": "^2.0.0",
- "trim-newlines": "^2.0.0"
- }
- },
- "minimist-options": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz",
- "integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==",
- "dev": true,
- "requires": {
- "arrify": "^1.0.1",
- "is-plain-obj": "^1.1.0"
- }
- },
- "q": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
- "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==",
- "dev": true
- },
- "quick-lru": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz",
- "integrity": "sha512-tRS7sTgyxMXtLum8L65daJnHUhfDUgboRdcWW2bR9vBfrj2+O5HSMbQOJfJJjIVSPFqbBCF37FpwWXGitDc5tA==",
- "dev": true
- },
- "redent": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz",
- "integrity": "sha512-XNwrTx77JQCEMXTeb8movBKuK75MgH0RZkujNuDKCezemx/voapl9i2gCSi8WWm8+ox5ycJi1gxF22fR7c0Ciw==",
- "dev": true,
- "requires": {
- "indent-string": "^3.0.0",
- "strip-indent": "^2.0.0"
- }
- },
- "strip-indent": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz",
- "integrity": "sha512-RsSNPLpq6YUL7QYy44RnPVTn/lcVZtb48Uof3X5JLbF4zD/Gs7ZFDv2HWol+leoQN2mT86LAzSshGfkTlSOpsA==",
- "dev": true
- },
- "trim-newlines": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz",
- "integrity": "sha512-MTBWv3jhVjTU7XR3IQHllbiJs8sc75a80OEhB6or/q7pLTWgQ0bMGQXXYQSrSuXe6WiKWDZ5txXY5P59a/coVA==",
- "dev": true
- }
- }
- },
- "cookie-jar": {
- "version": "0.3.0",
- "dev": true
- },
- "copy-concurrently": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz",
- "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==",
- "dev": true,
- "requires": {
- "aproba": "^1.1.1",
- "fs-write-stream-atomic": "^1.0.8",
- "iferr": "^0.1.5",
- "mkdirp": "^0.5.1",
- "rimraf": "^2.5.4",
- "run-queue": "^1.0.0"
- },
- "dependencies": {
- "aproba": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
- "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
- "dev": true
- },
- "rimraf": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
- "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
- "dev": true,
- "requires": {
- "glob": "^7.1.3"
- }
- }
- }
- },
- "copy-descriptor": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
- "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==",
- "dev": true
- },
- "core-util-is": {
- "version": "1.0.2",
- "dev": true
- },
- "cosmiconfig": {
- "version": "5.2.1",
- "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz",
- "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==",
- "dev": true,
- "requires": {
- "import-fresh": "^2.0.0",
- "is-directory": "^0.3.1",
- "js-yaml": "^3.13.1",
- "parse-json": "^4.0.0"
- },
- "dependencies": {
- "import-fresh": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz",
- "integrity": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==",
- "dev": true,
- "requires": {
- "caller-path": "^2.0.0",
- "resolve-from": "^3.0.0"
- }
- },
- "resolve-from": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
- "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==",
- "dev": true
- }
- }
- },
- "cross-spawn": {
- "version": "6.0.5",
- "dev": true,
- "requires": {
- "nice-try": "^1.0.4",
- "path-key": "^2.0.1",
- "semver": "^5.5.0",
- "shebang-command": "^1.2.0",
- "which": "^1.2.9"
- },
- "dependencies": {
- "semver": {
- "version": "5.7.1",
- "dev": true
- }
- }
- },
- "cryptiles": {
- "version": "0.2.2",
- "dev": true,
- "requires": {
- "boom": "0.4.x"
- }
- },
- "ctype": {
- "version": "0.5.3",
- "dev": true
- },
- "currently-unhandled": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz",
- "integrity": "sha512-/fITjgjGU50vjQ4FH6eUoYu+iUoUKIXws2hL15JJpIR+BbTxaXQsMuuyjtNh2WqsSBS5nsaZHFsFecyw5CCAng==",
- "dev": true,
- "requires": {
- "array-find-index": "^1.0.1"
- }
- },
- "cyclist": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.2.tgz",
- "integrity": "sha512-0sVXIohTfLqVIW3kb/0n6IiWF3Ifj5nm2XaSrLq2DI6fKIGa2fYAZdk917rUneaeLVpYfFcyXE2ft0fe3remsA==",
- "dev": true
- },
- "dargs": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/dargs/-/dargs-4.1.0.tgz",
- "integrity": "sha512-jyweV/k0rbv2WK4r9KLayuBrSh2Py0tNmV7LBoSMH4hMQyrG8OPyIOWB2VEx4DJKXWmK4lopYMVvORlDt2S8Aw==",
- "dev": true,
- "requires": {
- "number-is-nan": "^1.0.0"
- }
- },
- "dashdash": {
- "version": "1.14.1",
- "dev": true,
- "requires": {
- "assert-plus": "^1.0.0"
- }
- },
- "dateformat": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz",
- "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==",
- "dev": true
- },
- "debuglog": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz",
- "integrity": "sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw==",
- "dev": true
- },
- "decamelize": {
- "version": "1.2.0",
- "dev": true
- },
- "decamelize-keys": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz",
- "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==",
- "dev": true,
- "requires": {
- "decamelize": "^1.1.0",
- "map-obj": "^1.0.0"
- },
- "dependencies": {
- "map-obj": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
- "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==",
- "dev": true
- }
- }
- },
- "decode-uri-component": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz",
- "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==",
- "dev": true
- },
- "dedent": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz",
- "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==",
- "dev": true
- },
- "defaults": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz",
- "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==",
- "dev": true,
- "requires": {
- "clone": "^1.0.2"
- }
- },
- "define-properties": {
- "version": "1.2.0",
- "dev": true,
- "requires": {
- "has-property-descriptors": "^1.0.0",
- "object-keys": "^1.1.1"
- }
- },
- "define-property": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
- "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
- "dev": true,
- "requires": {
- "is-descriptor": "^1.0.2",
- "isobject": "^3.0.1"
- }
- },
- "delayed-stream": {
- "version": "1.0.0",
- "dev": true
- },
- "delegates": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
- "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==",
- "dev": true
- },
- "deprecation": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz",
- "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==",
- "dev": true
- },
- "detect-indent": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz",
- "integrity": "sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g==",
- "dev": true
- },
- "dezalgo": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz",
- "integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==",
- "dev": true,
- "requires": {
- "asap": "^2.0.0",
- "wrappy": "1"
- }
- },
- "dot-prop": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.1.tgz",
- "integrity": "sha512-l0p4+mIuJIua0mhxGoh4a+iNL9bmeK5DvnSVQa6T0OhrVmaEa1XScX5Etc673FePCJOArq/4Pa2cLGODUWTPOQ==",
- "dev": true,
- "requires": {
- "is-obj": "^1.0.0"
- }
- },
- "duplexer": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz",
- "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==",
- "dev": true
- },
- "duplexer2": {
- "version": "0.0.2",
- "dev": true,
- "requires": {
- "readable-stream": "~1.1.9"
- },
- "dependencies": {
- "isarray": {
- "version": "0.0.1",
- "dev": true
- },
- "readable-stream": {
- "version": "1.1.14",
- "dev": true,
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.1",
- "isarray": "0.0.1",
- "string_decoder": "~0.10.x"
- }
- },
- "string_decoder": {
- "version": "0.10.31",
- "dev": true
- }
- }
- },
- "duplexify": {
- "version": "3.7.1",
- "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz",
- "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==",
- "dev": true,
- "requires": {
- "end-of-stream": "^1.0.0",
- "inherits": "^2.0.1",
- "readable-stream": "^2.0.0",
- "stream-shift": "^1.0.0"
- },
- "dependencies": {
- "readable-stream": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
- "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
- "dev": true,
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- }
- }
- },
- "ecc-jsbn": {
- "version": "0.1.2",
- "dev": true,
- "requires": {
- "jsbn": "~0.1.0",
- "safer-buffer": "^2.1.0"
- }
- },
- "emoji-regex": {
- "version": "8.0.0",
- "dev": true
- },
- "encoding": {
- "version": "0.1.13",
- "dev": true,
- "requires": {
- "iconv-lite": "^0.6.2"
- },
- "dependencies": {
- "iconv-lite": {
- "version": "0.6.3",
- "dev": true,
- "requires": {
- "safer-buffer": ">= 2.1.2 < 3.0.0"
- }
- }
- }
- },
- "end-of-stream": {
- "version": "1.4.4",
- "dev": true,
- "requires": {
- "once": "^1.4.0"
- }
- },
- "env-paths": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz",
- "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==",
- "dev": true
- },
- "envinfo": {
- "version": "7.10.0",
- "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.10.0.tgz",
- "integrity": "sha512-ZtUjZO6l5mwTHvc1L9+1q5p/R3wTopcfqMW8r5t8SJSKqeVI/LtajORwRFEKpEFuekjD0VBjwu1HMxL4UalIRw==",
- "dev": true
- },
- "err-code": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz",
- "integrity": "sha512-CJAN+O0/yA1CKfRn9SXOGctSpEM7DCon/r/5r2eXFMY2zCCJBasFhcM5I+1kh3Ap11FsQCX+vGHceNPvpWKhoA==",
- "dev": true
- },
- "error-ex": {
- "version": "1.3.2",
- "dev": true,
- "requires": {
- "is-arrayish": "^0.2.1"
- }
- },
- "es-abstract": {
- "version": "1.22.1",
- "dev": true,
- "requires": {
- "array-buffer-byte-length": "^1.0.0",
- "arraybuffer.prototype.slice": "^1.0.1",
- "available-typed-arrays": "^1.0.5",
- "call-bind": "^1.0.2",
- "es-set-tostringtag": "^2.0.1",
- "es-to-primitive": "^1.2.1",
- "function.prototype.name": "^1.1.5",
- "get-intrinsic": "^1.2.1",
- "get-symbol-description": "^1.0.0",
- "globalthis": "^1.0.3",
- "gopd": "^1.0.1",
- "has": "^1.0.3",
- "has-property-descriptors": "^1.0.0",
- "has-proto": "^1.0.1",
- "has-symbols": "^1.0.3",
- "internal-slot": "^1.0.5",
- "is-array-buffer": "^3.0.2",
- "is-callable": "^1.2.7",
- "is-negative-zero": "^2.0.2",
- "is-regex": "^1.1.4",
- "is-shared-array-buffer": "^1.0.2",
- "is-string": "^1.0.7",
- "is-typed-array": "^1.1.10",
- "is-weakref": "^1.0.2",
- "object-inspect": "^1.12.3",
- "object-keys": "^1.1.1",
- "object.assign": "^4.1.4",
- "regexp.prototype.flags": "^1.5.0",
- "safe-array-concat": "^1.0.0",
- "safe-regex-test": "^1.0.0",
- "string.prototype.trim": "^1.2.7",
- "string.prototype.trimend": "^1.0.6",
- "string.prototype.trimstart": "^1.0.6",
- "typed-array-buffer": "^1.0.0",
- "typed-array-byte-length": "^1.0.0",
- "typed-array-byte-offset": "^1.0.0",
- "typed-array-length": "^1.0.4",
- "unbox-primitive": "^1.0.2",
- "which-typed-array": "^1.1.10"
- },
- "dependencies": {
- "object.assign": {
- "version": "4.1.4",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
- "has-symbols": "^1.0.3",
- "object-keys": "^1.1.1"
- }
- }
- }
- },
- "es-array-method-boxes-properly": {
- "version": "1.0.0",
- "dev": true
- },
- "es-set-tostringtag": {
- "version": "2.0.1",
- "dev": true,
- "requires": {
- "get-intrinsic": "^1.1.3",
- "has": "^1.0.3",
- "has-tostringtag": "^1.0.0"
- }
- },
- "es-to-primitive": {
- "version": "1.2.1",
- "dev": true,
- "requires": {
- "is-callable": "^1.1.4",
- "is-date-object": "^1.0.1",
- "is-symbol": "^1.0.2"
- }
- },
- "es6-promise": {
- "version": "4.2.8",
- "dev": true
- },
- "es6-promisify": {
- "version": "5.0.0",
- "dev": true,
- "requires": {
- "es6-promise": "^4.0.3"
- }
- },
- "escape-string-regexp": {
- "version": "1.0.5",
- "dev": true
- },
- "esprima": {
- "version": "4.0.1",
- "dev": true
- },
- "eventemitter3": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz",
- "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==",
- "dev": true
- },
- "execa": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
- "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
- "dev": true,
- "requires": {
- "cross-spawn": "^6.0.0",
- "get-stream": "^4.0.0",
- "is-stream": "^1.1.0",
- "npm-run-path": "^2.0.0",
- "p-finally": "^1.0.0",
- "signal-exit": "^3.0.0",
- "strip-eof": "^1.0.0"
- }
- },
- "expand-brackets": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
- "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==",
- "dev": true,
- "requires": {
- "debug": "^2.3.3",
- "define-property": "^0.2.5",
- "extend-shallow": "^2.0.1",
- "posix-character-classes": "^0.1.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.1"
- },
- "dependencies": {
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
- "requires": {
- "ms": "2.0.0"
- }
- },
- "define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
- "dev": true,
- "requires": {
- "is-descriptor": "^0.1.0"
- }
- },
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- },
- "is-accessor-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
- "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "is-buffer": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
- "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
- "dev": true
- },
- "is-data-descriptor": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
- "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "is-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
- "dev": true,
- "requires": {
- "is-accessor-descriptor": "^0.1.6",
- "is-data-descriptor": "^0.1.4",
- "kind-of": "^5.0.0"
- }
- },
- "is-extendable": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
- "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
- "dev": true
- },
- "kind-of": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
- "dev": true
- },
- "ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
- "dev": true
- }
- }
- },
- "extend": {
- "version": "3.0.2",
- "dev": true
- },
- "extend-shallow": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
- "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==",
- "dev": true,
- "requires": {
- "assign-symbols": "^1.0.0",
- "is-extendable": "^1.0.1"
- }
- },
- "external-editor": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz",
- "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==",
- "dev": true,
- "requires": {
- "chardet": "^0.7.0",
- "iconv-lite": "^0.4.24",
- "tmp": "^0.0.33"
- }
- },
- "extglob": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
- "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
- "dev": true,
- "requires": {
- "array-unique": "^0.3.2",
- "define-property": "^1.0.0",
- "expand-brackets": "^2.1.4",
- "extend-shallow": "^2.0.1",
- "fragment-cache": "^0.2.1",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.1"
- },
- "dependencies": {
- "define-property": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
- "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",
- "dev": true,
- "requires": {
- "is-descriptor": "^1.0.0"
- }
- },
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- },
- "is-extendable": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
- "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
- "dev": true
- }
- }
- },
- "extsprintf": {
- "version": "1.3.0",
- "dev": true
- },
- "fast-deep-equal": {
- "version": "3.1.3",
- "dev": true
- },
- "fast-json-stable-stringify": {
- "version": "2.1.0",
- "dev": true
- },
- "figgy-pudding": {
- "version": "3.5.2",
- "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz",
- "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==",
- "dev": true
- },
- "figures": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
- "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==",
- "dev": true,
- "requires": {
- "escape-string-regexp": "^1.0.5"
- }
- },
- "filter-obj": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz",
- "integrity": "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==",
- "dev": true
- },
- "find-up": {
- "version": "4.1.0",
- "dev": true,
- "requires": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
- }
- },
- "flush-write-stream": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz",
- "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==",
- "dev": true,
- "requires": {
- "inherits": "^2.0.3",
- "readable-stream": "^2.3.6"
- },
- "dependencies": {
- "readable-stream": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
- "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
- "dev": true,
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- }
- }
- },
- "for-each": {
- "version": "0.3.3",
- "dev": true,
- "requires": {
- "is-callable": "^1.1.3"
- }
- },
- "for-in": {
- "version": "1.0.2",
- "dev": true
- },
- "foreach": {
- "version": "2.0.5",
- "dev": true
- },
- "forever-agent": {
- "version": "0.6.1",
- "dev": true
- },
- "fragment-cache": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
- "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==",
- "dev": true,
- "requires": {
- "map-cache": "^0.2.2"
- }
- },
- "from2": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
- "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==",
- "dev": true,
- "requires": {
- "inherits": "^2.0.1",
- "readable-stream": "^2.0.0"
- },
- "dependencies": {
- "readable-stream": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
- "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
- "dev": true,
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- }
- }
- },
- "fs-extra": {
- "version": "8.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
- "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^4.0.0",
- "universalify": "^0.1.0"
- },
- "dependencies": {
- "jsonfile": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
- "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.6"
- }
- },
- "universalify": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
- "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
- "dev": true
- }
- }
- },
- "fs-minipass": {
- "version": "1.2.7",
- "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz",
- "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==",
- "dev": true,
- "requires": {
- "minipass": "^2.6.0"
- }
- },
- "fs-write-stream-atomic": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz",
- "integrity": "sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA==",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.2",
- "iferr": "^0.1.5",
- "imurmurhash": "^0.1.4",
- "readable-stream": "1 || 2"
- },
- "dependencies": {
- "readable-stream": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
- "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
- "dev": true,
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- }
- }
- },
- "fs.realpath": {
- "version": "1.0.0",
- "dev": true
- },
- "function-bind": {
- "version": "1.1.1",
- "dev": true
- },
- "function.prototype.name": {
- "version": "1.1.5",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.3",
- "es-abstract": "^1.19.0",
- "functions-have-names": "^1.2.2"
- }
- },
- "functions-have-names": {
- "version": "1.2.3",
- "dev": true
- },
- "gauge": {
- "version": "2.7.4",
- "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
- "integrity": "sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==",
- "dev": true,
- "requires": {
- "aproba": "^1.0.3",
- "console-control-strings": "^1.0.0",
- "has-unicode": "^2.0.0",
- "object-assign": "^4.1.0",
- "signal-exit": "^3.0.0",
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1",
- "wide-align": "^1.1.0"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
- "dev": true
- },
- "aproba": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
- "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
- "dev": true
- },
- "is-fullwidth-code-point": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
- "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==",
- "dev": true,
- "requires": {
- "number-is-nan": "^1.0.0"
- }
- },
- "string-width": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
- "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==",
- "dev": true,
- "requires": {
- "code-point-at": "^1.0.0",
- "is-fullwidth-code-point": "^1.0.0",
- "strip-ansi": "^3.0.0"
- }
- },
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
- "dev": true,
- "requires": {
- "ansi-regex": "^2.0.0"
- }
- }
- }
- },
- "genfun": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/genfun/-/genfun-5.0.0.tgz",
- "integrity": "sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA==",
- "dev": true
- },
- "get-caller-file": {
- "version": "2.0.5",
- "dev": true
- },
- "get-intrinsic": {
- "version": "1.2.1",
- "dev": true,
- "requires": {
- "function-bind": "^1.1.1",
- "has": "^1.0.3",
- "has-proto": "^1.0.1",
- "has-symbols": "^1.0.3"
- }
- },
- "get-pkg-repo": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-1.4.0.tgz",
- "integrity": "sha512-xPCyvcEOxCJDxhBfXDNH+zA7mIRGb2aY1gIUJWsZkpJbp1BLHl+/Sycg26Dv+ZbZAJkO61tzbBtqHUi30NGBvg==",
- "dev": true,
- "requires": {
- "hosted-git-info": "^2.1.4",
- "meow": "^3.3.0",
- "normalize-package-data": "^2.3.0",
- "parse-github-repo-url": "^1.3.0",
- "through2": "^2.0.0"
- },
- "dependencies": {
- "camelcase": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
- "integrity": "sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw==",
- "dev": true
- },
- "camelcase-keys": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz",
- "integrity": "sha512-bA/Z/DERHKqoEOrp+qeGKw1QlvEQkGZSc0XaY6VnTxZr+Kv1G5zFwttpjv8qxZ/sBPT4nthwZaAcsAZTJlSKXQ==",
- "dev": true,
- "requires": {
- "camelcase": "^2.0.0",
- "map-obj": "^1.0.0"
- }
- },
- "find-up": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz",
- "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==",
- "dev": true,
- "requires": {
- "path-exists": "^2.0.0",
- "pinkie-promise": "^2.0.0"
- }
- },
- "indent-string": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz",
- "integrity": "sha512-aqwDFWSgSgfRaEwao5lg5KEcVd/2a+D1rvoG7NdilmYz0NwRk6StWpWdz/Hpk34MKPpx7s8XxUqimfcQK6gGlg==",
- "dev": true,
- "requires": {
- "repeating": "^2.0.0"
- }
- },
- "load-json-file": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
- "integrity": "sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.2",
- "parse-json": "^2.2.0",
- "pify": "^2.0.0",
- "pinkie-promise": "^2.0.0",
- "strip-bom": "^2.0.0"
- }
- },
- "map-obj": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz",
- "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==",
- "dev": true
- },
- "meow": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz",
- "integrity": "sha512-TNdwZs0skRlpPpCUK25StC4VH+tP5GgeY1HQOOGP+lQ2xtdkN2VtT/5tiX9k3IWpkBPV9b3LsAWXn4GGi/PrSA==",
- "dev": true,
- "requires": {
- "camelcase-keys": "^2.0.0",
- "decamelize": "^1.1.2",
- "loud-rejection": "^1.0.0",
- "map-obj": "^1.0.1",
- "minimist": "^1.1.3",
- "normalize-package-data": "^2.3.4",
- "object-assign": "^4.0.1",
- "read-pkg-up": "^1.0.1",
- "redent": "^1.0.0",
- "trim-newlines": "^1.0.0"
- }
- },
- "parse-json": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
- "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==",
- "dev": true,
- "requires": {
- "error-ex": "^1.2.0"
- }
- },
- "path-exists": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz",
- "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==",
- "dev": true,
- "requires": {
- "pinkie-promise": "^2.0.0"
- }
- },
- "path-type": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz",
- "integrity": "sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.2",
- "pify": "^2.0.0",
- "pinkie-promise": "^2.0.0"
- }
- },
- "pify": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
- "dev": true
- },
- "read-pkg": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz",
- "integrity": "sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==",
- "dev": true,
- "requires": {
- "load-json-file": "^1.0.0",
- "normalize-package-data": "^2.3.2",
- "path-type": "^1.0.0"
- }
- },
- "read-pkg-up": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz",
- "integrity": "sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==",
- "dev": true,
- "requires": {
- "find-up": "^1.0.0",
- "read-pkg": "^1.0.0"
- }
- },
- "readable-stream": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
- "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
- "dev": true,
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "redent": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
- "integrity": "sha512-qtW5hKzGQZqKoh6JNSD+4lfitfPKGz42e6QwiRmPM5mmKtR0N41AbJRYu0xJi7nhOJ4WDgRkKvAk6tw4WIwR4g==",
- "dev": true,
- "requires": {
- "indent-string": "^2.1.0",
- "strip-indent": "^1.0.1"
- }
- },
- "safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- },
- "strip-bom": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
- "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==",
- "dev": true,
- "requires": {
- "is-utf8": "^0.2.0"
- }
- },
- "strip-indent": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz",
- "integrity": "sha512-I5iQq6aFMM62fBEAIB/hXzwJD6EEZ0xEGCX2t7oXqaKPIRgt4WruAQ285BISgdkP+HLGWyeGmNJcpIwFeRYRUA==",
- "dev": true,
- "requires": {
- "get-stdin": "^4.0.1"
- }
- },
- "through2": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
- "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
- "dev": true,
- "requires": {
- "readable-stream": "~2.3.6",
- "xtend": "~4.0.1"
- }
- },
- "trim-newlines": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz",
- "integrity": "sha512-Nm4cF79FhSTzrLKGDMi3I4utBtFv8qKy4sq1enftf2gMdpqI8oVQTAfySkTz5r49giVzDj88SVZXP4CeYQwjaw==",
- "dev": true
- }
- }
- },
- "get-port": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/get-port/-/get-port-4.2.0.tgz",
- "integrity": "sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw==",
- "dev": true
- },
- "get-stdin": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
- "integrity": "sha512-F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw==",
- "dev": true
- },
- "get-stream": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
- "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
- "dev": true,
- "requires": {
- "pump": "^3.0.0"
- }
- },
- "get-symbol-description": {
- "version": "1.0.0",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "get-intrinsic": "^1.1.1"
- }
- },
- "get-value": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
- "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==",
- "dev": true
- },
- "getpass": {
- "version": "0.1.7",
- "dev": true,
- "requires": {
- "assert-plus": "^1.0.0"
- }
- },
- "ghauth": {
- "version": "3.0.0",
- "dev": true,
- "requires": {
- "application-config": "~0.1.1",
- "bl": "~0.9.4",
- "hyperquest": "~1.2.0",
- "mkdirp": "~0.5.0",
- "read": "~1.0.5",
- "xtend": "~4.0.0"
- }
- },
- "git-raw-commits": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.0.tgz",
- "integrity": "sha512-w4jFEJFgKXMQJ0H0ikBk2S+4KP2VEjhCvLCNqbNRQC8BgGWgLKNCO7a9K9LI+TVT7Gfoloje502sEnctibffgg==",
- "dev": true,
- "requires": {
- "dargs": "^4.0.1",
- "lodash.template": "^4.0.2",
- "meow": "^4.0.0",
- "split2": "^2.0.0",
- "through2": "^2.0.0"
- },
- "dependencies": {
- "camelcase": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
- "integrity": "sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw==",
- "dev": true
- },
- "camelcase-keys": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz",
- "integrity": "sha512-Ej37YKYbFUI8QiYlvj9YHb6/Z60dZyPJW0Cs8sFilMbd2lP0bw3ylAq9yJkK4lcTA2dID5fG8LjmJYbO7kWb7Q==",
- "dev": true,
- "requires": {
- "camelcase": "^4.1.0",
- "map-obj": "^2.0.0",
- "quick-lru": "^1.0.0"
- }
- },
- "indent-string": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz",
- "integrity": "sha512-BYqTHXTGUIvg7t1r4sJNKcbDZkL92nkXA8YtRpbjFHRHGDL/NtUeiBJMeE60kIFN/Mg8ESaWQvftaYMGJzQZCQ==",
- "dev": true
- },
- "map-obj": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz",
- "integrity": "sha512-TzQSV2DiMYgoF5RycneKVUzIa9bQsj/B3tTgsE3dOGqlzHnGIDaC7XBE7grnA+8kZPnfqSGFe95VHc2oc0VFUQ==",
- "dev": true
- },
- "meow": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz",
- "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==",
- "dev": true,
- "requires": {
- "camelcase-keys": "^4.0.0",
- "decamelize-keys": "^1.0.0",
- "loud-rejection": "^1.0.0",
- "minimist": "^1.1.3",
- "minimist-options": "^3.0.1",
- "normalize-package-data": "^2.3.4",
- "read-pkg-up": "^3.0.0",
- "redent": "^2.0.0",
- "trim-newlines": "^2.0.0"
- }
- },
- "minimist-options": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz",
- "integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==",
- "dev": true,
- "requires": {
- "arrify": "^1.0.1",
- "is-plain-obj": "^1.1.0"
- }
- },
- "quick-lru": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz",
- "integrity": "sha512-tRS7sTgyxMXtLum8L65daJnHUhfDUgboRdcWW2bR9vBfrj2+O5HSMbQOJfJJjIVSPFqbBCF37FpwWXGitDc5tA==",
- "dev": true
- },
- "readable-stream": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
- "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
- "dev": true,
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "redent": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz",
- "integrity": "sha512-XNwrTx77JQCEMXTeb8movBKuK75MgH0RZkujNuDKCezemx/voapl9i2gCSi8WWm8+ox5ycJi1gxF22fR7c0Ciw==",
- "dev": true,
- "requires": {
- "indent-string": "^3.0.0",
- "strip-indent": "^2.0.0"
- }
- },
- "safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "split2": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/split2/-/split2-2.2.0.tgz",
- "integrity": "sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw==",
- "dev": true,
- "requires": {
- "through2": "^2.0.2"
- }
- },
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- },
- "strip-indent": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz",
- "integrity": "sha512-RsSNPLpq6YUL7QYy44RnPVTn/lcVZtb48Uof3X5JLbF4zD/Gs7ZFDv2HWol+leoQN2mT86LAzSshGfkTlSOpsA==",
- "dev": true
- },
- "through2": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
- "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
- "dev": true,
- "requires": {
- "readable-stream": "~2.3.6",
- "xtend": "~4.0.1"
- }
- },
- "trim-newlines": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz",
- "integrity": "sha512-MTBWv3jhVjTU7XR3IQHllbiJs8sc75a80OEhB6or/q7pLTWgQ0bMGQXXYQSrSuXe6WiKWDZ5txXY5P59a/coVA==",
- "dev": true
- }
- }
- },
- "git-remote-origin-url": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz",
- "integrity": "sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw==",
- "dev": true,
- "requires": {
- "gitconfiglocal": "^1.0.0",
- "pify": "^2.3.0"
- },
- "dependencies": {
- "pify": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
- "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",
- "dev": true
- }
- }
- },
- "git-semver-tags": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-2.0.3.tgz",
- "integrity": "sha512-tj4FD4ww2RX2ae//jSrXZzrocla9db5h0V7ikPl1P/WwoZar9epdUhwR7XHXSgc+ZkNq72BEEerqQuicoEQfzA==",
- "dev": true,
- "requires": {
- "meow": "^4.0.0",
- "semver": "^6.0.0"
- },
- "dependencies": {
- "camelcase": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz",
- "integrity": "sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw==",
- "dev": true
- },
- "camelcase-keys": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz",
- "integrity": "sha512-Ej37YKYbFUI8QiYlvj9YHb6/Z60dZyPJW0Cs8sFilMbd2lP0bw3ylAq9yJkK4lcTA2dID5fG8LjmJYbO7kWb7Q==",
- "dev": true,
- "requires": {
- "camelcase": "^4.1.0",
- "map-obj": "^2.0.0",
- "quick-lru": "^1.0.0"
- }
- },
- "indent-string": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz",
- "integrity": "sha512-BYqTHXTGUIvg7t1r4sJNKcbDZkL92nkXA8YtRpbjFHRHGDL/NtUeiBJMeE60kIFN/Mg8ESaWQvftaYMGJzQZCQ==",
- "dev": true
- },
- "map-obj": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz",
- "integrity": "sha512-TzQSV2DiMYgoF5RycneKVUzIa9bQsj/B3tTgsE3dOGqlzHnGIDaC7XBE7grnA+8kZPnfqSGFe95VHc2oc0VFUQ==",
- "dev": true
- },
- "meow": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz",
- "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==",
- "dev": true,
- "requires": {
- "camelcase-keys": "^4.0.0",
- "decamelize-keys": "^1.0.0",
- "loud-rejection": "^1.0.0",
- "minimist": "^1.1.3",
- "minimist-options": "^3.0.1",
- "normalize-package-data": "^2.3.4",
- "read-pkg-up": "^3.0.0",
- "redent": "^2.0.0",
- "trim-newlines": "^2.0.0"
- }
- },
- "minimist-options": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz",
- "integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==",
- "dev": true,
- "requires": {
- "arrify": "^1.0.1",
- "is-plain-obj": "^1.1.0"
- }
- },
- "quick-lru": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz",
- "integrity": "sha512-tRS7sTgyxMXtLum8L65daJnHUhfDUgboRdcWW2bR9vBfrj2+O5HSMbQOJfJJjIVSPFqbBCF37FpwWXGitDc5tA==",
- "dev": true
- },
- "redent": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz",
- "integrity": "sha512-XNwrTx77JQCEMXTeb8movBKuK75MgH0RZkujNuDKCezemx/voapl9i2gCSi8WWm8+ox5ycJi1gxF22fR7c0Ciw==",
- "dev": true,
- "requires": {
- "indent-string": "^3.0.0",
- "strip-indent": "^2.0.0"
- }
- },
- "semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true
- },
- "strip-indent": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz",
- "integrity": "sha512-RsSNPLpq6YUL7QYy44RnPVTn/lcVZtb48Uof3X5JLbF4zD/Gs7ZFDv2HWol+leoQN2mT86LAzSshGfkTlSOpsA==",
- "dev": true
- },
- "trim-newlines": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz",
- "integrity": "sha512-MTBWv3jhVjTU7XR3IQHllbiJs8sc75a80OEhB6or/q7pLTWgQ0bMGQXXYQSrSuXe6WiKWDZ5txXY5P59a/coVA==",
- "dev": true
- }
- }
- },
- "git-up": {
- "version": "4.0.5",
- "resolved": "https://registry.npmjs.org/git-up/-/git-up-4.0.5.tgz",
- "integrity": "sha512-YUvVDg/vX3d0syBsk/CKUTib0srcQME0JyHkL5BaYdwLsiCslPWmDSi8PUMo9pXYjrryMcmsCoCgsTpSCJEQaA==",
- "dev": true,
- "requires": {
- "is-ssh": "^1.3.0",
- "parse-url": "^6.0.0"
- }
- },
- "git-url-parse": {
- "version": "11.6.0",
- "resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-11.6.0.tgz",
- "integrity": "sha512-WWUxvJs5HsyHL6L08wOusa/IXYtMuCAhrMmnTjQPpBU0TTHyDhnOATNH3xNQz7YOQUsqIIPTGr4xiVti1Hsk5g==",
- "dev": true,
- "requires": {
- "git-up": "^4.0.0"
- }
- },
- "gitconfiglocal": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz",
- "integrity": "sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ==",
- "dev": true,
- "requires": {
- "ini": "^1.3.2"
- }
- },
- "github": {
- "version": "0.1.16",
- "dev": true
- },
- "github-changes": {
- "version": "1.1.2",
- "dev": true,
- "requires": {
- "bluebird": "1.0.3",
- "ghauth": "3.0.0",
- "github": "0.1.16",
- "github-commit-stream": "0.1.0",
- "lodash": "2.4.1",
- "moment-timezone": "0.5.5",
- "nomnom": "1.6.2",
- "parse-link-header": "0.1.0",
- "semver": "5.4.1"
- },
- "dependencies": {
- "bluebird": {
- "version": "1.0.3",
- "dev": true
- },
- "lodash": {
- "version": "2.4.1",
- "dev": true
- },
- "semver": {
- "version": "5.4.1",
- "dev": true
- }
- }
- },
- "github-commit-stream": {
- "version": "0.1.0",
- "dev": true,
- "requires": {
- "async": "~0.2.9",
- "parse-link-header": "~0.1.0",
- "request": "~2.22.0",
- "through": "~2.3.4"
- },
- "dependencies": {
- "asn1": {
- "version": "0.1.11",
- "dev": true
- },
- "assert-plus": {
- "version": "0.1.5",
- "dev": true
- },
- "combined-stream": {
- "version": "0.0.7",
- "dev": true,
- "requires": {
- "delayed-stream": "0.0.5"
- }
- },
- "delayed-stream": {
- "version": "0.0.5",
- "dev": true
- },
- "forever-agent": {
- "version": "0.5.2",
- "dev": true
- },
- "form-data": {
- "version": "0.0.8",
- "dev": true,
- "requires": {
- "async": "~0.2.7",
- "combined-stream": "~0.0.4",
- "mime": "~1.2.2"
- }
- },
- "http-signature": {
- "version": "0.10.1",
- "dev": true,
- "requires": {
- "asn1": "0.1.11",
- "assert-plus": "^0.1.5",
- "ctype": "0.5.3"
- }
- },
- "json-stringify-safe": {
- "version": "4.0.0",
- "dev": true
- },
- "node-uuid": {
- "version": "1.4.8",
- "dev": true
- },
- "oauth-sign": {
- "version": "0.3.0",
- "dev": true
- },
- "qs": {
- "version": "0.6.6",
- "dev": true
- },
- "request": {
- "version": "2.22.0",
- "dev": true,
- "requires": {
- "aws-sign": "~0.3.0",
- "cookie-jar": "~0.3.0",
- "forever-agent": "~0.5.0",
- "form-data": "0.0.8",
- "hawk": "~0.13.0",
- "http-signature": "~0.10.0",
- "json-stringify-safe": "~4.0.0",
- "mime": "~1.2.9",
- "node-uuid": "~1.4.0",
- "oauth-sign": "~0.3.0",
- "qs": "~0.6.0",
- "tunnel-agent": "~0.3.0"
- }
- },
- "tunnel-agent": {
- "version": "0.3.0",
- "dev": true
- }
- }
- },
- "glob": {
- "version": "7.2.3",
- "dev": true,
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- },
- "dependencies": {
- "minimatch": {
- "version": "3.1.2",
- "dev": true,
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- }
- }
- },
- "glob-parent": {
- "version": "5.1.2",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.1"
- }
- },
- "glob-to-regexp": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz",
- "integrity": "sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig==",
- "dev": true
- },
- "globalthis": {
- "version": "1.0.3",
- "dev": true,
- "requires": {
- "define-properties": "^1.1.3"
- }
- },
- "gopd": {
- "version": "1.0.1",
- "dev": true,
- "requires": {
- "get-intrinsic": "^1.1.3"
- }
- },
- "graceful-fs": {
- "version": "4.2.11",
- "dev": true
- },
- "handlebars": {
- "version": "4.7.8",
- "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz",
- "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==",
- "dev": true,
- "requires": {
- "minimist": "^1.2.5",
- "neo-async": "^2.6.2",
- "source-map": "^0.6.1",
- "uglify-js": "^3.1.4",
- "wordwrap": "^1.0.0"
- }
- },
- "har-schema": {
- "version": "2.0.0",
- "dev": true
- },
- "har-validator": {
- "version": "5.1.5",
- "dev": true,
- "requires": {
- "ajv": "^6.12.3",
- "har-schema": "^2.0.0"
- }
- },
- "hard-rejection": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz",
- "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==",
- "dev": true
- },
- "has": {
- "version": "1.0.3",
- "dev": true,
- "requires": {
- "function-bind": "^1.1.1"
- }
- },
- "has-bigints": {
- "version": "1.0.2",
- "dev": true
- },
- "has-flag": {
- "version": "3.0.0",
- "dev": true
- },
- "has-property-descriptors": {
- "version": "1.0.0",
- "dev": true,
- "requires": {
- "get-intrinsic": "^1.1.1"
- }
- },
- "has-proto": {
- "version": "1.0.1",
- "dev": true
- },
- "has-symbols": {
- "version": "1.0.3",
- "dev": true
- },
- "has-tostringtag": {
- "version": "1.0.0",
- "dev": true,
- "requires": {
- "has-symbols": "^1.0.2"
- }
- },
- "has-unicode": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
- "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==",
- "dev": true
- },
- "has-value": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
- "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==",
- "dev": true,
- "requires": {
- "get-value": "^2.0.6",
- "has-values": "^1.0.0",
- "isobject": "^3.0.0"
- }
- },
- "has-values": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
- "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==",
- "dev": true,
- "requires": {
- "is-number": "^3.0.0",
- "kind-of": "^4.0.0"
- },
- "dependencies": {
- "is-buffer": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
- "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
- "dev": true
- },
- "is-number": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
- "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "kind-of": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
- "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "hawk": {
- "version": "0.13.1",
- "dev": true,
- "requires": {
- "boom": "0.4.x",
- "cryptiles": "0.2.x",
- "hoek": "0.8.x",
- "sntp": "0.2.x"
- }
- },
- "hoek": {
- "version": "0.8.5",
- "dev": true
- },
- "hosted-git-info": {
- "version": "2.8.8",
- "dev": true
- },
- "http-cache-semantics": {
- "version": "3.8.1",
- "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz",
- "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==",
- "dev": true
- },
- "http-proxy-agent": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz",
- "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==",
- "dev": true,
- "requires": {
- "agent-base": "4",
- "debug": "3.1.0"
- },
- "dependencies": {
- "agent-base": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz",
- "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==",
- "dev": true,
- "requires": {
- "es6-promisify": "^5.0.0"
- }
- },
- "debug": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
- "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
- "dev": true,
- "requires": {
- "ms": "2.0.0"
- }
- },
- "ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
- "dev": true
- }
- }
- },
- "http-signature": {
- "version": "1.2.0",
- "dev": true,
- "requires": {
- "assert-plus": "^1.0.0",
- "jsprim": "^1.2.2",
- "sshpk": "^1.7.0"
- }
- },
- "humanize-ms": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz",
- "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==",
- "dev": true,
- "requires": {
- "ms": "^2.0.0"
- }
- },
- "hyperquest": {
- "version": "1.2.0",
- "dev": true,
- "requires": {
- "duplexer2": "~0.0.2",
- "through2": "~0.6.3"
- },
- "dependencies": {
- "isarray": {
- "version": "0.0.1",
- "dev": true
- },
- "readable-stream": {
- "version": "1.0.34",
- "dev": true,
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.1",
- "isarray": "0.0.1",
- "string_decoder": "~0.10.x"
- }
- },
- "string_decoder": {
- "version": "0.10.31",
- "dev": true
- },
- "through2": {
- "version": "0.6.5",
- "dev": true,
- "requires": {
- "readable-stream": ">=1.0.33-1 <1.1.0-0",
- "xtend": ">=4.0.0 <4.1.0-0"
- }
- }
- }
- },
- "iconv-lite": {
- "version": "0.4.24",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
- "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
- "dev": true,
- "requires": {
- "safer-buffer": ">= 2.1.2 < 3"
- }
- },
- "iferr": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz",
- "integrity": "sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA==",
- "dev": true
- },
- "ignore-walk": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz",
- "integrity": "sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==",
- "dev": true,
- "requires": {
- "minimatch": "^3.0.4"
- }
- },
- "import-local": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz",
- "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==",
- "dev": true,
- "requires": {
- "pkg-dir": "^3.0.0",
- "resolve-cwd": "^2.0.0"
- },
- "dependencies": {
- "find-up": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
- "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
- "dev": true,
- "requires": {
- "locate-path": "^3.0.0"
- }
- },
- "locate-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
- "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
- "dev": true,
- "requires": {
- "p-locate": "^3.0.0",
- "path-exists": "^3.0.0"
- }
- },
- "p-locate": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
- "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
- "dev": true,
- "requires": {
- "p-limit": "^2.0.0"
- }
- },
- "path-exists": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
- "dev": true
- },
- "pkg-dir": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
- "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
- "dev": true,
- "requires": {
- "find-up": "^3.0.0"
- }
- }
- }
- },
- "imurmurhash": {
- "version": "0.1.4",
- "dev": true
- },
- "indent-string": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
- "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
- "dev": true
- },
- "indexof": {
- "version": "0.0.1",
- "dev": true
- },
- "infer-owner": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz",
- "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==",
- "dev": true
- },
- "inflight": {
- "version": "1.0.6",
- "dev": true,
- "requires": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "inherits": {
- "version": "2.0.4",
- "dev": true
- },
- "ini": {
- "version": "1.3.8",
- "dev": true
- },
- "init-package-json": {
- "version": "1.10.3",
- "resolved": "https://registry.npmjs.org/init-package-json/-/init-package-json-1.10.3.tgz",
- "integrity": "sha512-zKSiXKhQveNteyhcj1CoOP8tqp1QuxPIPBl8Bid99DGLFqA1p87M6lNgfjJHSBoWJJlidGOv5rWjyYKEB3g2Jw==",
- "dev": true,
- "requires": {
- "glob": "^7.1.1",
- "npm-package-arg": "^4.0.0 || ^5.0.0 || ^6.0.0",
- "promzard": "^0.3.0",
- "read": "~1.0.1",
- "read-package-json": "1 || 2",
- "semver": "2.x || 3.x || 4 || 5",
- "validate-npm-package-license": "^3.0.1",
- "validate-npm-package-name": "^3.0.0"
- },
- "dependencies": {
- "semver": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
- "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
- "dev": true
- }
- }
- },
- "inquirer": {
- "version": "6.5.2",
- "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz",
- "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==",
- "dev": true,
- "requires": {
- "ansi-escapes": "^3.2.0",
- "chalk": "^2.4.2",
- "cli-cursor": "^2.1.0",
- "cli-width": "^2.0.0",
- "external-editor": "^3.0.3",
- "figures": "^2.0.0",
- "lodash": "^4.17.12",
- "mute-stream": "0.0.7",
- "run-async": "^2.2.0",
- "rxjs": "^6.4.0",
- "string-width": "^2.1.0",
- "strip-ansi": "^5.1.0",
- "through": "^2.3.6"
- },
- "dependencies": {
- "ansi-escapes": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz",
- "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==",
- "dev": true
- },
- "ansi-regex": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
- "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
- "dev": true
- },
- "cli-cursor": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
- "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==",
- "dev": true,
- "requires": {
- "restore-cursor": "^2.0.0"
- }
- },
- "is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
- "dev": true
- },
- "mimic-fn": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz",
- "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==",
- "dev": true
- },
- "onetime": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
- "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==",
- "dev": true,
- "requires": {
- "mimic-fn": "^1.0.0"
- }
- },
- "restore-cursor": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz",
- "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==",
- "dev": true,
- "requires": {
- "onetime": "^2.0.0",
- "signal-exit": "^3.0.2"
- }
- },
- "string-width": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
- "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
- "dev": true,
- "requires": {
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^4.0.0"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz",
- "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==",
- "dev": true
- },
- "strip-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
- "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==",
- "dev": true,
- "requires": {
- "ansi-regex": "^3.0.0"
- }
- }
- }
- },
- "strip-ansi": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
- "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
- "dev": true,
- "requires": {
- "ansi-regex": "^4.1.0"
- }
- }
- }
- },
- "internal-slot": {
- "version": "1.0.5",
- "dev": true,
- "requires": {
- "get-intrinsic": "^1.2.0",
- "has": "^1.0.3",
- "side-channel": "^1.0.4"
- }
- },
- "ip": {
- "version": "1.1.5",
- "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz",
- "integrity": "sha512-rBtCAQAJm8A110nbwn6YdveUnuZH3WrC36IwkRXxDnq53JvXA2NVQvB7IHyKomxK1MJ4VDNw3UtFDdXQ+AvLYA==",
- "dev": true
- },
- "is": {
- "version": "0.2.7",
- "dev": true
- },
- "is-accessor-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
- "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-array-buffer": {
- "version": "3.0.2",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "get-intrinsic": "^1.2.0",
- "is-typed-array": "^1.1.10"
- }
- },
- "is-arrayish": {
- "version": "0.2.1",
- "dev": true
- },
- "is-bigint": {
- "version": "1.0.4",
- "dev": true,
- "requires": {
- "has-bigints": "^1.0.1"
- }
- },
- "is-boolean-object": {
- "version": "1.1.2",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "has-tostringtag": "^1.0.0"
- }
- },
- "is-callable": {
- "version": "1.2.7",
- "dev": true
- },
- "is-ci": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz",
- "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==",
- "dev": true,
- "requires": {
- "ci-info": "^2.0.0"
- }
- },
- "is-core-module": {
- "version": "2.13.0",
- "dev": true,
- "requires": {
- "has": "^1.0.3"
- }
- },
- "is-data-descriptor": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
- "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.0"
- }
- },
- "is-date-object": {
- "version": "1.0.2",
- "dev": true
- },
- "is-descriptor": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
- "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
- "dev": true,
- "requires": {
- "is-accessor-descriptor": "^1.0.0",
- "is-data-descriptor": "^1.0.0",
- "kind-of": "^6.0.2"
- }
- },
- "is-directory": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz",
- "integrity": "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==",
- "dev": true
- },
- "is-extendable": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
- "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
- "dev": true,
- "requires": {
- "is-plain-object": "^2.0.4"
- },
- "dependencies": {
- "is-plain-object": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
- "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
- "dev": true,
- "requires": {
- "isobject": "^3.0.1"
- }
- }
- }
- },
- "is-extglob": {
- "version": "2.1.1",
- "dev": true
- },
- "is-finite": {
- "version": "1.1.0",
- "dev": true
- },
- "is-fullwidth-code-point": {
- "version": "3.0.0",
- "dev": true
- },
- "is-glob": {
- "version": "4.0.3",
- "dev": true,
- "requires": {
- "is-extglob": "^2.1.1"
- }
- },
- "is-negative-zero": {
- "version": "2.0.2",
- "dev": true
- },
- "is-number-object": {
- "version": "1.0.7",
- "dev": true,
- "requires": {
- "has-tostringtag": "^1.0.0"
- }
- },
- "is-obj": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
- "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==",
- "dev": true
- },
- "is-object": {
- "version": "0.1.2",
- "dev": true
- },
- "is-plain-obj": {
- "version": "1.1.0",
- "dev": true
- },
- "is-plain-object": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
- "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==",
- "dev": true
- },
- "is-regex": {
- "version": "1.1.4",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "has-tostringtag": "^1.0.0"
- }
- },
- "is-shared-array-buffer": {
- "version": "1.0.2",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2"
- }
- },
- "is-ssh": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/is-ssh/-/is-ssh-1.4.0.tgz",
- "integrity": "sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ==",
- "dev": true,
- "requires": {
- "protocols": "^2.0.1"
- }
- },
- "is-stream": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
- "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==",
- "dev": true
- },
- "is-string": {
- "version": "1.0.7",
- "dev": true,
- "requires": {
- "has-tostringtag": "^1.0.0"
- }
- },
- "is-symbol": {
- "version": "1.0.3",
- "dev": true,
- "requires": {
- "has-symbols": "^1.0.1"
- }
- },
- "is-text-path": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz",
- "integrity": "sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==",
- "dev": true,
- "requires": {
- "text-extensions": "^1.0.0"
- }
- },
- "is-typed-array": {
- "version": "1.1.12",
- "dev": true,
- "requires": {
- "which-typed-array": "^1.1.11"
- }
- },
- "is-typedarray": {
- "version": "1.0.0",
- "dev": true
- },
- "is-utf8": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz",
- "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==",
- "dev": true
- },
- "is-weakref": {
- "version": "1.0.2",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2"
- }
- },
- "is-windows": {
- "version": "1.0.2",
- "dev": true
- },
- "isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
- "dev": true
- },
- "isexe": {
- "version": "2.0.0",
- "dev": true
- },
- "isobject": {
- "version": "3.0.1",
- "dev": true
- },
- "isstream": {
- "version": "0.1.2",
- "dev": true
- },
- "js-tokens": {
- "version": "4.0.0",
- "dev": true
- },
- "js-yaml": {
- "version": "3.14.1",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
- "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
- "dev": true,
- "requires": {
- "argparse": "^1.0.7",
- "esprima": "^4.0.0"
- }
- },
- "jsbn": {
- "version": "0.1.1",
- "dev": true
- },
- "json-parse-better-errors": {
- "version": "1.0.2",
- "dev": true
- },
- "json-parse-even-better-errors": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
- "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
- "dev": true
- },
- "json-schema": {
- "version": "0.4.0",
- "dev": true
- },
- "json-schema-traverse": {
- "version": "0.4.1",
- "dev": true
- },
- "json-stringify-safe": {
- "version": "5.0.1",
- "dev": true
- },
- "jsonparse": {
- "version": "1.3.1",
- "dev": true
- },
- "JSONStream": {
- "version": "1.3.5",
- "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz",
- "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==",
- "dev": true,
- "requires": {
- "jsonparse": "^1.2.0",
- "through": ">=2.2.7 <3"
- }
- },
- "jsprim": {
- "version": "1.4.2",
- "dev": true,
- "requires": {
- "assert-plus": "1.0.0",
- "extsprintf": "1.3.0",
- "json-schema": "0.4.0",
- "verror": "1.10.0"
- }
- },
- "kind-of": {
- "version": "6.0.3",
- "dev": true
- },
- "lerna": {
- "version": "3.22.1",
- "resolved": "https://registry.npmjs.org/lerna/-/lerna-3.22.1.tgz",
- "integrity": "sha512-vk1lfVRFm+UuEFA7wkLKeSF7Iz13W+N/vFd48aW2yuS7Kv0RbNm2/qcDPV863056LMfkRlsEe+QYOw3palj5Lg==",
- "dev": true,
- "requires": {
- "@lerna/add": "3.21.0",
- "@lerna/bootstrap": "3.21.0",
- "@lerna/changed": "3.21.0",
- "@lerna/clean": "3.21.0",
- "@lerna/cli": "3.18.5",
- "@lerna/create": "3.22.0",
- "@lerna/diff": "3.21.0",
- "@lerna/exec": "3.21.0",
- "@lerna/import": "3.22.0",
- "@lerna/info": "3.21.0",
- "@lerna/init": "3.21.0",
- "@lerna/link": "3.21.0",
- "@lerna/list": "3.21.0",
- "@lerna/publish": "3.22.1",
- "@lerna/run": "3.21.0",
- "@lerna/version": "3.22.1",
- "import-local": "^2.0.0",
- "npmlog": "^4.1.2"
- }
- },
- "lines-and-columns": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
- "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
- "dev": true
- },
- "load-json-file": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-5.3.0.tgz",
- "integrity": "sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw==",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.15",
- "parse-json": "^4.0.0",
- "pify": "^4.0.1",
- "strip-bom": "^3.0.0",
- "type-fest": "^0.3.0"
- },
- "dependencies": {
- "type-fest": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz",
- "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==",
- "dev": true
- }
- }
- },
- "locate-path": {
- "version": "5.0.0",
- "dev": true,
- "requires": {
- "p-locate": "^4.1.0"
- }
- },
- "lodash": {
- "version": "4.17.21",
- "dev": true
- },
- "lodash._reinterpolate": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz",
- "integrity": "sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA==",
- "dev": true
- },
- "lodash.clonedeep": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
- "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==",
- "dev": true
- },
- "lodash.get": {
- "version": "4.4.2",
- "dev": true
- },
- "lodash.ismatch": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz",
- "integrity": "sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g==",
- "dev": true
- },
- "lodash.set": {
- "version": "4.3.2",
- "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz",
- "integrity": "sha512-4hNPN5jlm/N/HLMCO43v8BXKq9Z7QdAGc/VGrRD61w8gN9g/6jF9A4L1pbUgBLCffi0w9VsXfTOij5x8iTyFvg==",
- "dev": true
- },
- "lodash.sortby": {
- "version": "4.7.0",
- "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz",
- "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==",
- "dev": true
- },
- "lodash.template": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz",
- "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==",
- "dev": true,
- "requires": {
- "lodash._reinterpolate": "^3.0.0",
- "lodash.templatesettings": "^4.0.0"
- }
- },
- "lodash.templatesettings": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz",
- "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==",
- "dev": true,
- "requires": {
- "lodash._reinterpolate": "^3.0.0"
- }
- },
- "lodash.uniq": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
- "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==",
- "dev": true
- },
- "loud-rejection": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
- "integrity": "sha512-RPNliZOFkqFumDhvYqOaNY4Uz9oJM2K9tC6JWsJJsNdhuONW4LQHRBpb0qf4pJApVffI5N39SwzWZJuEhfd7eQ==",
- "dev": true,
- "requires": {
- "currently-unhandled": "^0.4.1",
- "signal-exit": "^3.0.0"
- }
- },
- "lru-cache": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
- "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
- "dev": true,
- "requires": {
- "yallist": "^3.0.2"
- },
- "dependencies": {
- "yallist": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
- "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
- "dev": true
- }
- }
- },
- "macos-release": {
- "version": "2.5.1",
- "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.5.1.tgz",
- "integrity": "sha512-DXqXhEM7gW59OjZO8NIjBCz9AQ1BEMrfiOAl4AYByHCtVHRF4KoGNO8mqQeM8lRCtQe/UnJ4imO/d2HdkKsd+A==",
- "dev": true
- },
- "make-fetch-happen": {
- "version": "5.0.2",
- "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-5.0.2.tgz",
- "integrity": "sha512-07JHC0r1ykIoruKO8ifMXu+xEU8qOXDFETylktdug6vJDACnP+HKevOu3PXyNPzFyTSlz8vrBYlBO1JZRe8Cag==",
- "dev": true,
- "requires": {
- "agentkeepalive": "^3.4.1",
- "cacache": "^12.0.0",
- "http-cache-semantics": "^3.8.1",
- "http-proxy-agent": "^2.1.0",
- "https-proxy-agent": "^2.2.3",
- "lru-cache": "^5.1.1",
- "mississippi": "^3.0.0",
- "node-fetch-npm": "^2.0.2",
- "promise-retry": "^1.1.1",
- "socks-proxy-agent": "^4.0.0",
- "ssri": "^6.0.0"
- },
- "dependencies": {
- "agent-base": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz",
- "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==",
- "dev": true,
- "requires": {
- "es6-promisify": "^5.0.0"
- }
- },
- "debug": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
- "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
- "dev": true,
- "requires": {
- "ms": "^2.1.1"
- }
- },
- "https-proxy-agent": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz",
- "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==",
- "dev": true,
- "requires": {
- "agent-base": "^4.3.0",
- "debug": "^3.1.0"
- }
- }
- }
- },
- "map-cache": {
- "version": "0.2.2",
- "dev": true
- },
- "map-obj": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz",
- "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==",
- "dev": true
- },
- "map-visit": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
- "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==",
- "dev": true,
- "requires": {
- "object-visit": "^1.0.0"
- }
- },
- "memorystream": {
- "version": "0.3.1",
- "dev": true
- },
- "meow": {
- "version": "8.1.2",
- "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz",
- "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==",
- "dev": true,
- "requires": {
- "@types/minimist": "^1.2.0",
- "camelcase-keys": "^6.2.2",
- "decamelize-keys": "^1.1.0",
- "hard-rejection": "^2.1.0",
- "minimist-options": "4.1.0",
- "normalize-package-data": "^3.0.0",
- "read-pkg-up": "^7.0.1",
- "redent": "^3.0.0",
- "trim-newlines": "^3.0.0",
- "type-fest": "^0.18.0",
- "yargs-parser": "^20.2.3"
- },
- "dependencies": {
- "hosted-git-info": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz",
- "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==",
- "dev": true,
- "requires": {
- "lru-cache": "^6.0.0"
- }
- },
- "lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dev": true,
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "normalize-package-data": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz",
- "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==",
- "dev": true,
- "requires": {
- "hosted-git-info": "^4.0.1",
- "is-core-module": "^2.5.0",
- "semver": "^7.3.4",
- "validate-npm-package-license": "^3.0.1"
- }
- },
- "parse-json": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
- "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
- "dev": true,
- "requires": {
- "@babel/code-frame": "^7.0.0",
- "error-ex": "^1.3.1",
- "json-parse-even-better-errors": "^2.3.0",
- "lines-and-columns": "^1.1.6"
- }
- },
- "read-pkg": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz",
- "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==",
- "dev": true,
- "requires": {
- "@types/normalize-package-data": "^2.4.0",
- "normalize-package-data": "^2.5.0",
- "parse-json": "^5.0.0",
- "type-fest": "^0.6.0"
- },
- "dependencies": {
- "hosted-git-info": {
- "version": "2.8.9",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
- "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
- "dev": true
- },
- "normalize-package-data": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
- "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
- "dev": true,
- "requires": {
- "hosted-git-info": "^2.1.4",
- "resolve": "^1.10.0",
- "semver": "2 || 3 || 4 || 5",
- "validate-npm-package-license": "^3.0.1"
- }
- },
- "semver": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
- "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
- "dev": true
- },
- "type-fest": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz",
- "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==",
- "dev": true
- }
- }
- },
- "read-pkg-up": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz",
- "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==",
- "dev": true,
- "requires": {
- "find-up": "^4.1.0",
- "read-pkg": "^5.2.0",
- "type-fest": "^0.8.1"
- },
- "dependencies": {
- "type-fest": {
- "version": "0.8.1",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
- "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
- "dev": true
- }
- }
- },
- "type-fest": {
- "version": "0.18.1",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz",
- "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==",
- "dev": true
- }
- }
- },
- "merge2": {
- "version": "1.4.1",
- "dev": true
- },
- "mime": {
- "version": "1.2.11",
- "dev": true
- },
- "mime-db": {
- "version": "1.52.0",
- "dev": true
- },
- "mime-types": {
- "version": "2.1.35",
- "dev": true,
- "requires": {
- "mime-db": "1.52.0"
- }
- },
- "min-indent": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz",
- "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==",
- "dev": true
- },
- "minimatch": {
- "version": "3.0.5",
- "dev": true,
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "minimist": {
- "version": "1.2.8",
- "dev": true
- },
- "minimist-options": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz",
- "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==",
- "dev": true,
- "requires": {
- "arrify": "^1.0.1",
- "is-plain-obj": "^1.1.0",
- "kind-of": "^6.0.3"
- }
- },
- "minipass": {
- "version": "2.9.0",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz",
- "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==",
- "dev": true,
- "requires": {
- "safe-buffer": "^5.1.2",
- "yallist": "^3.0.0"
- },
- "dependencies": {
- "yallist": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
- "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
- "dev": true
- }
- }
- },
- "minizlib": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz",
- "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==",
- "dev": true,
- "requires": {
- "minipass": "^2.9.0"
- }
- },
- "mississippi": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz",
- "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==",
- "dev": true,
- "requires": {
- "concat-stream": "^1.5.0",
- "duplexify": "^3.4.2",
- "end-of-stream": "^1.1.0",
- "flush-write-stream": "^1.0.0",
- "from2": "^2.1.0",
- "parallel-transform": "^1.1.0",
- "pump": "^3.0.0",
- "pumpify": "^1.3.3",
- "stream-each": "^1.1.0",
- "through2": "^2.0.0"
- },
- "dependencies": {
- "concat-stream": {
- "version": "1.6.2",
- "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
- "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
- "dev": true,
- "requires": {
- "buffer-from": "^1.0.0",
- "inherits": "^2.0.3",
- "readable-stream": "^2.2.2",
- "typedarray": "^0.0.6"
- }
- },
- "readable-stream": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
- "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
- "dev": true,
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- },
- "through2": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
- "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
- "dev": true,
- "requires": {
- "readable-stream": "~2.3.6",
- "xtend": "~4.0.1"
- }
- }
- }
- },
- "mixin-deep": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
- "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==",
- "dev": true,
- "requires": {
- "for-in": "^1.0.2",
- "is-extendable": "^1.0.1"
- }
- },
- "mkdirp": {
- "version": "0.5.5",
- "dev": true,
- "requires": {
- "minimist": "^1.2.5"
- }
- },
- "mkdirp-promise": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz",
- "integrity": "sha512-Hepn5kb1lJPtVW84RFT40YG1OddBNTOVUZR2bzQUHc+Z03en8/3uX0+060JDhcEzyO08HmipsN9DcnFMxhIL9w==",
- "dev": true,
- "requires": {
- "mkdirp": "*"
- }
- },
- "modify-values": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz",
- "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==",
- "dev": true
- },
- "moment": {
- "version": "2.27.0",
- "dev": true
- },
- "moment-timezone": {
- "version": "0.5.5",
- "dev": true,
- "requires": {
- "moment": ">= 2.6.0"
- }
- },
- "move-concurrently": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz",
- "integrity": "sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ==",
- "dev": true,
- "requires": {
- "aproba": "^1.1.1",
- "copy-concurrently": "^1.0.0",
- "fs-write-stream-atomic": "^1.0.8",
- "mkdirp": "^0.5.1",
- "rimraf": "^2.5.4",
- "run-queue": "^1.0.3"
- },
- "dependencies": {
- "aproba": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
- "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
- "dev": true
- },
- "rimraf": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
- "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
- "dev": true,
- "requires": {
- "glob": "^7.1.3"
- }
- }
- }
- },
- "ms": {
- "version": "2.1.2",
- "dev": true
- },
- "multimatch": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-3.0.0.tgz",
- "integrity": "sha512-22foS/gqQfANZ3o+W7ST2x25ueHDVNWl/b9OlGcLpy/iKxjCpvcNCM51YCenUi7Mt/jAjjqv8JwZRs8YP5sRjA==",
- "dev": true,
- "requires": {
- "array-differ": "^2.0.3",
- "array-union": "^1.0.2",
- "arrify": "^1.0.1",
- "minimatch": "^3.0.4"
- },
- "dependencies": {
- "array-union": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
- "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==",
- "dev": true,
- "requires": {
- "array-uniq": "^1.0.1"
- }
- }
- }
- },
- "mute-stream": {
- "version": "0.0.7",
- "dev": true
- },
- "mz": {
- "version": "2.7.0",
- "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
- "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==",
- "dev": true,
- "requires": {
- "any-promise": "^1.0.0",
- "object-assign": "^4.0.1",
- "thenify-all": "^1.0.0"
- }
- },
- "nanomatch": {
- "version": "1.2.13",
- "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
- "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
- "dev": true,
- "requires": {
- "arr-diff": "^4.0.0",
- "array-unique": "^0.3.2",
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "fragment-cache": "^0.2.1",
- "is-windows": "^1.0.2",
- "kind-of": "^6.0.2",
- "object.pick": "^1.3.0",
- "regex-not": "^1.0.0",
- "snapdragon": "^0.8.1",
- "to-regex": "^3.0.1"
- }
- },
- "neo-async": {
- "version": "2.6.2",
- "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
- "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
- "dev": true
- },
- "nice-try": {
- "version": "1.0.5",
- "dev": true
- },
- "node-fetch": {
- "version": "2.6.7",
- "dev": true,
- "requires": {
- "whatwg-url": "^5.0.0"
- }
- },
- "node-fetch-npm": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/node-fetch-npm/-/node-fetch-npm-2.0.4.tgz",
- "integrity": "sha512-iOuIQDWDyjhv9qSDrj9aq/klt6F9z1p2otB3AV7v3zBDcL/x+OfGsvGQZZCcMZbUf4Ujw1xGNQkjvGnVT22cKg==",
- "dev": true,
- "requires": {
- "encoding": "^0.1.11",
- "json-parse-better-errors": "^1.0.0",
- "safe-buffer": "^5.1.1"
- }
- },
- "node-gyp": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-5.1.1.tgz",
- "integrity": "sha512-WH0WKGi+a4i4DUt2mHnvocex/xPLp9pYt5R6M2JdFB7pJ7Z34hveZ4nDTGTiLXCkitA9T8HFZjhinBCiVHYcWw==",
- "dev": true,
- "requires": {
- "env-paths": "^2.2.0",
- "glob": "^7.1.4",
- "graceful-fs": "^4.2.2",
- "mkdirp": "^0.5.1",
- "nopt": "^4.0.1",
- "npmlog": "^4.1.2",
- "request": "^2.88.0",
- "rimraf": "^2.6.3",
- "semver": "^5.7.1",
- "tar": "^4.4.12",
- "which": "^1.3.1"
- },
- "dependencies": {
- "rimraf": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
- "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
- "dev": true,
- "requires": {
- "glob": "^7.1.3"
- }
- },
- "semver": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
- "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
- "dev": true
- }
- }
- },
- "nomnom": {
- "version": "1.6.2",
- "dev": true,
- "requires": {
- "colors": "0.5.x",
- "underscore": "~1.4.4"
- }
- },
- "nopt": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz",
- "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==",
- "dev": true,
- "requires": {
- "abbrev": "1",
- "osenv": "^0.1.4"
- }
- },
- "normalize-package-data": {
- "version": "2.5.0",
- "dev": true,
- "requires": {
- "hosted-git-info": "^2.1.4",
- "resolve": "^1.10.0",
- "semver": "2 || 3 || 4 || 5",
- "validate-npm-package-license": "^3.0.1"
- },
- "dependencies": {
- "semver": {
- "version": "5.7.1",
- "dev": true
- }
- }
- },
- "normalize-url": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz",
- "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==",
- "dev": true
- },
- "npm-bundled": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz",
- "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==",
- "dev": true,
- "requires": {
- "npm-normalize-package-bin": "^1.0.1"
- }
- },
- "npm-lifecycle": {
- "version": "3.1.5",
- "resolved": "https://registry.npmjs.org/npm-lifecycle/-/npm-lifecycle-3.1.5.tgz",
- "integrity": "sha512-lDLVkjfZmvmfvpvBzA4vzee9cn+Me4orq0QF8glbswJVEbIcSNWib7qGOffolysc3teCqbbPZZkzbr3GQZTL1g==",
- "dev": true,
- "requires": {
- "byline": "^5.0.0",
- "graceful-fs": "^4.1.15",
- "node-gyp": "^5.0.2",
- "resolve-from": "^4.0.0",
- "slide": "^1.1.6",
- "uid-number": "0.0.6",
- "umask": "^1.1.0",
- "which": "^1.3.1"
- }
- },
- "npm-normalize-package-bin": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz",
- "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==",
- "dev": true
- },
- "npm-package-arg": {
- "version": "6.1.1",
- "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.1.tgz",
- "integrity": "sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg==",
- "dev": true,
- "requires": {
- "hosted-git-info": "^2.7.1",
- "osenv": "^0.1.5",
- "semver": "^5.6.0",
- "validate-npm-package-name": "^3.0.0"
- },
- "dependencies": {
- "semver": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
- "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
- "dev": true
- }
- }
- },
- "npm-packlist": {
- "version": "1.4.8",
- "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz",
- "integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==",
- "dev": true,
- "requires": {
- "ignore-walk": "^3.0.1",
- "npm-bundled": "^1.0.1",
- "npm-normalize-package-bin": "^1.0.1"
- }
- },
- "npm-pick-manifest": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-3.0.2.tgz",
- "integrity": "sha512-wNprTNg+X5nf+tDi+hbjdHhM4bX+mKqv6XmPh7B5eG+QY9VARfQPfCEH013H5GqfNj6ee8Ij2fg8yk0mzps1Vw==",
- "dev": true,
- "requires": {
- "figgy-pudding": "^3.5.1",
- "npm-package-arg": "^6.0.0",
- "semver": "^5.4.1"
- },
- "dependencies": {
- "semver": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
- "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
- "dev": true
- }
- }
- },
- "npm-run-all": {
- "version": "4.1.5",
- "dev": true,
- "requires": {
- "ansi-styles": "^3.2.1",
- "chalk": "^2.4.1",
- "cross-spawn": "^6.0.5",
- "memorystream": "^0.3.1",
- "minimatch": "^3.0.4",
- "pidtree": "^0.3.0",
- "read-pkg": "^3.0.0",
- "shell-quote": "^1.6.1",
- "string.prototype.padend": "^3.0.0"
- }
- },
- "npm-run-path": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
- "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==",
- "dev": true,
- "requires": {
- "path-key": "^2.0.0"
- }
- },
- "npmlog": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
- "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
- "dev": true,
- "requires": {
- "are-we-there-yet": "~1.1.2",
- "console-control-strings": "~1.1.0",
- "gauge": "~2.7.3",
- "set-blocking": "~2.0.0"
- }
- },
- "number-is-nan": {
- "version": "1.0.1",
- "dev": true
- },
- "oauth-sign": {
- "version": "0.9.0",
- "dev": true
- },
- "object-assign": {
- "version": "4.1.1",
- "dev": true
- },
- "object-copy": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
- "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==",
- "dev": true,
- "requires": {
- "copy-descriptor": "^0.1.0",
- "define-property": "^0.2.5",
- "kind-of": "^3.0.3"
- },
- "dependencies": {
- "define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
- "dev": true,
- "requires": {
- "is-descriptor": "^0.1.0"
- }
- },
- "is-accessor-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
- "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- }
- },
- "is-buffer": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
- "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
- "dev": true
- },
- "is-data-descriptor": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
- "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- }
- },
- "is-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
- "dev": true,
- "requires": {
- "is-accessor-descriptor": "^0.1.6",
- "is-data-descriptor": "^0.1.4",
- "kind-of": "^5.0.0"
- },
- "dependencies": {
- "kind-of": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
- "dev": true
- }
- }
- },
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "object-inspect": {
- "version": "1.12.3",
- "dev": true
- },
- "object-keys": {
- "version": "1.1.1",
- "dev": true
- },
- "object-visit": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
- "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==",
- "dev": true,
- "requires": {
- "isobject": "^3.0.0"
- }
- },
- "object.getownpropertydescriptors": {
- "version": "2.1.6",
- "dev": true,
- "requires": {
- "array.prototype.reduce": "^1.0.5",
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.21.2",
- "safe-array-concat": "^1.0.0"
- }
- },
- "object.pick": {
- "version": "1.3.0",
- "dev": true,
- "requires": {
- "isobject": "^3.0.1"
- }
- },
- "octokit-pagination-methods": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz",
- "integrity": "sha512-fZ4qZdQ2nxJvtcasX7Ghl+WlWS/d9IgnBIwFZXVNNZUmzpno91SX5bc5vuxiuKoCtK78XxGGNuSCrDC7xYB3OQ==",
- "dev": true
- },
- "once": {
- "version": "1.4.0",
- "dev": true,
- "requires": {
- "wrappy": "1"
- }
- },
- "os-homedir": {
- "version": "1.0.2",
- "dev": true
- },
- "os-name": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/os-name/-/os-name-3.1.0.tgz",
- "integrity": "sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg==",
- "dev": true,
- "requires": {
- "macos-release": "^2.2.0",
- "windows-release": "^3.1.0"
- }
- },
- "os-tmpdir": {
- "version": "1.0.2",
- "dev": true
- },
- "osenv": {
- "version": "0.1.5",
- "dev": true,
- "requires": {
- "os-homedir": "^1.0.0",
- "os-tmpdir": "^1.0.0"
- }
- },
- "p-finally": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
- "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==",
- "dev": true
- },
- "p-limit": {
- "version": "2.3.0",
- "dev": true,
- "requires": {
- "p-try": "^2.0.0"
- }
- },
- "p-locate": {
- "version": "4.1.0",
- "dev": true,
- "requires": {
- "p-limit": "^2.2.0"
- }
- },
- "p-map": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz",
- "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==",
- "dev": true
- },
- "p-map-series": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-map-series/-/p-map-series-1.0.0.tgz",
- "integrity": "sha512-4k9LlvY6Bo/1FcIdV33wqZQES0Py+iKISU9Uc8p8AjWoZPnFKMpVIVD3s0EYn4jzLh1I+WeUZkJ0Yoa4Qfw3Kg==",
- "dev": true,
- "requires": {
- "p-reduce": "^1.0.0"
- }
- },
- "p-pipe": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/p-pipe/-/p-pipe-1.2.0.tgz",
- "integrity": "sha512-IA8SqjIGA8l9qOksXJvsvkeQ+VGb0TAzNCzvKvz9wt5wWLqfWbV6fXy43gpR2L4Te8sOq3S+Ql9biAaMKPdbtw==",
- "dev": true
- },
- "p-queue": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-4.0.0.tgz",
- "integrity": "sha512-3cRXXn3/O0o3+eVmUroJPSj/esxoEFIm0ZOno/T+NzG/VZgPOqQ8WKmlNqubSEpZmCIngEy34unkHGg83ZIBmg==",
- "dev": true,
- "requires": {
- "eventemitter3": "^3.1.0"
- }
- },
- "p-reduce": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz",
- "integrity": "sha512-3Tx1T3oM1xO/Y8Gj0sWyE78EIJZ+t+aEmXUdvQgvGmSMri7aPTHoovbXEreWKkL5j21Er60XAWLTzKbAKYOujQ==",
- "dev": true
- },
- "p-try": {
- "version": "2.2.0",
- "dev": true
- },
- "p-waterfall": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-waterfall/-/p-waterfall-1.0.0.tgz",
- "integrity": "sha512-KeXddIp6jBT8qzyxfQGOGzNYc/7ftxKtRc5Uggre02yvbZrSBHE2M2C842/WizMBFD4s0Ngwz3QFOit2A+Ezrg==",
- "dev": true,
- "requires": {
- "p-reduce": "^1.0.0"
- }
- },
- "parallel-transform": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz",
- "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==",
- "dev": true,
- "requires": {
- "cyclist": "^1.0.1",
- "inherits": "^2.0.3",
- "readable-stream": "^2.1.5"
- },
- "dependencies": {
- "readable-stream": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
- "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
- "dev": true,
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- }
- }
- },
- "parse-github-repo-url": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/parse-github-repo-url/-/parse-github-repo-url-1.4.1.tgz",
- "integrity": "sha512-bSWyzBKqcSL4RrncTpGsEKoJ7H8a4L3++ifTAbTFeMHyq2wRV+42DGmQcHIrJIvdcacjIOxEuKH/w4tthF17gg==",
- "dev": true
- },
- "parse-json": {
- "version": "4.0.0",
- "dev": true,
- "requires": {
- "error-ex": "^1.3.1",
- "json-parse-better-errors": "^1.0.1"
- }
- },
- "parse-link-header": {
- "version": "0.1.0",
- "dev": true,
- "requires": {
- "xtend": "~2.0.5"
- },
- "dependencies": {
- "object-keys": {
- "version": "0.2.0",
- "dev": true,
- "requires": {
- "foreach": "~2.0.1",
- "indexof": "~0.0.1",
- "is": "~0.2.6"
- }
- },
- "xtend": {
- "version": "2.0.6",
- "dev": true,
- "requires": {
- "is-object": "~0.1.2",
- "object-keys": "~0.2.0"
- }
- }
- }
- },
- "parse-path": {
- "version": "4.0.4",
- "resolved": "https://registry.npmjs.org/parse-path/-/parse-path-4.0.4.tgz",
- "integrity": "sha512-Z2lWUis7jlmXC1jeOG9giRO2+FsuyNipeQ43HAjqAZjwSe3SEf+q/84FGPHoso3kyntbxa4c4i77t3m6fGf8cw==",
- "dev": true,
- "requires": {
- "is-ssh": "^1.3.0",
- "protocols": "^1.4.0",
- "qs": "^6.9.4",
- "query-string": "^6.13.8"
- },
- "dependencies": {
- "protocols": {
- "version": "1.4.8",
- "resolved": "https://registry.npmjs.org/protocols/-/protocols-1.4.8.tgz",
- "integrity": "sha512-IgjKyaUSjsROSO8/D49Ab7hP8mJgTYcqApOqdPhLoPxAplXmkp+zRvsrSQjFn5by0rhm4VH0GAUELIPpx7B1yg==",
- "dev": true
- },
- "qs": {
- "version": "6.11.2",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz",
- "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==",
- "dev": true,
- "requires": {
- "side-channel": "^1.0.4"
- }
- }
- }
- },
- "parse-url": {
- "version": "6.0.5",
- "resolved": "https://registry.npmjs.org/parse-url/-/parse-url-6.0.5.tgz",
- "integrity": "sha512-e35AeLTSIlkw/5GFq70IN7po8fmDUjpDPY1rIK+VubRfsUvBonjQ+PBZG+vWMACnQSmNlvl524IucoDmcioMxA==",
- "dev": true,
- "requires": {
- "is-ssh": "^1.3.0",
- "normalize-url": "^6.1.0",
- "parse-path": "^4.0.0",
- "protocols": "^1.4.0"
- },
- "dependencies": {
- "protocols": {
- "version": "1.4.8",
- "resolved": "https://registry.npmjs.org/protocols/-/protocols-1.4.8.tgz",
- "integrity": "sha512-IgjKyaUSjsROSO8/D49Ab7hP8mJgTYcqApOqdPhLoPxAplXmkp+zRvsrSQjFn5by0rhm4VH0GAUELIPpx7B1yg==",
- "dev": true
- }
- }
- },
- "pascalcase": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
- "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==",
- "dev": true
- },
- "path-dirname": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
- "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==",
- "dev": true
- },
- "path-exists": {
- "version": "4.0.0",
- "dev": true
- },
- "path-is-absolute": {
- "version": "1.0.1",
- "dev": true
- },
- "path-key": {
- "version": "2.0.1",
- "dev": true
- },
- "path-parse": {
- "version": "1.0.7",
- "dev": true
- },
- "path-type": {
- "version": "3.0.0",
- "dev": true,
- "requires": {
- "pify": "^3.0.0"
- },
- "dependencies": {
- "pify": {
- "version": "3.0.0",
- "dev": true
- }
- }
- },
- "pidtree": {
- "version": "0.3.1",
- "dev": true
- },
- "pify": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
- "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
- "dev": true
- },
- "pinkie": {
- "version": "2.0.4",
- "dev": true
- },
- "pinkie-promise": {
- "version": "2.0.1",
- "dev": true,
- "requires": {
- "pinkie": "^2.0.0"
- }
- },
- "posix-character-classes": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
- "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==",
- "dev": true
- },
- "process-nextick-args": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
- "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
- "dev": true
- },
- "promise-inflight": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
- "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==",
- "dev": true
- },
- "promise-retry": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-1.1.1.tgz",
- "integrity": "sha512-StEy2osPr28o17bIW776GtwO6+Q+M9zPiZkYfosciUUMYqjhU/ffwRAH0zN2+uvGyUsn8/YICIHRzLbPacpZGw==",
- "dev": true,
- "requires": {
- "err-code": "^1.0.0",
- "retry": "^0.10.0"
- }
- },
- "promzard": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/promzard/-/promzard-0.3.0.tgz",
- "integrity": "sha512-JZeYqd7UAcHCwI+sTOeUDYkvEU+1bQ7iE0UT1MgB/tERkAPkesW46MrpIySzODi+owTjZtiF8Ay5j9m60KmMBw==",
- "dev": true,
- "requires": {
- "read": "1"
- }
- },
- "proto-list": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz",
- "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==",
- "dev": true
- },
- "protocols": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/protocols/-/protocols-2.0.1.tgz",
- "integrity": "sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==",
- "dev": true
- },
- "protoduck": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/protoduck/-/protoduck-5.0.1.tgz",
- "integrity": "sha512-WxoCeDCoCBY55BMvj4cAEjdVUFGRWed9ZxPlqTKYyw1nDDTQ4pqmnIMAGfJlg7Dx35uB/M+PHJPTmGOvaCaPTg==",
- "dev": true,
- "requires": {
- "genfun": "^5.0.0"
- }
- },
- "psl": {
- "version": "1.9.0",
- "dev": true
- },
- "pump": {
- "version": "3.0.0",
- "dev": true,
- "requires": {
- "end-of-stream": "^1.1.0",
- "once": "^1.3.1"
- }
- },
- "pumpify": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz",
- "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==",
- "dev": true,
- "requires": {
- "duplexify": "^3.6.0",
- "inherits": "^2.0.3",
- "pump": "^2.0.0"
- },
- "dependencies": {
- "pump": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz",
- "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==",
- "dev": true,
- "requires": {
- "end-of-stream": "^1.1.0",
- "once": "^1.3.1"
- }
- }
- }
- },
- "punycode": {
- "version": "2.3.0",
- "dev": true
- },
- "qs": {
- "version": "6.5.3",
- "dev": true
- },
- "query-string": {
- "version": "6.14.1",
- "resolved": "https://registry.npmjs.org/query-string/-/query-string-6.14.1.tgz",
- "integrity": "sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw==",
- "dev": true,
- "requires": {
- "decode-uri-component": "^0.2.0",
- "filter-obj": "^1.1.0",
- "split-on-first": "^1.0.0",
- "strict-uri-encode": "^2.0.0"
- }
- },
- "quick-lru": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz",
- "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==",
- "dev": true
- },
- "read": {
- "version": "1.0.7",
- "dev": true,
- "requires": {
- "mute-stream": "~0.0.4"
- }
- },
- "read-cmd-shim": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-1.0.5.tgz",
- "integrity": "sha512-v5yCqQ/7okKoZZkBQUAfTsQ3sVJtXdNfbPnI5cceppoxEVLYA3k+VtV2omkeo8MS94JCy4fSiUwlRBAwCVRPUA==",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.2"
- }
- },
- "read-package-json": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-2.1.2.tgz",
- "integrity": "sha512-D1KmuLQr6ZSJS0tW8hf3WGpRlwszJOXZ3E8Yd/DNRaM5d+1wVRZdHlpGBLAuovjr28LbWvjpWkBHMxpRGGjzNA==",
- "dev": true,
- "requires": {
- "glob": "^7.1.1",
- "json-parse-even-better-errors": "^2.3.0",
- "normalize-package-data": "^2.0.0",
- "npm-normalize-package-bin": "^1.0.0"
- }
- },
- "read-package-tree": {
- "version": "5.3.1",
- "resolved": "https://registry.npmjs.org/read-package-tree/-/read-package-tree-5.3.1.tgz",
- "integrity": "sha512-mLUDsD5JVtlZxjSlPPx1RETkNjjvQYuweKwNVt1Sn8kP5Jh44pvYuUHCp6xSVDZWbNxVxG5lyZJ921aJH61sTw==",
- "dev": true,
- "requires": {
- "read-package-json": "^2.0.0",
- "readdir-scoped-modules": "^1.0.0",
- "util-promisify": "^2.1.0"
- }
- },
- "read-pkg": {
- "version": "3.0.0",
- "dev": true,
- "requires": {
- "load-json-file": "^4.0.0",
- "normalize-package-data": "^2.3.2",
- "path-type": "^3.0.0"
- },
- "dependencies": {
- "load-json-file": {
- "version": "4.0.0",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.2",
- "parse-json": "^4.0.0",
- "pify": "^3.0.0",
- "strip-bom": "^3.0.0"
- }
- },
- "pify": {
- "version": "3.0.0",
- "dev": true
- }
- }
- },
- "read-pkg-up": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz",
- "integrity": "sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==",
- "dev": true,
- "requires": {
- "find-up": "^2.0.0",
- "read-pkg": "^3.0.0"
- },
- "dependencies": {
- "find-up": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
- "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==",
- "dev": true,
- "requires": {
- "locate-path": "^2.0.0"
- }
- },
- "locate-path": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
- "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==",
- "dev": true,
- "requires": {
- "p-locate": "^2.0.0",
- "path-exists": "^3.0.0"
- }
- },
- "p-limit": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
- "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
- "dev": true,
- "requires": {
- "p-try": "^1.0.0"
- }
- },
- "p-locate": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
- "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==",
- "dev": true,
- "requires": {
- "p-limit": "^1.1.0"
- }
- },
- "p-try": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
- "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==",
- "dev": true
- },
- "path-exists": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
- "dev": true
- }
- }
- },
- "readable-stream": {
- "version": "3.6.2",
- "dev": true,
- "requires": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
- }
- },
- "readdir-scoped-modules": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz",
- "integrity": "sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==",
- "dev": true,
- "requires": {
- "debuglog": "^1.0.1",
- "dezalgo": "^1.0.0",
- "graceful-fs": "^4.1.2",
- "once": "^1.3.0"
- }
- },
- "redent": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz",
- "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==",
- "dev": true,
- "requires": {
- "indent-string": "^4.0.0",
- "strip-indent": "^3.0.0"
- }
- },
- "regex-not": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
- "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
- "dev": true,
- "requires": {
- "extend-shallow": "^3.0.2",
- "safe-regex": "^1.1.0"
- }
- },
- "regexp.prototype.flags": {
- "version": "1.5.0",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "functions-have-names": "^1.2.3"
- }
- },
- "repeat-element": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz",
- "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==",
- "dev": true
- },
- "repeat-string": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
- "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==",
- "dev": true
- },
- "repeating": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz",
- "integrity": "sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A==",
- "dev": true,
- "requires": {
- "is-finite": "^1.0.0"
- }
- },
- "request": {
- "version": "2.88.2",
- "dev": true,
- "requires": {
- "aws-sign2": "~0.7.0",
- "aws4": "^1.8.0",
- "caseless": "~0.12.0",
- "combined-stream": "~1.0.6",
- "extend": "~3.0.2",
- "forever-agent": "~0.6.1",
- "form-data": "~2.3.2",
- "har-validator": "~5.1.3",
- "http-signature": "~1.2.0",
- "is-typedarray": "~1.0.0",
- "isstream": "~0.1.2",
- "json-stringify-safe": "~5.0.1",
- "mime-types": "~2.1.19",
- "oauth-sign": "~0.9.0",
- "performance-now": "^2.1.0",
- "qs": "~6.5.2",
- "safe-buffer": "^5.1.2",
- "tough-cookie": "~2.5.0",
- "tunnel-agent": "^0.6.0",
- "uuid": "^3.3.2"
- },
- "dependencies": {
- "form-data": {
- "version": "2.3.3",
- "dev": true,
- "requires": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.6",
- "mime-types": "^2.1.12"
- }
- },
- "performance-now": {
- "version": "2.1.0",
- "dev": true
- }
- }
- },
- "require-directory": {
- "version": "2.1.1",
- "dev": true
- },
- "require-main-filename": {
- "version": "2.0.0",
- "dev": true
- },
- "resolve": {
- "version": "1.17.0",
- "dev": true,
- "requires": {
- "path-parse": "^1.0.6"
- }
- },
- "resolve-cwd": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz",
- "integrity": "sha512-ccu8zQTrzVr954472aUVPLEcB3YpKSYR3cg/3lo1okzobPBM+1INXBbBZlDbnI/hbEocnf8j0QVo43hQKrbchg==",
- "dev": true,
- "requires": {
- "resolve-from": "^3.0.0"
- },
- "dependencies": {
- "resolve-from": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
- "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==",
- "dev": true
- }
- }
- },
- "resolve-from": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
- "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
- "dev": true
- },
- "resolve-url": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
- "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==",
- "dev": true
- },
- "ret": {
- "version": "0.1.15",
- "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
- "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
- "dev": true
- },
- "retry": {
- "version": "0.10.1",
- "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz",
- "integrity": "sha512-ZXUSQYTHdl3uS7IuCehYfMzKyIDBNoAuUblvy5oGO5UJSUTmStUUVPXbA9Qxd173Bgre53yCQczQuHgRWAdvJQ==",
- "dev": true
- },
- "run-async": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz",
- "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==",
- "dev": true
- },
- "run-queue": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz",
- "integrity": "sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg==",
- "dev": true,
- "requires": {
- "aproba": "^1.1.1"
- },
- "dependencies": {
- "aproba": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
- "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
- "dev": true
- }
- }
- },
- "rxjs": {
- "version": "6.6.7",
- "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz",
- "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==",
- "dev": true,
- "requires": {
- "tslib": "^1.9.0"
- },
- "dependencies": {
- "tslib": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
- "dev": true
- }
- }
- },
- "safe-array-concat": {
- "version": "1.0.0",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "get-intrinsic": "^1.2.0",
- "has-symbols": "^1.0.3",
- "isarray": "^2.0.5"
- },
- "dependencies": {
- "isarray": {
- "version": "2.0.5",
- "dev": true
- }
- }
- },
- "safe-buffer": {
- "version": "5.2.1",
- "dev": true
- },
- "safe-regex": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
- "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==",
- "dev": true,
- "requires": {
- "ret": "~0.1.10"
- }
- },
- "safe-regex-test": {
- "version": "1.0.0",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "get-intrinsic": "^1.1.3",
- "is-regex": "^1.1.4"
- }
- },
- "safer-buffer": {
- "version": "2.1.2",
- "dev": true
- },
- "semver": {
- "version": "7.5.4",
- "dev": true,
- "requires": {
- "lru-cache": "^6.0.0"
- },
- "dependencies": {
- "lru-cache": {
- "version": "6.0.0",
- "dev": true,
- "requires": {
- "yallist": "^4.0.0"
- }
- }
- }
- },
- "set-blocking": {
- "version": "2.0.0",
- "dev": true
- },
- "set-value": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
- "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==",
- "dev": true,
- "requires": {
- "extend-shallow": "^2.0.1",
- "is-extendable": "^0.1.1",
- "is-plain-object": "^2.0.3",
- "split-string": "^3.0.1"
- },
- "dependencies": {
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- },
- "is-extendable": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
- "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
- "dev": true
- },
- "is-plain-object": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
- "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
- "dev": true,
- "requires": {
- "isobject": "^3.0.1"
- }
- }
- }
- },
- "shallow-clone": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz",
- "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.2"
- }
- },
- "shebang-command": {
- "version": "1.2.0",
- "dev": true,
- "requires": {
- "shebang-regex": "^1.0.0"
- }
- },
- "shebang-regex": {
- "version": "1.0.0",
- "dev": true
- },
- "shell-quote": {
- "version": "1.7.2",
- "dev": true
- },
- "side-channel": {
- "version": "1.0.4",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.0",
- "get-intrinsic": "^1.0.2",
- "object-inspect": "^1.9.0"
- }
- },
- "signal-exit": {
- "version": "3.0.7",
- "dev": true
- },
- "slide": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz",
- "integrity": "sha512-NwrtjCg+lZoqhFU8fOwl4ay2ei8PaqCBOUV3/ektPY9trO1yQ1oXEfmHAhKArUVUr/hOHvy5f6AdP17dCM0zMw==",
- "dev": true
- },
- "smart-buffer": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz",
- "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==",
- "dev": true
- },
- "snapdragon": {
- "version": "0.8.2",
- "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
- "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
- "dev": true,
- "requires": {
- "base": "^0.11.1",
- "debug": "^2.2.0",
- "define-property": "^0.2.5",
- "extend-shallow": "^2.0.1",
- "map-cache": "^0.2.2",
- "source-map": "^0.5.6",
- "source-map-resolve": "^0.5.0",
- "use": "^3.1.0"
- },
- "dependencies": {
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
- "requires": {
- "ms": "2.0.0"
- }
- },
- "define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
- "dev": true,
- "requires": {
- "is-descriptor": "^0.1.0"
- }
- },
- "extend-shallow": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
- "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==",
- "dev": true,
- "requires": {
- "is-extendable": "^0.1.0"
- }
- },
- "is-accessor-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
- "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "is-buffer": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
- "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
- "dev": true
- },
- "is-data-descriptor": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
- "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "is-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
- "dev": true,
- "requires": {
- "is-accessor-descriptor": "^0.1.6",
- "is-data-descriptor": "^0.1.4",
- "kind-of": "^5.0.0"
- }
- },
- "is-extendable": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
- "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
- "dev": true
- },
- "kind-of": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
- "dev": true
- },
- "ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
- "dev": true
- },
- "source-map": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
- "dev": true
- }
- }
- },
- "snapdragon-node": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
- "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
- "dev": true,
- "requires": {
- "define-property": "^1.0.0",
- "isobject": "^3.0.0",
- "snapdragon-util": "^3.0.1"
- },
- "dependencies": {
- "define-property": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
- "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==",
- "dev": true,
- "requires": {
- "is-descriptor": "^1.0.0"
- }
- }
- }
- },
- "snapdragon-util": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
- "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
- "dev": true,
- "requires": {
- "kind-of": "^3.2.0"
- },
- "dependencies": {
- "is-buffer": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
- "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
- "dev": true
- },
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "sntp": {
- "version": "0.2.4",
- "dev": true,
- "requires": {
- "hoek": "0.9.x"
- },
- "dependencies": {
- "hoek": {
- "version": "0.9.1",
- "dev": true
- }
- }
- },
- "socks": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/socks/-/socks-2.3.3.tgz",
- "integrity": "sha512-o5t52PCNtVdiOvzMry7wU4aOqYWL0PeCXRWBEiJow4/i/wr+wpsJQ9awEu1EonLIqsfGd5qSgDdxEOvCdmBEpA==",
- "dev": true,
- "requires": {
- "ip": "1.1.5",
- "smart-buffer": "^4.1.0"
- }
- },
- "socks-proxy-agent": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-4.0.2.tgz",
- "integrity": "sha512-NT6syHhI9LmuEMSK6Kd2V7gNv5KFZoLE7V5udWmn0de+3Mkj3UMA/AJPLyeNUVmElCurSHtUdM3ETpR3z770Wg==",
- "dev": true,
- "requires": {
- "agent-base": "~4.2.1",
- "socks": "~2.3.2"
- },
- "dependencies": {
- "agent-base": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz",
- "integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==",
- "dev": true,
- "requires": {
- "es6-promisify": "^5.0.0"
- }
- }
- }
- },
- "sort-keys": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz",
- "integrity": "sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==",
- "dev": true,
- "requires": {
- "is-plain-obj": "^1.0.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "dev": true
- },
- "source-map-resolve": {
- "version": "0.5.3",
- "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz",
- "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==",
- "dev": true,
- "requires": {
- "atob": "^2.1.2",
- "decode-uri-component": "^0.2.0",
- "resolve-url": "^0.2.1",
- "source-map-url": "^0.4.0",
- "urix": "^0.1.0"
- }
- },
- "source-map-url": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz",
- "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==",
- "dev": true
- },
- "spdx-correct": {
- "version": "3.1.1",
- "dev": true,
- "requires": {
- "spdx-expression-parse": "^3.0.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "spdx-exceptions": {
- "version": "2.3.0",
- "dev": true
- },
- "spdx-expression-parse": {
- "version": "3.0.1",
- "dev": true,
- "requires": {
- "spdx-exceptions": "^2.1.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "spdx-license-ids": {
- "version": "3.0.5",
- "dev": true
- },
- "split": {
- "version": "1.0.1",
- "dev": true,
- "requires": {
- "through": "2"
- }
- },
- "split-on-first": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz",
- "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==",
- "dev": true
- },
- "split-string": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
- "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
- "dev": true,
- "requires": {
- "extend-shallow": "^3.0.0"
- }
- },
- "split2": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz",
- "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==",
- "dev": true,
- "requires": {
- "readable-stream": "^3.0.0"
- }
- },
- "sprintf-js": {
- "version": "1.0.3",
- "dev": true
- },
- "sshpk": {
- "version": "1.17.0",
- "dev": true,
- "requires": {
- "asn1": "~0.2.3",
- "assert-plus": "^1.0.0",
- "bcrypt-pbkdf": "^1.0.0",
- "dashdash": "^1.12.0",
- "ecc-jsbn": "~0.1.1",
- "getpass": "^0.1.1",
- "jsbn": "~0.1.0",
- "safer-buffer": "^2.0.2",
- "tweetnacl": "~0.14.0"
- }
- },
- "ssri": {
- "version": "6.0.2",
- "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz",
- "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==",
- "dev": true,
- "requires": {
- "figgy-pudding": "^3.5.1"
- }
- },
- "static-extend": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
- "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==",
- "dev": true,
- "requires": {
- "define-property": "^0.2.5",
- "object-copy": "^0.1.0"
- },
- "dependencies": {
- "define-property": {
- "version": "0.2.5",
- "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
- "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==",
- "dev": true,
- "requires": {
- "is-descriptor": "^0.1.0"
- }
- },
- "is-accessor-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
- "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "is-buffer": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
- "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
- "dev": true
- },
- "is-data-descriptor": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
- "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "is-descriptor": {
- "version": "0.1.6",
- "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
- "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
- "dev": true,
- "requires": {
- "is-accessor-descriptor": "^0.1.6",
- "is-data-descriptor": "^0.1.4",
- "kind-of": "^5.0.0"
- }
- },
- "kind-of": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
- "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
- "dev": true
- }
- }
- },
- "stream-each": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz",
- "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==",
- "dev": true,
- "requires": {
- "end-of-stream": "^1.1.0",
- "stream-shift": "^1.0.0"
- }
- },
- "stream-shift": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz",
- "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==",
- "dev": true
- },
- "strict-uri-encode": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz",
- "integrity": "sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==",
- "dev": true
- },
- "string_decoder": {
- "version": "1.3.0",
- "dev": true,
- "requires": {
- "safe-buffer": "~5.2.0"
- }
- },
- "string-width": {
- "version": "4.2.3",
- "dev": true,
- "requires": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- }
- },
- "string.prototype.padend": {
- "version": "3.1.0",
- "dev": true,
- "requires": {
- "define-properties": "^1.1.3",
- "es-abstract": "^1.17.0-next.1"
- }
- },
- "string.prototype.trim": {
- "version": "1.2.7",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
- "es-abstract": "^1.20.4"
- }
- },
- "string.prototype.trimend": {
- "version": "1.0.6",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
- "es-abstract": "^1.20.4"
- }
- },
- "string.prototype.trimstart": {
- "version": "1.0.6",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
- "es-abstract": "^1.20.4"
- }
- },
- "strip-ansi": {
- "version": "6.0.1",
- "dev": true,
- "requires": {
- "ansi-regex": "^5.0.1"
- }
- },
- "strip-bom": {
- "version": "3.0.0",
- "dev": true
- },
- "strip-eof": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
- "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==",
- "dev": true
- },
- "strip-indent": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz",
- "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==",
- "dev": true,
- "requires": {
- "min-indent": "^1.0.0"
- }
- },
- "strong-log-transformer": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz",
- "integrity": "sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA==",
- "dev": true,
- "requires": {
- "duplexer": "^0.1.1",
- "minimist": "^1.2.0",
- "through": "^2.3.4"
- }
- },
- "supports-color": {
- "version": "5.5.0",
- "dev": true,
- "requires": {
- "has-flag": "^3.0.0"
- }
- },
- "tar": {
- "version": "4.4.19",
- "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.19.tgz",
- "integrity": "sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==",
- "dev": true,
- "requires": {
- "chownr": "^1.1.4",
- "fs-minipass": "^1.2.7",
- "minipass": "^2.9.0",
- "minizlib": "^1.3.3",
- "mkdirp": "^0.5.5",
- "safe-buffer": "^5.2.1",
- "yallist": "^3.1.1"
- },
- "dependencies": {
- "yallist": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
- "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
- "dev": true
- }
- }
- },
- "temp-dir": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz",
- "integrity": "sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==",
- "dev": true
- },
- "temp-write": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/temp-write/-/temp-write-3.4.0.tgz",
- "integrity": "sha512-P8NK5aNqcGQBC37i/8pL/K9tFgx14CF2vdwluD/BA/dGWGD4T4E59TE7dAxPyb2wusts2FhMp36EiopBBsGJ2Q==",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.2",
- "is-stream": "^1.1.0",
- "make-dir": "^1.0.0",
- "pify": "^3.0.0",
- "temp-dir": "^1.0.0",
- "uuid": "^3.0.1"
- },
- "dependencies": {
- "make-dir": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz",
- "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==",
- "dev": true,
- "requires": {
- "pify": "^3.0.0"
- }
- },
- "pify": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
- "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
- "dev": true
- }
- }
- },
- "text-extensions": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz",
- "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==",
- "dev": true
- },
- "thenify": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz",
- "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==",
- "dev": true,
- "requires": {
- "any-promise": "^1.0.0"
- }
- },
- "thenify-all": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz",
- "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==",
- "dev": true,
- "requires": {
- "thenify": ">= 3.1.0 < 4"
- }
- },
- "through": {
- "version": "2.3.8",
- "dev": true
- },
- "through2": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz",
- "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==",
- "dev": true,
- "requires": {
- "inherits": "^2.0.4",
- "readable-stream": "2 || 3"
- }
- },
- "tmp": {
- "version": "0.0.33",
- "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
- "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
- "dev": true,
- "requires": {
- "os-tmpdir": "~1.0.2"
- }
- },
- "to-object-path": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
- "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==",
- "dev": true,
- "requires": {
- "kind-of": "^3.0.2"
- },
- "dependencies": {
- "is-buffer": {
- "version": "1.1.6",
- "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
- "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
- "dev": true
- },
- "kind-of": {
- "version": "3.2.2",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
- "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==",
- "dev": true,
- "requires": {
- "is-buffer": "^1.1.5"
- }
- }
- }
- },
- "to-regex": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
- "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
- "dev": true,
- "requires": {
- "define-property": "^2.0.2",
- "extend-shallow": "^3.0.2",
- "regex-not": "^1.0.2",
- "safe-regex": "^1.1.0"
- }
- },
- "tough-cookie": {
- "version": "2.5.0",
- "dev": true,
- "requires": {
- "psl": "^1.1.28",
- "punycode": "^2.1.1"
- }
- },
- "tr46": {
- "version": "0.0.3",
- "dev": true
- },
- "trim-newlines": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz",
- "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==",
- "dev": true
- },
- "tunnel-agent": {
- "version": "0.6.0",
- "dev": true,
- "requires": {
- "safe-buffer": "^5.0.1"
- }
- },
- "tweetnacl": {
- "version": "0.14.5",
- "dev": true
- },
- "typed-array-buffer": {
- "version": "1.0.0",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "get-intrinsic": "^1.2.1",
- "is-typed-array": "^1.1.10"
- }
- },
- "typed-array-byte-length": {
- "version": "1.0.0",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "for-each": "^0.3.3",
- "has-proto": "^1.0.1",
- "is-typed-array": "^1.1.10"
- }
- },
- "typed-array-byte-offset": {
- "version": "1.0.0",
- "dev": true,
- "requires": {
- "available-typed-arrays": "^1.0.5",
- "call-bind": "^1.0.2",
- "for-each": "^0.3.3",
- "has-proto": "^1.0.1",
- "is-typed-array": "^1.1.10"
- }
- },
- "typed-array-length": {
- "version": "1.0.4",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "for-each": "^0.3.3",
- "is-typed-array": "^1.1.9"
- }
- },
- "typedarray": {
- "version": "0.0.6",
- "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
- "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==",
- "dev": true
- },
- "uglify-js": {
- "version": "3.17.4",
- "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz",
- "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==",
- "dev": true,
- "optional": true
- },
- "uid-number": {
- "version": "0.0.6",
- "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz",
- "integrity": "sha512-c461FXIljswCuscZn67xq9PpszkPT6RjheWFQTgCyabJrTUozElanb0YEqv2UGgk247YpcJkFBuSGNvBlpXM9w==",
- "dev": true
- },
- "umask": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/umask/-/umask-1.1.0.tgz",
- "integrity": "sha512-lE/rxOhmiScJu9L6RTNVgB/zZbF+vGC0/p6D3xnkAePI2o0sMyFG966iR5Ki50OI/0mNi2yaRnxfLsPmEZF/JA==",
- "dev": true
- },
- "unbox-primitive": {
- "version": "1.0.2",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "has-bigints": "^1.0.2",
- "has-symbols": "^1.0.3",
- "which-boxed-primitive": "^1.0.2"
- }
- },
- "underscore": {
- "version": "1.4.4",
- "dev": true
- },
- "union-value": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz",
- "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==",
- "dev": true,
- "requires": {
- "arr-union": "^3.1.0",
- "get-value": "^2.0.6",
- "is-extendable": "^0.1.1",
- "set-value": "^2.0.1"
- },
- "dependencies": {
- "is-extendable": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
- "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==",
- "dev": true
- }
- }
- },
- "unique-filename": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz",
- "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==",
- "dev": true,
- "requires": {
- "unique-slug": "^2.0.0"
- }
- },
- "unique-slug": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz",
- "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==",
- "dev": true,
- "requires": {
- "imurmurhash": "^0.1.4"
- }
- },
- "universal-user-agent": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-4.0.1.tgz",
- "integrity": "sha512-LnST3ebHwVL2aNe4mejI9IQh2HfZ1RLo8Io2HugSif8ekzD1TlWpHpColOB/eh8JHMLkGH3Akqf040I+4ylNxg==",
- "dev": true,
- "requires": {
- "os-name": "^3.1.0"
- }
- },
- "unset-value": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
- "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==",
- "dev": true,
- "requires": {
- "has-value": "^0.3.1",
- "isobject": "^3.0.0"
- },
- "dependencies": {
- "has-value": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
- "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==",
- "dev": true,
- "requires": {
- "get-value": "^2.0.3",
- "has-values": "^0.1.4",
- "isobject": "^2.0.0"
- },
- "dependencies": {
- "isobject": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
- "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==",
- "dev": true,
- "requires": {
- "isarray": "1.0.0"
- }
- }
- }
- },
- "has-values": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
- "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==",
- "dev": true
- }
- }
- },
- "upath": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz",
- "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==",
- "dev": true
- },
- "uri-js": {
- "version": "4.4.1",
- "dev": true,
- "requires": {
- "punycode": "^2.1.0"
- }
- },
- "urix": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
- "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==",
- "dev": true
- },
- "use": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
- "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
- "dev": true
- },
- "util-deprecate": {
- "version": "1.0.2",
- "dev": true
- },
- "util-promisify": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/util-promisify/-/util-promisify-2.1.0.tgz",
- "integrity": "sha512-K+5eQPYs14b3+E+hmE2J6gCZ4JmMl9DbYS6BeP2CHq6WMuNxErxf5B/n0fz85L8zUuoO6rIzNNmIQDu/j+1OcA==",
- "dev": true,
- "requires": {
- "object.getownpropertydescriptors": "^2.0.3"
- }
- },
- "uuid": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
- "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
- "dev": true
- },
- "validate-npm-package-license": {
- "version": "3.0.4",
- "dev": true,
- "requires": {
- "spdx-correct": "^3.0.0",
- "spdx-expression-parse": "^3.0.0"
- }
- },
- "validate-npm-package-name": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz",
- "integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==",
- "dev": true,
- "requires": {
- "builtins": "^1.0.3"
- }
- },
- "verror": {
- "version": "1.10.0",
- "dev": true,
- "requires": {
- "assert-plus": "^1.0.0",
- "core-util-is": "1.0.2",
- "extsprintf": "^1.2.0"
- }
- },
- "wcwidth": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz",
- "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==",
- "dev": true,
- "requires": {
- "defaults": "^1.0.3"
- }
- },
- "webidl-conversions": {
- "version": "3.0.1",
- "dev": true
- },
- "whatwg-url": {
- "version": "5.0.0",
- "dev": true,
- "requires": {
- "tr46": "~0.0.3",
- "webidl-conversions": "^3.0.0"
- }
- },
- "which": {
- "version": "1.3.1",
- "dev": true,
- "requires": {
- "isexe": "^2.0.0"
- }
- },
- "which-boxed-primitive": {
- "version": "1.0.2",
- "dev": true,
- "requires": {
- "is-bigint": "^1.0.1",
- "is-boolean-object": "^1.1.0",
- "is-number-object": "^1.0.4",
- "is-string": "^1.0.5",
- "is-symbol": "^1.0.3"
- }
- },
- "which-module": {
- "version": "2.0.1",
- "dev": true
- },
- "which-typed-array": {
- "version": "1.1.11",
- "dev": true,
- "requires": {
- "available-typed-arrays": "^1.0.5",
- "call-bind": "^1.0.2",
- "for-each": "^0.3.3",
- "gopd": "^1.0.1",
- "has-tostringtag": "^1.0.0"
- }
- },
- "wide-align": {
- "version": "1.1.5",
- "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz",
- "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==",
- "dev": true,
- "requires": {
- "string-width": "^1.0.2 || 2 || 3 || 4"
- }
- },
- "windows-release": {
- "version": "3.3.3",
- "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-3.3.3.tgz",
- "integrity": "sha512-OSOGH1QYiW5yVor9TtmXKQvt2vjQqbYS+DqmsZw+r7xDwLXEeT3JGW0ZppFmHx4diyXmxt238KFR3N9jzevBRg==",
- "dev": true,
- "requires": {
- "execa": "^1.0.0"
- }
- },
- "wordwrap": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
- "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==",
- "dev": true
- },
- "wrappy": {
- "version": "1.0.2",
- "dev": true
- },
- "write-file-atomic": {
- "version": "2.4.3",
- "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz",
- "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.11",
- "imurmurhash": "^0.1.4",
- "signal-exit": "^3.0.2"
- }
- },
- "write-json-file": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/write-json-file/-/write-json-file-3.2.0.tgz",
- "integrity": "sha512-3xZqT7Byc2uORAatYiP3DHUUAVEkNOswEWNs9H5KXiicRTvzYzYqKjYc4G7p+8pltvAw641lVByKVtMpf+4sYQ==",
- "dev": true,
- "requires": {
- "detect-indent": "^5.0.0",
- "graceful-fs": "^4.1.15",
- "make-dir": "^2.1.0",
- "pify": "^4.0.1",
- "sort-keys": "^2.0.0",
- "write-file-atomic": "^2.4.2"
- },
- "dependencies": {
- "make-dir": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
- "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
- "dev": true,
- "requires": {
- "pify": "^4.0.1",
- "semver": "^5.6.0"
- }
- },
- "semver": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
- "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
- "dev": true
- }
- }
- },
- "write-pkg": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/write-pkg/-/write-pkg-3.2.0.tgz",
- "integrity": "sha512-tX2ifZ0YqEFOF1wjRW2Pk93NLsj02+n1UP5RvO6rCs0K6R2g1padvf006cY74PQJKMGS2r42NK7FD0dG6Y6paw==",
- "dev": true,
- "requires": {
- "sort-keys": "^2.0.0",
- "write-json-file": "^2.2.0"
- },
- "dependencies": {
- "make-dir": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz",
- "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==",
- "dev": true,
- "requires": {
- "pify": "^3.0.0"
- }
- },
- "pify": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
- "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
- "dev": true
- },
- "write-json-file": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/write-json-file/-/write-json-file-2.3.0.tgz",
- "integrity": "sha512-84+F0igFp2dPD6UpAQjOUX3CdKUOqUzn6oE9sDBNzUXINR5VceJ1rauZltqQB/bcYsx3EpKys4C7/PivKUAiWQ==",
- "dev": true,
- "requires": {
- "detect-indent": "^5.0.0",
- "graceful-fs": "^4.1.2",
- "make-dir": "^1.0.0",
- "pify": "^3.0.0",
- "sort-keys": "^2.0.0",
- "write-file-atomic": "^2.0.0"
- }
- }
- }
- },
- "xtend": {
- "version": "4.0.2",
- "dev": true
- },
- "y18n": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
- "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==",
- "dev": true
- },
- "yallist": {
- "version": "4.0.0",
- "dev": true
- },
- "yargs": {
- "version": "14.2.3",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-14.2.3.tgz",
- "integrity": "sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg==",
- "dev": true,
- "requires": {
- "cliui": "^5.0.0",
- "decamelize": "^1.2.0",
- "find-up": "^3.0.0",
- "get-caller-file": "^2.0.1",
- "require-directory": "^2.1.1",
- "require-main-filename": "^2.0.0",
- "set-blocking": "^2.0.0",
- "string-width": "^3.0.0",
- "which-module": "^2.0.0",
- "y18n": "^4.0.0",
- "yargs-parser": "^15.0.1"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
- "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
- "dev": true
- },
- "emoji-regex": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
- "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
- "dev": true
- },
- "find-up": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
- "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
- "dev": true,
- "requires": {
- "locate-path": "^3.0.0"
- }
- },
- "is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
- "dev": true
- },
- "locate-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
- "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
- "dev": true,
- "requires": {
- "p-locate": "^3.0.0",
- "path-exists": "^3.0.0"
- }
- },
- "p-locate": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
- "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
- "dev": true,
- "requires": {
- "p-limit": "^2.0.0"
- }
- },
- "path-exists": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
- "dev": true
- },
- "string-width": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
- "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
- "dev": true,
- "requires": {
- "emoji-regex": "^7.0.1",
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^5.1.0"
- }
- },
- "strip-ansi": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
- "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
- "dev": true,
- "requires": {
- "ansi-regex": "^4.1.0"
- }
- },
- "yargs-parser": {
- "version": "15.0.3",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.3.tgz",
- "integrity": "sha512-/MVEVjTXy/cGAjdtQf8dW3V9b97bPN7rNn8ETj6BmAQL7ibC7O1Q9SPJbGjgh3SlwoBNXMzj/ZGIj8mBgl12YA==",
- "dev": true,
- "requires": {
- "camelcase": "^5.0.0",
- "decamelize": "^1.2.0"
- }
- }
- }
- },
- "yargs-parser": {
- "version": "20.2.9",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
- "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
- "dev": true
- }
- }
-}
diff --git a/package.json b/package.json
index 661021a1f6..1d09d8e9ee 100644
--- a/package.json
+++ b/package.json
@@ -8,12 +8,9 @@
"publish": "lerna publish from-package --no-private",
"changelog": "github-changes -o less -r less.js -a --only-pulls --use-commit-body -m \"(YYYY-MM-DD)\"",
"test": "cd packages/less && npm test",
- "postinstall": "lerna bootstrap"
- },
- "author": {
- "name": "Alexis Sellier",
- "email": "self@cloudhead.net"
+ "postinstall": "npx only-allow pnpm"
},
+ "author": "Alexis Sellier ",
"contributors": [
"The Core Less Team"
],
@@ -26,6 +23,7 @@
"url": "https://github.com/less/less.js.git"
},
"devDependencies": {
+ "all-contributors-cli": "~6.26.1",
"github-changes": "^1.1.2",
"lerna": "^3.22.1",
"npm-run-all": "^4.1.5"
diff --git a/packages/less/Gruntfile.js b/packages/less/Gruntfile.js
index b0731c8871..d0c3002fc1 100644
--- a/packages/less/Gruntfile.js
+++ b/packages/less/Gruntfile.js
@@ -197,8 +197,6 @@ module.exports = function(grunt) {
command: [
/** Browser runtime */
"node build/rollup.js --dist",
- /** Copy to repo root */
- "npm run copy:root",
/** Node.js runtime */
"npm run build"
].join(" && ")
diff --git a/packages/less/bin/lessc b/packages/less/bin/lessc
index c11c9bf2bb..26455c1024 100755
--- a/packages/less/bin/lessc
+++ b/packages/less/bin/lessc
@@ -2,7 +2,7 @@
/* eslint indent: [2, 2, {"SwitchCase": 1}] */
-"use strict";
+'use strict';
var path = require('path');
var fs = require('../lib/less-node/fs').default;
@@ -27,6 +27,7 @@ var plugins = [];
var queuePlugins = [];
var args = process.argv.slice(1);
var silent = false;
+var quiet = false;
var verbose = false;
var options = less.options;
options.plugins = plugins;
@@ -36,7 +37,7 @@ var continueProcessing = true;
var checkArgFunc = function checkArgFunc(arg, option) {
if (!option) {
- console.error("".concat(arg, " option requires a parameter"));
+ console.error(''.concat(arg, ' option requires a parameter'));
continueProcessing = false;
process.exitCode = 1;
return false;
@@ -49,7 +50,7 @@ var checkBooleanArg = function checkBooleanArg(arg) {
var onOff = /^((on|t|true|y|yes)|(off|f|false|n|no))$/i.exec(arg);
if (!onOff) {
- console.error(" unable to parse ".concat(arg, " as a boolean. use one of on/t/true/y/yes/off/f/false/n/no"));
+ console.error(' unable to parse '.concat(arg, ' as a boolean. use one of on/t/true/y/yes/off/f/false/n/no'));
continueProcessing = false;
process.exitCode = 1;
return false;
@@ -110,7 +111,7 @@ function render() {
if (output) {
sourceMapOptions.sourceMapOutputFilename = path.basename(output);
- sourceMapOptions.sourceMapFullFilename = "".concat(output, ".map");
+ sourceMapOptions.sourceMapFullFilename = ''.concat(output, '.map');
} // its in the same directory, so always just the basename
@@ -180,7 +181,7 @@ function render() {
return;
}
- process.stdout.write("".concat(outputbase, ": "));
+ process.stdout.write(''.concat(outputbase, ': '));
}
if (!sourceMapFileInline) {
@@ -200,14 +201,14 @@ function render() {
if (errno && errno.errno[err.errno]) {
description += errno.errno[err.errno].description;
} else {
- description += "".concat(err.code, " ").concat(err.message);
+ description += ''.concat(err.code, ' ').concat(err.message);
}
- console.error("lessc: failed to create file ".concat(filename));
+ console.error('lessc: failed to create file '.concat(filename));
console.error(description);
process.exitCode = 1;
} else {
- less.logger.info("lessc: wrote ".concat(filename));
+ less.logger.info('lessc: wrote '.concat(filename));
}
onDone();
@@ -238,14 +239,14 @@ function render() {
if (errno && errno.errno[err.errno]) {
description += errno.errno[err.errno].description;
} else {
- description += "".concat(err.code, " ").concat(err.message);
+ description += ''.concat(err.code, ' ').concat(err.message);
}
- console.error("lessc: failed to create file ".concat(output));
+ console.error('lessc: failed to create file '.concat(output));
console.error(description);
process.exitCode = 1;
} else {
- less.logger.info("lessc: wrote ".concat(output));
+ less.logger.info('lessc: wrote '.concat(output));
onSuccess();
}
@@ -261,7 +262,7 @@ function render() {
var depends = '';
for (var i = 0; i < result.imports.length; i++) {
- depends += "".concat(result.imports[i], " ");
+ depends += ''.concat(result.imports[i], ' ');
}
console.log(depends);
@@ -270,7 +271,7 @@ function render() {
var parseLessFile = function parseLessFile(e, data) {
if (e) {
- console.error("lessc: ".concat(e.message));
+ console.error('lessc: '.concat(e.message));
process.exitCode = 1;
return;
}
@@ -297,12 +298,14 @@ function render() {
},
warn: function warn(msg) {
// do not show warning if the silent option is used
- if (!silent) {
+ if (!silent && !quiet) {
console.warn(msg);
}
},
error: function error(msg) {
- console.error(msg);
+ if (!silent) {
+ console.error(msg);
+ }
}
});
@@ -344,7 +347,7 @@ function processPluginQueue() {
var x = 0;
function pluginError(name) {
- console.error("Unable to load plugin ".concat(name, " please make sure that it is installed under or at the same level as less"));
+ console.error('Unable to load plugin '.concat(name, ' please make sure that it is installed under or at the same level as less'));
process.exitCode = 1;
}
@@ -393,17 +396,21 @@ function processPluginQueue() {
switch (arg) {
case 'v':
case 'version':
- console.log("lessc ".concat(less.version.join('.'), " (Less Compiler) [JavaScript]"));
+ console.log('lessc '.concat(less.version.join('.'), ' (Less Compiler) [JavaScript]'));
continueProcessing = false;
break;
case 'verbose':
- verbose = true;
+ options.verbose = verbose = true;
break;
case 's':
case 'silent':
- silent = true;
+ options.silent = silent = true;
+ break;
+
+ case 'quiet':
+ options.quiet = quiet = true;
break;
case 'l':
@@ -552,7 +559,7 @@ function processPluginQueue() {
} else if (m === 'all') {
options.rewriteUrls = Constants.RewriteUrls.ALL;
} else {
- console.error("Unknown rewrite-urls argument ".concat(m));
+ console.error('Unknown rewrite-urls argument '.concat(m));
continueProcessing = false;
process.exitCode = 1;
}
@@ -575,8 +582,8 @@ function processPluginQueue() {
break;
case 'm':
- case 'math':
- var m = match[2];
+ case 'math': {
+ let m = match[2];
if (checkArgFunc(arg, m)) {
if (m === 'always') {
console.warn('--math=always is deprecated and will be removed in the future.');
@@ -592,7 +599,7 @@ function processPluginQueue() {
}
break;
-
+ }
case 'su':
case 'strict-units':
if (checkArgFunc(arg, match[2])) {
diff --git a/packages/less/dist b/packages/less/dist
new file mode 120000
index 0000000000..7724b92239
--- /dev/null
+++ b/packages/less/dist
@@ -0,0 +1 @@
+../../dist
\ No newline at end of file
diff --git a/packages/less/dist/less.js b/packages/less/dist/less.js
deleted file mode 100644
index 599d808b5d..0000000000
--- a/packages/less/dist/less.js
+++ /dev/null
@@ -1,11618 +0,0 @@
-/**
- * Less - Leaner CSS v4.2.2
- * http://lesscss.org
- *
- * Copyright (c) 2009-2025, Alexis Sellier
- * Licensed under the Apache-2.0 License.
- *
- * @license Apache-2.0
- */
-
-(function (global, factory) {
- typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
- typeof define === 'function' && define.amd ? define(factory) :
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.less = factory());
-})(this, (function () { 'use strict';
-
- // Export a new default each time
- function defaultOptions () {
- return {
- /* Inline Javascript - @plugin still allowed */
- javascriptEnabled: false,
- /* Outputs a makefile import dependency list to stdout. */
- depends: false,
- /* (DEPRECATED) Compress using less built-in compression.
- * This does an okay job but does not utilise all the tricks of
- * dedicated css compression. */
- compress: false,
- /* Runs the less parser and just reports errors without any output. */
- lint: false,
- /* Sets available include paths.
- * If the file in an @import rule does not exist at that exact location,
- * less will look for it at the location(s) passed to this option.
- * You might use this for instance to specify a path to a library which
- * you want to be referenced simply and relatively in the less files. */
- paths: [],
- /* color output in the terminal */
- color: true,
- /* The strictImports controls whether the compiler will allow an @import inside of either
- * @media blocks or (a later addition) other selector blocks.
- * See: https://github.com/less/less.js/issues/656 */
- strictImports: false,
- /* Allow Imports from Insecure HTTPS Hosts */
- insecure: false,
- /* Allows you to add a path to every generated import and url in your css.
- * This does not affect less import statements that are processed, just ones
- * that are left in the output css. */
- rootpath: '',
- /* By default URLs are kept as-is, so if you import a file in a sub-directory
- * that references an image, exactly the same URL will be output in the css.
- * This option allows you to re-write URL's in imported files so that the
- * URL is always relative to the base imported file */
- rewriteUrls: false,
- /* How to process math
- * 0 always - eagerly try to solve all operations
- * 1 parens-division - require parens for division "/"
- * 2 parens | strict - require parens for all operations
- * 3 strict-legacy - legacy strict behavior (super-strict)
- */
- math: 1,
- /* Without this option, less attempts to guess at the output unit when it does maths. */
- strictUnits: false,
- /* Effectively the declaration is put at the top of your base Less file,
- * meaning it can be used but it also can be overridden if this variable
- * is defined in the file. */
- globalVars: null,
- /* As opposed to the global variable option, this puts the declaration at the
- * end of your base file, meaning it will override anything defined in your Less file. */
- modifyVars: null,
- /* This option allows you to specify a argument to go on to every URL. */
- urlArgs: ''
- };
- }
-
- function extractId(href) {
- return href.replace(/^[a-z-]+:\/+?[^/]+/, '') // Remove protocol & domain
- .replace(/[?&]livereload=\w+/, '') // Remove LiveReload cachebuster
- .replace(/^\//, '') // Remove root /
- .replace(/\.[a-zA-Z]+$/, '') // Remove simple extension
- .replace(/[^.\w-]+/g, '-') // Replace illegal characters
- .replace(/\./g, ':'); // Replace dots with colons(for valid id)
- }
- function addDataAttr(options, tag) {
- if (!tag) {
- return;
- } // in case of tag is null or undefined
- for (var opt in tag.dataset) {
- if (Object.prototype.hasOwnProperty.call(tag.dataset, opt)) {
- if (opt === 'env' || opt === 'dumpLineNumbers' || opt === 'rootpath' || opt === 'errorReporting') {
- options[opt] = tag.dataset[opt];
- }
- else {
- try {
- options[opt] = JSON.parse(tag.dataset[opt]);
- }
- catch (_) { }
- }
- }
- }
- }
-
- var browser = {
- createCSS: function (document, styles, sheet) {
- // Strip the query-string
- var href = sheet.href || '';
- // If there is no title set, use the filename, minus the extension
- var id = "less:".concat(sheet.title || extractId(href));
- // If this has already been inserted into the DOM, we may need to replace it
- var oldStyleNode = document.getElementById(id);
- var keepOldStyleNode = false;
- // Create a new stylesheet node for insertion or (if necessary) replacement
- var styleNode = document.createElement('style');
- styleNode.setAttribute('type', 'text/css');
- if (sheet.media) {
- styleNode.setAttribute('media', sheet.media);
- }
- styleNode.id = id;
- if (!styleNode.styleSheet) {
- styleNode.appendChild(document.createTextNode(styles));
- // If new contents match contents of oldStyleNode, don't replace oldStyleNode
- keepOldStyleNode = (oldStyleNode !== null && oldStyleNode.childNodes.length > 0 && styleNode.childNodes.length > 0 &&
- oldStyleNode.firstChild.nodeValue === styleNode.firstChild.nodeValue);
- }
- var head = document.getElementsByTagName('head')[0];
- // If there is no oldStyleNode, just append; otherwise, only append if we need
- // to replace oldStyleNode with an updated stylesheet
- if (oldStyleNode === null || keepOldStyleNode === false) {
- var nextEl = sheet && sheet.nextSibling || null;
- if (nextEl) {
- nextEl.parentNode.insertBefore(styleNode, nextEl);
- }
- else {
- head.appendChild(styleNode);
- }
- }
- if (oldStyleNode && keepOldStyleNode === false) {
- oldStyleNode.parentNode.removeChild(oldStyleNode);
- }
- // For IE.
- // This needs to happen *after* the style element is added to the DOM, otherwise IE 7 and 8 may crash.
- // See http://social.msdn.microsoft.com/Forums/en-US/7e081b65-878a-4c22-8e68-c10d39c2ed32/internet-explorer-crashes-appending-style-element-to-head
- if (styleNode.styleSheet) {
- try {
- styleNode.styleSheet.cssText = styles;
- }
- catch (e) {
- throw new Error('Couldn\'t reassign styleSheet.cssText.');
- }
- }
- },
- currentScript: function (window) {
- var document = window.document;
- return document.currentScript || (function () {
- var scripts = document.getElementsByTagName('script');
- return scripts[scripts.length - 1];
- })();
- }
- };
-
- var addDefaultOptions = (function (window, options) {
- // use options from the current script tag data attribues
- addDataAttr(options, browser.currentScript(window));
- if (options.isFileProtocol === undefined) {
- options.isFileProtocol = /^(file|(chrome|safari)(-extension)?|resource|qrc|app):/.test(window.location.protocol);
- }
- // Load styles asynchronously (default: false)
- //
- // This is set to `false` by default, so that the body
- // doesn't start loading before the stylesheets are parsed.
- // Setting this to `true` can result in flickering.
- //
- options.async = options.async || false;
- options.fileAsync = options.fileAsync || false;
- // Interval between watch polls
- options.poll = options.poll || (options.isFileProtocol ? 1000 : 1500);
- options.env = options.env || (window.location.hostname == '127.0.0.1' ||
- window.location.hostname == '0.0.0.0' ||
- window.location.hostname == 'localhost' ||
- (window.location.port &&
- window.location.port.length > 0) ||
- options.isFileProtocol ? 'development'
- : 'production');
- var dumpLineNumbers = /!dumpLineNumbers:(comments|mediaquery|all)/.exec(window.location.hash);
- if (dumpLineNumbers) {
- options.dumpLineNumbers = dumpLineNumbers[1];
- }
- if (options.useFileCache === undefined) {
- options.useFileCache = true;
- }
- if (options.onReady === undefined) {
- options.onReady = true;
- }
- if (options.relativeUrls) {
- options.rewriteUrls = 'all';
- }
- });
-
- var logger$1 = {
- error: function (msg) {
- this._fireEvent('error', msg);
- },
- warn: function (msg) {
- this._fireEvent('warn', msg);
- },
- info: function (msg) {
- this._fireEvent('info', msg);
- },
- debug: function (msg) {
- this._fireEvent('debug', msg);
- },
- addListener: function (listener) {
- this._listeners.push(listener);
- },
- removeListener: function (listener) {
- for (var i_1 = 0; i_1 < this._listeners.length; i_1++) {
- if (this._listeners[i_1] === listener) {
- this._listeners.splice(i_1, 1);
- return;
- }
- }
- },
- _fireEvent: function (type, msg) {
- for (var i_2 = 0; i_2 < this._listeners.length; i_2++) {
- var logFunction = this._listeners[i_2][type];
- if (logFunction) {
- logFunction(msg);
- }
- }
- },
- _listeners: []
- };
-
- /**
- * @todo Document why this abstraction exists, and the relationship between
- * environment, file managers, and plugin manager
- */
- var Environment = /** @class */ (function () {
- function Environment(externalEnvironment, fileManagers) {
- this.fileManagers = fileManagers || [];
- externalEnvironment = externalEnvironment || {};
- var optionalFunctions = ['encodeBase64', 'mimeLookup', 'charsetLookup', 'getSourceMapGenerator'];
- var requiredFunctions = [];
- var functions = requiredFunctions.concat(optionalFunctions);
- for (var i_1 = 0; i_1 < functions.length; i_1++) {
- var propName = functions[i_1];
- var environmentFunc = externalEnvironment[propName];
- if (environmentFunc) {
- this[propName] = environmentFunc.bind(externalEnvironment);
- }
- else if (i_1 < requiredFunctions.length) {
- this.warn("missing required function in environment - ".concat(propName));
- }
- }
- }
- Environment.prototype.getFileManager = function (filename, currentDirectory, options, environment, isSync) {
- if (!filename) {
- logger$1.warn('getFileManager called with no filename.. Please report this issue. continuing.');
- }
- if (currentDirectory === undefined) {
- logger$1.warn('getFileManager called with null directory.. Please report this issue. continuing.');
- }
- var fileManagers = this.fileManagers;
- if (options.pluginManager) {
- fileManagers = [].concat(fileManagers).concat(options.pluginManager.getFileManagers());
- }
- for (var i_2 = fileManagers.length - 1; i_2 >= 0; i_2--) {
- var fileManager = fileManagers[i_2];
- if (fileManager[isSync ? 'supportsSync' : 'supports'](filename, currentDirectory, options, environment)) {
- return fileManager;
- }
- }
- return null;
- };
- Environment.prototype.addFileManager = function (fileManager) {
- this.fileManagers.push(fileManager);
- };
- Environment.prototype.clearFileManagers = function () {
- this.fileManagers = [];
- };
- return Environment;
- }());
-
- var colors = {
- 'aliceblue': '#f0f8ff',
- 'antiquewhite': '#faebd7',
- 'aqua': '#00ffff',
- 'aquamarine': '#7fffd4',
- 'azure': '#f0ffff',
- 'beige': '#f5f5dc',
- 'bisque': '#ffe4c4',
- 'black': '#000000',
- 'blanchedalmond': '#ffebcd',
- 'blue': '#0000ff',
- 'blueviolet': '#8a2be2',
- 'brown': '#a52a2a',
- 'burlywood': '#deb887',
- 'cadetblue': '#5f9ea0',
- 'chartreuse': '#7fff00',
- 'chocolate': '#d2691e',
- 'coral': '#ff7f50',
- 'cornflowerblue': '#6495ed',
- 'cornsilk': '#fff8dc',
- 'crimson': '#dc143c',
- 'cyan': '#00ffff',
- 'darkblue': '#00008b',
- 'darkcyan': '#008b8b',
- 'darkgoldenrod': '#b8860b',
- 'darkgray': '#a9a9a9',
- 'darkgrey': '#a9a9a9',
- 'darkgreen': '#006400',
- 'darkkhaki': '#bdb76b',
- 'darkmagenta': '#8b008b',
- 'darkolivegreen': '#556b2f',
- 'darkorange': '#ff8c00',
- 'darkorchid': '#9932cc',
- 'darkred': '#8b0000',
- 'darksalmon': '#e9967a',
- 'darkseagreen': '#8fbc8f',
- 'darkslateblue': '#483d8b',
- 'darkslategray': '#2f4f4f',
- 'darkslategrey': '#2f4f4f',
- 'darkturquoise': '#00ced1',
- 'darkviolet': '#9400d3',
- 'deeppink': '#ff1493',
- 'deepskyblue': '#00bfff',
- 'dimgray': '#696969',
- 'dimgrey': '#696969',
- 'dodgerblue': '#1e90ff',
- 'firebrick': '#b22222',
- 'floralwhite': '#fffaf0',
- 'forestgreen': '#228b22',
- 'fuchsia': '#ff00ff',
- 'gainsboro': '#dcdcdc',
- 'ghostwhite': '#f8f8ff',
- 'gold': '#ffd700',
- 'goldenrod': '#daa520',
- 'gray': '#808080',
- 'grey': '#808080',
- 'green': '#008000',
- 'greenyellow': '#adff2f',
- 'honeydew': '#f0fff0',
- 'hotpink': '#ff69b4',
- 'indianred': '#cd5c5c',
- 'indigo': '#4b0082',
- 'ivory': '#fffff0',
- 'khaki': '#f0e68c',
- 'lavender': '#e6e6fa',
- 'lavenderblush': '#fff0f5',
- 'lawngreen': '#7cfc00',
- 'lemonchiffon': '#fffacd',
- 'lightblue': '#add8e6',
- 'lightcoral': '#f08080',
- 'lightcyan': '#e0ffff',
- 'lightgoldenrodyellow': '#fafad2',
- 'lightgray': '#d3d3d3',
- 'lightgrey': '#d3d3d3',
- 'lightgreen': '#90ee90',
- 'lightpink': '#ffb6c1',
- 'lightsalmon': '#ffa07a',
- 'lightseagreen': '#20b2aa',
- 'lightskyblue': '#87cefa',
- 'lightslategray': '#778899',
- 'lightslategrey': '#778899',
- 'lightsteelblue': '#b0c4de',
- 'lightyellow': '#ffffe0',
- 'lime': '#00ff00',
- 'limegreen': '#32cd32',
- 'linen': '#faf0e6',
- 'magenta': '#ff00ff',
- 'maroon': '#800000',
- 'mediumaquamarine': '#66cdaa',
- 'mediumblue': '#0000cd',
- 'mediumorchid': '#ba55d3',
- 'mediumpurple': '#9370d8',
- 'mediumseagreen': '#3cb371',
- 'mediumslateblue': '#7b68ee',
- 'mediumspringgreen': '#00fa9a',
- 'mediumturquoise': '#48d1cc',
- 'mediumvioletred': '#c71585',
- 'midnightblue': '#191970',
- 'mintcream': '#f5fffa',
- 'mistyrose': '#ffe4e1',
- 'moccasin': '#ffe4b5',
- 'navajowhite': '#ffdead',
- 'navy': '#000080',
- 'oldlace': '#fdf5e6',
- 'olive': '#808000',
- 'olivedrab': '#6b8e23',
- 'orange': '#ffa500',
- 'orangered': '#ff4500',
- 'orchid': '#da70d6',
- 'palegoldenrod': '#eee8aa',
- 'palegreen': '#98fb98',
- 'paleturquoise': '#afeeee',
- 'palevioletred': '#d87093',
- 'papayawhip': '#ffefd5',
- 'peachpuff': '#ffdab9',
- 'peru': '#cd853f',
- 'pink': '#ffc0cb',
- 'plum': '#dda0dd',
- 'powderblue': '#b0e0e6',
- 'purple': '#800080',
- 'rebeccapurple': '#663399',
- 'red': '#ff0000',
- 'rosybrown': '#bc8f8f',
- 'royalblue': '#4169e1',
- 'saddlebrown': '#8b4513',
- 'salmon': '#fa8072',
- 'sandybrown': '#f4a460',
- 'seagreen': '#2e8b57',
- 'seashell': '#fff5ee',
- 'sienna': '#a0522d',
- 'silver': '#c0c0c0',
- 'skyblue': '#87ceeb',
- 'slateblue': '#6a5acd',
- 'slategray': '#708090',
- 'slategrey': '#708090',
- 'snow': '#fffafa',
- 'springgreen': '#00ff7f',
- 'steelblue': '#4682b4',
- 'tan': '#d2b48c',
- 'teal': '#008080',
- 'thistle': '#d8bfd8',
- 'tomato': '#ff6347',
- 'turquoise': '#40e0d0',
- 'violet': '#ee82ee',
- 'wheat': '#f5deb3',
- 'white': '#ffffff',
- 'whitesmoke': '#f5f5f5',
- 'yellow': '#ffff00',
- 'yellowgreen': '#9acd32'
- };
-
- var unitConversions = {
- length: {
- 'm': 1,
- 'cm': 0.01,
- 'mm': 0.001,
- 'in': 0.0254,
- 'px': 0.0254 / 96,
- 'pt': 0.0254 / 72,
- 'pc': 0.0254 / 72 * 12
- },
- duration: {
- 's': 1,
- 'ms': 0.001
- },
- angle: {
- 'rad': 1 / (2 * Math.PI),
- 'deg': 1 / 360,
- 'grad': 1 / 400,
- 'turn': 1
- }
- };
-
- var data = { colors: colors, unitConversions: unitConversions };
-
- /**
- * The reason why Node is a class and other nodes simply do not extend
- * from Node (since we're transpiling) is due to this issue:
- *
- * @see https://github.com/less/less.js/issues/3434
- */
- var Node = /** @class */ (function () {
- function Node() {
- this.parent = null;
- this.visibilityBlocks = undefined;
- this.nodeVisible = undefined;
- this.rootNode = null;
- this.parsed = null;
- }
- Object.defineProperty(Node.prototype, "currentFileInfo", {
- get: function () {
- return this.fileInfo();
- },
- enumerable: false,
- configurable: true
- });
- Object.defineProperty(Node.prototype, "index", {
- get: function () {
- return this.getIndex();
- },
- enumerable: false,
- configurable: true
- });
- Node.prototype.setParent = function (nodes, parent) {
- function set(node) {
- if (node && node instanceof Node) {
- node.parent = parent;
- }
- }
- if (Array.isArray(nodes)) {
- nodes.forEach(set);
- }
- else {
- set(nodes);
- }
- };
- Node.prototype.getIndex = function () {
- return this._index || (this.parent && this.parent.getIndex()) || 0;
- };
- Node.prototype.fileInfo = function () {
- return this._fileInfo || (this.parent && this.parent.fileInfo()) || {};
- };
- Node.prototype.isRulesetLike = function () { return false; };
- Node.prototype.toCSS = function (context) {
- var strs = [];
- this.genCSS(context, {
- // remove when genCSS has JSDoc types
- // eslint-disable-next-line no-unused-vars
- add: function (chunk, fileInfo, index) {
- strs.push(chunk);
- },
- isEmpty: function () {
- return strs.length === 0;
- }
- });
- return strs.join('');
- };
- Node.prototype.genCSS = function (context, output) {
- output.add(this.value);
- };
- Node.prototype.accept = function (visitor) {
- this.value = visitor.visit(this.value);
- };
- Node.prototype.eval = function () { return this; };
- Node.prototype._operate = function (context, op, a, b) {
- switch (op) {
- case '+': return a + b;
- case '-': return a - b;
- case '*': return a * b;
- case '/': return a / b;
- }
- };
- Node.prototype.fround = function (context, value) {
- var precision = context && context.numPrecision;
- // add "epsilon" to ensure numbers like 1.000000005 (represented as 1.000000004999...) are properly rounded:
- return (precision) ? Number((value + 2e-16).toFixed(precision)) : value;
- };
- Node.compare = function (a, b) {
- /* returns:
- -1: a < b
- 0: a = b
- 1: a > b
- and *any* other value for a != b (e.g. undefined, NaN, -2 etc.) */
- if ((a.compare) &&
- // for "symmetric results" force toCSS-based comparison
- // of Quoted or Anonymous if either value is one of those
- !(b.type === 'Quoted' || b.type === 'Anonymous')) {
- return a.compare(b);
- }
- else if (b.compare) {
- return -b.compare(a);
- }
- else if (a.type !== b.type) {
- return undefined;
- }
- a = a.value;
- b = b.value;
- if (!Array.isArray(a)) {
- return a === b ? 0 : undefined;
- }
- if (a.length !== b.length) {
- return undefined;
- }
- for (var i_1 = 0; i_1 < a.length; i_1++) {
- if (Node.compare(a[i_1], b[i_1]) !== 0) {
- return undefined;
- }
- }
- return 0;
- };
- Node.numericCompare = function (a, b) {
- return a < b ? -1
- : a === b ? 0
- : a > b ? 1 : undefined;
- };
- // Returns true if this node represents root of ast imported by reference
- Node.prototype.blocksVisibility = function () {
- if (this.visibilityBlocks === undefined) {
- this.visibilityBlocks = 0;
- }
- return this.visibilityBlocks !== 0;
- };
- Node.prototype.addVisibilityBlock = function () {
- if (this.visibilityBlocks === undefined) {
- this.visibilityBlocks = 0;
- }
- this.visibilityBlocks = this.visibilityBlocks + 1;
- };
- Node.prototype.removeVisibilityBlock = function () {
- if (this.visibilityBlocks === undefined) {
- this.visibilityBlocks = 0;
- }
- this.visibilityBlocks = this.visibilityBlocks - 1;
- };
- // Turns on node visibility - if called node will be shown in output regardless
- // of whether it comes from import by reference or not
- Node.prototype.ensureVisibility = function () {
- this.nodeVisible = true;
- };
- // Turns off node visibility - if called node will NOT be shown in output regardless
- // of whether it comes from import by reference or not
- Node.prototype.ensureInvisibility = function () {
- this.nodeVisible = false;
- };
- // return values:
- // false - the node must not be visible
- // true - the node must be visible
- // undefined or null - the node has the same visibility as its parent
- Node.prototype.isVisible = function () {
- return this.nodeVisible;
- };
- Node.prototype.visibilityInfo = function () {
- return {
- visibilityBlocks: this.visibilityBlocks,
- nodeVisible: this.nodeVisible
- };
- };
- Node.prototype.copyVisibilityInfo = function (info) {
- if (!info) {
- return;
- }
- this.visibilityBlocks = info.visibilityBlocks;
- this.nodeVisible = info.nodeVisible;
- };
- return Node;
- }());
-
- //
- // RGB Colors - #ff0014, #eee
- //
- var Color = function (rgb, a, originalForm) {
- var self = this;
- //
- // The end goal here, is to parse the arguments
- // into an integer triplet, such as `128, 255, 0`
- //
- // This facilitates operations and conversions.
- //
- if (Array.isArray(rgb)) {
- this.rgb = rgb;
- }
- else if (rgb.length >= 6) {
- this.rgb = [];
- rgb.match(/.{2}/g).map(function (c, i) {
- if (i < 3) {
- self.rgb.push(parseInt(c, 16));
- }
- else {
- self.alpha = (parseInt(c, 16)) / 255;
- }
- });
- }
- else {
- this.rgb = [];
- rgb.split('').map(function (c, i) {
- if (i < 3) {
- self.rgb.push(parseInt(c + c, 16));
- }
- else {
- self.alpha = (parseInt(c + c, 16)) / 255;
- }
- });
- }
- this.alpha = this.alpha || (typeof a === 'number' ? a : 1);
- if (typeof originalForm !== 'undefined') {
- this.value = originalForm;
- }
- };
- Color.prototype = Object.assign(new Node(), {
- type: 'Color',
- luma: function () {
- var r = this.rgb[0] / 255, g = this.rgb[1] / 255, b = this.rgb[2] / 255;
- r = (r <= 0.03928) ? r / 12.92 : Math.pow(((r + 0.055) / 1.055), 2.4);
- g = (g <= 0.03928) ? g / 12.92 : Math.pow(((g + 0.055) / 1.055), 2.4);
- b = (b <= 0.03928) ? b / 12.92 : Math.pow(((b + 0.055) / 1.055), 2.4);
- return 0.2126 * r + 0.7152 * g + 0.0722 * b;
- },
- genCSS: function (context, output) {
- output.add(this.toCSS(context));
- },
- toCSS: function (context, doNotCompress) {
- var compress = context && context.compress && !doNotCompress;
- var color;
- var alpha;
- var colorFunction;
- var args = [];
- // `value` is set if this color was originally
- // converted from a named color string so we need
- // to respect this and try to output named color too.
- alpha = this.fround(context, this.alpha);
- if (this.value) {
- if (this.value.indexOf('rgb') === 0) {
- if (alpha < 1) {
- colorFunction = 'rgba';
- }
- }
- else if (this.value.indexOf('hsl') === 0) {
- if (alpha < 1) {
- colorFunction = 'hsla';
- }
- else {
- colorFunction = 'hsl';
- }
- }
- else {
- return this.value;
- }
- }
- else {
- if (alpha < 1) {
- colorFunction = 'rgba';
- }
- }
- switch (colorFunction) {
- case 'rgba':
- args = this.rgb.map(function (c) {
- return clamp$1(Math.round(c), 255);
- }).concat(clamp$1(alpha, 1));
- break;
- case 'hsla':
- args.push(clamp$1(alpha, 1));
- // eslint-disable-next-line no-fallthrough
- case 'hsl':
- color = this.toHSL();
- args = [
- this.fround(context, color.h),
- "".concat(this.fround(context, color.s * 100), "%"),
- "".concat(this.fround(context, color.l * 100), "%")
- ].concat(args);
- }
- if (colorFunction) {
- // Values are capped between `0` and `255`, rounded and zero-padded.
- return "".concat(colorFunction, "(").concat(args.join(",".concat(compress ? '' : ' ')), ")");
- }
- color = this.toRGB();
- if (compress) {
- var splitcolor = color.split('');
- // Convert color to short format
- if (splitcolor[1] === splitcolor[2] && splitcolor[3] === splitcolor[4] && splitcolor[5] === splitcolor[6]) {
- color = "#".concat(splitcolor[1]).concat(splitcolor[3]).concat(splitcolor[5]);
- }
- }
- return color;
- },
- //
- // Operations have to be done per-channel, if not,
- // channels will spill onto each other. Once we have
- // our result, in the form of an integer triplet,
- // we create a new Color node to hold the result.
- //
- operate: function (context, op, other) {
- var rgb = new Array(3);
- var alpha = this.alpha * (1 - other.alpha) + other.alpha;
- for (var c = 0; c < 3; c++) {
- rgb[c] = this._operate(context, op, this.rgb[c], other.rgb[c]);
- }
- return new Color(rgb, alpha);
- },
- toRGB: function () {
- return toHex(this.rgb);
- },
- toHSL: function () {
- var r = this.rgb[0] / 255, g = this.rgb[1] / 255, b = this.rgb[2] / 255, a = this.alpha;
- var max = Math.max(r, g, b), min = Math.min(r, g, b);
- var h;
- var s;
- var l = (max + min) / 2;
- var d = max - min;
- if (max === min) {
- h = s = 0;
- }
- else {
- s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
- switch (max) {
- case r:
- h = (g - b) / d + (g < b ? 6 : 0);
- break;
- case g:
- h = (b - r) / d + 2;
- break;
- case b:
- h = (r - g) / d + 4;
- break;
- }
- h /= 6;
- }
- return { h: h * 360, s: s, l: l, a: a };
- },
- // Adapted from http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript
- toHSV: function () {
- var r = this.rgb[0] / 255, g = this.rgb[1] / 255, b = this.rgb[2] / 255, a = this.alpha;
- var max = Math.max(r, g, b), min = Math.min(r, g, b);
- var h;
- var s;
- var v = max;
- var d = max - min;
- if (max === 0) {
- s = 0;
- }
- else {
- s = d / max;
- }
- if (max === min) {
- h = 0;
- }
- else {
- switch (max) {
- case r:
- h = (g - b) / d + (g < b ? 6 : 0);
- break;
- case g:
- h = (b - r) / d + 2;
- break;
- case b:
- h = (r - g) / d + 4;
- break;
- }
- h /= 6;
- }
- return { h: h * 360, s: s, v: v, a: a };
- },
- toARGB: function () {
- return toHex([this.alpha * 255].concat(this.rgb));
- },
- compare: function (x) {
- return (x.rgb &&
- x.rgb[0] === this.rgb[0] &&
- x.rgb[1] === this.rgb[1] &&
- x.rgb[2] === this.rgb[2] &&
- x.alpha === this.alpha) ? 0 : undefined;
- }
- });
- Color.fromKeyword = function (keyword) {
- var c;
- var key = keyword.toLowerCase();
- // eslint-disable-next-line no-prototype-builtins
- if (colors.hasOwnProperty(key)) {
- c = new Color(colors[key].slice(1));
- }
- else if (key === 'transparent') {
- c = new Color([0, 0, 0], 0);
- }
- if (c) {
- c.value = keyword;
- return c;
- }
- };
- function clamp$1(v, max) {
- return Math.min(Math.max(v, 0), max);
- }
- function toHex(v) {
- return "#".concat(v.map(function (c) {
- c = clamp$1(Math.round(c), 255);
- return (c < 16 ? '0' : '') + c.toString(16);
- }).join(''));
- }
-
- var Paren = function (node) {
- this.value = node;
- };
- Paren.prototype = Object.assign(new Node(), {
- type: 'Paren',
- genCSS: function (context, output) {
- output.add('(');
- this.value.genCSS(context, output);
- output.add(')');
- },
- eval: function (context) {
- return new Paren(this.value.eval(context));
- }
- });
-
- var _noSpaceCombinators = {
- '': true,
- ' ': true,
- '|': true
- };
- var Combinator = function (value) {
- if (value === ' ') {
- this.value = ' ';
- this.emptyOrWhitespace = true;
- }
- else {
- this.value = value ? value.trim() : '';
- this.emptyOrWhitespace = this.value === '';
- }
- };
- Combinator.prototype = Object.assign(new Node(), {
- type: 'Combinator',
- genCSS: function (context, output) {
- var spaceOrEmpty = (context.compress || _noSpaceCombinators[this.value]) ? '' : ' ';
- output.add(spaceOrEmpty + this.value + spaceOrEmpty);
- }
- });
-
- var Element = function (combinator, value, isVariable, index, currentFileInfo, visibilityInfo) {
- this.combinator = combinator instanceof Combinator ?
- combinator : new Combinator(combinator);
- if (typeof value === 'string') {
- this.value = value.trim();
- }
- else if (value) {
- this.value = value;
- }
- else {
- this.value = '';
- }
- this.isVariable = isVariable;
- this._index = index;
- this._fileInfo = currentFileInfo;
- this.copyVisibilityInfo(visibilityInfo);
- this.setParent(this.combinator, this);
- };
- Element.prototype = Object.assign(new Node(), {
- type: 'Element',
- accept: function (visitor) {
- var value = this.value;
- this.combinator = visitor.visit(this.combinator);
- if (typeof value === 'object') {
- this.value = visitor.visit(value);
- }
- },
- eval: function (context) {
- return new Element(this.combinator, this.value.eval ? this.value.eval(context) : this.value, this.isVariable, this.getIndex(), this.fileInfo(), this.visibilityInfo());
- },
- clone: function () {
- return new Element(this.combinator, this.value, this.isVariable, this.getIndex(), this.fileInfo(), this.visibilityInfo());
- },
- genCSS: function (context, output) {
- output.add(this.toCSS(context), this.fileInfo(), this.getIndex());
- },
- toCSS: function (context) {
- context = context || {};
- var value = this.value;
- var firstSelector = context.firstSelector;
- if (value instanceof Paren) {
- // selector in parens should not be affected by outer selector
- // flags (breaks only interpolated selectors - see #1973)
- context.firstSelector = true;
- }
- value = value.toCSS ? value.toCSS(context) : value;
- context.firstSelector = firstSelector;
- if (value === '' && this.combinator.value.charAt(0) === '&') {
- return '';
- }
- else {
- return this.combinator.toCSS(context) + value;
- }
- }
- });
-
- var Math$1 = {
- ALWAYS: 0,
- PARENS_DIVISION: 1,
- PARENS: 2
- // removed - STRICT_LEGACY: 3
- };
- var RewriteUrls = {
- OFF: 0,
- LOCAL: 1,
- ALL: 2
- };
-
- /******************************************************************************
- Copyright (c) Microsoft Corporation.
-
- Permission to use, copy, modify, and/or distribute this software for any
- purpose with or without fee is hereby granted.
-
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
- AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
- PERFORMANCE OF THIS SOFTWARE.
- ***************************************************************************** */
-
- var __assign = function() {
- __assign = Object.assign || function __assign(t) {
- for (var s, i = 1, n = arguments.length; i < n; i++) {
- s = arguments[i];
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
- }
- return t;
- };
- return __assign.apply(this, arguments);
- };
-
- function __spreadArray(to, from, pack) {
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
- if (ar || !(i in from)) {
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
- ar[i] = from[i];
- }
- }
- return to.concat(ar || Array.prototype.slice.call(from));
- }
-
- typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
- var e = new Error(message);
- return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
- };
-
- /**
- * Returns the object type of the given payload
- *
- * @param {*} payload
- * @returns {string}
- */
- function getType(payload) {
- return Object.prototype.toString.call(payload).slice(8, -1);
- }
- /**
- * Returns whether the payload is a plain JavaScript object (excluding special classes or objects with other prototypes)
- *
- * @param {*} payload
- * @returns {payload is PlainObject}
- */
- function isPlainObject(payload) {
- if (getType(payload) !== 'Object')
- return false;
- return payload.constructor === Object && Object.getPrototypeOf(payload) === Object.prototype;
- }
- /**
- * Returns whether the payload is an array
- *
- * @param {any} payload
- * @returns {payload is any[]}
- */
- function isArray(payload) {
- return getType(payload) === 'Array';
- }
-
- function assignProp(carry, key, newVal, originalObject, includeNonenumerable) {
- var propType = {}.propertyIsEnumerable.call(originalObject, key)
- ? 'enumerable'
- : 'nonenumerable';
- if (propType === 'enumerable')
- carry[key] = newVal;
- if (includeNonenumerable && propType === 'nonenumerable') {
- Object.defineProperty(carry, key, {
- value: newVal,
- enumerable: false,
- writable: true,
- configurable: true,
- });
- }
- }
- /**
- * Copy (clone) an object and all its props recursively to get rid of any prop referenced of the original object. Arrays are also cloned, however objects inside arrays are still linked.
- *
- * @export
- * @template T
- * @param {T} target Target can be anything
- * @param {Options} [options = {}] Options can be `props` or `nonenumerable`
- * @returns {T} the target with replaced values
- * @export
- */
- function copy(target, options) {
- if (options === void 0) { options = {}; }
- if (isArray(target)) {
- return target.map(function (item) { return copy(item, options); });
- }
- if (!isPlainObject(target)) {
- return target;
- }
- var props = Object.getOwnPropertyNames(target);
- var symbols = Object.getOwnPropertySymbols(target);
- return __spreadArray(__spreadArray([], props, true), symbols, true).reduce(function (carry, key) {
- if (isArray(options.props) && !options.props.includes(key)) {
- return carry;
- }
- var val = target[key];
- var newVal = copy(val, options);
- assignProp(carry, key, newVal, target, options.nonenumerable);
- return carry;
- }, {});
- }
-
- /* jshint proto: true */
- function getLocation(index, inputStream) {
- var n = index + 1;
- var line = null;
- var column = -1;
- while (--n >= 0 && inputStream.charAt(n) !== '\n') {
- column++;
- }
- if (typeof index === 'number') {
- line = (inputStream.slice(0, index).match(/\n/g) || '').length;
- }
- return {
- line: line,
- column: column
- };
- }
- function copyArray(arr) {
- var i;
- var length = arr.length;
- var copy = new Array(length);
- for (i = 0; i < length; i++) {
- copy[i] = arr[i];
- }
- return copy;
- }
- function clone(obj) {
- var cloned = {};
- for (var prop in obj) {
- if (Object.prototype.hasOwnProperty.call(obj, prop)) {
- cloned[prop] = obj[prop];
- }
- }
- return cloned;
- }
- function defaults(obj1, obj2) {
- var newObj = obj2 || {};
- if (!obj2._defaults) {
- newObj = {};
- var defaults_1 = copy(obj1);
- newObj._defaults = defaults_1;
- var cloned = obj2 ? copy(obj2) : {};
- Object.assign(newObj, defaults_1, cloned);
- }
- return newObj;
- }
- function copyOptions(obj1, obj2) {
- if (obj2 && obj2._defaults) {
- return obj2;
- }
- var opts = defaults(obj1, obj2);
- if (opts.strictMath) {
- opts.math = Math$1.PARENS;
- }
- // Back compat with changed relativeUrls option
- if (opts.relativeUrls) {
- opts.rewriteUrls = RewriteUrls.ALL;
- }
- if (typeof opts.math === 'string') {
- switch (opts.math.toLowerCase()) {
- case 'always':
- opts.math = Math$1.ALWAYS;
- break;
- case 'parens-division':
- opts.math = Math$1.PARENS_DIVISION;
- break;
- case 'strict':
- case 'parens':
- opts.math = Math$1.PARENS;
- break;
- default:
- opts.math = Math$1.PARENS;
- }
- }
- if (typeof opts.rewriteUrls === 'string') {
- switch (opts.rewriteUrls.toLowerCase()) {
- case 'off':
- opts.rewriteUrls = RewriteUrls.OFF;
- break;
- case 'local':
- opts.rewriteUrls = RewriteUrls.LOCAL;
- break;
- case 'all':
- opts.rewriteUrls = RewriteUrls.ALL;
- break;
- }
- }
- return opts;
- }
- function merge(obj1, obj2) {
- for (var prop in obj2) {
- if (Object.prototype.hasOwnProperty.call(obj2, prop)) {
- obj1[prop] = obj2[prop];
- }
- }
- return obj1;
- }
- function flattenArray(arr, result) {
- if (result === void 0) { result = []; }
- for (var i_1 = 0, length_1 = arr.length; i_1 < length_1; i_1++) {
- var value = arr[i_1];
- if (Array.isArray(value)) {
- flattenArray(value, result);
- }
- else {
- if (value !== undefined) {
- result.push(value);
- }
- }
- }
- return result;
- }
- function isNullOrUndefined(val) {
- return val === null || val === undefined;
- }
-
- var utils = /*#__PURE__*/Object.freeze({
- __proto__: null,
- getLocation: getLocation,
- copyArray: copyArray,
- clone: clone,
- defaults: defaults,
- copyOptions: copyOptions,
- merge: merge,
- flattenArray: flattenArray,
- isNullOrUndefined: isNullOrUndefined
- });
-
- var anonymousFunc = /(|Function):(\d+):(\d+)/;
- /**
- * This is a centralized class of any error that could be thrown internally (mostly by the parser).
- * Besides standard .message it keeps some additional data like a path to the file where the error
- * occurred along with line and column numbers.
- *
- * @class
- * @extends Error
- * @type {module.LessError}
- *
- * @prop {string} type
- * @prop {string} filename
- * @prop {number} index
- * @prop {number} line
- * @prop {number} column
- * @prop {number} callLine
- * @prop {number} callExtract
- * @prop {string[]} extract
- *
- * @param {Object} e - An error object to wrap around or just a descriptive object
- * @param {Object} fileContentMap - An object with file contents in 'contents' property (like importManager) @todo - move to fileManager?
- * @param {string} [currentFilename]
- */
- var LessError = function (e, fileContentMap, currentFilename) {
- Error.call(this);
- var filename = e.filename || currentFilename;
- this.message = e.message;
- this.stack = e.stack;
- if (fileContentMap && filename) {
- var input = fileContentMap.contents[filename];
- var loc = getLocation(e.index, input);
- var line = loc.line;
- var col = loc.column;
- var callLine = e.call && getLocation(e.call, input).line;
- var lines = input ? input.split('\n') : '';
- this.type = e.type || 'Syntax';
- this.filename = filename;
- this.index = e.index;
- this.line = typeof line === 'number' ? line + 1 : null;
- this.column = col;
- if (!this.line && this.stack) {
- var found = this.stack.match(anonymousFunc);
- /**
- * We have to figure out how this environment stringifies anonymous functions
- * so we can correctly map plugin errors.
- *
- * Note, in Node 8, the output of anonymous funcs varied based on parameters
- * being present or not, so we inject dummy params.
- */
- var func = new Function('a', 'throw new Error()');
- var lineAdjust = 0;
- try {
- func();
- }
- catch (e) {
- var match = e.stack.match(anonymousFunc);
- lineAdjust = 1 - parseInt(match[2]);
- }
- if (found) {
- if (found[2]) {
- this.line = parseInt(found[2]) + lineAdjust;
- }
- if (found[3]) {
- this.column = parseInt(found[3]);
- }
- }
- }
- this.callLine = callLine + 1;
- this.callExtract = lines[callLine];
- this.extract = [
- lines[this.line - 2],
- lines[this.line - 1],
- lines[this.line]
- ];
- }
- };
- if (typeof Object.create === 'undefined') {
- var F = function () { };
- F.prototype = Error.prototype;
- LessError.prototype = new F();
- }
- else {
- LessError.prototype = Object.create(Error.prototype);
- }
- LessError.prototype.constructor = LessError;
- /**
- * An overridden version of the default Object.prototype.toString
- * which uses additional information to create a helpful message.
- *
- * @param {Object} options
- * @returns {string}
- */
- LessError.prototype.toString = function (options) {
- options = options || {};
- var message = '';
- var extract = this.extract || [];
- var error = [];
- var stylize = function (str) { return str; };
- if (options.stylize) {
- var type = typeof options.stylize;
- if (type !== 'function') {
- throw Error("options.stylize should be a function, got a ".concat(type, "!"));
- }
- stylize = options.stylize;
- }
- if (this.line !== null) {
- if (typeof extract[0] === 'string') {
- error.push(stylize("".concat(this.line - 1, " ").concat(extract[0]), 'grey'));
- }
- if (typeof extract[1] === 'string') {
- var errorTxt = "".concat(this.line, " ");
- if (extract[1]) {
- errorTxt += extract[1].slice(0, this.column) +
- stylize(stylize(stylize(extract[1].substr(this.column, 1), 'bold') +
- extract[1].slice(this.column + 1), 'red'), 'inverse');
- }
- error.push(errorTxt);
- }
- if (typeof extract[2] === 'string') {
- error.push(stylize("".concat(this.line + 1, " ").concat(extract[2]), 'grey'));
- }
- error = "".concat(error.join('\n') + stylize('', 'reset'), "\n");
- }
- message += stylize("".concat(this.type, "Error: ").concat(this.message), 'red');
- if (this.filename) {
- message += stylize(' in ', 'red') + this.filename;
- }
- if (this.line) {
- message += stylize(" on line ".concat(this.line, ", column ").concat(this.column + 1, ":"), 'grey');
- }
- message += "\n".concat(error);
- if (this.callLine) {
- message += "".concat(stylize('from ', 'red') + (this.filename || ''), "/n");
- message += "".concat(stylize(this.callLine, 'grey'), " ").concat(this.callExtract, "/n");
- }
- return message;
- };
-
- var _visitArgs = { visitDeeper: true };
- var _hasIndexed = false;
- function _noop(node) {
- return node;
- }
- function indexNodeTypes(parent, ticker) {
- // add .typeIndex to tree node types for lookup table
- var key, child;
- for (key in parent) {
- /* eslint guard-for-in: 0 */
- child = parent[key];
- switch (typeof child) {
- case 'function':
- // ignore bound functions directly on tree which do not have a prototype
- // or aren't nodes
- if (child.prototype && child.prototype.type) {
- child.prototype.typeIndex = ticker++;
- }
- break;
- case 'object':
- ticker = indexNodeTypes(child, ticker);
- break;
- }
- }
- return ticker;
- }
- var Visitor = /** @class */ (function () {
- function Visitor(implementation) {
- this._implementation = implementation;
- this._visitInCache = {};
- this._visitOutCache = {};
- if (!_hasIndexed) {
- indexNodeTypes(tree, 1);
- _hasIndexed = true;
- }
- }
- Visitor.prototype.visit = function (node) {
- if (!node) {
- return node;
- }
- var nodeTypeIndex = node.typeIndex;
- if (!nodeTypeIndex) {
- // MixinCall args aren't a node type?
- if (node.value && node.value.typeIndex) {
- this.visit(node.value);
- }
- return node;
- }
- var impl = this._implementation;
- var func = this._visitInCache[nodeTypeIndex];
- var funcOut = this._visitOutCache[nodeTypeIndex];
- var visitArgs = _visitArgs;
- var fnName;
- visitArgs.visitDeeper = true;
- if (!func) {
- fnName = "visit".concat(node.type);
- func = impl[fnName] || _noop;
- funcOut = impl["".concat(fnName, "Out")] || _noop;
- this._visitInCache[nodeTypeIndex] = func;
- this._visitOutCache[nodeTypeIndex] = funcOut;
- }
- if (func !== _noop) {
- var newNode = func.call(impl, node, visitArgs);
- if (node && impl.isReplacing) {
- node = newNode;
- }
- }
- if (visitArgs.visitDeeper && node) {
- if (node.length) {
- for (var i_1 = 0, cnt = node.length; i_1 < cnt; i_1++) {
- if (node[i_1].accept) {
- node[i_1].accept(this);
- }
- }
- }
- else if (node.accept) {
- node.accept(this);
- }
- }
- if (funcOut != _noop) {
- funcOut.call(impl, node);
- }
- return node;
- };
- Visitor.prototype.visitArray = function (nodes, nonReplacing) {
- if (!nodes) {
- return nodes;
- }
- var cnt = nodes.length;
- var i;
- // Non-replacing
- if (nonReplacing || !this._implementation.isReplacing) {
- for (i = 0; i < cnt; i++) {
- this.visit(nodes[i]);
- }
- return nodes;
- }
- // Replacing
- var out = [];
- for (i = 0; i < cnt; i++) {
- var evald = this.visit(nodes[i]);
- if (evald === undefined) {
- continue;
- }
- if (!evald.splice) {
- out.push(evald);
- }
- else if (evald.length) {
- this.flatten(evald, out);
- }
- }
- return out;
- };
- Visitor.prototype.flatten = function (arr, out) {
- if (!out) {
- out = [];
- }
- var cnt, i, item, nestedCnt, j, nestedItem;
- for (i = 0, cnt = arr.length; i < cnt; i++) {
- item = arr[i];
- if (item === undefined) {
- continue;
- }
- if (!item.splice) {
- out.push(item);
- continue;
- }
- for (j = 0, nestedCnt = item.length; j < nestedCnt; j++) {
- nestedItem = item[j];
- if (nestedItem === undefined) {
- continue;
- }
- if (!nestedItem.splice) {
- out.push(nestedItem);
- }
- else if (nestedItem.length) {
- this.flatten(nestedItem, out);
- }
- }
- }
- return out;
- };
- return Visitor;
- }());
-
- var contexts = {};
- var copyFromOriginal = function copyFromOriginal(original, destination, propertiesToCopy) {
- if (!original) {
- return;
- }
- for (var i_1 = 0; i_1 < propertiesToCopy.length; i_1++) {
- if (Object.prototype.hasOwnProperty.call(original, propertiesToCopy[i_1])) {
- destination[propertiesToCopy[i_1]] = original[propertiesToCopy[i_1]];
- }
- }
- };
- /*
- parse is used whilst parsing
- */
- var parseCopyProperties = [
- // options
- 'paths',
- 'rewriteUrls',
- 'rootpath',
- 'strictImports',
- 'insecure',
- 'dumpLineNumbers',
- 'compress',
- 'syncImport',
- 'chunkInput',
- 'mime',
- 'useFileCache',
- // context
- 'processImports',
- // Used by the import manager to stop multiple import visitors being created.
- 'pluginManager' // Used as the plugin manager for the session
- ];
- contexts.Parse = function (options) {
- copyFromOriginal(options, this, parseCopyProperties);
- if (typeof this.paths === 'string') {
- this.paths = [this.paths];
- }
- };
- var evalCopyProperties = [
- 'paths',
- 'compress',
- 'math',
- 'strictUnits',
- 'sourceMap',
- 'importMultiple',
- 'urlArgs',
- 'javascriptEnabled',
- 'pluginManager',
- 'importantScope',
- 'rewriteUrls' // option - whether to adjust URL's to be relative
- ];
- contexts.Eval = function (options, frames) {
- copyFromOriginal(options, this, evalCopyProperties);
- if (typeof this.paths === 'string') {
- this.paths = [this.paths];
- }
- this.frames = frames || [];
- this.importantScope = this.importantScope || [];
- };
- contexts.Eval.prototype.enterCalc = function () {
- if (!this.calcStack) {
- this.calcStack = [];
- }
- this.calcStack.push(true);
- this.inCalc = true;
- };
- contexts.Eval.prototype.exitCalc = function () {
- this.calcStack.pop();
- if (!this.calcStack.length) {
- this.inCalc = false;
- }
- };
- contexts.Eval.prototype.inParenthesis = function () {
- if (!this.parensStack) {
- this.parensStack = [];
- }
- this.parensStack.push(true);
- };
- contexts.Eval.prototype.outOfParenthesis = function () {
- this.parensStack.pop();
- };
- contexts.Eval.prototype.inCalc = false;
- contexts.Eval.prototype.mathOn = true;
- contexts.Eval.prototype.isMathOn = function (op) {
- if (!this.mathOn) {
- return false;
- }
- if (op === '/' && this.math !== Math$1.ALWAYS && (!this.parensStack || !this.parensStack.length)) {
- return false;
- }
- if (this.math > Math$1.PARENS_DIVISION) {
- return this.parensStack && this.parensStack.length;
- }
- return true;
- };
- contexts.Eval.prototype.pathRequiresRewrite = function (path) {
- var isRelative = this.rewriteUrls === RewriteUrls.LOCAL ? isPathLocalRelative : isPathRelative;
- return isRelative(path);
- };
- contexts.Eval.prototype.rewritePath = function (path, rootpath) {
- var newPath;
- rootpath = rootpath || '';
- newPath = this.normalizePath(rootpath + path);
- // If a path was explicit relative and the rootpath was not an absolute path
- // we must ensure that the new path is also explicit relative.
- if (isPathLocalRelative(path) &&
- isPathRelative(rootpath) &&
- isPathLocalRelative(newPath) === false) {
- newPath = "./".concat(newPath);
- }
- return newPath;
- };
- contexts.Eval.prototype.normalizePath = function (path) {
- var segments = path.split('/').reverse();
- var segment;
- path = [];
- while (segments.length !== 0) {
- segment = segments.pop();
- switch (segment) {
- case '.':
- break;
- case '..':
- if ((path.length === 0) || (path[path.length - 1] === '..')) {
- path.push(segment);
- }
- else {
- path.pop();
- }
- break;
- default:
- path.push(segment);
- break;
- }
- }
- return path.join('/');
- };
- function isPathRelative(path) {
- return !/^(?:[a-z-]+:|\/|#)/i.test(path);
- }
- function isPathLocalRelative(path) {
- return path.charAt(0) === '.';
- }
- // todo - do the same for the toCSS ?
-
- var ImportSequencer = /** @class */ (function () {
- function ImportSequencer(onSequencerEmpty) {
- this.imports = [];
- this.variableImports = [];
- this._onSequencerEmpty = onSequencerEmpty;
- this._currentDepth = 0;
- }
- ImportSequencer.prototype.addImport = function (callback) {
- var importSequencer = this, importItem = {
- callback: callback,
- args: null,
- isReady: false
- };
- this.imports.push(importItem);
- return function () {
- importItem.args = Array.prototype.slice.call(arguments, 0);
- importItem.isReady = true;
- importSequencer.tryRun();
- };
- };
- ImportSequencer.prototype.addVariableImport = function (callback) {
- this.variableImports.push(callback);
- };
- ImportSequencer.prototype.tryRun = function () {
- this._currentDepth++;
- try {
- while (true) {
- while (this.imports.length > 0) {
- var importItem = this.imports[0];
- if (!importItem.isReady) {
- return;
- }
- this.imports = this.imports.slice(1);
- importItem.callback.apply(null, importItem.args);
- }
- if (this.variableImports.length === 0) {
- break;
- }
- var variableImport = this.variableImports[0];
- this.variableImports = this.variableImports.slice(1);
- variableImport();
- }
- }
- finally {
- this._currentDepth--;
- }
- if (this._currentDepth === 0 && this._onSequencerEmpty) {
- this._onSequencerEmpty();
- }
- };
- return ImportSequencer;
- }());
-
- /* eslint-disable no-unused-vars */
- var ImportVisitor = function (importer, finish) {
- this._visitor = new Visitor(this);
- this._importer = importer;
- this._finish = finish;
- this.context = new contexts.Eval();
- this.importCount = 0;
- this.onceFileDetectionMap = {};
- this.recursionDetector = {};
- this._sequencer = new ImportSequencer(this._onSequencerEmpty.bind(this));
- };
- ImportVisitor.prototype = {
- isReplacing: false,
- run: function (root) {
- try {
- // process the contents
- this._visitor.visit(root);
- }
- catch (e) {
- this.error = e;
- }
- this.isFinished = true;
- this._sequencer.tryRun();
- },
- _onSequencerEmpty: function () {
- if (!this.isFinished) {
- return;
- }
- this._finish(this.error);
- },
- visitImport: function (importNode, visitArgs) {
- var inlineCSS = importNode.options.inline;
- if (!importNode.css || inlineCSS) {
- var context = new contexts.Eval(this.context, copyArray(this.context.frames));
- var importParent = context.frames[0];
- this.importCount++;
- if (importNode.isVariableImport()) {
- this._sequencer.addVariableImport(this.processImportNode.bind(this, importNode, context, importParent));
- }
- else {
- this.processImportNode(importNode, context, importParent);
- }
- }
- visitArgs.visitDeeper = false;
- },
- processImportNode: function (importNode, context, importParent) {
- var evaldImportNode;
- var inlineCSS = importNode.options.inline;
- try {
- evaldImportNode = importNode.evalForImport(context);
- }
- catch (e) {
- if (!e.filename) {
- e.index = importNode.getIndex();
- e.filename = importNode.fileInfo().filename;
- }
- // attempt to eval properly and treat as css
- importNode.css = true;
- // if that fails, this error will be thrown
- importNode.error = e;
- }
- if (evaldImportNode && (!evaldImportNode.css || inlineCSS)) {
- if (evaldImportNode.options.multiple) {
- context.importMultiple = true;
- }
- // try appending if we haven't determined if it is css or not
- var tryAppendLessExtension = evaldImportNode.css === undefined;
- for (var i_1 = 0; i_1 < importParent.rules.length; i_1++) {
- if (importParent.rules[i_1] === importNode) {
- importParent.rules[i_1] = evaldImportNode;
- break;
- }
- }
- var onImported = this.onImported.bind(this, evaldImportNode, context), sequencedOnImported = this._sequencer.addImport(onImported);
- this._importer.push(evaldImportNode.getPath(), tryAppendLessExtension, evaldImportNode.fileInfo(), evaldImportNode.options, sequencedOnImported);
- }
- else {
- this.importCount--;
- if (this.isFinished) {
- this._sequencer.tryRun();
- }
- }
- },
- onImported: function (importNode, context, e, root, importedAtRoot, fullPath) {
- if (e) {
- if (!e.filename) {
- e.index = importNode.getIndex();
- e.filename = importNode.fileInfo().filename;
- }
- this.error = e;
- }
- var importVisitor = this, inlineCSS = importNode.options.inline, isPlugin = importNode.options.isPlugin, isOptional = importNode.options.optional, duplicateImport = importedAtRoot || fullPath in importVisitor.recursionDetector;
- if (!context.importMultiple) {
- if (duplicateImport) {
- importNode.skip = true;
- }
- else {
- importNode.skip = function () {
- if (fullPath in importVisitor.onceFileDetectionMap) {
- return true;
- }
- importVisitor.onceFileDetectionMap[fullPath] = true;
- return false;
- };
- }
- }
- if (!fullPath && isOptional) {
- importNode.skip = true;
- }
- if (root) {
- importNode.root = root;
- importNode.importedFilename = fullPath;
- if (!inlineCSS && !isPlugin && (context.importMultiple || !duplicateImport)) {
- importVisitor.recursionDetector[fullPath] = true;
- var oldContext = this.context;
- this.context = context;
- try {
- this._visitor.visit(root);
- }
- catch (e) {
- this.error = e;
- }
- this.context = oldContext;
- }
- }
- importVisitor.importCount--;
- if (importVisitor.isFinished) {
- importVisitor._sequencer.tryRun();
- }
- },
- visitDeclaration: function (declNode, visitArgs) {
- if (declNode.value.type === 'DetachedRuleset') {
- this.context.frames.unshift(declNode);
- }
- else {
- visitArgs.visitDeeper = false;
- }
- },
- visitDeclarationOut: function (declNode) {
- if (declNode.value.type === 'DetachedRuleset') {
- this.context.frames.shift();
- }
- },
- visitAtRule: function (atRuleNode, visitArgs) {
- this.context.frames.unshift(atRuleNode);
- },
- visitAtRuleOut: function (atRuleNode) {
- this.context.frames.shift();
- },
- visitMixinDefinition: function (mixinDefinitionNode, visitArgs) {
- this.context.frames.unshift(mixinDefinitionNode);
- },
- visitMixinDefinitionOut: function (mixinDefinitionNode) {
- this.context.frames.shift();
- },
- visitRuleset: function (rulesetNode, visitArgs) {
- this.context.frames.unshift(rulesetNode);
- },
- visitRulesetOut: function (rulesetNode) {
- this.context.frames.shift();
- },
- visitMedia: function (mediaNode, visitArgs) {
- this.context.frames.unshift(mediaNode.rules[0]);
- },
- visitMediaOut: function (mediaNode) {
- this.context.frames.shift();
- }
- };
-
- var SetTreeVisibilityVisitor = /** @class */ (function () {
- function SetTreeVisibilityVisitor(visible) {
- this.visible = visible;
- }
- SetTreeVisibilityVisitor.prototype.run = function (root) {
- this.visit(root);
- };
- SetTreeVisibilityVisitor.prototype.visitArray = function (nodes) {
- if (!nodes) {
- return nodes;
- }
- var cnt = nodes.length;
- var i;
- for (i = 0; i < cnt; i++) {
- this.visit(nodes[i]);
- }
- return nodes;
- };
- SetTreeVisibilityVisitor.prototype.visit = function (node) {
- if (!node) {
- return node;
- }
- if (node.constructor === Array) {
- return this.visitArray(node);
- }
- if (!node.blocksVisibility || node.blocksVisibility()) {
- return node;
- }
- if (this.visible) {
- node.ensureVisibility();
- }
- else {
- node.ensureInvisibility();
- }
- node.accept(this);
- return node;
- };
- return SetTreeVisibilityVisitor;
- }());
-
- /* eslint-disable no-unused-vars */
- /* jshint loopfunc:true */
- var ExtendFinderVisitor = /** @class */ (function () {
- function ExtendFinderVisitor() {
- this._visitor = new Visitor(this);
- this.contexts = [];
- this.allExtendsStack = [[]];
- }
- ExtendFinderVisitor.prototype.run = function (root) {
- root = this._visitor.visit(root);
- root.allExtends = this.allExtendsStack[0];
- return root;
- };
- ExtendFinderVisitor.prototype.visitDeclaration = function (declNode, visitArgs) {
- visitArgs.visitDeeper = false;
- };
- ExtendFinderVisitor.prototype.visitMixinDefinition = function (mixinDefinitionNode, visitArgs) {
- visitArgs.visitDeeper = false;
- };
- ExtendFinderVisitor.prototype.visitRuleset = function (rulesetNode, visitArgs) {
- if (rulesetNode.root) {
- return;
- }
- var i;
- var j;
- var extend;
- var allSelectorsExtendList = [];
- var extendList;
- // get &:extend(.a); rules which apply to all selectors in this ruleset
- var rules = rulesetNode.rules, ruleCnt = rules ? rules.length : 0;
- for (i = 0; i < ruleCnt; i++) {
- if (rulesetNode.rules[i] instanceof tree.Extend) {
- allSelectorsExtendList.push(rules[i]);
- rulesetNode.extendOnEveryPath = true;
- }
- }
- // now find every selector and apply the extends that apply to all extends
- // and the ones which apply to an individual extend
- var paths = rulesetNode.paths;
- for (i = 0; i < paths.length; i++) {
- var selectorPath = paths[i], selector = selectorPath[selectorPath.length - 1], selExtendList = selector.extendList;
- extendList = selExtendList ? copyArray(selExtendList).concat(allSelectorsExtendList)
- : allSelectorsExtendList;
- if (extendList) {
- extendList = extendList.map(function (allSelectorsExtend) {
- return allSelectorsExtend.clone();
- });
- }
- for (j = 0; j < extendList.length; j++) {
- this.foundExtends = true;
- extend = extendList[j];
- extend.findSelfSelectors(selectorPath);
- extend.ruleset = rulesetNode;
- if (j === 0) {
- extend.firstExtendOnThisSelectorPath = true;
- }
- this.allExtendsStack[this.allExtendsStack.length - 1].push(extend);
- }
- }
- this.contexts.push(rulesetNode.selectors);
- };
- ExtendFinderVisitor.prototype.visitRulesetOut = function (rulesetNode) {
- if (!rulesetNode.root) {
- this.contexts.length = this.contexts.length - 1;
- }
- };
- ExtendFinderVisitor.prototype.visitMedia = function (mediaNode, visitArgs) {
- mediaNode.allExtends = [];
- this.allExtendsStack.push(mediaNode.allExtends);
- };
- ExtendFinderVisitor.prototype.visitMediaOut = function (mediaNode) {
- this.allExtendsStack.length = this.allExtendsStack.length - 1;
- };
- ExtendFinderVisitor.prototype.visitAtRule = function (atRuleNode, visitArgs) {
- atRuleNode.allExtends = [];
- this.allExtendsStack.push(atRuleNode.allExtends);
- };
- ExtendFinderVisitor.prototype.visitAtRuleOut = function (atRuleNode) {
- this.allExtendsStack.length = this.allExtendsStack.length - 1;
- };
- return ExtendFinderVisitor;
- }());
- var ProcessExtendsVisitor = /** @class */ (function () {
- function ProcessExtendsVisitor() {
- this._visitor = new Visitor(this);
- }
- ProcessExtendsVisitor.prototype.run = function (root) {
- var extendFinder = new ExtendFinderVisitor();
- this.extendIndices = {};
- extendFinder.run(root);
- if (!extendFinder.foundExtends) {
- return root;
- }
- root.allExtends = root.allExtends.concat(this.doExtendChaining(root.allExtends, root.allExtends));
- this.allExtendsStack = [root.allExtends];
- var newRoot = this._visitor.visit(root);
- this.checkExtendsForNonMatched(root.allExtends);
- return newRoot;
- };
- ProcessExtendsVisitor.prototype.checkExtendsForNonMatched = function (extendList) {
- var indices = this.extendIndices;
- extendList.filter(function (extend) {
- return !extend.hasFoundMatches && extend.parent_ids.length == 1;
- }).forEach(function (extend) {
- var selector = '_unknown_';
- try {
- selector = extend.selector.toCSS({});
- }
- catch (_) { }
- if (!indices["".concat(extend.index, " ").concat(selector)]) {
- indices["".concat(extend.index, " ").concat(selector)] = true;
- logger$1.warn("extend '".concat(selector, "' has no matches"));
- }
- });
- };
- ProcessExtendsVisitor.prototype.doExtendChaining = function (extendsList, extendsListTarget, iterationCount) {
- //
- // chaining is different from normal extension.. if we extend an extend then we are not just copying, altering
- // and pasting the selector we would do normally, but we are also adding an extend with the same target selector
- // this means this new extend can then go and alter other extends
- //
- // this method deals with all the chaining work - without it, extend is flat and doesn't work on other extend selectors
- // this is also the most expensive.. and a match on one selector can cause an extension of a selector we had already
- // processed if we look at each selector at a time, as is done in visitRuleset
- var extendIndex;
- var targetExtendIndex;
- var matches;
- var extendsToAdd = [];
- var newSelector;
- var extendVisitor = this;
- var selectorPath;
- var extend;
- var targetExtend;
- var newExtend;
- iterationCount = iterationCount || 0;
- // loop through comparing every extend with every target extend.
- // a target extend is the one on the ruleset we are looking at copy/edit/pasting in place
- // e.g. .a:extend(.b) {} and .b:extend(.c) {} then the first extend extends the second one
- // and the second is the target.
- // the separation into two lists allows us to process a subset of chains with a bigger set, as is the
- // case when processing media queries
- for (extendIndex = 0; extendIndex < extendsList.length; extendIndex++) {
- for (targetExtendIndex = 0; targetExtendIndex < extendsListTarget.length; targetExtendIndex++) {
- extend = extendsList[extendIndex];
- targetExtend = extendsListTarget[targetExtendIndex];
- // look for circular references
- if (extend.parent_ids.indexOf(targetExtend.object_id) >= 0) {
- continue;
- }
- // find a match in the target extends self selector (the bit before :extend)
- selectorPath = [targetExtend.selfSelectors[0]];
- matches = extendVisitor.findMatch(extend, selectorPath);
- if (matches.length) {
- extend.hasFoundMatches = true;
- // we found a match, so for each self selector..
- extend.selfSelectors.forEach(function (selfSelector) {
- var info = targetExtend.visibilityInfo();
- // process the extend as usual
- newSelector = extendVisitor.extendSelector(matches, selectorPath, selfSelector, extend.isVisible());
- // but now we create a new extend from it
- newExtend = new (tree.Extend)(targetExtend.selector, targetExtend.option, 0, targetExtend.fileInfo(), info);
- newExtend.selfSelectors = newSelector;
- // add the extend onto the list of extends for that selector
- newSelector[newSelector.length - 1].extendList = [newExtend];
- // record that we need to add it.
- extendsToAdd.push(newExtend);
- newExtend.ruleset = targetExtend.ruleset;
- // remember its parents for circular references
- newExtend.parent_ids = newExtend.parent_ids.concat(targetExtend.parent_ids, extend.parent_ids);
- // only process the selector once.. if we have :extend(.a,.b) then multiple
- // extends will look at the same selector path, so when extending
- // we know that any others will be duplicates in terms of what is added to the css
- if (targetExtend.firstExtendOnThisSelectorPath) {
- newExtend.firstExtendOnThisSelectorPath = true;
- targetExtend.ruleset.paths.push(newSelector);
- }
- });
- }
- }
- }
- if (extendsToAdd.length) {
- // try to detect circular references to stop a stack overflow.
- // may no longer be needed.
- this.extendChainCount++;
- if (iterationCount > 100) {
- var selectorOne = '{unable to calculate}';
- var selectorTwo = '{unable to calculate}';
- try {
- selectorOne = extendsToAdd[0].selfSelectors[0].toCSS();
- selectorTwo = extendsToAdd[0].selector.toCSS();
- }
- catch (e) { }
- throw { message: "extend circular reference detected. One of the circular extends is currently:".concat(selectorOne, ":extend(").concat(selectorTwo, ")") };
- }
- // now process the new extends on the existing rules so that we can handle a extending b extending c extending
- // d extending e...
- return extendsToAdd.concat(extendVisitor.doExtendChaining(extendsToAdd, extendsListTarget, iterationCount + 1));
- }
- else {
- return extendsToAdd;
- }
- };
- ProcessExtendsVisitor.prototype.visitDeclaration = function (ruleNode, visitArgs) {
- visitArgs.visitDeeper = false;
- };
- ProcessExtendsVisitor.prototype.visitMixinDefinition = function (mixinDefinitionNode, visitArgs) {
- visitArgs.visitDeeper = false;
- };
- ProcessExtendsVisitor.prototype.visitSelector = function (selectorNode, visitArgs) {
- visitArgs.visitDeeper = false;
- };
- ProcessExtendsVisitor.prototype.visitRuleset = function (rulesetNode, visitArgs) {
- if (rulesetNode.root) {
- return;
- }
- var matches;
- var pathIndex;
- var extendIndex;
- var allExtends = this.allExtendsStack[this.allExtendsStack.length - 1];
- var selectorsToAdd = [];
- var extendVisitor = this;
- var selectorPath;
- // look at each selector path in the ruleset, find any extend matches and then copy, find and replace
- for (extendIndex = 0; extendIndex < allExtends.length; extendIndex++) {
- for (pathIndex = 0; pathIndex < rulesetNode.paths.length; pathIndex++) {
- selectorPath = rulesetNode.paths[pathIndex];
- // extending extends happens initially, before the main pass
- if (rulesetNode.extendOnEveryPath) {
- continue;
- }
- var extendList = selectorPath[selectorPath.length - 1].extendList;
- if (extendList && extendList.length) {
- continue;
- }
- matches = this.findMatch(allExtends[extendIndex], selectorPath);
- if (matches.length) {
- allExtends[extendIndex].hasFoundMatches = true;
- allExtends[extendIndex].selfSelectors.forEach(function (selfSelector) {
- var extendedSelectors;
- extendedSelectors = extendVisitor.extendSelector(matches, selectorPath, selfSelector, allExtends[extendIndex].isVisible());
- selectorsToAdd.push(extendedSelectors);
- });
- }
- }
- }
- rulesetNode.paths = rulesetNode.paths.concat(selectorsToAdd);
- };
- ProcessExtendsVisitor.prototype.findMatch = function (extend, haystackSelectorPath) {
- //
- // look through the haystack selector path to try and find the needle - extend.selector
- // returns an array of selector matches that can then be replaced
- //
- var haystackSelectorIndex;
- var hackstackSelector;
- var hackstackElementIndex;
- var haystackElement;
- var targetCombinator;
- var i;
- var extendVisitor = this;
- var needleElements = extend.selector.elements;
- var potentialMatches = [];
- var potentialMatch;
- var matches = [];
- // loop through the haystack elements
- for (haystackSelectorIndex = 0; haystackSelectorIndex < haystackSelectorPath.length; haystackSelectorIndex++) {
- hackstackSelector = haystackSelectorPath[haystackSelectorIndex];
- for (hackstackElementIndex = 0; hackstackElementIndex < hackstackSelector.elements.length; hackstackElementIndex++) {
- haystackElement = hackstackSelector.elements[hackstackElementIndex];
- // if we allow elements before our match we can add a potential match every time. otherwise only at the first element.
- if (extend.allowBefore || (haystackSelectorIndex === 0 && hackstackElementIndex === 0)) {
- potentialMatches.push({ pathIndex: haystackSelectorIndex, index: hackstackElementIndex, matched: 0,
- initialCombinator: haystackElement.combinator });
- }
- for (i = 0; i < potentialMatches.length; i++) {
- potentialMatch = potentialMatches[i];
- // selectors add " " onto the first element. When we use & it joins the selectors together, but if we don't
- // then each selector in haystackSelectorPath has a space before it added in the toCSS phase. so we need to
- // work out what the resulting combinator will be
- targetCombinator = haystackElement.combinator.value;
- if (targetCombinator === '' && hackstackElementIndex === 0) {
- targetCombinator = ' ';
- }
- // if we don't match, null our match to indicate failure
- if (!extendVisitor.isElementValuesEqual(needleElements[potentialMatch.matched].value, haystackElement.value) ||
- (potentialMatch.matched > 0 && needleElements[potentialMatch.matched].combinator.value !== targetCombinator)) {
- potentialMatch = null;
- }
- else {
- potentialMatch.matched++;
- }
- // if we are still valid and have finished, test whether we have elements after and whether these are allowed
- if (potentialMatch) {
- potentialMatch.finished = potentialMatch.matched === needleElements.length;
- if (potentialMatch.finished &&
- (!extend.allowAfter &&
- (hackstackElementIndex + 1 < hackstackSelector.elements.length || haystackSelectorIndex + 1 < haystackSelectorPath.length))) {
- potentialMatch = null;
- }
- }
- // if null we remove, if not, we are still valid, so either push as a valid match or continue
- if (potentialMatch) {
- if (potentialMatch.finished) {
- potentialMatch.length = needleElements.length;
- potentialMatch.endPathIndex = haystackSelectorIndex;
- potentialMatch.endPathElementIndex = hackstackElementIndex + 1; // index after end of match
- potentialMatches.length = 0; // we don't allow matches to overlap, so start matching again
- matches.push(potentialMatch);
- }
- }
- else {
- potentialMatches.splice(i, 1);
- i--;
- }
- }
- }
- }
- return matches;
- };
- ProcessExtendsVisitor.prototype.isElementValuesEqual = function (elementValue1, elementValue2) {
- if (typeof elementValue1 === 'string' || typeof elementValue2 === 'string') {
- return elementValue1 === elementValue2;
- }
- if (elementValue1 instanceof tree.Attribute) {
- if (elementValue1.op !== elementValue2.op || elementValue1.key !== elementValue2.key) {
- return false;
- }
- if (!elementValue1.value || !elementValue2.value) {
- if (elementValue1.value || elementValue2.value) {
- return false;
- }
- return true;
- }
- elementValue1 = elementValue1.value.value || elementValue1.value;
- elementValue2 = elementValue2.value.value || elementValue2.value;
- return elementValue1 === elementValue2;
- }
- elementValue1 = elementValue1.value;
- elementValue2 = elementValue2.value;
- if (elementValue1 instanceof tree.Selector) {
- if (!(elementValue2 instanceof tree.Selector) || elementValue1.elements.length !== elementValue2.elements.length) {
- return false;
- }
- for (var i_1 = 0; i_1 < elementValue1.elements.length; i_1++) {
- if (elementValue1.elements[i_1].combinator.value !== elementValue2.elements[i_1].combinator.value) {
- if (i_1 !== 0 || (elementValue1.elements[i_1].combinator.value || ' ') !== (elementValue2.elements[i_1].combinator.value || ' ')) {
- return false;
- }
- }
- if (!this.isElementValuesEqual(elementValue1.elements[i_1].value, elementValue2.elements[i_1].value)) {
- return false;
- }
- }
- return true;
- }
- return false;
- };
- ProcessExtendsVisitor.prototype.extendSelector = function (matches, selectorPath, replacementSelector, isVisible) {
- // for a set of matches, replace each match with the replacement selector
- var currentSelectorPathIndex = 0, currentSelectorPathElementIndex = 0, path = [], matchIndex, selector, firstElement, match, newElements;
- for (matchIndex = 0; matchIndex < matches.length; matchIndex++) {
- match = matches[matchIndex];
- selector = selectorPath[match.pathIndex];
- firstElement = new tree.Element(match.initialCombinator, replacementSelector.elements[0].value, replacementSelector.elements[0].isVariable, replacementSelector.elements[0].getIndex(), replacementSelector.elements[0].fileInfo());
- if (match.pathIndex > currentSelectorPathIndex && currentSelectorPathElementIndex > 0) {
- path[path.length - 1].elements = path[path.length - 1]
- .elements.concat(selectorPath[currentSelectorPathIndex].elements.slice(currentSelectorPathElementIndex));
- currentSelectorPathElementIndex = 0;
- currentSelectorPathIndex++;
- }
- newElements = selector.elements
- .slice(currentSelectorPathElementIndex, match.index)
- .concat([firstElement])
- .concat(replacementSelector.elements.slice(1));
- if (currentSelectorPathIndex === match.pathIndex && matchIndex > 0) {
- path[path.length - 1].elements =
- path[path.length - 1].elements.concat(newElements);
- }
- else {
- path = path.concat(selectorPath.slice(currentSelectorPathIndex, match.pathIndex));
- path.push(new tree.Selector(newElements));
- }
- currentSelectorPathIndex = match.endPathIndex;
- currentSelectorPathElementIndex = match.endPathElementIndex;
- if (currentSelectorPathElementIndex >= selectorPath[currentSelectorPathIndex].elements.length) {
- currentSelectorPathElementIndex = 0;
- currentSelectorPathIndex++;
- }
- }
- if (currentSelectorPathIndex < selectorPath.length && currentSelectorPathElementIndex > 0) {
- path[path.length - 1].elements = path[path.length - 1]
- .elements.concat(selectorPath[currentSelectorPathIndex].elements.slice(currentSelectorPathElementIndex));
- currentSelectorPathIndex++;
- }
- path = path.concat(selectorPath.slice(currentSelectorPathIndex, selectorPath.length));
- path = path.map(function (currentValue) {
- // we can re-use elements here, because the visibility property matters only for selectors
- var derived = currentValue.createDerived(currentValue.elements);
- if (isVisible) {
- derived.ensureVisibility();
- }
- else {
- derived.ensureInvisibility();
- }
- return derived;
- });
- return path;
- };
- ProcessExtendsVisitor.prototype.visitMedia = function (mediaNode, visitArgs) {
- var newAllExtends = mediaNode.allExtends.concat(this.allExtendsStack[this.allExtendsStack.length - 1]);
- newAllExtends = newAllExtends.concat(this.doExtendChaining(newAllExtends, mediaNode.allExtends));
- this.allExtendsStack.push(newAllExtends);
- };
- ProcessExtendsVisitor.prototype.visitMediaOut = function (mediaNode) {
- var lastIndex = this.allExtendsStack.length - 1;
- this.allExtendsStack.length = lastIndex;
- };
- ProcessExtendsVisitor.prototype.visitAtRule = function (atRuleNode, visitArgs) {
- var newAllExtends = atRuleNode.allExtends.concat(this.allExtendsStack[this.allExtendsStack.length - 1]);
- newAllExtends = newAllExtends.concat(this.doExtendChaining(newAllExtends, atRuleNode.allExtends));
- this.allExtendsStack.push(newAllExtends);
- };
- ProcessExtendsVisitor.prototype.visitAtRuleOut = function (atRuleNode) {
- var lastIndex = this.allExtendsStack.length - 1;
- this.allExtendsStack.length = lastIndex;
- };
- return ProcessExtendsVisitor;
- }());
-
- /* eslint-disable no-unused-vars */
- var JoinSelectorVisitor = /** @class */ (function () {
- function JoinSelectorVisitor() {
- this.contexts = [[]];
- this._visitor = new Visitor(this);
- }
- JoinSelectorVisitor.prototype.run = function (root) {
- return this._visitor.visit(root);
- };
- JoinSelectorVisitor.prototype.visitDeclaration = function (declNode, visitArgs) {
- visitArgs.visitDeeper = false;
- };
- JoinSelectorVisitor.prototype.visitMixinDefinition = function (mixinDefinitionNode, visitArgs) {
- visitArgs.visitDeeper = false;
- };
- JoinSelectorVisitor.prototype.visitRuleset = function (rulesetNode, visitArgs) {
- var context = this.contexts[this.contexts.length - 1];
- var paths = [];
- var selectors;
- this.contexts.push(paths);
- if (!rulesetNode.root) {
- selectors = rulesetNode.selectors;
- if (selectors) {
- selectors = selectors.filter(function (selector) { return selector.getIsOutput(); });
- rulesetNode.selectors = selectors.length ? selectors : (selectors = null);
- if (selectors) {
- rulesetNode.joinSelectors(paths, context, selectors);
- }
- }
- if (!selectors) {
- rulesetNode.rules = null;
- }
- rulesetNode.paths = paths;
- }
- };
- JoinSelectorVisitor.prototype.visitRulesetOut = function (rulesetNode) {
- this.contexts.length = this.contexts.length - 1;
- };
- JoinSelectorVisitor.prototype.visitMedia = function (mediaNode, visitArgs) {
- var context = this.contexts[this.contexts.length - 1];
- mediaNode.rules[0].root = (context.length === 0 || context[0].multiMedia);
- };
- JoinSelectorVisitor.prototype.visitAtRule = function (atRuleNode, visitArgs) {
- var context = this.contexts[this.contexts.length - 1];
- if (atRuleNode.rules && atRuleNode.rules.length) {
- atRuleNode.rules[0].root = (atRuleNode.isRooted || context.length === 0 || null);
- }
- };
- return JoinSelectorVisitor;
- }());
-
- /* eslint-disable no-unused-vars */
- var CSSVisitorUtils = /** @class */ (function () {
- function CSSVisitorUtils(context) {
- this._visitor = new Visitor(this);
- this._context = context;
- }
- CSSVisitorUtils.prototype.containsSilentNonBlockedChild = function (bodyRules) {
- var rule;
- if (!bodyRules) {
- return false;
- }
- for (var r = 0; r < bodyRules.length; r++) {
- rule = bodyRules[r];
- if (rule.isSilent && rule.isSilent(this._context) && !rule.blocksVisibility()) {
- // the atrule contains something that was referenced (likely by extend)
- // therefore it needs to be shown in output too
- return true;
- }
- }
- return false;
- };
- CSSVisitorUtils.prototype.keepOnlyVisibleChilds = function (owner) {
- if (owner && owner.rules) {
- owner.rules = owner.rules.filter(function (thing) { return thing.isVisible(); });
- }
- };
- CSSVisitorUtils.prototype.isEmpty = function (owner) {
- return (owner && owner.rules)
- ? (owner.rules.length === 0) : true;
- };
- CSSVisitorUtils.prototype.hasVisibleSelector = function (rulesetNode) {
- return (rulesetNode && rulesetNode.paths)
- ? (rulesetNode.paths.length > 0) : false;
- };
- CSSVisitorUtils.prototype.resolveVisibility = function (node) {
- if (!node.blocksVisibility()) {
- if (this.isEmpty(node)) {
- return;
- }
- return node;
- }
- var compiledRulesBody = node.rules[0];
- this.keepOnlyVisibleChilds(compiledRulesBody);
- if (this.isEmpty(compiledRulesBody)) {
- return;
- }
- node.ensureVisibility();
- node.removeVisibilityBlock();
- return node;
- };
- CSSVisitorUtils.prototype.isVisibleRuleset = function (rulesetNode) {
- if (rulesetNode.firstRoot) {
- return true;
- }
- if (this.isEmpty(rulesetNode)) {
- return false;
- }
- if (!rulesetNode.root && !this.hasVisibleSelector(rulesetNode)) {
- return false;
- }
- return true;
- };
- return CSSVisitorUtils;
- }());
- var ToCSSVisitor = function (context) {
- this._visitor = new Visitor(this);
- this._context = context;
- this.utils = new CSSVisitorUtils(context);
- };
- ToCSSVisitor.prototype = {
- isReplacing: true,
- run: function (root) {
- return this._visitor.visit(root);
- },
- visitDeclaration: function (declNode, visitArgs) {
- if (declNode.blocksVisibility() || declNode.variable) {
- return;
- }
- return declNode;
- },
- visitMixinDefinition: function (mixinNode, visitArgs) {
- // mixin definitions do not get eval'd - this means they keep state
- // so we have to clear that state here so it isn't used if toCSS is called twice
- mixinNode.frames = [];
- },
- visitExtend: function (extendNode, visitArgs) {
- },
- visitComment: function (commentNode, visitArgs) {
- if (commentNode.blocksVisibility() || commentNode.isSilent(this._context)) {
- return;
- }
- return commentNode;
- },
- visitMedia: function (mediaNode, visitArgs) {
- var originalRules = mediaNode.rules[0].rules;
- mediaNode.accept(this._visitor);
- visitArgs.visitDeeper = false;
- return this.utils.resolveVisibility(mediaNode, originalRules);
- },
- visitImport: function (importNode, visitArgs) {
- if (importNode.blocksVisibility()) {
- return;
- }
- return importNode;
- },
- visitAtRule: function (atRuleNode, visitArgs) {
- if (atRuleNode.rules && atRuleNode.rules.length) {
- return this.visitAtRuleWithBody(atRuleNode, visitArgs);
- }
- else {
- return this.visitAtRuleWithoutBody(atRuleNode, visitArgs);
- }
- },
- visitAnonymous: function (anonymousNode, visitArgs) {
- if (!anonymousNode.blocksVisibility()) {
- anonymousNode.accept(this._visitor);
- return anonymousNode;
- }
- },
- visitAtRuleWithBody: function (atRuleNode, visitArgs) {
- // if there is only one nested ruleset and that one has no path, then it is
- // just fake ruleset
- function hasFakeRuleset(atRuleNode) {
- var bodyRules = atRuleNode.rules;
- return bodyRules.length === 1 && (!bodyRules[0].paths || bodyRules[0].paths.length === 0);
- }
- function getBodyRules(atRuleNode) {
- var nodeRules = atRuleNode.rules;
- if (hasFakeRuleset(atRuleNode)) {
- return nodeRules[0].rules;
- }
- return nodeRules;
- }
- // it is still true that it is only one ruleset in array
- // this is last such moment
- // process childs
- var originalRules = getBodyRules(atRuleNode);
- atRuleNode.accept(this._visitor);
- visitArgs.visitDeeper = false;
- if (!this.utils.isEmpty(atRuleNode)) {
- this._mergeRules(atRuleNode.rules[0].rules);
- }
- return this.utils.resolveVisibility(atRuleNode, originalRules);
- },
- visitAtRuleWithoutBody: function (atRuleNode, visitArgs) {
- if (atRuleNode.blocksVisibility()) {
- return;
- }
- if (atRuleNode.name === '@charset') {
- // Only output the debug info together with subsequent @charset definitions
- // a comment (or @media statement) before the actual @charset atrule would
- // be considered illegal css as it has to be on the first line
- if (this.charset) {
- if (atRuleNode.debugInfo) {
- var comment = new tree.Comment("/* ".concat(atRuleNode.toCSS(this._context).replace(/\n/g, ''), " */\n"));
- comment.debugInfo = atRuleNode.debugInfo;
- return this._visitor.visit(comment);
- }
- return;
- }
- this.charset = true;
- }
- return atRuleNode;
- },
- checkValidNodes: function (rules, isRoot) {
- if (!rules) {
- return;
- }
- for (var i_1 = 0; i_1 < rules.length; i_1++) {
- var ruleNode = rules[i_1];
- if (isRoot && ruleNode instanceof tree.Declaration && !ruleNode.variable) {
- throw { message: 'Properties must be inside selector blocks. They cannot be in the root',
- index: ruleNode.getIndex(), filename: ruleNode.fileInfo() && ruleNode.fileInfo().filename };
- }
- if (ruleNode instanceof tree.Call) {
- throw { message: "Function '".concat(ruleNode.name, "' did not return a root node"),
- index: ruleNode.getIndex(), filename: ruleNode.fileInfo() && ruleNode.fileInfo().filename };
- }
- if (ruleNode.type && !ruleNode.allowRoot) {
- throw { message: "".concat(ruleNode.type, " node returned by a function is not valid here"),
- index: ruleNode.getIndex(), filename: ruleNode.fileInfo() && ruleNode.fileInfo().filename };
- }
- }
- },
- visitRuleset: function (rulesetNode, visitArgs) {
- // at this point rulesets are nested into each other
- var rule;
- var rulesets = [];
- this.checkValidNodes(rulesetNode.rules, rulesetNode.firstRoot);
- if (!rulesetNode.root) {
- // remove invisible paths
- this._compileRulesetPaths(rulesetNode);
- // remove rulesets from this ruleset body and compile them separately
- var nodeRules = rulesetNode.rules;
- var nodeRuleCnt = nodeRules ? nodeRules.length : 0;
- for (var i_2 = 0; i_2 < nodeRuleCnt;) {
- rule = nodeRules[i_2];
- if (rule && rule.rules) {
- // visit because we are moving them out from being a child
- rulesets.push(this._visitor.visit(rule));
- nodeRules.splice(i_2, 1);
- nodeRuleCnt--;
- continue;
- }
- i_2++;
- }
- // accept the visitor to remove rules and refactor itself
- // then we can decide nogw whether we want it or not
- // compile body
- if (nodeRuleCnt > 0) {
- rulesetNode.accept(this._visitor);
- }
- else {
- rulesetNode.rules = null;
- }
- visitArgs.visitDeeper = false;
- }
- else { // if (! rulesetNode.root) {
- rulesetNode.accept(this._visitor);
- visitArgs.visitDeeper = false;
- }
- if (rulesetNode.rules) {
- this._mergeRules(rulesetNode.rules);
- this._removeDuplicateRules(rulesetNode.rules);
- }
- // now decide whether we keep the ruleset
- if (this.utils.isVisibleRuleset(rulesetNode)) {
- rulesetNode.ensureVisibility();
- rulesets.splice(0, 0, rulesetNode);
- }
- if (rulesets.length === 1) {
- return rulesets[0];
- }
- return rulesets;
- },
- _compileRulesetPaths: function (rulesetNode) {
- if (rulesetNode.paths) {
- rulesetNode.paths = rulesetNode.paths
- .filter(function (p) {
- var i;
- if (p[0].elements[0].combinator.value === ' ') {
- p[0].elements[0].combinator = new (tree.Combinator)('');
- }
- for (i = 0; i < p.length; i++) {
- if (p[i].isVisible() && p[i].getIsOutput()) {
- return true;
- }
- }
- return false;
- });
- }
- },
- _removeDuplicateRules: function (rules) {
- if (!rules) {
- return;
- }
- // remove duplicates
- var ruleCache = {};
- var ruleList;
- var rule;
- var i;
- for (i = rules.length - 1; i >= 0; i--) {
- rule = rules[i];
- if (rule instanceof tree.Declaration) {
- if (!ruleCache[rule.name]) {
- ruleCache[rule.name] = rule;
- }
- else {
- ruleList = ruleCache[rule.name];
- if (ruleList instanceof tree.Declaration) {
- ruleList = ruleCache[rule.name] = [ruleCache[rule.name].toCSS(this._context)];
- }
- var ruleCSS = rule.toCSS(this._context);
- if (ruleList.indexOf(ruleCSS) !== -1) {
- rules.splice(i, 1);
- }
- else {
- ruleList.push(ruleCSS);
- }
- }
- }
- }
- },
- _mergeRules: function (rules) {
- if (!rules) {
- return;
- }
- var groups = {};
- var groupsArr = [];
- for (var i_3 = 0; i_3 < rules.length; i_3++) {
- var rule = rules[i_3];
- if (rule.merge) {
- var key = rule.name;
- groups[key] ? rules.splice(i_3--, 1) :
- groupsArr.push(groups[key] = []);
- groups[key].push(rule);
- }
- }
- groupsArr.forEach(function (group) {
- if (group.length > 0) {
- var result_1 = group[0];
- var space_1 = [];
- var comma_1 = [new tree.Expression(space_1)];
- group.forEach(function (rule) {
- if ((rule.merge === '+') && (space_1.length > 0)) {
- comma_1.push(new tree.Expression(space_1 = []));
- }
- space_1.push(rule.value);
- result_1.important = result_1.important || rule.important;
- });
- result_1.value = new tree.Value(comma_1);
- }
- });
- }
- };
-
- var visitors = {
- Visitor: Visitor,
- ImportVisitor: ImportVisitor,
- MarkVisibleSelectorsVisitor: SetTreeVisibilityVisitor,
- ExtendVisitor: ProcessExtendsVisitor,
- JoinSelectorVisitor: JoinSelectorVisitor,
- ToCSSVisitor: ToCSSVisitor
- };
-
- // Split the input into chunks.
- function chunker (input, fail) {
- var len = input.length;
- var level = 0;
- var parenLevel = 0;
- var lastOpening;
- var lastOpeningParen;
- var lastMultiComment;
- var lastMultiCommentEndBrace;
- var chunks = [];
- var emitFrom = 0;
- var chunkerCurrentIndex;
- var currentChunkStartIndex;
- var cc;
- var cc2;
- var matched;
- function emitChunk(force) {
- var len = chunkerCurrentIndex - emitFrom;
- if (((len < 512) && !force) || !len) {
- return;
- }
- chunks.push(input.slice(emitFrom, chunkerCurrentIndex + 1));
- emitFrom = chunkerCurrentIndex + 1;
- }
- for (chunkerCurrentIndex = 0; chunkerCurrentIndex < len; chunkerCurrentIndex++) {
- cc = input.charCodeAt(chunkerCurrentIndex);
- if (((cc >= 97) && (cc <= 122)) || (cc < 34)) {
- // a-z or whitespace
- continue;
- }
- switch (cc) {
- case 40: // (
- parenLevel++;
- lastOpeningParen = chunkerCurrentIndex;
- continue;
- case 41: // )
- if (--parenLevel < 0) {
- return fail('missing opening `(`', chunkerCurrentIndex);
- }
- continue;
- case 59: // ;
- if (!parenLevel) {
- emitChunk();
- }
- continue;
- case 123: // {
- level++;
- lastOpening = chunkerCurrentIndex;
- continue;
- case 125: // }
- if (--level < 0) {
- return fail('missing opening `{`', chunkerCurrentIndex);
- }
- if (!level && !parenLevel) {
- emitChunk();
- }
- continue;
- case 92: // \
- if (chunkerCurrentIndex < len - 1) {
- chunkerCurrentIndex++;
- continue;
- }
- return fail('unescaped `\\`', chunkerCurrentIndex);
- case 34:
- case 39:
- case 96: // ", ' and `
- matched = 0;
- currentChunkStartIndex = chunkerCurrentIndex;
- for (chunkerCurrentIndex = chunkerCurrentIndex + 1; chunkerCurrentIndex < len; chunkerCurrentIndex++) {
- cc2 = input.charCodeAt(chunkerCurrentIndex);
- if (cc2 > 96) {
- continue;
- }
- if (cc2 == cc) {
- matched = 1;
- break;
- }
- if (cc2 == 92) { // \
- if (chunkerCurrentIndex == len - 1) {
- return fail('unescaped `\\`', chunkerCurrentIndex);
- }
- chunkerCurrentIndex++;
- }
- }
- if (matched) {
- continue;
- }
- return fail("unmatched `".concat(String.fromCharCode(cc), "`"), currentChunkStartIndex);
- case 47: // /, check for comment
- if (parenLevel || (chunkerCurrentIndex == len - 1)) {
- continue;
- }
- cc2 = input.charCodeAt(chunkerCurrentIndex + 1);
- if (cc2 == 47) {
- // //, find lnfeed
- for (chunkerCurrentIndex = chunkerCurrentIndex + 2; chunkerCurrentIndex < len; chunkerCurrentIndex++) {
- cc2 = input.charCodeAt(chunkerCurrentIndex);
- if ((cc2 <= 13) && ((cc2 == 10) || (cc2 == 13))) {
- break;
- }
- }
- }
- else if (cc2 == 42) {
- // /*, find */
- lastMultiComment = currentChunkStartIndex = chunkerCurrentIndex;
- for (chunkerCurrentIndex = chunkerCurrentIndex + 2; chunkerCurrentIndex < len - 1; chunkerCurrentIndex++) {
- cc2 = input.charCodeAt(chunkerCurrentIndex);
- if (cc2 == 125) {
- lastMultiCommentEndBrace = chunkerCurrentIndex;
- }
- if (cc2 != 42) {
- continue;
- }
- if (input.charCodeAt(chunkerCurrentIndex + 1) == 47) {
- break;
- }
- }
- if (chunkerCurrentIndex == len - 1) {
- return fail('missing closing `*/`', currentChunkStartIndex);
- }
- chunkerCurrentIndex++;
- }
- continue;
- case 42: // *, check for unmatched */
- if ((chunkerCurrentIndex < len - 1) && (input.charCodeAt(chunkerCurrentIndex + 1) == 47)) {
- return fail('unmatched `/*`', chunkerCurrentIndex);
- }
- continue;
- }
- }
- if (level !== 0) {
- if ((lastMultiComment > lastOpening) && (lastMultiCommentEndBrace > lastMultiComment)) {
- return fail('missing closing `}` or `*/`', lastOpening);
- }
- else {
- return fail('missing closing `}`', lastOpening);
- }
- }
- else if (parenLevel !== 0) {
- return fail('missing closing `)`', lastOpeningParen);
- }
- emitChunk(true);
- return chunks;
- }
-
- var getParserInput = (function () {
- var // Less input string
- input;
- var // current chunk
- j;
- var // holds state for backtracking
- saveStack = [];
- var // furthest index the parser has gone to
- furthest;
- var // if this is furthest we got to, this is the probably cause
- furthestPossibleErrorMessage;
- var // chunkified input
- chunks;
- var // current chunk
- current;
- var // index of current chunk, in `input`
- currentPos;
- var parserInput = {};
- var CHARCODE_SPACE = 32;
- var CHARCODE_TAB = 9;
- var CHARCODE_LF = 10;
- var CHARCODE_CR = 13;
- var CHARCODE_PLUS = 43;
- var CHARCODE_COMMA = 44;
- var CHARCODE_FORWARD_SLASH = 47;
- var CHARCODE_9 = 57;
- function skipWhitespace(length) {
- var oldi = parserInput.i;
- var oldj = j;
- var curr = parserInput.i - currentPos;
- var endIndex = parserInput.i + current.length - curr;
- var mem = (parserInput.i += length);
- var inp = input;
- var c;
- var nextChar;
- var comment;
- for (; parserInput.i < endIndex; parserInput.i++) {
- c = inp.charCodeAt(parserInput.i);
- if (parserInput.autoCommentAbsorb && c === CHARCODE_FORWARD_SLASH) {
- nextChar = inp.charAt(parserInput.i + 1);
- if (nextChar === '/') {
- comment = { index: parserInput.i, isLineComment: true };
- var nextNewLine = inp.indexOf('\n', parserInput.i + 2);
- if (nextNewLine < 0) {
- nextNewLine = endIndex;
- }
- parserInput.i = nextNewLine;
- comment.text = inp.substr(comment.index, parserInput.i - comment.index);
- parserInput.commentStore.push(comment);
- continue;
- }
- else if (nextChar === '*') {
- var nextStarSlash = inp.indexOf('*/', parserInput.i + 2);
- if (nextStarSlash >= 0) {
- comment = {
- index: parserInput.i,
- text: inp.substr(parserInput.i, nextStarSlash + 2 - parserInput.i),
- isLineComment: false
- };
- parserInput.i += comment.text.length - 1;
- parserInput.commentStore.push(comment);
- continue;
- }
- }
- break;
- }
- if ((c !== CHARCODE_SPACE) && (c !== CHARCODE_LF) && (c !== CHARCODE_TAB) && (c !== CHARCODE_CR)) {
- break;
- }
- }
- current = current.slice(length + parserInput.i - mem + curr);
- currentPos = parserInput.i;
- if (!current.length) {
- if (j < chunks.length - 1) {
- current = chunks[++j];
- skipWhitespace(0); // skip space at the beginning of a chunk
- return true; // things changed
- }
- parserInput.finished = true;
- }
- return oldi !== parserInput.i || oldj !== j;
- }
- parserInput.save = function () {
- currentPos = parserInput.i;
- saveStack.push({ current: current, i: parserInput.i, j: j });
- };
- parserInput.restore = function (possibleErrorMessage) {
- if (parserInput.i > furthest || (parserInput.i === furthest && possibleErrorMessage && !furthestPossibleErrorMessage)) {
- furthest = parserInput.i;
- furthestPossibleErrorMessage = possibleErrorMessage;
- }
- var state = saveStack.pop();
- current = state.current;
- currentPos = parserInput.i = state.i;
- j = state.j;
- };
- parserInput.forget = function () {
- saveStack.pop();
- };
- parserInput.isWhitespace = function (offset) {
- var pos = parserInput.i + (offset || 0);
- var code = input.charCodeAt(pos);
- return (code === CHARCODE_SPACE || code === CHARCODE_CR || code === CHARCODE_TAB || code === CHARCODE_LF);
- };
- // Specialization of $(tok)
- parserInput.$re = function (tok) {
- if (parserInput.i > currentPos) {
- current = current.slice(parserInput.i - currentPos);
- currentPos = parserInput.i;
- }
- var m = tok.exec(current);
- if (!m) {
- return null;
- }
- skipWhitespace(m[0].length);
- if (typeof m === 'string') {
- return m;
- }
- return m.length === 1 ? m[0] : m;
- };
- parserInput.$char = function (tok) {
- if (input.charAt(parserInput.i) !== tok) {
- return null;
- }
- skipWhitespace(1);
- return tok;
- };
- parserInput.$peekChar = function (tok) {
- if (input.charAt(parserInput.i) !== tok) {
- return null;
- }
- return tok;
- };
- parserInput.$str = function (tok) {
- var tokLength = tok.length;
- // https://jsperf.com/string-startswith/21
- for (var i_1 = 0; i_1 < tokLength; i_1++) {
- if (input.charAt(parserInput.i + i_1) !== tok.charAt(i_1)) {
- return null;
- }
- }
- skipWhitespace(tokLength);
- return tok;
- };
- parserInput.$quoted = function (loc) {
- var pos = loc || parserInput.i;
- var startChar = input.charAt(pos);
- if (startChar !== '\'' && startChar !== '"') {
- return;
- }
- var length = input.length;
- var currentPosition = pos;
- for (var i_2 = 1; i_2 + currentPosition < length; i_2++) {
- var nextChar = input.charAt(i_2 + currentPosition);
- switch (nextChar) {
- case '\\':
- i_2++;
- continue;
- case '\r':
- case '\n':
- break;
- case startChar: {
- var str = input.substr(currentPosition, i_2 + 1);
- if (!loc && loc !== 0) {
- skipWhitespace(i_2 + 1);
- return str;
- }
- return [startChar, str];
- }
- }
- }
- return null;
- };
- /**
- * Permissive parsing. Ignores everything except matching {} [] () and quotes
- * until matching token (outside of blocks)
- */
- parserInput.$parseUntil = function (tok) {
- var quote = '';
- var returnVal = null;
- var inComment = false;
- var blockDepth = 0;
- var blockStack = [];
- var parseGroups = [];
- var length = input.length;
- var startPos = parserInput.i;
- var lastPos = parserInput.i;
- var i = parserInput.i;
- var loop = true;
- var testChar;
- if (typeof tok === 'string') {
- testChar = function (char) { return char === tok; };
- }
- else {
- testChar = function (char) { return tok.test(char); };
- }
- do {
- var nextChar = input.charAt(i);
- if (blockDepth === 0 && testChar(nextChar)) {
- returnVal = input.substr(lastPos, i - lastPos);
- if (returnVal) {
- parseGroups.push(returnVal);
- }
- else {
- parseGroups.push(' ');
- }
- returnVal = parseGroups;
- skipWhitespace(i - startPos);
- loop = false;
- }
- else {
- if (inComment) {
- if (nextChar === '*' &&
- input.charAt(i + 1) === '/') {
- i++;
- blockDepth--;
- inComment = false;
- }
- i++;
- continue;
- }
- switch (nextChar) {
- case '\\':
- i++;
- nextChar = input.charAt(i);
- parseGroups.push(input.substr(lastPos, i - lastPos + 1));
- lastPos = i + 1;
- break;
- case '/':
- if (input.charAt(i + 1) === '*') {
- i++;
- inComment = true;
- blockDepth++;
- }
- break;
- case '\'':
- case '"':
- quote = parserInput.$quoted(i);
- if (quote) {
- parseGroups.push(input.substr(lastPos, i - lastPos), quote);
- i += quote[1].length - 1;
- lastPos = i + 1;
- }
- else {
- skipWhitespace(i - startPos);
- returnVal = nextChar;
- loop = false;
- }
- break;
- case '{':
- blockStack.push('}');
- blockDepth++;
- break;
- case '(':
- blockStack.push(')');
- blockDepth++;
- break;
- case '[':
- blockStack.push(']');
- blockDepth++;
- break;
- case '}':
- case ')':
- case ']': {
- var expected = blockStack.pop();
- if (nextChar === expected) {
- blockDepth--;
- }
- else {
- // move the parser to the error and return expected
- skipWhitespace(i - startPos);
- returnVal = expected;
- loop = false;
- }
- }
- }
- i++;
- if (i > length) {
- loop = false;
- }
- }
- } while (loop);
- return returnVal ? returnVal : null;
- };
- parserInput.autoCommentAbsorb = true;
- parserInput.commentStore = [];
- parserInput.finished = false;
- // Same as $(), but don't change the state of the parser,
- // just return the match.
- parserInput.peek = function (tok) {
- if (typeof tok === 'string') {
- // https://jsperf.com/string-startswith/21
- for (var i_3 = 0; i_3 < tok.length; i_3++) {
- if (input.charAt(parserInput.i + i_3) !== tok.charAt(i_3)) {
- return false;
- }
- }
- return true;
- }
- else {
- return tok.test(current);
- }
- };
- // Specialization of peek()
- // TODO remove or change some currentChar calls to peekChar
- parserInput.peekChar = function (tok) { return input.charAt(parserInput.i) === tok; };
- parserInput.currentChar = function () { return input.charAt(parserInput.i); };
- parserInput.prevChar = function () { return input.charAt(parserInput.i - 1); };
- parserInput.getInput = function () { return input; };
- parserInput.peekNotNumeric = function () {
- var c = input.charCodeAt(parserInput.i);
- // Is the first char of the dimension 0-9, '.', '+' or '-'
- return (c > CHARCODE_9 || c < CHARCODE_PLUS) || c === CHARCODE_FORWARD_SLASH || c === CHARCODE_COMMA;
- };
- parserInput.start = function (str, chunkInput, failFunction) {
- input = str;
- parserInput.i = j = currentPos = furthest = 0;
- // chunking apparently makes things quicker (but my tests indicate
- // it might actually make things slower in node at least)
- // and it is a non-perfect parse - it can't recognise
- // unquoted urls, meaning it can't distinguish comments
- // meaning comments with quotes or {}() in them get 'counted'
- // and then lead to parse errors.
- // In addition if the chunking chunks in the wrong place we might
- // not be able to parse a parser statement in one go
- // this is officially deprecated but can be switched on via an option
- // in the case it causes too much performance issues.
- if (chunkInput) {
- chunks = chunker(str, failFunction);
- }
- else {
- chunks = [str];
- }
- current = chunks[0];
- skipWhitespace(0);
- };
- parserInput.end = function () {
- var message;
- var isFinished = parserInput.i >= input.length;
- if (parserInput.i < furthest) {
- message = furthestPossibleErrorMessage;
- parserInput.i = furthest;
- }
- return {
- isFinished: isFinished,
- furthest: parserInput.i,
- furthestPossibleErrorMessage: message,
- furthestReachedEnd: parserInput.i >= input.length - 1,
- furthestChar: input[parserInput.i]
- };
- };
- return parserInput;
- });
-
- function makeRegistry(base) {
- return {
- _data: {},
- add: function (name, func) {
- // precautionary case conversion, as later querying of
- // the registry by function-caller uses lower case as well.
- name = name.toLowerCase();
- // eslint-disable-next-line no-prototype-builtins
- if (this._data.hasOwnProperty(name)) ;
- this._data[name] = func;
- },
- addMultiple: function (functions) {
- var _this = this;
- Object.keys(functions).forEach(function (name) {
- _this.add(name, functions[name]);
- });
- },
- get: function (name) {
- return this._data[name] || (base && base.get(name));
- },
- getLocalFunctions: function () {
- return this._data;
- },
- inherit: function () {
- return makeRegistry(this);
- },
- create: function (base) {
- return makeRegistry(base);
- }
- };
- }
- var functionRegistry = makeRegistry(null);
-
- var MediaSyntaxOptions = {
- queryInParens: true
- };
- var ContainerSyntaxOptions = {
- queryInParens: true
- };
-
- var Anonymous = function (value, index, currentFileInfo, mapLines, rulesetLike, visibilityInfo) {
- this.value = value;
- this._index = index;
- this._fileInfo = currentFileInfo;
- this.mapLines = mapLines;
- this.rulesetLike = (typeof rulesetLike === 'undefined') ? false : rulesetLike;
- this.allowRoot = true;
- this.copyVisibilityInfo(visibilityInfo);
- };
- Anonymous.prototype = Object.assign(new Node(), {
- type: 'Anonymous',
- eval: function () {
- return new Anonymous(this.value, this._index, this._fileInfo, this.mapLines, this.rulesetLike, this.visibilityInfo());
- },
- compare: function (other) {
- return other.toCSS && this.toCSS() === other.toCSS() ? 0 : undefined;
- },
- isRulesetLike: function () {
- return this.rulesetLike;
- },
- genCSS: function (context, output) {
- this.nodeVisible = Boolean(this.value);
- if (this.nodeVisible) {
- output.add(this.value, this._fileInfo, this._index, this.mapLines);
- }
- }
- });
-
- //
- // less.js - parser
- //
- // A relatively straight-forward predictive parser.
- // There is no tokenization/lexing stage, the input is parsed
- // in one sweep.
- //
- // To make the parser fast enough to run in the browser, several
- // optimization had to be made:
- //
- // - Matching and slicing on a huge input is often cause of slowdowns.
- // The solution is to chunkify the input into smaller strings.
- // The chunks are stored in the `chunks` var,
- // `j` holds the current chunk index, and `currentPos` holds
- // the index of the current chunk in relation to `input`.
- // This gives us an almost 4x speed-up.
- //
- // - In many cases, we don't need to match individual tokens;
- // for example, if a value doesn't hold any variables, operations
- // or dynamic references, the parser can effectively 'skip' it,
- // treating it as a literal.
- // An example would be '1px solid #000' - which evaluates to itself,
- // we don't need to know what the individual components are.
- // The drawback, of course is that you don't get the benefits of
- // syntax-checking on the CSS. This gives us a 50% speed-up in the parser,
- // and a smaller speed-up in the code-gen.
- //
- //
- // Token matching is done with the `$` function, which either takes
- // a terminal string or regexp, or a non-terminal function to call.
- // It also takes care of moving all the indices forwards.
- //
- var Parser = function Parser(context, imports, fileInfo, currentIndex) {
- currentIndex = currentIndex || 0;
- var parsers;
- var parserInput = getParserInput();
- function error(msg, type) {
- throw new LessError({
- index: parserInput.i,
- filename: fileInfo.filename,
- type: type || 'Syntax',
- message: msg
- }, imports);
- }
- function expect(arg, msg) {
- // some older browsers return typeof 'function' for RegExp
- var result = (arg instanceof Function) ? arg.call(parsers) : parserInput.$re(arg);
- if (result) {
- return result;
- }
- error(msg || (typeof arg === 'string'
- ? "expected '".concat(arg, "' got '").concat(parserInput.currentChar(), "'")
- : 'unexpected token'));
- }
- // Specialization of expect()
- function expectChar(arg, msg) {
- if (parserInput.$char(arg)) {
- return arg;
- }
- error(msg || "expected '".concat(arg, "' got '").concat(parserInput.currentChar(), "'"));
- }
- function getDebugInfo(index) {
- var filename = fileInfo.filename;
- return {
- lineNumber: getLocation(index, parserInput.getInput()).line + 1,
- fileName: filename
- };
- }
- /**
- * Used after initial parsing to create nodes on the fly
- *
- * @param {String} str - string to parse
- * @param {Array} parseList - array of parsers to run input through e.g. ["value", "important"]
- * @param {Number} currentIndex - start number to begin indexing
- * @param {Object} fileInfo - fileInfo to attach to created nodes
- */
- function parseNode(str, parseList, callback) {
- var result;
- var returnNodes = [];
- var parser = parserInput;
- try {
- parser.start(str, false, function fail(msg, index) {
- callback({
- message: msg,
- index: index + currentIndex
- });
- });
- for (var x = 0, p = void 0; (p = parseList[x]); x++) {
- result = parsers[p]();
- returnNodes.push(result || null);
- }
- var endInfo = parser.end();
- if (endInfo.isFinished) {
- callback(null, returnNodes);
- }
- else {
- callback(true, null);
- }
- }
- catch (e) {
- throw new LessError({
- index: e.index + currentIndex,
- message: e.message
- }, imports, fileInfo.filename);
- }
- }
- //
- // The Parser
- //
- return {
- parserInput: parserInput,
- imports: imports,
- fileInfo: fileInfo,
- parseNode: parseNode,
- //
- // Parse an input string into an abstract syntax tree,
- // @param str A string containing 'less' markup
- // @param callback call `callback` when done.
- // @param [additionalData] An optional map which can contains vars - a map (key, value) of variables to apply
- //
- parse: function (str, callback, additionalData) {
- var root;
- var err = null;
- var globalVars;
- var modifyVars;
- var ignored;
- var preText = '';
- // Optionally disable @plugin parsing
- if (additionalData && additionalData.disablePluginRule) {
- parsers.plugin = function () {
- var dir = parserInput.$re(/^@plugin?\s+/);
- if (dir) {
- error('@plugin statements are not allowed when disablePluginRule is set to true');
- }
- };
- }
- globalVars = (additionalData && additionalData.globalVars) ? "".concat(Parser.serializeVars(additionalData.globalVars), "\n") : '';
- modifyVars = (additionalData && additionalData.modifyVars) ? "\n".concat(Parser.serializeVars(additionalData.modifyVars)) : '';
- if (context.pluginManager) {
- var preProcessors = context.pluginManager.getPreProcessors();
- for (var i_1 = 0; i_1 < preProcessors.length; i_1++) {
- str = preProcessors[i_1].process(str, { context: context, imports: imports, fileInfo: fileInfo });
- }
- }
- if (globalVars || (additionalData && additionalData.banner)) {
- preText = ((additionalData && additionalData.banner) ? additionalData.banner : '') + globalVars;
- ignored = imports.contentsIgnoredChars;
- ignored[fileInfo.filename] = ignored[fileInfo.filename] || 0;
- ignored[fileInfo.filename] += preText.length;
- }
- str = str.replace(/\r\n?/g, '\n');
- // Remove potential UTF Byte Order Mark
- str = preText + str.replace(/^\uFEFF/, '') + modifyVars;
- imports.contents[fileInfo.filename] = str;
- // Start with the primary rule.
- // The whole syntax tree is held under a Ruleset node,
- // with the `root` property set to true, so no `{}` are
- // output. The callback is called when the input is parsed.
- try {
- parserInput.start(str, context.chunkInput, function fail(msg, index) {
- throw new LessError({
- index: index,
- type: 'Parse',
- message: msg,
- filename: fileInfo.filename
- }, imports);
- });
- tree.Node.prototype.parse = this;
- root = new tree.Ruleset(null, this.parsers.primary());
- tree.Node.prototype.rootNode = root;
- root.root = true;
- root.firstRoot = true;
- root.functionRegistry = functionRegistry.inherit();
- }
- catch (e) {
- return callback(new LessError(e, imports, fileInfo.filename));
- }
- // If `i` is smaller than the `input.length - 1`,
- // it means the parser wasn't able to parse the whole
- // string, so we've got a parsing error.
- //
- // We try to extract a \n delimited string,
- // showing the line where the parse error occurred.
- // We split it up into two parts (the part which parsed,
- // and the part which didn't), so we can color them differently.
- var endInfo = parserInput.end();
- if (!endInfo.isFinished) {
- var message = endInfo.furthestPossibleErrorMessage;
- if (!message) {
- message = 'Unrecognised input';
- if (endInfo.furthestChar === '}') {
- message += '. Possibly missing opening \'{\'';
- }
- else if (endInfo.furthestChar === ')') {
- message += '. Possibly missing opening \'(\'';
- }
- else if (endInfo.furthestReachedEnd) {
- message += '. Possibly missing something';
- }
- }
- err = new LessError({
- type: 'Parse',
- message: message,
- index: endInfo.furthest,
- filename: fileInfo.filename
- }, imports);
- }
- var finish = function (e) {
- e = err || e || imports.error;
- if (e) {
- if (!(e instanceof LessError)) {
- e = new LessError(e, imports, fileInfo.filename);
- }
- return callback(e);
- }
- else {
- return callback(null, root);
- }
- };
- if (context.processImports !== false) {
- new visitors.ImportVisitor(imports, finish)
- .run(root);
- }
- else {
- return finish();
- }
- },
- //
- // Here in, the parsing rules/functions
- //
- // The basic structure of the syntax tree generated is as follows:
- //
- // Ruleset -> Declaration -> Value -> Expression -> Entity
- //
- // Here's some Less code:
- //
- // .class {
- // color: #fff;
- // border: 1px solid #000;
- // width: @w + 4px;
- // > .child {...}
- // }
- //
- // And here's what the parse tree might look like:
- //
- // Ruleset (Selector '.class', [
- // Declaration ("color", Value ([Expression [Color #fff]]))
- // Declaration ("border", Value ([Expression [Dimension 1px][Keyword "solid"][Color #000]]))
- // Declaration ("width", Value ([Expression [Operation " + " [Variable "@w"][Dimension 4px]]]))
- // Ruleset (Selector [Element '>', '.child'], [...])
- // ])
- //
- // In general, most rules will try to parse a token with the `$re()` function, and if the return
- // value is truly, will return a new node, of the relevant type. Sometimes, we need to check
- // first, before parsing, that's when we use `peek()`.
- //
- parsers: parsers = {
- //
- // The `primary` rule is the *entry* and *exit* point of the parser.
- // The rules here can appear at any level of the parse tree.
- //
- // The recursive nature of the grammar is an interplay between the `block`
- // rule, which represents `{ ... }`, the `ruleset` rule, and this `primary` rule,
- // as represented by this simplified grammar:
- //
- // primary → (ruleset | declaration)+
- // ruleset → selector+ block
- // block → '{' primary '}'
- //
- // Only at one point is the primary rule not called from the
- // block rule: at the root level.
- //
- primary: function () {
- var mixin = this.mixin;
- var root = [];
- var node;
- while (true) {
- while (true) {
- node = this.comment();
- if (!node) {
- break;
- }
- root.push(node);
- }
- // always process comments before deciding if finished
- if (parserInput.finished) {
- break;
- }
- if (parserInput.peek('}')) {
- break;
- }
- node = this.extendRule();
- if (node) {
- root = root.concat(node);
- continue;
- }
- node = mixin.definition() || this.declaration() || mixin.call(false, false) ||
- this.ruleset() || this.variableCall() || this.entities.call() || this.atrule();
- if (node) {
- root.push(node);
- }
- else {
- var foundSemiColon = false;
- while (parserInput.$char(';')) {
- foundSemiColon = true;
- }
- if (!foundSemiColon) {
- break;
- }
- }
- }
- return root;
- },
- // comments are collected by the main parsing mechanism and then assigned to nodes
- // where the current structure allows it
- comment: function () {
- if (parserInput.commentStore.length) {
- var comment = parserInput.commentStore.shift();
- return new (tree.Comment)(comment.text, comment.isLineComment, comment.index + currentIndex, fileInfo);
- }
- },
- //
- // Entities are tokens which can be found inside an Expression
- //
- entities: {
- mixinLookup: function () {
- return parsers.mixin.call(true, true);
- },
- //
- // A string, which supports escaping " and '
- //
- // "milky way" 'he\'s the one!'
- //
- quoted: function (forceEscaped) {
- var str;
- var index = parserInput.i;
- var isEscaped = false;
- parserInput.save();
- if (parserInput.$char('~')) {
- isEscaped = true;
- }
- else if (forceEscaped) {
- parserInput.restore();
- return;
- }
- str = parserInput.$quoted();
- if (!str) {
- parserInput.restore();
- return;
- }
- parserInput.forget();
- return new (tree.Quoted)(str.charAt(0), str.substr(1, str.length - 2), isEscaped, index + currentIndex, fileInfo);
- },
- //
- // A catch-all word, such as:
- //
- // black border-collapse
- //
- keyword: function () {
- var k = parserInput.$char('%') || parserInput.$re(/^\[?(?:[\w-]|\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+\]?/);
- if (k) {
- return tree.Color.fromKeyword(k) || new (tree.Keyword)(k);
- }
- },
- //
- // A function call
- //
- // rgb(255, 0, 255)
- //
- // The arguments are parsed with the `entities.arguments` parser.
- //
- call: function () {
- var name;
- var args;
- var func;
- var index = parserInput.i;
- // http://jsperf.com/case-insensitive-regex-vs-strtolower-then-regex/18
- if (parserInput.peek(/^url\(/i)) {
- return;
- }
- parserInput.save();
- name = parserInput.$re(/^([\w-]+|%|~|progid:[\w.]+)\(/);
- if (!name) {
- parserInput.forget();
- return;
- }
- name = name[1];
- func = this.customFuncCall(name);
- if (func) {
- args = func.parse();
- if (args && func.stop) {
- parserInput.forget();
- return args;
- }
- }
- args = this.arguments(args);
- if (!parserInput.$char(')')) {
- parserInput.restore('Could not parse call arguments or missing \')\'');
- return;
- }
- parserInput.forget();
- return new (tree.Call)(name, args, index + currentIndex, fileInfo);
- },
- declarationCall: function () {
- var validCall;
- var args;
- var index = parserInput.i;
- parserInput.save();
- validCall = parserInput.$re(/^[\w]+\(/);
- if (!validCall) {
- parserInput.forget();
- return;
- }
- validCall = validCall.substring(0, validCall.length - 1);
- var rule = this.ruleProperty();
- var value;
- if (rule) {
- value = this.value();
- }
- if (rule && value) {
- args = [new (tree.Declaration)(rule, value, null, null, parserInput.i + currentIndex, fileInfo, true)];
- }
- if (!parserInput.$char(')')) {
- parserInput.restore('Could not parse call arguments or missing \')\'');
- return;
- }
- parserInput.forget();
- return new (tree.Call)(validCall, args, index + currentIndex, fileInfo);
- },
- //
- // Parsing rules for functions with non-standard args, e.g.:
- //
- // boolean(not(2 > 1))
- //
- // This is a quick prototype, to be modified/improved when
- // more custom-parsed funcs come (e.g. `selector(...)`)
- //
- customFuncCall: function (name) {
- /* Ideally the table is to be moved out of here for faster perf.,
- but it's quite tricky since it relies on all these `parsers`
- and `expect` available only here */
- return {
- alpha: f(parsers.ieAlpha, true),
- boolean: f(condition),
- 'if': f(condition)
- }[name.toLowerCase()];
- function f(parse, stop) {
- return {
- parse: parse,
- stop: stop // when true - stop after parse() and return its result,
- // otherwise continue for plain args
- };
- }
- function condition() {
- return [expect(parsers.condition, 'expected condition')];
- }
- },
- arguments: function (prevArgs) {
- var argsComma = prevArgs || [];
- var argsSemiColon = [];
- var isSemiColonSeparated;
- var value;
- parserInput.save();
- while (true) {
- if (prevArgs) {
- prevArgs = false;
- }
- else {
- value = parsers.detachedRuleset() || this.assignment() || parsers.expression();
- if (!value) {
- break;
- }
- if (value.value && value.value.length == 1) {
- value = value.value[0];
- }
- argsComma.push(value);
- }
- if (parserInput.$char(',')) {
- continue;
- }
- if (parserInput.$char(';') || isSemiColonSeparated) {
- isSemiColonSeparated = true;
- value = (argsComma.length < 1) ? argsComma[0]
- : new tree.Value(argsComma);
- argsSemiColon.push(value);
- argsComma = [];
- }
- }
- parserInput.forget();
- return isSemiColonSeparated ? argsSemiColon : argsComma;
- },
- literal: function () {
- return this.dimension() ||
- this.color() ||
- this.quoted() ||
- this.unicodeDescriptor();
- },
- // Assignments are argument entities for calls.
- // They are present in ie filter properties as shown below.
- //
- // filter: progid:DXImageTransform.Microsoft.Alpha( *opacity=50* )
- //
- assignment: function () {
- var key;
- var value;
- parserInput.save();
- key = parserInput.$re(/^\w+(?=\s?=)/i);
- if (!key) {
- parserInput.restore();
- return;
- }
- if (!parserInput.$char('=')) {
- parserInput.restore();
- return;
- }
- value = parsers.entity();
- if (value) {
- parserInput.forget();
- return new (tree.Assignment)(key, value);
- }
- else {
- parserInput.restore();
- }
- },
- //
- // Parse url() tokens
- //
- // We use a specific rule for urls, because they don't really behave like
- // standard function calls. The difference is that the argument doesn't have
- // to be enclosed within a string, so it can't be parsed as an Expression.
- //
- url: function () {
- var value;
- var index = parserInput.i;
- parserInput.autoCommentAbsorb = false;
- if (!parserInput.$str('url(')) {
- parserInput.autoCommentAbsorb = true;
- return;
- }
- value = this.quoted() || this.variable() || this.property() ||
- parserInput.$re(/^(?:(?:\\[()'"])|[^()'"])+/) || '';
- parserInput.autoCommentAbsorb = true;
- expectChar(')');
- return new (tree.URL)((value.value !== undefined ||
- value instanceof tree.Variable ||
- value instanceof tree.Property) ?
- value : new (tree.Anonymous)(value, index), index + currentIndex, fileInfo);
- },
- //
- // A Variable entity, such as `@fink`, in
- //
- // width: @fink + 2px
- //
- // We use a different parser for variable definitions,
- // see `parsers.variable`.
- //
- variable: function () {
- var ch;
- var name;
- var index = parserInput.i;
- parserInput.save();
- if (parserInput.currentChar() === '@' && (name = parserInput.$re(/^@@?[\w-]+/))) {
- ch = parserInput.currentChar();
- if (ch === '(' || ch === '[' && !parserInput.prevChar().match(/^\s/)) {
- // this may be a VariableCall lookup
- var result = parsers.variableCall(name);
- if (result) {
- parserInput.forget();
- return result;
- }
- }
- parserInput.forget();
- return new (tree.Variable)(name, index + currentIndex, fileInfo);
- }
- parserInput.restore();
- },
- // A variable entity using the protective {} e.g. @{var}
- variableCurly: function () {
- var curly;
- var index = parserInput.i;
- if (parserInput.currentChar() === '@' && (curly = parserInput.$re(/^@\{([\w-]+)\}/))) {
- return new (tree.Variable)("@".concat(curly[1]), index + currentIndex, fileInfo);
- }
- },
- //
- // A Property accessor, such as `$color`, in
- //
- // background-color: $color
- //
- property: function () {
- var name;
- var index = parserInput.i;
- if (parserInput.currentChar() === '$' && (name = parserInput.$re(/^\$[\w-]+/))) {
- return new (tree.Property)(name, index + currentIndex, fileInfo);
- }
- },
- // A property entity useing the protective {} e.g. ${prop}
- propertyCurly: function () {
- var curly;
- var index = parserInput.i;
- if (parserInput.currentChar() === '$' && (curly = parserInput.$re(/^\$\{([\w-]+)\}/))) {
- return new (tree.Property)("$".concat(curly[1]), index + currentIndex, fileInfo);
- }
- },
- //
- // A Hexadecimal color
- //
- // #4F3C2F
- //
- // `rgb` and `hsl` colors are parsed through the `entities.call` parser.
- //
- color: function () {
- var rgb;
- parserInput.save();
- if (parserInput.currentChar() === '#' && (rgb = parserInput.$re(/^#([A-Fa-f0-9]{8}|[A-Fa-f0-9]{6}|[A-Fa-f0-9]{3,4})([\w.#[])?/))) {
- if (!rgb[2]) {
- parserInput.forget();
- return new (tree.Color)(rgb[1], undefined, rgb[0]);
- }
- }
- parserInput.restore();
- },
- colorKeyword: function () {
- parserInput.save();
- var autoCommentAbsorb = parserInput.autoCommentAbsorb;
- parserInput.autoCommentAbsorb = false;
- var k = parserInput.$re(/^[_A-Za-z-][_A-Za-z0-9-]+/);
- parserInput.autoCommentAbsorb = autoCommentAbsorb;
- if (!k) {
- parserInput.forget();
- return;
- }
- parserInput.restore();
- var color = tree.Color.fromKeyword(k);
- if (color) {
- parserInput.$str(k);
- return color;
- }
- },
- //
- // A Dimension, that is, a number and a unit
- //
- // 0.5em 95%
- //
- dimension: function () {
- if (parserInput.peekNotNumeric()) {
- return;
- }
- var value = parserInput.$re(/^([+-]?\d*\.?\d+)(%|[a-z_]+)?/i);
- if (value) {
- return new (tree.Dimension)(value[1], value[2]);
- }
- },
- //
- // A unicode descriptor, as is used in unicode-range
- //
- // U+0?? or U+00A1-00A9
- //
- unicodeDescriptor: function () {
- var ud;
- ud = parserInput.$re(/^U\+[0-9a-fA-F?]+(-[0-9a-fA-F?]+)?/);
- if (ud) {
- return new (tree.UnicodeDescriptor)(ud[0]);
- }
- },
- //
- // JavaScript code to be evaluated
- //
- // `window.location.href`
- //
- javascript: function () {
- var js;
- var index = parserInput.i;
- parserInput.save();
- var escape = parserInput.$char('~');
- var jsQuote = parserInput.$char('`');
- if (!jsQuote) {
- parserInput.restore();
- return;
- }
- js = parserInput.$re(/^[^`]*`/);
- if (js) {
- parserInput.forget();
- return new (tree.JavaScript)(js.substr(0, js.length - 1), Boolean(escape), index + currentIndex, fileInfo);
- }
- parserInput.restore('invalid javascript definition');
- }
- },
- //
- // The variable part of a variable definition. Used in the `rule` parser
- //
- // @fink:
- //
- variable: function () {
- var name;
- if (parserInput.currentChar() === '@' && (name = parserInput.$re(/^(@[\w-]+)\s*:/))) {
- return name[1];
- }
- },
- //
- // Call a variable value to retrieve a detached ruleset
- // or a value from a detached ruleset's rules.
- //
- // @fink();
- // @fink;
- // color: @fink[@color];
- //
- variableCall: function (parsedName) {
- var lookups;
- var i = parserInput.i;
- var inValue = !!parsedName;
- var name = parsedName;
- parserInput.save();
- if (name || (parserInput.currentChar() === '@'
- && (name = parserInput.$re(/^(@[\w-]+)(\(\s*\))?/)))) {
- lookups = this.mixin.ruleLookups();
- if (!lookups && ((inValue && parserInput.$str('()') !== '()') || (name[2] !== '()'))) {
- parserInput.restore('Missing \'[...]\' lookup in variable call');
- return;
- }
- if (!inValue) {
- name = name[1];
- }
- var call = new tree.VariableCall(name, i, fileInfo);
- if (!inValue && parsers.end()) {
- parserInput.forget();
- return call;
- }
- else {
- parserInput.forget();
- return new tree.NamespaceValue(call, lookups, i, fileInfo);
- }
- }
- parserInput.restore();
- },
- //
- // extend syntax - used to extend selectors
- //
- extend: function (isRule) {
- var elements;
- var e;
- var index = parserInput.i;
- var option;
- var extendList;
- var extend;
- if (!parserInput.$str(isRule ? '&:extend(' : ':extend(')) {
- return;
- }
- do {
- option = null;
- elements = null;
- while (!(option = parserInput.$re(/^(all)(?=\s*(\)|,))/))) {
- e = this.element();
- if (!e) {
- break;
- }
- if (elements) {
- elements.push(e);
- }
- else {
- elements = [e];
- }
- }
- option = option && option[1];
- if (!elements) {
- error('Missing target selector for :extend().');
- }
- extend = new (tree.Extend)(new (tree.Selector)(elements), option, index + currentIndex, fileInfo);
- if (extendList) {
- extendList.push(extend);
- }
- else {
- extendList = [extend];
- }
- } while (parserInput.$char(','));
- expect(/^\)/);
- if (isRule) {
- expect(/^;/);
- }
- return extendList;
- },
- //
- // extendRule - used in a rule to extend all the parent selectors
- //
- extendRule: function () {
- return this.extend(true);
- },
- //
- // Mixins
- //
- mixin: {
- //
- // A Mixin call, with an optional argument list
- //
- // #mixins > .square(#fff);
- // #mixins.square(#fff);
- // .rounded(4px, black);
- // .button;
- //
- // We can lookup / return a value using the lookup syntax:
- //
- // color: #mixin.square(#fff)[@color];
- //
- // The `while` loop is there because mixins can be
- // namespaced, but we only support the child and descendant
- // selector for now.
- //
- call: function (inValue, getLookup) {
- var s = parserInput.currentChar();
- var important = false;
- var lookups;
- var index = parserInput.i;
- var elements;
- var args;
- var hasParens;
- if (s !== '.' && s !== '#') {
- return;
- }
- parserInput.save(); // stop us absorbing part of an invalid selector
- elements = this.elements();
- if (elements) {
- if (parserInput.$char('(')) {
- args = this.args(true).args;
- expectChar(')');
- hasParens = true;
- }
- if (getLookup !== false) {
- lookups = this.ruleLookups();
- }
- if (getLookup === true && !lookups) {
- parserInput.restore();
- return;
- }
- if (inValue && !lookups && !hasParens) {
- // This isn't a valid in-value mixin call
- parserInput.restore();
- return;
- }
- if (!inValue && parsers.important()) {
- important = true;
- }
- if (inValue || parsers.end()) {
- parserInput.forget();
- var mixin = new (tree.mixin.Call)(elements, args, index + currentIndex, fileInfo, !lookups && important);
- if (lookups) {
- return new tree.NamespaceValue(mixin, lookups);
- }
- else {
- return mixin;
- }
- }
- }
- parserInput.restore();
- },
- /**
- * Matching elements for mixins
- * (Start with . or # and can have > )
- */
- elements: function () {
- var elements;
- var e;
- var c;
- var elem;
- var elemIndex;
- var re = /^[#.](?:[\w-]|\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+/;
- while (true) {
- elemIndex = parserInput.i;
- e = parserInput.$re(re);
- if (!e) {
- break;
- }
- elem = new (tree.Element)(c, e, false, elemIndex + currentIndex, fileInfo);
- if (elements) {
- elements.push(elem);
- }
- else {
- elements = [elem];
- }
- c = parserInput.$char('>');
- }
- return elements;
- },
- args: function (isCall) {
- var entities = parsers.entities;
- var returner = { args: null, variadic: false };
- var expressions = [];
- var argsSemiColon = [];
- var argsComma = [];
- var isSemiColonSeparated;
- var expressionContainsNamed;
- var name;
- var nameLoop;
- var value;
- var arg;
- var expand;
- var hasSep = true;
- parserInput.save();
- while (true) {
- if (isCall) {
- arg = parsers.detachedRuleset() || parsers.expression();
- }
- else {
- parserInput.commentStore.length = 0;
- if (parserInput.$str('...')) {
- returner.variadic = true;
- if (parserInput.$char(';') && !isSemiColonSeparated) {
- isSemiColonSeparated = true;
- }
- (isSemiColonSeparated ? argsSemiColon : argsComma)
- .push({ variadic: true });
- break;
- }
- arg = entities.variable() || entities.property() || entities.literal() || entities.keyword() || this.call(true);
- }
- if (!arg || !hasSep) {
- break;
- }
- nameLoop = null;
- if (arg.throwAwayComments) {
- arg.throwAwayComments();
- }
- value = arg;
- var val = null;
- if (isCall) {
- // Variable
- if (arg.value && arg.value.length == 1) {
- val = arg.value[0];
- }
- }
- else {
- val = arg;
- }
- if (val && (val instanceof tree.Variable || val instanceof tree.Property)) {
- if (parserInput.$char(':')) {
- if (expressions.length > 0) {
- if (isSemiColonSeparated) {
- error('Cannot mix ; and , as delimiter types');
- }
- expressionContainsNamed = true;
- }
- value = parsers.detachedRuleset() || parsers.expression();
- if (!value) {
- if (isCall) {
- error('could not understand value for named argument');
- }
- else {
- parserInput.restore();
- returner.args = [];
- return returner;
- }
- }
- nameLoop = (name = val.name);
- }
- else if (parserInput.$str('...')) {
- if (!isCall) {
- returner.variadic = true;
- if (parserInput.$char(';') && !isSemiColonSeparated) {
- isSemiColonSeparated = true;
- }
- (isSemiColonSeparated ? argsSemiColon : argsComma)
- .push({ name: arg.name, variadic: true });
- break;
- }
- else {
- expand = true;
- }
- }
- else if (!isCall) {
- name = nameLoop = val.name;
- value = null;
- }
- }
- if (value) {
- expressions.push(value);
- }
- argsComma.push({ name: nameLoop, value: value, expand: expand });
- if (parserInput.$char(',')) {
- hasSep = true;
- continue;
- }
- hasSep = parserInput.$char(';') === ';';
- if (hasSep || isSemiColonSeparated) {
- if (expressionContainsNamed) {
- error('Cannot mix ; and , as delimiter types');
- }
- isSemiColonSeparated = true;
- if (expressions.length > 1) {
- value = new (tree.Value)(expressions);
- }
- argsSemiColon.push({ name: name, value: value, expand: expand });
- name = null;
- expressions = [];
- expressionContainsNamed = false;
- }
- }
- parserInput.forget();
- returner.args = isSemiColonSeparated ? argsSemiColon : argsComma;
- return returner;
- },
- //
- // A Mixin definition, with a list of parameters
- //
- // .rounded (@radius: 2px, @color) {
- // ...
- // }
- //
- // Until we have a finer grained state-machine, we have to
- // do a look-ahead, to make sure we don't have a mixin call.
- // See the `rule` function for more information.
- //
- // We start by matching `.rounded (`, and then proceed on to
- // the argument list, which has optional default values.
- // We store the parameters in `params`, with a `value` key,
- // if there is a value, such as in the case of `@radius`.
- //
- // Once we've got our params list, and a closing `)`, we parse
- // the `{...}` block.
- //
- definition: function () {
- var name;
- var params = [];
- var match;
- var ruleset;
- var cond;
- var variadic = false;
- if ((parserInput.currentChar() !== '.' && parserInput.currentChar() !== '#') ||
- parserInput.peek(/^[^{]*\}/)) {
- return;
- }
- parserInput.save();
- match = parserInput.$re(/^([#.](?:[\w-]|\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+)\s*\(/);
- if (match) {
- name = match[1];
- var argInfo = this.args(false);
- params = argInfo.args;
- variadic = argInfo.variadic;
- // .mixincall("@{a}");
- // looks a bit like a mixin definition..
- // also
- // .mixincall(@a: {rule: set;});
- // so we have to be nice and restore
- if (!parserInput.$char(')')) {
- parserInput.restore('Missing closing \')\'');
- return;
- }
- parserInput.commentStore.length = 0;
- if (parserInput.$str('when')) { // Guard
- cond = expect(parsers.conditions, 'expected condition');
- }
- ruleset = parsers.block();
- if (ruleset) {
- parserInput.forget();
- return new (tree.mixin.Definition)(name, params, ruleset, cond, variadic);
- }
- else {
- parserInput.restore();
- }
- }
- else {
- parserInput.restore();
- }
- },
- ruleLookups: function () {
- var rule;
- var lookups = [];
- if (parserInput.currentChar() !== '[') {
- return;
- }
- while (true) {
- parserInput.save();
- rule = this.lookupValue();
- if (!rule && rule !== '') {
- parserInput.restore();
- break;
- }
- lookups.push(rule);
- parserInput.forget();
- }
- if (lookups.length > 0) {
- return lookups;
- }
- },
- lookupValue: function () {
- parserInput.save();
- if (!parserInput.$char('[')) {
- parserInput.restore();
- return;
- }
- var name = parserInput.$re(/^(?:[@$]{0,2})[_a-zA-Z0-9-]*/);
- if (!parserInput.$char(']')) {
- parserInput.restore();
- return;
- }
- if (name || name === '') {
- parserInput.forget();
- return name;
- }
- parserInput.restore();
- }
- },
- //
- // Entities are the smallest recognized token,
- // and can be found inside a rule's value.
- //
- entity: function () {
- var entities = this.entities;
- return this.comment() || entities.literal() || entities.variable() || entities.url() ||
- entities.property() || entities.call() || entities.keyword() || this.mixin.call(true) ||
- entities.javascript();
- },
- //
- // A Declaration terminator. Note that we use `peek()` to check for '}',
- // because the `block` rule will be expecting it, but we still need to make sure
- // it's there, if ';' was omitted.
- //
- end: function () {
- return parserInput.$char(';') || parserInput.peek('}');
- },
- //
- // IE's alpha function
- //
- // alpha(opacity=88)
- //
- ieAlpha: function () {
- var value;
- // http://jsperf.com/case-insensitive-regex-vs-strtolower-then-regex/18
- if (!parserInput.$re(/^opacity=/i)) {
- return;
- }
- value = parserInput.$re(/^\d+/);
- if (!value) {
- value = expect(parsers.entities.variable, 'Could not parse alpha');
- value = "@{".concat(value.name.slice(1), "}");
- }
- expectChar(')');
- return new tree.Quoted('', "alpha(opacity=".concat(value, ")"));
- },
- //
- // A Selector Element
- //
- // div
- // + h1
- // #socks
- // input[type="text"]
- //
- // Elements are the building blocks for Selectors,
- // they are made out of a `Combinator` (see combinator rule),
- // and an element name, such as a tag a class, or `*`.
- //
- element: function () {
- var e;
- var c;
- var v;
- var index = parserInput.i;
- c = this.combinator();
- e = parserInput.$re(/^(?:\d+\.\d+|\d+)%/) ||
- // eslint-disable-next-line no-control-regex
- parserInput.$re(/^(?:[.#]?|:*)(?:[\w-]|[^\x00-\x9f]|\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+/) ||
- parserInput.$char('*') || parserInput.$char('&') || this.attribute() ||
- parserInput.$re(/^\([^&()@]+\)/) || parserInput.$re(/^[.#:](?=@)/) ||
- this.entities.variableCurly();
- if (!e) {
- parserInput.save();
- if (parserInput.$char('(')) {
- if ((v = this.selector(false))) {
- var selectors = [];
- while (parserInput.$char(',')) {
- selectors.push(v);
- selectors.push(new Anonymous(','));
- v = this.selector(false);
- }
- selectors.push(v);
- if (parserInput.$char(')')) {
- if (selectors.length > 1) {
- e = new (tree.Paren)(new Selector(selectors));
- }
- else {
- e = new (tree.Paren)(v);
- }
- parserInput.forget();
- }
- else {
- parserInput.restore('Missing closing \')\'');
- }
- }
- else {
- parserInput.restore('Missing closing \')\'');
- }
- }
- else {
- parserInput.forget();
- }
- }
- if (e) {
- return new (tree.Element)(c, e, e instanceof tree.Variable, index + currentIndex, fileInfo);
- }
- },
- //
- // Combinators combine elements together, in a Selector.
- //
- // Because our parser isn't white-space sensitive, special care
- // has to be taken, when parsing the descendant combinator, ` `,
- // as it's an empty space. We have to check the previous character
- // in the input, to see if it's a ` ` character. More info on how
- // we deal with this in *combinator.js*.
- //
- combinator: function () {
- var c = parserInput.currentChar();
- if (c === '/') {
- parserInput.save();
- var slashedCombinator = parserInput.$re(/^\/[a-z]+\//i);
- if (slashedCombinator) {
- parserInput.forget();
- return new (tree.Combinator)(slashedCombinator);
- }
- parserInput.restore();
- }
- if (c === '>' || c === '+' || c === '~' || c === '|' || c === '^') {
- parserInput.i++;
- if (c === '^' && parserInput.currentChar() === '^') {
- c = '^^';
- parserInput.i++;
- }
- while (parserInput.isWhitespace()) {
- parserInput.i++;
- }
- return new (tree.Combinator)(c);
- }
- else if (parserInput.isWhitespace(-1)) {
- return new (tree.Combinator)(' ');
- }
- else {
- return new (tree.Combinator)(null);
- }
- },
- //
- // A CSS Selector
- // with less extensions e.g. the ability to extend and guard
- //
- // .class > div + h1
- // li a:hover
- //
- // Selectors are made out of one or more Elements, see above.
- //
- selector: function (isLess) {
- var index = parserInput.i;
- var elements;
- var extendList;
- var c;
- var e;
- var allExtends;
- var when;
- var condition;
- isLess = isLess !== false;
- while ((isLess && (extendList = this.extend())) || (isLess && (when = parserInput.$str('when'))) || (e = this.element())) {
- if (when) {
- condition = expect(this.conditions, 'expected condition');
- }
- else if (condition) {
- error('CSS guard can only be used at the end of selector');
- }
- else if (extendList) {
- if (allExtends) {
- allExtends = allExtends.concat(extendList);
- }
- else {
- allExtends = extendList;
- }
- }
- else {
- if (allExtends) {
- error('Extend can only be used at the end of selector');
- }
- c = parserInput.currentChar();
- if (Array.isArray(e)) {
- e.forEach(function (ele) { return elements.push(ele); });
- }
- if (elements) {
- elements.push(e);
- }
- else {
- elements = [e];
- }
- e = null;
- }
- if (c === '{' || c === '}' || c === ';' || c === ',' || c === ')') {
- break;
- }
- }
- if (elements) {
- return new (tree.Selector)(elements, allExtends, condition, index + currentIndex, fileInfo);
- }
- if (allExtends) {
- error('Extend must be used to extend a selector, it cannot be used on its own');
- }
- },
- selectors: function () {
- var s;
- var selectors;
- while (true) {
- s = this.selector();
- if (!s) {
- break;
- }
- if (selectors) {
- selectors.push(s);
- }
- else {
- selectors = [s];
- }
- parserInput.commentStore.length = 0;
- if (s.condition && selectors.length > 1) {
- error('Guards are only currently allowed on a single selector.');
- }
- if (!parserInput.$char(',')) {
- break;
- }
- if (s.condition) {
- error('Guards are only currently allowed on a single selector.');
- }
- parserInput.commentStore.length = 0;
- }
- return selectors;
- },
- attribute: function () {
- if (!parserInput.$char('[')) {
- return;
- }
- var entities = this.entities;
- var key;
- var val;
- var op;
- //
- // case-insensitive flag
- // e.g. [attr operator value i]
- //
- var cif;
- if (!(key = entities.variableCurly())) {
- key = expect(/^(?:[_A-Za-z0-9-*]*\|)?(?:[_A-Za-z0-9-]|\\.)+/);
- }
- op = parserInput.$re(/^[|~*$^]?=/);
- if (op) {
- val = entities.quoted() || parserInput.$re(/^[0-9]+%/) || parserInput.$re(/^[\w-]+/) || entities.variableCurly();
- if (val) {
- cif = parserInput.$re(/^[iIsS]/);
- }
- }
- expectChar(']');
- return new (tree.Attribute)(key, op, val, cif);
- },
- //
- // The `block` rule is used by `ruleset` and `mixin.definition`.
- // It's a wrapper around the `primary` rule, with added `{}`.
- //
- block: function () {
- var content;
- if (parserInput.$char('{') && (content = this.primary()) && parserInput.$char('}')) {
- return content;
- }
- },
- blockRuleset: function () {
- var block = this.block();
- if (block) {
- block = new tree.Ruleset(null, block);
- }
- return block;
- },
- detachedRuleset: function () {
- var argInfo;
- var params;
- var variadic;
- parserInput.save();
- if (parserInput.$re(/^[.#]\(/)) {
- /**
- * DR args currently only implemented for each() function, and not
- * yet settable as `@dr: #(@arg) {}`
- * This should be done when DRs are merged with mixins.
- * See: https://github.com/less/less-meta/issues/16
- */
- argInfo = this.mixin.args(false);
- params = argInfo.args;
- variadic = argInfo.variadic;
- if (!parserInput.$char(')')) {
- parserInput.restore();
- return;
- }
- }
- var blockRuleset = this.blockRuleset();
- if (blockRuleset) {
- parserInput.forget();
- if (params) {
- return new tree.mixin.Definition(null, params, blockRuleset, null, variadic);
- }
- return new tree.DetachedRuleset(blockRuleset);
- }
- parserInput.restore();
- },
- //
- // div, .class, body > p {...}
- //
- ruleset: function () {
- var selectors;
- var rules;
- var debugInfo;
- parserInput.save();
- if (context.dumpLineNumbers) {
- debugInfo = getDebugInfo(parserInput.i);
- }
- selectors = this.selectors();
- if (selectors && (rules = this.block())) {
- parserInput.forget();
- var ruleset = new (tree.Ruleset)(selectors, rules, context.strictImports);
- if (context.dumpLineNumbers) {
- ruleset.debugInfo = debugInfo;
- }
- return ruleset;
- }
- else {
- parserInput.restore();
- }
- },
- declaration: function () {
- var name;
- var value;
- var index = parserInput.i;
- var hasDR;
- var c = parserInput.currentChar();
- var important;
- var merge;
- var isVariable;
- if (c === '.' || c === '#' || c === '&' || c === ':') {
- return;
- }
- parserInput.save();
- name = this.variable() || this.ruleProperty();
- if (name) {
- isVariable = typeof name === 'string';
- if (isVariable) {
- value = this.detachedRuleset();
- if (value) {
- hasDR = true;
- }
- }
- parserInput.commentStore.length = 0;
- if (!value) {
- // a name returned by this.ruleProperty() is always an array of the form:
- // [string-1, ..., string-n, ""] or [string-1, ..., string-n, "+"]
- // where each item is a tree.Keyword or tree.Variable
- merge = !isVariable && name.length > 1 && name.pop().value;
- // Custom property values get permissive parsing
- if (name[0].value && name[0].value.slice(0, 2) === '--') {
- if (parserInput.$char(';')) {
- value = new Anonymous('');
- }
- else {
- value = this.permissiveValue(/[;}]/);
- }
- }
- // Try to store values as anonymous
- // If we need the value later we'll re-parse it in ruleset.parseValue
- else {
- value = this.anonymousValue();
- }
- if (value) {
- parserInput.forget();
- // anonymous values absorb the end ';' which is required for them to work
- return new (tree.Declaration)(name, value, false, merge, index + currentIndex, fileInfo);
- }
- if (!value) {
- value = this.value();
- }
- if (value) {
- important = this.important();
- }
- else if (isVariable) {
- // As a last resort, try permissiveValue
- value = this.permissiveValue();
- }
- }
- if (value && (this.end() || hasDR)) {
- parserInput.forget();
- return new (tree.Declaration)(name, value, important, merge, index + currentIndex, fileInfo);
- }
- else {
- parserInput.restore();
- }
- }
- else {
- parserInput.restore();
- }
- },
- anonymousValue: function () {
- var index = parserInput.i;
- var match = parserInput.$re(/^([^.#@$+/'"*`(;{}-]*);/);
- if (match) {
- return new (tree.Anonymous)(match[1], index + currentIndex);
- }
- },
- /**
- * Used for custom properties, at-rules, and variables (as fallback)
- * Parses almost anything inside of {} [] () "" blocks
- * until it reaches outer-most tokens.
- *
- * First, it will try to parse comments and entities to reach
- * the end. This is mostly like the Expression parser except no
- * math is allowed.
- */
- permissiveValue: function (untilTokens) {
- var i;
- var e;
- var done;
- var value;
- var tok = untilTokens || ';';
- var index = parserInput.i;
- var result = [];
- function testCurrentChar() {
- var char = parserInput.currentChar();
- if (typeof tok === 'string') {
- return char === tok;
- }
- else {
- return tok.test(char);
- }
- }
- if (testCurrentChar()) {
- return;
- }
- value = [];
- do {
- e = this.comment();
- if (e) {
- value.push(e);
- continue;
- }
- e = this.entity();
- if (e) {
- value.push(e);
- }
- if (parserInput.peek(',')) {
- value.push(new (tree.Anonymous)(',', parserInput.i));
- parserInput.$char(',');
- }
- } while (e);
- done = testCurrentChar();
- if (value.length > 0) {
- value = new (tree.Expression)(value);
- if (done) {
- return value;
- }
- else {
- result.push(value);
- }
- // Preserve space before $parseUntil as it will not
- if (parserInput.prevChar() === ' ') {
- result.push(new tree.Anonymous(' ', index));
- }
- }
- parserInput.save();
- value = parserInput.$parseUntil(tok);
- if (value) {
- if (typeof value === 'string') {
- error("Expected '".concat(value, "'"), 'Parse');
- }
- if (value.length === 1 && value[0] === ' ') {
- parserInput.forget();
- return new tree.Anonymous('', index);
- }
- var item = void 0;
- for (i = 0; i < value.length; i++) {
- item = value[i];
- if (Array.isArray(item)) {
- // Treat actual quotes as normal quoted values
- result.push(new tree.Quoted(item[0], item[1], true, index, fileInfo));
- }
- else {
- if (i === value.length - 1) {
- item = item.trim();
- }
- // Treat like quoted values, but replace vars like unquoted expressions
- var quote = new tree.Quoted('\'', item, true, index, fileInfo);
- if (!item.startsWith('@{')) {
- quote.variableRegex = /@([\w-]+)/g;
- }
- quote.propRegex = /\$([\w-]+)/g;
- result.push(quote);
- }
- }
- parserInput.forget();
- return new tree.Expression(result, true);
- }
- parserInput.restore();
- },
- //
- // An @import atrule
- //
- // @import "lib";
- //
- // Depending on our environment, importing is done differently:
- // In the browser, it's an XHR request, in Node, it would be a
- // file-system operation. The function used for importing is
- // stored in `import`, which we pass to the Import constructor.
- //
- 'import': function () {
- var path;
- var features;
- var index = parserInput.i;
- var dir = parserInput.$re(/^@import\s+/);
- if (dir) {
- var options = (dir ? this.importOptions() : null) || {};
- if ((path = this.entities.quoted() || this.entities.url())) {
- features = this.mediaFeatures({});
- if (!parserInput.$char(';')) {
- parserInput.i = index;
- error('missing semi-colon or unrecognised media features on import');
- }
- features = features && new (tree.Value)(features);
- return new (tree.Import)(path, features, options, index + currentIndex, fileInfo);
- }
- else {
- parserInput.i = index;
- error('malformed import statement');
- }
- }
- },
- importOptions: function () {
- var o;
- var options = {};
- var optionName;
- var value;
- // list of options, surrounded by parens
- if (!parserInput.$char('(')) {
- return null;
- }
- do {
- o = this.importOption();
- if (o) {
- optionName = o;
- value = true;
- switch (optionName) {
- case 'css':
- optionName = 'less';
- value = false;
- break;
- case 'once':
- optionName = 'multiple';
- value = false;
- break;
- }
- options[optionName] = value;
- if (!parserInput.$char(',')) {
- break;
- }
- }
- } while (o);
- expectChar(')');
- return options;
- },
- importOption: function () {
- var opt = parserInput.$re(/^(less|css|multiple|once|inline|reference|optional)/);
- if (opt) {
- return opt[1];
- }
- },
- mediaFeature: function (syntaxOptions) {
- var entities = this.entities;
- var nodes = [];
- var e;
- var p;
- var rangeP;
- parserInput.save();
- do {
- e = entities.declarationCall.bind(this)() || entities.keyword() || entities.variable() || entities.mixinLookup();
- if (e) {
- nodes.push(e);
- }
- else if (parserInput.$char('(')) {
- p = this.property();
- parserInput.save();
- if (!p && syntaxOptions.queryInParens && parserInput.$re(/^[0-9a-z-]*\s*([<>]=|<=|>=|[<>]|=)/)) {
- parserInput.restore();
- p = this.condition();
- parserInput.save();
- rangeP = this.atomicCondition(null, p.rvalue);
- if (!rangeP) {
- parserInput.restore();
- }
- }
- else {
- parserInput.restore();
- e = this.value();
- }
- if (parserInput.$char(')')) {
- if (p && !e) {
- nodes.push(new (tree.Paren)(new (tree.QueryInParens)(p.op, p.lvalue, p.rvalue, rangeP ? rangeP.op : null, rangeP ? rangeP.rvalue : null, p._index)));
- e = p;
- }
- else if (p && e) {
- nodes.push(new (tree.Paren)(new (tree.Declaration)(p, e, null, null, parserInput.i + currentIndex, fileInfo, true)));
- }
- else if (e) {
- nodes.push(new (tree.Paren)(e));
- }
- else {
- error('badly formed media feature definition');
- }
- }
- else {
- error('Missing closing \')\'', 'Parse');
- }
- }
- } while (e);
- parserInput.forget();
- if (nodes.length > 0) {
- return new (tree.Expression)(nodes);
- }
- },
- mediaFeatures: function (syntaxOptions) {
- var entities = this.entities;
- var features = [];
- var e;
- do {
- e = this.mediaFeature(syntaxOptions);
- if (e) {
- features.push(e);
- if (!parserInput.$char(',')) {
- break;
- }
- }
- else {
- e = entities.variable() || entities.mixinLookup();
- if (e) {
- features.push(e);
- if (!parserInput.$char(',')) {
- break;
- }
- }
- }
- } while (e);
- return features.length > 0 ? features : null;
- },
- prepareAndGetNestableAtRule: function (treeType, index, debugInfo, syntaxOptions) {
- var features = this.mediaFeatures(syntaxOptions);
- var rules = this.block();
- if (!rules) {
- error('media definitions require block statements after any features');
- }
- parserInput.forget();
- var atRule = new (treeType)(rules, features, index + currentIndex, fileInfo);
- if (context.dumpLineNumbers) {
- atRule.debugInfo = debugInfo;
- }
- return atRule;
- },
- nestableAtRule: function () {
- var debugInfo;
- var index = parserInput.i;
- if (context.dumpLineNumbers) {
- debugInfo = getDebugInfo(index);
- }
- parserInput.save();
- if (parserInput.$peekChar('@')) {
- if (parserInput.$str('@media')) {
- return this.prepareAndGetNestableAtRule(tree.Media, index, debugInfo, MediaSyntaxOptions);
- }
- if (parserInput.$str('@container')) {
- return this.prepareAndGetNestableAtRule(tree.Container, index, debugInfo, ContainerSyntaxOptions);
- }
- }
- parserInput.restore();
- },
- //
- // A @plugin directive, used to import plugins dynamically.
- //
- // @plugin (args) "lib";
- //
- plugin: function () {
- var path;
- var args;
- var options;
- var index = parserInput.i;
- var dir = parserInput.$re(/^@plugin\s+/);
- if (dir) {
- args = this.pluginArgs();
- if (args) {
- options = {
- pluginArgs: args,
- isPlugin: true
- };
- }
- else {
- options = { isPlugin: true };
- }
- if ((path = this.entities.quoted() || this.entities.url())) {
- if (!parserInput.$char(';')) {
- parserInput.i = index;
- error('missing semi-colon on @plugin');
- }
- return new (tree.Import)(path, null, options, index + currentIndex, fileInfo);
- }
- else {
- parserInput.i = index;
- error('malformed @plugin statement');
- }
- }
- },
- pluginArgs: function () {
- // list of options, surrounded by parens
- parserInput.save();
- if (!parserInput.$char('(')) {
- parserInput.restore();
- return null;
- }
- var args = parserInput.$re(/^\s*([^);]+)\)\s*/);
- if (args[1]) {
- parserInput.forget();
- return args[1].trim();
- }
- else {
- parserInput.restore();
- return null;
- }
- },
- //
- // A CSS AtRule
- //
- // @charset "utf-8";
- //
- atrule: function () {
- var index = parserInput.i;
- var name;
- var value;
- var rules;
- var nonVendorSpecificName;
- var hasIdentifier;
- var hasExpression;
- var hasUnknown;
- var hasBlock = true;
- var isRooted = true;
- if (parserInput.currentChar() !== '@') {
- return;
- }
- value = this['import']() || this.plugin() || this.nestableAtRule();
- if (value) {
- return value;
- }
- parserInput.save();
- name = parserInput.$re(/^@[a-z-]+/);
- if (!name) {
- return;
- }
- nonVendorSpecificName = name;
- if (name.charAt(1) == '-' && name.indexOf('-', 2) > 0) {
- nonVendorSpecificName = "@".concat(name.slice(name.indexOf('-', 2) + 1));
- }
- switch (nonVendorSpecificName) {
- case '@charset':
- hasIdentifier = true;
- hasBlock = false;
- break;
- case '@namespace':
- hasExpression = true;
- hasBlock = false;
- break;
- case '@keyframes':
- case '@counter-style':
- hasIdentifier = true;
- break;
- case '@document':
- case '@supports':
- hasUnknown = true;
- isRooted = false;
- break;
- default:
- hasUnknown = true;
- break;
- }
- parserInput.commentStore.length = 0;
- if (hasIdentifier) {
- value = this.entity();
- if (!value) {
- error("expected ".concat(name, " identifier"));
- }
- }
- else if (hasExpression) {
- value = this.expression();
- if (!value) {
- error("expected ".concat(name, " expression"));
- }
- }
- else if (hasUnknown) {
- value = this.permissiveValue(/^[{;]/);
- hasBlock = (parserInput.currentChar() === '{');
- if (!value) {
- if (!hasBlock && parserInput.currentChar() !== ';') {
- error("".concat(name, " rule is missing block or ending semi-colon"));
- }
- }
- else if (!value.value) {
- value = null;
- }
- }
- if (hasBlock) {
- rules = this.blockRuleset();
- }
- if (rules || (!hasBlock && value && parserInput.$char(';'))) {
- parserInput.forget();
- return new (tree.AtRule)(name, value, rules, index + currentIndex, fileInfo, context.dumpLineNumbers ? getDebugInfo(index) : null, isRooted);
- }
- parserInput.restore('at-rule options not recognised');
- },
- //
- // A Value is a comma-delimited list of Expressions
- //
- // font-family: Baskerville, Georgia, serif;
- //
- // In a Rule, a Value represents everything after the `:`,
- // and before the `;`.
- //
- value: function () {
- var e;
- var expressions = [];
- var index = parserInput.i;
- do {
- e = this.expression();
- if (e) {
- expressions.push(e);
- if (!parserInput.$char(',')) {
- break;
- }
- }
- } while (e);
- if (expressions.length > 0) {
- return new (tree.Value)(expressions, index + currentIndex);
- }
- },
- important: function () {
- if (parserInput.currentChar() === '!') {
- return parserInput.$re(/^! *important/);
- }
- },
- sub: function () {
- var a;
- var e;
- parserInput.save();
- if (parserInput.$char('(')) {
- a = this.addition();
- if (a && parserInput.$char(')')) {
- parserInput.forget();
- e = new (tree.Expression)([a]);
- e.parens = true;
- return e;
- }
- parserInput.restore('Expected \')\'');
- return;
- }
- parserInput.restore();
- },
- multiplication: function () {
- var m;
- var a;
- var op;
- var operation;
- var isSpaced;
- m = this.operand();
- if (m) {
- isSpaced = parserInput.isWhitespace(-1);
- while (true) {
- if (parserInput.peek(/^\/[*/]/)) {
- break;
- }
- parserInput.save();
- op = parserInput.$char('/') || parserInput.$char('*') || parserInput.$str('./');
- if (!op) {
- parserInput.forget();
- break;
- }
- a = this.operand();
- if (!a) {
- parserInput.restore();
- break;
- }
- parserInput.forget();
- m.parensInOp = true;
- a.parensInOp = true;
- operation = new (tree.Operation)(op, [operation || m, a], isSpaced);
- isSpaced = parserInput.isWhitespace(-1);
- }
- return operation || m;
- }
- },
- addition: function () {
- var m;
- var a;
- var op;
- var operation;
- var isSpaced;
- m = this.multiplication();
- if (m) {
- isSpaced = parserInput.isWhitespace(-1);
- while (true) {
- op = parserInput.$re(/^[-+]\s+/) || (!isSpaced && (parserInput.$char('+') || parserInput.$char('-')));
- if (!op) {
- break;
- }
- a = this.multiplication();
- if (!a) {
- break;
- }
- m.parensInOp = true;
- a.parensInOp = true;
- operation = new (tree.Operation)(op, [operation || m, a], isSpaced);
- isSpaced = parserInput.isWhitespace(-1);
- }
- return operation || m;
- }
- },
- conditions: function () {
- var a;
- var b;
- var index = parserInput.i;
- var condition;
- a = this.condition(true);
- if (a) {
- while (true) {
- if (!parserInput.peek(/^,\s*(not\s*)?\(/) || !parserInput.$char(',')) {
- break;
- }
- b = this.condition(true);
- if (!b) {
- break;
- }
- condition = new (tree.Condition)('or', condition || a, b, index + currentIndex);
- }
- return condition || a;
- }
- },
- condition: function (needsParens) {
- var result;
- var logical;
- var next;
- function or() {
- return parserInput.$str('or');
- }
- result = this.conditionAnd(needsParens);
- if (!result) {
- return;
- }
- logical = or();
- if (logical) {
- next = this.condition(needsParens);
- if (next) {
- result = new (tree.Condition)(logical, result, next);
- }
- else {
- return;
- }
- }
- return result;
- },
- conditionAnd: function (needsParens) {
- var result;
- var logical;
- var next;
- var self = this;
- function insideCondition() {
- var cond = self.negatedCondition(needsParens) || self.parenthesisCondition(needsParens);
- if (!cond && !needsParens) {
- return self.atomicCondition(needsParens);
- }
- return cond;
- }
- function and() {
- return parserInput.$str('and');
- }
- result = insideCondition();
- if (!result) {
- return;
- }
- logical = and();
- if (logical) {
- next = this.conditionAnd(needsParens);
- if (next) {
- result = new (tree.Condition)(logical, result, next);
- }
- else {
- return;
- }
- }
- return result;
- },
- negatedCondition: function (needsParens) {
- if (parserInput.$str('not')) {
- var result = this.parenthesisCondition(needsParens);
- if (result) {
- result.negate = !result.negate;
- }
- return result;
- }
- },
- parenthesisCondition: function (needsParens) {
- function tryConditionFollowedByParenthesis(me) {
- var body;
- parserInput.save();
- body = me.condition(needsParens);
- if (!body) {
- parserInput.restore();
- return;
- }
- if (!parserInput.$char(')')) {
- parserInput.restore();
- return;
- }
- parserInput.forget();
- return body;
- }
- var body;
- parserInput.save();
- if (!parserInput.$str('(')) {
- parserInput.restore();
- return;
- }
- body = tryConditionFollowedByParenthesis(this);
- if (body) {
- parserInput.forget();
- return body;
- }
- body = this.atomicCondition(needsParens);
- if (!body) {
- parserInput.restore();
- return;
- }
- if (!parserInput.$char(')')) {
- parserInput.restore("expected ')' got '".concat(parserInput.currentChar(), "'"));
- return;
- }
- parserInput.forget();
- return body;
- },
- atomicCondition: function (needsParens, preparsedCond) {
- var entities = this.entities;
- var index = parserInput.i;
- var a;
- var b;
- var c;
- var op;
- var cond = (function () {
- return this.addition() || entities.keyword() || entities.quoted() || entities.mixinLookup();
- }).bind(this);
- if (preparsedCond) {
- a = preparsedCond;
- }
- else {
- a = cond();
- }
- if (a) {
- if (parserInput.$char('>')) {
- if (parserInput.$char('=')) {
- op = '>=';
- }
- else {
- op = '>';
- }
- }
- else if (parserInput.$char('<')) {
- if (parserInput.$char('=')) {
- op = '<=';
- }
- else {
- op = '<';
- }
- }
- else if (parserInput.$char('=')) {
- if (parserInput.$char('>')) {
- op = '=>';
- }
- else if (parserInput.$char('<')) {
- op = '=<';
- }
- else {
- op = '=';
- }
- }
- if (op) {
- b = cond();
- if (b) {
- c = new (tree.Condition)(op, a, b, index + currentIndex, false);
- }
- else {
- error('expected expression');
- }
- }
- else if (!preparsedCond) {
- c = new (tree.Condition)('=', a, new (tree.Keyword)('true'), index + currentIndex, false);
- }
- return c;
- }
- },
- //
- // An operand is anything that can be part of an operation,
- // such as a Color, or a Variable
- //
- operand: function () {
- var entities = this.entities;
- var negate;
- if (parserInput.peek(/^-[@$(]/)) {
- negate = parserInput.$char('-');
- }
- var o = this.sub() || entities.dimension() ||
- entities.color() || entities.variable() ||
- entities.property() || entities.call() ||
- entities.quoted(true) || entities.colorKeyword() ||
- entities.mixinLookup();
- if (negate) {
- o.parensInOp = true;
- o = new (tree.Negative)(o);
- }
- return o;
- },
- //
- // Expressions either represent mathematical operations,
- // or white-space delimited Entities.
- //
- // 1px solid black
- // @var * 2
- //
- expression: function () {
- var entities = [];
- var e;
- var delim;
- var index = parserInput.i;
- do {
- e = this.comment();
- if (e && !e.isLineComment) {
- entities.push(e);
- continue;
- }
- e = this.addition() || this.entity();
- if (e instanceof tree.Comment) {
- e = null;
- }
- if (e) {
- entities.push(e);
- // operations do not allow keyword "/" dimension (e.g. small/20px) so we support that here
- if (!parserInput.peek(/^\/[/*]/)) {
- delim = parserInput.$char('/');
- if (delim) {
- entities.push(new (tree.Anonymous)(delim, index + currentIndex));
- }
- }
- }
- } while (e);
- if (entities.length > 0) {
- return new (tree.Expression)(entities);
- }
- },
- property: function () {
- var name = parserInput.$re(/^(\*?-?[_a-zA-Z0-9-]+)\s*:/);
- if (name) {
- return name[1];
- }
- },
- ruleProperty: function () {
- var name = [];
- var index = [];
- var s;
- var k;
- parserInput.save();
- var simpleProperty = parserInput.$re(/^([_a-zA-Z0-9-]+)\s*:/);
- if (simpleProperty) {
- name = [new (tree.Keyword)(simpleProperty[1])];
- parserInput.forget();
- return name;
- }
- function match(re) {
- var i = parserInput.i;
- var chunk = parserInput.$re(re);
- if (chunk) {
- index.push(i);
- return name.push(chunk[1]);
- }
- }
- match(/^(\*?)/);
- while (true) {
- if (!match(/^((?:[\w-]+)|(?:[@$]\{[\w-]+\}))/)) {
- break;
- }
- }
- if ((name.length > 1) && match(/^((?:\+_|\+)?)\s*:/)) {
- parserInput.forget();
- // at last, we have the complete match now. move forward,
- // convert name particles to tree objects and return:
- if (name[0] === '') {
- name.shift();
- index.shift();
- }
- for (k = 0; k < name.length; k++) {
- s = name[k];
- name[k] = (s.charAt(0) !== '@' && s.charAt(0) !== '$') ?
- new (tree.Keyword)(s) :
- (s.charAt(0) === '@' ?
- new (tree.Variable)("@".concat(s.slice(2, -1)), index[k] + currentIndex, fileInfo) :
- new (tree.Property)("$".concat(s.slice(2, -1)), index[k] + currentIndex, fileInfo));
- }
- return name;
- }
- parserInput.restore();
- }
- }
- };
- };
- Parser.serializeVars = function (vars) {
- var s = '';
- for (var name_1 in vars) {
- if (Object.hasOwnProperty.call(vars, name_1)) {
- var value = vars[name_1];
- s += "".concat(((name_1[0] === '@') ? '' : '@') + name_1, ": ").concat(value).concat((String(value).slice(-1) === ';') ? '' : ';');
- }
- }
- return s;
- };
-
- var Selector = function (elements, extendList, condition, index, currentFileInfo, visibilityInfo) {
- this.extendList = extendList;
- this.condition = condition;
- this.evaldCondition = !condition;
- this._index = index;
- this._fileInfo = currentFileInfo;
- this.elements = this.getElements(elements);
- this.mixinElements_ = undefined;
- this.copyVisibilityInfo(visibilityInfo);
- this.setParent(this.elements, this);
- };
- Selector.prototype = Object.assign(new Node(), {
- type: 'Selector',
- accept: function (visitor) {
- if (this.elements) {
- this.elements = visitor.visitArray(this.elements);
- }
- if (this.extendList) {
- this.extendList = visitor.visitArray(this.extendList);
- }
- if (this.condition) {
- this.condition = visitor.visit(this.condition);
- }
- },
- createDerived: function (elements, extendList, evaldCondition) {
- elements = this.getElements(elements);
- var newSelector = new Selector(elements, extendList || this.extendList, null, this.getIndex(), this.fileInfo(), this.visibilityInfo());
- newSelector.evaldCondition = (!isNullOrUndefined(evaldCondition)) ? evaldCondition : this.evaldCondition;
- newSelector.mediaEmpty = this.mediaEmpty;
- return newSelector;
- },
- getElements: function (els) {
- if (!els) {
- return [new Element('', '&', false, this._index, this._fileInfo)];
- }
- if (typeof els === 'string') {
- new Parser(this.parse.context, this.parse.importManager, this._fileInfo, this._index).parseNode(els, ['selector'], function (err, result) {
- if (err) {
- throw new LessError({
- index: err.index,
- message: err.message
- }, this.parse.imports, this._fileInfo.filename);
- }
- els = result[0].elements;
- });
- }
- return els;
- },
- createEmptySelectors: function () {
- var el = new Element('', '&', false, this._index, this._fileInfo), sels = [new Selector([el], null, null, this._index, this._fileInfo)];
- sels[0].mediaEmpty = true;
- return sels;
- },
- match: function (other) {
- var elements = this.elements;
- var len = elements.length;
- var olen;
- var i;
- other = other.mixinElements();
- olen = other.length;
- if (olen === 0 || len < olen) {
- return 0;
- }
- else {
- for (i = 0; i < olen; i++) {
- if (elements[i].value !== other[i]) {
- return 0;
- }
- }
- }
- return olen; // return number of matched elements
- },
- mixinElements: function () {
- if (this.mixinElements_) {
- return this.mixinElements_;
- }
- var elements = this.elements.map(function (v) {
- return v.combinator.value + (v.value.value || v.value);
- }).join('').match(/[,*.\w-]([\w-]|(\\.))*/g);
- if (elements) {
- if (elements[0] === '&') {
- elements.shift();
- }
- }
- else {
- elements = [];
- }
- return (this.mixinElements_ = elements);
- },
- isJustParentSelector: function () {
- return !this.mediaEmpty &&
- this.elements.length === 1 &&
- this.elements[0].value === '&' &&
- (this.elements[0].combinator.value === ' ' || this.elements[0].combinator.value === '');
- },
- eval: function (context) {
- var evaldCondition = this.condition && this.condition.eval(context);
- var elements = this.elements;
- var extendList = this.extendList;
- elements = elements && elements.map(function (e) { return e.eval(context); });
- extendList = extendList && extendList.map(function (extend) { return extend.eval(context); });
- return this.createDerived(elements, extendList, evaldCondition);
- },
- genCSS: function (context, output) {
- var i, element;
- if ((!context || !context.firstSelector) && this.elements[0].combinator.value === '') {
- output.add(' ', this.fileInfo(), this.getIndex());
- }
- for (i = 0; i < this.elements.length; i++) {
- element = this.elements[i];
- element.genCSS(context, output);
- }
- },
- getIsOutput: function () {
- return this.evaldCondition;
- }
- });
-
- var Value = function (value) {
- if (!value) {
- throw new Error('Value requires an array argument');
- }
- if (!Array.isArray(value)) {
- this.value = [value];
- }
- else {
- this.value = value;
- }
- };
- Value.prototype = Object.assign(new Node(), {
- type: 'Value',
- accept: function (visitor) {
- if (this.value) {
- this.value = visitor.visitArray(this.value);
- }
- },
- eval: function (context) {
- if (this.value.length === 1) {
- return this.value[0].eval(context);
- }
- else {
- return new Value(this.value.map(function (v) {
- return v.eval(context);
- }));
- }
- },
- genCSS: function (context, output) {
- var i;
- for (i = 0; i < this.value.length; i++) {
- this.value[i].genCSS(context, output);
- if (i + 1 < this.value.length) {
- output.add((context && context.compress) ? ',' : ', ');
- }
- }
- }
- });
-
- var Keyword = function (value) {
- this.value = value;
- };
- Keyword.prototype = Object.assign(new Node(), {
- type: 'Keyword',
- genCSS: function (context, output) {
- if (this.value === '%') {
- throw { type: 'Syntax', message: 'Invalid % without number' };
- }
- output.add(this.value);
- }
- });
- Keyword.True = new Keyword('true');
- Keyword.False = new Keyword('false');
-
- var MATH$1 = Math$1;
- function evalName(context, name) {
- var value = '';
- var i;
- var n = name.length;
- var output = { add: function (s) { value += s; } };
- for (i = 0; i < n; i++) {
- name[i].eval(context).genCSS(context, output);
- }
- return value;
- }
- var Declaration = function (name, value, important, merge, index, currentFileInfo, inline, variable) {
- this.name = name;
- this.value = (value instanceof Node) ? value : new Value([value ? new Anonymous(value) : null]);
- this.important = important ? " ".concat(important.trim()) : '';
- this.merge = merge;
- this._index = index;
- this._fileInfo = currentFileInfo;
- this.inline = inline || false;
- this.variable = (variable !== undefined) ? variable
- : (name.charAt && (name.charAt(0) === '@'));
- this.allowRoot = true;
- this.setParent(this.value, this);
- };
- Declaration.prototype = Object.assign(new Node(), {
- type: 'Declaration',
- genCSS: function (context, output) {
- output.add(this.name + (context.compress ? ':' : ': '), this.fileInfo(), this.getIndex());
- try {
- this.value.genCSS(context, output);
- }
- catch (e) {
- e.index = this._index;
- e.filename = this._fileInfo.filename;
- throw e;
- }
- output.add(this.important + ((this.inline || (context.lastRule && context.compress)) ? '' : ';'), this._fileInfo, this._index);
- },
- eval: function (context) {
- var mathBypass = false, prevMath, name = this.name, evaldValue, variable = this.variable;
- if (typeof name !== 'string') {
- // expand 'primitive' name directly to get
- // things faster (~10% for benchmark.less):
- name = (name.length === 1) && (name[0] instanceof Keyword) ?
- name[0].value : evalName(context, name);
- variable = false; // never treat expanded interpolation as new variable name
- }
- // @todo remove when parens-division is default
- if (name === 'font' && context.math === MATH$1.ALWAYS) {
- mathBypass = true;
- prevMath = context.math;
- context.math = MATH$1.PARENS_DIVISION;
- }
- try {
- context.importantScope.push({});
- evaldValue = this.value.eval(context);
- if (!this.variable && evaldValue.type === 'DetachedRuleset') {
- throw { message: 'Rulesets cannot be evaluated on a property.',
- index: this.getIndex(), filename: this.fileInfo().filename };
- }
- var important = this.important;
- var importantResult = context.importantScope.pop();
- if (!important && importantResult.important) {
- important = importantResult.important;
- }
- return new Declaration(name, evaldValue, important, this.merge, this.getIndex(), this.fileInfo(), this.inline, variable);
- }
- catch (e) {
- if (typeof e.index !== 'number') {
- e.index = this.getIndex();
- e.filename = this.fileInfo().filename;
- }
- throw e;
- }
- finally {
- if (mathBypass) {
- context.math = prevMath;
- }
- }
- },
- makeImportant: function () {
- return new Declaration(this.name, this.value, '!important', this.merge, this.getIndex(), this.fileInfo(), this.inline);
- }
- });
-
- function asComment(ctx) {
- return "/* line ".concat(ctx.debugInfo.lineNumber, ", ").concat(ctx.debugInfo.fileName, " */\n");
- }
- function asMediaQuery(ctx) {
- var filenameWithProtocol = ctx.debugInfo.fileName;
- if (!/^[a-z]+:\/\//i.test(filenameWithProtocol)) {
- filenameWithProtocol = "file://".concat(filenameWithProtocol);
- }
- return "@media -sass-debug-info{filename{font-family:".concat(filenameWithProtocol.replace(/([.:/\\])/g, function (a) {
- if (a == '\\') {
- a = '/';
- }
- return "\\".concat(a);
- }), "}line{font-family:\\00003").concat(ctx.debugInfo.lineNumber, "}}\n");
- }
- function debugInfo(context, ctx, lineSeparator) {
- var result = '';
- if (context.dumpLineNumbers && !context.compress) {
- switch (context.dumpLineNumbers) {
- case 'comments':
- result = asComment(ctx);
- break;
- case 'mediaquery':
- result = asMediaQuery(ctx);
- break;
- case 'all':
- result = asComment(ctx) + (lineSeparator || '') + asMediaQuery(ctx);
- break;
- }
- }
- return result;
- }
-
- var Comment = function (value, isLineComment, index, currentFileInfo) {
- this.value = value;
- this.isLineComment = isLineComment;
- this._index = index;
- this._fileInfo = currentFileInfo;
- this.allowRoot = true;
- };
- Comment.prototype = Object.assign(new Node(), {
- type: 'Comment',
- genCSS: function (context, output) {
- if (this.debugInfo) {
- output.add(debugInfo(context, this), this.fileInfo(), this.getIndex());
- }
- output.add(this.value);
- },
- isSilent: function (context) {
- var isCompressed = context.compress && this.value[2] !== '!';
- return this.isLineComment || isCompressed;
- }
- });
-
- var defaultFunc = {
- eval: function () {
- var v = this.value_;
- var e = this.error_;
- if (e) {
- throw e;
- }
- if (!isNullOrUndefined(v)) {
- return v ? Keyword.True : Keyword.False;
- }
- },
- value: function (v) {
- this.value_ = v;
- },
- error: function (e) {
- this.error_ = e;
- },
- reset: function () {
- this.value_ = this.error_ = null;
- }
- };
-
- var Ruleset = function (selectors, rules, strictImports, visibilityInfo) {
- this.selectors = selectors;
- this.rules = rules;
- this._lookups = {};
- this._variables = null;
- this._properties = null;
- this.strictImports = strictImports;
- this.copyVisibilityInfo(visibilityInfo);
- this.allowRoot = true;
- this.setParent(this.selectors, this);
- this.setParent(this.rules, this);
- };
- Ruleset.prototype = Object.assign(new Node(), {
- type: 'Ruleset',
- isRuleset: true,
- isRulesetLike: function () { return true; },
- accept: function (visitor) {
- if (this.paths) {
- this.paths = visitor.visitArray(this.paths, true);
- }
- else if (this.selectors) {
- this.selectors = visitor.visitArray(this.selectors);
- }
- if (this.rules && this.rules.length) {
- this.rules = visitor.visitArray(this.rules);
- }
- },
- eval: function (context) {
- var selectors;
- var selCnt;
- var selector;
- var i;
- var hasVariable;
- var hasOnePassingSelector = false;
- if (this.selectors && (selCnt = this.selectors.length)) {
- selectors = new Array(selCnt);
- defaultFunc.error({
- type: 'Syntax',
- message: 'it is currently only allowed in parametric mixin guards,'
- });
- for (i = 0; i < selCnt; i++) {
- selector = this.selectors[i].eval(context);
- for (var j = 0; j < selector.elements.length; j++) {
- if (selector.elements[j].isVariable) {
- hasVariable = true;
- break;
- }
- }
- selectors[i] = selector;
- if (selector.evaldCondition) {
- hasOnePassingSelector = true;
- }
- }
- if (hasVariable) {
- var toParseSelectors = new Array(selCnt);
- for (i = 0; i < selCnt; i++) {
- selector = selectors[i];
- toParseSelectors[i] = selector.toCSS(context);
- }
- var startingIndex = selectors[0].getIndex();
- var selectorFileInfo = selectors[0].fileInfo();
- new Parser(context, this.parse.importManager, selectorFileInfo, startingIndex).parseNode(toParseSelectors.join(','), ['selectors'], function (err, result) {
- if (result) {
- selectors = flattenArray(result);
- }
- });
- }
- defaultFunc.reset();
- }
- else {
- hasOnePassingSelector = true;
- }
- var rules = this.rules ? copyArray(this.rules) : null;
- var ruleset = new Ruleset(selectors, rules, this.strictImports, this.visibilityInfo());
- var rule;
- var subRule;
- ruleset.originalRuleset = this;
- ruleset.root = this.root;
- ruleset.firstRoot = this.firstRoot;
- ruleset.allowImports = this.allowImports;
- if (this.debugInfo) {
- ruleset.debugInfo = this.debugInfo;
- }
- if (!hasOnePassingSelector) {
- rules.length = 0;
- }
- // inherit a function registry from the frames stack when possible;
- // otherwise from the global registry
- ruleset.functionRegistry = (function (frames) {
- var i = 0;
- var n = frames.length;
- var found;
- for (; i !== n; ++i) {
- found = frames[i].functionRegistry;
- if (found) {
- return found;
- }
- }
- return functionRegistry;
- }(context.frames)).inherit();
- // push the current ruleset to the frames stack
- var ctxFrames = context.frames;
- ctxFrames.unshift(ruleset);
- // currrent selectors
- var ctxSelectors = context.selectors;
- if (!ctxSelectors) {
- context.selectors = ctxSelectors = [];
- }
- ctxSelectors.unshift(this.selectors);
- // Evaluate imports
- if (ruleset.root || ruleset.allowImports || !ruleset.strictImports) {
- ruleset.evalImports(context);
- }
- // Store the frames around mixin definitions,
- // so they can be evaluated like closures when the time comes.
- var rsRules = ruleset.rules;
- for (i = 0; (rule = rsRules[i]); i++) {
- if (rule.evalFirst) {
- rsRules[i] = rule.eval(context);
- }
- }
- var mediaBlockCount = (context.mediaBlocks && context.mediaBlocks.length) || 0;
- // Evaluate mixin calls.
- for (i = 0; (rule = rsRules[i]); i++) {
- if (rule.type === 'MixinCall') {
- /* jshint loopfunc:true */
- rules = rule.eval(context).filter(function (r) {
- if ((r instanceof Declaration) && r.variable) {
- // do not pollute the scope if the variable is
- // already there. consider returning false here
- // but we need a way to "return" variable from mixins
- return !(ruleset.variable(r.name));
- }
- return true;
- });
- rsRules.splice.apply(rsRules, [i, 1].concat(rules));
- i += rules.length - 1;
- ruleset.resetCache();
- }
- else if (rule.type === 'VariableCall') {
- /* jshint loopfunc:true */
- rules = rule.eval(context).rules.filter(function (r) {
- if ((r instanceof Declaration) && r.variable) {
- // do not pollute the scope at all
- return false;
- }
- return true;
- });
- rsRules.splice.apply(rsRules, [i, 1].concat(rules));
- i += rules.length - 1;
- ruleset.resetCache();
- }
- }
- // Evaluate everything else
- for (i = 0; (rule = rsRules[i]); i++) {
- if (!rule.evalFirst) {
- rsRules[i] = rule = rule.eval ? rule.eval(context) : rule;
- }
- }
- // Evaluate everything else
- for (i = 0; (rule = rsRules[i]); i++) {
- // for rulesets, check if it is a css guard and can be removed
- if (rule instanceof Ruleset && rule.selectors && rule.selectors.length === 1) {
- // check if it can be folded in (e.g. & where)
- if (rule.selectors[0] && rule.selectors[0].isJustParentSelector()) {
- rsRules.splice(i--, 1);
- for (var j = 0; (subRule = rule.rules[j]); j++) {
- if (subRule instanceof Node) {
- subRule.copyVisibilityInfo(rule.visibilityInfo());
- if (!(subRule instanceof Declaration) || !subRule.variable) {
- rsRules.splice(++i, 0, subRule);
- }
- }
- }
- }
- }
- }
- // Pop the stack
- ctxFrames.shift();
- ctxSelectors.shift();
- if (context.mediaBlocks) {
- for (i = mediaBlockCount; i < context.mediaBlocks.length; i++) {
- context.mediaBlocks[i].bubbleSelectors(selectors);
- }
- }
- return ruleset;
- },
- evalImports: function (context) {
- var rules = this.rules;
- var i;
- var importRules;
- if (!rules) {
- return;
- }
- for (i = 0; i < rules.length; i++) {
- if (rules[i].type === 'Import') {
- importRules = rules[i].eval(context);
- if (importRules && (importRules.length || importRules.length === 0)) {
- rules.splice.apply(rules, [i, 1].concat(importRules));
- i += importRules.length - 1;
- }
- else {
- rules.splice(i, 1, importRules);
- }
- this.resetCache();
- }
- }
- },
- makeImportant: function () {
- var result = new Ruleset(this.selectors, this.rules.map(function (r) {
- if (r.makeImportant) {
- return r.makeImportant();
- }
- else {
- return r;
- }
- }), this.strictImports, this.visibilityInfo());
- return result;
- },
- matchArgs: function (args) {
- return !args || args.length === 0;
- },
- // lets you call a css selector with a guard
- matchCondition: function (args, context) {
- var lastSelector = this.selectors[this.selectors.length - 1];
- if (!lastSelector.evaldCondition) {
- return false;
- }
- if (lastSelector.condition &&
- !lastSelector.condition.eval(new contexts.Eval(context, context.frames))) {
- return false;
- }
- return true;
- },
- resetCache: function () {
- this._rulesets = null;
- this._variables = null;
- this._properties = null;
- this._lookups = {};
- },
- variables: function () {
- if (!this._variables) {
- this._variables = !this.rules ? {} : this.rules.reduce(function (hash, r) {
- if (r instanceof Declaration && r.variable === true) {
- hash[r.name] = r;
- }
- // when evaluating variables in an import statement, imports have not been eval'd
- // so we need to go inside import statements.
- // guard against root being a string (in the case of inlined less)
- if (r.type === 'Import' && r.root && r.root.variables) {
- var vars = r.root.variables();
- for (var name_1 in vars) {
- // eslint-disable-next-line no-prototype-builtins
- if (vars.hasOwnProperty(name_1)) {
- hash[name_1] = r.root.variable(name_1);
- }
- }
- }
- return hash;
- }, {});
- }
- return this._variables;
- },
- properties: function () {
- if (!this._properties) {
- this._properties = !this.rules ? {} : this.rules.reduce(function (hash, r) {
- if (r instanceof Declaration && r.variable !== true) {
- var name_2 = (r.name.length === 1) && (r.name[0] instanceof Keyword) ?
- r.name[0].value : r.name;
- // Properties don't overwrite as they can merge
- if (!hash["$".concat(name_2)]) {
- hash["$".concat(name_2)] = [r];
- }
- else {
- hash["$".concat(name_2)].push(r);
- }
- }
- return hash;
- }, {});
- }
- return this._properties;
- },
- variable: function (name) {
- var decl = this.variables()[name];
- if (decl) {
- return this.parseValue(decl);
- }
- },
- property: function (name) {
- var decl = this.properties()[name];
- if (decl) {
- return this.parseValue(decl);
- }
- },
- lastDeclaration: function () {
- for (var i_1 = this.rules.length; i_1 > 0; i_1--) {
- var decl = this.rules[i_1 - 1];
- if (decl instanceof Declaration) {
- return this.parseValue(decl);
- }
- }
- },
- parseValue: function (toParse) {
- var self = this;
- function transformDeclaration(decl) {
- if (decl.value instanceof Anonymous && !decl.parsed) {
- if (typeof decl.value.value === 'string') {
- new Parser(this.parse.context, this.parse.importManager, decl.fileInfo(), decl.value.getIndex()).parseNode(decl.value.value, ['value', 'important'], function (err, result) {
- if (err) {
- decl.parsed = true;
- }
- if (result) {
- decl.value = result[0];
- decl.important = result[1] || '';
- decl.parsed = true;
- }
- });
- }
- else {
- decl.parsed = true;
- }
- return decl;
- }
- else {
- return decl;
- }
- }
- if (!Array.isArray(toParse)) {
- return transformDeclaration.call(self, toParse);
- }
- else {
- var nodes_1 = [];
- toParse.forEach(function (n) {
- nodes_1.push(transformDeclaration.call(self, n));
- });
- return nodes_1;
- }
- },
- rulesets: function () {
- if (!this.rules) {
- return [];
- }
- var filtRules = [];
- var rules = this.rules;
- var i;
- var rule;
- for (i = 0; (rule = rules[i]); i++) {
- if (rule.isRuleset) {
- filtRules.push(rule);
- }
- }
- return filtRules;
- },
- prependRule: function (rule) {
- var rules = this.rules;
- if (rules) {
- rules.unshift(rule);
- }
- else {
- this.rules = [rule];
- }
- this.setParent(rule, this);
- },
- find: function (selector, self, filter) {
- self = self || this;
- var rules = [];
- var match;
- var foundMixins;
- var key = selector.toCSS();
- if (key in this._lookups) {
- return this._lookups[key];
- }
- this.rulesets().forEach(function (rule) {
- if (rule !== self) {
- for (var j = 0; j < rule.selectors.length; j++) {
- match = selector.match(rule.selectors[j]);
- if (match) {
- if (selector.elements.length > match) {
- if (!filter || filter(rule)) {
- foundMixins = rule.find(new Selector(selector.elements.slice(match)), self, filter);
- for (var i_2 = 0; i_2 < foundMixins.length; ++i_2) {
- foundMixins[i_2].path.push(rule);
- }
- Array.prototype.push.apply(rules, foundMixins);
- }
- }
- else {
- rules.push({ rule: rule, path: [] });
- }
- break;
- }
- }
- }
- });
- this._lookups[key] = rules;
- return rules;
- },
- genCSS: function (context, output) {
- var i;
- var j;
- var charsetRuleNodes = [];
- var ruleNodes = [];
- var // Line number debugging
- debugInfo$1;
- var rule;
- var path;
- context.tabLevel = (context.tabLevel || 0);
- if (!this.root) {
- context.tabLevel++;
- }
- var tabRuleStr = context.compress ? '' : Array(context.tabLevel + 1).join(' ');
- var tabSetStr = context.compress ? '' : Array(context.tabLevel).join(' ');
- var sep;
- var charsetNodeIndex = 0;
- var importNodeIndex = 0;
- for (i = 0; (rule = this.rules[i]); i++) {
- if (rule instanceof Comment) {
- if (importNodeIndex === i) {
- importNodeIndex++;
- }
- ruleNodes.push(rule);
- }
- else if (rule.isCharset && rule.isCharset()) {
- ruleNodes.splice(charsetNodeIndex, 0, rule);
- charsetNodeIndex++;
- importNodeIndex++;
- }
- else if (rule.type === 'Import') {
- ruleNodes.splice(importNodeIndex, 0, rule);
- importNodeIndex++;
- }
- else {
- ruleNodes.push(rule);
- }
- }
- ruleNodes = charsetRuleNodes.concat(ruleNodes);
- // If this is the root node, we don't render
- // a selector, or {}.
- if (!this.root) {
- debugInfo$1 = debugInfo(context, this, tabSetStr);
- if (debugInfo$1) {
- output.add(debugInfo$1);
- output.add(tabSetStr);
- }
- var paths = this.paths;
- var pathCnt = paths.length;
- var pathSubCnt = void 0;
- sep = context.compress ? ',' : (",\n".concat(tabSetStr));
- for (i = 0; i < pathCnt; i++) {
- path = paths[i];
- if (!(pathSubCnt = path.length)) {
- continue;
- }
- if (i > 0) {
- output.add(sep);
- }
- context.firstSelector = true;
- path[0].genCSS(context, output);
- context.firstSelector = false;
- for (j = 1; j < pathSubCnt; j++) {
- path[j].genCSS(context, output);
- }
- }
- output.add((context.compress ? '{' : ' {\n') + tabRuleStr);
- }
- // Compile rules and rulesets
- for (i = 0; (rule = ruleNodes[i]); i++) {
- if (i + 1 === ruleNodes.length) {
- context.lastRule = true;
- }
- var currentLastRule = context.lastRule;
- if (rule.isRulesetLike(rule)) {
- context.lastRule = false;
- }
- if (rule.genCSS) {
- rule.genCSS(context, output);
- }
- else if (rule.value) {
- output.add(rule.value.toString());
- }
- context.lastRule = currentLastRule;
- if (!context.lastRule && rule.isVisible()) {
- output.add(context.compress ? '' : ("\n".concat(tabRuleStr)));
- }
- else {
- context.lastRule = false;
- }
- }
- if (!this.root) {
- output.add((context.compress ? '}' : "\n".concat(tabSetStr, "}")));
- context.tabLevel--;
- }
- if (!output.isEmpty() && !context.compress && this.firstRoot) {
- output.add('\n');
- }
- },
- joinSelectors: function (paths, context, selectors) {
- for (var s = 0; s < selectors.length; s++) {
- this.joinSelector(paths, context, selectors[s]);
- }
- },
- joinSelector: function (paths, context, selector) {
- function createParenthesis(elementsToPak, originalElement) {
- var replacementParen, j;
- if (elementsToPak.length === 0) {
- replacementParen = new Paren(elementsToPak[0]);
- }
- else {
- var insideParent = new Array(elementsToPak.length);
- for (j = 0; j < elementsToPak.length; j++) {
- insideParent[j] = new Element(null, elementsToPak[j], originalElement.isVariable, originalElement._index, originalElement._fileInfo);
- }
- replacementParen = new Paren(new Selector(insideParent));
- }
- return replacementParen;
- }
- function createSelector(containedElement, originalElement) {
- var element, selector;
- element = new Element(null, containedElement, originalElement.isVariable, originalElement._index, originalElement._fileInfo);
- selector = new Selector([element]);
- return selector;
- }
- // joins selector path from `beginningPath` with selector path in `addPath`
- // `replacedElement` contains element that is being replaced by `addPath`
- // returns concatenated path
- function addReplacementIntoPath(beginningPath, addPath, replacedElement, originalSelector) {
- var newSelectorPath, lastSelector, newJoinedSelector;
- // our new selector path
- newSelectorPath = [];
- // construct the joined selector - if & is the first thing this will be empty,
- // if not newJoinedSelector will be the last set of elements in the selector
- if (beginningPath.length > 0) {
- newSelectorPath = copyArray(beginningPath);
- lastSelector = newSelectorPath.pop();
- newJoinedSelector = originalSelector.createDerived(copyArray(lastSelector.elements));
- }
- else {
- newJoinedSelector = originalSelector.createDerived([]);
- }
- if (addPath.length > 0) {
- // /deep/ is a CSS4 selector - (removed, so should deprecate)
- // that is valid without anything in front of it
- // so if the & does not have a combinator that is "" or " " then
- // and there is a combinator on the parent, then grab that.
- // this also allows + a { & .b { .a & { ... though not sure why you would want to do that
- var combinator = replacedElement.combinator;
- var parentEl = addPath[0].elements[0];
- if (combinator.emptyOrWhitespace && !parentEl.combinator.emptyOrWhitespace) {
- combinator = parentEl.combinator;
- }
- // join the elements so far with the first part of the parent
- newJoinedSelector.elements.push(new Element(combinator, parentEl.value, replacedElement.isVariable, replacedElement._index, replacedElement._fileInfo));
- newJoinedSelector.elements = newJoinedSelector.elements.concat(addPath[0].elements.slice(1));
- }
- // now add the joined selector - but only if it is not empty
- if (newJoinedSelector.elements.length !== 0) {
- newSelectorPath.push(newJoinedSelector);
- }
- // put together the parent selectors after the join (e.g. the rest of the parent)
- if (addPath.length > 1) {
- var restOfPath = addPath.slice(1);
- restOfPath = restOfPath.map(function (selector) {
- return selector.createDerived(selector.elements, []);
- });
- newSelectorPath = newSelectorPath.concat(restOfPath);
- }
- return newSelectorPath;
- }
- // joins selector path from `beginningPath` with every selector path in `addPaths` array
- // `replacedElement` contains element that is being replaced by `addPath`
- // returns array with all concatenated paths
- function addAllReplacementsIntoPath(beginningPath, addPaths, replacedElement, originalSelector, result) {
- var j;
- for (j = 0; j < beginningPath.length; j++) {
- var newSelectorPath = addReplacementIntoPath(beginningPath[j], addPaths, replacedElement, originalSelector);
- result.push(newSelectorPath);
- }
- return result;
- }
- function mergeElementsOnToSelectors(elements, selectors) {
- var i, sel;
- if (elements.length === 0) {
- return;
- }
- if (selectors.length === 0) {
- selectors.push([new Selector(elements)]);
- return;
- }
- for (i = 0; (sel = selectors[i]); i++) {
- // if the previous thing in sel is a parent this needs to join on to it
- if (sel.length > 0) {
- sel[sel.length - 1] = sel[sel.length - 1].createDerived(sel[sel.length - 1].elements.concat(elements));
- }
- else {
- sel.push(new Selector(elements));
- }
- }
- }
- // replace all parent selectors inside `inSelector` by content of `context` array
- // resulting selectors are returned inside `paths` array
- // returns true if `inSelector` contained at least one parent selector
- function replaceParentSelector(paths, context, inSelector) {
- // The paths are [[Selector]]
- // The first list is a list of comma separated selectors
- // The inner list is a list of inheritance separated selectors
- // e.g.
- // .a, .b {
- // .c {
- // }
- // }
- // == [[.a] [.c]] [[.b] [.c]]
- //
- var i, j, k, currentElements, newSelectors, selectorsMultiplied, sel, el, hadParentSelector = false, length, lastSelector;
- function findNestedSelector(element) {
- var maybeSelector;
- if (!(element.value instanceof Paren)) {
- return null;
- }
- maybeSelector = element.value.value;
- if (!(maybeSelector instanceof Selector)) {
- return null;
- }
- return maybeSelector;
- }
- // the elements from the current selector so far
- currentElements = [];
- // the current list of new selectors to add to the path.
- // We will build it up. We initiate it with one empty selector as we "multiply" the new selectors
- // by the parents
- newSelectors = [
- []
- ];
- for (i = 0; (el = inSelector.elements[i]); i++) {
- // non parent reference elements just get added
- if (el.value !== '&') {
- var nestedSelector = findNestedSelector(el);
- if (nestedSelector !== null) {
- // merge the current list of non parent selector elements
- // on to the current list of selectors to add
- mergeElementsOnToSelectors(currentElements, newSelectors);
- var nestedPaths = [];
- var replaced = void 0;
- var replacedNewSelectors = [];
- replaced = replaceParentSelector(nestedPaths, context, nestedSelector);
- hadParentSelector = hadParentSelector || replaced;
- // the nestedPaths array should have only one member - replaceParentSelector does not multiply selectors
- for (k = 0; k < nestedPaths.length; k++) {
- var replacementSelector = createSelector(createParenthesis(nestedPaths[k], el), el);
- addAllReplacementsIntoPath(newSelectors, [replacementSelector], el, inSelector, replacedNewSelectors);
- }
- newSelectors = replacedNewSelectors;
- currentElements = [];
- }
- else {
- currentElements.push(el);
- }
- }
- else {
- hadParentSelector = true;
- // the new list of selectors to add
- selectorsMultiplied = [];
- // merge the current list of non parent selector elements
- // on to the current list of selectors to add
- mergeElementsOnToSelectors(currentElements, newSelectors);
- // loop through our current selectors
- for (j = 0; j < newSelectors.length; j++) {
- sel = newSelectors[j];
- // if we don't have any parent paths, the & might be in a mixin so that it can be used
- // whether there are parents or not
- if (context.length === 0) {
- // the combinator used on el should now be applied to the next element instead so that
- // it is not lost
- if (sel.length > 0) {
- sel[0].elements.push(new Element(el.combinator, '', el.isVariable, el._index, el._fileInfo));
- }
- selectorsMultiplied.push(sel);
- }
- else {
- // and the parent selectors
- for (k = 0; k < context.length; k++) {
- // We need to put the current selectors
- // then join the last selector's elements on to the parents selectors
- var newSelectorPath = addReplacementIntoPath(sel, context[k], el, inSelector);
- // add that to our new set of selectors
- selectorsMultiplied.push(newSelectorPath);
- }
- }
- }
- // our new selectors has been multiplied, so reset the state
- newSelectors = selectorsMultiplied;
- currentElements = [];
- }
- }
- // if we have any elements left over (e.g. .a& .b == .b)
- // add them on to all the current selectors
- mergeElementsOnToSelectors(currentElements, newSelectors);
- for (i = 0; i < newSelectors.length; i++) {
- length = newSelectors[i].length;
- if (length > 0) {
- paths.push(newSelectors[i]);
- lastSelector = newSelectors[i][length - 1];
- newSelectors[i][length - 1] = lastSelector.createDerived(lastSelector.elements, inSelector.extendList);
- }
- }
- return hadParentSelector;
- }
- function deriveSelector(visibilityInfo, deriveFrom) {
- var newSelector = deriveFrom.createDerived(deriveFrom.elements, deriveFrom.extendList, deriveFrom.evaldCondition);
- newSelector.copyVisibilityInfo(visibilityInfo);
- return newSelector;
- }
- // joinSelector code follows
- var i, newPaths, hadParentSelector;
- newPaths = [];
- hadParentSelector = replaceParentSelector(newPaths, context, selector);
- if (!hadParentSelector) {
- if (context.length > 0) {
- newPaths = [];
- for (i = 0; i < context.length; i++) {
- var concatenated = context[i].map(deriveSelector.bind(this, selector.visibilityInfo()));
- concatenated.push(selector);
- newPaths.push(concatenated);
- }
- }
- else {
- newPaths = [[selector]];
- }
- }
- for (i = 0; i < newPaths.length; i++) {
- paths.push(newPaths[i]);
- }
- }
- });
-
- var AtRule = function (name, value, rules, index, currentFileInfo, debugInfo, isRooted, visibilityInfo) {
- var i;
- this.name = name;
- this.value = (value instanceof Node) ? value : (value ? new Anonymous(value) : value);
- if (rules) {
- if (Array.isArray(rules)) {
- this.rules = rules;
- }
- else {
- this.rules = [rules];
- this.rules[0].selectors = (new Selector([], null, null, index, currentFileInfo)).createEmptySelectors();
- }
- for (i = 0; i < this.rules.length; i++) {
- this.rules[i].allowImports = true;
- }
- this.setParent(this.rules, this);
- }
- this._index = index;
- this._fileInfo = currentFileInfo;
- this.debugInfo = debugInfo;
- this.isRooted = isRooted || false;
- this.copyVisibilityInfo(visibilityInfo);
- this.allowRoot = true;
- };
- AtRule.prototype = Object.assign(new Node(), {
- type: 'AtRule',
- accept: function (visitor) {
- var value = this.value, rules = this.rules;
- if (rules) {
- this.rules = visitor.visitArray(rules);
- }
- if (value) {
- this.value = visitor.visit(value);
- }
- },
- isRulesetLike: function () {
- return this.rules || !this.isCharset();
- },
- isCharset: function () {
- return '@charset' === this.name;
- },
- genCSS: function (context, output) {
- var value = this.value, rules = this.rules;
- output.add(this.name, this.fileInfo(), this.getIndex());
- if (value) {
- output.add(' ');
- value.genCSS(context, output);
- }
- if (rules) {
- this.outputRuleset(context, output, rules);
- }
- else {
- output.add(';');
- }
- },
- eval: function (context) {
- var mediaPathBackup, mediaBlocksBackup, value = this.value, rules = this.rules;
- // media stored inside other atrule should not bubble over it
- // backpup media bubbling information
- mediaPathBackup = context.mediaPath;
- mediaBlocksBackup = context.mediaBlocks;
- // deleted media bubbling information
- context.mediaPath = [];
- context.mediaBlocks = [];
- if (value) {
- value = value.eval(context);
- }
- if (rules) {
- // assuming that there is only one rule at this point - that is how parser constructs the rule
- rules = [rules[0].eval(context)];
- rules[0].root = true;
- }
- // restore media bubbling information
- context.mediaPath = mediaPathBackup;
- context.mediaBlocks = mediaBlocksBackup;
- return new AtRule(this.name, value, rules, this.getIndex(), this.fileInfo(), this.debugInfo, this.isRooted, this.visibilityInfo());
- },
- variable: function (name) {
- if (this.rules) {
- // assuming that there is only one rule at this point - that is how parser constructs the rule
- return Ruleset.prototype.variable.call(this.rules[0], name);
- }
- },
- find: function () {
- if (this.rules) {
- // assuming that there is only one rule at this point - that is how parser constructs the rule
- return Ruleset.prototype.find.apply(this.rules[0], arguments);
- }
- },
- rulesets: function () {
- if (this.rules) {
- // assuming that there is only one rule at this point - that is how parser constructs the rule
- return Ruleset.prototype.rulesets.apply(this.rules[0]);
- }
- },
- outputRuleset: function (context, output, rules) {
- var ruleCnt = rules.length;
- var i;
- context.tabLevel = (context.tabLevel | 0) + 1;
- // Compressed
- if (context.compress) {
- output.add('{');
- for (i = 0; i < ruleCnt; i++) {
- rules[i].genCSS(context, output);
- }
- output.add('}');
- context.tabLevel--;
- return;
- }
- // Non-compressed
- var tabSetStr = "\n".concat(Array(context.tabLevel).join(' ')), tabRuleStr = "".concat(tabSetStr, " ");
- if (!ruleCnt) {
- output.add(" {".concat(tabSetStr, "}"));
- }
- else {
- output.add(" {".concat(tabRuleStr));
- rules[0].genCSS(context, output);
- for (i = 1; i < ruleCnt; i++) {
- output.add(tabRuleStr);
- rules[i].genCSS(context, output);
- }
- output.add("".concat(tabSetStr, "}"));
- }
- context.tabLevel--;
- }
- });
-
- var DetachedRuleset = function (ruleset, frames) {
- this.ruleset = ruleset;
- this.frames = frames;
- this.setParent(this.ruleset, this);
- };
- DetachedRuleset.prototype = Object.assign(new Node(), {
- type: 'DetachedRuleset',
- evalFirst: true,
- accept: function (visitor) {
- this.ruleset = visitor.visit(this.ruleset);
- },
- eval: function (context) {
- var frames = this.frames || copyArray(context.frames);
- return new DetachedRuleset(this.ruleset, frames);
- },
- callEval: function (context) {
- return this.ruleset.eval(this.frames ? new contexts.Eval(context, this.frames.concat(context.frames)) : context);
- }
- });
-
- var Unit = function (numerator, denominator, backupUnit) {
- this.numerator = numerator ? copyArray(numerator).sort() : [];
- this.denominator = denominator ? copyArray(denominator).sort() : [];
- if (backupUnit) {
- this.backupUnit = backupUnit;
- }
- else if (numerator && numerator.length) {
- this.backupUnit = numerator[0];
- }
- };
- Unit.prototype = Object.assign(new Node(), {
- type: 'Unit',
- clone: function () {
- return new Unit(copyArray(this.numerator), copyArray(this.denominator), this.backupUnit);
- },
- genCSS: function (context, output) {
- // Dimension checks the unit is singular and throws an error if in strict math mode.
- var strictUnits = context && context.strictUnits;
- if (this.numerator.length === 1) {
- output.add(this.numerator[0]); // the ideal situation
- }
- else if (!strictUnits && this.backupUnit) {
- output.add(this.backupUnit);
- }
- else if (!strictUnits && this.denominator.length) {
- output.add(this.denominator[0]);
- }
- },
- toString: function () {
- var i, returnStr = this.numerator.join('*');
- for (i = 0; i < this.denominator.length; i++) {
- returnStr += "/".concat(this.denominator[i]);
- }
- return returnStr;
- },
- compare: function (other) {
- return this.is(other.toString()) ? 0 : undefined;
- },
- is: function (unitString) {
- return this.toString().toUpperCase() === unitString.toUpperCase();
- },
- isLength: function () {
- return RegExp('^(px|em|ex|ch|rem|in|cm|mm|pc|pt|ex|vw|vh|vmin|vmax)$', 'gi').test(this.toCSS());
- },
- isEmpty: function () {
- return this.numerator.length === 0 && this.denominator.length === 0;
- },
- isSingular: function () {
- return this.numerator.length <= 1 && this.denominator.length === 0;
- },
- map: function (callback) {
- var i;
- for (i = 0; i < this.numerator.length; i++) {
- this.numerator[i] = callback(this.numerator[i], false);
- }
- for (i = 0; i < this.denominator.length; i++) {
- this.denominator[i] = callback(this.denominator[i], true);
- }
- },
- usedUnits: function () {
- var group;
- var result = {};
- var mapUnit;
- var groupName;
- mapUnit = function (atomicUnit) {
- // eslint-disable-next-line no-prototype-builtins
- if (group.hasOwnProperty(atomicUnit) && !result[groupName]) {
- result[groupName] = atomicUnit;
- }
- return atomicUnit;
- };
- for (groupName in unitConversions) {
- // eslint-disable-next-line no-prototype-builtins
- if (unitConversions.hasOwnProperty(groupName)) {
- group = unitConversions[groupName];
- this.map(mapUnit);
- }
- }
- return result;
- },
- cancel: function () {
- var counter = {};
- var atomicUnit;
- var i;
- for (i = 0; i < this.numerator.length; i++) {
- atomicUnit = this.numerator[i];
- counter[atomicUnit] = (counter[atomicUnit] || 0) + 1;
- }
- for (i = 0; i < this.denominator.length; i++) {
- atomicUnit = this.denominator[i];
- counter[atomicUnit] = (counter[atomicUnit] || 0) - 1;
- }
- this.numerator = [];
- this.denominator = [];
- for (atomicUnit in counter) {
- // eslint-disable-next-line no-prototype-builtins
- if (counter.hasOwnProperty(atomicUnit)) {
- var count = counter[atomicUnit];
- if (count > 0) {
- for (i = 0; i < count; i++) {
- this.numerator.push(atomicUnit);
- }
- }
- else if (count < 0) {
- for (i = 0; i < -count; i++) {
- this.denominator.push(atomicUnit);
- }
- }
- }
- }
- this.numerator.sort();
- this.denominator.sort();
- }
- });
-
- /* eslint-disable no-prototype-builtins */
- //
- // A number with a unit
- //
- var Dimension = function (value, unit) {
- this.value = parseFloat(value);
- if (isNaN(this.value)) {
- throw new Error('Dimension is not a number.');
- }
- this.unit = (unit && unit instanceof Unit) ? unit :
- new Unit(unit ? [unit] : undefined);
- this.setParent(this.unit, this);
- };
- Dimension.prototype = Object.assign(new Node(), {
- type: 'Dimension',
- accept: function (visitor) {
- this.unit = visitor.visit(this.unit);
- },
- // remove when Nodes have JSDoc types
- // eslint-disable-next-line no-unused-vars
- eval: function (context) {
- return this;
- },
- toColor: function () {
- return new Color([this.value, this.value, this.value]);
- },
- genCSS: function (context, output) {
- if ((context && context.strictUnits) && !this.unit.isSingular()) {
- throw new Error("Multiple units in dimension. Correct the units or use the unit function. Bad unit: ".concat(this.unit.toString()));
- }
- var value = this.fround(context, this.value);
- var strValue = String(value);
- if (value !== 0 && value < 0.000001 && value > -0.000001) {
- // would be output 1e-6 etc.
- strValue = value.toFixed(20).replace(/0+$/, '');
- }
- if (context && context.compress) {
- // Zero values doesn't need a unit
- if (value === 0 && this.unit.isLength()) {
- output.add(strValue);
- return;
- }
- // Float values doesn't need a leading zero
- if (value > 0 && value < 1) {
- strValue = (strValue).substr(1);
- }
- }
- output.add(strValue);
- this.unit.genCSS(context, output);
- },
- // In an operation between two Dimensions,
- // we default to the first Dimension's unit,
- // so `1px + 2` will yield `3px`.
- operate: function (context, op, other) {
- /* jshint noempty:false */
- var value = this._operate(context, op, this.value, other.value);
- var unit = this.unit.clone();
- if (op === '+' || op === '-') {
- if (unit.numerator.length === 0 && unit.denominator.length === 0) {
- unit = other.unit.clone();
- if (this.unit.backupUnit) {
- unit.backupUnit = this.unit.backupUnit;
- }
- }
- else if (other.unit.numerator.length === 0 && unit.denominator.length === 0) ;
- else {
- other = other.convertTo(this.unit.usedUnits());
- if (context.strictUnits && other.unit.toString() !== unit.toString()) {
- throw new Error('Incompatible units. Change the units or use the unit function. '
- + "Bad units: '".concat(unit.toString(), "' and '").concat(other.unit.toString(), "'."));
- }
- value = this._operate(context, op, this.value, other.value);
- }
- }
- else if (op === '*') {
- unit.numerator = unit.numerator.concat(other.unit.numerator).sort();
- unit.denominator = unit.denominator.concat(other.unit.denominator).sort();
- unit.cancel();
- }
- else if (op === '/') {
- unit.numerator = unit.numerator.concat(other.unit.denominator).sort();
- unit.denominator = unit.denominator.concat(other.unit.numerator).sort();
- unit.cancel();
- }
- return new Dimension(value, unit);
- },
- compare: function (other) {
- var a, b;
- if (!(other instanceof Dimension)) {
- return undefined;
- }
- if (this.unit.isEmpty() || other.unit.isEmpty()) {
- a = this;
- b = other;
- }
- else {
- a = this.unify();
- b = other.unify();
- if (a.unit.compare(b.unit) !== 0) {
- return undefined;
- }
- }
- return Node.numericCompare(a.value, b.value);
- },
- unify: function () {
- return this.convertTo({ length: 'px', duration: 's', angle: 'rad' });
- },
- convertTo: function (conversions) {
- var value = this.value;
- var unit = this.unit.clone();
- var i;
- var groupName;
- var group;
- var targetUnit;
- var derivedConversions = {};
- var applyUnit;
- if (typeof conversions === 'string') {
- for (i in unitConversions) {
- if (unitConversions[i].hasOwnProperty(conversions)) {
- derivedConversions = {};
- derivedConversions[i] = conversions;
- }
- }
- conversions = derivedConversions;
- }
- applyUnit = function (atomicUnit, denominator) {
- if (group.hasOwnProperty(atomicUnit)) {
- if (denominator) {
- value = value / (group[atomicUnit] / group[targetUnit]);
- }
- else {
- value = value * (group[atomicUnit] / group[targetUnit]);
- }
- return targetUnit;
- }
- return atomicUnit;
- };
- for (groupName in conversions) {
- if (conversions.hasOwnProperty(groupName)) {
- targetUnit = conversions[groupName];
- group = unitConversions[groupName];
- unit.map(applyUnit);
- }
- }
- unit.cancel();
- return new Dimension(value, unit);
- }
- });
-
- var MATH = Math$1;
- var Operation = function (op, operands, isSpaced) {
- this.op = op.trim();
- this.operands = operands;
- this.isSpaced = isSpaced;
- };
- Operation.prototype = Object.assign(new Node(), {
- type: 'Operation',
- accept: function (visitor) {
- this.operands = visitor.visitArray(this.operands);
- },
- eval: function (context) {
- var a = this.operands[0].eval(context), b = this.operands[1].eval(context), op;
- if (context.isMathOn(this.op)) {
- op = this.op === './' ? '/' : this.op;
- if (a instanceof Dimension && b instanceof Color) {
- a = a.toColor();
- }
- if (b instanceof Dimension && a instanceof Color) {
- b = b.toColor();
- }
- if (!a.operate || !b.operate) {
- if ((a instanceof Operation || b instanceof Operation)
- && a.op === '/' && context.math === MATH.PARENS_DIVISION) {
- return new Operation(this.op, [a, b], this.isSpaced);
- }
- throw { type: 'Operation',
- message: 'Operation on an invalid type' };
- }
- return a.operate(context, op, b);
- }
- else {
- return new Operation(this.op, [a, b], this.isSpaced);
- }
- },
- genCSS: function (context, output) {
- this.operands[0].genCSS(context, output);
- if (this.isSpaced) {
- output.add(' ');
- }
- output.add(this.op);
- if (this.isSpaced) {
- output.add(' ');
- }
- this.operands[1].genCSS(context, output);
- }
- });
-
- var Expression = function (value, noSpacing) {
- this.value = value;
- this.noSpacing = noSpacing;
- if (!value) {
- throw new Error('Expression requires an array parameter');
- }
- };
- Expression.prototype = Object.assign(new Node(), {
- type: 'Expression',
- accept: function (visitor) {
- this.value = visitor.visitArray(this.value);
- },
- eval: function (context) {
- var returnValue;
- var mathOn = context.isMathOn();
- var inParenthesis = this.parens;
- var doubleParen = false;
- if (inParenthesis) {
- context.inParenthesis();
- }
- if (this.value.length > 1) {
- returnValue = new Expression(this.value.map(function (e) {
- if (!e.eval) {
- return e;
- }
- return e.eval(context);
- }), this.noSpacing);
- }
- else if (this.value.length === 1) {
- if (this.value[0].parens && !this.value[0].parensInOp && !context.inCalc) {
- doubleParen = true;
- }
- returnValue = this.value[0].eval(context);
- }
- else {
- returnValue = this;
- }
- if (inParenthesis) {
- context.outOfParenthesis();
- }
- if (this.parens && this.parensInOp && !mathOn && !doubleParen
- && (!(returnValue instanceof Dimension))) {
- returnValue = new Paren(returnValue);
- }
- return returnValue;
- },
- genCSS: function (context, output) {
- for (var i_1 = 0; i_1 < this.value.length; i_1++) {
- this.value[i_1].genCSS(context, output);
- if (!this.noSpacing && i_1 + 1 < this.value.length) {
- if (i_1 + 1 < this.value.length && !(this.value[i_1 + 1] instanceof Anonymous) ||
- this.value[i_1 + 1] instanceof Anonymous && this.value[i_1 + 1].value !== ',') {
- output.add(' ');
- }
- }
- }
- },
- throwAwayComments: function () {
- this.value = this.value.filter(function (v) {
- return !(v instanceof Comment);
- });
- }
- });
-
- var functionCaller = /** @class */ (function () {
- function functionCaller(name, context, index, currentFileInfo) {
- this.name = name.toLowerCase();
- this.index = index;
- this.context = context;
- this.currentFileInfo = currentFileInfo;
- this.func = context.frames[0].functionRegistry.get(this.name);
- }
- functionCaller.prototype.isValid = function () {
- return Boolean(this.func);
- };
- functionCaller.prototype.call = function (args) {
- var _this = this;
- if (!(Array.isArray(args))) {
- args = [args];
- }
- var evalArgs = this.func.evalArgs;
- if (evalArgs !== false) {
- args = args.map(function (a) { return a.eval(_this.context); });
- }
- var commentFilter = function (item) { return !(item.type === 'Comment'); };
- // This code is terrible and should be replaced as per this issue...
- // https://github.com/less/less.js/issues/2477
- args = args
- .filter(commentFilter)
- .map(function (item) {
- if (item.type === 'Expression') {
- var subNodes = item.value.filter(commentFilter);
- if (subNodes.length === 1) {
- // https://github.com/less/less.js/issues/3616
- if (item.parens && subNodes[0].op === '/') {
- return item;
- }
- return subNodes[0];
- }
- else {
- return new Expression(subNodes);
- }
- }
- return item;
- });
- if (evalArgs === false) {
- return this.func.apply(this, __spreadArray([this.context], args, false));
- }
- return this.func.apply(this, args);
- };
- return functionCaller;
- }());
-
- //
- // A function call node.
- //
- var Call = function (name, args, index, currentFileInfo) {
- this.name = name;
- this.args = args;
- this.calc = name === 'calc';
- this._index = index;
- this._fileInfo = currentFileInfo;
- };
- Call.prototype = Object.assign(new Node(), {
- type: 'Call',
- accept: function (visitor) {
- if (this.args) {
- this.args = visitor.visitArray(this.args);
- }
- },
- //
- // When evaluating a function call,
- // we either find the function in the functionRegistry,
- // in which case we call it, passing the evaluated arguments,
- // if this returns null or we cannot find the function, we
- // simply print it out as it appeared originally [2].
- //
- // The reason why we evaluate the arguments, is in the case where
- // we try to pass a variable to a function, like: `saturate(@color)`.
- // The function should receive the value, not the variable.
- //
- eval: function (context) {
- var _this = this;
- /**
- * Turn off math for calc(), and switch back on for evaluating nested functions
- */
- var currentMathContext = context.mathOn;
- context.mathOn = !this.calc;
- if (this.calc || context.inCalc) {
- context.enterCalc();
- }
- var exitCalc = function () {
- if (_this.calc || context.inCalc) {
- context.exitCalc();
- }
- context.mathOn = currentMathContext;
- };
- var result;
- var funcCaller = new functionCaller(this.name, context, this.getIndex(), this.fileInfo());
- if (funcCaller.isValid()) {
- try {
- result = funcCaller.call(this.args);
- exitCalc();
- }
- catch (e) {
- // eslint-disable-next-line no-prototype-builtins
- if (e.hasOwnProperty('line') && e.hasOwnProperty('column')) {
- throw e;
- }
- throw {
- type: e.type || 'Runtime',
- message: "Error evaluating function `".concat(this.name, "`").concat(e.message ? ": ".concat(e.message) : ''),
- index: this.getIndex(),
- filename: this.fileInfo().filename,
- line: e.lineNumber,
- column: e.columnNumber
- };
- }
- }
- if (result !== null && result !== undefined) {
- // Results that that are not nodes are cast as Anonymous nodes
- // Falsy values or booleans are returned as empty nodes
- if (!(result instanceof Node)) {
- if (!result || result === true) {
- result = new Anonymous(null);
- }
- else {
- result = new Anonymous(result.toString());
- }
- }
- result._index = this._index;
- result._fileInfo = this._fileInfo;
- return result;
- }
- var args = this.args.map(function (a) { return a.eval(context); });
- exitCalc();
- return new Call(this.name, args, this.getIndex(), this.fileInfo());
- },
- genCSS: function (context, output) {
- output.add("".concat(this.name, "("), this.fileInfo(), this.getIndex());
- for (var i_1 = 0; i_1 < this.args.length; i_1++) {
- this.args[i_1].genCSS(context, output);
- if (i_1 + 1 < this.args.length) {
- output.add(', ');
- }
- }
- output.add(')');
- }
- });
-
- var Variable = function (name, index, currentFileInfo) {
- this.name = name;
- this._index = index;
- this._fileInfo = currentFileInfo;
- };
- Variable.prototype = Object.assign(new Node(), {
- type: 'Variable',
- eval: function (context) {
- var variable, name = this.name;
- if (name.indexOf('@@') === 0) {
- name = "@".concat(new Variable(name.slice(1), this.getIndex(), this.fileInfo()).eval(context).value);
- }
- if (this.evaluating) {
- throw { type: 'Name',
- message: "Recursive variable definition for ".concat(name),
- filename: this.fileInfo().filename,
- index: this.getIndex() };
- }
- this.evaluating = true;
- variable = this.find(context.frames, function (frame) {
- var v = frame.variable(name);
- if (v) {
- if (v.important) {
- var importantScope = context.importantScope[context.importantScope.length - 1];
- importantScope.important = v.important;
- }
- // If in calc, wrap vars in a function call to cascade evaluate args first
- if (context.inCalc) {
- return (new Call('_SELF', [v.value])).eval(context);
- }
- else {
- return v.value.eval(context);
- }
- }
- });
- if (variable) {
- this.evaluating = false;
- return variable;
- }
- else {
- throw { type: 'Name',
- message: "variable ".concat(name, " is undefined"),
- filename: this.fileInfo().filename,
- index: this.getIndex() };
- }
- },
- find: function (obj, fun) {
- for (var i_1 = 0, r = void 0; i_1 < obj.length; i_1++) {
- r = fun.call(obj, obj[i_1]);
- if (r) {
- return r;
- }
- }
- return null;
- }
- });
-
- var Property = function (name, index, currentFileInfo) {
- this.name = name;
- this._index = index;
- this._fileInfo = currentFileInfo;
- };
- Property.prototype = Object.assign(new Node(), {
- type: 'Property',
- eval: function (context) {
- var property;
- var name = this.name;
- // TODO: shorten this reference
- var mergeRules = context.pluginManager.less.visitors.ToCSSVisitor.prototype._mergeRules;
- if (this.evaluating) {
- throw { type: 'Name',
- message: "Recursive property reference for ".concat(name),
- filename: this.fileInfo().filename,
- index: this.getIndex() };
- }
- this.evaluating = true;
- property = this.find(context.frames, function (frame) {
- var v;
- var vArr = frame.property(name);
- if (vArr) {
- for (var i_1 = 0; i_1 < vArr.length; i_1++) {
- v = vArr[i_1];
- vArr[i_1] = new Declaration(v.name, v.value, v.important, v.merge, v.index, v.currentFileInfo, v.inline, v.variable);
- }
- mergeRules(vArr);
- v = vArr[vArr.length - 1];
- if (v.important) {
- var importantScope = context.importantScope[context.importantScope.length - 1];
- importantScope.important = v.important;
- }
- v = v.value.eval(context);
- return v;
- }
- });
- if (property) {
- this.evaluating = false;
- return property;
- }
- else {
- throw { type: 'Name',
- message: "Property '".concat(name, "' is undefined"),
- filename: this.currentFileInfo.filename,
- index: this.index };
- }
- },
- find: function (obj, fun) {
- for (var i_2 = 0, r = void 0; i_2 < obj.length; i_2++) {
- r = fun.call(obj, obj[i_2]);
- if (r) {
- return r;
- }
- }
- return null;
- }
- });
-
- var Attribute = function (key, op, value, cif) {
- this.key = key;
- this.op = op;
- this.value = value;
- this.cif = cif;
- };
- Attribute.prototype = Object.assign(new Node(), {
- type: 'Attribute',
- eval: function (context) {
- return new Attribute(this.key.eval ? this.key.eval(context) : this.key, this.op, (this.value && this.value.eval) ? this.value.eval(context) : this.value, this.cif);
- },
- genCSS: function (context, output) {
- output.add(this.toCSS(context));
- },
- toCSS: function (context) {
- var value = this.key.toCSS ? this.key.toCSS(context) : this.key;
- if (this.op) {
- value += this.op;
- value += (this.value.toCSS ? this.value.toCSS(context) : this.value);
- }
- if (this.cif) {
- value = value + ' ' + this.cif;
- }
- return "[".concat(value, "]");
- }
- });
-
- var Quoted = function (str, content, escaped, index, currentFileInfo) {
- this.escaped = (escaped === undefined) ? true : escaped;
- this.value = content || '';
- this.quote = str.charAt(0);
- this._index = index;
- this._fileInfo = currentFileInfo;
- this.variableRegex = /@\{([\w-]+)\}/g;
- this.propRegex = /\$\{([\w-]+)\}/g;
- this.allowRoot = escaped;
- };
- Quoted.prototype = Object.assign(new Node(), {
- type: 'Quoted',
- genCSS: function (context, output) {
- if (!this.escaped) {
- output.add(this.quote, this.fileInfo(), this.getIndex());
- }
- output.add(this.value);
- if (!this.escaped) {
- output.add(this.quote);
- }
- },
- containsVariables: function () {
- return this.value.match(this.variableRegex);
- },
- eval: function (context) {
- var that = this;
- var value = this.value;
- var variableReplacement = function (_, name) {
- var v = new Variable("@".concat(name), that.getIndex(), that.fileInfo()).eval(context, true);
- return (v instanceof Quoted) ? v.value : v.toCSS();
- };
- var propertyReplacement = function (_, name) {
- var v = new Property("$".concat(name), that.getIndex(), that.fileInfo()).eval(context, true);
- return (v instanceof Quoted) ? v.value : v.toCSS();
- };
- function iterativeReplace(value, regexp, replacementFnc) {
- var evaluatedValue = value;
- do {
- value = evaluatedValue.toString();
- evaluatedValue = value.replace(regexp, replacementFnc);
- } while (value !== evaluatedValue);
- return evaluatedValue;
- }
- value = iterativeReplace(value, this.variableRegex, variableReplacement);
- value = iterativeReplace(value, this.propRegex, propertyReplacement);
- return new Quoted(this.quote + value + this.quote, value, this.escaped, this.getIndex(), this.fileInfo());
- },
- compare: function (other) {
- // when comparing quoted strings allow the quote to differ
- if (other.type === 'Quoted' && !this.escaped && !other.escaped) {
- return Node.numericCompare(this.value, other.value);
- }
- else {
- return other.toCSS && this.toCSS() === other.toCSS() ? 0 : undefined;
- }
- }
- });
-
- function escapePath(path) {
- return path.replace(/[()'"\s]/g, function (match) { return "\\".concat(match); });
- }
- var URL = function (val, index, currentFileInfo, isEvald) {
- this.value = val;
- this._index = index;
- this._fileInfo = currentFileInfo;
- this.isEvald = isEvald;
- };
- URL.prototype = Object.assign(new Node(), {
- type: 'Url',
- accept: function (visitor) {
- this.value = visitor.visit(this.value);
- },
- genCSS: function (context, output) {
- output.add('url(');
- this.value.genCSS(context, output);
- output.add(')');
- },
- eval: function (context) {
- var val = this.value.eval(context);
- var rootpath;
- if (!this.isEvald) {
- // Add the rootpath if the URL requires a rewrite
- rootpath = this.fileInfo() && this.fileInfo().rootpath;
- if (typeof rootpath === 'string' &&
- typeof val.value === 'string' &&
- context.pathRequiresRewrite(val.value)) {
- if (!val.quote) {
- rootpath = escapePath(rootpath);
- }
- val.value = context.rewritePath(val.value, rootpath);
- }
- else {
- val.value = context.normalizePath(val.value);
- }
- // Add url args if enabled
- if (context.urlArgs) {
- if (!val.value.match(/^\s*data:/)) {
- var delimiter = val.value.indexOf('?') === -1 ? '?' : '&';
- var urlArgs = delimiter + context.urlArgs;
- if (val.value.indexOf('#') !== -1) {
- val.value = val.value.replace('#', "".concat(urlArgs, "#"));
- }
- else {
- val.value += urlArgs;
- }
- }
- }
- }
- return new URL(val, this.getIndex(), this.fileInfo(), true);
- }
- });
-
- var NestableAtRulePrototype = {
- isRulesetLike: function () {
- return true;
- },
- accept: function (visitor) {
- if (this.features) {
- this.features = visitor.visit(this.features);
- }
- if (this.rules) {
- this.rules = visitor.visitArray(this.rules);
- }
- },
- evalTop: function (context) {
- var result = this;
- // Render all dependent Media blocks.
- if (context.mediaBlocks.length > 1) {
- var selectors = (new Selector([], null, null, this.getIndex(), this.fileInfo())).createEmptySelectors();
- result = new Ruleset(selectors, context.mediaBlocks);
- result.multiMedia = true;
- result.copyVisibilityInfo(this.visibilityInfo());
- this.setParent(result, this);
- }
- delete context.mediaBlocks;
- delete context.mediaPath;
- return result;
- },
- evalNested: function (context) {
- var i;
- var value;
- var path = context.mediaPath.concat([this]);
- // Extract the media-query conditions separated with `,` (OR).
- for (i = 0; i < path.length; i++) {
- if (path[i].type !== this.type) {
- context.mediaBlocks.splice(i, 1);
- return this;
- }
- value = path[i].features instanceof Value ?
- path[i].features.value : path[i].features;
- path[i] = Array.isArray(value) ? value : [value];
- }
- // Trace all permutations to generate the resulting media-query.
- //
- // (a, b and c) with nested (d, e) ->
- // a and d
- // a and e
- // b and c and d
- // b and c and e
- this.features = new Value(this.permute(path).map(function (path) {
- path = path.map(function (fragment) { return fragment.toCSS ? fragment : new Anonymous(fragment); });
- for (i = path.length - 1; i > 0; i--) {
- path.splice(i, 0, new Anonymous('and'));
- }
- return new Expression(path);
- }));
- this.setParent(this.features, this);
- // Fake a tree-node that doesn't output anything.
- return new Ruleset([], []);
- },
- permute: function (arr) {
- if (arr.length === 0) {
- return [];
- }
- else if (arr.length === 1) {
- return arr[0];
- }
- else {
- var result = [];
- var rest = this.permute(arr.slice(1));
- for (var i_1 = 0; i_1 < rest.length; i_1++) {
- for (var j = 0; j < arr[0].length; j++) {
- result.push([arr[0][j]].concat(rest[i_1]));
- }
- }
- return result;
- }
- },
- bubbleSelectors: function (selectors) {
- if (!selectors) {
- return;
- }
- this.rules = [new Ruleset(copyArray(selectors), [this.rules[0]])];
- this.setParent(this.rules, this);
- }
- };
-
- var Media = function (value, features, index, currentFileInfo, visibilityInfo) {
- this._index = index;
- this._fileInfo = currentFileInfo;
- var selectors = (new Selector([], null, null, this._index, this._fileInfo)).createEmptySelectors();
- this.features = new Value(features);
- this.rules = [new Ruleset(selectors, value)];
- this.rules[0].allowImports = true;
- this.copyVisibilityInfo(visibilityInfo);
- this.allowRoot = true;
- this.setParent(selectors, this);
- this.setParent(this.features, this);
- this.setParent(this.rules, this);
- };
- Media.prototype = Object.assign(new AtRule(), __assign(__assign({ type: 'Media' }, NestableAtRulePrototype), { genCSS: function (context, output) {
- output.add('@media ', this._fileInfo, this._index);
- this.features.genCSS(context, output);
- this.outputRuleset(context, output, this.rules);
- }, eval: function (context) {
- if (!context.mediaBlocks) {
- context.mediaBlocks = [];
- context.mediaPath = [];
- }
- var media = new Media(null, [], this._index, this._fileInfo, this.visibilityInfo());
- if (this.debugInfo) {
- this.rules[0].debugInfo = this.debugInfo;
- media.debugInfo = this.debugInfo;
- }
- media.features = this.features.eval(context);
- context.mediaPath.push(media);
- context.mediaBlocks.push(media);
- this.rules[0].functionRegistry = context.frames[0].functionRegistry.inherit();
- context.frames.unshift(this.rules[0]);
- media.rules = [this.rules[0].eval(context)];
- context.frames.shift();
- context.mediaPath.pop();
- return context.mediaPath.length === 0 ? media.evalTop(context) :
- media.evalNested(context);
- } }));
-
- //
- // CSS @import node
- //
- // The general strategy here is that we don't want to wait
- // for the parsing to be completed, before we start importing
- // the file. That's because in the context of a browser,
- // most of the time will be spent waiting for the server to respond.
- //
- // On creation, we push the import path to our import queue, though
- // `import,push`, we also pass it a callback, which it'll call once
- // the file has been fetched, and parsed.
- //
- var Import = function (path, features, options, index, currentFileInfo, visibilityInfo) {
- this.options = options;
- this._index = index;
- this._fileInfo = currentFileInfo;
- this.path = path;
- this.features = features;
- this.allowRoot = true;
- if (this.options.less !== undefined || this.options.inline) {
- this.css = !this.options.less || this.options.inline;
- }
- else {
- var pathValue = this.getPath();
- if (pathValue && /[#.&?]css([?;].*)?$/.test(pathValue)) {
- this.css = true;
- }
- }
- this.copyVisibilityInfo(visibilityInfo);
- this.setParent(this.features, this);
- this.setParent(this.path, this);
- };
- Import.prototype = Object.assign(new Node(), {
- type: 'Import',
- accept: function (visitor) {
- if (this.features) {
- this.features = visitor.visit(this.features);
- }
- this.path = visitor.visit(this.path);
- if (!this.options.isPlugin && !this.options.inline && this.root) {
- this.root = visitor.visit(this.root);
- }
- },
- genCSS: function (context, output) {
- if (this.css && this.path._fileInfo.reference === undefined) {
- output.add('@import ', this._fileInfo, this._index);
- this.path.genCSS(context, output);
- if (this.features) {
- output.add(' ');
- this.features.genCSS(context, output);
- }
- output.add(';');
- }
- },
- getPath: function () {
- return (this.path instanceof URL) ?
- this.path.value.value : this.path.value;
- },
- isVariableImport: function () {
- var path = this.path;
- if (path instanceof URL) {
- path = path.value;
- }
- if (path instanceof Quoted) {
- return path.containsVariables();
- }
- return true;
- },
- evalForImport: function (context) {
- var path = this.path;
- if (path instanceof URL) {
- path = path.value;
- }
- return new Import(path.eval(context), this.features, this.options, this._index, this._fileInfo, this.visibilityInfo());
- },
- evalPath: function (context) {
- var path = this.path.eval(context);
- var fileInfo = this._fileInfo;
- if (!(path instanceof URL)) {
- // Add the rootpath if the URL requires a rewrite
- var pathValue = path.value;
- if (fileInfo &&
- pathValue &&
- context.pathRequiresRewrite(pathValue)) {
- path.value = context.rewritePath(pathValue, fileInfo.rootpath);
- }
- else {
- path.value = context.normalizePath(path.value);
- }
- }
- return path;
- },
- eval: function (context) {
- var result = this.doEval(context);
- if (this.options.reference || this.blocksVisibility()) {
- if (result.length || result.length === 0) {
- result.forEach(function (node) {
- node.addVisibilityBlock();
- });
- }
- else {
- result.addVisibilityBlock();
- }
- }
- return result;
- },
- doEval: function (context) {
- var ruleset;
- var registry;
- var features = this.features && this.features.eval(context);
- if (this.options.isPlugin) {
- if (this.root && this.root.eval) {
- try {
- this.root.eval(context);
- }
- catch (e) {
- e.message = 'Plugin error during evaluation';
- throw new LessError(e, this.root.imports, this.root.filename);
- }
- }
- registry = context.frames[0] && context.frames[0].functionRegistry;
- if (registry && this.root && this.root.functions) {
- registry.addMultiple(this.root.functions);
- }
- return [];
- }
- if (this.skip) {
- if (typeof this.skip === 'function') {
- this.skip = this.skip();
- }
- if (this.skip) {
- return [];
- }
- }
- if (this.options.inline) {
- var contents = new Anonymous(this.root, 0, {
- filename: this.importedFilename,
- reference: this.path._fileInfo && this.path._fileInfo.reference
- }, true, true);
- return this.features ? new Media([contents], this.features.value) : [contents];
- }
- else if (this.css) {
- var newImport = new Import(this.evalPath(context), features, this.options, this._index);
- if (!newImport.css && this.error) {
- throw this.error;
- }
- return newImport;
- }
- else if (this.root) {
- ruleset = new Ruleset(null, copyArray(this.root.rules));
- ruleset.evalImports(context);
- return this.features ? new Media(ruleset.rules, this.features.value) : ruleset.rules;
- }
- else {
- return [];
- }
- }
- });
-
- var JsEvalNode = function () { };
- JsEvalNode.prototype = Object.assign(new Node(), {
- evaluateJavaScript: function (expression, context) {
- var result;
- var that = this;
- var evalContext = {};
- if (!context.javascriptEnabled) {
- throw { message: 'Inline JavaScript is not enabled. Is it set in your options?',
- filename: this.fileInfo().filename,
- index: this.getIndex() };
- }
- expression = expression.replace(/@\{([\w-]+)\}/g, function (_, name) {
- return that.jsify(new Variable("@".concat(name), that.getIndex(), that.fileInfo()).eval(context));
- });
- try {
- expression = new Function("return (".concat(expression, ")"));
- }
- catch (e) {
- throw { message: "JavaScript evaluation error: ".concat(e.message, " from `").concat(expression, "`"),
- filename: this.fileInfo().filename,
- index: this.getIndex() };
- }
- var variables = context.frames[0].variables();
- for (var k in variables) {
- // eslint-disable-next-line no-prototype-builtins
- if (variables.hasOwnProperty(k)) {
- evalContext[k.slice(1)] = {
- value: variables[k].value,
- toJS: function () {
- return this.value.eval(context).toCSS();
- }
- };
- }
- }
- try {
- result = expression.call(evalContext);
- }
- catch (e) {
- throw { message: "JavaScript evaluation error: '".concat(e.name, ": ").concat(e.message.replace(/["]/g, '\''), "'"),
- filename: this.fileInfo().filename,
- index: this.getIndex() };
- }
- return result;
- },
- jsify: function (obj) {
- if (Array.isArray(obj.value) && (obj.value.length > 1)) {
- return "[".concat(obj.value.map(function (v) { return v.toCSS(); }).join(', '), "]");
- }
- else {
- return obj.toCSS();
- }
- }
- });
-
- var JavaScript = function (string, escaped, index, currentFileInfo) {
- this.escaped = escaped;
- this.expression = string;
- this._index = index;
- this._fileInfo = currentFileInfo;
- };
- JavaScript.prototype = Object.assign(new JsEvalNode(), {
- type: 'JavaScript',
- eval: function (context) {
- var result = this.evaluateJavaScript(this.expression, context);
- var type = typeof result;
- if (type === 'number' && !isNaN(result)) {
- return new Dimension(result);
- }
- else if (type === 'string') {
- return new Quoted("\"".concat(result, "\""), result, this.escaped, this._index);
- }
- else if (Array.isArray(result)) {
- return new Anonymous(result.join(', '));
- }
- else {
- return new Anonymous(result);
- }
- }
- });
-
- var Assignment = function (key, val) {
- this.key = key;
- this.value = val;
- };
- Assignment.prototype = Object.assign(new Node(), {
- type: 'Assignment',
- accept: function (visitor) {
- this.value = visitor.visit(this.value);
- },
- eval: function (context) {
- if (this.value.eval) {
- return new Assignment(this.key, this.value.eval(context));
- }
- return this;
- },
- genCSS: function (context, output) {
- output.add("".concat(this.key, "="));
- if (this.value.genCSS) {
- this.value.genCSS(context, output);
- }
- else {
- output.add(this.value);
- }
- }
- });
-
- var Condition = function (op, l, r, i, negate) {
- this.op = op.trim();
- this.lvalue = l;
- this.rvalue = r;
- this._index = i;
- this.negate = negate;
- };
- Condition.prototype = Object.assign(new Node(), {
- type: 'Condition',
- accept: function (visitor) {
- this.lvalue = visitor.visit(this.lvalue);
- this.rvalue = visitor.visit(this.rvalue);
- },
- eval: function (context) {
- var result = (function (op, a, b) {
- switch (op) {
- case 'and': return a && b;
- case 'or': return a || b;
- default:
- switch (Node.compare(a, b)) {
- case -1:
- return op === '<' || op === '=<' || op === '<=';
- case 0:
- return op === '=' || op === '>=' || op === '=<' || op === '<=';
- case 1:
- return op === '>' || op === '>=';
- default:
- return false;
- }
- }
- })(this.op, this.lvalue.eval(context), this.rvalue.eval(context));
- return this.negate ? !result : result;
- }
- });
-
- var QueryInParens = function (op, l, m, op2, r, i) {
- this.op = op.trim();
- this.lvalue = l;
- this.mvalue = m;
- this.op2 = op2 ? op2.trim() : null;
- this.rvalue = r;
- this._index = i;
- this.mvalues = [];
- };
- QueryInParens.prototype = Object.assign(new Node(), {
- type: 'QueryInParens',
- accept: function (visitor) {
- this.lvalue = visitor.visit(this.lvalue);
- this.mvalue = visitor.visit(this.mvalue);
- if (this.rvalue) {
- this.rvalue = visitor.visit(this.rvalue);
- }
- },
- eval: function (context) {
- this.lvalue = this.lvalue.eval(context);
- var variableDeclaration;
- var rule;
- for (var i_1 = 0; (rule = context.frames[i_1]); i_1++) {
- if (rule.type === 'Ruleset') {
- variableDeclaration = rule.rules.find(function (r) {
- if ((r instanceof Declaration) && r.variable) {
- return true;
- }
- return false;
- });
- if (variableDeclaration) {
- break;
- }
- }
- }
- if (!this.mvalueCopy) {
- this.mvalueCopy = copy(this.mvalue);
- }
- if (variableDeclaration) {
- this.mvalue = this.mvalueCopy;
- this.mvalue = this.mvalue.eval(context);
- this.mvalues.push(this.mvalue);
- }
- else {
- this.mvalue = this.mvalue.eval(context);
- }
- if (this.rvalue) {
- this.rvalue = this.rvalue.eval(context);
- }
- return this;
- },
- genCSS: function (context, output) {
- this.lvalue.genCSS(context, output);
- output.add(' ' + this.op + ' ');
- if (this.mvalues.length > 0) {
- this.mvalue = this.mvalues.shift();
- }
- this.mvalue.genCSS(context, output);
- if (this.rvalue) {
- output.add(' ' + this.op2 + ' ');
- this.rvalue.genCSS(context, output);
- }
- },
- });
-
- var Container = function (value, features, index, currentFileInfo, visibilityInfo) {
- this._index = index;
- this._fileInfo = currentFileInfo;
- var selectors = (new Selector([], null, null, this._index, this._fileInfo)).createEmptySelectors();
- this.features = new Value(features);
- this.rules = [new Ruleset(selectors, value)];
- this.rules[0].allowImports = true;
- this.copyVisibilityInfo(visibilityInfo);
- this.allowRoot = true;
- this.setParent(selectors, this);
- this.setParent(this.features, this);
- this.setParent(this.rules, this);
- };
- Container.prototype = Object.assign(new AtRule(), __assign(__assign({ type: 'Container' }, NestableAtRulePrototype), { genCSS: function (context, output) {
- output.add('@container ', this._fileInfo, this._index);
- this.features.genCSS(context, output);
- this.outputRuleset(context, output, this.rules);
- }, eval: function (context) {
- if (!context.mediaBlocks) {
- context.mediaBlocks = [];
- context.mediaPath = [];
- }
- var media = new Container(null, [], this._index, this._fileInfo, this.visibilityInfo());
- if (this.debugInfo) {
- this.rules[0].debugInfo = this.debugInfo;
- media.debugInfo = this.debugInfo;
- }
- media.features = this.features.eval(context);
- context.mediaPath.push(media);
- context.mediaBlocks.push(media);
- this.rules[0].functionRegistry = context.frames[0].functionRegistry.inherit();
- context.frames.unshift(this.rules[0]);
- media.rules = [this.rules[0].eval(context)];
- context.frames.shift();
- context.mediaPath.pop();
- return context.mediaPath.length === 0 ? media.evalTop(context) :
- media.evalNested(context);
- } }));
-
- var UnicodeDescriptor = function (value) {
- this.value = value;
- };
- UnicodeDescriptor.prototype = Object.assign(new Node(), {
- type: 'UnicodeDescriptor'
- });
-
- var Negative = function (node) {
- this.value = node;
- };
- Negative.prototype = Object.assign(new Node(), {
- type: 'Negative',
- genCSS: function (context, output) {
- output.add('-');
- this.value.genCSS(context, output);
- },
- eval: function (context) {
- if (context.isMathOn()) {
- return (new Operation('*', [new Dimension(-1), this.value])).eval(context);
- }
- return new Negative(this.value.eval(context));
- }
- });
-
- var Extend = function (selector, option, index, currentFileInfo, visibilityInfo) {
- this.selector = selector;
- this.option = option;
- this.object_id = Extend.next_id++;
- this.parent_ids = [this.object_id];
- this._index = index;
- this._fileInfo = currentFileInfo;
- this.copyVisibilityInfo(visibilityInfo);
- this.allowRoot = true;
- switch (option) {
- case 'all':
- this.allowBefore = true;
- this.allowAfter = true;
- break;
- default:
- this.allowBefore = false;
- this.allowAfter = false;
- break;
- }
- this.setParent(this.selector, this);
- };
- Extend.prototype = Object.assign(new Node(), {
- type: 'Extend',
- accept: function (visitor) {
- this.selector = visitor.visit(this.selector);
- },
- eval: function (context) {
- return new Extend(this.selector.eval(context), this.option, this.getIndex(), this.fileInfo(), this.visibilityInfo());
- },
- // remove when Nodes have JSDoc types
- // eslint-disable-next-line no-unused-vars
- clone: function (context) {
- return new Extend(this.selector, this.option, this.getIndex(), this.fileInfo(), this.visibilityInfo());
- },
- // it concatenates (joins) all selectors in selector array
- findSelfSelectors: function (selectors) {
- var selfElements = [], i, selectorElements;
- for (i = 0; i < selectors.length; i++) {
- selectorElements = selectors[i].elements;
- // duplicate the logic in genCSS function inside the selector node.
- // future TODO - move both logics into the selector joiner visitor
- if (i > 0 && selectorElements.length && selectorElements[0].combinator.value === '') {
- selectorElements[0].combinator.value = ' ';
- }
- selfElements = selfElements.concat(selectors[i].elements);
- }
- this.selfSelectors = [new Selector(selfElements)];
- this.selfSelectors[0].copyVisibilityInfo(this.visibilityInfo());
- }
- });
- Extend.next_id = 0;
-
- var VariableCall = function (variable, index, currentFileInfo) {
- this.variable = variable;
- this._index = index;
- this._fileInfo = currentFileInfo;
- this.allowRoot = true;
- };
- VariableCall.prototype = Object.assign(new Node(), {
- type: 'VariableCall',
- eval: function (context) {
- var rules;
- var detachedRuleset = new Variable(this.variable, this.getIndex(), this.fileInfo()).eval(context);
- var error = new LessError({ message: "Could not evaluate variable call ".concat(this.variable) });
- if (!detachedRuleset.ruleset) {
- if (detachedRuleset.rules) {
- rules = detachedRuleset;
- }
- else if (Array.isArray(detachedRuleset)) {
- rules = new Ruleset('', detachedRuleset);
- }
- else if (Array.isArray(detachedRuleset.value)) {
- rules = new Ruleset('', detachedRuleset.value);
- }
- else {
- throw error;
- }
- detachedRuleset = new DetachedRuleset(rules);
- }
- if (detachedRuleset.ruleset) {
- return detachedRuleset.callEval(context);
- }
- throw error;
- }
- });
-
- var NamespaceValue = function (ruleCall, lookups, index, fileInfo) {
- this.value = ruleCall;
- this.lookups = lookups;
- this._index = index;
- this._fileInfo = fileInfo;
- };
- NamespaceValue.prototype = Object.assign(new Node(), {
- type: 'NamespaceValue',
- eval: function (context) {
- var i, name, rules = this.value.eval(context);
- for (i = 0; i < this.lookups.length; i++) {
- name = this.lookups[i];
- /**
- * Eval'd DRs return rulesets.
- * Eval'd mixins return rules, so let's make a ruleset if we need it.
- * We need to do this because of late parsing of values
- */
- if (Array.isArray(rules)) {
- rules = new Ruleset([new Selector()], rules);
- }
- if (name === '') {
- rules = rules.lastDeclaration();
- }
- else if (name.charAt(0) === '@') {
- if (name.charAt(1) === '@') {
- name = "@".concat(new Variable(name.substr(1)).eval(context).value);
- }
- if (rules.variables) {
- rules = rules.variable(name);
- }
- if (!rules) {
- throw { type: 'Name',
- message: "variable ".concat(name, " not found"),
- filename: this.fileInfo().filename,
- index: this.getIndex() };
- }
- }
- else {
- if (name.substring(0, 2) === '$@') {
- name = "$".concat(new Variable(name.substr(1)).eval(context).value);
- }
- else {
- name = name.charAt(0) === '$' ? name : "$".concat(name);
- }
- if (rules.properties) {
- rules = rules.property(name);
- }
- if (!rules) {
- throw { type: 'Name',
- message: "property \"".concat(name.substr(1), "\" not found"),
- filename: this.fileInfo().filename,
- index: this.getIndex() };
- }
- // Properties are an array of values, since a ruleset can have multiple props.
- // We pick the last one (the "cascaded" value)
- rules = rules[rules.length - 1];
- }
- if (rules.value) {
- rules = rules.eval(context).value;
- }
- if (rules.ruleset) {
- rules = rules.ruleset.eval(context);
- }
- }
- return rules;
- }
- });
-
- var Definition = function (name, params, rules, condition, variadic, frames, visibilityInfo) {
- this.name = name || 'anonymous mixin';
- this.selectors = [new Selector([new Element(null, name, false, this._index, this._fileInfo)])];
- this.params = params;
- this.condition = condition;
- this.variadic = variadic;
- this.arity = params.length;
- this.rules = rules;
- this._lookups = {};
- var optionalParameters = [];
- this.required = params.reduce(function (count, p) {
- if (!p.name || (p.name && !p.value)) {
- return count + 1;
- }
- else {
- optionalParameters.push(p.name);
- return count;
- }
- }, 0);
- this.optionalParameters = optionalParameters;
- this.frames = frames;
- this.copyVisibilityInfo(visibilityInfo);
- this.allowRoot = true;
- };
- Definition.prototype = Object.assign(new Ruleset(), {
- type: 'MixinDefinition',
- evalFirst: true,
- accept: function (visitor) {
- if (this.params && this.params.length) {
- this.params = visitor.visitArray(this.params);
- }
- this.rules = visitor.visitArray(this.rules);
- if (this.condition) {
- this.condition = visitor.visit(this.condition);
- }
- },
- evalParams: function (context, mixinEnv, args, evaldArguments) {
- /* jshint boss:true */
- var frame = new Ruleset(null, null);
- var varargs;
- var arg;
- var params = copyArray(this.params);
- var i;
- var j;
- var val;
- var name;
- var isNamedFound;
- var argIndex;
- var argsLength = 0;
- if (mixinEnv.frames && mixinEnv.frames[0] && mixinEnv.frames[0].functionRegistry) {
- frame.functionRegistry = mixinEnv.frames[0].functionRegistry.inherit();
- }
- mixinEnv = new contexts.Eval(mixinEnv, [frame].concat(mixinEnv.frames));
- if (args) {
- args = copyArray(args);
- argsLength = args.length;
- for (i = 0; i < argsLength; i++) {
- arg = args[i];
- if (name = (arg && arg.name)) {
- isNamedFound = false;
- for (j = 0; j < params.length; j++) {
- if (!evaldArguments[j] && name === params[j].name) {
- evaldArguments[j] = arg.value.eval(context);
- frame.prependRule(new Declaration(name, arg.value.eval(context)));
- isNamedFound = true;
- break;
- }
- }
- if (isNamedFound) {
- args.splice(i, 1);
- i--;
- continue;
- }
- else {
- throw { type: 'Runtime', message: "Named argument for ".concat(this.name, " ").concat(args[i].name, " not found") };
- }
- }
- }
- }
- argIndex = 0;
- for (i = 0; i < params.length; i++) {
- if (evaldArguments[i]) {
- continue;
- }
- arg = args && args[argIndex];
- if (name = params[i].name) {
- if (params[i].variadic) {
- varargs = [];
- for (j = argIndex; j < argsLength; j++) {
- varargs.push(args[j].value.eval(context));
- }
- frame.prependRule(new Declaration(name, new Expression(varargs).eval(context)));
- }
- else {
- val = arg && arg.value;
- if (val) {
- // This was a mixin call, pass in a detached ruleset of it's eval'd rules
- if (Array.isArray(val)) {
- val = new DetachedRuleset(new Ruleset('', val));
- }
- else {
- val = val.eval(context);
- }
- }
- else if (params[i].value) {
- val = params[i].value.eval(mixinEnv);
- frame.resetCache();
- }
- else {
- throw { type: 'Runtime', message: "wrong number of arguments for ".concat(this.name, " (").concat(argsLength, " for ").concat(this.arity, ")") };
- }
- frame.prependRule(new Declaration(name, val));
- evaldArguments[i] = val;
- }
- }
- if (params[i].variadic && args) {
- for (j = argIndex; j < argsLength; j++) {
- evaldArguments[j] = args[j].value.eval(context);
- }
- }
- argIndex++;
- }
- return frame;
- },
- makeImportant: function () {
- var rules = !this.rules ? this.rules : this.rules.map(function (r) {
- if (r.makeImportant) {
- return r.makeImportant(true);
- }
- else {
- return r;
- }
- });
- var result = new Definition(this.name, this.params, rules, this.condition, this.variadic, this.frames);
- return result;
- },
- eval: function (context) {
- return new Definition(this.name, this.params, this.rules, this.condition, this.variadic, this.frames || copyArray(context.frames));
- },
- evalCall: function (context, args, important) {
- var _arguments = [];
- var mixinFrames = this.frames ? this.frames.concat(context.frames) : context.frames;
- var frame = this.evalParams(context, new contexts.Eval(context, mixinFrames), args, _arguments);
- var rules;
- var ruleset;
- frame.prependRule(new Declaration('@arguments', new Expression(_arguments).eval(context)));
- rules = copyArray(this.rules);
- ruleset = new Ruleset(null, rules);
- ruleset.originalRuleset = this;
- ruleset = ruleset.eval(new contexts.Eval(context, [this, frame].concat(mixinFrames)));
- if (important) {
- ruleset = ruleset.makeImportant();
- }
- return ruleset;
- },
- matchCondition: function (args, context) {
- if (this.condition && !this.condition.eval(new contexts.Eval(context, [this.evalParams(context, /* the parameter variables */ new contexts.Eval(context, this.frames ? this.frames.concat(context.frames) : context.frames), args, [])]
- .concat(this.frames || []) // the parent namespace/mixin frames
- .concat(context.frames)))) { // the current environment frames
- return false;
- }
- return true;
- },
- matchArgs: function (args, context) {
- var allArgsCnt = (args && args.length) || 0;
- var len;
- var optionalParameters = this.optionalParameters;
- var requiredArgsCnt = !args ? 0 : args.reduce(function (count, p) {
- if (optionalParameters.indexOf(p.name) < 0) {
- return count + 1;
- }
- else {
- return count;
- }
- }, 0);
- if (!this.variadic) {
- if (requiredArgsCnt < this.required) {
- return false;
- }
- if (allArgsCnt > this.params.length) {
- return false;
- }
- }
- else {
- if (requiredArgsCnt < (this.required - 1)) {
- return false;
- }
- }
- // check patterns
- len = Math.min(requiredArgsCnt, this.arity);
- for (var i_1 = 0; i_1 < len; i_1++) {
- if (!this.params[i_1].name && !this.params[i_1].variadic) {
- if (args[i_1].value.eval(context).toCSS() != this.params[i_1].value.eval(context).toCSS()) {
- return false;
- }
- }
- }
- return true;
- }
- });
-
- var MixinCall = function (elements, args, index, currentFileInfo, important) {
- this.selector = new Selector(elements);
- this.arguments = args || [];
- this._index = index;
- this._fileInfo = currentFileInfo;
- this.important = important;
- this.allowRoot = true;
- this.setParent(this.selector, this);
- };
- MixinCall.prototype = Object.assign(new Node(), {
- type: 'MixinCall',
- accept: function (visitor) {
- if (this.selector) {
- this.selector = visitor.visit(this.selector);
- }
- if (this.arguments.length) {
- this.arguments = visitor.visitArray(this.arguments);
- }
- },
- eval: function (context) {
- var mixins;
- var mixin;
- var mixinPath;
- var args = [];
- var arg;
- var argValue;
- var rules = [];
- var match = false;
- var i;
- var m;
- var f;
- var isRecursive;
- var isOneFound;
- var candidates = [];
- var candidate;
- var conditionResult = [];
- var defaultResult;
- var defFalseEitherCase = -1;
- var defNone = 0;
- var defTrue = 1;
- var defFalse = 2;
- var count;
- var originalRuleset;
- var noArgumentsFilter;
- this.selector = this.selector.eval(context);
- function calcDefGroup(mixin, mixinPath) {
- var f, p, namespace;
- for (f = 0; f < 2; f++) {
- conditionResult[f] = true;
- defaultFunc.value(f);
- for (p = 0; p < mixinPath.length && conditionResult[f]; p++) {
- namespace = mixinPath[p];
- if (namespace.matchCondition) {
- conditionResult[f] = conditionResult[f] && namespace.matchCondition(null, context);
- }
- }
- if (mixin.matchCondition) {
- conditionResult[f] = conditionResult[f] && mixin.matchCondition(args, context);
- }
- }
- if (conditionResult[0] || conditionResult[1]) {
- if (conditionResult[0] != conditionResult[1]) {
- return conditionResult[1] ?
- defTrue : defFalse;
- }
- return defNone;
- }
- return defFalseEitherCase;
- }
- for (i = 0; i < this.arguments.length; i++) {
- arg = this.arguments[i];
- argValue = arg.value.eval(context);
- if (arg.expand && Array.isArray(argValue.value)) {
- argValue = argValue.value;
- for (m = 0; m < argValue.length; m++) {
- args.push({ value: argValue[m] });
- }
- }
- else {
- args.push({ name: arg.name, value: argValue });
- }
- }
- noArgumentsFilter = function (rule) { return rule.matchArgs(null, context); };
- for (i = 0; i < context.frames.length; i++) {
- if ((mixins = context.frames[i].find(this.selector, null, noArgumentsFilter)).length > 0) {
- isOneFound = true;
- // To make `default()` function independent of definition order we have two "subpasses" here.
- // At first we evaluate each guard *twice* (with `default() == true` and `default() == false`),
- // and build candidate list with corresponding flags. Then, when we know all possible matches,
- // we make a final decision.
- for (m = 0; m < mixins.length; m++) {
- mixin = mixins[m].rule;
- mixinPath = mixins[m].path;
- isRecursive = false;
- for (f = 0; f < context.frames.length; f++) {
- if ((!(mixin instanceof Definition)) && mixin === (context.frames[f].originalRuleset || context.frames[f])) {
- isRecursive = true;
- break;
- }
- }
- if (isRecursive) {
- continue;
- }
- if (mixin.matchArgs(args, context)) {
- candidate = { mixin: mixin, group: calcDefGroup(mixin, mixinPath) };
- if (candidate.group !== defFalseEitherCase) {
- candidates.push(candidate);
- }
- match = true;
- }
- }
- defaultFunc.reset();
- count = [0, 0, 0];
- for (m = 0; m < candidates.length; m++) {
- count[candidates[m].group]++;
- }
- if (count[defNone] > 0) {
- defaultResult = defFalse;
- }
- else {
- defaultResult = defTrue;
- if ((count[defTrue] + count[defFalse]) > 1) {
- throw { type: 'Runtime',
- message: "Ambiguous use of `default()` found when matching for `".concat(this.format(args), "`"),
- index: this.getIndex(), filename: this.fileInfo().filename };
- }
- }
- for (m = 0; m < candidates.length; m++) {
- candidate = candidates[m].group;
- if ((candidate === defNone) || (candidate === defaultResult)) {
- try {
- mixin = candidates[m].mixin;
- if (!(mixin instanceof Definition)) {
- originalRuleset = mixin.originalRuleset || mixin;
- mixin = new Definition('', [], mixin.rules, null, false, null, originalRuleset.visibilityInfo());
- mixin.originalRuleset = originalRuleset;
- }
- var newRules = mixin.evalCall(context, args, this.important).rules;
- this._setVisibilityToReplacement(newRules);
- Array.prototype.push.apply(rules, newRules);
- }
- catch (e) {
- throw { message: e.message, index: this.getIndex(), filename: this.fileInfo().filename, stack: e.stack };
- }
- }
- }
- if (match) {
- return rules;
- }
- }
- }
- if (isOneFound) {
- throw { type: 'Runtime',
- message: "No matching definition was found for `".concat(this.format(args), "`"),
- index: this.getIndex(), filename: this.fileInfo().filename };
- }
- else {
- throw { type: 'Name',
- message: "".concat(this.selector.toCSS().trim(), " is undefined"),
- index: this.getIndex(), filename: this.fileInfo().filename };
- }
- },
- _setVisibilityToReplacement: function (replacement) {
- var i, rule;
- if (this.blocksVisibility()) {
- for (i = 0; i < replacement.length; i++) {
- rule = replacement[i];
- rule.addVisibilityBlock();
- }
- }
- },
- format: function (args) {
- return "".concat(this.selector.toCSS().trim(), "(").concat(args ? args.map(function (a) {
- var argValue = '';
- if (a.name) {
- argValue += "".concat(a.name, ":");
- }
- if (a.value.toCSS) {
- argValue += a.value.toCSS();
- }
- else {
- argValue += '???';
- }
- return argValue;
- }).join(', ') : '', ")");
- }
- });
-
- var tree = {
- Node: Node,
- Color: Color,
- AtRule: AtRule,
- DetachedRuleset: DetachedRuleset,
- Operation: Operation,
- Dimension: Dimension,
- Unit: Unit,
- Keyword: Keyword,
- Variable: Variable,
- Property: Property,
- Ruleset: Ruleset,
- Element: Element,
- Attribute: Attribute,
- Combinator: Combinator,
- Selector: Selector,
- Quoted: Quoted,
- Expression: Expression,
- Declaration: Declaration,
- Call: Call,
- URL: URL,
- Import: Import,
- Comment: Comment,
- Anonymous: Anonymous,
- Value: Value,
- JavaScript: JavaScript,
- Assignment: Assignment,
- Condition: Condition,
- Paren: Paren,
- Media: Media,
- Container: Container,
- QueryInParens: QueryInParens,
- UnicodeDescriptor: UnicodeDescriptor,
- Negative: Negative,
- Extend: Extend,
- VariableCall: VariableCall,
- NamespaceValue: NamespaceValue,
- mixin: {
- Call: MixinCall,
- Definition: Definition
- }
- };
-
- var AbstractFileManager = /** @class */ (function () {
- function AbstractFileManager() {
- }
- AbstractFileManager.prototype.getPath = function (filename) {
- var j = filename.lastIndexOf('?');
- if (j > 0) {
- filename = filename.slice(0, j);
- }
- j = filename.lastIndexOf('/');
- if (j < 0) {
- j = filename.lastIndexOf('\\');
- }
- if (j < 0) {
- return '';
- }
- return filename.slice(0, j + 1);
- };
- AbstractFileManager.prototype.tryAppendExtension = function (path, ext) {
- return /(\.[a-z]*$)|([?;].*)$/.test(path) ? path : path + ext;
- };
- AbstractFileManager.prototype.tryAppendLessExtension = function (path) {
- return this.tryAppendExtension(path, '.less');
- };
- AbstractFileManager.prototype.supportsSync = function () {
- return false;
- };
- AbstractFileManager.prototype.alwaysMakePathsAbsolute = function () {
- return false;
- };
- AbstractFileManager.prototype.isPathAbsolute = function (filename) {
- return (/^(?:[a-z-]+:|\/|\\|#)/i).test(filename);
- };
- // TODO: pull out / replace?
- AbstractFileManager.prototype.join = function (basePath, laterPath) {
- if (!basePath) {
- return laterPath;
- }
- return basePath + laterPath;
- };
- AbstractFileManager.prototype.pathDiff = function (url, baseUrl) {
- // diff between two paths to create a relative path
- var urlParts = this.extractUrlParts(url);
- var baseUrlParts = this.extractUrlParts(baseUrl);
- var i;
- var max;
- var urlDirectories;
- var baseUrlDirectories;
- var diff = '';
- if (urlParts.hostPart !== baseUrlParts.hostPart) {
- return '';
- }
- max = Math.max(baseUrlParts.directories.length, urlParts.directories.length);
- for (i = 0; i < max; i++) {
- if (baseUrlParts.directories[i] !== urlParts.directories[i]) {
- break;
- }
- }
- baseUrlDirectories = baseUrlParts.directories.slice(i);
- urlDirectories = urlParts.directories.slice(i);
- for (i = 0; i < baseUrlDirectories.length - 1; i++) {
- diff += '../';
- }
- for (i = 0; i < urlDirectories.length - 1; i++) {
- diff += "".concat(urlDirectories[i], "/");
- }
- return diff;
- };
- /**
- * Helper function, not part of API.
- * This should be replaceable by newer Node / Browser APIs
- *
- * @param {string} url
- * @param {string} baseUrl
- */
- AbstractFileManager.prototype.extractUrlParts = function (url, baseUrl) {
- // urlParts[1] = protocol://hostname/ OR /
- // urlParts[2] = / if path relative to host base
- // urlParts[3] = directories
- // urlParts[4] = filename
- // urlParts[5] = parameters
- var urlPartsRegex = /^((?:[a-z-]+:)?\/{2}(?:[^/?#]*\/)|([/\\]))?((?:[^/\\?#]*[/\\])*)([^/\\?#]*)([#?].*)?$/i;
- var urlParts = url.match(urlPartsRegex);
- var returner = {};
- var rawDirectories = [];
- var directories = [];
- var i;
- var baseUrlParts;
- if (!urlParts) {
- throw new Error("Could not parse sheet href - '".concat(url, "'"));
- }
- // Stylesheets in IE don't always return the full path
- if (baseUrl && (!urlParts[1] || urlParts[2])) {
- baseUrlParts = baseUrl.match(urlPartsRegex);
- if (!baseUrlParts) {
- throw new Error("Could not parse page url - '".concat(baseUrl, "'"));
- }
- urlParts[1] = urlParts[1] || baseUrlParts[1] || '';
- if (!urlParts[2]) {
- urlParts[3] = baseUrlParts[3] + urlParts[3];
- }
- }
- if (urlParts[3]) {
- rawDirectories = urlParts[3].replace(/\\/g, '/').split('/');
- // collapse '..' and skip '.'
- for (i = 0; i < rawDirectories.length; i++) {
- if (rawDirectories[i] === '..') {
- directories.pop();
- }
- else if (rawDirectories[i] !== '.') {
- directories.push(rawDirectories[i]);
- }
- }
- }
- returner.hostPart = urlParts[1];
- returner.directories = directories;
- returner.rawPath = (urlParts[1] || '') + rawDirectories.join('/');
- returner.path = (urlParts[1] || '') + directories.join('/');
- returner.filename = urlParts[4];
- returner.fileUrl = returner.path + (urlParts[4] || '');
- returner.url = returner.fileUrl + (urlParts[5] || '');
- return returner;
- };
- return AbstractFileManager;
- }());
-
- var AbstractPluginLoader = /** @class */ (function () {
- function AbstractPluginLoader() {
- // Implemented by Node.js plugin loader
- this.require = function () {
- return null;
- };
- }
- AbstractPluginLoader.prototype.evalPlugin = function (contents, context, imports, pluginOptions, fileInfo) {
- var loader, registry, pluginObj, localModule, pluginManager, filename, result;
- pluginManager = context.pluginManager;
- if (fileInfo) {
- if (typeof fileInfo === 'string') {
- filename = fileInfo;
- }
- else {
- filename = fileInfo.filename;
- }
- }
- var shortname = (new this.less.FileManager()).extractUrlParts(filename).filename;
- if (filename) {
- pluginObj = pluginManager.get(filename);
- if (pluginObj) {
- result = this.trySetOptions(pluginObj, filename, shortname, pluginOptions);
- if (result) {
- return result;
- }
- try {
- if (pluginObj.use) {
- pluginObj.use.call(this.context, pluginObj);
- }
- }
- catch (e) {
- e.message = e.message || 'Error during @plugin call';
- return new LessError(e, imports, filename);
- }
- return pluginObj;
- }
- }
- localModule = {
- exports: {},
- pluginManager: pluginManager,
- fileInfo: fileInfo
- };
- registry = functionRegistry.create();
- var registerPlugin = function (obj) {
- pluginObj = obj;
- };
- try {
- loader = new Function('module', 'require', 'registerPlugin', 'functions', 'tree', 'less', 'fileInfo', contents);
- loader(localModule, this.require(filename), registerPlugin, registry, this.less.tree, this.less, fileInfo);
- }
- catch (e) {
- return new LessError(e, imports, filename);
- }
- if (!pluginObj) {
- pluginObj = localModule.exports;
- }
- pluginObj = this.validatePlugin(pluginObj, filename, shortname);
- if (pluginObj instanceof LessError) {
- return pluginObj;
- }
- if (pluginObj) {
- pluginObj.imports = imports;
- pluginObj.filename = filename;
- // For < 3.x (or unspecified minVersion) - setOptions() before install()
- if (!pluginObj.minVersion || this.compareVersion('3.0.0', pluginObj.minVersion) < 0) {
- result = this.trySetOptions(pluginObj, filename, shortname, pluginOptions);
- if (result) {
- return result;
- }
- }
- // Run on first load
- pluginManager.addPlugin(pluginObj, fileInfo.filename, registry);
- pluginObj.functions = registry.getLocalFunctions();
- // Need to call setOptions again because the pluginObj might have functions
- result = this.trySetOptions(pluginObj, filename, shortname, pluginOptions);
- if (result) {
- return result;
- }
- // Run every @plugin call
- try {
- if (pluginObj.use) {
- pluginObj.use.call(this.context, pluginObj);
- }
- }
- catch (e) {
- e.message = e.message || 'Error during @plugin call';
- return new LessError(e, imports, filename);
- }
- }
- else {
- return new LessError({ message: 'Not a valid plugin' }, imports, filename);
- }
- return pluginObj;
- };
- AbstractPluginLoader.prototype.trySetOptions = function (plugin, filename, name, options) {
- if (options && !plugin.setOptions) {
- return new LessError({
- message: "Options have been provided but the plugin ".concat(name, " does not support any options.")
- });
- }
- try {
- plugin.setOptions && plugin.setOptions(options);
- }
- catch (e) {
- return new LessError(e);
- }
- };
- AbstractPluginLoader.prototype.validatePlugin = function (plugin, filename, name) {
- if (plugin) {
- // support plugins being a function
- // so that the plugin can be more usable programmatically
- if (typeof plugin === 'function') {
- plugin = new plugin();
- }
- if (plugin.minVersion) {
- if (this.compareVersion(plugin.minVersion, this.less.version) < 0) {
- return new LessError({
- message: "Plugin ".concat(name, " requires version ").concat(this.versionToString(plugin.minVersion))
- });
- }
- }
- return plugin;
- }
- return null;
- };
- AbstractPluginLoader.prototype.compareVersion = function (aVersion, bVersion) {
- if (typeof aVersion === 'string') {
- aVersion = aVersion.match(/^(\d+)\.?(\d+)?\.?(\d+)?/);
- aVersion.shift();
- }
- for (var i_1 = 0; i_1 < aVersion.length; i_1++) {
- if (aVersion[i_1] !== bVersion[i_1]) {
- return parseInt(aVersion[i_1]) > parseInt(bVersion[i_1]) ? -1 : 1;
- }
- }
- return 0;
- };
- AbstractPluginLoader.prototype.versionToString = function (version) {
- var versionString = '';
- for (var i_2 = 0; i_2 < version.length; i_2++) {
- versionString += (versionString ? '.' : '') + version[i_2];
- }
- return versionString;
- };
- AbstractPluginLoader.prototype.printUsage = function (plugins) {
- for (var i_3 = 0; i_3 < plugins.length; i_3++) {
- var plugin = plugins[i_3];
- if (plugin.printUsage) {
- plugin.printUsage();
- }
- }
- };
- return AbstractPluginLoader;
- }());
-
- function boolean(condition) {
- return condition ? Keyword.True : Keyword.False;
- }
- /**
- * Functions with evalArgs set to false are sent context
- * as the first argument.
- */
- function If(context, condition, trueValue, falseValue) {
- return condition.eval(context) ? trueValue.eval(context)
- : (falseValue ? falseValue.eval(context) : new Anonymous);
- }
- If.evalArgs = false;
- function isdefined(context, variable) {
- try {
- variable.eval(context);
- return Keyword.True;
- }
- catch (e) {
- return Keyword.False;
- }
- }
- isdefined.evalArgs = false;
- var boolean$1 = { isdefined: isdefined, boolean: boolean, 'if': If };
-
- var colorFunctions;
- function clamp(val) {
- return Math.min(1, Math.max(0, val));
- }
- function hsla(origColor, hsl) {
- var color = colorFunctions.hsla(hsl.h, hsl.s, hsl.l, hsl.a);
- if (color) {
- if (origColor.value &&
- /^(rgb|hsl)/.test(origColor.value)) {
- color.value = origColor.value;
- }
- else {
- color.value = 'rgb';
- }
- return color;
- }
- }
- function toHSL(color) {
- if (color.toHSL) {
- return color.toHSL();
- }
- else {
- throw new Error('Argument cannot be evaluated to a color');
- }
- }
- function toHSV(color) {
- if (color.toHSV) {
- return color.toHSV();
- }
- else {
- throw new Error('Argument cannot be evaluated to a color');
- }
- }
- function number$1(n) {
- if (n instanceof Dimension) {
- return parseFloat(n.unit.is('%') ? n.value / 100 : n.value);
- }
- else if (typeof n === 'number') {
- return n;
- }
- else {
- throw {
- type: 'Argument',
- message: 'color functions take numbers as parameters'
- };
- }
- }
- function scaled(n, size) {
- if (n instanceof Dimension && n.unit.is('%')) {
- return parseFloat(n.value * size / 100);
- }
- else {
- return number$1(n);
- }
- }
- colorFunctions = {
- rgb: function (r, g, b) {
- var a = 1;
- /**
- * Comma-less syntax
- * e.g. rgb(0 128 255 / 50%)
- */
- if (r instanceof Expression) {
- var val = r.value;
- r = val[0];
- g = val[1];
- b = val[2];
- /**
- * @todo - should this be normalized in
- * function caller? Or parsed differently?
- */
- if (b instanceof Operation) {
- var op = b;
- b = op.operands[0];
- a = op.operands[1];
- }
- }
- var color = colorFunctions.rgba(r, g, b, a);
- if (color) {
- color.value = 'rgb';
- return color;
- }
- },
- rgba: function (r, g, b, a) {
- try {
- if (r instanceof Color) {
- if (g) {
- a = number$1(g);
- }
- else {
- a = r.alpha;
- }
- return new Color(r.rgb, a, 'rgba');
- }
- var rgb = [r, g, b].map(function (c) { return scaled(c, 255); });
- a = number$1(a);
- return new Color(rgb, a, 'rgba');
- }
- catch (e) { }
- },
- hsl: function (h, s, l) {
- var a = 1;
- if (h instanceof Expression) {
- var val = h.value;
- h = val[0];
- s = val[1];
- l = val[2];
- if (l instanceof Operation) {
- var op = l;
- l = op.operands[0];
- a = op.operands[1];
- }
- }
- var color = colorFunctions.hsla(h, s, l, a);
- if (color) {
- color.value = 'hsl';
- return color;
- }
- },
- hsla: function (h, s, l, a) {
- var m1;
- var m2;
- function hue(h) {
- h = h < 0 ? h + 1 : (h > 1 ? h - 1 : h);
- if (h * 6 < 1) {
- return m1 + (m2 - m1) * h * 6;
- }
- else if (h * 2 < 1) {
- return m2;
- }
- else if (h * 3 < 2) {
- return m1 + (m2 - m1) * (2 / 3 - h) * 6;
- }
- else {
- return m1;
- }
- }
- try {
- if (h instanceof Color) {
- if (s) {
- a = number$1(s);
- }
- else {
- a = h.alpha;
- }
- return new Color(h.rgb, a, 'hsla');
- }
- h = (number$1(h) % 360) / 360;
- s = clamp(number$1(s));
- l = clamp(number$1(l));
- a = clamp(number$1(a));
- m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;
- m1 = l * 2 - m2;
- var rgb = [
- hue(h + 1 / 3) * 255,
- hue(h) * 255,
- hue(h - 1 / 3) * 255
- ];
- a = number$1(a);
- return new Color(rgb, a, 'hsla');
- }
- catch (e) { }
- },
- hsv: function (h, s, v) {
- return colorFunctions.hsva(h, s, v, 1.0);
- },
- hsva: function (h, s, v, a) {
- h = ((number$1(h) % 360) / 360) * 360;
- s = number$1(s);
- v = number$1(v);
- a = number$1(a);
- var i;
- var f;
- i = Math.floor((h / 60) % 6);
- f = (h / 60) - i;
- var vs = [v,
- v * (1 - s),
- v * (1 - f * s),
- v * (1 - (1 - f) * s)];
- var perm = [[0, 3, 1],
- [2, 0, 1],
- [1, 0, 3],
- [1, 2, 0],
- [3, 1, 0],
- [0, 1, 2]];
- return colorFunctions.rgba(vs[perm[i][0]] * 255, vs[perm[i][1]] * 255, vs[perm[i][2]] * 255, a);
- },
- hue: function (color) {
- return new Dimension(toHSL(color).h);
- },
- saturation: function (color) {
- return new Dimension(toHSL(color).s * 100, '%');
- },
- lightness: function (color) {
- return new Dimension(toHSL(color).l * 100, '%');
- },
- hsvhue: function (color) {
- return new Dimension(toHSV(color).h);
- },
- hsvsaturation: function (color) {
- return new Dimension(toHSV(color).s * 100, '%');
- },
- hsvvalue: function (color) {
- return new Dimension(toHSV(color).v * 100, '%');
- },
- red: function (color) {
- return new Dimension(color.rgb[0]);
- },
- green: function (color) {
- return new Dimension(color.rgb[1]);
- },
- blue: function (color) {
- return new Dimension(color.rgb[2]);
- },
- alpha: function (color) {
- return new Dimension(toHSL(color).a);
- },
- luma: function (color) {
- return new Dimension(color.luma() * color.alpha * 100, '%');
- },
- luminance: function (color) {
- var luminance = (0.2126 * color.rgb[0] / 255) +
- (0.7152 * color.rgb[1] / 255) +
- (0.0722 * color.rgb[2] / 255);
- return new Dimension(luminance * color.alpha * 100, '%');
- },
- saturate: function (color, amount, method) {
- // filter: saturate(3.2);
- // should be kept as is, so check for color
- if (!color.rgb) {
- return null;
- }
- var hsl = toHSL(color);
- if (typeof method !== 'undefined' && method.value === 'relative') {
- hsl.s += hsl.s * amount.value / 100;
- }
- else {
- hsl.s += amount.value / 100;
- }
- hsl.s = clamp(hsl.s);
- return hsla(color, hsl);
- },
- desaturate: function (color, amount, method) {
- var hsl = toHSL(color);
- if (typeof method !== 'undefined' && method.value === 'relative') {
- hsl.s -= hsl.s * amount.value / 100;
- }
- else {
- hsl.s -= amount.value / 100;
- }
- hsl.s = clamp(hsl.s);
- return hsla(color, hsl);
- },
- lighten: function (color, amount, method) {
- var hsl = toHSL(color);
- if (typeof method !== 'undefined' && method.value === 'relative') {
- hsl.l += hsl.l * amount.value / 100;
- }
- else {
- hsl.l += amount.value / 100;
- }
- hsl.l = clamp(hsl.l);
- return hsla(color, hsl);
- },
- darken: function (color, amount, method) {
- var hsl = toHSL(color);
- if (typeof method !== 'undefined' && method.value === 'relative') {
- hsl.l -= hsl.l * amount.value / 100;
- }
- else {
- hsl.l -= amount.value / 100;
- }
- hsl.l = clamp(hsl.l);
- return hsla(color, hsl);
- },
- fadein: function (color, amount, method) {
- var hsl = toHSL(color);
- if (typeof method !== 'undefined' && method.value === 'relative') {
- hsl.a += hsl.a * amount.value / 100;
- }
- else {
- hsl.a += amount.value / 100;
- }
- hsl.a = clamp(hsl.a);
- return hsla(color, hsl);
- },
- fadeout: function (color, amount, method) {
- var hsl = toHSL(color);
- if (typeof method !== 'undefined' && method.value === 'relative') {
- hsl.a -= hsl.a * amount.value / 100;
- }
- else {
- hsl.a -= amount.value / 100;
- }
- hsl.a = clamp(hsl.a);
- return hsla(color, hsl);
- },
- fade: function (color, amount) {
- var hsl = toHSL(color);
- hsl.a = amount.value / 100;
- hsl.a = clamp(hsl.a);
- return hsla(color, hsl);
- },
- spin: function (color, amount) {
- var hsl = toHSL(color);
- var hue = (hsl.h + amount.value) % 360;
- hsl.h = hue < 0 ? 360 + hue : hue;
- return hsla(color, hsl);
- },
- //
- // Copyright (c) 2006-2009 Hampton Catlin, Natalie Weizenbaum, and Chris Eppstein
- // http://sass-lang.com
- //
- mix: function (color1, color2, weight) {
- if (!weight) {
- weight = new Dimension(50);
- }
- var p = weight.value / 100.0;
- var w = p * 2 - 1;
- var a = toHSL(color1).a - toHSL(color2).a;
- var w1 = (((w * a == -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0;
- var w2 = 1 - w1;
- var rgb = [color1.rgb[0] * w1 + color2.rgb[0] * w2,
- color1.rgb[1] * w1 + color2.rgb[1] * w2,
- color1.rgb[2] * w1 + color2.rgb[2] * w2];
- var alpha = color1.alpha * p + color2.alpha * (1 - p);
- return new Color(rgb, alpha);
- },
- greyscale: function (color) {
- return colorFunctions.desaturate(color, new Dimension(100));
- },
- contrast: function (color, dark, light, threshold) {
- // filter: contrast(3.2);
- // should be kept as is, so check for color
- if (!color.rgb) {
- return null;
- }
- if (typeof light === 'undefined') {
- light = colorFunctions.rgba(255, 255, 255, 1.0);
- }
- if (typeof dark === 'undefined') {
- dark = colorFunctions.rgba(0, 0, 0, 1.0);
- }
- // Figure out which is actually light and dark:
- if (dark.luma() > light.luma()) {
- var t = light;
- light = dark;
- dark = t;
- }
- if (typeof threshold === 'undefined') {
- threshold = 0.43;
- }
- else {
- threshold = number$1(threshold);
- }
- if (color.luma() < threshold) {
- return light;
- }
- else {
- return dark;
- }
- },
- // Changes made in 2.7.0 - Reverted in 3.0.0
- // contrast: function (color, color1, color2, threshold) {
- // // Return which of `color1` and `color2` has the greatest contrast with `color`
- // // according to the standard WCAG contrast ratio calculation.
- // // http://www.w3.org/TR/WCAG20/#contrast-ratiodef
- // // The threshold param is no longer used, in line with SASS.
- // // filter: contrast(3.2);
- // // should be kept as is, so check for color
- // if (!color.rgb) {
- // return null;
- // }
- // if (typeof color1 === 'undefined') {
- // color1 = colorFunctions.rgba(0, 0, 0, 1.0);
- // }
- // if (typeof color2 === 'undefined') {
- // color2 = colorFunctions.rgba(255, 255, 255, 1.0);
- // }
- // var contrast1, contrast2;
- // var luma = color.luma();
- // var luma1 = color1.luma();
- // var luma2 = color2.luma();
- // // Calculate contrast ratios for each color
- // if (luma > luma1) {
- // contrast1 = (luma + 0.05) / (luma1 + 0.05);
- // } else {
- // contrast1 = (luma1 + 0.05) / (luma + 0.05);
- // }
- // if (luma > luma2) {
- // contrast2 = (luma + 0.05) / (luma2 + 0.05);
- // } else {
- // contrast2 = (luma2 + 0.05) / (luma + 0.05);
- // }
- // if (contrast1 > contrast2) {
- // return color1;
- // } else {
- // return color2;
- // }
- // },
- argb: function (color) {
- return new Anonymous(color.toARGB());
- },
- color: function (c) {
- if ((c instanceof Quoted) &&
- (/^#([A-Fa-f0-9]{8}|[A-Fa-f0-9]{6}|[A-Fa-f0-9]{3,4})$/i.test(c.value))) {
- var val = c.value.slice(1);
- return new Color(val, undefined, "#".concat(val));
- }
- if ((c instanceof Color) || (c = Color.fromKeyword(c.value))) {
- c.value = undefined;
- return c;
- }
- throw {
- type: 'Argument',
- message: 'argument must be a color keyword or 3|4|6|8 digit hex e.g. #FFF'
- };
- },
- tint: function (color, amount) {
- return colorFunctions.mix(colorFunctions.rgb(255, 255, 255), color, amount);
- },
- shade: function (color, amount) {
- return colorFunctions.mix(colorFunctions.rgb(0, 0, 0), color, amount);
- }
- };
- var color = colorFunctions;
-
- // Color Blending
- // ref: http://www.w3.org/TR/compositing-1
- function colorBlend(mode, color1, color2) {
- var ab = color1.alpha; // result
- var // backdrop
- cb;
- var as = color2.alpha;
- var // source
- cs;
- var ar;
- var cr;
- var r = [];
- ar = as + ab * (1 - as);
- for (var i_1 = 0; i_1 < 3; i_1++) {
- cb = color1.rgb[i_1] / 255;
- cs = color2.rgb[i_1] / 255;
- cr = mode(cb, cs);
- if (ar) {
- cr = (as * cs + ab * (cb -
- as * (cb + cs - cr))) / ar;
- }
- r[i_1] = cr * 255;
- }
- return new Color(r, ar);
- }
- var colorBlendModeFunctions = {
- multiply: function (cb, cs) {
- return cb * cs;
- },
- screen: function (cb, cs) {
- return cb + cs - cb * cs;
- },
- overlay: function (cb, cs) {
- cb *= 2;
- return (cb <= 1) ?
- colorBlendModeFunctions.multiply(cb, cs) :
- colorBlendModeFunctions.screen(cb - 1, cs);
- },
- softlight: function (cb, cs) {
- var d = 1;
- var e = cb;
- if (cs > 0.5) {
- e = 1;
- d = (cb > 0.25) ? Math.sqrt(cb)
- : ((16 * cb - 12) * cb + 4) * cb;
- }
- return cb - (1 - 2 * cs) * e * (d - cb);
- },
- hardlight: function (cb, cs) {
- return colorBlendModeFunctions.overlay(cs, cb);
- },
- difference: function (cb, cs) {
- return Math.abs(cb - cs);
- },
- exclusion: function (cb, cs) {
- return cb + cs - 2 * cb * cs;
- },
- // non-w3c functions:
- average: function (cb, cs) {
- return (cb + cs) / 2;
- },
- negation: function (cb, cs) {
- return 1 - Math.abs(cb + cs - 1);
- }
- };
- for (var f$1 in colorBlendModeFunctions) {
- // eslint-disable-next-line no-prototype-builtins
- if (colorBlendModeFunctions.hasOwnProperty(f$1)) {
- colorBlend[f$1] = colorBlend.bind(null, colorBlendModeFunctions[f$1]);
- }
- }
-
- var dataUri = (function (environment) {
- var fallback = function (functionThis, node) { return new URL(node, functionThis.index, functionThis.currentFileInfo).eval(functionThis.context); };
- return { 'data-uri': function (mimetypeNode, filePathNode) {
- if (!filePathNode) {
- filePathNode = mimetypeNode;
- mimetypeNode = null;
- }
- var mimetype = mimetypeNode && mimetypeNode.value;
- var filePath = filePathNode.value;
- var currentFileInfo = this.currentFileInfo;
- var currentDirectory = currentFileInfo.rewriteUrls ?
- currentFileInfo.currentDirectory : currentFileInfo.entryPath;
- var fragmentStart = filePath.indexOf('#');
- var fragment = '';
- if (fragmentStart !== -1) {
- fragment = filePath.slice(fragmentStart);
- filePath = filePath.slice(0, fragmentStart);
- }
- var context = clone(this.context);
- context.rawBuffer = true;
- var fileManager = environment.getFileManager(filePath, currentDirectory, context, environment, true);
- if (!fileManager) {
- return fallback(this, filePathNode);
- }
- var useBase64 = false;
- // detect the mimetype if not given
- if (!mimetypeNode) {
- mimetype = environment.mimeLookup(filePath);
- if (mimetype === 'image/svg+xml') {
- useBase64 = false;
- }
- else {
- // use base 64 unless it's an ASCII or UTF-8 format
- var charset = environment.charsetLookup(mimetype);
- useBase64 = ['US-ASCII', 'UTF-8'].indexOf(charset) < 0;
- }
- if (useBase64) {
- mimetype += ';base64';
- }
- }
- else {
- useBase64 = /;base64$/.test(mimetype);
- }
- var fileSync = fileManager.loadFileSync(filePath, currentDirectory, context, environment);
- if (!fileSync.contents) {
- logger$1.warn("Skipped data-uri embedding of ".concat(filePath, " because file not found"));
- return fallback(this, filePathNode || mimetypeNode);
- }
- var buf = fileSync.contents;
- if (useBase64 && !environment.encodeBase64) {
- return fallback(this, filePathNode);
- }
- buf = useBase64 ? environment.encodeBase64(buf) : encodeURIComponent(buf);
- var uri = "data:".concat(mimetype, ",").concat(buf).concat(fragment);
- return new URL(new Quoted("\"".concat(uri, "\""), uri, false, this.index, this.currentFileInfo), this.index, this.currentFileInfo);
- } };
- });
-
- var getItemsFromNode = function (node) {
- // handle non-array values as an array of length 1
- // return 'undefined' if index is invalid
- var items = Array.isArray(node.value) ?
- node.value : Array(node);
- return items;
- };
- var list = {
- _SELF: function (n) {
- return n;
- },
- '~': function () {
- var expr = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- expr[_i] = arguments[_i];
- }
- if (expr.length === 1) {
- return expr[0];
- }
- return new Value(expr);
- },
- extract: function (values, index) {
- // (1-based index)
- index = index.value - 1;
- return getItemsFromNode(values)[index];
- },
- length: function (values) {
- return new Dimension(getItemsFromNode(values).length);
- },
- /**
- * Creates a Less list of incremental values.
- * Modeled after Lodash's range function, also exists natively in PHP
- *
- * @param {Dimension} [start=1]
- * @param {Dimension} end - e.g. 10 or 10px - unit is added to output
- * @param {Dimension} [step=1]
- */
- range: function (start, end, step) {
- var from;
- var to;
- var stepValue = 1;
- var list = [];
- if (end) {
- to = end;
- from = start.value;
- if (step) {
- stepValue = step.value;
- }
- }
- else {
- from = 1;
- to = start;
- }
- for (var i_1 = from; i_1 <= to.value; i_1 += stepValue) {
- list.push(new Dimension(i_1, to.unit));
- }
- return new Expression(list);
- },
- each: function (list, rs) {
- var _this = this;
- var rules = [];
- var newRules;
- var iterator;
- var tryEval = function (val) {
- if (val instanceof Node) {
- return val.eval(_this.context);
- }
- return val;
- };
- if (list.value && !(list instanceof Quoted)) {
- if (Array.isArray(list.value)) {
- iterator = list.value.map(tryEval);
- }
- else {
- iterator = [tryEval(list.value)];
- }
- }
- else if (list.ruleset) {
- iterator = tryEval(list.ruleset).rules;
- }
- else if (list.rules) {
- iterator = list.rules.map(tryEval);
- }
- else if (Array.isArray(list)) {
- iterator = list.map(tryEval);
- }
- else {
- iterator = [tryEval(list)];
- }
- var valueName = '@value';
- var keyName = '@key';
- var indexName = '@index';
- if (rs.params) {
- valueName = rs.params[0] && rs.params[0].name;
- keyName = rs.params[1] && rs.params[1].name;
- indexName = rs.params[2] && rs.params[2].name;
- rs = rs.rules;
- }
- else {
- rs = rs.ruleset;
- }
- for (var i_2 = 0; i_2 < iterator.length; i_2++) {
- var key = void 0;
- var value = void 0;
- var item = iterator[i_2];
- if (item instanceof Declaration) {
- key = typeof item.name === 'string' ? item.name : item.name[0].value;
- value = item.value;
- }
- else {
- key = new Dimension(i_2 + 1);
- value = item;
- }
- if (item instanceof Comment) {
- continue;
- }
- newRules = rs.rules.slice(0);
- if (valueName) {
- newRules.push(new Declaration(valueName, value, false, false, this.index, this.currentFileInfo));
- }
- if (indexName) {
- newRules.push(new Declaration(indexName, new Dimension(i_2 + 1), false, false, this.index, this.currentFileInfo));
- }
- if (keyName) {
- newRules.push(new Declaration(keyName, key, false, false, this.index, this.currentFileInfo));
- }
- rules.push(new Ruleset([new (Selector)([new Element('', '&')])], newRules, rs.strictImports, rs.visibilityInfo()));
- }
- return new Ruleset([new (Selector)([new Element('', '&')])], rules, rs.strictImports, rs.visibilityInfo()).eval(this.context);
- }
- };
-
- var MathHelper = function (fn, unit, n) {
- if (!(n instanceof Dimension)) {
- throw { type: 'Argument', message: 'argument must be a number' };
- }
- if (unit === null) {
- unit = n.unit;
- }
- else {
- n = n.unify();
- }
- return new Dimension(fn(parseFloat(n.value)), unit);
- };
-
- var mathFunctions = {
- // name, unit
- ceil: null,
- floor: null,
- sqrt: null,
- abs: null,
- tan: '',
- sin: '',
- cos: '',
- atan: 'rad',
- asin: 'rad',
- acos: 'rad'
- };
- for (var f in mathFunctions) {
- // eslint-disable-next-line no-prototype-builtins
- if (mathFunctions.hasOwnProperty(f)) {
- mathFunctions[f] = MathHelper.bind(null, Math[f], mathFunctions[f]);
- }
- }
- mathFunctions.round = function (n, f) {
- var fraction = typeof f === 'undefined' ? 0 : f.value;
- return MathHelper(function (num) { return num.toFixed(fraction); }, null, n);
- };
-
- var minMax = function (isMin, args) {
- var _this = this;
- args = Array.prototype.slice.call(args);
- switch (args.length) {
- case 0: throw { type: 'Argument', message: 'one or more arguments required' };
- }
- var i; // key is the unit.toString() for unified Dimension values,
- var j;
- var current;
- var currentUnified;
- var referenceUnified;
- var unit;
- var unitStatic;
- var unitClone;
- var // elems only contains original argument values.
- order = [];
- var values = {};
- // value is the index into the order array.
- for (i = 0; i < args.length; i++) {
- current = args[i];
- if (!(current instanceof Dimension)) {
- if (Array.isArray(args[i].value)) {
- Array.prototype.push.apply(args, Array.prototype.slice.call(args[i].value));
- continue;
- }
- else {
- throw { type: 'Argument', message: 'incompatible types' };
- }
- }
- currentUnified = current.unit.toString() === '' && unitClone !== undefined ? new Dimension(current.value, unitClone).unify() : current.unify();
- unit = currentUnified.unit.toString() === '' && unitStatic !== undefined ? unitStatic : currentUnified.unit.toString();
- unitStatic = unit !== '' && unitStatic === undefined || unit !== '' && order[0].unify().unit.toString() === '' ? unit : unitStatic;
- unitClone = unit !== '' && unitClone === undefined ? current.unit.toString() : unitClone;
- j = values[''] !== undefined && unit !== '' && unit === unitStatic ? values[''] : values[unit];
- if (j === undefined) {
- if (unitStatic !== undefined && unit !== unitStatic) {
- throw { type: 'Argument', message: 'incompatible types' };
- }
- values[unit] = order.length;
- order.push(current);
- continue;
- }
- referenceUnified = order[j].unit.toString() === '' && unitClone !== undefined ? new Dimension(order[j].value, unitClone).unify() : order[j].unify();
- if (isMin && currentUnified.value < referenceUnified.value ||
- !isMin && currentUnified.value > referenceUnified.value) {
- order[j] = current;
- }
- }
- if (order.length == 1) {
- return order[0];
- }
- args = order.map(function (a) { return a.toCSS(_this.context); }).join(this.context.compress ? ',' : ', ');
- return new Anonymous("".concat(isMin ? 'min' : 'max', "(").concat(args, ")"));
- };
- var number = {
- min: function () {
- var args = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- args[_i] = arguments[_i];
- }
- try {
- return minMax.call(this, true, args);
- }
- catch (e) { }
- },
- max: function () {
- var args = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- args[_i] = arguments[_i];
- }
- try {
- return minMax.call(this, false, args);
- }
- catch (e) { }
- },
- convert: function (val, unit) {
- return val.convertTo(unit.value);
- },
- pi: function () {
- return new Dimension(Math.PI);
- },
- mod: function (a, b) {
- return new Dimension(a.value % b.value, a.unit);
- },
- pow: function (x, y) {
- if (typeof x === 'number' && typeof y === 'number') {
- x = new Dimension(x);
- y = new Dimension(y);
- }
- else if (!(x instanceof Dimension) || !(y instanceof Dimension)) {
- throw { type: 'Argument', message: 'arguments must be numbers' };
- }
- return new Dimension(Math.pow(x.value, y.value), x.unit);
- },
- percentage: function (n) {
- var result = MathHelper(function (num) { return num * 100; }, '%', n);
- return result;
- }
- };
-
- var string = {
- e: function (str) {
- return new Quoted('"', str instanceof JavaScript ? str.evaluated : str.value, true);
- },
- escape: function (str) {
- return new Anonymous(encodeURI(str.value).replace(/=/g, '%3D').replace(/:/g, '%3A').replace(/#/g, '%23').replace(/;/g, '%3B')
- .replace(/\(/g, '%28').replace(/\)/g, '%29'));
- },
- replace: function (string, pattern, replacement, flags) {
- var result = string.value;
- replacement = (replacement.type === 'Quoted') ?
- replacement.value : replacement.toCSS();
- result = result.replace(new RegExp(pattern.value, flags ? flags.value : ''), replacement);
- return new Quoted(string.quote || '', result, string.escaped);
- },
- '%': function (string /* arg, arg, ... */) {
- var args = Array.prototype.slice.call(arguments, 1);
- var result = string.value;
- var _loop_1 = function (i_1) {
- /* jshint loopfunc:true */
- result = result.replace(/%[sda]/i, function (token) {
- var value = ((args[i_1].type === 'Quoted') &&
- token.match(/s/i)) ? args[i_1].value : args[i_1].toCSS();
- return token.match(/[A-Z]$/) ? encodeURIComponent(value) : value;
- });
- };
- for (var i_1 = 0; i_1 < args.length; i_1++) {
- _loop_1(i_1);
- }
- result = result.replace(/%%/g, '%');
- return new Quoted(string.quote || '', result, string.escaped);
- }
- };
-
- var svg = (function () {
- return { 'svg-gradient': function (direction) {
- var stops;
- var gradientDirectionSvg;
- var gradientType = 'linear';
- var rectangleDimension = 'x="0" y="0" width="1" height="1"';
- var renderEnv = { compress: false };
- var returner;
- var directionValue = direction.toCSS(renderEnv);
- var i;
- var color;
- var position;
- var positionValue;
- var alpha;
- function throwArgumentDescriptor() {
- throw { type: 'Argument',
- message: 'svg-gradient expects direction, start_color [start_position], [color position,]...,' +
- ' end_color [end_position] or direction, color list' };
- }
- if (arguments.length == 2) {
- if (arguments[1].value.length < 2) {
- throwArgumentDescriptor();
- }
- stops = arguments[1].value;
- }
- else if (arguments.length < 3) {
- throwArgumentDescriptor();
- }
- else {
- stops = Array.prototype.slice.call(arguments, 1);
- }
- switch (directionValue) {
- case 'to bottom':
- gradientDirectionSvg = 'x1="0%" y1="0%" x2="0%" y2="100%"';
- break;
- case 'to right':
- gradientDirectionSvg = 'x1="0%" y1="0%" x2="100%" y2="0%"';
- break;
- case 'to bottom right':
- gradientDirectionSvg = 'x1="0%" y1="0%" x2="100%" y2="100%"';
- break;
- case 'to top right':
- gradientDirectionSvg = 'x1="0%" y1="100%" x2="100%" y2="0%"';
- break;
- case 'ellipse':
- case 'ellipse at center':
- gradientType = 'radial';
- gradientDirectionSvg = 'cx="50%" cy="50%" r="75%"';
- rectangleDimension = 'x="-50" y="-50" width="101" height="101"';
- break;
- default:
- throw { type: 'Argument', message: 'svg-gradient direction must be \'to bottom\', \'to right\',' +
- ' \'to bottom right\', \'to top right\' or \'ellipse at center\'' };
- }
- returner = "<".concat(gradientType, "Gradient id=\"g\" ").concat(gradientDirectionSvg, ">");
- for (i = 0; i < stops.length; i += 1) {
- if (stops[i] instanceof Expression) {
- color = stops[i].value[0];
- position = stops[i].value[1];
- }
- else {
- color = stops[i];
- position = undefined;
- }
- if (!(color instanceof Color) || (!((i === 0 || i + 1 === stops.length) && position === undefined) && !(position instanceof Dimension))) {
- throwArgumentDescriptor();
- }
- positionValue = position ? position.toCSS(renderEnv) : i === 0 ? '0%' : '100%';
- alpha = color.alpha;
- returner += " ");
- }
- returner += "".concat(gradientType, "Gradient> ");
- returner = encodeURIComponent(returner);
- returner = "data:image/svg+xml,".concat(returner);
- return new URL(new Quoted("'".concat(returner, "'"), returner, false, this.index, this.currentFileInfo), this.index, this.currentFileInfo);
- } };
- });
-
- var isa = function (n, Type) { return (n instanceof Type) ? Keyword.True : Keyword.False; };
- var isunit = function (n, unit) {
- if (unit === undefined) {
- throw { type: 'Argument', message: 'missing the required second argument to isunit.' };
- }
- unit = typeof unit.value === 'string' ? unit.value : unit;
- if (typeof unit !== 'string') {
- throw { type: 'Argument', message: 'Second argument to isunit should be a unit or a string.' };
- }
- return (n instanceof Dimension) && n.unit.is(unit) ? Keyword.True : Keyword.False;
- };
- var types = {
- isruleset: function (n) {
- return isa(n, DetachedRuleset);
- },
- iscolor: function (n) {
- return isa(n, Color);
- },
- isnumber: function (n) {
- return isa(n, Dimension);
- },
- isstring: function (n) {
- return isa(n, Quoted);
- },
- iskeyword: function (n) {
- return isa(n, Keyword);
- },
- isurl: function (n) {
- return isa(n, URL);
- },
- ispixel: function (n) {
- return isunit(n, 'px');
- },
- ispercentage: function (n) {
- return isunit(n, '%');
- },
- isem: function (n) {
- return isunit(n, 'em');
- },
- isunit: isunit,
- unit: function (val, unit) {
- if (!(val instanceof Dimension)) {
- throw { type: 'Argument',
- message: "the first argument to unit must be a number".concat(val instanceof Operation ? '. Have you forgotten parenthesis?' : '') };
- }
- if (unit) {
- if (unit instanceof Keyword) {
- unit = unit.value;
- }
- else {
- unit = unit.toCSS();
- }
- }
- else {
- unit = '';
- }
- return new Dimension(val.value, unit);
- },
- 'get-unit': function (n) {
- return new Anonymous(n.unit);
- }
- };
-
- var styleExpression = function (args) {
- var _this = this;
- args = Array.prototype.slice.call(args);
- switch (args.length) {
- case 0: throw { type: 'Argument', message: 'one or more arguments required' };
- }
- var entityList = [new Variable(args[0].value, this.index, this.currentFileInfo).eval(this.context)];
- args = entityList.map(function (a) { return a.toCSS(_this.context); }).join(this.context.compress ? ',' : ', ');
- return new Variable("style(".concat(args, ")"));
- };
- var style$1 = {
- style: function () {
- var args = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- args[_i] = arguments[_i];
- }
- try {
- return styleExpression.call(this, args);
- }
- catch (e) { }
- },
- };
-
- var functions = (function (environment) {
- var functions = { functionRegistry: functionRegistry, functionCaller: functionCaller };
- // register functions
- functionRegistry.addMultiple(boolean$1);
- functionRegistry.add('default', defaultFunc.eval.bind(defaultFunc));
- functionRegistry.addMultiple(color);
- functionRegistry.addMultiple(colorBlend);
- functionRegistry.addMultiple(dataUri(environment));
- functionRegistry.addMultiple(list);
- functionRegistry.addMultiple(mathFunctions);
- functionRegistry.addMultiple(number);
- functionRegistry.addMultiple(string);
- functionRegistry.addMultiple(svg());
- functionRegistry.addMultiple(types);
- functionRegistry.addMultiple(style$1);
- return functions;
- });
-
- function transformTree (root, options) {
- options = options || {};
- var evaldRoot;
- var variables = options.variables;
- var evalEnv = new contexts.Eval(options);
- //
- // Allows setting variables with a hash, so:
- //
- // `{ color: new tree.Color('#f01') }` will become:
- //
- // new tree.Declaration('@color',
- // new tree.Value([
- // new tree.Expression([
- // new tree.Color('#f01')
- // ])
- // ])
- // )
- //
- if (typeof variables === 'object' && !Array.isArray(variables)) {
- variables = Object.keys(variables).map(function (k) {
- var value = variables[k];
- if (!(value instanceof tree.Value)) {
- if (!(value instanceof tree.Expression)) {
- value = new tree.Expression([value]);
- }
- value = new tree.Value([value]);
- }
- return new tree.Declaration("@".concat(k), value, false, null, 0);
- });
- evalEnv.frames = [new tree.Ruleset(null, variables)];
- }
- var visitors$1 = [
- new visitors.JoinSelectorVisitor(),
- new visitors.MarkVisibleSelectorsVisitor(true),
- new visitors.ExtendVisitor(),
- new visitors.ToCSSVisitor({ compress: Boolean(options.compress) })
- ];
- var preEvalVisitors = [];
- var v;
- var visitorIterator;
- /**
- * first() / get() allows visitors to be added while visiting
- *
- * @todo Add scoping for visitors just like functions for @plugin; right now they're global
- */
- if (options.pluginManager) {
- visitorIterator = options.pluginManager.visitor();
- for (var i_1 = 0; i_1 < 2; i_1++) {
- visitorIterator.first();
- while ((v = visitorIterator.get())) {
- if (v.isPreEvalVisitor) {
- if (i_1 === 0 || preEvalVisitors.indexOf(v) === -1) {
- preEvalVisitors.push(v);
- v.run(root);
- }
- }
- else {
- if (i_1 === 0 || visitors$1.indexOf(v) === -1) {
- if (v.isPreVisitor) {
- visitors$1.unshift(v);
- }
- else {
- visitors$1.push(v);
- }
- }
- }
- }
- }
- }
- evaldRoot = root.eval(evalEnv);
- for (var i_2 = 0; i_2 < visitors$1.length; i_2++) {
- visitors$1[i_2].run(evaldRoot);
- }
- // Run any remaining visitors added after eval pass
- if (options.pluginManager) {
- visitorIterator.first();
- while ((v = visitorIterator.get())) {
- if (visitors$1.indexOf(v) === -1 && preEvalVisitors.indexOf(v) === -1) {
- v.run(evaldRoot);
- }
- }
- }
- return evaldRoot;
- }
-
- /**
- * Plugin Manager
- */
- var PluginManager = /** @class */ (function () {
- function PluginManager(less) {
- this.less = less;
- this.visitors = [];
- this.preProcessors = [];
- this.postProcessors = [];
- this.installedPlugins = [];
- this.fileManagers = [];
- this.iterator = -1;
- this.pluginCache = {};
- this.Loader = new less.PluginLoader(less);
- }
- /**
- * Adds all the plugins in the array
- * @param {Array} plugins
- */
- PluginManager.prototype.addPlugins = function (plugins) {
- if (plugins) {
- for (var i_1 = 0; i_1 < plugins.length; i_1++) {
- this.addPlugin(plugins[i_1]);
- }
- }
- };
- /**
- *
- * @param plugin
- * @param {String} filename
- */
- PluginManager.prototype.addPlugin = function (plugin, filename, functionRegistry) {
- this.installedPlugins.push(plugin);
- if (filename) {
- this.pluginCache[filename] = plugin;
- }
- if (plugin.install) {
- plugin.install(this.less, this, functionRegistry || this.less.functions.functionRegistry);
- }
- };
- /**
- *
- * @param filename
- */
- PluginManager.prototype.get = function (filename) {
- return this.pluginCache[filename];
- };
- /**
- * Adds a visitor. The visitor object has options on itself to determine
- * when it should run.
- * @param visitor
- */
- PluginManager.prototype.addVisitor = function (visitor) {
- this.visitors.push(visitor);
- };
- /**
- * Adds a pre processor object
- * @param {object} preProcessor
- * @param {number} priority - guidelines 1 = before import, 1000 = import, 2000 = after import
- */
- PluginManager.prototype.addPreProcessor = function (preProcessor, priority) {
- var indexToInsertAt;
- for (indexToInsertAt = 0; indexToInsertAt < this.preProcessors.length; indexToInsertAt++) {
- if (this.preProcessors[indexToInsertAt].priority >= priority) {
- break;
- }
- }
- this.preProcessors.splice(indexToInsertAt, 0, { preProcessor: preProcessor, priority: priority });
- };
- /**
- * Adds a post processor object
- * @param {object} postProcessor
- * @param {number} priority - guidelines 1 = before compression, 1000 = compression, 2000 = after compression
- */
- PluginManager.prototype.addPostProcessor = function (postProcessor, priority) {
- var indexToInsertAt;
- for (indexToInsertAt = 0; indexToInsertAt < this.postProcessors.length; indexToInsertAt++) {
- if (this.postProcessors[indexToInsertAt].priority >= priority) {
- break;
- }
- }
- this.postProcessors.splice(indexToInsertAt, 0, { postProcessor: postProcessor, priority: priority });
- };
- /**
- *
- * @param manager
- */
- PluginManager.prototype.addFileManager = function (manager) {
- this.fileManagers.push(manager);
- };
- /**
- *
- * @returns {Array}
- * @private
- */
- PluginManager.prototype.getPreProcessors = function () {
- var preProcessors = [];
- for (var i_2 = 0; i_2 < this.preProcessors.length; i_2++) {
- preProcessors.push(this.preProcessors[i_2].preProcessor);
- }
- return preProcessors;
- };
- /**
- *
- * @returns {Array}
- * @private
- */
- PluginManager.prototype.getPostProcessors = function () {
- var postProcessors = [];
- for (var i_3 = 0; i_3 < this.postProcessors.length; i_3++) {
- postProcessors.push(this.postProcessors[i_3].postProcessor);
- }
- return postProcessors;
- };
- /**
- *
- * @returns {Array}
- * @private
- */
- PluginManager.prototype.getVisitors = function () {
- return this.visitors;
- };
- PluginManager.prototype.visitor = function () {
- var self = this;
- return {
- first: function () {
- self.iterator = -1;
- return self.visitors[self.iterator];
- },
- get: function () {
- self.iterator += 1;
- return self.visitors[self.iterator];
- }
- };
- };
- /**
- *
- * @returns {Array}
- * @private
- */
- PluginManager.prototype.getFileManagers = function () {
- return this.fileManagers;
- };
- return PluginManager;
- }());
- var pm;
- var PluginManagerFactory = function (less, newFactory) {
- if (newFactory || !pm) {
- pm = new PluginManager(less);
- }
- return pm;
- };
-
- function SourceMapOutput (environment) {
- var SourceMapOutput = /** @class */ (function () {
- function SourceMapOutput(options) {
- this._css = [];
- this._rootNode = options.rootNode;
- this._contentsMap = options.contentsMap;
- this._contentsIgnoredCharsMap = options.contentsIgnoredCharsMap;
- if (options.sourceMapFilename) {
- this._sourceMapFilename = options.sourceMapFilename.replace(/\\/g, '/');
- }
- this._outputFilename = options.outputFilename;
- this.sourceMapURL = options.sourceMapURL;
- if (options.sourceMapBasepath) {
- this._sourceMapBasepath = options.sourceMapBasepath.replace(/\\/g, '/');
- }
- if (options.sourceMapRootpath) {
- this._sourceMapRootpath = options.sourceMapRootpath.replace(/\\/g, '/');
- if (this._sourceMapRootpath.charAt(this._sourceMapRootpath.length - 1) !== '/') {
- this._sourceMapRootpath += '/';
- }
- }
- else {
- this._sourceMapRootpath = '';
- }
- this._outputSourceFiles = options.outputSourceFiles;
- this._sourceMapGeneratorConstructor = environment.getSourceMapGenerator();
- this._lineNumber = 0;
- this._column = 0;
- }
- SourceMapOutput.prototype.removeBasepath = function (path) {
- if (this._sourceMapBasepath && path.indexOf(this._sourceMapBasepath) === 0) {
- path = path.substring(this._sourceMapBasepath.length);
- if (path.charAt(0) === '\\' || path.charAt(0) === '/') {
- path = path.substring(1);
- }
- }
- return path;
- };
- SourceMapOutput.prototype.normalizeFilename = function (filename) {
- filename = filename.replace(/\\/g, '/');
- filename = this.removeBasepath(filename);
- return (this._sourceMapRootpath || '') + filename;
- };
- SourceMapOutput.prototype.add = function (chunk, fileInfo, index, mapLines) {
- // ignore adding empty strings
- if (!chunk) {
- return;
- }
- var lines, sourceLines, columns, sourceColumns, i;
- if (fileInfo && fileInfo.filename) {
- var inputSource = this._contentsMap[fileInfo.filename];
- // remove vars/banner added to the top of the file
- if (this._contentsIgnoredCharsMap[fileInfo.filename]) {
- // adjust the index
- index -= this._contentsIgnoredCharsMap[fileInfo.filename];
- if (index < 0) {
- index = 0;
- }
- // adjust the source
- inputSource = inputSource.slice(this._contentsIgnoredCharsMap[fileInfo.filename]);
- }
- /**
- * ignore empty content, or failsafe
- * if contents map is incorrect
- */
- if (inputSource === undefined) {
- this._css.push(chunk);
- return;
- }
- inputSource = inputSource.substring(0, index);
- sourceLines = inputSource.split('\n');
- sourceColumns = sourceLines[sourceLines.length - 1];
- }
- lines = chunk.split('\n');
- columns = lines[lines.length - 1];
- if (fileInfo && fileInfo.filename) {
- if (!mapLines) {
- this._sourceMapGenerator.addMapping({ generated: { line: this._lineNumber + 1, column: this._column },
- original: { line: sourceLines.length, column: sourceColumns.length },
- source: this.normalizeFilename(fileInfo.filename) });
- }
- else {
- for (i = 0; i < lines.length; i++) {
- this._sourceMapGenerator.addMapping({ generated: { line: this._lineNumber + i + 1, column: i === 0 ? this._column : 0 },
- original: { line: sourceLines.length + i, column: i === 0 ? sourceColumns.length : 0 },
- source: this.normalizeFilename(fileInfo.filename) });
- }
- }
- }
- if (lines.length === 1) {
- this._column += columns.length;
- }
- else {
- this._lineNumber += lines.length - 1;
- this._column = columns.length;
- }
- this._css.push(chunk);
- };
- SourceMapOutput.prototype.isEmpty = function () {
- return this._css.length === 0;
- };
- SourceMapOutput.prototype.toCSS = function (context) {
- this._sourceMapGenerator = new this._sourceMapGeneratorConstructor({ file: this._outputFilename, sourceRoot: null });
- if (this._outputSourceFiles) {
- for (var filename in this._contentsMap) {
- // eslint-disable-next-line no-prototype-builtins
- if (this._contentsMap.hasOwnProperty(filename)) {
- var source = this._contentsMap[filename];
- if (this._contentsIgnoredCharsMap[filename]) {
- source = source.slice(this._contentsIgnoredCharsMap[filename]);
- }
- this._sourceMapGenerator.setSourceContent(this.normalizeFilename(filename), source);
- }
- }
- }
- this._rootNode.genCSS(context, this);
- if (this._css.length > 0) {
- var sourceMapURL = void 0;
- var sourceMapContent = JSON.stringify(this._sourceMapGenerator.toJSON());
- if (this.sourceMapURL) {
- sourceMapURL = this.sourceMapURL;
- }
- else if (this._sourceMapFilename) {
- sourceMapURL = this._sourceMapFilename;
- }
- this.sourceMapURL = sourceMapURL;
- this.sourceMap = sourceMapContent;
- }
- return this._css.join('');
- };
- return SourceMapOutput;
- }());
- return SourceMapOutput;
- }
-
- function SourceMapBuilder (SourceMapOutput, environment) {
- var SourceMapBuilder = /** @class */ (function () {
- function SourceMapBuilder(options) {
- this.options = options;
- }
- SourceMapBuilder.prototype.toCSS = function (rootNode, options, imports) {
- var sourceMapOutput = new SourceMapOutput({
- contentsIgnoredCharsMap: imports.contentsIgnoredChars,
- rootNode: rootNode,
- contentsMap: imports.contents,
- sourceMapFilename: this.options.sourceMapFilename,
- sourceMapURL: this.options.sourceMapURL,
- outputFilename: this.options.sourceMapOutputFilename,
- sourceMapBasepath: this.options.sourceMapBasepath,
- sourceMapRootpath: this.options.sourceMapRootpath,
- outputSourceFiles: this.options.outputSourceFiles,
- sourceMapGenerator: this.options.sourceMapGenerator,
- sourceMapFileInline: this.options.sourceMapFileInline,
- disableSourcemapAnnotation: this.options.disableSourcemapAnnotation
- });
- var css = sourceMapOutput.toCSS(options);
- this.sourceMap = sourceMapOutput.sourceMap;
- this.sourceMapURL = sourceMapOutput.sourceMapURL;
- if (this.options.sourceMapInputFilename) {
- this.sourceMapInputFilename = sourceMapOutput.normalizeFilename(this.options.sourceMapInputFilename);
- }
- if (this.options.sourceMapBasepath !== undefined && this.sourceMapURL !== undefined) {
- this.sourceMapURL = sourceMapOutput.removeBasepath(this.sourceMapURL);
- }
- return css + this.getCSSAppendage();
- };
- SourceMapBuilder.prototype.getCSSAppendage = function () {
- var sourceMapURL = this.sourceMapURL;
- if (this.options.sourceMapFileInline) {
- if (this.sourceMap === undefined) {
- return '';
- }
- sourceMapURL = "data:application/json;base64,".concat(environment.encodeBase64(this.sourceMap));
- }
- if (this.options.disableSourcemapAnnotation) {
- return '';
- }
- if (sourceMapURL) {
- return "/*# sourceMappingURL=".concat(sourceMapURL, " */");
- }
- return '';
- };
- SourceMapBuilder.prototype.getExternalSourceMap = function () {
- return this.sourceMap;
- };
- SourceMapBuilder.prototype.setExternalSourceMap = function (sourceMap) {
- this.sourceMap = sourceMap;
- };
- SourceMapBuilder.prototype.isInline = function () {
- return this.options.sourceMapFileInline;
- };
- SourceMapBuilder.prototype.getSourceMapURL = function () {
- return this.sourceMapURL;
- };
- SourceMapBuilder.prototype.getOutputFilename = function () {
- return this.options.sourceMapOutputFilename;
- };
- SourceMapBuilder.prototype.getInputFilename = function () {
- return this.sourceMapInputFilename;
- };
- return SourceMapBuilder;
- }());
- return SourceMapBuilder;
- }
-
- function ParseTree (SourceMapBuilder) {
- var ParseTree = /** @class */ (function () {
- function ParseTree(root, imports) {
- this.root = root;
- this.imports = imports;
- }
- ParseTree.prototype.toCSS = function (options) {
- var evaldRoot;
- var result = {};
- var sourceMapBuilder;
- try {
- evaldRoot = transformTree(this.root, options);
- }
- catch (e) {
- throw new LessError(e, this.imports);
- }
- try {
- var compress = Boolean(options.compress);
- if (compress) {
- logger$1.warn('The compress option has been deprecated. ' +
- 'We recommend you use a dedicated css minifier, for instance see less-plugin-clean-css.');
- }
- var toCSSOptions = {
- compress: compress,
- dumpLineNumbers: options.dumpLineNumbers,
- strictUnits: Boolean(options.strictUnits),
- numPrecision: 8
- };
- if (options.sourceMap) {
- sourceMapBuilder = new SourceMapBuilder(options.sourceMap);
- result.css = sourceMapBuilder.toCSS(evaldRoot, toCSSOptions, this.imports);
- }
- else {
- result.css = evaldRoot.toCSS(toCSSOptions);
- }
- }
- catch (e) {
- throw new LessError(e, this.imports);
- }
- if (options.pluginManager) {
- var postProcessors = options.pluginManager.getPostProcessors();
- for (var i_1 = 0; i_1 < postProcessors.length; i_1++) {
- result.css = postProcessors[i_1].process(result.css, { sourceMap: sourceMapBuilder, options: options, imports: this.imports });
- }
- }
- if (options.sourceMap) {
- result.map = sourceMapBuilder.getExternalSourceMap();
- }
- result.imports = [];
- for (var file_1 in this.imports.files) {
- if (Object.prototype.hasOwnProperty.call(this.imports.files, file_1) && file_1 !== this.imports.rootFilename) {
- result.imports.push(file_1);
- }
- }
- return result;
- };
- return ParseTree;
- }());
- return ParseTree;
- }
-
- function ImportManager (environment) {
- // FileInfo = {
- // 'rewriteUrls' - option - whether to adjust URL's to be relative
- // 'filename' - full resolved filename of current file
- // 'rootpath' - path to append to normal URLs for this node
- // 'currentDirectory' - path to the current file, absolute
- // 'rootFilename' - filename of the base file
- // 'entryPath' - absolute path to the entry file
- // 'reference' - whether the file should not be output and only output parts that are referenced
- var ImportManager = /** @class */ (function () {
- function ImportManager(less, context, rootFileInfo) {
- this.less = less;
- this.rootFilename = rootFileInfo.filename;
- this.paths = context.paths || []; // Search paths, when importing
- this.contents = {}; // map - filename to contents of all the files
- this.contentsIgnoredChars = {}; // map - filename to lines at the beginning of each file to ignore
- this.mime = context.mime;
- this.error = null;
- this.context = context;
- // Deprecated? Unused outside of here, could be useful.
- this.queue = []; // Files which haven't been imported yet
- this.files = {}; // Holds the imported parse trees.
- }
- /**
- * Add an import to be imported
- * @param path - the raw path
- * @param tryAppendExtension - whether to try appending a file extension (.less or .js if the path has no extension)
- * @param currentFileInfo - the current file info (used for instance to work out relative paths)
- * @param importOptions - import options
- * @param callback - callback for when it is imported
- */
- ImportManager.prototype.push = function (path, tryAppendExtension, currentFileInfo, importOptions, callback) {
- var importManager = this, pluginLoader = this.context.pluginManager.Loader;
- this.queue.push(path);
- var fileParsedFunc = function (e, root, fullPath) {
- importManager.queue.splice(importManager.queue.indexOf(path), 1); // Remove the path from the queue
- var importedEqualsRoot = fullPath === importManager.rootFilename;
- if (importOptions.optional && e) {
- callback(null, { rules: [] }, false, null);
- logger$1.info("The file ".concat(fullPath, " was skipped because it was not found and the import was marked optional."));
- }
- else {
- // Inline imports aren't cached here.
- // If we start to cache them, please make sure they won't conflict with non-inline imports of the
- // same name as they used to do before this comment and the condition below have been added.
- if (!importManager.files[fullPath] && !importOptions.inline) {
- importManager.files[fullPath] = { root: root, options: importOptions };
- }
- if (e && !importManager.error) {
- importManager.error = e;
- }
- callback(e, root, importedEqualsRoot, fullPath);
- }
- };
- var newFileInfo = {
- rewriteUrls: this.context.rewriteUrls,
- entryPath: currentFileInfo.entryPath,
- rootpath: currentFileInfo.rootpath,
- rootFilename: currentFileInfo.rootFilename
- };
- var fileManager = environment.getFileManager(path, currentFileInfo.currentDirectory, this.context, environment);
- if (!fileManager) {
- fileParsedFunc({ message: "Could not find a file-manager for ".concat(path) });
- return;
- }
- var loadFileCallback = function (loadedFile) {
- var plugin;
- var resolvedFilename = loadedFile.filename;
- var contents = loadedFile.contents.replace(/^\uFEFF/, '');
- // Pass on an updated rootpath if path of imported file is relative and file
- // is in a (sub|sup) directory
- //
- // Examples:
- // - If path of imported file is 'module/nav/nav.less' and rootpath is 'less/',
- // then rootpath should become 'less/module/nav/'
- // - If path of imported file is '../mixins.less' and rootpath is 'less/',
- // then rootpath should become 'less/../'
- newFileInfo.currentDirectory = fileManager.getPath(resolvedFilename);
- if (newFileInfo.rewriteUrls) {
- newFileInfo.rootpath = fileManager.join((importManager.context.rootpath || ''), fileManager.pathDiff(newFileInfo.currentDirectory, newFileInfo.entryPath));
- if (!fileManager.isPathAbsolute(newFileInfo.rootpath) && fileManager.alwaysMakePathsAbsolute()) {
- newFileInfo.rootpath = fileManager.join(newFileInfo.entryPath, newFileInfo.rootpath);
- }
- }
- newFileInfo.filename = resolvedFilename;
- var newEnv = new contexts.Parse(importManager.context);
- newEnv.processImports = false;
- importManager.contents[resolvedFilename] = contents;
- if (currentFileInfo.reference || importOptions.reference) {
- newFileInfo.reference = true;
- }
- if (importOptions.isPlugin) {
- plugin = pluginLoader.evalPlugin(contents, newEnv, importManager, importOptions.pluginArgs, newFileInfo);
- if (plugin instanceof LessError) {
- fileParsedFunc(plugin, null, resolvedFilename);
- }
- else {
- fileParsedFunc(null, plugin, resolvedFilename);
- }
- }
- else if (importOptions.inline) {
- fileParsedFunc(null, contents, resolvedFilename);
- }
- else {
- // import (multiple) parse trees apparently get altered and can't be cached.
- // TODO: investigate why this is
- if (importManager.files[resolvedFilename]
- && !importManager.files[resolvedFilename].options.multiple
- && !importOptions.multiple) {
- fileParsedFunc(null, importManager.files[resolvedFilename].root, resolvedFilename);
- }
- else {
- new Parser(newEnv, importManager, newFileInfo).parse(contents, function (e, root) {
- fileParsedFunc(e, root, resolvedFilename);
- });
- }
- }
- };
- var loadedFile;
- var promise;
- var context = clone(this.context);
- if (tryAppendExtension) {
- context.ext = importOptions.isPlugin ? '.js' : '.less';
- }
- if (importOptions.isPlugin) {
- context.mime = 'application/javascript';
- if (context.syncImport) {
- loadedFile = pluginLoader.loadPluginSync(path, currentFileInfo.currentDirectory, context, environment, fileManager);
- }
- else {
- promise = pluginLoader.loadPlugin(path, currentFileInfo.currentDirectory, context, environment, fileManager);
- }
- }
- else {
- if (context.syncImport) {
- loadedFile = fileManager.loadFileSync(path, currentFileInfo.currentDirectory, context, environment);
- }
- else {
- promise = fileManager.loadFile(path, currentFileInfo.currentDirectory, context, environment, function (err, loadedFile) {
- if (err) {
- fileParsedFunc(err);
- }
- else {
- loadFileCallback(loadedFile);
- }
- });
- }
- }
- if (loadedFile) {
- if (!loadedFile.filename) {
- fileParsedFunc(loadedFile);
- }
- else {
- loadFileCallback(loadedFile);
- }
- }
- else if (promise) {
- promise.then(loadFileCallback, fileParsedFunc);
- }
- };
- return ImportManager;
- }());
- return ImportManager;
- }
-
- function Parse (environment, ParseTree, ImportManager) {
- var parse = function (input, options, callback) {
- if (typeof options === 'function') {
- callback = options;
- options = copyOptions(this.options, {});
- }
- else {
- options = copyOptions(this.options, options || {});
- }
- if (!callback) {
- var self_1 = this;
- return new Promise(function (resolve, reject) {
- parse.call(self_1, input, options, function (err, output) {
- if (err) {
- reject(err);
- }
- else {
- resolve(output);
- }
- });
- });
- }
- else {
- var context_1;
- var rootFileInfo = void 0;
- var pluginManager_1 = new PluginManagerFactory(this, !options.reUsePluginManager);
- options.pluginManager = pluginManager_1;
- context_1 = new contexts.Parse(options);
- if (options.rootFileInfo) {
- rootFileInfo = options.rootFileInfo;
- }
- else {
- var filename = options.filename || 'input';
- var entryPath = filename.replace(/[^/\\]*$/, '');
- rootFileInfo = {
- filename: filename,
- rewriteUrls: context_1.rewriteUrls,
- rootpath: context_1.rootpath || '',
- currentDirectory: entryPath,
- entryPath: entryPath,
- rootFilename: filename
- };
- // add in a missing trailing slash
- if (rootFileInfo.rootpath && rootFileInfo.rootpath.slice(-1) !== '/') {
- rootFileInfo.rootpath += '/';
- }
- }
- var imports_1 = new ImportManager(this, context_1, rootFileInfo);
- this.importManager = imports_1;
- // TODO: allow the plugins to be just a list of paths or names
- // Do an async plugin queue like lessc
- if (options.plugins) {
- options.plugins.forEach(function (plugin) {
- var evalResult, contents;
- if (plugin.fileContent) {
- contents = plugin.fileContent.replace(/^\uFEFF/, '');
- evalResult = pluginManager_1.Loader.evalPlugin(contents, context_1, imports_1, plugin.options, plugin.filename);
- if (evalResult instanceof LessError) {
- return callback(evalResult);
- }
- }
- else {
- pluginManager_1.addPlugin(plugin);
- }
- });
- }
- new Parser(context_1, imports_1, rootFileInfo)
- .parse(input, function (e, root) {
- if (e) {
- return callback(e);
- }
- callback(null, root, imports_1, options);
- }, options);
- }
- };
- return parse;
- }
-
- function Render (environment, ParseTree) {
- var render = function (input, options, callback) {
- if (typeof options === 'function') {
- callback = options;
- options = copyOptions(this.options, {});
- }
- else {
- options = copyOptions(this.options, options || {});
- }
- if (!callback) {
- var self_1 = this;
- return new Promise(function (resolve, reject) {
- render.call(self_1, input, options, function (err, output) {
- if (err) {
- reject(err);
- }
- else {
- resolve(output);
- }
- });
- });
- }
- else {
- this.parse(input, options, function (err, root, imports, options) {
- if (err) {
- return callback(err);
- }
- var result;
- try {
- var parseTree = new ParseTree(root, imports);
- result = parseTree.toCSS(options);
- }
- catch (err) {
- return callback(err);
- }
- callback(null, result);
- });
- }
- };
- return render;
- }
-
- var version = "4.2.2";
-
- function parseNodeVersion(version) {
- var match = version.match(/^v(\d{1,2})\.(\d{1,2})\.(\d{1,2})(?:-([0-9A-Za-z-.]+))?(?:\+([0-9A-Za-z-.]+))?$/); // eslint-disable-line max-len
- if (!match) {
- throw new Error('Unable to parse: ' + version);
- }
- var res = {
- major: parseInt(match[1], 10),
- minor: parseInt(match[2], 10),
- patch: parseInt(match[3], 10),
- pre: match[4] || '',
- build: match[5] || '',
- };
- return res;
- }
- var parseNodeVersion_1 = parseNodeVersion;
-
- function lessRoot (environment, fileManagers) {
- var sourceMapOutput, sourceMapBuilder, parseTree, importManager;
- environment = new Environment(environment, fileManagers);
- sourceMapOutput = SourceMapOutput(environment);
- sourceMapBuilder = SourceMapBuilder(sourceMapOutput, environment);
- parseTree = ParseTree(sourceMapBuilder);
- importManager = ImportManager(environment);
- var render = Render(environment, parseTree);
- var parse = Parse(environment, parseTree, importManager);
- var v = parseNodeVersion_1("v".concat(version));
- var initial = {
- version: [v.major, v.minor, v.patch],
- data: data,
- tree: tree,
- Environment: Environment,
- AbstractFileManager: AbstractFileManager,
- AbstractPluginLoader: AbstractPluginLoader,
- environment: environment,
- visitors: visitors,
- Parser: Parser,
- functions: functions(environment),
- contexts: contexts,
- SourceMapOutput: sourceMapOutput,
- SourceMapBuilder: sourceMapBuilder,
- ParseTree: parseTree,
- ImportManager: importManager,
- render: render,
- parse: parse,
- LessError: LessError,
- transformTree: transformTree,
- utils: utils,
- PluginManager: PluginManagerFactory,
- logger: logger$1
- };
- // Create a public API
- var ctor = function (t) {
- return function () {
- var obj = Object.create(t.prototype);
- t.apply(obj, Array.prototype.slice.call(arguments, 0));
- return obj;
- };
- };
- var t;
- var api = Object.create(initial);
- for (var n in initial.tree) {
- /* eslint guard-for-in: 0 */
- t = initial.tree[n];
- if (typeof t === 'function') {
- api[n.toLowerCase()] = ctor(t);
- }
- else {
- api[n] = Object.create(null);
- for (var o in t) {
- /* eslint guard-for-in: 0 */
- api[n][o.toLowerCase()] = ctor(t[o]);
- }
- }
- }
- /**
- * Some of the functions assume a `this` context of the API object,
- * which causes it to fail when wrapped for ES6 imports.
- *
- * An assumed `this` should be removed in the future.
- */
- initial.parse = initial.parse.bind(api);
- initial.render = initial.render.bind(api);
- return api;
- }
-
- var options$1;
- var logger;
- var fileCache = {};
- // TODOS - move log somewhere. pathDiff and doing something similar in node. use pathDiff in the other browser file for the initial load
- var FileManager = function () { };
- FileManager.prototype = Object.assign(new AbstractFileManager(), {
- alwaysMakePathsAbsolute: function () {
- return true;
- },
- join: function (basePath, laterPath) {
- if (!basePath) {
- return laterPath;
- }
- return this.extractUrlParts(laterPath, basePath).path;
- },
- doXHR: function (url, type, callback, errback) {
- var xhr = new XMLHttpRequest();
- var async = options$1.isFileProtocol ? options$1.fileAsync : true;
- if (typeof xhr.overrideMimeType === 'function') {
- xhr.overrideMimeType('text/css');
- }
- logger.debug("XHR: Getting '".concat(url, "'"));
- xhr.open('GET', url, async);
- xhr.setRequestHeader('Accept', type || 'text/x-less, text/css; q=0.9, */*; q=0.5');
- xhr.send(null);
- function handleResponse(xhr, callback, errback) {
- if (xhr.status >= 200 && xhr.status < 300) {
- callback(xhr.responseText, xhr.getResponseHeader('Last-Modified'));
- }
- else if (typeof errback === 'function') {
- errback(xhr.status, url);
- }
- }
- if (options$1.isFileProtocol && !options$1.fileAsync) {
- if (xhr.status === 0 || (xhr.status >= 200 && xhr.status < 300)) {
- callback(xhr.responseText);
- }
- else {
- errback(xhr.status, url);
- }
- }
- else if (async) {
- xhr.onreadystatechange = function () {
- if (xhr.readyState == 4) {
- handleResponse(xhr, callback, errback);
- }
- };
- }
- else {
- handleResponse(xhr, callback, errback);
- }
- },
- supports: function () {
- return true;
- },
- clearFileCache: function () {
- fileCache = {};
- },
- loadFile: function (filename, currentDirectory, options) {
- // TODO: Add prefix support like less-node?
- // What about multiple paths?
- if (currentDirectory && !this.isPathAbsolute(filename)) {
- filename = currentDirectory + filename;
- }
- filename = options.ext ? this.tryAppendExtension(filename, options.ext) : filename;
- options = options || {};
- // sheet may be set to the stylesheet for the initial load or a collection of properties including
- // some context variables for imports
- var hrefParts = this.extractUrlParts(filename, window.location.href);
- var href = hrefParts.url;
- var self = this;
- return new Promise(function (resolve, reject) {
- if (options.useFileCache && fileCache[href]) {
- try {
- var lessText_1 = fileCache[href];
- return resolve({ contents: lessText_1, filename: href, webInfo: { lastModified: new Date() } });
- }
- catch (e) {
- return reject({ filename: href, message: "Error loading file ".concat(href, " error was ").concat(e.message) });
- }
- }
- self.doXHR(href, options.mime, function doXHRCallback(data, lastModified) {
- // per file cache
- fileCache[href] = data;
- // Use remote copy (re-parse)
- resolve({ contents: data, filename: href, webInfo: { lastModified: lastModified } });
- }, function doXHRError(status, url) {
- reject({ type: 'File', message: "'".concat(url, "' wasn't found (").concat(status, ")"), href: href });
- });
- });
- }
- });
- var FM = (function (opts, log) {
- options$1 = opts;
- logger = log;
- return FileManager;
- });
-
- /**
- * @todo Add tests for browser `@plugin`
- */
- /**
- * Browser Plugin Loader
- */
- var PluginLoader = function (less) {
- this.less = less;
- // Should we shim this.require for browser? Probably not?
- };
- PluginLoader.prototype = Object.assign(new AbstractPluginLoader(), {
- loadPlugin: function (filename, basePath, context, environment, fileManager) {
- return new Promise(function (fulfill, reject) {
- fileManager.loadFile(filename, basePath, context, environment)
- .then(fulfill).catch(reject);
- });
- }
- });
-
- var LogListener = (function (less, options) {
- var logLevel_debug = 4;
- var logLevel_info = 3;
- var logLevel_warn = 2;
- var logLevel_error = 1;
- // The amount of logging in the javascript console.
- // 3 - Debug, information and errors
- // 2 - Information and errors
- // 1 - Errors
- // 0 - None
- // Defaults to 2
- options.logLevel = typeof options.logLevel !== 'undefined' ? options.logLevel : (options.env === 'development' ? logLevel_info : logLevel_error);
- if (!options.loggers) {
- options.loggers = [{
- debug: function (msg) {
- if (options.logLevel >= logLevel_debug) {
- console.log(msg);
- }
- },
- info: function (msg) {
- if (options.logLevel >= logLevel_info) {
- console.log(msg);
- }
- },
- warn: function (msg) {
- if (options.logLevel >= logLevel_warn) {
- console.warn(msg);
- }
- },
- error: function (msg) {
- if (options.logLevel >= logLevel_error) {
- console.error(msg);
- }
- }
- }];
- }
- for (var i_1 = 0; i_1 < options.loggers.length; i_1++) {
- less.logger.addListener(options.loggers[i_1]);
- }
- });
-
- var ErrorReporting = (function (window, less, options) {
- function errorHTML(e, rootHref) {
- var id = "less-error-message:".concat(extractId(rootHref || ''));
- var template = '{line} {content} ';
- var elem = window.document.createElement('div');
- var timer;
- var content;
- var errors = [];
- var filename = e.filename || rootHref;
- var filenameNoPath = filename.match(/([^/]+(\?.*)?)$/)[1];
- elem.id = id;
- elem.className = 'less-error-message';
- content = "".concat(e.type || 'Syntax', "Error: ").concat(e.message || 'There is an error in your .less file') +
- " in ").concat(filenameNoPath, " ");
- var errorline = function (e, i, classname) {
- if (e.extract[i] !== undefined) {
- errors.push(template.replace(/\{line\}/, (parseInt(e.line, 10) || 0) + (i - 1))
- .replace(/\{class\}/, classname)
- .replace(/\{content\}/, e.extract[i]));
- }
- };
- if (e.line) {
- errorline(e, 0, '');
- errorline(e, 1, 'line');
- errorline(e, 2, '');
- content += "on line ".concat(e.line, ", column ").concat(e.column + 1, ":
").concat(errors.join(''), " ");
- }
- if (e.stack && (e.extract || options.logLevel >= 4)) {
- content += " Stack Trace".concat(e.stack.split('\n').slice(1).join(' '));
- }
- elem.innerHTML = content;
- // CSS for error messages
- browser.createCSS(window.document, [
- '.less-error-message ul, .less-error-message li {',
- 'list-style-type: none;',
- 'margin-right: 15px;',
- 'padding: 4px 0;',
- 'margin: 0;',
- '}',
- '.less-error-message label {',
- 'font-size: 12px;',
- 'margin-right: 15px;',
- 'padding: 4px 0;',
- 'color: #cc7777;',
- '}',
- '.less-error-message pre {',
- 'color: #dd6666;',
- 'padding: 4px 0;',
- 'margin: 0;',
- 'display: inline-block;',
- '}',
- '.less-error-message pre.line {',
- 'color: #ff0000;',
- '}',
- '.less-error-message h3 {',
- 'font-size: 20px;',
- 'font-weight: bold;',
- 'padding: 15px 0 5px 0;',
- 'margin: 0;',
- '}',
- '.less-error-message a {',
- 'color: #10a',
- '}',
- '.less-error-message .error {',
- 'color: red;',
- 'font-weight: bold;',
- 'padding-bottom: 2px;',
- 'border-bottom: 1px dashed red;',
- '}'
- ].join('\n'), { title: 'error-message' });
- elem.style.cssText = [
- 'font-family: Arial, sans-serif',
- 'border: 1px solid #e00',
- 'background-color: #eee',
- 'border-radius: 5px',
- '-webkit-border-radius: 5px',
- '-moz-border-radius: 5px',
- 'color: #e00',
- 'padding: 15px',
- 'margin-bottom: 15px'
- ].join(';');
- if (options.env === 'development') {
- timer = setInterval(function () {
- var document = window.document;
- var body = document.body;
- if (body) {
- if (document.getElementById(id)) {
- body.replaceChild(elem, document.getElementById(id));
- }
- else {
- body.insertBefore(elem, body.firstChild);
- }
- clearInterval(timer);
- }
- }, 10);
- }
- }
- function removeErrorHTML(path) {
- var node = window.document.getElementById("less-error-message:".concat(extractId(path)));
- if (node) {
- node.parentNode.removeChild(node);
- }
- }
- function removeError(path) {
- if (!options.errorReporting || options.errorReporting === 'html') {
- removeErrorHTML(path);
- }
- else if (options.errorReporting === 'console') ;
- else if (typeof options.errorReporting === 'function') {
- options.errorReporting('remove', path);
- }
- }
- function errorConsole(e, rootHref) {
- var template = '{line} {content}';
- var filename = e.filename || rootHref;
- var errors = [];
- var content = "".concat(e.type || 'Syntax', "Error: ").concat(e.message || 'There is an error in your .less file', " in ").concat(filename);
- var errorline = function (e, i, classname) {
- if (e.extract[i] !== undefined) {
- errors.push(template.replace(/\{line\}/, (parseInt(e.line, 10) || 0) + (i - 1))
- .replace(/\{class\}/, classname)
- .replace(/\{content\}/, e.extract[i]));
- }
- };
- if (e.line) {
- errorline(e, 0, '');
- errorline(e, 1, 'line');
- errorline(e, 2, '');
- content += " on line ".concat(e.line, ", column ").concat(e.column + 1, ":\n").concat(errors.join('\n'));
- }
- if (e.stack && (e.extract || options.logLevel >= 4)) {
- content += "\nStack Trace\n".concat(e.stack);
- }
- less.logger.error(content);
- }
- function error(e, rootHref) {
- if (!options.errorReporting || options.errorReporting === 'html') {
- errorHTML(e, rootHref);
- }
- else if (options.errorReporting === 'console') {
- errorConsole(e, rootHref);
- }
- else if (typeof options.errorReporting === 'function') {
- options.errorReporting('add', e, rootHref);
- }
- }
- return {
- add: error,
- remove: removeError
- };
- });
-
- // Cache system is a bit outdated and could do with work
- var Cache = (function (window, options, logger) {
- var cache = null;
- if (options.env !== 'development') {
- try {
- cache = (typeof window.localStorage === 'undefined') ? null : window.localStorage;
- }
- catch (_) { }
- }
- return {
- setCSS: function (path, lastModified, modifyVars, styles) {
- if (cache) {
- logger.info("saving ".concat(path, " to cache."));
- try {
- cache.setItem(path, styles);
- cache.setItem("".concat(path, ":timestamp"), lastModified);
- if (modifyVars) {
- cache.setItem("".concat(path, ":vars"), JSON.stringify(modifyVars));
- }
- }
- catch (e) {
- // TODO - could do with adding more robust error handling
- logger.error("failed to save \"".concat(path, "\" to local storage for caching."));
- }
- }
- },
- getCSS: function (path, webInfo, modifyVars) {
- var css = cache && cache.getItem(path);
- var timestamp = cache && cache.getItem("".concat(path, ":timestamp"));
- var vars = cache && cache.getItem("".concat(path, ":vars"));
- modifyVars = modifyVars || {};
- vars = vars || '{}'; // if not set, treat as the JSON representation of an empty object
- if (timestamp && webInfo.lastModified &&
- (new Date(webInfo.lastModified).valueOf() ===
- new Date(timestamp).valueOf()) &&
- JSON.stringify(modifyVars) === vars) {
- // Use local copy
- return css;
- }
- }
- };
- });
-
- var ImageSize = (function () {
- function imageSize() {
- throw {
- type: 'Runtime',
- message: 'Image size functions are not supported in browser version of less'
- };
- }
- var imageFunctions = {
- 'image-size': function (filePathNode) {
- imageSize();
- return -1;
- },
- 'image-width': function (filePathNode) {
- imageSize();
- return -1;
- },
- 'image-height': function (filePathNode) {
- imageSize();
- return -1;
- }
- };
- functionRegistry.addMultiple(imageFunctions);
- });
-
- //
- var root = (function (window, options) {
- var document = window.document;
- var less = lessRoot();
- less.options = options;
- var environment = less.environment;
- var FileManager = FM(options, less.logger);
- var fileManager = new FileManager();
- environment.addFileManager(fileManager);
- less.FileManager = FileManager;
- less.PluginLoader = PluginLoader;
- LogListener(less, options);
- var errors = ErrorReporting(window, less, options);
- var cache = less.cache = options.cache || Cache(window, options, less.logger);
- ImageSize(less.environment);
- // Setup user functions - Deprecate?
- if (options.functions) {
- less.functions.functionRegistry.addMultiple(options.functions);
- }
- var typePattern = /^text\/(x-)?less$/;
- function clone(obj) {
- var cloned = {};
- for (var prop in obj) {
- if (Object.prototype.hasOwnProperty.call(obj, prop)) {
- cloned[prop] = obj[prop];
- }
- }
- return cloned;
- }
- // only really needed for phantom
- function bind(func, thisArg) {
- var curryArgs = Array.prototype.slice.call(arguments, 2);
- return function () {
- var args = curryArgs.concat(Array.prototype.slice.call(arguments, 0));
- return func.apply(thisArg, args);
- };
- }
- function loadStyles(modifyVars) {
- var styles = document.getElementsByTagName('style');
- var style;
- for (var i_1 = 0; i_1 < styles.length; i_1++) {
- style = styles[i_1];
- if (style.type.match(typePattern)) {
- var instanceOptions = clone(options);
- instanceOptions.modifyVars = modifyVars;
- var lessText_1 = style.innerHTML || '';
- instanceOptions.filename = document.location.href.replace(/#.*$/, '');
- /* jshint loopfunc:true */
- // use closure to store current style
- less.render(lessText_1, instanceOptions, bind(function (style, e, result) {
- if (e) {
- errors.add(e, 'inline');
- }
- else {
- style.type = 'text/css';
- if (style.styleSheet) {
- style.styleSheet.cssText = result.css;
- }
- else {
- style.innerHTML = result.css;
- }
- }
- }, null, style));
- }
- }
- }
- function loadStyleSheet(sheet, callback, reload, remaining, modifyVars) {
- var instanceOptions = clone(options);
- addDataAttr(instanceOptions, sheet);
- instanceOptions.mime = sheet.type;
- if (modifyVars) {
- instanceOptions.modifyVars = modifyVars;
- }
- function loadInitialFileCallback(loadedFile) {
- var data = loadedFile.contents;
- var path = loadedFile.filename;
- var webInfo = loadedFile.webInfo;
- var newFileInfo = {
- currentDirectory: fileManager.getPath(path),
- filename: path,
- rootFilename: path,
- rewriteUrls: instanceOptions.rewriteUrls
- };
- newFileInfo.entryPath = newFileInfo.currentDirectory;
- newFileInfo.rootpath = instanceOptions.rootpath || newFileInfo.currentDirectory;
- if (webInfo) {
- webInfo.remaining = remaining;
- var css = cache.getCSS(path, webInfo, instanceOptions.modifyVars);
- if (!reload && css) {
- webInfo.local = true;
- callback(null, css, data, sheet, webInfo, path);
- return;
- }
- }
- // TODO add tests around how this behaves when reloading
- errors.remove(path);
- instanceOptions.rootFileInfo = newFileInfo;
- less.render(data, instanceOptions, function (e, result) {
- if (e) {
- e.href = path;
- callback(e);
- }
- else {
- cache.setCSS(sheet.href, webInfo.lastModified, instanceOptions.modifyVars, result.css);
- callback(null, result.css, data, sheet, webInfo, path);
- }
- });
- }
- fileManager.loadFile(sheet.href, null, instanceOptions, environment)
- .then(function (loadedFile) {
- loadInitialFileCallback(loadedFile);
- }).catch(function (err) {
- console.log(err);
- callback(err);
- });
- }
- function loadStyleSheets(callback, reload, modifyVars) {
- for (var i_2 = 0; i_2 < less.sheets.length; i_2++) {
- loadStyleSheet(less.sheets[i_2], callback, reload, less.sheets.length - (i_2 + 1), modifyVars);
- }
- }
- function initRunningMode() {
- if (less.env === 'development') {
- less.watchTimer = setInterval(function () {
- if (less.watchMode) {
- fileManager.clearFileCache();
- /**
- * @todo remove when this is typed with JSDoc
- */
- // eslint-disable-next-line no-unused-vars
- loadStyleSheets(function (e, css, _, sheet, webInfo) {
- if (e) {
- errors.add(e, e.href || sheet.href);
- }
- else if (css) {
- browser.createCSS(window.document, css, sheet);
- }
- });
- }
- }, options.poll);
- }
- }
- //
- // Watch mode
- //
- less.watch = function () {
- if (!less.watchMode) {
- less.env = 'development';
- initRunningMode();
- }
- this.watchMode = true;
- return true;
- };
- less.unwatch = function () { clearInterval(less.watchTimer); this.watchMode = false; return false; };
- //
- // Synchronously get all tags with the 'rel' attribute set to
- // "stylesheet/less".
- //
- less.registerStylesheetsImmediately = function () {
- var links = document.getElementsByTagName('link');
- less.sheets = [];
- for (var i_3 = 0; i_3 < links.length; i_3++) {
- if (links[i_3].rel === 'stylesheet/less' || (links[i_3].rel.match(/stylesheet/) &&
- (links[i_3].type.match(typePattern)))) {
- less.sheets.push(links[i_3]);
- }
- }
- };
- //
- // Asynchronously get all tags with the 'rel' attribute set to
- // "stylesheet/less", returning a Promise.
- //
- less.registerStylesheets = function () { return new Promise(function (resolve) {
- less.registerStylesheetsImmediately();
- resolve();
- }); };
- //
- // With this function, it's possible to alter variables and re-render
- // CSS without reloading less-files
- //
- less.modifyVars = function (record) { return less.refresh(true, record, false); };
- less.refresh = function (reload, modifyVars, clearFileCache) {
- if ((reload || clearFileCache) && clearFileCache !== false) {
- fileManager.clearFileCache();
- }
- return new Promise(function (resolve, reject) {
- var startTime;
- var endTime;
- var totalMilliseconds;
- var remainingSheets;
- startTime = endTime = new Date();
- // Set counter for remaining unprocessed sheets
- remainingSheets = less.sheets.length;
- if (remainingSheets === 0) {
- endTime = new Date();
- totalMilliseconds = endTime - startTime;
- less.logger.info('Less has finished and no sheets were loaded.');
- resolve({
- startTime: startTime,
- endTime: endTime,
- totalMilliseconds: totalMilliseconds,
- sheets: less.sheets.length
- });
- }
- else {
- // Relies on less.sheets array, callback seems to be guaranteed to be called for every element of the array
- loadStyleSheets(function (e, css, _, sheet, webInfo) {
- if (e) {
- errors.add(e, e.href || sheet.href);
- reject(e);
- return;
- }
- if (webInfo.local) {
- less.logger.info("Loading ".concat(sheet.href, " from cache."));
- }
- else {
- less.logger.info("Rendered ".concat(sheet.href, " successfully."));
- }
- browser.createCSS(window.document, css, sheet);
- less.logger.info("CSS for ".concat(sheet.href, " generated in ").concat(new Date() - endTime, "ms"));
- // Count completed sheet
- remainingSheets--;
- // Check if the last remaining sheet was processed and then call the promise
- if (remainingSheets === 0) {
- totalMilliseconds = new Date() - startTime;
- less.logger.info("Less has finished. CSS generated in ".concat(totalMilliseconds, "ms"));
- resolve({
- startTime: startTime,
- endTime: endTime,
- totalMilliseconds: totalMilliseconds,
- sheets: less.sheets.length
- });
- }
- endTime = new Date();
- }, reload, modifyVars);
- }
- loadStyles(modifyVars);
- });
- };
- less.refreshStyles = loadStyles;
- return less;
- });
-
- /**
- * Kicks off less and compiles any stylesheets
- * used in the browser distributed version of less
- * to kick-start less using the browser api
- */
- var options = defaultOptions();
- if (window.less) {
- for (var key in window.less) {
- if (Object.prototype.hasOwnProperty.call(window.less, key)) {
- options[key] = window.less[key];
- }
- }
- }
- addDefaultOptions(window, options);
- options.plugins = options.plugins || [];
- if (window.LESS_PLUGINS) {
- options.plugins = options.plugins.concat(window.LESS_PLUGINS);
- }
- var less = root(window, options);
- window.less = less;
- var css;
- var head;
- var style;
- // Always restore page visibility
- function resolveOrReject(data) {
- if (data.filename) {
- console.warn(data);
- }
- if (!options.async) {
- head.removeChild(style);
- }
- }
- if (options.onReady) {
- if (/!watch/.test(window.location.hash)) {
- less.watch();
- }
- // Simulate synchronous stylesheet loading by hiding page rendering
- if (!options.async) {
- css = 'body { display: none !important }';
- head = document.head || document.getElementsByTagName('head')[0];
- style = document.createElement('style');
- style.type = 'text/css';
- if (style.styleSheet) {
- style.styleSheet.cssText = css;
- }
- else {
- style.appendChild(document.createTextNode(css));
- }
- head.appendChild(style);
- }
- less.registerStylesheetsImmediately();
- less.pageLoadFinished = less.refresh(less.env === 'development').then(resolveOrReject, resolveOrReject);
- }
-
- return less;
-
-}));
diff --git a/packages/less/dist/less.min.js b/packages/less/dist/less.min.js
deleted file mode 100644
index e59a2f5764..0000000000
--- a/packages/less/dist/less.min.js
+++ /dev/null
@@ -1,11 +0,0 @@
-/**
- * Less - Leaner CSS v4.2.2
- * http://lesscss.org
- *
- * Copyright (c) 2009-2025, Alexis Sellier
- * Licensed under the Apache-2.0 License.
- *
- * @license Apache-2.0
- */
-!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).less=t()}(this,(function(){"use strict";function e(e){return e.replace(/^[a-z-]+:\/+?[^/]+/,"").replace(/[?&]livereload=\w+/,"").replace(/^\//,"").replace(/\.[a-zA-Z]+$/,"").replace(/[^.\w-]+/g,"-").replace(/\./g,":")}function t(e,t){if(t)for(var n in t.dataset)if(Object.prototype.hasOwnProperty.call(t.dataset,n))if("env"===n||"dumpLineNumbers"===n||"rootpath"===n||"errorReporting"===n)e[n]=t.dataset[n];else try{e[n]=JSON.parse(t.dataset[n])}catch(e){}}var n=function(t,n,i){var r=i.href||"",s="less:".concat(i.title||e(r)),o=t.getElementById(s),a=!1,l=t.createElement("style");l.setAttribute("type","text/css"),i.media&&l.setAttribute("media",i.media),l.id=s,l.styleSheet||(l.appendChild(t.createTextNode(n)),a=null!==o&&o.childNodes.length>0&&l.childNodes.length>0&&o.firstChild.nodeValue===l.firstChild.nodeValue);var u=t.getElementsByTagName("head")[0];if(null===o||!1===a){var c=i&&i.nextSibling||null;c?c.parentNode.insertBefore(l,c):u.appendChild(l)}if(o&&!1===a&&o.parentNode.removeChild(o),l.styleSheet)try{l.styleSheet.cssText=n}catch(e){throw new Error("Couldn't reassign styleSheet.cssText.")}},i=function(e){var t,n=e.document;return n.currentScript||(t=n.getElementsByTagName("script"))[t.length-1]},r={error:function(e){this._fireEvent("error",e)},warn:function(e){this._fireEvent("warn",e)},info:function(e){this._fireEvent("info",e)},debug:function(e){this._fireEvent("debug",e)},addListener:function(e){this._listeners.push(e)},removeListener:function(e){for(var t=0;t=0;a--){var l=o[a];if(l[s?"supportsSync":"supports"](e,t,n,i))return l}return null},e.prototype.addFileManager=function(e){this.fileManagers.push(e)},e.prototype.clearFileManagers=function(){this.fileManagers=[]},e}(),o={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgrey:"#a9a9a9",darkgreen:"#006400",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",grey:"#808080",green:"#008000",greenyellow:"#adff2f",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgrey:"#d3d3d3",lightgreen:"#90ee90",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370d8",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#d87093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",rebeccapurple:"#663399",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"},a={length:{m:1,cm:.01,mm:.001,in:.0254,px:.0254/96,pt:.0254/72,pc:.0254/72*12},duration:{s:1,ms:.001},angle:{rad:1/(2*Math.PI),deg:1/360,grad:1/400,turn:1}},l={colors:o,unitConversions:a},u=function(){function e(){this.parent=null,this.visibilityBlocks=void 0,this.nodeVisible=void 0,this.rootNode=null,this.parsed=null}return Object.defineProperty(e.prototype,"currentFileInfo",{get:function(){return this.fileInfo()},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"index",{get:function(){return this.getIndex()},enumerable:!1,configurable:!0}),e.prototype.setParent=function(t,n){function i(t){t&&t instanceof e&&(t.parent=n)}Array.isArray(t)?t.forEach(i):i(t)},e.prototype.getIndex=function(){return this._index||this.parent&&this.parent.getIndex()||0},e.prototype.fileInfo=function(){return this._fileInfo||this.parent&&this.parent.fileInfo()||{}},e.prototype.isRulesetLike=function(){return!1},e.prototype.toCSS=function(e){var t=[];return this.genCSS(e,{add:function(e,n,i){t.push(e)},isEmpty:function(){return 0===t.length}}),t.join("")},e.prototype.genCSS=function(e,t){t.add(this.value)},e.prototype.accept=function(e){this.value=e.visit(this.value)},e.prototype.eval=function(){return this},e.prototype._operate=function(e,t,n,i){switch(t){case"+":return n+i;case"-":return n-i;case"*":return n*i;case"/":return n/i}},e.prototype.fround=function(e,t){var n=e&&e.numPrecision;return n?Number((t+2e-16).toFixed(n)):t},e.compare=function(t,n){if(t.compare&&"Quoted"!==n.type&&"Anonymous"!==n.type)return t.compare(n);if(n.compare)return-n.compare(t);if(t.type===n.type){if(t=t.value,n=n.value,!Array.isArray(t))return t===n?0:void 0;if(t.length===n.length){for(var i=0;it?1:void 0},e.prototype.blocksVisibility=function(){return void 0===this.visibilityBlocks&&(this.visibilityBlocks=0),0!==this.visibilityBlocks},e.prototype.addVisibilityBlock=function(){void 0===this.visibilityBlocks&&(this.visibilityBlocks=0),this.visibilityBlocks=this.visibilityBlocks+1},e.prototype.removeVisibilityBlock=function(){void 0===this.visibilityBlocks&&(this.visibilityBlocks=0),this.visibilityBlocks=this.visibilityBlocks-1},e.prototype.ensureVisibility=function(){this.nodeVisible=!0},e.prototype.ensureInvisibility=function(){this.nodeVisible=!1},e.prototype.isVisible=function(){return this.nodeVisible},e.prototype.visibilityInfo=function(){return{visibilityBlocks:this.visibilityBlocks,nodeVisible:this.nodeVisible}},e.prototype.copyVisibilityInfo=function(e){e&&(this.visibilityBlocks=e.visibilityBlocks,this.nodeVisible=e.nodeVisible)},e}(),c=function(e,t,n){var i=this;Array.isArray(e)?this.rgb=e:e.length>=6?(this.rgb=[],e.match(/.{2}/g).map((function(e,t){t<3?i.rgb.push(parseInt(e,16)):i.alpha=parseInt(e,16)/255}))):(this.rgb=[],e.split("").map((function(e,t){t<3?i.rgb.push(parseInt(e+e,16)):i.alpha=parseInt(e+e,16)/255}))),this.alpha=this.alpha||("number"==typeof t?t:1),void 0!==n&&(this.value=n)};function h(e,t){return Math.min(Math.max(e,0),t)}function f(e){return"#".concat(e.map((function(e){return((e=h(Math.round(e),255))<16?"0":"")+e.toString(16)})).join(""))}c.prototype=Object.assign(new u,{type:"Color",luma:function(){var e=this.rgb[0]/255,t=this.rgb[1]/255,n=this.rgb[2]/255;return.2126*(e=e<=.03928?e/12.92:Math.pow((e+.055)/1.055,2.4))+.7152*(t=t<=.03928?t/12.92:Math.pow((t+.055)/1.055,2.4))+.0722*(n=n<=.03928?n/12.92:Math.pow((n+.055)/1.055,2.4))},genCSS:function(e,t){t.add(this.toCSS(e))},toCSS:function(e,t){var n,i,r,s=e&&e.compress&&!t,o=[];if(i=this.fround(e,this.alpha),this.value)if(0===this.value.indexOf("rgb"))i<1&&(r="rgba");else{if(0!==this.value.indexOf("hsl"))return this.value;r=i<1?"hsla":"hsl"}else i<1&&(r="rgba");switch(r){case"rgba":o=this.rgb.map((function(e){return h(Math.round(e),255)})).concat(h(i,1));break;case"hsla":o.push(h(i,1));case"hsl":n=this.toHSL(),o=[this.fround(e,n.h),"".concat(this.fround(e,100*n.s),"%"),"".concat(this.fround(e,100*n.l),"%")].concat(o)}if(r)return"".concat(r,"(").concat(o.join(",".concat(s?"":" ")),")");if(n=this.toRGB(),s){var a=n.split("");a[1]===a[2]&&a[3]===a[4]&&a[5]===a[6]&&(n="#".concat(a[1]).concat(a[3]).concat(a[5]))}return n},operate:function(e,t,n){for(var i=new Array(3),r=this.alpha*(1-n.alpha)+n.alpha,s=0;s<3;s++)i[s]=this._operate(e,t,this.rgb[s],n.rgb[s]);return new c(i,r)},toRGB:function(){return f(this.rgb)},toHSL:function(){var e,t,n=this.rgb[0]/255,i=this.rgb[1]/255,r=this.rgb[2]/255,s=this.alpha,o=Math.max(n,i,r),a=Math.min(n,i,r),l=(o+a)/2,u=o-a;if(o===a)e=t=0;else{switch(t=l>.5?u/(2-o-a):u/(o+a),o){case n:e=(i-r)/u+(i=0&&"\n"!==t.charAt(n);)r++;return"number"==typeof e&&(i=(t.slice(0,e).match(/\n/g)||"").length),{line:i,column:r}}function A(e){var t,n=e.length,i=new Array(n);for(t=0;t|Function):(\d+):(\d+)/,$=function(e,t,n){Error.call(this);var i=e.filename||n;if(this.message=e.message,this.stack=e.stack,t&&i){var r=t.contents[i],s=_(e.index,r),o=s.line,a=s.column,l=e.call&&_(e.call,r).line,u=r?r.split("\n"):"";if(this.type=e.type||"Syntax",this.filename=i,this.index=e.index,this.line="number"==typeof o?o+1:null,this.column=a,!this.line&&this.stack){var c=this.stack.match(F),h=new Function("a","throw new Error()"),f=0;try{h()}catch(e){var p=e.stack.match(F);f=1-parseInt(p[2])}c&&(c[2]&&(this.line=parseInt(c[2])+f),c[3]&&(this.column=parseInt(c[3])))}this.callLine=l+1,this.callExtract=u[l],this.extract=[u[this.line-2],u[this.line-1],u[this.line]]}};if(void 0===Object.create){var L=function(){};L.prototype=Error.prototype,$.prototype=new L}else $.prototype=Object.create(Error.prototype);$.prototype.constructor=$,$.prototype.toString=function(e){e=e||{};var t="",n=this.extract||[],i=[],r=function(e){return e};if(e.stylize){var s=typeof e.stylize;if("function"!==s)throw Error("options.stylize should be a function, got a ".concat(s,"!"));r=e.stylize}if(null!==this.line){if("string"==typeof n[0]&&i.push(r("".concat(this.line-1," ").concat(n[0]),"grey")),"string"==typeof n[1]){var o="".concat(this.line," ");n[1]&&(o+=n[1].slice(0,this.column)+r(r(r(n[1].substr(this.column,1),"bold")+n[1].slice(this.column+1),"red"),"inverse")),i.push(o)}"string"==typeof n[2]&&i.push(r("".concat(this.line+1," ").concat(n[2]),"grey")),i="".concat(i.join("\n")+r("","reset"),"\n")}return t+=r("".concat(this.type,"Error: ").concat(this.message),"red"),this.filename&&(t+=r(" in ","red")+this.filename),this.line&&(t+=r(" on line ".concat(this.line,", column ").concat(this.column+1,":"),"grey")),t+="\n".concat(i),this.callLine&&(t+="".concat(r("from ","red")+(this.filename||""),"/n"),t+="".concat(r(this.callLine,"grey")," ").concat(this.callExtract,"/n")),t};var j={visitDeeper:!0},N=!1;function D(e){return e}var B=function(){function e(e){this._implementation=e,this._visitInCache={},this._visitOutCache={},N||(!function e(t,n){var i,r;for(i in t)switch(typeof(r=t[i])){case"function":r.prototype&&r.prototype.type&&(r.prototype.typeIndex=n++);break;case"object":n=e(r,n)}return n}(Qe,1),N=!0)}return e.prototype.visit=function(e){if(!e)return e;var t=e.typeIndex;if(!t)return e.value&&e.value.typeIndex&&this.visit(e.value),e;var n,i=this._implementation,r=this._visitInCache[t],s=this._visitOutCache[t],o=j;if(o.visitDeeper=!0,r||(r=i[n="visit".concat(e.type)]||D,s=i["".concat(n,"Out")]||D,this._visitInCache[t]=r,this._visitOutCache[t]=s),r!==D){var a=r.call(i,e,o);e&&i.isReplacing&&(e=a)}if(o.visitDeeper&&e)if(e.length)for(var l=0,u=e.length;lg.PARENS_DIVISION)||this.parensStack&&this.parensStack.length))},U.Eval.prototype.pathRequiresRewrite=function(e){return(this.rewriteUrls===b?W:G)(e)},U.Eval.prototype.rewritePath=function(e,t){var n;return t=t||"",n=this.normalizePath(t+e),W(e)&&G(t)&&!1===W(n)&&(n="./".concat(n)),n},U.Eval.prototype.normalizePath=function(e){var t,n=e.split("/").reverse();for(e=[];0!==n.length;)switch(t=n.pop()){case".":break;case"..":0===e.length||".."===e[e.length-1]?e.push(t):e.pop();break;default:e.push(t)}return e.join("/")};var J=function(){function e(e){this.imports=[],this.variableImports=[],this._onSequencerEmpty=e,this._currentDepth=0}return e.prototype.addImport=function(e){var t=this,n={callback:e,args:null,isReady:!1};return this.imports.push(n),function(){n.args=Array.prototype.slice.call(arguments,0),n.isReady=!0,t.tryRun()}},e.prototype.addVariableImport=function(e){this.variableImports.push(e)},e.prototype.tryRun=function(){this._currentDepth++;try{for(;;){for(;this.imports.length>0;){var e=this.imports[0];if(!e.isReady)return;this.imports=this.imports.slice(1),e.callback.apply(null,e.args)}if(0===this.variableImports.length)break;var t=this.variableImports[0];this.variableImports=this.variableImports.slice(1),t()}}finally{this._currentDepth--}0===this._currentDepth&&this._onSequencerEmpty&&this._onSequencerEmpty()},e}(),H=function(e,t){this._visitor=new B(this),this._importer=e,this._finish=t,this.context=new U.Eval,this.importCount=0,this.onceFileDetectionMap={},this.recursionDetector={},this._sequencer=new J(this._onSequencerEmpty.bind(this))};H.prototype={isReplacing:!1,run:function(e){try{this._visitor.visit(e)}catch(e){this.error=e}this.isFinished=!0,this._sequencer.tryRun()},_onSequencerEmpty:function(){this.isFinished&&this._finish(this.error)},visitImport:function(e,t){var n=e.options.inline;if(!e.css||n){var i=new U.Eval(this.context,A(this.context.frames)),r=i.frames[0];this.importCount++,e.isVariableImport()?this._sequencer.addVariableImport(this.processImportNode.bind(this,e,i,r)):this.processImportNode(e,i,r)}t.visitDeeper=!1},processImportNode:function(e,t,n){var i,r=e.options.inline;try{i=e.evalForImport(t)}catch(t){t.filename||(t.index=e.getIndex(),t.filename=e.fileInfo().filename),e.css=!0,e.error=t}if(!i||i.css&&!r)this.importCount--,this.isFinished&&this._sequencer.tryRun();else{i.options.multiple&&(t.importMultiple=!0);for(var s=void 0===i.css,o=0;o=0||(a=[u.selfSelectors[0]],(s=f.findMatch(l,a)).length&&(l.hasFoundMatches=!0,l.selfSelectors.forEach((function(e){var t=u.visibilityInfo();o=f.extendSelector(s,a,e,l.isVisible()),(c=new Qe.Extend(u.selector,u.option,0,u.fileInfo(),t)).selfSelectors=o,o[o.length-1].extendList=[c],h.push(c),c.ruleset=u.ruleset,c.parent_ids=c.parent_ids.concat(u.parent_ids,l.parent_ids),u.firstExtendOnThisSelectorPath&&(c.firstExtendOnThisSelectorPath=!0,u.ruleset.paths.push(o))}))));if(h.length){if(this.extendChainCount++,n>100){var p="{unable to calculate}",v="{unable to calculate}";try{p=h[0].selfSelectors[0].toCSS(),v=h[0].selector.toCSS()}catch(e){}throw{message:"extend circular reference detected. One of the circular extends is currently:".concat(p,":extend(").concat(v,")")}}return h.concat(f.doExtendChaining(h,t,n+1))}return h},e.prototype.visitDeclaration=function(e,t){t.visitDeeper=!1},e.prototype.visitMixinDefinition=function(e,t){t.visitDeeper=!1},e.prototype.visitSelector=function(e,t){t.visitDeeper=!1},e.prototype.visitRuleset=function(e,t){if(!e.root){var n,i,r,s,o=this.allExtendsStack[this.allExtendsStack.length-1],a=[],l=this;for(r=0;r0&&u[l.matched].combinator.value!==o?l=null:l.matched++,l&&(l.finished=l.matched===u.length,l.finished&&!e.allowAfter&&(r+1u&&c>0&&(h[h.length-1].elements=h[h.length-1].elements.concat(t[u].elements.slice(c)),c=0,u++),l=s.elements.slice(c,a.index).concat([o]).concat(n.elements.slice(1)),u===a.pathIndex&&r>0?h[h.length-1].elements=h[h.length-1].elements.concat(l):(h=h.concat(t.slice(u,a.pathIndex))).push(new Qe.Selector(l)),u=a.endPathIndex,(c=a.endPathElementIndex)>=t[u].elements.length&&(c=0,u++);return u0&&(h[h.length-1].elements=h[h.length-1].elements.concat(t[u].elements.slice(c)),u++),h=(h=h.concat(t.slice(u,t.length))).map((function(e){var t=e.createDerived(e.elements);return i?t.ensureVisibility():t.ensureInvisibility(),t}))},e.prototype.visitMedia=function(e,t){var n=e.allExtends.concat(this.allExtendsStack[this.allExtendsStack.length-1]);n=n.concat(this.doExtendChaining(n,e.allExtends)),this.allExtendsStack.push(n)},e.prototype.visitMediaOut=function(e){var t=this.allExtendsStack.length-1;this.allExtendsStack.length=t},e.prototype.visitAtRule=function(e,t){var n=e.allExtends.concat(this.allExtendsStack[this.allExtendsStack.length-1]);n=n.concat(this.doExtendChaining(n,e.allExtends)),this.allExtendsStack.push(n)},e.prototype.visitAtRuleOut=function(e){var t=this.allExtendsStack.length-1;this.allExtendsStack.length=t},e}(),X=function(){function e(){this.contexts=[[]],this._visitor=new B(this)}return e.prototype.run=function(e){return this._visitor.visit(e)},e.prototype.visitDeclaration=function(e,t){t.visitDeeper=!1},e.prototype.visitMixinDefinition=function(e,t){t.visitDeeper=!1},e.prototype.visitRuleset=function(e,t){var n,i=this.contexts[this.contexts.length-1],r=[];this.contexts.push(r),e.root||((n=e.selectors)&&(n=n.filter((function(e){return e.getIsOutput()})),e.selectors=n.length?n:n=null,n&&e.joinSelectors(r,i,n)),n||(e.rules=null),e.paths=r)},e.prototype.visitRulesetOut=function(e){this.contexts.length=this.contexts.length-1},e.prototype.visitMedia=function(e,t){var n=this.contexts[this.contexts.length-1];e.rules[0].root=0===n.length||n[0].multiMedia},e.prototype.visitAtRule=function(e,t){var n=this.contexts[this.contexts.length-1];e.rules&&e.rules.length&&(e.rules[0].root=e.isRooted||0===n.length||null)},e}(),Y=function(){function e(e){this._visitor=new B(this),this._context=e}return e.prototype.containsSilentNonBlockedChild=function(e){var t;if(!e)return!1;for(var n=0;n0},e.prototype.resolveVisibility=function(e){if(!e.blocksVisibility()){if(this.isEmpty(e))return;return e}var t=e.rules[0];if(this.keepOnlyVisibleChilds(t),!this.isEmpty(t))return e.ensureVisibility(),e.removeVisibilityBlock(),e},e.prototype.isVisibleRuleset=function(e){return!!e.firstRoot||!this.isEmpty(e)&&!(!e.root&&!this.hasVisibleSelector(e))},e}(),ee=function(e){this._visitor=new B(this),this._context=e,this.utils=new Y(e)};ee.prototype={isReplacing:!0,run:function(e){return this._visitor.visit(e)},visitDeclaration:function(e,t){if(!e.blocksVisibility()&&!e.variable)return e},visitMixinDefinition:function(e,t){e.frames=[]},visitExtend:function(e,t){},visitComment:function(e,t){if(!e.blocksVisibility()&&!e.isSilent(this._context))return e},visitMedia:function(e,t){var n=e.rules[0].rules;return e.accept(this._visitor),t.visitDeeper=!1,this.utils.resolveVisibility(e,n)},visitImport:function(e,t){if(!e.blocksVisibility())return e},visitAtRule:function(e,t){return e.rules&&e.rules.length?this.visitAtRuleWithBody(e,t):this.visitAtRuleWithoutBody(e,t)},visitAnonymous:function(e,t){if(!e.blocksVisibility())return e.accept(this._visitor),e},visitAtRuleWithBody:function(e,t){var n=function(e){var t=e.rules;return function(e){var t=e.rules;return 1===t.length&&(!t[0].paths||0===t[0].paths.length)}(e)?t[0].rules:t}(e);return e.accept(this._visitor),t.visitDeeper=!1,this.utils.isEmpty(e)||this._mergeRules(e.rules[0].rules),this.utils.resolveVisibility(e,n)},visitAtRuleWithoutBody:function(e,t){if(!e.blocksVisibility()){if("@charset"===e.name){if(this.charset){if(e.debugInfo){var n=new Qe.Comment("/* ".concat(e.toCSS(this._context).replace(/\n/g,"")," */\n"));return n.debugInfo=e.debugInfo,this._visitor.visit(n)}return}this.charset=!0}return e}},checkValidNodes:function(e,t){if(e)for(var n=0;n0?e.accept(this._visitor):e.rules=null,t.visitDeeper=!1}return e.rules&&(this._mergeRules(e.rules),this._removeDuplicateRules(e.rules)),this.utils.isVisibleRuleset(e)&&(e.ensureVisibility(),i.splice(0,0,e)),1===i.length?i[0]:i},_compileRulesetPaths:function(e){e.paths&&(e.paths=e.paths.filter((function(e){var t;for(" "===e[0].elements[0].combinator.value&&(e[0].elements[0].combinator=new Qe.Combinator("")),t=0;t=0;i--)if((n=e[i])instanceof Qe.Declaration)if(r[n.name]){(t=r[n.name])instanceof Qe.Declaration&&(t=r[n.name]=[r[n.name].toCSS(this._context)]);var s=n.toCSS(this._context);-1!==t.indexOf(s)?e.splice(i,1):t.push(s)}else r[n.name]=n}},_mergeRules:function(e){if(e){for(var t={},n=[],i=0;i0){var t=e[0],n=[],i=[new Qe.Expression(n)];e.forEach((function(e){"+"===e.merge&&n.length>0&&i.push(new Qe.Expression(n=[])),n.push(e.value),t.important=t.important||e.important})),t.value=new Qe.Value(i)}}))}}};var te={Visitor:B,ImportVisitor:H,MarkVisibleSelectorsVisitor:Q,ExtendVisitor:Z,JoinSelectorVisitor:X,ToCSSVisitor:ee};var ne=function(){var e,t,n,i,r,s,o,a=[],l={};function u(n){for(var i,a,c,h=l.i,f=t,p=l.i-o,v=l.i+s.length-p,d=l.i+=n,m=e;l.i=0){c={index:l.i,text:m.substr(l.i,y+2-l.i),isLineComment:!1},l.i+=c.text.length-1,l.commentStore.push(c);continue}}break}if(32!==i&&10!==i&&9!==i&&13!==i)break}if(s=s.slice(n+l.i-d+p),o=l.i,!s.length){if(tn||l.i===n&&e&&!i)&&(n=l.i,i=e);var r=a.pop();s=r.current,o=l.i=r.i,t=r.j},l.forget=function(){a.pop()},l.isWhitespace=function(t){var n=l.i+(t||0),i=e.charCodeAt(n);return 32===i||13===i||9===i||10===i},l.$re=function(e){l.i>o&&(s=s.slice(l.i-o),o=l.i);var t=e.exec(s);return t?(u(t[0].length),"string"==typeof t?t:1===t.length?t[0]:t):null},l.$char=function(t){return e.charAt(l.i)!==t?null:(u(1),t)},l.$peekChar=function(t){return e.charAt(l.i)!==t?null:t},l.$str=function(t){for(var n=t.length,i=0;ih&&(d=!1)}}while(d);return r||null},l.autoCommentAbsorb=!0,l.commentStore=[],l.finished=!1,l.peek=function(t){if("string"==typeof t){for(var n=0;n57||t<43||47===t||44===t},l.start=function(i,a,c){e=i,l.i=t=o=n=0,r=a?function(e,t){var n,i,r,s,o,a,l,u,c,h=e.length,f=0,p=0,v=[],d=0;function m(t){var n=o-d;n<512&&!t||!n||(v.push(e.slice(d,o+1)),d=o+1)}for(o=0;o=97&&l<=122||l<34))switch(l){case 40:p++,i=o;continue;case 41:if(--p<0)return t("missing opening `(`",o);continue;case 59:p||m();continue;case 123:f++,n=o;continue;case 125:if(--f<0)return t("missing opening `{`",o);f||p||m();continue;case 92:if(o96)){if(u==l){c=1;break}if(92==u){if(o==h-1)return t("unescaped `\\`",o);o++}}if(c)continue;return t("unmatched `".concat(String.fromCharCode(l),"`"),a);case 47:if(p||o==h-1)continue;if(47==(u=e.charCodeAt(o+1)))for(o+=2;on&&s>r?"missing closing `}` or `*/`":"missing closing `}`",n):0!==p?t("missing closing `)`",i):(m(!0),v)}(i,c):[i],s=r[0],u(0)},l.end=function(){var t,r=l.i>=e.length;return l.i=e.length-1,furthestChar:e[l.i]}},l};var ie=function e(t){return{_data:{},add:function(e,t){e=e.toLowerCase(),this._data.hasOwnProperty(e),this._data[e]=t},addMultiple:function(e){var t=this;Object.keys(e).forEach((function(n){t.add(n,e[n])}))},get:function(e){return this._data[e]||t&&t.get(e)},getLocalFunctions:function(){return this._data},inherit:function(){return e(this)},create:function(t){return e(t)}}}(null),re={queryInParens:!0},se={queryInParens:!0},oe=function(e,t,n,i,r,s){this.value=e,this._index=t,this._fileInfo=n,this.mapLines=i,this.rulesetLike=void 0!==r&&r,this.allowRoot=!0,this.copyVisibilityInfo(s)};oe.prototype=Object.assign(new u,{type:"Anonymous",eval:function(){return new oe(this.value,this._index,this._fileInfo,this.mapLines,this.rulesetLike,this.visibilityInfo())},compare:function(e){return e.toCSS&&this.toCSS()===e.toCSS()?0:void 0},isRulesetLike:function(){return this.rulesetLike},genCSS:function(e,t){this.nodeVisible=Boolean(this.value),this.nodeVisible&&t.add(this.value,this._fileInfo,this._index,this.mapLines)}});var ae=function e(t,n,i,r){var s;r=r||0;var o=ne();function a(e,t){throw new $({index:o.i,filename:i.filename,type:t||"Syntax",message:e},n)}function l(e,t){var n=e instanceof Function?e.call(s):o.$re(e);if(n)return n;a(t||("string"==typeof e?"expected '".concat(e,"' got '").concat(o.currentChar(),"'"):"unexpected token"))}function u(e,t){if(o.$char(e))return e;a(t||"expected '".concat(e,"' got '").concat(o.currentChar(),"'"))}function c(e){var t=i.filename;return{lineNumber:_(e,o.getInput()).line+1,fileName:t}}return{parserInput:o,imports:n,fileInfo:i,parseNode:function(e,t,a){var l,u=[],c=o;try{c.start(e,!1,(function(e,t){a({message:e,index:t+r})}));for(var h=0,f=void 0;f=t[h];h++)l=s[f](),u.push(l||null);c.end().isFinished?a(null,u):a(!0,null)}catch(e){throw new $({index:e.index+r,message:e.message},n,i.filename)}},parse:function(r,l,u){var c,h,f,p,v=null,d="";if(u&&u.disablePluginRule&&(s.plugin=function(){o.$re(/^@plugin?\s+/)&&a("@plugin statements are not allowed when disablePluginRule is set to true")}),h=u&&u.globalVars?"".concat(e.serializeVars(u.globalVars),"\n"):"",f=u&&u.modifyVars?"\n".concat(e.serializeVars(u.modifyVars)):"",t.pluginManager)for(var m=t.pluginManager.getPreProcessors(),g=0;g");return e},args:function(e){var t,n,i,r,l,u,c,h=s.entities,f={args:null,variadic:!1},p=[],v=[],d=[],m=!0;for(o.save();;){if(e)u=s.detachedRuleset()||s.expression();else{if(o.commentStore.length=0,o.$str("...")){f.variadic=!0,o.$char(";")&&!t&&(t=!0),(t?v:d).push({variadic:!0});break}u=h.variable()||h.property()||h.literal()||h.keyword()||this.call(!0)}if(!u||!m)break;r=null,u.throwAwayComments&&u.throwAwayComments(),l=u;var g=null;if(e?u.value&&1==u.value.length&&(g=u.value[0]):g=u,g&&(g instanceof Qe.Variable||g instanceof Qe.Property))if(o.$char(":")){if(p.length>0&&(t&&a("Cannot mix ; and , as delimiter types"),n=!0),!(l=s.detachedRuleset()||s.expression())){if(!e)return o.restore(),f.args=[],f;a("could not understand value for named argument")}r=i=g.name}else if(o.$str("...")){if(!e){f.variadic=!0,o.$char(";")&&!t&&(t=!0),(t?v:d).push({name:u.name,variadic:!0});break}c=!0}else e||(i=r=g.name,l=null);l&&p.push(l),d.push({name:r,value:l,expand:c}),o.$char(",")?m=!0:((m=";"===o.$char(";"))||t)&&(n&&a("Cannot mix ; and , as delimiter types"),t=!0,p.length>1&&(l=new Qe.Value(p)),v.push({name:i,value:l,expand:c}),i=null,p=[],n=!1)}return o.forget(),f.args=t?v:d,f},definition:function(){var e,t,n,i,r=[],a=!1;if(!("."!==o.currentChar()&&"#"!==o.currentChar()||o.peek(/^[^{]*\}/)))if(o.save(),t=o.$re(/^([#.](?:[\w-]|\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+)\s*\(/)){e=t[1];var u=this.args(!1);if(r=u.args,a=u.variadic,!o.$char(")"))return void o.restore("Missing closing ')'");if(o.commentStore.length=0,o.$str("when")&&(i=l(s.conditions,"expected condition")),n=s.block())return o.forget(),new Qe.mixin.Definition(e,r,n,i,a);o.restore()}else o.restore()},ruleLookups:function(){var e,t=[];if("["===o.currentChar()){for(;;){if(o.save(),!(e=this.lookupValue())&&""!==e){o.restore();break}t.push(e),o.forget()}return t.length>0?t:void 0}},lookupValue:function(){if(o.save(),o.$char("[")){var e=o.$re(/^(?:[@$]{0,2})[_a-zA-Z0-9-]*/);if(o.$char("]"))return e||""===e?(o.forget(),e):void o.restore();o.restore()}else o.restore()}},entity:function(){var e=this.entities;return this.comment()||e.literal()||e.variable()||e.url()||e.property()||e.call()||e.keyword()||this.mixin.call(!0)||e.javascript()},end:function(){return o.$char(";")||o.peek("}")},ieAlpha:function(){var e;if(o.$re(/^opacity=/i))return(e=o.$re(/^\d+/))||(e=l(s.entities.variable,"Could not parse alpha"),e="@{".concat(e.name.slice(1),"}")),u(")"),new Qe.Quoted("","alpha(opacity=".concat(e,")"))},element:function(){var e,t,n,s=o.i;if(t=this.combinator(),!(e=o.$re(/^(?:\d+\.\d+|\d+)%/)||o.$re(/^(?:[.#]?|:*)(?:[\w-]|[^\x00-\x9f]|\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+/)||o.$char("*")||o.$char("&")||this.attribute()||o.$re(/^\([^&()@]+\)/)||o.$re(/^[.#:](?=@)/)||this.entities.variableCurly()))if(o.save(),o.$char("("))if(n=this.selector(!1)){for(var a=[];o.$char(",");)a.push(n),a.push(new oe(",")),n=this.selector(!1);a.push(n),o.$char(")")?(e=a.length>1?new Qe.Paren(new le(a)):new Qe.Paren(n),o.forget()):o.restore("Missing closing ')'")}else o.restore("Missing closing ')'");else o.forget();if(e)return new Qe.Element(t,e,e instanceof Qe.Variable,s+r,i)},combinator:function(){var e=o.currentChar();if("/"===e){o.save();var t=o.$re(/^\/[a-z]+\//i);if(t)return o.forget(),new Qe.Combinator(t);o.restore()}if(">"===e||"+"===e||"~"===e||"|"===e||"^"===e){for(o.i++,"^"===e&&"^"===o.currentChar()&&(e="^^",o.i++);o.isWhitespace();)o.i++;return new Qe.Combinator(e)}return o.isWhitespace(-1)?new Qe.Combinator(" "):new Qe.Combinator(null)},selector:function(e){var t,n,s,u,c,h,f,p=o.i;for(e=!1!==e;(e&&(n=this.extend())||e&&(h=o.$str("when"))||(u=this.element()))&&(h?f=l(this.conditions,"expected condition"):f?a("CSS guard can only be used at the end of selector"):n?c=c?c.concat(n):n:(c&&a("Extend can only be used at the end of selector"),s=o.currentChar(),Array.isArray(u)&&u.forEach((function(e){return t.push(e)})),t?t.push(u):t=[u],u=null),"{"!==s&&"}"!==s&&";"!==s&&","!==s&&")"!==s););if(t)return new Qe.Selector(t,c,f,p+r,i);c&&a("Extend must be used to extend a selector, it cannot be used on its own")},selectors:function(){for(var e,t;(e=this.selector())&&(t?t.push(e):t=[e],o.commentStore.length=0,e.condition&&t.length>1&&a("Guards are only currently allowed on a single selector."),o.$char(","));)e.condition&&a("Guards are only currently allowed on a single selector."),o.commentStore.length=0;return t},attribute:function(){if(o.$char("[")){var e,t,n,i,r=this.entities;return(e=r.variableCurly())||(e=l(/^(?:[_A-Za-z0-9-*]*\|)?(?:[_A-Za-z0-9-]|\\.)+/)),(n=o.$re(/^[|~*$^]?=/))&&(t=r.quoted()||o.$re(/^[0-9]+%/)||o.$re(/^[\w-]+/)||r.variableCurly())&&(i=o.$re(/^[iIsS]/)),u("]"),new Qe.Attribute(e,n,t,i)}},block:function(){var e;if(o.$char("{")&&(e=this.primary())&&o.$char("}"))return e},blockRuleset:function(){var e=this.block();return e&&(e=new Qe.Ruleset(null,e)),e},detachedRuleset:function(){var e,t,n;if(o.save(),!o.$re(/^[.#]\(/)||(t=(e=this.mixin.args(!1)).args,n=e.variadic,o.$char(")"))){var i=this.blockRuleset();if(i)return o.forget(),t?new Qe.mixin.Definition(null,t,i,null,n):new Qe.DetachedRuleset(i);o.restore()}else o.restore()},ruleset:function(){var e,n,i;if(o.save(),t.dumpLineNumbers&&(i=c(o.i)),(e=this.selectors())&&(n=this.block())){o.forget();var r=new Qe.Ruleset(e,n,t.strictImports);return t.dumpLineNumbers&&(r.debugInfo=i),r}o.restore()},declaration:function(){var e,t,n,s,a,l,u=o.i,c=o.currentChar();if("."!==c&&"#"!==c&&"&"!==c&&":"!==c)if(o.save(),e=this.variable()||this.ruleProperty()){if((l="string"==typeof e)&&(t=this.detachedRuleset())&&(n=!0),o.commentStore.length=0,!t){if(a=!l&&e.length>1&&e.pop().value,t=e[0].value&&"--"===e[0].value.slice(0,2)?o.$char(";")?new oe(""):this.permissiveValue(/[;}]/):this.anonymousValue())return o.forget(),new Qe.Declaration(e,t,!1,a,u+r,i);t||(t=this.value()),t?s=this.important():l&&(t=this.permissiveValue())}if(t&&(this.end()||n))return o.forget(),new Qe.Declaration(e,t,s,a,u+r,i);o.restore()}else o.restore()},anonymousValue:function(){var e=o.i,t=o.$re(/^([^.#@$+/'"*`(;{}-]*);/);if(t)return new Qe.Anonymous(t[1],e+r)},permissiveValue:function(e){var t,n,r,s,l=e||";",u=o.i,c=[];function h(){var e=o.currentChar();return"string"==typeof l?e===l:l.test(e)}if(!h()){s=[];do{(n=this.comment())?s.push(n):((n=this.entity())&&s.push(n),o.peek(",")&&(s.push(new Qe.Anonymous(",",o.i)),o.$char(",")))}while(n);if(r=h(),s.length>0){if(s=new Qe.Expression(s),r)return s;c.push(s)," "===o.prevChar()&&c.push(new Qe.Anonymous(" ",u))}if(o.save(),s=o.$parseUntil(l)){if("string"==typeof s&&a("Expected '".concat(s,"'"),"Parse"),1===s.length&&" "===s[0])return o.forget(),new Qe.Anonymous("",u);var f=void 0;for(t=0;t]=|<=|>=|[<>]|=)/)?(o.restore(),n=this.condition(),o.save(),(s=this.atomicCondition(null,n.rvalue))||o.restore()):(o.restore(),t=this.value()),o.$char(")")?n&&!t?(u.push(new Qe.Paren(new Qe.QueryInParens(n.op,n.lvalue,n.rvalue,s?s.op:null,s?s.rvalue:null,n._index))),t=n):n&&t?u.push(new Qe.Paren(new Qe.Declaration(n,t,null,null,o.i+r,i,!0))):t?u.push(new Qe.Paren(t)):a("badly formed media feature definition"):a("Missing closing ')'","Parse"))}while(t);if(o.forget(),u.length>0)return new Qe.Expression(u)},mediaFeatures:function(e){var t,n=this.entities,i=[];do{if(t=this.mediaFeature(e)){if(i.push(t),!o.$char(","))break}else if((t=n.variable()||n.mixinLookup())&&(i.push(t),!o.$char(",")))break}while(t);return i.length>0?i:null},prepareAndGetNestableAtRule:function(e,n,s,l){var u=this.mediaFeatures(l),c=this.block();c||a("media definitions require block statements after any features"),o.forget();var h=new e(c,u,n+r,i);return t.dumpLineNumbers&&(h.debugInfo=s),h},nestableAtRule:function(){var e,n=o.i;if(t.dumpLineNumbers&&(e=c(n)),o.save(),o.$peekChar("@")){if(o.$str("@media"))return this.prepareAndGetNestableAtRule(Qe.Media,n,e,re);if(o.$str("@container"))return this.prepareAndGetNestableAtRule(Qe.Container,n,e,se)}o.restore()},plugin:function(){var e,t,n,s=o.i;if(o.$re(/^@plugin\s+/)){if(n=(t=this.pluginArgs())?{pluginArgs:t,isPlugin:!0}:{isPlugin:!0},e=this.entities.quoted()||this.entities.url())return o.$char(";")||(o.i=s,a("missing semi-colon on @plugin")),new Qe.Import(e,null,n,s+r,i);o.i=s,a("malformed @plugin statement")}},pluginArgs:function(){if(o.save(),!o.$char("("))return o.restore(),null;var e=o.$re(/^\s*([^);]+)\)\s*/);return e[1]?(o.forget(),e[1].trim()):(o.restore(),null)},atrule:function(){var e,n,s,l,u,h,f,p=o.i,v=!0,d=!0;if("@"===o.currentChar()){if(n=this.import()||this.plugin()||this.nestableAtRule())return n;if(o.save(),e=o.$re(/^@[a-z-]+/)){switch(l=e,"-"==e.charAt(1)&&e.indexOf("-",2)>0&&(l="@".concat(e.slice(e.indexOf("-",2)+1))),l){case"@charset":u=!0,v=!1;break;case"@namespace":h=!0,v=!1;break;case"@keyframes":case"@counter-style":u=!0;break;case"@document":case"@supports":f=!0,d=!1;break;default:f=!0}if(o.commentStore.length=0,u?(n=this.entity())||a("expected ".concat(e," identifier")):h?(n=this.expression())||a("expected ".concat(e," expression")):f&&(n=this.permissiveValue(/^[{;]/),v="{"===o.currentChar(),n?n.value||(n=null):v||";"===o.currentChar()||a("".concat(e," rule is missing block or ending semi-colon"))),v&&(s=this.blockRuleset()),s||!v&&n&&o.$char(";"))return o.forget(),new Qe.AtRule(e,n,s,p+r,i,t.dumpLineNumbers?c(p):null,d);o.restore("at-rule options not recognised")}}},value:function(){var e,t=[],n=o.i;do{if((e=this.expression())&&(t.push(e),!o.$char(",")))break}while(e);if(t.length>0)return new Qe.Value(t,n+r)},important:function(){if("!"===o.currentChar())return o.$re(/^! *important/)},sub:function(){var e,t;if(o.save(),o.$char("("))return(e=this.addition())&&o.$char(")")?(o.forget(),(t=new Qe.Expression([e])).parens=!0,t):void o.restore("Expected ')'");o.restore()},multiplication:function(){var e,t,n,i,r;if(e=this.operand()){for(r=o.isWhitespace(-1);!o.peek(/^\/[*/]/);){if(o.save(),!(n=o.$char("/")||o.$char("*")||o.$str("./"))){o.forget();break}if(!(t=this.operand())){o.restore();break}o.forget(),e.parensInOp=!0,t.parensInOp=!0,i=new Qe.Operation(n,[i||e,t],r),r=o.isWhitespace(-1)}return i||e}},addition:function(){var e,t,n,i,r;if(e=this.multiplication()){for(r=o.isWhitespace(-1);(n=o.$re(/^[-+]\s+/)||!r&&(o.$char("+")||o.$char("-")))&&(t=this.multiplication());)e.parensInOp=!0,t.parensInOp=!0,i=new Qe.Operation(n,[i||e,t],r),r=o.isWhitespace(-1);return i||e}},conditions:function(){var e,t,n,i=o.i;if(e=this.condition(!0)){for(;o.peek(/^,\s*(not\s*)?\(/)&&o.$char(",")&&(t=this.condition(!0));)n=new Qe.Condition("or",n||e,t,i+r);return n||e}},condition:function(e){var t,n,i;if(t=this.conditionAnd(e)){if(n=o.$str("or")){if(!(i=this.condition(e)))return;t=new Qe.Condition(n,t,i)}return t}},conditionAnd:function(e){var t,n,i,r,s=this;if(t=(r=s.negatedCondition(e)||s.parenthesisCondition(e))||e?r:s.atomicCondition(e)){if(n=o.$str("and")){if(!(i=this.conditionAnd(e)))return;t=new Qe.Condition(n,t,i)}return t}},negatedCondition:function(e){if(o.$str("not")){var t=this.parenthesisCondition(e);return t&&(t.negate=!t.negate),t}},parenthesisCondition:function(e){var t;if(o.save(),o.$str("(")){if(t=function(t){var n;if(o.save(),n=t.condition(e)){if(o.$char(")"))return o.forget(),n;o.restore()}else o.restore()}(this))return o.forget(),t;if(t=this.atomicCondition(e)){if(o.$char(")"))return o.forget(),t;o.restore("expected ')' got '".concat(o.currentChar(),"'"))}else o.restore()}else o.restore()},atomicCondition:function(e,t){var n,i,s,l,u=this.entities,c=o.i,h=function(){return this.addition()||u.keyword()||u.quoted()||u.mixinLookup()}.bind(this);if(n=t||h())return o.$char(">")?l=o.$char("=")?">=":">":o.$char("<")?l=o.$char("=")?"<=":"<":o.$char("=")&&(l=o.$char(">")?"=>":o.$char("<")?"=<":"="),l?(i=h())?s=new Qe.Condition(l,n,i,c+r,!1):a("expected expression"):t||(s=new Qe.Condition("=",n,new Qe.Keyword("true"),c+r,!1)),s},operand:function(){var e,t=this.entities;o.peek(/^-[@$(]/)&&(e=o.$char("-"));var n=this.sub()||t.dimension()||t.color()||t.variable()||t.property()||t.call()||t.quoted(!0)||t.colorKeyword()||t.mixinLookup();return e&&(n.parensInOp=!0,n=new Qe.Negative(n)),n},expression:function(){var e,t,n=[],i=o.i;do{!(e=this.comment())||e.isLineComment?((e=this.addition()||this.entity())instanceof Qe.Comment&&(e=null),e&&(n.push(e),o.peek(/^\/[/*]/)||(t=o.$char("/"))&&n.push(new Qe.Anonymous(t,i+r)))):n.push(e)}while(e);if(n.length>0)return new Qe.Expression(n)},property:function(){var e=o.$re(/^(\*?-?[_a-zA-Z0-9-]+)\s*:/);if(e)return e[1]},ruleProperty:function(){var e,t,n=[],s=[];o.save();var a=o.$re(/^([_a-zA-Z0-9-]+)\s*:/);if(a)return n=[new Qe.Keyword(a[1])],o.forget(),n;function l(e){var t=o.i,i=o.$re(e);if(i)return s.push(t),n.push(i[1])}for(l(/^(\*?)/);l(/^((?:[\w-]+)|(?:[@$]\{[\w-]+\}))/););if(n.length>1&&l(/^((?:\+_|\+)?)\s*:/)){for(o.forget(),""===n[0]&&(n.shift(),s.shift()),t=0;t0;e--){var t=this.rules[e-1];if(t instanceof fe)return this.parseValue(t)}},parseValue:function(e){var t=this;function n(e){return e.value instanceof oe&&!e.parsed?("string"==typeof e.value.value?new ae(this.parse.context,this.parse.importManager,e.fileInfo(),e.value.getIndex()).parseNode(e.value.value,["value","important"],(function(t,n){t&&(e.parsed=!0),n&&(e.value=n[0],e.important=n[1]||"",e.parsed=!0)})):e.parsed=!0,e):e}if(Array.isArray(e)){var i=[];return e.forEach((function(e){i.push(n.call(t,e))})),i}return n.call(t,e)},rulesets:function(){if(!this.rules)return[];var e,t,n=[],i=this.rules;for(e=0;t=i[e];e++)t.isRuleset&&n.push(t);return n},prependRule:function(e){var t=this.rules;t?t.unshift(e):this.rules=[e],this.setParent(e,this)},find:function(e,t,n){t=t||this;var i,r,s=[],o=e.toCSS();return o in this._lookups?this._lookups[o]:(this.rulesets().forEach((function(o){if(o!==t)for(var a=0;ai){if(!n||n(o)){r=o.find(new le(e.elements.slice(i)),t,n);for(var l=0;l0&&t.add(l),e.firstSelector=!0,o[0].genCSS(e,t),e.firstSelector=!1,i=1;i0?(s=(r=A(e)).pop(),o=i.createDerived(A(s.elements))):o=i.createDerived([]),t.length>0){var a=n.combinator,l=t[0].elements[0];a.emptyOrWhitespace&&!l.combinator.emptyOrWhitespace&&(a=l.combinator),o.elements.push(new m(a,l.value,n.isVariable,n._index,n._fileInfo)),o.elements=o.elements.concat(t[0].elements.slice(1))}if(0!==o.elements.length&&r.push(o),t.length>1){var u=t.slice(1);u=u.map((function(e){return e.createDerived(e.elements,[])})),r=r.concat(u)}return r}function o(e,t,n,i,r){var o;for(o=0;o0?i[i.length-1]=i[i.length-1].createDerived(i[i.length-1].elements.concat(e)):i.push(new le(e));else t.push([new le(e)])}function l(e,t){var n=t.createDerived(t.elements,t.extendList,t.evaldCondition);return n.copyVisibilityInfo(e),n}var u,c;if(!function e(t,n,l){var u,c,h,f,v,d,g,y,b,w,x,S,I=!1;for(f=[],v=[[]],u=0;y=l.elements[u];u++)if("&"!==y.value){var C=(S=void 0,(x=y).value instanceof p&&(S=x.value.value)instanceof le?S:null);if(null!==C){a(f,v);var k,_=[],A=[];for(k=e(_,n,C),I=I||k,h=0;h<_.length;h++){o(v,[r(i(_[h],y),y)],y,l,A)}v=A,f=[]}else f.push(y)}else{for(I=!0,d=[],a(f,v),c=0;c0&&g[0].elements.push(new m(y.combinator,"",y.isVariable,y._index,y._fileInfo)),d.push(g);else for(h=0;h0&&(t.push(v[u]),w=v[u][b-1],v[u][b-1]=w.createDerived(w.elements,l.extendList));return I}(c=[],t,n))if(t.length>0)for(c=[],u=0;u0)for(t=0;t-1e-6&&(i=n.toFixed(20).replace(/0+$/,"")),e&&e.compress){if(0===n&&this.unit.isLength())return void t.add(i);n>0&&n<1&&(i=i.substr(1))}t.add(i),this.unit.genCSS(e,t)},operate:function(e,t,n){var i=this._operate(e,t,this.value,n.value),r=this.unit.clone();if("+"===t||"-"===t)if(0===r.numerator.length&&0===r.denominator.length)r=n.unit.clone(),this.unit.backupUnit&&(r.backupUnit=this.unit.backupUnit);else if(0===n.unit.numerator.length&&0===r.denominator.length);else{if(n=n.convertTo(this.unit.usedUnits()),e.strictUnits&&n.unit.toString()!==r.toString())throw new Error("Incompatible units. Change the units or use the unit function. "+"Bad units: '".concat(r.toString(),"' and '").concat(n.unit.toString(),"'."));i=this._operate(e,t,this.value,n.value)}else"*"===t?(r.numerator=r.numerator.concat(n.unit.numerator).sort(),r.denominator=r.denominator.concat(n.unit.denominator).sort(),r.cancel()):"/"===t&&(r.numerator=r.numerator.concat(n.unit.denominator).sort(),r.denominator=r.denominator.concat(n.unit.numerator).sort(),r.cancel());return new Se(i,r)},compare:function(e){var t,n;if(e instanceof Se){if(this.unit.isEmpty()||e.unit.isEmpty())t=this,n=e;else if(t=this.unify(),n=e.unify(),0!==t.unit.compare(n.unit))return;return u.numericCompare(t.value,n.value)}},unify:function(){return this.convertTo({length:"px",duration:"s",angle:"rad"})},convertTo:function(e){var t,n,i,r,s,o=this.value,l=this.unit.clone(),u={};if("string"==typeof e){for(t in a)a[t].hasOwnProperty(e)&&((u={})[t]=e);e=u}for(n in s=function(e,t){return i.hasOwnProperty(e)?(t?o/=i[e]/i[r]:o*=i[e]/i[r],r):e},e)e.hasOwnProperty(n)&&(r=e[n],i=a[n],l.map(s));return l.cancel(),new Se(o,l)}});var Ie=g,Ce=function(e,t,n){this.op=e.trim(),this.operands=t,this.isSpaced=n};Ce.prototype=Object.assign(new u,{type:"Operation",accept:function(e){this.operands=e.visitArray(this.operands)},eval:function(e){var t,n=this.operands[0].eval(e),i=this.operands[1].eval(e);if(e.isMathOn(this.op)){if(t="./"===this.op?"/":this.op,n instanceof Se&&i instanceof c&&(n=n.toColor()),i instanceof Se&&n instanceof c&&(i=i.toColor()),!n.operate||!i.operate){if((n instanceof Ce||i instanceof Ce)&&"/"===n.op&&e.math===Ie.PARENS_DIVISION)return new Ce(this.op,[n,i],this.isSpaced);throw{type:"Operation",message:"Operation on an invalid type"}}return n.operate(e,t,i)}return new Ce(this.op,[n,i],this.isSpaced)},genCSS:function(e,t){this.operands[0].genCSS(e,t),this.isSpaced&&t.add(" "),t.add(this.op),this.isSpaced&&t.add(" "),this.operands[1].genCSS(e,t)}});var ke=function(e,t){if(this.value=e,this.noSpacing=t,!e)throw new Error("Expression requires an array parameter")};ke.prototype=Object.assign(new u,{type:"Expression",accept:function(e){this.value=e.visitArray(this.value)},eval:function(e){var t,n=e.isMathOn(),i=this.parens,r=!1;return i&&e.inParenthesis(),this.value.length>1?t=new ke(this.value.map((function(t){return t.eval?t.eval(e):t})),this.noSpacing):1===this.value.length?(!this.value[0].parens||this.value[0].parensInOp||e.inCalc||(r=!0),t=this.value[0].eval(e)):t=this,i&&e.outOfParenthesis(),!this.parens||!this.parensInOp||n||r||t instanceof Se||(t=new p(t)),t},genCSS:function(e,t){for(var n=0;n1){var n=new le([],null,null,this.getIndex(),this.fileInfo()).createEmptySelectors();(t=new ye(n,e.mediaBlocks)).multiMedia=!0,t.copyVisibilityInfo(this.visibilityInfo()),this.setParent(t,this)}return delete e.mediaBlocks,delete e.mediaPath,t},evalNested:function(e){var t,n,i=e.mediaPath.concat([this]);for(t=0;t0;t--)e.splice(t,0,new oe("and"));return new ke(e)}))),this.setParent(this.features,this),new ye([],[])},permute:function(e){if(0===e.length)return[];if(1===e.length)return e[0];for(var t=[],n=this.permute(e.slice(1)),i=0;i1?"[".concat(e.value.map((function(e){return e.toCSS()})).join(", "),"]"):e.toCSS()}});var je=function(e,t,n,i){this.escaped=t,this.expression=e,this._index=n,this._fileInfo=i};je.prototype=Object.assign(new Le,{type:"JavaScript",eval:function(e){var t=this.evaluateJavaScript(this.expression,e),n=typeof t;return"number"!==n||isNaN(t)?"string"===n?new Re('"'.concat(t,'"'),t,this.escaped,this._index):Array.isArray(t)?new oe(t.join(", ")):new oe(t):new Se(t)}});var Ne=function(e,t){this.key=e,this.value=t};Ne.prototype=Object.assign(new u,{type:"Assignment",accept:function(e){this.value=e.visit(this.value)},eval:function(e){return this.value.eval?new Ne(this.key,this.value.eval(e)):this},genCSS:function(e,t){t.add("".concat(this.key,"=")),this.value.genCSS?this.value.genCSS(e,t):t.add(this.value)}});var De=function(e,t,n,i,r){this.op=e.trim(),this.lvalue=t,this.rvalue=n,this._index=i,this.negate=r};De.prototype=Object.assign(new u,{type:"Condition",accept:function(e){this.lvalue=e.visit(this.lvalue),this.rvalue=e.visit(this.rvalue)},eval:function(e){var t=function(e,t,n){switch(e){case"and":return t&&n;case"or":return t||n;default:switch(u.compare(t,n)){case-1:return"<"===e||"=<"===e||"<="===e;case 0:return"="===e||">="===e||"=<"===e||"<="===e;case 1:return">"===e||">="===e;default:return!1}}}(this.op,this.lvalue.eval(e),this.rvalue.eval(e));return this.negate?!t:t}});var Be=function(e,t,n,i,r,s){this.op=e.trim(),this.lvalue=t,this.mvalue=n,this.op2=i?i.trim():null,this.rvalue=r,this._index=s,this.mvalues=[]};Be.prototype=Object.assign(new u,{type:"QueryInParens",accept:function(e){this.lvalue=e.visit(this.lvalue),this.mvalue=e.visit(this.mvalue),this.rvalue&&(this.rvalue=e.visit(this.rvalue))},eval:function(e){var t,n;this.lvalue=this.lvalue.eval(e);for(var i=0;(n=e.frames[i])&&("Ruleset"!==n.type||!(t=n.rules.find((function(e){return!!(e instanceof fe&&e.variable)}))));i++);return this.mvalueCopy||(this.mvalueCopy=k(this.mvalue)),t?(this.mvalue=this.mvalueCopy,this.mvalue=this.mvalue.eval(e),this.mvalues.push(this.mvalue)):this.mvalue=this.mvalue.eval(e),this.rvalue&&(this.rvalue=this.rvalue.eval(e)),this},genCSS:function(e,t){this.lvalue.genCSS(e,t),t.add(" "+this.op+" "),this.mvalues.length>0&&(this.mvalue=this.mvalues.shift()),this.mvalue.genCSS(e,t),this.rvalue&&(t.add(" "+this.op2+" "),this.rvalue.genCSS(e,t))}});var Ue=function(e,t,n,i,r){this._index=n,this._fileInfo=i;var s=new le([],null,null,this._index,this._fileInfo).createEmptySelectors();this.features=new ue(t),this.rules=[new ye(s,e)],this.rules[0].allowImports=!0,this.copyVisibilityInfo(r),this.allowRoot=!0,this.setParent(s,this),this.setParent(this.features,this),this.setParent(this.rules,this)};Ue.prototype=Object.assign(new be,x(x({type:"Container"},Ve),{genCSS:function(e,t){t.add("@container ",this._fileInfo,this._index),this.features.genCSS(e,t),this.outputRuleset(e,t,this.rules)},eval:function(e){e.mediaBlocks||(e.mediaBlocks=[],e.mediaPath=[]);var t=new Ue(null,[],this._index,this._fileInfo,this.visibilityInfo());return this.debugInfo&&(this.rules[0].debugInfo=this.debugInfo,t.debugInfo=this.debugInfo),t.features=this.features.eval(e),e.mediaPath.push(t),e.mediaBlocks.push(t),this.rules[0].functionRegistry=e.frames[0].functionRegistry.inherit(),e.frames.unshift(this.rules[0]),t.rules=[this.rules[0].eval(e)],e.frames.shift(),e.mediaPath.pop(),0===e.mediaPath.length?t.evalTop(e):t.evalNested(e)}}));var qe=function(e){this.value=e};qe.prototype=Object.assign(new u,{type:"UnicodeDescriptor"});var Te=function(e){this.value=e};Te.prototype=Object.assign(new u,{type:"Negative",genCSS:function(e,t){t.add("-"),this.value.genCSS(e,t)},eval:function(e){return e.isMathOn()?new Ce("*",[new Se(-1),this.value]).eval(e):new Te(this.value.eval(e))}});var ze=function(e,t,n,i,r){switch(this.selector=e,this.option=t,this.object_id=ze.next_id++,this.parent_ids=[this.object_id],this._index=n,this._fileInfo=i,this.copyVisibilityInfo(r),this.allowRoot=!0,t){case"all":this.allowBefore=!0,this.allowAfter=!0;break;default:this.allowBefore=!1,this.allowAfter=!1}this.setParent(this.selector,this)};ze.prototype=Object.assign(new u,{type:"Extend",accept:function(e){this.selector=e.visit(this.selector)},eval:function(e){return new ze(this.selector.eval(e),this.option,this.getIndex(),this.fileInfo(),this.visibilityInfo())},clone:function(e){return new ze(this.selector,this.option,this.getIndex(),this.fileInfo(),this.visibilityInfo())},findSelfSelectors:function(e){var t,n,i=[];for(t=0;t0&&n.length&&""===n[0].combinator.value&&(n[0].combinator.value=" "),i=i.concat(e[t].elements);this.selfSelectors=[new le(i)],this.selfSelectors[0].copyVisibilityInfo(this.visibilityInfo())}}),ze.next_id=0;var Ge=function(e,t,n){this.variable=e,this._index=t,this._fileInfo=n,this.allowRoot=!0};Ge.prototype=Object.assign(new u,{type:"VariableCall",eval:function(e){var t,n=new Pe(this.variable,this.getIndex(),this.fileInfo()).eval(e),i=new $({message:"Could not evaluate variable call ".concat(this.variable)});if(!n.ruleset){if(n.rules)t=n;else if(Array.isArray(n))t=new ye("",n);else{if(!Array.isArray(n.value))throw i;t=new ye("",n.value)}n=new we(t)}if(n.ruleset)return n.callEval(e);throw i}});var We=function(e,t,n,i){this.value=e,this.lookups=t,this._index=n,this._fileInfo=i};We.prototype=Object.assign(new u,{type:"NamespaceValue",eval:function(e){var t,n,i=this.value.eval(e);for(t=0;tthis.params.length)return!1}n=Math.min(s,this.arity);for(var o=0;o0){for(c=!0,a=0;a0)f=2;else if(f=1,p[1]+p[2]>1)throw{type:"Runtime",message:"Ambiguous use of `default()` found when matching for `".concat(this.format(m),"`"),index:this.getIndex(),filename:this.fileInfo().filename};for(a=0;a0&&(e=e.slice(0,t)),(t=e.lastIndexOf("/"))<0&&(t=e.lastIndexOf("\\")),t<0?"":e.slice(0,t+1)},e.prototype.tryAppendExtension=function(e,t){return/(\.[a-z]*$)|([?;].*)$/.test(e)?e:e+t},e.prototype.tryAppendLessExtension=function(e){return this.tryAppendExtension(e,".less")},e.prototype.supportsSync=function(){return!1},e.prototype.alwaysMakePathsAbsolute=function(){return!1},e.prototype.isPathAbsolute=function(e){return/^(?:[a-z-]+:|\/|\\|#)/i.test(e)},e.prototype.join=function(e,t){return e?e+t:t},e.prototype.pathDiff=function(e,t){var n,i,r,s,o=this.extractUrlParts(e),a=this.extractUrlParts(t),l="";if(o.hostPart!==a.hostPart)return"";for(i=Math.max(a.directories.length,o.directories.length),n=0;nparseInt(t[n])?-1:1;return 0},e.prototype.versionToString=function(e){for(var t="",n=0;n1?e-1:e)<1?r+(s-r)*e*6:2*e<1?s:3*e<2?r+(s-r)*(2/3-e)*6:r}try{if(e instanceof c)return i=t?ot(t):e.alpha,new c(e.rgb,i,"hsla");e=ot(e)%360/360,t=nt(ot(t)),n=nt(ot(n)),i=nt(ot(i)),r=2*n-(s=n<=.5?n*(t+1):n+t-n*t);var a=[255*o(e+1/3),255*o(e),255*o(e-1/3)];return i=ot(i),new c(a,i,"hsla")}catch(e){}},hsv:function(e,t,n){return et.hsva(e,t,n,1)},hsva:function(e,t,n,i){var r,s;e=ot(e)%360/360*360,t=ot(t),n=ot(n),i=ot(i);var o=[n,n*(1-t),n*(1-(s=e/60-(r=Math.floor(e/60%6)))*t),n*(1-(1-s)*t)],a=[[0,3,1],[2,0,1],[1,0,3],[1,2,0],[3,1,0],[0,1,2]];return et.rgba(255*o[a[r][0]],255*o[a[r][1]],255*o[a[r][2]],i)},hue:function(e){return new Se(rt(e).h)},saturation:function(e){return new Se(100*rt(e).s,"%")},lightness:function(e){return new Se(100*rt(e).l,"%")},hsvhue:function(e){return new Se(st(e).h)},hsvsaturation:function(e){return new Se(100*st(e).s,"%")},hsvvalue:function(e){return new Se(100*st(e).v,"%")},red:function(e){return new Se(e.rgb[0])},green:function(e){return new Se(e.rgb[1])},blue:function(e){return new Se(e.rgb[2])},alpha:function(e){return new Se(rt(e).a)},luma:function(e){return new Se(e.luma()*e.alpha*100,"%")},luminance:function(e){var t=.2126*e.rgb[0]/255+.7152*e.rgb[1]/255+.0722*e.rgb[2]/255;return new Se(t*e.alpha*100,"%")},saturate:function(e,t,n){if(!e.rgb)return null;var i=rt(e);return void 0!==n&&"relative"===n.value?i.s+=i.s*t.value/100:i.s+=t.value/100,i.s=nt(i.s),it(e,i)},desaturate:function(e,t,n){var i=rt(e);return void 0!==n&&"relative"===n.value?i.s-=i.s*t.value/100:i.s-=t.value/100,i.s=nt(i.s),it(e,i)},lighten:function(e,t,n){var i=rt(e);return void 0!==n&&"relative"===n.value?i.l+=i.l*t.value/100:i.l+=t.value/100,i.l=nt(i.l),it(e,i)},darken:function(e,t,n){var i=rt(e);return void 0!==n&&"relative"===n.value?i.l-=i.l*t.value/100:i.l-=t.value/100,i.l=nt(i.l),it(e,i)},fadein:function(e,t,n){var i=rt(e);return void 0!==n&&"relative"===n.value?i.a+=i.a*t.value/100:i.a+=t.value/100,i.a=nt(i.a),it(e,i)},fadeout:function(e,t,n){var i=rt(e);return void 0!==n&&"relative"===n.value?i.a-=i.a*t.value/100:i.a-=t.value/100,i.a=nt(i.a),it(e,i)},fade:function(e,t){var n=rt(e);return n.a=t.value/100,n.a=nt(n.a),it(e,n)},spin:function(e,t){var n=rt(e),i=(n.h+t.value)%360;return n.h=i<0?360+i:i,it(e,n)},mix:function(e,t,n){n||(n=new Se(50));var i=n.value/100,r=2*i-1,s=rt(e).a-rt(t).a,o=((r*s==-1?r:(r+s)/(1+r*s))+1)/2,a=1-o,l=[e.rgb[0]*o+t.rgb[0]*a,e.rgb[1]*o+t.rgb[1]*a,e.rgb[2]*o+t.rgb[2]*a],u=e.alpha*i+t.alpha*(1-i);return new c(l,u)},greyscale:function(e){return et.desaturate(e,new Se(100))},contrast:function(e,t,n,i){if(!e.rgb)return null;if(void 0===n&&(n=et.rgba(255,255,255,1)),void 0===t&&(t=et.rgba(0,0,0,1)),t.luma()>n.luma()){var r=n;n=t,t=r}return i=void 0===i?.43:ot(i),e.luma().5&&(i=1,n=e>.25?Math.sqrt(e):((16*e-12)*e+4)*e),e-(1-2*t)*i*(n-e)},hardlight:function(e,t){return ut.overlay(t,e)},difference:function(e,t){return Math.abs(e-t)},exclusion:function(e,t){return e+t-2*e*t},average:function(e,t){return(e+t)/2},negation:function(e,t){return 1-Math.abs(e+t-1)}};for(var ct in ut)ut.hasOwnProperty(ct)&&(lt[ct]=lt.bind(null,ut[ct]));var ht=function(e){return Array.isArray(e.value)?e.value:Array(e)},ft={_SELF:function(e){return e},"~":function(){for(var e=[],t=0;to.value)&&(h[i]=r);else{if(void 0!==l&&a!==l)throw{type:"Argument",message:"incompatible types"};f[a]=h.length,h.push(r)}}return 1==h.length?h[0]:(t=h.map((function(e){return e.toCSS(c.context)})).join(this.context.compress?",":", "),new oe("".concat(e?"min":"max","(").concat(t,")")))},gt={min:function(){for(var e=[],t=0;t<'.concat(u,'Gradient id="g" ').concat(n,">"),r=0;r ");return i+="".concat(u,"Gradient> '),i=encodeURIComponent(i),i="data:image/svg+xml,".concat(i),new Oe(new Re("'".concat(i,"'"),i,!1,this.index,this.currentFileInfo),this.index,this.currentFileInfo)}}),ie.addMultiple(xt),ie.addMultiple(It),t};function kt(e,t){var n,i=(t=t||{}).variables,r=new U.Eval(t);"object"!=typeof i||Array.isArray(i)||(i=Object.keys(i).map((function(e){var t=i[e];return t instanceof Qe.Value||(t instanceof Qe.Expression||(t=new Qe.Expression([t])),t=new Qe.Value([t])),new Qe.Declaration("@".concat(e),t,!1,null,0)})),r.frames=[new Qe.Ruleset(null,i)]);var s,o,a=[new te.JoinSelectorVisitor,new te.MarkVisibleSelectorsVisitor(!0),new te.ExtendVisitor,new te.ToCSSVisitor({compress:Boolean(t.compress)})],l=[];if(t.pluginManager){o=t.pluginManager.visitor();for(var u=0;u<2;u++)for(o.first();s=o.get();)s.isPreEvalVisitor?0!==u&&-1!==l.indexOf(s)||(l.push(s),s.run(e)):0!==u&&-1!==a.indexOf(s)||(s.isPreVisitor?a.unshift(s):a.push(s))}n=e.eval(r);for(var c=0;c=t);n++);this.preProcessors.splice(n,0,{preProcessor:e,priority:t})},e.prototype.addPostProcessor=function(e,t){var n;for(n=0;n=t);n++);this.postProcessors.splice(n,0,{postProcessor:e,priority:t})},e.prototype.addFileManager=function(e){this.fileManagers.push(e)},e.prototype.getPreProcessors=function(){for(var e=[],t=0;t0){var i=void 0,r=JSON.stringify(this._sourceMapGenerator.toJSON());this.sourceMapURL?i=this.sourceMapURL:this._sourceMapFilename&&(i=this._sourceMapFilename),this.sourceMapURL=i,this.sourceMap=r}return this._css.join("")},t}()}(e=new s(e,t)),e)),a=function(e){return function(){function t(e,t,n){this.less=e,this.rootFilename=n.filename,this.paths=t.paths||[],this.contents={},this.contentsIgnoredChars={},this.mime=t.mime,this.error=null,this.context=t,this.queue=[],this.files={}}return t.prototype.push=function(t,n,i,s,o){var a=this,l=this.context.pluginManager.Loader;this.queue.push(t);var u=function(e,n,i){a.queue.splice(a.queue.indexOf(t),1);var l=i===a.rootFilename;s.optional&&e?(o(null,{rules:[]},!1,null),r.info("The file ".concat(i," was skipped because it was not found and the import was marked optional."))):(a.files[i]||s.inline||(a.files[i]={root:n,options:s}),e&&!a.error&&(a.error=e),o(e,n,l,i))},c={rewriteUrls:this.context.rewriteUrls,entryPath:i.entryPath,rootpath:i.rootpath,rootFilename:i.rootFilename},h=e.getFileManager(t,i.currentDirectory,this.context,e);if(h){var f,p,v=function(e){var t,n=e.filename,r=e.contents.replace(/^\uFEFF/,"");c.currentDirectory=h.getPath(n),c.rewriteUrls&&(c.rootpath=h.join(a.context.rootpath||"",h.pathDiff(c.currentDirectory,c.entryPath)),!h.isPathAbsolute(c.rootpath)&&h.alwaysMakePathsAbsolute()&&(c.rootpath=h.join(c.entryPath,c.rootpath))),c.filename=n;var o=new U.Parse(a.context);o.processImports=!1,a.contents[n]=r,(i.reference||s.reference)&&(c.reference=!0),s.isPlugin?(t=l.evalPlugin(r,o,a,s.pluginArgs,c))instanceof $?u(t,null,n):u(null,t,n):s.inline?u(null,r,n):!a.files[n]||a.files[n].options.multiple||s.multiple?new ae(o,a,c).parse(r,(function(e,t){u(e,t,n)})):u(null,a.files[n].root,n)},d=P(this.context);n&&(d.ext=s.isPlugin?".js":".less"),s.isPlugin?(d.mime="application/javascript",d.syncImport?f=l.loadPluginSync(t,i.currentDirectory,d,e,h):p=l.loadPlugin(t,i.currentDirectory,d,e,h)):d.syncImport?f=h.loadFileSync(t,i.currentDirectory,d,e):p=h.loadFile(t,i.currentDirectory,d,e,(function(e,t){e?u(e):v(t)})),f?f.filename?v(f):u(f):p&&p.then(v,u)}else u({message:"Could not find a file-manager for ".concat(t)})},t}()}(e);var u,c=function(e,t){var n=function(e,i,r){if("function"==typeof i?(r=i,i=E(this.options,{})):i=E(this.options,i||{}),!r){var s=this;return new Promise((function(t,r){n.call(s,e,i,(function(e,n){e?r(e):t(n)}))}))}this.parse(e,i,(function(e,n,i,s){if(e)return r(e);var o;try{o=new t(n,i).toCSS(s)}catch(e){return r(e)}r(null,o)}))};return n}(0,o),h=function(e,t,n){var i=function(e,t,r){if("function"==typeof t?(r=t,t=E(this.options,{})):t=E(this.options,t||{}),!r){var s=this;return new Promise((function(n,r){i.call(s,e,t,(function(e,t){e?r(e):n(t)}))}))}var o,a=void 0,l=new Pt(this,!t.reUsePluginManager);if(t.pluginManager=l,o=new U.Parse(t),t.rootFileInfo)a=t.rootFileInfo;else{var u=t.filename||"input",c=u.replace(/[^/\\]*$/,"");(a={filename:u,rewriteUrls:o.rewriteUrls,rootpath:o.rootpath||"",currentDirectory:c,entryPath:c,rootFilename:u}).rootpath&&"/"!==a.rootpath.slice(-1)&&(a.rootpath+="/")}var h=new n(this,o,a);this.importManager=h,t.plugins&&t.plugins.forEach((function(e){var t,n;if(e.fileContent){if(n=e.fileContent.replace(/^\uFEFF/,""),(t=l.Loader.evalPlugin(n,o,h,e.options,e.filename))instanceof $)return r(t)}else l.addPlugin(e)})),new ae(o,h,a).parse(e,(function(e,n){if(e)return r(e);r(null,n,h,t)}),t)};return i}(0,0,a),f=Rt("v".concat("4.2.2")),p={version:[f.major,f.minor,f.patch],data:l,tree:Qe,Environment:s,AbstractFileManager:Ke,AbstractPluginLoader:Ze,environment:e,visitors:te,Parser:ae,functions:Ct(e),contexts:U,SourceMapOutput:n,SourceMapBuilder:i,ParseTree:o,ImportManager:a,render:c,parse:h,LessError:$,transformTree:kt,utils:V,PluginManager:Pt,logger:r},v=function(e){return function(){var t=Object.create(e.prototype);return e.apply(t,Array.prototype.slice.call(arguments,0)),t}},d=Object.create(p);for(var m in p.tree)if("function"==typeof(u=p.tree[m]))d[m.toLowerCase()]=v(u);else for(var g in d[m]=Object.create(null),u)d[m][g.toLowerCase()]=v(u[g]);return p.parse=p.parse.bind(d),p.render=p.render.bind(d),d}var Vt={},Ft=function(){};Ft.prototype=Object.assign(new Ke,{alwaysMakePathsAbsolute:function(){return!0},join:function(e,t){return e?this.extractUrlParts(t,e).path:t},doXHR:function(e,t,n,i){var r=new XMLHttpRequest,s=!Mt.isFileProtocol||Mt.fileAsync;function o(t,n,i){t.status>=200&&t.status<300?n(t.responseText,t.getResponseHeader("Last-Modified")):"function"==typeof i&&i(t.status,e)}"function"==typeof r.overrideMimeType&&r.overrideMimeType("text/css"),Et.debug("XHR: Getting '".concat(e,"'")),r.open("GET",e,s),r.setRequestHeader("Accept",t||"text/x-less, text/css; q=0.9, */*; q=0.5"),r.send(null),Mt.isFileProtocol&&!Mt.fileAsync?0===r.status||r.status>=200&&r.status<300?n(r.responseText):i(r.status,e):s?r.onreadystatechange=function(){4==r.readyState&&o(r,n,i)}:o(r,n,i)},supports:function(){return!0},clearFileCache:function(){Vt={}},loadFile:function(e,t,n){t&&!this.isPathAbsolute(e)&&(e=t+e),e=n.ext?this.tryAppendExtension(e,n.ext):e,n=n||{};var i=this.extractUrlParts(e,window.location.href).url,r=this;return new Promise((function(e,t){if(n.useFileCache&&Vt[i])try{var s=Vt[i];return e({contents:s,filename:i,webInfo:{lastModified:new Date}})}catch(e){return t({filename:i,message:"Error loading file ".concat(i," error was ").concat(e.message)})}r.doXHR(i,n.mime,(function(t,n){Vt[i]=t,e({contents:t,filename:i,webInfo:{lastModified:n}})}),(function(e,n){t({type:"File",message:"'".concat(n,"' wasn't found (").concat(e,")"),href:i})}))}))}});var $t=function(e,t){return Mt=e,Et=t,Ft},Lt=function(e){this.less=e};Lt.prototype=Object.assign(new Ze,{loadPlugin:function(e,t,n,i,r){return new Promise((function(s,o){r.loadFile(e,t,n,i).then(s).catch(o)}))}});var jt=function(t,i,r){return{add:function(s,o){r.errorReporting&&"html"!==r.errorReporting?"console"===r.errorReporting?function(e,t){var n=e.filename||t,s=[],o="".concat(e.type||"Syntax","Error: ").concat(e.message||"There is an error in your .less file"," in ").concat(n),a=function(e,t,n){void 0!==e.extract[t]&&s.push("{line} {content}".replace(/\{line\}/,(parseInt(e.line,10)||0)+(t-1)).replace(/\{class\}/,n).replace(/\{content\}/,e.extract[t]))};e.line&&(a(e,0,""),a(e,1,"line"),a(e,2,""),o+=" on line ".concat(e.line,", column ").concat(e.column+1,":\n").concat(s.join("\n"))),e.stack&&(e.extract||r.logLevel>=4)&&(o+="\nStack Trace\n".concat(e.stack)),i.logger.error(o)}(s,o):"function"==typeof r.errorReporting&&r.errorReporting("add",s,o):function(i,s){var o,a,l="less-error-message:".concat(e(s||"")),u=t.document.createElement("div"),c=[],h=i.filename||s,f=h.match(/([^/]+(\?.*)?)$/)[1];u.id=l,u.className="less-error-message",a="".concat(i.type||"Syntax","Error: ").concat(i.message||"There is an error in your .less file")+' in ').concat(f," ");var p=function(e,t,n){void 0!==e.extract[t]&&c.push('
{line} {content} '.replace(/\{line\}/,(parseInt(e.line,10)||0)+(t-1)).replace(/\{class\}/,n).replace(/\{content\}/,e.extract[t]))};i.line&&(p(i,0,""),p(i,1,"line"),p(i,2,""),a+="on line ".concat(i.line,", column ").concat(i.column+1,":")),i.stack&&(i.extract||r.logLevel>=4)&&(a+=" Stack Trace".concat(i.stack.split("\n").slice(1).join(" "))),u.innerHTML=a,n(t.document,[".less-error-message ul, .less-error-message li {","list-style-type: none;","margin-right: 15px;","padding: 4px 0;","margin: 0;","}",".less-error-message label {","font-size: 12px;","margin-right: 15px;","padding: 4px 0;","color: #cc7777;","}",".less-error-message pre {","color: #dd6666;","padding: 4px 0;","margin: 0;","display: inline-block;","}",".less-error-message pre.line {","color: #ff0000;","}",".less-error-message h3 {","font-size: 20px;","font-weight: bold;","padding: 15px 0 5px 0;","margin: 0;","}",".less-error-message a {","color: #10a","}",".less-error-message .error {","color: red;","font-weight: bold;","padding-bottom: 2px;","border-bottom: 1px dashed red;","}"].join("\n"),{title:"error-message"}),u.style.cssText=["font-family: Arial, sans-serif","border: 1px solid #e00","background-color: #eee","border-radius: 5px","-webkit-border-radius: 5px","-moz-border-radius: 5px","color: #e00","padding: 15px","margin-bottom: 15px"].join(";"),"development"===r.env&&(o=setInterval((function(){var e=t.document,n=e.body;n&&(e.getElementById(l)?n.replaceChild(u,e.getElementById(l)):n.insertBefore(u,n.firstChild),clearInterval(o))}),10))}(s,o)},remove:function(n){r.errorReporting&&"html"!==r.errorReporting?"console"===r.errorReporting||"function"==typeof r.errorReporting&&r.errorReporting("remove",n):function(n){var i=t.document.getElementById("less-error-message:".concat(e(n)));i&&i.parentNode.removeChild(i)}(n)}}},Nt={javascriptEnabled:!1,depends:!1,compress:!1,lint:!1,paths:[],color:!0,strictImports:!1,insecure:!1,rootpath:"",rewriteUrls:!1,math:1,strictUnits:!1,globalVars:null,modifyVars:null,urlArgs:""};if(window.less)for(var Dt in window.less)Object.prototype.hasOwnProperty.call(window.less,Dt)&&(Nt[Dt]=window.less[Dt]);!function(e,n){t(n,i(e)),void 0===n.isFileProtocol&&(n.isFileProtocol=/^(file|(chrome|safari)(-extension)?|resource|qrc|app):/.test(e.location.protocol)),n.async=n.async||!1,n.fileAsync=n.fileAsync||!1,n.poll=n.poll||(n.isFileProtocol?1e3:1500),n.env=n.env||("127.0.0.1"==e.location.hostname||"0.0.0.0"==e.location.hostname||"localhost"==e.location.hostname||e.location.port&&e.location.port.length>0||n.isFileProtocol?"development":"production");var r=/!dumpLineNumbers:(comments|mediaquery|all)/.exec(e.location.hash);r&&(n.dumpLineNumbers=r[1]),void 0===n.useFileCache&&(n.useFileCache=!0),void 0===n.onReady&&(n.onReady=!0),n.relativeUrls&&(n.rewriteUrls="all")}(window,Nt),Nt.plugins=Nt.plugins||[],window.LESS_PLUGINS&&(Nt.plugins=Nt.plugins.concat(window.LESS_PLUGINS));var Bt,Ut,qt,Tt=function(e,i){var r=e.document,s=Ot();s.options=i;var o=s.environment,a=$t(i,s.logger),l=new a;o.addFileManager(l),s.FileManager=a,s.PluginLoader=Lt,function(e,t){t.logLevel=void 0!==t.logLevel?t.logLevel:"development"===t.env?3:1,t.loggers||(t.loggers=[{debug:function(e){t.logLevel>=4&&console.log(e)},info:function(e){t.logLevel>=3&&console.log(e)},warn:function(e){t.logLevel>=2&&console.warn(e)},error:function(e){t.logLevel>=1&&console.error(e)}}]);for(var n=0;n 0 && styleNode.childNodes.length > 0 &&\n oldStyleNode.firstChild.nodeValue === styleNode.firstChild.nodeValue);\n }\n\n const head = document.getElementsByTagName('head')[0];\n\n // If there is no oldStyleNode, just append; otherwise, only append if we need\n // to replace oldStyleNode with an updated stylesheet\n if (oldStyleNode === null || keepOldStyleNode === false) {\n const nextEl = sheet && sheet.nextSibling || null;\n if (nextEl) {\n nextEl.parentNode.insertBefore(styleNode, nextEl);\n } else {\n head.appendChild(styleNode);\n }\n }\n if (oldStyleNode && keepOldStyleNode === false) {\n oldStyleNode.parentNode.removeChild(oldStyleNode);\n }\n\n // For IE.\n // This needs to happen *after* the style element is added to the DOM, otherwise IE 7 and 8 may crash.\n // See http://social.msdn.microsoft.com/Forums/en-US/7e081b65-878a-4c22-8e68-c10d39c2ed32/internet-explorer-crashes-appending-style-element-to-head\n if (styleNode.styleSheet) {\n try {\n styleNode.styleSheet.cssText = styles;\n } catch (e) {\n throw new Error('Couldn\\'t reassign styleSheet.cssText.');\n }\n }\n },\n currentScript: function(window) {\n const document = window.document;\n return document.currentScript || (() => {\n const scripts = document.getElementsByTagName('script');\n return scripts[scripts.length - 1];\n })();\n }\n};\n","export default {\n error: function(msg) {\n this._fireEvent('error', msg);\n },\n warn: function(msg) {\n this._fireEvent('warn', msg);\n },\n info: function(msg) {\n this._fireEvent('info', msg);\n },\n debug: function(msg) {\n this._fireEvent('debug', msg);\n },\n addListener: function(listener) {\n this._listeners.push(listener);\n },\n removeListener: function(listener) {\n for (let i = 0; i < this._listeners.length; i++) {\n if (this._listeners[i] === listener) {\n this._listeners.splice(i, 1);\n return;\n }\n }\n },\n _fireEvent: function(type, msg) {\n for (let i = 0; i < this._listeners.length; i++) {\n const logFunction = this._listeners[i][type];\n if (logFunction) {\n logFunction(msg);\n }\n }\n },\n _listeners: []\n};\n","/**\n * @todo Document why this abstraction exists, and the relationship between\n * environment, file managers, and plugin manager\n */\n\nimport logger from '../logger';\n\nclass Environment {\n constructor(externalEnvironment, fileManagers) {\n this.fileManagers = fileManagers || [];\n externalEnvironment = externalEnvironment || {};\n\n const optionalFunctions = ['encodeBase64', 'mimeLookup', 'charsetLookup', 'getSourceMapGenerator'];\n const requiredFunctions = [];\n const functions = requiredFunctions.concat(optionalFunctions);\n\n for (let i = 0; i < functions.length; i++) {\n const propName = functions[i];\n const environmentFunc = externalEnvironment[propName];\n if (environmentFunc) {\n this[propName] = environmentFunc.bind(externalEnvironment);\n } else if (i < requiredFunctions.length) {\n this.warn(`missing required function in environment - ${propName}`);\n }\n }\n }\n\n getFileManager(filename, currentDirectory, options, environment, isSync) {\n\n if (!filename) {\n logger.warn('getFileManager called with no filename.. Please report this issue. continuing.');\n }\n if (currentDirectory === undefined) {\n logger.warn('getFileManager called with null directory.. Please report this issue. continuing.');\n }\n\n let fileManagers = this.fileManagers;\n if (options.pluginManager) {\n fileManagers = [].concat(fileManagers).concat(options.pluginManager.getFileManagers());\n }\n for (let i = fileManagers.length - 1; i >= 0 ; i--) {\n const fileManager = fileManagers[i];\n if (fileManager[isSync ? 'supportsSync' : 'supports'](filename, currentDirectory, options, environment)) {\n return fileManager;\n }\n }\n return null;\n }\n\n addFileManager(fileManager) {\n this.fileManagers.push(fileManager);\n }\n\n clearFileManagers() {\n this.fileManagers = [];\n }\n}\n\nexport default Environment;\n","export default {\n 'aliceblue':'#f0f8ff',\n 'antiquewhite':'#faebd7',\n 'aqua':'#00ffff',\n 'aquamarine':'#7fffd4',\n 'azure':'#f0ffff',\n 'beige':'#f5f5dc',\n 'bisque':'#ffe4c4',\n 'black':'#000000',\n 'blanchedalmond':'#ffebcd',\n 'blue':'#0000ff',\n 'blueviolet':'#8a2be2',\n 'brown':'#a52a2a',\n 'burlywood':'#deb887',\n 'cadetblue':'#5f9ea0',\n 'chartreuse':'#7fff00',\n 'chocolate':'#d2691e',\n 'coral':'#ff7f50',\n 'cornflowerblue':'#6495ed',\n 'cornsilk':'#fff8dc',\n 'crimson':'#dc143c',\n 'cyan':'#00ffff',\n 'darkblue':'#00008b',\n 'darkcyan':'#008b8b',\n 'darkgoldenrod':'#b8860b',\n 'darkgray':'#a9a9a9',\n 'darkgrey':'#a9a9a9',\n 'darkgreen':'#006400',\n 'darkkhaki':'#bdb76b',\n 'darkmagenta':'#8b008b',\n 'darkolivegreen':'#556b2f',\n 'darkorange':'#ff8c00',\n 'darkorchid':'#9932cc',\n 'darkred':'#8b0000',\n 'darksalmon':'#e9967a',\n 'darkseagreen':'#8fbc8f',\n 'darkslateblue':'#483d8b',\n 'darkslategray':'#2f4f4f',\n 'darkslategrey':'#2f4f4f',\n 'darkturquoise':'#00ced1',\n 'darkviolet':'#9400d3',\n 'deeppink':'#ff1493',\n 'deepskyblue':'#00bfff',\n 'dimgray':'#696969',\n 'dimgrey':'#696969',\n 'dodgerblue':'#1e90ff',\n 'firebrick':'#b22222',\n 'floralwhite':'#fffaf0',\n 'forestgreen':'#228b22',\n 'fuchsia':'#ff00ff',\n 'gainsboro':'#dcdcdc',\n 'ghostwhite':'#f8f8ff',\n 'gold':'#ffd700',\n 'goldenrod':'#daa520',\n 'gray':'#808080',\n 'grey':'#808080',\n 'green':'#008000',\n 'greenyellow':'#adff2f',\n 'honeydew':'#f0fff0',\n 'hotpink':'#ff69b4',\n 'indianred':'#cd5c5c',\n 'indigo':'#4b0082',\n 'ivory':'#fffff0',\n 'khaki':'#f0e68c',\n 'lavender':'#e6e6fa',\n 'lavenderblush':'#fff0f5',\n 'lawngreen':'#7cfc00',\n 'lemonchiffon':'#fffacd',\n 'lightblue':'#add8e6',\n 'lightcoral':'#f08080',\n 'lightcyan':'#e0ffff',\n 'lightgoldenrodyellow':'#fafad2',\n 'lightgray':'#d3d3d3',\n 'lightgrey':'#d3d3d3',\n 'lightgreen':'#90ee90',\n 'lightpink':'#ffb6c1',\n 'lightsalmon':'#ffa07a',\n 'lightseagreen':'#20b2aa',\n 'lightskyblue':'#87cefa',\n 'lightslategray':'#778899',\n 'lightslategrey':'#778899',\n 'lightsteelblue':'#b0c4de',\n 'lightyellow':'#ffffe0',\n 'lime':'#00ff00',\n 'limegreen':'#32cd32',\n 'linen':'#faf0e6',\n 'magenta':'#ff00ff',\n 'maroon':'#800000',\n 'mediumaquamarine':'#66cdaa',\n 'mediumblue':'#0000cd',\n 'mediumorchid':'#ba55d3',\n 'mediumpurple':'#9370d8',\n 'mediumseagreen':'#3cb371',\n 'mediumslateblue':'#7b68ee',\n 'mediumspringgreen':'#00fa9a',\n 'mediumturquoise':'#48d1cc',\n 'mediumvioletred':'#c71585',\n 'midnightblue':'#191970',\n 'mintcream':'#f5fffa',\n 'mistyrose':'#ffe4e1',\n 'moccasin':'#ffe4b5',\n 'navajowhite':'#ffdead',\n 'navy':'#000080',\n 'oldlace':'#fdf5e6',\n 'olive':'#808000',\n 'olivedrab':'#6b8e23',\n 'orange':'#ffa500',\n 'orangered':'#ff4500',\n 'orchid':'#da70d6',\n 'palegoldenrod':'#eee8aa',\n 'palegreen':'#98fb98',\n 'paleturquoise':'#afeeee',\n 'palevioletred':'#d87093',\n 'papayawhip':'#ffefd5',\n 'peachpuff':'#ffdab9',\n 'peru':'#cd853f',\n 'pink':'#ffc0cb',\n 'plum':'#dda0dd',\n 'powderblue':'#b0e0e6',\n 'purple':'#800080',\n 'rebeccapurple':'#663399',\n 'red':'#ff0000',\n 'rosybrown':'#bc8f8f',\n 'royalblue':'#4169e1',\n 'saddlebrown':'#8b4513',\n 'salmon':'#fa8072',\n 'sandybrown':'#f4a460',\n 'seagreen':'#2e8b57',\n 'seashell':'#fff5ee',\n 'sienna':'#a0522d',\n 'silver':'#c0c0c0',\n 'skyblue':'#87ceeb',\n 'slateblue':'#6a5acd',\n 'slategray':'#708090',\n 'slategrey':'#708090',\n 'snow':'#fffafa',\n 'springgreen':'#00ff7f',\n 'steelblue':'#4682b4',\n 'tan':'#d2b48c',\n 'teal':'#008080',\n 'thistle':'#d8bfd8',\n 'tomato':'#ff6347',\n 'turquoise':'#40e0d0',\n 'violet':'#ee82ee',\n 'wheat':'#f5deb3',\n 'white':'#ffffff',\n 'whitesmoke':'#f5f5f5',\n 'yellow':'#ffff00',\n 'yellowgreen':'#9acd32'\n};","export default {\n length: {\n 'm': 1,\n 'cm': 0.01,\n 'mm': 0.001,\n 'in': 0.0254,\n 'px': 0.0254 / 96,\n 'pt': 0.0254 / 72,\n 'pc': 0.0254 / 72 * 12\n },\n duration: {\n 's': 1,\n 'ms': 0.001\n },\n angle: {\n 'rad': 1 / (2 * Math.PI),\n 'deg': 1 / 360,\n 'grad': 1 / 400,\n 'turn': 1\n }\n};","import colors from './colors';\nimport unitConversions from './unit-conversions';\n\nexport default { colors, unitConversions };\n","/**\n * The reason why Node is a class and other nodes simply do not extend\n * from Node (since we're transpiling) is due to this issue:\n * \n * @see https://github.com/less/less.js/issues/3434\n */\nclass Node {\n constructor() {\n this.parent = null;\n this.visibilityBlocks = undefined;\n this.nodeVisible = undefined;\n this.rootNode = null;\n this.parsed = null;\n }\n\n get currentFileInfo() {\n return this.fileInfo();\n }\n\n get index() {\n return this.getIndex();\n }\n\n setParent(nodes, parent) {\n function set(node) {\n if (node && node instanceof Node) {\n node.parent = parent;\n }\n }\n if (Array.isArray(nodes)) {\n nodes.forEach(set);\n }\n else {\n set(nodes);\n }\n }\n\n getIndex() {\n return this._index || (this.parent && this.parent.getIndex()) || 0;\n }\n\n fileInfo() {\n return this._fileInfo || (this.parent && this.parent.fileInfo()) || {};\n }\n\n isRulesetLike() { return false; }\n\n toCSS(context) {\n const strs = [];\n this.genCSS(context, {\n // remove when genCSS has JSDoc types\n // eslint-disable-next-line no-unused-vars\n add: function(chunk, fileInfo, index) {\n strs.push(chunk);\n },\n isEmpty: function () {\n return strs.length === 0;\n }\n });\n return strs.join('');\n }\n\n genCSS(context, output) {\n output.add(this.value);\n }\n\n accept(visitor) {\n this.value = visitor.visit(this.value);\n }\n\n eval() { return this; }\n\n _operate(context, op, a, b) {\n switch (op) {\n case '+': return a + b;\n case '-': return a - b;\n case '*': return a * b;\n case '/': return a / b;\n }\n }\n\n fround(context, value) {\n const precision = context && context.numPrecision;\n // add \"epsilon\" to ensure numbers like 1.000000005 (represented as 1.000000004999...) are properly rounded:\n return (precision) ? Number((value + 2e-16).toFixed(precision)) : value;\n }\n\n static compare(a, b) {\n /* returns:\n -1: a < b\n 0: a = b\n 1: a > b\n and *any* other value for a != b (e.g. undefined, NaN, -2 etc.) */\n\n if ((a.compare) &&\n // for \"symmetric results\" force toCSS-based comparison\n // of Quoted or Anonymous if either value is one of those\n !(b.type === 'Quoted' || b.type === 'Anonymous')) {\n return a.compare(b);\n } else if (b.compare) {\n return -b.compare(a);\n } else if (a.type !== b.type) {\n return undefined;\n }\n\n a = a.value;\n b = b.value;\n if (!Array.isArray(a)) {\n return a === b ? 0 : undefined;\n }\n if (a.length !== b.length) {\n return undefined;\n }\n for (let i = 0; i < a.length; i++) {\n if (Node.compare(a[i], b[i]) !== 0) {\n return undefined;\n }\n }\n return 0;\n }\n\n static numericCompare(a, b) {\n return a < b ? -1\n : a === b ? 0\n : a > b ? 1 : undefined;\n }\n\n // Returns true if this node represents root of ast imported by reference\n blocksVisibility() {\n if (this.visibilityBlocks === undefined) {\n this.visibilityBlocks = 0;\n }\n return this.visibilityBlocks !== 0;\n }\n\n addVisibilityBlock() {\n if (this.visibilityBlocks === undefined) {\n this.visibilityBlocks = 0;\n }\n this.visibilityBlocks = this.visibilityBlocks + 1;\n }\n\n removeVisibilityBlock() {\n if (this.visibilityBlocks === undefined) {\n this.visibilityBlocks = 0;\n }\n this.visibilityBlocks = this.visibilityBlocks - 1;\n }\n\n // Turns on node visibility - if called node will be shown in output regardless\n // of whether it comes from import by reference or not\n ensureVisibility() {\n this.nodeVisible = true;\n }\n\n // Turns off node visibility - if called node will NOT be shown in output regardless\n // of whether it comes from import by reference or not\n ensureInvisibility() {\n this.nodeVisible = false;\n }\n\n // return values:\n // false - the node must not be visible\n // true - the node must be visible\n // undefined or null - the node has the same visibility as its parent\n isVisible() {\n return this.nodeVisible;\n }\n\n visibilityInfo() {\n return {\n visibilityBlocks: this.visibilityBlocks,\n nodeVisible: this.nodeVisible\n };\n }\n\n copyVisibilityInfo(info) {\n if (!info) {\n return;\n }\n this.visibilityBlocks = info.visibilityBlocks;\n this.nodeVisible = info.nodeVisible;\n }\n}\n\nexport default Node;\n","import Node from './node';\nimport colors from '../data/colors';\n\n//\n// RGB Colors - #ff0014, #eee\n//\nconst Color = function(rgb, a, originalForm) {\n const self = this;\n //\n // The end goal here, is to parse the arguments\n // into an integer triplet, such as `128, 255, 0`\n //\n // This facilitates operations and conversions.\n //\n if (Array.isArray(rgb)) {\n this.rgb = rgb;\n } else if (rgb.length >= 6) {\n this.rgb = [];\n rgb.match(/.{2}/g).map(function (c, i) {\n if (i < 3) {\n self.rgb.push(parseInt(c, 16));\n } else {\n self.alpha = (parseInt(c, 16)) / 255;\n }\n });\n } else {\n this.rgb = [];\n rgb.split('').map(function (c, i) {\n if (i < 3) {\n self.rgb.push(parseInt(c + c, 16));\n } else {\n self.alpha = (parseInt(c + c, 16)) / 255;\n }\n });\n }\n this.alpha = this.alpha || (typeof a === 'number' ? a : 1);\n if (typeof originalForm !== 'undefined') {\n this.value = originalForm;\n }\n}\n\nColor.prototype = Object.assign(new Node(), {\n type: 'Color',\n\n luma() {\n let r = this.rgb[0] / 255, g = this.rgb[1] / 255, b = this.rgb[2] / 255;\n\n r = (r <= 0.03928) ? r / 12.92 : Math.pow(((r + 0.055) / 1.055), 2.4);\n g = (g <= 0.03928) ? g / 12.92 : Math.pow(((g + 0.055) / 1.055), 2.4);\n b = (b <= 0.03928) ? b / 12.92 : Math.pow(((b + 0.055) / 1.055), 2.4);\n\n return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n },\n\n genCSS(context, output) {\n output.add(this.toCSS(context));\n },\n\n toCSS(context, doNotCompress) {\n const compress = context && context.compress && !doNotCompress;\n let color;\n let alpha;\n let colorFunction;\n let args = [];\n\n // `value` is set if this color was originally\n // converted from a named color string so we need\n // to respect this and try to output named color too.\n alpha = this.fround(context, this.alpha);\n\n if (this.value) {\n if (this.value.indexOf('rgb') === 0) {\n if (alpha < 1) {\n colorFunction = 'rgba';\n }\n } else if (this.value.indexOf('hsl') === 0) {\n if (alpha < 1) {\n colorFunction = 'hsla';\n } else {\n colorFunction = 'hsl';\n }\n } else {\n return this.value;\n }\n } else {\n if (alpha < 1) {\n colorFunction = 'rgba';\n }\n }\n\n switch (colorFunction) {\n case 'rgba':\n args = this.rgb.map(function (c) {\n return clamp(Math.round(c), 255);\n }).concat(clamp(alpha, 1));\n break;\n case 'hsla':\n args.push(clamp(alpha, 1));\n // eslint-disable-next-line no-fallthrough\n case 'hsl':\n color = this.toHSL();\n args = [\n this.fround(context, color.h),\n `${this.fround(context, color.s * 100)}%`,\n `${this.fround(context, color.l * 100)}%`\n ].concat(args);\n }\n\n if (colorFunction) {\n // Values are capped between `0` and `255`, rounded and zero-padded.\n return `${colorFunction}(${args.join(`,${compress ? '' : ' '}`)})`;\n }\n\n color = this.toRGB();\n\n if (compress) {\n const splitcolor = color.split('');\n\n // Convert color to short format\n if (splitcolor[1] === splitcolor[2] && splitcolor[3] === splitcolor[4] && splitcolor[5] === splitcolor[6]) {\n color = `#${splitcolor[1]}${splitcolor[3]}${splitcolor[5]}`;\n }\n }\n\n return color;\n },\n\n //\n // Operations have to be done per-channel, if not,\n // channels will spill onto each other. Once we have\n // our result, in the form of an integer triplet,\n // we create a new Color node to hold the result.\n //\n operate(context, op, other) {\n const rgb = new Array(3);\n const alpha = this.alpha * (1 - other.alpha) + other.alpha;\n for (let c = 0; c < 3; c++) {\n rgb[c] = this._operate(context, op, this.rgb[c], other.rgb[c]);\n }\n return new Color(rgb, alpha);\n },\n\n toRGB() {\n return toHex(this.rgb);\n },\n\n toHSL() {\n const r = this.rgb[0] / 255, g = this.rgb[1] / 255, b = this.rgb[2] / 255, a = this.alpha;\n\n const max = Math.max(r, g, b), min = Math.min(r, g, b);\n let h;\n let s;\n const l = (max + min) / 2;\n const d = max - min;\n\n if (max === min) {\n h = s = 0;\n } else {\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n\n switch (max) {\n case r: h = (g - b) / d + (g < b ? 6 : 0); break;\n case g: h = (b - r) / d + 2; break;\n case b: h = (r - g) / d + 4; break;\n }\n h /= 6;\n }\n return { h: h * 360, s, l, a };\n },\n\n // Adapted from http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript\n toHSV() {\n const r = this.rgb[0] / 255, g = this.rgb[1] / 255, b = this.rgb[2] / 255, a = this.alpha;\n\n const max = Math.max(r, g, b), min = Math.min(r, g, b);\n let h;\n let s;\n const v = max;\n\n const d = max - min;\n if (max === 0) {\n s = 0;\n } else {\n s = d / max;\n }\n\n if (max === min) {\n h = 0;\n } else {\n switch (max) {\n case r: h = (g - b) / d + (g < b ? 6 : 0); break;\n case g: h = (b - r) / d + 2; break;\n case b: h = (r - g) / d + 4; break;\n }\n h /= 6;\n }\n return { h: h * 360, s, v, a };\n },\n\n toARGB() {\n return toHex([this.alpha * 255].concat(this.rgb));\n },\n\n compare(x) {\n return (x.rgb &&\n x.rgb[0] === this.rgb[0] &&\n x.rgb[1] === this.rgb[1] &&\n x.rgb[2] === this.rgb[2] &&\n x.alpha === this.alpha) ? 0 : undefined;\n }\n});\n\nColor.fromKeyword = function(keyword) {\n let c;\n const key = keyword.toLowerCase();\n // eslint-disable-next-line no-prototype-builtins\n if (colors.hasOwnProperty(key)) {\n c = new Color(colors[key].slice(1));\n }\n else if (key === 'transparent') {\n c = new Color([0, 0, 0], 0);\n }\n\n if (c) {\n c.value = keyword;\n return c;\n }\n};\n\nfunction clamp(v, max) {\n return Math.min(Math.max(v, 0), max);\n}\n\nfunction toHex(v) {\n return `#${v.map(function (c) {\n c = clamp(Math.round(c), 255);\n return (c < 16 ? '0' : '') + c.toString(16);\n }).join('')}`;\n}\n\nexport default Color;\n","import Node from './node';\n\nconst Paren = function(node) {\n this.value = node;\n};\n\nParen.prototype = Object.assign(new Node(), {\n type: 'Paren',\n\n genCSS(context, output) {\n output.add('(');\n this.value.genCSS(context, output);\n output.add(')');\n },\n\n eval(context) {\n return new Paren(this.value.eval(context));\n }\n});\n\nexport default Paren;\n","import Node from './node';\nconst _noSpaceCombinators = {\n '': true,\n ' ': true,\n '|': true\n};\n\nconst Combinator = function(value) {\n if (value === ' ') {\n this.value = ' ';\n this.emptyOrWhitespace = true;\n } else {\n this.value = value ? value.trim() : '';\n this.emptyOrWhitespace = this.value === '';\n }\n}\n\nCombinator.prototype = Object.assign(new Node(), {\n type: 'Combinator',\n\n genCSS(context, output) {\n const spaceOrEmpty = (context.compress || _noSpaceCombinators[this.value]) ? '' : ' ';\n output.add(spaceOrEmpty + this.value + spaceOrEmpty);\n }\n});\n\nexport default Combinator;\n","import Node from './node';\nimport Paren from './paren';\nimport Combinator from './combinator';\n\nconst Element = function(combinator, value, isVariable, index, currentFileInfo, visibilityInfo) {\n this.combinator = combinator instanceof Combinator ?\n combinator : new Combinator(combinator);\n\n if (typeof value === 'string') {\n this.value = value.trim();\n } else if (value) {\n this.value = value;\n } else {\n this.value = '';\n }\n this.isVariable = isVariable;\n this._index = index;\n this._fileInfo = currentFileInfo;\n this.copyVisibilityInfo(visibilityInfo);\n this.setParent(this.combinator, this);\n}\n\nElement.prototype = Object.assign(new Node(), {\n type: 'Element',\n\n accept(visitor) {\n const value = this.value;\n this.combinator = visitor.visit(this.combinator);\n if (typeof value === 'object') {\n this.value = visitor.visit(value);\n }\n },\n\n eval(context) {\n return new Element(this.combinator,\n this.value.eval ? this.value.eval(context) : this.value,\n this.isVariable,\n this.getIndex(),\n this.fileInfo(), this.visibilityInfo());\n },\n\n clone() {\n return new Element(this.combinator,\n this.value,\n this.isVariable,\n this.getIndex(),\n this.fileInfo(), this.visibilityInfo());\n },\n\n genCSS(context, output) {\n output.add(this.toCSS(context), this.fileInfo(), this.getIndex());\n },\n\n toCSS(context) {\n context = context || {};\n let value = this.value;\n const firstSelector = context.firstSelector;\n if (value instanceof Paren) {\n // selector in parens should not be affected by outer selector\n // flags (breaks only interpolated selectors - see #1973)\n context.firstSelector = true;\n }\n value = value.toCSS ? value.toCSS(context) : value;\n context.firstSelector = firstSelector;\n if (value === '' && this.combinator.value.charAt(0) === '&') {\n return '';\n } else {\n return this.combinator.toCSS(context) + value;\n }\n }\n});\n\nexport default Element;\n","\nexport const Math = {\n ALWAYS: 0,\n PARENS_DIVISION: 1,\n PARENS: 2\n // removed - STRICT_LEGACY: 3\n};\n\nexport const RewriteUrls = {\n OFF: 0,\n LOCAL: 1,\n ALL: 2\n};","/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n function next() {\n while (env.stack.length) {\n var rec = env.stack.pop();\n try {\n var result = rec.dispose && rec.dispose.call(rec.value);\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n catch (e) {\n fail(e);\n }\n }\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n};\n","/**\r\n * Returns the object type of the given payload\r\n *\r\n * @param {*} payload\r\n * @returns {string}\r\n */\r\nfunction getType(payload) {\r\n return Object.prototype.toString.call(payload).slice(8, -1);\r\n}\r\n/**\r\n * Returns whether the payload is undefined\r\n *\r\n * @param {*} payload\r\n * @returns {payload is undefined}\r\n */\r\nfunction isUndefined(payload) {\r\n return getType(payload) === 'Undefined';\r\n}\r\n/**\r\n * Returns whether the payload is null\r\n *\r\n * @param {*} payload\r\n * @returns {payload is null}\r\n */\r\nfunction isNull(payload) {\r\n return getType(payload) === 'Null';\r\n}\r\n/**\r\n * Returns whether the payload is a plain JavaScript object (excluding special classes or objects with other prototypes)\r\n *\r\n * @param {*} payload\r\n * @returns {payload is PlainObject}\r\n */\r\nfunction isPlainObject(payload) {\r\n if (getType(payload) !== 'Object')\r\n return false;\r\n return payload.constructor === Object && Object.getPrototypeOf(payload) === Object.prototype;\r\n}\r\n/**\r\n * Returns whether the payload is a plain JavaScript object (excluding special classes or objects with other prototypes)\r\n *\r\n * @param {*} payload\r\n * @returns {payload is PlainObject}\r\n */\r\nfunction isObject(payload) {\r\n return isPlainObject(payload);\r\n}\r\n/**\r\n * Returns whether the payload is a an empty object (excluding special classes or objects with other prototypes)\r\n *\r\n * @param {*} payload\r\n * @returns {payload is { [K in any]: never }}\r\n */\r\nfunction isEmptyObject(payload) {\r\n return isPlainObject(payload) && Object.keys(payload).length === 0;\r\n}\r\n/**\r\n * Returns whether the payload is a an empty object (excluding special classes or objects with other prototypes)\r\n *\r\n * @param {*} payload\r\n * @returns {payload is PlainObject}\r\n */\r\nfunction isFullObject(payload) {\r\n return isPlainObject(payload) && Object.keys(payload).length > 0;\r\n}\r\n/**\r\n * Returns whether the payload is an any kind of object (including special classes or objects with different prototypes)\r\n *\r\n * @param {*} payload\r\n * @returns {payload is PlainObject}\r\n */\r\nfunction isAnyObject(payload) {\r\n return getType(payload) === 'Object';\r\n}\r\n/**\r\n * Returns whether the payload is an object like a type passed in < >\r\n *\r\n * Usage: isObjectLike<{id: any}>(payload) // will make sure it's an object and has an `id` prop.\r\n *\r\n * @template T this must be passed in < >\r\n * @param {*} payload\r\n * @returns {payload is T}\r\n */\r\nfunction isObjectLike(payload) {\r\n return isAnyObject(payload);\r\n}\r\n/**\r\n * Returns whether the payload is a function (regular or async)\r\n *\r\n * @param {*} payload\r\n * @returns {payload is AnyFunction}\r\n */\r\nfunction isFunction(payload) {\r\n return typeof payload === 'function';\r\n}\r\n/**\r\n * Returns whether the payload is an array\r\n *\r\n * @param {any} payload\r\n * @returns {payload is any[]}\r\n */\r\nfunction isArray(payload) {\r\n return getType(payload) === 'Array';\r\n}\r\n/**\r\n * Returns whether the payload is a an array with at least 1 item\r\n *\r\n * @param {*} payload\r\n * @returns {payload is any[]}\r\n */\r\nfunction isFullArray(payload) {\r\n return isArray(payload) && payload.length > 0;\r\n}\r\n/**\r\n * Returns whether the payload is a an empty array\r\n *\r\n * @param {*} payload\r\n * @returns {payload is []}\r\n */\r\nfunction isEmptyArray(payload) {\r\n return isArray(payload) && payload.length === 0;\r\n}\r\n/**\r\n * Returns whether the payload is a string\r\n *\r\n * @param {*} payload\r\n * @returns {payload is string}\r\n */\r\nfunction isString(payload) {\r\n return getType(payload) === 'String';\r\n}\r\n/**\r\n * Returns whether the payload is a string, BUT returns false for ''\r\n *\r\n * @param {*} payload\r\n * @returns {payload is string}\r\n */\r\nfunction isFullString(payload) {\r\n return isString(payload) && payload !== '';\r\n}\r\n/**\r\n * Returns whether the payload is ''\r\n *\r\n * @param {*} payload\r\n * @returns {payload is string}\r\n */\r\nfunction isEmptyString(payload) {\r\n return payload === '';\r\n}\r\n/**\r\n * Returns whether the payload is a number (but not NaN)\r\n *\r\n * This will return `false` for `NaN`!!\r\n *\r\n * @param {*} payload\r\n * @returns {payload is number}\r\n */\r\nfunction isNumber(payload) {\r\n return getType(payload) === 'Number' && !isNaN(payload);\r\n}\r\n/**\r\n * Returns whether the payload is a boolean\r\n *\r\n * @param {*} payload\r\n * @returns {payload is boolean}\r\n */\r\nfunction isBoolean(payload) {\r\n return getType(payload) === 'Boolean';\r\n}\r\n/**\r\n * Returns whether the payload is a regular expression (RegExp)\r\n *\r\n * @param {*} payload\r\n * @returns {payload is RegExp}\r\n */\r\nfunction isRegExp(payload) {\r\n return getType(payload) === 'RegExp';\r\n}\r\n/**\r\n * Returns whether the payload is a Map\r\n *\r\n * @param {*} payload\r\n * @returns {payload is Map}\r\n */\r\nfunction isMap(payload) {\r\n return getType(payload) === 'Map';\r\n}\r\n/**\r\n * Returns whether the payload is a WeakMap\r\n *\r\n * @param {*} payload\r\n * @returns {payload is WeakMap}\r\n */\r\nfunction isWeakMap(payload) {\r\n return getType(payload) === 'WeakMap';\r\n}\r\n/**\r\n * Returns whether the payload is a Set\r\n *\r\n * @param {*} payload\r\n * @returns {payload is Set}\r\n */\r\nfunction isSet(payload) {\r\n return getType(payload) === 'Set';\r\n}\r\n/**\r\n * Returns whether the payload is a WeakSet\r\n *\r\n * @param {*} payload\r\n * @returns {payload is WeakSet}\r\n */\r\nfunction isWeakSet(payload) {\r\n return getType(payload) === 'WeakSet';\r\n}\r\n/**\r\n * Returns whether the payload is a Symbol\r\n *\r\n * @param {*} payload\r\n * @returns {payload is symbol}\r\n */\r\nfunction isSymbol(payload) {\r\n return getType(payload) === 'Symbol';\r\n}\r\n/**\r\n * Returns whether the payload is a Date, and that the date is valid\r\n *\r\n * @param {*} payload\r\n * @returns {payload is Date}\r\n */\r\nfunction isDate(payload) {\r\n return getType(payload) === 'Date' && !isNaN(payload);\r\n}\r\n/**\r\n * Returns whether the payload is a Blob\r\n *\r\n * @param {*} payload\r\n * @returns {payload is Blob}\r\n */\r\nfunction isBlob(payload) {\r\n return getType(payload) === 'Blob';\r\n}\r\n/**\r\n * Returns whether the payload is a File\r\n *\r\n * @param {*} payload\r\n * @returns {payload is File}\r\n */\r\nfunction isFile(payload) {\r\n return getType(payload) === 'File';\r\n}\r\n/**\r\n * Returns whether the payload is a Promise\r\n *\r\n * @param {*} payload\r\n * @returns {payload is Promise}\r\n */\r\nfunction isPromise(payload) {\r\n return getType(payload) === 'Promise';\r\n}\r\n/**\r\n * Returns whether the payload is an Error\r\n *\r\n * @param {*} payload\r\n * @returns {payload is Error}\r\n */\r\nfunction isError(payload) {\r\n return getType(payload) === 'Error';\r\n}\r\n/**\r\n * Returns whether the payload is literally the value `NaN` (it's `NaN` and also a `number`)\r\n *\r\n * @param {*} payload\r\n * @returns {payload is typeof NaN}\r\n */\r\nfunction isNaNValue(payload) {\r\n return getType(payload) === 'Number' && isNaN(payload);\r\n}\r\n/**\r\n * Returns whether the payload is a primitive type (eg. Boolean | Null | Undefined | Number | String | Symbol)\r\n *\r\n * @param {*} payload\r\n * @returns {(payload is boolean | null | undefined | number | string | symbol)}\r\n */\r\nfunction isPrimitive(payload) {\r\n return (isBoolean(payload) ||\r\n isNull(payload) ||\r\n isUndefined(payload) ||\r\n isNumber(payload) ||\r\n isString(payload) ||\r\n isSymbol(payload));\r\n}\r\n/**\r\n * Returns true whether the payload is null or undefined\r\n *\r\n * @param {*} payload\r\n * @returns {(payload is null | undefined)}\r\n */\r\nvar isNullOrUndefined = isOneOf(isNull, isUndefined);\r\nfunction isOneOf(a, b, c, d, e) {\r\n return function (value) {\r\n return a(value) || b(value) || (!!c && c(value)) || (!!d && d(value)) || (!!e && e(value));\r\n };\r\n}\r\n/**\r\n * Does a generic check to check that the given payload is of a given type.\r\n * In cases like Number, it will return true for NaN as NaN is a Number (thanks javascript!);\r\n * It will, however, differentiate between object and null\r\n *\r\n * @template T\r\n * @param {*} payload\r\n * @param {T} type\r\n * @throws {TypeError} Will throw type error if type is an invalid type\r\n * @returns {payload is T}\r\n */\r\nfunction isType(payload, type) {\r\n if (!(type instanceof Function)) {\r\n throw new TypeError('Type must be a function');\r\n }\r\n if (!Object.prototype.hasOwnProperty.call(type, 'prototype')) {\r\n throw new TypeError('Type is not a class');\r\n }\r\n // Classes usually have names (as functions usually have names)\r\n var name = type.name;\r\n return getType(payload) === name || Boolean(payload && payload.constructor === type);\r\n}\n\nexport { getType, isAnyObject, isArray, isBlob, isBoolean, isDate, isEmptyArray, isEmptyObject, isEmptyString, isError, isFile, isFullArray, isFullObject, isFullString, isFunction, isMap, isNaNValue, isNull, isNullOrUndefined, isNumber, isObject, isObjectLike, isOneOf, isPlainObject, isPrimitive, isPromise, isRegExp, isSet, isString, isSymbol, isType, isUndefined, isWeakMap, isWeakSet };\n","import { isArray, isPlainObject } from 'is-what';\n\nfunction assignProp(carry, key, newVal, originalObject, includeNonenumerable) {\r\n const propType = {}.propertyIsEnumerable.call(originalObject, key)\r\n ? 'enumerable'\r\n : 'nonenumerable';\r\n if (propType === 'enumerable')\r\n carry[key] = newVal;\r\n if (includeNonenumerable && propType === 'nonenumerable') {\r\n Object.defineProperty(carry, key, {\r\n value: newVal,\r\n enumerable: false,\r\n writable: true,\r\n configurable: true,\r\n });\r\n }\r\n}\r\n/**\r\n * Copy (clone) an object and all its props recursively to get rid of any prop referenced of the original object. Arrays are also cloned, however objects inside arrays are still linked.\r\n *\r\n * @export\r\n * @template T\r\n * @param {T} target Target can be anything\r\n * @param {Options} [options = {}] Options can be `props` or `nonenumerable`\r\n * @returns {T} the target with replaced values\r\n * @export\r\n */\r\nfunction copy(target, options = {}) {\r\n if (isArray(target)) {\r\n return target.map((item) => copy(item, options));\r\n }\r\n if (!isPlainObject(target)) {\r\n return target;\r\n }\r\n const props = Object.getOwnPropertyNames(target);\r\n const symbols = Object.getOwnPropertySymbols(target);\r\n return [...props, ...symbols].reduce((carry, key) => {\r\n if (isArray(options.props) && !options.props.includes(key)) {\r\n return carry;\r\n }\r\n const val = target[key];\r\n const newVal = copy(val, options);\r\n assignProp(carry, key, newVal, target, options.nonenumerable);\r\n return carry;\r\n }, {});\r\n}\n\nexport { copy };\n","/* jshint proto: true */\nimport * as Constants from './constants';\nimport { copy } from 'copy-anything';\n\nexport function getLocation(index, inputStream) {\n let n = index + 1;\n let line = null;\n let column = -1;\n\n while (--n >= 0 && inputStream.charAt(n) !== '\\n') {\n column++;\n }\n\n if (typeof index === 'number') {\n line = (inputStream.slice(0, index).match(/\\n/g) || '').length;\n }\n\n return {\n line,\n column\n };\n}\n\nexport function copyArray(arr) {\n let i;\n const length = arr.length;\n const copy = new Array(length);\n\n for (i = 0; i < length; i++) {\n copy[i] = arr[i];\n }\n return copy;\n}\n\nexport function clone(obj) {\n const cloned = {};\n for (const prop in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, prop)) {\n cloned[prop] = obj[prop];\n }\n }\n return cloned;\n}\n\nexport function defaults(obj1, obj2) {\n let newObj = obj2 || {};\n if (!obj2._defaults) {\n newObj = {};\n const defaults = copy(obj1);\n newObj._defaults = defaults;\n const cloned = obj2 ? copy(obj2) : {};\n Object.assign(newObj, defaults, cloned);\n }\n return newObj;\n}\n\nexport function copyOptions(obj1, obj2) {\n if (obj2 && obj2._defaults) {\n return obj2;\n }\n const opts = defaults(obj1, obj2);\n if (opts.strictMath) {\n opts.math = Constants.Math.PARENS;\n }\n // Back compat with changed relativeUrls option\n if (opts.relativeUrls) {\n opts.rewriteUrls = Constants.RewriteUrls.ALL;\n }\n if (typeof opts.math === 'string') {\n switch (opts.math.toLowerCase()) {\n case 'always':\n opts.math = Constants.Math.ALWAYS;\n break;\n case 'parens-division':\n opts.math = Constants.Math.PARENS_DIVISION;\n break;\n case 'strict':\n case 'parens':\n opts.math = Constants.Math.PARENS;\n break;\n default:\n opts.math = Constants.Math.PARENS;\n }\n }\n if (typeof opts.rewriteUrls === 'string') {\n switch (opts.rewriteUrls.toLowerCase()) {\n case 'off':\n opts.rewriteUrls = Constants.RewriteUrls.OFF;\n break;\n case 'local':\n opts.rewriteUrls = Constants.RewriteUrls.LOCAL;\n break;\n case 'all':\n opts.rewriteUrls = Constants.RewriteUrls.ALL;\n break;\n }\n }\n return opts;\n}\n\nexport function merge(obj1, obj2) {\n for (const prop in obj2) {\n if (Object.prototype.hasOwnProperty.call(obj2, prop)) {\n obj1[prop] = obj2[prop];\n }\n }\n return obj1;\n}\n\nexport function flattenArray(arr, result = []) {\n for (let i = 0, length = arr.length; i < length; i++) {\n const value = arr[i];\n if (Array.isArray(value)) {\n flattenArray(value, result);\n } else {\n if (value !== undefined) {\n result.push(value);\n }\n }\n }\n return result;\n}\n\nexport function isNullOrUndefined(val) {\n return val === null || val === undefined\n}","import * as utils from './utils';\n\nconst anonymousFunc = /(|Function):(\\d+):(\\d+)/;\n\n/**\n * This is a centralized class of any error that could be thrown internally (mostly by the parser).\n * Besides standard .message it keeps some additional data like a path to the file where the error\n * occurred along with line and column numbers.\n *\n * @class\n * @extends Error\n * @type {module.LessError}\n *\n * @prop {string} type\n * @prop {string} filename\n * @prop {number} index\n * @prop {number} line\n * @prop {number} column\n * @prop {number} callLine\n * @prop {number} callExtract\n * @prop {string[]} extract\n *\n * @param {Object} e - An error object to wrap around or just a descriptive object\n * @param {Object} fileContentMap - An object with file contents in 'contents' property (like importManager) @todo - move to fileManager?\n * @param {string} [currentFilename]\n */\nconst LessError = function(e, fileContentMap, currentFilename) {\n Error.call(this);\n\n const filename = e.filename || currentFilename;\n\n this.message = e.message;\n this.stack = e.stack;\n\n if (fileContentMap && filename) {\n const input = fileContentMap.contents[filename];\n const loc = utils.getLocation(e.index, input);\n var line = loc.line;\n const col = loc.column;\n const callLine = e.call && utils.getLocation(e.call, input).line;\n const lines = input ? input.split('\\n') : '';\n\n this.type = e.type || 'Syntax';\n this.filename = filename;\n this.index = e.index;\n this.line = typeof line === 'number' ? line + 1 : null;\n this.column = col;\n\n if (!this.line && this.stack) {\n const found = this.stack.match(anonymousFunc);\n\n /**\n * We have to figure out how this environment stringifies anonymous functions\n * so we can correctly map plugin errors.\n * \n * Note, in Node 8, the output of anonymous funcs varied based on parameters\n * being present or not, so we inject dummy params.\n */\n const func = new Function('a', 'throw new Error()');\n let lineAdjust = 0;\n try {\n func();\n } catch (e) {\n const match = e.stack.match(anonymousFunc);\n lineAdjust = 1 - parseInt(match[2]);\n }\n\n if (found) {\n if (found[2]) {\n this.line = parseInt(found[2]) + lineAdjust;\n }\n if (found[3]) {\n this.column = parseInt(found[3]);\n }\n }\n }\n\n this.callLine = callLine + 1;\n this.callExtract = lines[callLine];\n\n this.extract = [\n lines[this.line - 2],\n lines[this.line - 1],\n lines[this.line]\n ];\n }\n\n};\n\nif (typeof Object.create === 'undefined') {\n const F = function () {};\n F.prototype = Error.prototype;\n LessError.prototype = new F();\n} else {\n LessError.prototype = Object.create(Error.prototype);\n}\n\nLessError.prototype.constructor = LessError;\n\n/**\n * An overridden version of the default Object.prototype.toString\n * which uses additional information to create a helpful message.\n *\n * @param {Object} options\n * @returns {string}\n */\nLessError.prototype.toString = function(options) {\n options = options || {};\n\n let message = '';\n const extract = this.extract || [];\n let error = [];\n let stylize = function (str) { return str; };\n if (options.stylize) {\n const type = typeof options.stylize;\n if (type !== 'function') {\n throw Error(`options.stylize should be a function, got a ${type}!`);\n }\n stylize = options.stylize;\n }\n\n if (this.line !== null) {\n if (typeof extract[0] === 'string') {\n error.push(stylize(`${this.line - 1} ${extract[0]}`, 'grey'));\n }\n\n if (typeof extract[1] === 'string') {\n let errorTxt = `${this.line} `;\n if (extract[1]) {\n errorTxt += extract[1].slice(0, this.column) +\n stylize(stylize(stylize(extract[1].substr(this.column, 1), 'bold') +\n extract[1].slice(this.column + 1), 'red'), 'inverse');\n }\n error.push(errorTxt);\n }\n\n if (typeof extract[2] === 'string') {\n error.push(stylize(`${this.line + 1} ${extract[2]}`, 'grey'));\n }\n error = `${error.join('\\n') + stylize('', 'reset')}\\n`;\n }\n\n message += stylize(`${this.type}Error: ${this.message}`, 'red');\n if (this.filename) {\n message += stylize(' in ', 'red') + this.filename;\n }\n if (this.line) {\n message += stylize(` on line ${this.line}, column ${this.column + 1}:`, 'grey');\n }\n\n message += `\\n${error}`;\n\n if (this.callLine) {\n message += `${stylize('from ', 'red') + (this.filename || '')}/n`;\n message += `${stylize(this.callLine, 'grey')} ${this.callExtract}/n`;\n }\n\n return message;\n};\n\nexport default LessError;","import tree from '../tree';\n\nconst _visitArgs = { visitDeeper: true };\nlet _hasIndexed = false;\n\nfunction _noop(node) {\n return node;\n}\n\nfunction indexNodeTypes(parent, ticker) {\n // add .typeIndex to tree node types for lookup table\n let key, child;\n for (key in parent) { \n /* eslint guard-for-in: 0 */\n child = parent[key];\n switch (typeof child) {\n case 'function':\n // ignore bound functions directly on tree which do not have a prototype\n // or aren't nodes\n if (child.prototype && child.prototype.type) {\n child.prototype.typeIndex = ticker++;\n }\n break;\n case 'object':\n ticker = indexNodeTypes(child, ticker);\n break;\n \n }\n }\n return ticker;\n}\n\nclass Visitor {\n constructor(implementation) {\n this._implementation = implementation;\n this._visitInCache = {};\n this._visitOutCache = {};\n\n if (!_hasIndexed) {\n indexNodeTypes(tree, 1);\n _hasIndexed = true;\n }\n }\n\n visit(node) {\n if (!node) {\n return node;\n }\n\n const nodeTypeIndex = node.typeIndex;\n if (!nodeTypeIndex) {\n // MixinCall args aren't a node type?\n if (node.value && node.value.typeIndex) {\n this.visit(node.value);\n }\n return node;\n }\n\n const impl = this._implementation;\n let func = this._visitInCache[nodeTypeIndex];\n let funcOut = this._visitOutCache[nodeTypeIndex];\n const visitArgs = _visitArgs;\n let fnName;\n\n visitArgs.visitDeeper = true;\n\n if (!func) {\n fnName = `visit${node.type}`;\n func = impl[fnName] || _noop;\n funcOut = impl[`${fnName}Out`] || _noop;\n this._visitInCache[nodeTypeIndex] = func;\n this._visitOutCache[nodeTypeIndex] = funcOut;\n }\n\n if (func !== _noop) {\n const newNode = func.call(impl, node, visitArgs);\n if (node && impl.isReplacing) {\n node = newNode;\n }\n }\n\n if (visitArgs.visitDeeper && node) {\n if (node.length) {\n for (let i = 0, cnt = node.length; i < cnt; i++) {\n if (node[i].accept) {\n node[i].accept(this);\n }\n }\n } else if (node.accept) {\n node.accept(this);\n }\n }\n\n if (funcOut != _noop) {\n funcOut.call(impl, node);\n }\n\n return node;\n }\n\n visitArray(nodes, nonReplacing) {\n if (!nodes) {\n return nodes;\n }\n\n const cnt = nodes.length;\n let i;\n\n // Non-replacing\n if (nonReplacing || !this._implementation.isReplacing) {\n for (i = 0; i < cnt; i++) {\n this.visit(nodes[i]);\n }\n return nodes;\n }\n\n // Replacing\n const out = [];\n for (i = 0; i < cnt; i++) {\n const evald = this.visit(nodes[i]);\n if (evald === undefined) { continue; }\n if (!evald.splice) {\n out.push(evald);\n } else if (evald.length) {\n this.flatten(evald, out);\n }\n }\n return out;\n }\n\n flatten(arr, out) {\n if (!out) {\n out = [];\n }\n\n let cnt, i, item, nestedCnt, j, nestedItem;\n\n for (i = 0, cnt = arr.length; i < cnt; i++) {\n item = arr[i];\n if (item === undefined) {\n continue;\n }\n if (!item.splice) {\n out.push(item);\n continue;\n }\n\n for (j = 0, nestedCnt = item.length; j < nestedCnt; j++) {\n nestedItem = item[j];\n if (nestedItem === undefined) {\n continue;\n }\n if (!nestedItem.splice) {\n out.push(nestedItem);\n } else if (nestedItem.length) {\n this.flatten(nestedItem, out);\n }\n }\n }\n\n return out;\n }\n}\n\nexport default Visitor;\n","const contexts = {};\nexport default contexts;\nimport * as Constants from './constants';\n\nconst copyFromOriginal = function copyFromOriginal(original, destination, propertiesToCopy) {\n if (!original) { return; }\n\n for (let i = 0; i < propertiesToCopy.length; i++) {\n if (Object.prototype.hasOwnProperty.call(original, propertiesToCopy[i])) {\n destination[propertiesToCopy[i]] = original[propertiesToCopy[i]];\n }\n }\n};\n\n/*\n parse is used whilst parsing\n */\nconst parseCopyProperties = [\n // options\n 'paths', // option - unmodified - paths to search for imports on\n 'rewriteUrls', // option - whether to adjust URL's to be relative\n 'rootpath', // option - rootpath to append to URL's\n 'strictImports', // option -\n 'insecure', // option - whether to allow imports from insecure ssl hosts\n 'dumpLineNumbers', // option - whether to dump line numbers\n 'compress', // option - whether to compress\n 'syncImport', // option - whether to import synchronously\n 'chunkInput', // option - whether to chunk input. more performant but causes parse issues.\n 'mime', // browser only - mime type for sheet import\n 'useFileCache', // browser only - whether to use the per file session cache\n // context\n 'processImports', // option & context - whether to process imports. if false then imports will not be imported.\n // Used by the import manager to stop multiple import visitors being created.\n 'pluginManager' // Used as the plugin manager for the session\n];\n\ncontexts.Parse = function(options) {\n copyFromOriginal(options, this, parseCopyProperties);\n\n if (typeof this.paths === 'string') { this.paths = [this.paths]; }\n};\n\nconst evalCopyProperties = [\n 'paths', // additional include paths\n 'compress', // whether to compress\n 'math', // whether math has to be within parenthesis\n 'strictUnits', // whether units need to evaluate correctly\n 'sourceMap', // whether to output a source map\n 'importMultiple', // whether we are currently importing multiple copies\n 'urlArgs', // whether to add args into url tokens\n 'javascriptEnabled', // option - whether Inline JavaScript is enabled. if undefined, defaults to false\n 'pluginManager', // Used as the plugin manager for the session\n 'importantScope', // used to bubble up !important statements\n 'rewriteUrls' // option - whether to adjust URL's to be relative\n];\n\ncontexts.Eval = function(options, frames) {\n copyFromOriginal(options, this, evalCopyProperties);\n\n if (typeof this.paths === 'string') { this.paths = [this.paths]; }\n\n this.frames = frames || [];\n this.importantScope = this.importantScope || [];\n};\n\ncontexts.Eval.prototype.enterCalc = function () {\n if (!this.calcStack) {\n this.calcStack = [];\n }\n this.calcStack.push(true);\n this.inCalc = true;\n};\n\ncontexts.Eval.prototype.exitCalc = function () {\n this.calcStack.pop();\n if (!this.calcStack.length) {\n this.inCalc = false;\n }\n};\n\ncontexts.Eval.prototype.inParenthesis = function () {\n if (!this.parensStack) {\n this.parensStack = [];\n }\n this.parensStack.push(true);\n};\n\ncontexts.Eval.prototype.outOfParenthesis = function () {\n this.parensStack.pop();\n};\n\ncontexts.Eval.prototype.inCalc = false;\ncontexts.Eval.prototype.mathOn = true;\ncontexts.Eval.prototype.isMathOn = function (op) {\n if (!this.mathOn) {\n return false;\n }\n if (op === '/' && this.math !== Constants.Math.ALWAYS && (!this.parensStack || !this.parensStack.length)) {\n return false;\n }\n if (this.math > Constants.Math.PARENS_DIVISION) {\n return this.parensStack && this.parensStack.length;\n }\n return true;\n};\n\ncontexts.Eval.prototype.pathRequiresRewrite = function (path) {\n const isRelative = this.rewriteUrls === Constants.RewriteUrls.LOCAL ? isPathLocalRelative : isPathRelative;\n\n return isRelative(path);\n};\n\ncontexts.Eval.prototype.rewritePath = function (path, rootpath) {\n let newPath;\n\n rootpath = rootpath || '';\n newPath = this.normalizePath(rootpath + path);\n\n // If a path was explicit relative and the rootpath was not an absolute path\n // we must ensure that the new path is also explicit relative.\n if (isPathLocalRelative(path) &&\n isPathRelative(rootpath) &&\n isPathLocalRelative(newPath) === false) {\n newPath = `./${newPath}`;\n }\n\n return newPath;\n};\n\ncontexts.Eval.prototype.normalizePath = function (path) {\n const segments = path.split('/').reverse();\n let segment;\n\n path = [];\n while (segments.length !== 0) {\n segment = segments.pop();\n switch ( segment ) {\n case '.':\n break;\n case '..':\n if ((path.length === 0) || (path[path.length - 1] === '..')) {\n path.push( segment );\n } else {\n path.pop();\n }\n break;\n default:\n path.push(segment);\n break;\n }\n }\n\n return path.join('/');\n};\n\nfunction isPathRelative(path) {\n return !/^(?:[a-z-]+:|\\/|#)/i.test(path);\n}\n\nfunction isPathLocalRelative(path) {\n return path.charAt(0) === '.';\n}\n\n// todo - do the same for the toCSS ?\n","class ImportSequencer {\n constructor(onSequencerEmpty) {\n this.imports = [];\n this.variableImports = [];\n this._onSequencerEmpty = onSequencerEmpty;\n this._currentDepth = 0;\n }\n\n addImport(callback) {\n const importSequencer = this,\n importItem = {\n callback,\n args: null,\n isReady: false\n };\n this.imports.push(importItem);\n return function() {\n importItem.args = Array.prototype.slice.call(arguments, 0);\n importItem.isReady = true;\n importSequencer.tryRun();\n };\n }\n\n addVariableImport(callback) {\n this.variableImports.push(callback);\n }\n\n tryRun() {\n this._currentDepth++;\n try {\n while (true) {\n while (this.imports.length > 0) {\n const importItem = this.imports[0];\n if (!importItem.isReady) {\n return;\n }\n this.imports = this.imports.slice(1);\n importItem.callback.apply(null, importItem.args);\n }\n if (this.variableImports.length === 0) {\n break;\n }\n const variableImport = this.variableImports[0];\n this.variableImports = this.variableImports.slice(1);\n variableImport();\n }\n } finally {\n this._currentDepth--;\n }\n if (this._currentDepth === 0 && this._onSequencerEmpty) {\n this._onSequencerEmpty();\n }\n }\n}\n\nexport default ImportSequencer;\n","/* eslint-disable no-unused-vars */\n/**\n * @todo - Remove unused when JSDoc types are added for visitor methods\n */\nimport contexts from '../contexts';\nimport Visitor from './visitor';\nimport ImportSequencer from './import-sequencer';\nimport * as utils from '../utils';\n\nconst ImportVisitor = function(importer, finish) {\n\n this._visitor = new Visitor(this);\n this._importer = importer;\n this._finish = finish;\n this.context = new contexts.Eval();\n this.importCount = 0;\n this.onceFileDetectionMap = {};\n this.recursionDetector = {};\n this._sequencer = new ImportSequencer(this._onSequencerEmpty.bind(this));\n};\n\nImportVisitor.prototype = {\n isReplacing: false,\n run: function (root) {\n try {\n // process the contents\n this._visitor.visit(root);\n }\n catch (e) {\n this.error = e;\n }\n\n this.isFinished = true;\n this._sequencer.tryRun();\n },\n _onSequencerEmpty: function() {\n if (!this.isFinished) {\n return;\n }\n this._finish(this.error);\n },\n visitImport: function (importNode, visitArgs) {\n const inlineCSS = importNode.options.inline;\n\n if (!importNode.css || inlineCSS) {\n\n const context = new contexts.Eval(this.context, utils.copyArray(this.context.frames));\n const importParent = context.frames[0];\n\n this.importCount++;\n if (importNode.isVariableImport()) {\n this._sequencer.addVariableImport(this.processImportNode.bind(this, importNode, context, importParent));\n } else {\n this.processImportNode(importNode, context, importParent);\n }\n }\n visitArgs.visitDeeper = false;\n },\n processImportNode: function(importNode, context, importParent) {\n let evaldImportNode;\n const inlineCSS = importNode.options.inline;\n\n try {\n evaldImportNode = importNode.evalForImport(context);\n } catch (e) {\n if (!e.filename) { e.index = importNode.getIndex(); e.filename = importNode.fileInfo().filename; }\n // attempt to eval properly and treat as css\n importNode.css = true;\n // if that fails, this error will be thrown\n importNode.error = e;\n }\n\n if (evaldImportNode && (!evaldImportNode.css || inlineCSS)) {\n\n if (evaldImportNode.options.multiple) {\n context.importMultiple = true;\n }\n\n // try appending if we haven't determined if it is css or not\n const tryAppendLessExtension = evaldImportNode.css === undefined;\n\n for (let i = 0; i < importParent.rules.length; i++) {\n if (importParent.rules[i] === importNode) {\n importParent.rules[i] = evaldImportNode;\n break;\n }\n }\n\n const onImported = this.onImported.bind(this, evaldImportNode, context), sequencedOnImported = this._sequencer.addImport(onImported);\n\n this._importer.push(evaldImportNode.getPath(), tryAppendLessExtension, evaldImportNode.fileInfo(),\n evaldImportNode.options, sequencedOnImported);\n } else {\n this.importCount--;\n if (this.isFinished) {\n this._sequencer.tryRun();\n }\n }\n },\n onImported: function (importNode, context, e, root, importedAtRoot, fullPath) {\n if (e) {\n if (!e.filename) {\n e.index = importNode.getIndex(); e.filename = importNode.fileInfo().filename;\n }\n this.error = e;\n }\n\n const importVisitor = this,\n inlineCSS = importNode.options.inline,\n isPlugin = importNode.options.isPlugin,\n isOptional = importNode.options.optional,\n duplicateImport = importedAtRoot || fullPath in importVisitor.recursionDetector;\n\n if (!context.importMultiple) {\n if (duplicateImport) {\n importNode.skip = true;\n } else {\n importNode.skip = function() {\n if (fullPath in importVisitor.onceFileDetectionMap) {\n return true;\n }\n importVisitor.onceFileDetectionMap[fullPath] = true;\n return false;\n };\n }\n }\n\n if (!fullPath && isOptional) {\n importNode.skip = true;\n }\n\n if (root) {\n importNode.root = root;\n importNode.importedFilename = fullPath;\n\n if (!inlineCSS && !isPlugin && (context.importMultiple || !duplicateImport)) {\n importVisitor.recursionDetector[fullPath] = true;\n\n const oldContext = this.context;\n this.context = context;\n try {\n this._visitor.visit(root);\n } catch (e) {\n this.error = e;\n }\n this.context = oldContext;\n }\n }\n\n importVisitor.importCount--;\n\n if (importVisitor.isFinished) {\n importVisitor._sequencer.tryRun();\n }\n },\n visitDeclaration: function (declNode, visitArgs) {\n if (declNode.value.type === 'DetachedRuleset') {\n this.context.frames.unshift(declNode);\n } else {\n visitArgs.visitDeeper = false;\n }\n },\n visitDeclarationOut: function(declNode) {\n if (declNode.value.type === 'DetachedRuleset') {\n this.context.frames.shift();\n }\n },\n visitAtRule: function (atRuleNode, visitArgs) {\n this.context.frames.unshift(atRuleNode);\n },\n visitAtRuleOut: function (atRuleNode) {\n this.context.frames.shift();\n },\n visitMixinDefinition: function (mixinDefinitionNode, visitArgs) {\n this.context.frames.unshift(mixinDefinitionNode);\n },\n visitMixinDefinitionOut: function (mixinDefinitionNode) {\n this.context.frames.shift();\n },\n visitRuleset: function (rulesetNode, visitArgs) {\n this.context.frames.unshift(rulesetNode);\n },\n visitRulesetOut: function (rulesetNode) {\n this.context.frames.shift();\n },\n visitMedia: function (mediaNode, visitArgs) {\n this.context.frames.unshift(mediaNode.rules[0]);\n },\n visitMediaOut: function (mediaNode) {\n this.context.frames.shift();\n }\n};\nexport default ImportVisitor;\n","class SetTreeVisibilityVisitor {\n constructor(visible) {\n this.visible = visible;\n }\n\n run(root) {\n this.visit(root);\n }\n\n visitArray(nodes) {\n if (!nodes) {\n return nodes;\n }\n\n const cnt = nodes.length;\n let i;\n for (i = 0; i < cnt; i++) {\n this.visit(nodes[i]);\n }\n return nodes;\n }\n\n visit(node) {\n if (!node) {\n return node;\n }\n if (node.constructor === Array) {\n return this.visitArray(node);\n }\n\n if (!node.blocksVisibility || node.blocksVisibility()) {\n return node;\n }\n if (this.visible) {\n node.ensureVisibility();\n } else {\n node.ensureInvisibility();\n }\n\n node.accept(this);\n return node;\n }\n}\n\nexport default SetTreeVisibilityVisitor;","/* eslint-disable no-unused-vars */\n/**\n * @todo - Remove unused when JSDoc types are added for visitor methods\n */\nimport tree from '../tree';\nimport Visitor from './visitor';\nimport logger from '../logger';\nimport * as utils from '../utils';\n\n/* jshint loopfunc:true */\n\nclass ExtendFinderVisitor {\n constructor() {\n this._visitor = new Visitor(this);\n this.contexts = [];\n this.allExtendsStack = [[]];\n }\n\n run(root) {\n root = this._visitor.visit(root);\n root.allExtends = this.allExtendsStack[0];\n return root;\n }\n\n visitDeclaration(declNode, visitArgs) {\n visitArgs.visitDeeper = false;\n }\n\n visitMixinDefinition(mixinDefinitionNode, visitArgs) {\n visitArgs.visitDeeper = false;\n }\n\n visitRuleset(rulesetNode, visitArgs) {\n if (rulesetNode.root) {\n return;\n }\n\n let i;\n let j;\n let extend;\n const allSelectorsExtendList = [];\n let extendList;\n\n // get &:extend(.a); rules which apply to all selectors in this ruleset\n const rules = rulesetNode.rules, ruleCnt = rules ? rules.length : 0;\n for (i = 0; i < ruleCnt; i++) {\n if (rulesetNode.rules[i] instanceof tree.Extend) {\n allSelectorsExtendList.push(rules[i]);\n rulesetNode.extendOnEveryPath = true;\n }\n }\n\n // now find every selector and apply the extends that apply to all extends\n // and the ones which apply to an individual extend\n const paths = rulesetNode.paths;\n for (i = 0; i < paths.length; i++) {\n const selectorPath = paths[i], selector = selectorPath[selectorPath.length - 1], selExtendList = selector.extendList;\n\n extendList = selExtendList ? utils.copyArray(selExtendList).concat(allSelectorsExtendList)\n : allSelectorsExtendList;\n\n if (extendList) {\n extendList = extendList.map(function(allSelectorsExtend) {\n return allSelectorsExtend.clone();\n });\n }\n\n for (j = 0; j < extendList.length; j++) {\n this.foundExtends = true;\n extend = extendList[j];\n extend.findSelfSelectors(selectorPath);\n extend.ruleset = rulesetNode;\n if (j === 0) { extend.firstExtendOnThisSelectorPath = true; }\n this.allExtendsStack[this.allExtendsStack.length - 1].push(extend);\n }\n }\n\n this.contexts.push(rulesetNode.selectors);\n }\n\n visitRulesetOut(rulesetNode) {\n if (!rulesetNode.root) {\n this.contexts.length = this.contexts.length - 1;\n }\n }\n\n visitMedia(mediaNode, visitArgs) {\n mediaNode.allExtends = [];\n this.allExtendsStack.push(mediaNode.allExtends);\n }\n\n visitMediaOut(mediaNode) {\n this.allExtendsStack.length = this.allExtendsStack.length - 1;\n }\n\n visitAtRule(atRuleNode, visitArgs) {\n atRuleNode.allExtends = [];\n this.allExtendsStack.push(atRuleNode.allExtends);\n }\n\n visitAtRuleOut(atRuleNode) {\n this.allExtendsStack.length = this.allExtendsStack.length - 1;\n }\n}\n\nclass ProcessExtendsVisitor {\n constructor() {\n this._visitor = new Visitor(this);\n }\n\n run(root) {\n const extendFinder = new ExtendFinderVisitor();\n this.extendIndices = {};\n extendFinder.run(root);\n if (!extendFinder.foundExtends) { return root; }\n root.allExtends = root.allExtends.concat(this.doExtendChaining(root.allExtends, root.allExtends));\n this.allExtendsStack = [root.allExtends];\n const newRoot = this._visitor.visit(root);\n this.checkExtendsForNonMatched(root.allExtends);\n return newRoot;\n }\n\n checkExtendsForNonMatched(extendList) {\n const indices = this.extendIndices;\n extendList.filter(function(extend) {\n return !extend.hasFoundMatches && extend.parent_ids.length == 1;\n }).forEach(function(extend) {\n let selector = '_unknown_';\n try {\n selector = extend.selector.toCSS({});\n }\n catch (_) {}\n\n if (!indices[`${extend.index} ${selector}`]) {\n indices[`${extend.index} ${selector}`] = true;\n logger.warn(`extend '${selector}' has no matches`);\n }\n });\n }\n\n doExtendChaining(extendsList, extendsListTarget, iterationCount) {\n //\n // chaining is different from normal extension.. if we extend an extend then we are not just copying, altering\n // and pasting the selector we would do normally, but we are also adding an extend with the same target selector\n // this means this new extend can then go and alter other extends\n //\n // this method deals with all the chaining work - without it, extend is flat and doesn't work on other extend selectors\n // this is also the most expensive.. and a match on one selector can cause an extension of a selector we had already\n // processed if we look at each selector at a time, as is done in visitRuleset\n\n let extendIndex;\n\n let targetExtendIndex;\n let matches;\n const extendsToAdd = [];\n let newSelector;\n const extendVisitor = this;\n let selectorPath;\n let extend;\n let targetExtend;\n let newExtend;\n\n iterationCount = iterationCount || 0;\n\n // loop through comparing every extend with every target extend.\n // a target extend is the one on the ruleset we are looking at copy/edit/pasting in place\n // e.g. .a:extend(.b) {} and .b:extend(.c) {} then the first extend extends the second one\n // and the second is the target.\n // the separation into two lists allows us to process a subset of chains with a bigger set, as is the\n // case when processing media queries\n for (extendIndex = 0; extendIndex < extendsList.length; extendIndex++) {\n for (targetExtendIndex = 0; targetExtendIndex < extendsListTarget.length; targetExtendIndex++) {\n\n extend = extendsList[extendIndex];\n targetExtend = extendsListTarget[targetExtendIndex];\n\n // look for circular references\n if ( extend.parent_ids.indexOf( targetExtend.object_id ) >= 0 ) { continue; }\n\n // find a match in the target extends self selector (the bit before :extend)\n selectorPath = [targetExtend.selfSelectors[0]];\n matches = extendVisitor.findMatch(extend, selectorPath);\n\n if (matches.length) {\n extend.hasFoundMatches = true;\n\n // we found a match, so for each self selector..\n extend.selfSelectors.forEach(function(selfSelector) {\n const info = targetExtend.visibilityInfo();\n\n // process the extend as usual\n newSelector = extendVisitor.extendSelector(matches, selectorPath, selfSelector, extend.isVisible());\n\n // but now we create a new extend from it\n newExtend = new(tree.Extend)(targetExtend.selector, targetExtend.option, 0, targetExtend.fileInfo(), info);\n newExtend.selfSelectors = newSelector;\n\n // add the extend onto the list of extends for that selector\n newSelector[newSelector.length - 1].extendList = [newExtend];\n\n // record that we need to add it.\n extendsToAdd.push(newExtend);\n newExtend.ruleset = targetExtend.ruleset;\n\n // remember its parents for circular references\n newExtend.parent_ids = newExtend.parent_ids.concat(targetExtend.parent_ids, extend.parent_ids);\n\n // only process the selector once.. if we have :extend(.a,.b) then multiple\n // extends will look at the same selector path, so when extending\n // we know that any others will be duplicates in terms of what is added to the css\n if (targetExtend.firstExtendOnThisSelectorPath) {\n newExtend.firstExtendOnThisSelectorPath = true;\n targetExtend.ruleset.paths.push(newSelector);\n }\n });\n }\n }\n }\n\n if (extendsToAdd.length) {\n // try to detect circular references to stop a stack overflow.\n // may no longer be needed.\n this.extendChainCount++;\n if (iterationCount > 100) {\n let selectorOne = '{unable to calculate}';\n let selectorTwo = '{unable to calculate}';\n try {\n selectorOne = extendsToAdd[0].selfSelectors[0].toCSS();\n selectorTwo = extendsToAdd[0].selector.toCSS();\n }\n catch (e) {}\n throw { message: `extend circular reference detected. One of the circular extends is currently:${selectorOne}:extend(${selectorTwo})`};\n }\n\n // now process the new extends on the existing rules so that we can handle a extending b extending c extending\n // d extending e...\n return extendsToAdd.concat(extendVisitor.doExtendChaining(extendsToAdd, extendsListTarget, iterationCount + 1));\n } else {\n return extendsToAdd;\n }\n }\n\n visitDeclaration(ruleNode, visitArgs) {\n visitArgs.visitDeeper = false;\n }\n\n visitMixinDefinition(mixinDefinitionNode, visitArgs) {\n visitArgs.visitDeeper = false;\n }\n\n visitSelector(selectorNode, visitArgs) {\n visitArgs.visitDeeper = false;\n }\n\n visitRuleset(rulesetNode, visitArgs) {\n if (rulesetNode.root) {\n return;\n }\n let matches;\n let pathIndex;\n let extendIndex;\n const allExtends = this.allExtendsStack[this.allExtendsStack.length - 1];\n const selectorsToAdd = [];\n const extendVisitor = this;\n let selectorPath;\n\n // look at each selector path in the ruleset, find any extend matches and then copy, find and replace\n\n for (extendIndex = 0; extendIndex < allExtends.length; extendIndex++) {\n for (pathIndex = 0; pathIndex < rulesetNode.paths.length; pathIndex++) {\n selectorPath = rulesetNode.paths[pathIndex];\n\n // extending extends happens initially, before the main pass\n if (rulesetNode.extendOnEveryPath) { continue; }\n const extendList = selectorPath[selectorPath.length - 1].extendList;\n if (extendList && extendList.length) { continue; }\n\n matches = this.findMatch(allExtends[extendIndex], selectorPath);\n\n if (matches.length) {\n allExtends[extendIndex].hasFoundMatches = true;\n\n allExtends[extendIndex].selfSelectors.forEach(function(selfSelector) {\n let extendedSelectors;\n extendedSelectors = extendVisitor.extendSelector(matches, selectorPath, selfSelector, allExtends[extendIndex].isVisible());\n selectorsToAdd.push(extendedSelectors);\n });\n }\n }\n }\n rulesetNode.paths = rulesetNode.paths.concat(selectorsToAdd);\n }\n\n findMatch(extend, haystackSelectorPath) {\n //\n // look through the haystack selector path to try and find the needle - extend.selector\n // returns an array of selector matches that can then be replaced\n //\n let haystackSelectorIndex;\n\n let hackstackSelector;\n let hackstackElementIndex;\n let haystackElement;\n let targetCombinator;\n let i;\n const extendVisitor = this;\n const needleElements = extend.selector.elements;\n const potentialMatches = [];\n let potentialMatch;\n const matches = [];\n\n // loop through the haystack elements\n for (haystackSelectorIndex = 0; haystackSelectorIndex < haystackSelectorPath.length; haystackSelectorIndex++) {\n hackstackSelector = haystackSelectorPath[haystackSelectorIndex];\n\n for (hackstackElementIndex = 0; hackstackElementIndex < hackstackSelector.elements.length; hackstackElementIndex++) {\n\n haystackElement = hackstackSelector.elements[hackstackElementIndex];\n\n // if we allow elements before our match we can add a potential match every time. otherwise only at the first element.\n if (extend.allowBefore || (haystackSelectorIndex === 0 && hackstackElementIndex === 0)) {\n potentialMatches.push({pathIndex: haystackSelectorIndex, index: hackstackElementIndex, matched: 0,\n initialCombinator: haystackElement.combinator});\n }\n\n for (i = 0; i < potentialMatches.length; i++) {\n potentialMatch = potentialMatches[i];\n\n // selectors add \" \" onto the first element. When we use & it joins the selectors together, but if we don't\n // then each selector in haystackSelectorPath has a space before it added in the toCSS phase. so we need to\n // work out what the resulting combinator will be\n targetCombinator = haystackElement.combinator.value;\n if (targetCombinator === '' && hackstackElementIndex === 0) {\n targetCombinator = ' ';\n }\n\n // if we don't match, null our match to indicate failure\n if (!extendVisitor.isElementValuesEqual(needleElements[potentialMatch.matched].value, haystackElement.value) ||\n (potentialMatch.matched > 0 && needleElements[potentialMatch.matched].combinator.value !== targetCombinator)) {\n potentialMatch = null;\n } else {\n potentialMatch.matched++;\n }\n\n // if we are still valid and have finished, test whether we have elements after and whether these are allowed\n if (potentialMatch) {\n potentialMatch.finished = potentialMatch.matched === needleElements.length;\n if (potentialMatch.finished &&\n (!extend.allowAfter &&\n (hackstackElementIndex + 1 < hackstackSelector.elements.length || haystackSelectorIndex + 1 < haystackSelectorPath.length))) {\n potentialMatch = null;\n }\n }\n // if null we remove, if not, we are still valid, so either push as a valid match or continue\n if (potentialMatch) {\n if (potentialMatch.finished) {\n potentialMatch.length = needleElements.length;\n potentialMatch.endPathIndex = haystackSelectorIndex;\n potentialMatch.endPathElementIndex = hackstackElementIndex + 1; // index after end of match\n potentialMatches.length = 0; // we don't allow matches to overlap, so start matching again\n matches.push(potentialMatch);\n }\n } else {\n potentialMatches.splice(i, 1);\n i--;\n }\n }\n }\n }\n return matches;\n }\n\n isElementValuesEqual(elementValue1, elementValue2) {\n if (typeof elementValue1 === 'string' || typeof elementValue2 === 'string') {\n return elementValue1 === elementValue2;\n }\n if (elementValue1 instanceof tree.Attribute) {\n if (elementValue1.op !== elementValue2.op || elementValue1.key !== elementValue2.key) {\n return false;\n }\n if (!elementValue1.value || !elementValue2.value) {\n if (elementValue1.value || elementValue2.value) {\n return false;\n }\n return true;\n }\n elementValue1 = elementValue1.value.value || elementValue1.value;\n elementValue2 = elementValue2.value.value || elementValue2.value;\n return elementValue1 === elementValue2;\n }\n elementValue1 = elementValue1.value;\n elementValue2 = elementValue2.value;\n if (elementValue1 instanceof tree.Selector) {\n if (!(elementValue2 instanceof tree.Selector) || elementValue1.elements.length !== elementValue2.elements.length) {\n return false;\n }\n for (let i = 0; i < elementValue1.elements.length; i++) {\n if (elementValue1.elements[i].combinator.value !== elementValue2.elements[i].combinator.value) {\n if (i !== 0 || (elementValue1.elements[i].combinator.value || ' ') !== (elementValue2.elements[i].combinator.value || ' ')) {\n return false;\n }\n }\n if (!this.isElementValuesEqual(elementValue1.elements[i].value, elementValue2.elements[i].value)) {\n return false;\n }\n }\n return true;\n }\n return false;\n }\n\n extendSelector(matches, selectorPath, replacementSelector, isVisible) {\n\n // for a set of matches, replace each match with the replacement selector\n\n let currentSelectorPathIndex = 0, currentSelectorPathElementIndex = 0, path = [], matchIndex, selector, firstElement, match, newElements;\n\n for (matchIndex = 0; matchIndex < matches.length; matchIndex++) {\n match = matches[matchIndex];\n selector = selectorPath[match.pathIndex];\n firstElement = new tree.Element(\n match.initialCombinator,\n replacementSelector.elements[0].value,\n replacementSelector.elements[0].isVariable,\n replacementSelector.elements[0].getIndex(),\n replacementSelector.elements[0].fileInfo()\n );\n\n if (match.pathIndex > currentSelectorPathIndex && currentSelectorPathElementIndex > 0) {\n path[path.length - 1].elements = path[path.length - 1]\n .elements.concat(selectorPath[currentSelectorPathIndex].elements.slice(currentSelectorPathElementIndex));\n currentSelectorPathElementIndex = 0;\n currentSelectorPathIndex++;\n }\n\n newElements = selector.elements\n .slice(currentSelectorPathElementIndex, match.index)\n .concat([firstElement])\n .concat(replacementSelector.elements.slice(1));\n\n if (currentSelectorPathIndex === match.pathIndex && matchIndex > 0) {\n path[path.length - 1].elements =\n path[path.length - 1].elements.concat(newElements);\n } else {\n path = path.concat(selectorPath.slice(currentSelectorPathIndex, match.pathIndex));\n\n path.push(new tree.Selector(\n newElements\n ));\n }\n currentSelectorPathIndex = match.endPathIndex;\n currentSelectorPathElementIndex = match.endPathElementIndex;\n if (currentSelectorPathElementIndex >= selectorPath[currentSelectorPathIndex].elements.length) {\n currentSelectorPathElementIndex = 0;\n currentSelectorPathIndex++;\n }\n }\n\n if (currentSelectorPathIndex < selectorPath.length && currentSelectorPathElementIndex > 0) {\n path[path.length - 1].elements = path[path.length - 1]\n .elements.concat(selectorPath[currentSelectorPathIndex].elements.slice(currentSelectorPathElementIndex));\n currentSelectorPathIndex++;\n }\n\n path = path.concat(selectorPath.slice(currentSelectorPathIndex, selectorPath.length));\n path = path.map(function (currentValue) {\n // we can re-use elements here, because the visibility property matters only for selectors\n const derived = currentValue.createDerived(currentValue.elements);\n if (isVisible) {\n derived.ensureVisibility();\n } else {\n derived.ensureInvisibility();\n }\n return derived;\n });\n return path;\n }\n\n visitMedia(mediaNode, visitArgs) {\n let newAllExtends = mediaNode.allExtends.concat(this.allExtendsStack[this.allExtendsStack.length - 1]);\n newAllExtends = newAllExtends.concat(this.doExtendChaining(newAllExtends, mediaNode.allExtends));\n this.allExtendsStack.push(newAllExtends);\n }\n\n visitMediaOut(mediaNode) {\n const lastIndex = this.allExtendsStack.length - 1;\n this.allExtendsStack.length = lastIndex;\n }\n\n visitAtRule(atRuleNode, visitArgs) {\n let newAllExtends = atRuleNode.allExtends.concat(this.allExtendsStack[this.allExtendsStack.length - 1]);\n newAllExtends = newAllExtends.concat(this.doExtendChaining(newAllExtends, atRuleNode.allExtends));\n this.allExtendsStack.push(newAllExtends);\n }\n\n visitAtRuleOut(atRuleNode) {\n const lastIndex = this.allExtendsStack.length - 1;\n this.allExtendsStack.length = lastIndex;\n }\n}\n\nexport default ProcessExtendsVisitor;\n","/* eslint-disable no-unused-vars */\n/**\n * @todo - Remove unused when JSDoc types are added for visitor methods\n */\nimport Visitor from './visitor';\n\nclass JoinSelectorVisitor {\n constructor() {\n this.contexts = [[]];\n this._visitor = new Visitor(this);\n }\n\n run(root) {\n return this._visitor.visit(root);\n }\n\n visitDeclaration(declNode, visitArgs) {\n visitArgs.visitDeeper = false;\n }\n\n visitMixinDefinition(mixinDefinitionNode, visitArgs) {\n visitArgs.visitDeeper = false;\n }\n\n visitRuleset(rulesetNode, visitArgs) {\n const context = this.contexts[this.contexts.length - 1];\n const paths = [];\n let selectors;\n\n this.contexts.push(paths);\n\n if (!rulesetNode.root) {\n selectors = rulesetNode.selectors;\n if (selectors) {\n selectors = selectors.filter(function(selector) { return selector.getIsOutput(); });\n rulesetNode.selectors = selectors.length ? selectors : (selectors = null);\n if (selectors) { rulesetNode.joinSelectors(paths, context, selectors); }\n }\n if (!selectors) { rulesetNode.rules = null; }\n rulesetNode.paths = paths;\n }\n }\n\n visitRulesetOut(rulesetNode) {\n this.contexts.length = this.contexts.length - 1;\n }\n\n visitMedia(mediaNode, visitArgs) {\n const context = this.contexts[this.contexts.length - 1];\n mediaNode.rules[0].root = (context.length === 0 || context[0].multiMedia);\n }\n\n visitAtRule(atRuleNode, visitArgs) {\n const context = this.contexts[this.contexts.length - 1];\n if (atRuleNode.rules && atRuleNode.rules.length) {\n atRuleNode.rules[0].root = (atRuleNode.isRooted || context.length === 0 || null);\n }\n }\n}\n\nexport default JoinSelectorVisitor;\n","/* eslint-disable no-unused-vars */\n/**\n * @todo - Remove unused when JSDoc types are added for visitor methods\n */\nimport tree from '../tree';\nimport Visitor from './visitor';\n\nclass CSSVisitorUtils {\n constructor(context) {\n this._visitor = new Visitor(this);\n this._context = context;\n }\n\n containsSilentNonBlockedChild(bodyRules) {\n let rule;\n if (!bodyRules) {\n return false;\n }\n for (let r = 0; r < bodyRules.length; r++) {\n rule = bodyRules[r];\n if (rule.isSilent && rule.isSilent(this._context) && !rule.blocksVisibility()) {\n // the atrule contains something that was referenced (likely by extend)\n // therefore it needs to be shown in output too\n return true;\n }\n }\n return false;\n }\n\n keepOnlyVisibleChilds(owner) {\n if (owner && owner.rules) {\n owner.rules = owner.rules.filter(thing => thing.isVisible());\n }\n }\n\n isEmpty(owner) {\n return (owner && owner.rules) \n ? (owner.rules.length === 0) : true;\n }\n\n hasVisibleSelector(rulesetNode) {\n return (rulesetNode && rulesetNode.paths)\n ? (rulesetNode.paths.length > 0) : false;\n }\n\n resolveVisibility(node) {\n if (!node.blocksVisibility()) {\n if (this.isEmpty(node)) {\n return ;\n }\n\n return node;\n }\n\n const compiledRulesBody = node.rules[0];\n this.keepOnlyVisibleChilds(compiledRulesBody);\n\n if (this.isEmpty(compiledRulesBody)) {\n return ;\n }\n\n node.ensureVisibility();\n node.removeVisibilityBlock();\n\n return node;\n }\n\n isVisibleRuleset(rulesetNode) {\n if (rulesetNode.firstRoot) {\n return true;\n }\n\n if (this.isEmpty(rulesetNode)) {\n return false;\n }\n\n if (!rulesetNode.root && !this.hasVisibleSelector(rulesetNode)) {\n return false;\n }\n\n return true;\n }\n}\n\nconst ToCSSVisitor = function(context) {\n this._visitor = new Visitor(this);\n this._context = context;\n this.utils = new CSSVisitorUtils(context);\n};\n\nToCSSVisitor.prototype = {\n isReplacing: true,\n run: function (root) {\n return this._visitor.visit(root);\n },\n\n visitDeclaration: function (declNode, visitArgs) {\n if (declNode.blocksVisibility() || declNode.variable) {\n return;\n }\n return declNode;\n },\n\n visitMixinDefinition: function (mixinNode, visitArgs) {\n // mixin definitions do not get eval'd - this means they keep state\n // so we have to clear that state here so it isn't used if toCSS is called twice\n mixinNode.frames = [];\n },\n\n visitExtend: function (extendNode, visitArgs) {\n },\n\n visitComment: function (commentNode, visitArgs) {\n if (commentNode.blocksVisibility() || commentNode.isSilent(this._context)) {\n return;\n }\n return commentNode;\n },\n\n visitMedia: function(mediaNode, visitArgs) {\n const originalRules = mediaNode.rules[0].rules;\n mediaNode.accept(this._visitor);\n visitArgs.visitDeeper = false;\n\n return this.utils.resolveVisibility(mediaNode, originalRules);\n },\n\n visitImport: function (importNode, visitArgs) {\n if (importNode.blocksVisibility()) {\n return ;\n }\n return importNode;\n },\n\n visitAtRule: function(atRuleNode, visitArgs) {\n if (atRuleNode.rules && atRuleNode.rules.length) {\n return this.visitAtRuleWithBody(atRuleNode, visitArgs);\n } else {\n return this.visitAtRuleWithoutBody(atRuleNode, visitArgs);\n }\n },\n\n visitAnonymous: function(anonymousNode, visitArgs) {\n if (!anonymousNode.blocksVisibility()) {\n anonymousNode.accept(this._visitor);\n return anonymousNode;\n }\n },\n\n visitAtRuleWithBody: function(atRuleNode, visitArgs) {\n // if there is only one nested ruleset and that one has no path, then it is\n // just fake ruleset\n function hasFakeRuleset(atRuleNode) {\n const bodyRules = atRuleNode.rules;\n return bodyRules.length === 1 && (!bodyRules[0].paths || bodyRules[0].paths.length === 0);\n }\n function getBodyRules(atRuleNode) {\n const nodeRules = atRuleNode.rules;\n if (hasFakeRuleset(atRuleNode)) {\n return nodeRules[0].rules;\n }\n\n return nodeRules;\n }\n // it is still true that it is only one ruleset in array\n // this is last such moment\n // process childs\n const originalRules = getBodyRules(atRuleNode);\n atRuleNode.accept(this._visitor);\n visitArgs.visitDeeper = false;\n\n if (!this.utils.isEmpty(atRuleNode)) {\n this._mergeRules(atRuleNode.rules[0].rules);\n }\n\n return this.utils.resolveVisibility(atRuleNode, originalRules);\n },\n\n visitAtRuleWithoutBody: function(atRuleNode, visitArgs) {\n if (atRuleNode.blocksVisibility()) {\n return;\n }\n\n if (atRuleNode.name === '@charset') {\n // Only output the debug info together with subsequent @charset definitions\n // a comment (or @media statement) before the actual @charset atrule would\n // be considered illegal css as it has to be on the first line\n if (this.charset) {\n if (atRuleNode.debugInfo) {\n const comment = new tree.Comment(`/* ${atRuleNode.toCSS(this._context).replace(/\\n/g, '')} */\\n`);\n comment.debugInfo = atRuleNode.debugInfo;\n return this._visitor.visit(comment);\n }\n return;\n }\n this.charset = true;\n }\n\n return atRuleNode;\n },\n\n checkValidNodes: function(rules, isRoot) {\n if (!rules) {\n return;\n }\n\n for (let i = 0; i < rules.length; i++) {\n const ruleNode = rules[i];\n if (isRoot && ruleNode instanceof tree.Declaration && !ruleNode.variable) {\n throw { message: 'Properties must be inside selector blocks. They cannot be in the root',\n index: ruleNode.getIndex(), filename: ruleNode.fileInfo() && ruleNode.fileInfo().filename};\n }\n if (ruleNode instanceof tree.Call) {\n throw { message: `Function '${ruleNode.name}' did not return a root node`,\n index: ruleNode.getIndex(), filename: ruleNode.fileInfo() && ruleNode.fileInfo().filename};\n }\n if (ruleNode.type && !ruleNode.allowRoot) {\n throw { message: `${ruleNode.type} node returned by a function is not valid here`,\n index: ruleNode.getIndex(), filename: ruleNode.fileInfo() && ruleNode.fileInfo().filename};\n }\n }\n },\n\n visitRuleset: function (rulesetNode, visitArgs) {\n // at this point rulesets are nested into each other\n let rule;\n\n const rulesets = [];\n\n this.checkValidNodes(rulesetNode.rules, rulesetNode.firstRoot);\n\n if (!rulesetNode.root) {\n // remove invisible paths\n this._compileRulesetPaths(rulesetNode);\n\n // remove rulesets from this ruleset body and compile them separately\n const nodeRules = rulesetNode.rules;\n\n let nodeRuleCnt = nodeRules ? nodeRules.length : 0;\n for (let i = 0; i < nodeRuleCnt; ) {\n rule = nodeRules[i];\n if (rule && rule.rules) {\n // visit because we are moving them out from being a child\n rulesets.push(this._visitor.visit(rule));\n nodeRules.splice(i, 1);\n nodeRuleCnt--;\n continue;\n }\n i++;\n }\n // accept the visitor to remove rules and refactor itself\n // then we can decide nogw whether we want it or not\n // compile body\n if (nodeRuleCnt > 0) {\n rulesetNode.accept(this._visitor);\n } else {\n rulesetNode.rules = null;\n }\n visitArgs.visitDeeper = false;\n } else { // if (! rulesetNode.root) {\n rulesetNode.accept(this._visitor);\n visitArgs.visitDeeper = false;\n }\n\n if (rulesetNode.rules) {\n this._mergeRules(rulesetNode.rules);\n this._removeDuplicateRules(rulesetNode.rules);\n }\n\n // now decide whether we keep the ruleset\n if (this.utils.isVisibleRuleset(rulesetNode)) {\n rulesetNode.ensureVisibility();\n rulesets.splice(0, 0, rulesetNode);\n }\n\n if (rulesets.length === 1) {\n return rulesets[0];\n }\n return rulesets;\n },\n\n _compileRulesetPaths: function(rulesetNode) {\n if (rulesetNode.paths) {\n rulesetNode.paths = rulesetNode.paths\n .filter(p => {\n let i;\n if (p[0].elements[0].combinator.value === ' ') {\n p[0].elements[0].combinator = new(tree.Combinator)('');\n }\n for (i = 0; i < p.length; i++) {\n if (p[i].isVisible() && p[i].getIsOutput()) {\n return true;\n }\n }\n return false;\n });\n }\n },\n\n _removeDuplicateRules: function(rules) {\n if (!rules) { return; }\n\n // remove duplicates\n const ruleCache = {};\n\n let ruleList;\n let rule;\n let i;\n\n for (i = rules.length - 1; i >= 0 ; i--) {\n rule = rules[i];\n if (rule instanceof tree.Declaration) {\n if (!ruleCache[rule.name]) {\n ruleCache[rule.name] = rule;\n } else {\n ruleList = ruleCache[rule.name];\n if (ruleList instanceof tree.Declaration) {\n ruleList = ruleCache[rule.name] = [ruleCache[rule.name].toCSS(this._context)];\n }\n const ruleCSS = rule.toCSS(this._context);\n if (ruleList.indexOf(ruleCSS) !== -1) {\n rules.splice(i, 1);\n } else {\n ruleList.push(ruleCSS);\n }\n }\n }\n }\n },\n\n _mergeRules: function(rules) {\n if (!rules) {\n return; \n }\n\n const groups = {};\n const groupsArr = [];\n\n for (let i = 0; i < rules.length; i++) {\n const rule = rules[i];\n if (rule.merge) {\n const key = rule.name;\n groups[key] ? rules.splice(i--, 1) : \n groupsArr.push(groups[key] = []);\n groups[key].push(rule);\n }\n }\n\n groupsArr.forEach(group => {\n if (group.length > 0) {\n const result = group[0];\n let space = [];\n const comma = [new tree.Expression(space)];\n group.forEach(rule => {\n if ((rule.merge === '+') && (space.length > 0)) {\n comma.push(new tree.Expression(space = []));\n }\n space.push(rule.value);\n result.important = result.important || rule.important;\n });\n result.value = new tree.Value(comma);\n }\n });\n }\n};\n\nexport default ToCSSVisitor;\n","import Visitor from './visitor';\nimport ImportVisitor from './import-visitor';\nimport MarkVisibleSelectorsVisitor from './set-tree-visibility-visitor';\nimport ExtendVisitor from './extend-visitor';\nimport JoinSelectorVisitor from './join-selector-visitor';\nimport ToCSSVisitor from './to-css-visitor';\n\nexport default {\n Visitor,\n ImportVisitor,\n MarkVisibleSelectorsVisitor,\n ExtendVisitor,\n JoinSelectorVisitor,\n ToCSSVisitor\n};\n","import chunker from './chunker';\n\nexport default () => {\n let // Less input string\n input;\n\n let // current chunk\n j;\n\n const // holds state for backtracking\n saveStack = [];\n\n let // furthest index the parser has gone to\n furthest;\n\n let // if this is furthest we got to, this is the probably cause\n furthestPossibleErrorMessage;\n\n let // chunkified input\n chunks;\n\n let // current chunk\n current;\n\n let // index of current chunk, in `input`\n currentPos;\n\n const parserInput = {};\n const CHARCODE_SPACE = 32;\n const CHARCODE_TAB = 9;\n const CHARCODE_LF = 10;\n const CHARCODE_CR = 13;\n const CHARCODE_PLUS = 43;\n const CHARCODE_COMMA = 44;\n const CHARCODE_FORWARD_SLASH = 47;\n const CHARCODE_9 = 57;\n\n function skipWhitespace(length) {\n const oldi = parserInput.i;\n const oldj = j;\n const curr = parserInput.i - currentPos;\n const endIndex = parserInput.i + current.length - curr;\n const mem = (parserInput.i += length);\n const inp = input;\n let c;\n let nextChar;\n let comment;\n\n for (; parserInput.i < endIndex; parserInput.i++) {\n c = inp.charCodeAt(parserInput.i);\n\n if (parserInput.autoCommentAbsorb && c === CHARCODE_FORWARD_SLASH) {\n nextChar = inp.charAt(parserInput.i + 1);\n if (nextChar === '/') {\n comment = {index: parserInput.i, isLineComment: true};\n let nextNewLine = inp.indexOf('\\n', parserInput.i + 2);\n if (nextNewLine < 0) {\n nextNewLine = endIndex;\n }\n parserInput.i = nextNewLine;\n comment.text = inp.substr(comment.index, parserInput.i - comment.index);\n parserInput.commentStore.push(comment);\n continue;\n } else if (nextChar === '*') {\n const nextStarSlash = inp.indexOf('*/', parserInput.i + 2);\n if (nextStarSlash >= 0) {\n comment = {\n index: parserInput.i,\n text: inp.substr(parserInput.i, nextStarSlash + 2 - parserInput.i),\n isLineComment: false\n };\n parserInput.i += comment.text.length - 1;\n parserInput.commentStore.push(comment);\n continue;\n }\n }\n break;\n }\n\n if ((c !== CHARCODE_SPACE) && (c !== CHARCODE_LF) && (c !== CHARCODE_TAB) && (c !== CHARCODE_CR)) {\n break;\n }\n }\n\n current = current.slice(length + parserInput.i - mem + curr);\n currentPos = parserInput.i;\n\n if (!current.length) {\n if (j < chunks.length - 1) {\n current = chunks[++j];\n skipWhitespace(0); // skip space at the beginning of a chunk\n return true; // things changed\n }\n parserInput.finished = true;\n }\n\n return oldi !== parserInput.i || oldj !== j;\n }\n\n parserInput.save = () => {\n currentPos = parserInput.i;\n saveStack.push( { current, i: parserInput.i, j });\n };\n parserInput.restore = possibleErrorMessage => {\n\n if (parserInput.i > furthest || (parserInput.i === furthest && possibleErrorMessage && !furthestPossibleErrorMessage)) {\n furthest = parserInput.i;\n furthestPossibleErrorMessage = possibleErrorMessage;\n }\n const state = saveStack.pop();\n current = state.current;\n currentPos = parserInput.i = state.i;\n j = state.j;\n };\n parserInput.forget = () => {\n saveStack.pop();\n };\n parserInput.isWhitespace = offset => {\n const pos = parserInput.i + (offset || 0);\n const code = input.charCodeAt(pos);\n return (code === CHARCODE_SPACE || code === CHARCODE_CR || code === CHARCODE_TAB || code === CHARCODE_LF);\n };\n\n // Specialization of $(tok)\n parserInput.$re = tok => {\n if (parserInput.i > currentPos) {\n current = current.slice(parserInput.i - currentPos);\n currentPos = parserInput.i;\n }\n\n const m = tok.exec(current);\n if (!m) {\n return null;\n }\n\n skipWhitespace(m[0].length);\n if (typeof m === 'string') {\n return m;\n }\n\n return m.length === 1 ? m[0] : m;\n };\n\n parserInput.$char = tok => {\n if (input.charAt(parserInput.i) !== tok) {\n return null;\n }\n skipWhitespace(1);\n return tok;\n };\n\n parserInput.$peekChar = tok => {\n if (input.charAt(parserInput.i) !== tok) {\n return null;\n }\n return tok;\n };\n\n parserInput.$str = tok => {\n const tokLength = tok.length;\n\n // https://jsperf.com/string-startswith/21\n for (let i = 0; i < tokLength; i++) {\n if (input.charAt(parserInput.i + i) !== tok.charAt(i)) {\n return null;\n }\n }\n\n skipWhitespace(tokLength);\n return tok;\n };\n\n parserInput.$quoted = loc => {\n const pos = loc || parserInput.i;\n const startChar = input.charAt(pos);\n\n if (startChar !== '\\'' && startChar !== '\"') {\n return;\n }\n const length = input.length;\n const currentPosition = pos;\n\n for (let i = 1; i + currentPosition < length; i++) {\n const nextChar = input.charAt(i + currentPosition);\n switch (nextChar) {\n case '\\\\':\n i++;\n continue;\n case '\\r':\n case '\\n':\n break;\n case startChar: {\n const str = input.substr(currentPosition, i + 1);\n if (!loc && loc !== 0) {\n skipWhitespace(i + 1);\n return str\n }\n return [startChar, str];\n }\n default:\n }\n }\n return null;\n };\n\n /**\n * Permissive parsing. Ignores everything except matching {} [] () and quotes\n * until matching token (outside of blocks)\n */\n parserInput.$parseUntil = tok => {\n let quote = '';\n let returnVal = null;\n let inComment = false;\n let blockDepth = 0;\n const blockStack = [];\n const parseGroups = [];\n const length = input.length;\n const startPos = parserInput.i;\n let lastPos = parserInput.i;\n let i = parserInput.i;\n let loop = true;\n let testChar;\n\n if (typeof tok === 'string') {\n testChar = char => char === tok\n } else {\n testChar = char => tok.test(char)\n }\n\n do {\n let nextChar = input.charAt(i);\n if (blockDepth === 0 && testChar(nextChar)) {\n returnVal = input.substr(lastPos, i - lastPos);\n if (returnVal) {\n parseGroups.push(returnVal);\n }\n else {\n parseGroups.push(' ');\n }\n returnVal = parseGroups;\n skipWhitespace(i - startPos);\n loop = false\n } else {\n if (inComment) {\n if (nextChar === '*' && \n input.charAt(i + 1) === '/') {\n i++;\n blockDepth--;\n inComment = false;\n }\n i++;\n continue;\n }\n switch (nextChar) {\n case '\\\\':\n i++;\n nextChar = input.charAt(i);\n parseGroups.push(input.substr(lastPos, i - lastPos + 1));\n lastPos = i + 1;\n break;\n case '/':\n if (input.charAt(i + 1) === '*') {\n i++;\n inComment = true;\n blockDepth++;\n }\n break;\n case '\\'':\n case '\"':\n quote = parserInput.$quoted(i);\n if (quote) {\n parseGroups.push(input.substr(lastPos, i - lastPos), quote);\n i += quote[1].length - 1;\n lastPos = i + 1;\n }\n else {\n skipWhitespace(i - startPos);\n returnVal = nextChar;\n loop = false;\n }\n break;\n case '{':\n blockStack.push('}');\n blockDepth++;\n break;\n case '(':\n blockStack.push(')');\n blockDepth++;\n break;\n case '[':\n blockStack.push(']');\n blockDepth++;\n break;\n case '}':\n case ')':\n case ']': {\n const expected = blockStack.pop();\n if (nextChar === expected) {\n blockDepth--;\n } else {\n // move the parser to the error and return expected\n skipWhitespace(i - startPos);\n returnVal = expected;\n loop = false;\n }\n }\n }\n i++;\n if (i > length) {\n loop = false;\n }\n }\n } while (loop);\n\n return returnVal ? returnVal : null;\n }\n\n parserInput.autoCommentAbsorb = true;\n parserInput.commentStore = [];\n parserInput.finished = false;\n\n // Same as $(), but don't change the state of the parser,\n // just return the match.\n parserInput.peek = tok => {\n if (typeof tok === 'string') {\n // https://jsperf.com/string-startswith/21\n for (let i = 0; i < tok.length; i++) {\n if (input.charAt(parserInput.i + i) !== tok.charAt(i)) {\n return false;\n }\n }\n return true;\n } else {\n return tok.test(current);\n }\n };\n\n // Specialization of peek()\n // TODO remove or change some currentChar calls to peekChar\n parserInput.peekChar = tok => input.charAt(parserInput.i) === tok;\n\n parserInput.currentChar = () => input.charAt(parserInput.i);\n\n parserInput.prevChar = () => input.charAt(parserInput.i - 1);\n\n parserInput.getInput = () => input;\n\n parserInput.peekNotNumeric = () => {\n const c = input.charCodeAt(parserInput.i);\n // Is the first char of the dimension 0-9, '.', '+' or '-'\n return (c > CHARCODE_9 || c < CHARCODE_PLUS) || c === CHARCODE_FORWARD_SLASH || c === CHARCODE_COMMA;\n };\n\n parserInput.start = (str, chunkInput, failFunction) => {\n input = str;\n parserInput.i = j = currentPos = furthest = 0;\n\n // chunking apparently makes things quicker (but my tests indicate\n // it might actually make things slower in node at least)\n // and it is a non-perfect parse - it can't recognise\n // unquoted urls, meaning it can't distinguish comments\n // meaning comments with quotes or {}() in them get 'counted'\n // and then lead to parse errors.\n // In addition if the chunking chunks in the wrong place we might\n // not be able to parse a parser statement in one go\n // this is officially deprecated but can be switched on via an option\n // in the case it causes too much performance issues.\n if (chunkInput) {\n chunks = chunker(str, failFunction);\n } else {\n chunks = [str];\n }\n\n current = chunks[0];\n\n skipWhitespace(0);\n };\n\n parserInput.end = () => {\n let message;\n const isFinished = parserInput.i >= input.length;\n\n if (parserInput.i < furthest) {\n message = furthestPossibleErrorMessage;\n parserInput.i = furthest;\n }\n return {\n isFinished,\n furthest: parserInput.i,\n furthestPossibleErrorMessage: message,\n furthestReachedEnd: parserInput.i >= input.length - 1,\n furthestChar: input[parserInput.i]\n };\n };\n\n return parserInput;\n};\n","// Split the input into chunks.\nexport default function (input, fail) {\n const len = input.length;\n let level = 0;\n let parenLevel = 0;\n let lastOpening;\n let lastOpeningParen;\n let lastMultiComment;\n let lastMultiCommentEndBrace;\n const chunks = [];\n let emitFrom = 0;\n let chunkerCurrentIndex;\n let currentChunkStartIndex;\n let cc;\n let cc2;\n let matched;\n\n function emitChunk(force) {\n const len = chunkerCurrentIndex - emitFrom;\n if (((len < 512) && !force) || !len) {\n return;\n }\n chunks.push(input.slice(emitFrom, chunkerCurrentIndex + 1));\n emitFrom = chunkerCurrentIndex + 1;\n }\n\n for (chunkerCurrentIndex = 0; chunkerCurrentIndex < len; chunkerCurrentIndex++) {\n cc = input.charCodeAt(chunkerCurrentIndex);\n if (((cc >= 97) && (cc <= 122)) || (cc < 34)) {\n // a-z or whitespace\n continue;\n }\n\n switch (cc) {\n case 40: // (\n parenLevel++;\n lastOpeningParen = chunkerCurrentIndex;\n continue;\n case 41: // )\n if (--parenLevel < 0) {\n return fail('missing opening `(`', chunkerCurrentIndex);\n }\n continue;\n case 59: // ;\n if (!parenLevel) { emitChunk(); }\n continue;\n case 123: // {\n level++;\n lastOpening = chunkerCurrentIndex;\n continue;\n case 125: // }\n if (--level < 0) {\n return fail('missing opening `{`', chunkerCurrentIndex);\n }\n if (!level && !parenLevel) { emitChunk(); }\n continue;\n case 92: // \\\n if (chunkerCurrentIndex < len - 1) { chunkerCurrentIndex++; continue; }\n return fail('unescaped `\\\\`', chunkerCurrentIndex);\n case 34:\n case 39:\n case 96: // \", ' and `\n matched = 0;\n currentChunkStartIndex = chunkerCurrentIndex;\n for (chunkerCurrentIndex = chunkerCurrentIndex + 1; chunkerCurrentIndex < len; chunkerCurrentIndex++) {\n cc2 = input.charCodeAt(chunkerCurrentIndex);\n if (cc2 > 96) { continue; }\n if (cc2 == cc) { matched = 1; break; }\n if (cc2 == 92) { // \\\n if (chunkerCurrentIndex == len - 1) {\n return fail('unescaped `\\\\`', chunkerCurrentIndex);\n }\n chunkerCurrentIndex++;\n }\n }\n if (matched) { continue; }\n return fail(`unmatched \\`${String.fromCharCode(cc)}\\``, currentChunkStartIndex);\n case 47: // /, check for comment\n if (parenLevel || (chunkerCurrentIndex == len - 1)) { continue; }\n cc2 = input.charCodeAt(chunkerCurrentIndex + 1);\n if (cc2 == 47) {\n // //, find lnfeed\n for (chunkerCurrentIndex = chunkerCurrentIndex + 2; chunkerCurrentIndex < len; chunkerCurrentIndex++) {\n cc2 = input.charCodeAt(chunkerCurrentIndex);\n if ((cc2 <= 13) && ((cc2 == 10) || (cc2 == 13))) { break; }\n }\n } else if (cc2 == 42) {\n // /*, find */\n lastMultiComment = currentChunkStartIndex = chunkerCurrentIndex;\n for (chunkerCurrentIndex = chunkerCurrentIndex + 2; chunkerCurrentIndex < len - 1; chunkerCurrentIndex++) {\n cc2 = input.charCodeAt(chunkerCurrentIndex);\n if (cc2 == 125) { lastMultiCommentEndBrace = chunkerCurrentIndex; }\n if (cc2 != 42) { continue; }\n if (input.charCodeAt(chunkerCurrentIndex + 1) == 47) { break; }\n }\n if (chunkerCurrentIndex == len - 1) {\n return fail('missing closing `*/`', currentChunkStartIndex);\n }\n chunkerCurrentIndex++;\n }\n continue;\n case 42: // *, check for unmatched */\n if ((chunkerCurrentIndex < len - 1) && (input.charCodeAt(chunkerCurrentIndex + 1) == 47)) {\n return fail('unmatched `/*`', chunkerCurrentIndex);\n }\n continue;\n }\n }\n\n if (level !== 0) {\n if ((lastMultiComment > lastOpening) && (lastMultiCommentEndBrace > lastMultiComment)) {\n return fail('missing closing `}` or `*/`', lastOpening);\n } else {\n return fail('missing closing `}`', lastOpening);\n }\n } else if (parenLevel !== 0) {\n return fail('missing closing `)`', lastOpeningParen);\n }\n\n emitChunk(true);\n return chunks;\n}\n","function makeRegistry( base ) {\n return {\n _data: {},\n add: function(name, func) {\n // precautionary case conversion, as later querying of\n // the registry by function-caller uses lower case as well.\n name = name.toLowerCase();\n\n // eslint-disable-next-line no-prototype-builtins\n if (this._data.hasOwnProperty(name)) {\n // TODO warn\n }\n this._data[name] = func;\n },\n addMultiple: function(functions) {\n Object.keys(functions).forEach(\n name => {\n this.add(name, functions[name]);\n });\n },\n get: function(name) {\n return this._data[name] || ( base && base.get( name ));\n },\n getLocalFunctions: function() {\n return this._data;\n },\n inherit: function() {\n return makeRegistry( this );\n },\n create: function(base) {\n return makeRegistry(base);\n }\n };\n}\n\nexport default makeRegistry( null );","export const MediaSyntaxOptions = {\n queryInParens: true\n};\n\nexport const ContainerSyntaxOptions = {\n queryInParens: true\n};\n","import Node from './node';\n\nconst Anonymous = function(value, index, currentFileInfo, mapLines, rulesetLike, visibilityInfo) {\n this.value = value;\n this._index = index;\n this._fileInfo = currentFileInfo;\n this.mapLines = mapLines;\n this.rulesetLike = (typeof rulesetLike === 'undefined') ? false : rulesetLike;\n this.allowRoot = true;\n this.copyVisibilityInfo(visibilityInfo);\n}\n\nAnonymous.prototype = Object.assign(new Node(), {\n type: 'Anonymous',\n eval() {\n return new Anonymous(this.value, this._index, this._fileInfo, this.mapLines, this.rulesetLike, this.visibilityInfo());\n },\n compare(other) {\n return other.toCSS && this.toCSS() === other.toCSS() ? 0 : undefined;\n },\n isRulesetLike() {\n return this.rulesetLike;\n },\n genCSS(context, output) {\n this.nodeVisible = Boolean(this.value);\n if (this.nodeVisible) {\n output.add(this.value, this._fileInfo, this._index, this.mapLines);\n }\n }\n})\n\nexport default Anonymous;\n","import LessError from '../less-error';\nimport tree from '../tree';\nimport visitors from '../visitors';\nimport getParserInput from './parser-input';\nimport * as utils from '../utils';\nimport functionRegistry from '../functions/function-registry';\nimport { ContainerSyntaxOptions, MediaSyntaxOptions } from '../tree/atrule-syntax';\nimport Selector from '../tree/selector';\nimport Anonymous from '../tree/anonymous';\n\n//\n// less.js - parser\n//\n// A relatively straight-forward predictive parser.\n// There is no tokenization/lexing stage, the input is parsed\n// in one sweep.\n//\n// To make the parser fast enough to run in the browser, several\n// optimization had to be made:\n//\n// - Matching and slicing on a huge input is often cause of slowdowns.\n// The solution is to chunkify the input into smaller strings.\n// The chunks are stored in the `chunks` var,\n// `j` holds the current chunk index, and `currentPos` holds\n// the index of the current chunk in relation to `input`.\n// This gives us an almost 4x speed-up.\n//\n// - In many cases, we don't need to match individual tokens;\n// for example, if a value doesn't hold any variables, operations\n// or dynamic references, the parser can effectively 'skip' it,\n// treating it as a literal.\n// An example would be '1px solid #000' - which evaluates to itself,\n// we don't need to know what the individual components are.\n// The drawback, of course is that you don't get the benefits of\n// syntax-checking on the CSS. This gives us a 50% speed-up in the parser,\n// and a smaller speed-up in the code-gen.\n//\n//\n// Token matching is done with the `$` function, which either takes\n// a terminal string or regexp, or a non-terminal function to call.\n// It also takes care of moving all the indices forwards.\n//\n\nconst Parser = function Parser(context, imports, fileInfo, currentIndex) {\n currentIndex = currentIndex || 0;\n let parsers;\n const parserInput = getParserInput();\n\n function error(msg, type) {\n throw new LessError(\n {\n index: parserInput.i,\n filename: fileInfo.filename,\n type: type || 'Syntax',\n message: msg\n },\n imports\n );\n }\n\n function expect(arg, msg) {\n // some older browsers return typeof 'function' for RegExp\n const result = (arg instanceof Function) ? arg.call(parsers) : parserInput.$re(arg);\n if (result) {\n return result;\n }\n\n error(msg || (typeof arg === 'string'\n ? `expected '${arg}' got '${parserInput.currentChar()}'`\n : 'unexpected token'));\n }\n\n // Specialization of expect()\n function expectChar(arg, msg) {\n if (parserInput.$char(arg)) {\n return arg;\n }\n error(msg || `expected '${arg}' got '${parserInput.currentChar()}'`);\n }\n\n function getDebugInfo(index) {\n const filename = fileInfo.filename;\n\n return {\n lineNumber: utils.getLocation(index, parserInput.getInput()).line + 1,\n fileName: filename\n };\n }\n\n /**\n * Used after initial parsing to create nodes on the fly\n *\n * @param {String} str - string to parse\n * @param {Array} parseList - array of parsers to run input through e.g. [\"value\", \"important\"]\n * @param {Number} currentIndex - start number to begin indexing\n * @param {Object} fileInfo - fileInfo to attach to created nodes\n */\n function parseNode(str, parseList, callback) {\n let result;\n const returnNodes = [];\n const parser = parserInput;\n\n try {\n parser.start(str, false, function fail(msg, index) {\n callback({\n message: msg,\n index: index + currentIndex\n });\n });\n for (let x = 0, p; (p = parseList[x]); x++) {\n result = parsers[p]();\n returnNodes.push(result || null);\n }\n\n const endInfo = parser.end();\n if (endInfo.isFinished) {\n callback(null, returnNodes);\n }\n else {\n callback(true, null);\n }\n } catch (e) {\n throw new LessError({\n index: e.index + currentIndex,\n message: e.message\n }, imports, fileInfo.filename);\n }\n }\n\n //\n // The Parser\n //\n return {\n parserInput,\n imports,\n fileInfo,\n parseNode,\n //\n // Parse an input string into an abstract syntax tree,\n // @param str A string containing 'less' markup\n // @param callback call `callback` when done.\n // @param [additionalData] An optional map which can contains vars - a map (key, value) of variables to apply\n //\n parse: function (str, callback, additionalData) {\n let root;\n let err = null;\n let globalVars;\n let modifyVars;\n let ignored;\n let preText = '';\n\n // Optionally disable @plugin parsing\n if (additionalData && additionalData.disablePluginRule) {\n parsers.plugin = function() {\n var dir = parserInput.$re(/^@plugin?\\s+/);\n if (dir) {\n error('@plugin statements are not allowed when disablePluginRule is set to true');\n }\n }\n }\n\n globalVars = (additionalData && additionalData.globalVars) ? `${Parser.serializeVars(additionalData.globalVars)}\\n` : '';\n modifyVars = (additionalData && additionalData.modifyVars) ? `\\n${Parser.serializeVars(additionalData.modifyVars)}` : '';\n\n if (context.pluginManager) {\n const preProcessors = context.pluginManager.getPreProcessors();\n for (let i = 0; i < preProcessors.length; i++) {\n str = preProcessors[i].process(str, { context, imports, fileInfo });\n }\n }\n\n if (globalVars || (additionalData && additionalData.banner)) {\n preText = ((additionalData && additionalData.banner) ? additionalData.banner : '') + globalVars;\n ignored = imports.contentsIgnoredChars;\n ignored[fileInfo.filename] = ignored[fileInfo.filename] || 0;\n ignored[fileInfo.filename] += preText.length;\n }\n\n str = str.replace(/\\r\\n?/g, '\\n');\n // Remove potential UTF Byte Order Mark\n str = preText + str.replace(/^\\uFEFF/, '') + modifyVars;\n imports.contents[fileInfo.filename] = str;\n\n // Start with the primary rule.\n // The whole syntax tree is held under a Ruleset node,\n // with the `root` property set to true, so no `{}` are\n // output. The callback is called when the input is parsed.\n try {\n parserInput.start(str, context.chunkInput, function fail(msg, index) {\n throw new LessError({\n index,\n type: 'Parse',\n message: msg,\n filename: fileInfo.filename\n }, imports);\n });\n\n tree.Node.prototype.parse = this;\n root = new tree.Ruleset(null, this.parsers.primary());\n tree.Node.prototype.rootNode = root;\n root.root = true;\n root.firstRoot = true;\n root.functionRegistry = functionRegistry.inherit();\n\n } catch (e) {\n return callback(new LessError(e, imports, fileInfo.filename));\n }\n\n // If `i` is smaller than the `input.length - 1`,\n // it means the parser wasn't able to parse the whole\n // string, so we've got a parsing error.\n //\n // We try to extract a \\n delimited string,\n // showing the line where the parse error occurred.\n // We split it up into two parts (the part which parsed,\n // and the part which didn't), so we can color them differently.\n const endInfo = parserInput.end();\n if (!endInfo.isFinished) {\n\n let message = endInfo.furthestPossibleErrorMessage;\n\n if (!message) {\n message = 'Unrecognised input';\n if (endInfo.furthestChar === '}') {\n message += '. Possibly missing opening \\'{\\'';\n } else if (endInfo.furthestChar === ')') {\n message += '. Possibly missing opening \\'(\\'';\n } else if (endInfo.furthestReachedEnd) {\n message += '. Possibly missing something';\n }\n }\n\n err = new LessError({\n type: 'Parse',\n message,\n index: endInfo.furthest,\n filename: fileInfo.filename\n }, imports);\n }\n\n const finish = e => {\n e = err || e || imports.error;\n\n if (e) {\n if (!(e instanceof LessError)) {\n e = new LessError(e, imports, fileInfo.filename);\n }\n\n return callback(e);\n }\n else {\n return callback(null, root);\n }\n };\n\n if (context.processImports !== false) {\n new visitors.ImportVisitor(imports, finish)\n .run(root);\n } else {\n return finish();\n }\n },\n\n //\n // Here in, the parsing rules/functions\n //\n // The basic structure of the syntax tree generated is as follows:\n //\n // Ruleset -> Declaration -> Value -> Expression -> Entity\n //\n // Here's some Less code:\n //\n // .class {\n // color: #fff;\n // border: 1px solid #000;\n // width: @w + 4px;\n // > .child {...}\n // }\n //\n // And here's what the parse tree might look like:\n //\n // Ruleset (Selector '.class', [\n // Declaration (\"color\", Value ([Expression [Color #fff]]))\n // Declaration (\"border\", Value ([Expression [Dimension 1px][Keyword \"solid\"][Color #000]]))\n // Declaration (\"width\", Value ([Expression [Operation \" + \" [Variable \"@w\"][Dimension 4px]]]))\n // Ruleset (Selector [Element '>', '.child'], [...])\n // ])\n //\n // In general, most rules will try to parse a token with the `$re()` function, and if the return\n // value is truly, will return a new node, of the relevant type. Sometimes, we need to check\n // first, before parsing, that's when we use `peek()`.\n //\n parsers: parsers = {\n //\n // The `primary` rule is the *entry* and *exit* point of the parser.\n // The rules here can appear at any level of the parse tree.\n //\n // The recursive nature of the grammar is an interplay between the `block`\n // rule, which represents `{ ... }`, the `ruleset` rule, and this `primary` rule,\n // as represented by this simplified grammar:\n //\n // primary → (ruleset | declaration)+\n // ruleset → selector+ block\n // block → '{' primary '}'\n //\n // Only at one point is the primary rule not called from the\n // block rule: at the root level.\n //\n primary: function () {\n const mixin = this.mixin;\n let root = [];\n let node;\n\n while (true) {\n while (true) {\n node = this.comment();\n if (!node) { break; }\n root.push(node);\n }\n // always process comments before deciding if finished\n if (parserInput.finished) {\n break;\n }\n if (parserInput.peek('}')) {\n break;\n }\n\n node = this.extendRule();\n if (node) {\n root = root.concat(node);\n continue;\n }\n\n node = mixin.definition() || this.declaration() || mixin.call(false, false) ||\n this.ruleset() || this.variableCall() || this.entities.call() || this.atrule();\n if (node) {\n root.push(node);\n } else {\n let foundSemiColon = false;\n while (parserInput.$char(';')) {\n foundSemiColon = true;\n }\n if (!foundSemiColon) {\n break;\n }\n }\n }\n\n return root;\n },\n\n // comments are collected by the main parsing mechanism and then assigned to nodes\n // where the current structure allows it\n comment: function () {\n if (parserInput.commentStore.length) {\n const comment = parserInput.commentStore.shift();\n return new(tree.Comment)(comment.text, comment.isLineComment, comment.index + currentIndex, fileInfo);\n }\n },\n\n //\n // Entities are tokens which can be found inside an Expression\n //\n entities: {\n mixinLookup: function() {\n return parsers.mixin.call(true, true);\n },\n //\n // A string, which supports escaping \" and '\n //\n // \"milky way\" 'he\\'s the one!'\n //\n quoted: function (forceEscaped) {\n let str;\n const index = parserInput.i;\n let isEscaped = false;\n\n parserInput.save();\n if (parserInput.$char('~')) {\n isEscaped = true;\n } else if (forceEscaped) {\n parserInput.restore();\n return;\n }\n\n str = parserInput.$quoted();\n if (!str) {\n parserInput.restore();\n return;\n }\n parserInput.forget();\n\n return new(tree.Quoted)(str.charAt(0), str.substr(1, str.length - 2), isEscaped, index + currentIndex, fileInfo);\n },\n\n //\n // A catch-all word, such as:\n //\n // black border-collapse\n //\n keyword: function () {\n const k = parserInput.$char('%') || parserInput.$re(/^\\[?(?:[\\w-]|\\\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+\\]?/);\n if (k) {\n return tree.Color.fromKeyword(k) || new(tree.Keyword)(k);\n }\n },\n\n //\n // A function call\n //\n // rgb(255, 0, 255)\n //\n // The arguments are parsed with the `entities.arguments` parser.\n //\n call: function () {\n let name;\n let args;\n let func;\n const index = parserInput.i;\n\n // http://jsperf.com/case-insensitive-regex-vs-strtolower-then-regex/18\n if (parserInput.peek(/^url\\(/i)) {\n return;\n }\n\n parserInput.save();\n\n name = parserInput.$re(/^([\\w-]+|%|~|progid:[\\w.]+)\\(/);\n if (!name) {\n parserInput.forget();\n return;\n }\n\n name = name[1];\n func = this.customFuncCall(name);\n if (func) {\n args = func.parse();\n if (args && func.stop) {\n parserInput.forget();\n return args;\n }\n }\n\n args = this.arguments(args);\n\n if (!parserInput.$char(')')) {\n parserInput.restore('Could not parse call arguments or missing \\')\\'');\n return;\n }\n\n parserInput.forget();\n\n return new(tree.Call)(name, args, index + currentIndex, fileInfo);\n },\n\n declarationCall: function () {\n let validCall;\n let args;\n const index = parserInput.i;\n\n parserInput.save();\n\n validCall = parserInput.$re(/^[\\w]+\\(/);\n if (!validCall) {\n parserInput.forget();\n return;\n }\n\n validCall = validCall.substring(0, validCall.length - 1);\n\n let rule = this.ruleProperty();\n let value;\n \n if (rule) {\n value = this.value();\n }\n \n if (rule && value) {\n args = [new (tree.Declaration)(rule, value, null, null, parserInput.i + currentIndex, fileInfo, true)];\n }\n\n if (!parserInput.$char(')')) {\n parserInput.restore('Could not parse call arguments or missing \\')\\'');\n return;\n }\n\n parserInput.forget();\n\n return new(tree.Call)(validCall, args, index + currentIndex, fileInfo);\n },\n\n //\n // Parsing rules for functions with non-standard args, e.g.:\n //\n // boolean(not(2 > 1))\n //\n // This is a quick prototype, to be modified/improved when\n // more custom-parsed funcs come (e.g. `selector(...)`)\n //\n\n customFuncCall: function (name) {\n /* Ideally the table is to be moved out of here for faster perf.,\n but it's quite tricky since it relies on all these `parsers`\n and `expect` available only here */\n return {\n alpha: f(parsers.ieAlpha, true),\n boolean: f(condition),\n 'if': f(condition)\n }[name.toLowerCase()];\n\n function f(parse, stop) {\n return {\n parse, // parsing function\n stop // when true - stop after parse() and return its result,\n // otherwise continue for plain args\n };\n }\n\n function condition() {\n return [expect(parsers.condition, 'expected condition')];\n }\n },\n\n arguments: function (prevArgs) {\n let argsComma = prevArgs || [];\n const argsSemiColon = [];\n let isSemiColonSeparated;\n let value;\n\n parserInput.save();\n\n while (true) {\n if (prevArgs) {\n prevArgs = false;\n } else {\n value = parsers.detachedRuleset() || this.assignment() || parsers.expression();\n if (!value) {\n break;\n }\n\n if (value.value && value.value.length == 1) {\n value = value.value[0];\n }\n\n argsComma.push(value);\n }\n\n if (parserInput.$char(',')) {\n continue;\n }\n\n if (parserInput.$char(';') || isSemiColonSeparated) {\n isSemiColonSeparated = true;\n value = (argsComma.length < 1) ? argsComma[0]\n : new tree.Value(argsComma);\n argsSemiColon.push(value);\n argsComma = [];\n }\n }\n\n parserInput.forget();\n return isSemiColonSeparated ? argsSemiColon : argsComma;\n },\n literal: function () {\n return this.dimension() ||\n this.color() ||\n this.quoted() ||\n this.unicodeDescriptor();\n },\n\n // Assignments are argument entities for calls.\n // They are present in ie filter properties as shown below.\n //\n // filter: progid:DXImageTransform.Microsoft.Alpha( *opacity=50* )\n //\n\n assignment: function () {\n let key;\n let value;\n parserInput.save();\n key = parserInput.$re(/^\\w+(?=\\s?=)/i);\n if (!key) {\n parserInput.restore();\n return;\n }\n if (!parserInput.$char('=')) {\n parserInput.restore();\n return;\n }\n value = parsers.entity();\n if (value) {\n parserInput.forget();\n return new(tree.Assignment)(key, value);\n } else {\n parserInput.restore();\n }\n },\n\n //\n // Parse url() tokens\n //\n // We use a specific rule for urls, because they don't really behave like\n // standard function calls. The difference is that the argument doesn't have\n // to be enclosed within a string, so it can't be parsed as an Expression.\n //\n url: function () {\n let value;\n const index = parserInput.i;\n\n parserInput.autoCommentAbsorb = false;\n\n if (!parserInput.$str('url(')) {\n parserInput.autoCommentAbsorb = true;\n return;\n }\n\n value = this.quoted() || this.variable() || this.property() ||\n parserInput.$re(/^(?:(?:\\\\[()'\"])|[^()'\"])+/) || '';\n\n parserInput.autoCommentAbsorb = true;\n\n expectChar(')');\n\n return new(tree.URL)((value.value !== undefined ||\n value instanceof tree.Variable ||\n value instanceof tree.Property) ?\n value : new(tree.Anonymous)(value, index), index + currentIndex, fileInfo);\n },\n\n //\n // A Variable entity, such as `@fink`, in\n //\n // width: @fink + 2px\n //\n // We use a different parser for variable definitions,\n // see `parsers.variable`.\n //\n variable: function () {\n let ch;\n let name;\n const index = parserInput.i;\n\n parserInput.save();\n if (parserInput.currentChar() === '@' && (name = parserInput.$re(/^@@?[\\w-]+/))) {\n ch = parserInput.currentChar();\n if (ch === '(' || ch === '[' && !parserInput.prevChar().match(/^\\s/)) {\n // this may be a VariableCall lookup\n const result = parsers.variableCall(name);\n if (result) {\n parserInput.forget();\n return result;\n }\n }\n parserInput.forget();\n return new(tree.Variable)(name, index + currentIndex, fileInfo);\n }\n parserInput.restore();\n },\n\n // A variable entity using the protective {} e.g. @{var}\n variableCurly: function () {\n let curly;\n const index = parserInput.i;\n\n if (parserInput.currentChar() === '@' && (curly = parserInput.$re(/^@\\{([\\w-]+)\\}/))) {\n return new(tree.Variable)(`@${curly[1]}`, index + currentIndex, fileInfo);\n }\n },\n //\n // A Property accessor, such as `$color`, in\n //\n // background-color: $color\n //\n property: function () {\n let name;\n const index = parserInput.i;\n\n if (parserInput.currentChar() === '$' && (name = parserInput.$re(/^\\$[\\w-]+/))) {\n return new(tree.Property)(name, index + currentIndex, fileInfo);\n }\n },\n\n // A property entity useing the protective {} e.g. ${prop}\n propertyCurly: function () {\n let curly;\n const index = parserInput.i;\n\n if (parserInput.currentChar() === '$' && (curly = parserInput.$re(/^\\$\\{([\\w-]+)\\}/))) {\n return new(tree.Property)(`$${curly[1]}`, index + currentIndex, fileInfo);\n }\n },\n //\n // A Hexadecimal color\n //\n // #4F3C2F\n //\n // `rgb` and `hsl` colors are parsed through the `entities.call` parser.\n //\n color: function () {\n let rgb;\n parserInput.save();\n\n if (parserInput.currentChar() === '#' && (rgb = parserInput.$re(/^#([A-Fa-f0-9]{8}|[A-Fa-f0-9]{6}|[A-Fa-f0-9]{3,4})([\\w.#[])?/))) {\n if (!rgb[2]) {\n parserInput.forget();\n return new(tree.Color)(rgb[1], undefined, rgb[0]);\n }\n }\n parserInput.restore();\n },\n\n colorKeyword: function () {\n parserInput.save();\n const autoCommentAbsorb = parserInput.autoCommentAbsorb;\n parserInput.autoCommentAbsorb = false;\n const k = parserInput.$re(/^[_A-Za-z-][_A-Za-z0-9-]+/);\n parserInput.autoCommentAbsorb = autoCommentAbsorb;\n if (!k) {\n parserInput.forget();\n return;\n }\n parserInput.restore();\n const color = tree.Color.fromKeyword(k);\n if (color) {\n parserInput.$str(k);\n return color;\n }\n },\n\n //\n // A Dimension, that is, a number and a unit\n //\n // 0.5em 95%\n //\n dimension: function () {\n if (parserInput.peekNotNumeric()) {\n return;\n }\n\n const value = parserInput.$re(/^([+-]?\\d*\\.?\\d+)(%|[a-z_]+)?/i);\n if (value) {\n return new(tree.Dimension)(value[1], value[2]);\n }\n },\n\n //\n // A unicode descriptor, as is used in unicode-range\n //\n // U+0?? or U+00A1-00A9\n //\n unicodeDescriptor: function () {\n let ud;\n\n ud = parserInput.$re(/^U\\+[0-9a-fA-F?]+(-[0-9a-fA-F?]+)?/);\n if (ud) {\n return new(tree.UnicodeDescriptor)(ud[0]);\n }\n },\n\n //\n // JavaScript code to be evaluated\n //\n // `window.location.href`\n //\n javascript: function () {\n let js;\n const index = parserInput.i;\n\n parserInput.save();\n\n const escape = parserInput.$char('~');\n const jsQuote = parserInput.$char('`');\n\n if (!jsQuote) {\n parserInput.restore();\n return;\n }\n\n js = parserInput.$re(/^[^`]*`/);\n if (js) {\n parserInput.forget();\n return new(tree.JavaScript)(js.substr(0, js.length - 1), Boolean(escape), index + currentIndex, fileInfo);\n }\n parserInput.restore('invalid javascript definition');\n }\n },\n\n //\n // The variable part of a variable definition. Used in the `rule` parser\n //\n // @fink:\n //\n variable: function () {\n let name;\n\n if (parserInput.currentChar() === '@' && (name = parserInput.$re(/^(@[\\w-]+)\\s*:/))) { return name[1]; }\n },\n\n //\n // Call a variable value to retrieve a detached ruleset\n // or a value from a detached ruleset's rules.\n //\n // @fink();\n // @fink;\n // color: @fink[@color];\n //\n variableCall: function (parsedName) {\n let lookups;\n const i = parserInput.i;\n const inValue = !!parsedName;\n let name = parsedName;\n\n parserInput.save();\n\n if (name || (parserInput.currentChar() === '@'\n && (name = parserInput.$re(/^(@[\\w-]+)(\\(\\s*\\))?/)))) {\n\n lookups = this.mixin.ruleLookups();\n\n if (!lookups && ((inValue && parserInput.$str('()') !== '()') || (name[2] !== '()'))) {\n parserInput.restore('Missing \\'[...]\\' lookup in variable call');\n return;\n }\n\n if (!inValue) {\n name = name[1];\n }\n\n const call = new tree.VariableCall(name, i, fileInfo);\n if (!inValue && parsers.end()) {\n parserInput.forget();\n return call;\n }\n else {\n parserInput.forget();\n return new tree.NamespaceValue(call, lookups, i, fileInfo);\n }\n }\n\n parserInput.restore();\n },\n\n //\n // extend syntax - used to extend selectors\n //\n extend: function(isRule) {\n let elements;\n let e;\n const index = parserInput.i;\n let option;\n let extendList;\n let extend;\n\n if (!parserInput.$str(isRule ? '&:extend(' : ':extend(')) {\n return;\n }\n\n do {\n option = null;\n elements = null;\n while (!(option = parserInput.$re(/^(all)(?=\\s*(\\)|,))/))) {\n e = this.element();\n if (!e) {\n break;\n }\n if (elements) {\n elements.push(e);\n } else {\n elements = [ e ];\n }\n }\n\n option = option && option[1];\n if (!elements) {\n error('Missing target selector for :extend().');\n }\n extend = new(tree.Extend)(new(tree.Selector)(elements), option, index + currentIndex, fileInfo);\n if (extendList) {\n extendList.push(extend);\n } else {\n extendList = [ extend ];\n }\n } while (parserInput.$char(','));\n\n expect(/^\\)/);\n\n if (isRule) {\n expect(/^;/);\n }\n\n return extendList;\n },\n\n //\n // extendRule - used in a rule to extend all the parent selectors\n //\n extendRule: function() {\n return this.extend(true);\n },\n\n //\n // Mixins\n //\n mixin: {\n //\n // A Mixin call, with an optional argument list\n //\n // #mixins > .square(#fff);\n // #mixins.square(#fff);\n // .rounded(4px, black);\n // .button;\n //\n // We can lookup / return a value using the lookup syntax:\n //\n // color: #mixin.square(#fff)[@color];\n //\n // The `while` loop is there because mixins can be\n // namespaced, but we only support the child and descendant\n // selector for now.\n //\n call: function (inValue, getLookup) {\n const s = parserInput.currentChar();\n let important = false;\n let lookups;\n const index = parserInput.i;\n let elements;\n let args;\n let hasParens;\n\n if (s !== '.' && s !== '#') { return; }\n\n parserInput.save(); // stop us absorbing part of an invalid selector\n\n elements = this.elements();\n\n if (elements) {\n if (parserInput.$char('(')) {\n args = this.args(true).args;\n expectChar(')');\n hasParens = true;\n }\n\n if (getLookup !== false) {\n lookups = this.ruleLookups();\n }\n if (getLookup === true && !lookups) {\n parserInput.restore();\n return;\n }\n\n if (inValue && !lookups && !hasParens) {\n // This isn't a valid in-value mixin call\n parserInput.restore();\n return;\n }\n\n if (!inValue && parsers.important()) {\n important = true;\n }\n\n if (inValue || parsers.end()) {\n parserInput.forget();\n const mixin = new(tree.mixin.Call)(elements, args, index + currentIndex, fileInfo, !lookups && important);\n if (lookups) {\n return new tree.NamespaceValue(mixin, lookups);\n }\n else {\n return mixin;\n }\n }\n }\n\n parserInput.restore();\n },\n /**\n * Matching elements for mixins\n * (Start with . or # and can have > )\n */\n elements: function() {\n let elements;\n let e;\n let c;\n let elem;\n let elemIndex;\n const re = /^[#.](?:[\\w-]|\\\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+/;\n while (true) {\n elemIndex = parserInput.i;\n e = parserInput.$re(re);\n\n if (!e) {\n break;\n }\n elem = new(tree.Element)(c, e, false, elemIndex + currentIndex, fileInfo);\n if (elements) {\n elements.push(elem);\n } else {\n elements = [ elem ];\n }\n c = parserInput.$char('>');\n }\n return elements;\n },\n args: function (isCall) {\n const entities = parsers.entities;\n const returner = { args:null, variadic: false };\n let expressions = [];\n const argsSemiColon = [];\n const argsComma = [];\n let isSemiColonSeparated;\n let expressionContainsNamed;\n let name;\n let nameLoop;\n let value;\n let arg;\n let expand;\n let hasSep = true;\n\n parserInput.save();\n\n while (true) {\n if (isCall) {\n arg = parsers.detachedRuleset() || parsers.expression();\n } else {\n parserInput.commentStore.length = 0;\n if (parserInput.$str('...')) {\n returner.variadic = true;\n if (parserInput.$char(';') && !isSemiColonSeparated) {\n isSemiColonSeparated = true;\n }\n (isSemiColonSeparated ? argsSemiColon : argsComma)\n .push({ variadic: true });\n break;\n }\n arg = entities.variable() || entities.property() || entities.literal() || entities.keyword() || this.call(true);\n }\n\n if (!arg || !hasSep) {\n break;\n }\n\n nameLoop = null;\n if (arg.throwAwayComments) {\n arg.throwAwayComments();\n }\n value = arg;\n let val = null;\n\n if (isCall) {\n // Variable\n if (arg.value && arg.value.length == 1) {\n val = arg.value[0];\n }\n } else {\n val = arg;\n }\n\n if (val && (val instanceof tree.Variable || val instanceof tree.Property)) {\n if (parserInput.$char(':')) {\n if (expressions.length > 0) {\n if (isSemiColonSeparated) {\n error('Cannot mix ; and , as delimiter types');\n }\n expressionContainsNamed = true;\n }\n\n value = parsers.detachedRuleset() || parsers.expression();\n\n if (!value) {\n if (isCall) {\n error('could not understand value for named argument');\n } else {\n parserInput.restore();\n returner.args = [];\n return returner;\n }\n }\n nameLoop = (name = val.name);\n } else if (parserInput.$str('...')) {\n if (!isCall) {\n returner.variadic = true;\n if (parserInput.$char(';') && !isSemiColonSeparated) {\n isSemiColonSeparated = true;\n }\n (isSemiColonSeparated ? argsSemiColon : argsComma)\n .push({ name: arg.name, variadic: true });\n break;\n } else {\n expand = true;\n }\n } else if (!isCall) {\n name = nameLoop = val.name;\n value = null;\n }\n }\n\n if (value) {\n expressions.push(value);\n }\n\n argsComma.push({ name:nameLoop, value, expand });\n\n if (parserInput.$char(',')) {\n hasSep = true;\n continue;\n }\n hasSep = parserInput.$char(';') === ';';\n\n if (hasSep || isSemiColonSeparated) {\n\n if (expressionContainsNamed) {\n error('Cannot mix ; and , as delimiter types');\n }\n\n isSemiColonSeparated = true;\n\n if (expressions.length > 1) {\n value = new(tree.Value)(expressions);\n }\n argsSemiColon.push({ name, value, expand });\n\n name = null;\n expressions = [];\n expressionContainsNamed = false;\n }\n }\n\n parserInput.forget();\n returner.args = isSemiColonSeparated ? argsSemiColon : argsComma;\n return returner;\n },\n //\n // A Mixin definition, with a list of parameters\n //\n // .rounded (@radius: 2px, @color) {\n // ...\n // }\n //\n // Until we have a finer grained state-machine, we have to\n // do a look-ahead, to make sure we don't have a mixin call.\n // See the `rule` function for more information.\n //\n // We start by matching `.rounded (`, and then proceed on to\n // the argument list, which has optional default values.\n // We store the parameters in `params`, with a `value` key,\n // if there is a value, such as in the case of `@radius`.\n //\n // Once we've got our params list, and a closing `)`, we parse\n // the `{...}` block.\n //\n definition: function () {\n let name;\n let params = [];\n let match;\n let ruleset;\n let cond;\n let variadic = false;\n if ((parserInput.currentChar() !== '.' && parserInput.currentChar() !== '#') ||\n parserInput.peek(/^[^{]*\\}/)) {\n return;\n }\n\n parserInput.save();\n\n match = parserInput.$re(/^([#.](?:[\\w-]|\\\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+)\\s*\\(/);\n if (match) {\n name = match[1];\n\n const argInfo = this.args(false);\n params = argInfo.args;\n variadic = argInfo.variadic;\n\n // .mixincall(\"@{a}\");\n // looks a bit like a mixin definition..\n // also\n // .mixincall(@a: {rule: set;});\n // so we have to be nice and restore\n if (!parserInput.$char(')')) {\n parserInput.restore('Missing closing \\')\\'');\n return;\n }\n\n parserInput.commentStore.length = 0;\n\n if (parserInput.$str('when')) { // Guard\n cond = expect(parsers.conditions, 'expected condition');\n }\n\n ruleset = parsers.block();\n\n if (ruleset) {\n parserInput.forget();\n return new(tree.mixin.Definition)(name, params, ruleset, cond, variadic);\n } else {\n parserInput.restore();\n }\n } else {\n parserInput.restore();\n }\n },\n\n ruleLookups: function() {\n let rule;\n const lookups = [];\n\n if (parserInput.currentChar() !== '[') {\n return;\n }\n\n while (true) {\n parserInput.save();\n rule = this.lookupValue();\n if (!rule && rule !== '') {\n parserInput.restore();\n break;\n }\n lookups.push(rule);\n parserInput.forget();\n }\n if (lookups.length > 0) {\n return lookups;\n }\n },\n\n lookupValue: function() {\n parserInput.save();\n\n if (!parserInput.$char('[')) {\n parserInput.restore();\n return;\n }\n\n const name = parserInput.$re(/^(?:[@$]{0,2})[_a-zA-Z0-9-]*/);\n\n if (!parserInput.$char(']')) {\n parserInput.restore();\n return;\n }\n\n if (name || name === '') {\n parserInput.forget();\n return name;\n }\n\n parserInput.restore();\n }\n },\n //\n // Entities are the smallest recognized token,\n // and can be found inside a rule's value.\n //\n entity: function () {\n const entities = this.entities;\n\n return this.comment() || entities.literal() || entities.variable() || entities.url() ||\n entities.property() || entities.call() || entities.keyword() || this.mixin.call(true) ||\n entities.javascript();\n },\n\n //\n // A Declaration terminator. Note that we use `peek()` to check for '}',\n // because the `block` rule will be expecting it, but we still need to make sure\n // it's there, if ';' was omitted.\n //\n end: function () {\n return parserInput.$char(';') || parserInput.peek('}');\n },\n\n //\n // IE's alpha function\n //\n // alpha(opacity=88)\n //\n ieAlpha: function () {\n let value;\n\n // http://jsperf.com/case-insensitive-regex-vs-strtolower-then-regex/18\n if (!parserInput.$re(/^opacity=/i)) { return; }\n value = parserInput.$re(/^\\d+/);\n if (!value) {\n value = expect(parsers.entities.variable, 'Could not parse alpha');\n value = `@{${value.name.slice(1)}}`;\n }\n expectChar(')');\n return new tree.Quoted('', `alpha(opacity=${value})`);\n },\n\n //\n // A Selector Element\n //\n // div\n // + h1\n // #socks\n // input[type=\"text\"]\n //\n // Elements are the building blocks for Selectors,\n // they are made out of a `Combinator` (see combinator rule),\n // and an element name, such as a tag a class, or `*`.\n //\n element: function () {\n let e;\n let c;\n let v;\n const index = parserInput.i;\n\n c = this.combinator();\n\n e = parserInput.$re(/^(?:\\d+\\.\\d+|\\d+)%/) ||\n // eslint-disable-next-line no-control-regex\n parserInput.$re(/^(?:[.#]?|:*)(?:[\\w-]|[^\\x00-\\x9f]|\\\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+/) ||\n parserInput.$char('*') || parserInput.$char('&') || this.attribute() ||\n parserInput.$re(/^\\([^&()@]+\\)/) || parserInput.$re(/^[.#:](?=@)/) ||\n this.entities.variableCurly();\n\n if (!e) {\n parserInput.save();\n if (parserInput.$char('(')) {\n if ((v = this.selector(false))) {\n let selectors = [];\n while (parserInput.$char(',')) {\n selectors.push(v);\n selectors.push(new Anonymous(','));\n v = this.selector(false);\n }\n selectors.push(v);\n \n if (parserInput.$char(')')) {\n if (selectors.length > 1) {\n e = new (tree.Paren)(new Selector(selectors));\n } else {\n e = new(tree.Paren)(v);\n }\n parserInput.forget();\n } else {\n parserInput.restore('Missing closing \\')\\'');\n }\n } else {\n parserInput.restore('Missing closing \\')\\'');\n }\n } else {\n parserInput.forget();\n }\n }\n\n if (e) { return new(tree.Element)(c, e, e instanceof tree.Variable, index + currentIndex, fileInfo); }\n },\n\n //\n // Combinators combine elements together, in a Selector.\n //\n // Because our parser isn't white-space sensitive, special care\n // has to be taken, when parsing the descendant combinator, ` `,\n // as it's an empty space. We have to check the previous character\n // in the input, to see if it's a ` ` character. More info on how\n // we deal with this in *combinator.js*.\n //\n combinator: function () {\n let c = parserInput.currentChar();\n\n if (c === '/') {\n parserInput.save();\n const slashedCombinator = parserInput.$re(/^\\/[a-z]+\\//i);\n if (slashedCombinator) {\n parserInput.forget();\n return new(tree.Combinator)(slashedCombinator);\n }\n parserInput.restore();\n }\n\n if (c === '>' || c === '+' || c === '~' || c === '|' || c === '^') {\n parserInput.i++;\n if (c === '^' && parserInput.currentChar() === '^') {\n c = '^^';\n parserInput.i++;\n }\n while (parserInput.isWhitespace()) { parserInput.i++; }\n return new(tree.Combinator)(c);\n } else if (parserInput.isWhitespace(-1)) {\n return new(tree.Combinator)(' ');\n } else {\n return new(tree.Combinator)(null);\n }\n },\n //\n // A CSS Selector\n // with less extensions e.g. the ability to extend and guard\n //\n // .class > div + h1\n // li a:hover\n //\n // Selectors are made out of one or more Elements, see above.\n //\n selector: function (isLess) {\n const index = parserInput.i;\n let elements;\n let extendList;\n let c;\n let e;\n let allExtends;\n let when;\n let condition;\n isLess = isLess !== false;\n while ((isLess && (extendList = this.extend())) || (isLess && (when = parserInput.$str('when'))) || (e = this.element())) {\n if (when) {\n condition = expect(this.conditions, 'expected condition');\n } else if (condition) {\n error('CSS guard can only be used at the end of selector');\n } else if (extendList) {\n if (allExtends) {\n allExtends = allExtends.concat(extendList);\n } else {\n allExtends = extendList;\n }\n } else {\n if (allExtends) { error('Extend can only be used at the end of selector'); }\n c = parserInput.currentChar();\n if (Array.isArray(e)){\n e.forEach(ele => elements.push(ele));\n } if (elements) {\n elements.push(e);\n } else {\n elements = [ e ];\n }\n e = null;\n }\n if (c === '{' || c === '}' || c === ';' || c === ',' || c === ')') {\n break;\n }\n }\n\n if (elements) { return new(tree.Selector)(elements, allExtends, condition, index + currentIndex, fileInfo); }\n if (allExtends) { error('Extend must be used to extend a selector, it cannot be used on its own'); }\n },\n selectors: function () {\n let s;\n let selectors;\n while (true) {\n s = this.selector();\n if (!s) {\n break;\n }\n if (selectors) {\n selectors.push(s);\n } else {\n selectors = [ s ];\n }\n parserInput.commentStore.length = 0;\n if (s.condition && selectors.length > 1) {\n error('Guards are only currently allowed on a single selector.');\n }\n if (!parserInput.$char(',')) { break; }\n if (s.condition) {\n error('Guards are only currently allowed on a single selector.');\n }\n parserInput.commentStore.length = 0;\n }\n return selectors;\n },\n attribute: function () {\n if (!parserInput.$char('[')) { return; }\n\n const entities = this.entities;\n let key;\n let val;\n let op;\n //\n // case-insensitive flag\n // e.g. [attr operator value i]\n //\n let cif;\n\n if (!(key = entities.variableCurly())) {\n key = expect(/^(?:[_A-Za-z0-9-*]*\\|)?(?:[_A-Za-z0-9-]|\\\\.)+/);\n }\n\n op = parserInput.$re(/^[|~*$^]?=/);\n if (op) {\n val = entities.quoted() || parserInput.$re(/^[0-9]+%/) || parserInput.$re(/^[\\w-]+/) || entities.variableCurly();\n if (val) {\n cif = parserInput.$re(/^[iIsS]/);\n }\n }\n\n expectChar(']');\n\n return new(tree.Attribute)(key, op, val, cif);\n },\n\n //\n // The `block` rule is used by `ruleset` and `mixin.definition`.\n // It's a wrapper around the `primary` rule, with added `{}`.\n //\n block: function () {\n let content;\n if (parserInput.$char('{') && (content = this.primary()) && parserInput.$char('}')) {\n return content;\n }\n },\n\n blockRuleset: function() {\n let block = this.block();\n\n if (block) {\n block = new tree.Ruleset(null, block);\n }\n return block;\n },\n\n detachedRuleset: function() {\n let argInfo;\n let params;\n let variadic;\n\n parserInput.save();\n if (parserInput.$re(/^[.#]\\(/)) {\n /**\n * DR args currently only implemented for each() function, and not\n * yet settable as `@dr: #(@arg) {}`\n * This should be done when DRs are merged with mixins.\n * See: https://github.com/less/less-meta/issues/16\n */\n argInfo = this.mixin.args(false);\n params = argInfo.args;\n variadic = argInfo.variadic;\n if (!parserInput.$char(')')) {\n parserInput.restore();\n return;\n }\n }\n const blockRuleset = this.blockRuleset();\n if (blockRuleset) {\n parserInput.forget();\n if (params) {\n return new tree.mixin.Definition(null, params, blockRuleset, null, variadic);\n }\n return new tree.DetachedRuleset(blockRuleset);\n }\n parserInput.restore();\n },\n\n //\n // div, .class, body > p {...}\n //\n ruleset: function () {\n let selectors;\n let rules;\n let debugInfo;\n\n parserInput.save();\n\n if (context.dumpLineNumbers) {\n debugInfo = getDebugInfo(parserInput.i);\n }\n\n selectors = this.selectors();\n\n if (selectors && (rules = this.block())) {\n parserInput.forget();\n const ruleset = new(tree.Ruleset)(selectors, rules, context.strictImports);\n if (context.dumpLineNumbers) {\n ruleset.debugInfo = debugInfo;\n }\n return ruleset;\n } else {\n parserInput.restore();\n }\n },\n declaration: function () {\n let name;\n let value;\n const index = parserInput.i;\n let hasDR;\n const c = parserInput.currentChar();\n let important;\n let merge;\n let isVariable;\n\n if (c === '.' || c === '#' || c === '&' || c === ':') { return; }\n\n parserInput.save();\n\n name = this.variable() || this.ruleProperty();\n if (name) {\n isVariable = typeof name === 'string';\n\n if (isVariable) {\n value = this.detachedRuleset();\n if (value) {\n hasDR = true;\n }\n }\n\n parserInput.commentStore.length = 0;\n if (!value) {\n // a name returned by this.ruleProperty() is always an array of the form:\n // [string-1, ..., string-n, \"\"] or [string-1, ..., string-n, \"+\"]\n // where each item is a tree.Keyword or tree.Variable\n merge = !isVariable && name.length > 1 && name.pop().value;\n\n // Custom property values get permissive parsing\n if (name[0].value && name[0].value.slice(0, 2) === '--') {\n if (parserInput.$char(';')) {\n value = new Anonymous('');\n } else {\n value = this.permissiveValue(/[;}]/);\n }\n }\n // Try to store values as anonymous\n // If we need the value later we'll re-parse it in ruleset.parseValue\n else {\n value = this.anonymousValue();\n }\n if (value) {\n parserInput.forget();\n // anonymous values absorb the end ';' which is required for them to work\n return new(tree.Declaration)(name, value, false, merge, index + currentIndex, fileInfo);\n }\n\n if (!value) {\n value = this.value();\n }\n\n if (value) {\n important = this.important();\n } else if (isVariable) {\n // As a last resort, try permissiveValue\n value = this.permissiveValue();\n }\n }\n\n if (value && (this.end() || hasDR)) {\n parserInput.forget();\n return new(tree.Declaration)(name, value, important, merge, index + currentIndex, fileInfo);\n }\n else {\n parserInput.restore();\n }\n } else {\n parserInput.restore();\n }\n },\n anonymousValue: function () {\n const index = parserInput.i;\n const match = parserInput.$re(/^([^.#@$+/'\"*`(;{}-]*);/);\n if (match) {\n return new(tree.Anonymous)(match[1], index + currentIndex);\n }\n },\n /**\n * Used for custom properties, at-rules, and variables (as fallback)\n * Parses almost anything inside of {} [] () \"\" blocks\n * until it reaches outer-most tokens.\n *\n * First, it will try to parse comments and entities to reach\n * the end. This is mostly like the Expression parser except no\n * math is allowed.\n */\n permissiveValue: function (untilTokens) {\n let i;\n let e;\n let done;\n let value;\n const tok = untilTokens || ';';\n const index = parserInput.i;\n const result = [];\n\n function testCurrentChar() {\n const char = parserInput.currentChar();\n if (typeof tok === 'string') {\n return char === tok;\n } else {\n return tok.test(char);\n }\n }\n if (testCurrentChar()) {\n return;\n }\n value = [];\n do {\n e = this.comment();\n if (e) {\n value.push(e);\n continue;\n }\n e = this.entity();\n if (e) {\n value.push(e);\n }\n if (parserInput.peek(',')) {\n value.push(new (tree.Anonymous)(',', parserInput.i));\n parserInput.$char(',');\n }\n } while (e);\n\n done = testCurrentChar();\n\n if (value.length > 0) {\n value = new(tree.Expression)(value);\n if (done) {\n return value;\n }\n else {\n result.push(value);\n }\n // Preserve space before $parseUntil as it will not\n if (parserInput.prevChar() === ' ') {\n result.push(new tree.Anonymous(' ', index));\n }\n }\n parserInput.save();\n\n value = parserInput.$parseUntil(tok);\n\n if (value) {\n if (typeof value === 'string') {\n error(`Expected '${value}'`, 'Parse');\n }\n if (value.length === 1 && value[0] === ' ') {\n parserInput.forget();\n return new tree.Anonymous('', index);\n }\n let item;\n for (i = 0; i < value.length; i++) {\n item = value[i];\n if (Array.isArray(item)) {\n // Treat actual quotes as normal quoted values\n result.push(new tree.Quoted(item[0], item[1], true, index, fileInfo));\n }\n else {\n if (i === value.length - 1) {\n item = item.trim();\n }\n // Treat like quoted values, but replace vars like unquoted expressions\n const quote = new tree.Quoted('\\'', item, true, index, fileInfo);\n if (!item.startsWith('@{')) {\n quote.variableRegex = /@([\\w-]+)/g;\n }\n quote.propRegex = /\\$([\\w-]+)/g;\n result.push(quote);\n }\n }\n parserInput.forget();\n return new tree.Expression(result, true);\n }\n parserInput.restore();\n },\n\n //\n // An @import atrule\n //\n // @import \"lib\";\n //\n // Depending on our environment, importing is done differently:\n // In the browser, it's an XHR request, in Node, it would be a\n // file-system operation. The function used for importing is\n // stored in `import`, which we pass to the Import constructor.\n //\n 'import': function () {\n let path;\n let features;\n const index = parserInput.i;\n\n const dir = parserInput.$re(/^@import\\s+/);\n\n if (dir) {\n const options = (dir ? this.importOptions() : null) || {};\n\n if ((path = this.entities.quoted() || this.entities.url())) {\n features = this.mediaFeatures({});\n\n if (!parserInput.$char(';')) {\n parserInput.i = index;\n error('missing semi-colon or unrecognised media features on import');\n }\n features = features && new(tree.Value)(features);\n return new(tree.Import)(path, features, options, index + currentIndex, fileInfo);\n }\n else {\n parserInput.i = index;\n error('malformed import statement');\n }\n }\n },\n\n importOptions: function() {\n let o;\n const options = {};\n let optionName;\n let value;\n\n // list of options, surrounded by parens\n if (!parserInput.$char('(')) { return null; }\n do {\n o = this.importOption();\n if (o) {\n optionName = o;\n value = true;\n switch (optionName) {\n case 'css':\n optionName = 'less';\n value = false;\n break;\n case 'once':\n optionName = 'multiple';\n value = false;\n break;\n }\n options[optionName] = value;\n if (!parserInput.$char(',')) { break; }\n }\n } while (o);\n expectChar(')');\n return options;\n },\n\n importOption: function() {\n const opt = parserInput.$re(/^(less|css|multiple|once|inline|reference|optional)/);\n if (opt) {\n return opt[1];\n }\n },\n\n mediaFeature: function (syntaxOptions) {\n const entities = this.entities;\n const nodes = [];\n let e;\n let p;\n let rangeP;\n parserInput.save();\n do {\n e = entities.declarationCall.bind(this)() || entities.keyword() || entities.variable() || entities.mixinLookup()\n if (e) {\n nodes.push(e);\n } else if (parserInput.$char('(')) {\n p = this.property();\n parserInput.save();\n if (!p && syntaxOptions.queryInParens && parserInput.$re(/^[0-9a-z-]*\\s*([<>]=|<=|>=|[<>]|=)/)) {\n parserInput.restore();\n p = this.condition();\n\n parserInput.save();\n rangeP = this.atomicCondition(null, p.rvalue);\n if (!rangeP) {\n parserInput.restore();\n }\n } else {\n parserInput.restore();\n e = this.value();\n }\n if (parserInput.$char(')')) {\n if (p && !e) {\n nodes.push(new (tree.Paren)(new (tree.QueryInParens)(p.op, p.lvalue, p.rvalue, rangeP ? rangeP.op : null, rangeP ? rangeP.rvalue : null, p._index)));\t\t\t\t \n e = p;\n } else if (p && e) {\n nodes.push(new (tree.Paren)(new (tree.Declaration)(p, e, null, null, parserInput.i + currentIndex, fileInfo, true)));\n } else if (e) {\n nodes.push(new(tree.Paren)(e));\n } else {\n error('badly formed media feature definition');\n }\n } else {\n error('Missing closing \\')\\'', 'Parse');\n }\n }\n } while (e);\n\n parserInput.forget();\n if (nodes.length > 0) {\n return new(tree.Expression)(nodes);\n }\n },\n\n mediaFeatures: function (syntaxOptions) {\n const entities = this.entities;\n const features = [];\n let e;\n do {\n e = this.mediaFeature(syntaxOptions);\n if (e) {\n features.push(e);\n if (!parserInput.$char(',')) { break; }\n } else {\n e = entities.variable() || entities.mixinLookup();\n if (e) {\n features.push(e);\n if (!parserInput.$char(',')) { break; }\n }\n }\n } while (e);\n\n return features.length > 0 ? features : null;\n },\n\n prepareAndGetNestableAtRule: function (treeType, index, debugInfo, syntaxOptions) {\n const features = this.mediaFeatures(syntaxOptions);\n\n const rules = this.block();\n\n if (!rules) {\n error('media definitions require block statements after any features');\n }\n\n parserInput.forget();\n\n const atRule = new (treeType)(rules, features, index + currentIndex, fileInfo);\n if (context.dumpLineNumbers) {\n atRule.debugInfo = debugInfo;\n }\n\n return atRule;\n },\n\n nestableAtRule: function () {\n let debugInfo;\n const index = parserInput.i;\n\n if (context.dumpLineNumbers) {\n debugInfo = getDebugInfo(index);\n }\n parserInput.save();\n\n if (parserInput.$peekChar('@')) {\n if (parserInput.$str('@media')) {\n return this.prepareAndGetNestableAtRule(tree.Media, index, debugInfo, MediaSyntaxOptions);\n }\n \n if (parserInput.$str('@container')) {\n return this.prepareAndGetNestableAtRule(tree.Container, index, debugInfo, ContainerSyntaxOptions);\n }\n }\n \n parserInput.restore();\n },\n\n //\n\n // A @plugin directive, used to import plugins dynamically.\n //\n // @plugin (args) \"lib\";\n //\n plugin: function () {\n let path;\n let args;\n let options;\n const index = parserInput.i;\n const dir = parserInput.$re(/^@plugin\\s+/);\n\n if (dir) {\n args = this.pluginArgs();\n\n if (args) {\n options = {\n pluginArgs: args,\n isPlugin: true\n };\n }\n else {\n options = { isPlugin: true };\n }\n\n if ((path = this.entities.quoted() || this.entities.url())) {\n\n if (!parserInput.$char(';')) {\n parserInput.i = index;\n error('missing semi-colon on @plugin');\n }\n return new(tree.Import)(path, null, options, index + currentIndex, fileInfo);\n }\n else {\n parserInput.i = index;\n error('malformed @plugin statement');\n }\n }\n },\n\n pluginArgs: function() {\n // list of options, surrounded by parens\n parserInput.save();\n if (!parserInput.$char('(')) {\n parserInput.restore();\n return null;\n }\n const args = parserInput.$re(/^\\s*([^);]+)\\)\\s*/);\n if (args[1]) {\n parserInput.forget();\n return args[1].trim();\n }\n else {\n parserInput.restore();\n return null;\n }\n },\n\n //\n // A CSS AtRule\n //\n // @charset \"utf-8\";\n //\n atrule: function () {\n const index = parserInput.i;\n let name;\n let value;\n let rules;\n let nonVendorSpecificName;\n let hasIdentifier;\n let hasExpression;\n let hasUnknown;\n let hasBlock = true;\n let isRooted = true;\n\n if (parserInput.currentChar() !== '@') { return; }\n\n value = this['import']() || this.plugin() || this.nestableAtRule();\n if (value) {\n return value;\n }\n\n parserInput.save();\n\n name = parserInput.$re(/^@[a-z-]+/);\n\n if (!name) { return; }\n\n nonVendorSpecificName = name;\n if (name.charAt(1) == '-' && name.indexOf('-', 2) > 0) {\n nonVendorSpecificName = `@${name.slice(name.indexOf('-', 2) + 1)}`;\n }\n\n switch (nonVendorSpecificName) {\n case '@charset':\n hasIdentifier = true;\n hasBlock = false;\n break;\n case '@namespace':\n hasExpression = true;\n hasBlock = false;\n break;\n case '@keyframes':\n case '@counter-style':\n hasIdentifier = true;\n break;\n case '@document':\n case '@supports':\n hasUnknown = true;\n isRooted = false;\n break;\n default:\n hasUnknown = true;\n break;\n }\n\n parserInput.commentStore.length = 0;\n\n if (hasIdentifier) {\n value = this.entity();\n if (!value) {\n error(`expected ${name} identifier`);\n }\n } else if (hasExpression) {\n value = this.expression();\n if (!value) {\n error(`expected ${name} expression`);\n }\n } else if (hasUnknown) {\n value = this.permissiveValue(/^[{;]/);\n hasBlock = (parserInput.currentChar() === '{');\n if (!value) {\n if (!hasBlock && parserInput.currentChar() !== ';') {\n error(`${name} rule is missing block or ending semi-colon`);\n }\n }\n else if (!value.value) {\n value = null;\n }\n }\n\n if (hasBlock) {\n rules = this.blockRuleset();\n }\n\n if (rules || (!hasBlock && value && parserInput.$char(';'))) {\n parserInput.forget();\n return new(tree.AtRule)(name, value, rules, index + currentIndex, fileInfo,\n context.dumpLineNumbers ? getDebugInfo(index) : null,\n isRooted\n );\n }\n\n parserInput.restore('at-rule options not recognised');\n },\n\n //\n // A Value is a comma-delimited list of Expressions\n //\n // font-family: Baskerville, Georgia, serif;\n //\n // In a Rule, a Value represents everything after the `:`,\n // and before the `;`.\n //\n value: function () {\n let e;\n const expressions = [];\n const index = parserInput.i;\n\n do {\n e = this.expression();\n if (e) {\n expressions.push(e);\n if (!parserInput.$char(',')) { break; }\n }\n } while (e);\n\n if (expressions.length > 0) {\n return new(tree.Value)(expressions, index + currentIndex);\n }\n },\n important: function () {\n if (parserInput.currentChar() === '!') {\n return parserInput.$re(/^! *important/);\n }\n },\n sub: function () {\n let a;\n let e;\n\n parserInput.save();\n if (parserInput.$char('(')) {\n a = this.addition();\n if (a && parserInput.$char(')')) {\n parserInput.forget();\n e = new(tree.Expression)([a]);\n e.parens = true;\n return e;\n }\n parserInput.restore('Expected \\')\\'');\n return;\n }\n parserInput.restore();\n },\n multiplication: function () {\n let m;\n let a;\n let op;\n let operation;\n let isSpaced;\n m = this.operand();\n if (m) {\n isSpaced = parserInput.isWhitespace(-1);\n while (true) {\n if (parserInput.peek(/^\\/[*/]/)) {\n break;\n }\n\n parserInput.save();\n\n op = parserInput.$char('/') || parserInput.$char('*') || parserInput.$str('./');\n\n if (!op) { parserInput.forget(); break; }\n\n a = this.operand();\n\n if (!a) { parserInput.restore(); break; }\n parserInput.forget();\n\n m.parensInOp = true;\n a.parensInOp = true;\n operation = new(tree.Operation)(op, [operation || m, a], isSpaced);\n isSpaced = parserInput.isWhitespace(-1);\n }\n return operation || m;\n }\n },\n addition: function () {\n let m;\n let a;\n let op;\n let operation;\n let isSpaced;\n m = this.multiplication();\n if (m) {\n isSpaced = parserInput.isWhitespace(-1);\n while (true) {\n op = parserInput.$re(/^[-+]\\s+/) || (!isSpaced && (parserInput.$char('+') || parserInput.$char('-')));\n if (!op) {\n break;\n }\n a = this.multiplication();\n if (!a) {\n break;\n }\n\n m.parensInOp = true;\n a.parensInOp = true;\n operation = new(tree.Operation)(op, [operation || m, a], isSpaced);\n isSpaced = parserInput.isWhitespace(-1);\n }\n return operation || m;\n }\n },\n conditions: function () {\n let a;\n let b;\n const index = parserInput.i;\n let condition;\n\n a = this.condition(true);\n if (a) {\n while (true) {\n if (!parserInput.peek(/^,\\s*(not\\s*)?\\(/) || !parserInput.$char(',')) {\n break;\n }\n b = this.condition(true);\n if (!b) {\n break;\n }\n condition = new(tree.Condition)('or', condition || a, b, index + currentIndex);\n }\n return condition || a;\n }\n },\n condition: function (needsParens) {\n let result;\n let logical;\n let next;\n function or() {\n return parserInput.$str('or');\n }\n\n result = this.conditionAnd(needsParens);\n if (!result) {\n return ;\n }\n logical = or();\n if (logical) {\n next = this.condition(needsParens);\n if (next) {\n result = new(tree.Condition)(logical, result, next);\n } else {\n return ;\n }\n }\n return result;\n },\n conditionAnd: function (needsParens) {\n let result;\n let logical;\n let next;\n const self = this;\n function insideCondition() {\n const cond = self.negatedCondition(needsParens) || self.parenthesisCondition(needsParens);\n if (!cond && !needsParens) {\n return self.atomicCondition(needsParens);\n }\n return cond;\n }\n function and() {\n return parserInput.$str('and');\n }\n\n result = insideCondition();\n if (!result) {\n return ;\n }\n logical = and();\n if (logical) {\n next = this.conditionAnd(needsParens);\n if (next) {\n result = new(tree.Condition)(logical, result, next);\n } else {\n return ;\n }\n }\n return result;\n },\n negatedCondition: function (needsParens) {\n if (parserInput.$str('not')) {\n const result = this.parenthesisCondition(needsParens);\n if (result) {\n result.negate = !result.negate;\n }\n return result;\n }\n },\n parenthesisCondition: function (needsParens) {\n function tryConditionFollowedByParenthesis(me) {\n let body;\n parserInput.save();\n body = me.condition(needsParens);\n if (!body) {\n parserInput.restore();\n return ;\n }\n if (!parserInput.$char(')')) {\n parserInput.restore();\n return ;\n }\n parserInput.forget();\n return body;\n }\n\n let body;\n parserInput.save();\n if (!parserInput.$str('(')) {\n parserInput.restore();\n return ;\n }\n body = tryConditionFollowedByParenthesis(this);\n if (body) {\n parserInput.forget();\n return body;\n }\n\n body = this.atomicCondition(needsParens);\n if (!body) {\n parserInput.restore();\n return ;\n }\n if (!parserInput.$char(')')) {\n parserInput.restore(`expected ')' got '${parserInput.currentChar()}'`);\n return ;\n }\n parserInput.forget();\n return body;\n },\n atomicCondition: function (needsParens, preparsedCond) {\n const entities = this.entities;\n const index = parserInput.i;\n let a;\n let b;\n let c;\n let op;\n\n const cond = (function() {\n return this.addition() || entities.keyword() || entities.quoted() || entities.mixinLookup();\n }).bind(this)\n\n if (preparsedCond) {\n a = preparsedCond;\n } else {\n a = cond();\n }\n\n if (a) {\n if (parserInput.$char('>')) {\n if (parserInput.$char('=')) {\n op = '>=';\n } else {\n op = '>';\n }\n } else\n if (parserInput.$char('<')) {\n if (parserInput.$char('=')) {\n op = '<=';\n } else {\n op = '<';\n }\n } else\n if (parserInput.$char('=')) {\n if (parserInput.$char('>')) {\n op = '=>';\n } else if (parserInput.$char('<')) {\n op = '=<';\n } else {\n op = '=';\n }\n }\n if (op) {\n b = cond();\n if (b) {\n c = new(tree.Condition)(op, a, b, index + currentIndex, false);\n } else {\n error('expected expression');\n }\n } else if (!preparsedCond) {\n c = new(tree.Condition)('=', a, new(tree.Keyword)('true'), index + currentIndex, false);\n }\n return c;\n }\n },\n\n //\n // An operand is anything that can be part of an operation,\n // such as a Color, or a Variable\n //\n operand: function () {\n const entities = this.entities;\n let negate;\n\n if (parserInput.peek(/^-[@$(]/)) {\n negate = parserInput.$char('-');\n }\n\n let o = this.sub() || entities.dimension() ||\n entities.color() || entities.variable() ||\n entities.property() || entities.call() ||\n entities.quoted(true) || entities.colorKeyword() ||\n entities.mixinLookup();\n\n if (negate) {\n o.parensInOp = true;\n o = new(tree.Negative)(o);\n }\n\n return o;\n },\n\n //\n // Expressions either represent mathematical operations,\n // or white-space delimited Entities.\n //\n // 1px solid black\n // @var * 2\n //\n expression: function () {\n const entities = [];\n let e;\n let delim;\n const index = parserInput.i;\n\n do {\n e = this.comment();\n if (e && !e.isLineComment) {\n entities.push(e);\n continue;\n }\n e = this.addition() || this.entity();\n\n if (e instanceof tree.Comment) {\n e = null;\n }\n\n if (e) {\n entities.push(e);\n // operations do not allow keyword \"/\" dimension (e.g. small/20px) so we support that here\n if (!parserInput.peek(/^\\/[/*]/)) {\n delim = parserInput.$char('/');\n if (delim) {\n entities.push(new(tree.Anonymous)(delim, index + currentIndex));\n }\n }\n }\n } while (e);\n if (entities.length > 0) {\n return new(tree.Expression)(entities);\n }\n },\n property: function () {\n const name = parserInput.$re(/^(\\*?-?[_a-zA-Z0-9-]+)\\s*:/);\n if (name) {\n return name[1];\n }\n },\n ruleProperty: function () {\n let name = [];\n const index = [];\n let s;\n let k;\n\n parserInput.save();\n\n const simpleProperty = parserInput.$re(/^([_a-zA-Z0-9-]+)\\s*:/);\n if (simpleProperty) {\n name = [new(tree.Keyword)(simpleProperty[1])];\n parserInput.forget();\n return name;\n }\n\n function match(re) {\n const i = parserInput.i;\n const chunk = parserInput.$re(re);\n if (chunk) {\n index.push(i);\n return name.push(chunk[1]);\n }\n }\n\n match(/^(\\*?)/);\n while (true) {\n if (!match(/^((?:[\\w-]+)|(?:[@$]\\{[\\w-]+\\}))/)) {\n break;\n }\n }\n\n if ((name.length > 1) && match(/^((?:\\+_|\\+)?)\\s*:/)) {\n parserInput.forget();\n\n // at last, we have the complete match now. move forward,\n // convert name particles to tree objects and return:\n if (name[0] === '') {\n name.shift();\n index.shift();\n }\n for (k = 0; k < name.length; k++) {\n s = name[k];\n name[k] = (s.charAt(0) !== '@' && s.charAt(0) !== '$') ?\n new(tree.Keyword)(s) :\n (s.charAt(0) === '@' ?\n new(tree.Variable)(`@${s.slice(2, -1)}`, index[k] + currentIndex, fileInfo) :\n new(tree.Property)(`$${s.slice(2, -1)}`, index[k] + currentIndex, fileInfo));\n }\n return name;\n }\n parserInput.restore();\n }\n }\n };\n};\nParser.serializeVars = vars => {\n let s = '';\n\n for (const name in vars) {\n if (Object.hasOwnProperty.call(vars, name)) {\n const value = vars[name];\n s += `${((name[0] === '@') ? '' : '@') + name}: ${value}${(String(value).slice(-1) === ';') ? '' : ';'}`;\n }\n }\n\n return s;\n};\n\nexport default Parser;","import Node from './node';\nimport Element from './element';\nimport LessError from '../less-error';\nimport * as utils from '../utils';\nimport Parser from '../parser/parser';\n\nconst Selector = function(elements, extendList, condition, index, currentFileInfo, visibilityInfo) {\n this.extendList = extendList;\n this.condition = condition;\n this.evaldCondition = !condition;\n this._index = index;\n this._fileInfo = currentFileInfo;\n this.elements = this.getElements(elements);\n this.mixinElements_ = undefined;\n this.copyVisibilityInfo(visibilityInfo);\n this.setParent(this.elements, this);\n};\n\nSelector.prototype = Object.assign(new Node(), {\n type: 'Selector',\n\n accept(visitor) {\n if (this.elements) {\n this.elements = visitor.visitArray(this.elements);\n }\n if (this.extendList) {\n this.extendList = visitor.visitArray(this.extendList);\n }\n if (this.condition) {\n this.condition = visitor.visit(this.condition);\n }\n },\n\n createDerived(elements, extendList, evaldCondition) {\n elements = this.getElements(elements);\n const newSelector = new Selector(elements, extendList || this.extendList,\n null, this.getIndex(), this.fileInfo(), this.visibilityInfo());\n newSelector.evaldCondition = (!utils.isNullOrUndefined(evaldCondition)) ? evaldCondition : this.evaldCondition;\n newSelector.mediaEmpty = this.mediaEmpty;\n return newSelector;\n },\n\n getElements(els) {\n if (!els) {\n return [new Element('', '&', false, this._index, this._fileInfo)];\n }\n if (typeof els === 'string') {\n new Parser(this.parse.context, this.parse.importManager, this._fileInfo, this._index).parseNode(\n els,\n ['selector'],\n function(err, result) {\n if (err) {\n throw new LessError({\n index: err.index,\n message: err.message\n }, this.parse.imports, this._fileInfo.filename);\n }\n els = result[0].elements;\n });\n }\n return els;\n },\n\n createEmptySelectors() {\n const el = new Element('', '&', false, this._index, this._fileInfo), sels = [new Selector([el], null, null, this._index, this._fileInfo)];\n sels[0].mediaEmpty = true;\n return sels;\n },\n\n match(other) {\n const elements = this.elements;\n const len = elements.length;\n let olen;\n let i;\n\n other = other.mixinElements();\n olen = other.length;\n if (olen === 0 || len < olen) {\n return 0;\n } else {\n for (i = 0; i < olen; i++) {\n if (elements[i].value !== other[i]) {\n return 0;\n }\n }\n }\n\n return olen; // return number of matched elements\n },\n\n mixinElements() {\n if (this.mixinElements_) {\n return this.mixinElements_;\n }\n\n let elements = this.elements.map( function(v) {\n return v.combinator.value + (v.value.value || v.value);\n }).join('').match(/[,*.\\w-]([\\w-]|(\\\\.))*/g);\n\n if (elements) {\n if (elements[0] === '&') {\n elements.shift();\n }\n } else {\n elements = [];\n }\n\n return (this.mixinElements_ = elements);\n },\n\n isJustParentSelector() {\n return !this.mediaEmpty &&\n this.elements.length === 1 &&\n this.elements[0].value === '&' &&\n (this.elements[0].combinator.value === ' ' || this.elements[0].combinator.value === '');\n },\n\n eval(context) {\n const evaldCondition = this.condition && this.condition.eval(context);\n let elements = this.elements;\n let extendList = this.extendList;\n\n elements = elements && elements.map(function (e) { return e.eval(context); });\n extendList = extendList && extendList.map(function(extend) { return extend.eval(context); });\n\n return this.createDerived(elements, extendList, evaldCondition);\n },\n\n genCSS(context, output) {\n let i, element;\n if ((!context || !context.firstSelector) && this.elements[0].combinator.value === '') {\n output.add(' ', this.fileInfo(), this.getIndex());\n }\n for (i = 0; i < this.elements.length; i++) {\n element = this.elements[i];\n element.genCSS(context, output);\n }\n },\n\n getIsOutput() {\n return this.evaldCondition;\n }\n});\n\nexport default Selector;\n","import Node from './node';\n\nconst Value = function(value) {\n if (!value) {\n throw new Error('Value requires an array argument');\n }\n if (!Array.isArray(value)) {\n this.value = [ value ];\n }\n else {\n this.value = value;\n }\n};\n\nValue.prototype = Object.assign(new Node(), {\n type: 'Value',\n\n accept(visitor) {\n if (this.value) {\n this.value = visitor.visitArray(this.value);\n }\n },\n\n eval(context) {\n if (this.value.length === 1) {\n return this.value[0].eval(context);\n } else {\n return new Value(this.value.map(function (v) {\n return v.eval(context);\n }));\n }\n },\n\n genCSS(context, output) {\n let i;\n for (i = 0; i < this.value.length; i++) {\n this.value[i].genCSS(context, output);\n if (i + 1 < this.value.length) {\n output.add((context && context.compress) ? ',' : ', ');\n }\n }\n }\n});\n\nexport default Value;\n","import Node from './node';\n\nconst Keyword = function(value) {\n this.value = value;\n};\n\nKeyword.prototype = Object.assign(new Node(), {\n type: 'Keyword',\n\n genCSS(context, output) {\n if (this.value === '%') { throw { type: 'Syntax', message: 'Invalid % without number' }; }\n output.add(this.value);\n }\n});\n\nKeyword.True = new Keyword('true');\nKeyword.False = new Keyword('false');\n\nexport default Keyword;\n","import Node from './node';\nimport Value from './value';\nimport Keyword from './keyword';\nimport Anonymous from './anonymous';\nimport * as Constants from '../constants';\nconst MATH = Constants.Math;\n\nfunction evalName(context, name) {\n let value = '';\n let i;\n const n = name.length;\n const output = {add: function (s) {value += s;}};\n for (i = 0; i < n; i++) {\n name[i].eval(context).genCSS(context, output);\n }\n return value;\n}\n\nconst Declaration = function(name, value, important, merge, index, currentFileInfo, inline, variable) {\n this.name = name;\n this.value = (value instanceof Node) ? value : new Value([value ? new Anonymous(value) : null]);\n this.important = important ? ` ${important.trim()}` : '';\n this.merge = merge;\n this._index = index;\n this._fileInfo = currentFileInfo;\n this.inline = inline || false;\n this.variable = (variable !== undefined) ? variable\n : (name.charAt && (name.charAt(0) === '@'));\n this.allowRoot = true;\n this.setParent(this.value, this);\n};\n\nDeclaration.prototype = Object.assign(new Node(), {\n type: 'Declaration',\n\n genCSS(context, output) {\n output.add(this.name + (context.compress ? ':' : ': '), this.fileInfo(), this.getIndex());\n try {\n this.value.genCSS(context, output);\n }\n catch (e) {\n e.index = this._index;\n e.filename = this._fileInfo.filename;\n throw e;\n }\n output.add(this.important + ((this.inline || (context.lastRule && context.compress)) ? '' : ';'), this._fileInfo, this._index);\n },\n\n eval(context) {\n let mathBypass = false, prevMath, name = this.name, evaldValue, variable = this.variable;\n if (typeof name !== 'string') {\n // expand 'primitive' name directly to get\n // things faster (~10% for benchmark.less):\n name = (name.length === 1) && (name[0] instanceof Keyword) ?\n name[0].value : evalName(context, name);\n variable = false; // never treat expanded interpolation as new variable name\n }\n\n // @todo remove when parens-division is default\n if (name === 'font' && context.math === MATH.ALWAYS) {\n mathBypass = true;\n prevMath = context.math;\n context.math = MATH.PARENS_DIVISION;\n }\n try {\n context.importantScope.push({});\n evaldValue = this.value.eval(context);\n\n if (!this.variable && evaldValue.type === 'DetachedRuleset') {\n throw { message: 'Rulesets cannot be evaluated on a property.',\n index: this.getIndex(), filename: this.fileInfo().filename };\n }\n let important = this.important;\n const importantResult = context.importantScope.pop();\n if (!important && importantResult.important) {\n important = importantResult.important;\n }\n\n return new Declaration(name,\n evaldValue,\n important,\n this.merge,\n this.getIndex(), this.fileInfo(), this.inline,\n variable);\n }\n catch (e) {\n if (typeof e.index !== 'number') {\n e.index = this.getIndex();\n e.filename = this.fileInfo().filename;\n }\n throw e;\n }\n finally {\n if (mathBypass) {\n context.math = prevMath;\n }\n }\n },\n\n makeImportant() {\n return new Declaration(this.name,\n this.value,\n '!important',\n this.merge,\n this.getIndex(), this.fileInfo(), this.inline);\n }\n});\n\nexport default Declaration;","function asComment(ctx) {\n return `/* line ${ctx.debugInfo.lineNumber}, ${ctx.debugInfo.fileName} */\\n`;\n}\n\nfunction asMediaQuery(ctx) {\n let filenameWithProtocol = ctx.debugInfo.fileName;\n if (!/^[a-z]+:\\/\\//i.test(filenameWithProtocol)) {\n filenameWithProtocol = `file://${filenameWithProtocol}`;\n }\n return `@media -sass-debug-info{filename{font-family:${filenameWithProtocol.replace(/([.:/\\\\])/g, function (a) {\n if (a == '\\\\') {\n a = '/';\n }\n return `\\\\${a}`;\n })}}line{font-family:\\\\00003${ctx.debugInfo.lineNumber}}}\\n`;\n}\n\nfunction debugInfo(context, ctx, lineSeparator) {\n let result = '';\n if (context.dumpLineNumbers && !context.compress) {\n switch (context.dumpLineNumbers) {\n case 'comments':\n result = asComment(ctx);\n break;\n case 'mediaquery':\n result = asMediaQuery(ctx);\n break;\n case 'all':\n result = asComment(ctx) + (lineSeparator || '') + asMediaQuery(ctx);\n break;\n }\n }\n return result;\n}\n\nexport default debugInfo;\n\n","import Node from './node';\nimport getDebugInfo from './debug-info';\n\nconst Comment = function(value, isLineComment, index, currentFileInfo) {\n this.value = value;\n this.isLineComment = isLineComment;\n this._index = index;\n this._fileInfo = currentFileInfo;\n this.allowRoot = true;\n}\n\nComment.prototype = Object.assign(new Node(), {\n type: 'Comment',\n\n genCSS(context, output) {\n if (this.debugInfo) {\n output.add(getDebugInfo(context, this), this.fileInfo(), this.getIndex());\n }\n output.add(this.value);\n },\n\n isSilent(context) {\n const isCompressed = context.compress && this.value[2] !== '!';\n return this.isLineComment || isCompressed;\n }\n});\n\nexport default Comment;\n","import Keyword from '../tree/keyword';\nimport * as utils from '../utils';\n\nconst defaultFunc = {\n eval: function () {\n const v = this.value_;\n const e = this.error_;\n if (e) {\n throw e;\n }\n if (!utils.isNullOrUndefined(v)) {\n return v ? Keyword.True : Keyword.False;\n }\n },\n value: function (v) {\n this.value_ = v;\n },\n error: function (e) {\n this.error_ = e;\n },\n reset: function () {\n this.value_ = this.error_ = null;\n }\n};\n\nexport default defaultFunc;\n","import Node from './node';\nimport Declaration from './declaration';\nimport Keyword from './keyword';\nimport Comment from './comment';\nimport Paren from './paren';\nimport Selector from './selector';\nimport Element from './element';\nimport Anonymous from './anonymous';\nimport contexts from '../contexts';\nimport globalFunctionRegistry from '../functions/function-registry';\nimport defaultFunc from '../functions/default';\nimport getDebugInfo from './debug-info';\nimport * as utils from '../utils';\nimport Parser from '../parser/parser';\n\nconst Ruleset = function(selectors, rules, strictImports, visibilityInfo) {\n this.selectors = selectors;\n this.rules = rules;\n this._lookups = {};\n this._variables = null;\n this._properties = null;\n this.strictImports = strictImports;\n this.copyVisibilityInfo(visibilityInfo);\n this.allowRoot = true;\n\n this.setParent(this.selectors, this);\n this.setParent(this.rules, this);\n}\n\nRuleset.prototype = Object.assign(new Node(), {\n type: 'Ruleset',\n isRuleset: true,\n\n isRulesetLike() { return true; },\n\n accept(visitor) {\n if (this.paths) {\n this.paths = visitor.visitArray(this.paths, true);\n } else if (this.selectors) {\n this.selectors = visitor.visitArray(this.selectors);\n }\n if (this.rules && this.rules.length) {\n this.rules = visitor.visitArray(this.rules);\n }\n },\n\n eval(context) {\n let selectors;\n let selCnt;\n let selector;\n let i;\n let hasVariable;\n let hasOnePassingSelector = false;\n\n if (this.selectors && (selCnt = this.selectors.length)) {\n selectors = new Array(selCnt);\n defaultFunc.error({\n type: 'Syntax',\n message: 'it is currently only allowed in parametric mixin guards,'\n });\n\n for (i = 0; i < selCnt; i++) {\n selector = this.selectors[i].eval(context);\n for (let j = 0; j < selector.elements.length; j++) {\n if (selector.elements[j].isVariable) {\n hasVariable = true;\n break;\n }\n }\n selectors[i] = selector;\n if (selector.evaldCondition) {\n hasOnePassingSelector = true;\n }\n }\n\n if (hasVariable) {\n const toParseSelectors = new Array(selCnt);\n for (i = 0; i < selCnt; i++) {\n selector = selectors[i];\n toParseSelectors[i] = selector.toCSS(context);\n }\n const startingIndex = selectors[0].getIndex();\n const selectorFileInfo = selectors[0].fileInfo();\n new Parser(context, this.parse.importManager, selectorFileInfo, startingIndex).parseNode(\n toParseSelectors.join(','),\n ['selectors'],\n function(err, result) {\n if (result) {\n selectors = utils.flattenArray(result);\n }\n });\n }\n\n defaultFunc.reset();\n } else {\n hasOnePassingSelector = true;\n }\n\n let rules = this.rules ? utils.copyArray(this.rules) : null;\n const ruleset = new Ruleset(selectors, rules, this.strictImports, this.visibilityInfo());\n let rule;\n let subRule;\n\n ruleset.originalRuleset = this;\n ruleset.root = this.root;\n ruleset.firstRoot = this.firstRoot;\n ruleset.allowImports = this.allowImports;\n\n if (this.debugInfo) {\n ruleset.debugInfo = this.debugInfo;\n }\n\n if (!hasOnePassingSelector) {\n rules.length = 0;\n }\n\n // inherit a function registry from the frames stack when possible;\n // otherwise from the global registry\n ruleset.functionRegistry = (function (frames) {\n let i = 0;\n const n = frames.length;\n let found;\n for ( ; i !== n ; ++i ) {\n found = frames[ i ].functionRegistry;\n if ( found ) { return found; }\n }\n return globalFunctionRegistry;\n }(context.frames)).inherit();\n\n // push the current ruleset to the frames stack\n const ctxFrames = context.frames;\n ctxFrames.unshift(ruleset);\n\n // currrent selectors\n let ctxSelectors = context.selectors;\n if (!ctxSelectors) {\n context.selectors = ctxSelectors = [];\n }\n ctxSelectors.unshift(this.selectors);\n\n // Evaluate imports\n if (ruleset.root || ruleset.allowImports || !ruleset.strictImports) {\n ruleset.evalImports(context);\n }\n\n // Store the frames around mixin definitions,\n // so they can be evaluated like closures when the time comes.\n const rsRules = ruleset.rules;\n for (i = 0; (rule = rsRules[i]); i++) {\n if (rule.evalFirst) {\n rsRules[i] = rule.eval(context);\n }\n }\n\n const mediaBlockCount = (context.mediaBlocks && context.mediaBlocks.length) || 0;\n\n // Evaluate mixin calls.\n for (i = 0; (rule = rsRules[i]); i++) {\n if (rule.type === 'MixinCall') {\n /* jshint loopfunc:true */\n rules = rule.eval(context).filter(function(r) {\n if ((r instanceof Declaration) && r.variable) {\n // do not pollute the scope if the variable is\n // already there. consider returning false here\n // but we need a way to \"return\" variable from mixins\n return !(ruleset.variable(r.name));\n }\n return true;\n });\n rsRules.splice.apply(rsRules, [i, 1].concat(rules));\n i += rules.length - 1;\n ruleset.resetCache();\n } else if (rule.type === 'VariableCall') {\n /* jshint loopfunc:true */\n rules = rule.eval(context).rules.filter(function(r) {\n if ((r instanceof Declaration) && r.variable) {\n // do not pollute the scope at all\n return false;\n }\n return true;\n });\n rsRules.splice.apply(rsRules, [i, 1].concat(rules));\n i += rules.length - 1;\n ruleset.resetCache();\n }\n }\n\n // Evaluate everything else\n for (i = 0; (rule = rsRules[i]); i++) {\n if (!rule.evalFirst) {\n rsRules[i] = rule = rule.eval ? rule.eval(context) : rule;\n }\n }\n\n // Evaluate everything else\n for (i = 0; (rule = rsRules[i]); i++) {\n // for rulesets, check if it is a css guard and can be removed\n if (rule instanceof Ruleset && rule.selectors && rule.selectors.length === 1) {\n // check if it can be folded in (e.g. & where)\n if (rule.selectors[0] && rule.selectors[0].isJustParentSelector()) {\n rsRules.splice(i--, 1);\n\n for (let j = 0; (subRule = rule.rules[j]); j++) {\n if (subRule instanceof Node) {\n subRule.copyVisibilityInfo(rule.visibilityInfo());\n if (!(subRule instanceof Declaration) || !subRule.variable) {\n rsRules.splice(++i, 0, subRule);\n }\n }\n }\n }\n }\n }\n\n // Pop the stack\n ctxFrames.shift();\n ctxSelectors.shift();\n\n if (context.mediaBlocks) {\n for (i = mediaBlockCount; i < context.mediaBlocks.length; i++) {\n context.mediaBlocks[i].bubbleSelectors(selectors);\n }\n }\n\n return ruleset;\n },\n\n evalImports(context) {\n const rules = this.rules;\n let i;\n let importRules;\n if (!rules) { return; }\n\n for (i = 0; i < rules.length; i++) {\n if (rules[i].type === 'Import') {\n importRules = rules[i].eval(context);\n if (importRules && (importRules.length || importRules.length === 0)) {\n rules.splice.apply(rules, [i, 1].concat(importRules));\n i += importRules.length - 1;\n } else {\n rules.splice(i, 1, importRules);\n }\n this.resetCache();\n }\n }\n },\n\n makeImportant() {\n const result = new Ruleset(this.selectors, this.rules.map(function (r) {\n if (r.makeImportant) {\n return r.makeImportant();\n } else {\n return r;\n }\n }), this.strictImports, this.visibilityInfo());\n\n return result;\n },\n\n matchArgs(args) {\n return !args || args.length === 0;\n },\n\n // lets you call a css selector with a guard\n matchCondition(args, context) {\n const lastSelector = this.selectors[this.selectors.length - 1];\n if (!lastSelector.evaldCondition) {\n return false;\n }\n if (lastSelector.condition &&\n !lastSelector.condition.eval(\n new contexts.Eval(context,\n context.frames))) {\n return false;\n }\n return true;\n },\n\n resetCache() {\n this._rulesets = null;\n this._variables = null;\n this._properties = null;\n this._lookups = {};\n },\n\n variables() {\n if (!this._variables) {\n this._variables = !this.rules ? {} : this.rules.reduce(function (hash, r) {\n if (r instanceof Declaration && r.variable === true) {\n hash[r.name] = r;\n }\n // when evaluating variables in an import statement, imports have not been eval'd\n // so we need to go inside import statements.\n // guard against root being a string (in the case of inlined less)\n if (r.type === 'Import' && r.root && r.root.variables) {\n const vars = r.root.variables();\n for (const name in vars) {\n // eslint-disable-next-line no-prototype-builtins\n if (vars.hasOwnProperty(name)) {\n hash[name] = r.root.variable(name);\n }\n }\n }\n return hash;\n }, {});\n }\n return this._variables;\n },\n\n properties() {\n if (!this._properties) {\n this._properties = !this.rules ? {} : this.rules.reduce(function (hash, r) {\n if (r instanceof Declaration && r.variable !== true) {\n const name = (r.name.length === 1) && (r.name[0] instanceof Keyword) ?\n r.name[0].value : r.name;\n // Properties don't overwrite as they can merge\n if (!hash[`$${name}`]) {\n hash[`$${name}`] = [ r ];\n }\n else {\n hash[`$${name}`].push(r);\n }\n }\n return hash;\n }, {});\n }\n return this._properties;\n },\n\n variable(name) {\n const decl = this.variables()[name];\n if (decl) {\n return this.parseValue(decl);\n }\n },\n\n property(name) {\n const decl = this.properties()[name];\n if (decl) {\n return this.parseValue(decl);\n }\n },\n\n lastDeclaration() {\n for (let i = this.rules.length; i > 0; i--) {\n const decl = this.rules[i - 1];\n if (decl instanceof Declaration) {\n return this.parseValue(decl);\n }\n }\n },\n\n parseValue(toParse) {\n const self = this;\n function transformDeclaration(decl) {\n if (decl.value instanceof Anonymous && !decl.parsed) {\n if (typeof decl.value.value === 'string') {\n new Parser(this.parse.context, this.parse.importManager, decl.fileInfo(), decl.value.getIndex()).parseNode(\n decl.value.value,\n ['value', 'important'],\n function(err, result) {\n if (err) {\n decl.parsed = true;\n }\n if (result) {\n decl.value = result[0];\n decl.important = result[1] || '';\n decl.parsed = true;\n }\n });\n } else {\n decl.parsed = true;\n }\n\n return decl;\n }\n else {\n return decl;\n }\n }\n if (!Array.isArray(toParse)) {\n return transformDeclaration.call(self, toParse);\n }\n else {\n const nodes = [];\n toParse.forEach(function(n) {\n nodes.push(transformDeclaration.call(self, n));\n });\n return nodes;\n }\n },\n\n rulesets() {\n if (!this.rules) { return []; }\n\n const filtRules = [];\n const rules = this.rules;\n let i;\n let rule;\n\n for (i = 0; (rule = rules[i]); i++) {\n if (rule.isRuleset) {\n filtRules.push(rule);\n }\n }\n\n return filtRules;\n },\n\n prependRule(rule) {\n const rules = this.rules;\n if (rules) {\n rules.unshift(rule);\n } else {\n this.rules = [ rule ];\n }\n this.setParent(rule, this);\n },\n\n find(selector, self, filter) {\n self = self || this;\n const rules = [];\n let match;\n let foundMixins;\n const key = selector.toCSS();\n\n if (key in this._lookups) { return this._lookups[key]; }\n\n this.rulesets().forEach(function (rule) {\n if (rule !== self) {\n for (let j = 0; j < rule.selectors.length; j++) {\n match = selector.match(rule.selectors[j]);\n if (match) {\n if (selector.elements.length > match) {\n if (!filter || filter(rule)) {\n foundMixins = rule.find(new Selector(selector.elements.slice(match)), self, filter);\n for (let i = 0; i < foundMixins.length; ++i) {\n foundMixins[i].path.push(rule);\n }\n Array.prototype.push.apply(rules, foundMixins);\n }\n } else {\n rules.push({ rule, path: []});\n }\n break;\n }\n }\n }\n });\n this._lookups[key] = rules;\n return rules;\n },\n\n genCSS(context, output) {\n let i;\n let j;\n const charsetRuleNodes = [];\n let ruleNodes = [];\n\n let // Line number debugging\n debugInfo;\n\n let rule;\n let path;\n\n context.tabLevel = (context.tabLevel || 0);\n\n if (!this.root) {\n context.tabLevel++;\n }\n\n const tabRuleStr = context.compress ? '' : Array(context.tabLevel + 1).join(' ');\n const tabSetStr = context.compress ? '' : Array(context.tabLevel).join(' ');\n let sep;\n\n let charsetNodeIndex = 0;\n let importNodeIndex = 0;\n for (i = 0; (rule = this.rules[i]); i++) {\n if (rule instanceof Comment) {\n if (importNodeIndex === i) {\n importNodeIndex++;\n }\n ruleNodes.push(rule);\n } else if (rule.isCharset && rule.isCharset()) {\n ruleNodes.splice(charsetNodeIndex, 0, rule);\n charsetNodeIndex++;\n importNodeIndex++;\n } else if (rule.type === 'Import') {\n ruleNodes.splice(importNodeIndex, 0, rule);\n importNodeIndex++;\n } else {\n ruleNodes.push(rule);\n }\n }\n ruleNodes = charsetRuleNodes.concat(ruleNodes);\n\n // If this is the root node, we don't render\n // a selector, or {}.\n if (!this.root) {\n debugInfo = getDebugInfo(context, this, tabSetStr);\n\n if (debugInfo) {\n output.add(debugInfo);\n output.add(tabSetStr);\n }\n\n const paths = this.paths;\n const pathCnt = paths.length;\n let pathSubCnt;\n\n sep = context.compress ? ',' : (`,\\n${tabSetStr}`);\n\n for (i = 0; i < pathCnt; i++) {\n path = paths[i];\n if (!(pathSubCnt = path.length)) { continue; }\n if (i > 0) { output.add(sep); }\n\n context.firstSelector = true;\n path[0].genCSS(context, output);\n\n context.firstSelector = false;\n for (j = 1; j < pathSubCnt; j++) {\n path[j].genCSS(context, output);\n }\n }\n\n output.add((context.compress ? '{' : ' {\\n') + tabRuleStr);\n }\n\n // Compile rules and rulesets\n for (i = 0; (rule = ruleNodes[i]); i++) {\n\n if (i + 1 === ruleNodes.length) {\n context.lastRule = true;\n }\n\n const currentLastRule = context.lastRule;\n if (rule.isRulesetLike(rule)) {\n context.lastRule = false;\n }\n\n if (rule.genCSS) {\n rule.genCSS(context, output);\n } else if (rule.value) {\n output.add(rule.value.toString());\n }\n\n context.lastRule = currentLastRule;\n\n if (!context.lastRule && rule.isVisible()) {\n output.add(context.compress ? '' : (`\\n${tabRuleStr}`));\n } else {\n context.lastRule = false;\n }\n }\n\n if (!this.root) {\n output.add((context.compress ? '}' : `\\n${tabSetStr}}`));\n context.tabLevel--;\n }\n\n if (!output.isEmpty() && !context.compress && this.firstRoot) {\n output.add('\\n');\n }\n },\n\n joinSelectors(paths, context, selectors) {\n for (let s = 0; s < selectors.length; s++) {\n this.joinSelector(paths, context, selectors[s]);\n }\n },\n\n joinSelector(paths, context, selector) {\n\n function createParenthesis(elementsToPak, originalElement) {\n let replacementParen, j;\n if (elementsToPak.length === 0) {\n replacementParen = new Paren(elementsToPak[0]);\n } else {\n const insideParent = new Array(elementsToPak.length);\n for (j = 0; j < elementsToPak.length; j++) {\n insideParent[j] = new Element(\n null,\n elementsToPak[j],\n originalElement.isVariable,\n originalElement._index,\n originalElement._fileInfo\n );\n }\n replacementParen = new Paren(new Selector(insideParent));\n }\n return replacementParen;\n }\n\n function createSelector(containedElement, originalElement) {\n let element, selector;\n element = new Element(null, containedElement, originalElement.isVariable, originalElement._index, originalElement._fileInfo);\n selector = new Selector([element]);\n return selector;\n }\n\n // joins selector path from `beginningPath` with selector path in `addPath`\n // `replacedElement` contains element that is being replaced by `addPath`\n // returns concatenated path\n function addReplacementIntoPath(beginningPath, addPath, replacedElement, originalSelector) {\n let newSelectorPath, lastSelector, newJoinedSelector;\n // our new selector path\n newSelectorPath = [];\n\n // construct the joined selector - if & is the first thing this will be empty,\n // if not newJoinedSelector will be the last set of elements in the selector\n if (beginningPath.length > 0) {\n newSelectorPath = utils.copyArray(beginningPath);\n lastSelector = newSelectorPath.pop();\n newJoinedSelector = originalSelector.createDerived(utils.copyArray(lastSelector.elements));\n }\n else {\n newJoinedSelector = originalSelector.createDerived([]);\n }\n\n if (addPath.length > 0) {\n // /deep/ is a CSS4 selector - (removed, so should deprecate)\n // that is valid without anything in front of it\n // so if the & does not have a combinator that is \"\" or \" \" then\n // and there is a combinator on the parent, then grab that.\n // this also allows + a { & .b { .a & { ... though not sure why you would want to do that\n let combinator = replacedElement.combinator;\n\n const parentEl = addPath[0].elements[0];\n if (combinator.emptyOrWhitespace && !parentEl.combinator.emptyOrWhitespace) {\n combinator = parentEl.combinator;\n }\n // join the elements so far with the first part of the parent\n newJoinedSelector.elements.push(new Element(\n combinator,\n parentEl.value,\n replacedElement.isVariable,\n replacedElement._index,\n replacedElement._fileInfo\n ));\n newJoinedSelector.elements = newJoinedSelector.elements.concat(addPath[0].elements.slice(1));\n }\n\n // now add the joined selector - but only if it is not empty\n if (newJoinedSelector.elements.length !== 0) {\n newSelectorPath.push(newJoinedSelector);\n }\n\n // put together the parent selectors after the join (e.g. the rest of the parent)\n if (addPath.length > 1) {\n let restOfPath = addPath.slice(1);\n restOfPath = restOfPath.map(function (selector) {\n return selector.createDerived(selector.elements, []);\n });\n newSelectorPath = newSelectorPath.concat(restOfPath);\n }\n return newSelectorPath;\n }\n\n // joins selector path from `beginningPath` with every selector path in `addPaths` array\n // `replacedElement` contains element that is being replaced by `addPath`\n // returns array with all concatenated paths\n function addAllReplacementsIntoPath( beginningPath, addPaths, replacedElement, originalSelector, result) {\n let j;\n for (j = 0; j < beginningPath.length; j++) {\n const newSelectorPath = addReplacementIntoPath(beginningPath[j], addPaths, replacedElement, originalSelector);\n result.push(newSelectorPath);\n }\n return result;\n }\n\n function mergeElementsOnToSelectors(elements, selectors) {\n let i, sel;\n\n if (elements.length === 0) {\n return ;\n }\n if (selectors.length === 0) {\n selectors.push([ new Selector(elements) ]);\n return;\n }\n\n for (i = 0; (sel = selectors[i]); i++) {\n // if the previous thing in sel is a parent this needs to join on to it\n if (sel.length > 0) {\n sel[sel.length - 1] = sel[sel.length - 1].createDerived(sel[sel.length - 1].elements.concat(elements));\n }\n else {\n sel.push(new Selector(elements));\n }\n }\n }\n\n // replace all parent selectors inside `inSelector` by content of `context` array\n // resulting selectors are returned inside `paths` array\n // returns true if `inSelector` contained at least one parent selector\n function replaceParentSelector(paths, context, inSelector) {\n // The paths are [[Selector]]\n // The first list is a list of comma separated selectors\n // The inner list is a list of inheritance separated selectors\n // e.g.\n // .a, .b {\n // .c {\n // }\n // }\n // == [[.a] [.c]] [[.b] [.c]]\n //\n let i, j, k, currentElements, newSelectors, selectorsMultiplied, sel, el, hadParentSelector = false, length, lastSelector;\n function findNestedSelector(element) {\n let maybeSelector;\n if (!(element.value instanceof Paren)) {\n return null;\n }\n\n maybeSelector = element.value.value;\n if (!(maybeSelector instanceof Selector)) {\n return null;\n }\n\n return maybeSelector;\n }\n\n // the elements from the current selector so far\n currentElements = [];\n // the current list of new selectors to add to the path.\n // We will build it up. We initiate it with one empty selector as we \"multiply\" the new selectors\n // by the parents\n newSelectors = [\n []\n ];\n\n for (i = 0; (el = inSelector.elements[i]); i++) {\n // non parent reference elements just get added\n if (el.value !== '&') {\n const nestedSelector = findNestedSelector(el);\n if (nestedSelector !== null) {\n // merge the current list of non parent selector elements\n // on to the current list of selectors to add\n mergeElementsOnToSelectors(currentElements, newSelectors);\n\n const nestedPaths = [];\n let replaced;\n const replacedNewSelectors = [];\n replaced = replaceParentSelector(nestedPaths, context, nestedSelector);\n hadParentSelector = hadParentSelector || replaced;\n // the nestedPaths array should have only one member - replaceParentSelector does not multiply selectors\n for (k = 0; k < nestedPaths.length; k++) {\n const replacementSelector = createSelector(createParenthesis(nestedPaths[k], el), el);\n addAllReplacementsIntoPath(newSelectors, [replacementSelector], el, inSelector, replacedNewSelectors);\n }\n newSelectors = replacedNewSelectors;\n currentElements = [];\n } else {\n currentElements.push(el);\n }\n\n } else {\n hadParentSelector = true;\n // the new list of selectors to add\n selectorsMultiplied = [];\n\n // merge the current list of non parent selector elements\n // on to the current list of selectors to add\n mergeElementsOnToSelectors(currentElements, newSelectors);\n\n // loop through our current selectors\n for (j = 0; j < newSelectors.length; j++) {\n sel = newSelectors[j];\n // if we don't have any parent paths, the & might be in a mixin so that it can be used\n // whether there are parents or not\n if (context.length === 0) {\n // the combinator used on el should now be applied to the next element instead so that\n // it is not lost\n if (sel.length > 0) {\n sel[0].elements.push(new Element(el.combinator, '', el.isVariable, el._index, el._fileInfo));\n }\n selectorsMultiplied.push(sel);\n }\n else {\n // and the parent selectors\n for (k = 0; k < context.length; k++) {\n // We need to put the current selectors\n // then join the last selector's elements on to the parents selectors\n const newSelectorPath = addReplacementIntoPath(sel, context[k], el, inSelector);\n // add that to our new set of selectors\n selectorsMultiplied.push(newSelectorPath);\n }\n }\n }\n\n // our new selectors has been multiplied, so reset the state\n newSelectors = selectorsMultiplied;\n currentElements = [];\n }\n }\n\n // if we have any elements left over (e.g. .a& .b == .b)\n // add them on to all the current selectors\n mergeElementsOnToSelectors(currentElements, newSelectors);\n\n for (i = 0; i < newSelectors.length; i++) {\n length = newSelectors[i].length;\n if (length > 0) {\n paths.push(newSelectors[i]);\n lastSelector = newSelectors[i][length - 1];\n newSelectors[i][length - 1] = lastSelector.createDerived(lastSelector.elements, inSelector.extendList);\n }\n }\n\n return hadParentSelector;\n }\n\n function deriveSelector(visibilityInfo, deriveFrom) {\n const newSelector = deriveFrom.createDerived(deriveFrom.elements, deriveFrom.extendList, deriveFrom.evaldCondition);\n newSelector.copyVisibilityInfo(visibilityInfo);\n return newSelector;\n }\n\n // joinSelector code follows\n let i, newPaths, hadParentSelector;\n\n newPaths = [];\n hadParentSelector = replaceParentSelector(newPaths, context, selector);\n\n if (!hadParentSelector) {\n if (context.length > 0) {\n newPaths = [];\n for (i = 0; i < context.length; i++) {\n\n const concatenated = context[i].map(deriveSelector.bind(this, selector.visibilityInfo()));\n\n concatenated.push(selector);\n newPaths.push(concatenated);\n }\n }\n else {\n newPaths = [[selector]];\n }\n }\n\n for (i = 0; i < newPaths.length; i++) {\n paths.push(newPaths[i]);\n }\n\n }\n});\n\nexport default Ruleset;\n","import Node from './node';\nimport Selector from './selector';\nimport Ruleset from './ruleset';\nimport Anonymous from './anonymous';\n\nconst AtRule = function(\n name,\n value,\n rules,\n index,\n currentFileInfo,\n debugInfo,\n isRooted,\n visibilityInfo\n) {\n let i;\n\n this.name = name;\n this.value = (value instanceof Node) ? value : (value ? new Anonymous(value) : value);\n if (rules) {\n if (Array.isArray(rules)) {\n this.rules = rules;\n } else {\n this.rules = [rules];\n this.rules[0].selectors = (new Selector([], null, null, index, currentFileInfo)).createEmptySelectors();\n }\n for (i = 0; i < this.rules.length; i++) {\n this.rules[i].allowImports = true;\n }\n this.setParent(this.rules, this);\n }\n this._index = index;\n this._fileInfo = currentFileInfo;\n this.debugInfo = debugInfo;\n this.isRooted = isRooted || false;\n this.copyVisibilityInfo(visibilityInfo);\n this.allowRoot = true;\n}\n\nAtRule.prototype = Object.assign(new Node(), {\n type: 'AtRule',\n accept(visitor) {\n const value = this.value, rules = this.rules;\n if (rules) {\n this.rules = visitor.visitArray(rules);\n }\n if (value) {\n this.value = visitor.visit(value);\n }\n },\n\n isRulesetLike() {\n return this.rules || !this.isCharset();\n },\n\n isCharset() {\n return '@charset' === this.name;\n },\n\n genCSS(context, output) {\n const value = this.value, rules = this.rules;\n output.add(this.name, this.fileInfo(), this.getIndex());\n if (value) {\n output.add(' ');\n value.genCSS(context, output);\n }\n if (rules) {\n this.outputRuleset(context, output, rules);\n } else {\n output.add(';');\n }\n },\n\n eval(context) {\n let mediaPathBackup, mediaBlocksBackup, value = this.value, rules = this.rules;\n\n // media stored inside other atrule should not bubble over it\n // backpup media bubbling information\n mediaPathBackup = context.mediaPath;\n mediaBlocksBackup = context.mediaBlocks;\n // deleted media bubbling information\n context.mediaPath = [];\n context.mediaBlocks = [];\n\n if (value) {\n value = value.eval(context);\n }\n if (rules) {\n // assuming that there is only one rule at this point - that is how parser constructs the rule\n rules = [rules[0].eval(context)];\n rules[0].root = true;\n }\n // restore media bubbling information\n context.mediaPath = mediaPathBackup;\n context.mediaBlocks = mediaBlocksBackup;\n\n return new AtRule(this.name, value, rules,\n this.getIndex(), this.fileInfo(), this.debugInfo, this.isRooted, this.visibilityInfo());\n },\n\n variable(name) {\n if (this.rules) {\n // assuming that there is only one rule at this point - that is how parser constructs the rule\n return Ruleset.prototype.variable.call(this.rules[0], name);\n }\n },\n\n find() {\n if (this.rules) {\n // assuming that there is only one rule at this point - that is how parser constructs the rule\n return Ruleset.prototype.find.apply(this.rules[0], arguments);\n }\n },\n\n rulesets() {\n if (this.rules) {\n // assuming that there is only one rule at this point - that is how parser constructs the rule\n return Ruleset.prototype.rulesets.apply(this.rules[0]);\n }\n },\n\n outputRuleset(context, output, rules) {\n const ruleCnt = rules.length;\n let i;\n context.tabLevel = (context.tabLevel | 0) + 1;\n\n // Compressed\n if (context.compress) {\n output.add('{');\n for (i = 0; i < ruleCnt; i++) {\n rules[i].genCSS(context, output);\n }\n output.add('}');\n context.tabLevel--;\n return;\n }\n\n // Non-compressed\n const tabSetStr = `\\n${Array(context.tabLevel).join(' ')}`, tabRuleStr = `${tabSetStr} `;\n if (!ruleCnt) {\n output.add(` {${tabSetStr}}`);\n } else {\n output.add(` {${tabRuleStr}`);\n rules[0].genCSS(context, output);\n for (i = 1; i < ruleCnt; i++) {\n output.add(tabRuleStr);\n rules[i].genCSS(context, output);\n }\n output.add(`${tabSetStr}}`);\n }\n\n context.tabLevel--;\n }\n});\n\nexport default AtRule;\n","import Node from './node';\nimport contexts from '../contexts';\nimport * as utils from '../utils';\n\nconst DetachedRuleset = function(ruleset, frames) {\n this.ruleset = ruleset;\n this.frames = frames;\n this.setParent(this.ruleset, this);\n};\n\nDetachedRuleset.prototype = Object.assign(new Node(), {\n type: 'DetachedRuleset',\n evalFirst: true,\n\n accept(visitor) {\n this.ruleset = visitor.visit(this.ruleset);\n },\n\n eval(context) {\n const frames = this.frames || utils.copyArray(context.frames);\n return new DetachedRuleset(this.ruleset, frames);\n },\n\n callEval(context) {\n return this.ruleset.eval(this.frames ? new contexts.Eval(context, this.frames.concat(context.frames)) : context);\n }\n});\n\nexport default DetachedRuleset;\n","import Node from './node';\nimport unitConversions from '../data/unit-conversions';\nimport * as utils from '../utils';\n\nconst Unit = function(numerator, denominator, backupUnit) {\n this.numerator = numerator ? utils.copyArray(numerator).sort() : [];\n this.denominator = denominator ? utils.copyArray(denominator).sort() : [];\n if (backupUnit) {\n this.backupUnit = backupUnit;\n } else if (numerator && numerator.length) {\n this.backupUnit = numerator[0];\n }\n};\n\nUnit.prototype = Object.assign(new Node(), {\n type: 'Unit',\n\n clone() {\n return new Unit(utils.copyArray(this.numerator), utils.copyArray(this.denominator), this.backupUnit);\n },\n\n genCSS(context, output) {\n // Dimension checks the unit is singular and throws an error if in strict math mode.\n const strictUnits = context && context.strictUnits;\n if (this.numerator.length === 1) {\n output.add(this.numerator[0]); // the ideal situation\n } else if (!strictUnits && this.backupUnit) {\n output.add(this.backupUnit);\n } else if (!strictUnits && this.denominator.length) {\n output.add(this.denominator[0]);\n }\n },\n\n toString() {\n let i, returnStr = this.numerator.join('*');\n for (i = 0; i < this.denominator.length; i++) {\n returnStr += `/${this.denominator[i]}`;\n }\n return returnStr;\n },\n\n compare(other) {\n return this.is(other.toString()) ? 0 : undefined;\n },\n\n is(unitString) {\n return this.toString().toUpperCase() === unitString.toUpperCase();\n },\n\n isLength() {\n return RegExp('^(px|em|ex|ch|rem|in|cm|mm|pc|pt|ex|vw|vh|vmin|vmax)$', 'gi').test(this.toCSS());\n },\n\n isEmpty() {\n return this.numerator.length === 0 && this.denominator.length === 0;\n },\n\n isSingular() {\n return this.numerator.length <= 1 && this.denominator.length === 0;\n },\n\n map(callback) {\n let i;\n\n for (i = 0; i < this.numerator.length; i++) {\n this.numerator[i] = callback(this.numerator[i], false);\n }\n\n for (i = 0; i < this.denominator.length; i++) {\n this.denominator[i] = callback(this.denominator[i], true);\n }\n },\n\n usedUnits() {\n let group;\n const result = {};\n let mapUnit;\n let groupName;\n\n mapUnit = function (atomicUnit) {\n // eslint-disable-next-line no-prototype-builtins\n if (group.hasOwnProperty(atomicUnit) && !result[groupName]) {\n result[groupName] = atomicUnit;\n }\n\n return atomicUnit;\n };\n\n for (groupName in unitConversions) {\n // eslint-disable-next-line no-prototype-builtins\n if (unitConversions.hasOwnProperty(groupName)) {\n group = unitConversions[groupName];\n\n this.map(mapUnit);\n }\n }\n\n return result;\n },\n\n cancel() {\n const counter = {};\n let atomicUnit;\n let i;\n\n for (i = 0; i < this.numerator.length; i++) {\n atomicUnit = this.numerator[i];\n counter[atomicUnit] = (counter[atomicUnit] || 0) + 1;\n }\n\n for (i = 0; i < this.denominator.length; i++) {\n atomicUnit = this.denominator[i];\n counter[atomicUnit] = (counter[atomicUnit] || 0) - 1;\n }\n\n this.numerator = [];\n this.denominator = [];\n\n for (atomicUnit in counter) {\n // eslint-disable-next-line no-prototype-builtins\n if (counter.hasOwnProperty(atomicUnit)) {\n const count = counter[atomicUnit];\n\n if (count > 0) {\n for (i = 0; i < count; i++) {\n this.numerator.push(atomicUnit);\n }\n } else if (count < 0) {\n for (i = 0; i < -count; i++) {\n this.denominator.push(atomicUnit);\n }\n }\n }\n }\n\n this.numerator.sort();\n this.denominator.sort();\n }\n});\n\nexport default Unit;\n","/* eslint-disable no-prototype-builtins */\nimport Node from './node';\nimport unitConversions from '../data/unit-conversions';\nimport Unit from './unit';\nimport Color from './color';\n\n//\n// A number with a unit\n//\nconst Dimension = function(value, unit) {\n this.value = parseFloat(value);\n if (isNaN(this.value)) {\n throw new Error('Dimension is not a number.');\n }\n this.unit = (unit && unit instanceof Unit) ? unit :\n new Unit(unit ? [unit] : undefined);\n this.setParent(this.unit, this);\n};\n\nDimension.prototype = Object.assign(new Node(), {\n type: 'Dimension',\n\n accept(visitor) {\n this.unit = visitor.visit(this.unit);\n },\n\n // remove when Nodes have JSDoc types\n // eslint-disable-next-line no-unused-vars\n eval(context) {\n return this;\n },\n\n toColor() {\n return new Color([this.value, this.value, this.value]);\n },\n\n genCSS(context, output) {\n if ((context && context.strictUnits) && !this.unit.isSingular()) {\n throw new Error(`Multiple units in dimension. Correct the units or use the unit function. Bad unit: ${this.unit.toString()}`);\n }\n\n const value = this.fround(context, this.value);\n let strValue = String(value);\n\n if (value !== 0 && value < 0.000001 && value > -0.000001) {\n // would be output 1e-6 etc.\n strValue = value.toFixed(20).replace(/0+$/, '');\n }\n\n if (context && context.compress) {\n // Zero values doesn't need a unit\n if (value === 0 && this.unit.isLength()) {\n output.add(strValue);\n return;\n }\n\n // Float values doesn't need a leading zero\n if (value > 0 && value < 1) {\n strValue = (strValue).substr(1);\n }\n }\n\n output.add(strValue);\n this.unit.genCSS(context, output);\n },\n\n // In an operation between two Dimensions,\n // we default to the first Dimension's unit,\n // so `1px + 2` will yield `3px`.\n operate(context, op, other) {\n /* jshint noempty:false */\n let value = this._operate(context, op, this.value, other.value);\n let unit = this.unit.clone();\n\n if (op === '+' || op === '-') {\n if (unit.numerator.length === 0 && unit.denominator.length === 0) {\n unit = other.unit.clone();\n if (this.unit.backupUnit) {\n unit.backupUnit = this.unit.backupUnit;\n }\n } else if (other.unit.numerator.length === 0 && unit.denominator.length === 0) {\n // do nothing\n } else {\n other = other.convertTo(this.unit.usedUnits());\n\n if (context.strictUnits && other.unit.toString() !== unit.toString()) {\n throw new Error('Incompatible units. Change the units or use the unit function. '\n + `Bad units: '${unit.toString()}' and '${other.unit.toString()}'.`);\n }\n\n value = this._operate(context, op, this.value, other.value);\n }\n } else if (op === '*') {\n unit.numerator = unit.numerator.concat(other.unit.numerator).sort();\n unit.denominator = unit.denominator.concat(other.unit.denominator).sort();\n unit.cancel();\n } else if (op === '/') {\n unit.numerator = unit.numerator.concat(other.unit.denominator).sort();\n unit.denominator = unit.denominator.concat(other.unit.numerator).sort();\n unit.cancel();\n }\n return new Dimension(value, unit);\n },\n\n compare(other) {\n let a, b;\n\n if (!(other instanceof Dimension)) {\n return undefined;\n }\n\n if (this.unit.isEmpty() || other.unit.isEmpty()) {\n a = this;\n b = other;\n } else {\n a = this.unify();\n b = other.unify();\n if (a.unit.compare(b.unit) !== 0) {\n return undefined;\n }\n }\n\n return Node.numericCompare(a.value, b.value);\n },\n\n unify() {\n return this.convertTo({ length: 'px', duration: 's', angle: 'rad' });\n },\n\n convertTo(conversions) {\n let value = this.value;\n const unit = this.unit.clone();\n let i;\n let groupName;\n let group;\n let targetUnit;\n let derivedConversions = {};\n let applyUnit;\n\n if (typeof conversions === 'string') {\n for (i in unitConversions) {\n if (unitConversions[i].hasOwnProperty(conversions)) {\n derivedConversions = {};\n derivedConversions[i] = conversions;\n }\n }\n conversions = derivedConversions;\n }\n applyUnit = function (atomicUnit, denominator) {\n if (group.hasOwnProperty(atomicUnit)) {\n if (denominator) {\n value = value / (group[atomicUnit] / group[targetUnit]);\n } else {\n value = value * (group[atomicUnit] / group[targetUnit]);\n }\n\n return targetUnit;\n }\n\n return atomicUnit;\n };\n\n for (groupName in conversions) {\n if (conversions.hasOwnProperty(groupName)) {\n targetUnit = conversions[groupName];\n group = unitConversions[groupName];\n\n unit.map(applyUnit);\n }\n }\n\n unit.cancel();\n\n return new Dimension(value, unit);\n }\n});\n\nexport default Dimension;\n","import Node from './node';\nimport Color from './color';\nimport Dimension from './dimension';\nimport * as Constants from '../constants';\nconst MATH = Constants.Math;\n\n\nconst Operation = function(op, operands, isSpaced) {\n this.op = op.trim();\n this.operands = operands;\n this.isSpaced = isSpaced;\n};\n\nOperation.prototype = Object.assign(new Node(), {\n type: 'Operation',\n\n accept(visitor) {\n this.operands = visitor.visitArray(this.operands);\n },\n\n eval(context) {\n let a = this.operands[0].eval(context), b = this.operands[1].eval(context), op;\n\n if (context.isMathOn(this.op)) {\n op = this.op === './' ? '/' : this.op;\n if (a instanceof Dimension && b instanceof Color) {\n a = a.toColor();\n }\n if (b instanceof Dimension && a instanceof Color) {\n b = b.toColor();\n }\n if (!a.operate || !b.operate) {\n if (\n (a instanceof Operation || b instanceof Operation)\n && a.op === '/' && context.math === MATH.PARENS_DIVISION\n ) {\n return new Operation(this.op, [a, b], this.isSpaced);\n }\n throw { type: 'Operation',\n message: 'Operation on an invalid type' };\n }\n\n return a.operate(context, op, b);\n } else {\n return new Operation(this.op, [a, b], this.isSpaced);\n }\n },\n\n genCSS(context, output) {\n this.operands[0].genCSS(context, output);\n if (this.isSpaced) {\n output.add(' ');\n }\n output.add(this.op);\n if (this.isSpaced) {\n output.add(' ');\n }\n this.operands[1].genCSS(context, output);\n }\n});\n\nexport default Operation;\n","import Node from './node';\nimport Paren from './paren';\nimport Comment from './comment';\nimport Dimension from './dimension';\nimport Anonymous from './anonymous';\n\nconst Expression = function(value, noSpacing) {\n this.value = value;\n this.noSpacing = noSpacing;\n if (!value) {\n throw new Error('Expression requires an array parameter');\n }\n};\n\nExpression.prototype = Object.assign(new Node(), {\n type: 'Expression',\n\n accept(visitor) {\n this.value = visitor.visitArray(this.value);\n },\n\n eval(context) {\n let returnValue;\n const mathOn = context.isMathOn();\n const inParenthesis = this.parens;\n\n let doubleParen = false;\n if (inParenthesis) {\n context.inParenthesis();\n }\n if (this.value.length > 1) {\n returnValue = new Expression(this.value.map(function (e) {\n if (!e.eval) {\n return e;\n }\n return e.eval(context);\n }), this.noSpacing);\n } else if (this.value.length === 1) {\n if (this.value[0].parens && !this.value[0].parensInOp && !context.inCalc) {\n doubleParen = true;\n }\n returnValue = this.value[0].eval(context);\n } else {\n returnValue = this;\n }\n if (inParenthesis) {\n context.outOfParenthesis();\n }\n if (this.parens && this.parensInOp && !mathOn && !doubleParen\n && (!(returnValue instanceof Dimension))) {\n returnValue = new Paren(returnValue);\n }\n return returnValue;\n },\n\n genCSS(context, output) {\n for (let i = 0; i < this.value.length; i++) {\n this.value[i].genCSS(context, output);\n if (!this.noSpacing && i + 1 < this.value.length) {\n if (i + 1 < this.value.length && !(this.value[i + 1] instanceof Anonymous) ||\n this.value[i + 1] instanceof Anonymous && this.value[i + 1].value !== ',') {\n output.add(' ');\n }\n }\n }\n },\n\n throwAwayComments() {\n this.value = this.value.filter(function(v) {\n return !(v instanceof Comment);\n });\n }\n});\n\nexport default Expression;\n","import Expression from '../tree/expression';\n\nclass functionCaller {\n constructor(name, context, index, currentFileInfo) {\n this.name = name.toLowerCase();\n this.index = index;\n this.context = context;\n this.currentFileInfo = currentFileInfo;\n\n this.func = context.frames[0].functionRegistry.get(this.name);\n }\n\n isValid() {\n return Boolean(this.func);\n }\n\n call(args) {\n if (!(Array.isArray(args))) {\n args = [args];\n }\n const evalArgs = this.func.evalArgs;\n if (evalArgs !== false) {\n args = args.map(a => a.eval(this.context));\n }\n const commentFilter = item => !(item.type === 'Comment');\n\n // This code is terrible and should be replaced as per this issue...\n // https://github.com/less/less.js/issues/2477\n args = args\n .filter(commentFilter)\n .map(item => {\n if (item.type === 'Expression') {\n const subNodes = item.value.filter(commentFilter);\n if (subNodes.length === 1) {\n // https://github.com/less/less.js/issues/3616\n if (item.parens && subNodes[0].op === '/') {\n return item;\n }\n return subNodes[0];\n } else {\n return new Expression(subNodes);\n }\n }\n return item;\n });\n\n if (evalArgs === false) {\n return this.func(this.context, ...args);\n }\n\n return this.func(...args);\n }\n}\n\nexport default functionCaller;\n","import Node from './node';\nimport Anonymous from './anonymous';\nimport FunctionCaller from '../functions/function-caller';\n\n//\n// A function call node.\n//\nconst Call = function(name, args, index, currentFileInfo) {\n this.name = name;\n this.args = args;\n this.calc = name === 'calc';\n this._index = index;\n this._fileInfo = currentFileInfo;\n}\n\nCall.prototype = Object.assign(new Node(), {\n type: 'Call',\n\n accept(visitor) {\n if (this.args) {\n this.args = visitor.visitArray(this.args);\n }\n },\n\n //\n // When evaluating a function call,\n // we either find the function in the functionRegistry,\n // in which case we call it, passing the evaluated arguments,\n // if this returns null or we cannot find the function, we\n // simply print it out as it appeared originally [2].\n //\n // The reason why we evaluate the arguments, is in the case where\n // we try to pass a variable to a function, like: `saturate(@color)`.\n // The function should receive the value, not the variable.\n //\n eval(context) {\n /**\n * Turn off math for calc(), and switch back on for evaluating nested functions\n */\n const currentMathContext = context.mathOn;\n context.mathOn = !this.calc;\n if (this.calc || context.inCalc) {\n context.enterCalc();\n }\n\n const exitCalc = () => {\n if (this.calc || context.inCalc) {\n context.exitCalc();\n }\n context.mathOn = currentMathContext;\n };\n\n let result;\n const funcCaller = new FunctionCaller(this.name, context, this.getIndex(), this.fileInfo());\n\n if (funcCaller.isValid()) {\n try {\n result = funcCaller.call(this.args);\n exitCalc();\n } catch (e) {\n // eslint-disable-next-line no-prototype-builtins\n if (e.hasOwnProperty('line') && e.hasOwnProperty('column')) {\n throw e;\n }\n throw { \n type: e.type || 'Runtime',\n message: `Error evaluating function \\`${this.name}\\`${e.message ? `: ${e.message}` : ''}`,\n index: this.getIndex(), \n filename: this.fileInfo().filename,\n line: e.lineNumber,\n column: e.columnNumber\n };\n }\n }\n\n if (result !== null && result !== undefined) {\n // Results that that are not nodes are cast as Anonymous nodes\n // Falsy values or booleans are returned as empty nodes\n if (!(result instanceof Node)) {\n if (!result || result === true) {\n result = new Anonymous(null); \n }\n else {\n result = new Anonymous(result.toString()); \n }\n \n }\n result._index = this._index;\n result._fileInfo = this._fileInfo;\n return result;\n }\n\n const args = this.args.map(a => a.eval(context));\n exitCalc();\n\n return new Call(this.name, args, this.getIndex(), this.fileInfo());\n },\n\n genCSS(context, output) {\n output.add(`${this.name}(`, this.fileInfo(), this.getIndex());\n\n for (let i = 0; i < this.args.length; i++) {\n this.args[i].genCSS(context, output);\n if (i + 1 < this.args.length) {\n output.add(', ');\n }\n }\n\n output.add(')');\n }\n});\n\nexport default Call;\n","import Node from './node';\nimport Call from './call';\n\nconst Variable = function(name, index, currentFileInfo) {\n this.name = name;\n this._index = index;\n this._fileInfo = currentFileInfo;\n};\n\nVariable.prototype = Object.assign(new Node(), {\n type: 'Variable',\n\n eval(context) {\n let variable, name = this.name;\n\n if (name.indexOf('@@') === 0) {\n name = `@${new Variable(name.slice(1), this.getIndex(), this.fileInfo()).eval(context).value}`;\n }\n\n if (this.evaluating) {\n throw { type: 'Name',\n message: `Recursive variable definition for ${name}`,\n filename: this.fileInfo().filename,\n index: this.getIndex() };\n }\n\n this.evaluating = true;\n\n variable = this.find(context.frames, function (frame) {\n const v = frame.variable(name);\n if (v) {\n if (v.important) {\n const importantScope = context.importantScope[context.importantScope.length - 1];\n importantScope.important = v.important;\n }\n // If in calc, wrap vars in a function call to cascade evaluate args first\n if (context.inCalc) {\n return (new Call('_SELF', [v.value])).eval(context);\n }\n else {\n return v.value.eval(context);\n }\n }\n });\n if (variable) {\n this.evaluating = false;\n return variable;\n } else {\n throw { type: 'Name',\n message: `variable ${name} is undefined`,\n filename: this.fileInfo().filename,\n index: this.getIndex() };\n }\n },\n\n find(obj, fun) {\n for (let i = 0, r; i < obj.length; i++) {\n r = fun.call(obj, obj[i]);\n if (r) { return r; }\n }\n return null;\n }\n});\n\nexport default Variable;\n","import Node from './node';\nimport Declaration from './declaration';\n\nconst Property = function(name, index, currentFileInfo) {\n this.name = name;\n this._index = index;\n this._fileInfo = currentFileInfo;\n};\n\nProperty.prototype = Object.assign(new Node(), {\n type: 'Property',\n\n eval(context) {\n let property;\n const name = this.name;\n // TODO: shorten this reference\n const mergeRules = context.pluginManager.less.visitors.ToCSSVisitor.prototype._mergeRules;\n\n if (this.evaluating) {\n throw { type: 'Name',\n message: `Recursive property reference for ${name}`,\n filename: this.fileInfo().filename,\n index: this.getIndex() };\n }\n\n this.evaluating = true;\n\n property = this.find(context.frames, function (frame) {\n let v;\n const vArr = frame.property(name);\n if (vArr) {\n for (let i = 0; i < vArr.length; i++) {\n v = vArr[i];\n\n vArr[i] = new Declaration(v.name,\n v.value,\n v.important,\n v.merge,\n v.index,\n v.currentFileInfo,\n v.inline,\n v.variable\n );\n }\n mergeRules(vArr);\n\n v = vArr[vArr.length - 1];\n if (v.important) {\n const importantScope = context.importantScope[context.importantScope.length - 1];\n importantScope.important = v.important;\n }\n v = v.value.eval(context);\n return v;\n }\n });\n if (property) {\n this.evaluating = false;\n return property;\n } else {\n throw { type: 'Name',\n message: `Property '${name}' is undefined`,\n filename: this.currentFileInfo.filename,\n index: this.index };\n }\n },\n\n find(obj, fun) {\n for (let i = 0, r; i < obj.length; i++) {\n r = fun.call(obj, obj[i]);\n if (r) { return r; }\n }\n return null;\n }\n});\n\nexport default Property;\n","import Node from './node';\n\nconst Attribute = function(key, op, value, cif) {\n this.key = key;\n this.op = op;\n this.value = value;\n this.cif = cif;\n}\n\nAttribute.prototype = Object.assign(new Node(), {\n type: 'Attribute',\n\n eval(context) {\n return new Attribute(\n this.key.eval ? this.key.eval(context) : this.key,\n this.op,\n (this.value && this.value.eval) ? this.value.eval(context) : this.value,\n this.cif\n );\n },\n\n genCSS(context, output) {\n output.add(this.toCSS(context));\n },\n\n toCSS(context) {\n let value = this.key.toCSS ? this.key.toCSS(context) : this.key;\n\n if (this.op) {\n value += this.op;\n value += (this.value.toCSS ? this.value.toCSS(context) : this.value);\n }\n\n if (this.cif) {\n value = value + ' ' + this.cif;\n }\n\n return `[${value}]`;\n }\n});\n\nexport default Attribute;\n","import Node from './node';\nimport Variable from './variable';\nimport Property from './property';\n\nconst Quoted = function(str, content, escaped, index, currentFileInfo) {\n this.escaped = (escaped === undefined) ? true : escaped;\n this.value = content || '';\n this.quote = str.charAt(0);\n this._index = index;\n this._fileInfo = currentFileInfo;\n this.variableRegex = /@\\{([\\w-]+)\\}/g;\n this.propRegex = /\\$\\{([\\w-]+)\\}/g;\n this.allowRoot = escaped;\n};\n\nQuoted.prototype = Object.assign(new Node(), {\n type: 'Quoted',\n\n genCSS(context, output) {\n if (!this.escaped) {\n output.add(this.quote, this.fileInfo(), this.getIndex());\n }\n output.add(this.value);\n if (!this.escaped) {\n output.add(this.quote);\n }\n },\n\n containsVariables() {\n return this.value.match(this.variableRegex);\n },\n\n eval(context) {\n const that = this;\n let value = this.value;\n const variableReplacement = function (_, name) {\n const v = new Variable(`@${name}`, that.getIndex(), that.fileInfo()).eval(context, true);\n return (v instanceof Quoted) ? v.value : v.toCSS();\n };\n const propertyReplacement = function (_, name) {\n const v = new Property(`$${name}`, that.getIndex(), that.fileInfo()).eval(context, true);\n return (v instanceof Quoted) ? v.value : v.toCSS();\n };\n function iterativeReplace(value, regexp, replacementFnc) {\n let evaluatedValue = value;\n do {\n value = evaluatedValue.toString();\n evaluatedValue = value.replace(regexp, replacementFnc);\n } while (value !== evaluatedValue);\n return evaluatedValue;\n }\n value = iterativeReplace(value, this.variableRegex, variableReplacement);\n value = iterativeReplace(value, this.propRegex, propertyReplacement);\n return new Quoted(this.quote + value + this.quote, value, this.escaped, this.getIndex(), this.fileInfo());\n },\n\n compare(other) {\n // when comparing quoted strings allow the quote to differ\n if (other.type === 'Quoted' && !this.escaped && !other.escaped) {\n return Node.numericCompare(this.value, other.value);\n } else {\n return other.toCSS && this.toCSS() === other.toCSS() ? 0 : undefined;\n }\n }\n});\n\nexport default Quoted;\n","import Node from './node';\n\nfunction escapePath(path) {\n return path.replace(/[()'\"\\s]/g, function(match) { return `\\\\${match}`; });\n}\n\nconst URL = function(val, index, currentFileInfo, isEvald) {\n this.value = val;\n this._index = index;\n this._fileInfo = currentFileInfo;\n this.isEvald = isEvald;\n};\n\nURL.prototype = Object.assign(new Node(), {\n type: 'Url',\n\n accept(visitor) {\n this.value = visitor.visit(this.value);\n },\n\n genCSS(context, output) {\n output.add('url(');\n this.value.genCSS(context, output);\n output.add(')');\n },\n\n eval(context) {\n const val = this.value.eval(context);\n let rootpath;\n\n if (!this.isEvald) {\n // Add the rootpath if the URL requires a rewrite\n rootpath = this.fileInfo() && this.fileInfo().rootpath;\n if (typeof rootpath === 'string' &&\n typeof val.value === 'string' &&\n context.pathRequiresRewrite(val.value)) {\n if (!val.quote) {\n rootpath = escapePath(rootpath);\n }\n val.value = context.rewritePath(val.value, rootpath);\n } else {\n val.value = context.normalizePath(val.value);\n }\n\n // Add url args if enabled\n if (context.urlArgs) {\n if (!val.value.match(/^\\s*data:/)) {\n const delimiter = val.value.indexOf('?') === -1 ? '?' : '&';\n const urlArgs = delimiter + context.urlArgs;\n if (val.value.indexOf('#') !== -1) {\n val.value = val.value.replace('#', `${urlArgs}#`);\n } else {\n val.value += urlArgs;\n }\n }\n }\n }\n\n return new URL(val, this.getIndex(), this.fileInfo(), true);\n }\n});\n\nexport default URL;\n","import Ruleset from './ruleset';\nimport Value from './value';\nimport Selector from './selector';\nimport Anonymous from './anonymous';\nimport Expression from './expression';\nimport * as utils from '../utils';\n\nconst NestableAtRulePrototype = {\n\n isRulesetLike() {\n return true;\n },\n\n accept(visitor) {\n if (this.features) {\n this.features = visitor.visit(this.features);\n }\n if (this.rules) {\n this.rules = visitor.visitArray(this.rules);\n }\n },\n\n evalTop(context) {\n let result = this;\n\n // Render all dependent Media blocks.\n if (context.mediaBlocks.length > 1) {\n const selectors = (new Selector([], null, null, this.getIndex(), this.fileInfo())).createEmptySelectors();\n result = new Ruleset(selectors, context.mediaBlocks);\n result.multiMedia = true;\n result.copyVisibilityInfo(this.visibilityInfo());\n this.setParent(result, this);\n }\n\n delete context.mediaBlocks;\n delete context.mediaPath;\n\n return result;\n },\n\n evalNested(context) {\n let i;\n let value;\n const path = context.mediaPath.concat([this]);\n\n // Extract the media-query conditions separated with `,` (OR).\n for (i = 0; i < path.length; i++) {\n if (path[i].type !== this.type) { \n context.mediaBlocks.splice(i, 1); \n \n return this; \n }\n \n value = path[i].features instanceof Value ?\n path[i].features.value : path[i].features;\n path[i] = Array.isArray(value) ? value : [value];\n }\n\n // Trace all permutations to generate the resulting media-query.\n //\n // (a, b and c) with nested (d, e) ->\n // a and d\n // a and e\n // b and c and d\n // b and c and e\n this.features = new Value(this.permute(path).map(path => {\n path = path.map(fragment => fragment.toCSS ? fragment : new Anonymous(fragment));\n\n for (i = path.length - 1; i > 0; i--) {\n path.splice(i, 0, new Anonymous('and'));\n }\n\n return new Expression(path);\n }));\n this.setParent(this.features, this);\n\n // Fake a tree-node that doesn't output anything.\n return new Ruleset([], []);\n },\n\n permute(arr) {\n if (arr.length === 0) {\n return [];\n } else if (arr.length === 1) {\n return arr[0];\n } else {\n const result = [];\n const rest = this.permute(arr.slice(1));\n for (let i = 0; i < rest.length; i++) {\n for (let j = 0; j < arr[0].length; j++) {\n result.push([arr[0][j]].concat(rest[i]));\n }\n }\n return result;\n }\n },\n\n bubbleSelectors(selectors) {\n if (!selectors) {\n return;\n }\n this.rules = [new Ruleset(utils.copyArray(selectors), [this.rules[0]])];\n this.setParent(this.rules, this);\n }\n};\n\nexport default NestableAtRulePrototype;\n","import Ruleset from './ruleset';\nimport Value from './value';\nimport Selector from './selector';\nimport AtRule from './atrule';\nimport NestableAtRulePrototype from './nested-at-rule';\n\nconst Media = function(value, features, index, currentFileInfo, visibilityInfo) {\n this._index = index;\n this._fileInfo = currentFileInfo;\n\n const selectors = (new Selector([], null, null, this._index, this._fileInfo)).createEmptySelectors();\n\n this.features = new Value(features);\n this.rules = [new Ruleset(selectors, value)];\n this.rules[0].allowImports = true;\n this.copyVisibilityInfo(visibilityInfo);\n this.allowRoot = true;\n this.setParent(selectors, this);\n this.setParent(this.features, this);\n this.setParent(this.rules, this);\n};\n\nMedia.prototype = Object.assign(new AtRule(), {\n type: 'Media',\n\n ...NestableAtRulePrototype,\n\n genCSS(context, output) {\n output.add('@media ', this._fileInfo, this._index);\n this.features.genCSS(context, output);\n this.outputRuleset(context, output, this.rules);\n },\n\n eval(context) {\n if (!context.mediaBlocks) {\n context.mediaBlocks = [];\n context.mediaPath = [];\n }\n\n const media = new Media(null, [], this._index, this._fileInfo, this.visibilityInfo());\n if (this.debugInfo) {\n this.rules[0].debugInfo = this.debugInfo;\n media.debugInfo = this.debugInfo;\n }\n \n media.features = this.features.eval(context);\n\n context.mediaPath.push(media);\n context.mediaBlocks.push(media);\n\n this.rules[0].functionRegistry = context.frames[0].functionRegistry.inherit();\n context.frames.unshift(this.rules[0]);\n media.rules = [this.rules[0].eval(context)];\n context.frames.shift();\n\n context.mediaPath.pop();\n\n return context.mediaPath.length === 0 ? media.evalTop(context) :\n media.evalNested(context);\n }\n});\n\nexport default Media;\n","import Node from './node';\nimport Media from './media';\nimport URL from './url';\nimport Quoted from './quoted';\nimport Ruleset from './ruleset';\nimport Anonymous from './anonymous';\nimport * as utils from '../utils';\nimport LessError from '../less-error';\n\n//\n// CSS @import node\n//\n// The general strategy here is that we don't want to wait\n// for the parsing to be completed, before we start importing\n// the file. That's because in the context of a browser,\n// most of the time will be spent waiting for the server to respond.\n//\n// On creation, we push the import path to our import queue, though\n// `import,push`, we also pass it a callback, which it'll call once\n// the file has been fetched, and parsed.\n//\nconst Import = function(path, features, options, index, currentFileInfo, visibilityInfo) {\n this.options = options;\n this._index = index;\n this._fileInfo = currentFileInfo;\n this.path = path;\n this.features = features;\n this.allowRoot = true;\n\n if (this.options.less !== undefined || this.options.inline) {\n this.css = !this.options.less || this.options.inline;\n } else {\n const pathValue = this.getPath();\n if (pathValue && /[#.&?]css([?;].*)?$/.test(pathValue)) {\n this.css = true;\n }\n }\n this.copyVisibilityInfo(visibilityInfo);\n this.setParent(this.features, this);\n this.setParent(this.path, this);\n};\n\nImport.prototype = Object.assign(new Node(), {\n type: 'Import',\n\n accept(visitor) {\n if (this.features) {\n this.features = visitor.visit(this.features);\n }\n this.path = visitor.visit(this.path);\n if (!this.options.isPlugin && !this.options.inline && this.root) {\n this.root = visitor.visit(this.root);\n }\n },\n\n genCSS(context, output) {\n if (this.css && this.path._fileInfo.reference === undefined) {\n output.add('@import ', this._fileInfo, this._index);\n this.path.genCSS(context, output);\n if (this.features) {\n output.add(' ');\n this.features.genCSS(context, output);\n }\n output.add(';');\n }\n },\n\n getPath() {\n return (this.path instanceof URL) ?\n this.path.value.value : this.path.value;\n },\n\n isVariableImport() {\n let path = this.path;\n if (path instanceof URL) {\n path = path.value;\n }\n if (path instanceof Quoted) {\n return path.containsVariables();\n }\n\n return true;\n },\n\n evalForImport(context) {\n let path = this.path;\n\n if (path instanceof URL) {\n path = path.value;\n }\n\n return new Import(path.eval(context), this.features, this.options, this._index, this._fileInfo, this.visibilityInfo());\n },\n\n evalPath(context) {\n const path = this.path.eval(context);\n const fileInfo = this._fileInfo;\n\n if (!(path instanceof URL)) {\n // Add the rootpath if the URL requires a rewrite\n const pathValue = path.value;\n if (fileInfo &&\n pathValue &&\n context.pathRequiresRewrite(pathValue)) {\n path.value = context.rewritePath(pathValue, fileInfo.rootpath);\n } else {\n path.value = context.normalizePath(path.value);\n }\n }\n\n return path;\n },\n\n eval(context) {\n const result = this.doEval(context);\n if (this.options.reference || this.blocksVisibility()) {\n if (result.length || result.length === 0) {\n result.forEach(function (node) {\n node.addVisibilityBlock();\n }\n );\n } else {\n result.addVisibilityBlock();\n }\n }\n return result;\n },\n\n doEval(context) {\n let ruleset;\n let registry;\n const features = this.features && this.features.eval(context);\n\n if (this.options.isPlugin) {\n if (this.root && this.root.eval) {\n try {\n this.root.eval(context);\n }\n catch (e) {\n e.message = 'Plugin error during evaluation';\n throw new LessError(e, this.root.imports, this.root.filename);\n }\n }\n registry = context.frames[0] && context.frames[0].functionRegistry;\n if ( registry && this.root && this.root.functions ) {\n registry.addMultiple( this.root.functions );\n }\n\n return [];\n }\n\n if (this.skip) {\n if (typeof this.skip === 'function') {\n this.skip = this.skip();\n }\n if (this.skip) {\n return [];\n }\n }\n if (this.options.inline) {\n const contents = new Anonymous(this.root, 0,\n {\n filename: this.importedFilename,\n reference: this.path._fileInfo && this.path._fileInfo.reference\n }, true, true);\n\n return this.features ? new Media([contents], this.features.value) : [contents];\n } else if (this.css) {\n const newImport = new Import(this.evalPath(context), features, this.options, this._index);\n if (!newImport.css && this.error) {\n throw this.error;\n }\n return newImport;\n } else if (this.root) {\n ruleset = new Ruleset(null, utils.copyArray(this.root.rules));\n ruleset.evalImports(context);\n\n return this.features ? new Media(ruleset.rules, this.features.value) : ruleset.rules;\n } else {\n return [];\n }\n }\n});\n\nexport default Import;\n","import Node from './node';\nimport Variable from './variable';\n\nconst JsEvalNode = function() {};\n\nJsEvalNode.prototype = Object.assign(new Node(), {\n evaluateJavaScript(expression, context) {\n let result;\n const that = this;\n const evalContext = {};\n\n if (!context.javascriptEnabled) {\n throw { message: 'Inline JavaScript is not enabled. Is it set in your options?',\n filename: this.fileInfo().filename,\n index: this.getIndex() };\n }\n\n expression = expression.replace(/@\\{([\\w-]+)\\}/g, function (_, name) {\n return that.jsify(new Variable(`@${name}`, that.getIndex(), that.fileInfo()).eval(context));\n });\n\n try {\n expression = new Function(`return (${expression})`);\n } catch (e) {\n throw { message: `JavaScript evaluation error: ${e.message} from \\`${expression}\\`` ,\n filename: this.fileInfo().filename,\n index: this.getIndex() };\n }\n\n const variables = context.frames[0].variables();\n for (const k in variables) {\n // eslint-disable-next-line no-prototype-builtins\n if (variables.hasOwnProperty(k)) {\n evalContext[k.slice(1)] = {\n value: variables[k].value,\n toJS: function () {\n return this.value.eval(context).toCSS();\n }\n };\n }\n }\n\n try {\n result = expression.call(evalContext);\n } catch (e) {\n throw { message: `JavaScript evaluation error: '${e.name}: ${e.message.replace(/[\"]/g, '\\'')}'` ,\n filename: this.fileInfo().filename,\n index: this.getIndex() };\n }\n return result;\n },\n\n jsify(obj) {\n if (Array.isArray(obj.value) && (obj.value.length > 1)) {\n return `[${obj.value.map(function (v) { return v.toCSS(); }).join(', ')}]`;\n } else {\n return obj.toCSS();\n }\n }\n});\n\nexport default JsEvalNode;\n","import JsEvalNode from './js-eval-node';\nimport Dimension from './dimension';\nimport Quoted from './quoted';\nimport Anonymous from './anonymous';\n\nconst JavaScript = function(string, escaped, index, currentFileInfo) {\n this.escaped = escaped;\n this.expression = string;\n this._index = index;\n this._fileInfo = currentFileInfo;\n}\n\nJavaScript.prototype = Object.assign(new JsEvalNode(), {\n type: 'JavaScript',\n\n eval(context) {\n const result = this.evaluateJavaScript(this.expression, context);\n const type = typeof result;\n\n if (type === 'number' && !isNaN(result)) {\n return new Dimension(result);\n } else if (type === 'string') {\n return new Quoted(`\"${result}\"`, result, this.escaped, this._index);\n } else if (Array.isArray(result)) {\n return new Anonymous(result.join(', '));\n } else {\n return new Anonymous(result);\n }\n }\n});\n\nexport default JavaScript;\n","import Node from './node';\n\nconst Assignment = function(key, val) {\n this.key = key;\n this.value = val;\n}\n\nAssignment.prototype = Object.assign(new Node(), {\n type: 'Assignment',\n\n accept(visitor) {\n this.value = visitor.visit(this.value);\n },\n\n eval(context) {\n if (this.value.eval) {\n return new Assignment(this.key, this.value.eval(context));\n }\n return this;\n },\n\n genCSS(context, output) {\n output.add(`${this.key}=`);\n if (this.value.genCSS) {\n this.value.genCSS(context, output);\n } else {\n output.add(this.value);\n }\n }\n});\n\nexport default Assignment;\n","import Node from './node';\n\nconst Condition = function(op, l, r, i, negate) {\n this.op = op.trim();\n this.lvalue = l;\n this.rvalue = r;\n this._index = i;\n this.negate = negate;\n};\n\nCondition.prototype = Object.assign(new Node(), {\n type: 'Condition',\n\n accept(visitor) {\n this.lvalue = visitor.visit(this.lvalue);\n this.rvalue = visitor.visit(this.rvalue);\n },\n\n eval(context) {\n const result = (function (op, a, b) {\n switch (op) {\n case 'and': return a && b;\n case 'or': return a || b;\n default:\n switch (Node.compare(a, b)) {\n case -1:\n return op === '<' || op === '=<' || op === '<=';\n case 0:\n return op === '=' || op === '>=' || op === '=<' || op === '<=';\n case 1:\n return op === '>' || op === '>=';\n default:\n return false;\n }\n }\n })(this.op, this.lvalue.eval(context), this.rvalue.eval(context));\n\n return this.negate ? !result : result;\n }\n});\n\nexport default Condition;\n","import { copy } from 'copy-anything';\nimport Declaration from './declaration';\nimport Node from './node';\n\nconst QueryInParens = function (op, l, m, op2, r, i) {\n this.op = op.trim();\n this.lvalue = l;\n this.mvalue = m;\n this.op2 = op2 ? op2.trim() : null;\n this.rvalue = r;\n this._index = i;\n this.mvalues = [];\n};\n\nQueryInParens.prototype = Object.assign(new Node(), {\n type: 'QueryInParens',\n\n accept(visitor) {\n this.lvalue = visitor.visit(this.lvalue);\n this.mvalue = visitor.visit(this.mvalue);\n if (this.rvalue) {\n this.rvalue = visitor.visit(this.rvalue);\n }\n },\n\n eval(context) {\n this.lvalue = this.lvalue.eval(context);\n \n let variableDeclaration;\n let rule;\n\n for (let i = 0; (rule = context.frames[i]); i++) {\n if (rule.type === 'Ruleset') {\n variableDeclaration = rule.rules.find(function (r) {\n if ((r instanceof Declaration) && r.variable) {\n return true;\n }\n\n return false;\n });\n \n if (variableDeclaration) {\n break;\n }\n }\n }\n\n if (!this.mvalueCopy) {\n this.mvalueCopy = copy(this.mvalue);\n }\n \n if (variableDeclaration) {\n this.mvalue = this.mvalueCopy;\n this.mvalue = this.mvalue.eval(context);\n this.mvalues.push(this.mvalue);\n } else {\n this.mvalue = this.mvalue.eval(context);\n }\n\n if (this.rvalue) {\n this.rvalue = this.rvalue.eval(context);\n }\n return this;\n },\n\n genCSS(context, output) {\n this.lvalue.genCSS(context, output);\n output.add(' ' + this.op + ' ');\n if (this.mvalues.length > 0) {\n this.mvalue = this.mvalues.shift();\n }\n this.mvalue.genCSS(context, output);\n if (this.rvalue) {\n output.add(' ' + this.op2 + ' ');\n this.rvalue.genCSS(context, output);\n }\n },\n});\n\nexport default QueryInParens;\n","import Ruleset from './ruleset';\nimport Value from './value';\nimport Selector from './selector';\nimport AtRule from './atrule';\nimport NestableAtRulePrototype from './nested-at-rule';\n\nconst Container = function(value, features, index, currentFileInfo, visibilityInfo) {\n this._index = index;\n this._fileInfo = currentFileInfo;\n\n const selectors = (new Selector([], null, null, this._index, this._fileInfo)).createEmptySelectors();\n\n this.features = new Value(features);\n this.rules = [new Ruleset(selectors, value)];\n this.rules[0].allowImports = true;\n this.copyVisibilityInfo(visibilityInfo);\n this.allowRoot = true;\n this.setParent(selectors, this);\n this.setParent(this.features, this);\n this.setParent(this.rules, this);\n};\n\nContainer.prototype = Object.assign(new AtRule(), {\n type: 'Container',\n\n ...NestableAtRulePrototype,\n\n genCSS(context, output) {\n output.add('@container ', this._fileInfo, this._index);\n this.features.genCSS(context, output);\n this.outputRuleset(context, output, this.rules);\n },\n\n eval(context) {\n if (!context.mediaBlocks) {\n context.mediaBlocks = [];\n context.mediaPath = [];\n }\n\n const media = new Container(null, [], this._index, this._fileInfo, this.visibilityInfo());\n if (this.debugInfo) {\n this.rules[0].debugInfo = this.debugInfo;\n media.debugInfo = this.debugInfo;\n }\n \n media.features = this.features.eval(context);\n\n context.mediaPath.push(media);\n context.mediaBlocks.push(media);\n\n this.rules[0].functionRegistry = context.frames[0].functionRegistry.inherit();\n context.frames.unshift(this.rules[0]);\n media.rules = [this.rules[0].eval(context)];\n context.frames.shift();\n\n context.mediaPath.pop();\n\n return context.mediaPath.length === 0 ? media.evalTop(context) :\n media.evalNested(context);\n }\n});\n\nexport default Container;\n","import Node from './node';\n\nconst UnicodeDescriptor = function(value) {\n this.value = value;\n}\n\nUnicodeDescriptor.prototype = Object.assign(new Node(), {\n type: 'UnicodeDescriptor'\n})\n\nexport default UnicodeDescriptor;\n","import Node from './node';\nimport Operation from './operation';\nimport Dimension from './dimension';\n\nconst Negative = function(node) {\n this.value = node;\n};\n\nNegative.prototype = Object.assign(new Node(), {\n type: 'Negative',\n\n genCSS(context, output) {\n output.add('-');\n this.value.genCSS(context, output);\n },\n\n eval(context) {\n if (context.isMathOn()) {\n return (new Operation('*', [new Dimension(-1), this.value])).eval(context);\n }\n return new Negative(this.value.eval(context));\n }\n});\n\nexport default Negative;\n","import Node from './node';\nimport Selector from './selector';\n\nconst Extend = function(selector, option, index, currentFileInfo, visibilityInfo) {\n this.selector = selector;\n this.option = option;\n this.object_id = Extend.next_id++;\n this.parent_ids = [this.object_id];\n this._index = index;\n this._fileInfo = currentFileInfo;\n this.copyVisibilityInfo(visibilityInfo);\n this.allowRoot = true;\n\n switch (option) {\n case 'all':\n this.allowBefore = true;\n this.allowAfter = true;\n break;\n default:\n this.allowBefore = false;\n this.allowAfter = false;\n break;\n }\n this.setParent(this.selector, this);\n};\n\nExtend.prototype = Object.assign(new Node(), {\n type: 'Extend',\n\n accept(visitor) {\n this.selector = visitor.visit(this.selector);\n },\n\n eval(context) {\n return new Extend(this.selector.eval(context), this.option, this.getIndex(), this.fileInfo(), this.visibilityInfo());\n },\n\n // remove when Nodes have JSDoc types\n // eslint-disable-next-line no-unused-vars\n clone(context) {\n return new Extend(this.selector, this.option, this.getIndex(), this.fileInfo(), this.visibilityInfo());\n },\n\n // it concatenates (joins) all selectors in selector array\n findSelfSelectors(selectors) {\n let selfElements = [], i, selectorElements;\n\n for (i = 0; i < selectors.length; i++) {\n selectorElements = selectors[i].elements;\n // duplicate the logic in genCSS function inside the selector node.\n // future TODO - move both logics into the selector joiner visitor\n if (i > 0 && selectorElements.length && selectorElements[0].combinator.value === '') {\n selectorElements[0].combinator.value = ' ';\n }\n selfElements = selfElements.concat(selectors[i].elements);\n }\n\n this.selfSelectors = [new Selector(selfElements)];\n this.selfSelectors[0].copyVisibilityInfo(this.visibilityInfo());\n }\n});\n\nExtend.next_id = 0;\nexport default Extend;\n","import Node from './node';\nimport Variable from './variable';\nimport Ruleset from './ruleset';\nimport DetachedRuleset from './detached-ruleset';\nimport LessError from '../less-error';\n\nconst VariableCall = function(variable, index, currentFileInfo) {\n this.variable = variable;\n this._index = index;\n this._fileInfo = currentFileInfo;\n this.allowRoot = true;\n};\n\nVariableCall.prototype = Object.assign(new Node(), {\n type: 'VariableCall',\n\n eval(context) {\n let rules;\n let detachedRuleset = new Variable(this.variable, this.getIndex(), this.fileInfo()).eval(context);\n const error = new LessError({message: `Could not evaluate variable call ${this.variable}`});\n\n if (!detachedRuleset.ruleset) {\n if (detachedRuleset.rules) {\n rules = detachedRuleset;\n }\n else if (Array.isArray(detachedRuleset)) {\n rules = new Ruleset('', detachedRuleset);\n }\n else if (Array.isArray(detachedRuleset.value)) {\n rules = new Ruleset('', detachedRuleset.value);\n }\n else {\n throw error;\n }\n detachedRuleset = new DetachedRuleset(rules);\n }\n\n if (detachedRuleset.ruleset) {\n return detachedRuleset.callEval(context);\n }\n throw error;\n }\n});\n\nexport default VariableCall;\n","import Node from './node';\nimport Variable from './variable';\nimport Ruleset from './ruleset';\nimport Selector from './selector';\n\nconst NamespaceValue = function(ruleCall, lookups, index, fileInfo) {\n this.value = ruleCall;\n this.lookups = lookups;\n this._index = index;\n this._fileInfo = fileInfo;\n};\n\nNamespaceValue.prototype = Object.assign(new Node(), {\n type: 'NamespaceValue',\n\n eval(context) {\n let i, name, rules = this.value.eval(context);\n \n for (i = 0; i < this.lookups.length; i++) {\n name = this.lookups[i];\n\n /**\n * Eval'd DRs return rulesets.\n * Eval'd mixins return rules, so let's make a ruleset if we need it.\n * We need to do this because of late parsing of values\n */\n if (Array.isArray(rules)) {\n rules = new Ruleset([new Selector()], rules);\n }\n\n if (name === '') {\n rules = rules.lastDeclaration();\n }\n else if (name.charAt(0) === '@') {\n if (name.charAt(1) === '@') {\n name = `@${new Variable(name.substr(1)).eval(context).value}`;\n }\n if (rules.variables) {\n rules = rules.variable(name);\n }\n \n if (!rules) {\n throw { type: 'Name',\n message: `variable ${name} not found`,\n filename: this.fileInfo().filename,\n index: this.getIndex() };\n }\n }\n else {\n if (name.substring(0, 2) === '$@') {\n name = `$${new Variable(name.substr(1)).eval(context).value}`;\n }\n else {\n name = name.charAt(0) === '$' ? name : `$${name}`;\n }\n if (rules.properties) {\n rules = rules.property(name);\n }\n \n if (!rules) {\n throw { type: 'Name',\n message: `property \"${name.substr(1)}\" not found`,\n filename: this.fileInfo().filename,\n index: this.getIndex() };\n }\n // Properties are an array of values, since a ruleset can have multiple props.\n // We pick the last one (the \"cascaded\" value)\n rules = rules[rules.length - 1];\n }\n\n if (rules.value) {\n rules = rules.eval(context).value;\n }\n if (rules.ruleset) {\n rules = rules.ruleset.eval(context);\n }\n }\n return rules;\n }\n});\n\nexport default NamespaceValue;\n","import Selector from './selector';\nimport Element from './element';\nimport Ruleset from './ruleset';\nimport Declaration from './declaration';\nimport DetachedRuleset from './detached-ruleset';\nimport Expression from './expression';\nimport contexts from '../contexts';\nimport * as utils from '../utils';\n\nconst Definition = function(name, params, rules, condition, variadic, frames, visibilityInfo) {\n this.name = name || 'anonymous mixin';\n this.selectors = [new Selector([new Element(null, name, false, this._index, this._fileInfo)])];\n this.params = params;\n this.condition = condition;\n this.variadic = variadic;\n this.arity = params.length;\n this.rules = rules;\n this._lookups = {};\n const optionalParameters = [];\n this.required = params.reduce(function (count, p) {\n if (!p.name || (p.name && !p.value)) {\n return count + 1;\n }\n else {\n optionalParameters.push(p.name);\n return count;\n }\n }, 0);\n this.optionalParameters = optionalParameters;\n this.frames = frames;\n this.copyVisibilityInfo(visibilityInfo);\n this.allowRoot = true;\n}\n\nDefinition.prototype = Object.assign(new Ruleset(), {\n type: 'MixinDefinition',\n evalFirst: true,\n\n accept(visitor) {\n if (this.params && this.params.length) {\n this.params = visitor.visitArray(this.params);\n }\n this.rules = visitor.visitArray(this.rules);\n if (this.condition) {\n this.condition = visitor.visit(this.condition);\n }\n },\n\n evalParams(context, mixinEnv, args, evaldArguments) {\n /* jshint boss:true */\n const frame = new Ruleset(null, null);\n\n let varargs;\n let arg;\n const params = utils.copyArray(this.params);\n let i;\n let j;\n let val;\n let name;\n let isNamedFound;\n let argIndex;\n let argsLength = 0;\n\n if (mixinEnv.frames && mixinEnv.frames[0] && mixinEnv.frames[0].functionRegistry) {\n frame.functionRegistry = mixinEnv.frames[0].functionRegistry.inherit();\n }\n mixinEnv = new contexts.Eval(mixinEnv, [frame].concat(mixinEnv.frames));\n\n if (args) {\n args = utils.copyArray(args);\n argsLength = args.length;\n\n for (i = 0; i < argsLength; i++) {\n arg = args[i];\n if (name = (arg && arg.name)) {\n isNamedFound = false;\n for (j = 0; j < params.length; j++) {\n if (!evaldArguments[j] && name === params[j].name) {\n evaldArguments[j] = arg.value.eval(context);\n frame.prependRule(new Declaration(name, arg.value.eval(context)));\n isNamedFound = true;\n break;\n }\n }\n if (isNamedFound) {\n args.splice(i, 1);\n i--;\n continue;\n } else {\n throw { type: 'Runtime', message: `Named argument for ${this.name} ${args[i].name} not found` };\n }\n }\n }\n }\n argIndex = 0;\n for (i = 0; i < params.length; i++) {\n if (evaldArguments[i]) { continue; }\n\n arg = args && args[argIndex];\n\n if (name = params[i].name) {\n if (params[i].variadic) {\n varargs = [];\n for (j = argIndex; j < argsLength; j++) {\n varargs.push(args[j].value.eval(context));\n }\n frame.prependRule(new Declaration(name, new Expression(varargs).eval(context)));\n } else {\n val = arg && arg.value;\n if (val) {\n // This was a mixin call, pass in a detached ruleset of it's eval'd rules\n if (Array.isArray(val)) {\n val = new DetachedRuleset(new Ruleset('', val));\n }\n else {\n val = val.eval(context);\n }\n } else if (params[i].value) {\n val = params[i].value.eval(mixinEnv);\n frame.resetCache();\n } else {\n throw { type: 'Runtime', message: `wrong number of arguments for ${this.name} (${argsLength} for ${this.arity})` };\n }\n\n frame.prependRule(new Declaration(name, val));\n evaldArguments[i] = val;\n }\n }\n\n if (params[i].variadic && args) {\n for (j = argIndex; j < argsLength; j++) {\n evaldArguments[j] = args[j].value.eval(context);\n }\n }\n argIndex++;\n }\n\n return frame;\n },\n\n makeImportant() {\n const rules = !this.rules ? this.rules : this.rules.map(function (r) {\n if (r.makeImportant) {\n return r.makeImportant(true);\n } else {\n return r;\n }\n });\n const result = new Definition(this.name, this.params, rules, this.condition, this.variadic, this.frames);\n return result;\n },\n\n eval(context) {\n return new Definition(this.name, this.params, this.rules, this.condition, this.variadic, this.frames || utils.copyArray(context.frames));\n },\n\n evalCall(context, args, important) {\n const _arguments = [];\n const mixinFrames = this.frames ? this.frames.concat(context.frames) : context.frames;\n const frame = this.evalParams(context, new contexts.Eval(context, mixinFrames), args, _arguments);\n let rules;\n let ruleset;\n\n frame.prependRule(new Declaration('@arguments', new Expression(_arguments).eval(context)));\n\n rules = utils.copyArray(this.rules);\n\n ruleset = new Ruleset(null, rules);\n ruleset.originalRuleset = this;\n ruleset = ruleset.eval(new contexts.Eval(context, [this, frame].concat(mixinFrames)));\n if (important) {\n ruleset = ruleset.makeImportant();\n }\n return ruleset;\n },\n\n matchCondition(args, context) {\n if (this.condition && !this.condition.eval(\n new contexts.Eval(context,\n [this.evalParams(context, /* the parameter variables */\n new contexts.Eval(context, this.frames ? this.frames.concat(context.frames) : context.frames), args, [])]\n .concat(this.frames || []) // the parent namespace/mixin frames\n .concat(context.frames)))) { // the current environment frames\n return false;\n }\n return true;\n },\n\n matchArgs(args, context) {\n const allArgsCnt = (args && args.length) || 0;\n let len;\n const optionalParameters = this.optionalParameters;\n const requiredArgsCnt = !args ? 0 : args.reduce(function (count, p) {\n if (optionalParameters.indexOf(p.name) < 0) {\n return count + 1;\n } else {\n return count;\n }\n }, 0);\n\n if (!this.variadic) {\n if (requiredArgsCnt < this.required) {\n return false;\n }\n if (allArgsCnt > this.params.length) {\n return false;\n }\n } else {\n if (requiredArgsCnt < (this.required - 1)) {\n return false;\n }\n }\n\n // check patterns\n len = Math.min(requiredArgsCnt, this.arity);\n\n for (let i = 0; i < len; i++) {\n if (!this.params[i].name && !this.params[i].variadic) {\n if (args[i].value.eval(context).toCSS() != this.params[i].value.eval(context).toCSS()) {\n return false;\n }\n }\n }\n return true;\n }\n});\n\nexport default Definition;\n","import Node from './node';\nimport Selector from './selector';\nimport MixinDefinition from './mixin-definition';\nimport defaultFunc from '../functions/default';\n\nconst MixinCall = function(elements, args, index, currentFileInfo, important) {\n this.selector = new Selector(elements);\n this.arguments = args || [];\n this._index = index;\n this._fileInfo = currentFileInfo;\n this.important = important;\n this.allowRoot = true;\n this.setParent(this.selector, this);\n};\n\nMixinCall.prototype = Object.assign(new Node(), {\n type: 'MixinCall',\n\n accept(visitor) {\n if (this.selector) {\n this.selector = visitor.visit(this.selector);\n }\n if (this.arguments.length) {\n this.arguments = visitor.visitArray(this.arguments);\n }\n },\n\n eval(context) {\n let mixins;\n let mixin;\n let mixinPath;\n const args = [];\n let arg;\n let argValue;\n const rules = [];\n let match = false;\n let i;\n let m;\n let f;\n let isRecursive;\n let isOneFound;\n const candidates = [];\n let candidate;\n const conditionResult = [];\n let defaultResult;\n const defFalseEitherCase = -1;\n const defNone = 0;\n const defTrue = 1;\n const defFalse = 2;\n let count;\n let originalRuleset;\n let noArgumentsFilter;\n\n this.selector = this.selector.eval(context);\n\n function calcDefGroup(mixin, mixinPath) {\n let f, p, namespace;\n\n for (f = 0; f < 2; f++) {\n conditionResult[f] = true;\n defaultFunc.value(f);\n for (p = 0; p < mixinPath.length && conditionResult[f]; p++) {\n namespace = mixinPath[p];\n if (namespace.matchCondition) {\n conditionResult[f] = conditionResult[f] && namespace.matchCondition(null, context);\n }\n }\n if (mixin.matchCondition) {\n conditionResult[f] = conditionResult[f] && mixin.matchCondition(args, context);\n }\n }\n if (conditionResult[0] || conditionResult[1]) {\n if (conditionResult[0] != conditionResult[1]) {\n return conditionResult[1] ?\n defTrue : defFalse;\n }\n\n return defNone;\n }\n return defFalseEitherCase;\n }\n\n for (i = 0; i < this.arguments.length; i++) {\n arg = this.arguments[i];\n argValue = arg.value.eval(context);\n if (arg.expand && Array.isArray(argValue.value)) {\n argValue = argValue.value;\n for (m = 0; m < argValue.length; m++) {\n args.push({value: argValue[m]});\n }\n } else {\n args.push({name: arg.name, value: argValue});\n }\n }\n\n noArgumentsFilter = function(rule) {return rule.matchArgs(null, context);};\n\n for (i = 0; i < context.frames.length; i++) {\n if ((mixins = context.frames[i].find(this.selector, null, noArgumentsFilter)).length > 0) {\n isOneFound = true;\n\n // To make `default()` function independent of definition order we have two \"subpasses\" here.\n // At first we evaluate each guard *twice* (with `default() == true` and `default() == false`),\n // and build candidate list with corresponding flags. Then, when we know all possible matches,\n // we make a final decision.\n\n for (m = 0; m < mixins.length; m++) {\n mixin = mixins[m].rule;\n mixinPath = mixins[m].path;\n isRecursive = false;\n for (f = 0; f < context.frames.length; f++) {\n if ((!(mixin instanceof MixinDefinition)) && mixin === (context.frames[f].originalRuleset || context.frames[f])) {\n isRecursive = true;\n break;\n }\n }\n if (isRecursive) {\n continue;\n }\n\n if (mixin.matchArgs(args, context)) {\n candidate = {mixin, group: calcDefGroup(mixin, mixinPath)};\n\n if (candidate.group !== defFalseEitherCase) {\n candidates.push(candidate);\n }\n\n match = true;\n }\n }\n\n defaultFunc.reset();\n\n count = [0, 0, 0];\n for (m = 0; m < candidates.length; m++) {\n count[candidates[m].group]++;\n }\n\n if (count[defNone] > 0) {\n defaultResult = defFalse;\n } else {\n defaultResult = defTrue;\n if ((count[defTrue] + count[defFalse]) > 1) {\n throw { type: 'Runtime',\n message: `Ambiguous use of \\`default()\\` found when matching for \\`${this.format(args)}\\``,\n index: this.getIndex(), filename: this.fileInfo().filename };\n }\n }\n\n for (m = 0; m < candidates.length; m++) {\n candidate = candidates[m].group;\n if ((candidate === defNone) || (candidate === defaultResult)) {\n try {\n mixin = candidates[m].mixin;\n if (!(mixin instanceof MixinDefinition)) {\n originalRuleset = mixin.originalRuleset || mixin;\n mixin = new MixinDefinition('', [], mixin.rules, null, false, null, originalRuleset.visibilityInfo());\n mixin.originalRuleset = originalRuleset;\n }\n const newRules = mixin.evalCall(context, args, this.important).rules;\n this._setVisibilityToReplacement(newRules);\n Array.prototype.push.apply(rules, newRules);\n } catch (e) {\n throw { message: e.message, index: this.getIndex(), filename: this.fileInfo().filename, stack: e.stack };\n }\n }\n }\n\n if (match) {\n return rules;\n }\n }\n }\n if (isOneFound) {\n throw { type: 'Runtime',\n message: `No matching definition was found for \\`${this.format(args)}\\``,\n index: this.getIndex(), filename: this.fileInfo().filename };\n } else {\n throw { type: 'Name',\n message: `${this.selector.toCSS().trim()} is undefined`,\n index: this.getIndex(), filename: this.fileInfo().filename };\n }\n },\n\n _setVisibilityToReplacement(replacement) {\n let i, rule;\n if (this.blocksVisibility()) {\n for (i = 0; i < replacement.length; i++) {\n rule = replacement[i];\n rule.addVisibilityBlock();\n }\n }\n },\n\n format(args) {\n return `${this.selector.toCSS().trim()}(${args ? args.map(function (a) {\n let argValue = '';\n if (a.name) {\n argValue += `${a.name}:`;\n }\n if (a.value.toCSS) {\n argValue += a.value.toCSS();\n } else {\n argValue += '???';\n }\n return argValue;\n }).join(', ') : ''})`;\n }\n});\n\nexport default MixinCall;\n","import Node from './node';\nimport Color from './color';\nimport AtRule from './atrule';\nimport DetachedRuleset from './detached-ruleset';\nimport Operation from './operation';\nimport Dimension from './dimension';\nimport Unit from './unit';\nimport Keyword from './keyword';\nimport Variable from './variable';\nimport Property from './property';\nimport Ruleset from './ruleset';\nimport Element from './element';\nimport Attribute from './attribute';\nimport Combinator from './combinator';\nimport Selector from './selector';\nimport Quoted from './quoted';\nimport Expression from './expression';\nimport Declaration from './declaration';\nimport Call from './call';\nimport URL from './url';\nimport Import from './import';\nimport Comment from './comment';\nimport Anonymous from './anonymous';\nimport Value from './value';\nimport JavaScript from './javascript';\nimport Assignment from './assignment';\nimport Condition from './condition';\nimport QueryInParens from './query-in-parens';\nimport Paren from './paren';\nimport Media from './media';\nimport Container from './container';\nimport UnicodeDescriptor from './unicode-descriptor';\nimport Negative from './negative';\nimport Extend from './extend';\nimport VariableCall from './variable-call';\nimport NamespaceValue from './namespace-value';\n\n// mixins\nimport MixinCall from './mixin-call';\nimport MixinDefinition from './mixin-definition';\n\nexport default {\n Node, Color, AtRule, DetachedRuleset, Operation,\n Dimension, Unit, Keyword, Variable, Property,\n Ruleset, Element, Attribute, Combinator, Selector,\n Quoted, Expression, Declaration, Call, URL, Import,\n Comment, Anonymous, Value, JavaScript, Assignment,\n Condition, Paren, Media, Container, QueryInParens, \n UnicodeDescriptor, Negative, Extend, VariableCall, \n NamespaceValue,\n mixin: {\n Call: MixinCall,\n Definition: MixinDefinition\n }\n};","class AbstractFileManager {\n getPath(filename) {\n let j = filename.lastIndexOf('?');\n if (j > 0) {\n filename = filename.slice(0, j);\n }\n j = filename.lastIndexOf('/');\n if (j < 0) {\n j = filename.lastIndexOf('\\\\');\n }\n if (j < 0) {\n return '';\n }\n return filename.slice(0, j + 1);\n }\n\n tryAppendExtension(path, ext) {\n return /(\\.[a-z]*$)|([?;].*)$/.test(path) ? path : path + ext;\n }\n\n tryAppendLessExtension(path) {\n return this.tryAppendExtension(path, '.less');\n }\n\n supportsSync() {\n return false;\n }\n\n alwaysMakePathsAbsolute() {\n return false;\n }\n\n isPathAbsolute(filename) {\n return (/^(?:[a-z-]+:|\\/|\\\\|#)/i).test(filename);\n }\n\n // TODO: pull out / replace?\n join(basePath, laterPath) {\n if (!basePath) {\n return laterPath;\n }\n return basePath + laterPath;\n }\n\n pathDiff(url, baseUrl) {\n // diff between two paths to create a relative path\n\n const urlParts = this.extractUrlParts(url);\n\n const baseUrlParts = this.extractUrlParts(baseUrl);\n let i;\n let max;\n let urlDirectories;\n let baseUrlDirectories;\n let diff = '';\n if (urlParts.hostPart !== baseUrlParts.hostPart) {\n return '';\n }\n max = Math.max(baseUrlParts.directories.length, urlParts.directories.length);\n for (i = 0; i < max; i++) {\n if (baseUrlParts.directories[i] !== urlParts.directories[i]) { break; }\n }\n baseUrlDirectories = baseUrlParts.directories.slice(i);\n urlDirectories = urlParts.directories.slice(i);\n for (i = 0; i < baseUrlDirectories.length - 1; i++) {\n diff += '../';\n }\n for (i = 0; i < urlDirectories.length - 1; i++) {\n diff += `${urlDirectories[i]}/`;\n }\n return diff;\n }\n\n /**\n * Helper function, not part of API.\n * This should be replaceable by newer Node / Browser APIs\n * \n * @param {string} url \n * @param {string} baseUrl\n */\n extractUrlParts(url, baseUrl) {\n // urlParts[1] = protocol://hostname/ OR /\n // urlParts[2] = / if path relative to host base\n // urlParts[3] = directories\n // urlParts[4] = filename\n // urlParts[5] = parameters\n\n const urlPartsRegex = /^((?:[a-z-]+:)?\\/{2}(?:[^/?#]*\\/)|([/\\\\]))?((?:[^/\\\\?#]*[/\\\\])*)([^/\\\\?#]*)([#?].*)?$/i;\n\n const urlParts = url.match(urlPartsRegex);\n const returner = {};\n let rawDirectories = [];\n const directories = [];\n let i;\n let baseUrlParts;\n\n if (!urlParts) {\n throw new Error(`Could not parse sheet href - '${url}'`);\n }\n\n // Stylesheets in IE don't always return the full path\n if (baseUrl && (!urlParts[1] || urlParts[2])) {\n baseUrlParts = baseUrl.match(urlPartsRegex);\n if (!baseUrlParts) {\n throw new Error(`Could not parse page url - '${baseUrl}'`);\n }\n urlParts[1] = urlParts[1] || baseUrlParts[1] || '';\n if (!urlParts[2]) {\n urlParts[3] = baseUrlParts[3] + urlParts[3];\n }\n }\n\n if (urlParts[3]) {\n rawDirectories = urlParts[3].replace(/\\\\/g, '/').split('/');\n\n // collapse '..' and skip '.'\n for (i = 0; i < rawDirectories.length; i++) {\n\n if (rawDirectories[i] === '..') {\n directories.pop();\n }\n else if (rawDirectories[i] !== '.') {\n directories.push(rawDirectories[i]);\n }\n \n }\n }\n\n returner.hostPart = urlParts[1];\n returner.directories = directories;\n returner.rawPath = (urlParts[1] || '') + rawDirectories.join('/');\n returner.path = (urlParts[1] || '') + directories.join('/');\n returner.filename = urlParts[4];\n returner.fileUrl = returner.path + (urlParts[4] || '');\n returner.url = returner.fileUrl + (urlParts[5] || '');\n return returner;\n }\n}\n\nexport default AbstractFileManager;\n","import functionRegistry from '../functions/function-registry';\nimport LessError from '../less-error';\n\nclass AbstractPluginLoader {\n constructor() {\n // Implemented by Node.js plugin loader\n this.require = function() {\n return null;\n }\n }\n\n evalPlugin(contents, context, imports, pluginOptions, fileInfo) {\n\n let loader, registry, pluginObj, localModule, pluginManager, filename, result;\n\n pluginManager = context.pluginManager;\n\n if (fileInfo) {\n if (typeof fileInfo === 'string') {\n filename = fileInfo;\n }\n else {\n filename = fileInfo.filename;\n }\n }\n const shortname = (new this.less.FileManager()).extractUrlParts(filename).filename;\n\n if (filename) {\n pluginObj = pluginManager.get(filename);\n\n if (pluginObj) {\n result = this.trySetOptions(pluginObj, filename, shortname, pluginOptions);\n if (result) {\n return result;\n }\n try {\n if (pluginObj.use) {\n pluginObj.use.call(this.context, pluginObj);\n }\n }\n catch (e) {\n e.message = e.message || 'Error during @plugin call';\n return new LessError(e, imports, filename);\n }\n return pluginObj;\n }\n }\n localModule = {\n exports: {},\n pluginManager,\n fileInfo\n };\n registry = functionRegistry.create();\n\n const registerPlugin = function(obj) {\n pluginObj = obj;\n };\n\n try {\n loader = new Function('module', 'require', 'registerPlugin', 'functions', 'tree', 'less', 'fileInfo', contents);\n loader(localModule, this.require(filename), registerPlugin, registry, this.less.tree, this.less, fileInfo);\n }\n catch (e) {\n return new LessError(e, imports, filename);\n }\n\n if (!pluginObj) {\n pluginObj = localModule.exports;\n }\n pluginObj = this.validatePlugin(pluginObj, filename, shortname);\n\n if (pluginObj instanceof LessError) {\n return pluginObj;\n }\n\n if (pluginObj) {\n pluginObj.imports = imports;\n pluginObj.filename = filename;\n\n // For < 3.x (or unspecified minVersion) - setOptions() before install()\n if (!pluginObj.minVersion || this.compareVersion('3.0.0', pluginObj.minVersion) < 0) {\n result = this.trySetOptions(pluginObj, filename, shortname, pluginOptions);\n\n if (result) {\n return result;\n }\n }\n\n // Run on first load\n pluginManager.addPlugin(pluginObj, fileInfo.filename, registry);\n pluginObj.functions = registry.getLocalFunctions();\n\n // Need to call setOptions again because the pluginObj might have functions\n result = this.trySetOptions(pluginObj, filename, shortname, pluginOptions);\n if (result) {\n return result;\n }\n\n // Run every @plugin call\n try {\n if (pluginObj.use) {\n pluginObj.use.call(this.context, pluginObj);\n }\n }\n catch (e) {\n e.message = e.message || 'Error during @plugin call';\n return new LessError(e, imports, filename);\n }\n\n }\n else {\n return new LessError({ message: 'Not a valid plugin' }, imports, filename);\n }\n\n return pluginObj;\n\n }\n\n trySetOptions(plugin, filename, name, options) {\n if (options && !plugin.setOptions) {\n return new LessError({\n message: `Options have been provided but the plugin ${name} does not support any options.`\n });\n }\n try {\n plugin.setOptions && plugin.setOptions(options);\n }\n catch (e) {\n return new LessError(e);\n }\n }\n\n validatePlugin(plugin, filename, name) {\n if (plugin) {\n // support plugins being a function\n // so that the plugin can be more usable programmatically\n if (typeof plugin === 'function') {\n plugin = new plugin();\n }\n\n if (plugin.minVersion) {\n if (this.compareVersion(plugin.minVersion, this.less.version) < 0) {\n return new LessError({\n message: `Plugin ${name} requires version ${this.versionToString(plugin.minVersion)}`\n });\n }\n }\n return plugin;\n }\n return null;\n }\n\n compareVersion(aVersion, bVersion) {\n if (typeof aVersion === 'string') {\n aVersion = aVersion.match(/^(\\d+)\\.?(\\d+)?\\.?(\\d+)?/);\n aVersion.shift();\n }\n for (let i = 0; i < aVersion.length; i++) {\n if (aVersion[i] !== bVersion[i]) {\n return parseInt(aVersion[i]) > parseInt(bVersion[i]) ? -1 : 1;\n }\n }\n return 0;\n }\n\n versionToString(version) {\n let versionString = '';\n for (let i = 0; i < version.length; i++) {\n versionString += (versionString ? '.' : '') + version[i];\n }\n return versionString;\n }\n\n printUsage(plugins) {\n for (let i = 0; i < plugins.length; i++) {\n const plugin = plugins[i];\n if (plugin.printUsage) {\n plugin.printUsage();\n }\n }\n }\n}\n\nexport default AbstractPluginLoader;\n\n","import Anonymous from '../tree/anonymous';\nimport Keyword from '../tree/keyword';\n\nfunction boolean(condition) {\n return condition ? Keyword.True : Keyword.False;\n}\n\n/**\n * Functions with evalArgs set to false are sent context\n * as the first argument.\n */\nfunction If(context, condition, trueValue, falseValue) {\n return condition.eval(context) ? trueValue.eval(context)\n : (falseValue ? falseValue.eval(context) : new Anonymous);\n}\nIf.evalArgs = false;\n\nfunction isdefined(context, variable) {\n try {\n variable.eval(context);\n return Keyword.True;\n } catch (e) {\n return Keyword.False;\n }\n}\n\nisdefined.evalArgs = false;\n\nexport default { isdefined, boolean, 'if': If };\n","import Dimension from '../tree/dimension';\nimport Color from '../tree/color';\nimport Quoted from '../tree/quoted';\nimport Anonymous from '../tree/anonymous';\nimport Expression from '../tree/expression';\nimport Operation from '../tree/operation';\nlet colorFunctions;\n\nfunction clamp(val) {\n return Math.min(1, Math.max(0, val));\n}\nfunction hsla(origColor, hsl) {\n const color = colorFunctions.hsla(hsl.h, hsl.s, hsl.l, hsl.a);\n if (color) {\n if (origColor.value && \n /^(rgb|hsl)/.test(origColor.value)) {\n color.value = origColor.value;\n } else {\n color.value = 'rgb';\n }\n return color;\n }\n}\nfunction toHSL(color) {\n if (color.toHSL) {\n return color.toHSL();\n } else {\n throw new Error('Argument cannot be evaluated to a color');\n }\n}\n\nfunction toHSV(color) {\n if (color.toHSV) {\n return color.toHSV();\n } else {\n throw new Error('Argument cannot be evaluated to a color');\n }\n}\n\nfunction number(n) {\n if (n instanceof Dimension) {\n return parseFloat(n.unit.is('%') ? n.value / 100 : n.value);\n } else if (typeof n === 'number') {\n return n;\n } else {\n throw {\n type: 'Argument',\n message: 'color functions take numbers as parameters'\n };\n }\n}\nfunction scaled(n, size) {\n if (n instanceof Dimension && n.unit.is('%')) {\n return parseFloat(n.value * size / 100);\n } else {\n return number(n);\n }\n}\ncolorFunctions = {\n rgb: function (r, g, b) {\n let a = 1\n /**\n * Comma-less syntax\n * e.g. rgb(0 128 255 / 50%)\n */\n if (r instanceof Expression) {\n const val = r.value\n r = val[0]\n g = val[1]\n b = val[2]\n /** \n * @todo - should this be normalized in\n * function caller? Or parsed differently?\n */\n if (b instanceof Operation) {\n const op = b\n b = op.operands[0]\n a = op.operands[1]\n }\n }\n const color = colorFunctions.rgba(r, g, b, a);\n if (color) {\n color.value = 'rgb';\n return color;\n }\n },\n rgba: function (r, g, b, a) {\n try {\n if (r instanceof Color) {\n if (g) {\n a = number(g);\n } else {\n a = r.alpha;\n }\n return new Color(r.rgb, a, 'rgba');\n }\n const rgb = [r, g, b].map(c => scaled(c, 255));\n a = number(a);\n return new Color(rgb, a, 'rgba');\n }\n catch (e) {}\n },\n hsl: function (h, s, l) {\n let a = 1\n if (h instanceof Expression) {\n const val = h.value\n h = val[0]\n s = val[1]\n l = val[2]\n\n if (l instanceof Operation) {\n const op = l\n l = op.operands[0]\n a = op.operands[1]\n }\n }\n const color = colorFunctions.hsla(h, s, l, a);\n if (color) {\n color.value = 'hsl';\n return color;\n }\n },\n hsla: function (h, s, l, a) {\n let m1;\n let m2;\n\n function hue(h) {\n h = h < 0 ? h + 1 : (h > 1 ? h - 1 : h);\n if (h * 6 < 1) {\n return m1 + (m2 - m1) * h * 6;\n }\n else if (h * 2 < 1) {\n return m2;\n }\n else if (h * 3 < 2) {\n return m1 + (m2 - m1) * (2 / 3 - h) * 6;\n }\n else {\n return m1;\n }\n }\n\n try {\n if (h instanceof Color) {\n if (s) {\n a = number(s);\n } else {\n a = h.alpha;\n }\n return new Color(h.rgb, a, 'hsla');\n }\n\n h = (number(h) % 360) / 360;\n s = clamp(number(s));l = clamp(number(l));a = clamp(number(a));\n\n m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\n m1 = l * 2 - m2;\n\n const rgb = [\n hue(h + 1 / 3) * 255,\n hue(h) * 255,\n hue(h - 1 / 3) * 255\n ];\n a = number(a);\n return new Color(rgb, a, 'hsla');\n }\n catch (e) {}\n },\n\n hsv: function(h, s, v) {\n return colorFunctions.hsva(h, s, v, 1.0);\n },\n\n hsva: function(h, s, v, a) {\n h = ((number(h) % 360) / 360) * 360;\n s = number(s);v = number(v);a = number(a);\n\n let i;\n let f;\n i = Math.floor((h / 60) % 6);\n f = (h / 60) - i;\n\n const vs = [v,\n v * (1 - s),\n v * (1 - f * s),\n v * (1 - (1 - f) * s)];\n const perm = [[0, 3, 1],\n [2, 0, 1],\n [1, 0, 3],\n [1, 2, 0],\n [3, 1, 0],\n [0, 1, 2]];\n\n return colorFunctions.rgba(vs[perm[i][0]] * 255,\n vs[perm[i][1]] * 255,\n vs[perm[i][2]] * 255,\n a);\n },\n\n hue: function (color) {\n return new Dimension(toHSL(color).h);\n },\n saturation: function (color) {\n return new Dimension(toHSL(color).s * 100, '%');\n },\n lightness: function (color) {\n return new Dimension(toHSL(color).l * 100, '%');\n },\n hsvhue: function(color) {\n return new Dimension(toHSV(color).h);\n },\n hsvsaturation: function (color) {\n return new Dimension(toHSV(color).s * 100, '%');\n },\n hsvvalue: function (color) {\n return new Dimension(toHSV(color).v * 100, '%');\n },\n red: function (color) {\n return new Dimension(color.rgb[0]);\n },\n green: function (color) {\n return new Dimension(color.rgb[1]);\n },\n blue: function (color) {\n return new Dimension(color.rgb[2]);\n },\n alpha: function (color) {\n return new Dimension(toHSL(color).a);\n },\n luma: function (color) {\n return new Dimension(color.luma() * color.alpha * 100, '%');\n },\n luminance: function (color) {\n const luminance =\n (0.2126 * color.rgb[0] / 255) +\n (0.7152 * color.rgb[1] / 255) +\n (0.0722 * color.rgb[2] / 255);\n\n return new Dimension(luminance * color.alpha * 100, '%');\n },\n saturate: function (color, amount, method) {\n // filter: saturate(3.2);\n // should be kept as is, so check for color\n if (!color.rgb) {\n return null;\n }\n const hsl = toHSL(color);\n\n if (typeof method !== 'undefined' && method.value === 'relative') {\n hsl.s += hsl.s * amount.value / 100;\n }\n else {\n hsl.s += amount.value / 100;\n }\n hsl.s = clamp(hsl.s);\n return hsla(color, hsl);\n },\n desaturate: function (color, amount, method) {\n const hsl = toHSL(color);\n\n if (typeof method !== 'undefined' && method.value === 'relative') {\n hsl.s -= hsl.s * amount.value / 100;\n }\n else {\n hsl.s -= amount.value / 100;\n }\n hsl.s = clamp(hsl.s);\n return hsla(color, hsl);\n },\n lighten: function (color, amount, method) {\n const hsl = toHSL(color);\n\n if (typeof method !== 'undefined' && method.value === 'relative') {\n hsl.l += hsl.l * amount.value / 100;\n }\n else {\n hsl.l += amount.value / 100;\n }\n hsl.l = clamp(hsl.l);\n return hsla(color, hsl);\n },\n darken: function (color, amount, method) {\n const hsl = toHSL(color);\n\n if (typeof method !== 'undefined' && method.value === 'relative') {\n hsl.l -= hsl.l * amount.value / 100;\n }\n else {\n hsl.l -= amount.value / 100;\n }\n hsl.l = clamp(hsl.l);\n return hsla(color, hsl);\n },\n fadein: function (color, amount, method) {\n const hsl = toHSL(color);\n\n if (typeof method !== 'undefined' && method.value === 'relative') {\n hsl.a += hsl.a * amount.value / 100;\n }\n else {\n hsl.a += amount.value / 100;\n }\n hsl.a = clamp(hsl.a);\n return hsla(color, hsl);\n },\n fadeout: function (color, amount, method) {\n const hsl = toHSL(color);\n\n if (typeof method !== 'undefined' && method.value === 'relative') {\n hsl.a -= hsl.a * amount.value / 100;\n }\n else {\n hsl.a -= amount.value / 100;\n }\n hsl.a = clamp(hsl.a);\n return hsla(color, hsl);\n },\n fade: function (color, amount) {\n const hsl = toHSL(color);\n\n hsl.a = amount.value / 100;\n hsl.a = clamp(hsl.a);\n return hsla(color, hsl);\n },\n spin: function (color, amount) {\n const hsl = toHSL(color);\n const hue = (hsl.h + amount.value) % 360;\n\n hsl.h = hue < 0 ? 360 + hue : hue;\n\n return hsla(color, hsl);\n },\n //\n // Copyright (c) 2006-2009 Hampton Catlin, Natalie Weizenbaum, and Chris Eppstein\n // http://sass-lang.com\n //\n mix: function (color1, color2, weight) {\n if (!weight) {\n weight = new Dimension(50);\n }\n const p = weight.value / 100.0;\n const w = p * 2 - 1;\n const a = toHSL(color1).a - toHSL(color2).a;\n\n const w1 = (((w * a == -1) ? w : (w + a) / (1 + w * a)) + 1) / 2.0;\n const w2 = 1 - w1;\n\n const rgb = [color1.rgb[0] * w1 + color2.rgb[0] * w2,\n color1.rgb[1] * w1 + color2.rgb[1] * w2,\n color1.rgb[2] * w1 + color2.rgb[2] * w2];\n\n const alpha = color1.alpha * p + color2.alpha * (1 - p);\n\n return new Color(rgb, alpha);\n },\n greyscale: function (color) {\n return colorFunctions.desaturate(color, new Dimension(100));\n },\n contrast: function (color, dark, light, threshold) {\n // filter: contrast(3.2);\n // should be kept as is, so check for color\n if (!color.rgb) {\n return null;\n }\n if (typeof light === 'undefined') {\n light = colorFunctions.rgba(255, 255, 255, 1.0);\n }\n if (typeof dark === 'undefined') {\n dark = colorFunctions.rgba(0, 0, 0, 1.0);\n }\n // Figure out which is actually light and dark:\n if (dark.luma() > light.luma()) {\n const t = light;\n light = dark;\n dark = t;\n }\n if (typeof threshold === 'undefined') {\n threshold = 0.43;\n } else {\n threshold = number(threshold);\n }\n if (color.luma() < threshold) {\n return light;\n } else {\n return dark;\n }\n },\n // Changes made in 2.7.0 - Reverted in 3.0.0\n // contrast: function (color, color1, color2, threshold) {\n // // Return which of `color1` and `color2` has the greatest contrast with `color`\n // // according to the standard WCAG contrast ratio calculation.\n // // http://www.w3.org/TR/WCAG20/#contrast-ratiodef\n // // The threshold param is no longer used, in line with SASS.\n // // filter: contrast(3.2);\n // // should be kept as is, so check for color\n // if (!color.rgb) {\n // return null;\n // }\n // if (typeof color1 === 'undefined') {\n // color1 = colorFunctions.rgba(0, 0, 0, 1.0);\n // }\n // if (typeof color2 === 'undefined') {\n // color2 = colorFunctions.rgba(255, 255, 255, 1.0);\n // }\n // var contrast1, contrast2;\n // var luma = color.luma();\n // var luma1 = color1.luma();\n // var luma2 = color2.luma();\n // // Calculate contrast ratios for each color\n // if (luma > luma1) {\n // contrast1 = (luma + 0.05) / (luma1 + 0.05);\n // } else {\n // contrast1 = (luma1 + 0.05) / (luma + 0.05);\n // }\n // if (luma > luma2) {\n // contrast2 = (luma + 0.05) / (luma2 + 0.05);\n // } else {\n // contrast2 = (luma2 + 0.05) / (luma + 0.05);\n // }\n // if (contrast1 > contrast2) {\n // return color1;\n // } else {\n // return color2;\n // }\n // },\n argb: function (color) {\n return new Anonymous(color.toARGB());\n },\n color: function(c) {\n if ((c instanceof Quoted) &&\n (/^#([A-Fa-f0-9]{8}|[A-Fa-f0-9]{6}|[A-Fa-f0-9]{3,4})$/i.test(c.value))) {\n const val = c.value.slice(1);\n return new Color(val, undefined, `#${val}`);\n }\n if ((c instanceof Color) || (c = Color.fromKeyword(c.value))) {\n c.value = undefined;\n return c;\n }\n throw {\n type: 'Argument',\n message: 'argument must be a color keyword or 3|4|6|8 digit hex e.g. #FFF'\n };\n },\n tint: function(color, amount) {\n return colorFunctions.mix(colorFunctions.rgb(255, 255, 255), color, amount);\n },\n shade: function(color, amount) {\n return colorFunctions.mix(colorFunctions.rgb(0, 0, 0), color, amount);\n }\n};\n\nexport default colorFunctions;\n","import Color from '../tree/color';\n\n// Color Blending\n// ref: http://www.w3.org/TR/compositing-1\n\nfunction colorBlend(mode, color1, color2) {\n const ab = color1.alpha; // result\n\n let // backdrop\n cb;\n\n const as = color2.alpha;\n\n let // source\n cs;\n\n let ar;\n let cr;\n const r = [];\n\n ar = as + ab * (1 - as);\n for (let i = 0; i < 3; i++) {\n cb = color1.rgb[i] / 255;\n cs = color2.rgb[i] / 255;\n cr = mode(cb, cs);\n if (ar) {\n cr = (as * cs + ab * (cb -\n as * (cb + cs - cr))) / ar;\n }\n r[i] = cr * 255;\n }\n\n return new Color(r, ar);\n}\n\nconst colorBlendModeFunctions = {\n multiply: function(cb, cs) {\n return cb * cs;\n },\n screen: function(cb, cs) {\n return cb + cs - cb * cs;\n },\n overlay: function(cb, cs) {\n cb *= 2;\n return (cb <= 1) ?\n colorBlendModeFunctions.multiply(cb, cs) :\n colorBlendModeFunctions.screen(cb - 1, cs);\n },\n softlight: function(cb, cs) {\n let d = 1;\n let e = cb;\n if (cs > 0.5) {\n e = 1;\n d = (cb > 0.25) ? Math.sqrt(cb)\n : ((16 * cb - 12) * cb + 4) * cb;\n }\n return cb - (1 - 2 * cs) * e * (d - cb);\n },\n hardlight: function(cb, cs) {\n return colorBlendModeFunctions.overlay(cs, cb);\n },\n difference: function(cb, cs) {\n return Math.abs(cb - cs);\n },\n exclusion: function(cb, cs) {\n return cb + cs - 2 * cb * cs;\n },\n\n // non-w3c functions:\n average: function(cb, cs) {\n return (cb + cs) / 2;\n },\n negation: function(cb, cs) {\n return 1 - Math.abs(cb + cs - 1);\n }\n};\n\nfor (const f in colorBlendModeFunctions) {\n // eslint-disable-next-line no-prototype-builtins\n if (colorBlendModeFunctions.hasOwnProperty(f)) {\n colorBlend[f] = colorBlend.bind(null, colorBlendModeFunctions[f]);\n }\n}\n\nexport default colorBlend;\n","import Quoted from '../tree/quoted';\nimport URL from '../tree/url';\nimport * as utils from '../utils';\nimport logger from '../logger';\n\nexport default environment => {\n \n const fallback = (functionThis, node) => new URL(node, functionThis.index, functionThis.currentFileInfo).eval(functionThis.context); \n\n return { 'data-uri': function(mimetypeNode, filePathNode) {\n\n if (!filePathNode) {\n filePathNode = mimetypeNode;\n mimetypeNode = null;\n }\n\n let mimetype = mimetypeNode && mimetypeNode.value;\n let filePath = filePathNode.value;\n const currentFileInfo = this.currentFileInfo;\n const currentDirectory = currentFileInfo.rewriteUrls ?\n currentFileInfo.currentDirectory : currentFileInfo.entryPath;\n\n const fragmentStart = filePath.indexOf('#');\n let fragment = '';\n if (fragmentStart !== -1) {\n fragment = filePath.slice(fragmentStart);\n filePath = filePath.slice(0, fragmentStart);\n }\n const context = utils.clone(this.context);\n context.rawBuffer = true;\n\n const fileManager = environment.getFileManager(filePath, currentDirectory, context, environment, true);\n\n if (!fileManager) {\n return fallback(this, filePathNode);\n }\n\n let useBase64 = false;\n\n // detect the mimetype if not given\n if (!mimetypeNode) {\n\n mimetype = environment.mimeLookup(filePath);\n\n if (mimetype === 'image/svg+xml') {\n useBase64 = false;\n } else {\n // use base 64 unless it's an ASCII or UTF-8 format\n const charset = environment.charsetLookup(mimetype);\n useBase64 = ['US-ASCII', 'UTF-8'].indexOf(charset) < 0;\n }\n if (useBase64) { mimetype += ';base64'; }\n }\n else {\n useBase64 = /;base64$/.test(mimetype);\n }\n\n const fileSync = fileManager.loadFileSync(filePath, currentDirectory, context, environment);\n if (!fileSync.contents) {\n logger.warn(`Skipped data-uri embedding of ${filePath} because file not found`);\n return fallback(this, filePathNode || mimetypeNode);\n }\n let buf = fileSync.contents;\n if (useBase64 && !environment.encodeBase64) {\n return fallback(this, filePathNode);\n }\n\n buf = useBase64 ? environment.encodeBase64(buf) : encodeURIComponent(buf);\n\n const uri = `data:${mimetype},${buf}${fragment}`;\n\n return new URL(new Quoted(`\"${uri}\"`, uri, false, this.index, this.currentFileInfo), this.index, this.currentFileInfo);\n }};\n};\n","import Comment from '../tree/comment';\nimport Node from '../tree/node';\nimport Dimension from '../tree/dimension';\nimport Declaration from '../tree/declaration';\nimport Expression from '../tree/expression';\nimport Ruleset from '../tree/ruleset';\nimport Selector from '../tree/selector';\nimport Element from '../tree/element';\nimport Quote from '../tree/quoted';\nimport Value from '../tree/value';\n\nconst getItemsFromNode = node => {\n // handle non-array values as an array of length 1\n // return 'undefined' if index is invalid\n const items = Array.isArray(node.value) ?\n node.value : Array(node);\n\n return items;\n};\n\nexport default {\n _SELF: function(n) {\n return n;\n },\n '~': function(...expr) {\n if (expr.length === 1) {\n return expr[0];\n }\n return new Value(expr);\n },\n extract: function(values, index) {\n // (1-based index)\n index = index.value - 1;\n\n return getItemsFromNode(values)[index];\n },\n length: function(values) {\n return new Dimension(getItemsFromNode(values).length);\n },\n /**\n * Creates a Less list of incremental values.\n * Modeled after Lodash's range function, also exists natively in PHP\n * \n * @param {Dimension} [start=1]\n * @param {Dimension} end - e.g. 10 or 10px - unit is added to output\n * @param {Dimension} [step=1] \n */\n range: function(start, end, step) {\n let from;\n let to;\n let stepValue = 1;\n const list = [];\n if (end) {\n to = end;\n from = start.value;\n if (step) {\n stepValue = step.value;\n }\n }\n else {\n from = 1;\n to = start;\n }\n\n for (let i = from; i <= to.value; i += stepValue) {\n list.push(new Dimension(i, to.unit));\n }\n\n return new Expression(list);\n },\n each: function(list, rs) {\n const rules = [];\n let newRules;\n let iterator;\n\n const tryEval = val => {\n if (val instanceof Node) {\n return val.eval(this.context);\n }\n return val;\n };\n\n if (list.value && !(list instanceof Quote)) {\n if (Array.isArray(list.value)) {\n iterator = list.value.map(tryEval);\n } else {\n iterator = [tryEval(list.value)];\n }\n } else if (list.ruleset) {\n iterator = tryEval(list.ruleset).rules;\n } else if (list.rules) {\n iterator = list.rules.map(tryEval);\n } else if (Array.isArray(list)) {\n iterator = list.map(tryEval);\n } else {\n iterator = [tryEval(list)];\n }\n\n let valueName = '@value';\n let keyName = '@key';\n let indexName = '@index';\n\n if (rs.params) {\n valueName = rs.params[0] && rs.params[0].name;\n keyName = rs.params[1] && rs.params[1].name;\n indexName = rs.params[2] && rs.params[2].name;\n rs = rs.rules;\n } else {\n rs = rs.ruleset;\n }\n\n for (let i = 0; i < iterator.length; i++) {\n let key;\n let value;\n const item = iterator[i];\n if (item instanceof Declaration) {\n key = typeof item.name === 'string' ? item.name : item.name[0].value;\n value = item.value;\n } else {\n key = new Dimension(i + 1);\n value = item;\n }\n\n if (item instanceof Comment) {\n continue;\n }\n\n newRules = rs.rules.slice(0);\n if (valueName) {\n newRules.push(new Declaration(valueName,\n value,\n false, false, this.index, this.currentFileInfo));\n }\n if (indexName) {\n newRules.push(new Declaration(indexName,\n new Dimension(i + 1),\n false, false, this.index, this.currentFileInfo));\n }\n if (keyName) {\n newRules.push(new Declaration(keyName,\n key,\n false, false, this.index, this.currentFileInfo));\n }\n\n rules.push(new Ruleset([ new(Selector)([ new Element('', '&') ]) ],\n newRules,\n rs.strictImports,\n rs.visibilityInfo()\n ));\n }\n\n return new Ruleset([ new(Selector)([ new Element('', '&') ]) ],\n rules,\n rs.strictImports,\n rs.visibilityInfo()\n ).eval(this.context);\n }\n};\n","import Dimension from '../tree/dimension';\n\nconst MathHelper = (fn, unit, n) => {\n if (!(n instanceof Dimension)) {\n throw { type: 'Argument', message: 'argument must be a number' };\n }\n if (unit === null) {\n unit = n.unit;\n } else {\n n = n.unify();\n }\n return new Dimension(fn(parseFloat(n.value)), unit);\n};\n\nexport default MathHelper;","import mathHelper from './math-helper.js';\n\nconst mathFunctions = {\n // name, unit\n ceil: null,\n floor: null,\n sqrt: null,\n abs: null,\n tan: '',\n sin: '',\n cos: '',\n atan: 'rad',\n asin: 'rad',\n acos: 'rad'\n};\n\nfor (const f in mathFunctions) {\n // eslint-disable-next-line no-prototype-builtins\n if (mathFunctions.hasOwnProperty(f)) {\n mathFunctions[f] = mathHelper.bind(null, Math[f], mathFunctions[f]);\n }\n}\n\nmathFunctions.round = (n, f) => {\n const fraction = typeof f === 'undefined' ? 0 : f.value;\n return mathHelper(num => num.toFixed(fraction), null, n);\n};\n\nexport default mathFunctions;\n","import Dimension from '../tree/dimension';\nimport Anonymous from '../tree/anonymous';\nimport mathHelper from './math-helper.js';\n\nconst minMax = function (isMin, args) {\n args = Array.prototype.slice.call(args);\n switch (args.length) {\n case 0: throw { type: 'Argument', message: 'one or more arguments required' };\n }\n let i; // key is the unit.toString() for unified Dimension values,\n let j;\n let current;\n let currentUnified;\n let referenceUnified;\n let unit;\n let unitStatic;\n let unitClone;\n\n const // elems only contains original argument values.\n order = [];\n\n const values = {};\n // value is the index into the order array.\n for (i = 0; i < args.length; i++) {\n current = args[i];\n if (!(current instanceof Dimension)) {\n if (Array.isArray(args[i].value)) {\n Array.prototype.push.apply(args, Array.prototype.slice.call(args[i].value));\n continue;\n } else {\n throw { type: 'Argument', message: 'incompatible types' };\n }\n }\n currentUnified = current.unit.toString() === '' && unitClone !== undefined ? new Dimension(current.value, unitClone).unify() : current.unify();\n unit = currentUnified.unit.toString() === '' && unitStatic !== undefined ? unitStatic : currentUnified.unit.toString();\n unitStatic = unit !== '' && unitStatic === undefined || unit !== '' && order[0].unify().unit.toString() === '' ? unit : unitStatic;\n unitClone = unit !== '' && unitClone === undefined ? current.unit.toString() : unitClone;\n j = values[''] !== undefined && unit !== '' && unit === unitStatic ? values[''] : values[unit];\n if (j === undefined) {\n if (unitStatic !== undefined && unit !== unitStatic) {\n throw { type: 'Argument', message: 'incompatible types' };\n }\n values[unit] = order.length;\n order.push(current);\n continue;\n }\n referenceUnified = order[j].unit.toString() === '' && unitClone !== undefined ? new Dimension(order[j].value, unitClone).unify() : order[j].unify();\n if ( isMin && currentUnified.value < referenceUnified.value ||\n !isMin && currentUnified.value > referenceUnified.value) {\n order[j] = current;\n }\n }\n if (order.length == 1) {\n return order[0];\n }\n args = order.map(a => { return a.toCSS(this.context); }).join(this.context.compress ? ',' : ', ');\n return new Anonymous(`${isMin ? 'min' : 'max'}(${args})`);\n};\n\nexport default {\n min: function(...args) {\n try {\n return minMax.call(this, true, args);\n } catch (e) {}\n },\n max: function(...args) {\n try {\n return minMax.call(this, false, args);\n } catch (e) {}\n },\n convert: function (val, unit) {\n return val.convertTo(unit.value);\n },\n pi: function () {\n return new Dimension(Math.PI);\n },\n mod: function(a, b) {\n return new Dimension(a.value % b.value, a.unit);\n },\n pow: function(x, y) {\n if (typeof x === 'number' && typeof y === 'number') {\n x = new Dimension(x);\n y = new Dimension(y);\n } else if (!(x instanceof Dimension) || !(y instanceof Dimension)) {\n throw { type: 'Argument', message: 'arguments must be numbers' };\n }\n\n return new Dimension(Math.pow(x.value, y.value), x.unit);\n },\n percentage: function (n) {\n const result = mathHelper(num => num * 100, '%', n);\n\n return result;\n }\n};\n","import Quoted from '../tree/quoted';\nimport Anonymous from '../tree/anonymous';\nimport JavaScript from '../tree/javascript';\n\nexport default {\n e: function (str) {\n return new Quoted('\"', str instanceof JavaScript ? str.evaluated : str.value, true);\n },\n escape: function (str) {\n return new Anonymous(\n encodeURI(str.value).replace(/=/g, '%3D').replace(/:/g, '%3A').replace(/#/g, '%23').replace(/;/g, '%3B')\n .replace(/\\(/g, '%28').replace(/\\)/g, '%29'));\n },\n replace: function (string, pattern, replacement, flags) {\n let result = string.value;\n replacement = (replacement.type === 'Quoted') ?\n replacement.value : replacement.toCSS();\n result = result.replace(new RegExp(pattern.value, flags ? flags.value : ''), replacement);\n return new Quoted(string.quote || '', result, string.escaped);\n },\n '%': function (string /* arg, arg, ... */) {\n const args = Array.prototype.slice.call(arguments, 1);\n let result = string.value;\n\n for (let i = 0; i < args.length; i++) {\n /* jshint loopfunc:true */\n result = result.replace(/%[sda]/i, token => {\n const value = ((args[i].type === 'Quoted') &&\n token.match(/s/i)) ? args[i].value : args[i].toCSS();\n return token.match(/[A-Z]$/) ? encodeURIComponent(value) : value;\n });\n }\n result = result.replace(/%%/g, '%');\n return new Quoted(string.quote || '', result, string.escaped);\n }\n};\n","import Keyword from '../tree/keyword';\nimport DetachedRuleset from '../tree/detached-ruleset';\nimport Dimension from '../tree/dimension';\nimport Color from '../tree/color';\nimport Quoted from '../tree/quoted';\nimport Anonymous from '../tree/anonymous';\nimport URL from '../tree/url';\nimport Operation from '../tree/operation';\n\nconst isa = (n, Type) => (n instanceof Type) ? Keyword.True : Keyword.False;\nconst isunit = (n, unit) => {\n if (unit === undefined) {\n throw { type: 'Argument', message: 'missing the required second argument to isunit.' };\n }\n unit = typeof unit.value === 'string' ? unit.value : unit;\n if (typeof unit !== 'string') {\n throw { type: 'Argument', message: 'Second argument to isunit should be a unit or a string.' };\n }\n return (n instanceof Dimension) && n.unit.is(unit) ? Keyword.True : Keyword.False;\n};\n\nexport default {\n isruleset: function (n) {\n return isa(n, DetachedRuleset);\n },\n iscolor: function (n) {\n return isa(n, Color);\n },\n isnumber: function (n) {\n return isa(n, Dimension);\n },\n isstring: function (n) {\n return isa(n, Quoted);\n },\n iskeyword: function (n) {\n return isa(n, Keyword);\n },\n isurl: function (n) {\n return isa(n, URL);\n },\n ispixel: function (n) {\n return isunit(n, 'px');\n },\n ispercentage: function (n) {\n return isunit(n, '%');\n },\n isem: function (n) {\n return isunit(n, 'em');\n },\n isunit,\n unit: function (val, unit) {\n if (!(val instanceof Dimension)) {\n throw { type: 'Argument',\n message: `the first argument to unit must be a number${val instanceof Operation ? '. Have you forgotten parenthesis?' : ''}` };\n }\n if (unit) {\n if (unit instanceof Keyword) {\n unit = unit.value;\n } else {\n unit = unit.toCSS();\n }\n } else {\n unit = '';\n }\n return new Dimension(val.value, unit);\n },\n 'get-unit': function (n) {\n return new Anonymous(n.unit);\n }\n};\n","import Variable from '../tree/variable';\nimport Anonymous from '../tree/variable';\n\nconst styleExpression = function (args) {\n args = Array.prototype.slice.call(args);\n switch (args.length) {\n case 0: throw { type: 'Argument', message: 'one or more arguments required' };\n }\n \n const entityList = [new Variable(args[0].value, this.index, this.currentFileInfo).eval(this.context)];\n \n args = entityList.map(a => { return a.toCSS(this.context); }).join(this.context.compress ? ',' : ', ');\n \n return new Anonymous(`style(${args})`);\n};\n\nexport default {\n style: function(...args) {\n try {\n return styleExpression.call(this, args);\n } catch (e) {}\n },\n};\n","import functionRegistry from './function-registry';\nimport functionCaller from './function-caller';\n\nimport boolean from './boolean';\nimport defaultFunc from './default';\nimport color from './color';\nimport colorBlending from './color-blending';\nimport dataUri from './data-uri';\nimport list from './list';\nimport math from './math';\nimport number from './number';\nimport string from './string';\nimport svg from './svg';\nimport types from './types';\nimport style from './style';\n\nexport default environment => {\n const functions = { functionRegistry, functionCaller };\n\n // register functions\n functionRegistry.addMultiple(boolean);\n functionRegistry.add('default', defaultFunc.eval.bind(defaultFunc));\n functionRegistry.addMultiple(color);\n functionRegistry.addMultiple(colorBlending);\n functionRegistry.addMultiple(dataUri(environment));\n functionRegistry.addMultiple(list);\n functionRegistry.addMultiple(math);\n functionRegistry.addMultiple(number);\n functionRegistry.addMultiple(string);\n functionRegistry.addMultiple(svg(environment));\n functionRegistry.addMultiple(types);\n functionRegistry.addMultiple(style);\n\n return functions;\n};\n","import Dimension from '../tree/dimension';\nimport Color from '../tree/color';\nimport Expression from '../tree/expression';\nimport Quoted from '../tree/quoted';\nimport URL from '../tree/url';\n\nexport default () => {\n return { 'svg-gradient': function(direction) {\n let stops;\n let gradientDirectionSvg;\n let gradientType = 'linear';\n let rectangleDimension = 'x=\"0\" y=\"0\" width=\"1\" height=\"1\"';\n const renderEnv = {compress: false};\n let returner;\n const directionValue = direction.toCSS(renderEnv);\n let i;\n let color;\n let position;\n let positionValue;\n let alpha;\n\n function throwArgumentDescriptor() {\n throw { type: 'Argument',\n message: 'svg-gradient expects direction, start_color [start_position], [color position,]...,' +\n ' end_color [end_position] or direction, color list' };\n }\n\n if (arguments.length == 2) {\n if (arguments[1].value.length < 2) {\n throwArgumentDescriptor();\n }\n stops = arguments[1].value;\n } else if (arguments.length < 3) {\n throwArgumentDescriptor();\n } else {\n stops = Array.prototype.slice.call(arguments, 1);\n }\n\n switch (directionValue) {\n case 'to bottom':\n gradientDirectionSvg = 'x1=\"0%\" y1=\"0%\" x2=\"0%\" y2=\"100%\"';\n break;\n case 'to right':\n gradientDirectionSvg = 'x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"0%\"';\n break;\n case 'to bottom right':\n gradientDirectionSvg = 'x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"100%\"';\n break;\n case 'to top right':\n gradientDirectionSvg = 'x1=\"0%\" y1=\"100%\" x2=\"100%\" y2=\"0%\"';\n break;\n case 'ellipse':\n case 'ellipse at center':\n gradientType = 'radial';\n gradientDirectionSvg = 'cx=\"50%\" cy=\"50%\" r=\"75%\"';\n rectangleDimension = 'x=\"-50\" y=\"-50\" width=\"101\" height=\"101\"';\n break;\n default:\n throw { type: 'Argument', message: 'svg-gradient direction must be \\'to bottom\\', \\'to right\\',' +\n ' \\'to bottom right\\', \\'to top right\\' or \\'ellipse at center\\'' };\n }\n returner = `<${gradientType}Gradient id=\"g\" ${gradientDirectionSvg}>`;\n\n for (i = 0; i < stops.length; i += 1) {\n if (stops[i] instanceof Expression) {\n color = stops[i].value[0];\n position = stops[i].value[1];\n } else {\n color = stops[i];\n position = undefined;\n }\n\n if (!(color instanceof Color) || (!((i === 0 || i + 1 === stops.length) && position === undefined) && !(position instanceof Dimension))) {\n throwArgumentDescriptor();\n }\n positionValue = position ? position.toCSS(renderEnv) : i === 0 ? '0%' : '100%';\n alpha = color.alpha;\n returner += ` `;\n }\n returner += `${gradientType}Gradient> `;\n\n returner = encodeURIComponent(returner);\n\n returner = `data:image/svg+xml,${returner}`;\n return new URL(new Quoted(`'${returner}'`, returner, false, this.index, this.currentFileInfo), this.index, this.currentFileInfo);\n }};\n};\n","import contexts from './contexts';\nimport visitor from './visitors';\nimport tree from './tree';\n\nexport default function(root, options) {\n options = options || {};\n let evaldRoot;\n let variables = options.variables;\n const evalEnv = new contexts.Eval(options);\n\n //\n // Allows setting variables with a hash, so:\n //\n // `{ color: new tree.Color('#f01') }` will become:\n //\n // new tree.Declaration('@color',\n // new tree.Value([\n // new tree.Expression([\n // new tree.Color('#f01')\n // ])\n // ])\n // )\n //\n if (typeof variables === 'object' && !Array.isArray(variables)) {\n variables = Object.keys(variables).map(function (k) {\n let value = variables[k];\n\n if (!(value instanceof tree.Value)) {\n if (!(value instanceof tree.Expression)) {\n value = new tree.Expression([value]);\n }\n value = new tree.Value([value]);\n }\n return new tree.Declaration(`@${k}`, value, false, null, 0);\n });\n evalEnv.frames = [new tree.Ruleset(null, variables)];\n }\n\n const visitors = [\n new visitor.JoinSelectorVisitor(),\n new visitor.MarkVisibleSelectorsVisitor(true),\n new visitor.ExtendVisitor(),\n new visitor.ToCSSVisitor({compress: Boolean(options.compress)})\n ];\n\n const preEvalVisitors = [];\n let v;\n let visitorIterator;\n\n /**\n * first() / get() allows visitors to be added while visiting\n * \n * @todo Add scoping for visitors just like functions for @plugin; right now they're global\n */\n if (options.pluginManager) {\n visitorIterator = options.pluginManager.visitor();\n for (let i = 0; i < 2; i++) {\n visitorIterator.first();\n while ((v = visitorIterator.get())) {\n if (v.isPreEvalVisitor) {\n if (i === 0 || preEvalVisitors.indexOf(v) === -1) {\n preEvalVisitors.push(v);\n v.run(root);\n }\n }\n else {\n if (i === 0 || visitors.indexOf(v) === -1) {\n if (v.isPreVisitor) {\n visitors.unshift(v);\n }\n else {\n visitors.push(v);\n }\n }\n }\n }\n }\n }\n\n evaldRoot = root.eval(evalEnv);\n\n for (let i = 0; i < visitors.length; i++) {\n visitors[i].run(evaldRoot);\n }\n\n // Run any remaining visitors added after eval pass\n if (options.pluginManager) {\n visitorIterator.first();\n while ((v = visitorIterator.get())) {\n if (visitors.indexOf(v) === -1 && preEvalVisitors.indexOf(v) === -1) {\n v.run(evaldRoot);\n }\n }\n }\n\n return evaldRoot;\n}\n","/**\n * Plugin Manager\n */\nclass PluginManager {\n constructor(less) {\n this.less = less;\n this.visitors = [];\n this.preProcessors = [];\n this.postProcessors = [];\n this.installedPlugins = [];\n this.fileManagers = [];\n this.iterator = -1;\n this.pluginCache = {};\n this.Loader = new less.PluginLoader(less);\n }\n\n /**\n * Adds all the plugins in the array\n * @param {Array} plugins\n */\n addPlugins(plugins) {\n if (plugins) {\n for (let i = 0; i < plugins.length; i++) {\n this.addPlugin(plugins[i]);\n }\n }\n }\n\n /**\n *\n * @param plugin\n * @param {String} filename\n */\n addPlugin(plugin, filename, functionRegistry) {\n this.installedPlugins.push(plugin);\n if (filename) {\n this.pluginCache[filename] = plugin;\n }\n if (plugin.install) {\n plugin.install(this.less, this, functionRegistry || this.less.functions.functionRegistry);\n }\n }\n\n /**\n *\n * @param filename\n */\n get(filename) {\n return this.pluginCache[filename];\n }\n\n /**\n * Adds a visitor. The visitor object has options on itself to determine\n * when it should run.\n * @param visitor\n */\n addVisitor(visitor) {\n this.visitors.push(visitor);\n }\n\n /**\n * Adds a pre processor object\n * @param {object} preProcessor\n * @param {number} priority - guidelines 1 = before import, 1000 = import, 2000 = after import\n */\n addPreProcessor(preProcessor, priority) {\n let indexToInsertAt;\n for (indexToInsertAt = 0; indexToInsertAt < this.preProcessors.length; indexToInsertAt++) {\n if (this.preProcessors[indexToInsertAt].priority >= priority) {\n break;\n }\n }\n this.preProcessors.splice(indexToInsertAt, 0, {preProcessor, priority});\n }\n\n /**\n * Adds a post processor object\n * @param {object} postProcessor\n * @param {number} priority - guidelines 1 = before compression, 1000 = compression, 2000 = after compression\n */\n addPostProcessor(postProcessor, priority) {\n let indexToInsertAt;\n for (indexToInsertAt = 0; indexToInsertAt < this.postProcessors.length; indexToInsertAt++) {\n if (this.postProcessors[indexToInsertAt].priority >= priority) {\n break;\n }\n }\n this.postProcessors.splice(indexToInsertAt, 0, {postProcessor, priority});\n }\n\n /**\n *\n * @param manager\n */\n addFileManager(manager) {\n this.fileManagers.push(manager);\n }\n\n /**\n *\n * @returns {Array}\n * @private\n */\n getPreProcessors() {\n const preProcessors = [];\n for (let i = 0; i < this.preProcessors.length; i++) {\n preProcessors.push(this.preProcessors[i].preProcessor);\n }\n return preProcessors;\n }\n\n /**\n *\n * @returns {Array}\n * @private\n */\n getPostProcessors() {\n const postProcessors = [];\n for (let i = 0; i < this.postProcessors.length; i++) {\n postProcessors.push(this.postProcessors[i].postProcessor);\n }\n return postProcessors;\n }\n\n /**\n *\n * @returns {Array}\n * @private\n */\n getVisitors() {\n return this.visitors;\n }\n\n visitor() {\n const self = this;\n return {\n first: function() {\n self.iterator = -1;\n return self.visitors[self.iterator];\n },\n get: function() {\n self.iterator += 1;\n return self.visitors[self.iterator];\n }\n };\n }\n\n /**\n *\n * @returns {Array}\n * @private\n */\n getFileManagers() {\n return this.fileManagers;\n }\n}\n\nlet pm;\n\nconst PluginManagerFactory = function(less, newFactory) {\n if (newFactory || !pm) {\n pm = new PluginManager(less);\n }\n return pm;\n};\n\n//\nexport default PluginManagerFactory;\n","'use strict';\n\nfunction parseNodeVersion(version) {\n var match = version.match(/^v(\\d{1,2})\\.(\\d{1,2})\\.(\\d{1,2})(?:-([0-9A-Za-z-.]+))?(?:\\+([0-9A-Za-z-.]+))?$/); // eslint-disable-line max-len\n if (!match) {\n throw new Error('Unable to parse: ' + version);\n }\n\n var res = {\n major: parseInt(match[1], 10),\n minor: parseInt(match[2], 10),\n patch: parseInt(match[3], 10),\n pre: match[4] || '',\n build: match[5] || '',\n };\n\n return res;\n}\n\nmodule.exports = parseNodeVersion;\n","import AbstractFileManager from '../less/environment/abstract-file-manager.js';\n\nlet options;\nlet logger;\nlet fileCache = {};\n\n// TODOS - move log somewhere. pathDiff and doing something similar in node. use pathDiff in the other browser file for the initial load\nconst FileManager = function() {}\nFileManager.prototype = Object.assign(new AbstractFileManager(), {\n alwaysMakePathsAbsolute() {\n return true;\n },\n\n join(basePath, laterPath) {\n if (!basePath) {\n return laterPath;\n }\n return this.extractUrlParts(laterPath, basePath).path;\n },\n\n doXHR(url, type, callback, errback) {\n const xhr = new XMLHttpRequest();\n const async = options.isFileProtocol ? options.fileAsync : true;\n\n if (typeof xhr.overrideMimeType === 'function') {\n xhr.overrideMimeType('text/css');\n }\n logger.debug(`XHR: Getting '${url}'`);\n xhr.open('GET', url, async);\n xhr.setRequestHeader('Accept', type || 'text/x-less, text/css; q=0.9, */*; q=0.5');\n xhr.send(null);\n\n function handleResponse(xhr, callback, errback) {\n if (xhr.status >= 200 && xhr.status < 300) {\n callback(xhr.responseText,\n xhr.getResponseHeader('Last-Modified'));\n } else if (typeof errback === 'function') {\n errback(xhr.status, url);\n }\n }\n\n if (options.isFileProtocol && !options.fileAsync) {\n if (xhr.status === 0 || (xhr.status >= 200 && xhr.status < 300)) {\n callback(xhr.responseText);\n } else {\n errback(xhr.status, url);\n }\n } else if (async) {\n xhr.onreadystatechange = () => {\n if (xhr.readyState == 4) {\n handleResponse(xhr, callback, errback);\n }\n };\n } else {\n handleResponse(xhr, callback, errback);\n }\n },\n\n supports() {\n return true;\n },\n\n clearFileCache() {\n fileCache = {};\n },\n\n loadFile(filename, currentDirectory, options) {\n // TODO: Add prefix support like less-node?\n // What about multiple paths?\n\n if (currentDirectory && !this.isPathAbsolute(filename)) {\n filename = currentDirectory + filename;\n }\n\n filename = options.ext ? this.tryAppendExtension(filename, options.ext) : filename;\n\n options = options || {};\n\n // sheet may be set to the stylesheet for the initial load or a collection of properties including\n // some context variables for imports\n const hrefParts = this.extractUrlParts(filename, window.location.href);\n const href = hrefParts.url;\n const self = this;\n \n return new Promise((resolve, reject) => {\n if (options.useFileCache && fileCache[href]) {\n try {\n const lessText = fileCache[href];\n return resolve({ contents: lessText, filename: href, webInfo: { lastModified: new Date() }});\n } catch (e) {\n return reject({ filename: href, message: `Error loading file ${href} error was ${e.message}` });\n }\n }\n\n self.doXHR(href, options.mime, function doXHRCallback(data, lastModified) {\n // per file cache\n fileCache[href] = data;\n\n // Use remote copy (re-parse)\n resolve({ contents: data, filename: href, webInfo: { lastModified }});\n }, function doXHRError(status, url) {\n reject({ type: 'File', message: `'${url}' wasn't found (${status})`, href });\n });\n });\n }\n});\n\nexport default (opts, log) => {\n options = opts;\n logger = log;\n return FileManager;\n}\n","import Environment from './environment/environment';\nimport data from './data';\nimport tree from './tree';\nimport AbstractFileManager from './environment/abstract-file-manager';\nimport AbstractPluginLoader from './environment/abstract-plugin-loader';\nimport visitors from './visitors';\nimport Parser from './parser/parser';\nimport functions from './functions';\nimport contexts from './contexts';\nimport LessError from './less-error';\nimport transformTree from './transform-tree';\nimport * as utils from './utils';\nimport PluginManager from './plugin-manager';\nimport logger from './logger';\nimport SourceMapOutput from './source-map-output';\nimport SourceMapBuilder from './source-map-builder';\nimport ParseTree from './parse-tree';\nimport ImportManager from './import-manager';\nimport Parse from './parse';\nimport Render from './render';\nimport { version } from '../../package.json';\nimport parseVersion from 'parse-node-version';\n\nexport default function(environment, fileManagers) {\n let sourceMapOutput, sourceMapBuilder, parseTree, importManager;\n\n environment = new Environment(environment, fileManagers);\n sourceMapOutput = SourceMapOutput(environment);\n sourceMapBuilder = SourceMapBuilder(sourceMapOutput, environment);\n parseTree = ParseTree(sourceMapBuilder);\n importManager = ImportManager(environment);\n\n const render = Render(environment, parseTree, importManager);\n const parse = Parse(environment, parseTree, importManager);\n\n const v = parseVersion(`v${version}`);\n const initial = {\n version: [v.major, v.minor, v.patch],\n data,\n tree,\n Environment,\n AbstractFileManager,\n AbstractPluginLoader,\n environment,\n visitors,\n Parser,\n functions: functions(environment),\n contexts,\n SourceMapOutput: sourceMapOutput,\n SourceMapBuilder: sourceMapBuilder,\n ParseTree: parseTree,\n ImportManager: importManager,\n render,\n parse,\n LessError,\n transformTree,\n utils,\n PluginManager,\n logger\n };\n\n // Create a public API\n\n const ctor = function(t) {\n return function() {\n const obj = Object.create(t.prototype);\n t.apply(obj, Array.prototype.slice.call(arguments, 0));\n return obj;\n };\n };\n let t;\n const api = Object.create(initial);\n for (const n in initial.tree) {\n /* eslint guard-for-in: 0 */\n t = initial.tree[n];\n if (typeof t === 'function') {\n api[n.toLowerCase()] = ctor(t);\n }\n else {\n api[n] = Object.create(null);\n for (const o in t) {\n /* eslint guard-for-in: 0 */\n api[n][o.toLowerCase()] = ctor(t[o]);\n }\n }\n }\n\n /**\n * Some of the functions assume a `this` context of the API object,\n * which causes it to fail when wrapped for ES6 imports.\n * \n * An assumed `this` should be removed in the future.\n */\n initial.parse = initial.parse.bind(api);\n initial.render = initial.render.bind(api);\n\n return api;\n}\n","import LessError from './less-error';\nimport transformTree from './transform-tree';\nimport logger from './logger';\n\nexport default function(SourceMapBuilder) {\n class ParseTree {\n constructor(root, imports) {\n this.root = root;\n this.imports = imports;\n }\n\n toCSS(options) {\n let evaldRoot;\n const result = {};\n let sourceMapBuilder;\n try {\n evaldRoot = transformTree(this.root, options);\n } catch (e) {\n throw new LessError(e, this.imports);\n }\n\n try {\n const compress = Boolean(options.compress);\n if (compress) {\n logger.warn('The compress option has been deprecated. ' + \n 'We recommend you use a dedicated css minifier, for instance see less-plugin-clean-css.');\n }\n\n const toCSSOptions = {\n compress,\n dumpLineNumbers: options.dumpLineNumbers,\n strictUnits: Boolean(options.strictUnits),\n numPrecision: 8};\n\n if (options.sourceMap) {\n sourceMapBuilder = new SourceMapBuilder(options.sourceMap);\n result.css = sourceMapBuilder.toCSS(evaldRoot, toCSSOptions, this.imports);\n } else {\n result.css = evaldRoot.toCSS(toCSSOptions);\n }\n } catch (e) {\n throw new LessError(e, this.imports);\n }\n\n if (options.pluginManager) {\n const postProcessors = options.pluginManager.getPostProcessors();\n for (let i = 0; i < postProcessors.length; i++) {\n result.css = postProcessors[i].process(result.css, { sourceMap: sourceMapBuilder, options, imports: this.imports });\n }\n }\n if (options.sourceMap) {\n result.map = sourceMapBuilder.getExternalSourceMap();\n }\n\n result.imports = [];\n for (const file in this.imports.files) {\n if (Object.prototype.hasOwnProperty.call(this.imports.files, file) && file !== this.imports.rootFilename) {\n result.imports.push(file);\n }\n }\n return result;\n }\n }\n\n return ParseTree;\n}\n","export default function (SourceMapOutput, environment) {\n class SourceMapBuilder {\n constructor(options) {\n this.options = options;\n }\n\n toCSS(rootNode, options, imports) {\n const sourceMapOutput = new SourceMapOutput(\n {\n contentsIgnoredCharsMap: imports.contentsIgnoredChars,\n rootNode,\n contentsMap: imports.contents,\n sourceMapFilename: this.options.sourceMapFilename,\n sourceMapURL: this.options.sourceMapURL,\n outputFilename: this.options.sourceMapOutputFilename,\n sourceMapBasepath: this.options.sourceMapBasepath,\n sourceMapRootpath: this.options.sourceMapRootpath,\n outputSourceFiles: this.options.outputSourceFiles,\n sourceMapGenerator: this.options.sourceMapGenerator,\n sourceMapFileInline: this.options.sourceMapFileInline, \n disableSourcemapAnnotation: this.options.disableSourcemapAnnotation\n });\n\n const css = sourceMapOutput.toCSS(options);\n this.sourceMap = sourceMapOutput.sourceMap;\n this.sourceMapURL = sourceMapOutput.sourceMapURL;\n if (this.options.sourceMapInputFilename) {\n this.sourceMapInputFilename = sourceMapOutput.normalizeFilename(this.options.sourceMapInputFilename);\n }\n if (this.options.sourceMapBasepath !== undefined && this.sourceMapURL !== undefined) {\n this.sourceMapURL = sourceMapOutput.removeBasepath(this.sourceMapURL);\n }\n return css + this.getCSSAppendage();\n }\n\n getCSSAppendage() {\n\n let sourceMapURL = this.sourceMapURL;\n if (this.options.sourceMapFileInline) {\n if (this.sourceMap === undefined) {\n return '';\n }\n sourceMapURL = `data:application/json;base64,${environment.encodeBase64(this.sourceMap)}`;\n }\n\n if (this.options.disableSourcemapAnnotation) {\n return '';\n }\n\n if (sourceMapURL) {\n return `/*# sourceMappingURL=${sourceMapURL} */`;\n }\n return '';\n }\n\n getExternalSourceMap() {\n return this.sourceMap;\n }\n\n setExternalSourceMap(sourceMap) {\n this.sourceMap = sourceMap;\n }\n\n isInline() {\n return this.options.sourceMapFileInline;\n }\n\n getSourceMapURL() {\n return this.sourceMapURL;\n }\n\n getOutputFilename() {\n return this.options.sourceMapOutputFilename;\n }\n\n getInputFilename() {\n return this.sourceMapInputFilename;\n }\n }\n\n return SourceMapBuilder;\n}\n","export default function (environment) {\n class SourceMapOutput {\n constructor(options) {\n this._css = [];\n this._rootNode = options.rootNode;\n this._contentsMap = options.contentsMap;\n this._contentsIgnoredCharsMap = options.contentsIgnoredCharsMap;\n if (options.sourceMapFilename) {\n this._sourceMapFilename = options.sourceMapFilename.replace(/\\\\/g, '/');\n }\n this._outputFilename = options.outputFilename;\n this.sourceMapURL = options.sourceMapURL;\n if (options.sourceMapBasepath) {\n this._sourceMapBasepath = options.sourceMapBasepath.replace(/\\\\/g, '/');\n }\n if (options.sourceMapRootpath) {\n this._sourceMapRootpath = options.sourceMapRootpath.replace(/\\\\/g, '/');\n if (this._sourceMapRootpath.charAt(this._sourceMapRootpath.length - 1) !== '/') {\n this._sourceMapRootpath += '/';\n }\n } else {\n this._sourceMapRootpath = '';\n }\n this._outputSourceFiles = options.outputSourceFiles;\n this._sourceMapGeneratorConstructor = environment.getSourceMapGenerator();\n\n this._lineNumber = 0;\n this._column = 0;\n }\n\n removeBasepath(path) {\n if (this._sourceMapBasepath && path.indexOf(this._sourceMapBasepath) === 0) {\n path = path.substring(this._sourceMapBasepath.length);\n if (path.charAt(0) === '\\\\' || path.charAt(0) === '/') {\n path = path.substring(1);\n }\n }\n\n return path;\n }\n\n normalizeFilename(filename) {\n filename = filename.replace(/\\\\/g, '/');\n filename = this.removeBasepath(filename);\n return (this._sourceMapRootpath || '') + filename;\n }\n\n add(chunk, fileInfo, index, mapLines) {\n\n // ignore adding empty strings\n if (!chunk) {\n return;\n }\n\n let lines, sourceLines, columns, sourceColumns, i;\n\n if (fileInfo && fileInfo.filename) {\n let inputSource = this._contentsMap[fileInfo.filename];\n\n // remove vars/banner added to the top of the file\n if (this._contentsIgnoredCharsMap[fileInfo.filename]) {\n // adjust the index\n index -= this._contentsIgnoredCharsMap[fileInfo.filename];\n if (index < 0) { index = 0; }\n // adjust the source\n inputSource = inputSource.slice(this._contentsIgnoredCharsMap[fileInfo.filename]);\n }\n\n /** \n * ignore empty content, or failsafe\n * if contents map is incorrect\n */\n if (inputSource === undefined) {\n this._css.push(chunk);\n return;\n }\n\n inputSource = inputSource.substring(0, index);\n sourceLines = inputSource.split('\\n');\n sourceColumns = sourceLines[sourceLines.length - 1];\n }\n\n lines = chunk.split('\\n');\n columns = lines[lines.length - 1];\n\n if (fileInfo && fileInfo.filename) {\n if (!mapLines) {\n this._sourceMapGenerator.addMapping({ generated: { line: this._lineNumber + 1, column: this._column},\n original: { line: sourceLines.length, column: sourceColumns.length},\n source: this.normalizeFilename(fileInfo.filename)});\n } else {\n for (i = 0; i < lines.length; i++) {\n this._sourceMapGenerator.addMapping({ generated: { line: this._lineNumber + i + 1, column: i === 0 ? this._column : 0},\n original: { line: sourceLines.length + i, column: i === 0 ? sourceColumns.length : 0},\n source: this.normalizeFilename(fileInfo.filename)});\n }\n }\n }\n\n if (lines.length === 1) {\n this._column += columns.length;\n } else {\n this._lineNumber += lines.length - 1;\n this._column = columns.length;\n }\n\n this._css.push(chunk);\n }\n\n isEmpty() {\n return this._css.length === 0;\n }\n\n toCSS(context) {\n this._sourceMapGenerator = new this._sourceMapGeneratorConstructor({ file: this._outputFilename, sourceRoot: null });\n\n if (this._outputSourceFiles) {\n for (const filename in this._contentsMap) {\n // eslint-disable-next-line no-prototype-builtins\n if (this._contentsMap.hasOwnProperty(filename)) {\n let source = this._contentsMap[filename];\n if (this._contentsIgnoredCharsMap[filename]) {\n source = source.slice(this._contentsIgnoredCharsMap[filename]);\n }\n this._sourceMapGenerator.setSourceContent(this.normalizeFilename(filename), source);\n }\n }\n }\n\n this._rootNode.genCSS(context, this);\n\n if (this._css.length > 0) {\n let sourceMapURL;\n const sourceMapContent = JSON.stringify(this._sourceMapGenerator.toJSON());\n\n if (this.sourceMapURL) {\n sourceMapURL = this.sourceMapURL;\n } else if (this._sourceMapFilename) {\n sourceMapURL = this._sourceMapFilename;\n }\n this.sourceMapURL = sourceMapURL;\n\n this.sourceMap = sourceMapContent;\n }\n\n return this._css.join('');\n }\n }\n\n return SourceMapOutput;\n}\n","import contexts from './contexts';\nimport Parser from './parser/parser';\nimport LessError from './less-error';\nimport * as utils from './utils';\nimport logger from './logger';\n\nexport default function(environment) {\n // FileInfo = {\n // 'rewriteUrls' - option - whether to adjust URL's to be relative\n // 'filename' - full resolved filename of current file\n // 'rootpath' - path to append to normal URLs for this node\n // 'currentDirectory' - path to the current file, absolute\n // 'rootFilename' - filename of the base file\n // 'entryPath' - absolute path to the entry file\n // 'reference' - whether the file should not be output and only output parts that are referenced\n\n class ImportManager {\n constructor(less, context, rootFileInfo) {\n this.less = less;\n this.rootFilename = rootFileInfo.filename;\n this.paths = context.paths || []; // Search paths, when importing\n this.contents = {}; // map - filename to contents of all the files\n this.contentsIgnoredChars = {}; // map - filename to lines at the beginning of each file to ignore\n this.mime = context.mime;\n this.error = null;\n this.context = context;\n // Deprecated? Unused outside of here, could be useful.\n this.queue = []; // Files which haven't been imported yet\n this.files = {}; // Holds the imported parse trees.\n }\n\n /**\n * Add an import to be imported\n * @param path - the raw path\n * @param tryAppendExtension - whether to try appending a file extension (.less or .js if the path has no extension)\n * @param currentFileInfo - the current file info (used for instance to work out relative paths)\n * @param importOptions - import options\n * @param callback - callback for when it is imported\n */\n push(path, tryAppendExtension, currentFileInfo, importOptions, callback) {\n const importManager = this, pluginLoader = this.context.pluginManager.Loader;\n\n this.queue.push(path);\n\n const fileParsedFunc = function (e, root, fullPath) {\n importManager.queue.splice(importManager.queue.indexOf(path), 1); // Remove the path from the queue\n\n const importedEqualsRoot = fullPath === importManager.rootFilename;\n if (importOptions.optional && e) {\n callback(null, {rules:[]}, false, null);\n logger.info(`The file ${fullPath} was skipped because it was not found and the import was marked optional.`);\n }\n else {\n // Inline imports aren't cached here.\n // If we start to cache them, please make sure they won't conflict with non-inline imports of the\n // same name as they used to do before this comment and the condition below have been added.\n if (!importManager.files[fullPath] && !importOptions.inline) {\n importManager.files[fullPath] = { root, options: importOptions };\n }\n if (e && !importManager.error) { importManager.error = e; }\n callback(e, root, importedEqualsRoot, fullPath);\n }\n };\n\n const newFileInfo = {\n rewriteUrls: this.context.rewriteUrls,\n entryPath: currentFileInfo.entryPath,\n rootpath: currentFileInfo.rootpath,\n rootFilename: currentFileInfo.rootFilename\n };\n\n const fileManager = environment.getFileManager(path, currentFileInfo.currentDirectory, this.context, environment);\n\n if (!fileManager) {\n fileParsedFunc({ message: `Could not find a file-manager for ${path}` });\n return;\n }\n\n const loadFileCallback = function(loadedFile) {\n let plugin;\n const resolvedFilename = loadedFile.filename;\n const contents = loadedFile.contents.replace(/^\\uFEFF/, '');\n\n // Pass on an updated rootpath if path of imported file is relative and file\n // is in a (sub|sup) directory\n //\n // Examples:\n // - If path of imported file is 'module/nav/nav.less' and rootpath is 'less/',\n // then rootpath should become 'less/module/nav/'\n // - If path of imported file is '../mixins.less' and rootpath is 'less/',\n // then rootpath should become 'less/../'\n newFileInfo.currentDirectory = fileManager.getPath(resolvedFilename);\n if (newFileInfo.rewriteUrls) {\n newFileInfo.rootpath = fileManager.join(\n (importManager.context.rootpath || ''),\n fileManager.pathDiff(newFileInfo.currentDirectory, newFileInfo.entryPath));\n\n if (!fileManager.isPathAbsolute(newFileInfo.rootpath) && fileManager.alwaysMakePathsAbsolute()) {\n newFileInfo.rootpath = fileManager.join(newFileInfo.entryPath, newFileInfo.rootpath);\n }\n }\n newFileInfo.filename = resolvedFilename;\n\n const newEnv = new contexts.Parse(importManager.context);\n\n newEnv.processImports = false;\n importManager.contents[resolvedFilename] = contents;\n\n if (currentFileInfo.reference || importOptions.reference) {\n newFileInfo.reference = true;\n }\n\n if (importOptions.isPlugin) {\n plugin = pluginLoader.evalPlugin(contents, newEnv, importManager, importOptions.pluginArgs, newFileInfo);\n if (plugin instanceof LessError) {\n fileParsedFunc(plugin, null, resolvedFilename);\n }\n else {\n fileParsedFunc(null, plugin, resolvedFilename);\n }\n } else if (importOptions.inline) {\n fileParsedFunc(null, contents, resolvedFilename);\n } else {\n // import (multiple) parse trees apparently get altered and can't be cached.\n // TODO: investigate why this is\n if (importManager.files[resolvedFilename]\n && !importManager.files[resolvedFilename].options.multiple\n && !importOptions.multiple) {\n\n fileParsedFunc(null, importManager.files[resolvedFilename].root, resolvedFilename);\n }\n else {\n new Parser(newEnv, importManager, newFileInfo).parse(contents, function (e, root) {\n fileParsedFunc(e, root, resolvedFilename);\n });\n }\n }\n };\n let loadedFile;\n let promise;\n const context = utils.clone(this.context);\n\n if (tryAppendExtension) {\n context.ext = importOptions.isPlugin ? '.js' : '.less';\n }\n\n if (importOptions.isPlugin) {\n context.mime = 'application/javascript';\n\n if (context.syncImport) {\n loadedFile = pluginLoader.loadPluginSync(path, currentFileInfo.currentDirectory, context, environment, fileManager);\n } else {\n promise = pluginLoader.loadPlugin(path, currentFileInfo.currentDirectory, context, environment, fileManager);\n }\n }\n else {\n if (context.syncImport) {\n loadedFile = fileManager.loadFileSync(path, currentFileInfo.currentDirectory, context, environment);\n } else {\n promise = fileManager.loadFile(path, currentFileInfo.currentDirectory, context, environment,\n (err, loadedFile) => {\n if (err) {\n fileParsedFunc(err);\n } else {\n loadFileCallback(loadedFile);\n }\n });\n }\n }\n if (loadedFile) {\n if (!loadedFile.filename) {\n fileParsedFunc(loadedFile);\n } else {\n loadFileCallback(loadedFile);\n }\n } else if (promise) {\n promise.then(loadFileCallback, fileParsedFunc);\n }\n }\n }\n\n return ImportManager;\n}\n","import * as utils from './utils';\n\nexport default function(environment, ParseTree) {\n const render = function (input, options, callback) {\n if (typeof options === 'function') {\n callback = options;\n options = utils.copyOptions(this.options, {});\n }\n else {\n options = utils.copyOptions(this.options, options || {});\n }\n\n if (!callback) {\n const self = this;\n return new Promise(function (resolve, reject) {\n render.call(self, input, options, function(err, output) {\n if (err) {\n reject(err);\n } else {\n resolve(output);\n }\n });\n });\n } else {\n this.parse(input, options, function(err, root, imports, options) {\n if (err) { return callback(err); }\n\n let result;\n try {\n const parseTree = new ParseTree(root, imports);\n result = parseTree.toCSS(options);\n }\n catch (err) { return callback(err); }\n\n callback(null, result);\n });\n }\n };\n\n return render;\n}\n","import contexts from './contexts';\nimport Parser from './parser/parser';\nimport PluginManager from './plugin-manager';\nimport LessError from './less-error';\nimport * as utils from './utils';\n\nexport default function(environment, ParseTree, ImportManager) {\n const parse = function (input, options, callback) {\n\n if (typeof options === 'function') {\n callback = options;\n options = utils.copyOptions(this.options, {});\n }\n else {\n options = utils.copyOptions(this.options, options || {});\n }\n\n if (!callback) {\n const self = this;\n return new Promise(function (resolve, reject) {\n parse.call(self, input, options, function(err, output) {\n if (err) {\n reject(err);\n } else {\n resolve(output);\n }\n });\n });\n } else {\n let context;\n let rootFileInfo;\n const pluginManager = new PluginManager(this, !options.reUsePluginManager);\n\n options.pluginManager = pluginManager;\n\n context = new contexts.Parse(options);\n\n if (options.rootFileInfo) {\n rootFileInfo = options.rootFileInfo;\n } else {\n const filename = options.filename || 'input';\n const entryPath = filename.replace(/[^/\\\\]*$/, '');\n rootFileInfo = {\n filename,\n rewriteUrls: context.rewriteUrls,\n rootpath: context.rootpath || '',\n currentDirectory: entryPath,\n entryPath,\n rootFilename: filename\n };\n // add in a missing trailing slash\n if (rootFileInfo.rootpath && rootFileInfo.rootpath.slice(-1) !== '/') {\n rootFileInfo.rootpath += '/';\n }\n }\n\n const imports = new ImportManager(this, context, rootFileInfo);\n this.importManager = imports;\n\n // TODO: allow the plugins to be just a list of paths or names\n // Do an async plugin queue like lessc\n\n if (options.plugins) {\n options.plugins.forEach(function(plugin) {\n let evalResult, contents;\n if (plugin.fileContent) {\n contents = plugin.fileContent.replace(/^\\uFEFF/, '');\n evalResult = pluginManager.Loader.evalPlugin(contents, context, imports, plugin.options, plugin.filename);\n if (evalResult instanceof LessError) {\n return callback(evalResult);\n }\n }\n else {\n pluginManager.addPlugin(plugin);\n }\n });\n }\n\n new Parser(context, imports, rootFileInfo)\n .parse(input, function (e, root) {\n if (e) { return callback(e); }\n callback(null, root, imports, options);\n }, options);\n }\n };\n return parse;\n}\n","/**\n * @todo Add tests for browser `@plugin`\n */\nimport AbstractPluginLoader from '../less/environment/abstract-plugin-loader.js';\n\n/**\n * Browser Plugin Loader\n */\nconst PluginLoader = function(less) {\n this.less = less;\n // Should we shim this.require for browser? Probably not?\n};\n\nPluginLoader.prototype = Object.assign(new AbstractPluginLoader(), {\n loadPlugin(filename, basePath, context, environment, fileManager) {\n return new Promise((fulfill, reject) => {\n fileManager.loadFile(filename, basePath, context, environment)\n .then(fulfill).catch(reject);\n });\n }\n});\n\nexport default PluginLoader;\n\n","export default (less, options) => {\n const logLevel_debug = 4;\n const logLevel_info = 3;\n const logLevel_warn = 2;\n const logLevel_error = 1;\n\n // The amount of logging in the javascript console.\n // 3 - Debug, information and errors\n // 2 - Information and errors\n // 1 - Errors\n // 0 - None\n // Defaults to 2\n options.logLevel = typeof options.logLevel !== 'undefined' ? options.logLevel : (options.env === 'development' ? logLevel_info : logLevel_error);\n\n if (!options.loggers) {\n options.loggers = [{\n debug: function(msg) {\n if (options.logLevel >= logLevel_debug) {\n console.log(msg);\n }\n },\n info: function(msg) {\n if (options.logLevel >= logLevel_info) {\n console.log(msg);\n }\n },\n warn: function(msg) {\n if (options.logLevel >= logLevel_warn) {\n console.warn(msg);\n }\n },\n error: function(msg) {\n if (options.logLevel >= logLevel_error) {\n console.error(msg);\n }\n }\n }];\n }\n for (let i = 0; i < options.loggers.length; i++) {\n less.logger.addListener(options.loggers[i]);\n }\n};\n","import * as utils from './utils';\nimport browser from './browser';\n\nexport default (window, less, options) => {\n\n function errorHTML(e, rootHref) {\n const id = `less-error-message:${utils.extractId(rootHref || '')}`;\n const template = '{line} {content} ';\n const elem = window.document.createElement('div');\n let timer;\n let content;\n const errors = [];\n const filename = e.filename || rootHref;\n const filenameNoPath = filename.match(/([^/]+(\\?.*)?)$/)[1];\n\n elem.id = id;\n elem.className = 'less-error-message';\n\n content = `${e.type || 'Syntax'}Error: ${e.message || 'There is an error in your .less file'}` + \n ` in ${filenameNoPath} `;\n\n const errorline = (e, i, classname) => {\n if (e.extract[i] !== undefined) {\n errors.push(template.replace(/\\{line\\}/, (parseInt(e.line, 10) || 0) + (i - 1))\n .replace(/\\{class\\}/, classname)\n .replace(/\\{content\\}/, e.extract[i]));\n }\n };\n\n if (e.line) {\n errorline(e, 0, '');\n errorline(e, 1, 'line');\n errorline(e, 2, '');\n content += `on line ${e.line}, column ${e.column + 1}:
`;\n }\n if (e.stack && (e.extract || options.logLevel >= 4)) {\n content += ` Stack Trace${e.stack.split('\\n').slice(1).join(' ')}`;\n }\n elem.innerHTML = content;\n\n // CSS for error messages\n browser.createCSS(window.document, [\n '.less-error-message ul, .less-error-message li {',\n 'list-style-type: none;',\n 'margin-right: 15px;',\n 'padding: 4px 0;',\n 'margin: 0;',\n '}',\n '.less-error-message label {',\n 'font-size: 12px;',\n 'margin-right: 15px;',\n 'padding: 4px 0;',\n 'color: #cc7777;',\n '}',\n '.less-error-message pre {',\n 'color: #dd6666;',\n 'padding: 4px 0;',\n 'margin: 0;',\n 'display: inline-block;',\n '}',\n '.less-error-message pre.line {',\n 'color: #ff0000;',\n '}',\n '.less-error-message h3 {',\n 'font-size: 20px;',\n 'font-weight: bold;',\n 'padding: 15px 0 5px 0;',\n 'margin: 0;',\n '}',\n '.less-error-message a {',\n 'color: #10a',\n '}',\n '.less-error-message .error {',\n 'color: red;',\n 'font-weight: bold;',\n 'padding-bottom: 2px;',\n 'border-bottom: 1px dashed red;',\n '}'\n ].join('\\n'), { title: 'error-message' });\n\n elem.style.cssText = [\n 'font-family: Arial, sans-serif',\n 'border: 1px solid #e00',\n 'background-color: #eee',\n 'border-radius: 5px',\n '-webkit-border-radius: 5px',\n '-moz-border-radius: 5px',\n 'color: #e00',\n 'padding: 15px',\n 'margin-bottom: 15px'\n ].join(';');\n\n if (options.env === 'development') {\n timer = setInterval(() => {\n const document = window.document;\n const body = document.body;\n if (body) {\n if (document.getElementById(id)) {\n body.replaceChild(elem, document.getElementById(id));\n } else {\n body.insertBefore(elem, body.firstChild);\n }\n clearInterval(timer);\n }\n }, 10);\n }\n }\n\n function removeErrorHTML(path) {\n const node = window.document.getElementById(`less-error-message:${utils.extractId(path)}`);\n if (node) {\n node.parentNode.removeChild(node);\n }\n }\n\n function removeErrorConsole() {\n // no action\n }\n\n function removeError(path) {\n if (!options.errorReporting || options.errorReporting === 'html') {\n removeErrorHTML(path);\n } else if (options.errorReporting === 'console') {\n removeErrorConsole(path);\n } else if (typeof options.errorReporting === 'function') {\n options.errorReporting('remove', path);\n }\n }\n\n function errorConsole(e, rootHref) {\n const template = '{line} {content}';\n const filename = e.filename || rootHref;\n const errors = [];\n let content = `${e.type || 'Syntax'}Error: ${e.message || 'There is an error in your .less file'} in ${filename}`;\n\n const errorline = (e, i, classname) => {\n if (e.extract[i] !== undefined) {\n errors.push(template.replace(/\\{line\\}/, (parseInt(e.line, 10) || 0) + (i - 1))\n .replace(/\\{class\\}/, classname)\n .replace(/\\{content\\}/, e.extract[i]));\n }\n };\n\n if (e.line) {\n errorline(e, 0, '');\n errorline(e, 1, 'line');\n errorline(e, 2, '');\n content += ` on line ${e.line}, column ${e.column + 1}:\\n${errors.join('\\n')}`;\n }\n if (e.stack && (e.extract || options.logLevel >= 4)) {\n content += `\\nStack Trace\\n${e.stack}`;\n }\n less.logger.error(content);\n }\n\n function error(e, rootHref) {\n if (!options.errorReporting || options.errorReporting === 'html') {\n errorHTML(e, rootHref);\n } else if (options.errorReporting === 'console') {\n errorConsole(e, rootHref);\n } else if (typeof options.errorReporting === 'function') {\n options.errorReporting('add', e, rootHref);\n }\n }\n\n return {\n add: error,\n remove: removeError\n };\n};\n","/**\n * Kicks off less and compiles any stylesheets\n * used in the browser distributed version of less\n * to kick-start less using the browser api\n */\nimport defaultOptions from '../less/default-options';\nimport addDefaultOptions from './add-default-options';\nimport root from './index';\n\nconst options = defaultOptions();\n\nif (window.less) {\n for (const key in window.less) {\n if (Object.prototype.hasOwnProperty.call(window.less, key)) {\n options[key] = window.less[key];\n }\n }\n}\naddDefaultOptions(window, options);\n\noptions.plugins = options.plugins || [];\n\nif (window.LESS_PLUGINS) {\n options.plugins = options.plugins.concat(window.LESS_PLUGINS);\n}\n\nconst less = root(window, options);\nexport default less;\n\nwindow.less = less;\n\nlet css;\nlet head;\nlet style;\n\n// Always restore page visibility\nfunction resolveOrReject(data) {\n if (data.filename) {\n console.warn(data);\n }\n if (!options.async) {\n head.removeChild(style);\n }\n}\n\nif (options.onReady) {\n if (/!watch/.test(window.location.hash)) {\n less.watch();\n }\n // Simulate synchronous stylesheet loading by hiding page rendering\n if (!options.async) {\n css = 'body { display: none !important }';\n head = document.head || document.getElementsByTagName('head')[0];\n style = document.createElement('style');\n\n style.type = 'text/css';\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n\n head.appendChild(style);\n }\n less.registerStylesheetsImmediately();\n less.pageLoadFinished = less.refresh(less.env === 'development').then(resolveOrReject, resolveOrReject);\n}\n","// Export a new default each time\nexport default function() {\n return {\n /* Inline Javascript - @plugin still allowed */\n javascriptEnabled: false,\n\n /* Outputs a makefile import dependency list to stdout. */\n depends: false,\n\n /* (DEPRECATED) Compress using less built-in compression. \n * This does an okay job but does not utilise all the tricks of \n * dedicated css compression. */\n compress: false,\n\n /* Runs the less parser and just reports errors without any output. */\n lint: false,\n\n /* Sets available include paths.\n * If the file in an @import rule does not exist at that exact location, \n * less will look for it at the location(s) passed to this option. \n * You might use this for instance to specify a path to a library which \n * you want to be referenced simply and relatively in the less files. */\n paths: [],\n\n /* color output in the terminal */\n color: true,\n\n /* The strictImports controls whether the compiler will allow an @import inside of either \n * @media blocks or (a later addition) other selector blocks.\n * See: https://github.com/less/less.js/issues/656 */\n strictImports: false,\n\n /* Allow Imports from Insecure HTTPS Hosts */\n insecure: false,\n\n /* Allows you to add a path to every generated import and url in your css. \n * This does not affect less import statements that are processed, just ones \n * that are left in the output css. */\n rootpath: '',\n\n /* By default URLs are kept as-is, so if you import a file in a sub-directory \n * that references an image, exactly the same URL will be output in the css. \n * This option allows you to re-write URL's in imported files so that the \n * URL is always relative to the base imported file */\n rewriteUrls: false,\n\n /* How to process math \n * 0 always - eagerly try to solve all operations\n * 1 parens-division - require parens for division \"/\"\n * 2 parens | strict - require parens for all operations\n * 3 strict-legacy - legacy strict behavior (super-strict)\n */\n math: 1,\n\n /* Without this option, less attempts to guess at the output unit when it does maths. */\n strictUnits: false,\n\n /* Effectively the declaration is put at the top of your base Less file, \n * meaning it can be used but it also can be overridden if this variable \n * is defined in the file. */\n globalVars: null,\n\n /* As opposed to the global variable option, this puts the declaration at the\n * end of your base file, meaning it will override anything defined in your Less file. */\n modifyVars: null,\n\n /* This option allows you to specify a argument to go on to every URL. */\n urlArgs: ''\n }\n}","import {addDataAttr} from './utils';\nimport browser from './browser';\n\nexport default (window, options) => {\n\n // use options from the current script tag data attribues\n addDataAttr(options, browser.currentScript(window));\n\n if (options.isFileProtocol === undefined) {\n options.isFileProtocol = /^(file|(chrome|safari)(-extension)?|resource|qrc|app):/.test(window.location.protocol);\n }\n\n // Load styles asynchronously (default: false)\n //\n // This is set to `false` by default, so that the body\n // doesn't start loading before the stylesheets are parsed.\n // Setting this to `true` can result in flickering.\n //\n options.async = options.async || false;\n options.fileAsync = options.fileAsync || false;\n\n // Interval between watch polls\n options.poll = options.poll || (options.isFileProtocol ? 1000 : 1500);\n\n options.env = options.env || (window.location.hostname == '127.0.0.1' ||\n window.location.hostname == '0.0.0.0' ||\n window.location.hostname == 'localhost' ||\n (window.location.port &&\n window.location.port.length > 0) ||\n options.isFileProtocol ? 'development'\n : 'production');\n\n const dumpLineNumbers = /!dumpLineNumbers:(comments|mediaquery|all)/.exec(window.location.hash);\n if (dumpLineNumbers) {\n options.dumpLineNumbers = dumpLineNumbers[1];\n }\n\n if (options.useFileCache === undefined) {\n options.useFileCache = true;\n }\n\n if (options.onReady === undefined) {\n options.onReady = true;\n }\n\n if (options.relativeUrls) {\n options.rewriteUrls = 'all';\n }\n};\n","//\n// index.js\n// Should expose the additional browser functions on to the less object\n//\nimport {addDataAttr} from './utils';\nimport lessRoot from '../less';\nimport browser from './browser';\nimport FM from './file-manager';\nimport PluginLoader from './plugin-loader';\nimport LogListener from './log-listener';\nimport ErrorReporting from './error-reporting';\nimport Cache from './cache';\nimport ImageSize from './image-size';\n\nexport default (window, options) => {\n const document = window.document;\n const less = lessRoot();\n\n less.options = options;\n const environment = less.environment;\n const FileManager = FM(options, less.logger);\n const fileManager = new FileManager();\n environment.addFileManager(fileManager);\n less.FileManager = FileManager;\n less.PluginLoader = PluginLoader;\n\n LogListener(less, options);\n const errors = ErrorReporting(window, less, options);\n const cache = less.cache = options.cache || Cache(window, options, less.logger);\n ImageSize(less.environment);\n\n // Setup user functions - Deprecate?\n if (options.functions) {\n less.functions.functionRegistry.addMultiple(options.functions);\n }\n\n const typePattern = /^text\\/(x-)?less$/;\n\n function clone(obj) {\n const cloned = {};\n for (const prop in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, prop)) {\n cloned[prop] = obj[prop];\n }\n }\n return cloned;\n }\n\n // only really needed for phantom\n function bind(func, thisArg) {\n const curryArgs = Array.prototype.slice.call(arguments, 2);\n return function() {\n const args = curryArgs.concat(Array.prototype.slice.call(arguments, 0));\n return func.apply(thisArg, args);\n };\n }\n\n function loadStyles(modifyVars) {\n const styles = document.getElementsByTagName('style');\n let style;\n\n for (let i = 0; i < styles.length; i++) {\n style = styles[i];\n if (style.type.match(typePattern)) {\n const instanceOptions = clone(options);\n instanceOptions.modifyVars = modifyVars;\n const lessText = style.innerHTML || '';\n instanceOptions.filename = document.location.href.replace(/#.*$/, '');\n\n /* jshint loopfunc:true */\n // use closure to store current style\n less.render(lessText, instanceOptions,\n bind((style, e, result) => {\n if (e) {\n errors.add(e, 'inline');\n } else {\n style.type = 'text/css';\n if (style.styleSheet) {\n style.styleSheet.cssText = result.css;\n } else {\n style.innerHTML = result.css;\n }\n }\n }, null, style));\n }\n }\n }\n\n function loadStyleSheet(sheet, callback, reload, remaining, modifyVars) {\n\n const instanceOptions = clone(options);\n addDataAttr(instanceOptions, sheet);\n instanceOptions.mime = sheet.type;\n\n if (modifyVars) {\n instanceOptions.modifyVars = modifyVars;\n }\n\n function loadInitialFileCallback(loadedFile) {\n const data = loadedFile.contents;\n const path = loadedFile.filename;\n const webInfo = loadedFile.webInfo;\n\n const newFileInfo = {\n currentDirectory: fileManager.getPath(path),\n filename: path,\n rootFilename: path,\n rewriteUrls: instanceOptions.rewriteUrls\n };\n\n newFileInfo.entryPath = newFileInfo.currentDirectory;\n newFileInfo.rootpath = instanceOptions.rootpath || newFileInfo.currentDirectory;\n\n if (webInfo) {\n webInfo.remaining = remaining;\n\n const css = cache.getCSS(path, webInfo, instanceOptions.modifyVars);\n if (!reload && css) {\n webInfo.local = true;\n callback(null, css, data, sheet, webInfo, path);\n return;\n }\n\n }\n\n // TODO add tests around how this behaves when reloading\n errors.remove(path);\n\n instanceOptions.rootFileInfo = newFileInfo;\n less.render(data, instanceOptions, (e, result) => {\n if (e) {\n e.href = path;\n callback(e);\n } else {\n cache.setCSS(sheet.href, webInfo.lastModified, instanceOptions.modifyVars, result.css);\n callback(null, result.css, data, sheet, webInfo, path);\n }\n });\n }\n\n fileManager.loadFile(sheet.href, null, instanceOptions, environment)\n .then(loadedFile => {\n loadInitialFileCallback(loadedFile);\n }).catch(err => {\n console.log(err);\n callback(err);\n });\n\n }\n\n function loadStyleSheets(callback, reload, modifyVars) {\n for (let i = 0; i < less.sheets.length; i++) {\n loadStyleSheet(less.sheets[i], callback, reload, less.sheets.length - (i + 1), modifyVars);\n }\n }\n\n function initRunningMode() {\n if (less.env === 'development') {\n less.watchTimer = setInterval(() => {\n if (less.watchMode) {\n fileManager.clearFileCache();\n /**\n * @todo remove when this is typed with JSDoc\n */\n // eslint-disable-next-line no-unused-vars\n loadStyleSheets((e, css, _, sheet, webInfo) => {\n if (e) {\n errors.add(e, e.href || sheet.href);\n } else if (css) {\n browser.createCSS(window.document, css, sheet);\n }\n });\n }\n }, options.poll);\n }\n }\n\n //\n // Watch mode\n //\n less.watch = function () {\n if (!less.watchMode ) {\n less.env = 'development';\n initRunningMode();\n }\n this.watchMode = true;\n return true;\n };\n\n less.unwatch = function () {clearInterval(less.watchTimer); this.watchMode = false; return false; };\n\n //\n // Synchronously get all tags with the 'rel' attribute set to\n // \"stylesheet/less\".\n //\n less.registerStylesheetsImmediately = () => {\n const links = document.getElementsByTagName('link');\n less.sheets = [];\n\n for (let i = 0; i < links.length; i++) {\n if (links[i].rel === 'stylesheet/less' || (links[i].rel.match(/stylesheet/) &&\n (links[i].type.match(typePattern)))) {\n less.sheets.push(links[i]);\n }\n }\n };\n\n //\n // Asynchronously get all tags with the 'rel' attribute set to\n // \"stylesheet/less\", returning a Promise.\n //\n less.registerStylesheets = () => new Promise((resolve) => {\n less.registerStylesheetsImmediately();\n resolve();\n });\n\n //\n // With this function, it's possible to alter variables and re-render\n // CSS without reloading less-files\n //\n less.modifyVars = record => less.refresh(true, record, false);\n\n less.refresh = (reload, modifyVars, clearFileCache) => {\n if ((reload || clearFileCache) && clearFileCache !== false) {\n fileManager.clearFileCache();\n }\n return new Promise((resolve, reject) => {\n let startTime;\n let endTime;\n let totalMilliseconds;\n let remainingSheets;\n startTime = endTime = new Date();\n\n // Set counter for remaining unprocessed sheets\n remainingSheets = less.sheets.length;\n\n if (remainingSheets === 0) {\n\n endTime = new Date();\n totalMilliseconds = endTime - startTime;\n less.logger.info('Less has finished and no sheets were loaded.');\n resolve({\n startTime,\n endTime,\n totalMilliseconds,\n sheets: less.sheets.length\n });\n\n } else {\n // Relies on less.sheets array, callback seems to be guaranteed to be called for every element of the array\n loadStyleSheets((e, css, _, sheet, webInfo) => {\n if (e) {\n errors.add(e, e.href || sheet.href);\n reject(e);\n return;\n }\n if (webInfo.local) {\n less.logger.info(`Loading ${sheet.href} from cache.`);\n } else {\n less.logger.info(`Rendered ${sheet.href} successfully.`);\n }\n browser.createCSS(window.document, css, sheet);\n less.logger.info(`CSS for ${sheet.href} generated in ${new Date() - endTime}ms`);\n\n // Count completed sheet\n remainingSheets--;\n\n // Check if the last remaining sheet was processed and then call the promise\n if (remainingSheets === 0) {\n totalMilliseconds = new Date() - startTime;\n less.logger.info(`Less has finished. CSS generated in ${totalMilliseconds}ms`);\n resolve({\n startTime,\n endTime,\n totalMilliseconds,\n sheets: less.sheets.length\n });\n }\n endTime = new Date();\n }, reload, modifyVars);\n }\n\n loadStyles(modifyVars);\n });\n };\n\n less.refreshStyles = loadStyles;\n return less;\n};\n","// Cache system is a bit outdated and could do with work\n\nexport default (window, options, logger) => {\n let cache = null;\n if (options.env !== 'development') {\n try {\n cache = (typeof window.localStorage === 'undefined') ? null : window.localStorage;\n } catch (_) {}\n }\n return {\n setCSS: function(path, lastModified, modifyVars, styles) {\n if (cache) {\n logger.info(`saving ${path} to cache.`);\n try {\n cache.setItem(path, styles);\n cache.setItem(`${path}:timestamp`, lastModified);\n if (modifyVars) {\n cache.setItem(`${path}:vars`, JSON.stringify(modifyVars));\n }\n } catch (e) {\n // TODO - could do with adding more robust error handling\n logger.error(`failed to save \"${path}\" to local storage for caching.`);\n }\n }\n },\n getCSS: function(path, webInfo, modifyVars) {\n const css = cache && cache.getItem(path);\n const timestamp = cache && cache.getItem(`${path}:timestamp`);\n let vars = cache && cache.getItem(`${path}:vars`);\n\n modifyVars = modifyVars || {};\n vars = vars || '{}'; // if not set, treat as the JSON representation of an empty object\n\n if (timestamp && webInfo.lastModified &&\n (new Date(webInfo.lastModified).valueOf() ===\n new Date(timestamp).valueOf()) &&\n JSON.stringify(modifyVars) === vars) {\n // Use local copy\n return css;\n }\n }\n };\n};\n","\nimport functionRegistry from './../less/functions/function-registry';\n\nexport default () => {\n function imageSize() {\n throw {\n type: 'Runtime',\n message: 'Image size functions are not supported in browser version of less'\n };\n }\n\n const imageFunctions = {\n 'image-size': function(filePathNode) {\n imageSize(this, filePathNode);\n return -1;\n },\n 'image-width': function(filePathNode) {\n imageSize(this, filePathNode);\n return -1;\n },\n 'image-height': function(filePathNode) {\n imageSize(this, filePathNode);\n return -1;\n }\n };\n\n functionRegistry.addMultiple(imageFunctions);\n};\n"],"names":["extractId","href","replace","addDataAttr","options","tag","opt","dataset","Object","prototype","hasOwnProperty","call","JSON","parse","_","browser","document","styles","sheet","id","concat","title","utils.extractId","oldStyleNode","getElementById","keepOldStyleNode","styleNode","createElement","setAttribute","media","styleSheet","appendChild","createTextNode","childNodes","length","firstChild","nodeValue","head","getElementsByTagName","nextEl","nextSibling","parentNode","insertBefore","removeChild","cssText","e","Error","window","scripts","currentScript","logger$1","error","msg","this","_fireEvent","warn","info","debug","addListener","listener","_listeners","push","removeListener","i_1","splice","type","i_2","logFunction","Environment","externalEnvironment","fileManagers","requiredFunctions","functions","propName","environmentFunc","bind","getFileManager","filename","currentDirectory","environment","isSync","logger","undefined","pluginManager","getFileManagers","fileManager","addFileManager","clearFileManagers","colors","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgrey","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","grey","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgrey","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","unitConversions","m","cm","mm","in","px","pt","pc","duration","s","ms","angle","rad","Math","PI","deg","grad","turn","data","Node","parent","visibilityBlocks","nodeVisible","rootNode","parsed","defineProperty","get","fileInfo","getIndex","setParent","nodes","set","node","Array","isArray","forEach","_index","_fileInfo","isRulesetLike","toCSS","context","strs","genCSS","add","chunk","index","isEmpty","join","output","value","accept","visitor","visit","eval","_operate","op","a","b","fround","precision","numPrecision","Number","toFixed","compare","numericCompare","blocksVisibility","addVisibilityBlock","removeVisibilityBlock","ensureVisibility","ensureInvisibility","isVisible","visibilityInfo","copyVisibilityInfo","Color","rgb","originalForm","self","match","map","c","i","parseInt","alpha","split","clamp","v","max","min","toHex","round","toString","assign","luma","r","g","pow","doNotCompress","color","colorFunction","compress","args","indexOf","toHSL","h","l","toRGB","splitcolor","operate","other","d","toHSV","toARGB","x","fromKeyword","keyword","key","toLowerCase","slice","Paren","_noSpaceCombinators"," ","|","Combinator","emptyOrWhitespace","trim","spaceOrEmpty","Element","combinator","isVariable","currentFileInfo","clone","firstSelector","charAt","ALWAYS","PARENS_DIVISION","PARENS","RewriteUrls","__assign","t","n","arguments","p","apply","__spreadArray","to","from","pack","ar","getType","payload","copy","target","item","constructor","getPrototypeOf","props","getOwnPropertyNames","symbols","getOwnPropertySymbols","reduce","carry","includes","newVal","originalObject","includeNonenumerable","propType","propertyIsEnumerable","enumerable","writable","configurable","assignProp","nonenumerable","getLocation","inputStream","line","column","copyArray","arr","obj","cloned","prop","defaults","obj1","obj2","newObj","_defaults","defaults_1","copyOptions","opts","strictMath","math","Constants.Math","relativeUrls","rewriteUrls","Constants.RewriteUrls","flattenArray","result","length_1","isNullOrUndefined","val","SuppressedError","anonymousFunc","LessError","fileContentMap","currentFilename","message","stack","input","contents","loc","utils.getLocation","col","callLine","lines","found","func","Function","lineAdjust","callExtract","extract","create","F","stylize","str","errorTxt","substr","_visitArgs","visitDeeper","_hasIndexed","_noop","Visitor","implementation","_implementation","_visitInCache","_visitOutCache","indexNodeTypes","ticker","child","typeIndex","tree","nodeTypeIndex","fnName","impl","funcOut","visitArgs","newNode","isReplacing","cnt","visitArray","nonReplacing","out","evald","flatten","nestedCnt","j","nestedItem","contexts","copyFromOriginal","original","destination","propertiesToCopy","parseCopyProperties","Parse","paths","evalCopyProperties","isPathRelative","path","test","isPathLocalRelative","Eval","frames","importantScope","enterCalc","calcStack","inCalc","exitCalc","pop","inParenthesis","parensStack","outOfParenthesis","mathOn","isMathOn","pathRequiresRewrite","rewritePath","rootpath","newPath","normalizePath","segment","segments","reverse","ImportSequencer","onSequencerEmpty","imports","variableImports","_onSequencerEmpty","_currentDepth","addImport","callback","importSequencer","importItem","isReady","tryRun","addVariableImport","variableImport","ImportVisitor","importer","finish","_visitor","_importer","_finish","importCount","onceFileDetectionMap","recursionDetector","_sequencer","run","root","isFinished","visitImport","importNode","inlineCSS","inline","css","utils.copyArray","importParent","isVariableImport","processImportNode","evaldImportNode","evalForImport","multiple","importMultiple","tryAppendLessExtension","rules","onImported","sequencedOnImported","getPath","importedAtRoot","fullPath","importVisitor","isPlugin","isOptional","optional","duplicateImport","skip","importedFilename","oldContext","visitDeclaration","declNode","unshift","visitDeclarationOut","shift","visitAtRule","atRuleNode","visitAtRuleOut","visitMixinDefinition","mixinDefinitionNode","visitMixinDefinitionOut","visitRuleset","rulesetNode","visitRulesetOut","visitMedia","mediaNode","visitMediaOut","SetTreeVisibilityVisitor","visible","ExtendFinderVisitor","allExtendsStack","allExtends","extend","extendList","allSelectorsExtendList","ruleCnt","Extend","extendOnEveryPath","selectorPath","selExtendList","allSelectorsExtend","foundExtends","findSelfSelectors","ruleset","firstExtendOnThisSelectorPath","selectors","ProcessExtendsVisitor","extendFinder","extendIndices","doExtendChaining","newRoot","checkExtendsForNonMatched","indices","filter","hasFoundMatches","parent_ids","selector","extendsList","extendsListTarget","iterationCount","extendIndex","targetExtendIndex","matches","newSelector","targetExtend","newExtend","extendsToAdd","extendVisitor","object_id","selfSelectors","findMatch","selfSelector","extendSelector","option","extendChainCount","selectorOne","selectorTwo","ruleNode","visitSelector","selectorNode","pathIndex","selectorsToAdd","extendedSelectors","haystackSelectorPath","haystackSelectorIndex","hackstackSelector","hackstackElementIndex","haystackElement","targetCombinator","potentialMatch","needleElements","elements","potentialMatches","allowBefore","matched","initialCombinator","isElementValuesEqual","finished","allowAfter","endPathIndex","endPathElementIndex","elementValue1","elementValue2","Attribute","Selector","replacementSelector","matchIndex","firstElement","newElements","currentSelectorPathIndex","currentSelectorPathElementIndex","currentValue","derived","createDerived","newAllExtends","lastIndex","JoinSelectorVisitor","getIsOutput","joinSelectors","multiMedia","isRooted","CSSVisitorUtils","_context","containsSilentNonBlockedChild","bodyRules","rule","isSilent","keepOnlyVisibleChilds","owner","thing","hasVisibleSelector","resolveVisibility","compiledRulesBody","isVisibleRuleset","firstRoot","ToCSSVisitor","utils","variable","mixinNode","visitExtend","extendNode","visitComment","commentNode","originalRules","visitAtRuleWithBody","visitAtRuleWithoutBody","visitAnonymous","anonymousNode","nodeRules","hasFakeRuleset","getBodyRules","_mergeRules","name","charset","debugInfo","comment","Comment","checkValidNodes","isRoot","Declaration","Call","allowRoot","rulesets","_compileRulesetPaths","nodeRuleCnt","_removeDuplicateRules","ruleList","ruleCache","ruleCSS","groups","groupsArr","i_3","merge","group","result_1","space_1","comma_1","Expression","important","Value","visitors","MarkVisibleSelectorsVisitor","ExtendVisitor","getParserInput","furthest","furthestPossibleErrorMessage","chunks","current","currentPos","saveStack","parserInput","skipWhitespace","nextChar","oldi","oldj","curr","endIndex","mem","inp","charCodeAt","autoCommentAbsorb","isLineComment","nextNewLine","text","commentStore","nextStarSlash","save","restore","possibleErrorMessage","state","forget","isWhitespace","offset","pos","code","$re","tok","exec","$char","$peekChar","$str","tokLength","$quoted","startChar","currentPosition","$parseUntil","testChar","quote","returnVal","inComment","blockDepth","blockStack","parseGroups","startPos","lastPos","loop","char","expected","peek","peekChar","currentChar","prevChar","getInput","peekNotNumeric","start","chunkInput","failFunction","fail","lastOpening","lastOpeningParen","lastMultiComment","lastMultiCommentEndBrace","chunkerCurrentIndex","currentChunkStartIndex","cc","cc2","len","level","parenLevel","emitFrom","emitChunk","force","String","fromCharCode","chunker","end","furthestReachedEnd","furthestChar","functionRegistry","makeRegistry","base","_data","addMultiple","_this","keys","getLocalFunctions","inherit","MediaSyntaxOptions","queryInParens","ContainerSyntaxOptions","Anonymous","mapLines","rulesetLike","Boolean","Parser","currentIndex","parsers","expect","arg","expectChar","getDebugInfo","lineNumber","fileName","parseNode","parseList","returnNodes","parser","additionalData","globalVars","modifyVars","ignored","err","preText","disablePluginRule","plugin","serializeVars","preProcessors","getPreProcessors","process","banner","contentsIgnoredChars","Ruleset","primary","endInfo","processImports","mixin","extendRule","definition","declaration","variableCall","entities","atrule","foundSemiColon","mixinLookup","quoted","forceEscaped","isEscaped","k","customFuncCall","stop","declarationCall","validCall","substring","ruleProperty","f","ieAlpha","boolean","condition","if","prevArgs","isSemiColonSeparated","argsComma","argsSemiColon","detachedRuleset","assignment","expression","literal","dimension","unicodeDescriptor","entity","url","property","Variable","Property","ch","variableCurly","curly","propertyCurly","colorKeyword","ud","javascript","js","escape","parsedName","lookups","inValue","ruleLookups","VariableCall","NamespaceValue","isRule","element","getLookup","hasParens","elem","elemIndex","re","isCall","expressionContainsNamed","nameLoop","expand","returner","variadic","expressions","hasSep","throwAwayComments","cond","params","argInfo","conditions","block","lookupValue","Quoted","attribute","slashedCombinator","isLess","when","ele","cif","content","blockRuleset","Definition","DetachedRuleset","dumpLineNumbers","strictImports","hasDR","permissiveValue","anonymousValue","untilTokens","done","testCurrentChar","startsWith","variableRegex","propRegex","import","features","dir","importOptions","mediaFeatures","o","optionName","importOption","mediaFeature","syntaxOptions","rangeP","atomicCondition","rvalue","lvalue","prepareAndGetNestableAtRule","treeType","atRule","nestableAtRule","Media","Container","pluginArgs","nonVendorSpecificName","hasIdentifier","hasExpression","hasUnknown","hasBlock","sub","addition","parens","multiplication","operation","isSpaced","operand","parensInOp","needsParens","logical","next","conditionAnd","negatedCondition","parenthesisCondition","negate","body","me","tryConditionFollowedByParenthesis","preparsedCond","delim","simpleProperty","vars","name_1","evaldCondition","getElements","mixinElements_","utils.isNullOrUndefined","mediaEmpty","els","importManager","createEmptySelectors","el","sels","olen","mixinElements","isJustParentSelector","Keyword","True","False","MATH","asComment","ctx","asMediaQuery","filenameWithProtocol","lineSeparator","lastRule","prevMath","evaldValue","mathBypass","evalName","importantResult","makeImportant","isCompressed","defaultFunc","value_","error_","reset","_lookups","_variables","_properties","isRuleset","selCnt","hasVariable","hasOnePassingSelector","toParseSelectors","startingIndex","selectorFileInfo","utils.flattenArray","subRule","originalRuleset","allowImports","globalFunctionRegistry","ctxFrames","ctxSelectors","evalImports","rsRules","evalFirst","mediaBlockCount","mediaBlocks","resetCache","bubbleSelectors","importRules","matchArgs","matchCondition","lastSelector","_rulesets","variables","hash","properties","name_2","decl","parseValue","lastDeclaration","toParse","transformDeclaration","nodes_1","filtRules","prependRule","find","foundMixins","ruleNodes","tabLevel","sep","tabRuleStr","tabSetStr","charsetNodeIndex","importNodeIndex","isCharset","pathCnt","pathSubCnt","currentLastRule","joinSelector","createParenthesis","elementsToPak","originalElement","replacementParen","insideParent","createSelector","containedElement","addReplacementIntoPath","beginningPath","addPath","replacedElement","originalSelector","newSelectorPath","newJoinedSelector","parentEl","restOfPath","addAllReplacementsIntoPath","addPaths","mergeElementsOnToSelectors","sel","deriveSelector","deriveFrom","newPaths","replaceParentSelector","inSelector","currentElements","newSelectors","selectorsMultiplied","maybeSelector","hadParentSelector","nestedSelector","replaced","nestedPaths","replacedNewSelectors","concatenated","AtRule","outputRuleset","mediaPathBackup","mediaBlocksBackup","mediaPath","callEval","Unit","numerator","denominator","backupUnit","sort","strictUnits","returnStr","is","unitString","toUpperCase","isLength","RegExp","isSingular","usedUnits","mapUnit","groupName","atomicUnit","cancel","counter","count","Dimension","unit","parseFloat","isNaN","toColor","strValue","convertTo","unify","conversions","targetUnit","applyUnit","derivedConversions","Operation","operands","noSpacing","returnValue","doubleParen","functionCaller","isValid","evalArgs","commentFilter","subNodes","calc","currentMathContext","funcCaller","FunctionCaller","columnNumber","evaluating","frame","fun","mergeRules","less","vArr","escaped","containsVariables","that","iterativeReplace","regexp","replacementFnc","evaluatedValue","URL","isEvald","urlArgs","NestableAtRulePrototype","evalTop","evalNested","permute","fragment","rest","Import","pathValue","reference","evalPath","doEval","registry","newImport","JsEvalNode","evaluateJavaScript","evalContext","javascriptEnabled","jsify","toJS","JavaScript","string","Assignment","Condition","QueryInParens","op2","mvalue","mvalues","variableDeclaration","mvalueCopy","UnicodeDescriptor","Negative","next_id","selectorElements","selfElements","ruleCall","arity","optionalParameters","required","evalParams","mixinEnv","evaldArguments","varargs","isNamedFound","argIndex","argsLength","evalCall","_arguments","mixinFrames","allArgsCnt","requiredArgsCnt","MixinCall","mixins","mixinPath","argValue","isRecursive","isOneFound","candidate","defaultResult","noArgumentsFilter","candidates","conditionResult","calcDefGroup","namespace","MixinDefinition","format","newRules","_setVisibilityToReplacement","replacement","AbstractFileManager","lastIndexOf","tryAppendExtension","ext","supportsSync","alwaysMakePathsAbsolute","isPathAbsolute","basePath","laterPath","pathDiff","baseUrl","urlDirectories","baseUrlDirectories","urlParts","extractUrlParts","baseUrlParts","diff","hostPart","directories","urlPartsRegex","rawDirectories","rawPath","fileUrl","AbstractPluginLoader","require","evalPlugin","pluginOptions","pluginObj","localModule","shortname","FileManager","trySetOptions","use","exports","loader","validatePlugin","minVersion","compareVersion","addPlugin","setOptions","version","versionToString","aVersion","bVersion","versionString","printUsage","plugins","If","trueValue","falseValue","isdefined","colorFunctions","boolean$1","hsla","origColor","hsl","number","rgba","size","m1","m2","hue","hsv","hsva","vs","floor","perm","saturation","lightness","hsvhue","hsvsaturation","hsvvalue","luminance","saturate","amount","method","desaturate","lighten","darken","fadein","fadeout","fade","spin","mix","color1","color2","weight","w","w1","w2","greyscale","contrast","dark","light","threshold","argb","tint","shade","colorBlend","mode","cb","cs","cr","ab","as","colorBlendModeFunctions","multiply","screen","overlay","softlight","sqrt","hardlight","difference","abs","exclusion","average","negation","getItemsFromNode","list","_SELF","~","expr","_i","values","range","step","stepValue","each","rs","iterator","tryEval","Quote","valueName","keyName","indexName","MathHelper","fn","mathFunctions","ceil","sin","cos","atan","asin","acos","mathHelper","fraction","num","minMax","isMin","currentUnified","referenceUnified","unitStatic","unitClone","order","convert","pi","mod","y","percentage","evaluated","encodeURI","pattern","flags","%","token","encodeURIComponent","isa","Type","isunit","types","isruleset","iscolor","isnumber","isstring","iskeyword","isurl","ispixel","ispercentage","isem","get-unit","styleExpression","style$1","style","colorBlending","fallback","functionThis","data-uri","mimetypeNode","filePathNode","mimetype","filePath","entryPath","fragmentStart","utils.clone","rawBuffer","useBase64","mimeLookup","charsetLookup","fileSync","loadFileSync","buf","encodeBase64","uri","dataUri","svg-gradient","direction","stops","gradientDirectionSvg","position","positionValue","gradientType","rectangleDimension","renderEnv","directionValue","throwArgumentDescriptor","transformTree","evaldRoot","evalEnv","visitorIterator","preEvalVisitors","first","isPreEvalVisitor","isPreVisitor","pm","PluginManager","postProcessors","installedPlugins","pluginCache","Loader","PluginLoader","addPlugins","install","addVisitor","addPreProcessor","preProcessor","priority","indexToInsertAt","addPostProcessor","postProcessor","manager","getPostProcessors","getVisitors","PluginManagerFactory","newFactory","parseNodeVersion_1","major","minor","patch","pre","build","lessRoot","sourceMapOutput","sourceMapBuilder","parseTree","SourceMapBuilder","ParseTree","toCSSOptions","sourceMap","file_1","getExternalSourceMap","files","rootFilename","SourceMapOutput","contentsIgnoredCharsMap","contentsMap","sourceMapFilename","sourceMapURL","outputFilename","sourceMapOutputFilename","sourceMapBasepath","sourceMapRootpath","outputSourceFiles","sourceMapGenerator","sourceMapFileInline","disableSourcemapAnnotation","sourceMapInputFilename","normalizeFilename","removeBasepath","getCSSAppendage","setExternalSourceMap","isInline","getSourceMapURL","getOutputFilename","getInputFilename","_css","_rootNode","_contentsMap","_contentsIgnoredCharsMap","_sourceMapFilename","_outputFilename","_sourceMapBasepath","_sourceMapRootpath","_outputSourceFiles","_sourceMapGeneratorConstructor","getSourceMapGenerator","_lineNumber","_column","sourceLines","columns","sourceColumns","inputSource","_sourceMapGenerator","addMapping","generated","source","file","sourceRoot","setSourceContent","sourceMapContent","stringify","toJSON","ImportManager","rootFileInfo","mime","queue","pluginLoader","fileParsedFunc","importedEqualsRoot","newFileInfo","loadedFile","promise","loadFileCallback","resolvedFilename","newEnv","syncImport","loadPluginSync","loadPlugin","loadFile","then","render","utils.copyOptions","self_1","Promise","resolve","reject","Render","context_1","pluginManager_1","reUsePluginManager","imports_1","evalResult","fileContent","parseVersion","initial","ctor","api","fileCache","doXHR","errback","xhr","XMLHttpRequest","async","isFileProtocol","fileAsync","handleResponse","status","responseText","getResponseHeader","overrideMimeType","open","setRequestHeader","send","onreadystatechange","readyState","supports","clearFileCache","location","useFileCache","lessText_1","webInfo","lastModified","Date","FM","log","fulfill","catch","ErrorReporting","rootHref","errorReporting","errors","errorline","classname","logLevel","errorConsole","timer","filenameNoPath","className","innerHTML","env","setInterval","replaceChild","clearInterval","errorHTML","remove","removeErrorHTML","depends","lint","insecure","protocol","poll","hostname","port","onReady","addDefaultOptions","LESS_PLUGINS","loggers","console","LogListener","cache","localStorage","setCSS","setItem","getCSS","getItem","timestamp","valueOf","Cache","imageSize","imageFunctions","image-size","image-width","image-height","ImageSize","typePattern","thisArg","curryArgs","loadStyles","instanceOptions","loadStyleSheet","reload","remaining","local","loadInitialFileCallback","loadStyleSheets","sheets","watch","watchMode","watchTimer","unwatch","registerStylesheetsImmediately","links","rel","registerStylesheets","record","refresh","startTime","endTime","totalMilliseconds","remainingSheets","refreshStyles","resolveOrReject","pageLoadFinished"],"mappings":"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"}
\ No newline at end of file
diff --git a/packages/less/package-lock.json b/packages/less/package-lock.json
deleted file mode 100644
index 38451660a7..0000000000
--- a/packages/less/package-lock.json
+++ /dev/null
@@ -1,13786 +0,0 @@
-{
- "name": "less",
- "version": "4.2.2",
- "lockfileVersion": 2,
- "requires": true,
- "packages": {
- "": {
- "name": "less",
- "version": "4.2.2",
- "license": "Apache-2.0",
- "dependencies": {
- "copy-anything": "^2.0.1",
- "parse-node-version": "^1.0.1",
- "tslib": "^2.3.0"
- },
- "bin": {
- "lessc": "bin/lessc"
- },
- "devDependencies": {
- "@rollup/plugin-commonjs": "^17.0.0",
- "@rollup/plugin-json": "^4.1.0",
- "@rollup/plugin-node-resolve": "^11.0.0",
- "@typescript-eslint/eslint-plugin": "^4.28.0",
- "@typescript-eslint/parser": "^4.28.0",
- "benny": "^3.6.12",
- "bootstrap-less-port": "0.3.0",
- "chai": "^4.2.0",
- "cross-env": "^7.0.3",
- "diff": "^3.2.0",
- "eslint": "^7.29.0",
- "fs-extra": "^8.1.0",
- "git-rev": "^0.2.1",
- "globby": "^10.0.1",
- "grunt": "^1.0.4",
- "grunt-cli": "^1.3.2",
- "grunt-contrib-clean": "^1.0.0",
- "grunt-contrib-connect": "^1.0.2",
- "grunt-eslint": "^23.0.0",
- "grunt-saucelabs": "^9.0.1",
- "grunt-shell": "^1.3.0",
- "html-template-tag": "^3.2.0",
- "jit-grunt": "^0.10.0",
- "less-plugin-autoprefix": "^1.5.1",
- "less-plugin-clean-css": "^1.6.0",
- "minimist": "^1.2.0",
- "mocha": "^6.2.1",
- "mocha-teamcity-reporter": "^3.0.0",
- "nock": "^11.8.2",
- "npm-run-all": "^4.1.5",
- "performance-now": "^0.2.0",
- "phin": "^2.2.3",
- "playwright": "^1.49.0",
- "promise": "^7.1.1",
- "read-glob": "^3.0.0",
- "resolve": "^1.17.0",
- "rollup": "^2.52.2",
- "rollup-plugin-terser": "^5.1.1",
- "rollup-plugin-typescript2": "^0.29.0",
- "semver": "^6.3.0",
- "shx": "^0.3.2",
- "time-grunt": "^1.3.0",
- "ts-node": "^10.9.1",
- "typescript": "^4.3.4",
- "uikit": "2.27.4"
- },
- "engines": {
- "node": ">=6"
- },
- "optionalDependencies": {
- "errno": "^0.1.1",
- "graceful-fs": "^4.1.2",
- "image-size": "~0.5.0",
- "make-dir": "^2.1.0",
- "mime": "^1.4.1",
- "needle": "^3.1.0",
- "source-map": "~0.6.0"
- }
- },
- "node_modules/@aashutoshrathi/word-wrap": {
- "version": "1.2.6",
- "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz",
- "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/@arrows/array": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/@arrows/array/-/array-1.4.1.tgz",
- "integrity": "sha512-MGYS8xi3c4tTy1ivhrVntFvufoNzje0PchjEz6G/SsWRgUKxL4tKwS6iPdO8vsaJYldagAeWMd5KRD0aX3Q39g==",
- "dev": true,
- "dependencies": {
- "@arrows/composition": "^1.2.2"
- }
- },
- "node_modules/@arrows/composition": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/@arrows/composition/-/composition-1.2.2.tgz",
- "integrity": "sha512-9fh1yHwrx32lundiB3SlZ/VwuStPB4QakPsSLrGJFH6rCXvdrd060ivAZ7/2vlqPnEjBkPRRXOcG1YOu19p2GQ==",
- "dev": true
- },
- "node_modules/@arrows/dispatch": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/@arrows/dispatch/-/dispatch-1.0.3.tgz",
- "integrity": "sha512-v/HwvrFonitYZM2PmBlAlCqVqxrkIIoiEuy5bQgn0BdfvlL0ooSBzcPzTMrtzY8eYktPyYcHg8fLbSgyybXEqw==",
- "dev": true,
- "dependencies": {
- "@arrows/composition": "^1.2.2"
- }
- },
- "node_modules/@arrows/error": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/@arrows/error/-/error-1.0.2.tgz",
- "integrity": "sha512-yvkiv1ay4Z3+Z6oQsUkedsQm5aFdyPpkBUQs8vejazU/RmANABx6bMMcBPPHI4aW43VPQmXFfBzr/4FExwWTEA==",
- "dev": true
- },
- "node_modules/@arrows/multimethod": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/@arrows/multimethod/-/multimethod-1.4.1.tgz",
- "integrity": "sha512-AZnAay0dgPnCJxn3We5uKiB88VL+1ZIF2SjZohLj6vqY2UyvB/sKdDnFP+LZNVsTC5lcnGPmLlRRkAh4sXkXsQ==",
- "dev": true,
- "dependencies": {
- "@arrows/array": "^1.4.1",
- "@arrows/composition": "^1.2.2",
- "@arrows/error": "^1.0.2",
- "fast-deep-equal": "^3.1.3"
- }
- },
- "node_modules/@babel/code-frame": {
- "version": "7.12.11",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz",
- "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==",
- "dev": true,
- "dependencies": {
- "@babel/highlight": "^7.10.4"
- }
- },
- "node_modules/@babel/helper-validator-identifier": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz",
- "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==",
- "dev": true,
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/highlight": {
- "version": "7.22.10",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.10.tgz",
- "integrity": "sha512-78aUtVcT7MUscr0K5mIEnkwxPE0MaxkR5RxRwuHaQ+JuU5AmTPhY+do2mdzVTnIJJpyBglql2pehuBIWHug+WQ==",
- "dev": true,
- "dependencies": {
- "@babel/helper-validator-identifier": "^7.22.5",
- "chalk": "^2.4.2",
- "js-tokens": "^4.0.0"
- },
- "engines": {
- "node": ">=6.9.0"
- }
- },
- "node_modules/@babel/highlight/node_modules/ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dev": true,
- "dependencies": {
- "color-convert": "^1.9.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@babel/highlight/node_modules/chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@babel/highlight/node_modules/color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "dev": true,
- "dependencies": {
- "color-name": "1.1.3"
- }
- },
- "node_modules/@babel/highlight/node_modules/color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
- "dev": true
- },
- "node_modules/@babel/highlight/node_modules/escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "dev": true,
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/@babel/highlight/node_modules/has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@babel/highlight/node_modules/supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dev": true,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/@cspotcode/source-map-support": {
- "version": "0.8.1",
- "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz",
- "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==",
- "dev": true,
- "dependencies": {
- "@jridgewell/trace-mapping": "0.3.9"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/@eslint/eslintrc": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz",
- "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==",
- "dev": true,
- "dependencies": {
- "ajv": "^6.12.4",
- "debug": "^4.1.1",
- "espree": "^7.3.0",
- "globals": "^13.9.0",
- "ignore": "^4.0.6",
- "import-fresh": "^3.2.1",
- "js-yaml": "^3.13.1",
- "minimatch": "^3.0.4",
- "strip-json-comments": "^3.1.1"
- },
- "engines": {
- "node": "^10.12.0 || >=12.0.0"
- }
- },
- "node_modules/@eslint/eslintrc/node_modules/ignore": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
- "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
- "dev": true,
- "engines": {
- "node": ">= 4"
- }
- },
- "node_modules/@humanwhocodes/config-array": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz",
- "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==",
- "dev": true,
- "dependencies": {
- "@humanwhocodes/object-schema": "^1.2.0",
- "debug": "^4.1.1",
- "minimatch": "^3.0.4"
- },
- "engines": {
- "node": ">=10.10.0"
- }
- },
- "node_modules/@humanwhocodes/object-schema": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
- "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
- "dev": true
- },
- "node_modules/@jridgewell/resolve-uri": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz",
- "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==",
- "dev": true,
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/@jridgewell/sourcemap-codec": {
- "version": "1.4.15",
- "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
- "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==",
- "dev": true
- },
- "node_modules/@jridgewell/trace-mapping": {
- "version": "0.3.9",
- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz",
- "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==",
- "dev": true,
- "dependencies": {
- "@jridgewell/resolve-uri": "^3.0.3",
- "@jridgewell/sourcemap-codec": "^1.4.10"
- }
- },
- "node_modules/@nodelib/fs.scandir": {
- "version": "2.1.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
- "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
- "dev": true,
- "dependencies": {
- "@nodelib/fs.stat": "2.0.5",
- "run-parallel": "^1.1.9"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/@nodelib/fs.stat": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
- "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
- "dev": true,
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/@nodelib/fs.walk": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
- "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
- "dev": true,
- "dependencies": {
- "@nodelib/fs.scandir": "2.1.5",
- "fastq": "^1.6.0"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/@rollup/plugin-commonjs": {
- "version": "17.1.0",
- "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-17.1.0.tgz",
- "integrity": "sha512-PoMdXCw0ZyvjpCMT5aV4nkL0QywxP29sODQsSGeDpr/oI49Qq9tRtAsb/LbYbDzFlOydVEqHmmZWFtXJEAX9ew==",
- "dev": true,
- "dependencies": {
- "@rollup/pluginutils": "^3.1.0",
- "commondir": "^1.0.1",
- "estree-walker": "^2.0.1",
- "glob": "^7.1.6",
- "is-reference": "^1.2.1",
- "magic-string": "^0.25.7",
- "resolve": "^1.17.0"
- },
- "engines": {
- "node": ">= 8.0.0"
- },
- "peerDependencies": {
- "rollup": "^2.30.0"
- }
- },
- "node_modules/@rollup/plugin-json": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-4.1.0.tgz",
- "integrity": "sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw==",
- "dev": true,
- "dependencies": {
- "@rollup/pluginutils": "^3.0.8"
- },
- "peerDependencies": {
- "rollup": "^1.20.0 || ^2.0.0"
- }
- },
- "node_modules/@rollup/plugin-node-resolve": {
- "version": "11.2.1",
- "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz",
- "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==",
- "dev": true,
- "dependencies": {
- "@rollup/pluginutils": "^3.1.0",
- "@types/resolve": "1.17.1",
- "builtin-modules": "^3.1.0",
- "deepmerge": "^4.2.2",
- "is-module": "^1.0.0",
- "resolve": "^1.19.0"
- },
- "engines": {
- "node": ">= 10.0.0"
- },
- "peerDependencies": {
- "rollup": "^1.20.0||^2.0.0"
- }
- },
- "node_modules/@rollup/pluginutils": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz",
- "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==",
- "dev": true,
- "dependencies": {
- "@types/estree": "0.0.39",
- "estree-walker": "^1.0.1",
- "picomatch": "^2.2.2"
- },
- "engines": {
- "node": ">= 8.0.0"
- },
- "peerDependencies": {
- "rollup": "^1.20.0||^2.0.0"
- }
- },
- "node_modules/@rollup/pluginutils/node_modules/estree-walker": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz",
- "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==",
- "dev": true
- },
- "node_modules/@tsconfig/node10": {
- "version": "1.0.9",
- "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz",
- "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==",
- "dev": true
- },
- "node_modules/@tsconfig/node12": {
- "version": "1.0.11",
- "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz",
- "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==",
- "dev": true
- },
- "node_modules/@tsconfig/node14": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz",
- "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==",
- "dev": true
- },
- "node_modules/@tsconfig/node16": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz",
- "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==",
- "dev": true
- },
- "node_modules/@types/estree": {
- "version": "0.0.39",
- "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz",
- "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==",
- "dev": true
- },
- "node_modules/@types/glob": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz",
- "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==",
- "dev": true,
- "dependencies": {
- "@types/minimatch": "*",
- "@types/node": "*"
- }
- },
- "node_modules/@types/json-schema": {
- "version": "7.0.12",
- "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz",
- "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==",
- "dev": true
- },
- "node_modules/@types/minimatch": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz",
- "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==",
- "dev": true
- },
- "node_modules/@types/node": {
- "version": "20.5.1",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.5.1.tgz",
- "integrity": "sha512-4tT2UrL5LBqDwoed9wZ6N3umC4Yhz3W3FloMmiiG4JwmUJWpie0c7lcnUNd4gtMKuDEO4wRVS8B6Xa0uMRsMKg==",
- "dev": true
- },
- "node_modules/@types/resolve": {
- "version": "1.17.1",
- "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz",
- "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==",
- "dev": true,
- "dependencies": {
- "@types/node": "*"
- }
- },
- "node_modules/@typescript-eslint/eslint-plugin": {
- "version": "4.33.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz",
- "integrity": "sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==",
- "dev": true,
- "dependencies": {
- "@typescript-eslint/experimental-utils": "4.33.0",
- "@typescript-eslint/scope-manager": "4.33.0",
- "debug": "^4.3.1",
- "functional-red-black-tree": "^1.0.1",
- "ignore": "^5.1.8",
- "regexpp": "^3.1.0",
- "semver": "^7.3.5",
- "tsutils": "^3.21.0"
- },
- "engines": {
- "node": "^10.12.0 || >=12.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "@typescript-eslint/parser": "^4.0.0",
- "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": {
- "version": "7.5.4",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
- "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
- "dev": true,
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@typescript-eslint/experimental-utils": {
- "version": "4.33.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz",
- "integrity": "sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==",
- "dev": true,
- "dependencies": {
- "@types/json-schema": "^7.0.7",
- "@typescript-eslint/scope-manager": "4.33.0",
- "@typescript-eslint/types": "4.33.0",
- "@typescript-eslint/typescript-estree": "4.33.0",
- "eslint-scope": "^5.1.1",
- "eslint-utils": "^3.0.0"
- },
- "engines": {
- "node": "^10.12.0 || >=12.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "eslint": "*"
- }
- },
- "node_modules/@typescript-eslint/parser": {
- "version": "4.33.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.33.0.tgz",
- "integrity": "sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==",
- "dev": true,
- "dependencies": {
- "@typescript-eslint/scope-manager": "4.33.0",
- "@typescript-eslint/types": "4.33.0",
- "@typescript-eslint/typescript-estree": "4.33.0",
- "debug": "^4.3.1"
- },
- "engines": {
- "node": "^10.12.0 || >=12.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependencies": {
- "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "node_modules/@typescript-eslint/scope-manager": {
- "version": "4.33.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz",
- "integrity": "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==",
- "dev": true,
- "dependencies": {
- "@typescript-eslint/types": "4.33.0",
- "@typescript-eslint/visitor-keys": "4.33.0"
- },
- "engines": {
- "node": "^8.10.0 || ^10.13.0 || >=11.10.1"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- }
- },
- "node_modules/@typescript-eslint/types": {
- "version": "4.33.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz",
- "integrity": "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==",
- "dev": true,
- "engines": {
- "node": "^8.10.0 || ^10.13.0 || >=11.10.1"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- }
- },
- "node_modules/@typescript-eslint/typescript-estree": {
- "version": "4.33.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz",
- "integrity": "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==",
- "dev": true,
- "dependencies": {
- "@typescript-eslint/types": "4.33.0",
- "@typescript-eslint/visitor-keys": "4.33.0",
- "debug": "^4.3.1",
- "globby": "^11.0.3",
- "is-glob": "^4.0.1",
- "semver": "^7.3.5",
- "tsutils": "^3.21.0"
- },
- "engines": {
- "node": "^10.12.0 || >=12.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- },
- "peerDependenciesMeta": {
- "typescript": {
- "optional": true
- }
- }
- },
- "node_modules/@typescript-eslint/typescript-estree/node_modules/globby": {
- "version": "11.1.0",
- "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
- "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
- "dev": true,
- "dependencies": {
- "array-union": "^2.1.0",
- "dir-glob": "^3.0.1",
- "fast-glob": "^3.2.9",
- "ignore": "^5.2.0",
- "merge2": "^1.4.1",
- "slash": "^3.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": {
- "version": "7.5.4",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
- "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
- "dev": true,
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/@typescript-eslint/visitor-keys": {
- "version": "4.33.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz",
- "integrity": "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==",
- "dev": true,
- "dependencies": {
- "@typescript-eslint/types": "4.33.0",
- "eslint-visitor-keys": "^2.0.0"
- },
- "engines": {
- "node": "^8.10.0 || ^10.13.0 || >=11.10.1"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/typescript-eslint"
- }
- },
- "node_modules/abbrev": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
- "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
- "dev": true
- },
- "node_modules/accepts": {
- "version": "1.3.8",
- "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
- "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
- "dev": true,
- "dependencies": {
- "mime-types": "~2.1.34",
- "negotiator": "0.6.3"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/acorn": {
- "version": "7.4.1",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
- "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
- "dev": true,
- "bin": {
- "acorn": "bin/acorn"
- },
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/acorn-jsx": {
- "version": "5.3.2",
- "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
- "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
- "dev": true,
- "peerDependencies": {
- "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
- }
- },
- "node_modules/acorn-walk": {
- "version": "8.2.0",
- "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz",
- "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==",
- "dev": true,
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "dev": true,
- "dependencies": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- }
- },
- "node_modules/ansi-colors": {
- "version": "4.1.3",
- "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz",
- "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/ansi-escapes": {
- "version": "4.3.2",
- "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
- "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
- "dev": true,
- "dependencies": {
- "type-fest": "^0.21.3"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/ansi-escapes/node_modules/type-fest": {
- "version": "0.21.3",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
- "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "dependencies": {
- "color-convert": "^2.0.1"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/chalk/ansi-styles?sponsor=1"
- }
- },
- "node_modules/append-type": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/append-type/-/append-type-1.0.2.tgz",
- "integrity": "sha512-hac740vT/SAbrFBLgLIWZqVT5PUAcGTWS5UkDDhr+OCizZSw90WKw6sWAEgGaYd2viIblggypMXwpjzHXOvAQg==",
- "dev": true
- },
- "node_modules/arg": {
- "version": "4.1.3",
- "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
- "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==",
- "dev": true
- },
- "node_modules/argparse": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
- "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
- "dev": true,
- "dependencies": {
- "sprintf-js": "~1.0.2"
- }
- },
- "node_modules/array-buffer-byte-length": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz",
- "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "is-array-buffer": "^3.0.1"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/array-each": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz",
- "integrity": "sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/array-slice": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz",
- "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/array-to-sentence": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/array-to-sentence/-/array-to-sentence-1.1.0.tgz",
- "integrity": "sha512-YkwkMmPA2+GSGvXj1s9NZ6cc2LBtR+uSeWTy2IGi5MR1Wag4DdrcjTxA/YV/Fw+qKlBeXomneZgThEbm/wvZbw==",
- "dev": true
- },
- "node_modules/array-union": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
- "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/array.prototype.reduce": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.5.tgz",
- "integrity": "sha512-kDdugMl7id9COE8R7MHF5jWk7Dqt/fs4Pv+JXoICnYwqpjjjbUurz6w5fT5IG6brLdJhv6/VoHB0H7oyIBXd+Q==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
- "es-abstract": "^1.20.4",
- "es-array-method-boxes-properly": "^1.0.0",
- "is-string": "^1.0.7"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/arraybuffer.prototype.slice": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.1.tgz",
- "integrity": "sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw==",
- "dev": true,
- "dependencies": {
- "array-buffer-byte-length": "^1.0.0",
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "get-intrinsic": "^1.2.1",
- "is-array-buffer": "^3.0.2",
- "is-shared-array-buffer": "^1.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/asap": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
- "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==",
- "dev": true
- },
- "node_modules/asn1": {
- "version": "0.2.6",
- "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz",
- "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==",
- "dev": true,
- "dependencies": {
- "safer-buffer": "~2.1.0"
- }
- },
- "node_modules/assert-fs-readfile-option": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/assert-fs-readfile-option/-/assert-fs-readfile-option-1.0.1.tgz",
- "integrity": "sha512-bESFgerRqZpPcFWBW/cXl0l1XQVLPFi80i31S6eYLIzksnNKdTKBlMoC7Dy/FWAj/97XIYhpe2CmVogifnEkMw==",
- "dev": true,
- "dependencies": {
- "nop": "^1.0.0"
- }
- },
- "node_modules/assert-plus": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
- "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==",
- "dev": true,
- "engines": {
- "node": ">=0.8"
- }
- },
- "node_modules/assert-valid-glob-opts": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assert-valid-glob-opts/-/assert-valid-glob-opts-1.0.0.tgz",
- "integrity": "sha512-/mttty5Xh7wE4o7ttKaUpBJl0l04xWe3y6muy1j27gyzSsnceK0AYU9owPtUoL9z8+9hnPxztmuhdFZ7jRoyWw==",
- "dev": true,
- "dependencies": {
- "glob-option-error": "^1.0.0",
- "validate-glob-opts": "^1.0.0"
- }
- },
- "node_modules/assertion-error": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz",
- "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==",
- "dev": true,
- "engines": {
- "node": "*"
- }
- },
- "node_modules/astral-regex": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz",
- "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/async": {
- "version": "1.5.2",
- "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
- "integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==",
- "dev": true
- },
- "node_modules/asynckit": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
- "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
- "dev": true
- },
- "node_modules/autoprefixer": {
- "version": "6.7.7",
- "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz",
- "integrity": "sha512-WKExI/eSGgGAkWAO+wMVdFObZV7hQen54UpD1kCCTN3tvlL3W1jL4+lPP/M7MwoP7Q4RHzKtO3JQ4HxYEcd+xQ==",
- "dev": true,
- "dependencies": {
- "browserslist": "^1.7.6",
- "caniuse-db": "^1.0.30000634",
- "normalize-range": "^0.1.2",
- "num2fraction": "^1.2.2",
- "postcss": "^5.2.16",
- "postcss-value-parser": "^3.2.3"
- }
- },
- "node_modules/available-typed-arrays": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz",
- "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==",
- "dev": true,
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/aws-sign2": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
- "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==",
- "dev": true,
- "engines": {
- "node": "*"
- }
- },
- "node_modules/aws4": {
- "version": "1.12.0",
- "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz",
- "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==",
- "dev": true
- },
- "node_modules/balanced-match": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
- "dev": true
- },
- "node_modules/basic-auth": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz",
- "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==",
- "dev": true,
- "dependencies": {
- "safe-buffer": "5.1.2"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/batch": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz",
- "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==",
- "dev": true
- },
- "node_modules/bcrypt-pbkdf": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
- "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==",
- "dev": true,
- "dependencies": {
- "tweetnacl": "^0.14.3"
- }
- },
- "node_modules/benchmark": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/benchmark/-/benchmark-2.1.4.tgz",
- "integrity": "sha512-l9MlfN4M1K/H2fbhfMy3B7vJd6AGKJVQn2h6Sg/Yx+KckoUA7ewS5Vv6TjSq18ooE1kS9hhAlQRH3AkXIh/aOQ==",
- "dev": true,
- "dependencies": {
- "lodash": "^4.17.4",
- "platform": "^1.3.3"
- }
- },
- "node_modules/benny": {
- "version": "3.7.1",
- "resolved": "https://registry.npmjs.org/benny/-/benny-3.7.1.tgz",
- "integrity": "sha512-USzYxODdVfOS7JuQq/L0naxB788dWCiUgUTxvN+WLPt/JfcDURNNj8kN/N+uK6PDvuR67/9/55cVKGPleFQINA==",
- "dev": true,
- "dependencies": {
- "@arrows/composition": "^1.0.0",
- "@arrows/dispatch": "^1.0.2",
- "@arrows/multimethod": "^1.1.6",
- "benchmark": "^2.1.4",
- "common-tags": "^1.8.0",
- "fs-extra": "^10.0.0",
- "json2csv": "^5.0.6",
- "kleur": "^4.1.4",
- "log-update": "^4.0.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/benny/node_modules/fs-extra": {
- "version": "10.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
- "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
- "dev": true,
- "dependencies": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- },
- "engines": {
- "node": ">=12"
- }
- },
- "node_modules/benny/node_modules/jsonfile": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
- "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
- "dev": true,
- "dependencies": {
- "universalify": "^2.0.0"
- },
- "optionalDependencies": {
- "graceful-fs": "^4.1.6"
- }
- },
- "node_modules/benny/node_modules/universalify": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
- "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
- "dev": true,
- "engines": {
- "node": ">= 10.0.0"
- }
- },
- "node_modules/bootstrap-less-port": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/bootstrap-less-port/-/bootstrap-less-port-0.3.0.tgz",
- "integrity": "sha512-08aP3FZ7QQ0muffrYguACtN06dfkYvPI6yZEmXSZ3T7VfPD0mVT60lcM4pEW0we3W7BTUlhqYHCGTXrUzWbYoA==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "dev": true,
- "dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "node_modules/braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
- "dev": true,
- "dependencies": {
- "fill-range": "^7.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/browser-stdout": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz",
- "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==",
- "dev": true
- },
- "node_modules/browserslist": {
- "version": "1.7.7",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz",
- "integrity": "sha512-qHJblDE2bXVRYzuDetv/wAeHOJyO97+9wxC1cdCtyzgNuSozOyRCiiLaCR1f71AN66lQdVVBipWm63V+a7bPOw==",
- "deprecated": "Browserslist 2 could fail on reading Browserslist >3.0 config used in other tools.",
- "dev": true,
- "dependencies": {
- "caniuse-db": "^1.0.30000639",
- "electron-to-chromium": "^1.2.7"
- },
- "bin": {
- "browserslist": "cli.js"
- }
- },
- "node_modules/buffer-from": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
- "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
- "dev": true
- },
- "node_modules/builtin-modules": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz",
- "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==",
- "dev": true,
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/call-bind": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
- "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
- "dev": true,
- "dependencies": {
- "function-bind": "^1.1.1",
- "get-intrinsic": "^1.0.2"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/callsites": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
- "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/camelcase": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz",
- "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/caniuse-db": {
- "version": "1.0.30001521",
- "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30001521.tgz",
- "integrity": "sha512-bT9eOOwKYX6jDKXXtAhfiYefkaGArsDgmRQ77tGpdtHply4DcyuirrNhPRlUQQ48IQ2RTU5M1LSCY6m1AnGwBA==",
- "dev": true
- },
- "node_modules/caseless": {
- "version": "0.12.0",
- "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
- "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==",
- "dev": true
- },
- "node_modules/chai": {
- "version": "4.3.7",
- "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz",
- "integrity": "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==",
- "dev": true,
- "dependencies": {
- "assertion-error": "^1.1.0",
- "check-error": "^1.0.2",
- "deep-eql": "^4.1.2",
- "get-func-name": "^2.0.0",
- "loupe": "^2.3.1",
- "pathval": "^1.1.1",
- "type-detect": "^4.0.5"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/chalk": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/chalk?sponsor=1"
- }
- },
- "node_modules/check-error": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz",
- "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==",
- "dev": true,
- "engines": {
- "node": "*"
- }
- },
- "node_modules/clean-css": {
- "version": "5.3.3",
- "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz",
- "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==",
- "dev": true,
- "dependencies": {
- "source-map": "~0.6.0"
- },
- "engines": {
- "node": ">= 10.0"
- }
- },
- "node_modules/cli-cursor": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
- "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
- "dev": true,
- "dependencies": {
- "restore-cursor": "^3.1.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/cliui": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
- "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
- "dev": true,
- "dependencies": {
- "string-width": "^3.1.0",
- "strip-ansi": "^5.2.0",
- "wrap-ansi": "^5.1.0"
- }
- },
- "node_modules/cliui/node_modules/ansi-regex": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
- "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/cliui/node_modules/ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dev": true,
- "dependencies": {
- "color-convert": "^1.9.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/cliui/node_modules/color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "dev": true,
- "dependencies": {
- "color-name": "1.1.3"
- }
- },
- "node_modules/cliui/node_modules/color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
- "dev": true
- },
- "node_modules/cliui/node_modules/emoji-regex": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
- "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
- "dev": true
- },
- "node_modules/cliui/node_modules/is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/cliui/node_modules/string-width": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
- "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
- "dev": true,
- "dependencies": {
- "emoji-regex": "^7.0.1",
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^5.1.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/cliui/node_modules/strip-ansi": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
- "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
- "dev": true,
- "dependencies": {
- "ansi-regex": "^4.1.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/cliui/node_modules/wrap-ansi": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
- "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^3.2.0",
- "string-width": "^3.0.0",
- "strip-ansi": "^5.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "dependencies": {
- "color-name": "~1.1.4"
- },
- "engines": {
- "node": ">=7.0.0"
- }
- },
- "node_modules/color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "node_modules/colors": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz",
- "integrity": "sha512-ENwblkFQpqqia6b++zLD/KUWafYlVY/UNnAp7oz7LY7E924wmpye416wBOmvv/HMWzl8gL1kJlfvId/1Dg176w==",
- "dev": true,
- "engines": {
- "node": ">=0.1.90"
- }
- },
- "node_modules/combined-stream": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
- "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
- "dev": true,
- "dependencies": {
- "delayed-stream": "~1.0.0"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/commander": {
- "version": "6.2.1",
- "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz",
- "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==",
- "dev": true,
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/common-tags": {
- "version": "1.8.2",
- "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz",
- "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==",
- "dev": true,
- "engines": {
- "node": ">=4.0.0"
- }
- },
- "node_modules/commondir": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
- "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==",
- "dev": true
- },
- "node_modules/concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
- "dev": true
- },
- "node_modules/connect": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz",
- "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==",
- "dev": true,
- "dependencies": {
- "debug": "2.6.9",
- "finalhandler": "1.1.2",
- "parseurl": "~1.3.3",
- "utils-merge": "1.0.1"
- },
- "engines": {
- "node": ">= 0.10.0"
- }
- },
- "node_modules/connect-livereload": {
- "version": "0.5.4",
- "resolved": "https://registry.npmjs.org/connect-livereload/-/connect-livereload-0.5.4.tgz",
- "integrity": "sha512-3KnRwsWf4VmP01I4hCDQqTc4e2UxOvJIi8i08GiwqX2oymzxNFY7PqjFkwHglYTJ0yzUJkO5yqdPxVaIz3Pbug==",
- "dev": true,
- "engines": {
- "node": "*"
- }
- },
- "node_modules/connect/node_modules/debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/connect/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
- "dev": true
- },
- "node_modules/copy-anything": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz",
- "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==",
- "dependencies": {
- "is-what": "^3.14.1"
- },
- "funding": {
- "url": "https://github.com/sponsors/mesqueeb"
- }
- },
- "node_modules/core-util-is": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
- "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==",
- "dev": true
- },
- "node_modules/create-require": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz",
- "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
- "dev": true
- },
- "node_modules/cross-env": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz",
- "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==",
- "dev": true,
- "dependencies": {
- "cross-spawn": "^7.0.1"
- },
- "bin": {
- "cross-env": "src/bin/cross-env.js",
- "cross-env-shell": "src/bin/cross-env-shell.js"
- },
- "engines": {
- "node": ">=10.14",
- "npm": ">=6",
- "yarn": ">=1"
- }
- },
- "node_modules/cross-spawn": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
- "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
- "dev": true,
- "dependencies": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/dashdash": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
- "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==",
- "dev": true,
- "dependencies": {
- "assert-plus": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10"
- }
- },
- "node_modules/date-time": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/date-time/-/date-time-1.1.0.tgz",
- "integrity": "sha512-RrxZQ06cdKe7YQ5oqIxs3GMc7W3vXscy7Ds+aZIqmxA59QnVtTiCseA4jbzVUub9xCbo9GuYVZo0OrZLYXnnmw==",
- "dev": true,
- "dependencies": {
- "time-zone": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/dateformat": {
- "version": "4.6.3",
- "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz",
- "integrity": "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==",
- "dev": true,
- "engines": {
- "node": "*"
- }
- },
- "node_modules/debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
- "dev": true,
- "dependencies": {
- "ms": "2.1.2"
- },
- "engines": {
- "node": ">=6.0"
- },
- "peerDependenciesMeta": {
- "supports-color": {
- "optional": true
- }
- }
- },
- "node_modules/decamelize": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
- "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/deep-eql": {
- "version": "4.1.3",
- "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz",
- "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==",
- "dev": true,
- "dependencies": {
- "type-detect": "^4.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/deep-is": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
- "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
- "dev": true
- },
- "node_modules/deepmerge": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
- "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/define-properties": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz",
- "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==",
- "dev": true,
- "dependencies": {
- "has-property-descriptors": "^1.0.0",
- "object-keys": "^1.1.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/delayed-stream": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
- "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
- "dev": true,
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/depd": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
- "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
- "dev": true,
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/destroy": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
- "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
- "dev": true,
- "engines": {
- "node": ">= 0.8",
- "npm": "1.2.8000 || >= 1.4.16"
- }
- },
- "node_modules/detect-file": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz",
- "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/diff": {
- "version": "3.5.0",
- "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz",
- "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==",
- "dev": true,
- "engines": {
- "node": ">=0.3.1"
- }
- },
- "node_modules/dir-glob": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
- "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
- "dev": true,
- "dependencies": {
- "path-type": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/doctrine": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
- "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
- "dev": true,
- "dependencies": {
- "esutils": "^2.0.2"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/ecc-jsbn": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
- "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==",
- "dev": true,
- "dependencies": {
- "jsbn": "~0.1.0",
- "safer-buffer": "^2.1.0"
- }
- },
- "node_modules/ee-first": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
- "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
- "dev": true
- },
- "node_modules/electron-to-chromium": {
- "version": "1.4.496",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.496.tgz",
- "integrity": "sha512-qeXC3Zbykq44RCrBa4kr8v/dWzYJA8rAwpyh9Qd+NKWoJfjG5vvJqy9XOJ9H4P/lqulZBCgUWAYi+FeK5AuJ8g==",
- "dev": true
- },
- "node_modules/emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "dev": true
- },
- "node_modules/encodeurl": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
- "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
- "dev": true,
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/enquirer": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz",
- "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==",
- "dev": true,
- "dependencies": {
- "ansi-colors": "^4.1.1",
- "strip-ansi": "^6.0.1"
- },
- "engines": {
- "node": ">=8.6"
- }
- },
- "node_modules/errno": {
- "version": "0.1.8",
- "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz",
- "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==",
- "optional": true,
- "dependencies": {
- "prr": "~1.0.1"
- },
- "bin": {
- "errno": "cli.js"
- }
- },
- "node_modules/error-ex": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
- "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
- "dev": true,
- "dependencies": {
- "is-arrayish": "^0.2.1"
- }
- },
- "node_modules/es-abstract": {
- "version": "1.22.1",
- "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.1.tgz",
- "integrity": "sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==",
- "dev": true,
- "dependencies": {
- "array-buffer-byte-length": "^1.0.0",
- "arraybuffer.prototype.slice": "^1.0.1",
- "available-typed-arrays": "^1.0.5",
- "call-bind": "^1.0.2",
- "es-set-tostringtag": "^2.0.1",
- "es-to-primitive": "^1.2.1",
- "function.prototype.name": "^1.1.5",
- "get-intrinsic": "^1.2.1",
- "get-symbol-description": "^1.0.0",
- "globalthis": "^1.0.3",
- "gopd": "^1.0.1",
- "has": "^1.0.3",
- "has-property-descriptors": "^1.0.0",
- "has-proto": "^1.0.1",
- "has-symbols": "^1.0.3",
- "internal-slot": "^1.0.5",
- "is-array-buffer": "^3.0.2",
- "is-callable": "^1.2.7",
- "is-negative-zero": "^2.0.2",
- "is-regex": "^1.1.4",
- "is-shared-array-buffer": "^1.0.2",
- "is-string": "^1.0.7",
- "is-typed-array": "^1.1.10",
- "is-weakref": "^1.0.2",
- "object-inspect": "^1.12.3",
- "object-keys": "^1.1.1",
- "object.assign": "^4.1.4",
- "regexp.prototype.flags": "^1.5.0",
- "safe-array-concat": "^1.0.0",
- "safe-regex-test": "^1.0.0",
- "string.prototype.trim": "^1.2.7",
- "string.prototype.trimend": "^1.0.6",
- "string.prototype.trimstart": "^1.0.6",
- "typed-array-buffer": "^1.0.0",
- "typed-array-byte-length": "^1.0.0",
- "typed-array-byte-offset": "^1.0.0",
- "typed-array-length": "^1.0.4",
- "unbox-primitive": "^1.0.2",
- "which-typed-array": "^1.1.10"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/es-abstract/node_modules/object.assign": {
- "version": "4.1.4",
- "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz",
- "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
- "has-symbols": "^1.0.3",
- "object-keys": "^1.1.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/es-array-method-boxes-properly": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz",
- "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==",
- "dev": true
- },
- "node_modules/es-set-tostringtag": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz",
- "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==",
- "dev": true,
- "dependencies": {
- "get-intrinsic": "^1.1.3",
- "has": "^1.0.3",
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/es-to-primitive": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
- "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
- "dev": true,
- "dependencies": {
- "is-callable": "^1.1.4",
- "is-date-object": "^1.0.1",
- "is-symbol": "^1.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/es6-promise": {
- "version": "4.2.8",
- "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz",
- "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==",
- "dev": true
- },
- "node_modules/es6-promisify": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz",
- "integrity": "sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==",
- "dev": true,
- "dependencies": {
- "es6-promise": "^4.0.3"
- }
- },
- "node_modules/escape-html": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
- "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==",
- "dev": true
- },
- "node_modules/escape-string-regexp": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
- "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/eslint": {
- "version": "7.32.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz",
- "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==",
- "dev": true,
- "dependencies": {
- "@babel/code-frame": "7.12.11",
- "@eslint/eslintrc": "^0.4.3",
- "@humanwhocodes/config-array": "^0.5.0",
- "ajv": "^6.10.0",
- "chalk": "^4.0.0",
- "cross-spawn": "^7.0.2",
- "debug": "^4.0.1",
- "doctrine": "^3.0.0",
- "enquirer": "^2.3.5",
- "escape-string-regexp": "^4.0.0",
- "eslint-scope": "^5.1.1",
- "eslint-utils": "^2.1.0",
- "eslint-visitor-keys": "^2.0.0",
- "espree": "^7.3.1",
- "esquery": "^1.4.0",
- "esutils": "^2.0.2",
- "fast-deep-equal": "^3.1.3",
- "file-entry-cache": "^6.0.1",
- "functional-red-black-tree": "^1.0.1",
- "glob-parent": "^5.1.2",
- "globals": "^13.6.0",
- "ignore": "^4.0.6",
- "import-fresh": "^3.0.0",
- "imurmurhash": "^0.1.4",
- "is-glob": "^4.0.0",
- "js-yaml": "^3.13.1",
- "json-stable-stringify-without-jsonify": "^1.0.1",
- "levn": "^0.4.1",
- "lodash.merge": "^4.6.2",
- "minimatch": "^3.0.4",
- "natural-compare": "^1.4.0",
- "optionator": "^0.9.1",
- "progress": "^2.0.0",
- "regexpp": "^3.1.0",
- "semver": "^7.2.1",
- "strip-ansi": "^6.0.0",
- "strip-json-comments": "^3.1.0",
- "table": "^6.0.9",
- "text-table": "^0.2.0",
- "v8-compile-cache": "^2.0.3"
- },
- "bin": {
- "eslint": "bin/eslint.js"
- },
- "engines": {
- "node": "^10.12.0 || >=12.0.0"
- },
- "funding": {
- "url": "https://opencollective.com/eslint"
- }
- },
- "node_modules/eslint-scope": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
- "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
- "dev": true,
- "dependencies": {
- "esrecurse": "^4.3.0",
- "estraverse": "^4.1.1"
- },
- "engines": {
- "node": ">=8.0.0"
- }
- },
- "node_modules/eslint-utils": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz",
- "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==",
- "dev": true,
- "dependencies": {
- "eslint-visitor-keys": "^2.0.0"
- },
- "engines": {
- "node": "^10.0.0 || ^12.0.0 || >= 14.0.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/mysticatea"
- },
- "peerDependencies": {
- "eslint": ">=5"
- }
- },
- "node_modules/eslint-visitor-keys": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
- "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
- "dev": true,
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/eslint/node_modules/eslint-utils": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz",
- "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==",
- "dev": true,
- "dependencies": {
- "eslint-visitor-keys": "^1.1.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/mysticatea"
- }
- },
- "node_modules/eslint/node_modules/eslint-utils/node_modules/eslint-visitor-keys": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
- "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/eslint/node_modules/ignore": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
- "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
- "dev": true,
- "engines": {
- "node": ">= 4"
- }
- },
- "node_modules/eslint/node_modules/semver": {
- "version": "7.5.4",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
- "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
- "dev": true,
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
- "bin": {
- "semver": "bin/semver.js"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/espree": {
- "version": "7.3.1",
- "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz",
- "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==",
- "dev": true,
- "dependencies": {
- "acorn": "^7.4.0",
- "acorn-jsx": "^5.3.1",
- "eslint-visitor-keys": "^1.3.0"
- },
- "engines": {
- "node": "^10.12.0 || >=12.0.0"
- }
- },
- "node_modules/espree/node_modules/eslint-visitor-keys": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
- "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/esprima": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
- "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
- "dev": true,
- "bin": {
- "esparse": "bin/esparse.js",
- "esvalidate": "bin/esvalidate.js"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/esquery": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz",
- "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==",
- "dev": true,
- "dependencies": {
- "estraverse": "^5.1.0"
- },
- "engines": {
- "node": ">=0.10"
- }
- },
- "node_modules/esquery/node_modules/estraverse": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
- "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
- "dev": true,
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/esrecurse": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
- "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
- "dev": true,
- "dependencies": {
- "estraverse": "^5.2.0"
- },
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/esrecurse/node_modules/estraverse": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
- "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
- "dev": true,
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/estraverse": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
- "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
- "dev": true,
- "engines": {
- "node": ">=4.0"
- }
- },
- "node_modules/estree-walker": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
- "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
- "dev": true
- },
- "node_modules/esutils": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
- "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/etag": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
- "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
- "dev": true,
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/eventemitter2": {
- "version": "0.4.14",
- "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz",
- "integrity": "sha512-K7J4xq5xAD5jHsGM5ReWXRTFa3JRGofHiMcVgQ8PRwgWxzjHpMWCIzsmyf60+mh8KLsqYPcjUMa0AC4hd6lPyQ==",
- "dev": true
- },
- "node_modules/exit": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
- "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==",
- "dev": true,
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/expand-tilde": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz",
- "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==",
- "dev": true,
- "dependencies": {
- "homedir-polyfill": "^1.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/extend": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
- "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
- "dev": true
- },
- "node_modules/extsprintf": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
- "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==",
- "dev": true,
- "engines": [
- "node >=0.6.0"
- ]
- },
- "node_modules/fast-deep-equal": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
- "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
- "dev": true
- },
- "node_modules/fast-glob": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz",
- "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==",
- "dev": true,
- "dependencies": {
- "@nodelib/fs.stat": "^2.0.2",
- "@nodelib/fs.walk": "^1.2.3",
- "glob-parent": "^5.1.2",
- "merge2": "^1.3.0",
- "micromatch": "^4.0.4"
- },
- "engines": {
- "node": ">=8.6.0"
- }
- },
- "node_modules/fast-json-stable-stringify": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
- "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
- "dev": true
- },
- "node_modules/fast-levenshtein": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
- "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
- "dev": true
- },
- "node_modules/fastq": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz",
- "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==",
- "dev": true,
- "dependencies": {
- "reusify": "^1.0.4"
- }
- },
- "node_modules/fg-lodash": {
- "version": "0.0.2",
- "resolved": "https://registry.npmjs.org/fg-lodash/-/fg-lodash-0.0.2.tgz",
- "integrity": "sha512-3jf21fWKb/qCM+frhdQX6/KT7sn12i5T6K7952/hKpOdK5uzYbZbEwJmWjrgrSzc74iXFtrtbHPD2mMywPkB9A==",
- "dev": true,
- "dependencies": {
- "lodash": "^2.4.1",
- "underscore.string": "~2.3.3"
- }
- },
- "node_modules/fg-lodash/node_modules/lodash": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz",
- "integrity": "sha512-Kak1hi6/hYHGVPmdyiZijoQyz5x2iGVzs6w9GYB/HiXEtylY7tIoYEROMjvM1d9nXJqPOrG2MNPMn01bJ+S0Rw==",
- "dev": true,
- "engines": [
- "node",
- "rhino"
- ]
- },
- "node_modules/fg-lodash/node_modules/underscore.string": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.3.3.tgz",
- "integrity": "sha512-hbD5MibthuDAu4yA5wxes5bzFgqd3PpBJuClbRxaNddxfdsz+qf+1kHwrGQFrmchmDHb9iNU+6EHDn8uj0xDJg==",
- "dev": true,
- "engines": {
- "node": "*"
- }
- },
- "node_modules/figures": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz",
- "integrity": "sha512-UxKlfCRuCBxSXU4C6t9scbDyWZ4VlaFFdojKtzJuSkuOBQ5CNFum+zZXFwHjo+CxBC1t6zlYPgHIgFjL8ggoEQ==",
- "dev": true,
- "dependencies": {
- "escape-string-regexp": "^1.0.5",
- "object-assign": "^4.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/figures/node_modules/escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "dev": true,
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/file-entry-cache": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
- "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
- "dev": true,
- "dependencies": {
- "flat-cache": "^3.0.4"
- },
- "engines": {
- "node": "^10.12.0 || >=12.0.0"
- }
- },
- "node_modules/fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
- "dev": true,
- "dependencies": {
- "to-regex-range": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/finalhandler": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
- "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
- "dev": true,
- "dependencies": {
- "debug": "2.6.9",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "on-finished": "~2.3.0",
- "parseurl": "~1.3.3",
- "statuses": "~1.5.0",
- "unpipe": "~1.0.0"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/finalhandler/node_modules/debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/finalhandler/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
- "dev": true
- },
- "node_modules/find-cache-dir": {
- "version": "3.3.2",
- "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz",
- "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==",
- "dev": true,
- "dependencies": {
- "commondir": "^1.0.1",
- "make-dir": "^3.0.2",
- "pkg-dir": "^4.1.0"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/avajs/find-cache-dir?sponsor=1"
- }
- },
- "node_modules/find-cache-dir/node_modules/make-dir": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
- "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
- "dev": true,
- "dependencies": {
- "semver": "^6.0.0"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/find-up": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
- "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
- "dev": true,
- "dependencies": {
- "locate-path": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/findup-sync": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-5.0.0.tgz",
- "integrity": "sha512-MzwXju70AuyflbgeOhzvQWAvvQdo1XL0A9bVvlXsYcFEBM87WR4OakL4OfZq+QRmr+duJubio+UtNQCPsVESzQ==",
- "dev": true,
- "dependencies": {
- "detect-file": "^1.0.0",
- "is-glob": "^4.0.3",
- "micromatch": "^4.0.4",
- "resolve-dir": "^1.0.1"
- },
- "engines": {
- "node": ">= 10.13.0"
- }
- },
- "node_modules/fined": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz",
- "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==",
- "dev": true,
- "dependencies": {
- "expand-tilde": "^2.0.2",
- "is-plain-object": "^2.0.3",
- "object.defaults": "^1.1.0",
- "object.pick": "^1.2.0",
- "parse-filepath": "^1.0.1"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/flagged-respawn": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz",
- "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==",
- "dev": true,
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/flat": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.1.tgz",
- "integrity": "sha512-FmTtBsHskrU6FJ2VxCnsDb84wu9zhmO3cUX2kGFb5tuwhfXxGciiT0oRY+cck35QmG+NmGh5eLz6lLCpWTqwpA==",
- "dev": true,
- "dependencies": {
- "is-buffer": "~2.0.3"
- },
- "bin": {
- "flat": "cli.js"
- }
- },
- "node_modules/flat-cache": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
- "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
- "dev": true,
- "dependencies": {
- "flatted": "^3.1.0",
- "rimraf": "^3.0.2"
- },
- "engines": {
- "node": "^10.12.0 || >=12.0.0"
- }
- },
- "node_modules/flatted": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz",
- "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==",
- "dev": true
- },
- "node_modules/for-each": {
- "version": "0.3.3",
- "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
- "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
- "dev": true,
- "dependencies": {
- "is-callable": "^1.1.3"
- }
- },
- "node_modules/for-in": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
- "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/for-own": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz",
- "integrity": "sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==",
- "dev": true,
- "dependencies": {
- "for-in": "^1.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/forever-agent": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
- "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==",
- "dev": true,
- "engines": {
- "node": "*"
- }
- },
- "node_modules/form-data": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
- "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
- "dev": true,
- "dependencies": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.6",
- "mime-types": "^2.1.12"
- },
- "engines": {
- "node": ">= 0.12"
- }
- },
- "node_modules/fresh": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
- "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
- "dev": true,
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/fs-extra": {
- "version": "8.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
- "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
- "dev": true,
- "dependencies": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^4.0.0",
- "universalify": "^0.1.0"
- },
- "engines": {
- "node": ">=6 <7 || >=8"
- }
- },
- "node_modules/fs.realpath": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
- "dev": true
- },
- "node_modules/fsevents": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
- "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
- "dev": true,
- "hasInstallScript": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
- }
- },
- "node_modules/function-bind": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
- "dev": true
- },
- "node_modules/function.prototype.name": {
- "version": "1.1.5",
- "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz",
- "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.3",
- "es-abstract": "^1.19.0",
- "functions-have-names": "^1.2.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/functional-red-black-tree": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
- "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==",
- "dev": true
- },
- "node_modules/functions-have-names": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
- "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
- "dev": true,
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/get-caller-file": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
- "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
- "dev": true,
- "engines": {
- "node": "6.* || 8.* || >= 10.*"
- }
- },
- "node_modules/get-func-name": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz",
- "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==",
- "dev": true,
- "engines": {
- "node": "*"
- }
- },
- "node_modules/get-intrinsic": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz",
- "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==",
- "dev": true,
- "dependencies": {
- "function-bind": "^1.1.1",
- "has": "^1.0.3",
- "has-proto": "^1.0.1",
- "has-symbols": "^1.0.3"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/get-symbol-description": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz",
- "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "get-intrinsic": "^1.1.1"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/getobject": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/getobject/-/getobject-1.0.2.tgz",
- "integrity": "sha512-2zblDBaFcb3rB4rF77XVnuINOE2h2k/OnqXAiy0IrTxUfV1iFp3la33oAQVY9pCpWU268WFYVt2t71hlMuLsOg==",
- "dev": true,
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/getpass": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
- "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==",
- "dev": true,
- "dependencies": {
- "assert-plus": "^1.0.0"
- }
- },
- "node_modules/git-rev": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/git-rev/-/git-rev-0.2.1.tgz",
- "integrity": "sha512-p6OU8kZpeGHYqGpwnSD5/8IIERooiQp0p6On3T7ngcugnjhbmihvgMwCK2iun8ytn7FynsCPN+jRclR29hgOBg==",
- "dev": true
- },
- "node_modules/glob": {
- "version": "7.2.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
- "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
- "dev": true,
- "dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- },
- "engines": {
- "node": "*"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/glob-observable": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/glob-observable/-/glob-observable-0.7.0.tgz",
- "integrity": "sha512-iZAgGTchl2MgZIWmK96BoHv0dFA2iXWBjFTFgIBbcpSdEPJJoXgr2e48GWlxcDOLsb6UHz5NWEPi0+6ysPFE+A==",
- "dev": true,
- "dependencies": {
- "assert-valid-glob-opts": "^1.0.0",
- "fs.realpath": "^1.0.0",
- "glob": "^7.1.2",
- "graceful-fs": "^4.1.11",
- "inspect-with-kind": "^1.0.4",
- "zen-observable": "^0.8.6"
- }
- },
- "node_modules/glob-option-error": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/glob-option-error/-/glob-option-error-1.0.0.tgz",
- "integrity": "sha512-AD7lbWbwF2Ii9gBQsQIOEzwuqP/jsnyvK27/3JDq1kn/JyfDtYI6AWz3ZQwcPuQdHSBcFh+A2yT/SEep27LOGg==",
- "dev": true
- },
- "node_modules/glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "dev": true,
- "dependencies": {
- "is-glob": "^4.0.1"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/global-modules": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz",
- "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==",
- "dev": true,
- "dependencies": {
- "global-prefix": "^1.0.1",
- "is-windows": "^1.0.1",
- "resolve-dir": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/global-prefix": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz",
- "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==",
- "dev": true,
- "dependencies": {
- "expand-tilde": "^2.0.2",
- "homedir-polyfill": "^1.0.1",
- "ini": "^1.3.4",
- "is-windows": "^1.0.1",
- "which": "^1.2.14"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/global-prefix/node_modules/which": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
- "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
- "dev": true,
- "dependencies": {
- "isexe": "^2.0.0"
- },
- "bin": {
- "which": "bin/which"
- }
- },
- "node_modules/globals": {
- "version": "13.21.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz",
- "integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==",
- "dev": true,
- "dependencies": {
- "type-fest": "^0.20.2"
- },
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/globalthis": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz",
- "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==",
- "dev": true,
- "dependencies": {
- "define-properties": "^1.1.3"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/globby": {
- "version": "10.0.2",
- "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz",
- "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==",
- "dev": true,
- "dependencies": {
- "@types/glob": "^7.1.1",
- "array-union": "^2.1.0",
- "dir-glob": "^3.0.1",
- "fast-glob": "^3.0.3",
- "glob": "^7.1.3",
- "ignore": "^5.1.1",
- "merge2": "^1.2.3",
- "slash": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/gopd": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
- "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
- "dev": true,
- "dependencies": {
- "get-intrinsic": "^1.1.3"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/graceful-fs": {
- "version": "4.2.11",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
- "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
- "devOptional": true
- },
- "node_modules/growl": {
- "version": "1.10.5",
- "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz",
- "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==",
- "dev": true,
- "engines": {
- "node": ">=4.x"
- }
- },
- "node_modules/grunt": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.6.1.tgz",
- "integrity": "sha512-/ABUy3gYWu5iBmrUSRBP97JLpQUm0GgVveDCp6t3yRNIoltIYw7rEj3g5y1o2PGPR2vfTRGa7WC/LZHLTXnEzA==",
- "dev": true,
- "dependencies": {
- "dateformat": "~4.6.2",
- "eventemitter2": "~0.4.13",
- "exit": "~0.1.2",
- "findup-sync": "~5.0.0",
- "glob": "~7.1.6",
- "grunt-cli": "~1.4.3",
- "grunt-known-options": "~2.0.0",
- "grunt-legacy-log": "~3.0.0",
- "grunt-legacy-util": "~2.0.1",
- "iconv-lite": "~0.6.3",
- "js-yaml": "~3.14.0",
- "minimatch": "~3.0.4",
- "nopt": "~3.0.6"
- },
- "bin": {
- "grunt": "bin/grunt"
- },
- "engines": {
- "node": ">=16"
- }
- },
- "node_modules/grunt-cli": {
- "version": "1.4.3",
- "resolved": "https://registry.npmjs.org/grunt-cli/-/grunt-cli-1.4.3.tgz",
- "integrity": "sha512-9Dtx/AhVeB4LYzsViCjUQkd0Kw0McN2gYpdmGYKtE2a5Yt7v1Q+HYZVWhqXc/kGnxlMtqKDxSwotiGeFmkrCoQ==",
- "dev": true,
- "dependencies": {
- "grunt-known-options": "~2.0.0",
- "interpret": "~1.1.0",
- "liftup": "~3.0.1",
- "nopt": "~4.0.1",
- "v8flags": "~3.2.0"
- },
- "bin": {
- "grunt": "bin/grunt"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/grunt-cli/node_modules/nopt": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz",
- "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==",
- "dev": true,
- "dependencies": {
- "abbrev": "1",
- "osenv": "^0.1.4"
- },
- "bin": {
- "nopt": "bin/nopt.js"
- }
- },
- "node_modules/grunt-contrib-clean": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/grunt-contrib-clean/-/grunt-contrib-clean-1.1.0.tgz",
- "integrity": "sha512-tET+TYTd8vCtKeGwbLjoH8+SdI8ngVzGbPr7vlWkewG7mYYHIccd2Ldxq+PK3DyBp5Www3ugdkfsjoNKUl5MTg==",
- "dev": true,
- "dependencies": {
- "async": "^1.5.2",
- "rimraf": "^2.5.1"
- },
- "engines": {
- "node": ">= 0.10.0"
- },
- "peerDependencies": {
- "grunt": ">=0.4.5"
- }
- },
- "node_modules/grunt-contrib-clean/node_modules/rimraf": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
- "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
- "dev": true,
- "dependencies": {
- "glob": "^7.1.3"
- },
- "bin": {
- "rimraf": "bin.js"
- }
- },
- "node_modules/grunt-contrib-connect": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/grunt-contrib-connect/-/grunt-contrib-connect-1.0.2.tgz",
- "integrity": "sha512-7OPoyfGrpOYzuiRPzGyzWDe/xFcjttXe1ztVSFS8TAVBtpfXeeOV9RiwuyqA4yN1UeOG2Pnpx8s0DcUDAu21Gw==",
- "dev": true,
- "dependencies": {
- "async": "^1.5.2",
- "connect": "^3.4.0",
- "connect-livereload": "^0.5.0",
- "http2": "^3.3.4",
- "morgan": "^1.6.1",
- "opn": "^4.0.0",
- "portscanner": "^1.0.0",
- "serve-index": "^1.7.1",
- "serve-static": "^1.10.0"
- },
- "engines": {
- "node": ">=0.10.0"
- },
- "peerDependencies": {
- "grunt": ">=0.4.0"
- }
- },
- "node_modules/grunt-eslint": {
- "version": "23.0.0",
- "resolved": "https://registry.npmjs.org/grunt-eslint/-/grunt-eslint-23.0.0.tgz",
- "integrity": "sha512-QqHSAiGF08EVD7YlD4OSRWuLRaDvpsRdTptwy9WaxUXE+03mCLVA/lEaR6SHWehF7oUwIqCEjaNONeeeWlB4LQ==",
- "dev": true,
- "dependencies": {
- "chalk": "^4.0.0",
- "eslint": "^7.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- },
- "peerDependencies": {
- "grunt": ">=1"
- }
- },
- "node_modules/grunt-known-options": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/grunt-known-options/-/grunt-known-options-2.0.0.tgz",
- "integrity": "sha512-GD7cTz0I4SAede1/+pAbmJRG44zFLPipVtdL9o3vqx9IEyb7b4/Y3s7r6ofI3CchR5GvYJ+8buCSioDv5dQLiA==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/grunt-legacy-log": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-3.0.0.tgz",
- "integrity": "sha512-GHZQzZmhyq0u3hr7aHW4qUH0xDzwp2YXldLPZTCjlOeGscAOWWPftZG3XioW8MasGp+OBRIu39LFx14SLjXRcA==",
- "dev": true,
- "dependencies": {
- "colors": "~1.1.2",
- "grunt-legacy-log-utils": "~2.1.0",
- "hooker": "~0.2.3",
- "lodash": "~4.17.19"
- },
- "engines": {
- "node": ">= 0.10.0"
- }
- },
- "node_modules/grunt-legacy-log-utils": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-2.1.0.tgz",
- "integrity": "sha512-lwquaPXJtKQk0rUM1IQAop5noEpwFqOXasVoedLeNzaibf/OPWjKYvvdqnEHNmU+0T0CaReAXIbGo747ZD+Aaw==",
- "dev": true,
- "dependencies": {
- "chalk": "~4.1.0",
- "lodash": "~4.17.19"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/grunt-legacy-util": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-2.0.1.tgz",
- "integrity": "sha512-2bQiD4fzXqX8rhNdXkAywCadeqiPiay0oQny77wA2F3WF4grPJXCvAcyoWUJV+po/b15glGkxuSiQCK299UC2w==",
- "dev": true,
- "dependencies": {
- "async": "~3.2.0",
- "exit": "~0.1.2",
- "getobject": "~1.0.0",
- "hooker": "~0.2.3",
- "lodash": "~4.17.21",
- "underscore.string": "~3.3.5",
- "which": "~2.0.2"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/grunt-legacy-util/node_modules/async": {
- "version": "3.2.4",
- "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz",
- "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==",
- "dev": true
- },
- "node_modules/grunt-saucelabs": {
- "version": "9.0.1",
- "resolved": "https://registry.npmjs.org/grunt-saucelabs/-/grunt-saucelabs-9.0.1.tgz",
- "integrity": "sha512-3WD5/RtSp8AyEnmtN5HK1NUkU7o/kBl6rGQILnfg7WHTe0g0uG3LtecWPwTRYrD7kop79WkDfeVQ85WjvwDUZw==",
- "dev": true,
- "dependencies": {
- "colors": "~1.1.2",
- "lodash": "^4.17.11",
- "q": "~1.4.1",
- "requestretry": "~1.9.0",
- "sauce-tunnel": "~2.5.0",
- "saucelabs": "^1.5.0"
- },
- "engines": {
- "node": ">=0.6",
- "npm": ">=1.2.12"
- },
- "peerDependencies": {
- "grunt": ">=0.4.1"
- }
- },
- "node_modules/grunt-shell": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/grunt-shell/-/grunt-shell-1.3.1.tgz",
- "integrity": "sha512-fqiC5NNNTCKwH3TCbYpNkNUgq1/cEYJp59tedtWv83sGeG0PTmVB7Lbo/m0WQug3MngV6lsYAXvoNflDD1oeQg==",
- "dev": true,
- "dependencies": {
- "chalk": "^1.0.0",
- "npm-run-path": "^1.0.0",
- "object-assign": "^4.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- },
- "peerDependencies": {
- "grunt": ">=0.4.0"
- }
- },
- "node_modules/grunt-shell/node_modules/ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/grunt-shell/node_modules/ansi-styles": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
- "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/grunt-shell/node_modules/chalk": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
- "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^2.2.1",
- "escape-string-regexp": "^1.0.2",
- "has-ansi": "^2.0.0",
- "strip-ansi": "^3.0.0",
- "supports-color": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/grunt-shell/node_modules/escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "dev": true,
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/grunt-shell/node_modules/strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
- "dev": true,
- "dependencies": {
- "ansi-regex": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/grunt-shell/node_modules/supports-color": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
- "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==",
- "dev": true,
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/grunt/node_modules/glob": {
- "version": "7.1.7",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz",
- "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==",
- "dev": true,
- "dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- },
- "engines": {
- "node": "*"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/grunt/node_modules/minimatch": {
- "version": "3.0.8",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz",
- "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==",
- "dev": true,
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/har-schema": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
- "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/har-validator": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz",
- "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==",
- "deprecated": "this library is no longer supported",
- "dev": true,
- "dependencies": {
- "ajv": "^6.12.3",
- "har-schema": "^2.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/has": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
- "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
- "dev": true,
- "dependencies": {
- "function-bind": "^1.1.1"
- },
- "engines": {
- "node": ">= 0.4.0"
- }
- },
- "node_modules/has-ansi": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
- "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==",
- "dev": true,
- "dependencies": {
- "ansi-regex": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/has-ansi/node_modules/ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/has-bigints": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
- "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
- "dev": true,
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/has-property-descriptors": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz",
- "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==",
- "dev": true,
- "dependencies": {
- "get-intrinsic": "^1.1.1"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/has-proto": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz",
- "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==",
- "dev": true,
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/has-symbols": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
- "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
- "dev": true,
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/has-tostringtag": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
- "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
- "dev": true,
- "dependencies": {
- "has-symbols": "^1.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/he": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
- "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
- "dev": true,
- "bin": {
- "he": "bin/he"
- }
- },
- "node_modules/homedir-polyfill": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz",
- "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==",
- "dev": true,
- "dependencies": {
- "parse-passwd": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/hooker": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz",
- "integrity": "sha512-t+UerCsQviSymAInD01Pw+Dn/usmz1sRO+3Zk1+lx8eg+WKpD2ulcwWqHHL0+aseRBr+3+vIhiG1K1JTwaIcTA==",
- "dev": true,
- "engines": {
- "node": "*"
- }
- },
- "node_modules/hosted-git-info": {
- "version": "2.8.9",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
- "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
- "dev": true
- },
- "node_modules/html-es6cape": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/html-es6cape/-/html-es6cape-1.0.5.tgz",
- "integrity": "sha512-pkkhVE3YCMJwWBy/b87xhXaFaceDZECytDvu36/t3dXvU3FaczMjQVX2cugDIBM+gpAKBPSxl4KWctqVJBJi4w==",
- "dev": true
- },
- "node_modules/html-template-tag": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/html-template-tag/-/html-template-tag-3.2.0.tgz",
- "integrity": "sha512-dt/21zLAVPBB3M4j6dCE46LyG8PcHHIUTYiBTIRDw1yg4nGaVbKEVHVsm3BpeJzlSB6n9BrcW6kP4zJE9mS3ew==",
- "dev": true,
- "dependencies": {
- "html-es6cape": "^1.0.5"
- }
- },
- "node_modules/http-errors": {
- "version": "1.6.3",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
- "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==",
- "dev": true,
- "dependencies": {
- "depd": "~1.1.2",
- "inherits": "2.0.3",
- "setprototypeof": "1.1.0",
- "statuses": ">= 1.4.0 < 2"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/http-errors/node_modules/depd": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
- "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==",
- "dev": true,
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/http-errors/node_modules/inherits": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
- "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==",
- "dev": true
- },
- "node_modules/http-signature": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
- "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==",
- "dev": true,
- "dependencies": {
- "assert-plus": "^1.0.0",
- "jsprim": "^1.2.2",
- "sshpk": "^1.7.0"
- },
- "engines": {
- "node": ">=0.8",
- "npm": ">=1.3.7"
- }
- },
- "node_modules/http2": {
- "version": "3.3.7",
- "resolved": "https://registry.npmjs.org/http2/-/http2-3.3.7.tgz",
- "integrity": "sha512-puSi8M8WNlFJm9Pk4c/Mbz9Gwparuj3gO9/RRO5zv6piQ0FY+9Qywp0PdWshYgsMJSalixFY7eC6oPu0zRxLAQ==",
- "deprecated": "Use the built-in module in node 9.0.0 or newer, instead",
- "dev": true,
- "engines": {
- "node": ">=0.12.0 <9.0.0"
- }
- },
- "node_modules/iconv-lite": {
- "version": "0.6.3",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
- "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
- "devOptional": true,
- "dependencies": {
- "safer-buffer": ">= 2.1.2 < 3.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/ignore": {
- "version": "5.2.4",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz",
- "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==",
- "dev": true,
- "engines": {
- "node": ">= 4"
- }
- },
- "node_modules/image-size": {
- "version": "0.5.5",
- "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz",
- "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==",
- "optional": true,
- "bin": {
- "image-size": "bin/image-size.js"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/import-fresh": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
- "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
- "dev": true,
- "dependencies": {
- "parent-module": "^1.0.0",
- "resolve-from": "^4.0.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/imurmurhash": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
- "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
- "dev": true,
- "engines": {
- "node": ">=0.8.19"
- }
- },
- "node_modules/indexed-filter": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/indexed-filter/-/indexed-filter-1.0.3.tgz",
- "integrity": "sha512-oBIzs6EARNMzrLgVg20fK52H19WcRHBiukiiEkw9rnnI//8rinEBMLrYdwEfJ9d4K7bjV1L6nSGft6H/qzHNgQ==",
- "dev": true,
- "dependencies": {
- "append-type": "^1.0.1"
- }
- },
- "node_modules/inflight": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
- "dev": true,
- "dependencies": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "node_modules/inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
- "dev": true
- },
- "node_modules/ini": {
- "version": "1.3.8",
- "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
- "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
- "dev": true
- },
- "node_modules/inspect-with-kind": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/inspect-with-kind/-/inspect-with-kind-1.0.5.tgz",
- "integrity": "sha512-MAQUJuIo7Xqk8EVNP+6d3CKq9c80hi4tjIbIAT6lmGW9W6WzlHiu9PS8uSuUYU+Do+j1baiFp3H25XEVxDIG2g==",
- "dev": true,
- "dependencies": {
- "kind-of": "^6.0.2"
- }
- },
- "node_modules/internal-slot": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz",
- "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==",
- "dev": true,
- "dependencies": {
- "get-intrinsic": "^1.2.0",
- "has": "^1.0.3",
- "side-channel": "^1.0.4"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/interpret": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz",
- "integrity": "sha512-CLM8SNMDu7C5psFCn6Wg/tgpj/bKAg7hc2gWqcuR9OD5Ft9PhBpIu8PLicPeis+xDd6YX2ncI8MCA64I9tftIA==",
- "dev": true
- },
- "node_modules/is-absolute": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz",
- "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==",
- "dev": true,
- "dependencies": {
- "is-relative": "^1.0.0",
- "is-windows": "^1.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-array-buffer": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz",
- "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "get-intrinsic": "^1.2.0",
- "is-typed-array": "^1.1.10"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-arrayish": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
- "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
- "dev": true
- },
- "node_modules/is-bigint": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
- "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
- "dev": true,
- "dependencies": {
- "has-bigints": "^1.0.1"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-boolean-object": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
- "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-buffer": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz",
- "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/is-callable": {
- "version": "1.2.7",
- "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
- "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
- "dev": true,
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-core-module": {
- "version": "2.13.0",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz",
- "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==",
- "dev": true,
- "dependencies": {
- "has": "^1.0.3"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-date-object": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
- "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
- "dev": true,
- "dependencies": {
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-extglob": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
- "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-finite": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz",
- "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/is-fullwidth-code-point": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/is-glob": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
- "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
- "dev": true,
- "dependencies": {
- "is-extglob": "^2.1.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-module": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz",
- "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==",
- "dev": true
- },
- "node_modules/is-negative-zero": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz",
- "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==",
- "dev": true,
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-number": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
- "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
- "dev": true,
- "engines": {
- "node": ">=0.12.0"
- }
- },
- "node_modules/is-number-object": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz",
- "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
- "dev": true,
- "dependencies": {
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-plain-obj": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
- "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-plain-object": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
- "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
- "dev": true,
- "dependencies": {
- "isobject": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-reference": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz",
- "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==",
- "dev": true,
- "dependencies": {
- "@types/estree": "*"
- }
- },
- "node_modules/is-regex": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
- "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-relative": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz",
- "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==",
- "dev": true,
- "dependencies": {
- "is-unc-path": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-shared-array-buffer": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz",
- "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-string": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
- "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
- "dev": true,
- "dependencies": {
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-symbol": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
- "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
- "dev": true,
- "dependencies": {
- "has-symbols": "^1.0.2"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-typed-array": {
- "version": "1.1.12",
- "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz",
- "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==",
- "dev": true,
- "dependencies": {
- "which-typed-array": "^1.1.11"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-typedarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
- "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==",
- "dev": true
- },
- "node_modules/is-unc-path": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz",
- "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==",
- "dev": true,
- "dependencies": {
- "unc-path-regex": "^0.1.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/is-weakref": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz",
- "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/is-what": {
- "version": "3.14.1",
- "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz",
- "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA=="
- },
- "node_modules/is-windows": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
- "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/isarray": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
- "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
- "dev": true
- },
- "node_modules/isexe": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
- "dev": true
- },
- "node_modules/isobject": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
- "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/isstream": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
- "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==",
- "dev": true
- },
- "node_modules/jest-worker": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz",
- "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==",
- "dev": true,
- "dependencies": {
- "merge-stream": "^2.0.0",
- "supports-color": "^6.1.0"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/jest-worker/node_modules/has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/jest-worker/node_modules/supports-color": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
- "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
- "dev": true,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/jit-grunt": {
- "version": "0.10.0",
- "resolved": "https://registry.npmjs.org/jit-grunt/-/jit-grunt-0.10.0.tgz",
- "integrity": "sha512-eT/f4c9wgZ3buXB7X1JY1w6uNtAV0bhrbOGf/mFmBb0CDNLUETJ/VRoydayWOI54tOoam0cz9RooVCn3QY1WoA==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- },
- "peerDependencies": {
- "grunt": ">=0.4.0"
- }
- },
- "node_modules/js-base64": {
- "version": "2.6.4",
- "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz",
- "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==",
- "dev": true
- },
- "node_modules/js-tokens": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
- "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
- "dev": true
- },
- "node_modules/js-yaml": {
- "version": "3.14.1",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
- "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
- "dev": true,
- "dependencies": {
- "argparse": "^1.0.7",
- "esprima": "^4.0.0"
- },
- "bin": {
- "js-yaml": "bin/js-yaml.js"
- }
- },
- "node_modules/jsbn": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
- "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==",
- "dev": true
- },
- "node_modules/json-parse-better-errors": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
- "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
- "dev": true
- },
- "node_modules/json-schema": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz",
- "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==",
- "dev": true
- },
- "node_modules/json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "dev": true
- },
- "node_modules/json-stable-stringify-without-jsonify": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
- "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
- "dev": true
- },
- "node_modules/json-stringify-safe": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
- "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==",
- "dev": true
- },
- "node_modules/json2csv": {
- "version": "5.0.7",
- "resolved": "https://registry.npmjs.org/json2csv/-/json2csv-5.0.7.tgz",
- "integrity": "sha512-YRZbUnyaJZLZUJSRi2G/MqahCyRv9n/ds+4oIetjDF3jWQA7AG7iSeKTiZiCNqtMZM7HDyt0e/W6lEnoGEmMGA==",
- "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
- "dev": true,
- "dependencies": {
- "commander": "^6.1.0",
- "jsonparse": "^1.3.1",
- "lodash.get": "^4.4.2"
- },
- "bin": {
- "json2csv": "bin/json2csv.js"
- },
- "engines": {
- "node": ">= 10",
- "npm": ">= 6.13.0"
- }
- },
- "node_modules/jsonfile": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
- "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==",
- "dev": true,
- "optionalDependencies": {
- "graceful-fs": "^4.1.6"
- }
- },
- "node_modules/jsonparse": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz",
- "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==",
- "dev": true,
- "engines": [
- "node >= 0.2.0"
- ]
- },
- "node_modules/jsprim": {
- "version": "1.4.2",
- "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz",
- "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==",
- "dev": true,
- "dependencies": {
- "assert-plus": "1.0.0",
- "extsprintf": "1.3.0",
- "json-schema": "0.4.0",
- "verror": "1.10.0"
- },
- "engines": {
- "node": ">=0.6.0"
- }
- },
- "node_modules/kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/kleur": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz",
- "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/less-plugin-autoprefix": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/less-plugin-autoprefix/-/less-plugin-autoprefix-1.5.1.tgz",
- "integrity": "sha512-l++6pbkvw8XSD1soqugslzAaz0/YFrWXgc+PGo/EhLCjRo9zJfda2hFPLBSYrRDl62dTeDbN93Kx+1dvnHnkIw==",
- "dev": true,
- "dependencies": {
- "autoprefixer": "^6.0.0",
- "postcss": "^5.0.0"
- },
- "engines": {
- "node": ">=0.4.2"
- }
- },
- "node_modules/less-plugin-clean-css": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/less-plugin-clean-css/-/less-plugin-clean-css-1.6.0.tgz",
- "integrity": "sha512-jwXX6WlXT57OVCXa5oBJBaJq1b4s1BOKeEEoAL2UTeEitogQWfTcBbLT/vow9pl0N0MXV8Mb4KyhTGG0YbEKyQ==",
- "dev": true,
- "dependencies": {
- "clean-css": "5.3.3"
- },
- "engines": {
- "node": ">=0.10"
- }
- },
- "node_modules/levn": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
- "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
- "dev": true,
- "dependencies": {
- "prelude-ls": "^1.2.1",
- "type-check": "~0.4.0"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/liftup": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/liftup/-/liftup-3.0.1.tgz",
- "integrity": "sha512-yRHaiQDizWSzoXk3APcA71eOI/UuhEkNN9DiW2Tt44mhYzX4joFoCZlxsSOF7RyeLlfqzFLQI1ngFq3ggMPhOw==",
- "dev": true,
- "dependencies": {
- "extend": "^3.0.2",
- "findup-sync": "^4.0.0",
- "fined": "^1.2.0",
- "flagged-respawn": "^1.0.1",
- "is-plain-object": "^2.0.4",
- "object.map": "^1.0.1",
- "rechoir": "^0.7.0",
- "resolve": "^1.19.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/liftup/node_modules/findup-sync": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-4.0.0.tgz",
- "integrity": "sha512-6jvvn/12IC4quLBL1KNokxC7wWTvYncaVUYSoxWw7YykPLuRrnv4qdHcSOywOI5RpkOVGeQRtWM8/q+G6W6qfQ==",
- "dev": true,
- "dependencies": {
- "detect-file": "^1.0.0",
- "is-glob": "^4.0.0",
- "micromatch": "^4.0.2",
- "resolve-dir": "^1.0.1"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/load-json-file": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
- "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==",
- "dev": true,
- "dependencies": {
- "graceful-fs": "^4.1.2",
- "parse-json": "^4.0.0",
- "pify": "^3.0.0",
- "strip-bom": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/load-json-file/node_modules/pify": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
- "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/locate-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
- "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
- "dev": true,
- "dependencies": {
- "p-locate": "^3.0.0",
- "path-exists": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/lodash": {
- "version": "4.17.21",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
- "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
- "dev": true
- },
- "node_modules/lodash.get": {
- "version": "4.4.2",
- "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
- "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==",
- "dev": true
- },
- "node_modules/lodash.merge": {
- "version": "4.6.2",
- "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
- "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
- "dev": true
- },
- "node_modules/lodash.truncate": {
- "version": "4.4.2",
- "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz",
- "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==",
- "dev": true
- },
- "node_modules/log-symbols": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz",
- "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==",
- "dev": true,
- "dependencies": {
- "chalk": "^2.0.1"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/log-symbols/node_modules/ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dev": true,
- "dependencies": {
- "color-convert": "^1.9.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/log-symbols/node_modules/chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/log-symbols/node_modules/color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "dev": true,
- "dependencies": {
- "color-name": "1.1.3"
- }
- },
- "node_modules/log-symbols/node_modules/color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
- "dev": true
- },
- "node_modules/log-symbols/node_modules/escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "dev": true,
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/log-symbols/node_modules/has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/log-symbols/node_modules/supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dev": true,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/log-update": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz",
- "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==",
- "dev": true,
- "dependencies": {
- "ansi-escapes": "^4.3.0",
- "cli-cursor": "^3.1.0",
- "slice-ansi": "^4.0.0",
- "wrap-ansi": "^6.2.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/loupe": {
- "version": "2.3.6",
- "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz",
- "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==",
- "dev": true,
- "dependencies": {
- "get-func-name": "^2.0.0"
- }
- },
- "node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dev": true,
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
- "node_modules/magic-string": {
- "version": "0.25.9",
- "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
- "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
- "dev": true,
- "dependencies": {
- "sourcemap-codec": "^1.4.8"
- }
- },
- "node_modules/make-dir": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
- "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
- "optional": true,
- "dependencies": {
- "pify": "^4.0.1",
- "semver": "^5.6.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/make-dir/node_modules/semver": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
- "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
- "optional": true,
- "bin": {
- "semver": "bin/semver"
- }
- },
- "node_modules/make-error": {
- "version": "1.3.6",
- "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
- "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==",
- "dev": true
- },
- "node_modules/make-iterator": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz",
- "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==",
- "dev": true,
- "dependencies": {
- "kind-of": "^6.0.2"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/map-cache": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
- "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/memorystream": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz",
- "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==",
- "dev": true,
- "engines": {
- "node": ">= 0.10.0"
- }
- },
- "node_modules/merge-stream": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
- "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
- "dev": true
- },
- "node_modules/merge2": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
- "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
- "dev": true,
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/micromatch": {
- "version": "4.0.5",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
- "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
- "dev": true,
- "dependencies": {
- "braces": "^3.0.2",
- "picomatch": "^2.3.1"
- },
- "engines": {
- "node": ">=8.6"
- }
- },
- "node_modules/mime": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
- "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
- "devOptional": true,
- "bin": {
- "mime": "cli.js"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/mime-db": {
- "version": "1.52.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
- "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
- "dev": true,
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/mime-types": {
- "version": "2.1.35",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
- "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
- "dev": true,
- "dependencies": {
- "mime-db": "1.52.0"
- },
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/mimic-fn": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
- "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dev": true,
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/minimist": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
- "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
- "dev": true,
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/mkdirp": {
- "version": "0.5.4",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.4.tgz",
- "integrity": "sha512-iG9AK/dJLtJ0XNgTuDbSyNS3zECqDlAhnQW4CsNxBG3LQJBbHmRX1egw39DmtOdCAqY+dKXV+sgPgilNWUKMVw==",
- "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)",
- "dev": true,
- "dependencies": {
- "minimist": "^1.2.5"
- },
- "bin": {
- "mkdirp": "bin/cmd.js"
- }
- },
- "node_modules/mocha": {
- "version": "6.2.3",
- "resolved": "https://registry.npmjs.org/mocha/-/mocha-6.2.3.tgz",
- "integrity": "sha512-0R/3FvjIGH3eEuG17ccFPk117XL2rWxatr81a57D+r/x2uTYZRbdZ4oVidEUMh2W2TJDa7MdAb12Lm2/qrKajg==",
- "dev": true,
- "dependencies": {
- "ansi-colors": "3.2.3",
- "browser-stdout": "1.3.1",
- "debug": "3.2.6",
- "diff": "3.5.0",
- "escape-string-regexp": "1.0.5",
- "find-up": "3.0.0",
- "glob": "7.1.3",
- "growl": "1.10.5",
- "he": "1.2.0",
- "js-yaml": "3.13.1",
- "log-symbols": "2.2.0",
- "minimatch": "3.0.4",
- "mkdirp": "0.5.4",
- "ms": "2.1.1",
- "node-environment-flags": "1.0.5",
- "object.assign": "4.1.0",
- "strip-json-comments": "2.0.1",
- "supports-color": "6.0.0",
- "which": "1.3.1",
- "wide-align": "1.1.3",
- "yargs": "13.3.2",
- "yargs-parser": "13.1.2",
- "yargs-unparser": "1.6.0"
- },
- "bin": {
- "_mocha": "bin/_mocha",
- "mocha": "bin/mocha"
- },
- "engines": {
- "node": ">= 6.0.0"
- }
- },
- "node_modules/mocha-teamcity-reporter": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/mocha-teamcity-reporter/-/mocha-teamcity-reporter-3.0.0.tgz",
- "integrity": "sha512-FyGgmtFfW2nDwEZU3mrjQShAAK/zhGivwY4HCsqoDoyeS8vV8HGdq1Dn2P+SFaIoCeXTQ0Z+5xVRyikYaKrW5w==",
- "dev": true,
- "engines": {
- "node": ">=4"
- },
- "peerDependencies": {
- "mocha": ">=3.5.0"
- }
- },
- "node_modules/mocha/node_modules/ansi-colors": {
- "version": "3.2.3",
- "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz",
- "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/mocha/node_modules/debug": {
- "version": "3.2.6",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
- "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
- "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)",
- "dev": true,
- "dependencies": {
- "ms": "^2.1.1"
- }
- },
- "node_modules/mocha/node_modules/escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "dev": true,
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/mocha/node_modules/glob": {
- "version": "7.1.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
- "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
- "dev": true,
- "dependencies": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/mocha/node_modules/has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/mocha/node_modules/js-yaml": {
- "version": "3.13.1",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
- "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
- "dev": true,
- "dependencies": {
- "argparse": "^1.0.7",
- "esprima": "^4.0.0"
- },
- "bin": {
- "js-yaml": "bin/js-yaml.js"
- }
- },
- "node_modules/mocha/node_modules/minimatch": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
- "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
- "dev": true,
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/mocha/node_modules/ms": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
- "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
- "dev": true
- },
- "node_modules/mocha/node_modules/strip-json-comments": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
- "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/mocha/node_modules/supports-color": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
- "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
- "dev": true,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/mocha/node_modules/which": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
- "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
- "dev": true,
- "dependencies": {
- "isexe": "^2.0.0"
- },
- "bin": {
- "which": "bin/which"
- }
- },
- "node_modules/morgan": {
- "version": "1.10.0",
- "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz",
- "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==",
- "dev": true,
- "dependencies": {
- "basic-auth": "~2.0.1",
- "debug": "2.6.9",
- "depd": "~2.0.0",
- "on-finished": "~2.3.0",
- "on-headers": "~1.0.2"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/morgan/node_modules/debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/morgan/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
- "dev": true
- },
- "node_modules/ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
- "devOptional": true
- },
- "node_modules/natural-compare": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
- "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
- "dev": true
- },
- "node_modules/needle": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/needle/-/needle-3.2.0.tgz",
- "integrity": "sha512-oUvzXnyLiVyVGoianLijF9O/RecZUf7TkBfimjGrLM4eQhXyeJwM6GeAWccwfQ9aa4gMCZKqhAOuLaMIcQxajQ==",
- "optional": true,
- "dependencies": {
- "debug": "^3.2.6",
- "iconv-lite": "^0.6.3",
- "sax": "^1.2.4"
- },
- "bin": {
- "needle": "bin/needle"
- },
- "engines": {
- "node": ">= 4.4.x"
- }
- },
- "node_modules/needle/node_modules/debug": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
- "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
- "optional": true,
- "dependencies": {
- "ms": "^2.1.1"
- }
- },
- "node_modules/negotiator": {
- "version": "0.6.3",
- "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
- "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
- "dev": true,
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/nice-try": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
- "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
- "dev": true
- },
- "node_modules/nock": {
- "version": "11.9.1",
- "resolved": "https://registry.npmjs.org/nock/-/nock-11.9.1.tgz",
- "integrity": "sha512-U5wPctaY4/ar2JJ5Jg4wJxlbBfayxgKbiAeGh+a1kk6Pwnc2ZEuKviLyDSG6t0uXl56q7AALIxoM6FJrBSsVXA==",
- "dev": true,
- "dependencies": {
- "debug": "^4.1.0",
- "json-stringify-safe": "^5.0.1",
- "lodash": "^4.17.13",
- "mkdirp": "^0.5.0",
- "propagate": "^2.0.0"
- },
- "engines": {
- "node": ">= 8.0"
- }
- },
- "node_modules/node-environment-flags": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.5.tgz",
- "integrity": "sha512-VNYPRfGfmZLx0Ye20jWzHUjyTW/c+6Wq+iLhDzUI4XmhrDd9l/FozXV3F2xOaXjvp0co0+v1YSR3CMP6g+VvLQ==",
- "dev": true,
- "dependencies": {
- "object.getownpropertydescriptors": "^2.0.3",
- "semver": "^5.7.0"
- }
- },
- "node_modules/node-environment-flags/node_modules/semver": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
- "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
- "dev": true,
- "bin": {
- "semver": "bin/semver"
- }
- },
- "node_modules/node-promise": {
- "version": "0.5.14",
- "resolved": "https://registry.npmjs.org/node-promise/-/node-promise-0.5.14.tgz",
- "integrity": "sha512-kbd+ABY2XRdByRVHPcBDemymfNL8+msGyKNxG/ziZnh9RjneuuGQl3/CE5UkNWxCInkJS+ztc5B31/t2kIO4Yw==",
- "dev": true
- },
- "node_modules/nop": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/nop/-/nop-1.0.0.tgz",
- "integrity": "sha512-XdkOuXGx0DTwlqb0DWTcDqelgU/F3YyZ+PTRaecpDVpkYskcnh3OeUYKfvjcRQ2D1diTIGxi/a3eHVjW5yPupQ==",
- "dev": true
- },
- "node_modules/nopt": {
- "version": "3.0.6",
- "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
- "integrity": "sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==",
- "dev": true,
- "dependencies": {
- "abbrev": "1"
- },
- "bin": {
- "nopt": "bin/nopt.js"
- }
- },
- "node_modules/normalize-package-data": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
- "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
- "dev": true,
- "dependencies": {
- "hosted-git-info": "^2.1.4",
- "resolve": "^1.10.0",
- "semver": "2 || 3 || 4 || 5",
- "validate-npm-package-license": "^3.0.1"
- }
- },
- "node_modules/normalize-package-data/node_modules/semver": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
- "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
- "dev": true,
- "bin": {
- "semver": "bin/semver"
- }
- },
- "node_modules/normalize-range": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
- "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/npm-run-all": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz",
- "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^3.2.1",
- "chalk": "^2.4.1",
- "cross-spawn": "^6.0.5",
- "memorystream": "^0.3.1",
- "minimatch": "^3.0.4",
- "pidtree": "^0.3.0",
- "read-pkg": "^3.0.0",
- "shell-quote": "^1.6.1",
- "string.prototype.padend": "^3.0.0"
- },
- "bin": {
- "npm-run-all": "bin/npm-run-all/index.js",
- "run-p": "bin/run-p/index.js",
- "run-s": "bin/run-s/index.js"
- },
- "engines": {
- "node": ">= 4"
- }
- },
- "node_modules/npm-run-all/node_modules/ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dev": true,
- "dependencies": {
- "color-convert": "^1.9.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/npm-run-all/node_modules/chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/npm-run-all/node_modules/color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "dev": true,
- "dependencies": {
- "color-name": "1.1.3"
- }
- },
- "node_modules/npm-run-all/node_modules/color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
- "dev": true
- },
- "node_modules/npm-run-all/node_modules/cross-spawn": {
- "version": "6.0.5",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
- "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
- "dev": true,
- "dependencies": {
- "nice-try": "^1.0.4",
- "path-key": "^2.0.1",
- "semver": "^5.5.0",
- "shebang-command": "^1.2.0",
- "which": "^1.2.9"
- },
- "engines": {
- "node": ">=4.8"
- }
- },
- "node_modules/npm-run-all/node_modules/escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "dev": true,
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/npm-run-all/node_modules/has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/npm-run-all/node_modules/path-key": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
- "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/npm-run-all/node_modules/semver": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
- "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
- "dev": true,
- "bin": {
- "semver": "bin/semver"
- }
- },
- "node_modules/npm-run-all/node_modules/shebang-command": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
- "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
- "dev": true,
- "dependencies": {
- "shebang-regex": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/npm-run-all/node_modules/shebang-regex": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
- "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/npm-run-all/node_modules/supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dev": true,
- "dependencies": {
- "has-flag": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/npm-run-all/node_modules/which": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
- "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
- "dev": true,
- "dependencies": {
- "isexe": "^2.0.0"
- },
- "bin": {
- "which": "bin/which"
- }
- },
- "node_modules/npm-run-path": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-1.0.0.tgz",
- "integrity": "sha512-PrGAi1SLlqNvKN5uGBjIgnrTb8fl0Jz0a3JJmeMcGnIBh7UE9Gc4zsAMlwDajOMg2b1OgP6UPvoLUboTmMZPFA==",
- "dev": true,
- "dependencies": {
- "path-key": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/npm-run-path/node_modules/path-key": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-1.0.0.tgz",
- "integrity": "sha512-T3hWy7tyXlk3QvPFnT+o2tmXRzU4GkitkUWLp/WZ0S/FXd7XMx176tRurgTvHTNMJOQzTcesHNpBqetH86mQ9g==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/num2fraction": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz",
- "integrity": "sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg==",
- "dev": true
- },
- "node_modules/number-is-nan": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
- "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/oauth-sign": {
- "version": "0.9.0",
- "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
- "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
- "dev": true,
- "engines": {
- "node": "*"
- }
- },
- "node_modules/object-assign": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
- "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object-inspect": {
- "version": "1.12.3",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz",
- "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==",
- "dev": true,
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/object-keys": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
- "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
- "dev": true,
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/object.assign": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz",
- "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==",
- "dev": true,
- "dependencies": {
- "define-properties": "^1.1.2",
- "function-bind": "^1.1.1",
- "has-symbols": "^1.0.0",
- "object-keys": "^1.0.11"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/object.defaults": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz",
- "integrity": "sha512-c/K0mw/F11k4dEUBMW8naXUuBuhxRCfG7W+yFy8EcijU/rSmazOUd1XAEEe6bC0OuXY4HUKjTJv7xbxIMqdxrA==",
- "dev": true,
- "dependencies": {
- "array-each": "^1.0.1",
- "array-slice": "^1.0.0",
- "for-own": "^1.0.0",
- "isobject": "^3.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object.getownpropertydescriptors": {
- "version": "2.1.6",
- "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.6.tgz",
- "integrity": "sha512-lq+61g26E/BgHv0ZTFgRvi7NMEPuAxLkFU7rukXjc/AlwH4Am5xXVnIXy3un1bg/JPbXHrixRkK1itUzzPiIjQ==",
- "dev": true,
- "dependencies": {
- "array.prototype.reduce": "^1.0.5",
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.21.2",
- "safe-array-concat": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.8"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/object.map": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz",
- "integrity": "sha512-3+mAJu2PLfnSVGHwIWubpOFLscJANBKuB/6A4CxBstc4aqwQY0FWcsppuy4jU5GSB95yES5JHSI+33AWuS4k6w==",
- "dev": true,
- "dependencies": {
- "for-own": "^1.0.0",
- "make-iterator": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/object.pick": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
- "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==",
- "dev": true,
- "dependencies": {
- "isobject": "^3.0.1"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/on-finished": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
- "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==",
- "dev": true,
- "dependencies": {
- "ee-first": "1.1.1"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/on-headers": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
- "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==",
- "dev": true,
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
- "dev": true,
- "dependencies": {
- "wrappy": "1"
- }
- },
- "node_modules/onetime": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
- "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
- "dev": true,
- "dependencies": {
- "mimic-fn": "^2.1.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/opn": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/opn/-/opn-4.0.2.tgz",
- "integrity": "sha512-iPBWbPP4OEOzR1xfhpGLDh+ypKBOygunZhM9jBtA7FS5sKjEiMZw0EFb82hnDOmTZX90ZWLoZKUza4cVt8MexA==",
- "dev": true,
- "dependencies": {
- "object-assign": "^4.0.1",
- "pinkie-promise": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/optionator": {
- "version": "0.9.3",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz",
- "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==",
- "dev": true,
- "dependencies": {
- "@aashutoshrathi/word-wrap": "^1.2.3",
- "deep-is": "^0.1.3",
- "fast-levenshtein": "^2.0.6",
- "levn": "^0.4.1",
- "prelude-ls": "^1.2.1",
- "type-check": "^0.4.0"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/os-homedir": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
- "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/os-tmpdir": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
- "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/osenv": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz",
- "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
- "dev": true,
- "dependencies": {
- "os-homedir": "^1.0.0",
- "os-tmpdir": "^1.0.0"
- }
- },
- "node_modules/p-limit": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
- "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
- "dev": true,
- "dependencies": {
- "p-try": "^2.0.0"
- },
- "engines": {
- "node": ">=6"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/p-locate": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
- "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
- "dev": true,
- "dependencies": {
- "p-limit": "^2.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/p-try": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
- "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/parent-module": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
- "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
- "dev": true,
- "dependencies": {
- "callsites": "^3.0.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/parse-filepath": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz",
- "integrity": "sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==",
- "dev": true,
- "dependencies": {
- "is-absolute": "^1.0.0",
- "map-cache": "^0.2.0",
- "path-root": "^0.1.1"
- },
- "engines": {
- "node": ">=0.8"
- }
- },
- "node_modules/parse-json": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
- "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==",
- "dev": true,
- "dependencies": {
- "error-ex": "^1.3.1",
- "json-parse-better-errors": "^1.0.1"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/parse-ms": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-1.0.1.tgz",
- "integrity": "sha512-LpH1Cf5EYuVjkBvCDBYvkUPh+iv2bk3FHflxHkpCYT0/FZ1d3N3uJaLiHr4yGuMcFUhv6eAivitTvWZI4B/chg==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/parse-node-version": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz",
- "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==",
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/parse-passwd": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz",
- "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/parseurl": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
- "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
- "dev": true,
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/path-exists": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/path-is-absolute": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
- "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/path-key": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
- "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/path-parse": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
- "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
- "dev": true
- },
- "node_modules/path-root": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz",
- "integrity": "sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==",
- "dev": true,
- "dependencies": {
- "path-root-regex": "^0.1.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/path-root-regex": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz",
- "integrity": "sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/path-type": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
- "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/pathval": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz",
- "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==",
- "dev": true,
- "engines": {
- "node": "*"
- }
- },
- "node_modules/performance-now": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz",
- "integrity": "sha512-YHk5ez1hmMR5LOkb9iJkLKqoBlL7WD5M8ljC75ZfzXriuBIVNuecaXuU7e+hOwyqf24Wxhh7Vxgt7Hnw9288Tg==",
- "dev": true
- },
- "node_modules/phin": {
- "version": "2.9.3",
- "resolved": "https://registry.npmjs.org/phin/-/phin-2.9.3.tgz",
- "integrity": "sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==",
- "dev": true
- },
- "node_modules/picomatch": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
- "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
- "dev": true,
- "engines": {
- "node": ">=8.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/jonschlinkert"
- }
- },
- "node_modules/pidtree": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz",
- "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==",
- "dev": true,
- "bin": {
- "pidtree": "bin/pidtree.js"
- },
- "engines": {
- "node": ">=0.10"
- }
- },
- "node_modules/pify": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
- "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
- "optional": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/pinkie": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
- "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/pinkie-promise": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
- "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==",
- "dev": true,
- "dependencies": {
- "pinkie": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/pkg-dir": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
- "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
- "dev": true,
- "dependencies": {
- "find-up": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/pkg-dir/node_modules/find-up": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
- "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
- "dev": true,
- "dependencies": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/pkg-dir/node_modules/locate-path": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
- "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
- "dev": true,
- "dependencies": {
- "p-locate": "^4.1.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/pkg-dir/node_modules/p-locate": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
- "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
- "dev": true,
- "dependencies": {
- "p-limit": "^2.2.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/pkg-dir/node_modules/path-exists": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
- "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/platform": {
- "version": "1.3.6",
- "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.6.tgz",
- "integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==",
- "dev": true
- },
- "node_modules/playwright": {
- "version": "1.49.0",
- "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.49.0.tgz",
- "integrity": "sha512-eKpmys0UFDnfNb3vfsf8Vx2LEOtflgRebl0Im2eQQnYMA4Aqd+Zw8bEOB+7ZKvN76901mRnqdsiOGKxzVTbi7A==",
- "dev": true,
- "dependencies": {
- "playwright-core": "1.49.0"
- },
- "bin": {
- "playwright": "cli.js"
- },
- "engines": {
- "node": ">=18"
- },
- "optionalDependencies": {
- "fsevents": "2.3.2"
- }
- },
- "node_modules/playwright-core": {
- "version": "1.49.0",
- "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.49.0.tgz",
- "integrity": "sha512-R+3KKTQF3npy5GTiKH/T+kdhoJfJojjHESR1YEWhYuEKRVfVaxH3+4+GvXE5xyCngCxhxnykk0Vlah9v8fs3jA==",
- "dev": true,
- "bin": {
- "playwright-core": "cli.js"
- },
- "engines": {
- "node": ">=18"
- }
- },
- "node_modules/plur": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/plur/-/plur-1.0.0.tgz",
- "integrity": "sha512-qSnKBSZeDY8ApxwhfVIwKwF36KVJqb1/9nzYYq3j3vdwocULCXT8f8fQGkiw1Nk9BGfxiDagEe/pwakA+bOBqw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/portscanner": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-1.2.0.tgz",
- "integrity": "sha512-3MCx40XO6ChNJJHw1tTFukQK/M/8FacGZK/vGbnrKpozObrJzembYtfi7ZdA2hkF2Lojg77XhsKUPvF8eHKcDA==",
- "dev": true,
- "dependencies": {
- "async": "1.5.2"
- },
- "engines": {
- "node": ">=0.4",
- "npm": ">=1.0.0"
- }
- },
- "node_modules/postcss": {
- "version": "5.2.18",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz",
- "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==",
- "dev": true,
- "dependencies": {
- "chalk": "^1.1.3",
- "js-base64": "^2.1.9",
- "source-map": "^0.5.6",
- "supports-color": "^3.2.3"
- },
- "engines": {
- "node": ">=0.12"
- }
- },
- "node_modules/postcss-value-parser": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
- "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
- "dev": true
- },
- "node_modules/postcss/node_modules/ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss/node_modules/ansi-styles": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
- "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss/node_modules/chalk": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
- "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^2.2.1",
- "escape-string-regexp": "^1.0.2",
- "has-ansi": "^2.0.0",
- "strip-ansi": "^3.0.0",
- "supports-color": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss/node_modules/chalk/node_modules/supports-color": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
- "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==",
- "dev": true,
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/postcss/node_modules/escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "dev": true,
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/postcss/node_modules/has-flag": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
- "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss/node_modules/source-map": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss/node_modules/strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
- "dev": true,
- "dependencies": {
- "ansi-regex": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/postcss/node_modules/supports-color": {
- "version": "3.2.3",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
- "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==",
- "dev": true,
- "dependencies": {
- "has-flag": "^1.0.0"
- },
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/prelude-ls": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
- "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
- "dev": true,
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/pretty-ms": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-2.1.0.tgz",
- "integrity": "sha512-H2enpsxzDhuzRl3zeSQpQMirn8dB0Z/gxW96j06tMfTviUWvX14gjKb7qd1gtkUyYhDPuoNe00K5PqNvy2oQNg==",
- "dev": true,
- "dependencies": {
- "is-finite": "^1.0.1",
- "parse-ms": "^1.0.0",
- "plur": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/progress": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
- "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
- "dev": true,
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/promise": {
- "version": "7.3.1",
- "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
- "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==",
- "dev": true,
- "dependencies": {
- "asap": "~2.0.3"
- }
- },
- "node_modules/propagate": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/propagate/-/propagate-2.0.1.tgz",
- "integrity": "sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==",
- "dev": true,
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/prr": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
- "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==",
- "optional": true
- },
- "node_modules/psl": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz",
- "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==",
- "dev": true
- },
- "node_modules/punycode": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",
- "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/q": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz",
- "integrity": "sha512-/CdEdaw49VZVmyIDGUQKDDT53c7qBkO6g5CefWz91Ae+l4+cRtcDYwMTXh6me4O8TMldeGHG3N2Bl84V78Ywbg==",
- "dev": true,
- "engines": {
- "node": ">=0.6.0",
- "teleport": ">=0.2.0"
- }
- },
- "node_modules/qs": {
- "version": "6.5.3",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz",
- "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==",
- "dev": true,
- "engines": {
- "node": ">=0.6"
- }
- },
- "node_modules/queue-microtask": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
- "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ]
- },
- "node_modules/randombytes": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
- "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
- "dev": true,
- "dependencies": {
- "safe-buffer": "^5.1.0"
- }
- },
- "node_modules/range-parser": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
- "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
- "dev": true,
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/read-glob": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/read-glob/-/read-glob-3.0.0.tgz",
- "integrity": "sha512-ywcpIVKwlKbj8vRLq5WbFju9nxDQB7VOL68260bvZPUsekwh43W6ngQ5e8znqQmLHwzEklhFi6YiAzUvlZclLw==",
- "dev": true,
- "dependencies": {
- "assert-fs-readfile-option": "^1.0.0",
- "glob-observable": "^0.7.0",
- "graceful-fs": "^4.1.11",
- "inspect-with-kind": "^1.0.4",
- "zen-observable": "^0.8.6"
- }
- },
- "node_modules/read-pkg": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
- "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==",
- "dev": true,
- "dependencies": {
- "load-json-file": "^4.0.0",
- "normalize-package-data": "^2.3.2",
- "path-type": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/read-pkg/node_modules/path-type": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
- "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
- "dev": true,
- "dependencies": {
- "pify": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/read-pkg/node_modules/pify": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
- "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/rechoir": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz",
- "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==",
- "dev": true,
- "dependencies": {
- "resolve": "^1.9.0"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/regexp.prototype.flags": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz",
- "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "functions-have-names": "^1.2.3"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/regexpp": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz",
- "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==",
- "dev": true,
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/mysticatea"
- }
- },
- "node_modules/request": {
- "version": "2.88.2",
- "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz",
- "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==",
- "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142",
- "dev": true,
- "dependencies": {
- "aws-sign2": "~0.7.0",
- "aws4": "^1.8.0",
- "caseless": "~0.12.0",
- "combined-stream": "~1.0.6",
- "extend": "~3.0.2",
- "forever-agent": "~0.6.1",
- "form-data": "~2.3.2",
- "har-validator": "~5.1.3",
- "http-signature": "~1.2.0",
- "is-typedarray": "~1.0.0",
- "isstream": "~0.1.2",
- "json-stringify-safe": "~5.0.1",
- "mime-types": "~2.1.19",
- "oauth-sign": "~0.9.0",
- "performance-now": "^2.1.0",
- "qs": "~6.5.2",
- "safe-buffer": "^5.1.2",
- "tough-cookie": "~2.5.0",
- "tunnel-agent": "^0.6.0",
- "uuid": "^3.3.2"
- },
- "engines": {
- "node": ">= 6"
- }
- },
- "node_modules/request/node_modules/performance-now": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
- "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==",
- "dev": true
- },
- "node_modules/requestretry": {
- "version": "1.9.1",
- "resolved": "https://registry.npmjs.org/requestretry/-/requestretry-1.9.1.tgz",
- "integrity": "sha512-DWXDuj4syXribRStpt4qMOSBhDBUarreeoHol9sOdBfDG1BBDwBFfhgxCyDZkdQ+1W9mZm94vwEg8eD3p46tOg==",
- "dev": true,
- "dependencies": {
- "extend": "^3.0.0",
- "fg-lodash": "0.0.2",
- "request": "^2.74.x",
- "when": "~3.7.5"
- }
- },
- "node_modules/require-directory": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
- "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/require-from-string": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
- "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/require-main-filename": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
- "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
- "dev": true
- },
- "node_modules/resolve": {
- "version": "1.22.4",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz",
- "integrity": "sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==",
- "dev": true,
- "dependencies": {
- "is-core-module": "^2.13.0",
- "path-parse": "^1.0.7",
- "supports-preserve-symlinks-flag": "^1.0.0"
- },
- "bin": {
- "resolve": "bin/resolve"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/resolve-dir": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz",
- "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==",
- "dev": true,
- "dependencies": {
- "expand-tilde": "^2.0.0",
- "global-modules": "^1.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/resolve-from": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
- "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/restore-cursor": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
- "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
- "dev": true,
- "dependencies": {
- "onetime": "^5.1.0",
- "signal-exit": "^3.0.2"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/reusify": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
- "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
- "dev": true,
- "engines": {
- "iojs": ">=1.0.0",
- "node": ">=0.10.0"
- }
- },
- "node_modules/rimraf": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
- "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
- "dev": true,
- "dependencies": {
- "glob": "^7.1.3"
- },
- "bin": {
- "rimraf": "bin.js"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
- "node_modules/rollup": {
- "version": "2.79.1",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz",
- "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==",
- "dev": true,
- "bin": {
- "rollup": "dist/bin/rollup"
- },
- "engines": {
- "node": ">=10.0.0"
- },
- "optionalDependencies": {
- "fsevents": "~2.3.2"
- }
- },
- "node_modules/rollup-plugin-terser": {
- "version": "5.3.1",
- "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-5.3.1.tgz",
- "integrity": "sha512-1pkwkervMJQGFYvM9nscrUoncPwiKR/K+bHdjv6PFgRo3cgPHoRT83y2Aa3GvINj4539S15t/tpFPb775TDs6w==",
- "deprecated": "This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser",
- "dev": true,
- "dependencies": {
- "@babel/code-frame": "^7.5.5",
- "jest-worker": "^24.9.0",
- "rollup-pluginutils": "^2.8.2",
- "serialize-javascript": "^4.0.0",
- "terser": "^4.6.2"
- },
- "peerDependencies": {
- "rollup": ">=0.66.0 <3"
- }
- },
- "node_modules/rollup-plugin-typescript2": {
- "version": "0.29.0",
- "resolved": "https://registry.npmjs.org/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.29.0.tgz",
- "integrity": "sha512-YytahBSZCIjn/elFugEGQR5qTsVhxhUwGZIsA9TmrSsC88qroGo65O5HZP/TTArH2dm0vUmYWhKchhwi2wL9bw==",
- "dev": true,
- "dependencies": {
- "@rollup/pluginutils": "^3.1.0",
- "find-cache-dir": "^3.3.1",
- "fs-extra": "8.1.0",
- "resolve": "1.17.0",
- "tslib": "2.0.1"
- },
- "peerDependencies": {
- "rollup": ">=1.26.3",
- "typescript": ">=2.4.0"
- }
- },
- "node_modules/rollup-plugin-typescript2/node_modules/resolve": {
- "version": "1.17.0",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz",
- "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==",
- "dev": true,
- "dependencies": {
- "path-parse": "^1.0.6"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/rollup-plugin-typescript2/node_modules/tslib": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.1.tgz",
- "integrity": "sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ==",
- "dev": true
- },
- "node_modules/rollup-pluginutils": {
- "version": "2.8.2",
- "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz",
- "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==",
- "dev": true,
- "dependencies": {
- "estree-walker": "^0.6.1"
- }
- },
- "node_modules/rollup-pluginutils/node_modules/estree-walker": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz",
- "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==",
- "dev": true
- },
- "node_modules/run-parallel": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
- "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
- "dev": true,
- "funding": [
- {
- "type": "github",
- "url": "https://github.com/sponsors/feross"
- },
- {
- "type": "patreon",
- "url": "https://www.patreon.com/feross"
- },
- {
- "type": "consulting",
- "url": "https://feross.org/support"
- }
- ],
- "dependencies": {
- "queue-microtask": "^1.2.2"
- }
- },
- "node_modules/safe-array-concat": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.0.tgz",
- "integrity": "sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "get-intrinsic": "^1.2.0",
- "has-symbols": "^1.0.3",
- "isarray": "^2.0.5"
- },
- "engines": {
- "node": ">=0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "node_modules/safe-regex-test": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz",
- "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "get-intrinsic": "^1.1.3",
- "is-regex": "^1.1.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/safer-buffer": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
- "devOptional": true
- },
- "node_modules/sauce-tunnel": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/sauce-tunnel/-/sauce-tunnel-2.5.0.tgz",
- "integrity": "sha512-NsE6r9J+nXT9FBcAxA+nZ1JvmoJJqQPTp33J4vTJQFZ4jtFfPoUMH10AXyIhjEFVemK7XP5SF4Uy+q3dKWWQig==",
- "dev": true,
- "dependencies": {
- "chalk": "^1.1.3",
- "request": "^2.72.0",
- "split": "^1.0.0"
- }
- },
- "node_modules/sauce-tunnel/node_modules/ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/sauce-tunnel/node_modules/ansi-styles": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
- "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/sauce-tunnel/node_modules/chalk": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
- "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^2.2.1",
- "escape-string-regexp": "^1.0.2",
- "has-ansi": "^2.0.0",
- "strip-ansi": "^3.0.0",
- "supports-color": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/sauce-tunnel/node_modules/escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "dev": true,
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/sauce-tunnel/node_modules/strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
- "dev": true,
- "dependencies": {
- "ansi-regex": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/sauce-tunnel/node_modules/supports-color": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
- "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==",
- "dev": true,
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/saucelabs": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/saucelabs/-/saucelabs-1.5.0.tgz",
- "integrity": "sha512-jlX3FGdWvYf4Q3LFfFWS1QvPg3IGCGWxIc8QBFdPTbpTJnt/v17FHXYVAn7C8sHf1yUXo2c7yIM0isDryfYtHQ==",
- "dev": true,
- "dependencies": {
- "https-proxy-agent": "^2.2.1"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/saucelabs/node_modules/agent-base": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz",
- "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==",
- "dev": true,
- "dependencies": {
- "es6-promisify": "^5.0.0"
- },
- "engines": {
- "node": ">= 4.0.0"
- }
- },
- "node_modules/saucelabs/node_modules/debug": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
- "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
- "dev": true,
- "dependencies": {
- "ms": "^2.1.1"
- }
- },
- "node_modules/saucelabs/node_modules/https-proxy-agent": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz",
- "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==",
- "dev": true,
- "dependencies": {
- "agent-base": "^4.3.0",
- "debug": "^3.1.0"
- },
- "engines": {
- "node": ">= 4.5.0"
- }
- },
- "node_modules/sax": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
- "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
- "optional": true
- },
- "node_modules/semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true,
- "bin": {
- "semver": "bin/semver.js"
- }
- },
- "node_modules/send": {
- "version": "0.18.0",
- "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
- "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
- "dev": true,
- "dependencies": {
- "debug": "2.6.9",
- "depd": "2.0.0",
- "destroy": "1.2.0",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "etag": "~1.8.1",
- "fresh": "0.5.2",
- "http-errors": "2.0.0",
- "mime": "1.6.0",
- "ms": "2.1.3",
- "on-finished": "2.4.1",
- "range-parser": "~1.2.1",
- "statuses": "2.0.1"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/send/node_modules/debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/send/node_modules/debug/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
- "dev": true
- },
- "node_modules/send/node_modules/http-errors": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
- "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
- "dev": true,
- "dependencies": {
- "depd": "2.0.0",
- "inherits": "2.0.4",
- "setprototypeof": "1.2.0",
- "statuses": "2.0.1",
- "toidentifier": "1.0.1"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/send/node_modules/ms": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
- "dev": true
- },
- "node_modules/send/node_modules/on-finished": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
- "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
- "dev": true,
- "dependencies": {
- "ee-first": "1.1.1"
- },
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/send/node_modules/setprototypeof": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
- "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
- "dev": true
- },
- "node_modules/send/node_modules/statuses": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
- "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
- "dev": true,
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/serialize-javascript": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz",
- "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==",
- "dev": true,
- "dependencies": {
- "randombytes": "^2.1.0"
- }
- },
- "node_modules/serve-index": {
- "version": "1.9.1",
- "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz",
- "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==",
- "dev": true,
- "dependencies": {
- "accepts": "~1.3.4",
- "batch": "0.6.1",
- "debug": "2.6.9",
- "escape-html": "~1.0.3",
- "http-errors": "~1.6.2",
- "mime-types": "~2.1.17",
- "parseurl": "~1.3.2"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/serve-index/node_modules/debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
- "dependencies": {
- "ms": "2.0.0"
- }
- },
- "node_modules/serve-index/node_modules/ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
- "dev": true
- },
- "node_modules/serve-static": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
- "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
- "dev": true,
- "dependencies": {
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "parseurl": "~1.3.3",
- "send": "0.18.0"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/set-blocking": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
- "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==",
- "dev": true
- },
- "node_modules/setprototypeof": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
- "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==",
- "dev": true
- },
- "node_modules/shebang-command": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
- "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
- "dev": true,
- "dependencies": {
- "shebang-regex": "^3.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/shebang-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
- "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/shell-quote": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz",
- "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==",
- "dev": true,
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/shelljs": {
- "version": "0.8.5",
- "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz",
- "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==",
- "dev": true,
- "dependencies": {
- "glob": "^7.0.0",
- "interpret": "^1.0.0",
- "rechoir": "^0.6.2"
- },
- "bin": {
- "shjs": "bin/shjs"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/shelljs/node_modules/rechoir": {
- "version": "0.6.2",
- "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
- "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==",
- "dev": true,
- "dependencies": {
- "resolve": "^1.1.6"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/shx": {
- "version": "0.3.4",
- "resolved": "https://registry.npmjs.org/shx/-/shx-0.3.4.tgz",
- "integrity": "sha512-N6A9MLVqjxZYcVn8hLmtneQWIJtp8IKzMP4eMnx+nqkvXoqinUPCbUFLp2UcWTEIUONhlk0ewxr/jaVGlc+J+g==",
- "dev": true,
- "dependencies": {
- "minimist": "^1.2.3",
- "shelljs": "^0.8.5"
- },
- "bin": {
- "shx": "lib/cli.js"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/side-channel": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
- "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.0",
- "get-intrinsic": "^1.0.2",
- "object-inspect": "^1.9.0"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/signal-exit": {
- "version": "3.0.7",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
- "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
- "dev": true
- },
- "node_modules/slash": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
- "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
- "dev": true,
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/slice-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz",
- "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.0.0",
- "astral-regex": "^2.0.0",
- "is-fullwidth-code-point": "^3.0.0"
- },
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/chalk/slice-ansi?sponsor=1"
- }
- },
- "node_modules/source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "devOptional": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/source-map-support": {
- "version": "0.5.21",
- "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
- "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
- "dev": true,
- "dependencies": {
- "buffer-from": "^1.0.0",
- "source-map": "^0.6.0"
- }
- },
- "node_modules/sourcemap-codec": {
- "version": "1.4.8",
- "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
- "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
- "deprecated": "Please use @jridgewell/sourcemap-codec instead",
- "dev": true
- },
- "node_modules/spdx-correct": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz",
- "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==",
- "dev": true,
- "dependencies": {
- "spdx-expression-parse": "^3.0.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "node_modules/spdx-exceptions": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
- "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==",
- "dev": true
- },
- "node_modules/spdx-expression-parse": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
- "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
- "dev": true,
- "dependencies": {
- "spdx-exceptions": "^2.1.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "node_modules/spdx-license-ids": {
- "version": "3.0.13",
- "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz",
- "integrity": "sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==",
- "dev": true
- },
- "node_modules/split": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz",
- "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==",
- "dev": true,
- "dependencies": {
- "through": "2"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/sprintf-js": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
- "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
- "dev": true
- },
- "node_modules/sshpk": {
- "version": "1.17.0",
- "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz",
- "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==",
- "dev": true,
- "dependencies": {
- "asn1": "~0.2.3",
- "assert-plus": "^1.0.0",
- "bcrypt-pbkdf": "^1.0.0",
- "dashdash": "^1.12.0",
- "ecc-jsbn": "~0.1.1",
- "getpass": "^0.1.1",
- "jsbn": "~0.1.0",
- "safer-buffer": "^2.0.2",
- "tweetnacl": "~0.14.0"
- },
- "bin": {
- "sshpk-conv": "bin/sshpk-conv",
- "sshpk-sign": "bin/sshpk-sign",
- "sshpk-verify": "bin/sshpk-verify"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/statuses": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
- "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==",
- "dev": true,
- "engines": {
- "node": ">= 0.6"
- }
- },
- "node_modules/string-width": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
- "dev": true,
- "dependencies": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/string.prototype.padend": {
- "version": "3.1.4",
- "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.4.tgz",
- "integrity": "sha512-67otBXoksdjsnXXRUq+KMVTdlVRZ2af422Y0aTyTjVaoQkGr3mxl2Bc5emi7dOQ3OGVVQQskmLEWwFXwommpNw==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
- "es-abstract": "^1.20.4"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/string.prototype.trim": {
- "version": "1.2.7",
- "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz",
- "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
- "es-abstract": "^1.20.4"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/string.prototype.trimend": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz",
- "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
- "es-abstract": "^1.20.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/string.prototype.trimstart": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz",
- "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
- "es-abstract": "^1.20.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/strip-ansi": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
- "dev": true,
- "dependencies": {
- "ansi-regex": "^5.0.1"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/strip-bom": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
- "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/strip-json-comments": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
- "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
- "dev": true,
- "engines": {
- "node": ">=8"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "dependencies": {
- "has-flag": "^4.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/supports-preserve-symlinks-flag": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
- "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
- "dev": true,
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/table": {
- "version": "6.8.1",
- "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz",
- "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==",
- "dev": true,
- "dependencies": {
- "ajv": "^8.0.1",
- "lodash.truncate": "^4.4.2",
- "slice-ansi": "^4.0.0",
- "string-width": "^4.2.3",
- "strip-ansi": "^6.0.1"
- },
- "engines": {
- "node": ">=10.0.0"
- }
- },
- "node_modules/table/node_modules/ajv": {
- "version": "8.12.0",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
- "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
- "dev": true,
- "dependencies": {
- "fast-deep-equal": "^3.1.1",
- "json-schema-traverse": "^1.0.0",
- "require-from-string": "^2.0.2",
- "uri-js": "^4.2.2"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/epoberezkin"
- }
- },
- "node_modules/table/node_modules/json-schema-traverse": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
- "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
- "dev": true
- },
- "node_modules/terser": {
- "version": "4.8.1",
- "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz",
- "integrity": "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==",
- "dev": true,
- "dependencies": {
- "commander": "^2.20.0",
- "source-map": "~0.6.1",
- "source-map-support": "~0.5.12"
- },
- "bin": {
- "terser": "bin/terser"
- },
- "engines": {
- "node": ">=6.0.0"
- }
- },
- "node_modules/terser/node_modules/commander": {
- "version": "2.20.3",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
- "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
- "dev": true
- },
- "node_modules/text-table": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
- "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
- "dev": true
- },
- "node_modules/through": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
- "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==",
- "dev": true
- },
- "node_modules/time-grunt": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/time-grunt/-/time-grunt-1.4.0.tgz",
- "integrity": "sha512-u8n+ZOcdNDkrqlyN+x1ayHN0X+hMgg3SS191EE5xO03nRVnVpNp3UJSmUBCQCAbe959LqWttMaELNclfmWM+fQ==",
- "dev": true,
- "dependencies": {
- "chalk": "^1.0.0",
- "date-time": "^1.1.0",
- "figures": "^1.0.0",
- "hooker": "^0.2.3",
- "number-is-nan": "^1.0.0",
- "pretty-ms": "^2.1.0",
- "text-table": "^0.2.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/time-grunt/node_modules/ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/time-grunt/node_modules/ansi-styles": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
- "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/time-grunt/node_modules/chalk": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
- "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^2.2.1",
- "escape-string-regexp": "^1.0.2",
- "has-ansi": "^2.0.0",
- "strip-ansi": "^3.0.0",
- "supports-color": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/time-grunt/node_modules/escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "dev": true,
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/time-grunt/node_modules/strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
- "dev": true,
- "dependencies": {
- "ansi-regex": "^2.0.0"
- },
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/time-grunt/node_modules/supports-color": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
- "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==",
- "dev": true,
- "engines": {
- "node": ">=0.8.0"
- }
- },
- "node_modules/time-zone": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/time-zone/-/time-zone-0.1.0.tgz",
- "integrity": "sha512-S5CjtVIkeBTnlsaZP3gjsTb78ClBe74sEcgEoBwAVUKnTRDAGqUtLLIZHMsIyqOWjt9DGQpLMMoD8ZKIfP2ddQ==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/to-regex-range": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
- "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
- "dev": true,
- "dependencies": {
- "is-number": "^7.0.0"
- },
- "engines": {
- "node": ">=8.0"
- }
- },
- "node_modules/toidentifier": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
- "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
- "dev": true,
- "engines": {
- "node": ">=0.6"
- }
- },
- "node_modules/tough-cookie": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
- "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
- "dev": true,
- "dependencies": {
- "psl": "^1.1.28",
- "punycode": "^2.1.1"
- },
- "engines": {
- "node": ">=0.8"
- }
- },
- "node_modules/ts-node": {
- "version": "10.9.1",
- "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz",
- "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==",
- "dev": true,
- "dependencies": {
- "@cspotcode/source-map-support": "^0.8.0",
- "@tsconfig/node10": "^1.0.7",
- "@tsconfig/node12": "^1.0.7",
- "@tsconfig/node14": "^1.0.0",
- "@tsconfig/node16": "^1.0.2",
- "acorn": "^8.4.1",
- "acorn-walk": "^8.1.1",
- "arg": "^4.1.0",
- "create-require": "^1.1.0",
- "diff": "^4.0.1",
- "make-error": "^1.1.1",
- "v8-compile-cache-lib": "^3.0.1",
- "yn": "3.1.1"
- },
- "bin": {
- "ts-node": "dist/bin.js",
- "ts-node-cwd": "dist/bin-cwd.js",
- "ts-node-esm": "dist/bin-esm.js",
- "ts-node-script": "dist/bin-script.js",
- "ts-node-transpile-only": "dist/bin-transpile.js",
- "ts-script": "dist/bin-script-deprecated.js"
- },
- "peerDependencies": {
- "@swc/core": ">=1.2.50",
- "@swc/wasm": ">=1.2.50",
- "@types/node": "*",
- "typescript": ">=2.7"
- },
- "peerDependenciesMeta": {
- "@swc/core": {
- "optional": true
- },
- "@swc/wasm": {
- "optional": true
- }
- }
- },
- "node_modules/ts-node/node_modules/acorn": {
- "version": "8.10.0",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz",
- "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==",
- "dev": true,
- "bin": {
- "acorn": "bin/acorn"
- },
- "engines": {
- "node": ">=0.4.0"
- }
- },
- "node_modules/ts-node/node_modules/diff": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
- "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
- "dev": true,
- "engines": {
- "node": ">=0.3.1"
- }
- },
- "node_modules/tslib": {
- "version": "2.6.2",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
- "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
- },
- "node_modules/tsutils": {
- "version": "3.21.0",
- "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz",
- "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==",
- "dev": true,
- "dependencies": {
- "tslib": "^1.8.1"
- },
- "engines": {
- "node": ">= 6"
- },
- "peerDependencies": {
- "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta"
- }
- },
- "node_modules/tsutils/node_modules/tslib": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
- "dev": true
- },
- "node_modules/tunnel-agent": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
- "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==",
- "dev": true,
- "dependencies": {
- "safe-buffer": "^5.0.1"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/tweetnacl": {
- "version": "0.14.5",
- "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
- "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==",
- "dev": true
- },
- "node_modules/type-check": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
- "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
- "dev": true,
- "dependencies": {
- "prelude-ls": "^1.2.1"
- },
- "engines": {
- "node": ">= 0.8.0"
- }
- },
- "node_modules/type-detect": {
- "version": "4.0.8",
- "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
- "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/type-fest": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
- "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
- "dev": true,
- "engines": {
- "node": ">=10"
- },
- "funding": {
- "url": "https://github.com/sponsors/sindresorhus"
- }
- },
- "node_modules/typed-array-buffer": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz",
- "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "get-intrinsic": "^1.2.1",
- "is-typed-array": "^1.1.10"
- },
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/typed-array-byte-length": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz",
- "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "for-each": "^0.3.3",
- "has-proto": "^1.0.1",
- "is-typed-array": "^1.1.10"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/typed-array-byte-offset": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz",
- "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==",
- "dev": true,
- "dependencies": {
- "available-typed-arrays": "^1.0.5",
- "call-bind": "^1.0.2",
- "for-each": "^0.3.3",
- "has-proto": "^1.0.1",
- "is-typed-array": "^1.1.10"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/typed-array-length": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz",
- "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "for-each": "^0.3.3",
- "is-typed-array": "^1.1.9"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/typescript": {
- "version": "4.9.5",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz",
- "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==",
- "dev": true,
- "bin": {
- "tsc": "bin/tsc",
- "tsserver": "bin/tsserver"
- },
- "engines": {
- "node": ">=4.2.0"
- }
- },
- "node_modules/uikit": {
- "version": "2.27.4",
- "resolved": "https://registry.npmjs.org/uikit/-/uikit-2.27.4.tgz",
- "integrity": "sha512-dylNikIJ8sB6Sd1AP6YETb+R5bIkjTnGeuu/yLhO9elQ4oLu8CIA+u5zCC7a9m7axbDUALy12qr32nvgRyO5HA==",
- "dev": true,
- "dependencies": {
- "node-promise": "^0.5.10"
- }
- },
- "node_modules/unbox-primitive": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
- "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==",
- "dev": true,
- "dependencies": {
- "call-bind": "^1.0.2",
- "has-bigints": "^1.0.2",
- "has-symbols": "^1.0.3",
- "which-boxed-primitive": "^1.0.2"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/unc-path-regex": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz",
- "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
- "node_modules/underscore.string": {
- "version": "3.3.6",
- "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.6.tgz",
- "integrity": "sha512-VoC83HWXmCrF6rgkyxS9GHv8W9Q5nhMKho+OadDJGzL2oDYbYEppBaCMH6pFlwLeqj2QS+hhkw2kpXkSdD1JxQ==",
- "dev": true,
- "dependencies": {
- "sprintf-js": "^1.1.1",
- "util-deprecate": "^1.0.2"
- },
- "engines": {
- "node": "*"
- }
- },
- "node_modules/underscore.string/node_modules/sprintf-js": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz",
- "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==",
- "dev": true
- },
- "node_modules/universalify": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
- "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
- "dev": true,
- "engines": {
- "node": ">= 4.0.0"
- }
- },
- "node_modules/unpipe": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
- "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
- "dev": true,
- "engines": {
- "node": ">= 0.8"
- }
- },
- "node_modules/uri-js": {
- "version": "4.4.1",
- "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
- "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
- "dev": true,
- "dependencies": {
- "punycode": "^2.1.0"
- }
- },
- "node_modules/util-deprecate": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
- "dev": true
- },
- "node_modules/utils-merge": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
- "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
- "dev": true,
- "engines": {
- "node": ">= 0.4.0"
- }
- },
- "node_modules/uuid": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
- "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
- "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.",
- "dev": true,
- "bin": {
- "uuid": "bin/uuid"
- }
- },
- "node_modules/v8-compile-cache": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz",
- "integrity": "sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==",
- "dev": true
- },
- "node_modules/v8-compile-cache-lib": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz",
- "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==",
- "dev": true
- },
- "node_modules/v8flags": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz",
- "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==",
- "dev": true,
- "dependencies": {
- "homedir-polyfill": "^1.0.1"
- },
- "engines": {
- "node": ">= 0.10"
- }
- },
- "node_modules/validate-glob-opts": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/validate-glob-opts/-/validate-glob-opts-1.0.2.tgz",
- "integrity": "sha512-3PKjRQq/R514lUcG9OEiW0u9f7D4fP09A07kmk1JbNn2tfeQdAHhlT+A4dqERXKu2br2rrxSM3FzagaEeq9w+A==",
- "dev": true,
- "dependencies": {
- "array-to-sentence": "^1.1.0",
- "indexed-filter": "^1.0.0",
- "inspect-with-kind": "^1.0.4",
- "is-plain-obj": "^1.1.0"
- }
- },
- "node_modules/validate-npm-package-license": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
- "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
- "dev": true,
- "dependencies": {
- "spdx-correct": "^3.0.0",
- "spdx-expression-parse": "^3.0.0"
- }
- },
- "node_modules/verror": {
- "version": "1.10.0",
- "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
- "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==",
- "dev": true,
- "engines": [
- "node >=0.6.0"
- ],
- "dependencies": {
- "assert-plus": "^1.0.0",
- "core-util-is": "1.0.2",
- "extsprintf": "^1.2.0"
- }
- },
- "node_modules/when": {
- "version": "3.7.8",
- "resolved": "https://registry.npmjs.org/when/-/when-3.7.8.tgz",
- "integrity": "sha512-5cZ7mecD3eYcMiCH4wtRPA5iFJZ50BJYDfckI5RRpQiktMiYTcn0ccLTZOvcbBume+1304fQztxeNzNS9Gvrnw==",
- "dev": true
- },
- "node_modules/which": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
- "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
- "dev": true,
- "dependencies": {
- "isexe": "^2.0.0"
- },
- "bin": {
- "node-which": "bin/node-which"
- },
- "engines": {
- "node": ">= 8"
- }
- },
- "node_modules/which-boxed-primitive": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
- "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
- "dev": true,
- "dependencies": {
- "is-bigint": "^1.0.1",
- "is-boolean-object": "^1.1.0",
- "is-number-object": "^1.0.4",
- "is-string": "^1.0.5",
- "is-symbol": "^1.0.3"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/which-module": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz",
- "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==",
- "dev": true
- },
- "node_modules/which-typed-array": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz",
- "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==",
- "dev": true,
- "dependencies": {
- "available-typed-arrays": "^1.0.5",
- "call-bind": "^1.0.2",
- "for-each": "^0.3.3",
- "gopd": "^1.0.1",
- "has-tostringtag": "^1.0.0"
- },
- "engines": {
- "node": ">= 0.4"
- },
- "funding": {
- "url": "https://github.com/sponsors/ljharb"
- }
- },
- "node_modules/wide-align": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz",
- "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==",
- "dev": true,
- "dependencies": {
- "string-width": "^1.0.2 || 2"
- }
- },
- "node_modules/wide-align/node_modules/ansi-regex": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz",
- "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/wide-align/node_modules/is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/wide-align/node_modules/string-width": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
- "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
- "dev": true,
- "dependencies": {
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^4.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/wide-align/node_modules/strip-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
- "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==",
- "dev": true,
- "dependencies": {
- "ansi-regex": "^3.0.0"
- },
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/wrap-ansi": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
- "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
- "dev": true,
- "dependencies": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- },
- "engines": {
- "node": ">=8"
- }
- },
- "node_modules/wrappy": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
- "dev": true
- },
- "node_modules/y18n": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
- "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==",
- "dev": true
- },
- "node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
- },
- "node_modules/yargs": {
- "version": "13.3.2",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz",
- "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==",
- "dev": true,
- "dependencies": {
- "cliui": "^5.0.0",
- "find-up": "^3.0.0",
- "get-caller-file": "^2.0.1",
- "require-directory": "^2.1.1",
- "require-main-filename": "^2.0.0",
- "set-blocking": "^2.0.0",
- "string-width": "^3.0.0",
- "which-module": "^2.0.0",
- "y18n": "^4.0.0",
- "yargs-parser": "^13.1.2"
- }
- },
- "node_modules/yargs-parser": {
- "version": "13.1.2",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz",
- "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==",
- "dev": true,
- "dependencies": {
- "camelcase": "^5.0.0",
- "decamelize": "^1.2.0"
- }
- },
- "node_modules/yargs-unparser": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz",
- "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==",
- "dev": true,
- "dependencies": {
- "flat": "^4.1.0",
- "lodash": "^4.17.15",
- "yargs": "^13.3.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/yargs/node_modules/ansi-regex": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
- "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/yargs/node_modules/emoji-regex": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
- "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
- "dev": true
- },
- "node_modules/yargs/node_modules/is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
- "dev": true,
- "engines": {
- "node": ">=4"
- }
- },
- "node_modules/yargs/node_modules/string-width": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
- "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
- "dev": true,
- "dependencies": {
- "emoji-regex": "^7.0.1",
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^5.1.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/yargs/node_modules/strip-ansi": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
- "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
- "dev": true,
- "dependencies": {
- "ansi-regex": "^4.1.0"
- },
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/yn": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",
- "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==",
- "dev": true,
- "engines": {
- "node": ">=6"
- }
- },
- "node_modules/zen-observable": {
- "version": "0.8.15",
- "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.15.tgz",
- "integrity": "sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==",
- "dev": true
- }
- },
- "dependencies": {
- "@aashutoshrathi/word-wrap": {
- "version": "1.2.6",
- "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz",
- "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==",
- "dev": true
- },
- "@arrows/array": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/@arrows/array/-/array-1.4.1.tgz",
- "integrity": "sha512-MGYS8xi3c4tTy1ivhrVntFvufoNzje0PchjEz6G/SsWRgUKxL4tKwS6iPdO8vsaJYldagAeWMd5KRD0aX3Q39g==",
- "dev": true,
- "requires": {
- "@arrows/composition": "^1.2.2"
- }
- },
- "@arrows/composition": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/@arrows/composition/-/composition-1.2.2.tgz",
- "integrity": "sha512-9fh1yHwrx32lundiB3SlZ/VwuStPB4QakPsSLrGJFH6rCXvdrd060ivAZ7/2vlqPnEjBkPRRXOcG1YOu19p2GQ==",
- "dev": true
- },
- "@arrows/dispatch": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/@arrows/dispatch/-/dispatch-1.0.3.tgz",
- "integrity": "sha512-v/HwvrFonitYZM2PmBlAlCqVqxrkIIoiEuy5bQgn0BdfvlL0ooSBzcPzTMrtzY8eYktPyYcHg8fLbSgyybXEqw==",
- "dev": true,
- "requires": {
- "@arrows/composition": "^1.2.2"
- }
- },
- "@arrows/error": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/@arrows/error/-/error-1.0.2.tgz",
- "integrity": "sha512-yvkiv1ay4Z3+Z6oQsUkedsQm5aFdyPpkBUQs8vejazU/RmANABx6bMMcBPPHI4aW43VPQmXFfBzr/4FExwWTEA==",
- "dev": true
- },
- "@arrows/multimethod": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/@arrows/multimethod/-/multimethod-1.4.1.tgz",
- "integrity": "sha512-AZnAay0dgPnCJxn3We5uKiB88VL+1ZIF2SjZohLj6vqY2UyvB/sKdDnFP+LZNVsTC5lcnGPmLlRRkAh4sXkXsQ==",
- "dev": true,
- "requires": {
- "@arrows/array": "^1.4.1",
- "@arrows/composition": "^1.2.2",
- "@arrows/error": "^1.0.2",
- "fast-deep-equal": "^3.1.3"
- }
- },
- "@babel/code-frame": {
- "version": "7.12.11",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz",
- "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==",
- "dev": true,
- "requires": {
- "@babel/highlight": "^7.10.4"
- }
- },
- "@babel/helper-validator-identifier": {
- "version": "7.22.5",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz",
- "integrity": "sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==",
- "dev": true
- },
- "@babel/highlight": {
- "version": "7.22.10",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.10.tgz",
- "integrity": "sha512-78aUtVcT7MUscr0K5mIEnkwxPE0MaxkR5RxRwuHaQ+JuU5AmTPhY+do2mdzVTnIJJpyBglql2pehuBIWHug+WQ==",
- "dev": true,
- "requires": {
- "@babel/helper-validator-identifier": "^7.22.5",
- "chalk": "^2.4.2",
- "js-tokens": "^4.0.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dev": true,
- "requires": {
- "color-convert": "^1.9.0"
- }
- },
- "chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dev": true,
- "requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- }
- },
- "color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "dev": true,
- "requires": {
- "color-name": "1.1.3"
- }
- },
- "color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
- "dev": true
- },
- "escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "dev": true
- },
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
- "dev": true
- },
- "supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dev": true,
- "requires": {
- "has-flag": "^3.0.0"
- }
- }
- }
- },
- "@cspotcode/source-map-support": {
- "version": "0.8.1",
- "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz",
- "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==",
- "dev": true,
- "requires": {
- "@jridgewell/trace-mapping": "0.3.9"
- }
- },
- "@eslint/eslintrc": {
- "version": "0.4.3",
- "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz",
- "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==",
- "dev": true,
- "requires": {
- "ajv": "^6.12.4",
- "debug": "^4.1.1",
- "espree": "^7.3.0",
- "globals": "^13.9.0",
- "ignore": "^4.0.6",
- "import-fresh": "^3.2.1",
- "js-yaml": "^3.13.1",
- "minimatch": "^3.0.4",
- "strip-json-comments": "^3.1.1"
- },
- "dependencies": {
- "ignore": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
- "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
- "dev": true
- }
- }
- },
- "@humanwhocodes/config-array": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz",
- "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==",
- "dev": true,
- "requires": {
- "@humanwhocodes/object-schema": "^1.2.0",
- "debug": "^4.1.1",
- "minimatch": "^3.0.4"
- }
- },
- "@humanwhocodes/object-schema": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
- "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
- "dev": true
- },
- "@jridgewell/resolve-uri": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz",
- "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==",
- "dev": true
- },
- "@jridgewell/sourcemap-codec": {
- "version": "1.4.15",
- "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz",
- "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==",
- "dev": true
- },
- "@jridgewell/trace-mapping": {
- "version": "0.3.9",
- "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz",
- "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==",
- "dev": true,
- "requires": {
- "@jridgewell/resolve-uri": "^3.0.3",
- "@jridgewell/sourcemap-codec": "^1.4.10"
- }
- },
- "@nodelib/fs.scandir": {
- "version": "2.1.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",
- "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",
- "dev": true,
- "requires": {
- "@nodelib/fs.stat": "2.0.5",
- "run-parallel": "^1.1.9"
- }
- },
- "@nodelib/fs.stat": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",
- "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",
- "dev": true
- },
- "@nodelib/fs.walk": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",
- "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",
- "dev": true,
- "requires": {
- "@nodelib/fs.scandir": "2.1.5",
- "fastq": "^1.6.0"
- }
- },
- "@rollup/plugin-commonjs": {
- "version": "17.1.0",
- "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-17.1.0.tgz",
- "integrity": "sha512-PoMdXCw0ZyvjpCMT5aV4nkL0QywxP29sODQsSGeDpr/oI49Qq9tRtAsb/LbYbDzFlOydVEqHmmZWFtXJEAX9ew==",
- "dev": true,
- "requires": {
- "@rollup/pluginutils": "^3.1.0",
- "commondir": "^1.0.1",
- "estree-walker": "^2.0.1",
- "glob": "^7.1.6",
- "is-reference": "^1.2.1",
- "magic-string": "^0.25.7",
- "resolve": "^1.17.0"
- }
- },
- "@rollup/plugin-json": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-4.1.0.tgz",
- "integrity": "sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw==",
- "dev": true,
- "requires": {
- "@rollup/pluginutils": "^3.0.8"
- }
- },
- "@rollup/plugin-node-resolve": {
- "version": "11.2.1",
- "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz",
- "integrity": "sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==",
- "dev": true,
- "requires": {
- "@rollup/pluginutils": "^3.1.0",
- "@types/resolve": "1.17.1",
- "builtin-modules": "^3.1.0",
- "deepmerge": "^4.2.2",
- "is-module": "^1.0.0",
- "resolve": "^1.19.0"
- }
- },
- "@rollup/pluginutils": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-3.1.0.tgz",
- "integrity": "sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==",
- "dev": true,
- "requires": {
- "@types/estree": "0.0.39",
- "estree-walker": "^1.0.1",
- "picomatch": "^2.2.2"
- },
- "dependencies": {
- "estree-walker": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-1.0.1.tgz",
- "integrity": "sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==",
- "dev": true
- }
- }
- },
- "@tsconfig/node10": {
- "version": "1.0.9",
- "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz",
- "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==",
- "dev": true
- },
- "@tsconfig/node12": {
- "version": "1.0.11",
- "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz",
- "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==",
- "dev": true
- },
- "@tsconfig/node14": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz",
- "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==",
- "dev": true
- },
- "@tsconfig/node16": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz",
- "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==",
- "dev": true
- },
- "@types/estree": {
- "version": "0.0.39",
- "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz",
- "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==",
- "dev": true
- },
- "@types/glob": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz",
- "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==",
- "dev": true,
- "requires": {
- "@types/minimatch": "*",
- "@types/node": "*"
- }
- },
- "@types/json-schema": {
- "version": "7.0.12",
- "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz",
- "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==",
- "dev": true
- },
- "@types/minimatch": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz",
- "integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==",
- "dev": true
- },
- "@types/node": {
- "version": "20.5.1",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.5.1.tgz",
- "integrity": "sha512-4tT2UrL5LBqDwoed9wZ6N3umC4Yhz3W3FloMmiiG4JwmUJWpie0c7lcnUNd4gtMKuDEO4wRVS8B6Xa0uMRsMKg==",
- "dev": true
- },
- "@types/resolve": {
- "version": "1.17.1",
- "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.17.1.tgz",
- "integrity": "sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==",
- "dev": true,
- "requires": {
- "@types/node": "*"
- }
- },
- "@typescript-eslint/eslint-plugin": {
- "version": "4.33.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz",
- "integrity": "sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==",
- "dev": true,
- "requires": {
- "@typescript-eslint/experimental-utils": "4.33.0",
- "@typescript-eslint/scope-manager": "4.33.0",
- "debug": "^4.3.1",
- "functional-red-black-tree": "^1.0.1",
- "ignore": "^5.1.8",
- "regexpp": "^3.1.0",
- "semver": "^7.3.5",
- "tsutils": "^3.21.0"
- },
- "dependencies": {
- "semver": {
- "version": "7.5.4",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
- "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
- "dev": true,
- "requires": {
- "lru-cache": "^6.0.0"
- }
- }
- }
- },
- "@typescript-eslint/experimental-utils": {
- "version": "4.33.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz",
- "integrity": "sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==",
- "dev": true,
- "requires": {
- "@types/json-schema": "^7.0.7",
- "@typescript-eslint/scope-manager": "4.33.0",
- "@typescript-eslint/types": "4.33.0",
- "@typescript-eslint/typescript-estree": "4.33.0",
- "eslint-scope": "^5.1.1",
- "eslint-utils": "^3.0.0"
- }
- },
- "@typescript-eslint/parser": {
- "version": "4.33.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.33.0.tgz",
- "integrity": "sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==",
- "dev": true,
- "requires": {
- "@typescript-eslint/scope-manager": "4.33.0",
- "@typescript-eslint/types": "4.33.0",
- "@typescript-eslint/typescript-estree": "4.33.0",
- "debug": "^4.3.1"
- }
- },
- "@typescript-eslint/scope-manager": {
- "version": "4.33.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz",
- "integrity": "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "4.33.0",
- "@typescript-eslint/visitor-keys": "4.33.0"
- }
- },
- "@typescript-eslint/types": {
- "version": "4.33.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz",
- "integrity": "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==",
- "dev": true
- },
- "@typescript-eslint/typescript-estree": {
- "version": "4.33.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz",
- "integrity": "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "4.33.0",
- "@typescript-eslint/visitor-keys": "4.33.0",
- "debug": "^4.3.1",
- "globby": "^11.0.3",
- "is-glob": "^4.0.1",
- "semver": "^7.3.5",
- "tsutils": "^3.21.0"
- },
- "dependencies": {
- "globby": {
- "version": "11.1.0",
- "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz",
- "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==",
- "dev": true,
- "requires": {
- "array-union": "^2.1.0",
- "dir-glob": "^3.0.1",
- "fast-glob": "^3.2.9",
- "ignore": "^5.2.0",
- "merge2": "^1.4.1",
- "slash": "^3.0.0"
- }
- },
- "semver": {
- "version": "7.5.4",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
- "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
- "dev": true,
- "requires": {
- "lru-cache": "^6.0.0"
- }
- }
- }
- },
- "@typescript-eslint/visitor-keys": {
- "version": "4.33.0",
- "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz",
- "integrity": "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==",
- "dev": true,
- "requires": {
- "@typescript-eslint/types": "4.33.0",
- "eslint-visitor-keys": "^2.0.0"
- }
- },
- "abbrev": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
- "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
- "dev": true
- },
- "accepts": {
- "version": "1.3.8",
- "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz",
- "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==",
- "dev": true,
- "requires": {
- "mime-types": "~2.1.34",
- "negotiator": "0.6.3"
- }
- },
- "acorn": {
- "version": "7.4.1",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz",
- "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==",
- "dev": true
- },
- "acorn-jsx": {
- "version": "5.3.2",
- "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
- "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
- "dev": true,
- "requires": {}
- },
- "acorn-walk": {
- "version": "8.2.0",
- "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz",
- "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==",
- "dev": true
- },
- "ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "dev": true,
- "requires": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- }
- },
- "ansi-colors": {
- "version": "4.1.3",
- "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz",
- "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==",
- "dev": true
- },
- "ansi-escapes": {
- "version": "4.3.2",
- "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
- "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
- "dev": true,
- "requires": {
- "type-fest": "^0.21.3"
- },
- "dependencies": {
- "type-fest": {
- "version": "0.21.3",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
- "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
- "dev": true
- }
- }
- },
- "ansi-regex": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
- "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
- "dev": true
- },
- "ansi-styles": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
- "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
- "dev": true,
- "requires": {
- "color-convert": "^2.0.1"
- }
- },
- "append-type": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/append-type/-/append-type-1.0.2.tgz",
- "integrity": "sha512-hac740vT/SAbrFBLgLIWZqVT5PUAcGTWS5UkDDhr+OCizZSw90WKw6sWAEgGaYd2viIblggypMXwpjzHXOvAQg==",
- "dev": true
- },
- "arg": {
- "version": "4.1.3",
- "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
- "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==",
- "dev": true
- },
- "argparse": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
- "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
- "dev": true,
- "requires": {
- "sprintf-js": "~1.0.2"
- }
- },
- "array-buffer-byte-length": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz",
- "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "is-array-buffer": "^3.0.1"
- }
- },
- "array-each": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz",
- "integrity": "sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==",
- "dev": true
- },
- "array-slice": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz",
- "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==",
- "dev": true
- },
- "array-to-sentence": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/array-to-sentence/-/array-to-sentence-1.1.0.tgz",
- "integrity": "sha512-YkwkMmPA2+GSGvXj1s9NZ6cc2LBtR+uSeWTy2IGi5MR1Wag4DdrcjTxA/YV/Fw+qKlBeXomneZgThEbm/wvZbw==",
- "dev": true
- },
- "array-union": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
- "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
- "dev": true
- },
- "array.prototype.reduce": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.5.tgz",
- "integrity": "sha512-kDdugMl7id9COE8R7MHF5jWk7Dqt/fs4Pv+JXoICnYwqpjjjbUurz6w5fT5IG6brLdJhv6/VoHB0H7oyIBXd+Q==",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
- "es-abstract": "^1.20.4",
- "es-array-method-boxes-properly": "^1.0.0",
- "is-string": "^1.0.7"
- }
- },
- "arraybuffer.prototype.slice": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.1.tgz",
- "integrity": "sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw==",
- "dev": true,
- "requires": {
- "array-buffer-byte-length": "^1.0.0",
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "get-intrinsic": "^1.2.1",
- "is-array-buffer": "^3.0.2",
- "is-shared-array-buffer": "^1.0.2"
- }
- },
- "asap": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
- "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==",
- "dev": true
- },
- "asn1": {
- "version": "0.2.6",
- "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz",
- "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==",
- "dev": true,
- "requires": {
- "safer-buffer": "~2.1.0"
- }
- },
- "assert-fs-readfile-option": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/assert-fs-readfile-option/-/assert-fs-readfile-option-1.0.1.tgz",
- "integrity": "sha512-bESFgerRqZpPcFWBW/cXl0l1XQVLPFi80i31S6eYLIzksnNKdTKBlMoC7Dy/FWAj/97XIYhpe2CmVogifnEkMw==",
- "dev": true,
- "requires": {
- "nop": "^1.0.0"
- }
- },
- "assert-plus": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
- "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==",
- "dev": true
- },
- "assert-valid-glob-opts": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assert-valid-glob-opts/-/assert-valid-glob-opts-1.0.0.tgz",
- "integrity": "sha512-/mttty5Xh7wE4o7ttKaUpBJl0l04xWe3y6muy1j27gyzSsnceK0AYU9owPtUoL9z8+9hnPxztmuhdFZ7jRoyWw==",
- "dev": true,
- "requires": {
- "glob-option-error": "^1.0.0",
- "validate-glob-opts": "^1.0.0"
- }
- },
- "assertion-error": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz",
- "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==",
- "dev": true
- },
- "astral-regex": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz",
- "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==",
- "dev": true
- },
- "async": {
- "version": "1.5.2",
- "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz",
- "integrity": "sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==",
- "dev": true
- },
- "asynckit": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
- "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
- "dev": true
- },
- "autoprefixer": {
- "version": "6.7.7",
- "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz",
- "integrity": "sha512-WKExI/eSGgGAkWAO+wMVdFObZV7hQen54UpD1kCCTN3tvlL3W1jL4+lPP/M7MwoP7Q4RHzKtO3JQ4HxYEcd+xQ==",
- "dev": true,
- "requires": {
- "browserslist": "^1.7.6",
- "caniuse-db": "^1.0.30000634",
- "normalize-range": "^0.1.2",
- "num2fraction": "^1.2.2",
- "postcss": "^5.2.16",
- "postcss-value-parser": "^3.2.3"
- }
- },
- "available-typed-arrays": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz",
- "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==",
- "dev": true
- },
- "aws-sign2": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
- "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==",
- "dev": true
- },
- "aws4": {
- "version": "1.12.0",
- "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz",
- "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==",
- "dev": true
- },
- "balanced-match": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
- "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
- "dev": true
- },
- "basic-auth": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz",
- "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==",
- "dev": true,
- "requires": {
- "safe-buffer": "5.1.2"
- }
- },
- "batch": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz",
- "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==",
- "dev": true
- },
- "bcrypt-pbkdf": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
- "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==",
- "dev": true,
- "requires": {
- "tweetnacl": "^0.14.3"
- }
- },
- "benchmark": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/benchmark/-/benchmark-2.1.4.tgz",
- "integrity": "sha512-l9MlfN4M1K/H2fbhfMy3B7vJd6AGKJVQn2h6Sg/Yx+KckoUA7ewS5Vv6TjSq18ooE1kS9hhAlQRH3AkXIh/aOQ==",
- "dev": true,
- "requires": {
- "lodash": "^4.17.4",
- "platform": "^1.3.3"
- }
- },
- "benny": {
- "version": "3.7.1",
- "resolved": "https://registry.npmjs.org/benny/-/benny-3.7.1.tgz",
- "integrity": "sha512-USzYxODdVfOS7JuQq/L0naxB788dWCiUgUTxvN+WLPt/JfcDURNNj8kN/N+uK6PDvuR67/9/55cVKGPleFQINA==",
- "dev": true,
- "requires": {
- "@arrows/composition": "^1.0.0",
- "@arrows/dispatch": "^1.0.2",
- "@arrows/multimethod": "^1.1.6",
- "benchmark": "^2.1.4",
- "common-tags": "^1.8.0",
- "fs-extra": "^10.0.0",
- "json2csv": "^5.0.6",
- "kleur": "^4.1.4",
- "log-update": "^4.0.0"
- },
- "dependencies": {
- "fs-extra": {
- "version": "10.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz",
- "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^6.0.1",
- "universalify": "^2.0.0"
- }
- },
- "jsonfile": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
- "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.6",
- "universalify": "^2.0.0"
- }
- },
- "universalify": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz",
- "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==",
- "dev": true
- }
- }
- },
- "bootstrap-less-port": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/bootstrap-less-port/-/bootstrap-less-port-0.3.0.tgz",
- "integrity": "sha512-08aP3FZ7QQ0muffrYguACtN06dfkYvPI6yZEmXSZ3T7VfPD0mVT60lcM4pEW0we3W7BTUlhqYHCGTXrUzWbYoA==",
- "dev": true
- },
- "brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "dev": true,
- "requires": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
- "dev": true,
- "requires": {
- "fill-range": "^7.0.1"
- }
- },
- "browser-stdout": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz",
- "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==",
- "dev": true
- },
- "browserslist": {
- "version": "1.7.7",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz",
- "integrity": "sha512-qHJblDE2bXVRYzuDetv/wAeHOJyO97+9wxC1cdCtyzgNuSozOyRCiiLaCR1f71AN66lQdVVBipWm63V+a7bPOw==",
- "dev": true,
- "requires": {
- "caniuse-db": "^1.0.30000639",
- "electron-to-chromium": "^1.2.7"
- }
- },
- "buffer-from": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
- "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
- "dev": true
- },
- "builtin-modules": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz",
- "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==",
- "dev": true
- },
- "call-bind": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
- "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
- "dev": true,
- "requires": {
- "function-bind": "^1.1.1",
- "get-intrinsic": "^1.0.2"
- }
- },
- "callsites": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
- "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
- "dev": true
- },
- "camelcase": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz",
- "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==",
- "dev": true
- },
- "caniuse-db": {
- "version": "1.0.30001521",
- "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30001521.tgz",
- "integrity": "sha512-bT9eOOwKYX6jDKXXtAhfiYefkaGArsDgmRQ77tGpdtHply4DcyuirrNhPRlUQQ48IQ2RTU5M1LSCY6m1AnGwBA==",
- "dev": true
- },
- "caseless": {
- "version": "0.12.0",
- "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
- "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==",
- "dev": true
- },
- "chai": {
- "version": "4.3.7",
- "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz",
- "integrity": "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==",
- "dev": true,
- "requires": {
- "assertion-error": "^1.1.0",
- "check-error": "^1.0.2",
- "deep-eql": "^4.1.2",
- "get-func-name": "^2.0.0",
- "loupe": "^2.3.1",
- "pathval": "^1.1.1",
- "type-detect": "^4.0.5"
- }
- },
- "chalk": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
- "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.1.0",
- "supports-color": "^7.1.0"
- }
- },
- "check-error": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz",
- "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==",
- "dev": true
- },
- "clean-css": {
- "version": "5.3.3",
- "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz",
- "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==",
- "dev": true,
- "requires": {
- "source-map": "~0.6.0"
- }
- },
- "cli-cursor": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
- "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
- "dev": true,
- "requires": {
- "restore-cursor": "^3.1.0"
- }
- },
- "cliui": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
- "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
- "dev": true,
- "requires": {
- "string-width": "^3.1.0",
- "strip-ansi": "^5.2.0",
- "wrap-ansi": "^5.1.0"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
- "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
- "dev": true
- },
- "ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dev": true,
- "requires": {
- "color-convert": "^1.9.0"
- }
- },
- "color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "dev": true,
- "requires": {
- "color-name": "1.1.3"
- }
- },
- "color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
- "dev": true
- },
- "emoji-regex": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
- "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
- "dev": true
- },
- "is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
- "dev": true
- },
- "string-width": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
- "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
- "dev": true,
- "requires": {
- "emoji-regex": "^7.0.1",
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^5.1.0"
- }
- },
- "strip-ansi": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
- "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
- "dev": true,
- "requires": {
- "ansi-regex": "^4.1.0"
- }
- },
- "wrap-ansi": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
- "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
- "dev": true,
- "requires": {
- "ansi-styles": "^3.2.0",
- "string-width": "^3.0.0",
- "strip-ansi": "^5.0.0"
- }
- }
- }
- },
- "color-convert": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
- "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
- "dev": true,
- "requires": {
- "color-name": "~1.1.4"
- }
- },
- "color-name": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
- "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
- "dev": true
- },
- "colors": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz",
- "integrity": "sha512-ENwblkFQpqqia6b++zLD/KUWafYlVY/UNnAp7oz7LY7E924wmpye416wBOmvv/HMWzl8gL1kJlfvId/1Dg176w==",
- "dev": true
- },
- "combined-stream": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
- "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
- "dev": true,
- "requires": {
- "delayed-stream": "~1.0.0"
- }
- },
- "commander": {
- "version": "6.2.1",
- "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz",
- "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==",
- "dev": true
- },
- "common-tags": {
- "version": "1.8.2",
- "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz",
- "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==",
- "dev": true
- },
- "commondir": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
- "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==",
- "dev": true
- },
- "concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
- "dev": true
- },
- "connect": {
- "version": "3.7.0",
- "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz",
- "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==",
- "dev": true,
- "requires": {
- "debug": "2.6.9",
- "finalhandler": "1.1.2",
- "parseurl": "~1.3.3",
- "utils-merge": "1.0.1"
- },
- "dependencies": {
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
- "requires": {
- "ms": "2.0.0"
- }
- },
- "ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
- "dev": true
- }
- }
- },
- "connect-livereload": {
- "version": "0.5.4",
- "resolved": "https://registry.npmjs.org/connect-livereload/-/connect-livereload-0.5.4.tgz",
- "integrity": "sha512-3KnRwsWf4VmP01I4hCDQqTc4e2UxOvJIi8i08GiwqX2oymzxNFY7PqjFkwHglYTJ0yzUJkO5yqdPxVaIz3Pbug==",
- "dev": true
- },
- "copy-anything": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz",
- "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==",
- "requires": {
- "is-what": "^3.14.1"
- }
- },
- "core-util-is": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
- "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==",
- "dev": true
- },
- "create-require": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz",
- "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
- "dev": true
- },
- "cross-env": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz",
- "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==",
- "dev": true,
- "requires": {
- "cross-spawn": "^7.0.1"
- }
- },
- "cross-spawn": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",
- "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",
- "dev": true,
- "requires": {
- "path-key": "^3.1.0",
- "shebang-command": "^2.0.0",
- "which": "^2.0.1"
- }
- },
- "dashdash": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
- "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==",
- "dev": true,
- "requires": {
- "assert-plus": "^1.0.0"
- }
- },
- "date-time": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/date-time/-/date-time-1.1.0.tgz",
- "integrity": "sha512-RrxZQ06cdKe7YQ5oqIxs3GMc7W3vXscy7Ds+aZIqmxA59QnVtTiCseA4jbzVUub9xCbo9GuYVZo0OrZLYXnnmw==",
- "dev": true,
- "requires": {
- "time-zone": "^0.1.0"
- }
- },
- "dateformat": {
- "version": "4.6.3",
- "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-4.6.3.tgz",
- "integrity": "sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==",
- "dev": true
- },
- "debug": {
- "version": "4.3.4",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
- "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
- "dev": true,
- "requires": {
- "ms": "2.1.2"
- }
- },
- "decamelize": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
- "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
- "dev": true
- },
- "deep-eql": {
- "version": "4.1.3",
- "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz",
- "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==",
- "dev": true,
- "requires": {
- "type-detect": "^4.0.0"
- }
- },
- "deep-is": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
- "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
- "dev": true
- },
- "deepmerge": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
- "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
- "dev": true
- },
- "define-properties": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz",
- "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==",
- "dev": true,
- "requires": {
- "has-property-descriptors": "^1.0.0",
- "object-keys": "^1.1.1"
- }
- },
- "delayed-stream": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
- "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
- "dev": true
- },
- "depd": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz",
- "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==",
- "dev": true
- },
- "destroy": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz",
- "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==",
- "dev": true
- },
- "detect-file": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz",
- "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==",
- "dev": true
- },
- "diff": {
- "version": "3.5.0",
- "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz",
- "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==",
- "dev": true
- },
- "dir-glob": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz",
- "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==",
- "dev": true,
- "requires": {
- "path-type": "^4.0.0"
- }
- },
- "doctrine": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
- "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
- "dev": true,
- "requires": {
- "esutils": "^2.0.2"
- }
- },
- "ecc-jsbn": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
- "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==",
- "dev": true,
- "requires": {
- "jsbn": "~0.1.0",
- "safer-buffer": "^2.1.0"
- }
- },
- "ee-first": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz",
- "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==",
- "dev": true
- },
- "electron-to-chromium": {
- "version": "1.4.496",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.496.tgz",
- "integrity": "sha512-qeXC3Zbykq44RCrBa4kr8v/dWzYJA8rAwpyh9Qd+NKWoJfjG5vvJqy9XOJ9H4P/lqulZBCgUWAYi+FeK5AuJ8g==",
- "dev": true
- },
- "emoji-regex": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
- "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
- "dev": true
- },
- "encodeurl": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz",
- "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==",
- "dev": true
- },
- "enquirer": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz",
- "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==",
- "dev": true,
- "requires": {
- "ansi-colors": "^4.1.1",
- "strip-ansi": "^6.0.1"
- }
- },
- "errno": {
- "version": "0.1.8",
- "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz",
- "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==",
- "optional": true,
- "requires": {
- "prr": "~1.0.1"
- }
- },
- "error-ex": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
- "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
- "dev": true,
- "requires": {
- "is-arrayish": "^0.2.1"
- }
- },
- "es-abstract": {
- "version": "1.22.1",
- "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.1.tgz",
- "integrity": "sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==",
- "dev": true,
- "requires": {
- "array-buffer-byte-length": "^1.0.0",
- "arraybuffer.prototype.slice": "^1.0.1",
- "available-typed-arrays": "^1.0.5",
- "call-bind": "^1.0.2",
- "es-set-tostringtag": "^2.0.1",
- "es-to-primitive": "^1.2.1",
- "function.prototype.name": "^1.1.5",
- "get-intrinsic": "^1.2.1",
- "get-symbol-description": "^1.0.0",
- "globalthis": "^1.0.3",
- "gopd": "^1.0.1",
- "has": "^1.0.3",
- "has-property-descriptors": "^1.0.0",
- "has-proto": "^1.0.1",
- "has-symbols": "^1.0.3",
- "internal-slot": "^1.0.5",
- "is-array-buffer": "^3.0.2",
- "is-callable": "^1.2.7",
- "is-negative-zero": "^2.0.2",
- "is-regex": "^1.1.4",
- "is-shared-array-buffer": "^1.0.2",
- "is-string": "^1.0.7",
- "is-typed-array": "^1.1.10",
- "is-weakref": "^1.0.2",
- "object-inspect": "^1.12.3",
- "object-keys": "^1.1.1",
- "object.assign": "^4.1.4",
- "regexp.prototype.flags": "^1.5.0",
- "safe-array-concat": "^1.0.0",
- "safe-regex-test": "^1.0.0",
- "string.prototype.trim": "^1.2.7",
- "string.prototype.trimend": "^1.0.6",
- "string.prototype.trimstart": "^1.0.6",
- "typed-array-buffer": "^1.0.0",
- "typed-array-byte-length": "^1.0.0",
- "typed-array-byte-offset": "^1.0.0",
- "typed-array-length": "^1.0.4",
- "unbox-primitive": "^1.0.2",
- "which-typed-array": "^1.1.10"
- },
- "dependencies": {
- "object.assign": {
- "version": "4.1.4",
- "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz",
- "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
- "has-symbols": "^1.0.3",
- "object-keys": "^1.1.1"
- }
- }
- }
- },
- "es-array-method-boxes-properly": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz",
- "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==",
- "dev": true
- },
- "es-set-tostringtag": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz",
- "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==",
- "dev": true,
- "requires": {
- "get-intrinsic": "^1.1.3",
- "has": "^1.0.3",
- "has-tostringtag": "^1.0.0"
- }
- },
- "es-to-primitive": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
- "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
- "dev": true,
- "requires": {
- "is-callable": "^1.1.4",
- "is-date-object": "^1.0.1",
- "is-symbol": "^1.0.2"
- }
- },
- "es6-promise": {
- "version": "4.2.8",
- "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz",
- "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==",
- "dev": true
- },
- "es6-promisify": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz",
- "integrity": "sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==",
- "dev": true,
- "requires": {
- "es6-promise": "^4.0.3"
- }
- },
- "escape-html": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz",
- "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==",
- "dev": true
- },
- "escape-string-regexp": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
- "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
- "dev": true
- },
- "eslint": {
- "version": "7.32.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz",
- "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==",
- "dev": true,
- "requires": {
- "@babel/code-frame": "7.12.11",
- "@eslint/eslintrc": "^0.4.3",
- "@humanwhocodes/config-array": "^0.5.0",
- "ajv": "^6.10.0",
- "chalk": "^4.0.0",
- "cross-spawn": "^7.0.2",
- "debug": "^4.0.1",
- "doctrine": "^3.0.0",
- "enquirer": "^2.3.5",
- "escape-string-regexp": "^4.0.0",
- "eslint-scope": "^5.1.1",
- "eslint-utils": "^2.1.0",
- "eslint-visitor-keys": "^2.0.0",
- "espree": "^7.3.1",
- "esquery": "^1.4.0",
- "esutils": "^2.0.2",
- "fast-deep-equal": "^3.1.3",
- "file-entry-cache": "^6.0.1",
- "functional-red-black-tree": "^1.0.1",
- "glob-parent": "^5.1.2",
- "globals": "^13.6.0",
- "ignore": "^4.0.6",
- "import-fresh": "^3.0.0",
- "imurmurhash": "^0.1.4",
- "is-glob": "^4.0.0",
- "js-yaml": "^3.13.1",
- "json-stable-stringify-without-jsonify": "^1.0.1",
- "levn": "^0.4.1",
- "lodash.merge": "^4.6.2",
- "minimatch": "^3.0.4",
- "natural-compare": "^1.4.0",
- "optionator": "^0.9.1",
- "progress": "^2.0.0",
- "regexpp": "^3.1.0",
- "semver": "^7.2.1",
- "strip-ansi": "^6.0.0",
- "strip-json-comments": "^3.1.0",
- "table": "^6.0.9",
- "text-table": "^0.2.0",
- "v8-compile-cache": "^2.0.3"
- },
- "dependencies": {
- "eslint-utils": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz",
- "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==",
- "dev": true,
- "requires": {
- "eslint-visitor-keys": "^1.1.0"
- },
- "dependencies": {
- "eslint-visitor-keys": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
- "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
- "dev": true
- }
- }
- },
- "ignore": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
- "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
- "dev": true
- },
- "semver": {
- "version": "7.5.4",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
- "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
- "dev": true,
- "requires": {
- "lru-cache": "^6.0.0"
- }
- }
- }
- },
- "eslint-scope": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz",
- "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==",
- "dev": true,
- "requires": {
- "esrecurse": "^4.3.0",
- "estraverse": "^4.1.1"
- }
- },
- "eslint-utils": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz",
- "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==",
- "dev": true,
- "requires": {
- "eslint-visitor-keys": "^2.0.0"
- }
- },
- "eslint-visitor-keys": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz",
- "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==",
- "dev": true
- },
- "espree": {
- "version": "7.3.1",
- "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz",
- "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==",
- "dev": true,
- "requires": {
- "acorn": "^7.4.0",
- "acorn-jsx": "^5.3.1",
- "eslint-visitor-keys": "^1.3.0"
- },
- "dependencies": {
- "eslint-visitor-keys": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz",
- "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==",
- "dev": true
- }
- }
- },
- "esprima": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
- "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
- "dev": true
- },
- "esquery": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz",
- "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==",
- "dev": true,
- "requires": {
- "estraverse": "^5.1.0"
- },
- "dependencies": {
- "estraverse": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
- "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
- "dev": true
- }
- }
- },
- "esrecurse": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
- "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
- "dev": true,
- "requires": {
- "estraverse": "^5.2.0"
- },
- "dependencies": {
- "estraverse": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
- "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
- "dev": true
- }
- }
- },
- "estraverse": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
- "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
- "dev": true
- },
- "estree-walker": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
- "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
- "dev": true
- },
- "esutils": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
- "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
- "dev": true
- },
- "etag": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz",
- "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==",
- "dev": true
- },
- "eventemitter2": {
- "version": "0.4.14",
- "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-0.4.14.tgz",
- "integrity": "sha512-K7J4xq5xAD5jHsGM5ReWXRTFa3JRGofHiMcVgQ8PRwgWxzjHpMWCIzsmyf60+mh8KLsqYPcjUMa0AC4hd6lPyQ==",
- "dev": true
- },
- "exit": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz",
- "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==",
- "dev": true
- },
- "expand-tilde": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz",
- "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==",
- "dev": true,
- "requires": {
- "homedir-polyfill": "^1.0.1"
- }
- },
- "extend": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
- "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
- "dev": true
- },
- "extsprintf": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
- "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==",
- "dev": true
- },
- "fast-deep-equal": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
- "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
- "dev": true
- },
- "fast-glob": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz",
- "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==",
- "dev": true,
- "requires": {
- "@nodelib/fs.stat": "^2.0.2",
- "@nodelib/fs.walk": "^1.2.3",
- "glob-parent": "^5.1.2",
- "merge2": "^1.3.0",
- "micromatch": "^4.0.4"
- }
- },
- "fast-json-stable-stringify": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
- "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
- "dev": true
- },
- "fast-levenshtein": {
- "version": "2.0.6",
- "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
- "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
- "dev": true
- },
- "fastq": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz",
- "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==",
- "dev": true,
- "requires": {
- "reusify": "^1.0.4"
- }
- },
- "fg-lodash": {
- "version": "0.0.2",
- "resolved": "https://registry.npmjs.org/fg-lodash/-/fg-lodash-0.0.2.tgz",
- "integrity": "sha512-3jf21fWKb/qCM+frhdQX6/KT7sn12i5T6K7952/hKpOdK5uzYbZbEwJmWjrgrSzc74iXFtrtbHPD2mMywPkB9A==",
- "dev": true,
- "requires": {
- "lodash": "^2.4.1",
- "underscore.string": "~2.3.3"
- },
- "dependencies": {
- "lodash": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz",
- "integrity": "sha512-Kak1hi6/hYHGVPmdyiZijoQyz5x2iGVzs6w9GYB/HiXEtylY7tIoYEROMjvM1d9nXJqPOrG2MNPMn01bJ+S0Rw==",
- "dev": true
- },
- "underscore.string": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.3.3.tgz",
- "integrity": "sha512-hbD5MibthuDAu4yA5wxes5bzFgqd3PpBJuClbRxaNddxfdsz+qf+1kHwrGQFrmchmDHb9iNU+6EHDn8uj0xDJg==",
- "dev": true
- }
- }
- },
- "figures": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz",
- "integrity": "sha512-UxKlfCRuCBxSXU4C6t9scbDyWZ4VlaFFdojKtzJuSkuOBQ5CNFum+zZXFwHjo+CxBC1t6zlYPgHIgFjL8ggoEQ==",
- "dev": true,
- "requires": {
- "escape-string-regexp": "^1.0.5",
- "object-assign": "^4.1.0"
- },
- "dependencies": {
- "escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "dev": true
- }
- }
- },
- "file-entry-cache": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz",
- "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==",
- "dev": true,
- "requires": {
- "flat-cache": "^3.0.4"
- }
- },
- "fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
- "dev": true,
- "requires": {
- "to-regex-range": "^5.0.1"
- }
- },
- "finalhandler": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
- "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
- "dev": true,
- "requires": {
- "debug": "2.6.9",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "on-finished": "~2.3.0",
- "parseurl": "~1.3.3",
- "statuses": "~1.5.0",
- "unpipe": "~1.0.0"
- },
- "dependencies": {
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
- "requires": {
- "ms": "2.0.0"
- }
- },
- "ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
- "dev": true
- }
- }
- },
- "find-cache-dir": {
- "version": "3.3.2",
- "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz",
- "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==",
- "dev": true,
- "requires": {
- "commondir": "^1.0.1",
- "make-dir": "^3.0.2",
- "pkg-dir": "^4.1.0"
- },
- "dependencies": {
- "make-dir": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
- "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
- "dev": true,
- "requires": {
- "semver": "^6.0.0"
- }
- }
- }
- },
- "find-up": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
- "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
- "dev": true,
- "requires": {
- "locate-path": "^3.0.0"
- }
- },
- "findup-sync": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-5.0.0.tgz",
- "integrity": "sha512-MzwXju70AuyflbgeOhzvQWAvvQdo1XL0A9bVvlXsYcFEBM87WR4OakL4OfZq+QRmr+duJubio+UtNQCPsVESzQ==",
- "dev": true,
- "requires": {
- "detect-file": "^1.0.0",
- "is-glob": "^4.0.3",
- "micromatch": "^4.0.4",
- "resolve-dir": "^1.0.1"
- }
- },
- "fined": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz",
- "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==",
- "dev": true,
- "requires": {
- "expand-tilde": "^2.0.2",
- "is-plain-object": "^2.0.3",
- "object.defaults": "^1.1.0",
- "object.pick": "^1.2.0",
- "parse-filepath": "^1.0.1"
- }
- },
- "flagged-respawn": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz",
- "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==",
- "dev": true
- },
- "flat": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.1.tgz",
- "integrity": "sha512-FmTtBsHskrU6FJ2VxCnsDb84wu9zhmO3cUX2kGFb5tuwhfXxGciiT0oRY+cck35QmG+NmGh5eLz6lLCpWTqwpA==",
- "dev": true,
- "requires": {
- "is-buffer": "~2.0.3"
- }
- },
- "flat-cache": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
- "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
- "dev": true,
- "requires": {
- "flatted": "^3.1.0",
- "rimraf": "^3.0.2"
- }
- },
- "flatted": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz",
- "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==",
- "dev": true
- },
- "for-each": {
- "version": "0.3.3",
- "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
- "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
- "dev": true,
- "requires": {
- "is-callable": "^1.1.3"
- }
- },
- "for-in": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
- "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==",
- "dev": true
- },
- "for-own": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz",
- "integrity": "sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==",
- "dev": true,
- "requires": {
- "for-in": "^1.0.1"
- }
- },
- "forever-agent": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
- "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==",
- "dev": true
- },
- "form-data": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
- "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
- "dev": true,
- "requires": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.6",
- "mime-types": "^2.1.12"
- }
- },
- "fresh": {
- "version": "0.5.2",
- "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz",
- "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==",
- "dev": true
- },
- "fs-extra": {
- "version": "8.1.0",
- "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
- "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.2.0",
- "jsonfile": "^4.0.0",
- "universalify": "^0.1.0"
- }
- },
- "fs.realpath": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
- "dev": true
- },
- "fsevents": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
- "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
- "dev": true,
- "optional": true
- },
- "function-bind": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
- "dev": true
- },
- "function.prototype.name": {
- "version": "1.1.5",
- "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz",
- "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.3",
- "es-abstract": "^1.19.0",
- "functions-have-names": "^1.2.2"
- }
- },
- "functional-red-black-tree": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
- "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==",
- "dev": true
- },
- "functions-have-names": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
- "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
- "dev": true
- },
- "get-caller-file": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
- "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
- "dev": true
- },
- "get-func-name": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz",
- "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==",
- "dev": true
- },
- "get-intrinsic": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz",
- "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==",
- "dev": true,
- "requires": {
- "function-bind": "^1.1.1",
- "has": "^1.0.3",
- "has-proto": "^1.0.1",
- "has-symbols": "^1.0.3"
- }
- },
- "get-symbol-description": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz",
- "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "get-intrinsic": "^1.1.1"
- }
- },
- "getobject": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/getobject/-/getobject-1.0.2.tgz",
- "integrity": "sha512-2zblDBaFcb3rB4rF77XVnuINOE2h2k/OnqXAiy0IrTxUfV1iFp3la33oAQVY9pCpWU268WFYVt2t71hlMuLsOg==",
- "dev": true
- },
- "getpass": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
- "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==",
- "dev": true,
- "requires": {
- "assert-plus": "^1.0.0"
- }
- },
- "git-rev": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/git-rev/-/git-rev-0.2.1.tgz",
- "integrity": "sha512-p6OU8kZpeGHYqGpwnSD5/8IIERooiQp0p6On3T7ngcugnjhbmihvgMwCK2iun8ytn7FynsCPN+jRclR29hgOBg==",
- "dev": true
- },
- "glob": {
- "version": "7.2.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
- "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
- "dev": true,
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "glob-observable": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/glob-observable/-/glob-observable-0.7.0.tgz",
- "integrity": "sha512-iZAgGTchl2MgZIWmK96BoHv0dFA2iXWBjFTFgIBbcpSdEPJJoXgr2e48GWlxcDOLsb6UHz5NWEPi0+6ysPFE+A==",
- "dev": true,
- "requires": {
- "assert-valid-glob-opts": "^1.0.0",
- "fs.realpath": "^1.0.0",
- "glob": "^7.1.2",
- "graceful-fs": "^4.1.11",
- "inspect-with-kind": "^1.0.4",
- "zen-observable": "^0.8.6"
- }
- },
- "glob-option-error": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/glob-option-error/-/glob-option-error-1.0.0.tgz",
- "integrity": "sha512-AD7lbWbwF2Ii9gBQsQIOEzwuqP/jsnyvK27/3JDq1kn/JyfDtYI6AWz3ZQwcPuQdHSBcFh+A2yT/SEep27LOGg==",
- "dev": true
- },
- "glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
- "dev": true,
- "requires": {
- "is-glob": "^4.0.1"
- }
- },
- "global-modules": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz",
- "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==",
- "dev": true,
- "requires": {
- "global-prefix": "^1.0.1",
- "is-windows": "^1.0.1",
- "resolve-dir": "^1.0.0"
- }
- },
- "global-prefix": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz",
- "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==",
- "dev": true,
- "requires": {
- "expand-tilde": "^2.0.2",
- "homedir-polyfill": "^1.0.1",
- "ini": "^1.3.4",
- "is-windows": "^1.0.1",
- "which": "^1.2.14"
- },
- "dependencies": {
- "which": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
- "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
- "dev": true,
- "requires": {
- "isexe": "^2.0.0"
- }
- }
- }
- },
- "globals": {
- "version": "13.21.0",
- "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz",
- "integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==",
- "dev": true,
- "requires": {
- "type-fest": "^0.20.2"
- }
- },
- "globalthis": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz",
- "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==",
- "dev": true,
- "requires": {
- "define-properties": "^1.1.3"
- }
- },
- "globby": {
- "version": "10.0.2",
- "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz",
- "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==",
- "dev": true,
- "requires": {
- "@types/glob": "^7.1.1",
- "array-union": "^2.1.0",
- "dir-glob": "^3.0.1",
- "fast-glob": "^3.0.3",
- "glob": "^7.1.3",
- "ignore": "^5.1.1",
- "merge2": "^1.2.3",
- "slash": "^3.0.0"
- }
- },
- "gopd": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz",
- "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==",
- "dev": true,
- "requires": {
- "get-intrinsic": "^1.1.3"
- }
- },
- "graceful-fs": {
- "version": "4.2.11",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
- "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
- "devOptional": true
- },
- "growl": {
- "version": "1.10.5",
- "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz",
- "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==",
- "dev": true
- },
- "grunt": {
- "version": "1.6.1",
- "resolved": "https://registry.npmjs.org/grunt/-/grunt-1.6.1.tgz",
- "integrity": "sha512-/ABUy3gYWu5iBmrUSRBP97JLpQUm0GgVveDCp6t3yRNIoltIYw7rEj3g5y1o2PGPR2vfTRGa7WC/LZHLTXnEzA==",
- "dev": true,
- "requires": {
- "dateformat": "~4.6.2",
- "eventemitter2": "~0.4.13",
- "exit": "~0.1.2",
- "findup-sync": "~5.0.0",
- "glob": "~7.1.6",
- "grunt-cli": "~1.4.3",
- "grunt-known-options": "~2.0.0",
- "grunt-legacy-log": "~3.0.0",
- "grunt-legacy-util": "~2.0.1",
- "iconv-lite": "~0.6.3",
- "js-yaml": "~3.14.0",
- "minimatch": "~3.0.4",
- "nopt": "~3.0.6"
- },
- "dependencies": {
- "glob": {
- "version": "7.1.7",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz",
- "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==",
- "dev": true,
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "minimatch": {
- "version": "3.0.8",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz",
- "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==",
- "dev": true,
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- }
- }
- },
- "grunt-cli": {
- "version": "1.4.3",
- "resolved": "https://registry.npmjs.org/grunt-cli/-/grunt-cli-1.4.3.tgz",
- "integrity": "sha512-9Dtx/AhVeB4LYzsViCjUQkd0Kw0McN2gYpdmGYKtE2a5Yt7v1Q+HYZVWhqXc/kGnxlMtqKDxSwotiGeFmkrCoQ==",
- "dev": true,
- "requires": {
- "grunt-known-options": "~2.0.0",
- "interpret": "~1.1.0",
- "liftup": "~3.0.1",
- "nopt": "~4.0.1",
- "v8flags": "~3.2.0"
- },
- "dependencies": {
- "nopt": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz",
- "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==",
- "dev": true,
- "requires": {
- "abbrev": "1",
- "osenv": "^0.1.4"
- }
- }
- }
- },
- "grunt-contrib-clean": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/grunt-contrib-clean/-/grunt-contrib-clean-1.1.0.tgz",
- "integrity": "sha512-tET+TYTd8vCtKeGwbLjoH8+SdI8ngVzGbPr7vlWkewG7mYYHIccd2Ldxq+PK3DyBp5Www3ugdkfsjoNKUl5MTg==",
- "dev": true,
- "requires": {
- "async": "^1.5.2",
- "rimraf": "^2.5.1"
- },
- "dependencies": {
- "rimraf": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
- "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
- "dev": true,
- "requires": {
- "glob": "^7.1.3"
- }
- }
- }
- },
- "grunt-contrib-connect": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/grunt-contrib-connect/-/grunt-contrib-connect-1.0.2.tgz",
- "integrity": "sha512-7OPoyfGrpOYzuiRPzGyzWDe/xFcjttXe1ztVSFS8TAVBtpfXeeOV9RiwuyqA4yN1UeOG2Pnpx8s0DcUDAu21Gw==",
- "dev": true,
- "requires": {
- "async": "^1.5.2",
- "connect": "^3.4.0",
- "connect-livereload": "^0.5.0",
- "http2": "^3.3.4",
- "morgan": "^1.6.1",
- "opn": "^4.0.0",
- "portscanner": "^1.0.0",
- "serve-index": "^1.7.1",
- "serve-static": "^1.10.0"
- }
- },
- "grunt-eslint": {
- "version": "23.0.0",
- "resolved": "https://registry.npmjs.org/grunt-eslint/-/grunt-eslint-23.0.0.tgz",
- "integrity": "sha512-QqHSAiGF08EVD7YlD4OSRWuLRaDvpsRdTptwy9WaxUXE+03mCLVA/lEaR6SHWehF7oUwIqCEjaNONeeeWlB4LQ==",
- "dev": true,
- "requires": {
- "chalk": "^4.0.0",
- "eslint": "^7.0.0"
- }
- },
- "grunt-known-options": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/grunt-known-options/-/grunt-known-options-2.0.0.tgz",
- "integrity": "sha512-GD7cTz0I4SAede1/+pAbmJRG44zFLPipVtdL9o3vqx9IEyb7b4/Y3s7r6ofI3CchR5GvYJ+8buCSioDv5dQLiA==",
- "dev": true
- },
- "grunt-legacy-log": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-3.0.0.tgz",
- "integrity": "sha512-GHZQzZmhyq0u3hr7aHW4qUH0xDzwp2YXldLPZTCjlOeGscAOWWPftZG3XioW8MasGp+OBRIu39LFx14SLjXRcA==",
- "dev": true,
- "requires": {
- "colors": "~1.1.2",
- "grunt-legacy-log-utils": "~2.1.0",
- "hooker": "~0.2.3",
- "lodash": "~4.17.19"
- }
- },
- "grunt-legacy-log-utils": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-2.1.0.tgz",
- "integrity": "sha512-lwquaPXJtKQk0rUM1IQAop5noEpwFqOXasVoedLeNzaibf/OPWjKYvvdqnEHNmU+0T0CaReAXIbGo747ZD+Aaw==",
- "dev": true,
- "requires": {
- "chalk": "~4.1.0",
- "lodash": "~4.17.19"
- }
- },
- "grunt-legacy-util": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-2.0.1.tgz",
- "integrity": "sha512-2bQiD4fzXqX8rhNdXkAywCadeqiPiay0oQny77wA2F3WF4grPJXCvAcyoWUJV+po/b15glGkxuSiQCK299UC2w==",
- "dev": true,
- "requires": {
- "async": "~3.2.0",
- "exit": "~0.1.2",
- "getobject": "~1.0.0",
- "hooker": "~0.2.3",
- "lodash": "~4.17.21",
- "underscore.string": "~3.3.5",
- "which": "~2.0.2"
- },
- "dependencies": {
- "async": {
- "version": "3.2.4",
- "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz",
- "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==",
- "dev": true
- }
- }
- },
- "grunt-saucelabs": {
- "version": "9.0.1",
- "resolved": "https://registry.npmjs.org/grunt-saucelabs/-/grunt-saucelabs-9.0.1.tgz",
- "integrity": "sha512-3WD5/RtSp8AyEnmtN5HK1NUkU7o/kBl6rGQILnfg7WHTe0g0uG3LtecWPwTRYrD7kop79WkDfeVQ85WjvwDUZw==",
- "dev": true,
- "requires": {
- "colors": "~1.1.2",
- "lodash": "^4.17.11",
- "q": "~1.4.1",
- "requestretry": "~1.9.0",
- "sauce-tunnel": "~2.5.0",
- "saucelabs": "^1.5.0"
- }
- },
- "grunt-shell": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/grunt-shell/-/grunt-shell-1.3.1.tgz",
- "integrity": "sha512-fqiC5NNNTCKwH3TCbYpNkNUgq1/cEYJp59tedtWv83sGeG0PTmVB7Lbo/m0WQug3MngV6lsYAXvoNflDD1oeQg==",
- "dev": true,
- "requires": {
- "chalk": "^1.0.0",
- "npm-run-path": "^1.0.0",
- "object-assign": "^4.0.0"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
- "dev": true
- },
- "ansi-styles": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
- "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==",
- "dev": true
- },
- "chalk": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
- "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==",
- "dev": true,
- "requires": {
- "ansi-styles": "^2.2.1",
- "escape-string-regexp": "^1.0.2",
- "has-ansi": "^2.0.0",
- "strip-ansi": "^3.0.0",
- "supports-color": "^2.0.0"
- }
- },
- "escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "dev": true
- },
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
- "dev": true,
- "requires": {
- "ansi-regex": "^2.0.0"
- }
- },
- "supports-color": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
- "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==",
- "dev": true
- }
- }
- },
- "har-schema": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
- "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==",
- "dev": true
- },
- "har-validator": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz",
- "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==",
- "dev": true,
- "requires": {
- "ajv": "^6.12.3",
- "har-schema": "^2.0.0"
- }
- },
- "has": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
- "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
- "dev": true,
- "requires": {
- "function-bind": "^1.1.1"
- }
- },
- "has-ansi": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
- "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==",
- "dev": true,
- "requires": {
- "ansi-regex": "^2.0.0"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
- "dev": true
- }
- }
- },
- "has-bigints": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz",
- "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==",
- "dev": true
- },
- "has-flag": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
- "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
- "dev": true
- },
- "has-property-descriptors": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz",
- "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==",
- "dev": true,
- "requires": {
- "get-intrinsic": "^1.1.1"
- }
- },
- "has-proto": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz",
- "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==",
- "dev": true
- },
- "has-symbols": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz",
- "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==",
- "dev": true
- },
- "has-tostringtag": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz",
- "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==",
- "dev": true,
- "requires": {
- "has-symbols": "^1.0.2"
- }
- },
- "he": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
- "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
- "dev": true
- },
- "homedir-polyfill": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz",
- "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==",
- "dev": true,
- "requires": {
- "parse-passwd": "^1.0.0"
- }
- },
- "hooker": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz",
- "integrity": "sha512-t+UerCsQviSymAInD01Pw+Dn/usmz1sRO+3Zk1+lx8eg+WKpD2ulcwWqHHL0+aseRBr+3+vIhiG1K1JTwaIcTA==",
- "dev": true
- },
- "hosted-git-info": {
- "version": "2.8.9",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
- "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
- "dev": true
- },
- "html-es6cape": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/html-es6cape/-/html-es6cape-1.0.5.tgz",
- "integrity": "sha512-pkkhVE3YCMJwWBy/b87xhXaFaceDZECytDvu36/t3dXvU3FaczMjQVX2cugDIBM+gpAKBPSxl4KWctqVJBJi4w==",
- "dev": true
- },
- "html-template-tag": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/html-template-tag/-/html-template-tag-3.2.0.tgz",
- "integrity": "sha512-dt/21zLAVPBB3M4j6dCE46LyG8PcHHIUTYiBTIRDw1yg4nGaVbKEVHVsm3BpeJzlSB6n9BrcW6kP4zJE9mS3ew==",
- "dev": true,
- "requires": {
- "html-es6cape": "^1.0.5"
- }
- },
- "http-errors": {
- "version": "1.6.3",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
- "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==",
- "dev": true,
- "requires": {
- "depd": "~1.1.2",
- "inherits": "2.0.3",
- "setprototypeof": "1.1.0",
- "statuses": ">= 1.4.0 < 2"
- },
- "dependencies": {
- "depd": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
- "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==",
- "dev": true
- },
- "inherits": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
- "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==",
- "dev": true
- }
- }
- },
- "http-signature": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
- "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==",
- "dev": true,
- "requires": {
- "assert-plus": "^1.0.0",
- "jsprim": "^1.2.2",
- "sshpk": "^1.7.0"
- }
- },
- "http2": {
- "version": "3.3.7",
- "resolved": "https://registry.npmjs.org/http2/-/http2-3.3.7.tgz",
- "integrity": "sha512-puSi8M8WNlFJm9Pk4c/Mbz9Gwparuj3gO9/RRO5zv6piQ0FY+9Qywp0PdWshYgsMJSalixFY7eC6oPu0zRxLAQ==",
- "dev": true
- },
- "iconv-lite": {
- "version": "0.6.3",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
- "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
- "devOptional": true,
- "requires": {
- "safer-buffer": ">= 2.1.2 < 3.0.0"
- }
- },
- "ignore": {
- "version": "5.2.4",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz",
- "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==",
- "dev": true
- },
- "image-size": {
- "version": "0.5.5",
- "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz",
- "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==",
- "optional": true
- },
- "import-fresh": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
- "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
- "dev": true,
- "requires": {
- "parent-module": "^1.0.0",
- "resolve-from": "^4.0.0"
- }
- },
- "imurmurhash": {
- "version": "0.1.4",
- "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
- "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
- "dev": true
- },
- "indexed-filter": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/indexed-filter/-/indexed-filter-1.0.3.tgz",
- "integrity": "sha512-oBIzs6EARNMzrLgVg20fK52H19WcRHBiukiiEkw9rnnI//8rinEBMLrYdwEfJ9d4K7bjV1L6nSGft6H/qzHNgQ==",
- "dev": true,
- "requires": {
- "append-type": "^1.0.1"
- }
- },
- "inflight": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
- "dev": true,
- "requires": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
- "dev": true
- },
- "ini": {
- "version": "1.3.8",
- "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
- "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
- "dev": true
- },
- "inspect-with-kind": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/inspect-with-kind/-/inspect-with-kind-1.0.5.tgz",
- "integrity": "sha512-MAQUJuIo7Xqk8EVNP+6d3CKq9c80hi4tjIbIAT6lmGW9W6WzlHiu9PS8uSuUYU+Do+j1baiFp3H25XEVxDIG2g==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.2"
- }
- },
- "internal-slot": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz",
- "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==",
- "dev": true,
- "requires": {
- "get-intrinsic": "^1.2.0",
- "has": "^1.0.3",
- "side-channel": "^1.0.4"
- }
- },
- "interpret": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.1.0.tgz",
- "integrity": "sha512-CLM8SNMDu7C5psFCn6Wg/tgpj/bKAg7hc2gWqcuR9OD5Ft9PhBpIu8PLicPeis+xDd6YX2ncI8MCA64I9tftIA==",
- "dev": true
- },
- "is-absolute": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz",
- "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==",
- "dev": true,
- "requires": {
- "is-relative": "^1.0.0",
- "is-windows": "^1.0.1"
- }
- },
- "is-array-buffer": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz",
- "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "get-intrinsic": "^1.2.0",
- "is-typed-array": "^1.1.10"
- }
- },
- "is-arrayish": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
- "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
- "dev": true
- },
- "is-bigint": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz",
- "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==",
- "dev": true,
- "requires": {
- "has-bigints": "^1.0.1"
- }
- },
- "is-boolean-object": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
- "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "has-tostringtag": "^1.0.0"
- }
- },
- "is-buffer": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz",
- "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==",
- "dev": true
- },
- "is-callable": {
- "version": "1.2.7",
- "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
- "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
- "dev": true
- },
- "is-core-module": {
- "version": "2.13.0",
- "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz",
- "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==",
- "dev": true,
- "requires": {
- "has": "^1.0.3"
- }
- },
- "is-date-object": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz",
- "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==",
- "dev": true,
- "requires": {
- "has-tostringtag": "^1.0.0"
- }
- },
- "is-extglob": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
- "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
- "dev": true
- },
- "is-finite": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz",
- "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==",
- "dev": true
- },
- "is-fullwidth-code-point": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
- "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
- "dev": true
- },
- "is-glob": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
- "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
- "dev": true,
- "requires": {
- "is-extglob": "^2.1.1"
- }
- },
- "is-module": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz",
- "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==",
- "dev": true
- },
- "is-negative-zero": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz",
- "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==",
- "dev": true
- },
- "is-number": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
- "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
- "dev": true
- },
- "is-number-object": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz",
- "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==",
- "dev": true,
- "requires": {
- "has-tostringtag": "^1.0.0"
- }
- },
- "is-plain-obj": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
- "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==",
- "dev": true
- },
- "is-plain-object": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
- "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
- "dev": true,
- "requires": {
- "isobject": "^3.0.1"
- }
- },
- "is-reference": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz",
- "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==",
- "dev": true,
- "requires": {
- "@types/estree": "*"
- }
- },
- "is-regex": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
- "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "has-tostringtag": "^1.0.0"
- }
- },
- "is-relative": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz",
- "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==",
- "dev": true,
- "requires": {
- "is-unc-path": "^1.0.0"
- }
- },
- "is-shared-array-buffer": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz",
- "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2"
- }
- },
- "is-string": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz",
- "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==",
- "dev": true,
- "requires": {
- "has-tostringtag": "^1.0.0"
- }
- },
- "is-symbol": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz",
- "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==",
- "dev": true,
- "requires": {
- "has-symbols": "^1.0.2"
- }
- },
- "is-typed-array": {
- "version": "1.1.12",
- "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz",
- "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==",
- "dev": true,
- "requires": {
- "which-typed-array": "^1.1.11"
- }
- },
- "is-typedarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
- "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==",
- "dev": true
- },
- "is-unc-path": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz",
- "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==",
- "dev": true,
- "requires": {
- "unc-path-regex": "^0.1.2"
- }
- },
- "is-weakref": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz",
- "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2"
- }
- },
- "is-what": {
- "version": "3.14.1",
- "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz",
- "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA=="
- },
- "is-windows": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
- "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
- "dev": true
- },
- "isarray": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
- "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
- "dev": true
- },
- "isexe": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
- "dev": true
- },
- "isobject": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
- "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==",
- "dev": true
- },
- "isstream": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
- "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==",
- "dev": true
- },
- "jest-worker": {
- "version": "24.9.0",
- "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz",
- "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==",
- "dev": true,
- "requires": {
- "merge-stream": "^2.0.0",
- "supports-color": "^6.1.0"
- },
- "dependencies": {
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
- "dev": true
- },
- "supports-color": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
- "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
- "dev": true,
- "requires": {
- "has-flag": "^3.0.0"
- }
- }
- }
- },
- "jit-grunt": {
- "version": "0.10.0",
- "resolved": "https://registry.npmjs.org/jit-grunt/-/jit-grunt-0.10.0.tgz",
- "integrity": "sha512-eT/f4c9wgZ3buXB7X1JY1w6uNtAV0bhrbOGf/mFmBb0CDNLUETJ/VRoydayWOI54tOoam0cz9RooVCn3QY1WoA==",
- "dev": true,
- "requires": {}
- },
- "js-base64": {
- "version": "2.6.4",
- "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz",
- "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==",
- "dev": true
- },
- "js-tokens": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
- "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
- "dev": true
- },
- "js-yaml": {
- "version": "3.14.1",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
- "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
- "dev": true,
- "requires": {
- "argparse": "^1.0.7",
- "esprima": "^4.0.0"
- }
- },
- "jsbn": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
- "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==",
- "dev": true
- },
- "json-parse-better-errors": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
- "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
- "dev": true
- },
- "json-schema": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz",
- "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==",
- "dev": true
- },
- "json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "dev": true
- },
- "json-stable-stringify-without-jsonify": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
- "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
- "dev": true
- },
- "json-stringify-safe": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
- "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==",
- "dev": true
- },
- "json2csv": {
- "version": "5.0.7",
- "resolved": "https://registry.npmjs.org/json2csv/-/json2csv-5.0.7.tgz",
- "integrity": "sha512-YRZbUnyaJZLZUJSRi2G/MqahCyRv9n/ds+4oIetjDF3jWQA7AG7iSeKTiZiCNqtMZM7HDyt0e/W6lEnoGEmMGA==",
- "dev": true,
- "requires": {
- "commander": "^6.1.0",
- "jsonparse": "^1.3.1",
- "lodash.get": "^4.4.2"
- }
- },
- "jsonfile": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
- "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.6"
- }
- },
- "jsonparse": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz",
- "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==",
- "dev": true
- },
- "jsprim": {
- "version": "1.4.2",
- "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz",
- "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==",
- "dev": true,
- "requires": {
- "assert-plus": "1.0.0",
- "extsprintf": "1.3.0",
- "json-schema": "0.4.0",
- "verror": "1.10.0"
- }
- },
- "kind-of": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
- "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
- "dev": true
- },
- "kleur": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz",
- "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==",
- "dev": true
- },
- "less-plugin-autoprefix": {
- "version": "1.5.1",
- "resolved": "https://registry.npmjs.org/less-plugin-autoprefix/-/less-plugin-autoprefix-1.5.1.tgz",
- "integrity": "sha512-l++6pbkvw8XSD1soqugslzAaz0/YFrWXgc+PGo/EhLCjRo9zJfda2hFPLBSYrRDl62dTeDbN93Kx+1dvnHnkIw==",
- "dev": true,
- "requires": {
- "autoprefixer": "^6.0.0",
- "postcss": "^5.0.0"
- }
- },
- "less-plugin-clean-css": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/less-plugin-clean-css/-/less-plugin-clean-css-1.6.0.tgz",
- "integrity": "sha512-jwXX6WlXT57OVCXa5oBJBaJq1b4s1BOKeEEoAL2UTeEitogQWfTcBbLT/vow9pl0N0MXV8Mb4KyhTGG0YbEKyQ==",
- "dev": true,
- "requires": {
- "clean-css": "5.3.3"
- }
- },
- "levn": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
- "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
- "dev": true,
- "requires": {
- "prelude-ls": "^1.2.1",
- "type-check": "~0.4.0"
- }
- },
- "liftup": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/liftup/-/liftup-3.0.1.tgz",
- "integrity": "sha512-yRHaiQDizWSzoXk3APcA71eOI/UuhEkNN9DiW2Tt44mhYzX4joFoCZlxsSOF7RyeLlfqzFLQI1ngFq3ggMPhOw==",
- "dev": true,
- "requires": {
- "extend": "^3.0.2",
- "findup-sync": "^4.0.0",
- "fined": "^1.2.0",
- "flagged-respawn": "^1.0.1",
- "is-plain-object": "^2.0.4",
- "object.map": "^1.0.1",
- "rechoir": "^0.7.0",
- "resolve": "^1.19.0"
- },
- "dependencies": {
- "findup-sync": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-4.0.0.tgz",
- "integrity": "sha512-6jvvn/12IC4quLBL1KNokxC7wWTvYncaVUYSoxWw7YykPLuRrnv4qdHcSOywOI5RpkOVGeQRtWM8/q+G6W6qfQ==",
- "dev": true,
- "requires": {
- "detect-file": "^1.0.0",
- "is-glob": "^4.0.0",
- "micromatch": "^4.0.2",
- "resolve-dir": "^1.0.1"
- }
- }
- }
- },
- "load-json-file": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
- "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.2",
- "parse-json": "^4.0.0",
- "pify": "^3.0.0",
- "strip-bom": "^3.0.0"
- },
- "dependencies": {
- "pify": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
- "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
- "dev": true
- }
- }
- },
- "locate-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
- "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
- "dev": true,
- "requires": {
- "p-locate": "^3.0.0",
- "path-exists": "^3.0.0"
- }
- },
- "lodash": {
- "version": "4.17.21",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
- "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
- "dev": true
- },
- "lodash.get": {
- "version": "4.4.2",
- "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz",
- "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==",
- "dev": true
- },
- "lodash.merge": {
- "version": "4.6.2",
- "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
- "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
- "dev": true
- },
- "lodash.truncate": {
- "version": "4.4.2",
- "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz",
- "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==",
- "dev": true
- },
- "log-symbols": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz",
- "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==",
- "dev": true,
- "requires": {
- "chalk": "^2.0.1"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dev": true,
- "requires": {
- "color-convert": "^1.9.0"
- }
- },
- "chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dev": true,
- "requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- }
- },
- "color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "dev": true,
- "requires": {
- "color-name": "1.1.3"
- }
- },
- "color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
- "dev": true
- },
- "escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "dev": true
- },
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
- "dev": true
- },
- "supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dev": true,
- "requires": {
- "has-flag": "^3.0.0"
- }
- }
- }
- },
- "log-update": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz",
- "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==",
- "dev": true,
- "requires": {
- "ansi-escapes": "^4.3.0",
- "cli-cursor": "^3.1.0",
- "slice-ansi": "^4.0.0",
- "wrap-ansi": "^6.2.0"
- }
- },
- "loupe": {
- "version": "2.3.6",
- "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz",
- "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==",
- "dev": true,
- "requires": {
- "get-func-name": "^2.0.0"
- }
- },
- "lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dev": true,
- "requires": {
- "yallist": "^4.0.0"
- }
- },
- "magic-string": {
- "version": "0.25.9",
- "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz",
- "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==",
- "dev": true,
- "requires": {
- "sourcemap-codec": "^1.4.8"
- }
- },
- "make-dir": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
- "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
- "optional": true,
- "requires": {
- "pify": "^4.0.1",
- "semver": "^5.6.0"
- },
- "dependencies": {
- "semver": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
- "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
- "optional": true
- }
- }
- },
- "make-error": {
- "version": "1.3.6",
- "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
- "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==",
- "dev": true
- },
- "make-iterator": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz",
- "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==",
- "dev": true,
- "requires": {
- "kind-of": "^6.0.2"
- }
- },
- "map-cache": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
- "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==",
- "dev": true
- },
- "memorystream": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz",
- "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==",
- "dev": true
- },
- "merge-stream": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
- "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
- "dev": true
- },
- "merge2": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",
- "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",
- "dev": true
- },
- "micromatch": {
- "version": "4.0.5",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
- "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
- "dev": true,
- "requires": {
- "braces": "^3.0.2",
- "picomatch": "^2.3.1"
- }
- },
- "mime": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
- "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
- "devOptional": true
- },
- "mime-db": {
- "version": "1.52.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
- "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
- "dev": true
- },
- "mime-types": {
- "version": "2.1.35",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
- "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
- "dev": true,
- "requires": {
- "mime-db": "1.52.0"
- }
- },
- "mimic-fn": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
- "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
- "dev": true
- },
- "minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dev": true,
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "minimist": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
- "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
- "dev": true
- },
- "mkdirp": {
- "version": "0.5.4",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.4.tgz",
- "integrity": "sha512-iG9AK/dJLtJ0XNgTuDbSyNS3zECqDlAhnQW4CsNxBG3LQJBbHmRX1egw39DmtOdCAqY+dKXV+sgPgilNWUKMVw==",
- "dev": true,
- "requires": {
- "minimist": "^1.2.5"
- }
- },
- "mocha": {
- "version": "6.2.3",
- "resolved": "https://registry.npmjs.org/mocha/-/mocha-6.2.3.tgz",
- "integrity": "sha512-0R/3FvjIGH3eEuG17ccFPk117XL2rWxatr81a57D+r/x2uTYZRbdZ4oVidEUMh2W2TJDa7MdAb12Lm2/qrKajg==",
- "dev": true,
- "requires": {
- "ansi-colors": "3.2.3",
- "browser-stdout": "1.3.1",
- "debug": "3.2.6",
- "diff": "3.5.0",
- "escape-string-regexp": "1.0.5",
- "find-up": "3.0.0",
- "glob": "7.1.3",
- "growl": "1.10.5",
- "he": "1.2.0",
- "js-yaml": "3.13.1",
- "log-symbols": "2.2.0",
- "minimatch": "3.0.4",
- "mkdirp": "0.5.4",
- "ms": "2.1.1",
- "node-environment-flags": "1.0.5",
- "object.assign": "4.1.0",
- "strip-json-comments": "2.0.1",
- "supports-color": "6.0.0",
- "which": "1.3.1",
- "wide-align": "1.1.3",
- "yargs": "13.3.2",
- "yargs-parser": "13.1.2",
- "yargs-unparser": "1.6.0"
- },
- "dependencies": {
- "ansi-colors": {
- "version": "3.2.3",
- "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz",
- "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==",
- "dev": true
- },
- "debug": {
- "version": "3.2.6",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
- "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
- "dev": true,
- "requires": {
- "ms": "^2.1.1"
- }
- },
- "escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "dev": true
- },
- "glob": {
- "version": "7.1.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
- "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
- "dev": true,
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
- "dev": true
- },
- "js-yaml": {
- "version": "3.13.1",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
- "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
- "dev": true,
- "requires": {
- "argparse": "^1.0.7",
- "esprima": "^4.0.0"
- }
- },
- "minimatch": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
- "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
- "dev": true,
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "ms": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
- "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
- "dev": true
- },
- "strip-json-comments": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
- "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",
- "dev": true
- },
- "supports-color": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz",
- "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==",
- "dev": true,
- "requires": {
- "has-flag": "^3.0.0"
- }
- },
- "which": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
- "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
- "dev": true,
- "requires": {
- "isexe": "^2.0.0"
- }
- }
- }
- },
- "mocha-teamcity-reporter": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/mocha-teamcity-reporter/-/mocha-teamcity-reporter-3.0.0.tgz",
- "integrity": "sha512-FyGgmtFfW2nDwEZU3mrjQShAAK/zhGivwY4HCsqoDoyeS8vV8HGdq1Dn2P+SFaIoCeXTQ0Z+5xVRyikYaKrW5w==",
- "dev": true,
- "requires": {}
- },
- "morgan": {
- "version": "1.10.0",
- "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.0.tgz",
- "integrity": "sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==",
- "dev": true,
- "requires": {
- "basic-auth": "~2.0.1",
- "debug": "2.6.9",
- "depd": "~2.0.0",
- "on-finished": "~2.3.0",
- "on-headers": "~1.0.2"
- },
- "dependencies": {
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
- "requires": {
- "ms": "2.0.0"
- }
- },
- "ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
- "dev": true
- }
- }
- },
- "ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
- "devOptional": true
- },
- "natural-compare": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
- "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
- "dev": true
- },
- "needle": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/needle/-/needle-3.2.0.tgz",
- "integrity": "sha512-oUvzXnyLiVyVGoianLijF9O/RecZUf7TkBfimjGrLM4eQhXyeJwM6GeAWccwfQ9aa4gMCZKqhAOuLaMIcQxajQ==",
- "optional": true,
- "requires": {
- "debug": "^3.2.6",
- "iconv-lite": "^0.6.3",
- "sax": "^1.2.4"
- },
- "dependencies": {
- "debug": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
- "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
- "optional": true,
- "requires": {
- "ms": "^2.1.1"
- }
- }
- }
- },
- "negotiator": {
- "version": "0.6.3",
- "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz",
- "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==",
- "dev": true
- },
- "nice-try": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
- "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
- "dev": true
- },
- "nock": {
- "version": "11.9.1",
- "resolved": "https://registry.npmjs.org/nock/-/nock-11.9.1.tgz",
- "integrity": "sha512-U5wPctaY4/ar2JJ5Jg4wJxlbBfayxgKbiAeGh+a1kk6Pwnc2ZEuKviLyDSG6t0uXl56q7AALIxoM6FJrBSsVXA==",
- "dev": true,
- "requires": {
- "debug": "^4.1.0",
- "json-stringify-safe": "^5.0.1",
- "lodash": "^4.17.13",
- "mkdirp": "^0.5.0",
- "propagate": "^2.0.0"
- }
- },
- "node-environment-flags": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.5.tgz",
- "integrity": "sha512-VNYPRfGfmZLx0Ye20jWzHUjyTW/c+6Wq+iLhDzUI4XmhrDd9l/FozXV3F2xOaXjvp0co0+v1YSR3CMP6g+VvLQ==",
- "dev": true,
- "requires": {
- "object.getownpropertydescriptors": "^2.0.3",
- "semver": "^5.7.0"
- },
- "dependencies": {
- "semver": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
- "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
- "dev": true
- }
- }
- },
- "node-promise": {
- "version": "0.5.14",
- "resolved": "https://registry.npmjs.org/node-promise/-/node-promise-0.5.14.tgz",
- "integrity": "sha512-kbd+ABY2XRdByRVHPcBDemymfNL8+msGyKNxG/ziZnh9RjneuuGQl3/CE5UkNWxCInkJS+ztc5B31/t2kIO4Yw==",
- "dev": true
- },
- "nop": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/nop/-/nop-1.0.0.tgz",
- "integrity": "sha512-XdkOuXGx0DTwlqb0DWTcDqelgU/F3YyZ+PTRaecpDVpkYskcnh3OeUYKfvjcRQ2D1diTIGxi/a3eHVjW5yPupQ==",
- "dev": true
- },
- "nopt": {
- "version": "3.0.6",
- "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
- "integrity": "sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==",
- "dev": true,
- "requires": {
- "abbrev": "1"
- }
- },
- "normalize-package-data": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
- "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
- "dev": true,
- "requires": {
- "hosted-git-info": "^2.1.4",
- "resolve": "^1.10.0",
- "semver": "2 || 3 || 4 || 5",
- "validate-npm-package-license": "^3.0.1"
- },
- "dependencies": {
- "semver": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
- "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
- "dev": true
- }
- }
- },
- "normalize-range": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
- "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==",
- "dev": true
- },
- "npm-run-all": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz",
- "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==",
- "dev": true,
- "requires": {
- "ansi-styles": "^3.2.1",
- "chalk": "^2.4.1",
- "cross-spawn": "^6.0.5",
- "memorystream": "^0.3.1",
- "minimatch": "^3.0.4",
- "pidtree": "^0.3.0",
- "read-pkg": "^3.0.0",
- "shell-quote": "^1.6.1",
- "string.prototype.padend": "^3.0.0"
- },
- "dependencies": {
- "ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
- "dev": true,
- "requires": {
- "color-convert": "^1.9.0"
- }
- },
- "chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
- "dev": true,
- "requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- }
- },
- "color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "dev": true,
- "requires": {
- "color-name": "1.1.3"
- }
- },
- "color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
- "dev": true
- },
- "cross-spawn": {
- "version": "6.0.5",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
- "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
- "dev": true,
- "requires": {
- "nice-try": "^1.0.4",
- "path-key": "^2.0.1",
- "semver": "^5.5.0",
- "shebang-command": "^1.2.0",
- "which": "^1.2.9"
- }
- },
- "escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "dev": true
- },
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
- "dev": true
- },
- "path-key": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
- "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
- "dev": true
- },
- "semver": {
- "version": "5.7.2",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
- "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
- "dev": true
- },
- "shebang-command": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
- "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
- "dev": true,
- "requires": {
- "shebang-regex": "^1.0.0"
- }
- },
- "shebang-regex": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
- "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
- "dev": true
- },
- "supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
- "dev": true,
- "requires": {
- "has-flag": "^3.0.0"
- }
- },
- "which": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
- "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
- "dev": true,
- "requires": {
- "isexe": "^2.0.0"
- }
- }
- }
- },
- "npm-run-path": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-1.0.0.tgz",
- "integrity": "sha512-PrGAi1SLlqNvKN5uGBjIgnrTb8fl0Jz0a3JJmeMcGnIBh7UE9Gc4zsAMlwDajOMg2b1OgP6UPvoLUboTmMZPFA==",
- "dev": true,
- "requires": {
- "path-key": "^1.0.0"
- },
- "dependencies": {
- "path-key": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-1.0.0.tgz",
- "integrity": "sha512-T3hWy7tyXlk3QvPFnT+o2tmXRzU4GkitkUWLp/WZ0S/FXd7XMx176tRurgTvHTNMJOQzTcesHNpBqetH86mQ9g==",
- "dev": true
- }
- }
- },
- "num2fraction": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz",
- "integrity": "sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg==",
- "dev": true
- },
- "number-is-nan": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
- "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==",
- "dev": true
- },
- "oauth-sign": {
- "version": "0.9.0",
- "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
- "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
- "dev": true
- },
- "object-assign": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
- "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
- "dev": true
- },
- "object-inspect": {
- "version": "1.12.3",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz",
- "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==",
- "dev": true
- },
- "object-keys": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
- "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
- "dev": true
- },
- "object.assign": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz",
- "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==",
- "dev": true,
- "requires": {
- "define-properties": "^1.1.2",
- "function-bind": "^1.1.1",
- "has-symbols": "^1.0.0",
- "object-keys": "^1.0.11"
- }
- },
- "object.defaults": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz",
- "integrity": "sha512-c/K0mw/F11k4dEUBMW8naXUuBuhxRCfG7W+yFy8EcijU/rSmazOUd1XAEEe6bC0OuXY4HUKjTJv7xbxIMqdxrA==",
- "dev": true,
- "requires": {
- "array-each": "^1.0.1",
- "array-slice": "^1.0.0",
- "for-own": "^1.0.0",
- "isobject": "^3.0.0"
- }
- },
- "object.getownpropertydescriptors": {
- "version": "2.1.6",
- "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.6.tgz",
- "integrity": "sha512-lq+61g26E/BgHv0ZTFgRvi7NMEPuAxLkFU7rukXjc/AlwH4Am5xXVnIXy3un1bg/JPbXHrixRkK1itUzzPiIjQ==",
- "dev": true,
- "requires": {
- "array.prototype.reduce": "^1.0.5",
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "es-abstract": "^1.21.2",
- "safe-array-concat": "^1.0.0"
- }
- },
- "object.map": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz",
- "integrity": "sha512-3+mAJu2PLfnSVGHwIWubpOFLscJANBKuB/6A4CxBstc4aqwQY0FWcsppuy4jU5GSB95yES5JHSI+33AWuS4k6w==",
- "dev": true,
- "requires": {
- "for-own": "^1.0.0",
- "make-iterator": "^1.0.0"
- }
- },
- "object.pick": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
- "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==",
- "dev": true,
- "requires": {
- "isobject": "^3.0.1"
- }
- },
- "on-finished": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
- "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==",
- "dev": true,
- "requires": {
- "ee-first": "1.1.1"
- }
- },
- "on-headers": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
- "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==",
- "dev": true
- },
- "once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
- "dev": true,
- "requires": {
- "wrappy": "1"
- }
- },
- "onetime": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
- "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
- "dev": true,
- "requires": {
- "mimic-fn": "^2.1.0"
- }
- },
- "opn": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/opn/-/opn-4.0.2.tgz",
- "integrity": "sha512-iPBWbPP4OEOzR1xfhpGLDh+ypKBOygunZhM9jBtA7FS5sKjEiMZw0EFb82hnDOmTZX90ZWLoZKUza4cVt8MexA==",
- "dev": true,
- "requires": {
- "object-assign": "^4.0.1",
- "pinkie-promise": "^2.0.0"
- }
- },
- "optionator": {
- "version": "0.9.3",
- "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz",
- "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==",
- "dev": true,
- "requires": {
- "@aashutoshrathi/word-wrap": "^1.2.3",
- "deep-is": "^0.1.3",
- "fast-levenshtein": "^2.0.6",
- "levn": "^0.4.1",
- "prelude-ls": "^1.2.1",
- "type-check": "^0.4.0"
- }
- },
- "os-homedir": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
- "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==",
- "dev": true
- },
- "os-tmpdir": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
- "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==",
- "dev": true
- },
- "osenv": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz",
- "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
- "dev": true,
- "requires": {
- "os-homedir": "^1.0.0",
- "os-tmpdir": "^1.0.0"
- }
- },
- "p-limit": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
- "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
- "dev": true,
- "requires": {
- "p-try": "^2.0.0"
- }
- },
- "p-locate": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
- "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
- "dev": true,
- "requires": {
- "p-limit": "^2.0.0"
- }
- },
- "p-try": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
- "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
- "dev": true
- },
- "parent-module": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
- "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
- "dev": true,
- "requires": {
- "callsites": "^3.0.0"
- }
- },
- "parse-filepath": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz",
- "integrity": "sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==",
- "dev": true,
- "requires": {
- "is-absolute": "^1.0.0",
- "map-cache": "^0.2.0",
- "path-root": "^0.1.1"
- }
- },
- "parse-json": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
- "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==",
- "dev": true,
- "requires": {
- "error-ex": "^1.3.1",
- "json-parse-better-errors": "^1.0.1"
- }
- },
- "parse-ms": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-1.0.1.tgz",
- "integrity": "sha512-LpH1Cf5EYuVjkBvCDBYvkUPh+iv2bk3FHflxHkpCYT0/FZ1d3N3uJaLiHr4yGuMcFUhv6eAivitTvWZI4B/chg==",
- "dev": true
- },
- "parse-node-version": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz",
- "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA=="
- },
- "parse-passwd": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz",
- "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==",
- "dev": true
- },
- "parseurl": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
- "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
- "dev": true
- },
- "path-exists": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
- "dev": true
- },
- "path-is-absolute": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
- "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
- "dev": true
- },
- "path-key": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
- "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
- "dev": true
- },
- "path-parse": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
- "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
- "dev": true
- },
- "path-root": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz",
- "integrity": "sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==",
- "dev": true,
- "requires": {
- "path-root-regex": "^0.1.0"
- }
- },
- "path-root-regex": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz",
- "integrity": "sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==",
- "dev": true
- },
- "path-type": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
- "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
- "dev": true
- },
- "pathval": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz",
- "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==",
- "dev": true
- },
- "performance-now": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz",
- "integrity": "sha512-YHk5ez1hmMR5LOkb9iJkLKqoBlL7WD5M8ljC75ZfzXriuBIVNuecaXuU7e+hOwyqf24Wxhh7Vxgt7Hnw9288Tg==",
- "dev": true
- },
- "phin": {
- "version": "2.9.3",
- "resolved": "https://registry.npmjs.org/phin/-/phin-2.9.3.tgz",
- "integrity": "sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==",
- "dev": true
- },
- "picomatch": {
- "version": "2.3.1",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
- "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
- "dev": true
- },
- "pidtree": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz",
- "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==",
- "dev": true
- },
- "pify": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
- "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
- "optional": true
- },
- "pinkie": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz",
- "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==",
- "dev": true
- },
- "pinkie-promise": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
- "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==",
- "dev": true,
- "requires": {
- "pinkie": "^2.0.0"
- }
- },
- "pkg-dir": {
- "version": "4.2.0",
- "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
- "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
- "dev": true,
- "requires": {
- "find-up": "^4.0.0"
- },
- "dependencies": {
- "find-up": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
- "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
- "dev": true,
- "requires": {
- "locate-path": "^5.0.0",
- "path-exists": "^4.0.0"
- }
- },
- "locate-path": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
- "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
- "dev": true,
- "requires": {
- "p-locate": "^4.1.0"
- }
- },
- "p-locate": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
- "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
- "dev": true,
- "requires": {
- "p-limit": "^2.2.0"
- }
- },
- "path-exists": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
- "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
- "dev": true
- }
- }
- },
- "platform": {
- "version": "1.3.6",
- "resolved": "https://registry.npmjs.org/platform/-/platform-1.3.6.tgz",
- "integrity": "sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==",
- "dev": true
- },
- "playwright": {
- "version": "1.49.0",
- "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.49.0.tgz",
- "integrity": "sha512-eKpmys0UFDnfNb3vfsf8Vx2LEOtflgRebl0Im2eQQnYMA4Aqd+Zw8bEOB+7ZKvN76901mRnqdsiOGKxzVTbi7A==",
- "dev": true,
- "requires": {
- "fsevents": "2.3.2",
- "playwright-core": "1.49.0"
- }
- },
- "playwright-core": {
- "version": "1.49.0",
- "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.49.0.tgz",
- "integrity": "sha512-R+3KKTQF3npy5GTiKH/T+kdhoJfJojjHESR1YEWhYuEKRVfVaxH3+4+GvXE5xyCngCxhxnykk0Vlah9v8fs3jA==",
- "dev": true
- },
- "plur": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/plur/-/plur-1.0.0.tgz",
- "integrity": "sha512-qSnKBSZeDY8ApxwhfVIwKwF36KVJqb1/9nzYYq3j3vdwocULCXT8f8fQGkiw1Nk9BGfxiDagEe/pwakA+bOBqw==",
- "dev": true
- },
- "portscanner": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-1.2.0.tgz",
- "integrity": "sha512-3MCx40XO6ChNJJHw1tTFukQK/M/8FacGZK/vGbnrKpozObrJzembYtfi7ZdA2hkF2Lojg77XhsKUPvF8eHKcDA==",
- "dev": true,
- "requires": {
- "async": "1.5.2"
- }
- },
- "postcss": {
- "version": "5.2.18",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz",
- "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==",
- "dev": true,
- "requires": {
- "chalk": "^1.1.3",
- "js-base64": "^2.1.9",
- "source-map": "^0.5.6",
- "supports-color": "^3.2.3"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
- "dev": true
- },
- "ansi-styles": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
- "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==",
- "dev": true
- },
- "chalk": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
- "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==",
- "dev": true,
- "requires": {
- "ansi-styles": "^2.2.1",
- "escape-string-regexp": "^1.0.2",
- "has-ansi": "^2.0.0",
- "strip-ansi": "^3.0.0",
- "supports-color": "^2.0.0"
- },
- "dependencies": {
- "supports-color": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
- "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==",
- "dev": true
- }
- }
- },
- "escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "dev": true
- },
- "has-flag": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
- "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==",
- "dev": true
- },
- "source-map": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
- "dev": true
- },
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
- "dev": true,
- "requires": {
- "ansi-regex": "^2.0.0"
- }
- },
- "supports-color": {
- "version": "3.2.3",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
- "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==",
- "dev": true,
- "requires": {
- "has-flag": "^1.0.0"
- }
- }
- }
- },
- "postcss-value-parser": {
- "version": "3.3.1",
- "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
- "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
- "dev": true
- },
- "prelude-ls": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
- "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
- "dev": true
- },
- "pretty-ms": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-2.1.0.tgz",
- "integrity": "sha512-H2enpsxzDhuzRl3zeSQpQMirn8dB0Z/gxW96j06tMfTviUWvX14gjKb7qd1gtkUyYhDPuoNe00K5PqNvy2oQNg==",
- "dev": true,
- "requires": {
- "is-finite": "^1.0.1",
- "parse-ms": "^1.0.0",
- "plur": "^1.0.0"
- }
- },
- "progress": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
- "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
- "dev": true
- },
- "promise": {
- "version": "7.3.1",
- "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
- "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==",
- "dev": true,
- "requires": {
- "asap": "~2.0.3"
- }
- },
- "propagate": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/propagate/-/propagate-2.0.1.tgz",
- "integrity": "sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==",
- "dev": true
- },
- "prr": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
- "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==",
- "optional": true
- },
- "psl": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz",
- "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==",
- "dev": true
- },
- "punycode": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",
- "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==",
- "dev": true
- },
- "q": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz",
- "integrity": "sha512-/CdEdaw49VZVmyIDGUQKDDT53c7qBkO6g5CefWz91Ae+l4+cRtcDYwMTXh6me4O8TMldeGHG3N2Bl84V78Ywbg==",
- "dev": true
- },
- "qs": {
- "version": "6.5.3",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz",
- "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==",
- "dev": true
- },
- "queue-microtask": {
- "version": "1.2.3",
- "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
- "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",
- "dev": true
- },
- "randombytes": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
- "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
- "dev": true,
- "requires": {
- "safe-buffer": "^5.1.0"
- }
- },
- "range-parser": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
- "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
- "dev": true
- },
- "read-glob": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/read-glob/-/read-glob-3.0.0.tgz",
- "integrity": "sha512-ywcpIVKwlKbj8vRLq5WbFju9nxDQB7VOL68260bvZPUsekwh43W6ngQ5e8znqQmLHwzEklhFi6YiAzUvlZclLw==",
- "dev": true,
- "requires": {
- "assert-fs-readfile-option": "^1.0.0",
- "glob-observable": "^0.7.0",
- "graceful-fs": "^4.1.11",
- "inspect-with-kind": "^1.0.4",
- "zen-observable": "^0.8.6"
- }
- },
- "read-pkg": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
- "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==",
- "dev": true,
- "requires": {
- "load-json-file": "^4.0.0",
- "normalize-package-data": "^2.3.2",
- "path-type": "^3.0.0"
- },
- "dependencies": {
- "path-type": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
- "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
- "dev": true,
- "requires": {
- "pify": "^3.0.0"
- }
- },
- "pify": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
- "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
- "dev": true
- }
- }
- },
- "rechoir": {
- "version": "0.7.1",
- "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz",
- "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==",
- "dev": true,
- "requires": {
- "resolve": "^1.9.0"
- }
- },
- "regexp.prototype.flags": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz",
- "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.2.0",
- "functions-have-names": "^1.2.3"
- }
- },
- "regexpp": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz",
- "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==",
- "dev": true
- },
- "request": {
- "version": "2.88.2",
- "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz",
- "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==",
- "dev": true,
- "requires": {
- "aws-sign2": "~0.7.0",
- "aws4": "^1.8.0",
- "caseless": "~0.12.0",
- "combined-stream": "~1.0.6",
- "extend": "~3.0.2",
- "forever-agent": "~0.6.1",
- "form-data": "~2.3.2",
- "har-validator": "~5.1.3",
- "http-signature": "~1.2.0",
- "is-typedarray": "~1.0.0",
- "isstream": "~0.1.2",
- "json-stringify-safe": "~5.0.1",
- "mime-types": "~2.1.19",
- "oauth-sign": "~0.9.0",
- "performance-now": "^2.1.0",
- "qs": "~6.5.2",
- "safe-buffer": "^5.1.2",
- "tough-cookie": "~2.5.0",
- "tunnel-agent": "^0.6.0",
- "uuid": "^3.3.2"
- },
- "dependencies": {
- "performance-now": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
- "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==",
- "dev": true
- }
- }
- },
- "requestretry": {
- "version": "1.9.1",
- "resolved": "https://registry.npmjs.org/requestretry/-/requestretry-1.9.1.tgz",
- "integrity": "sha512-DWXDuj4syXribRStpt4qMOSBhDBUarreeoHol9sOdBfDG1BBDwBFfhgxCyDZkdQ+1W9mZm94vwEg8eD3p46tOg==",
- "dev": true,
- "requires": {
- "extend": "^3.0.0",
- "fg-lodash": "0.0.2",
- "request": "^2.74.x",
- "when": "~3.7.5"
- }
- },
- "require-directory": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
- "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
- "dev": true
- },
- "require-from-string": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
- "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
- "dev": true
- },
- "require-main-filename": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
- "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
- "dev": true
- },
- "resolve": {
- "version": "1.22.4",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz",
- "integrity": "sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==",
- "dev": true,
- "requires": {
- "is-core-module": "^2.13.0",
- "path-parse": "^1.0.7",
- "supports-preserve-symlinks-flag": "^1.0.0"
- }
- },
- "resolve-dir": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz",
- "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==",
- "dev": true,
- "requires": {
- "expand-tilde": "^2.0.0",
- "global-modules": "^1.0.0"
- }
- },
- "resolve-from": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
- "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
- "dev": true
- },
- "restore-cursor": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
- "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
- "dev": true,
- "requires": {
- "onetime": "^5.1.0",
- "signal-exit": "^3.0.2"
- }
- },
- "reusify": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
- "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",
- "dev": true
- },
- "rimraf": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
- "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
- "dev": true,
- "requires": {
- "glob": "^7.1.3"
- }
- },
- "rollup": {
- "version": "2.79.1",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz",
- "integrity": "sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==",
- "dev": true,
- "requires": {
- "fsevents": "~2.3.2"
- }
- },
- "rollup-plugin-terser": {
- "version": "5.3.1",
- "resolved": "https://registry.npmjs.org/rollup-plugin-terser/-/rollup-plugin-terser-5.3.1.tgz",
- "integrity": "sha512-1pkwkervMJQGFYvM9nscrUoncPwiKR/K+bHdjv6PFgRo3cgPHoRT83y2Aa3GvINj4539S15t/tpFPb775TDs6w==",
- "dev": true,
- "requires": {
- "@babel/code-frame": "^7.5.5",
- "jest-worker": "^24.9.0",
- "rollup-pluginutils": "^2.8.2",
- "serialize-javascript": "^4.0.0",
- "terser": "^4.6.2"
- }
- },
- "rollup-plugin-typescript2": {
- "version": "0.29.0",
- "resolved": "https://registry.npmjs.org/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.29.0.tgz",
- "integrity": "sha512-YytahBSZCIjn/elFugEGQR5qTsVhxhUwGZIsA9TmrSsC88qroGo65O5HZP/TTArH2dm0vUmYWhKchhwi2wL9bw==",
- "dev": true,
- "requires": {
- "@rollup/pluginutils": "^3.1.0",
- "find-cache-dir": "^3.3.1",
- "fs-extra": "8.1.0",
- "resolve": "1.17.0",
- "tslib": "2.0.1"
- },
- "dependencies": {
- "resolve": {
- "version": "1.17.0",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz",
- "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==",
- "dev": true,
- "requires": {
- "path-parse": "^1.0.6"
- }
- },
- "tslib": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.1.tgz",
- "integrity": "sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ==",
- "dev": true
- }
- }
- },
- "rollup-pluginutils": {
- "version": "2.8.2",
- "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz",
- "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==",
- "dev": true,
- "requires": {
- "estree-walker": "^0.6.1"
- },
- "dependencies": {
- "estree-walker": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz",
- "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==",
- "dev": true
- }
- }
- },
- "run-parallel": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",
- "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",
- "dev": true,
- "requires": {
- "queue-microtask": "^1.2.2"
- }
- },
- "safe-array-concat": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.0.tgz",
- "integrity": "sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "get-intrinsic": "^1.2.0",
- "has-symbols": "^1.0.3",
- "isarray": "^2.0.5"
- }
- },
- "safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true
- },
- "safe-regex-test": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz",
- "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "get-intrinsic": "^1.1.3",
- "is-regex": "^1.1.4"
- }
- },
- "safer-buffer": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
- "devOptional": true
- },
- "sauce-tunnel": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/sauce-tunnel/-/sauce-tunnel-2.5.0.tgz",
- "integrity": "sha512-NsE6r9J+nXT9FBcAxA+nZ1JvmoJJqQPTp33J4vTJQFZ4jtFfPoUMH10AXyIhjEFVemK7XP5SF4Uy+q3dKWWQig==",
- "dev": true,
- "requires": {
- "chalk": "^1.1.3",
- "request": "^2.72.0",
- "split": "^1.0.0"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
- "dev": true
- },
- "ansi-styles": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
- "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==",
- "dev": true
- },
- "chalk": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
- "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==",
- "dev": true,
- "requires": {
- "ansi-styles": "^2.2.1",
- "escape-string-regexp": "^1.0.2",
- "has-ansi": "^2.0.0",
- "strip-ansi": "^3.0.0",
- "supports-color": "^2.0.0"
- }
- },
- "escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "dev": true
- },
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
- "dev": true,
- "requires": {
- "ansi-regex": "^2.0.0"
- }
- },
- "supports-color": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
- "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==",
- "dev": true
- }
- }
- },
- "saucelabs": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/saucelabs/-/saucelabs-1.5.0.tgz",
- "integrity": "sha512-jlX3FGdWvYf4Q3LFfFWS1QvPg3IGCGWxIc8QBFdPTbpTJnt/v17FHXYVAn7C8sHf1yUXo2c7yIM0isDryfYtHQ==",
- "dev": true,
- "requires": {
- "https-proxy-agent": "^2.2.1"
- },
- "dependencies": {
- "agent-base": {
- "version": "4.3.0",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz",
- "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==",
- "dev": true,
- "requires": {
- "es6-promisify": "^5.0.0"
- }
- },
- "debug": {
- "version": "3.2.7",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
- "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
- "dev": true,
- "requires": {
- "ms": "^2.1.1"
- }
- },
- "https-proxy-agent": {
- "version": "2.2.4",
- "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz",
- "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==",
- "dev": true,
- "requires": {
- "agent-base": "^4.3.0",
- "debug": "^3.1.0"
- }
- }
- }
- },
- "sax": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
- "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
- "optional": true
- },
- "semver": {
- "version": "6.3.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
- "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
- "dev": true
- },
- "send": {
- "version": "0.18.0",
- "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz",
- "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==",
- "dev": true,
- "requires": {
- "debug": "2.6.9",
- "depd": "2.0.0",
- "destroy": "1.2.0",
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "etag": "~1.8.1",
- "fresh": "0.5.2",
- "http-errors": "2.0.0",
- "mime": "1.6.0",
- "ms": "2.1.3",
- "on-finished": "2.4.1",
- "range-parser": "~1.2.1",
- "statuses": "2.0.1"
- },
- "dependencies": {
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
- "requires": {
- "ms": "2.0.0"
- },
- "dependencies": {
- "ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
- "dev": true
- }
- }
- },
- "http-errors": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz",
- "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==",
- "dev": true,
- "requires": {
- "depd": "2.0.0",
- "inherits": "2.0.4",
- "setprototypeof": "1.2.0",
- "statuses": "2.0.1",
- "toidentifier": "1.0.1"
- }
- },
- "ms": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
- "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
- "dev": true
- },
- "on-finished": {
- "version": "2.4.1",
- "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz",
- "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==",
- "dev": true,
- "requires": {
- "ee-first": "1.1.1"
- }
- },
- "setprototypeof": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz",
- "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==",
- "dev": true
- },
- "statuses": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz",
- "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==",
- "dev": true
- }
- }
- },
- "serialize-javascript": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz",
- "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==",
- "dev": true,
- "requires": {
- "randombytes": "^2.1.0"
- }
- },
- "serve-index": {
- "version": "1.9.1",
- "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz",
- "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==",
- "dev": true,
- "requires": {
- "accepts": "~1.3.4",
- "batch": "0.6.1",
- "debug": "2.6.9",
- "escape-html": "~1.0.3",
- "http-errors": "~1.6.2",
- "mime-types": "~2.1.17",
- "parseurl": "~1.3.2"
- },
- "dependencies": {
- "debug": {
- "version": "2.6.9",
- "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
- "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
- "dev": true,
- "requires": {
- "ms": "2.0.0"
- }
- },
- "ms": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
- "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
- "dev": true
- }
- }
- },
- "serve-static": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz",
- "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==",
- "dev": true,
- "requires": {
- "encodeurl": "~1.0.2",
- "escape-html": "~1.0.3",
- "parseurl": "~1.3.3",
- "send": "0.18.0"
- }
- },
- "set-blocking": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
- "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==",
- "dev": true
- },
- "setprototypeof": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
- "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==",
- "dev": true
- },
- "shebang-command": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
- "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
- "dev": true,
- "requires": {
- "shebang-regex": "^3.0.0"
- }
- },
- "shebang-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
- "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
- "dev": true
- },
- "shell-quote": {
- "version": "1.8.1",
- "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz",
- "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==",
- "dev": true
- },
- "shelljs": {
- "version": "0.8.5",
- "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz",
- "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==",
- "dev": true,
- "requires": {
- "glob": "^7.0.0",
- "interpret": "^1.0.0",
- "rechoir": "^0.6.2"
- },
- "dependencies": {
- "rechoir": {
- "version": "0.6.2",
- "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
- "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==",
- "dev": true,
- "requires": {
- "resolve": "^1.1.6"
- }
- }
- }
- },
- "shx": {
- "version": "0.3.4",
- "resolved": "https://registry.npmjs.org/shx/-/shx-0.3.4.tgz",
- "integrity": "sha512-N6A9MLVqjxZYcVn8hLmtneQWIJtp8IKzMP4eMnx+nqkvXoqinUPCbUFLp2UcWTEIUONhlk0ewxr/jaVGlc+J+g==",
- "dev": true,
- "requires": {
- "minimist": "^1.2.3",
- "shelljs": "^0.8.5"
- }
- },
- "side-channel": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz",
- "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.0",
- "get-intrinsic": "^1.0.2",
- "object-inspect": "^1.9.0"
- }
- },
- "signal-exit": {
- "version": "3.0.7",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
- "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
- "dev": true
- },
- "slash": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
- "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
- "dev": true
- },
- "slice-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz",
- "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.0.0",
- "astral-regex": "^2.0.0",
- "is-fullwidth-code-point": "^3.0.0"
- }
- },
- "source-map": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
- "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "devOptional": true
- },
- "source-map-support": {
- "version": "0.5.21",
- "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
- "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
- "dev": true,
- "requires": {
- "buffer-from": "^1.0.0",
- "source-map": "^0.6.0"
- }
- },
- "sourcemap-codec": {
- "version": "1.4.8",
- "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz",
- "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==",
- "dev": true
- },
- "spdx-correct": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz",
- "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==",
- "dev": true,
- "requires": {
- "spdx-expression-parse": "^3.0.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "spdx-exceptions": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
- "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==",
- "dev": true
- },
- "spdx-expression-parse": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
- "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
- "dev": true,
- "requires": {
- "spdx-exceptions": "^2.1.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "spdx-license-ids": {
- "version": "3.0.13",
- "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz",
- "integrity": "sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==",
- "dev": true
- },
- "split": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz",
- "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==",
- "dev": true,
- "requires": {
- "through": "2"
- }
- },
- "sprintf-js": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
- "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
- "dev": true
- },
- "sshpk": {
- "version": "1.17.0",
- "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz",
- "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==",
- "dev": true,
- "requires": {
- "asn1": "~0.2.3",
- "assert-plus": "^1.0.0",
- "bcrypt-pbkdf": "^1.0.0",
- "dashdash": "^1.12.0",
- "ecc-jsbn": "~0.1.1",
- "getpass": "^0.1.1",
- "jsbn": "~0.1.0",
- "safer-buffer": "^2.0.2",
- "tweetnacl": "~0.14.0"
- }
- },
- "statuses": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
- "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==",
- "dev": true
- },
- "string-width": {
- "version": "4.2.3",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
- "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
- "dev": true,
- "requires": {
- "emoji-regex": "^8.0.0",
- "is-fullwidth-code-point": "^3.0.0",
- "strip-ansi": "^6.0.1"
- }
- },
- "string.prototype.padend": {
- "version": "3.1.4",
- "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.4.tgz",
- "integrity": "sha512-67otBXoksdjsnXXRUq+KMVTdlVRZ2af422Y0aTyTjVaoQkGr3mxl2Bc5emi7dOQ3OGVVQQskmLEWwFXwommpNw==",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
- "es-abstract": "^1.20.4"
- }
- },
- "string.prototype.trim": {
- "version": "1.2.7",
- "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.7.tgz",
- "integrity": "sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
- "es-abstract": "^1.20.4"
- }
- },
- "string.prototype.trimend": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz",
- "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
- "es-abstract": "^1.20.4"
- }
- },
- "string.prototype.trimstart": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz",
- "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "define-properties": "^1.1.4",
- "es-abstract": "^1.20.4"
- }
- },
- "strip-ansi": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
- "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
- "dev": true,
- "requires": {
- "ansi-regex": "^5.0.1"
- }
- },
- "strip-bom": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
- "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
- "dev": true
- },
- "strip-json-comments": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
- "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
- "dev": true
- },
- "supports-color": {
- "version": "7.2.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
- "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
- "dev": true,
- "requires": {
- "has-flag": "^4.0.0"
- }
- },
- "supports-preserve-symlinks-flag": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
- "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
- "dev": true
- },
- "table": {
- "version": "6.8.1",
- "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz",
- "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==",
- "dev": true,
- "requires": {
- "ajv": "^8.0.1",
- "lodash.truncate": "^4.4.2",
- "slice-ansi": "^4.0.0",
- "string-width": "^4.2.3",
- "strip-ansi": "^6.0.1"
- },
- "dependencies": {
- "ajv": {
- "version": "8.12.0",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
- "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
- "dev": true,
- "requires": {
- "fast-deep-equal": "^3.1.1",
- "json-schema-traverse": "^1.0.0",
- "require-from-string": "^2.0.2",
- "uri-js": "^4.2.2"
- }
- },
- "json-schema-traverse": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
- "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==",
- "dev": true
- }
- }
- },
- "terser": {
- "version": "4.8.1",
- "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz",
- "integrity": "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==",
- "dev": true,
- "requires": {
- "commander": "^2.20.0",
- "source-map": "~0.6.1",
- "source-map-support": "~0.5.12"
- },
- "dependencies": {
- "commander": {
- "version": "2.20.3",
- "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
- "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
- "dev": true
- }
- }
- },
- "text-table": {
- "version": "0.2.0",
- "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
- "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==",
- "dev": true
- },
- "through": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
- "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==",
- "dev": true
- },
- "time-grunt": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/time-grunt/-/time-grunt-1.4.0.tgz",
- "integrity": "sha512-u8n+ZOcdNDkrqlyN+x1ayHN0X+hMgg3SS191EE5xO03nRVnVpNp3UJSmUBCQCAbe959LqWttMaELNclfmWM+fQ==",
- "dev": true,
- "requires": {
- "chalk": "^1.0.0",
- "date-time": "^1.1.0",
- "figures": "^1.0.0",
- "hooker": "^0.2.3",
- "number-is-nan": "^1.0.0",
- "pretty-ms": "^2.1.0",
- "text-table": "^0.2.0"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
- "dev": true
- },
- "ansi-styles": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
- "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==",
- "dev": true
- },
- "chalk": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
- "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==",
- "dev": true,
- "requires": {
- "ansi-styles": "^2.2.1",
- "escape-string-regexp": "^1.0.2",
- "has-ansi": "^2.0.0",
- "strip-ansi": "^3.0.0",
- "supports-color": "^2.0.0"
- }
- },
- "escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
- "dev": true
- },
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
- "dev": true,
- "requires": {
- "ansi-regex": "^2.0.0"
- }
- },
- "supports-color": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
- "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==",
- "dev": true
- }
- }
- },
- "time-zone": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/time-zone/-/time-zone-0.1.0.tgz",
- "integrity": "sha512-S5CjtVIkeBTnlsaZP3gjsTb78ClBe74sEcgEoBwAVUKnTRDAGqUtLLIZHMsIyqOWjt9DGQpLMMoD8ZKIfP2ddQ==",
- "dev": true
- },
- "to-regex-range": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
- "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
- "dev": true,
- "requires": {
- "is-number": "^7.0.0"
- }
- },
- "toidentifier": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz",
- "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==",
- "dev": true
- },
- "tough-cookie": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
- "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
- "dev": true,
- "requires": {
- "psl": "^1.1.28",
- "punycode": "^2.1.1"
- }
- },
- "ts-node": {
- "version": "10.9.1",
- "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz",
- "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==",
- "dev": true,
- "requires": {
- "@cspotcode/source-map-support": "^0.8.0",
- "@tsconfig/node10": "^1.0.7",
- "@tsconfig/node12": "^1.0.7",
- "@tsconfig/node14": "^1.0.0",
- "@tsconfig/node16": "^1.0.2",
- "acorn": "^8.4.1",
- "acorn-walk": "^8.1.1",
- "arg": "^4.1.0",
- "create-require": "^1.1.0",
- "diff": "^4.0.1",
- "make-error": "^1.1.1",
- "v8-compile-cache-lib": "^3.0.1",
- "yn": "3.1.1"
- },
- "dependencies": {
- "acorn": {
- "version": "8.10.0",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz",
- "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==",
- "dev": true
- },
- "diff": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
- "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
- "dev": true
- }
- }
- },
- "tslib": {
- "version": "2.6.2",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
- "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
- },
- "tsutils": {
- "version": "3.21.0",
- "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz",
- "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==",
- "dev": true,
- "requires": {
- "tslib": "^1.8.1"
- },
- "dependencies": {
- "tslib": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
- "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==",
- "dev": true
- }
- }
- },
- "tunnel-agent": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
- "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==",
- "dev": true,
- "requires": {
- "safe-buffer": "^5.0.1"
- }
- },
- "tweetnacl": {
- "version": "0.14.5",
- "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
- "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==",
- "dev": true
- },
- "type-check": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
- "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
- "dev": true,
- "requires": {
- "prelude-ls": "^1.2.1"
- }
- },
- "type-detect": {
- "version": "4.0.8",
- "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
- "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
- "dev": true
- },
- "type-fest": {
- "version": "0.20.2",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz",
- "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==",
- "dev": true
- },
- "typed-array-buffer": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz",
- "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "get-intrinsic": "^1.2.1",
- "is-typed-array": "^1.1.10"
- }
- },
- "typed-array-byte-length": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz",
- "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "for-each": "^0.3.3",
- "has-proto": "^1.0.1",
- "is-typed-array": "^1.1.10"
- }
- },
- "typed-array-byte-offset": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz",
- "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==",
- "dev": true,
- "requires": {
- "available-typed-arrays": "^1.0.5",
- "call-bind": "^1.0.2",
- "for-each": "^0.3.3",
- "has-proto": "^1.0.1",
- "is-typed-array": "^1.1.10"
- }
- },
- "typed-array-length": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz",
- "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "for-each": "^0.3.3",
- "is-typed-array": "^1.1.9"
- }
- },
- "typescript": {
- "version": "4.9.5",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz",
- "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==",
- "dev": true
- },
- "uikit": {
- "version": "2.27.4",
- "resolved": "https://registry.npmjs.org/uikit/-/uikit-2.27.4.tgz",
- "integrity": "sha512-dylNikIJ8sB6Sd1AP6YETb+R5bIkjTnGeuu/yLhO9elQ4oLu8CIA+u5zCC7a9m7axbDUALy12qr32nvgRyO5HA==",
- "dev": true,
- "requires": {
- "node-promise": "^0.5.10"
- }
- },
- "unbox-primitive": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
- "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==",
- "dev": true,
- "requires": {
- "call-bind": "^1.0.2",
- "has-bigints": "^1.0.2",
- "has-symbols": "^1.0.3",
- "which-boxed-primitive": "^1.0.2"
- }
- },
- "unc-path-regex": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz",
- "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==",
- "dev": true
- },
- "underscore.string": {
- "version": "3.3.6",
- "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.6.tgz",
- "integrity": "sha512-VoC83HWXmCrF6rgkyxS9GHv8W9Q5nhMKho+OadDJGzL2oDYbYEppBaCMH6pFlwLeqj2QS+hhkw2kpXkSdD1JxQ==",
- "dev": true,
- "requires": {
- "sprintf-js": "^1.1.1",
- "util-deprecate": "^1.0.2"
- },
- "dependencies": {
- "sprintf-js": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz",
- "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==",
- "dev": true
- }
- }
- },
- "universalify": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
- "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
- "dev": true
- },
- "unpipe": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
- "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==",
- "dev": true
- },
- "uri-js": {
- "version": "4.4.1",
- "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
- "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
- "dev": true,
- "requires": {
- "punycode": "^2.1.0"
- }
- },
- "util-deprecate": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
- "dev": true
- },
- "utils-merge": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz",
- "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==",
- "dev": true
- },
- "uuid": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
- "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
- "dev": true
- },
- "v8-compile-cache": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz",
- "integrity": "sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==",
- "dev": true
- },
- "v8-compile-cache-lib": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz",
- "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==",
- "dev": true
- },
- "v8flags": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.2.0.tgz",
- "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==",
- "dev": true,
- "requires": {
- "homedir-polyfill": "^1.0.1"
- }
- },
- "validate-glob-opts": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/validate-glob-opts/-/validate-glob-opts-1.0.2.tgz",
- "integrity": "sha512-3PKjRQq/R514lUcG9OEiW0u9f7D4fP09A07kmk1JbNn2tfeQdAHhlT+A4dqERXKu2br2rrxSM3FzagaEeq9w+A==",
- "dev": true,
- "requires": {
- "array-to-sentence": "^1.1.0",
- "indexed-filter": "^1.0.0",
- "inspect-with-kind": "^1.0.4",
- "is-plain-obj": "^1.1.0"
- }
- },
- "validate-npm-package-license": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
- "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
- "dev": true,
- "requires": {
- "spdx-correct": "^3.0.0",
- "spdx-expression-parse": "^3.0.0"
- }
- },
- "verror": {
- "version": "1.10.0",
- "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
- "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==",
- "dev": true,
- "requires": {
- "assert-plus": "^1.0.0",
- "core-util-is": "1.0.2",
- "extsprintf": "^1.2.0"
- }
- },
- "when": {
- "version": "3.7.8",
- "resolved": "https://registry.npmjs.org/when/-/when-3.7.8.tgz",
- "integrity": "sha512-5cZ7mecD3eYcMiCH4wtRPA5iFJZ50BJYDfckI5RRpQiktMiYTcn0ccLTZOvcbBume+1304fQztxeNzNS9Gvrnw==",
- "dev": true
- },
- "which": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
- "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
- "dev": true,
- "requires": {
- "isexe": "^2.0.0"
- }
- },
- "which-boxed-primitive": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz",
- "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==",
- "dev": true,
- "requires": {
- "is-bigint": "^1.0.1",
- "is-boolean-object": "^1.1.0",
- "is-number-object": "^1.0.4",
- "is-string": "^1.0.5",
- "is-symbol": "^1.0.3"
- }
- },
- "which-module": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz",
- "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==",
- "dev": true
- },
- "which-typed-array": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz",
- "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==",
- "dev": true,
- "requires": {
- "available-typed-arrays": "^1.0.5",
- "call-bind": "^1.0.2",
- "for-each": "^0.3.3",
- "gopd": "^1.0.1",
- "has-tostringtag": "^1.0.0"
- }
- },
- "wide-align": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz",
- "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==",
- "dev": true,
- "requires": {
- "string-width": "^1.0.2 || 2"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz",
- "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==",
- "dev": true
- },
- "is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
- "dev": true
- },
- "string-width": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
- "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
- "dev": true,
- "requires": {
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^4.0.0"
- }
- },
- "strip-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
- "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==",
- "dev": true,
- "requires": {
- "ansi-regex": "^3.0.0"
- }
- }
- }
- },
- "wrap-ansi": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
- "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
- "dev": true,
- "requires": {
- "ansi-styles": "^4.0.0",
- "string-width": "^4.1.0",
- "strip-ansi": "^6.0.0"
- }
- },
- "wrappy": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
- "dev": true
- },
- "y18n": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
- "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==",
- "dev": true
- },
- "yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
- },
- "yargs": {
- "version": "13.3.2",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz",
- "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==",
- "dev": true,
- "requires": {
- "cliui": "^5.0.0",
- "find-up": "^3.0.0",
- "get-caller-file": "^2.0.1",
- "require-directory": "^2.1.1",
- "require-main-filename": "^2.0.0",
- "set-blocking": "^2.0.0",
- "string-width": "^3.0.0",
- "which-module": "^2.0.0",
- "y18n": "^4.0.0",
- "yargs-parser": "^13.1.2"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
- "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
- "dev": true
- },
- "emoji-regex": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
- "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
- "dev": true
- },
- "is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
- "dev": true
- },
- "string-width": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
- "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
- "dev": true,
- "requires": {
- "emoji-regex": "^7.0.1",
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^5.1.0"
- }
- },
- "strip-ansi": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
- "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
- "dev": true,
- "requires": {
- "ansi-regex": "^4.1.0"
- }
- }
- }
- },
- "yargs-parser": {
- "version": "13.1.2",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz",
- "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==",
- "dev": true,
- "requires": {
- "camelcase": "^5.0.0",
- "decamelize": "^1.2.0"
- }
- },
- "yargs-unparser": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz",
- "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==",
- "dev": true,
- "requires": {
- "flat": "^4.1.0",
- "lodash": "^4.17.15",
- "yargs": "^13.3.0"
- }
- },
- "yn": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",
- "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==",
- "dev": true
- },
- "zen-observable": {
- "version": "0.8.15",
- "resolved": "https://registry.npmjs.org/zen-observable/-/zen-observable-0.8.15.tgz",
- "integrity": "sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==",
- "dev": true
- }
- }
-}
diff --git a/packages/less/package.json b/packages/less/package.json
index 3be8606fd9..a0689d19f3 100644
--- a/packages/less/package.json
+++ b/packages/less/package.json
@@ -32,7 +32,7 @@
},
"browser": "./dist/less.js",
"engines": {
- "node": ">=6"
+ "node": ">=14"
},
"scripts": {
"test": "grunt test",
@@ -42,7 +42,6 @@
"build": "npm-run-all clean compile",
"clean": "shx rm -rf ./lib tsconfig.tsbuildinfo",
"compile": "tsc -p tsconfig.build.json",
- "copy:root": "shx cp -rf ./dist ../../",
"dev": "tsc -p tsconfig.build.json -w",
"prepublishOnly": "grunt dist"
},
@@ -56,8 +55,8 @@
"source-map": "~0.6.0"
},
"devDependencies": {
- "@less/test-data": "^4.2.2",
- "@less/test-import-module": "^4.0.0",
+ "@less/test-data": "workspace:*",
+ "@less/test-import-module": "workspace:*",
"@rollup/plugin-commonjs": "^17.0.0",
"@rollup/plugin-json": "^4.1.0",
"@rollup/plugin-node-resolve": "^11.0.0",
diff --git a/packages/less/src/less-node/lessc-helper.js b/packages/less/src/less-node/lessc-helper.js
index b37ee2ebc7..a81d487a9e 100644
--- a/packages/less/src/less-node/lessc-helper.js
+++ b/packages/less/src/less-node/lessc-helper.js
@@ -33,6 +33,7 @@ const lessc_helper = {
console.log(' --js Enables inline JavaScript in less files');
console.log(' -l, --lint Syntax check only (lint).');
console.log(' -s, --silent Suppresses output of error messages.');
+ console.log(' --quiet Suppresses output of warnings.');
console.log(' --strict-imports Forces evaluation of imports.');
console.log(' --insecure Allows imports from insecure https hosts.');
console.log(' -v, --version Prints version number and exit.');
diff --git a/packages/less/src/less/contexts.js b/packages/less/src/less/contexts.js
index 8629073d1a..57d9789b19 100644
--- a/packages/less/src/less/contexts.js
+++ b/packages/less/src/less/contexts.js
@@ -31,7 +31,8 @@ const parseCopyProperties = [
// context
'processImports', // option & context - whether to process imports. if false then imports will not be imported.
// Used by the import manager to stop multiple import visitors being created.
- 'pluginManager' // Used as the plugin manager for the session
+ 'pluginManager', // Used as the plugin manager for the session
+ 'quiet', // option - whether to log warnings
];
contexts.Parse = function(options) {
diff --git a/packages/less/src/less/less-error.js b/packages/less/src/less/less-error.js
index a1399114c4..cede6b5fb7 100644
--- a/packages/less/src/less/less-error.js
+++ b/packages/less/src/less/less-error.js
@@ -106,6 +106,9 @@ LessError.prototype.constructor = LessError;
*/
LessError.prototype.toString = function(options) {
options = options || {};
+ const isWarning = (this.type ?? '').toLowerCase().includes('warning');
+ const type = isWarning ? this.type : `${this.type}Error`;
+ const color = isWarning ? 'yellow' : 'red';
let message = '';
const extract = this.extract || [];
@@ -120,7 +123,7 @@ LessError.prototype.toString = function(options) {
}
if (this.line !== null) {
- if (typeof extract[0] === 'string') {
+ if (!isWarning && typeof extract[0] === 'string') {
error.push(stylize(`${this.line - 1} ${extract[0]}`, 'grey'));
}
@@ -134,15 +137,15 @@ LessError.prototype.toString = function(options) {
error.push(errorTxt);
}
- if (typeof extract[2] === 'string') {
+ if (!isWarning && typeof extract[2] === 'string') {
error.push(stylize(`${this.line + 1} ${extract[2]}`, 'grey'));
}
error = `${error.join('\n') + stylize('', 'reset')}\n`;
}
- message += stylize(`${this.type}Error: ${this.message}`, 'red');
+ message += stylize(`${type}: ${this.message}`, color);
if (this.filename) {
- message += stylize(' in ', 'red') + this.filename;
+ message += stylize(' in ', color) + this.filename;
}
if (this.line) {
message += stylize(` on line ${this.line}, column ${this.column + 1}:`, 'grey');
@@ -151,7 +154,7 @@ LessError.prototype.toString = function(options) {
message += `\n${error}`;
if (this.callLine) {
- message += `${stylize('from ', 'red') + (this.filename || '')}/n`;
+ message += `${stylize('from ', color) + (this.filename || '')}/n`;
message += `${stylize(this.callLine, 'grey')} ${this.callExtract}/n`;
}
diff --git a/packages/less/src/less/parser/parser.js b/packages/less/src/less/parser/parser.js
index 9b1803f335..c519c5324b 100644
--- a/packages/less/src/less/parser/parser.js
+++ b/packages/less/src/less/parser/parser.js
@@ -5,6 +5,7 @@ import getParserInput from './parser-input';
import * as utils from '../utils';
import functionRegistry from '../functions/function-registry';
import { ContainerSyntaxOptions, MediaSyntaxOptions } from '../tree/atrule-syntax';
+import logger from '../logger';
import Selector from '../tree/selector';
import Anonymous from '../tree/anonymous';
@@ -58,6 +59,28 @@ const Parser = function Parser(context, imports, fileInfo, currentIndex) {
);
}
+ /**
+ *
+ * @param {string} msg
+ * @param {number} index
+ * @param {string} type
+ */
+ function warn(msg, index, type) {
+ if (!context.quiet) {
+ logger.warn(
+ (new LessError(
+ {
+ index: index ?? parserInput.i,
+ filename: fileInfo.filename,
+ type: type ? `${type.toUpperCase()} WARNING` : 'WARNING',
+ message: msg
+ },
+ imports
+ )).toString()
+ );
+ }
+ }
+
function expect(arg, msg) {
// some older browsers return typeof 'function' for RegExp
const result = (arg instanceof Function) ? arg.call(parsers) : parserInput.$re(arg);
@@ -858,11 +881,22 @@ const Parser = function Parser(context, imports, fileInfo, currentIndex) {
do {
option = null;
elements = null;
- while (!(option = parserInput.$re(/^(all)(?=\s*(\)|,))/))) {
+ let first = true;
+ while (!(option = parserInput.$re(/^(!?all)(?=\s*(\)|,))/))) {
e = this.element();
+
if (!e) {
break;
}
+ /**
+ * @note - This will not catch selectors in pseudos like :is() and :where() because
+ * they don't currently parse their contents as selectors.
+ */
+ if (!first && e.combinator.value) {
+ warn('Targeting complex selectors can have unexpected behavior, and this behavior may change in the future.', index)
+ }
+
+ first = false;
if (elements) {
elements.push(e);
} else {
@@ -926,6 +960,8 @@ const Parser = function Parser(context, imports, fileInfo, currentIndex) {
let elements;
let args;
let hasParens;
+ let parensIndex;
+ let parensWS = false;
if (s !== '.' && s !== '#') { return; }
@@ -934,10 +970,15 @@ const Parser = function Parser(context, imports, fileInfo, currentIndex) {
elements = this.elements();
if (elements) {
+ parensIndex = parserInput.i;
if (parserInput.$char('(')) {
+ parensWS = parserInput.isWhitespace(-2);
args = this.args(true).args;
expectChar(')');
hasParens = true;
+ if (parensWS) {
+ warn('Whitespace between a mixin name and parentheses for a mixin call is deprecated', parensIndex, 'DEPRECATED');
+ }
}
if (getLookup !== false) {
@@ -965,6 +1006,9 @@ const Parser = function Parser(context, imports, fileInfo, currentIndex) {
return new tree.NamespaceValue(mixin, lookups);
}
else {
+ if (!hasParens) {
+ warn('Calling a mixin without parentheses is deprecated', parensIndex, 'DEPRECATED');
+ }
return mixin;
}
}
@@ -1284,18 +1328,18 @@ const Parser = function Parser(context, imports, fileInfo, currentIndex) {
return new tree.Quoted('', `alpha(opacity=${value})`);
},
- //
- // A Selector Element
- //
- // div
- // + h1
- // #socks
- // input[type="text"]
- //
- // Elements are the building blocks for Selectors,
- // they are made out of a `Combinator` (see combinator rule),
- // and an element name, such as a tag a class, or `*`.
- //
+ /**
+ * A Selector Element
+ *
+ * div
+ * + h1
+ * #socks
+ * input[type="text"]
+ *
+ * Elements are the building blocks for Selectors,
+ * they are made out of a `Combinator` (see combinator rule),
+ * and an element name, such as a tag a class, or `*`.
+ */
element: function () {
let e;
let c;
@@ -1304,6 +1348,7 @@ const Parser = function Parser(context, imports, fileInfo, currentIndex) {
c = this.combinator();
+ /** This selector parser is quite simplistic and will pass a number of invalid selectors. */
e = parserInput.$re(/^(?:\d+\.\d+|\d+)%/) ||
// eslint-disable-next-line no-control-regex
parserInput.$re(/^(?:[.#]?|:*)(?:[\w-]|[^\x00-\x9f]|\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+/) ||
@@ -1601,7 +1646,7 @@ const Parser = function Parser(context, imports, fileInfo, currentIndex) {
if (parserInput.$char(';')) {
value = new Anonymous('');
} else {
- value = this.permissiveValue(/[;}]/);
+ value = this.permissiveValue(/[;}]/, true);
}
}
// Try to store values as anonymous
@@ -1622,7 +1667,12 @@ const Parser = function Parser(context, imports, fileInfo, currentIndex) {
if (value) {
important = this.important();
} else if (isVariable) {
- // As a last resort, try permissiveValue
+ /**
+ * As a last resort, try permissiveValue
+ *
+ * @todo - This has created some knock-on problems of not
+ * flagging incorrect syntax or detecting user intent.
+ */
value = this.permissiveValue();
}
}
@@ -1653,6 +1703,8 @@ const Parser = function Parser(context, imports, fileInfo, currentIndex) {
* First, it will try to parse comments and entities to reach
* the end. This is mostly like the Expression parser except no
* math is allowed.
+ *
+ * @param {RexExp} untilTokens - Characters to stop parsing at
*/
permissiveValue: function (untilTokens) {
let i;
@@ -1718,6 +1770,7 @@ const Parser = function Parser(context, imports, fileInfo, currentIndex) {
parserInput.forget();
return new tree.Anonymous('', index);
}
+ /** @type {string} */
let item;
for (i = 0; i < value.length; i++) {
item = value[i];
@@ -1731,10 +1784,16 @@ const Parser = function Parser(context, imports, fileInfo, currentIndex) {
}
// Treat like quoted values, but replace vars like unquoted expressions
const quote = new tree.Quoted('\'', item, true, index, fileInfo);
- if (!item.startsWith('@{')) {
- quote.variableRegex = /@([\w-]+)/g;
+ const variableRegex = /@([\w-]+)/g;
+ const propRegex = /\$([\w-]+)/g;
+ if (variableRegex.test(item)) {
+ warn('@[ident] in unknown values will not be evaluated as variables in the future. Use @{[ident]}', index, 'DEPRECATED');
+ }
+ if (propRegex.test(item)) {
+ warn('$[ident] in unknown values will not be evaluated as property references in the future. Use ${[ident]}', index, 'DEPRECATED');
}
- quote.propRegex = /\$([\w-]+)/g;
+ quote.variableRegex = /@([\w-]+)|@{([\w-]+)}/g;
+ quote.propRegex = /\$([\w-]+)|\${([\w-]+)}/g;
result.push(quote);
}
}
@@ -2152,7 +2211,14 @@ const Parser = function Parser(context, imports, fileInfo, currentIndex) {
parserInput.save();
- op = parserInput.$char('/') || parserInput.$char('*') || parserInput.$str('./');
+ op = parserInput.$char('/') || parserInput.$char('*');
+ if (!op) {
+ let index = parserInput.i;
+ op = parserInput.$str('./');
+ if (op) {
+ warn('./ operator is deprecated', index, 'DEPRECATED');
+ }
+ }
if (!op) { parserInput.forget(); break; }
diff --git a/packages/less/src/less/tree/extend.js b/packages/less/src/less/tree/extend.js
index 5468a5526b..19ca6afe50 100644
--- a/packages/less/src/less/tree/extend.js
+++ b/packages/less/src/less/tree/extend.js
@@ -12,6 +12,7 @@ const Extend = function(selector, option, index, currentFileInfo, visibilityInfo
this.allowRoot = true;
switch (option) {
+ case '!all':
case 'all':
this.allowBefore = true;
this.allowAfter = true;
diff --git a/packages/less/src/less/tree/quoted.js b/packages/less/src/less/tree/quoted.js
index cb0d56b12f..811f6001ac 100644
--- a/packages/less/src/less/tree/quoted.js
+++ b/packages/less/src/less/tree/quoted.js
@@ -33,12 +33,12 @@ Quoted.prototype = Object.assign(new Node(), {
eval(context) {
const that = this;
let value = this.value;
- const variableReplacement = function (_, name) {
- const v = new Variable(`@${name}`, that.getIndex(), that.fileInfo()).eval(context, true);
+ const variableReplacement = function (_, name1, name2) {
+ const v = new Variable(`@${name1 ?? name2}`, that.getIndex(), that.fileInfo()).eval(context, true);
return (v instanceof Quoted) ? v.value : v.toCSS();
};
- const propertyReplacement = function (_, name) {
- const v = new Property(`$${name}`, that.getIndex(), that.fileInfo()).eval(context, true);
+ const propertyReplacement = function (_, name1, name2) {
+ const v = new Property(`$${name1 ?? name2}`, that.getIndex(), that.fileInfo()).eval(context, true);
return (v instanceof Quoted) ? v.value : v.toCSS();
};
function iterativeReplace(value, regexp, replacementFnc) {
diff --git a/packages/less/src/less/visitors/extend-visitor.js b/packages/less/src/less/visitors/extend-visitor.js
index 91bcb80812..b3dedc93f5 100644
--- a/packages/less/src/less/visitors/extend-visitor.js
+++ b/packages/less/src/less/visitors/extend-visitor.js
@@ -133,7 +133,12 @@ class ProcessExtendsVisitor {
if (!indices[`${extend.index} ${selector}`]) {
indices[`${extend.index} ${selector}`] = true;
- logger.warn(`extend '${selector}' has no matches`);
+ /**
+ * @todo Shouldn't this be an error? To alert the developer
+ * that they may have made an error in the selector they are
+ * targeting?
+ */
+ logger.warn(`WARNING: extend '${selector}' has no matches`);
}
});
}
diff --git a/packages/less/test/less-test.js b/packages/less/test/less-test.js
index c06f4a5bed..45ab985578 100644
--- a/packages/less/test/less-test.js
+++ b/packages/less/test/less-test.js
@@ -12,7 +12,7 @@ logger.addListener({
warn(msg) {
process.stdout.write(msg + '\n');
},
- erro(msg) {
+ error(msg) {
process.stdout.write(msg + '\n');
}
});
@@ -366,6 +366,8 @@ module.exports = function() {
var options = clone(originalOptions);
+ options.stylize = stylize;
+
var name = getBasename(file);
if (oneTestOnly && name !== oneTestOnly) {
diff --git a/packages/test-data/css/_main/permissive-parse.css b/packages/test-data/css/_main/permissive-parse.css
index d540215413..9d7ae1821e 100644
--- a/packages/test-data/css/_main/permissive-parse.css
+++ b/packages/test-data/css/_main/permissive-parse.css
@@ -31,6 +31,11 @@ foo[attr="blah"] {
this: works;
}
}
+@media (min-width: 640px) {
+ .with-curly {
+ this: works;
+ }
+}
.test-rule-comment {
--value: a /* { ; } */;
--comment-within: ( /* okay?; comment; */ );
diff --git a/packages/test-data/less/_main/extend.less b/packages/test-data/less/_main/extend.less
index 1db5d431d8..4251483e36 100644
--- a/packages/test-data/less/_main/extend.less
+++ b/packages/test-data/less/_main/extend.less
@@ -59,7 +59,7 @@ div.ext5,
}
}
-.fuu:extend(.ext8.ext9 all) {}
+.fuu:extend( .ext8.ext9 all) {}
.buu:extend(.ext8 .ext9 all) {}
.zap:extend(.ext8 + .ext9 all) {}
.zoo:extend(.ext8 > .ext9 all) {}
diff --git a/packages/test-data/less/_main/mixins.less b/packages/test-data/less/_main/mixins.less
index b887c860dc..df2ea66794 100644
--- a/packages/test-data/less/_main/mixins.less
+++ b/packages/test-data/less/_main/mixins.less
@@ -22,7 +22,7 @@
#container {
color: black;
.mixin();
- .mixout();
+ .mixout ();
#theme > .mixin();
}
diff --git a/packages/test-data/less/_main/permissive-parse.less b/packages/test-data/less/_main/permissive-parse.less
index a4c09bf315..03d5e81a54 100644
--- a/packages/test-data/less/_main/permissive-parse.less
+++ b/packages/test-data/less/_main/permissive-parse.less
@@ -43,6 +43,12 @@
this: works;
}
}
+@tablet: (min-width: @{size});
+@media @tablet {
+ .with-curly {
+ this: works;
+ }
+}
// @todo - fix comment absorption after property
.test-rule-comment {
--value: a/* { ; } */;
diff --git a/packages/test-data/package.json b/packages/test-data/package.json
index 8d3c7ca598..64fabd92db 100644
--- a/packages/test-data/package.json
+++ b/packages/test-data/package.json
@@ -5,10 +5,7 @@
},
"version": "4.2.2",
"description": "Less files and CSS results",
- "author": {
- "name": "Alexis Sellier",
- "email": "self@cloudhead.net"
- },
+ "author": "Alexis Sellier ",
"contributors": [
"The Core Less Team"
],
diff --git a/packages/test-import-module/package.json b/packages/test-import-module/package.json
index 1d002a5dc4..dc84e3c228 100644
--- a/packages/test-import-module/package.json
+++ b/packages/test-import-module/package.json
@@ -3,10 +3,7 @@
"private": true,
"version": "4.0.0",
"description": "Less files to be included in node_modules directory for testing import from node_modules",
- "author": {
- "name": "Alexis Sellier",
- "email": "self@cloudhead.net"
- },
+ "author": "Alexis Sellier ",
"contributors": [
"The Core Less Team"
],
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
new file mode 100644
index 0000000000..798ad4a0c6
--- /dev/null
+++ b/pnpm-lock.yaml
@@ -0,0 +1,9398 @@
+lockfileVersion: '6.0'
+
+settings:
+ autoInstallPeers: true
+ excludeLinksFromLockfile: false
+
+importers:
+
+ .:
+ devDependencies:
+ all-contributors-cli:
+ specifier: ~6.26.1
+ version: 6.26.1
+ github-changes:
+ specifier: ^1.1.2
+ version: 1.1.2
+ lerna:
+ specifier: ^3.22.1
+ version: 3.22.1(@octokit/core@6.1.4)
+ npm-run-all:
+ specifier: ^4.1.5
+ version: 4.1.5
+
+ packages/less:
+ dependencies:
+ copy-anything:
+ specifier: ^2.0.1
+ version: 2.0.6
+ parse-node-version:
+ specifier: ^1.0.1
+ version: 1.0.1
+ tslib:
+ specifier: ^2.3.0
+ version: 2.8.1
+ optionalDependencies:
+ errno:
+ specifier: ^0.1.1
+ version: 0.1.8
+ graceful-fs:
+ specifier: ^4.1.2
+ version: 4.2.11
+ image-size:
+ specifier: ~0.5.0
+ version: 0.5.5
+ make-dir:
+ specifier: ^2.1.0
+ version: 2.1.0
+ mime:
+ specifier: ^1.4.1
+ version: 1.6.0
+ needle:
+ specifier: ^3.1.0
+ version: 3.3.1
+ source-map:
+ specifier: ~0.6.0
+ version: 0.6.1
+ devDependencies:
+ '@less/test-data':
+ specifier: workspace:*
+ version: link:../test-data
+ '@less/test-import-module':
+ specifier: workspace:*
+ version: link:../test-import-module
+ '@rollup/plugin-commonjs':
+ specifier: ^17.0.0
+ version: 17.1.0(rollup@2.79.2)
+ '@rollup/plugin-json':
+ specifier: ^4.1.0
+ version: 4.1.0(rollup@2.79.2)
+ '@rollup/plugin-node-resolve':
+ specifier: ^11.0.0
+ version: 11.2.1(rollup@2.79.2)
+ '@typescript-eslint/eslint-plugin':
+ specifier: ^4.28.0
+ version: 4.33.0(@typescript-eslint/parser@4.33.0)(eslint@7.32.0)(typescript@4.9.5)
+ '@typescript-eslint/parser':
+ specifier: ^4.28.0
+ version: 4.33.0(eslint@7.32.0)(typescript@4.9.5)
+ benny:
+ specifier: ^3.6.12
+ version: 3.7.1
+ bootstrap-less-port:
+ specifier: 0.3.0
+ version: 0.3.0
+ chai:
+ specifier: ^4.2.0
+ version: 4.5.0
+ cross-env:
+ specifier: ^7.0.3
+ version: 7.0.3
+ diff:
+ specifier: ^3.2.0
+ version: 3.5.0
+ eslint:
+ specifier: ^7.29.0
+ version: 7.32.0
+ fs-extra:
+ specifier: ^8.1.0
+ version: 8.1.0
+ git-rev:
+ specifier: ^0.2.1
+ version: 0.2.1
+ globby:
+ specifier: ^10.0.1
+ version: 10.0.2
+ grunt:
+ specifier: ^1.0.4
+ version: 1.6.1
+ grunt-cli:
+ specifier: ^1.3.2
+ version: 1.5.0
+ grunt-contrib-clean:
+ specifier: ^1.0.0
+ version: 1.1.0(grunt@1.6.1)
+ grunt-contrib-connect:
+ specifier: ^1.0.2
+ version: 1.0.2(grunt@1.6.1)
+ grunt-eslint:
+ specifier: ^23.0.0
+ version: 23.0.0(grunt@1.6.1)
+ grunt-saucelabs:
+ specifier: ^9.0.1
+ version: 9.0.1(grunt@1.6.1)
+ grunt-shell:
+ specifier: ^1.3.0
+ version: 1.3.1(grunt@1.6.1)
+ html-template-tag:
+ specifier: ^3.2.0
+ version: 3.2.0
+ jit-grunt:
+ specifier: ^0.10.0
+ version: 0.10.0(grunt@1.6.1)
+ less-plugin-autoprefix:
+ specifier: ^1.5.1
+ version: 1.5.1
+ less-plugin-clean-css:
+ specifier: ^1.6.0
+ version: 1.6.0
+ minimist:
+ specifier: ^1.2.0
+ version: 1.2.8
+ mocha:
+ specifier: ^6.2.1
+ version: 6.2.3
+ mocha-teamcity-reporter:
+ specifier: ^3.0.0
+ version: 3.0.0(mocha@6.2.3)
+ nock:
+ specifier: ^11.8.2
+ version: 11.9.1
+ npm-run-all:
+ specifier: ^4.1.5
+ version: 4.1.5
+ performance-now:
+ specifier: ^0.2.0
+ version: 0.2.0
+ phin:
+ specifier: ^2.2.3
+ version: 2.9.3
+ playwright:
+ specifier: ^1.49.0
+ version: 1.50.1
+ promise:
+ specifier: ^7.1.1
+ version: 7.3.1
+ read-glob:
+ specifier: ^3.0.0
+ version: 3.0.0
+ resolve:
+ specifier: ^1.17.0
+ version: 1.22.10
+ rollup:
+ specifier: ^2.52.2
+ version: 2.79.2
+ rollup-plugin-terser:
+ specifier: ^5.1.1
+ version: 5.3.1(rollup@2.79.2)
+ rollup-plugin-typescript2:
+ specifier: ^0.29.0
+ version: 0.29.0(rollup@2.79.2)(typescript@4.9.5)
+ semver:
+ specifier: ^6.3.0
+ version: 6.3.1
+ shx:
+ specifier: ^0.3.2
+ version: 0.3.4
+ time-grunt:
+ specifier: ^1.3.0
+ version: 1.4.0
+ ts-node:
+ specifier: ^10.9.1
+ version: 10.9.2(@types/node@22.13.5)(typescript@4.9.5)
+ typescript:
+ specifier: ^4.3.4
+ version: 4.9.5
+ uikit:
+ specifier: 2.27.4
+ version: 2.27.4
+
+ packages/test-data: {}
+
+ packages/test-import-module: {}
+
+packages:
+
+ /@arrows/array@1.4.1:
+ resolution: {integrity: sha512-MGYS8xi3c4tTy1ivhrVntFvufoNzje0PchjEz6G/SsWRgUKxL4tKwS6iPdO8vsaJYldagAeWMd5KRD0aX3Q39g==}
+ dependencies:
+ '@arrows/composition': 1.2.2
+ dev: true
+
+ /@arrows/composition@1.2.2:
+ resolution: {integrity: sha512-9fh1yHwrx32lundiB3SlZ/VwuStPB4QakPsSLrGJFH6rCXvdrd060ivAZ7/2vlqPnEjBkPRRXOcG1YOu19p2GQ==}
+ dev: true
+
+ /@arrows/dispatch@1.0.3:
+ resolution: {integrity: sha512-v/HwvrFonitYZM2PmBlAlCqVqxrkIIoiEuy5bQgn0BdfvlL0ooSBzcPzTMrtzY8eYktPyYcHg8fLbSgyybXEqw==}
+ dependencies:
+ '@arrows/composition': 1.2.2
+ dev: true
+
+ /@arrows/error@1.0.2:
+ resolution: {integrity: sha512-yvkiv1ay4Z3+Z6oQsUkedsQm5aFdyPpkBUQs8vejazU/RmANABx6bMMcBPPHI4aW43VPQmXFfBzr/4FExwWTEA==}
+ dev: true
+
+ /@arrows/multimethod@1.4.1:
+ resolution: {integrity: sha512-AZnAay0dgPnCJxn3We5uKiB88VL+1ZIF2SjZohLj6vqY2UyvB/sKdDnFP+LZNVsTC5lcnGPmLlRRkAh4sXkXsQ==}
+ dependencies:
+ '@arrows/array': 1.4.1
+ '@arrows/composition': 1.2.2
+ '@arrows/error': 1.0.2
+ fast-deep-equal: 3.1.3
+ dev: true
+
+ /@babel/code-frame@7.12.11:
+ resolution: {integrity: sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==}
+ dependencies:
+ '@babel/highlight': 7.25.9
+ dev: true
+
+ /@babel/code-frame@7.26.2:
+ resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/helper-validator-identifier': 7.25.9
+ js-tokens: 4.0.0
+ picocolors: 1.1.1
+ dev: true
+
+ /@babel/helper-validator-identifier@7.25.9:
+ resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==}
+ engines: {node: '>=6.9.0'}
+ dev: true
+
+ /@babel/highlight@7.25.9:
+ resolution: {integrity: sha512-llL88JShoCsth8fF8R4SJnIn+WLvR6ccFxu1H3FlMhDontdcmZWf2HgIZ7AIqV3Xcck1idlohrN4EUBQz6klbw==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ '@babel/helper-validator-identifier': 7.25.9
+ chalk: 2.4.2
+ js-tokens: 4.0.0
+ picocolors: 1.1.1
+ dev: true
+
+ /@babel/runtime@7.26.9:
+ resolution: {integrity: sha512-aA63XwOkcl4xxQa3HjPMqOP6LiK0ZDv3mUPYEFXkpHbaFjtGggE1A61FjFzJnB+p7/oy2gA8E+rcBNl/zC1tMg==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ regenerator-runtime: 0.14.1
+ dev: true
+
+ /@cspotcode/source-map-support@0.8.1:
+ resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==}
+ engines: {node: '>=12'}
+ dependencies:
+ '@jridgewell/trace-mapping': 0.3.9
+ dev: true
+
+ /@eslint/eslintrc@0.4.3:
+ resolution: {integrity: sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==}
+ engines: {node: ^10.12.0 || >=12.0.0}
+ dependencies:
+ ajv: 6.12.6
+ debug: 4.4.0
+ espree: 7.3.1
+ globals: 13.24.0
+ ignore: 4.0.6
+ import-fresh: 3.3.1
+ js-yaml: 3.14.1
+ minimatch: 3.1.2
+ strip-json-comments: 3.1.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@evocateur/libnpmaccess@3.1.2:
+ resolution: {integrity: sha512-KSCAHwNWro0CF2ukxufCitT9K5LjL/KuMmNzSu8wuwN2rjyKHD8+cmOsiybK+W5hdnwc5M1SmRlVCaMHQo+3rg==}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
+ dependencies:
+ '@evocateur/npm-registry-fetch': 4.0.0
+ aproba: 2.0.0
+ figgy-pudding: 3.5.2
+ get-stream: 4.1.0
+ npm-package-arg: 6.1.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@evocateur/libnpmpublish@1.2.2:
+ resolution: {integrity: sha512-MJrrk9ct1FeY9zRlyeoyMieBjGDG9ihyyD9/Ft6MMrTxql9NyoEx2hw9casTIP4CdqEVu+3nQ2nXxoJ8RCXyFg==}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
+ dependencies:
+ '@evocateur/npm-registry-fetch': 4.0.0
+ aproba: 2.0.0
+ figgy-pudding: 3.5.2
+ get-stream: 4.1.0
+ lodash.clonedeep: 4.5.0
+ normalize-package-data: 2.5.0
+ npm-package-arg: 6.1.1
+ semver: 5.7.2
+ ssri: 6.0.2
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@evocateur/npm-registry-fetch@4.0.0:
+ resolution: {integrity: sha512-k1WGfKRQyhJpIr+P17O5vLIo2ko1PFLKwoetatdduUSt/aQ4J2sJrJwwatdI5Z3SiYk/mRH9S3JpdmMFd/IK4g==}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
+ dependencies:
+ JSONStream: 1.3.5
+ bluebird: 3.7.2
+ figgy-pudding: 3.5.2
+ lru-cache: 5.1.1
+ make-fetch-happen: 5.0.2
+ npm-package-arg: 6.1.1
+ safe-buffer: 5.2.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@evocateur/pacote@9.6.5:
+ resolution: {integrity: sha512-EI552lf0aG2nOV8NnZpTxNo2PcXKPmDbF9K8eCBFQdIZwHNGN/mi815fxtmUMa2wTa1yndotICIDt/V0vpEx2w==}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
+ dependencies:
+ '@evocateur/npm-registry-fetch': 4.0.0
+ bluebird: 3.7.2
+ cacache: 12.0.4
+ chownr: 1.1.4
+ figgy-pudding: 3.5.2
+ get-stream: 4.1.0
+ glob: 7.2.3
+ infer-owner: 1.0.4
+ lru-cache: 5.1.1
+ make-fetch-happen: 5.0.2
+ minimatch: 3.1.2
+ minipass: 2.9.0
+ mississippi: 3.0.0
+ mkdirp: 0.5.6
+ normalize-package-data: 2.5.0
+ npm-package-arg: 6.1.1
+ npm-packlist: 1.4.8
+ npm-pick-manifest: 3.0.2
+ osenv: 0.1.5
+ promise-inflight: 1.0.1(bluebird@3.7.2)
+ promise-retry: 1.1.1
+ protoduck: 5.0.1
+ rimraf: 2.7.1
+ safe-buffer: 5.2.1
+ semver: 5.7.2
+ ssri: 6.0.2
+ tar: 4.4.19
+ unique-filename: 1.1.1
+ which: 1.3.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@humanwhocodes/config-array@0.5.0:
+ resolution: {integrity: sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==}
+ engines: {node: '>=10.10.0'}
+ deprecated: Use @eslint/config-array instead
+ dependencies:
+ '@humanwhocodes/object-schema': 1.2.1
+ debug: 4.4.0
+ minimatch: 3.1.2
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@humanwhocodes/object-schema@1.2.1:
+ resolution: {integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==}
+ deprecated: Use @eslint/object-schema instead
+ dev: true
+
+ /@jridgewell/resolve-uri@3.1.2:
+ resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
+ engines: {node: '>=6.0.0'}
+ dev: true
+
+ /@jridgewell/sourcemap-codec@1.5.0:
+ resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==}
+ dev: true
+
+ /@jridgewell/trace-mapping@0.3.9:
+ resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==}
+ dependencies:
+ '@jridgewell/resolve-uri': 3.1.2
+ '@jridgewell/sourcemap-codec': 1.5.0
+ dev: true
+
+ /@lerna/add@3.21.0:
+ resolution: {integrity: sha512-vhUXXF6SpufBE1EkNEXwz1VLW03f177G9uMOFMQkp6OJ30/PWg4Ekifuz9/3YfgB2/GH8Tu4Lk3O51P2Hskg/A==}
+ engines: {node: '>= 6.9.0'}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
+ dependencies:
+ '@evocateur/pacote': 9.6.5
+ '@lerna/bootstrap': 3.21.0
+ '@lerna/command': 3.21.0
+ '@lerna/filter-options': 3.20.0
+ '@lerna/npm-conf': 3.16.0
+ '@lerna/validation-error': 3.13.0
+ dedent: 0.7.0
+ npm-package-arg: 6.1.1
+ p-map: 2.1.0
+ semver: 6.3.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@lerna/bootstrap@3.21.0:
+ resolution: {integrity: sha512-mtNHlXpmvJn6JTu0KcuTTPl2jLsDNud0QacV/h++qsaKbhAaJr/FElNZ5s7MwZFUM3XaDmvWzHKaszeBMHIbBw==}
+ engines: {node: '>= 6.9.0'}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
+ dependencies:
+ '@lerna/command': 3.21.0
+ '@lerna/filter-options': 3.20.0
+ '@lerna/has-npm-version': 3.16.5
+ '@lerna/npm-install': 3.16.5
+ '@lerna/package-graph': 3.18.5
+ '@lerna/pulse-till-done': 3.13.0
+ '@lerna/rimraf-dir': 3.16.5
+ '@lerna/run-lifecycle': 3.16.2
+ '@lerna/run-topologically': 3.18.5
+ '@lerna/symlink-binary': 3.17.0
+ '@lerna/symlink-dependencies': 3.17.0
+ '@lerna/validation-error': 3.13.0
+ dedent: 0.7.0
+ get-port: 4.2.0
+ multimatch: 3.0.0
+ npm-package-arg: 6.1.1
+ npmlog: 4.1.2
+ p-finally: 1.0.0
+ p-map: 2.1.0
+ p-map-series: 1.0.0
+ p-waterfall: 1.0.0
+ read-package-tree: 5.3.1
+ semver: 6.3.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@lerna/changed@3.21.0:
+ resolution: {integrity: sha512-hzqoyf8MSHVjZp0gfJ7G8jaz+++mgXYiNs9iViQGA8JlN/dnWLI5sWDptEH3/B30Izo+fdVz0S0s7ydVE3pWIw==}
+ engines: {node: '>= 6.9.0'}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
+ dependencies:
+ '@lerna/collect-updates': 3.20.0
+ '@lerna/command': 3.21.0
+ '@lerna/listable': 3.18.5
+ '@lerna/output': 3.13.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@lerna/check-working-tree@3.16.5:
+ resolution: {integrity: sha512-xWjVBcuhvB8+UmCSb5tKVLB5OuzSpw96WEhS2uz6hkWVa/Euh1A0/HJwn2cemyK47wUrCQXtczBUiqnq9yX5VQ==}
+ engines: {node: '>= 6.9.0'}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
+ dependencies:
+ '@lerna/collect-uncommitted': 3.16.5
+ '@lerna/describe-ref': 3.16.5
+ '@lerna/validation-error': 3.13.0
+ dev: true
+
+ /@lerna/child-process@3.16.5:
+ resolution: {integrity: sha512-vdcI7mzei9ERRV4oO8Y1LHBZ3A5+ampRKg1wq5nutLsUA4mEBN6H7JqjWOMY9xZemv6+kATm2ofjJ3lW5TszQg==}
+ engines: {node: '>= 6.9.0'}
+ dependencies:
+ chalk: 2.4.2
+ execa: 1.0.0
+ strong-log-transformer: 2.1.0
+ dev: true
+
+ /@lerna/clean@3.21.0:
+ resolution: {integrity: sha512-b/L9l+MDgE/7oGbrav6rG8RTQvRiZLO1zTcG17zgJAAuhlsPxJExMlh2DFwJEVi2les70vMhHfST3Ue1IMMjpg==}
+ engines: {node: '>= 6.9.0'}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
+ dependencies:
+ '@lerna/command': 3.21.0
+ '@lerna/filter-options': 3.20.0
+ '@lerna/prompt': 3.18.5
+ '@lerna/pulse-till-done': 3.13.0
+ '@lerna/rimraf-dir': 3.16.5
+ p-map: 2.1.0
+ p-map-series: 1.0.0
+ p-waterfall: 1.0.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@lerna/cli@3.18.5:
+ resolution: {integrity: sha512-erkbxkj9jfc89vVs/jBLY/fM0I80oLmJkFUV3Q3wk9J3miYhP14zgVEBsPZY68IZlEjT6T3Xlq2xO1AVaatHsA==}
+ engines: {node: '>= 6.9.0'}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
+ dependencies:
+ '@lerna/global-options': 3.13.0
+ dedent: 0.7.0
+ npmlog: 4.1.2
+ yargs: 14.2.3
+ dev: true
+
+ /@lerna/collect-uncommitted@3.16.5:
+ resolution: {integrity: sha512-ZgqnGwpDZiWyzIQVZtQaj9tRizsL4dUOhuOStWgTAw1EMe47cvAY2kL709DzxFhjr6JpJSjXV5rZEAeU3VE0Hg==}
+ engines: {node: '>= 6.9.0'}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
+ dependencies:
+ '@lerna/child-process': 3.16.5
+ chalk: 2.4.2
+ figgy-pudding: 3.5.2
+ npmlog: 4.1.2
+ dev: true
+
+ /@lerna/collect-updates@3.20.0:
+ resolution: {integrity: sha512-qBTVT5g4fupVhBFuY4nI/3FSJtQVcDh7/gEPOpRxoXB/yCSnT38MFHXWl+y4einLciCjt/+0x6/4AG80fjay2Q==}
+ engines: {node: '>= 6.9.0'}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
+ dependencies:
+ '@lerna/child-process': 3.16.5
+ '@lerna/describe-ref': 3.16.5
+ minimatch: 3.1.2
+ npmlog: 4.1.2
+ slash: 2.0.0
+ dev: true
+
+ /@lerna/command@3.21.0:
+ resolution: {integrity: sha512-T2bu6R8R3KkH5YoCKdutKv123iUgUbW8efVjdGCDnCMthAQzoentOJfDeodBwn0P2OqCl3ohsiNVtSn9h78fyQ==}
+ engines: {node: '>= 6.9.0'}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
+ dependencies:
+ '@lerna/child-process': 3.16.5
+ '@lerna/package-graph': 3.18.5
+ '@lerna/project': 3.21.0
+ '@lerna/validation-error': 3.13.0
+ '@lerna/write-log-file': 3.13.0
+ clone-deep: 4.0.1
+ dedent: 0.7.0
+ execa: 1.0.0
+ is-ci: 2.0.0
+ npmlog: 4.1.2
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@lerna/conventional-commits@3.22.0:
+ resolution: {integrity: sha512-z4ZZk1e8Mhz7+IS8NxHr64wyklHctCJyWpJKEZZPJiLFJ8yKto/x38O80R10pIzC0rr8Sy/OsjSH4bl0TbbgqA==}
+ engines: {node: '>= 6.9.0'}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
+ dependencies:
+ '@lerna/validation-error': 3.13.0
+ conventional-changelog-angular: 5.0.13
+ conventional-changelog-core: 3.2.3
+ conventional-recommended-bump: 5.0.1
+ fs-extra: 8.1.0
+ get-stream: 4.1.0
+ lodash.template: 4.5.0
+ npm-package-arg: 6.1.1
+ npmlog: 4.1.2
+ pify: 4.0.1
+ semver: 6.3.1
+ dev: true
+
+ /@lerna/create-symlink@3.16.2:
+ resolution: {integrity: sha512-pzXIJp6av15P325sgiIRpsPXLFmkisLhMBCy4764d+7yjf2bzrJ4gkWVMhsv4AdF0NN3OyZ5jjzzTtLNqfR+Jw==}
+ engines: {node: '>= 6.9.0'}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
+ dependencies:
+ '@zkochan/cmd-shim': 3.1.0
+ fs-extra: 8.1.0
+ npmlog: 4.1.2
+ dev: true
+
+ /@lerna/create@3.22.0:
+ resolution: {integrity: sha512-MdiQQzCcB4E9fBF1TyMOaAEz9lUjIHp1Ju9H7f3lXze5JK6Fl5NYkouAvsLgY6YSIhXMY8AHW2zzXeBDY4yWkw==}
+ engines: {node: '>= 6.9.0'}
+ dependencies:
+ '@evocateur/pacote': 9.6.5
+ '@lerna/child-process': 3.16.5
+ '@lerna/command': 3.21.0
+ '@lerna/npm-conf': 3.16.0
+ '@lerna/validation-error': 3.13.0
+ camelcase: 5.3.1
+ dedent: 0.7.0
+ fs-extra: 8.1.0
+ globby: 9.2.0
+ init-package-json: 1.10.3
+ npm-package-arg: 6.1.1
+ p-reduce: 1.0.0
+ pify: 4.0.1
+ semver: 6.3.1
+ slash: 2.0.0
+ validate-npm-package-license: 3.0.4
+ validate-npm-package-name: 3.0.0
+ whatwg-url: 7.1.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@lerna/describe-ref@3.16.5:
+ resolution: {integrity: sha512-c01+4gUF0saOOtDBzbLMFOTJDHTKbDFNErEY6q6i9QaXuzy9LNN62z+Hw4acAAZuJQhrVWncVathcmkkjvSVGw==}
+ engines: {node: '>= 6.9.0'}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
+ dependencies:
+ '@lerna/child-process': 3.16.5
+ npmlog: 4.1.2
+ dev: true
+
+ /@lerna/diff@3.21.0:
+ resolution: {integrity: sha512-5viTR33QV3S7O+bjruo1SaR40m7F2aUHJaDAC7fL9Ca6xji+aw1KFkpCtVlISS0G8vikUREGMJh+c/VMSc8Usw==}
+ engines: {node: '>= 6.9.0'}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
+ dependencies:
+ '@lerna/child-process': 3.16.5
+ '@lerna/command': 3.21.0
+ '@lerna/validation-error': 3.13.0
+ npmlog: 4.1.2
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@lerna/exec@3.21.0:
+ resolution: {integrity: sha512-iLvDBrIE6rpdd4GIKTY9mkXyhwsJ2RvQdB9ZU+/NhR3okXfqKc6py/24tV111jqpXTtZUW6HNydT4dMao2hi1Q==}
+ engines: {node: '>= 6.9.0'}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
+ dependencies:
+ '@lerna/child-process': 3.16.5
+ '@lerna/command': 3.21.0
+ '@lerna/filter-options': 3.20.0
+ '@lerna/profiler': 3.20.0
+ '@lerna/run-topologically': 3.18.5
+ '@lerna/validation-error': 3.13.0
+ p-map: 2.1.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@lerna/filter-options@3.20.0:
+ resolution: {integrity: sha512-bmcHtvxn7SIl/R9gpiNMVG7yjx7WyT0HSGw34YVZ9B+3xF/83N3r5Rgtjh4hheLZ+Q91Or0Jyu5O3Nr+AwZe2g==}
+ engines: {node: '>= 6.9.0'}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
+ dependencies:
+ '@lerna/collect-updates': 3.20.0
+ '@lerna/filter-packages': 3.18.0
+ dedent: 0.7.0
+ figgy-pudding: 3.5.2
+ npmlog: 4.1.2
+ dev: true
+
+ /@lerna/filter-packages@3.18.0:
+ resolution: {integrity: sha512-6/0pMM04bCHNATIOkouuYmPg6KH3VkPCIgTfQmdkPJTullERyEQfNUKikrefjxo1vHOoCACDpy65JYyKiAbdwQ==}
+ engines: {node: '>= 6.9.0'}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
+ dependencies:
+ '@lerna/validation-error': 3.13.0
+ multimatch: 3.0.0
+ npmlog: 4.1.2
+ dev: true
+
+ /@lerna/get-npm-exec-opts@3.13.0:
+ resolution: {integrity: sha512-Y0xWL0rg3boVyJk6An/vurKzubyJKtrxYv2sj4bB8Mc5zZ3tqtv0ccbOkmkXKqbzvNNF7VeUt1OJ3DRgtC/QZw==}
+ engines: {node: '>= 6.9.0'}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
+ dependencies:
+ npmlog: 4.1.2
+ dev: true
+
+ /@lerna/get-packed@3.16.0:
+ resolution: {integrity: sha512-AjsFiaJzo1GCPnJUJZiTW6J1EihrPkc2y3nMu6m3uWFxoleklsSCyImumzVZJssxMi3CPpztj8LmADLedl9kXw==}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
+ dependencies:
+ fs-extra: 8.1.0
+ ssri: 6.0.2
+ tar: 4.4.19
+ dev: true
+
+ /@lerna/github-client@3.22.0(@octokit/core@6.1.4):
+ resolution: {integrity: sha512-O/GwPW+Gzr3Eb5bk+nTzTJ3uv+jh5jGho9BOqKlajXaOkMYGBELEAqV5+uARNGWZFvYAiF4PgqHb6aCUu7XdXg==}
+ engines: {node: '>= 6.9.0'}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
+ dependencies:
+ '@lerna/child-process': 3.16.5
+ '@octokit/plugin-enterprise-rest': 6.0.1
+ '@octokit/rest': 16.43.2(@octokit/core@6.1.4)
+ git-url-parse: 11.6.0
+ npmlog: 4.1.2
+ transitivePeerDependencies:
+ - '@octokit/core'
+ - encoding
+ dev: true
+
+ /@lerna/gitlab-client@3.15.0:
+ resolution: {integrity: sha512-OsBvRSejHXUBMgwWQqNoioB8sgzL/Pf1pOUhHKtkiMl6aAWjklaaq5HPMvTIsZPfS6DJ9L5OK2GGZuooP/5c8Q==}
+ engines: {node: '>= 6.9.0'}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
+ dependencies:
+ node-fetch: 2.7.0
+ npmlog: 4.1.2
+ whatwg-url: 7.1.0
+ transitivePeerDependencies:
+ - encoding
+ dev: true
+
+ /@lerna/global-options@3.13.0:
+ resolution: {integrity: sha512-SlZvh1gVRRzYLVluz9fryY1nJpZ0FHDGB66U9tFfvnnxmueckRQxLopn3tXj3NU1kc3QANT2I5BsQkOqZ4TEFQ==}
+ engines: {node: '>= 6.9.0'}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
+ dev: true
+
+ /@lerna/has-npm-version@3.16.5:
+ resolution: {integrity: sha512-WL7LycR9bkftyqbYop5rEGJ9sRFIV55tSGmbN1HLrF9idwOCD7CLrT64t235t3t4O5gehDnwKI5h2U3oxTrF8Q==}
+ engines: {node: '>= 6.9.0'}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
+ dependencies:
+ '@lerna/child-process': 3.16.5
+ semver: 6.3.1
+ dev: true
+
+ /@lerna/import@3.22.0:
+ resolution: {integrity: sha512-uWOlexasM5XR6tXi4YehODtH9Y3OZrFht3mGUFFT3OIl2s+V85xIGFfqFGMTipMPAGb2oF1UBLL48kR43hRsOg==}
+ engines: {node: '>= 6.9.0'}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
+ dependencies:
+ '@lerna/child-process': 3.16.5
+ '@lerna/command': 3.21.0
+ '@lerna/prompt': 3.18.5
+ '@lerna/pulse-till-done': 3.13.0
+ '@lerna/validation-error': 3.13.0
+ dedent: 0.7.0
+ fs-extra: 8.1.0
+ p-map-series: 1.0.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@lerna/info@3.21.0:
+ resolution: {integrity: sha512-0XDqGYVBgWxUquFaIptW2bYSIu6jOs1BtkvRTWDDhw4zyEdp6q4eaMvqdSap1CG+7wM5jeLCi6z94wS0AuiuwA==}
+ engines: {node: '>= 6.9.0'}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
+ dependencies:
+ '@lerna/command': 3.21.0
+ '@lerna/output': 3.13.0
+ envinfo: 7.14.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@lerna/init@3.21.0:
+ resolution: {integrity: sha512-6CM0z+EFUkFfurwdJCR+LQQF6MqHbYDCBPyhu/d086LRf58GtYZYj49J8mKG9ktayp/TOIxL/pKKjgLD8QBPOg==}
+ engines: {node: '>= 6.9.0'}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
+ dependencies:
+ '@lerna/child-process': 3.16.5
+ '@lerna/command': 3.21.0
+ fs-extra: 8.1.0
+ p-map: 2.1.0
+ write-json-file: 3.2.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@lerna/link@3.21.0:
+ resolution: {integrity: sha512-tGu9GxrX7Ivs+Wl3w1+jrLi1nQ36kNI32dcOssij6bg0oZ2M2MDEFI9UF2gmoypTaN9uO5TSsjCFS7aR79HbdQ==}
+ engines: {node: '>= 6.9.0'}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
+ dependencies:
+ '@lerna/command': 3.21.0
+ '@lerna/package-graph': 3.18.5
+ '@lerna/symlink-dependencies': 3.17.0
+ p-map: 2.1.0
+ slash: 2.0.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@lerna/list@3.21.0:
+ resolution: {integrity: sha512-KehRjE83B1VaAbRRkRy6jLX1Cin8ltsrQ7FHf2bhwhRHK0S54YuA6LOoBnY/NtA8bHDX/Z+G5sMY78X30NS9tg==}
+ engines: {node: '>= 6.9.0'}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
+ dependencies:
+ '@lerna/command': 3.21.0
+ '@lerna/filter-options': 3.20.0
+ '@lerna/listable': 3.18.5
+ '@lerna/output': 3.13.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@lerna/listable@3.18.5:
+ resolution: {integrity: sha512-Sdr3pVyaEv5A7ZkGGYR7zN+tTl2iDcinryBPvtuv20VJrXBE8wYcOks1edBTcOWsPjCE/rMP4bo1pseyk3UTsg==}
+ engines: {node: '>= 6.9.0'}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
+ dependencies:
+ '@lerna/query-graph': 3.18.5
+ chalk: 2.4.2
+ columnify: 1.6.0
+ dev: true
+
+ /@lerna/log-packed@3.16.0:
+ resolution: {integrity: sha512-Fp+McSNBV/P2mnLUYTaSlG8GSmpXM7krKWcllqElGxvAqv6chk2K3c2k80MeVB4WvJ9tRjUUf+i7HUTiQ9/ckQ==}
+ engines: {node: '>= 6.9.0'}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
+ dependencies:
+ byte-size: 5.0.1
+ columnify: 1.6.0
+ has-unicode: 2.0.1
+ npmlog: 4.1.2
+ dev: true
+
+ /@lerna/npm-conf@3.16.0:
+ resolution: {integrity: sha512-HbO3DUrTkCAn2iQ9+FF/eisDpWY5POQAOF1m7q//CZjdC2HSW3UYbKEGsSisFxSfaF9Z4jtrV+F/wX6qWs3CuA==}
+ engines: {node: '>= 6.9.0'}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
+ dependencies:
+ config-chain: 1.1.13
+ pify: 4.0.1
+ dev: true
+
+ /@lerna/npm-dist-tag@3.18.5:
+ resolution: {integrity: sha512-xw0HDoIG6HreVsJND9/dGls1c+lf6vhu7yJoo56Sz5bvncTloYGLUppIfDHQr4ZvmPCK8rsh0euCVh2giPxzKQ==}
+ engines: {node: '>= 6.9.0'}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
+ dependencies:
+ '@evocateur/npm-registry-fetch': 4.0.0
+ '@lerna/otplease': 3.18.5
+ figgy-pudding: 3.5.2
+ npm-package-arg: 6.1.1
+ npmlog: 4.1.2
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@lerna/npm-install@3.16.5:
+ resolution: {integrity: sha512-hfiKk8Eku6rB9uApqsalHHTHY+mOrrHeWEs+gtg7+meQZMTS3kzv4oVp5cBZigndQr3knTLjwthT/FX4KvseFg==}
+ engines: {node: '>= 6.9.0'}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
+ dependencies:
+ '@lerna/child-process': 3.16.5
+ '@lerna/get-npm-exec-opts': 3.13.0
+ fs-extra: 8.1.0
+ npm-package-arg: 6.1.1
+ npmlog: 4.1.2
+ signal-exit: 3.0.7
+ write-pkg: 3.2.0
+ dev: true
+
+ /@lerna/npm-publish@3.18.5:
+ resolution: {integrity: sha512-3etLT9+2L8JAx5F8uf7qp6iAtOLSMj+ZYWY6oUgozPi/uLqU0/gsMsEXh3F0+YVW33q0M61RpduBoAlOOZnaTg==}
+ engines: {node: '>= 6.9.0'}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
+ dependencies:
+ '@evocateur/libnpmpublish': 1.2.2
+ '@lerna/otplease': 3.18.5
+ '@lerna/run-lifecycle': 3.16.2
+ figgy-pudding: 3.5.2
+ fs-extra: 8.1.0
+ npm-package-arg: 6.1.1
+ npmlog: 4.1.2
+ pify: 4.0.1
+ read-package-json: 2.1.2
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@lerna/npm-run-script@3.16.5:
+ resolution: {integrity: sha512-1asRi+LjmVn3pMjEdpqKJZFT/3ZNpb+VVeJMwrJaV/3DivdNg7XlPK9LTrORuKU4PSvhdEZvJmSlxCKyDpiXsQ==}
+ engines: {node: '>= 6.9.0'}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
+ dependencies:
+ '@lerna/child-process': 3.16.5
+ '@lerna/get-npm-exec-opts': 3.13.0
+ npmlog: 4.1.2
+ dev: true
+
+ /@lerna/otplease@3.18.5:
+ resolution: {integrity: sha512-S+SldXAbcXTEDhzdxYLU0ZBKuYyURP/ND2/dK6IpKgLxQYh/z4ScljPDMyKymmEvgiEJmBsPZAAPfmNPEzxjog==}
+ engines: {node: '>= 6.9.0'}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
+ dependencies:
+ '@lerna/prompt': 3.18.5
+ figgy-pudding: 3.5.2
+ dev: true
+
+ /@lerna/output@3.13.0:
+ resolution: {integrity: sha512-7ZnQ9nvUDu/WD+bNsypmPG5MwZBwu86iRoiW6C1WBuXXDxM5cnIAC1m2WxHeFnjyMrYlRXM9PzOQ9VDD+C15Rg==}
+ engines: {node: '>= 6.9.0'}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
+ dependencies:
+ npmlog: 4.1.2
+ dev: true
+
+ /@lerna/pack-directory@3.16.4:
+ resolution: {integrity: sha512-uxSF0HZeGyKaaVHz5FroDY9A5NDDiCibrbYR6+khmrhZtY0Bgn6hWq8Gswl9iIlymA+VzCbshWIMX4o2O8C8ng==}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
+ dependencies:
+ '@lerna/get-packed': 3.16.0
+ '@lerna/package': 3.16.0
+ '@lerna/run-lifecycle': 3.16.2
+ figgy-pudding: 3.5.2
+ npm-packlist: 1.4.8
+ npmlog: 4.1.2
+ tar: 4.4.19
+ temp-write: 3.4.0
+ dev: true
+
+ /@lerna/package-graph@3.18.5:
+ resolution: {integrity: sha512-8QDrR9T+dBegjeLr+n9WZTVxUYUhIUjUgZ0gvNxUBN8S1WB9r6H5Yk56/MVaB64tA3oGAN9IIxX6w0WvTfFudA==}
+ engines: {node: '>= 6.9.0'}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
+ dependencies:
+ '@lerna/prerelease-id-from-version': 3.16.0
+ '@lerna/validation-error': 3.13.0
+ npm-package-arg: 6.1.1
+ npmlog: 4.1.2
+ semver: 6.3.1
+ dev: true
+
+ /@lerna/package@3.16.0:
+ resolution: {integrity: sha512-2lHBWpaxcBoiNVbtyLtPUuTYEaB/Z+eEqRS9duxpZs6D+mTTZMNy6/5vpEVSCBmzvdYpyqhqaYjjSLvjjr5Riw==}
+ engines: {node: '>= 6.9.0'}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
+ dependencies:
+ load-json-file: 5.3.0
+ npm-package-arg: 6.1.1
+ write-pkg: 3.2.0
+ dev: true
+
+ /@lerna/prerelease-id-from-version@3.16.0:
+ resolution: {integrity: sha512-qZyeUyrE59uOK8rKdGn7jQz+9uOpAaF/3hbslJVFL1NqF9ELDTqjCPXivuejMX/lN4OgD6BugTO4cR7UTq/sZA==}
+ engines: {node: '>= 6.9.0'}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
+ dependencies:
+ semver: 6.3.1
+ dev: true
+
+ /@lerna/profiler@3.20.0:
+ resolution: {integrity: sha512-bh8hKxAlm6yu8WEOvbLENm42i2v9SsR4WbrCWSbsmOElx3foRnMlYk7NkGECa+U5c3K4C6GeBbwgqs54PP7Ljg==}
+ engines: {node: '>= 6.9.0'}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
+ dependencies:
+ figgy-pudding: 3.5.2
+ fs-extra: 8.1.0
+ npmlog: 4.1.2
+ upath: 1.2.0
+ dev: true
+
+ /@lerna/project@3.21.0:
+ resolution: {integrity: sha512-xT1mrpET2BF11CY32uypV2GPtPVm6Hgtha7D81GQP9iAitk9EccrdNjYGt5UBYASl4CIDXBRxwmTTVGfrCx82A==}
+ engines: {node: '>= 6.9.0'}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
+ dependencies:
+ '@lerna/package': 3.16.0
+ '@lerna/validation-error': 3.13.0
+ cosmiconfig: 5.2.1
+ dedent: 0.7.0
+ dot-prop: 4.2.1
+ glob-parent: 5.1.2
+ globby: 9.2.0
+ load-json-file: 5.3.0
+ npmlog: 4.1.2
+ p-map: 2.1.0
+ resolve-from: 4.0.0
+ write-json-file: 3.2.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@lerna/prompt@3.18.5:
+ resolution: {integrity: sha512-rkKj4nm1twSbBEb69+Em/2jAERK8htUuV8/xSjN0NPC+6UjzAwY52/x9n5cfmpa9lyKf/uItp7chCI7eDmNTKQ==}
+ engines: {node: '>= 6.9.0'}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
+ dependencies:
+ inquirer: 6.5.2
+ npmlog: 4.1.2
+ dev: true
+
+ /@lerna/publish@3.22.1(@octokit/core@6.1.4):
+ resolution: {integrity: sha512-PG9CM9HUYDreb1FbJwFg90TCBQooGjj+n/pb3gw/eH5mEDq0p8wKdLFe0qkiqUkm/Ub5C8DbVFertIo0Vd0zcw==}
+ engines: {node: '>= 6.9.0'}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
+ dependencies:
+ '@evocateur/libnpmaccess': 3.1.2
+ '@evocateur/npm-registry-fetch': 4.0.0
+ '@evocateur/pacote': 9.6.5
+ '@lerna/check-working-tree': 3.16.5
+ '@lerna/child-process': 3.16.5
+ '@lerna/collect-updates': 3.20.0
+ '@lerna/command': 3.21.0
+ '@lerna/describe-ref': 3.16.5
+ '@lerna/log-packed': 3.16.0
+ '@lerna/npm-conf': 3.16.0
+ '@lerna/npm-dist-tag': 3.18.5
+ '@lerna/npm-publish': 3.18.5
+ '@lerna/otplease': 3.18.5
+ '@lerna/output': 3.13.0
+ '@lerna/pack-directory': 3.16.4
+ '@lerna/prerelease-id-from-version': 3.16.0
+ '@lerna/prompt': 3.18.5
+ '@lerna/pulse-till-done': 3.13.0
+ '@lerna/run-lifecycle': 3.16.2
+ '@lerna/run-topologically': 3.18.5
+ '@lerna/validation-error': 3.13.0
+ '@lerna/version': 3.22.1(@octokit/core@6.1.4)
+ figgy-pudding: 3.5.2
+ fs-extra: 8.1.0
+ npm-package-arg: 6.1.1
+ npmlog: 4.1.2
+ p-finally: 1.0.0
+ p-map: 2.1.0
+ p-pipe: 1.2.0
+ semver: 6.3.1
+ transitivePeerDependencies:
+ - '@octokit/core'
+ - encoding
+ - supports-color
+ dev: true
+
+ /@lerna/pulse-till-done@3.13.0:
+ resolution: {integrity: sha512-1SOHpy7ZNTPulzIbargrgaJX387csN7cF1cLOGZiJQA6VqnS5eWs2CIrG8i8wmaUavj2QlQ5oEbRMVVXSsGrzA==}
+ engines: {node: '>= 6.9.0'}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
+ dependencies:
+ npmlog: 4.1.2
+ dev: true
+
+ /@lerna/query-graph@3.18.5:
+ resolution: {integrity: sha512-50Lf4uuMpMWvJ306be3oQDHrWV42nai9gbIVByPBYJuVW8dT8O8pA3EzitNYBUdLL9/qEVbrR0ry1HD7EXwtRA==}
+ engines: {node: '>= 6.9.0'}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
+ dependencies:
+ '@lerna/package-graph': 3.18.5
+ figgy-pudding: 3.5.2
+ dev: true
+
+ /@lerna/resolve-symlink@3.16.0:
+ resolution: {integrity: sha512-Ibj5e7njVHNJ/NOqT4HlEgPFPtPLWsO7iu59AM5bJDcAJcR96mLZ7KGVIsS2tvaO7akMEJvt2P+ErwCdloG3jQ==}
+ engines: {node: '>= 6.9.0'}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
+ dependencies:
+ fs-extra: 8.1.0
+ npmlog: 4.1.2
+ read-cmd-shim: 1.0.5
+ dev: true
+
+ /@lerna/rimraf-dir@3.16.5:
+ resolution: {integrity: sha512-bQlKmO0pXUsXoF8lOLknhyQjOZsCc0bosQDoX4lujBXSWxHVTg1VxURtWf2lUjz/ACsJVDfvHZbDm8kyBk5okA==}
+ engines: {node: '>= 6.9.0'}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
+ dependencies:
+ '@lerna/child-process': 3.16.5
+ npmlog: 4.1.2
+ path-exists: 3.0.0
+ rimraf: 2.7.1
+ dev: true
+
+ /@lerna/run-lifecycle@3.16.2:
+ resolution: {integrity: sha512-RqFoznE8rDpyyF0rOJy3+KjZCeTkO8y/OB9orPauR7G2xQ7PTdCpgo7EO6ZNdz3Al+k1BydClZz/j78gNCmL2A==}
+ engines: {node: '>= 6.9.0'}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
+ dependencies:
+ '@lerna/npm-conf': 3.16.0
+ figgy-pudding: 3.5.2
+ npm-lifecycle: 3.1.5
+ npmlog: 4.1.2
+ dev: true
+
+ /@lerna/run-topologically@3.18.5:
+ resolution: {integrity: sha512-6N1I+6wf4hLOnPW+XDZqwufyIQ6gqoPfHZFkfWlvTQ+Ue7CuF8qIVQ1Eddw5HKQMkxqN10thKOFfq/9NQZ4NUg==}
+ engines: {node: '>= 6.9.0'}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
+ dependencies:
+ '@lerna/query-graph': 3.18.5
+ figgy-pudding: 3.5.2
+ p-queue: 4.0.0
+ dev: true
+
+ /@lerna/run@3.21.0:
+ resolution: {integrity: sha512-fJF68rT3veh+hkToFsBmUJ9MHc9yGXA7LSDvhziAojzOb0AI/jBDp6cEcDQyJ7dbnplba2Lj02IH61QUf9oW0Q==}
+ engines: {node: '>= 6.9.0'}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
+ dependencies:
+ '@lerna/command': 3.21.0
+ '@lerna/filter-options': 3.20.0
+ '@lerna/npm-run-script': 3.16.5
+ '@lerna/output': 3.13.0
+ '@lerna/profiler': 3.20.0
+ '@lerna/run-topologically': 3.18.5
+ '@lerna/timer': 3.13.0
+ '@lerna/validation-error': 3.13.0
+ p-map: 2.1.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@lerna/symlink-binary@3.17.0:
+ resolution: {integrity: sha512-RLpy9UY6+3nT5J+5jkM5MZyMmjNHxZIZvXLV+Q3MXrf7Eaa1hNqyynyj4RO95fxbS+EZc4XVSk25DGFQbcRNSQ==}
+ engines: {node: '>= 6.9.0'}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
+ dependencies:
+ '@lerna/create-symlink': 3.16.2
+ '@lerna/package': 3.16.0
+ fs-extra: 8.1.0
+ p-map: 2.1.0
+ dev: true
+
+ /@lerna/symlink-dependencies@3.17.0:
+ resolution: {integrity: sha512-KmjU5YT1bpt6coOmdFueTJ7DFJL4H1w5eF8yAQ2zsGNTtZ+i5SGFBWpb9AQaw168dydc3s4eu0W0Sirda+F59Q==}
+ engines: {node: '>= 6.9.0'}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
+ dependencies:
+ '@lerna/create-symlink': 3.16.2
+ '@lerna/resolve-symlink': 3.16.0
+ '@lerna/symlink-binary': 3.17.0
+ fs-extra: 8.1.0
+ p-finally: 1.0.0
+ p-map: 2.1.0
+ p-map-series: 1.0.0
+ dev: true
+
+ /@lerna/timer@3.13.0:
+ resolution: {integrity: sha512-RHWrDl8U4XNPqY5MQHkToWS9jHPnkLZEt5VD+uunCKTfzlxGnRCr3/zVr8VGy/uENMYpVP3wJa4RKGY6M0vkRw==}
+ engines: {node: '>= 6.9.0'}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
+ dev: true
+
+ /@lerna/validation-error@3.13.0:
+ resolution: {integrity: sha512-SiJP75nwB8GhgwLKQfdkSnDufAaCbkZWJqEDlKOUPUvVOplRGnfL+BPQZH5nvq2BYSRXsksXWZ4UHVnQZI/HYA==}
+ engines: {node: '>= 6.9.0'}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
+ dependencies:
+ npmlog: 4.1.2
+ dev: true
+
+ /@lerna/version@3.22.1(@octokit/core@6.1.4):
+ resolution: {integrity: sha512-PSGt/K1hVqreAFoi3zjD0VEDupQ2WZVlVIwesrE5GbrL2BjXowjCsTDPqblahDUPy0hp6h7E2kG855yLTp62+g==}
+ engines: {node: '>= 6.9.0'}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
+ dependencies:
+ '@lerna/check-working-tree': 3.16.5
+ '@lerna/child-process': 3.16.5
+ '@lerna/collect-updates': 3.20.0
+ '@lerna/command': 3.21.0
+ '@lerna/conventional-commits': 3.22.0
+ '@lerna/github-client': 3.22.0(@octokit/core@6.1.4)
+ '@lerna/gitlab-client': 3.15.0
+ '@lerna/output': 3.13.0
+ '@lerna/prerelease-id-from-version': 3.16.0
+ '@lerna/prompt': 3.18.5
+ '@lerna/run-lifecycle': 3.16.2
+ '@lerna/run-topologically': 3.18.5
+ '@lerna/validation-error': 3.13.0
+ chalk: 2.4.2
+ dedent: 0.7.0
+ load-json-file: 5.3.0
+ minimatch: 3.1.2
+ npmlog: 4.1.2
+ p-map: 2.1.0
+ p-pipe: 1.2.0
+ p-reduce: 1.0.0
+ p-waterfall: 1.0.0
+ semver: 6.3.1
+ slash: 2.0.0
+ temp-write: 3.4.0
+ write-json-file: 3.2.0
+ transitivePeerDependencies:
+ - '@octokit/core'
+ - encoding
+ - supports-color
+ dev: true
+
+ /@lerna/write-log-file@3.13.0:
+ resolution: {integrity: sha512-RibeMnDPvlL8bFYW5C8cs4mbI3AHfQef73tnJCQ/SgrXZHehmHnsyWUiE7qDQCAo+B1RfTapvSyFF69iPj326A==}
+ engines: {node: '>= 6.9.0'}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
+ dependencies:
+ npmlog: 4.1.2
+ write-file-atomic: 2.4.3
+ dev: true
+
+ /@mrmlnc/readdir-enhanced@2.2.1:
+ resolution: {integrity: sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==}
+ engines: {node: '>=4'}
+ dependencies:
+ call-me-maybe: 1.0.2
+ glob-to-regexp: 0.3.0
+ dev: true
+
+ /@nodelib/fs.scandir@2.1.5:
+ resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
+ engines: {node: '>= 8'}
+ dependencies:
+ '@nodelib/fs.stat': 2.0.5
+ run-parallel: 1.2.0
+ dev: true
+
+ /@nodelib/fs.stat@1.1.3:
+ resolution: {integrity: sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==}
+ engines: {node: '>= 6'}
+ dev: true
+
+ /@nodelib/fs.stat@2.0.5:
+ resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
+ engines: {node: '>= 8'}
+ dev: true
+
+ /@nodelib/fs.walk@1.2.8:
+ resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
+ engines: {node: '>= 8'}
+ dependencies:
+ '@nodelib/fs.scandir': 2.1.5
+ fastq: 1.19.1
+ dev: true
+
+ /@octokit/auth-token@2.5.0:
+ resolution: {integrity: sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==}
+ dependencies:
+ '@octokit/types': 6.41.0
+ dev: true
+
+ /@octokit/auth-token@5.1.2:
+ resolution: {integrity: sha512-JcQDsBdg49Yky2w2ld20IHAlwr8d/d8N6NiOXbtuoPCqzbsiJgF633mVUw3x4mo0H5ypataQIX7SFu3yy44Mpw==}
+ engines: {node: '>= 18'}
+ dev: true
+
+ /@octokit/core@6.1.4:
+ resolution: {integrity: sha512-lAS9k7d6I0MPN+gb9bKDt7X8SdxknYqAMh44S5L+lNqIN2NuV8nvv3g8rPp7MuRxcOpxpUIATWprO0C34a8Qmg==}
+ engines: {node: '>= 18'}
+ dependencies:
+ '@octokit/auth-token': 5.1.2
+ '@octokit/graphql': 8.2.1
+ '@octokit/request': 9.2.2
+ '@octokit/request-error': 6.1.7
+ '@octokit/types': 13.8.0
+ before-after-hook: 3.0.2
+ universal-user-agent: 7.0.2
+ dev: true
+
+ /@octokit/endpoint@10.1.3:
+ resolution: {integrity: sha512-nBRBMpKPhQUxCsQQeW+rCJ/OPSMcj3g0nfHn01zGYZXuNDvvXudF/TYY6APj5THlurerpFN4a/dQAIAaM6BYhA==}
+ engines: {node: '>= 18'}
+ dependencies:
+ '@octokit/types': 13.8.0
+ universal-user-agent: 7.0.2
+ dev: true
+
+ /@octokit/endpoint@6.0.12:
+ resolution: {integrity: sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==}
+ dependencies:
+ '@octokit/types': 6.41.0
+ is-plain-object: 5.0.0
+ universal-user-agent: 6.0.1
+ dev: true
+
+ /@octokit/graphql@8.2.1:
+ resolution: {integrity: sha512-n57hXtOoHrhwTWdvhVkdJHdhTv0JstjDbDRhJfwIRNfFqmSo1DaK/mD2syoNUoLCyqSjBpGAKOG0BuwF392slw==}
+ engines: {node: '>= 18'}
+ dependencies:
+ '@octokit/request': 9.2.2
+ '@octokit/types': 13.8.0
+ universal-user-agent: 7.0.2
+ dev: true
+
+ /@octokit/openapi-types@12.11.0:
+ resolution: {integrity: sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==}
+ dev: true
+
+ /@octokit/openapi-types@23.0.1:
+ resolution: {integrity: sha512-izFjMJ1sir0jn0ldEKhZ7xegCTj/ObmEDlEfpFrx4k/JyZSMRHbO3/rBwgE7f3m2DHt+RrNGIVw4wSmwnm3t/g==}
+ dev: true
+
+ /@octokit/plugin-enterprise-rest@6.0.1:
+ resolution: {integrity: sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw==}
+ dev: true
+
+ /@octokit/plugin-paginate-rest@1.1.2:
+ resolution: {integrity: sha512-jbsSoi5Q1pj63sC16XIUboklNw+8tL9VOnJsWycWYR78TKss5PVpIPb1TUUcMQ+bBh7cY579cVAWmf5qG+dw+Q==}
+ dependencies:
+ '@octokit/types': 2.16.2
+ dev: true
+
+ /@octokit/plugin-request-log@1.0.4(@octokit/core@6.1.4):
+ resolution: {integrity: sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==}
+ peerDependencies:
+ '@octokit/core': '>=3'
+ dependencies:
+ '@octokit/core': 6.1.4
+ dev: true
+
+ /@octokit/plugin-rest-endpoint-methods@2.4.0:
+ resolution: {integrity: sha512-EZi/AWhtkdfAYi01obpX0DF7U6b1VRr30QNQ5xSFPITMdLSfhcBqjamE3F+sKcxPbD7eZuMHu3Qkk2V+JGxBDQ==}
+ dependencies:
+ '@octokit/types': 2.16.2
+ deprecation: 2.3.1
+ dev: true
+
+ /@octokit/request-error@1.2.1:
+ resolution: {integrity: sha512-+6yDyk1EES6WK+l3viRDElw96MvwfJxCt45GvmjDUKWjYIb3PJZQkq3i46TwGwoPD4h8NmTrENmtyA1FwbmhRA==}
+ dependencies:
+ '@octokit/types': 2.16.2
+ deprecation: 2.3.1
+ once: 1.4.0
+ dev: true
+
+ /@octokit/request-error@2.1.0:
+ resolution: {integrity: sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==}
+ dependencies:
+ '@octokit/types': 6.41.0
+ deprecation: 2.3.1
+ once: 1.4.0
+ dev: true
+
+ /@octokit/request-error@6.1.7:
+ resolution: {integrity: sha512-69NIppAwaauwZv6aOzb+VVLwt+0havz9GT5YplkeJv7fG7a40qpLt/yZKyiDxAhgz0EtgNdNcb96Z0u+Zyuy2g==}
+ engines: {node: '>= 18'}
+ dependencies:
+ '@octokit/types': 13.8.0
+ dev: true
+
+ /@octokit/request@5.6.3:
+ resolution: {integrity: sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==}
+ dependencies:
+ '@octokit/endpoint': 6.0.12
+ '@octokit/request-error': 2.1.0
+ '@octokit/types': 6.41.0
+ is-plain-object: 5.0.0
+ node-fetch: 2.7.0
+ universal-user-agent: 6.0.1
+ transitivePeerDependencies:
+ - encoding
+ dev: true
+
+ /@octokit/request@9.2.2:
+ resolution: {integrity: sha512-dZl0ZHx6gOQGcffgm1/Sf6JfEpmh34v3Af2Uci02vzUYz6qEN6zepoRtmybWXIGXFIK8K9ylE3b+duCWqhArtg==}
+ engines: {node: '>= 18'}
+ dependencies:
+ '@octokit/endpoint': 10.1.3
+ '@octokit/request-error': 6.1.7
+ '@octokit/types': 13.8.0
+ fast-content-type-parse: 2.0.1
+ universal-user-agent: 7.0.2
+ dev: true
+
+ /@octokit/rest@16.43.2(@octokit/core@6.1.4):
+ resolution: {integrity: sha512-ngDBevLbBTFfrHZeiS7SAMAZ6ssuVmXuya+F/7RaVvlysgGa1JKJkKWY+jV6TCJYcW0OALfJ7nTIGXcBXzycfQ==}
+ dependencies:
+ '@octokit/auth-token': 2.5.0
+ '@octokit/plugin-paginate-rest': 1.1.2
+ '@octokit/plugin-request-log': 1.0.4(@octokit/core@6.1.4)
+ '@octokit/plugin-rest-endpoint-methods': 2.4.0
+ '@octokit/request': 5.6.3
+ '@octokit/request-error': 1.2.1
+ atob-lite: 2.0.0
+ before-after-hook: 2.2.3
+ btoa-lite: 1.0.0
+ deprecation: 2.3.1
+ lodash.get: 4.4.2
+ lodash.set: 4.3.2
+ lodash.uniq: 4.5.0
+ octokit-pagination-methods: 1.1.0
+ once: 1.4.0
+ universal-user-agent: 4.0.1
+ transitivePeerDependencies:
+ - '@octokit/core'
+ - encoding
+ dev: true
+
+ /@octokit/types@13.8.0:
+ resolution: {integrity: sha512-x7DjTIbEpEWXK99DMd01QfWy0hd5h4EN+Q7shkdKds3otGQP+oWE/y0A76i1OvH9fygo4ddvNf7ZvF0t78P98A==}
+ dependencies:
+ '@octokit/openapi-types': 23.0.1
+ dev: true
+
+ /@octokit/types@2.16.2:
+ resolution: {integrity: sha512-O75k56TYvJ8WpAakWwYRN8Bgu60KrmX0z1KqFp1kNiFNkgW+JW+9EBKZ+S33PU6SLvbihqd+3drvPxKK68Ee8Q==}
+ dependencies:
+ '@types/node': 22.13.5
+ dev: true
+
+ /@octokit/types@6.41.0:
+ resolution: {integrity: sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==}
+ dependencies:
+ '@octokit/openapi-types': 12.11.0
+ dev: true
+
+ /@rollup/plugin-commonjs@17.1.0(rollup@2.79.2):
+ resolution: {integrity: sha512-PoMdXCw0ZyvjpCMT5aV4nkL0QywxP29sODQsSGeDpr/oI49Qq9tRtAsb/LbYbDzFlOydVEqHmmZWFtXJEAX9ew==}
+ engines: {node: '>= 8.0.0'}
+ peerDependencies:
+ rollup: ^2.30.0
+ dependencies:
+ '@rollup/pluginutils': 3.1.0(rollup@2.79.2)
+ commondir: 1.0.1
+ estree-walker: 2.0.2
+ glob: 7.2.3
+ is-reference: 1.2.1
+ magic-string: 0.25.9
+ resolve: 1.22.10
+ rollup: 2.79.2
+ dev: true
+
+ /@rollup/plugin-json@4.1.0(rollup@2.79.2):
+ resolution: {integrity: sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw==}
+ peerDependencies:
+ rollup: ^1.20.0 || ^2.0.0
+ dependencies:
+ '@rollup/pluginutils': 3.1.0(rollup@2.79.2)
+ rollup: 2.79.2
+ dev: true
+
+ /@rollup/plugin-node-resolve@11.2.1(rollup@2.79.2):
+ resolution: {integrity: sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg==}
+ engines: {node: '>= 10.0.0'}
+ peerDependencies:
+ rollup: ^1.20.0||^2.0.0
+ dependencies:
+ '@rollup/pluginutils': 3.1.0(rollup@2.79.2)
+ '@types/resolve': 1.17.1
+ builtin-modules: 3.3.0
+ deepmerge: 4.3.1
+ is-module: 1.0.0
+ resolve: 1.22.10
+ rollup: 2.79.2
+ dev: true
+
+ /@rollup/pluginutils@3.1.0(rollup@2.79.2):
+ resolution: {integrity: sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg==}
+ engines: {node: '>= 8.0.0'}
+ peerDependencies:
+ rollup: ^1.20.0||^2.0.0
+ dependencies:
+ '@types/estree': 0.0.39
+ estree-walker: 1.0.1
+ picomatch: 2.3.1
+ rollup: 2.79.2
+ dev: true
+
+ /@tsconfig/node10@1.0.11:
+ resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==}
+ dev: true
+
+ /@tsconfig/node12@1.0.11:
+ resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==}
+ dev: true
+
+ /@tsconfig/node14@1.0.3:
+ resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==}
+ dev: true
+
+ /@tsconfig/node16@1.0.4:
+ resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==}
+ dev: true
+
+ /@types/estree@0.0.39:
+ resolution: {integrity: sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==}
+ dev: true
+
+ /@types/estree@1.0.6:
+ resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==}
+ dev: true
+
+ /@types/glob@7.2.0:
+ resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==}
+ dependencies:
+ '@types/minimatch': 5.1.2
+ '@types/node': 22.13.5
+ dev: true
+
+ /@types/json-schema@7.0.15:
+ resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
+ dev: true
+
+ /@types/minimatch@5.1.2:
+ resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==}
+ dev: true
+
+ /@types/minimist@1.2.5:
+ resolution: {integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==}
+ dev: true
+
+ /@types/node@22.13.5:
+ resolution: {integrity: sha512-+lTU0PxZXn0Dr1NBtC7Y8cR21AJr87dLLU953CWA6pMxxv/UDc7jYAY90upcrie1nRcD6XNG5HOYEDtgW5TxAg==}
+ dependencies:
+ undici-types: 6.20.0
+ dev: true
+
+ /@types/normalize-package-data@2.4.4:
+ resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==}
+ dev: true
+
+ /@types/resolve@1.17.1:
+ resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==}
+ dependencies:
+ '@types/node': 22.13.5
+ dev: true
+
+ /@typescript-eslint/eslint-plugin@4.33.0(@typescript-eslint/parser@4.33.0)(eslint@7.32.0)(typescript@4.9.5):
+ resolution: {integrity: sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==}
+ engines: {node: ^10.12.0 || >=12.0.0}
+ peerDependencies:
+ '@typescript-eslint/parser': ^4.0.0
+ eslint: ^5.0.0 || ^6.0.0 || ^7.0.0
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ '@typescript-eslint/experimental-utils': 4.33.0(eslint@7.32.0)(typescript@4.9.5)
+ '@typescript-eslint/parser': 4.33.0(eslint@7.32.0)(typescript@4.9.5)
+ '@typescript-eslint/scope-manager': 4.33.0
+ debug: 4.4.0
+ eslint: 7.32.0
+ functional-red-black-tree: 1.0.1
+ ignore: 5.3.2
+ regexpp: 3.2.0
+ semver: 7.7.1
+ tsutils: 3.21.0(typescript@4.9.5)
+ typescript: 4.9.5
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@typescript-eslint/experimental-utils@4.33.0(eslint@7.32.0)(typescript@4.9.5):
+ resolution: {integrity: sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==}
+ engines: {node: ^10.12.0 || >=12.0.0}
+ peerDependencies:
+ eslint: '*'
+ dependencies:
+ '@types/json-schema': 7.0.15
+ '@typescript-eslint/scope-manager': 4.33.0
+ '@typescript-eslint/types': 4.33.0
+ '@typescript-eslint/typescript-estree': 4.33.0(typescript@4.9.5)
+ eslint: 7.32.0
+ eslint-scope: 5.1.1
+ eslint-utils: 3.0.0(eslint@7.32.0)
+ transitivePeerDependencies:
+ - supports-color
+ - typescript
+ dev: true
+
+ /@typescript-eslint/parser@4.33.0(eslint@7.32.0)(typescript@4.9.5):
+ resolution: {integrity: sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==}
+ engines: {node: ^10.12.0 || >=12.0.0}
+ peerDependencies:
+ eslint: ^5.0.0 || ^6.0.0 || ^7.0.0
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ '@typescript-eslint/scope-manager': 4.33.0
+ '@typescript-eslint/types': 4.33.0
+ '@typescript-eslint/typescript-estree': 4.33.0(typescript@4.9.5)
+ debug: 4.4.0
+ eslint: 7.32.0
+ typescript: 4.9.5
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@typescript-eslint/scope-manager@4.33.0:
+ resolution: {integrity: sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==}
+ engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1}
+ dependencies:
+ '@typescript-eslint/types': 4.33.0
+ '@typescript-eslint/visitor-keys': 4.33.0
+ dev: true
+
+ /@typescript-eslint/types@4.33.0:
+ resolution: {integrity: sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==}
+ engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1}
+ dev: true
+
+ /@typescript-eslint/typescript-estree@4.33.0(typescript@4.9.5):
+ resolution: {integrity: sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==}
+ engines: {node: ^10.12.0 || >=12.0.0}
+ peerDependencies:
+ typescript: '*'
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+ dependencies:
+ '@typescript-eslint/types': 4.33.0
+ '@typescript-eslint/visitor-keys': 4.33.0
+ debug: 4.4.0
+ globby: 11.1.0
+ is-glob: 4.0.3
+ semver: 7.7.1
+ tsutils: 3.21.0(typescript@4.9.5)
+ typescript: 4.9.5
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /@typescript-eslint/visitor-keys@4.33.0:
+ resolution: {integrity: sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==}
+ engines: {node: ^8.10.0 || ^10.13.0 || >=11.10.1}
+ dependencies:
+ '@typescript-eslint/types': 4.33.0
+ eslint-visitor-keys: 2.1.0
+ dev: true
+
+ /@zkochan/cmd-shim@3.1.0:
+ resolution: {integrity: sha512-o8l0+x7C7sMZU3v9GuJIAU10qQLtwR1dtRQIOmlNMtyaqhmpXOzx1HWiYoWfmmf9HHZoAkXpc9TM9PQYF9d4Jg==}
+ engines: {node: '>=6'}
+ dependencies:
+ is-windows: 1.0.2
+ mkdirp-promise: 5.0.1
+ mz: 2.7.0
+ dev: true
+
+ /JSONStream@1.3.5:
+ resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==}
+ hasBin: true
+ dependencies:
+ jsonparse: 1.3.1
+ through: 2.3.8
+ dev: true
+
+ /abbrev@1.1.1:
+ resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==}
+ dev: true
+
+ /accepts@1.3.8:
+ resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==}
+ engines: {node: '>= 0.6'}
+ dependencies:
+ mime-types: 2.1.35
+ negotiator: 0.6.3
+ dev: true
+
+ /acorn-jsx@5.3.2(acorn@7.4.1):
+ resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
+ peerDependencies:
+ acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
+ dependencies:
+ acorn: 7.4.1
+ dev: true
+
+ /acorn-walk@8.3.4:
+ resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==}
+ engines: {node: '>=0.4.0'}
+ dependencies:
+ acorn: 8.14.0
+ dev: true
+
+ /acorn@7.4.1:
+ resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==}
+ engines: {node: '>=0.4.0'}
+ hasBin: true
+ dev: true
+
+ /acorn@8.14.0:
+ resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==}
+ engines: {node: '>=0.4.0'}
+ hasBin: true
+ dev: true
+
+ /agent-base@4.2.1:
+ resolution: {integrity: sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==}
+ engines: {node: '>= 4.0.0'}
+ dependencies:
+ es6-promisify: 5.0.0
+ dev: true
+
+ /agent-base@4.3.0:
+ resolution: {integrity: sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==}
+ engines: {node: '>= 4.0.0'}
+ dependencies:
+ es6-promisify: 5.0.0
+ dev: true
+
+ /agentkeepalive@3.5.3:
+ resolution: {integrity: sha512-yqXL+k5rr8+ZRpOAntkaaRgWgE5o8ESAj5DyRmVTCSoZxXmqemb9Dd7T4i5UzwuERdLAJUy6XzR9zFVuf0kzkw==}
+ engines: {node: '>= 4.0.0'}
+ dependencies:
+ humanize-ms: 1.2.1
+ dev: true
+
+ /ajv@6.12.6:
+ resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
+ dependencies:
+ fast-deep-equal: 3.1.3
+ fast-json-stable-stringify: 2.1.0
+ json-schema-traverse: 0.4.1
+ uri-js: 4.4.1
+ dev: true
+
+ /ajv@8.17.1:
+ resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==}
+ dependencies:
+ fast-deep-equal: 3.1.3
+ fast-uri: 3.0.6
+ json-schema-traverse: 1.0.0
+ require-from-string: 2.0.2
+ dev: true
+
+ /all-contributors-cli@6.26.1:
+ resolution: {integrity: sha512-Ymgo3FJACRBEd1eE653FD1J/+uD0kqpUNYfr9zNC1Qby0LgbhDBzB3EF6uvkAbYpycStkk41J+0oo37Lc02yEw==}
+ engines: {node: '>=4'}
+ hasBin: true
+ dependencies:
+ '@babel/runtime': 7.26.9
+ async: 3.2.6
+ chalk: 4.1.2
+ didyoumean: 1.2.2
+ inquirer: 7.3.3
+ json-fixer: 1.6.15
+ lodash: 4.17.21
+ node-fetch: 2.7.0
+ pify: 5.0.0
+ yargs: 15.4.1
+ optionalDependencies:
+ prettier: 2.8.8
+ transitivePeerDependencies:
+ - encoding
+ dev: true
+
+ /ansi-colors@3.2.3:
+ resolution: {integrity: sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /ansi-colors@4.1.3:
+ resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /ansi-escapes@3.2.0:
+ resolution: {integrity: sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==}
+ engines: {node: '>=4'}
+ dev: true
+
+ /ansi-escapes@4.3.2:
+ resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==}
+ engines: {node: '>=8'}
+ dependencies:
+ type-fest: 0.21.3
+ dev: true
+
+ /ansi-regex@2.1.1:
+ resolution: {integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /ansi-regex@3.0.1:
+ resolution: {integrity: sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==}
+ engines: {node: '>=4'}
+ dev: true
+
+ /ansi-regex@4.1.1:
+ resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /ansi-regex@5.0.1:
+ resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /ansi-styles@2.2.1:
+ resolution: {integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /ansi-styles@3.2.1:
+ resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
+ engines: {node: '>=4'}
+ dependencies:
+ color-convert: 1.9.3
+ dev: true
+
+ /ansi-styles@4.3.0:
+ resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
+ engines: {node: '>=8'}
+ dependencies:
+ color-convert: 2.0.1
+ dev: true
+
+ /any-promise@1.3.0:
+ resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==}
+ dev: true
+
+ /append-type@1.0.2:
+ resolution: {integrity: sha512-hac740vT/SAbrFBLgLIWZqVT5PUAcGTWS5UkDDhr+OCizZSw90WKw6sWAEgGaYd2viIblggypMXwpjzHXOvAQg==}
+ dev: true
+
+ /application-config-path@0.1.1:
+ resolution: {integrity: sha512-zy9cHePtMP0YhwG+CfHm0bgwdnga2X3gZexpdCwEj//dpb+TKajtiC8REEUJUSq6Ab4f9cgNy2l8ObXzCXFkEw==}
+ dev: true
+
+ /application-config@0.1.2:
+ resolution: {integrity: sha512-Ryjni0MtYYW9Qz2iTIMF5B/4uRJV3dt5f7PYgQ7sjTh3BUf4EvOo83F84Z2//2HP+mUbwRw35/W1jhM5EZhk9Q==}
+ dependencies:
+ application-config-path: 0.1.1
+ mkdirp: 0.5.6
+ dev: true
+
+ /aproba@1.2.0:
+ resolution: {integrity: sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==}
+ dev: true
+
+ /aproba@2.0.0:
+ resolution: {integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==}
+ dev: true
+
+ /are-we-there-yet@1.1.7:
+ resolution: {integrity: sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==}
+ deprecated: This package is no longer supported.
+ dependencies:
+ delegates: 1.0.0
+ readable-stream: 2.3.8
+ dev: true
+
+ /arg@4.1.3:
+ resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==}
+ dev: true
+
+ /argparse@1.0.10:
+ resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==}
+ dependencies:
+ sprintf-js: 1.0.3
+ dev: true
+
+ /arr-diff@4.0.0:
+ resolution: {integrity: sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /arr-flatten@1.1.0:
+ resolution: {integrity: sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /arr-union@3.1.0:
+ resolution: {integrity: sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /array-buffer-byte-length@1.0.2:
+ resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bound: 1.0.3
+ is-array-buffer: 3.0.5
+ dev: true
+
+ /array-differ@2.1.0:
+ resolution: {integrity: sha512-KbUpJgx909ZscOc/7CLATBFam7P1Z1QRQInvgT0UztM9Q72aGKCunKASAl7WNW0tnPmPyEMeMhdsfWhfmW037w==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /array-each@1.0.1:
+ resolution: {integrity: sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /array-find-index@1.0.2:
+ resolution: {integrity: sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /array-ify@1.0.0:
+ resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==}
+ dev: true
+
+ /array-slice@1.1.0:
+ resolution: {integrity: sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /array-to-sentence@1.1.0:
+ resolution: {integrity: sha512-YkwkMmPA2+GSGvXj1s9NZ6cc2LBtR+uSeWTy2IGi5MR1Wag4DdrcjTxA/YV/Fw+qKlBeXomneZgThEbm/wvZbw==}
+ dev: true
+
+ /array-union@1.0.2:
+ resolution: {integrity: sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ array-uniq: 1.0.3
+ dev: true
+
+ /array-union@2.1.0:
+ resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /array-uniq@1.0.3:
+ resolution: {integrity: sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /array-unique@0.3.2:
+ resolution: {integrity: sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /array.prototype.reduce@1.0.7:
+ resolution: {integrity: sha512-mzmiUCVwtiD4lgxYP8g7IYy8El8p2CSMePvIbTS7gchKir/L1fgJrk0yDKmAX6mnRQFKNADYIk8nNlTris5H1Q==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.8
+ define-properties: 1.2.1
+ es-abstract: 1.23.9
+ es-array-method-boxes-properly: 1.0.0
+ es-errors: 1.3.0
+ es-object-atoms: 1.1.1
+ is-string: 1.1.1
+ dev: true
+
+ /arraybuffer.prototype.slice@1.0.4:
+ resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ array-buffer-byte-length: 1.0.2
+ call-bind: 1.0.8
+ define-properties: 1.2.1
+ es-abstract: 1.23.9
+ es-errors: 1.3.0
+ get-intrinsic: 1.3.0
+ is-array-buffer: 3.0.5
+ dev: true
+
+ /arrify@1.0.1:
+ resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /asap@2.0.6:
+ resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==}
+ dev: true
+
+ /asn1@0.1.11:
+ resolution: {integrity: sha512-Fh9zh3G2mZ8qM/kwsiKwL2U2FmXxVsboP4x1mXjnhKHv3SmzaBZoYvxEQJz/YS2gnCgd8xlAVWcZnQyC9qZBsA==}
+ engines: {node: '>=0.4.9'}
+ dev: true
+
+ /asn1@0.2.6:
+ resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==}
+ dependencies:
+ safer-buffer: 2.1.2
+ dev: true
+
+ /assert-fs-readfile-option@1.0.1:
+ resolution: {integrity: sha512-bESFgerRqZpPcFWBW/cXl0l1XQVLPFi80i31S6eYLIzksnNKdTKBlMoC7Dy/FWAj/97XIYhpe2CmVogifnEkMw==}
+ dependencies:
+ nop: 1.0.0
+ dev: true
+
+ /assert-plus@0.1.5:
+ resolution: {integrity: sha512-brU24g7ryhRwGCI2y+1dGQmQXiZF7TtIj583S96y0jjdajIe6wn8BuXyELYhvD22dtIxDQVFk04YTJwwdwOYJw==}
+ engines: {node: '>=0.8'}
+ dev: true
+
+ /assert-plus@1.0.0:
+ resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==}
+ engines: {node: '>=0.8'}
+ dev: true
+
+ /assert-valid-glob-opts@1.0.0:
+ resolution: {integrity: sha512-/mttty5Xh7wE4o7ttKaUpBJl0l04xWe3y6muy1j27gyzSsnceK0AYU9owPtUoL9z8+9hnPxztmuhdFZ7jRoyWw==}
+ dependencies:
+ glob-option-error: 1.0.0
+ validate-glob-opts: 1.0.2
+ dev: true
+
+ /assertion-error@1.1.0:
+ resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==}
+ dev: true
+
+ /assign-symbols@1.0.0:
+ resolution: {integrity: sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /astral-regex@2.0.0:
+ resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /async-function@1.0.0:
+ resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==}
+ engines: {node: '>= 0.4'}
+ dev: true
+
+ /async@0.2.10:
+ resolution: {integrity: sha512-eAkdoKxU6/LkKDBzLpT+t6Ff5EtfSF4wx1WfJiPEEV7WNLnDaRXk0oVysiEPm262roaachGexwUv94WhSgN5TQ==}
+ dev: true
+
+ /async@1.5.2:
+ resolution: {integrity: sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==}
+ dev: true
+
+ /async@3.2.6:
+ resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==}
+ dev: true
+
+ /asynckit@0.4.0:
+ resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
+ dev: true
+
+ /atob-lite@2.0.0:
+ resolution: {integrity: sha512-LEeSAWeh2Gfa2FtlQE1shxQ8zi5F9GHarrGKz08TMdODD5T4eH6BMsvtnhbWZ+XQn+Gb6om/917ucvRu7l7ukw==}
+ dev: true
+
+ /atob@2.1.2:
+ resolution: {integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==}
+ engines: {node: '>= 4.5.0'}
+ hasBin: true
+ dev: true
+
+ /autoprefixer@6.7.7:
+ resolution: {integrity: sha512-WKExI/eSGgGAkWAO+wMVdFObZV7hQen54UpD1kCCTN3tvlL3W1jL4+lPP/M7MwoP7Q4RHzKtO3JQ4HxYEcd+xQ==}
+ dependencies:
+ browserslist: 1.7.7
+ caniuse-db: 1.0.30001701
+ normalize-range: 0.1.2
+ num2fraction: 1.2.2
+ postcss: 5.2.18
+ postcss-value-parser: 3.3.1
+ dev: true
+
+ /available-typed-arrays@1.0.7:
+ resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ possible-typed-array-names: 1.1.0
+ dev: true
+
+ /aws-sign2@0.7.0:
+ resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==}
+ dev: true
+
+ /aws-sign@0.3.0:
+ resolution: {integrity: sha512-pEMJAknifcXqXqYVXzGPIu8mJvxtJxIdpVpAs8HNS+paT+9srRUDMQn+3hULS7WbLmttcmvgMvnDcFujqXJyPw==}
+ dev: true
+
+ /aws4@1.13.2:
+ resolution: {integrity: sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==}
+ dev: true
+
+ /balanced-match@1.0.2:
+ resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
+ dev: true
+
+ /base@0.11.2:
+ resolution: {integrity: sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ cache-base: 1.0.1
+ class-utils: 0.3.6
+ component-emitter: 1.3.1
+ define-property: 1.0.0
+ isobject: 3.0.1
+ mixin-deep: 1.3.2
+ pascalcase: 0.1.1
+ dev: true
+
+ /basic-auth@2.0.1:
+ resolution: {integrity: sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==}
+ engines: {node: '>= 0.8'}
+ dependencies:
+ safe-buffer: 5.1.2
+ dev: true
+
+ /batch@0.6.1:
+ resolution: {integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==}
+ dev: true
+
+ /bcrypt-pbkdf@1.0.2:
+ resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==}
+ dependencies:
+ tweetnacl: 0.14.5
+ dev: true
+
+ /before-after-hook@2.2.3:
+ resolution: {integrity: sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==}
+ dev: true
+
+ /before-after-hook@3.0.2:
+ resolution: {integrity: sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A==}
+ dev: true
+
+ /benchmark@2.1.4:
+ resolution: {integrity: sha512-l9MlfN4M1K/H2fbhfMy3B7vJd6AGKJVQn2h6Sg/Yx+KckoUA7ewS5Vv6TjSq18ooE1kS9hhAlQRH3AkXIh/aOQ==}
+ dependencies:
+ lodash: 4.17.21
+ platform: 1.3.6
+ dev: true
+
+ /benny@3.7.1:
+ resolution: {integrity: sha512-USzYxODdVfOS7JuQq/L0naxB788dWCiUgUTxvN+WLPt/JfcDURNNj8kN/N+uK6PDvuR67/9/55cVKGPleFQINA==}
+ engines: {node: '>=12'}
+ dependencies:
+ '@arrows/composition': 1.2.2
+ '@arrows/dispatch': 1.0.3
+ '@arrows/multimethod': 1.4.1
+ benchmark: 2.1.4
+ common-tags: 1.8.2
+ fs-extra: 10.1.0
+ json2csv: 5.0.7
+ kleur: 4.1.5
+ log-update: 4.0.0
+ dev: true
+
+ /bl@0.9.5:
+ resolution: {integrity: sha512-njlCs8XLBIK7LCChTWfzWuIAxkpmmLXcL7/igCofFT1B039Sz0IPnAmosN5QaO22lU4qr8LcUz2ojUlE6pLkRQ==}
+ dependencies:
+ readable-stream: 1.0.34
+ dev: true
+
+ /bluebird@1.0.3:
+ resolution: {integrity: sha512-97HxegERaUQxXTDVTITyt7QuXEapf5uVXPVXKg6UjPvFC3N46KGvg/obSNZQbekkDbZlzxppDdTjAxel7WSXaA==}
+ dev: true
+
+ /bluebird@3.7.2:
+ resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==}
+ dev: true
+
+ /boom@0.4.2:
+ resolution: {integrity: sha512-OvfN8y1oAxxphzkl2SnCS+ztV/uVKTATtgLjWYg/7KwcNyf3rzpHxNQJZCKtsZd4+MteKczhWbSjtEX4bGgU9g==}
+ engines: {node: '>=0.8.0'}
+ deprecated: This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial).
+ dependencies:
+ hoek: 0.9.1
+ dev: true
+
+ /bootstrap-less-port@0.3.0:
+ resolution: {integrity: sha512-08aP3FZ7QQ0muffrYguACtN06dfkYvPI6yZEmXSZ3T7VfPD0mVT60lcM4pEW0we3W7BTUlhqYHCGTXrUzWbYoA==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /brace-expansion@1.1.11:
+ resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
+ dependencies:
+ balanced-match: 1.0.2
+ concat-map: 0.0.1
+ dev: true
+
+ /braces@2.3.2:
+ resolution: {integrity: sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ arr-flatten: 1.1.0
+ array-unique: 0.3.2
+ extend-shallow: 2.0.1
+ fill-range: 4.0.0
+ isobject: 3.0.1
+ repeat-element: 1.1.4
+ snapdragon: 0.8.2
+ snapdragon-node: 2.1.1
+ split-string: 3.1.0
+ to-regex: 3.0.2
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /braces@3.0.3:
+ resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
+ engines: {node: '>=8'}
+ dependencies:
+ fill-range: 7.1.1
+ dev: true
+
+ /browser-stdout@1.3.1:
+ resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==}
+ dev: true
+
+ /browserslist@1.7.7:
+ resolution: {integrity: sha512-qHJblDE2bXVRYzuDetv/wAeHOJyO97+9wxC1cdCtyzgNuSozOyRCiiLaCR1f71AN66lQdVVBipWm63V+a7bPOw==}
+ deprecated: Browserslist 2 could fail on reading Browserslist >3.0 config used in other tools.
+ hasBin: true
+ dependencies:
+ caniuse-db: 1.0.30001701
+ electron-to-chromium: 1.5.108
+ dev: true
+
+ /btoa-lite@1.0.0:
+ resolution: {integrity: sha512-gvW7InbIyF8AicrqWoptdW08pUxuhq8BEgowNajy9RhiE86fmGAGl+bLKo6oB8QP0CkqHLowfN0oJdKC/J6LbA==}
+ dev: true
+
+ /buffer-from@1.1.2:
+ resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
+ dev: true
+
+ /builtin-modules@3.3.0:
+ resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /builtins@1.0.3:
+ resolution: {integrity: sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==}
+ dev: true
+
+ /byline@5.0.0:
+ resolution: {integrity: sha512-s6webAy+R4SR8XVuJWt2V2rGvhnrhxN+9S15GNuTK3wKPOXFF6RNc+8ug2XhH+2s4f+uudG4kUVYmYOQWL2g0Q==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /byte-size@5.0.1:
+ resolution: {integrity: sha512-/XuKeqWocKsYa/cBY1YbSJSWWqTi4cFgr9S6OyM7PBaPbr9zvNGwWP33vt0uqGhwDdN+y3yhbXVILEUpnwEWGw==}
+ engines: {node: '>=6.0.0'}
+ dev: true
+
+ /cacache@12.0.4:
+ resolution: {integrity: sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==}
+ dependencies:
+ bluebird: 3.7.2
+ chownr: 1.1.4
+ figgy-pudding: 3.5.2
+ glob: 7.2.3
+ graceful-fs: 4.2.11
+ infer-owner: 1.0.4
+ lru-cache: 5.1.1
+ mississippi: 3.0.0
+ mkdirp: 0.5.6
+ move-concurrently: 1.0.1
+ promise-inflight: 1.0.1(bluebird@3.7.2)
+ rimraf: 2.7.1
+ ssri: 6.0.2
+ unique-filename: 1.1.1
+ y18n: 4.0.3
+ dev: true
+
+ /cache-base@1.0.1:
+ resolution: {integrity: sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ collection-visit: 1.0.0
+ component-emitter: 1.3.1
+ get-value: 2.0.6
+ has-value: 1.0.0
+ isobject: 3.0.1
+ set-value: 2.0.1
+ to-object-path: 0.3.0
+ union-value: 1.0.1
+ unset-value: 1.0.0
+ dev: true
+
+ /call-bind-apply-helpers@1.0.2:
+ resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ es-errors: 1.3.0
+ function-bind: 1.1.2
+ dev: true
+
+ /call-bind@1.0.8:
+ resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind-apply-helpers: 1.0.2
+ es-define-property: 1.0.1
+ get-intrinsic: 1.3.0
+ set-function-length: 1.2.2
+ dev: true
+
+ /call-bound@1.0.3:
+ resolution: {integrity: sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind-apply-helpers: 1.0.2
+ get-intrinsic: 1.3.0
+ dev: true
+
+ /call-me-maybe@1.0.2:
+ resolution: {integrity: sha512-HpX65o1Hnr9HH25ojC1YGs7HCQLq0GCOibSaWER0eNpgJ/Z1MZv2mTc7+xh6WOPxbRVcmgbv4hGU+uSQ/2xFZQ==}
+ dev: true
+
+ /caller-callsite@2.0.0:
+ resolution: {integrity: sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==}
+ engines: {node: '>=4'}
+ dependencies:
+ callsites: 2.0.0
+ dev: true
+
+ /caller-path@2.0.0:
+ resolution: {integrity: sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==}
+ engines: {node: '>=4'}
+ dependencies:
+ caller-callsite: 2.0.0
+ dev: true
+
+ /callsites@2.0.0:
+ resolution: {integrity: sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==}
+ engines: {node: '>=4'}
+ dev: true
+
+ /callsites@3.1.0:
+ resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /camelcase-keys@2.1.0:
+ resolution: {integrity: sha512-bA/Z/DERHKqoEOrp+qeGKw1QlvEQkGZSc0XaY6VnTxZr+Kv1G5zFwttpjv8qxZ/sBPT4nthwZaAcsAZTJlSKXQ==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ camelcase: 2.1.1
+ map-obj: 1.0.1
+ dev: true
+
+ /camelcase-keys@4.2.0:
+ resolution: {integrity: sha512-Ej37YKYbFUI8QiYlvj9YHb6/Z60dZyPJW0Cs8sFilMbd2lP0bw3ylAq9yJkK4lcTA2dID5fG8LjmJYbO7kWb7Q==}
+ engines: {node: '>=4'}
+ dependencies:
+ camelcase: 4.1.0
+ map-obj: 2.0.0
+ quick-lru: 1.1.0
+ dev: true
+
+ /camelcase-keys@6.2.2:
+ resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==}
+ engines: {node: '>=8'}
+ dependencies:
+ camelcase: 5.3.1
+ map-obj: 4.3.0
+ quick-lru: 4.0.1
+ dev: true
+
+ /camelcase@2.1.1:
+ resolution: {integrity: sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /camelcase@4.1.0:
+ resolution: {integrity: sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw==}
+ engines: {node: '>=4'}
+ dev: true
+
+ /camelcase@5.3.1:
+ resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /caniuse-db@1.0.30001701:
+ resolution: {integrity: sha512-+2csbmE3HM6ugN0zrIEjOGH65IaDWQ5r4m2py3apGIPe/iCtGgUMeZZJT4QL4SVzdY4y7o/gYUEvESebvznjjg==}
+ dev: true
+
+ /caseless@0.12.0:
+ resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==}
+ dev: true
+
+ /chai@4.5.0:
+ resolution: {integrity: sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==}
+ engines: {node: '>=4'}
+ dependencies:
+ assertion-error: 1.1.0
+ check-error: 1.0.3
+ deep-eql: 4.1.4
+ get-func-name: 2.0.2
+ loupe: 2.3.7
+ pathval: 1.1.1
+ type-detect: 4.1.0
+ dev: true
+
+ /chalk@1.1.3:
+ resolution: {integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ ansi-styles: 2.2.1
+ escape-string-regexp: 1.0.5
+ has-ansi: 2.0.0
+ strip-ansi: 3.0.1
+ supports-color: 2.0.0
+ dev: true
+
+ /chalk@2.4.2:
+ resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
+ engines: {node: '>=4'}
+ dependencies:
+ ansi-styles: 3.2.1
+ escape-string-regexp: 1.0.5
+ supports-color: 5.5.0
+ dev: true
+
+ /chalk@4.1.2:
+ resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
+ engines: {node: '>=10'}
+ dependencies:
+ ansi-styles: 4.3.0
+ supports-color: 7.2.0
+ dev: true
+
+ /chardet@0.7.0:
+ resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==}
+ dev: true
+
+ /check-error@1.0.3:
+ resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==}
+ dependencies:
+ get-func-name: 2.0.2
+ dev: true
+
+ /chownr@1.1.4:
+ resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==}
+ dev: true
+
+ /ci-info@2.0.0:
+ resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==}
+ dev: true
+
+ /class-utils@0.3.6:
+ resolution: {integrity: sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ arr-union: 3.1.0
+ define-property: 0.2.5
+ isobject: 3.0.1
+ static-extend: 0.1.2
+ dev: true
+
+ /clean-css@5.3.3:
+ resolution: {integrity: sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==}
+ engines: {node: '>= 10.0'}
+ dependencies:
+ source-map: 0.6.1
+ dev: true
+
+ /cli-cursor@2.1.0:
+ resolution: {integrity: sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==}
+ engines: {node: '>=4'}
+ dependencies:
+ restore-cursor: 2.0.0
+ dev: true
+
+ /cli-cursor@3.1.0:
+ resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==}
+ engines: {node: '>=8'}
+ dependencies:
+ restore-cursor: 3.1.0
+ dev: true
+
+ /cli-width@2.2.1:
+ resolution: {integrity: sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==}
+ dev: true
+
+ /cli-width@3.0.0:
+ resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==}
+ engines: {node: '>= 10'}
+ dev: true
+
+ /cliui@5.0.0:
+ resolution: {integrity: sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==}
+ dependencies:
+ string-width: 3.1.0
+ strip-ansi: 5.2.0
+ wrap-ansi: 5.1.0
+ dev: true
+
+ /cliui@6.0.0:
+ resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==}
+ dependencies:
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+ wrap-ansi: 6.2.0
+ dev: true
+
+ /clone-deep@4.0.1:
+ resolution: {integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==}
+ engines: {node: '>=6'}
+ dependencies:
+ is-plain-object: 2.0.4
+ kind-of: 6.0.3
+ shallow-clone: 3.0.1
+ dev: true
+
+ /clone@1.0.4:
+ resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==}
+ engines: {node: '>=0.8'}
+ dev: true
+
+ /code-point-at@1.1.0:
+ resolution: {integrity: sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /collection-visit@1.0.0:
+ resolution: {integrity: sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ map-visit: 1.0.0
+ object-visit: 1.0.1
+ dev: true
+
+ /color-convert@1.9.3:
+ resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
+ dependencies:
+ color-name: 1.1.3
+ dev: true
+
+ /color-convert@2.0.1:
+ resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
+ engines: {node: '>=7.0.0'}
+ dependencies:
+ color-name: 1.1.4
+ dev: true
+
+ /color-name@1.1.3:
+ resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}
+ dev: true
+
+ /color-name@1.1.4:
+ resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
+ dev: true
+
+ /colors@0.5.1:
+ resolution: {integrity: sha512-XjsuUwpDeY98+yz959OlUK6m7mLBM+1MEG5oaenfuQnNnrQk1WvtcvFgN3FNDP3f2NmZ211t0mNEfSEN1h0eIg==}
+ engines: {node: '>=0.1.90'}
+ dev: true
+
+ /colors@1.1.2:
+ resolution: {integrity: sha512-ENwblkFQpqqia6b++zLD/KUWafYlVY/UNnAp7oz7LY7E924wmpye416wBOmvv/HMWzl8gL1kJlfvId/1Dg176w==}
+ engines: {node: '>=0.1.90'}
+ dev: true
+
+ /columnify@1.6.0:
+ resolution: {integrity: sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==}
+ engines: {node: '>=8.0.0'}
+ dependencies:
+ strip-ansi: 6.0.1
+ wcwidth: 1.0.1
+ dev: true
+
+ /combined-stream@0.0.7:
+ resolution: {integrity: sha512-qfexlmLp9MyrkajQVyjEDb0Vj+KhRgR/rxLiVhaihlT+ZkX0lReqtH6Ack40CvMDERR4b5eFp3CreskpBs1Pig==}
+ engines: {node: '>= 0.8'}
+ dependencies:
+ delayed-stream: 0.0.5
+ dev: true
+
+ /combined-stream@1.0.8:
+ resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
+ engines: {node: '>= 0.8'}
+ dependencies:
+ delayed-stream: 1.0.0
+ dev: true
+
+ /commander@2.20.3:
+ resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==}
+ dev: true
+
+ /commander@6.2.1:
+ resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==}
+ engines: {node: '>= 6'}
+ dev: true
+
+ /common-tags@1.8.2:
+ resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==}
+ engines: {node: '>=4.0.0'}
+ dev: true
+
+ /commondir@1.0.1:
+ resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==}
+ dev: true
+
+ /compare-func@2.0.0:
+ resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==}
+ dependencies:
+ array-ify: 1.0.0
+ dot-prop: 5.3.0
+ dev: true
+
+ /component-emitter@1.3.1:
+ resolution: {integrity: sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==}
+ dev: true
+
+ /concat-map@0.0.1:
+ resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
+ dev: true
+
+ /concat-stream@1.6.2:
+ resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==}
+ engines: {'0': node >= 0.8}
+ dependencies:
+ buffer-from: 1.1.2
+ inherits: 2.0.4
+ readable-stream: 2.3.8
+ typedarray: 0.0.6
+ dev: true
+
+ /concat-stream@2.0.0:
+ resolution: {integrity: sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==}
+ engines: {'0': node >= 6.0}
+ dependencies:
+ buffer-from: 1.1.2
+ inherits: 2.0.4
+ readable-stream: 3.6.2
+ typedarray: 0.0.6
+ dev: true
+
+ /config-chain@1.1.13:
+ resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==}
+ dependencies:
+ ini: 1.3.8
+ proto-list: 1.2.4
+ dev: true
+
+ /connect-livereload@0.5.4:
+ resolution: {integrity: sha512-3KnRwsWf4VmP01I4hCDQqTc4e2UxOvJIi8i08GiwqX2oymzxNFY7PqjFkwHglYTJ0yzUJkO5yqdPxVaIz3Pbug==}
+ dev: true
+
+ /connect@3.7.0:
+ resolution: {integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==}
+ engines: {node: '>= 0.10.0'}
+ dependencies:
+ debug: 2.6.9
+ finalhandler: 1.1.2
+ parseurl: 1.3.3
+ utils-merge: 1.0.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /console-control-strings@1.1.0:
+ resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==}
+ dev: true
+
+ /conventional-changelog-angular@5.0.13:
+ resolution: {integrity: sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==}
+ engines: {node: '>=10'}
+ dependencies:
+ compare-func: 2.0.0
+ q: 1.5.1
+ dev: true
+
+ /conventional-changelog-core@3.2.3:
+ resolution: {integrity: sha512-LMMX1JlxPIq/Ez5aYAYS5CpuwbOk6QFp8O4HLAcZxe3vxoCtABkhfjetk8IYdRB9CDQGwJFLR3Dr55Za6XKgUQ==}
+ engines: {node: '>=6.9.0'}
+ dependencies:
+ conventional-changelog-writer: 4.1.0
+ conventional-commits-parser: 3.2.4
+ dateformat: 3.0.3
+ get-pkg-repo: 1.4.0
+ git-raw-commits: 2.0.0
+ git-remote-origin-url: 2.0.0
+ git-semver-tags: 2.0.3
+ lodash: 4.17.21
+ normalize-package-data: 2.5.0
+ q: 1.5.1
+ read-pkg: 3.0.0
+ read-pkg-up: 3.0.0
+ through2: 3.0.2
+ dev: true
+
+ /conventional-changelog-preset-loader@2.3.4:
+ resolution: {integrity: sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g==}
+ engines: {node: '>=10'}
+ dev: true
+
+ /conventional-changelog-writer@4.1.0:
+ resolution: {integrity: sha512-WwKcUp7WyXYGQmkLsX4QmU42AZ1lqlvRW9mqoyiQzdD+rJWbTepdWoKJuwXTS+yq79XKnQNa93/roViPQrAQgw==}
+ engines: {node: '>=10'}
+ hasBin: true
+ dependencies:
+ compare-func: 2.0.0
+ conventional-commits-filter: 2.0.7
+ dateformat: 3.0.3
+ handlebars: 4.7.8
+ json-stringify-safe: 5.0.1
+ lodash: 4.17.21
+ meow: 8.1.2
+ semver: 6.3.1
+ split: 1.0.1
+ through2: 4.0.2
+ dev: true
+
+ /conventional-commits-filter@2.0.7:
+ resolution: {integrity: sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA==}
+ engines: {node: '>=10'}
+ dependencies:
+ lodash.ismatch: 4.4.0
+ modify-values: 1.0.1
+ dev: true
+
+ /conventional-commits-parser@3.2.4:
+ resolution: {integrity: sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==}
+ engines: {node: '>=10'}
+ hasBin: true
+ dependencies:
+ JSONStream: 1.3.5
+ is-text-path: 1.0.1
+ lodash: 4.17.21
+ meow: 8.1.2
+ split2: 3.2.2
+ through2: 4.0.2
+ dev: true
+
+ /conventional-recommended-bump@5.0.1:
+ resolution: {integrity: sha512-RVdt0elRcCxL90IrNP0fYCpq1uGt2MALko0eyeQ+zQuDVWtMGAy9ng6yYn3kax42lCj9+XBxQ8ZN6S9bdKxDhQ==}
+ engines: {node: '>=6.9.0'}
+ hasBin: true
+ dependencies:
+ concat-stream: 2.0.0
+ conventional-changelog-preset-loader: 2.3.4
+ conventional-commits-filter: 2.0.7
+ conventional-commits-parser: 3.2.4
+ git-raw-commits: 2.0.0
+ git-semver-tags: 2.0.3
+ meow: 4.0.1
+ q: 1.5.1
+ dev: true
+
+ /cookie-jar@0.3.0:
+ resolution: {integrity: sha512-dX1400pzPULr+ZovkIsDEqe7XH8xCAYGT5Dege4Eot44Qs2mS2iJmnh45TxTO5MIsCfrV/JGZVloLhm46AHxNw==}
+ dev: true
+
+ /copy-anything@2.0.6:
+ resolution: {integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==}
+ dependencies:
+ is-what: 3.14.1
+ dev: false
+
+ /copy-concurrently@1.0.5:
+ resolution: {integrity: sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==}
+ deprecated: This package is no longer supported.
+ dependencies:
+ aproba: 1.2.0
+ fs-write-stream-atomic: 1.0.10
+ iferr: 0.1.5
+ mkdirp: 0.5.6
+ rimraf: 2.7.1
+ run-queue: 1.0.3
+ dev: true
+
+ /copy-descriptor@0.1.1:
+ resolution: {integrity: sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /core-util-is@1.0.2:
+ resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==}
+ dev: true
+
+ /core-util-is@1.0.3:
+ resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==}
+ dev: true
+
+ /cosmiconfig@5.2.1:
+ resolution: {integrity: sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==}
+ engines: {node: '>=4'}
+ dependencies:
+ import-fresh: 2.0.0
+ is-directory: 0.3.1
+ js-yaml: 3.14.1
+ parse-json: 4.0.0
+ dev: true
+
+ /create-require@1.1.1:
+ resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==}
+ dev: true
+
+ /cross-env@7.0.3:
+ resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==}
+ engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'}
+ hasBin: true
+ dependencies:
+ cross-spawn: 7.0.6
+ dev: true
+
+ /cross-spawn@6.0.6:
+ resolution: {integrity: sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==}
+ engines: {node: '>=4.8'}
+ dependencies:
+ nice-try: 1.0.5
+ path-key: 2.0.1
+ semver: 5.7.2
+ shebang-command: 1.2.0
+ which: 1.3.1
+ dev: true
+
+ /cross-spawn@7.0.6:
+ resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
+ engines: {node: '>= 8'}
+ dependencies:
+ path-key: 3.1.1
+ shebang-command: 2.0.0
+ which: 2.0.2
+ dev: true
+
+ /cryptiles@0.2.2:
+ resolution: {integrity: sha512-gvWSbgqP+569DdslUiCelxIv3IYK5Lgmq1UrRnk+s1WxQOQ16j3GPDcjdtgL5Au65DU/xQi6q3xPtf5Kta+3IQ==}
+ engines: {node: '>=0.8.0'}
+ deprecated: This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial).
+ dependencies:
+ boom: 0.4.2
+ dev: true
+
+ /ctype@0.5.3:
+ resolution: {integrity: sha512-T6CEkoSV4q50zW3TlTHMbzy1E5+zlnNcY+yb7tWVYlTwPhx9LpnfAkd4wecpWknDyptp4k97LUZeInlf6jdzBg==}
+ engines: {node: '>= 0.4'}
+ dev: true
+
+ /currently-unhandled@0.4.1:
+ resolution: {integrity: sha512-/fITjgjGU50vjQ4FH6eUoYu+iUoUKIXws2hL15JJpIR+BbTxaXQsMuuyjtNh2WqsSBS5nsaZHFsFecyw5CCAng==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ array-find-index: 1.0.2
+ dev: true
+
+ /cyclist@1.0.2:
+ resolution: {integrity: sha512-0sVXIohTfLqVIW3kb/0n6IiWF3Ifj5nm2XaSrLq2DI6fKIGa2fYAZdk917rUneaeLVpYfFcyXE2ft0fe3remsA==}
+ dev: true
+
+ /dargs@4.1.0:
+ resolution: {integrity: sha512-jyweV/k0rbv2WK4r9KLayuBrSh2Py0tNmV7LBoSMH4hMQyrG8OPyIOWB2VEx4DJKXWmK4lopYMVvORlDt2S8Aw==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ number-is-nan: 1.0.1
+ dev: true
+
+ /dashdash@1.14.1:
+ resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==}
+ engines: {node: '>=0.10'}
+ dependencies:
+ assert-plus: 1.0.0
+ dev: true
+
+ /data-view-buffer@1.0.2:
+ resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bound: 1.0.3
+ es-errors: 1.3.0
+ is-data-view: 1.0.2
+ dev: true
+
+ /data-view-byte-length@1.0.2:
+ resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bound: 1.0.3
+ es-errors: 1.3.0
+ is-data-view: 1.0.2
+ dev: true
+
+ /data-view-byte-offset@1.0.1:
+ resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bound: 1.0.3
+ es-errors: 1.3.0
+ is-data-view: 1.0.2
+ dev: true
+
+ /date-time@1.1.0:
+ resolution: {integrity: sha512-RrxZQ06cdKe7YQ5oqIxs3GMc7W3vXscy7Ds+aZIqmxA59QnVtTiCseA4jbzVUub9xCbo9GuYVZo0OrZLYXnnmw==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ time-zone: 0.1.0
+ dev: true
+
+ /dateformat@3.0.3:
+ resolution: {integrity: sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==}
+ dev: true
+
+ /dateformat@4.6.3:
+ resolution: {integrity: sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==}
+ dev: true
+
+ /debug@2.6.9:
+ resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+ dependencies:
+ ms: 2.0.0
+ dev: true
+
+ /debug@3.1.0:
+ resolution: {integrity: sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+ dependencies:
+ ms: 2.0.0
+ dev: true
+
+ /debug@3.2.6(supports-color@6.0.0):
+ resolution: {integrity: sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==}
+ deprecated: Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+ dependencies:
+ ms: 2.1.1
+ supports-color: 6.0.0
+ dev: true
+
+ /debug@3.2.7:
+ resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+ dependencies:
+ ms: 2.1.3
+ dev: true
+
+ /debug@4.4.0:
+ resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==}
+ engines: {node: '>=6.0'}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+ dependencies:
+ ms: 2.1.3
+ dev: true
+
+ /debuglog@1.0.1:
+ resolution: {integrity: sha512-syBZ+rnAK3EgMsH2aYEOLUW7mZSY9Gb+0wUMCFsZvcmiz+HigA0LOcq/HoQqVuGG+EKykunc7QG2bzrponfaSw==}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
+ dev: true
+
+ /decamelize-keys@1.1.1:
+ resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ decamelize: 1.2.0
+ map-obj: 1.0.1
+ dev: true
+
+ /decamelize@1.2.0:
+ resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /decode-uri-component@0.2.2:
+ resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==}
+ engines: {node: '>=0.10'}
+ dev: true
+
+ /dedent@0.7.0:
+ resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==}
+ dev: true
+
+ /deep-eql@4.1.4:
+ resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==}
+ engines: {node: '>=6'}
+ dependencies:
+ type-detect: 4.1.0
+ dev: true
+
+ /deep-is@0.1.4:
+ resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
+ dev: true
+
+ /deepmerge@4.3.1:
+ resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /defaults@1.0.4:
+ resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==}
+ dependencies:
+ clone: 1.0.4
+ dev: true
+
+ /define-data-property@1.1.4:
+ resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ es-define-property: 1.0.1
+ es-errors: 1.3.0
+ gopd: 1.2.0
+ dev: true
+
+ /define-properties@1.2.1:
+ resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ define-data-property: 1.1.4
+ has-property-descriptors: 1.0.2
+ object-keys: 1.1.1
+ dev: true
+
+ /define-property@0.2.5:
+ resolution: {integrity: sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-descriptor: 0.1.7
+ dev: true
+
+ /define-property@1.0.0:
+ resolution: {integrity: sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-descriptor: 1.0.3
+ dev: true
+
+ /define-property@2.0.2:
+ resolution: {integrity: sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-descriptor: 1.0.3
+ isobject: 3.0.1
+ dev: true
+
+ /delayed-stream@0.0.5:
+ resolution: {integrity: sha512-v+7uBd1pqe5YtgPacIIbZ8HuHeLFVNe4mUEyFDXL6KiqzEykjbw+5mXZXpGFgNVasdL4jWKgaKIXrEHiynN1LA==}
+ engines: {node: '>=0.4.0'}
+ dev: true
+
+ /delayed-stream@1.0.0:
+ resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
+ engines: {node: '>=0.4.0'}
+ dev: true
+
+ /delegates@1.0.0:
+ resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==}
+ dev: true
+
+ /depd@1.1.2:
+ resolution: {integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==}
+ engines: {node: '>= 0.6'}
+ dev: true
+
+ /depd@2.0.0:
+ resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==}
+ engines: {node: '>= 0.8'}
+ dev: true
+
+ /deprecation@2.3.1:
+ resolution: {integrity: sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==}
+ dev: true
+
+ /destroy@1.2.0:
+ resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==}
+ engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16}
+ dev: true
+
+ /detect-file@1.0.0:
+ resolution: {integrity: sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /detect-indent@5.0.0:
+ resolution: {integrity: sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g==}
+ engines: {node: '>=4'}
+ dev: true
+
+ /dezalgo@1.0.4:
+ resolution: {integrity: sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==}
+ dependencies:
+ asap: 2.0.6
+ wrappy: 1.0.2
+ dev: true
+
+ /didyoumean@1.2.2:
+ resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==}
+ dev: true
+
+ /diff@3.5.0:
+ resolution: {integrity: sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==}
+ engines: {node: '>=0.3.1'}
+ dev: true
+
+ /diff@4.0.2:
+ resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==}
+ engines: {node: '>=0.3.1'}
+ dev: true
+
+ /dir-glob@2.2.2:
+ resolution: {integrity: sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==}
+ engines: {node: '>=4'}
+ dependencies:
+ path-type: 3.0.0
+ dev: true
+
+ /dir-glob@3.0.1:
+ resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
+ engines: {node: '>=8'}
+ dependencies:
+ path-type: 4.0.0
+ dev: true
+
+ /doctrine@3.0.0:
+ resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==}
+ engines: {node: '>=6.0.0'}
+ dependencies:
+ esutils: 2.0.3
+ dev: true
+
+ /dot-prop@4.2.1:
+ resolution: {integrity: sha512-l0p4+mIuJIua0mhxGoh4a+iNL9bmeK5DvnSVQa6T0OhrVmaEa1XScX5Etc673FePCJOArq/4Pa2cLGODUWTPOQ==}
+ engines: {node: '>=4'}
+ dependencies:
+ is-obj: 1.0.1
+ dev: true
+
+ /dot-prop@5.3.0:
+ resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==}
+ engines: {node: '>=8'}
+ dependencies:
+ is-obj: 2.0.0
+ dev: true
+
+ /dunder-proto@1.0.1:
+ resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind-apply-helpers: 1.0.2
+ es-errors: 1.3.0
+ gopd: 1.2.0
+ dev: true
+
+ /duplexer2@0.0.2:
+ resolution: {integrity: sha512-+AWBwjGadtksxjOQSFDhPNQbed7icNXApT4+2BNpsXzcCBiInq2H9XW0O8sfHFaPmnQRs7cg/P0fAr2IWQSW0g==}
+ dependencies:
+ readable-stream: 1.1.14
+ dev: true
+
+ /duplexer@0.1.2:
+ resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==}
+ dev: true
+
+ /duplexify@3.7.1:
+ resolution: {integrity: sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==}
+ dependencies:
+ end-of-stream: 1.4.4
+ inherits: 2.0.4
+ readable-stream: 2.3.8
+ stream-shift: 1.0.3
+ dev: true
+
+ /ecc-jsbn@0.1.2:
+ resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==}
+ dependencies:
+ jsbn: 0.1.1
+ safer-buffer: 2.1.2
+ dev: true
+
+ /ee-first@1.1.1:
+ resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
+ dev: true
+
+ /electron-to-chromium@1.5.108:
+ resolution: {integrity: sha512-tiGxpQmvXBEzrfU5ertmbCV/nG5yqCkC1G4T1SIKP335Y5rjXzPWmijR6XcoGXZvVoo4dknfdNe4Tl7lcIROLg==}
+ dev: true
+
+ /emoji-regex@7.0.3:
+ resolution: {integrity: sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==}
+ dev: true
+
+ /emoji-regex@8.0.0:
+ resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
+ dev: true
+
+ /encodeurl@1.0.2:
+ resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==}
+ engines: {node: '>= 0.8'}
+ dev: true
+
+ /encodeurl@2.0.0:
+ resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==}
+ engines: {node: '>= 0.8'}
+ dev: true
+
+ /encoding@0.1.13:
+ resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==}
+ dependencies:
+ iconv-lite: 0.6.3
+ dev: true
+
+ /end-of-stream@1.4.4:
+ resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==}
+ dependencies:
+ once: 1.4.0
+ dev: true
+
+ /enquirer@2.4.1:
+ resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==}
+ engines: {node: '>=8.6'}
+ dependencies:
+ ansi-colors: 4.1.3
+ strip-ansi: 6.0.1
+ dev: true
+
+ /env-paths@2.2.1:
+ resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /envinfo@7.14.0:
+ resolution: {integrity: sha512-CO40UI41xDQzhLB1hWyqUKgFhs250pNcGbyGKe1l/e4FSaI/+YE4IMG76GDt0In67WLPACIITC+sOi08x4wIvg==}
+ engines: {node: '>=4'}
+ hasBin: true
+ dev: true
+
+ /err-code@1.1.2:
+ resolution: {integrity: sha512-CJAN+O0/yA1CKfRn9SXOGctSpEM7DCon/r/5r2eXFMY2zCCJBasFhcM5I+1kh3Ap11FsQCX+vGHceNPvpWKhoA==}
+ dev: true
+
+ /errno@0.1.8:
+ resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==}
+ hasBin: true
+ requiresBuild: true
+ dependencies:
+ prr: 1.0.1
+ dev: false
+ optional: true
+
+ /error-ex@1.3.2:
+ resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==}
+ dependencies:
+ is-arrayish: 0.2.1
+ dev: true
+
+ /es-abstract@1.23.9:
+ resolution: {integrity: sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ array-buffer-byte-length: 1.0.2
+ arraybuffer.prototype.slice: 1.0.4
+ available-typed-arrays: 1.0.7
+ call-bind: 1.0.8
+ call-bound: 1.0.3
+ data-view-buffer: 1.0.2
+ data-view-byte-length: 1.0.2
+ data-view-byte-offset: 1.0.1
+ es-define-property: 1.0.1
+ es-errors: 1.3.0
+ es-object-atoms: 1.1.1
+ es-set-tostringtag: 2.1.0
+ es-to-primitive: 1.3.0
+ function.prototype.name: 1.1.8
+ get-intrinsic: 1.3.0
+ get-proto: 1.0.1
+ get-symbol-description: 1.1.0
+ globalthis: 1.0.4
+ gopd: 1.2.0
+ has-property-descriptors: 1.0.2
+ has-proto: 1.2.0
+ has-symbols: 1.1.0
+ hasown: 2.0.2
+ internal-slot: 1.1.0
+ is-array-buffer: 3.0.5
+ is-callable: 1.2.7
+ is-data-view: 1.0.2
+ is-regex: 1.2.1
+ is-shared-array-buffer: 1.0.4
+ is-string: 1.1.1
+ is-typed-array: 1.1.15
+ is-weakref: 1.1.1
+ math-intrinsics: 1.1.0
+ object-inspect: 1.13.4
+ object-keys: 1.1.1
+ object.assign: 4.1.7
+ own-keys: 1.0.1
+ regexp.prototype.flags: 1.5.4
+ safe-array-concat: 1.1.3
+ safe-push-apply: 1.0.0
+ safe-regex-test: 1.1.0
+ set-proto: 1.0.0
+ string.prototype.trim: 1.2.10
+ string.prototype.trimend: 1.0.9
+ string.prototype.trimstart: 1.0.8
+ typed-array-buffer: 1.0.3
+ typed-array-byte-length: 1.0.3
+ typed-array-byte-offset: 1.0.4
+ typed-array-length: 1.0.7
+ unbox-primitive: 1.1.0
+ which-typed-array: 1.1.18
+ dev: true
+
+ /es-array-method-boxes-properly@1.0.0:
+ resolution: {integrity: sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==}
+ dev: true
+
+ /es-define-property@1.0.1:
+ resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==}
+ engines: {node: '>= 0.4'}
+ dev: true
+
+ /es-errors@1.3.0:
+ resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
+ engines: {node: '>= 0.4'}
+ dev: true
+
+ /es-object-atoms@1.1.1:
+ resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ es-errors: 1.3.0
+ dev: true
+
+ /es-set-tostringtag@2.1.0:
+ resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ es-errors: 1.3.0
+ get-intrinsic: 1.3.0
+ has-tostringtag: 1.0.2
+ hasown: 2.0.2
+ dev: true
+
+ /es-to-primitive@1.3.0:
+ resolution: {integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ is-callable: 1.2.7
+ is-date-object: 1.1.0
+ is-symbol: 1.1.1
+ dev: true
+
+ /es6-promise@4.2.8:
+ resolution: {integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==}
+ dev: true
+
+ /es6-promisify@5.0.0:
+ resolution: {integrity: sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==}
+ dependencies:
+ es6-promise: 4.2.8
+ dev: true
+
+ /escape-html@1.0.3:
+ resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==}
+ dev: true
+
+ /escape-string-regexp@1.0.5:
+ resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
+ engines: {node: '>=0.8.0'}
+ dev: true
+
+ /escape-string-regexp@4.0.0:
+ resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
+ engines: {node: '>=10'}
+ dev: true
+
+ /eslint-scope@5.1.1:
+ resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==}
+ engines: {node: '>=8.0.0'}
+ dependencies:
+ esrecurse: 4.3.0
+ estraverse: 4.3.0
+ dev: true
+
+ /eslint-utils@2.1.0:
+ resolution: {integrity: sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==}
+ engines: {node: '>=6'}
+ dependencies:
+ eslint-visitor-keys: 1.3.0
+ dev: true
+
+ /eslint-utils@3.0.0(eslint@7.32.0):
+ resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==}
+ engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0}
+ peerDependencies:
+ eslint: '>=5'
+ dependencies:
+ eslint: 7.32.0
+ eslint-visitor-keys: 2.1.0
+ dev: true
+
+ /eslint-visitor-keys@1.3.0:
+ resolution: {integrity: sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==}
+ engines: {node: '>=4'}
+ dev: true
+
+ /eslint-visitor-keys@2.1.0:
+ resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==}
+ engines: {node: '>=10'}
+ dev: true
+
+ /eslint@7.32.0:
+ resolution: {integrity: sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==}
+ engines: {node: ^10.12.0 || >=12.0.0}
+ deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options.
+ hasBin: true
+ dependencies:
+ '@babel/code-frame': 7.12.11
+ '@eslint/eslintrc': 0.4.3
+ '@humanwhocodes/config-array': 0.5.0
+ ajv: 6.12.6
+ chalk: 4.1.2
+ cross-spawn: 7.0.6
+ debug: 4.4.0
+ doctrine: 3.0.0
+ enquirer: 2.4.1
+ escape-string-regexp: 4.0.0
+ eslint-scope: 5.1.1
+ eslint-utils: 2.1.0
+ eslint-visitor-keys: 2.1.0
+ espree: 7.3.1
+ esquery: 1.6.0
+ esutils: 2.0.3
+ fast-deep-equal: 3.1.3
+ file-entry-cache: 6.0.1
+ functional-red-black-tree: 1.0.1
+ glob-parent: 5.1.2
+ globals: 13.24.0
+ ignore: 4.0.6
+ import-fresh: 3.3.1
+ imurmurhash: 0.1.4
+ is-glob: 4.0.3
+ js-yaml: 3.14.1
+ json-stable-stringify-without-jsonify: 1.0.1
+ levn: 0.4.1
+ lodash.merge: 4.6.2
+ minimatch: 3.1.2
+ natural-compare: 1.4.0
+ optionator: 0.9.4
+ progress: 2.0.3
+ regexpp: 3.2.0
+ semver: 7.7.1
+ strip-ansi: 6.0.1
+ strip-json-comments: 3.1.1
+ table: 6.9.0
+ text-table: 0.2.0
+ v8-compile-cache: 2.4.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /espree@7.3.1:
+ resolution: {integrity: sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==}
+ engines: {node: ^10.12.0 || >=12.0.0}
+ dependencies:
+ acorn: 7.4.1
+ acorn-jsx: 5.3.2(acorn@7.4.1)
+ eslint-visitor-keys: 1.3.0
+ dev: true
+
+ /esprima@4.0.1:
+ resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==}
+ engines: {node: '>=4'}
+ hasBin: true
+ dev: true
+
+ /esquery@1.6.0:
+ resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==}
+ engines: {node: '>=0.10'}
+ dependencies:
+ estraverse: 5.3.0
+ dev: true
+
+ /esrecurse@4.3.0:
+ resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
+ engines: {node: '>=4.0'}
+ dependencies:
+ estraverse: 5.3.0
+ dev: true
+
+ /estraverse@4.3.0:
+ resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==}
+ engines: {node: '>=4.0'}
+ dev: true
+
+ /estraverse@5.3.0:
+ resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
+ engines: {node: '>=4.0'}
+ dev: true
+
+ /estree-walker@0.6.1:
+ resolution: {integrity: sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==}
+ dev: true
+
+ /estree-walker@1.0.1:
+ resolution: {integrity: sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==}
+ dev: true
+
+ /estree-walker@2.0.2:
+ resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
+ dev: true
+
+ /esutils@2.0.3:
+ resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /etag@1.8.1:
+ resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==}
+ engines: {node: '>= 0.6'}
+ dev: true
+
+ /eventemitter2@0.4.14:
+ resolution: {integrity: sha512-K7J4xq5xAD5jHsGM5ReWXRTFa3JRGofHiMcVgQ8PRwgWxzjHpMWCIzsmyf60+mh8KLsqYPcjUMa0AC4hd6lPyQ==}
+ dev: true
+
+ /eventemitter3@3.1.2:
+ resolution: {integrity: sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==}
+ dev: true
+
+ /execa@1.0.0:
+ resolution: {integrity: sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==}
+ engines: {node: '>=6'}
+ dependencies:
+ cross-spawn: 6.0.6
+ get-stream: 4.1.0
+ is-stream: 1.1.0
+ npm-run-path: 2.0.2
+ p-finally: 1.0.0
+ signal-exit: 3.0.7
+ strip-eof: 1.0.0
+ dev: true
+
+ /exit@0.1.2:
+ resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==}
+ engines: {node: '>= 0.8.0'}
+ dev: true
+
+ /expand-brackets@2.1.4:
+ resolution: {integrity: sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ debug: 2.6.9
+ define-property: 0.2.5
+ extend-shallow: 2.0.1
+ posix-character-classes: 0.1.1
+ regex-not: 1.0.2
+ snapdragon: 0.8.2
+ to-regex: 3.0.2
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /expand-tilde@2.0.2:
+ resolution: {integrity: sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ homedir-polyfill: 1.0.3
+ dev: true
+
+ /extend-shallow@2.0.1:
+ resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-extendable: 0.1.1
+ dev: true
+
+ /extend-shallow@3.0.2:
+ resolution: {integrity: sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ assign-symbols: 1.0.0
+ is-extendable: 1.0.1
+ dev: true
+
+ /extend@3.0.2:
+ resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==}
+ dev: true
+
+ /external-editor@3.1.0:
+ resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==}
+ engines: {node: '>=4'}
+ dependencies:
+ chardet: 0.7.0
+ iconv-lite: 0.4.24
+ tmp: 0.0.33
+ dev: true
+
+ /extglob@2.0.4:
+ resolution: {integrity: sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ array-unique: 0.3.2
+ define-property: 1.0.0
+ expand-brackets: 2.1.4
+ extend-shallow: 2.0.1
+ fragment-cache: 0.2.1
+ regex-not: 1.0.2
+ snapdragon: 0.8.2
+ to-regex: 3.0.2
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /extsprintf@1.3.0:
+ resolution: {integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==}
+ engines: {'0': node >=0.6.0}
+ dev: true
+
+ /fast-content-type-parse@2.0.1:
+ resolution: {integrity: sha512-nGqtvLrj5w0naR6tDPfB4cUmYCqouzyQiz6C5y/LtcDllJdrcc6WaWW6iXyIIOErTa/XRybj28aasdn4LkVk6Q==}
+ dev: true
+
+ /fast-deep-equal@3.1.3:
+ resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
+ dev: true
+
+ /fast-glob@2.2.7:
+ resolution: {integrity: sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==}
+ engines: {node: '>=4.0.0'}
+ dependencies:
+ '@mrmlnc/readdir-enhanced': 2.2.1
+ '@nodelib/fs.stat': 1.1.3
+ glob-parent: 3.1.0
+ is-glob: 4.0.3
+ merge2: 1.4.1
+ micromatch: 3.1.10
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /fast-glob@3.3.3:
+ resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==}
+ engines: {node: '>=8.6.0'}
+ dependencies:
+ '@nodelib/fs.stat': 2.0.5
+ '@nodelib/fs.walk': 1.2.8
+ glob-parent: 5.1.2
+ merge2: 1.4.1
+ micromatch: 4.0.8
+ dev: true
+
+ /fast-json-stable-stringify@2.1.0:
+ resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
+ dev: true
+
+ /fast-levenshtein@2.0.6:
+ resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
+ dev: true
+
+ /fast-uri@3.0.6:
+ resolution: {integrity: sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==}
+ dev: true
+
+ /fastq@1.19.1:
+ resolution: {integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==}
+ dependencies:
+ reusify: 1.1.0
+ dev: true
+
+ /fg-lodash@0.0.2:
+ resolution: {integrity: sha512-3jf21fWKb/qCM+frhdQX6/KT7sn12i5T6K7952/hKpOdK5uzYbZbEwJmWjrgrSzc74iXFtrtbHPD2mMywPkB9A==}
+ dependencies:
+ lodash: 2.4.2
+ underscore.string: 2.3.3
+ dev: true
+
+ /figgy-pudding@3.5.2:
+ resolution: {integrity: sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==}
+ deprecated: This module is no longer supported.
+ dev: true
+
+ /figures@1.7.0:
+ resolution: {integrity: sha512-UxKlfCRuCBxSXU4C6t9scbDyWZ4VlaFFdojKtzJuSkuOBQ5CNFum+zZXFwHjo+CxBC1t6zlYPgHIgFjL8ggoEQ==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ escape-string-regexp: 1.0.5
+ object-assign: 4.1.1
+ dev: true
+
+ /figures@2.0.0:
+ resolution: {integrity: sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==}
+ engines: {node: '>=4'}
+ dependencies:
+ escape-string-regexp: 1.0.5
+ dev: true
+
+ /figures@3.2.0:
+ resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==}
+ engines: {node: '>=8'}
+ dependencies:
+ escape-string-regexp: 1.0.5
+ dev: true
+
+ /file-entry-cache@6.0.1:
+ resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==}
+ engines: {node: ^10.12.0 || >=12.0.0}
+ dependencies:
+ flat-cache: 3.2.0
+ dev: true
+
+ /fill-range@4.0.0:
+ resolution: {integrity: sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ extend-shallow: 2.0.1
+ is-number: 3.0.0
+ repeat-string: 1.6.1
+ to-regex-range: 2.1.1
+ dev: true
+
+ /fill-range@7.1.1:
+ resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
+ engines: {node: '>=8'}
+ dependencies:
+ to-regex-range: 5.0.1
+ dev: true
+
+ /filter-obj@1.1.0:
+ resolution: {integrity: sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /finalhandler@1.1.2:
+ resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==}
+ engines: {node: '>= 0.8'}
+ dependencies:
+ debug: 2.6.9
+ encodeurl: 1.0.2
+ escape-html: 1.0.3
+ on-finished: 2.3.0
+ parseurl: 1.3.3
+ statuses: 1.5.0
+ unpipe: 1.0.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /find-cache-dir@3.3.2:
+ resolution: {integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==}
+ engines: {node: '>=8'}
+ dependencies:
+ commondir: 1.0.1
+ make-dir: 3.1.0
+ pkg-dir: 4.2.0
+ dev: true
+
+ /find-up@1.1.2:
+ resolution: {integrity: sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ path-exists: 2.1.0
+ pinkie-promise: 2.0.1
+ dev: true
+
+ /find-up@2.1.0:
+ resolution: {integrity: sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==}
+ engines: {node: '>=4'}
+ dependencies:
+ locate-path: 2.0.0
+ dev: true
+
+ /find-up@3.0.0:
+ resolution: {integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==}
+ engines: {node: '>=6'}
+ dependencies:
+ locate-path: 3.0.0
+ dev: true
+
+ /find-up@4.1.0:
+ resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==}
+ engines: {node: '>=8'}
+ dependencies:
+ locate-path: 5.0.0
+ path-exists: 4.0.0
+ dev: true
+
+ /findup-sync@4.0.0:
+ resolution: {integrity: sha512-6jvvn/12IC4quLBL1KNokxC7wWTvYncaVUYSoxWw7YykPLuRrnv4qdHcSOywOI5RpkOVGeQRtWM8/q+G6W6qfQ==}
+ engines: {node: '>= 8'}
+ dependencies:
+ detect-file: 1.0.0
+ is-glob: 4.0.3
+ micromatch: 4.0.8
+ resolve-dir: 1.0.1
+ dev: true
+
+ /findup-sync@5.0.0:
+ resolution: {integrity: sha512-MzwXju70AuyflbgeOhzvQWAvvQdo1XL0A9bVvlXsYcFEBM87WR4OakL4OfZq+QRmr+duJubio+UtNQCPsVESzQ==}
+ engines: {node: '>= 10.13.0'}
+ dependencies:
+ detect-file: 1.0.0
+ is-glob: 4.0.3
+ micromatch: 4.0.8
+ resolve-dir: 1.0.1
+ dev: true
+
+ /fined@1.2.0:
+ resolution: {integrity: sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==}
+ engines: {node: '>= 0.10'}
+ dependencies:
+ expand-tilde: 2.0.2
+ is-plain-object: 2.0.4
+ object.defaults: 1.1.0
+ object.pick: 1.3.0
+ parse-filepath: 1.0.2
+ dev: true
+
+ /flagged-respawn@1.0.1:
+ resolution: {integrity: sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==}
+ engines: {node: '>= 0.10'}
+ dev: true
+
+ /flat-cache@3.2.0:
+ resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==}
+ engines: {node: ^10.12.0 || >=12.0.0}
+ dependencies:
+ flatted: 3.3.3
+ keyv: 4.5.4
+ rimraf: 3.0.2
+ dev: true
+
+ /flat@4.1.1:
+ resolution: {integrity: sha512-FmTtBsHskrU6FJ2VxCnsDb84wu9zhmO3cUX2kGFb5tuwhfXxGciiT0oRY+cck35QmG+NmGh5eLz6lLCpWTqwpA==}
+ hasBin: true
+ dependencies:
+ is-buffer: 2.0.5
+ dev: true
+
+ /flatted@3.3.3:
+ resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==}
+ dev: true
+
+ /flush-write-stream@1.1.1:
+ resolution: {integrity: sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==}
+ dependencies:
+ inherits: 2.0.4
+ readable-stream: 2.3.8
+ dev: true
+
+ /for-each@0.3.5:
+ resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ is-callable: 1.2.7
+ dev: true
+
+ /for-in@1.0.2:
+ resolution: {integrity: sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /for-own@1.0.0:
+ resolution: {integrity: sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ for-in: 1.0.2
+ dev: true
+
+ /foreach@2.0.6:
+ resolution: {integrity: sha512-k6GAGDyqLe9JaebCsFCoudPPWfihKu8pylYXRlqP1J7ms39iPoTtk2fviNglIeQEwdh0bQeKJ01ZPyuyQvKzwg==}
+ dev: true
+
+ /forever-agent@0.5.2:
+ resolution: {integrity: sha512-PDG5Ef0Dob/JsZUxUltJOhm/Y9mlteAE+46y3M9RBz/Rd3QVENJ75aGRhN56yekTUboaBIkd8KVWX2NjF6+91A==}
+ dev: true
+
+ /forever-agent@0.6.1:
+ resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==}
+ dev: true
+
+ /form-data@0.0.8:
+ resolution: {integrity: sha512-yzpBIhe8Ll+dYTXjd+4ORxbQktke+abD0dJjedvqsVVayMkb+PgLGatJNLwo95Va75l3YDZ01SrouzyW9bC2Fg==}
+ engines: {node: '>= 0.6'}
+ dependencies:
+ async: 0.2.10
+ combined-stream: 0.0.7
+ mime: 1.2.11
+ dev: true
+
+ /form-data@2.3.3:
+ resolution: {integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==}
+ engines: {node: '>= 0.12'}
+ dependencies:
+ asynckit: 0.4.0
+ combined-stream: 1.0.8
+ mime-types: 2.1.35
+ dev: true
+
+ /fragment-cache@0.2.1:
+ resolution: {integrity: sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ map-cache: 0.2.2
+ dev: true
+
+ /fresh@0.5.2:
+ resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==}
+ engines: {node: '>= 0.6'}
+ dev: true
+
+ /from2@2.3.0:
+ resolution: {integrity: sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==}
+ dependencies:
+ inherits: 2.0.4
+ readable-stream: 2.3.8
+ dev: true
+
+ /fs-extra@10.1.0:
+ resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==}
+ engines: {node: '>=12'}
+ dependencies:
+ graceful-fs: 4.2.11
+ jsonfile: 6.1.0
+ universalify: 2.0.1
+ dev: true
+
+ /fs-extra@8.1.0:
+ resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==}
+ engines: {node: '>=6 <7 || >=8'}
+ dependencies:
+ graceful-fs: 4.2.11
+ jsonfile: 4.0.0
+ universalify: 0.1.2
+ dev: true
+
+ /fs-minipass@1.2.7:
+ resolution: {integrity: sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==}
+ dependencies:
+ minipass: 2.9.0
+ dev: true
+
+ /fs-write-stream-atomic@1.0.10:
+ resolution: {integrity: sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA==}
+ deprecated: This package is no longer supported.
+ dependencies:
+ graceful-fs: 4.2.11
+ iferr: 0.1.5
+ imurmurhash: 0.1.4
+ readable-stream: 2.3.8
+ dev: true
+
+ /fs.realpath@1.0.0:
+ resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
+ dev: true
+
+ /fsevents@2.3.2:
+ resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
+ engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /fsevents@2.3.3:
+ resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
+ engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
+ os: [darwin]
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /function-bind@1.1.2:
+ resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
+ dev: true
+
+ /function.prototype.name@1.1.8:
+ resolution: {integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.8
+ call-bound: 1.0.3
+ define-properties: 1.2.1
+ functions-have-names: 1.2.3
+ hasown: 2.0.2
+ is-callable: 1.2.7
+ dev: true
+
+ /functional-red-black-tree@1.0.1:
+ resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==}
+ dev: true
+
+ /functions-have-names@1.2.3:
+ resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==}
+ dev: true
+
+ /gauge@2.7.4:
+ resolution: {integrity: sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==}
+ deprecated: This package is no longer supported.
+ dependencies:
+ aproba: 1.2.0
+ console-control-strings: 1.1.0
+ has-unicode: 2.0.1
+ object-assign: 4.1.1
+ signal-exit: 3.0.7
+ string-width: 1.0.2
+ strip-ansi: 3.0.1
+ wide-align: 1.1.5
+ dev: true
+
+ /genfun@5.0.0:
+ resolution: {integrity: sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA==}
+ dev: true
+
+ /get-caller-file@2.0.5:
+ resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
+ engines: {node: 6.* || 8.* || >= 10.*}
+ dev: true
+
+ /get-func-name@2.0.2:
+ resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==}
+ dev: true
+
+ /get-intrinsic@1.3.0:
+ resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind-apply-helpers: 1.0.2
+ es-define-property: 1.0.1
+ es-errors: 1.3.0
+ es-object-atoms: 1.1.1
+ function-bind: 1.1.2
+ get-proto: 1.0.1
+ gopd: 1.2.0
+ has-symbols: 1.1.0
+ hasown: 2.0.2
+ math-intrinsics: 1.1.0
+ dev: true
+
+ /get-pkg-repo@1.4.0:
+ resolution: {integrity: sha512-xPCyvcEOxCJDxhBfXDNH+zA7mIRGb2aY1gIUJWsZkpJbp1BLHl+/Sycg26Dv+ZbZAJkO61tzbBtqHUi30NGBvg==}
+ hasBin: true
+ dependencies:
+ hosted-git-info: 2.8.9
+ meow: 3.7.0
+ normalize-package-data: 2.5.0
+ parse-github-repo-url: 1.4.1
+ through2: 2.0.5
+ dev: true
+
+ /get-port@4.2.0:
+ resolution: {integrity: sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /get-proto@1.0.1:
+ resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ dunder-proto: 1.0.1
+ es-object-atoms: 1.1.1
+ dev: true
+
+ /get-stdin@4.0.1:
+ resolution: {integrity: sha512-F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /get-stream@4.1.0:
+ resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==}
+ engines: {node: '>=6'}
+ dependencies:
+ pump: 3.0.2
+ dev: true
+
+ /get-symbol-description@1.1.0:
+ resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bound: 1.0.3
+ es-errors: 1.3.0
+ get-intrinsic: 1.3.0
+ dev: true
+
+ /get-value@2.0.6:
+ resolution: {integrity: sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /getobject@1.0.2:
+ resolution: {integrity: sha512-2zblDBaFcb3rB4rF77XVnuINOE2h2k/OnqXAiy0IrTxUfV1iFp3la33oAQVY9pCpWU268WFYVt2t71hlMuLsOg==}
+ engines: {node: '>=10'}
+ dev: true
+
+ /getpass@0.1.7:
+ resolution: {integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==}
+ dependencies:
+ assert-plus: 1.0.0
+ dev: true
+
+ /ghauth@3.0.0:
+ resolution: {integrity: sha512-Ds/q5leXoYu8e+MUJyI1C2mqcvdQ4iTzoOM2WN/p9sh/Z0r609dPUq7mLNa0CoGeKdmesyUmVJOAJeWxQ3tcag==}
+ dependencies:
+ application-config: 0.1.2
+ bl: 0.9.5
+ hyperquest: 1.2.0
+ mkdirp: 0.5.6
+ read: 1.0.7
+ xtend: 4.0.2
+ dev: true
+
+ /git-raw-commits@2.0.0:
+ resolution: {integrity: sha512-w4jFEJFgKXMQJ0H0ikBk2S+4KP2VEjhCvLCNqbNRQC8BgGWgLKNCO7a9K9LI+TVT7Gfoloje502sEnctibffgg==}
+ engines: {node: '>=6.9.0'}
+ hasBin: true
+ dependencies:
+ dargs: 4.1.0
+ lodash.template: 4.5.0
+ meow: 4.0.1
+ split2: 2.2.0
+ through2: 2.0.5
+ dev: true
+
+ /git-remote-origin-url@2.0.0:
+ resolution: {integrity: sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw==}
+ engines: {node: '>=4'}
+ dependencies:
+ gitconfiglocal: 1.0.0
+ pify: 2.3.0
+ dev: true
+
+ /git-rev@0.2.1:
+ resolution: {integrity: sha512-p6OU8kZpeGHYqGpwnSD5/8IIERooiQp0p6On3T7ngcugnjhbmihvgMwCK2iun8ytn7FynsCPN+jRclR29hgOBg==}
+ dev: true
+
+ /git-semver-tags@2.0.3:
+ resolution: {integrity: sha512-tj4FD4ww2RX2ae//jSrXZzrocla9db5h0V7ikPl1P/WwoZar9epdUhwR7XHXSgc+ZkNq72BEEerqQuicoEQfzA==}
+ engines: {node: '>=6.9.0'}
+ hasBin: true
+ dependencies:
+ meow: 4.0.1
+ semver: 6.3.1
+ dev: true
+
+ /git-up@4.0.5:
+ resolution: {integrity: sha512-YUvVDg/vX3d0syBsk/CKUTib0srcQME0JyHkL5BaYdwLsiCslPWmDSi8PUMo9pXYjrryMcmsCoCgsTpSCJEQaA==}
+ dependencies:
+ is-ssh: 1.4.1
+ parse-url: 6.0.5
+ dev: true
+
+ /git-url-parse@11.6.0:
+ resolution: {integrity: sha512-WWUxvJs5HsyHL6L08wOusa/IXYtMuCAhrMmnTjQPpBU0TTHyDhnOATNH3xNQz7YOQUsqIIPTGr4xiVti1Hsk5g==}
+ dependencies:
+ git-up: 4.0.5
+ dev: true
+
+ /gitconfiglocal@1.0.0:
+ resolution: {integrity: sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ==}
+ dependencies:
+ ini: 1.3.8
+ dev: true
+
+ /github-changes@1.1.2:
+ resolution: {integrity: sha512-S4lzHQHyPSyHm22JjE+Vsyr8/d797NPmYYpBqwfkPj9qHIbSwENoqKngyfGbaVbmPFTeE6QMgDbcX12TWy+fpg==}
+ hasBin: true
+ dependencies:
+ bluebird: 1.0.3
+ ghauth: 3.0.0
+ github: 0.1.16
+ github-commit-stream: 0.1.0
+ lodash: 2.4.1
+ moment-timezone: 0.5.5
+ nomnom: 1.6.2
+ parse-link-header: 0.1.0
+ semver: 5.4.1
+ dev: true
+
+ /github-commit-stream@0.1.0:
+ resolution: {integrity: sha512-rWmtBtoK/yViLU7VfxXzLCY9aW/cipSGzUz3TE0wNRcHEPxDjI26gFtkRV+lLhJ69cr+MR+NvFUT+MVPZRXLCw==}
+ dependencies:
+ async: 0.2.10
+ parse-link-header: 0.1.0
+ request: 2.22.0
+ through: 2.3.8
+ dev: true
+
+ /github@0.1.16:
+ resolution: {integrity: sha512-IVtcAhrb2HsThCNs1MTPuntLk6C1km0Q4A+md/FD/00SgyyJc4+2XsG1UsF2SUM7enumAgP5VKGVqzyyUmuNCw==}
+ deprecated: '''github'' has been renamed to ''@octokit/rest'' (https://git.io/vNB11)'
+ dev: true
+
+ /glob-observable@0.7.0:
+ resolution: {integrity: sha512-iZAgGTchl2MgZIWmK96BoHv0dFA2iXWBjFTFgIBbcpSdEPJJoXgr2e48GWlxcDOLsb6UHz5NWEPi0+6ysPFE+A==}
+ dependencies:
+ assert-valid-glob-opts: 1.0.0
+ fs.realpath: 1.0.0
+ glob: 7.2.3
+ graceful-fs: 4.2.11
+ inspect-with-kind: 1.0.5
+ zen-observable: 0.8.15
+ dev: true
+
+ /glob-option-error@1.0.0:
+ resolution: {integrity: sha512-AD7lbWbwF2Ii9gBQsQIOEzwuqP/jsnyvK27/3JDq1kn/JyfDtYI6AWz3ZQwcPuQdHSBcFh+A2yT/SEep27LOGg==}
+ dev: true
+
+ /glob-parent@3.1.0:
+ resolution: {integrity: sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==}
+ dependencies:
+ is-glob: 3.1.0
+ path-dirname: 1.0.2
+ dev: true
+
+ /glob-parent@5.1.2:
+ resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
+ engines: {node: '>= 6'}
+ dependencies:
+ is-glob: 4.0.3
+ dev: true
+
+ /glob-to-regexp@0.3.0:
+ resolution: {integrity: sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig==}
+ dev: true
+
+ /glob@7.1.3:
+ resolution: {integrity: sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==}
+ deprecated: Glob versions prior to v9 are no longer supported
+ dependencies:
+ fs.realpath: 1.0.0
+ inflight: 1.0.6
+ inherits: 2.0.4
+ minimatch: 3.0.4
+ once: 1.4.0
+ path-is-absolute: 1.0.1
+ dev: true
+
+ /glob@7.1.7:
+ resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==}
+ deprecated: Glob versions prior to v9 are no longer supported
+ dependencies:
+ fs.realpath: 1.0.0
+ inflight: 1.0.6
+ inherits: 2.0.4
+ minimatch: 3.0.8
+ once: 1.4.0
+ path-is-absolute: 1.0.1
+ dev: true
+
+ /glob@7.2.3:
+ resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
+ deprecated: Glob versions prior to v9 are no longer supported
+ dependencies:
+ fs.realpath: 1.0.0
+ inflight: 1.0.6
+ inherits: 2.0.4
+ minimatch: 3.1.2
+ once: 1.4.0
+ path-is-absolute: 1.0.1
+ dev: true
+
+ /global-modules@1.0.0:
+ resolution: {integrity: sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ global-prefix: 1.0.2
+ is-windows: 1.0.2
+ resolve-dir: 1.0.1
+ dev: true
+
+ /global-prefix@1.0.2:
+ resolution: {integrity: sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ expand-tilde: 2.0.2
+ homedir-polyfill: 1.0.3
+ ini: 1.3.8
+ is-windows: 1.0.2
+ which: 1.3.1
+ dev: true
+
+ /globals@13.24.0:
+ resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==}
+ engines: {node: '>=8'}
+ dependencies:
+ type-fest: 0.20.2
+ dev: true
+
+ /globalthis@1.0.4:
+ resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ define-properties: 1.2.1
+ gopd: 1.2.0
+ dev: true
+
+ /globby@10.0.2:
+ resolution: {integrity: sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==}
+ engines: {node: '>=8'}
+ dependencies:
+ '@types/glob': 7.2.0
+ array-union: 2.1.0
+ dir-glob: 3.0.1
+ fast-glob: 3.3.3
+ glob: 7.2.3
+ ignore: 5.3.2
+ merge2: 1.4.1
+ slash: 3.0.0
+ dev: true
+
+ /globby@11.1.0:
+ resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==}
+ engines: {node: '>=10'}
+ dependencies:
+ array-union: 2.1.0
+ dir-glob: 3.0.1
+ fast-glob: 3.3.3
+ ignore: 5.3.2
+ merge2: 1.4.1
+ slash: 3.0.0
+ dev: true
+
+ /globby@9.2.0:
+ resolution: {integrity: sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==}
+ engines: {node: '>=6'}
+ dependencies:
+ '@types/glob': 7.2.0
+ array-union: 1.0.2
+ dir-glob: 2.2.2
+ fast-glob: 2.2.7
+ glob: 7.2.3
+ ignore: 4.0.6
+ pify: 4.0.1
+ slash: 2.0.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /gopd@1.2.0:
+ resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==}
+ engines: {node: '>= 0.4'}
+ dev: true
+
+ /graceful-fs@4.2.11:
+ resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
+
+ /growl@1.10.5:
+ resolution: {integrity: sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==}
+ engines: {node: '>=4.x'}
+ dev: true
+
+ /grunt-cli@1.4.3:
+ resolution: {integrity: sha512-9Dtx/AhVeB4LYzsViCjUQkd0Kw0McN2gYpdmGYKtE2a5Yt7v1Q+HYZVWhqXc/kGnxlMtqKDxSwotiGeFmkrCoQ==}
+ engines: {node: '>=10'}
+ hasBin: true
+ dependencies:
+ grunt-known-options: 2.0.0
+ interpret: 1.1.0
+ liftup: 3.0.1
+ nopt: 4.0.3
+ v8flags: 3.2.0
+ dev: true
+
+ /grunt-cli@1.5.0:
+ resolution: {integrity: sha512-rILKAFoU0dzlf22SUfDtq2R1fosChXXlJM5j7wI6uoW8gwmXDXzbUvirlKZSYCdXl3LXFbR+8xyS+WFo+b6vlA==}
+ engines: {node: '>=10'}
+ hasBin: true
+ dependencies:
+ grunt-known-options: 2.0.0
+ interpret: 1.1.0
+ liftup: 3.0.1
+ nopt: 5.0.0
+ v8flags: 4.0.1
+ dev: true
+
+ /grunt-contrib-clean@1.1.0(grunt@1.6.1):
+ resolution: {integrity: sha512-tET+TYTd8vCtKeGwbLjoH8+SdI8ngVzGbPr7vlWkewG7mYYHIccd2Ldxq+PK3DyBp5Www3ugdkfsjoNKUl5MTg==}
+ engines: {node: '>= 0.10.0'}
+ peerDependencies:
+ grunt: '>=0.4.5'
+ dependencies:
+ async: 1.5.2
+ grunt: 1.6.1
+ rimraf: 2.7.1
+ dev: true
+
+ /grunt-contrib-connect@1.0.2(grunt@1.6.1):
+ resolution: {integrity: sha512-7OPoyfGrpOYzuiRPzGyzWDe/xFcjttXe1ztVSFS8TAVBtpfXeeOV9RiwuyqA4yN1UeOG2Pnpx8s0DcUDAu21Gw==}
+ engines: {node: '>=0.10.0'}
+ peerDependencies:
+ grunt: '>=0.4.0'
+ dependencies:
+ async: 1.5.2
+ connect: 3.7.0
+ connect-livereload: 0.5.4
+ grunt: 1.6.1
+ http2: 3.3.7
+ morgan: 1.10.0
+ opn: 4.0.2
+ portscanner: 1.2.0
+ serve-index: 1.9.1
+ serve-static: 1.16.2
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /grunt-eslint@23.0.0(grunt@1.6.1):
+ resolution: {integrity: sha512-QqHSAiGF08EVD7YlD4OSRWuLRaDvpsRdTptwy9WaxUXE+03mCLVA/lEaR6SHWehF7oUwIqCEjaNONeeeWlB4LQ==}
+ engines: {node: '>=10'}
+ peerDependencies:
+ grunt: '>=1'
+ dependencies:
+ chalk: 4.1.2
+ eslint: 7.32.0
+ grunt: 1.6.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /grunt-known-options@2.0.0:
+ resolution: {integrity: sha512-GD7cTz0I4SAede1/+pAbmJRG44zFLPipVtdL9o3vqx9IEyb7b4/Y3s7r6ofI3CchR5GvYJ+8buCSioDv5dQLiA==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /grunt-legacy-log-utils@2.1.0:
+ resolution: {integrity: sha512-lwquaPXJtKQk0rUM1IQAop5noEpwFqOXasVoedLeNzaibf/OPWjKYvvdqnEHNmU+0T0CaReAXIbGo747ZD+Aaw==}
+ engines: {node: '>=10'}
+ dependencies:
+ chalk: 4.1.2
+ lodash: 4.17.21
+ dev: true
+
+ /grunt-legacy-log@3.0.0:
+ resolution: {integrity: sha512-GHZQzZmhyq0u3hr7aHW4qUH0xDzwp2YXldLPZTCjlOeGscAOWWPftZG3XioW8MasGp+OBRIu39LFx14SLjXRcA==}
+ engines: {node: '>= 0.10.0'}
+ dependencies:
+ colors: 1.1.2
+ grunt-legacy-log-utils: 2.1.0
+ hooker: 0.2.3
+ lodash: 4.17.21
+ dev: true
+
+ /grunt-legacy-util@2.0.1:
+ resolution: {integrity: sha512-2bQiD4fzXqX8rhNdXkAywCadeqiPiay0oQny77wA2F3WF4grPJXCvAcyoWUJV+po/b15glGkxuSiQCK299UC2w==}
+ engines: {node: '>=10'}
+ dependencies:
+ async: 3.2.6
+ exit: 0.1.2
+ getobject: 1.0.2
+ hooker: 0.2.3
+ lodash: 4.17.21
+ underscore.string: 3.3.6
+ which: 2.0.2
+ dev: true
+
+ /grunt-saucelabs@9.0.1(grunt@1.6.1):
+ resolution: {integrity: sha512-3WD5/RtSp8AyEnmtN5HK1NUkU7o/kBl6rGQILnfg7WHTe0g0uG3LtecWPwTRYrD7kop79WkDfeVQ85WjvwDUZw==}
+ engines: {node: '>=0.6', npm: '>=1.2.12'}
+ peerDependencies:
+ grunt: '>=0.4.1'
+ dependencies:
+ colors: 1.1.2
+ grunt: 1.6.1
+ lodash: 4.17.21
+ q: 1.4.1
+ requestretry: 1.9.1
+ sauce-tunnel: 2.5.0
+ saucelabs: 1.5.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /grunt-shell@1.3.1(grunt@1.6.1):
+ resolution: {integrity: sha512-fqiC5NNNTCKwH3TCbYpNkNUgq1/cEYJp59tedtWv83sGeG0PTmVB7Lbo/m0WQug3MngV6lsYAXvoNflDD1oeQg==}
+ engines: {node: '>=0.10.0'}
+ peerDependencies:
+ grunt: '>=0.4.0'
+ dependencies:
+ chalk: 1.1.3
+ grunt: 1.6.1
+ npm-run-path: 1.0.0
+ object-assign: 4.1.1
+ dev: true
+
+ /grunt@1.6.1:
+ resolution: {integrity: sha512-/ABUy3gYWu5iBmrUSRBP97JLpQUm0GgVveDCp6t3yRNIoltIYw7rEj3g5y1o2PGPR2vfTRGa7WC/LZHLTXnEzA==}
+ engines: {node: '>=16'}
+ hasBin: true
+ dependencies:
+ dateformat: 4.6.3
+ eventemitter2: 0.4.14
+ exit: 0.1.2
+ findup-sync: 5.0.0
+ glob: 7.1.7
+ grunt-cli: 1.4.3
+ grunt-known-options: 2.0.0
+ grunt-legacy-log: 3.0.0
+ grunt-legacy-util: 2.0.1
+ iconv-lite: 0.6.3
+ js-yaml: 3.14.1
+ minimatch: 3.0.8
+ nopt: 3.0.6
+ dev: true
+
+ /handlebars@4.7.8:
+ resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==}
+ engines: {node: '>=0.4.7'}
+ hasBin: true
+ dependencies:
+ minimist: 1.2.8
+ neo-async: 2.6.2
+ source-map: 0.6.1
+ wordwrap: 1.0.0
+ optionalDependencies:
+ uglify-js: 3.19.3
+ dev: true
+
+ /har-schema@2.0.0:
+ resolution: {integrity: sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==}
+ engines: {node: '>=4'}
+ dev: true
+
+ /har-validator@5.1.5:
+ resolution: {integrity: sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==}
+ engines: {node: '>=6'}
+ deprecated: this library is no longer supported
+ dependencies:
+ ajv: 6.12.6
+ har-schema: 2.0.0
+ dev: true
+
+ /hard-rejection@2.1.0:
+ resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /has-ansi@2.0.0:
+ resolution: {integrity: sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ ansi-regex: 2.1.1
+ dev: true
+
+ /has-bigints@1.1.0:
+ resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==}
+ engines: {node: '>= 0.4'}
+ dev: true
+
+ /has-flag@1.0.0:
+ resolution: {integrity: sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /has-flag@3.0.0:
+ resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
+ engines: {node: '>=4'}
+ dev: true
+
+ /has-flag@4.0.0:
+ resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /has-property-descriptors@1.0.2:
+ resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==}
+ dependencies:
+ es-define-property: 1.0.1
+ dev: true
+
+ /has-proto@1.2.0:
+ resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ dunder-proto: 1.0.1
+ dev: true
+
+ /has-symbols@1.1.0:
+ resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==}
+ engines: {node: '>= 0.4'}
+ dev: true
+
+ /has-tostringtag@1.0.2:
+ resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ has-symbols: 1.1.0
+ dev: true
+
+ /has-unicode@2.0.1:
+ resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==}
+ dev: true
+
+ /has-value@0.3.1:
+ resolution: {integrity: sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ get-value: 2.0.6
+ has-values: 0.1.4
+ isobject: 2.1.0
+ dev: true
+
+ /has-value@1.0.0:
+ resolution: {integrity: sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ get-value: 2.0.6
+ has-values: 1.0.0
+ isobject: 3.0.1
+ dev: true
+
+ /has-values@0.1.4:
+ resolution: {integrity: sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /has-values@1.0.0:
+ resolution: {integrity: sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-number: 3.0.0
+ kind-of: 4.0.0
+ dev: true
+
+ /hasown@2.0.2:
+ resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ function-bind: 1.1.2
+ dev: true
+
+ /hawk@0.13.1:
+ resolution: {integrity: sha512-f/1H9bruKJfgLN2KFd+666ILQvJYsJcxaCoIdHaaD2zgl7RUa08/202pGJXhOmQ1kTEdMTSxPnbCsu4l6JARhQ==}
+ engines: {node: '>=0.8.0'}
+ deprecated: This module moved to @hapi/hawk. Please make sure to switch over as this distribution is no longer supported and may contain bugs and critical security issues.
+ dependencies:
+ boom: 0.4.2
+ cryptiles: 0.2.2
+ hoek: 0.8.5
+ sntp: 0.2.4
+ dev: true
+
+ /he@1.2.0:
+ resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==}
+ hasBin: true
+ dev: true
+
+ /hoek@0.8.5:
+ resolution: {integrity: sha512-NoKdeYUBOlQ7j9dgvT9BEX90rE6HtDkaMFwR6hfOj26LA2Mwyg5026jOpNBhmNrWIGdPnbBK3sQJI3POwh8wqg==}
+ engines: {node: '>=0.8.0'}
+ deprecated: This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial).
+ dev: true
+
+ /hoek@0.9.1:
+ resolution: {integrity: sha512-ZZ6eGyzGjyMTmpSPYVECXy9uNfqBR7x5CavhUaLOeD6W0vWK1mp/b7O3f86XE0Mtfo9rZ6Bh3fnuw9Xr8MF9zA==}
+ engines: {node: '>=0.8.0'}
+ deprecated: This version has been deprecated in accordance with the hapi support policy (hapi.im/support). Please upgrade to the latest version to get the best features, bug fixes, and security patches. If you are unable to upgrade at this time, paid support is available for older versions (hapi.im/commercial).
+ dev: true
+
+ /homedir-polyfill@1.0.3:
+ resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ parse-passwd: 1.0.0
+ dev: true
+
+ /hooker@0.2.3:
+ resolution: {integrity: sha512-t+UerCsQviSymAInD01Pw+Dn/usmz1sRO+3Zk1+lx8eg+WKpD2ulcwWqHHL0+aseRBr+3+vIhiG1K1JTwaIcTA==}
+ dev: true
+
+ /hosted-git-info@2.8.9:
+ resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==}
+ dev: true
+
+ /hosted-git-info@4.1.0:
+ resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==}
+ engines: {node: '>=10'}
+ dependencies:
+ lru-cache: 6.0.0
+ dev: true
+
+ /html-es6cape@1.0.5:
+ resolution: {integrity: sha512-pkkhVE3YCMJwWBy/b87xhXaFaceDZECytDvu36/t3dXvU3FaczMjQVX2cugDIBM+gpAKBPSxl4KWctqVJBJi4w==}
+ dev: true
+
+ /html-template-tag@3.2.0:
+ resolution: {integrity: sha512-dt/21zLAVPBB3M4j6dCE46LyG8PcHHIUTYiBTIRDw1yg4nGaVbKEVHVsm3BpeJzlSB6n9BrcW6kP4zJE9mS3ew==}
+ dependencies:
+ html-es6cape: 1.0.5
+ dev: true
+
+ /http-cache-semantics@3.8.1:
+ resolution: {integrity: sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==}
+ dev: true
+
+ /http-errors@1.6.3:
+ resolution: {integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==}
+ engines: {node: '>= 0.6'}
+ dependencies:
+ depd: 1.1.2
+ inherits: 2.0.3
+ setprototypeof: 1.1.0
+ statuses: 1.5.0
+ dev: true
+
+ /http-errors@2.0.0:
+ resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==}
+ engines: {node: '>= 0.8'}
+ dependencies:
+ depd: 2.0.0
+ inherits: 2.0.4
+ setprototypeof: 1.2.0
+ statuses: 2.0.1
+ toidentifier: 1.0.1
+ dev: true
+
+ /http-proxy-agent@2.1.0:
+ resolution: {integrity: sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==}
+ engines: {node: '>= 4.5.0'}
+ dependencies:
+ agent-base: 4.3.0
+ debug: 3.1.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /http-signature@0.10.1:
+ resolution: {integrity: sha512-coK8uR5rq2IMj+Hen+sKPA5ldgbCc1/spPdKCL1Fw6h+D0s/2LzMcRK0Cqufs1h0ryx/niwBHGFu8HC3hwU+lA==}
+ engines: {node: '>=0.8'}
+ dependencies:
+ asn1: 0.1.11
+ assert-plus: 0.1.5
+ ctype: 0.5.3
+ dev: true
+
+ /http-signature@1.2.0:
+ resolution: {integrity: sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==}
+ engines: {node: '>=0.8', npm: '>=1.3.7'}
+ dependencies:
+ assert-plus: 1.0.0
+ jsprim: 1.4.2
+ sshpk: 1.18.0
+ dev: true
+
+ /http2@3.3.7:
+ resolution: {integrity: sha512-puSi8M8WNlFJm9Pk4c/Mbz9Gwparuj3gO9/RRO5zv6piQ0FY+9Qywp0PdWshYgsMJSalixFY7eC6oPu0zRxLAQ==}
+ engines: {node: '>=0.12.0 <9.0.0'}
+ deprecated: Use the built-in module in node 9.0.0 or newer, instead
+ dev: true
+
+ /https-proxy-agent@2.2.4:
+ resolution: {integrity: sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==}
+ engines: {node: '>= 4.5.0'}
+ dependencies:
+ agent-base: 4.3.0
+ debug: 3.2.7
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /humanize-ms@1.2.1:
+ resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==}
+ dependencies:
+ ms: 2.1.3
+ dev: true
+
+ /hyperquest@1.2.0:
+ resolution: {integrity: sha512-N6QwIYr/ENmsE3+0aNA/x8M+jHF0wedvc9ZiGAhg7KK6TxwtJTSR95b0invqaLFPqUrsngYUrc4LVmLtrl7kvw==}
+ dependencies:
+ duplexer2: 0.0.2
+ through2: 0.6.5
+ dev: true
+
+ /iconv-lite@0.4.24:
+ resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ safer-buffer: 2.1.2
+ dev: true
+
+ /iconv-lite@0.6.3:
+ resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ safer-buffer: 2.1.2
+
+ /iferr@0.1.5:
+ resolution: {integrity: sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA==}
+ dev: true
+
+ /ignore-walk@3.0.4:
+ resolution: {integrity: sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==}
+ dependencies:
+ minimatch: 3.1.2
+ dev: true
+
+ /ignore@4.0.6:
+ resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==}
+ engines: {node: '>= 4'}
+ dev: true
+
+ /ignore@5.3.2:
+ resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
+ engines: {node: '>= 4'}
+ dev: true
+
+ /image-size@0.5.5:
+ resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==}
+ engines: {node: '>=0.10.0'}
+ hasBin: true
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /import-fresh@2.0.0:
+ resolution: {integrity: sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==}
+ engines: {node: '>=4'}
+ dependencies:
+ caller-path: 2.0.0
+ resolve-from: 3.0.0
+ dev: true
+
+ /import-fresh@3.3.1:
+ resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==}
+ engines: {node: '>=6'}
+ dependencies:
+ parent-module: 1.0.1
+ resolve-from: 4.0.0
+ dev: true
+
+ /import-local@2.0.0:
+ resolution: {integrity: sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==}
+ engines: {node: '>=6'}
+ hasBin: true
+ dependencies:
+ pkg-dir: 3.0.0
+ resolve-cwd: 2.0.0
+ dev: true
+
+ /imurmurhash@0.1.4:
+ resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
+ engines: {node: '>=0.8.19'}
+ dev: true
+
+ /indent-string@2.1.0:
+ resolution: {integrity: sha512-aqwDFWSgSgfRaEwao5lg5KEcVd/2a+D1rvoG7NdilmYz0NwRk6StWpWdz/Hpk34MKPpx7s8XxUqimfcQK6gGlg==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ repeating: 2.0.1
+ dev: true
+
+ /indent-string@3.2.0:
+ resolution: {integrity: sha512-BYqTHXTGUIvg7t1r4sJNKcbDZkL92nkXA8YtRpbjFHRHGDL/NtUeiBJMeE60kIFN/Mg8ESaWQvftaYMGJzQZCQ==}
+ engines: {node: '>=4'}
+ dev: true
+
+ /indent-string@4.0.0:
+ resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /indexed-filter@1.0.3:
+ resolution: {integrity: sha512-oBIzs6EARNMzrLgVg20fK52H19WcRHBiukiiEkw9rnnI//8rinEBMLrYdwEfJ9d4K7bjV1L6nSGft6H/qzHNgQ==}
+ dependencies:
+ append-type: 1.0.2
+ dev: true
+
+ /indexof@0.0.1:
+ resolution: {integrity: sha512-i0G7hLJ1z0DE8dsqJa2rycj9dBmNKgXBvotXtZYXakU9oivfB9Uj2ZBC27qqef2U58/ZLwalxa1X/RDCdkHtVg==}
+ dev: true
+
+ /infer-owner@1.0.4:
+ resolution: {integrity: sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==}
+ dev: true
+
+ /inflight@1.0.6:
+ resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
+ deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
+ dependencies:
+ once: 1.4.0
+ wrappy: 1.0.2
+ dev: true
+
+ /inherits@2.0.3:
+ resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==}
+ dev: true
+
+ /inherits@2.0.4:
+ resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
+ dev: true
+
+ /ini@1.3.8:
+ resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==}
+ dev: true
+
+ /init-package-json@1.10.3:
+ resolution: {integrity: sha512-zKSiXKhQveNteyhcj1CoOP8tqp1QuxPIPBl8Bid99DGLFqA1p87M6lNgfjJHSBoWJJlidGOv5rWjyYKEB3g2Jw==}
+ dependencies:
+ glob: 7.2.3
+ npm-package-arg: 6.1.1
+ promzard: 0.3.0
+ read: 1.0.7
+ read-package-json: 2.1.2
+ semver: 5.7.2
+ validate-npm-package-license: 3.0.4
+ validate-npm-package-name: 3.0.0
+ dev: true
+
+ /inquirer@6.5.2:
+ resolution: {integrity: sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==}
+ engines: {node: '>=6.0.0'}
+ dependencies:
+ ansi-escapes: 3.2.0
+ chalk: 2.4.2
+ cli-cursor: 2.1.0
+ cli-width: 2.2.1
+ external-editor: 3.1.0
+ figures: 2.0.0
+ lodash: 4.17.21
+ mute-stream: 0.0.7
+ run-async: 2.4.1
+ rxjs: 6.6.7
+ string-width: 2.1.1
+ strip-ansi: 5.2.0
+ through: 2.3.8
+ dev: true
+
+ /inquirer@7.3.3:
+ resolution: {integrity: sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==}
+ engines: {node: '>=8.0.0'}
+ dependencies:
+ ansi-escapes: 4.3.2
+ chalk: 4.1.2
+ cli-cursor: 3.1.0
+ cli-width: 3.0.0
+ external-editor: 3.1.0
+ figures: 3.2.0
+ lodash: 4.17.21
+ mute-stream: 0.0.8
+ run-async: 2.4.1
+ rxjs: 6.6.7
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+ through: 2.3.8
+ dev: true
+
+ /inspect-with-kind@1.0.5:
+ resolution: {integrity: sha512-MAQUJuIo7Xqk8EVNP+6d3CKq9c80hi4tjIbIAT6lmGW9W6WzlHiu9PS8uSuUYU+Do+j1baiFp3H25XEVxDIG2g==}
+ dependencies:
+ kind-of: 6.0.3
+ dev: true
+
+ /internal-slot@1.1.0:
+ resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ es-errors: 1.3.0
+ hasown: 2.0.2
+ side-channel: 1.1.0
+ dev: true
+
+ /interpret@1.1.0:
+ resolution: {integrity: sha512-CLM8SNMDu7C5psFCn6Wg/tgpj/bKAg7hc2gWqcuR9OD5Ft9PhBpIu8PLicPeis+xDd6YX2ncI8MCA64I9tftIA==}
+ dev: true
+
+ /interpret@1.4.0:
+ resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==}
+ engines: {node: '>= 0.10'}
+ dev: true
+
+ /ip@1.1.5:
+ resolution: {integrity: sha512-rBtCAQAJm8A110nbwn6YdveUnuZH3WrC36IwkRXxDnq53JvXA2NVQvB7IHyKomxK1MJ4VDNw3UtFDdXQ+AvLYA==}
+ dev: true
+
+ /is-absolute@1.0.0:
+ resolution: {integrity: sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-relative: 1.0.0
+ is-windows: 1.0.2
+ dev: true
+
+ /is-accessor-descriptor@1.0.1:
+ resolution: {integrity: sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==}
+ engines: {node: '>= 0.10'}
+ dependencies:
+ hasown: 2.0.2
+ dev: true
+
+ /is-array-buffer@3.0.5:
+ resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.8
+ call-bound: 1.0.3
+ get-intrinsic: 1.3.0
+ dev: true
+
+ /is-arrayish@0.2.1:
+ resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==}
+ dev: true
+
+ /is-async-function@2.1.1:
+ resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ async-function: 1.0.0
+ call-bound: 1.0.3
+ get-proto: 1.0.1
+ has-tostringtag: 1.0.2
+ safe-regex-test: 1.1.0
+ dev: true
+
+ /is-bigint@1.1.0:
+ resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ has-bigints: 1.1.0
+ dev: true
+
+ /is-boolean-object@1.2.2:
+ resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bound: 1.0.3
+ has-tostringtag: 1.0.2
+ dev: true
+
+ /is-buffer@1.1.6:
+ resolution: {integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==}
+ dev: true
+
+ /is-buffer@2.0.5:
+ resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==}
+ engines: {node: '>=4'}
+ dev: true
+
+ /is-callable@1.2.7:
+ resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==}
+ engines: {node: '>= 0.4'}
+ dev: true
+
+ /is-ci@2.0.0:
+ resolution: {integrity: sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==}
+ hasBin: true
+ dependencies:
+ ci-info: 2.0.0
+ dev: true
+
+ /is-core-module@2.16.1:
+ resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ hasown: 2.0.2
+ dev: true
+
+ /is-data-descriptor@1.0.1:
+ resolution: {integrity: sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ hasown: 2.0.2
+ dev: true
+
+ /is-data-view@1.0.2:
+ resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bound: 1.0.3
+ get-intrinsic: 1.3.0
+ is-typed-array: 1.1.15
+ dev: true
+
+ /is-date-object@1.1.0:
+ resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bound: 1.0.3
+ has-tostringtag: 1.0.2
+ dev: true
+
+ /is-descriptor@0.1.7:
+ resolution: {integrity: sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ is-accessor-descriptor: 1.0.1
+ is-data-descriptor: 1.0.1
+ dev: true
+
+ /is-descriptor@1.0.3:
+ resolution: {integrity: sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ is-accessor-descriptor: 1.0.1
+ is-data-descriptor: 1.0.1
+ dev: true
+
+ /is-directory@0.3.1:
+ resolution: {integrity: sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /is-extendable@0.1.1:
+ resolution: {integrity: sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /is-extendable@1.0.1:
+ resolution: {integrity: sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-plain-object: 2.0.4
+ dev: true
+
+ /is-extglob@2.1.1:
+ resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /is-finalizationregistry@1.1.1:
+ resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bound: 1.0.3
+ dev: true
+
+ /is-finite@1.1.0:
+ resolution: {integrity: sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /is-fullwidth-code-point@1.0.0:
+ resolution: {integrity: sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ number-is-nan: 1.0.1
+ dev: true
+
+ /is-fullwidth-code-point@2.0.0:
+ resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==}
+ engines: {node: '>=4'}
+ dev: true
+
+ /is-fullwidth-code-point@3.0.0:
+ resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /is-generator-function@1.1.0:
+ resolution: {integrity: sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bound: 1.0.3
+ get-proto: 1.0.1
+ has-tostringtag: 1.0.2
+ safe-regex-test: 1.1.0
+ dev: true
+
+ /is-glob@3.1.0:
+ resolution: {integrity: sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-extglob: 2.1.1
+ dev: true
+
+ /is-glob@4.0.3:
+ resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-extglob: 2.1.1
+ dev: true
+
+ /is-map@2.0.3:
+ resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==}
+ engines: {node: '>= 0.4'}
+ dev: true
+
+ /is-module@1.0.0:
+ resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==}
+ dev: true
+
+ /is-number-object@1.1.1:
+ resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bound: 1.0.3
+ has-tostringtag: 1.0.2
+ dev: true
+
+ /is-number@3.0.0:
+ resolution: {integrity: sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ kind-of: 3.2.2
+ dev: true
+
+ /is-number@7.0.0:
+ resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
+ engines: {node: '>=0.12.0'}
+ dev: true
+
+ /is-obj@1.0.1:
+ resolution: {integrity: sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /is-obj@2.0.0:
+ resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /is-object@0.1.2:
+ resolution: {integrity: sha512-GkfZZlIZtpkFrqyAXPQSRBMsaHAw+CgoKe2HXAkjd/sfoI9+hS8PT4wg2rJxdQyUKr7N2vHJbg7/jQtE5l5vBQ==}
+ dev: true
+
+ /is-plain-obj@1.1.0:
+ resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /is-plain-object@2.0.4:
+ resolution: {integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ isobject: 3.0.1
+ dev: true
+
+ /is-plain-object@5.0.0:
+ resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /is-reference@1.2.1:
+ resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==}
+ dependencies:
+ '@types/estree': 1.0.6
+ dev: true
+
+ /is-regex@1.2.1:
+ resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bound: 1.0.3
+ gopd: 1.2.0
+ has-tostringtag: 1.0.2
+ hasown: 2.0.2
+ dev: true
+
+ /is-relative@1.0.0:
+ resolution: {integrity: sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-unc-path: 1.0.0
+ dev: true
+
+ /is-set@2.0.3:
+ resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==}
+ engines: {node: '>= 0.4'}
+ dev: true
+
+ /is-shared-array-buffer@1.0.4:
+ resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bound: 1.0.3
+ dev: true
+
+ /is-ssh@1.4.1:
+ resolution: {integrity: sha512-JNeu1wQsHjyHgn9NcWTaXq6zWSR6hqE0++zhfZlkFBbScNkyvxCdeV8sRkSBaeLKxmbpR21brail63ACNxJ0Tg==}
+ dependencies:
+ protocols: 2.0.2
+ dev: true
+
+ /is-stream@1.1.0:
+ resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /is-string@1.1.1:
+ resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bound: 1.0.3
+ has-tostringtag: 1.0.2
+ dev: true
+
+ /is-symbol@1.1.1:
+ resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bound: 1.0.3
+ has-symbols: 1.1.0
+ safe-regex-test: 1.1.0
+ dev: true
+
+ /is-text-path@1.0.1:
+ resolution: {integrity: sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ text-extensions: 1.9.0
+ dev: true
+
+ /is-typed-array@1.1.15:
+ resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ which-typed-array: 1.1.18
+ dev: true
+
+ /is-typedarray@1.0.0:
+ resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==}
+ dev: true
+
+ /is-unc-path@1.0.0:
+ resolution: {integrity: sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ unc-path-regex: 0.1.2
+ dev: true
+
+ /is-utf8@0.2.1:
+ resolution: {integrity: sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==}
+ dev: true
+
+ /is-weakmap@2.0.2:
+ resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==}
+ engines: {node: '>= 0.4'}
+ dev: true
+
+ /is-weakref@1.1.1:
+ resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bound: 1.0.3
+ dev: true
+
+ /is-weakset@2.0.4:
+ resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bound: 1.0.3
+ get-intrinsic: 1.3.0
+ dev: true
+
+ /is-what@3.14.1:
+ resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==}
+ dev: false
+
+ /is-windows@1.0.2:
+ resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /is@0.2.7:
+ resolution: {integrity: sha512-ajQCouIvkcSnl2iRdK70Jug9mohIHVX9uKpoWnl115ov0R5mzBvRrXxrnHbsA+8AdwCwc/sfw7HXmd4I5EJBdQ==}
+ dev: true
+
+ /isarray@0.0.1:
+ resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==}
+ dev: true
+
+ /isarray@1.0.0:
+ resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==}
+ dev: true
+
+ /isarray@2.0.5:
+ resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==}
+ dev: true
+
+ /isexe@2.0.0:
+ resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
+ dev: true
+
+ /isobject@2.1.0:
+ resolution: {integrity: sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ isarray: 1.0.0
+ dev: true
+
+ /isobject@3.0.1:
+ resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /isstream@0.1.2:
+ resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==}
+ dev: true
+
+ /jest-worker@24.9.0:
+ resolution: {integrity: sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==}
+ engines: {node: '>= 6'}
+ dependencies:
+ merge-stream: 2.0.0
+ supports-color: 6.1.0
+ dev: true
+
+ /jit-grunt@0.10.0(grunt@1.6.1):
+ resolution: {integrity: sha512-eT/f4c9wgZ3buXB7X1JY1w6uNtAV0bhrbOGf/mFmBb0CDNLUETJ/VRoydayWOI54tOoam0cz9RooVCn3QY1WoA==}
+ engines: {node: '>=0.10.0'}
+ peerDependencies:
+ grunt: '>=0.4.0'
+ dependencies:
+ grunt: 1.6.1
+ dev: true
+
+ /js-base64@2.6.4:
+ resolution: {integrity: sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==}
+ dev: true
+
+ /js-tokens@4.0.0:
+ resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
+ dev: true
+
+ /js-yaml@3.13.1:
+ resolution: {integrity: sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==}
+ hasBin: true
+ dependencies:
+ argparse: 1.0.10
+ esprima: 4.0.1
+ dev: true
+
+ /js-yaml@3.14.1:
+ resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==}
+ hasBin: true
+ dependencies:
+ argparse: 1.0.10
+ esprima: 4.0.1
+ dev: true
+
+ /jsbn@0.1.1:
+ resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==}
+ dev: true
+
+ /json-buffer@3.0.1:
+ resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
+ dev: true
+
+ /json-fixer@1.6.15:
+ resolution: {integrity: sha512-TuDuZ5KrgyjoCIppdPXBMqiGfota55+odM+j2cQ5rt/XKyKmqGB3Whz1F8SN8+60yYGy/Nu5lbRZ+rx8kBIvBw==}
+ engines: {node: '>=10'}
+ dependencies:
+ '@babel/runtime': 7.26.9
+ chalk: 4.1.2
+ pegjs: 0.10.0
+ dev: true
+
+ /json-parse-better-errors@1.0.2:
+ resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==}
+ dev: true
+
+ /json-parse-even-better-errors@2.3.1:
+ resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
+ dev: true
+
+ /json-schema-traverse@0.4.1:
+ resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
+ dev: true
+
+ /json-schema-traverse@1.0.0:
+ resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==}
+ dev: true
+
+ /json-schema@0.4.0:
+ resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==}
+ dev: true
+
+ /json-stable-stringify-without-jsonify@1.0.1:
+ resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
+ dev: true
+
+ /json-stringify-safe@4.0.0:
+ resolution: {integrity: sha512-qzEpz1SDUb9xvA+LDOkNgjekdV7tuC7zDQf14sqMBtujh8kVbQhF11VWm4DeR99yFNjVSjTTfKa40c9ZQOtwXA==}
+ dev: true
+
+ /json-stringify-safe@5.0.1:
+ resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==}
+ dev: true
+
+ /json2csv@5.0.7:
+ resolution: {integrity: sha512-YRZbUnyaJZLZUJSRi2G/MqahCyRv9n/ds+4oIetjDF3jWQA7AG7iSeKTiZiCNqtMZM7HDyt0e/W6lEnoGEmMGA==}
+ engines: {node: '>= 10', npm: '>= 6.13.0'}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
+ hasBin: true
+ dependencies:
+ commander: 6.2.1
+ jsonparse: 1.3.1
+ lodash.get: 4.4.2
+ dev: true
+
+ /jsonfile@4.0.0:
+ resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==}
+ optionalDependencies:
+ graceful-fs: 4.2.11
+ dev: true
+
+ /jsonfile@6.1.0:
+ resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==}
+ dependencies:
+ universalify: 2.0.1
+ optionalDependencies:
+ graceful-fs: 4.2.11
+ dev: true
+
+ /jsonparse@1.3.1:
+ resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==}
+ engines: {'0': node >= 0.2.0}
+ dev: true
+
+ /jsprim@1.4.2:
+ resolution: {integrity: sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==}
+ engines: {node: '>=0.6.0'}
+ dependencies:
+ assert-plus: 1.0.0
+ extsprintf: 1.3.0
+ json-schema: 0.4.0
+ verror: 1.10.0
+ dev: true
+
+ /keyv@4.5.4:
+ resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
+ dependencies:
+ json-buffer: 3.0.1
+ dev: true
+
+ /kind-of@3.2.2:
+ resolution: {integrity: sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-buffer: 1.1.6
+ dev: true
+
+ /kind-of@4.0.0:
+ resolution: {integrity: sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-buffer: 1.1.6
+ dev: true
+
+ /kind-of@6.0.3:
+ resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /kleur@4.1.5:
+ resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /lerna@3.22.1(@octokit/core@6.1.4):
+ resolution: {integrity: sha512-vk1lfVRFm+UuEFA7wkLKeSF7Iz13W+N/vFd48aW2yuS7Kv0RbNm2/qcDPV863056LMfkRlsEe+QYOw3palj5Lg==}
+ engines: {node: '>= 6.9.0'}
+ hasBin: true
+ dependencies:
+ '@lerna/add': 3.21.0
+ '@lerna/bootstrap': 3.21.0
+ '@lerna/changed': 3.21.0
+ '@lerna/clean': 3.21.0
+ '@lerna/cli': 3.18.5
+ '@lerna/create': 3.22.0
+ '@lerna/diff': 3.21.0
+ '@lerna/exec': 3.21.0
+ '@lerna/import': 3.22.0
+ '@lerna/info': 3.21.0
+ '@lerna/init': 3.21.0
+ '@lerna/link': 3.21.0
+ '@lerna/list': 3.21.0
+ '@lerna/publish': 3.22.1(@octokit/core@6.1.4)
+ '@lerna/run': 3.21.0
+ '@lerna/version': 3.22.1(@octokit/core@6.1.4)
+ import-local: 2.0.0
+ npmlog: 4.1.2
+ transitivePeerDependencies:
+ - '@octokit/core'
+ - encoding
+ - supports-color
+ dev: true
+
+ /less-plugin-autoprefix@1.5.1:
+ resolution: {integrity: sha512-l++6pbkvw8XSD1soqugslzAaz0/YFrWXgc+PGo/EhLCjRo9zJfda2hFPLBSYrRDl62dTeDbN93Kx+1dvnHnkIw==}
+ engines: {node: '>=0.4.2'}
+ dependencies:
+ autoprefixer: 6.7.7
+ postcss: 5.2.18
+ dev: true
+
+ /less-plugin-clean-css@1.6.0:
+ resolution: {integrity: sha512-jwXX6WlXT57OVCXa5oBJBaJq1b4s1BOKeEEoAL2UTeEitogQWfTcBbLT/vow9pl0N0MXV8Mb4KyhTGG0YbEKyQ==}
+ engines: {node: '>=0.10'}
+ dependencies:
+ clean-css: 5.3.3
+ dev: true
+
+ /levn@0.4.1:
+ resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
+ engines: {node: '>= 0.8.0'}
+ dependencies:
+ prelude-ls: 1.2.1
+ type-check: 0.4.0
+ dev: true
+
+ /liftup@3.0.1:
+ resolution: {integrity: sha512-yRHaiQDizWSzoXk3APcA71eOI/UuhEkNN9DiW2Tt44mhYzX4joFoCZlxsSOF7RyeLlfqzFLQI1ngFq3ggMPhOw==}
+ engines: {node: '>=10'}
+ dependencies:
+ extend: 3.0.2
+ findup-sync: 4.0.0
+ fined: 1.2.0
+ flagged-respawn: 1.0.1
+ is-plain-object: 2.0.4
+ object.map: 1.0.1
+ rechoir: 0.7.1
+ resolve: 1.22.10
+ dev: true
+
+ /lines-and-columns@1.2.4:
+ resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
+ dev: true
+
+ /load-json-file@1.1.0:
+ resolution: {integrity: sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ graceful-fs: 4.2.11
+ parse-json: 2.2.0
+ pify: 2.3.0
+ pinkie-promise: 2.0.1
+ strip-bom: 2.0.0
+ dev: true
+
+ /load-json-file@4.0.0:
+ resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==}
+ engines: {node: '>=4'}
+ dependencies:
+ graceful-fs: 4.2.11
+ parse-json: 4.0.0
+ pify: 3.0.0
+ strip-bom: 3.0.0
+ dev: true
+
+ /load-json-file@5.3.0:
+ resolution: {integrity: sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw==}
+ engines: {node: '>=6'}
+ dependencies:
+ graceful-fs: 4.2.11
+ parse-json: 4.0.0
+ pify: 4.0.1
+ strip-bom: 3.0.0
+ type-fest: 0.3.1
+ dev: true
+
+ /locate-path@2.0.0:
+ resolution: {integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==}
+ engines: {node: '>=4'}
+ dependencies:
+ p-locate: 2.0.0
+ path-exists: 3.0.0
+ dev: true
+
+ /locate-path@3.0.0:
+ resolution: {integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==}
+ engines: {node: '>=6'}
+ dependencies:
+ p-locate: 3.0.0
+ path-exists: 3.0.0
+ dev: true
+
+ /locate-path@5.0.0:
+ resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==}
+ engines: {node: '>=8'}
+ dependencies:
+ p-locate: 4.1.0
+ dev: true
+
+ /lodash._reinterpolate@3.0.0:
+ resolution: {integrity: sha512-xYHt68QRoYGjeeM/XOE1uJtvXQAgvszfBhjV4yvsQH0u2i9I6cI6c6/eG4Hh3UAOVn0y/xAXwmTzEay49Q//HA==}
+ dev: true
+
+ /lodash.clonedeep@4.5.0:
+ resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==}
+ dev: true
+
+ /lodash.get@4.4.2:
+ resolution: {integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==}
+ deprecated: This package is deprecated. Use the optional chaining (?.) operator instead.
+ dev: true
+
+ /lodash.ismatch@4.4.0:
+ resolution: {integrity: sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g==}
+ dev: true
+
+ /lodash.merge@4.6.2:
+ resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
+ dev: true
+
+ /lodash.set@4.3.2:
+ resolution: {integrity: sha512-4hNPN5jlm/N/HLMCO43v8BXKq9Z7QdAGc/VGrRD61w8gN9g/6jF9A4L1pbUgBLCffi0w9VsXfTOij5x8iTyFvg==}
+ dev: true
+
+ /lodash.sortby@4.7.0:
+ resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==}
+ dev: true
+
+ /lodash.template@4.5.0:
+ resolution: {integrity: sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==}
+ deprecated: This package is deprecated. Use https://socket.dev/npm/package/eta instead.
+ dependencies:
+ lodash._reinterpolate: 3.0.0
+ lodash.templatesettings: 4.2.0
+ dev: true
+
+ /lodash.templatesettings@4.2.0:
+ resolution: {integrity: sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==}
+ dependencies:
+ lodash._reinterpolate: 3.0.0
+ dev: true
+
+ /lodash.truncate@4.4.2:
+ resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==}
+ dev: true
+
+ /lodash.uniq@4.5.0:
+ resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==}
+ dev: true
+
+ /lodash@2.4.1:
+ resolution: {integrity: sha512-qa6QqjA9jJB4AYw+NpD2GI4dzHL6Mv0hL+By6iIul4Ce0C1refrjZJmcGvWdnLUwl4LIPtvzje3UQfGH+nCEsQ==}
+ engines: {'0': node, '1': rhino}
+ dev: true
+
+ /lodash@2.4.2:
+ resolution: {integrity: sha512-Kak1hi6/hYHGVPmdyiZijoQyz5x2iGVzs6w9GYB/HiXEtylY7tIoYEROMjvM1d9nXJqPOrG2MNPMn01bJ+S0Rw==}
+ engines: {'0': node, '1': rhino}
+ dev: true
+
+ /lodash@4.17.21:
+ resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
+ dev: true
+
+ /log-symbols@2.2.0:
+ resolution: {integrity: sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==}
+ engines: {node: '>=4'}
+ dependencies:
+ chalk: 2.4.2
+ dev: true
+
+ /log-update@4.0.0:
+ resolution: {integrity: sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==}
+ engines: {node: '>=10'}
+ dependencies:
+ ansi-escapes: 4.3.2
+ cli-cursor: 3.1.0
+ slice-ansi: 4.0.0
+ wrap-ansi: 6.2.0
+ dev: true
+
+ /loud-rejection@1.6.0:
+ resolution: {integrity: sha512-RPNliZOFkqFumDhvYqOaNY4Uz9oJM2K9tC6JWsJJsNdhuONW4LQHRBpb0qf4pJApVffI5N39SwzWZJuEhfd7eQ==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ currently-unhandled: 0.4.1
+ signal-exit: 3.0.7
+ dev: true
+
+ /loupe@2.3.7:
+ resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==}
+ dependencies:
+ get-func-name: 2.0.2
+ dev: true
+
+ /lru-cache@5.1.1:
+ resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
+ dependencies:
+ yallist: 3.1.1
+ dev: true
+
+ /lru-cache@6.0.0:
+ resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
+ engines: {node: '>=10'}
+ dependencies:
+ yallist: 4.0.0
+ dev: true
+
+ /macos-release@2.5.1:
+ resolution: {integrity: sha512-DXqXhEM7gW59OjZO8NIjBCz9AQ1BEMrfiOAl4AYByHCtVHRF4KoGNO8mqQeM8lRCtQe/UnJ4imO/d2HdkKsd+A==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /magic-string@0.25.9:
+ resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==}
+ dependencies:
+ sourcemap-codec: 1.4.8
+ dev: true
+
+ /make-dir@1.3.0:
+ resolution: {integrity: sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==}
+ engines: {node: '>=4'}
+ dependencies:
+ pify: 3.0.0
+ dev: true
+
+ /make-dir@2.1.0:
+ resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==}
+ engines: {node: '>=6'}
+ dependencies:
+ pify: 4.0.1
+ semver: 5.7.2
+
+ /make-dir@3.1.0:
+ resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==}
+ engines: {node: '>=8'}
+ dependencies:
+ semver: 6.3.1
+ dev: true
+
+ /make-error@1.3.6:
+ resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==}
+ dev: true
+
+ /make-fetch-happen@5.0.2:
+ resolution: {integrity: sha512-07JHC0r1ykIoruKO8ifMXu+xEU8qOXDFETylktdug6vJDACnP+HKevOu3PXyNPzFyTSlz8vrBYlBO1JZRe8Cag==}
+ dependencies:
+ agentkeepalive: 3.5.3
+ cacache: 12.0.4
+ http-cache-semantics: 3.8.1
+ http-proxy-agent: 2.1.0
+ https-proxy-agent: 2.2.4
+ lru-cache: 5.1.1
+ mississippi: 3.0.0
+ node-fetch-npm: 2.0.4
+ promise-retry: 1.1.1
+ socks-proxy-agent: 4.0.2
+ ssri: 6.0.2
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /make-iterator@1.0.1:
+ resolution: {integrity: sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ kind-of: 6.0.3
+ dev: true
+
+ /map-cache@0.2.2:
+ resolution: {integrity: sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /map-obj@1.0.1:
+ resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /map-obj@2.0.0:
+ resolution: {integrity: sha512-TzQSV2DiMYgoF5RycneKVUzIa9bQsj/B3tTgsE3dOGqlzHnGIDaC7XBE7grnA+8kZPnfqSGFe95VHc2oc0VFUQ==}
+ engines: {node: '>=4'}
+ dev: true
+
+ /map-obj@4.3.0:
+ resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /map-visit@1.0.0:
+ resolution: {integrity: sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ object-visit: 1.0.1
+ dev: true
+
+ /math-intrinsics@1.1.0:
+ resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}
+ engines: {node: '>= 0.4'}
+ dev: true
+
+ /memorystream@0.3.1:
+ resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==}
+ engines: {node: '>= 0.10.0'}
+ dev: true
+
+ /meow@3.7.0:
+ resolution: {integrity: sha512-TNdwZs0skRlpPpCUK25StC4VH+tP5GgeY1HQOOGP+lQ2xtdkN2VtT/5tiX9k3IWpkBPV9b3LsAWXn4GGi/PrSA==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ camelcase-keys: 2.1.0
+ decamelize: 1.2.0
+ loud-rejection: 1.6.0
+ map-obj: 1.0.1
+ minimist: 1.2.8
+ normalize-package-data: 2.5.0
+ object-assign: 4.1.1
+ read-pkg-up: 1.0.1
+ redent: 1.0.0
+ trim-newlines: 1.0.0
+ dev: true
+
+ /meow@4.0.1:
+ resolution: {integrity: sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==}
+ engines: {node: '>=4'}
+ dependencies:
+ camelcase-keys: 4.2.0
+ decamelize-keys: 1.1.1
+ loud-rejection: 1.6.0
+ minimist: 1.2.8
+ minimist-options: 3.0.2
+ normalize-package-data: 2.5.0
+ read-pkg-up: 3.0.0
+ redent: 2.0.0
+ trim-newlines: 2.0.0
+ dev: true
+
+ /meow@8.1.2:
+ resolution: {integrity: sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==}
+ engines: {node: '>=10'}
+ dependencies:
+ '@types/minimist': 1.2.5
+ camelcase-keys: 6.2.2
+ decamelize-keys: 1.1.1
+ hard-rejection: 2.1.0
+ minimist-options: 4.1.0
+ normalize-package-data: 3.0.3
+ read-pkg-up: 7.0.1
+ redent: 3.0.0
+ trim-newlines: 3.0.1
+ type-fest: 0.18.1
+ yargs-parser: 20.2.9
+ dev: true
+
+ /merge-stream@2.0.0:
+ resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
+ dev: true
+
+ /merge2@1.4.1:
+ resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
+ engines: {node: '>= 8'}
+ dev: true
+
+ /micromatch@3.1.10:
+ resolution: {integrity: sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ arr-diff: 4.0.0
+ array-unique: 0.3.2
+ braces: 2.3.2
+ define-property: 2.0.2
+ extend-shallow: 3.0.2
+ extglob: 2.0.4
+ fragment-cache: 0.2.1
+ kind-of: 6.0.3
+ nanomatch: 1.2.13
+ object.pick: 1.3.0
+ regex-not: 1.0.2
+ snapdragon: 0.8.2
+ to-regex: 3.0.2
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /micromatch@4.0.8:
+ resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
+ engines: {node: '>=8.6'}
+ dependencies:
+ braces: 3.0.3
+ picomatch: 2.3.1
+ dev: true
+
+ /mime-db@1.52.0:
+ resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
+ engines: {node: '>= 0.6'}
+ dev: true
+
+ /mime-types@2.1.35:
+ resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
+ engines: {node: '>= 0.6'}
+ dependencies:
+ mime-db: 1.52.0
+ dev: true
+
+ /mime@1.2.11:
+ resolution: {integrity: sha512-Ysa2F/nqTNGHhhm9MV8ure4+Hc+Y8AWiqUdHxsO7xu8zc92ND9f3kpALHjaP026Ft17UfxrMt95c50PLUeynBw==}
+ dev: true
+
+ /mime@1.6.0:
+ resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==}
+ engines: {node: '>=4'}
+ hasBin: true
+
+ /mimic-fn@1.2.0:
+ resolution: {integrity: sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==}
+ engines: {node: '>=4'}
+ dev: true
+
+ /mimic-fn@2.1.0:
+ resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /min-indent@1.0.1:
+ resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==}
+ engines: {node: '>=4'}
+ dev: true
+
+ /minimatch@3.0.4:
+ resolution: {integrity: sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==}
+ dependencies:
+ brace-expansion: 1.1.11
+ dev: true
+
+ /minimatch@3.0.8:
+ resolution: {integrity: sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==}
+ dependencies:
+ brace-expansion: 1.1.11
+ dev: true
+
+ /minimatch@3.1.2:
+ resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
+ dependencies:
+ brace-expansion: 1.1.11
+ dev: true
+
+ /minimist-options@3.0.2:
+ resolution: {integrity: sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==}
+ engines: {node: '>= 4'}
+ dependencies:
+ arrify: 1.0.1
+ is-plain-obj: 1.1.0
+ dev: true
+
+ /minimist-options@4.1.0:
+ resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==}
+ engines: {node: '>= 6'}
+ dependencies:
+ arrify: 1.0.1
+ is-plain-obj: 1.1.0
+ kind-of: 6.0.3
+ dev: true
+
+ /minimist@1.2.8:
+ resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
+ dev: true
+
+ /minipass@2.9.0:
+ resolution: {integrity: sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==}
+ dependencies:
+ safe-buffer: 5.2.1
+ yallist: 3.1.1
+ dev: true
+
+ /minizlib@1.3.3:
+ resolution: {integrity: sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==}
+ dependencies:
+ minipass: 2.9.0
+ dev: true
+
+ /mississippi@3.0.0:
+ resolution: {integrity: sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==}
+ engines: {node: '>=4.0.0'}
+ dependencies:
+ concat-stream: 1.6.2
+ duplexify: 3.7.1
+ end-of-stream: 1.4.4
+ flush-write-stream: 1.1.1
+ from2: 2.3.0
+ parallel-transform: 1.2.0
+ pump: 3.0.2
+ pumpify: 1.5.1
+ stream-each: 1.2.3
+ through2: 2.0.5
+ dev: true
+
+ /mixin-deep@1.3.2:
+ resolution: {integrity: sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ for-in: 1.0.2
+ is-extendable: 1.0.1
+ dev: true
+
+ /mkdirp-promise@5.0.1:
+ resolution: {integrity: sha512-Hepn5kb1lJPtVW84RFT40YG1OddBNTOVUZR2bzQUHc+Z03en8/3uX0+060JDhcEzyO08HmipsN9DcnFMxhIL9w==}
+ engines: {node: '>=4'}
+ deprecated: This package is broken and no longer maintained. 'mkdirp' itself supports promises now, please switch to that.
+ dependencies:
+ mkdirp: 3.0.1
+ dev: true
+
+ /mkdirp@0.5.4:
+ resolution: {integrity: sha512-iG9AK/dJLtJ0XNgTuDbSyNS3zECqDlAhnQW4CsNxBG3LQJBbHmRX1egw39DmtOdCAqY+dKXV+sgPgilNWUKMVw==}
+ deprecated: Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)
+ hasBin: true
+ dependencies:
+ minimist: 1.2.8
+ dev: true
+
+ /mkdirp@0.5.6:
+ resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==}
+ hasBin: true
+ dependencies:
+ minimist: 1.2.8
+ dev: true
+
+ /mkdirp@3.0.1:
+ resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==}
+ engines: {node: '>=10'}
+ hasBin: true
+ dev: true
+
+ /mocha-teamcity-reporter@3.0.0(mocha@6.2.3):
+ resolution: {integrity: sha512-FyGgmtFfW2nDwEZU3mrjQShAAK/zhGivwY4HCsqoDoyeS8vV8HGdq1Dn2P+SFaIoCeXTQ0Z+5xVRyikYaKrW5w==}
+ engines: {node: '>=4'}
+ peerDependencies:
+ mocha: '>=3.5.0'
+ dependencies:
+ mocha: 6.2.3
+ dev: true
+
+ /mocha@6.2.3:
+ resolution: {integrity: sha512-0R/3FvjIGH3eEuG17ccFPk117XL2rWxatr81a57D+r/x2uTYZRbdZ4oVidEUMh2W2TJDa7MdAb12Lm2/qrKajg==}
+ engines: {node: '>= 6.0.0'}
+ hasBin: true
+ dependencies:
+ ansi-colors: 3.2.3
+ browser-stdout: 1.3.1
+ debug: 3.2.6(supports-color@6.0.0)
+ diff: 3.5.0
+ escape-string-regexp: 1.0.5
+ find-up: 3.0.0
+ glob: 7.1.3
+ growl: 1.10.5
+ he: 1.2.0
+ js-yaml: 3.13.1
+ log-symbols: 2.2.0
+ minimatch: 3.0.4
+ mkdirp: 0.5.4
+ ms: 2.1.1
+ node-environment-flags: 1.0.5
+ object.assign: 4.1.0
+ strip-json-comments: 2.0.1
+ supports-color: 6.0.0
+ which: 1.3.1
+ wide-align: 1.1.3
+ yargs: 13.3.2
+ yargs-parser: 13.1.2
+ yargs-unparser: 1.6.0
+ dev: true
+
+ /modify-values@1.0.1:
+ resolution: {integrity: sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /moment-timezone@0.5.5:
+ resolution: {integrity: sha512-/aaLDQVE4gnDiDIcX2wWgAfBvfmZAz5UEmVkSOL5FIPlVwsDGqvMzp/0N3MttZKUxeofRdnQhB1t7xI0FHLhZw==}
+ dependencies:
+ moment: 2.30.1
+ dev: true
+
+ /moment@2.30.1:
+ resolution: {integrity: sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==}
+ dev: true
+
+ /morgan@1.10.0:
+ resolution: {integrity: sha512-AbegBVI4sh6El+1gNwvD5YIck7nSA36weD7xvIxG4in80j/UoK8AEGaWnnz8v1GxonMCltmlNs5ZKbGvl9b1XQ==}
+ engines: {node: '>= 0.8.0'}
+ dependencies:
+ basic-auth: 2.0.1
+ debug: 2.6.9
+ depd: 2.0.0
+ on-finished: 2.3.0
+ on-headers: 1.0.2
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /move-concurrently@1.0.1:
+ resolution: {integrity: sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ==}
+ deprecated: This package is no longer supported.
+ dependencies:
+ aproba: 1.2.0
+ copy-concurrently: 1.0.5
+ fs-write-stream-atomic: 1.0.10
+ mkdirp: 0.5.6
+ rimraf: 2.7.1
+ run-queue: 1.0.3
+ dev: true
+
+ /ms@2.0.0:
+ resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==}
+ dev: true
+
+ /ms@2.1.1:
+ resolution: {integrity: sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==}
+ dev: true
+
+ /ms@2.1.3:
+ resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
+ dev: true
+
+ /multimatch@3.0.0:
+ resolution: {integrity: sha512-22foS/gqQfANZ3o+W7ST2x25ueHDVNWl/b9OlGcLpy/iKxjCpvcNCM51YCenUi7Mt/jAjjqv8JwZRs8YP5sRjA==}
+ engines: {node: '>=6'}
+ dependencies:
+ array-differ: 2.1.0
+ array-union: 1.0.2
+ arrify: 1.0.1
+ minimatch: 3.1.2
+ dev: true
+
+ /mute-stream@0.0.7:
+ resolution: {integrity: sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==}
+ dev: true
+
+ /mute-stream@0.0.8:
+ resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==}
+ dev: true
+
+ /mz@2.7.0:
+ resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
+ dependencies:
+ any-promise: 1.3.0
+ object-assign: 4.1.1
+ thenify-all: 1.6.0
+ dev: true
+
+ /nanomatch@1.2.13:
+ resolution: {integrity: sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ arr-diff: 4.0.0
+ array-unique: 0.3.2
+ define-property: 2.0.2
+ extend-shallow: 3.0.2
+ fragment-cache: 0.2.1
+ is-windows: 1.0.2
+ kind-of: 6.0.3
+ object.pick: 1.3.0
+ regex-not: 1.0.2
+ snapdragon: 0.8.2
+ to-regex: 3.0.2
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /natural-compare@1.4.0:
+ resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
+ dev: true
+
+ /needle@3.3.1:
+ resolution: {integrity: sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==}
+ engines: {node: '>= 4.4.x'}
+ hasBin: true
+ requiresBuild: true
+ dependencies:
+ iconv-lite: 0.6.3
+ sax: 1.4.1
+ dev: false
+ optional: true
+
+ /negotiator@0.6.3:
+ resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==}
+ engines: {node: '>= 0.6'}
+ dev: true
+
+ /neo-async@2.6.2:
+ resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==}
+ dev: true
+
+ /nice-try@1.0.5:
+ resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==}
+ dev: true
+
+ /nock@11.9.1:
+ resolution: {integrity: sha512-U5wPctaY4/ar2JJ5Jg4wJxlbBfayxgKbiAeGh+a1kk6Pwnc2ZEuKviLyDSG6t0uXl56q7AALIxoM6FJrBSsVXA==}
+ engines: {node: '>= 8.0'}
+ dependencies:
+ debug: 4.4.0
+ json-stringify-safe: 5.0.1
+ lodash: 4.17.21
+ mkdirp: 0.5.6
+ propagate: 2.0.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /node-environment-flags@1.0.5:
+ resolution: {integrity: sha512-VNYPRfGfmZLx0Ye20jWzHUjyTW/c+6Wq+iLhDzUI4XmhrDd9l/FozXV3F2xOaXjvp0co0+v1YSR3CMP6g+VvLQ==}
+ dependencies:
+ object.getownpropertydescriptors: 2.1.8
+ semver: 5.7.2
+ dev: true
+
+ /node-fetch-npm@2.0.4:
+ resolution: {integrity: sha512-iOuIQDWDyjhv9qSDrj9aq/klt6F9z1p2otB3AV7v3zBDcL/x+OfGsvGQZZCcMZbUf4Ujw1xGNQkjvGnVT22cKg==}
+ engines: {node: '>=4'}
+ deprecated: This module is not used anymore, npm uses minipass-fetch for its fetch implementation now
+ dependencies:
+ encoding: 0.1.13
+ json-parse-better-errors: 1.0.2
+ safe-buffer: 5.2.1
+ dev: true
+
+ /node-fetch@2.7.0:
+ resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==}
+ engines: {node: 4.x || >=6.0.0}
+ peerDependencies:
+ encoding: ^0.1.0
+ peerDependenciesMeta:
+ encoding:
+ optional: true
+ dependencies:
+ whatwg-url: 5.0.0
+ dev: true
+
+ /node-gyp@5.1.1:
+ resolution: {integrity: sha512-WH0WKGi+a4i4DUt2mHnvocex/xPLp9pYt5R6M2JdFB7pJ7Z34hveZ4nDTGTiLXCkitA9T8HFZjhinBCiVHYcWw==}
+ engines: {node: '>= 6.0.0'}
+ hasBin: true
+ dependencies:
+ env-paths: 2.2.1
+ glob: 7.2.3
+ graceful-fs: 4.2.11
+ mkdirp: 0.5.6
+ nopt: 4.0.3
+ npmlog: 4.1.2
+ request: 2.88.2
+ rimraf: 2.7.1
+ semver: 5.7.2
+ tar: 4.4.19
+ which: 1.3.1
+ dev: true
+
+ /node-promise@0.5.14:
+ resolution: {integrity: sha512-kbd+ABY2XRdByRVHPcBDemymfNL8+msGyKNxG/ziZnh9RjneuuGQl3/CE5UkNWxCInkJS+ztc5B31/t2kIO4Yw==}
+ dev: true
+
+ /node-uuid@1.4.8:
+ resolution: {integrity: sha512-TkCET/3rr9mUuRp+CpO7qfgT++aAxfDRaalQhwPFzI9BY/2rCDn6OfpZOVggi1AXfTPpfkTrg5f5WQx5G1uLxA==}
+ deprecated: Use uuid module instead
+ hasBin: true
+ dev: true
+
+ /nomnom@1.6.2:
+ resolution: {integrity: sha512-mscrcqifc/QKP6/afmtoC84/mK6SKcDTDEfKPMSgJKeV5dtshiw5+AF90uwHyAqHkMIYIEcGkSAJnV6+T9PY/g==}
+ deprecated: Package no longer supported. Contact support@npmjs.com for more info.
+ dependencies:
+ colors: 0.5.1
+ underscore: 1.4.4
+ dev: true
+
+ /nop@1.0.0:
+ resolution: {integrity: sha512-XdkOuXGx0DTwlqb0DWTcDqelgU/F3YyZ+PTRaecpDVpkYskcnh3OeUYKfvjcRQ2D1diTIGxi/a3eHVjW5yPupQ==}
+ dev: true
+
+ /nopt@3.0.6:
+ resolution: {integrity: sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==}
+ hasBin: true
+ dependencies:
+ abbrev: 1.1.1
+ dev: true
+
+ /nopt@4.0.3:
+ resolution: {integrity: sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==}
+ hasBin: true
+ dependencies:
+ abbrev: 1.1.1
+ osenv: 0.1.5
+ dev: true
+
+ /nopt@5.0.0:
+ resolution: {integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==}
+ engines: {node: '>=6'}
+ hasBin: true
+ dependencies:
+ abbrev: 1.1.1
+ dev: true
+
+ /normalize-package-data@2.5.0:
+ resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==}
+ dependencies:
+ hosted-git-info: 2.8.9
+ resolve: 1.22.10
+ semver: 5.7.2
+ validate-npm-package-license: 3.0.4
+ dev: true
+
+ /normalize-package-data@3.0.3:
+ resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==}
+ engines: {node: '>=10'}
+ dependencies:
+ hosted-git-info: 4.1.0
+ is-core-module: 2.16.1
+ semver: 7.7.1
+ validate-npm-package-license: 3.0.4
+ dev: true
+
+ /normalize-range@0.1.2:
+ resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /normalize-url@6.1.0:
+ resolution: {integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==}
+ engines: {node: '>=10'}
+ dev: true
+
+ /npm-bundled@1.1.2:
+ resolution: {integrity: sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==}
+ dependencies:
+ npm-normalize-package-bin: 1.0.1
+ dev: true
+
+ /npm-lifecycle@3.1.5:
+ resolution: {integrity: sha512-lDLVkjfZmvmfvpvBzA4vzee9cn+Me4orq0QF8glbswJVEbIcSNWib7qGOffolysc3teCqbbPZZkzbr3GQZTL1g==}
+ deprecated: The lifecycle script runner used in npm is now @npmcli/run-script. Please use that module moving forward
+ dependencies:
+ byline: 5.0.0
+ graceful-fs: 4.2.11
+ node-gyp: 5.1.1
+ resolve-from: 4.0.0
+ slide: 1.1.6
+ uid-number: 0.0.6
+ umask: 1.1.0
+ which: 1.3.1
+ dev: true
+
+ /npm-normalize-package-bin@1.0.1:
+ resolution: {integrity: sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==}
+ dev: true
+
+ /npm-package-arg@6.1.1:
+ resolution: {integrity: sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg==}
+ dependencies:
+ hosted-git-info: 2.8.9
+ osenv: 0.1.5
+ semver: 5.7.2
+ validate-npm-package-name: 3.0.0
+ dev: true
+
+ /npm-packlist@1.4.8:
+ resolution: {integrity: sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==}
+ dependencies:
+ ignore-walk: 3.0.4
+ npm-bundled: 1.1.2
+ npm-normalize-package-bin: 1.0.1
+ dev: true
+
+ /npm-pick-manifest@3.0.2:
+ resolution: {integrity: sha512-wNprTNg+X5nf+tDi+hbjdHhM4bX+mKqv6XmPh7B5eG+QY9VARfQPfCEH013H5GqfNj6ee8Ij2fg8yk0mzps1Vw==}
+ dependencies:
+ figgy-pudding: 3.5.2
+ npm-package-arg: 6.1.1
+ semver: 5.7.2
+ dev: true
+
+ /npm-run-all@4.1.5:
+ resolution: {integrity: sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==}
+ engines: {node: '>= 4'}
+ hasBin: true
+ dependencies:
+ ansi-styles: 3.2.1
+ chalk: 2.4.2
+ cross-spawn: 6.0.6
+ memorystream: 0.3.1
+ minimatch: 3.1.2
+ pidtree: 0.3.1
+ read-pkg: 3.0.0
+ shell-quote: 1.8.2
+ string.prototype.padend: 3.1.6
+ dev: true
+
+ /npm-run-path@1.0.0:
+ resolution: {integrity: sha512-PrGAi1SLlqNvKN5uGBjIgnrTb8fl0Jz0a3JJmeMcGnIBh7UE9Gc4zsAMlwDajOMg2b1OgP6UPvoLUboTmMZPFA==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ path-key: 1.0.0
+ dev: true
+
+ /npm-run-path@2.0.2:
+ resolution: {integrity: sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==}
+ engines: {node: '>=4'}
+ dependencies:
+ path-key: 2.0.1
+ dev: true
+
+ /npmlog@4.1.2:
+ resolution: {integrity: sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==}
+ deprecated: This package is no longer supported.
+ dependencies:
+ are-we-there-yet: 1.1.7
+ console-control-strings: 1.1.0
+ gauge: 2.7.4
+ set-blocking: 2.0.0
+ dev: true
+
+ /num2fraction@1.2.2:
+ resolution: {integrity: sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg==}
+ dev: true
+
+ /number-is-nan@1.0.1:
+ resolution: {integrity: sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /oauth-sign@0.3.0:
+ resolution: {integrity: sha512-Tr31Sh5FnK9YKm7xTUPyDMsNOvMqkVDND0zvK/Wgj7/H9q8mpye0qG2nVzrnsvLhcsX5DtqXD0la0ks6rkPCGQ==}
+ dev: true
+
+ /oauth-sign@0.9.0:
+ resolution: {integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==}
+ dev: true
+
+ /object-assign@4.1.1:
+ resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /object-copy@0.1.0:
+ resolution: {integrity: sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ copy-descriptor: 0.1.1
+ define-property: 0.2.5
+ kind-of: 3.2.2
+ dev: true
+
+ /object-inspect@1.13.4:
+ resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==}
+ engines: {node: '>= 0.4'}
+ dev: true
+
+ /object-keys@0.2.0:
+ resolution: {integrity: sha512-XODjdR2pBh/1qrjPcbSeSgEtKbYo7LqYNq64/TPuCf7j9SfDD3i21yatKoIy39yIWNvVM59iutfQQpCv1RfFzA==}
+ deprecated: Please update to the latest object-keys
+ dependencies:
+ foreach: 2.0.6
+ indexof: 0.0.1
+ is: 0.2.7
+ dev: true
+
+ /object-keys@1.1.1:
+ resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
+ engines: {node: '>= 0.4'}
+ dev: true
+
+ /object-visit@1.0.1:
+ resolution: {integrity: sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ isobject: 3.0.1
+ dev: true
+
+ /object.assign@4.1.0:
+ resolution: {integrity: sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ define-properties: 1.2.1
+ function-bind: 1.1.2
+ has-symbols: 1.1.0
+ object-keys: 1.1.1
+ dev: true
+
+ /object.assign@4.1.7:
+ resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.8
+ call-bound: 1.0.3
+ define-properties: 1.2.1
+ es-object-atoms: 1.1.1
+ has-symbols: 1.1.0
+ object-keys: 1.1.1
+ dev: true
+
+ /object.defaults@1.1.0:
+ resolution: {integrity: sha512-c/K0mw/F11k4dEUBMW8naXUuBuhxRCfG7W+yFy8EcijU/rSmazOUd1XAEEe6bC0OuXY4HUKjTJv7xbxIMqdxrA==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ array-each: 1.0.1
+ array-slice: 1.1.0
+ for-own: 1.0.0
+ isobject: 3.0.1
+ dev: true
+
+ /object.getownpropertydescriptors@2.1.8:
+ resolution: {integrity: sha512-qkHIGe4q0lSYMv0XI4SsBTJz3WaURhLvd0lKSgtVuOsJ2krg4SgMw3PIRQFMp07yi++UR3se2mkcLqsBNpBb/A==}
+ engines: {node: '>= 0.8'}
+ dependencies:
+ array.prototype.reduce: 1.0.7
+ call-bind: 1.0.8
+ define-properties: 1.2.1
+ es-abstract: 1.23.9
+ es-object-atoms: 1.1.1
+ gopd: 1.2.0
+ safe-array-concat: 1.1.3
+ dev: true
+
+ /object.map@1.0.1:
+ resolution: {integrity: sha512-3+mAJu2PLfnSVGHwIWubpOFLscJANBKuB/6A4CxBstc4aqwQY0FWcsppuy4jU5GSB95yES5JHSI+33AWuS4k6w==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ for-own: 1.0.0
+ make-iterator: 1.0.1
+ dev: true
+
+ /object.pick@1.3.0:
+ resolution: {integrity: sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ isobject: 3.0.1
+ dev: true
+
+ /octokit-pagination-methods@1.1.0:
+ resolution: {integrity: sha512-fZ4qZdQ2nxJvtcasX7Ghl+WlWS/d9IgnBIwFZXVNNZUmzpno91SX5bc5vuxiuKoCtK78XxGGNuSCrDC7xYB3OQ==}
+ dev: true
+
+ /on-finished@2.3.0:
+ resolution: {integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==}
+ engines: {node: '>= 0.8'}
+ dependencies:
+ ee-first: 1.1.1
+ dev: true
+
+ /on-finished@2.4.1:
+ resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==}
+ engines: {node: '>= 0.8'}
+ dependencies:
+ ee-first: 1.1.1
+ dev: true
+
+ /on-headers@1.0.2:
+ resolution: {integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==}
+ engines: {node: '>= 0.8'}
+ dev: true
+
+ /once@1.4.0:
+ resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
+ dependencies:
+ wrappy: 1.0.2
+ dev: true
+
+ /onetime@2.0.1:
+ resolution: {integrity: sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==}
+ engines: {node: '>=4'}
+ dependencies:
+ mimic-fn: 1.2.0
+ dev: true
+
+ /onetime@5.1.2:
+ resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
+ engines: {node: '>=6'}
+ dependencies:
+ mimic-fn: 2.1.0
+ dev: true
+
+ /opn@4.0.2:
+ resolution: {integrity: sha512-iPBWbPP4OEOzR1xfhpGLDh+ypKBOygunZhM9jBtA7FS5sKjEiMZw0EFb82hnDOmTZX90ZWLoZKUza4cVt8MexA==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ object-assign: 4.1.1
+ pinkie-promise: 2.0.1
+ dev: true
+
+ /optionator@0.9.4:
+ resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==}
+ engines: {node: '>= 0.8.0'}
+ dependencies:
+ deep-is: 0.1.4
+ fast-levenshtein: 2.0.6
+ levn: 0.4.1
+ prelude-ls: 1.2.1
+ type-check: 0.4.0
+ word-wrap: 1.2.5
+ dev: true
+
+ /os-homedir@1.0.2:
+ resolution: {integrity: sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /os-name@3.1.0:
+ resolution: {integrity: sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg==}
+ engines: {node: '>=6'}
+ dependencies:
+ macos-release: 2.5.1
+ windows-release: 3.3.3
+ dev: true
+
+ /os-tmpdir@1.0.2:
+ resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /osenv@0.1.5:
+ resolution: {integrity: sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==}
+ deprecated: This package is no longer supported.
+ dependencies:
+ os-homedir: 1.0.2
+ os-tmpdir: 1.0.2
+ dev: true
+
+ /own-keys@1.0.1:
+ resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ get-intrinsic: 1.3.0
+ object-keys: 1.1.1
+ safe-push-apply: 1.0.0
+ dev: true
+
+ /p-finally@1.0.0:
+ resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==}
+ engines: {node: '>=4'}
+ dev: true
+
+ /p-limit@1.3.0:
+ resolution: {integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==}
+ engines: {node: '>=4'}
+ dependencies:
+ p-try: 1.0.0
+ dev: true
+
+ /p-limit@2.3.0:
+ resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==}
+ engines: {node: '>=6'}
+ dependencies:
+ p-try: 2.2.0
+ dev: true
+
+ /p-locate@2.0.0:
+ resolution: {integrity: sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==}
+ engines: {node: '>=4'}
+ dependencies:
+ p-limit: 1.3.0
+ dev: true
+
+ /p-locate@3.0.0:
+ resolution: {integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==}
+ engines: {node: '>=6'}
+ dependencies:
+ p-limit: 2.3.0
+ dev: true
+
+ /p-locate@4.1.0:
+ resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==}
+ engines: {node: '>=8'}
+ dependencies:
+ p-limit: 2.3.0
+ dev: true
+
+ /p-map-series@1.0.0:
+ resolution: {integrity: sha512-4k9LlvY6Bo/1FcIdV33wqZQES0Py+iKISU9Uc8p8AjWoZPnFKMpVIVD3s0EYn4jzLh1I+WeUZkJ0Yoa4Qfw3Kg==}
+ engines: {node: '>=4'}
+ dependencies:
+ p-reduce: 1.0.0
+ dev: true
+
+ /p-map@2.1.0:
+ resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /p-pipe@1.2.0:
+ resolution: {integrity: sha512-IA8SqjIGA8l9qOksXJvsvkeQ+VGb0TAzNCzvKvz9wt5wWLqfWbV6fXy43gpR2L4Te8sOq3S+Ql9biAaMKPdbtw==}
+ engines: {node: '>=4'}
+ dev: true
+
+ /p-queue@4.0.0:
+ resolution: {integrity: sha512-3cRXXn3/O0o3+eVmUroJPSj/esxoEFIm0ZOno/T+NzG/VZgPOqQ8WKmlNqubSEpZmCIngEy34unkHGg83ZIBmg==}
+ engines: {node: '>=6'}
+ dependencies:
+ eventemitter3: 3.1.2
+ dev: true
+
+ /p-reduce@1.0.0:
+ resolution: {integrity: sha512-3Tx1T3oM1xO/Y8Gj0sWyE78EIJZ+t+aEmXUdvQgvGmSMri7aPTHoovbXEreWKkL5j21Er60XAWLTzKbAKYOujQ==}
+ engines: {node: '>=4'}
+ dev: true
+
+ /p-try@1.0.0:
+ resolution: {integrity: sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==}
+ engines: {node: '>=4'}
+ dev: true
+
+ /p-try@2.2.0:
+ resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /p-waterfall@1.0.0:
+ resolution: {integrity: sha512-KeXddIp6jBT8qzyxfQGOGzNYc/7ftxKtRc5Uggre02yvbZrSBHE2M2C842/WizMBFD4s0Ngwz3QFOit2A+Ezrg==}
+ engines: {node: '>=4'}
+ dependencies:
+ p-reduce: 1.0.0
+ dev: true
+
+ /parallel-transform@1.2.0:
+ resolution: {integrity: sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==}
+ dependencies:
+ cyclist: 1.0.2
+ inherits: 2.0.4
+ readable-stream: 2.3.8
+ dev: true
+
+ /parent-module@1.0.1:
+ resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
+ engines: {node: '>=6'}
+ dependencies:
+ callsites: 3.1.0
+ dev: true
+
+ /parse-filepath@1.0.2:
+ resolution: {integrity: sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==}
+ engines: {node: '>=0.8'}
+ dependencies:
+ is-absolute: 1.0.0
+ map-cache: 0.2.2
+ path-root: 0.1.1
+ dev: true
+
+ /parse-github-repo-url@1.4.1:
+ resolution: {integrity: sha512-bSWyzBKqcSL4RrncTpGsEKoJ7H8a4L3++ifTAbTFeMHyq2wRV+42DGmQcHIrJIvdcacjIOxEuKH/w4tthF17gg==}
+ dev: true
+
+ /parse-json@2.2.0:
+ resolution: {integrity: sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ error-ex: 1.3.2
+ dev: true
+
+ /parse-json@4.0.0:
+ resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==}
+ engines: {node: '>=4'}
+ dependencies:
+ error-ex: 1.3.2
+ json-parse-better-errors: 1.0.2
+ dev: true
+
+ /parse-json@5.2.0:
+ resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
+ engines: {node: '>=8'}
+ dependencies:
+ '@babel/code-frame': 7.26.2
+ error-ex: 1.3.2
+ json-parse-even-better-errors: 2.3.1
+ lines-and-columns: 1.2.4
+ dev: true
+
+ /parse-link-header@0.1.0:
+ resolution: {integrity: sha512-VZ0pZwX3LRTfpDARULYD2C0fHuQqg7TPSGmPoKEHfBBmBhH7KMG3LV27GkUtjezoixE/CCJNAVnNw54IxkskWg==}
+ dependencies:
+ xtend: 2.0.6
+ dev: true
+
+ /parse-ms@1.0.1:
+ resolution: {integrity: sha512-LpH1Cf5EYuVjkBvCDBYvkUPh+iv2bk3FHflxHkpCYT0/FZ1d3N3uJaLiHr4yGuMcFUhv6eAivitTvWZI4B/chg==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /parse-node-version@1.0.1:
+ resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==}
+ engines: {node: '>= 0.10'}
+ dev: false
+
+ /parse-passwd@1.0.0:
+ resolution: {integrity: sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /parse-path@4.0.4:
+ resolution: {integrity: sha512-Z2lWUis7jlmXC1jeOG9giRO2+FsuyNipeQ43HAjqAZjwSe3SEf+q/84FGPHoso3kyntbxa4c4i77t3m6fGf8cw==}
+ dependencies:
+ is-ssh: 1.4.1
+ protocols: 1.4.8
+ qs: 6.14.0
+ query-string: 6.14.1
+ dev: true
+
+ /parse-url@6.0.5:
+ resolution: {integrity: sha512-e35AeLTSIlkw/5GFq70IN7po8fmDUjpDPY1rIK+VubRfsUvBonjQ+PBZG+vWMACnQSmNlvl524IucoDmcioMxA==}
+ dependencies:
+ is-ssh: 1.4.1
+ normalize-url: 6.1.0
+ parse-path: 4.0.4
+ protocols: 1.4.8
+ dev: true
+
+ /parseurl@1.3.3:
+ resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==}
+ engines: {node: '>= 0.8'}
+ dev: true
+
+ /pascalcase@0.1.1:
+ resolution: {integrity: sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /path-dirname@1.0.2:
+ resolution: {integrity: sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==}
+ dev: true
+
+ /path-exists@2.1.0:
+ resolution: {integrity: sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ pinkie-promise: 2.0.1
+ dev: true
+
+ /path-exists@3.0.0:
+ resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==}
+ engines: {node: '>=4'}
+ dev: true
+
+ /path-exists@4.0.0:
+ resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /path-is-absolute@1.0.1:
+ resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /path-key@1.0.0:
+ resolution: {integrity: sha512-T3hWy7tyXlk3QvPFnT+o2tmXRzU4GkitkUWLp/WZ0S/FXd7XMx176tRurgTvHTNMJOQzTcesHNpBqetH86mQ9g==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /path-key@2.0.1:
+ resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==}
+ engines: {node: '>=4'}
+ dev: true
+
+ /path-key@3.1.1:
+ resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /path-parse@1.0.7:
+ resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
+ dev: true
+
+ /path-root-regex@0.1.2:
+ resolution: {integrity: sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /path-root@0.1.1:
+ resolution: {integrity: sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ path-root-regex: 0.1.2
+ dev: true
+
+ /path-type@1.1.0:
+ resolution: {integrity: sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ graceful-fs: 4.2.11
+ pify: 2.3.0
+ pinkie-promise: 2.0.1
+ dev: true
+
+ /path-type@3.0.0:
+ resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==}
+ engines: {node: '>=4'}
+ dependencies:
+ pify: 3.0.0
+ dev: true
+
+ /path-type@4.0.0:
+ resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /pathval@1.1.1:
+ resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==}
+ dev: true
+
+ /pegjs@0.10.0:
+ resolution: {integrity: sha512-qI5+oFNEGi3L5HAxDwN2LA4Gg7irF70Zs25edhjld9QemOgp0CbvMtbFcMvFtEo1OityPrcCzkQFB8JP/hxgow==}
+ engines: {node: '>=0.10'}
+ hasBin: true
+ dev: true
+
+ /performance-now@0.2.0:
+ resolution: {integrity: sha512-YHk5ez1hmMR5LOkb9iJkLKqoBlL7WD5M8ljC75ZfzXriuBIVNuecaXuU7e+hOwyqf24Wxhh7Vxgt7Hnw9288Tg==}
+ dev: true
+
+ /performance-now@2.1.0:
+ resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==}
+ dev: true
+
+ /phin@2.9.3:
+ resolution: {integrity: sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA==}
+ deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
+ dev: true
+
+ /picocolors@1.1.1:
+ resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
+ dev: true
+
+ /picomatch@2.3.1:
+ resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
+ engines: {node: '>=8.6'}
+ dev: true
+
+ /pidtree@0.3.1:
+ resolution: {integrity: sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==}
+ engines: {node: '>=0.10'}
+ hasBin: true
+ dev: true
+
+ /pify@2.3.0:
+ resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /pify@3.0.0:
+ resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==}
+ engines: {node: '>=4'}
+ dev: true
+
+ /pify@4.0.1:
+ resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==}
+ engines: {node: '>=6'}
+
+ /pify@5.0.0:
+ resolution: {integrity: sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==}
+ engines: {node: '>=10'}
+ dev: true
+
+ /pinkie-promise@2.0.1:
+ resolution: {integrity: sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ pinkie: 2.0.4
+ dev: true
+
+ /pinkie@2.0.4:
+ resolution: {integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /pkg-dir@3.0.0:
+ resolution: {integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==}
+ engines: {node: '>=6'}
+ dependencies:
+ find-up: 3.0.0
+ dev: true
+
+ /pkg-dir@4.2.0:
+ resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==}
+ engines: {node: '>=8'}
+ dependencies:
+ find-up: 4.1.0
+ dev: true
+
+ /platform@1.3.6:
+ resolution: {integrity: sha512-fnWVljUchTro6RiCFvCXBbNhJc2NijN7oIQxbwsyL0buWJPG85v81ehlHI9fXrJsMNgTofEoWIQeClKpgxFLrg==}
+ dev: true
+
+ /playwright-core@1.50.1:
+ resolution: {integrity: sha512-ra9fsNWayuYumt+NiM069M6OkcRb1FZSK8bgi66AtpFoWkg2+y0bJSNmkFrWhMbEBbVKC/EruAHH3g0zmtwGmQ==}
+ engines: {node: '>=18'}
+ hasBin: true
+ dev: true
+
+ /playwright@1.50.1:
+ resolution: {integrity: sha512-G8rwsOQJ63XG6BbKj2w5rHeavFjy5zynBA9zsJMMtBoe/Uf757oG12NXz6e6OirF7RCrTVAKFXbLmn1RbL7Qaw==}
+ engines: {node: '>=18'}
+ hasBin: true
+ dependencies:
+ playwright-core: 1.50.1
+ optionalDependencies:
+ fsevents: 2.3.2
+ dev: true
+
+ /plur@1.0.0:
+ resolution: {integrity: sha512-qSnKBSZeDY8ApxwhfVIwKwF36KVJqb1/9nzYYq3j3vdwocULCXT8f8fQGkiw1Nk9BGfxiDagEe/pwakA+bOBqw==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /portscanner@1.2.0:
+ resolution: {integrity: sha512-3MCx40XO6ChNJJHw1tTFukQK/M/8FacGZK/vGbnrKpozObrJzembYtfi7ZdA2hkF2Lojg77XhsKUPvF8eHKcDA==}
+ engines: {node: '>=0.4', npm: '>=1.0.0'}
+ dependencies:
+ async: 1.5.2
+ dev: true
+
+ /posix-character-classes@0.1.1:
+ resolution: {integrity: sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /possible-typed-array-names@1.1.0:
+ resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==}
+ engines: {node: '>= 0.4'}
+ dev: true
+
+ /postcss-value-parser@3.3.1:
+ resolution: {integrity: sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==}
+ dev: true
+
+ /postcss@5.2.18:
+ resolution: {integrity: sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==}
+ engines: {node: '>=0.12'}
+ dependencies:
+ chalk: 1.1.3
+ js-base64: 2.6.4
+ source-map: 0.5.7
+ supports-color: 3.2.3
+ dev: true
+
+ /prelude-ls@1.2.1:
+ resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
+ engines: {node: '>= 0.8.0'}
+ dev: true
+
+ /prettier@2.8.8:
+ resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==}
+ engines: {node: '>=10.13.0'}
+ hasBin: true
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /pretty-ms@2.1.0:
+ resolution: {integrity: sha512-H2enpsxzDhuzRl3zeSQpQMirn8dB0Z/gxW96j06tMfTviUWvX14gjKb7qd1gtkUyYhDPuoNe00K5PqNvy2oQNg==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-finite: 1.1.0
+ parse-ms: 1.0.1
+ plur: 1.0.0
+ dev: true
+
+ /process-nextick-args@2.0.1:
+ resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==}
+ dev: true
+
+ /progress@2.0.3:
+ resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==}
+ engines: {node: '>=0.4.0'}
+ dev: true
+
+ /promise-inflight@1.0.1(bluebird@3.7.2):
+ resolution: {integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==}
+ peerDependencies:
+ bluebird: '*'
+ peerDependenciesMeta:
+ bluebird:
+ optional: true
+ dependencies:
+ bluebird: 3.7.2
+ dev: true
+
+ /promise-retry@1.1.1:
+ resolution: {integrity: sha512-StEy2osPr28o17bIW776GtwO6+Q+M9zPiZkYfosciUUMYqjhU/ffwRAH0zN2+uvGyUsn8/YICIHRzLbPacpZGw==}
+ engines: {node: '>=0.12'}
+ dependencies:
+ err-code: 1.1.2
+ retry: 0.10.1
+ dev: true
+
+ /promise@7.3.1:
+ resolution: {integrity: sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==}
+ dependencies:
+ asap: 2.0.6
+ dev: true
+
+ /promzard@0.3.0:
+ resolution: {integrity: sha512-JZeYqd7UAcHCwI+sTOeUDYkvEU+1bQ7iE0UT1MgB/tERkAPkesW46MrpIySzODi+owTjZtiF8Ay5j9m60KmMBw==}
+ dependencies:
+ read: 1.0.7
+ dev: true
+
+ /propagate@2.0.1:
+ resolution: {integrity: sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==}
+ engines: {node: '>= 8'}
+ dev: true
+
+ /proto-list@1.2.4:
+ resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==}
+ dev: true
+
+ /protocols@1.4.8:
+ resolution: {integrity: sha512-IgjKyaUSjsROSO8/D49Ab7hP8mJgTYcqApOqdPhLoPxAplXmkp+zRvsrSQjFn5by0rhm4VH0GAUELIPpx7B1yg==}
+ dev: true
+
+ /protocols@2.0.2:
+ resolution: {integrity: sha512-hHVTzba3wboROl0/aWRRG9dMytgH6ow//STBZh43l/wQgmMhYhOFi0EHWAPtoCz9IAUymsyP0TSBHkhgMEGNnQ==}
+ dev: true
+
+ /protoduck@5.0.1:
+ resolution: {integrity: sha512-WxoCeDCoCBY55BMvj4cAEjdVUFGRWed9ZxPlqTKYyw1nDDTQ4pqmnIMAGfJlg7Dx35uB/M+PHJPTmGOvaCaPTg==}
+ dependencies:
+ genfun: 5.0.0
+ dev: true
+
+ /prr@1.0.1:
+ resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==}
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /psl@1.15.0:
+ resolution: {integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==}
+ dependencies:
+ punycode: 2.3.1
+ dev: true
+
+ /pump@2.0.1:
+ resolution: {integrity: sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==}
+ dependencies:
+ end-of-stream: 1.4.4
+ once: 1.4.0
+ dev: true
+
+ /pump@3.0.2:
+ resolution: {integrity: sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==}
+ dependencies:
+ end-of-stream: 1.4.4
+ once: 1.4.0
+ dev: true
+
+ /pumpify@1.5.1:
+ resolution: {integrity: sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==}
+ dependencies:
+ duplexify: 3.7.1
+ inherits: 2.0.4
+ pump: 2.0.1
+ dev: true
+
+ /punycode@2.3.1:
+ resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /q@1.4.1:
+ resolution: {integrity: sha512-/CdEdaw49VZVmyIDGUQKDDT53c7qBkO6g5CefWz91Ae+l4+cRtcDYwMTXh6me4O8TMldeGHG3N2Bl84V78Ywbg==}
+ engines: {node: '>=0.6.0', teleport: '>=0.2.0'}
+ deprecated: |-
+ You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other.
+
+ (For a CapTP with native promises, see @endo/eventual-send and @endo/captp)
+ dev: true
+
+ /q@1.5.1:
+ resolution: {integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==}
+ engines: {node: '>=0.6.0', teleport: '>=0.2.0'}
+ deprecated: |-
+ You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other.
+
+ (For a CapTP with native promises, see @endo/eventual-send and @endo/captp)
+ dev: true
+
+ /qs@0.6.6:
+ resolution: {integrity: sha512-kN+yNdAf29Jgp+AYHUmC7X4QdJPR8czuMWLNLc0aRxkQ7tB3vJQEONKKT9ou/rW7EbqVec11srC9q9BiVbcnHA==}
+ dev: true
+
+ /qs@6.14.0:
+ resolution: {integrity: sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==}
+ engines: {node: '>=0.6'}
+ dependencies:
+ side-channel: 1.1.0
+ dev: true
+
+ /qs@6.5.3:
+ resolution: {integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==}
+ engines: {node: '>=0.6'}
+ dev: true
+
+ /query-string@6.14.1:
+ resolution: {integrity: sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw==}
+ engines: {node: '>=6'}
+ dependencies:
+ decode-uri-component: 0.2.2
+ filter-obj: 1.1.0
+ split-on-first: 1.1.0
+ strict-uri-encode: 2.0.0
+ dev: true
+
+ /queue-microtask@1.2.3:
+ resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
+ dev: true
+
+ /quick-lru@1.1.0:
+ resolution: {integrity: sha512-tRS7sTgyxMXtLum8L65daJnHUhfDUgboRdcWW2bR9vBfrj2+O5HSMbQOJfJJjIVSPFqbBCF37FpwWXGitDc5tA==}
+ engines: {node: '>=4'}
+ dev: true
+
+ /quick-lru@4.0.1:
+ resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /randombytes@2.1.0:
+ resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==}
+ dependencies:
+ safe-buffer: 5.2.1
+ dev: true
+
+ /range-parser@1.2.1:
+ resolution: {integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==}
+ engines: {node: '>= 0.6'}
+ dev: true
+
+ /read-cmd-shim@1.0.5:
+ resolution: {integrity: sha512-v5yCqQ/7okKoZZkBQUAfTsQ3sVJtXdNfbPnI5cceppoxEVLYA3k+VtV2omkeo8MS94JCy4fSiUwlRBAwCVRPUA==}
+ dependencies:
+ graceful-fs: 4.2.11
+ dev: true
+
+ /read-glob@3.0.0:
+ resolution: {integrity: sha512-ywcpIVKwlKbj8vRLq5WbFju9nxDQB7VOL68260bvZPUsekwh43W6ngQ5e8znqQmLHwzEklhFi6YiAzUvlZclLw==}
+ dependencies:
+ assert-fs-readfile-option: 1.0.1
+ glob-observable: 0.7.0
+ graceful-fs: 4.2.11
+ inspect-with-kind: 1.0.5
+ zen-observable: 0.8.15
+ dev: true
+
+ /read-package-json@2.1.2:
+ resolution: {integrity: sha512-D1KmuLQr6ZSJS0tW8hf3WGpRlwszJOXZ3E8Yd/DNRaM5d+1wVRZdHlpGBLAuovjr28LbWvjpWkBHMxpRGGjzNA==}
+ deprecated: This package is no longer supported. Please use @npmcli/package-json instead.
+ dependencies:
+ glob: 7.2.3
+ json-parse-even-better-errors: 2.3.1
+ normalize-package-data: 2.5.0
+ npm-normalize-package-bin: 1.0.1
+ dev: true
+
+ /read-package-tree@5.3.1:
+ resolution: {integrity: sha512-mLUDsD5JVtlZxjSlPPx1RETkNjjvQYuweKwNVt1Sn8kP5Jh44pvYuUHCp6xSVDZWbNxVxG5lyZJ921aJH61sTw==}
+ deprecated: The functionality that this package provided is now in @npmcli/arborist
+ dependencies:
+ read-package-json: 2.1.2
+ readdir-scoped-modules: 1.1.0
+ util-promisify: 2.1.0
+ dev: true
+
+ /read-pkg-up@1.0.1:
+ resolution: {integrity: sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ find-up: 1.1.2
+ read-pkg: 1.1.0
+ dev: true
+
+ /read-pkg-up@3.0.0:
+ resolution: {integrity: sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==}
+ engines: {node: '>=4'}
+ dependencies:
+ find-up: 2.1.0
+ read-pkg: 3.0.0
+ dev: true
+
+ /read-pkg-up@7.0.1:
+ resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==}
+ engines: {node: '>=8'}
+ dependencies:
+ find-up: 4.1.0
+ read-pkg: 5.2.0
+ type-fest: 0.8.1
+ dev: true
+
+ /read-pkg@1.1.0:
+ resolution: {integrity: sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ load-json-file: 1.1.0
+ normalize-package-data: 2.5.0
+ path-type: 1.1.0
+ dev: true
+
+ /read-pkg@3.0.0:
+ resolution: {integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==}
+ engines: {node: '>=4'}
+ dependencies:
+ load-json-file: 4.0.0
+ normalize-package-data: 2.5.0
+ path-type: 3.0.0
+ dev: true
+
+ /read-pkg@5.2.0:
+ resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==}
+ engines: {node: '>=8'}
+ dependencies:
+ '@types/normalize-package-data': 2.4.4
+ normalize-package-data: 2.5.0
+ parse-json: 5.2.0
+ type-fest: 0.6.0
+ dev: true
+
+ /read@1.0.7:
+ resolution: {integrity: sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==}
+ engines: {node: '>=0.8'}
+ dependencies:
+ mute-stream: 0.0.8
+ dev: true
+
+ /readable-stream@1.0.34:
+ resolution: {integrity: sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==}
+ dependencies:
+ core-util-is: 1.0.3
+ inherits: 2.0.4
+ isarray: 0.0.1
+ string_decoder: 0.10.31
+ dev: true
+
+ /readable-stream@1.1.14:
+ resolution: {integrity: sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==}
+ dependencies:
+ core-util-is: 1.0.3
+ inherits: 2.0.4
+ isarray: 0.0.1
+ string_decoder: 0.10.31
+ dev: true
+
+ /readable-stream@2.3.8:
+ resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==}
+ dependencies:
+ core-util-is: 1.0.3
+ inherits: 2.0.4
+ isarray: 1.0.0
+ process-nextick-args: 2.0.1
+ safe-buffer: 5.1.2
+ string_decoder: 1.1.1
+ util-deprecate: 1.0.2
+ dev: true
+
+ /readable-stream@3.6.2:
+ resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==}
+ engines: {node: '>= 6'}
+ dependencies:
+ inherits: 2.0.4
+ string_decoder: 1.3.0
+ util-deprecate: 1.0.2
+ dev: true
+
+ /readdir-scoped-modules@1.1.0:
+ resolution: {integrity: sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==}
+ deprecated: This functionality has been moved to @npmcli/fs
+ dependencies:
+ debuglog: 1.0.1
+ dezalgo: 1.0.4
+ graceful-fs: 4.2.11
+ once: 1.4.0
+ dev: true
+
+ /rechoir@0.6.2:
+ resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==}
+ engines: {node: '>= 0.10'}
+ dependencies:
+ resolve: 1.22.10
+ dev: true
+
+ /rechoir@0.7.1:
+ resolution: {integrity: sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==}
+ engines: {node: '>= 0.10'}
+ dependencies:
+ resolve: 1.22.10
+ dev: true
+
+ /redent@1.0.0:
+ resolution: {integrity: sha512-qtW5hKzGQZqKoh6JNSD+4lfitfPKGz42e6QwiRmPM5mmKtR0N41AbJRYu0xJi7nhOJ4WDgRkKvAk6tw4WIwR4g==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ indent-string: 2.1.0
+ strip-indent: 1.0.1
+ dev: true
+
+ /redent@2.0.0:
+ resolution: {integrity: sha512-XNwrTx77JQCEMXTeb8movBKuK75MgH0RZkujNuDKCezemx/voapl9i2gCSi8WWm8+ox5ycJi1gxF22fR7c0Ciw==}
+ engines: {node: '>=4'}
+ dependencies:
+ indent-string: 3.2.0
+ strip-indent: 2.0.0
+ dev: true
+
+ /redent@3.0.0:
+ resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==}
+ engines: {node: '>=8'}
+ dependencies:
+ indent-string: 4.0.0
+ strip-indent: 3.0.0
+ dev: true
+
+ /reflect.getprototypeof@1.0.10:
+ resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.8
+ define-properties: 1.2.1
+ es-abstract: 1.23.9
+ es-errors: 1.3.0
+ es-object-atoms: 1.1.1
+ get-intrinsic: 1.3.0
+ get-proto: 1.0.1
+ which-builtin-type: 1.2.1
+ dev: true
+
+ /regenerator-runtime@0.14.1:
+ resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==}
+ dev: true
+
+ /regex-not@1.0.2:
+ resolution: {integrity: sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ extend-shallow: 3.0.2
+ safe-regex: 1.1.0
+ dev: true
+
+ /regexp.prototype.flags@1.5.4:
+ resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.8
+ define-properties: 1.2.1
+ es-errors: 1.3.0
+ get-proto: 1.0.1
+ gopd: 1.2.0
+ set-function-name: 2.0.2
+ dev: true
+
+ /regexpp@3.2.0:
+ resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /repeat-element@1.1.4:
+ resolution: {integrity: sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /repeat-string@1.6.1:
+ resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==}
+ engines: {node: '>=0.10'}
+ dev: true
+
+ /repeating@2.0.1:
+ resolution: {integrity: sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-finite: 1.1.0
+ dev: true
+
+ /request@2.22.0:
+ resolution: {integrity: sha512-s05oCBjWuzNi/UbZtvwOnSJ85/lHUdYPriJyFUwdxHKr8VcZHB0wx0eTX8y5hCH3p7OTDi9iQUqMFyDkW6K7EQ==}
+ engines: {'0': node >= 0.8.0}
+ deprecated: request has been deprecated, see https://github.com/request/request/issues/3142
+ dependencies:
+ aws-sign: 0.3.0
+ cookie-jar: 0.3.0
+ forever-agent: 0.5.2
+ form-data: 0.0.8
+ hawk: 0.13.1
+ http-signature: 0.10.1
+ json-stringify-safe: 4.0.0
+ mime: 1.2.11
+ node-uuid: 1.4.8
+ oauth-sign: 0.3.0
+ qs: 0.6.6
+ tunnel-agent: 0.3.0
+ dev: true
+
+ /request@2.88.2:
+ resolution: {integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==}
+ engines: {node: '>= 6'}
+ deprecated: request has been deprecated, see https://github.com/request/request/issues/3142
+ dependencies:
+ aws-sign2: 0.7.0
+ aws4: 1.13.2
+ caseless: 0.12.0
+ combined-stream: 1.0.8
+ extend: 3.0.2
+ forever-agent: 0.6.1
+ form-data: 2.3.3
+ har-validator: 5.1.5
+ http-signature: 1.2.0
+ is-typedarray: 1.0.0
+ isstream: 0.1.2
+ json-stringify-safe: 5.0.1
+ mime-types: 2.1.35
+ oauth-sign: 0.9.0
+ performance-now: 2.1.0
+ qs: 6.5.3
+ safe-buffer: 5.2.1
+ tough-cookie: 2.5.0
+ tunnel-agent: 0.6.0
+ uuid: 3.4.0
+ dev: true
+
+ /requestretry@1.9.1:
+ resolution: {integrity: sha512-DWXDuj4syXribRStpt4qMOSBhDBUarreeoHol9sOdBfDG1BBDwBFfhgxCyDZkdQ+1W9mZm94vwEg8eD3p46tOg==}
+ dependencies:
+ extend: 3.0.2
+ fg-lodash: 0.0.2
+ request: 2.88.2
+ when: 3.7.8
+ dev: true
+
+ /require-directory@2.1.1:
+ resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /require-from-string@2.0.2:
+ resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /require-main-filename@2.0.0:
+ resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==}
+ dev: true
+
+ /resolve-cwd@2.0.0:
+ resolution: {integrity: sha512-ccu8zQTrzVr954472aUVPLEcB3YpKSYR3cg/3lo1okzobPBM+1INXBbBZlDbnI/hbEocnf8j0QVo43hQKrbchg==}
+ engines: {node: '>=4'}
+ dependencies:
+ resolve-from: 3.0.0
+ dev: true
+
+ /resolve-dir@1.0.1:
+ resolution: {integrity: sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ expand-tilde: 2.0.2
+ global-modules: 1.0.0
+ dev: true
+
+ /resolve-from@3.0.0:
+ resolution: {integrity: sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==}
+ engines: {node: '>=4'}
+ dev: true
+
+ /resolve-from@4.0.0:
+ resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
+ engines: {node: '>=4'}
+ dev: true
+
+ /resolve-url@0.2.1:
+ resolution: {integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==}
+ deprecated: https://github.com/lydell/resolve-url#deprecated
+ dev: true
+
+ /resolve@1.17.0:
+ resolution: {integrity: sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==}
+ dependencies:
+ path-parse: 1.0.7
+ dev: true
+
+ /resolve@1.22.10:
+ resolution: {integrity: sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==}
+ engines: {node: '>= 0.4'}
+ hasBin: true
+ dependencies:
+ is-core-module: 2.16.1
+ path-parse: 1.0.7
+ supports-preserve-symlinks-flag: 1.0.0
+ dev: true
+
+ /restore-cursor@2.0.0:
+ resolution: {integrity: sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==}
+ engines: {node: '>=4'}
+ dependencies:
+ onetime: 2.0.1
+ signal-exit: 3.0.7
+ dev: true
+
+ /restore-cursor@3.1.0:
+ resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==}
+ engines: {node: '>=8'}
+ dependencies:
+ onetime: 5.1.2
+ signal-exit: 3.0.7
+ dev: true
+
+ /ret@0.1.15:
+ resolution: {integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==}
+ engines: {node: '>=0.12'}
+ dev: true
+
+ /retry@0.10.1:
+ resolution: {integrity: sha512-ZXUSQYTHdl3uS7IuCehYfMzKyIDBNoAuUblvy5oGO5UJSUTmStUUVPXbA9Qxd173Bgre53yCQczQuHgRWAdvJQ==}
+ dev: true
+
+ /reusify@1.1.0:
+ resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==}
+ engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
+ dev: true
+
+ /rimraf@2.7.1:
+ resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==}
+ deprecated: Rimraf versions prior to v4 are no longer supported
+ hasBin: true
+ dependencies:
+ glob: 7.2.3
+ dev: true
+
+ /rimraf@3.0.2:
+ resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
+ deprecated: Rimraf versions prior to v4 are no longer supported
+ hasBin: true
+ dependencies:
+ glob: 7.2.3
+ dev: true
+
+ /rollup-plugin-terser@5.3.1(rollup@2.79.2):
+ resolution: {integrity: sha512-1pkwkervMJQGFYvM9nscrUoncPwiKR/K+bHdjv6PFgRo3cgPHoRT83y2Aa3GvINj4539S15t/tpFPb775TDs6w==}
+ deprecated: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser
+ peerDependencies:
+ rollup: '>=0.66.0 <3'
+ dependencies:
+ '@babel/code-frame': 7.26.2
+ jest-worker: 24.9.0
+ rollup: 2.79.2
+ rollup-pluginutils: 2.8.2
+ serialize-javascript: 4.0.0
+ terser: 4.8.1
+ dev: true
+
+ /rollup-plugin-typescript2@0.29.0(rollup@2.79.2)(typescript@4.9.5):
+ resolution: {integrity: sha512-YytahBSZCIjn/elFugEGQR5qTsVhxhUwGZIsA9TmrSsC88qroGo65O5HZP/TTArH2dm0vUmYWhKchhwi2wL9bw==}
+ peerDependencies:
+ rollup: '>=1.26.3'
+ typescript: '>=2.4.0'
+ dependencies:
+ '@rollup/pluginutils': 3.1.0(rollup@2.79.2)
+ find-cache-dir: 3.3.2
+ fs-extra: 8.1.0
+ resolve: 1.17.0
+ rollup: 2.79.2
+ tslib: 2.0.1
+ typescript: 4.9.5
+ dev: true
+
+ /rollup-pluginutils@2.8.2:
+ resolution: {integrity: sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==}
+ dependencies:
+ estree-walker: 0.6.1
+ dev: true
+
+ /rollup@2.79.2:
+ resolution: {integrity: sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ==}
+ engines: {node: '>=10.0.0'}
+ hasBin: true
+ optionalDependencies:
+ fsevents: 2.3.3
+ dev: true
+
+ /run-async@2.4.1:
+ resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==}
+ engines: {node: '>=0.12.0'}
+ dev: true
+
+ /run-parallel@1.2.0:
+ resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
+ dependencies:
+ queue-microtask: 1.2.3
+ dev: true
+
+ /run-queue@1.0.3:
+ resolution: {integrity: sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg==}
+ dependencies:
+ aproba: 1.2.0
+ dev: true
+
+ /rxjs@6.6.7:
+ resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==}
+ engines: {npm: '>=2.0.0'}
+ dependencies:
+ tslib: 1.14.1
+ dev: true
+
+ /safe-array-concat@1.1.3:
+ resolution: {integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==}
+ engines: {node: '>=0.4'}
+ dependencies:
+ call-bind: 1.0.8
+ call-bound: 1.0.3
+ get-intrinsic: 1.3.0
+ has-symbols: 1.1.0
+ isarray: 2.0.5
+ dev: true
+
+ /safe-buffer@5.1.2:
+ resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}
+ dev: true
+
+ /safe-buffer@5.2.1:
+ resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
+ dev: true
+
+ /safe-push-apply@1.0.0:
+ resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ es-errors: 1.3.0
+ isarray: 2.0.5
+ dev: true
+
+ /safe-regex-test@1.1.0:
+ resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bound: 1.0.3
+ es-errors: 1.3.0
+ is-regex: 1.2.1
+ dev: true
+
+ /safe-regex@1.1.0:
+ resolution: {integrity: sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==}
+ dependencies:
+ ret: 0.1.15
+ dev: true
+
+ /safer-buffer@2.1.2:
+ resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
+
+ /sauce-tunnel@2.5.0:
+ resolution: {integrity: sha512-NsE6r9J+nXT9FBcAxA+nZ1JvmoJJqQPTp33J4vTJQFZ4jtFfPoUMH10AXyIhjEFVemK7XP5SF4Uy+q3dKWWQig==}
+ dependencies:
+ chalk: 1.1.3
+ request: 2.88.2
+ split: 1.0.1
+ dev: true
+
+ /saucelabs@1.5.0:
+ resolution: {integrity: sha512-jlX3FGdWvYf4Q3LFfFWS1QvPg3IGCGWxIc8QBFdPTbpTJnt/v17FHXYVAn7C8sHf1yUXo2c7yIM0isDryfYtHQ==}
+ dependencies:
+ https-proxy-agent: 2.2.4
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /sax@1.4.1:
+ resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==}
+ requiresBuild: true
+ dev: false
+ optional: true
+
+ /semver@5.4.1:
+ resolution: {integrity: sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg==}
+ hasBin: true
+ dev: true
+
+ /semver@5.7.2:
+ resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==}
+ hasBin: true
+
+ /semver@6.3.1:
+ resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==}
+ hasBin: true
+ dev: true
+
+ /semver@7.7.1:
+ resolution: {integrity: sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==}
+ engines: {node: '>=10'}
+ hasBin: true
+ dev: true
+
+ /send@0.19.0:
+ resolution: {integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==}
+ engines: {node: '>= 0.8.0'}
+ dependencies:
+ debug: 2.6.9
+ depd: 2.0.0
+ destroy: 1.2.0
+ encodeurl: 1.0.2
+ escape-html: 1.0.3
+ etag: 1.8.1
+ fresh: 0.5.2
+ http-errors: 2.0.0
+ mime: 1.6.0
+ ms: 2.1.3
+ on-finished: 2.4.1
+ range-parser: 1.2.1
+ statuses: 2.0.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /serialize-javascript@4.0.0:
+ resolution: {integrity: sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==}
+ dependencies:
+ randombytes: 2.1.0
+ dev: true
+
+ /serve-index@1.9.1:
+ resolution: {integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==}
+ engines: {node: '>= 0.8.0'}
+ dependencies:
+ accepts: 1.3.8
+ batch: 0.6.1
+ debug: 2.6.9
+ escape-html: 1.0.3
+ http-errors: 1.6.3
+ mime-types: 2.1.35
+ parseurl: 1.3.3
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /serve-static@1.16.2:
+ resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==}
+ engines: {node: '>= 0.8.0'}
+ dependencies:
+ encodeurl: 2.0.0
+ escape-html: 1.0.3
+ parseurl: 1.3.3
+ send: 0.19.0
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /set-blocking@2.0.0:
+ resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==}
+ dev: true
+
+ /set-function-length@1.2.2:
+ resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ define-data-property: 1.1.4
+ es-errors: 1.3.0
+ function-bind: 1.1.2
+ get-intrinsic: 1.3.0
+ gopd: 1.2.0
+ has-property-descriptors: 1.0.2
+ dev: true
+
+ /set-function-name@2.0.2:
+ resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ define-data-property: 1.1.4
+ es-errors: 1.3.0
+ functions-have-names: 1.2.3
+ has-property-descriptors: 1.0.2
+ dev: true
+
+ /set-proto@1.0.0:
+ resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ dunder-proto: 1.0.1
+ es-errors: 1.3.0
+ es-object-atoms: 1.1.1
+ dev: true
+
+ /set-value@2.0.1:
+ resolution: {integrity: sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ extend-shallow: 2.0.1
+ is-extendable: 0.1.1
+ is-plain-object: 2.0.4
+ split-string: 3.1.0
+ dev: true
+
+ /setprototypeof@1.1.0:
+ resolution: {integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==}
+ dev: true
+
+ /setprototypeof@1.2.0:
+ resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==}
+ dev: true
+
+ /shallow-clone@3.0.1:
+ resolution: {integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==}
+ engines: {node: '>=8'}
+ dependencies:
+ kind-of: 6.0.3
+ dev: true
+
+ /shebang-command@1.2.0:
+ resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ shebang-regex: 1.0.0
+ dev: true
+
+ /shebang-command@2.0.0:
+ resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
+ engines: {node: '>=8'}
+ dependencies:
+ shebang-regex: 3.0.0
+ dev: true
+
+ /shebang-regex@1.0.0:
+ resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /shebang-regex@3.0.0:
+ resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /shell-quote@1.8.2:
+ resolution: {integrity: sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==}
+ engines: {node: '>= 0.4'}
+ dev: true
+
+ /shelljs@0.8.5:
+ resolution: {integrity: sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==}
+ engines: {node: '>=4'}
+ hasBin: true
+ dependencies:
+ glob: 7.2.3
+ interpret: 1.4.0
+ rechoir: 0.6.2
+ dev: true
+
+ /shx@0.3.4:
+ resolution: {integrity: sha512-N6A9MLVqjxZYcVn8hLmtneQWIJtp8IKzMP4eMnx+nqkvXoqinUPCbUFLp2UcWTEIUONhlk0ewxr/jaVGlc+J+g==}
+ engines: {node: '>=6'}
+ hasBin: true
+ dependencies:
+ minimist: 1.2.8
+ shelljs: 0.8.5
+ dev: true
+
+ /side-channel-list@1.0.0:
+ resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ es-errors: 1.3.0
+ object-inspect: 1.13.4
+ dev: true
+
+ /side-channel-map@1.0.1:
+ resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bound: 1.0.3
+ es-errors: 1.3.0
+ get-intrinsic: 1.3.0
+ object-inspect: 1.13.4
+ dev: true
+
+ /side-channel-weakmap@1.0.2:
+ resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bound: 1.0.3
+ es-errors: 1.3.0
+ get-intrinsic: 1.3.0
+ object-inspect: 1.13.4
+ side-channel-map: 1.0.1
+ dev: true
+
+ /side-channel@1.1.0:
+ resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ es-errors: 1.3.0
+ object-inspect: 1.13.4
+ side-channel-list: 1.0.0
+ side-channel-map: 1.0.1
+ side-channel-weakmap: 1.0.2
+ dev: true
+
+ /signal-exit@3.0.7:
+ resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
+ dev: true
+
+ /slash@2.0.0:
+ resolution: {integrity: sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /slash@3.0.0:
+ resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /slice-ansi@4.0.0:
+ resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==}
+ engines: {node: '>=10'}
+ dependencies:
+ ansi-styles: 4.3.0
+ astral-regex: 2.0.0
+ is-fullwidth-code-point: 3.0.0
+ dev: true
+
+ /slide@1.1.6:
+ resolution: {integrity: sha512-NwrtjCg+lZoqhFU8fOwl4ay2ei8PaqCBOUV3/ektPY9trO1yQ1oXEfmHAhKArUVUr/hOHvy5f6AdP17dCM0zMw==}
+ dev: true
+
+ /smart-buffer@4.2.0:
+ resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==}
+ engines: {node: '>= 6.0.0', npm: '>= 3.0.0'}
+ dev: true
+
+ /snapdragon-node@2.1.1:
+ resolution: {integrity: sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ define-property: 1.0.0
+ isobject: 3.0.1
+ snapdragon-util: 3.0.1
+ dev: true
+
+ /snapdragon-util@3.0.1:
+ resolution: {integrity: sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ kind-of: 3.2.2
+ dev: true
+
+ /snapdragon@0.8.2:
+ resolution: {integrity: sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ base: 0.11.2
+ debug: 2.6.9
+ define-property: 0.2.5
+ extend-shallow: 2.0.1
+ map-cache: 0.2.2
+ source-map: 0.5.7
+ source-map-resolve: 0.5.3
+ use: 3.1.1
+ transitivePeerDependencies:
+ - supports-color
+ dev: true
+
+ /sntp@0.2.4:
+ resolution: {integrity: sha512-bDLrKa/ywz65gCl+LmOiIhteP1bhEsAAzhfMedPoiHP3dyYnAevlaJshdqb9Yu0sRifyP/fRqSt8t+5qGIWlGQ==}
+ engines: {node: '>=0.8.0'}
+ deprecated: This module moved to @hapi/sntp. Please make sure to switch over as this distribution is no longer supported and may contain bugs and critical security issues.
+ dependencies:
+ hoek: 0.9.1
+ dev: true
+
+ /socks-proxy-agent@4.0.2:
+ resolution: {integrity: sha512-NT6syHhI9LmuEMSK6Kd2V7gNv5KFZoLE7V5udWmn0de+3Mkj3UMA/AJPLyeNUVmElCurSHtUdM3ETpR3z770Wg==}
+ engines: {node: '>= 6'}
+ dependencies:
+ agent-base: 4.2.1
+ socks: 2.3.3
+ dev: true
+
+ /socks@2.3.3:
+ resolution: {integrity: sha512-o5t52PCNtVdiOvzMry7wU4aOqYWL0PeCXRWBEiJow4/i/wr+wpsJQ9awEu1EonLIqsfGd5qSgDdxEOvCdmBEpA==}
+ engines: {node: '>= 6.0.0', npm: '>= 3.0.0'}
+ dependencies:
+ ip: 1.1.5
+ smart-buffer: 4.2.0
+ dev: true
+
+ /sort-keys@2.0.0:
+ resolution: {integrity: sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==}
+ engines: {node: '>=4'}
+ dependencies:
+ is-plain-obj: 1.1.0
+ dev: true
+
+ /source-map-resolve@0.5.3:
+ resolution: {integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==}
+ deprecated: See https://github.com/lydell/source-map-resolve#deprecated
+ dependencies:
+ atob: 2.1.2
+ decode-uri-component: 0.2.2
+ resolve-url: 0.2.1
+ source-map-url: 0.4.1
+ urix: 0.1.0
+ dev: true
+
+ /source-map-support@0.5.21:
+ resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==}
+ dependencies:
+ buffer-from: 1.1.2
+ source-map: 0.6.1
+ dev: true
+
+ /source-map-url@0.4.1:
+ resolution: {integrity: sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==}
+ deprecated: See https://github.com/lydell/source-map-url#deprecated
+ dev: true
+
+ /source-map@0.5.7:
+ resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /source-map@0.6.1:
+ resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
+ engines: {node: '>=0.10.0'}
+
+ /sourcemap-codec@1.4.8:
+ resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==}
+ deprecated: Please use @jridgewell/sourcemap-codec instead
+ dev: true
+
+ /spdx-correct@3.2.0:
+ resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==}
+ dependencies:
+ spdx-expression-parse: 3.0.1
+ spdx-license-ids: 3.0.21
+ dev: true
+
+ /spdx-exceptions@2.5.0:
+ resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==}
+ dev: true
+
+ /spdx-expression-parse@3.0.1:
+ resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==}
+ dependencies:
+ spdx-exceptions: 2.5.0
+ spdx-license-ids: 3.0.21
+ dev: true
+
+ /spdx-license-ids@3.0.21:
+ resolution: {integrity: sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==}
+ dev: true
+
+ /split-on-first@1.1.0:
+ resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /split-string@3.1.0:
+ resolution: {integrity: sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ extend-shallow: 3.0.2
+ dev: true
+
+ /split2@2.2.0:
+ resolution: {integrity: sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw==}
+ dependencies:
+ through2: 2.0.5
+ dev: true
+
+ /split2@3.2.2:
+ resolution: {integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==}
+ dependencies:
+ readable-stream: 3.6.2
+ dev: true
+
+ /split@1.0.1:
+ resolution: {integrity: sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==}
+ dependencies:
+ through: 2.3.8
+ dev: true
+
+ /sprintf-js@1.0.3:
+ resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==}
+ dev: true
+
+ /sprintf-js@1.1.3:
+ resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==}
+ dev: true
+
+ /sshpk@1.18.0:
+ resolution: {integrity: sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==}
+ engines: {node: '>=0.10.0'}
+ hasBin: true
+ dependencies:
+ asn1: 0.2.6
+ assert-plus: 1.0.0
+ bcrypt-pbkdf: 1.0.2
+ dashdash: 1.14.1
+ ecc-jsbn: 0.1.2
+ getpass: 0.1.7
+ jsbn: 0.1.1
+ safer-buffer: 2.1.2
+ tweetnacl: 0.14.5
+ dev: true
+
+ /ssri@6.0.2:
+ resolution: {integrity: sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==}
+ dependencies:
+ figgy-pudding: 3.5.2
+ dev: true
+
+ /static-extend@0.1.2:
+ resolution: {integrity: sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ define-property: 0.2.5
+ object-copy: 0.1.0
+ dev: true
+
+ /statuses@1.5.0:
+ resolution: {integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==}
+ engines: {node: '>= 0.6'}
+ dev: true
+
+ /statuses@2.0.1:
+ resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==}
+ engines: {node: '>= 0.8'}
+ dev: true
+
+ /stream-each@1.2.3:
+ resolution: {integrity: sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==}
+ dependencies:
+ end-of-stream: 1.4.4
+ stream-shift: 1.0.3
+ dev: true
+
+ /stream-shift@1.0.3:
+ resolution: {integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==}
+ dev: true
+
+ /strict-uri-encode@2.0.0:
+ resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==}
+ engines: {node: '>=4'}
+ dev: true
+
+ /string-width@1.0.2:
+ resolution: {integrity: sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ code-point-at: 1.1.0
+ is-fullwidth-code-point: 1.0.0
+ strip-ansi: 3.0.1
+ dev: true
+
+ /string-width@2.1.1:
+ resolution: {integrity: sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==}
+ engines: {node: '>=4'}
+ dependencies:
+ is-fullwidth-code-point: 2.0.0
+ strip-ansi: 4.0.0
+ dev: true
+
+ /string-width@3.1.0:
+ resolution: {integrity: sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==}
+ engines: {node: '>=6'}
+ dependencies:
+ emoji-regex: 7.0.3
+ is-fullwidth-code-point: 2.0.0
+ strip-ansi: 5.2.0
+ dev: true
+
+ /string-width@4.2.3:
+ resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
+ engines: {node: '>=8'}
+ dependencies:
+ emoji-regex: 8.0.0
+ is-fullwidth-code-point: 3.0.0
+ strip-ansi: 6.0.1
+ dev: true
+
+ /string.prototype.padend@3.1.6:
+ resolution: {integrity: sha512-XZpspuSB7vJWhvJc9DLSlrXl1mcA2BdoY5jjnS135ydXqLoqhs96JjDtCkjJEQHvfqZIp9hBuBMgI589peyx9Q==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.8
+ define-properties: 1.2.1
+ es-abstract: 1.23.9
+ es-object-atoms: 1.1.1
+ dev: true
+
+ /string.prototype.trim@1.2.10:
+ resolution: {integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.8
+ call-bound: 1.0.3
+ define-data-property: 1.1.4
+ define-properties: 1.2.1
+ es-abstract: 1.23.9
+ es-object-atoms: 1.1.1
+ has-property-descriptors: 1.0.2
+ dev: true
+
+ /string.prototype.trimend@1.0.9:
+ resolution: {integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.8
+ call-bound: 1.0.3
+ define-properties: 1.2.1
+ es-object-atoms: 1.1.1
+ dev: true
+
+ /string.prototype.trimstart@1.0.8:
+ resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.8
+ define-properties: 1.2.1
+ es-object-atoms: 1.1.1
+ dev: true
+
+ /string_decoder@0.10.31:
+ resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==}
+ dev: true
+
+ /string_decoder@1.1.1:
+ resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==}
+ dependencies:
+ safe-buffer: 5.1.2
+ dev: true
+
+ /string_decoder@1.3.0:
+ resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
+ dependencies:
+ safe-buffer: 5.2.1
+ dev: true
+
+ /strip-ansi@3.0.1:
+ resolution: {integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ ansi-regex: 2.1.1
+ dev: true
+
+ /strip-ansi@4.0.0:
+ resolution: {integrity: sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==}
+ engines: {node: '>=4'}
+ dependencies:
+ ansi-regex: 3.0.1
+ dev: true
+
+ /strip-ansi@5.2.0:
+ resolution: {integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==}
+ engines: {node: '>=6'}
+ dependencies:
+ ansi-regex: 4.1.1
+ dev: true
+
+ /strip-ansi@6.0.1:
+ resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
+ engines: {node: '>=8'}
+ dependencies:
+ ansi-regex: 5.0.1
+ dev: true
+
+ /strip-bom@2.0.0:
+ resolution: {integrity: sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-utf8: 0.2.1
+ dev: true
+
+ /strip-bom@3.0.0:
+ resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==}
+ engines: {node: '>=4'}
+ dev: true
+
+ /strip-eof@1.0.0:
+ resolution: {integrity: sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /strip-indent@1.0.1:
+ resolution: {integrity: sha512-I5iQq6aFMM62fBEAIB/hXzwJD6EEZ0xEGCX2t7oXqaKPIRgt4WruAQ285BISgdkP+HLGWyeGmNJcpIwFeRYRUA==}
+ engines: {node: '>=0.10.0'}
+ hasBin: true
+ dependencies:
+ get-stdin: 4.0.1
+ dev: true
+
+ /strip-indent@2.0.0:
+ resolution: {integrity: sha512-RsSNPLpq6YUL7QYy44RnPVTn/lcVZtb48Uof3X5JLbF4zD/Gs7ZFDv2HWol+leoQN2mT86LAzSshGfkTlSOpsA==}
+ engines: {node: '>=4'}
+ dev: true
+
+ /strip-indent@3.0.0:
+ resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==}
+ engines: {node: '>=8'}
+ dependencies:
+ min-indent: 1.0.1
+ dev: true
+
+ /strip-json-comments@2.0.1:
+ resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /strip-json-comments@3.1.1:
+ resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /strong-log-transformer@2.1.0:
+ resolution: {integrity: sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA==}
+ engines: {node: '>=4'}
+ hasBin: true
+ dependencies:
+ duplexer: 0.1.2
+ minimist: 1.2.8
+ through: 2.3.8
+ dev: true
+
+ /supports-color@2.0.0:
+ resolution: {integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==}
+ engines: {node: '>=0.8.0'}
+ dev: true
+
+ /supports-color@3.2.3:
+ resolution: {integrity: sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==}
+ engines: {node: '>=0.8.0'}
+ dependencies:
+ has-flag: 1.0.0
+ dev: true
+
+ /supports-color@5.5.0:
+ resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
+ engines: {node: '>=4'}
+ dependencies:
+ has-flag: 3.0.0
+ dev: true
+
+ /supports-color@6.0.0:
+ resolution: {integrity: sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==}
+ engines: {node: '>=6'}
+ dependencies:
+ has-flag: 3.0.0
+ dev: true
+
+ /supports-color@6.1.0:
+ resolution: {integrity: sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==}
+ engines: {node: '>=6'}
+ dependencies:
+ has-flag: 3.0.0
+ dev: true
+
+ /supports-color@7.2.0:
+ resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
+ engines: {node: '>=8'}
+ dependencies:
+ has-flag: 4.0.0
+ dev: true
+
+ /supports-preserve-symlinks-flag@1.0.0:
+ resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
+ engines: {node: '>= 0.4'}
+ dev: true
+
+ /table@6.9.0:
+ resolution: {integrity: sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==}
+ engines: {node: '>=10.0.0'}
+ dependencies:
+ ajv: 8.17.1
+ lodash.truncate: 4.4.2
+ slice-ansi: 4.0.0
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+ dev: true
+
+ /tar@4.4.19:
+ resolution: {integrity: sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==}
+ engines: {node: '>=4.5'}
+ dependencies:
+ chownr: 1.1.4
+ fs-minipass: 1.2.7
+ minipass: 2.9.0
+ minizlib: 1.3.3
+ mkdirp: 0.5.6
+ safe-buffer: 5.2.1
+ yallist: 3.1.1
+ dev: true
+
+ /temp-dir@1.0.0:
+ resolution: {integrity: sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==}
+ engines: {node: '>=4'}
+ dev: true
+
+ /temp-write@3.4.0:
+ resolution: {integrity: sha512-P8NK5aNqcGQBC37i/8pL/K9tFgx14CF2vdwluD/BA/dGWGD4T4E59TE7dAxPyb2wusts2FhMp36EiopBBsGJ2Q==}
+ engines: {node: '>=4'}
+ dependencies:
+ graceful-fs: 4.2.11
+ is-stream: 1.1.0
+ make-dir: 1.3.0
+ pify: 3.0.0
+ temp-dir: 1.0.0
+ uuid: 3.4.0
+ dev: true
+
+ /terser@4.8.1:
+ resolution: {integrity: sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==}
+ engines: {node: '>=6.0.0'}
+ hasBin: true
+ dependencies:
+ acorn: 8.14.0
+ commander: 2.20.3
+ source-map: 0.6.1
+ source-map-support: 0.5.21
+ dev: true
+
+ /text-extensions@1.9.0:
+ resolution: {integrity: sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==}
+ engines: {node: '>=0.10'}
+ dev: true
+
+ /text-table@0.2.0:
+ resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
+ dev: true
+
+ /thenify-all@1.6.0:
+ resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==}
+ engines: {node: '>=0.8'}
+ dependencies:
+ thenify: 3.3.1
+ dev: true
+
+ /thenify@3.3.1:
+ resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==}
+ dependencies:
+ any-promise: 1.3.0
+ dev: true
+
+ /through2@0.6.5:
+ resolution: {integrity: sha512-RkK/CCESdTKQZHdmKICijdKKsCRVHs5KsLZ6pACAmF/1GPUQhonHSXWNERctxEp7RmvjdNbZTL5z9V7nSCXKcg==}
+ dependencies:
+ readable-stream: 1.0.34
+ xtend: 4.0.2
+ dev: true
+
+ /through2@2.0.5:
+ resolution: {integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==}
+ dependencies:
+ readable-stream: 2.3.8
+ xtend: 4.0.2
+ dev: true
+
+ /through2@3.0.2:
+ resolution: {integrity: sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==}
+ dependencies:
+ inherits: 2.0.4
+ readable-stream: 3.6.2
+ dev: true
+
+ /through2@4.0.2:
+ resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==}
+ dependencies:
+ readable-stream: 3.6.2
+ dev: true
+
+ /through@2.3.8:
+ resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==}
+ dev: true
+
+ /time-grunt@1.4.0:
+ resolution: {integrity: sha512-u8n+ZOcdNDkrqlyN+x1ayHN0X+hMgg3SS191EE5xO03nRVnVpNp3UJSmUBCQCAbe959LqWttMaELNclfmWM+fQ==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ chalk: 1.1.3
+ date-time: 1.1.0
+ figures: 1.7.0
+ hooker: 0.2.3
+ number-is-nan: 1.0.1
+ pretty-ms: 2.1.0
+ text-table: 0.2.0
+ dev: true
+
+ /time-zone@0.1.0:
+ resolution: {integrity: sha512-S5CjtVIkeBTnlsaZP3gjsTb78ClBe74sEcgEoBwAVUKnTRDAGqUtLLIZHMsIyqOWjt9DGQpLMMoD8ZKIfP2ddQ==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /tmp@0.0.33:
+ resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==}
+ engines: {node: '>=0.6.0'}
+ dependencies:
+ os-tmpdir: 1.0.2
+ dev: true
+
+ /to-object-path@0.3.0:
+ resolution: {integrity: sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ kind-of: 3.2.2
+ dev: true
+
+ /to-regex-range@2.1.1:
+ resolution: {integrity: sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ is-number: 3.0.0
+ repeat-string: 1.6.1
+ dev: true
+
+ /to-regex-range@5.0.1:
+ resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
+ engines: {node: '>=8.0'}
+ dependencies:
+ is-number: 7.0.0
+ dev: true
+
+ /to-regex@3.0.2:
+ resolution: {integrity: sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ define-property: 2.0.2
+ extend-shallow: 3.0.2
+ regex-not: 1.0.2
+ safe-regex: 1.1.0
+ dev: true
+
+ /toidentifier@1.0.1:
+ resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==}
+ engines: {node: '>=0.6'}
+ dev: true
+
+ /tough-cookie@2.5.0:
+ resolution: {integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==}
+ engines: {node: '>=0.8'}
+ dependencies:
+ psl: 1.15.0
+ punycode: 2.3.1
+ dev: true
+
+ /tr46@0.0.3:
+ resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
+ dev: true
+
+ /tr46@1.0.1:
+ resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==}
+ dependencies:
+ punycode: 2.3.1
+ dev: true
+
+ /trim-newlines@1.0.0:
+ resolution: {integrity: sha512-Nm4cF79FhSTzrLKGDMi3I4utBtFv8qKy4sq1enftf2gMdpqI8oVQTAfySkTz5r49giVzDj88SVZXP4CeYQwjaw==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /trim-newlines@2.0.0:
+ resolution: {integrity: sha512-MTBWv3jhVjTU7XR3IQHllbiJs8sc75a80OEhB6or/q7pLTWgQ0bMGQXXYQSrSuXe6WiKWDZ5txXY5P59a/coVA==}
+ engines: {node: '>=4'}
+ dev: true
+
+ /trim-newlines@3.0.1:
+ resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /ts-node@10.9.2(@types/node@22.13.5)(typescript@4.9.5):
+ resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==}
+ hasBin: true
+ peerDependencies:
+ '@swc/core': '>=1.2.50'
+ '@swc/wasm': '>=1.2.50'
+ '@types/node': '*'
+ typescript: '>=2.7'
+ peerDependenciesMeta:
+ '@swc/core':
+ optional: true
+ '@swc/wasm':
+ optional: true
+ dependencies:
+ '@cspotcode/source-map-support': 0.8.1
+ '@tsconfig/node10': 1.0.11
+ '@tsconfig/node12': 1.0.11
+ '@tsconfig/node14': 1.0.3
+ '@tsconfig/node16': 1.0.4
+ '@types/node': 22.13.5
+ acorn: 8.14.0
+ acorn-walk: 8.3.4
+ arg: 4.1.3
+ create-require: 1.1.1
+ diff: 4.0.2
+ make-error: 1.3.6
+ typescript: 4.9.5
+ v8-compile-cache-lib: 3.0.1
+ yn: 3.1.1
+ dev: true
+
+ /tslib@1.14.1:
+ resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==}
+ dev: true
+
+ /tslib@2.0.1:
+ resolution: {integrity: sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ==}
+ dev: true
+
+ /tslib@2.8.1:
+ resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
+ dev: false
+
+ /tsutils@3.21.0(typescript@4.9.5):
+ resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==}
+ engines: {node: '>= 6'}
+ peerDependencies:
+ typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta'
+ dependencies:
+ tslib: 1.14.1
+ typescript: 4.9.5
+ dev: true
+
+ /tunnel-agent@0.3.0:
+ resolution: {integrity: sha512-jlGqHGoKzyyjhwv/c9omAgohntThMcGtw8RV/RDLlkbbc08kni/akVxO62N8HaXMVbVsK1NCnpSK3N2xCt22ww==}
+ dev: true
+
+ /tunnel-agent@0.6.0:
+ resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==}
+ dependencies:
+ safe-buffer: 5.2.1
+ dev: true
+
+ /tweetnacl@0.14.5:
+ resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==}
+ dev: true
+
+ /type-check@0.4.0:
+ resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
+ engines: {node: '>= 0.8.0'}
+ dependencies:
+ prelude-ls: 1.2.1
+ dev: true
+
+ /type-detect@4.1.0:
+ resolution: {integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==}
+ engines: {node: '>=4'}
+ dev: true
+
+ /type-fest@0.18.1:
+ resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==}
+ engines: {node: '>=10'}
+ dev: true
+
+ /type-fest@0.20.2:
+ resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==}
+ engines: {node: '>=10'}
+ dev: true
+
+ /type-fest@0.21.3:
+ resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==}
+ engines: {node: '>=10'}
+ dev: true
+
+ /type-fest@0.3.1:
+ resolution: {integrity: sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /type-fest@0.6.0:
+ resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /type-fest@0.8.1:
+ resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==}
+ engines: {node: '>=8'}
+ dev: true
+
+ /typed-array-buffer@1.0.3:
+ resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bound: 1.0.3
+ es-errors: 1.3.0
+ is-typed-array: 1.1.15
+ dev: true
+
+ /typed-array-byte-length@1.0.3:
+ resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.8
+ for-each: 0.3.5
+ gopd: 1.2.0
+ has-proto: 1.2.0
+ is-typed-array: 1.1.15
+ dev: true
+
+ /typed-array-byte-offset@1.0.4:
+ resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ available-typed-arrays: 1.0.7
+ call-bind: 1.0.8
+ for-each: 0.3.5
+ gopd: 1.2.0
+ has-proto: 1.2.0
+ is-typed-array: 1.1.15
+ reflect.getprototypeof: 1.0.10
+ dev: true
+
+ /typed-array-length@1.0.7:
+ resolution: {integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bind: 1.0.8
+ for-each: 0.3.5
+ gopd: 1.2.0
+ is-typed-array: 1.1.15
+ possible-typed-array-names: 1.1.0
+ reflect.getprototypeof: 1.0.10
+ dev: true
+
+ /typedarray@0.0.6:
+ resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==}
+ dev: true
+
+ /typescript@4.9.5:
+ resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==}
+ engines: {node: '>=4.2.0'}
+ hasBin: true
+ dev: true
+
+ /uglify-js@3.19.3:
+ resolution: {integrity: sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==}
+ engines: {node: '>=0.8.0'}
+ hasBin: true
+ requiresBuild: true
+ dev: true
+ optional: true
+
+ /uid-number@0.0.6:
+ resolution: {integrity: sha512-c461FXIljswCuscZn67xq9PpszkPT6RjheWFQTgCyabJrTUozElanb0YEqv2UGgk247YpcJkFBuSGNvBlpXM9w==}
+ deprecated: This package is no longer supported.
+ dev: true
+
+ /uikit@2.27.4:
+ resolution: {integrity: sha512-dylNikIJ8sB6Sd1AP6YETb+R5bIkjTnGeuu/yLhO9elQ4oLu8CIA+u5zCC7a9m7axbDUALy12qr32nvgRyO5HA==}
+ dependencies:
+ node-promise: 0.5.14
+ dev: true
+
+ /umask@1.1.0:
+ resolution: {integrity: sha512-lE/rxOhmiScJu9L6RTNVgB/zZbF+vGC0/p6D3xnkAePI2o0sMyFG966iR5Ki50OI/0mNi2yaRnxfLsPmEZF/JA==}
+ dev: true
+
+ /unbox-primitive@1.1.0:
+ resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bound: 1.0.3
+ has-bigints: 1.1.0
+ has-symbols: 1.1.0
+ which-boxed-primitive: 1.1.1
+ dev: true
+
+ /unc-path-regex@0.1.2:
+ resolution: {integrity: sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /underscore.string@2.3.3:
+ resolution: {integrity: sha512-hbD5MibthuDAu4yA5wxes5bzFgqd3PpBJuClbRxaNddxfdsz+qf+1kHwrGQFrmchmDHb9iNU+6EHDn8uj0xDJg==}
+ dev: true
+
+ /underscore.string@3.3.6:
+ resolution: {integrity: sha512-VoC83HWXmCrF6rgkyxS9GHv8W9Q5nhMKho+OadDJGzL2oDYbYEppBaCMH6pFlwLeqj2QS+hhkw2kpXkSdD1JxQ==}
+ dependencies:
+ sprintf-js: 1.1.3
+ util-deprecate: 1.0.2
+ dev: true
+
+ /underscore@1.4.4:
+ resolution: {integrity: sha512-ZqGrAgaqqZM7LGRzNjLnw5elevWb5M8LEoDMadxIW3OWbcv72wMMgKdwOKpd5Fqxe8choLD8HN3iSj3TUh/giQ==}
+ dev: true
+
+ /undici-types@6.20.0:
+ resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==}
+ dev: true
+
+ /union-value@1.0.1:
+ resolution: {integrity: sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ arr-union: 3.1.0
+ get-value: 2.0.6
+ is-extendable: 0.1.1
+ set-value: 2.0.1
+ dev: true
+
+ /unique-filename@1.1.1:
+ resolution: {integrity: sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==}
+ dependencies:
+ unique-slug: 2.0.2
+ dev: true
+
+ /unique-slug@2.0.2:
+ resolution: {integrity: sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==}
+ dependencies:
+ imurmurhash: 0.1.4
+ dev: true
+
+ /universal-user-agent@4.0.1:
+ resolution: {integrity: sha512-LnST3ebHwVL2aNe4mejI9IQh2HfZ1RLo8Io2HugSif8ekzD1TlWpHpColOB/eh8JHMLkGH3Akqf040I+4ylNxg==}
+ dependencies:
+ os-name: 3.1.0
+ dev: true
+
+ /universal-user-agent@6.0.1:
+ resolution: {integrity: sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==}
+ dev: true
+
+ /universal-user-agent@7.0.2:
+ resolution: {integrity: sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q==}
+ dev: true
+
+ /universalify@0.1.2:
+ resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==}
+ engines: {node: '>= 4.0.0'}
+ dev: true
+
+ /universalify@2.0.1:
+ resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==}
+ engines: {node: '>= 10.0.0'}
+ dev: true
+
+ /unpipe@1.0.0:
+ resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==}
+ engines: {node: '>= 0.8'}
+ dev: true
+
+ /unset-value@1.0.0:
+ resolution: {integrity: sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==}
+ engines: {node: '>=0.10.0'}
+ dependencies:
+ has-value: 0.3.1
+ isobject: 3.0.1
+ dev: true
+
+ /upath@1.2.0:
+ resolution: {integrity: sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==}
+ engines: {node: '>=4'}
+ dev: true
+
+ /uri-js@4.4.1:
+ resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
+ dependencies:
+ punycode: 2.3.1
+ dev: true
+
+ /urix@0.1.0:
+ resolution: {integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==}
+ deprecated: Please see https://github.com/lydell/urix#deprecated
+ dev: true
+
+ /use@3.1.1:
+ resolution: {integrity: sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /util-deprecate@1.0.2:
+ resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
+ dev: true
+
+ /util-promisify@2.1.0:
+ resolution: {integrity: sha512-K+5eQPYs14b3+E+hmE2J6gCZ4JmMl9DbYS6BeP2CHq6WMuNxErxf5B/n0fz85L8zUuoO6rIzNNmIQDu/j+1OcA==}
+ dependencies:
+ object.getownpropertydescriptors: 2.1.8
+ dev: true
+
+ /utils-merge@1.0.1:
+ resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==}
+ engines: {node: '>= 0.4.0'}
+ dev: true
+
+ /uuid@3.4.0:
+ resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==}
+ deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.
+ hasBin: true
+ dev: true
+
+ /v8-compile-cache-lib@3.0.1:
+ resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==}
+ dev: true
+
+ /v8-compile-cache@2.4.0:
+ resolution: {integrity: sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==}
+ dev: true
+
+ /v8flags@3.2.0:
+ resolution: {integrity: sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==}
+ engines: {node: '>= 0.10'}
+ dependencies:
+ homedir-polyfill: 1.0.3
+ dev: true
+
+ /v8flags@4.0.1:
+ resolution: {integrity: sha512-fcRLaS4H/hrZk9hYwbdRM35D0U8IYMfEClhXxCivOojl+yTRAZH3Zy2sSy6qVCiGbV9YAtPssP6jaChqC9vPCg==}
+ engines: {node: '>= 10.13.0'}
+ dev: true
+
+ /validate-glob-opts@1.0.2:
+ resolution: {integrity: sha512-3PKjRQq/R514lUcG9OEiW0u9f7D4fP09A07kmk1JbNn2tfeQdAHhlT+A4dqERXKu2br2rrxSM3FzagaEeq9w+A==}
+ dependencies:
+ array-to-sentence: 1.1.0
+ indexed-filter: 1.0.3
+ inspect-with-kind: 1.0.5
+ is-plain-obj: 1.1.0
+ dev: true
+
+ /validate-npm-package-license@3.0.4:
+ resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==}
+ dependencies:
+ spdx-correct: 3.2.0
+ spdx-expression-parse: 3.0.1
+ dev: true
+
+ /validate-npm-package-name@3.0.0:
+ resolution: {integrity: sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==}
+ dependencies:
+ builtins: 1.0.3
+ dev: true
+
+ /verror@1.10.0:
+ resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==}
+ engines: {'0': node >=0.6.0}
+ dependencies:
+ assert-plus: 1.0.0
+ core-util-is: 1.0.2
+ extsprintf: 1.3.0
+ dev: true
+
+ /wcwidth@1.0.1:
+ resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==}
+ dependencies:
+ defaults: 1.0.4
+ dev: true
+
+ /webidl-conversions@3.0.1:
+ resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
+ dev: true
+
+ /webidl-conversions@4.0.2:
+ resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==}
+ dev: true
+
+ /whatwg-url@5.0.0:
+ resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==}
+ dependencies:
+ tr46: 0.0.3
+ webidl-conversions: 3.0.1
+ dev: true
+
+ /whatwg-url@7.1.0:
+ resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==}
+ dependencies:
+ lodash.sortby: 4.7.0
+ tr46: 1.0.1
+ webidl-conversions: 4.0.2
+ dev: true
+
+ /when@3.7.8:
+ resolution: {integrity: sha512-5cZ7mecD3eYcMiCH4wtRPA5iFJZ50BJYDfckI5RRpQiktMiYTcn0ccLTZOvcbBume+1304fQztxeNzNS9Gvrnw==}
+ dev: true
+
+ /which-boxed-primitive@1.1.1:
+ resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ is-bigint: 1.1.0
+ is-boolean-object: 1.2.2
+ is-number-object: 1.1.1
+ is-string: 1.1.1
+ is-symbol: 1.1.1
+ dev: true
+
+ /which-builtin-type@1.2.1:
+ resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ call-bound: 1.0.3
+ function.prototype.name: 1.1.8
+ has-tostringtag: 1.0.2
+ is-async-function: 2.1.1
+ is-date-object: 1.1.0
+ is-finalizationregistry: 1.1.1
+ is-generator-function: 1.1.0
+ is-regex: 1.2.1
+ is-weakref: 1.1.1
+ isarray: 2.0.5
+ which-boxed-primitive: 1.1.1
+ which-collection: 1.0.2
+ which-typed-array: 1.1.18
+ dev: true
+
+ /which-collection@1.0.2:
+ resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ is-map: 2.0.3
+ is-set: 2.0.3
+ is-weakmap: 2.0.2
+ is-weakset: 2.0.4
+ dev: true
+
+ /which-module@2.0.1:
+ resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==}
+ dev: true
+
+ /which-typed-array@1.1.18:
+ resolution: {integrity: sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==}
+ engines: {node: '>= 0.4'}
+ dependencies:
+ available-typed-arrays: 1.0.7
+ call-bind: 1.0.8
+ call-bound: 1.0.3
+ for-each: 0.3.5
+ gopd: 1.2.0
+ has-tostringtag: 1.0.2
+ dev: true
+
+ /which@1.3.1:
+ resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==}
+ hasBin: true
+ dependencies:
+ isexe: 2.0.0
+ dev: true
+
+ /which@2.0.2:
+ resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
+ engines: {node: '>= 8'}
+ hasBin: true
+ dependencies:
+ isexe: 2.0.0
+ dev: true
+
+ /wide-align@1.1.3:
+ resolution: {integrity: sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==}
+ dependencies:
+ string-width: 2.1.1
+ dev: true
+
+ /wide-align@1.1.5:
+ resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==}
+ dependencies:
+ string-width: 1.0.2
+ dev: true
+
+ /windows-release@3.3.3:
+ resolution: {integrity: sha512-OSOGH1QYiW5yVor9TtmXKQvt2vjQqbYS+DqmsZw+r7xDwLXEeT3JGW0ZppFmHx4diyXmxt238KFR3N9jzevBRg==}
+ engines: {node: '>=6'}
+ dependencies:
+ execa: 1.0.0
+ dev: true
+
+ /word-wrap@1.2.5:
+ resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
+ engines: {node: '>=0.10.0'}
+ dev: true
+
+ /wordwrap@1.0.0:
+ resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==}
+ dev: true
+
+ /wrap-ansi@5.1.0:
+ resolution: {integrity: sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==}
+ engines: {node: '>=6'}
+ dependencies:
+ ansi-styles: 3.2.1
+ string-width: 3.1.0
+ strip-ansi: 5.2.0
+ dev: true
+
+ /wrap-ansi@6.2.0:
+ resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==}
+ engines: {node: '>=8'}
+ dependencies:
+ ansi-styles: 4.3.0
+ string-width: 4.2.3
+ strip-ansi: 6.0.1
+ dev: true
+
+ /wrappy@1.0.2:
+ resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
+ dev: true
+
+ /write-file-atomic@2.4.3:
+ resolution: {integrity: sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==}
+ dependencies:
+ graceful-fs: 4.2.11
+ imurmurhash: 0.1.4
+ signal-exit: 3.0.7
+ dev: true
+
+ /write-json-file@2.3.0:
+ resolution: {integrity: sha512-84+F0igFp2dPD6UpAQjOUX3CdKUOqUzn6oE9sDBNzUXINR5VceJ1rauZltqQB/bcYsx3EpKys4C7/PivKUAiWQ==}
+ engines: {node: '>=4'}
+ dependencies:
+ detect-indent: 5.0.0
+ graceful-fs: 4.2.11
+ make-dir: 1.3.0
+ pify: 3.0.0
+ sort-keys: 2.0.0
+ write-file-atomic: 2.4.3
+ dev: true
+
+ /write-json-file@3.2.0:
+ resolution: {integrity: sha512-3xZqT7Byc2uORAatYiP3DHUUAVEkNOswEWNs9H5KXiicRTvzYzYqKjYc4G7p+8pltvAw641lVByKVtMpf+4sYQ==}
+ engines: {node: '>=6'}
+ dependencies:
+ detect-indent: 5.0.0
+ graceful-fs: 4.2.11
+ make-dir: 2.1.0
+ pify: 4.0.1
+ sort-keys: 2.0.0
+ write-file-atomic: 2.4.3
+ dev: true
+
+ /write-pkg@3.2.0:
+ resolution: {integrity: sha512-tX2ifZ0YqEFOF1wjRW2Pk93NLsj02+n1UP5RvO6rCs0K6R2g1padvf006cY74PQJKMGS2r42NK7FD0dG6Y6paw==}
+ engines: {node: '>=4'}
+ dependencies:
+ sort-keys: 2.0.0
+ write-json-file: 2.3.0
+ dev: true
+
+ /xtend@2.0.6:
+ resolution: {integrity: sha512-fOZg4ECOlrMl+A6Msr7EIFcON1L26mb4NY5rurSkOex/TWhazOrg6eXD/B0XkuiYcYhQDWLXzQxLMVJ7LXwokg==}
+ engines: {node: '>=0.4'}
+ dependencies:
+ is-object: 0.1.2
+ object-keys: 0.2.0
+ dev: true
+
+ /xtend@4.0.2:
+ resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==}
+ engines: {node: '>=0.4'}
+ dev: true
+
+ /y18n@4.0.3:
+ resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==}
+ dev: true
+
+ /yallist@3.1.1:
+ resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
+ dev: true
+
+ /yallist@4.0.0:
+ resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
+ dev: true
+
+ /yargs-parser@13.1.2:
+ resolution: {integrity: sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==}
+ dependencies:
+ camelcase: 5.3.1
+ decamelize: 1.2.0
+ dev: true
+
+ /yargs-parser@15.0.3:
+ resolution: {integrity: sha512-/MVEVjTXy/cGAjdtQf8dW3V9b97bPN7rNn8ETj6BmAQL7ibC7O1Q9SPJbGjgh3SlwoBNXMzj/ZGIj8mBgl12YA==}
+ dependencies:
+ camelcase: 5.3.1
+ decamelize: 1.2.0
+ dev: true
+
+ /yargs-parser@18.1.3:
+ resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==}
+ engines: {node: '>=6'}
+ dependencies:
+ camelcase: 5.3.1
+ decamelize: 1.2.0
+ dev: true
+
+ /yargs-parser@20.2.9:
+ resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==}
+ engines: {node: '>=10'}
+ dev: true
+
+ /yargs-unparser@1.6.0:
+ resolution: {integrity: sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==}
+ engines: {node: '>=6'}
+ dependencies:
+ flat: 4.1.1
+ lodash: 4.17.21
+ yargs: 13.3.2
+ dev: true
+
+ /yargs@13.3.2:
+ resolution: {integrity: sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==}
+ dependencies:
+ cliui: 5.0.0
+ find-up: 3.0.0
+ get-caller-file: 2.0.5
+ require-directory: 2.1.1
+ require-main-filename: 2.0.0
+ set-blocking: 2.0.0
+ string-width: 3.1.0
+ which-module: 2.0.1
+ y18n: 4.0.3
+ yargs-parser: 13.1.2
+ dev: true
+
+ /yargs@14.2.3:
+ resolution: {integrity: sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg==}
+ dependencies:
+ cliui: 5.0.0
+ decamelize: 1.2.0
+ find-up: 3.0.0
+ get-caller-file: 2.0.5
+ require-directory: 2.1.1
+ require-main-filename: 2.0.0
+ set-blocking: 2.0.0
+ string-width: 3.1.0
+ which-module: 2.0.1
+ y18n: 4.0.3
+ yargs-parser: 15.0.3
+ dev: true
+
+ /yargs@15.4.1:
+ resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==}
+ engines: {node: '>=8'}
+ dependencies:
+ cliui: 6.0.0
+ decamelize: 1.2.0
+ find-up: 4.1.0
+ get-caller-file: 2.0.5
+ require-directory: 2.1.1
+ require-main-filename: 2.0.0
+ set-blocking: 2.0.0
+ string-width: 4.2.3
+ which-module: 2.0.1
+ y18n: 4.0.3
+ yargs-parser: 18.1.3
+ dev: true
+
+ /yn@3.1.1:
+ resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==}
+ engines: {node: '>=6'}
+ dev: true
+
+ /zen-observable@0.8.15:
+ resolution: {integrity: sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ==}
+ dev: true
diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml
new file mode 100644
index 0000000000..4340350e19
--- /dev/null
+++ b/pnpm-workspace.yaml
@@ -0,0 +1,2 @@
+packages:
+ - 'packages/*'
\ No newline at end of file