├── .github
└── FUNDING.yml
├── .gitignore
├── LICENSE
├── README.md
├── _config.yml
├── appsscript.json
├── build.sh
├── client
├── logo.svg.html
├── sidebar.css.html
├── sidebar.html
└── sidebar.js
├── package-lock.json
├── package.json
├── privacy-policy.md
├── server
├── colors.js
├── constants.js
├── document.js
├── main.js
└── util.js
└── terms-of-service.md
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | custom: "https://www.paypal.com/paypalme/alexwforsythe"
2 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .clasp.json
2 | .nvmrc
3 | .idea/
4 | node_modules/
5 | dist/
6 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2019 Alex Forsythe
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | 
2 |
3 | [](https://github.com/google/clasp) [](https://paypal.me/alexwforsythe)
4 |
5 |
6 |
7 |
8 |
9 | # Usage
10 |
11 | ## Starting the add-on
12 |
13 | 
14 |
15 | ## Formatting inline code
16 |
17 | 
18 |
19 | ## Formatting code blocks
20 |
21 | 
22 |
23 | ## Reformatting code blocks
24 |
25 | 
26 |
27 | ## Previewing themes
28 |
29 | Examples of the different color themes applied to various languages can be
30 | found on the [highlight.js demo page](https://highlightjs.org/static/demo/).
31 |
32 | ## Unformatting code
33 |
34 | To clear formatting in Docs, highlight the text and select
35 | `Format > Clear Formatting` from the toolbar. The keyboard shortcut is
36 | Cmd +/ on OS X and Ctrl +/ on
37 | Windows:
38 | https://support.google.com/docs/answer/179738
39 |
40 | This will not remove the table that the text lives in if it's a "code block".
41 | To do that, you'll have to copy the text and paste it outside the table, then
42 | right-click the table and select **Delete table**.
43 |
44 | # Limitations
45 |
46 | ## Updates to syntax highlighting
47 |
48 | Code Blocks is built with [highlight.js](https://highlightjs.org/) and can only
49 | provide syntax highlighting for languages that are supported by that library.
50 |
51 | If you'd like to see Code Blocks support a language that is not yet implemented
52 | by highlight.js, please refer to [their page on requesting new languages](http://highlightjs.readthedocs.io/en/latest/language-requests.html).
53 |
54 | If you'd like to see Code Blocks update or fix support for an existing language:
55 | 1. Check if the [latest version of highlight.js](https://github.com/highlightjs/highlight.js/releases)
56 | already includes the update. If it does, submit a PR to this repository that
57 | bumps the highlight.js version in [`package.json`](https://github.com/alexwforsythe/code-blocks/blob/master/package.json).
58 | 2. If highlight.js does not yet include the update, please submit an issue on
59 | [their issue tracker](https://github.com/highlightjs/highlight.js/issues).
60 |
61 | ## Real-time syntax highlighting
62 |
63 | Codes Blocks uses Google's
64 | [Apps Script](https://developers.google.com/apps-script/), a server-side
65 | JavaScript platform, to interact with Docs and format code. Each time the add-on
66 | formats a snippet of code, a request is made to the Apps Script backend to
67 | modify the current Doc. There are a few limitations of this platform that
68 | prevent Code Blocks from formatting code as you type:
69 | * The [`onEdit`](https://developers.google.com/apps-script/guides/triggers#onedite)
70 | event that fires when a user modifies content is only available in Sheets
71 | * [Time-driven triggers](https://developers.google.com/apps-script/guides/triggers/installable#time-driven_triggers)
72 | can only be used once per hour at most
73 | * Each request to modify the current Doc can take multiple seconds, so code
74 | formatting cannot be performed in real-time
75 | * The number of requests needed to update a Doc in near real-time may exceed
76 | the service API quotas
77 |
78 | ## Keyboard Shortcuts
79 |
80 | Keyboard shortcuts can only be handled by Code Blocks if the add-on sidebar is
81 | focused, which would require users to click the sidebar anyway.
82 |
83 | Keyboard events in the active document cannot currently be handled by Docs
84 | add-ons:
85 | https://issuetracker.google.com/issues/79461369
86 |
87 | # Contributing
88 |
89 | ## Setup
90 |
91 | ```
92 | $ npm install
93 | ```
94 |
95 | ## Building
96 |
97 | ```
98 | $ npm run build
99 | ```
100 |
101 | ## Pushing Changes
102 |
103 | ℹ️ The following commands only work for the project maintainer
104 | because they require Google Drive authorization.
105 |
106 | | Command | Description |
107 | | --- | --- |
108 | | `npm run push:gas` | just GAS files |
109 | | `npm run push:js` | just `sidebar.js` |
110 | | `npm run push:static` | just HTML & CSS |
111 | | `npm run push` | everything |
112 |
113 | # Google Apps Script Resources
114 |
115 | * https://developers.google.com/apps-script/guides/clasp
116 | * https://github.com/google/clasp/blob/master/docs/typescript.md
117 | * https://developers.google.com/apps-script/guides/support/best-practices
118 | * https://gsuite-developers.googleblog.com/2015/12/advanced-development-process-with-apps.html
119 | * http://googleappsscript.blogspot.com/2010/06/optimizing-spreadsheet-operations.html
120 |
121 | ---
122 |
123 | [Homepage](https://www.alexwforsythe.com/code-blocks/) | [Google Workspace Marketplace](https://workspace.google.com/marketplace/app/code_blocks/100740430168) | [Privacy Policy](https://www.alexwforsythe.com/code-blocks/privacy-policy) | [Terms of Service](https://www.alexwforsythe.com/code-blocks/terms-of-service)
124 |
--------------------------------------------------------------------------------
/_config.yml:
--------------------------------------------------------------------------------
1 | theme: jekyll-theme-slate
--------------------------------------------------------------------------------
/appsscript.json:
--------------------------------------------------------------------------------
1 | {
2 | "timeZone": "America/Los_Angeles",
3 | "oauthScopes": [
4 | "https://www.googleapis.com/auth/documents.currentonly",
5 | "https://www.googleapis.com/auth/script.container.ui"
6 | ],
7 | "dependencies": {
8 | },
9 | "exceptionLogging": "STACKDRIVER"
10 | }
11 |
--------------------------------------------------------------------------------
/build.sh:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | set -e
4 |
5 | dist_dir="dist"
6 | mkdir -p ${dist_dir}
7 |
8 | gas () {
9 | cp appsscript.json ${dist_dir}
10 | cp server/*.js ${dist_dir}
11 | }
12 |
13 | js () {
14 | # wrap bundled js in script tags and rename as html
15 | input_file="client/sidebar.js"
16 | output_file="${dist_dir}/bundle.min.js.html"
17 | echo "" >> ${output_file}
20 | }
21 |
22 | html () {
23 | cp client/*.html ${dist_dir}
24 | }
25 |
26 | css () {
27 | output_file="${dist_dir}/styles.html"
28 |
29 | optimizations="optimizeBackground:off;"
30 | optimizations+="replaceMultipleZeros:off;"
31 | optimizations+="specialComments:off"
32 |
33 | # wrap all theme css in style tags and bundle into html
34 | echo "" > ${output_file}
35 | for filename in node_modules/highlight.js/styles/*.css; do
36 | theme_name=$(basename "${filename}" .css)
37 | if [[ ${theme_name} != 'darkula' ]]; then
38 | theme=""
41 | echo ${theme} >> ${output_file}
42 | fi
43 | done
44 | echo "" >> ${output_file}
45 | }
46 |
47 | case "$1" in
48 | "gas") gas;;
49 | "js") js;;
50 | "html") html;;
51 | "css") css;;
52 | "static") html && css;;
53 | *)
54 | echo "invalid command: $1"
55 | exit 1
56 | ;;
57 | esac
58 |
--------------------------------------------------------------------------------
/client/logo.svg.html:
--------------------------------------------------------------------------------
1 |
2 | Logo
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/client/sidebar.css.html:
--------------------------------------------------------------------------------
1 |
44 |
--------------------------------------------------------------------------------
/client/sidebar.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | != include('sidebar.css.html'); ?>
9 |
10 |
11 |
40 |
41 |
48 |
49 | != include('bundle.min.js.html'); ?>
50 |
51 |
60 |
61 |
62 |
--------------------------------------------------------------------------------
/client/sidebar.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | var $ = require('jquery');
4 | var hljs = require('highlight.js');
5 | var juice = require('juice/client');
6 |
7 | const defaultBgc = '#f0f0f0';
8 | const languageAuto = 'Auto';
9 |
10 | const ids = {
11 | language: '#language',
12 | theme: '#theme',
13 | themes: '#themes',
14 | noBackground: '#no-background',
15 | preview: '#preview',
16 | formatButtons: '#format-buttons',
17 | format: '#format-selection',
18 | showPreview: '#show-preview',
19 | error: '#error'
20 | };
21 |
22 | /**
23 | * Define languages that are not included in highlight.js by default
24 | */
25 | function defineThirdPartyGrammars() {
26 | const graphql = require("highlightjs-graphql")
27 | graphql(hljs)
28 | }
29 |
30 | defineOtherLanguages();
31 |
32 | /**
33 | * On document load, try to load languages and themes, try to load the user's
34 | * preferences if previously set, and assign click handlers to each button.
35 | */
36 | $(function () {
37 | const languages = hljs.listLanguages();
38 |
39 | // add html explicitly for users who don't realize that xml will work;
40 | // html is an alias for xml in highlight.js
41 | languages.push('html');
42 | languages.sort();
43 |
44 | loadLanguages(languages);
45 |
46 | google.script.run
47 | .withFailureHandler(showErrorThemes)
48 | .withSuccessHandler(function onSuccess(result) {
49 | loadThemes(result.themes);
50 | loadUserPrefs(languages, result.themes, result.prefs);
51 |
52 | $(ids.format).click(format);
53 | $(ids.showPreview).click(preview);
54 |
55 | enableUiElements();
56 | })
57 | .getThemesAndUserPrefs();
58 | });
59 |
60 | /**
61 | * Runs a server-side function to format the user-selected text and update
62 | * the sidebar UI with the resulting block.
63 | */
64 | function preview() {
65 | // noinspection JSUnusedGlobalSymbols
66 | this.disabled = true;
67 | $(ids.error).remove();
68 |
69 | const language = $(ids.language + ' option:selected').text();
70 | const theme = $(ids.theme + ' option:selected').text();
71 | const noBackground = $(ids.noBackground).is(':checked');
72 |
73 | google.script.run
74 | .withFailureHandler(showErrorButtons)
75 | .withSuccessHandler(function renderPreview(result, element) {
76 | const block = createHighlightedBlock(
77 | result.selection,
78 | result.css,
79 | language,
80 | noBackground
81 | );
82 |
83 | // render preview
84 | $(ids.preview).replaceWith(block);
85 |
86 | element.disabled = false;
87 | })
88 | .withUserObject(this)
89 | .getSelectionAndThemeCssForPreview({
90 | language: language,
91 | theme: theme,
92 | noBackground: noBackground
93 | });
94 | }
95 |
96 | /**
97 | * Runs a server-side function to format the user-selected text and replaces
98 | * that text in the active document with the resulting block.
99 | */
100 | function format() {
101 | // noinspection JSUnusedGlobalSymbols
102 | this.disabled = true;
103 | $(ids.error).remove();
104 |
105 | const language = $(ids.language + ' option:selected').text();
106 | const theme = $(ids.theme + ' option:selected').text();
107 | const noBackground = $(ids.noBackground).is(':checked');
108 |
109 | const html = $(ids.preview).prop('outerHTML');
110 | google.script.run
111 | .withFailureHandler(showErrorButtons)
112 | .withSuccessHandler(function onSuccess(result, element) {
113 | if (!result) {
114 | // code has already been inserted from preview
115 | return focusEditor(result, element);
116 | }
117 |
118 | const block = createHighlightedBlock(
119 | result.selection, result.css, language, noBackground
120 | );
121 | const html = block.prop('outerHTML');
122 |
123 | google.script.run
124 | .withFailureHandler(showErrorButtons)
125 | .withSuccessHandler(focusEditor)
126 | .withUserObject(element)
127 | .insertCode(html, noBackground);
128 | })
129 | .withUserObject(this)
130 | .insertCodeOrGetSelectionAndThemeCss(html, {
131 | language: language,
132 | theme: theme,
133 | noBackground: noBackground
134 | });
135 | }
136 |
137 | /*
138 | * Utilities
139 | */
140 |
141 | /**
142 | * Loads the language input options.
143 | */
144 | function loadLanguages(languages) {
145 | const languageSelect = $(ids.language);
146 | var languageOptions = languages.map(toOption);
147 |
148 | languageSelect.append(languageOptions);
149 | }
150 |
151 | /**
152 | * Loads the theme input options.
153 | */
154 | function loadThemes(themes) {
155 | const themeSelect = $(ids.theme);
156 |
157 | themeSelect.append(themes.map(toOption));
158 | }
159 |
160 | /**
161 | * Returns the given value in the form of an HTML option element.
162 | *
163 | * @param {string} value
164 | * @returns {string} option element
165 | */
166 | function toOption(value) {
167 | return '' + value + ' ';
168 | }
169 |
170 | /**
171 | * Loads the inputs elements with user preferences from the server.
172 | *
173 | * @param {Object} prefs the saved preferences
174 | * @param {Array.} themes the list of themes
175 | */
176 | function loadUserPrefs(languages, themes, prefs) {
177 | if (prefs.language) {
178 | const language = $(ids.language);
179 | const selectionIsValid = languages.some(function matchesPref(l) {
180 | return l === prefs.language;
181 | });
182 | if (selectionIsValid) {
183 | language.val(prefs.language)
184 | }
185 | }
186 |
187 | if (prefs.theme) {
188 | const theme = $(ids.theme);
189 | const selectionIsValid = themes.some(function matchesPref(t) {
190 | return t === prefs.theme;
191 | });
192 | if (selectionIsValid) {
193 | theme.val(prefs.theme);
194 | }
195 | }
196 |
197 | if (prefs.noBackground && prefs.noBackground.toString() === 'true') {
198 | $(ids.noBackground).prop('checked', true);
199 | }
200 | }
201 |
202 | /**
203 | * @param {string} text the text to highlight
204 | * @param {string} css the theme style as CSS
205 | * @param {string} language the language to use, defaults to 'auto'
206 | * @param {boolean} noBackground whether to use the default background color
207 | * @returns {string} the highlighted block as HTML with inline CSS
208 | */
209 | function createHighlightedBlock(text, css, language, noBackground) {
210 | text = replaceSpecialChars(text);
211 |
212 | var block = $(ids.preview).clone();
213 | block.removeClass();
214 | block.removeAttr('style');
215 | block.text(text);
216 | if (language !== languageAuto) {
217 | block.addClass(language);
218 | }
219 |
220 | const node = block[0];
221 | hljs.highlightBlock(node);
222 |
223 | var highlighted = block.prop('outerHTML');
224 | if (css) {
225 | const params = {
226 | applyHeightAttributes: false,
227 | applyWidthAttributes: false,
228 | inlinePseudoElements: false,
229 | preserveFontFaces: false,
230 | preserveMediaQueries: false
231 | };
232 | highlighted = juice.inlineContent(highlighted, css, params);
233 | }
234 |
235 | block = $($.parseHTML(highlighted));
236 | if (noBackground) {
237 | block.css('background', defaultBgc);
238 | }
239 |
240 | return block;
241 | }
242 |
243 | function enableUiElements() {
244 | [
245 | ids.language,
246 | ids.theme,
247 | ids.format,
248 | ids.showPreview
249 | ].forEach(function enable(id) {
250 | $(id).prop('disabled', false);
251 | });
252 | }
253 |
254 | //noinspection JSUnusedLocalSymbols
255 | function focusEditor(result, element) {
256 | google.script.host.editor.focus();
257 | element.disabled = false;
258 | }
259 |
260 | //noinspection JSUnusedLocalSymbols
261 | function showErrorThemes(msg, element) {
262 | showError(msg, $(ids.themes));
263 |
264 | // enable other forms even if getting themes fails
265 | enableUiElements();
266 | }
267 |
268 | function showErrorButtons(msg, element) {
269 | showError(msg, $(ids.formatButtons));
270 | element.disabled = false;
271 | }
272 |
273 | /**
274 | * Inserts a div that contains an error message after a given element.
275 | *
276 | * @param {string} msg the error message
277 | * @param {string} elementId the element to display the error under
278 | */
279 | function showError(msg, elementId) {
280 | const div = $('' + msg + '
');
281 | $(elementId).after(div);
282 | }
283 |
284 | /**
285 | *
286 | * @param {string} text
287 | * @returns {string} the text with special characters replaced
288 | */
289 | function replaceSpecialChars(text) {
290 | var re = new RegExp(Object.keys(replacements).join('|'), 'g');
291 | return text.replace(re, function getReplacement(match) {
292 | return replacements[match];
293 | });
294 | }
295 |
296 | const replacements = {
297 | '\u2018': '\'',
298 | '\u2019': '\'',
299 | '\u201A': '\'',
300 | '\uFFFD': '\'',
301 | '\u201c': '"',
302 | '\u201d': '"',
303 | '\u201e': '"',
304 | '\u02C6': '^',
305 | '\u2039': '<',
306 | '\u203A': '>',
307 | '\u2013': '-',
308 | '\u2014': '--',
309 | '\u2026': '...',
310 | '\u00A9': '(c)',
311 | '\u00AE': '(r)',
312 | '\u2122': 'TM',
313 | '\u00BC': '1/4',
314 | '\u00BD': '1/2',
315 | '\u00BE': '3/4',
316 | '\u02DC': ' ',
317 | '\u00A0': ' '
318 | };
319 |
--------------------------------------------------------------------------------
/package-lock.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "code-blocks",
3 | "version": "1.4.2",
4 | "lockfileVersion": 1,
5 | "requires": true,
6 | "dependencies": {
7 | "@google/clasp": {
8 | "version": "2.3.0",
9 | "resolved": "https://registry.npmjs.org/@google/clasp/-/clasp-2.3.0.tgz",
10 | "integrity": "sha512-P/l7ciNoHdfGsYGDBtkbpuLjH05vn6sIK/K7ehGWF8uK1GiHVMEb4tXIFNbFsTEzQvCg3QILZhJAnQEGqUAefQ==",
11 | "dev": true,
12 | "requires": {
13 | "chalk": "^2.4.2",
14 | "cli-spinner": "^0.2.10",
15 | "commander": "^3.0.1",
16 | "dotf": "^1.2.0",
17 | "ellipsize": "^0.1.0",
18 | "find-up": "^4.1.0",
19 | "fs-extra": "^8.1.0",
20 | "fuzzy": "^0.1.3",
21 | "gaxios": "^2.0.1",
22 | "google-auth-library": "^5.2.1",
23 | "googleapis": "^42.0.0",
24 | "inquirer": "^7.0.0",
25 | "inquirer-autocomplete-prompt": "1.0.1",
26 | "is-online": "^8.2.0",
27 | "mkdirp": "^0.5.1",
28 | "multimatch": "^4.0.0",
29 | "normalize-newline": "3.0.0",
30 | "open": "^6.4.0",
31 | "pluralize": "^8.0.0",
32 | "recursive-readdir": "^2.2.2",
33 | "split-lines": "^2.0.0",
34 | "strip-bom": "^4.0.0",
35 | "ts2gas": "^3.4.4",
36 | "typescript": "^3.6.2",
37 | "watch": "^1.0.2"
38 | }
39 | },
40 | "@sindresorhus/is": {
41 | "version": "0.14.0",
42 | "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz",
43 | "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==",
44 | "dev": true
45 | },
46 | "@szmarczak/http-timer": {
47 | "version": "1.1.2",
48 | "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz",
49 | "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==",
50 | "dev": true,
51 | "requires": {
52 | "defer-to-connect": "^1.0.1"
53 | }
54 | },
55 | "@types/google-apps-script": {
56 | "version": "1.0.2",
57 | "resolved": "https://registry.npmjs.org/@types/google-apps-script/-/google-apps-script-1.0.2.tgz",
58 | "integrity": "sha512-WUOoc4Z1ZsLXrBgvAuMw2QHvVx9IX93k7FlNQci5+dHsb9DQLLlHhnz6Xr44vRLKl3sXFw7dVztwwolhhCV5kQ==",
59 | "dev": true
60 | },
61 | "@types/minimatch": {
62 | "version": "3.0.3",
63 | "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz",
64 | "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==",
65 | "dev": true
66 | },
67 | "JSONStream": {
68 | "version": "1.3.5",
69 | "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz",
70 | "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==",
71 | "dev": true,
72 | "requires": {
73 | "jsonparse": "^1.2.0",
74 | "through": ">=2.2.7 <3"
75 | }
76 | },
77 | "abort-controller": {
78 | "version": "3.0.0",
79 | "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz",
80 | "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==",
81 | "dev": true,
82 | "requires": {
83 | "event-target-shim": "^5.0.0"
84 | }
85 | },
86 | "acorn": {
87 | "version": "7.1.0",
88 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.0.tgz",
89 | "integrity": "sha512-kL5CuoXA/dgxlBbVrflsflzQ3PAas7RYZB52NOm/6839iVYJgKMJ3cQJD+t2i5+qFa8h3MDpEOJiS64E8JLnSQ==",
90 | "dev": true
91 | },
92 | "acorn-node": {
93 | "version": "1.8.2",
94 | "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz",
95 | "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==",
96 | "dev": true,
97 | "requires": {
98 | "acorn": "^7.0.0",
99 | "acorn-walk": "^7.0.0",
100 | "xtend": "^4.0.2"
101 | }
102 | },
103 | "acorn-walk": {
104 | "version": "7.0.0",
105 | "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.0.0.tgz",
106 | "integrity": "sha512-7Bv1We7ZGuU79zZbb6rRqcpxo3OY+zrdtloZWoyD8fmGX+FeXRjE+iuGkZjSXLVovLzrsvMGMy0EkwA0E0umxg==",
107 | "dev": true
108 | },
109 | "agent-base": {
110 | "version": "4.3.0",
111 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz",
112 | "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==",
113 | "dev": true,
114 | "requires": {
115 | "es6-promisify": "^5.0.0"
116 | }
117 | },
118 | "aggregate-error": {
119 | "version": "3.0.1",
120 | "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz",
121 | "integrity": "sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA==",
122 | "dev": true,
123 | "requires": {
124 | "clean-stack": "^2.0.0",
125 | "indent-string": "^4.0.0"
126 | }
127 | },
128 | "ajv": {
129 | "version": "6.10.2",
130 | "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz",
131 | "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==",
132 | "dev": true,
133 | "requires": {
134 | "fast-deep-equal": "^2.0.1",
135 | "fast-json-stable-stringify": "^2.0.0",
136 | "json-schema-traverse": "^0.4.1",
137 | "uri-js": "^4.2.2"
138 | }
139 | },
140 | "ansi-escapes": {
141 | "version": "4.2.1",
142 | "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.2.1.tgz",
143 | "integrity": "sha512-Cg3ymMAdN10wOk/VYfLV7KCQyv7EDirJ64500sU7n9UlmioEtDuU5Gd+hj73hXSU/ex7tHJSssmyftDdkMLO8Q==",
144 | "dev": true,
145 | "requires": {
146 | "type-fest": "^0.5.2"
147 | }
148 | },
149 | "ansi-regex": {
150 | "version": "5.0.0",
151 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz",
152 | "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==",
153 | "dev": true
154 | },
155 | "ansi-styles": {
156 | "version": "3.2.1",
157 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
158 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
159 | "dev": true,
160 | "requires": {
161 | "color-convert": "^1.9.0"
162 | }
163 | },
164 | "array-differ": {
165 | "version": "3.0.0",
166 | "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-3.0.0.tgz",
167 | "integrity": "sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==",
168 | "dev": true
169 | },
170 | "array-union": {
171 | "version": "2.1.0",
172 | "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
173 | "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==",
174 | "dev": true
175 | },
176 | "arrify": {
177 | "version": "2.0.1",
178 | "resolved": "https://registry.npmjs.org/arrify/-/arrify-2.0.1.tgz",
179 | "integrity": "sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==",
180 | "dev": true
181 | },
182 | "asn1": {
183 | "version": "0.2.4",
184 | "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
185 | "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
186 | "dev": true,
187 | "requires": {
188 | "safer-buffer": "~2.1.0"
189 | }
190 | },
191 | "asn1.js": {
192 | "version": "4.10.1",
193 | "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz",
194 | "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==",
195 | "dev": true,
196 | "requires": {
197 | "bn.js": "^4.0.0",
198 | "inherits": "^2.0.1",
199 | "minimalistic-assert": "^1.0.0"
200 | }
201 | },
202 | "assert": {
203 | "version": "1.5.0",
204 | "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz",
205 | "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==",
206 | "dev": true,
207 | "requires": {
208 | "object-assign": "^4.1.1",
209 | "util": "0.10.3"
210 | },
211 | "dependencies": {
212 | "inherits": {
213 | "version": "2.0.1",
214 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
215 | "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=",
216 | "dev": true
217 | },
218 | "util": {
219 | "version": "0.10.3",
220 | "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz",
221 | "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=",
222 | "dev": true,
223 | "requires": {
224 | "inherits": "2.0.1"
225 | }
226 | }
227 | }
228 | },
229 | "assert-plus": {
230 | "version": "1.0.0",
231 | "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
232 | "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
233 | "dev": true
234 | },
235 | "async": {
236 | "version": "3.1.0",
237 | "resolved": "https://registry.npmjs.org/async/-/async-3.1.0.tgz",
238 | "integrity": "sha512-4vx/aaY6j/j3Lw3fbCHNWP0pPaTCew3F6F3hYyl/tHs/ndmV1q7NW9T5yuJ2XAGwdQrP+6Wu20x06U4APo/iQQ==",
239 | "dev": true
240 | },
241 | "asynckit": {
242 | "version": "0.4.0",
243 | "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
244 | "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
245 | "dev": true
246 | },
247 | "aws-sign2": {
248 | "version": "0.7.0",
249 | "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
250 | "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
251 | "dev": true
252 | },
253 | "aws4": {
254 | "version": "1.8.0",
255 | "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz",
256 | "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==",
257 | "dev": true
258 | },
259 | "balanced-match": {
260 | "version": "1.0.0",
261 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
262 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
263 | "dev": true
264 | },
265 | "base64-js": {
266 | "version": "1.3.1",
267 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz",
268 | "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==",
269 | "dev": true
270 | },
271 | "bcrypt-pbkdf": {
272 | "version": "1.0.2",
273 | "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
274 | "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
275 | "dev": true,
276 | "requires": {
277 | "tweetnacl": "^0.14.3"
278 | }
279 | },
280 | "bignumber.js": {
281 | "version": "7.2.1",
282 | "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-7.2.1.tgz",
283 | "integrity": "sha512-S4XzBk5sMB+Rcb/LNcpzXr57VRTxgAvaAEDAl1AwRx27j00hT84O6OkteE7u8UB3NuaaygCRrEpqox4uDOrbdQ==",
284 | "dev": true
285 | },
286 | "bn.js": {
287 | "version": "4.11.8",
288 | "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz",
289 | "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==",
290 | "dev": true
291 | },
292 | "boolbase": {
293 | "version": "1.0.0",
294 | "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
295 | "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=",
296 | "dev": true
297 | },
298 | "brace-expansion": {
299 | "version": "1.1.11",
300 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
301 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
302 | "dev": true,
303 | "requires": {
304 | "balanced-match": "^1.0.0",
305 | "concat-map": "0.0.1"
306 | }
307 | },
308 | "brorand": {
309 | "version": "1.1.0",
310 | "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
311 | "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=",
312 | "dev": true
313 | },
314 | "browser-pack": {
315 | "version": "6.1.0",
316 | "resolved": "https://registry.npmjs.org/browser-pack/-/browser-pack-6.1.0.tgz",
317 | "integrity": "sha512-erYug8XoqzU3IfcU8fUgyHqyOXqIE4tUTTQ+7mqUjQlvnXkOO6OlT9c/ZoJVHYoAaqGxr09CN53G7XIsO4KtWA==",
318 | "dev": true,
319 | "requires": {
320 | "JSONStream": "^1.0.3",
321 | "combine-source-map": "~0.8.0",
322 | "defined": "^1.0.0",
323 | "safe-buffer": "^5.1.1",
324 | "through2": "^2.0.0",
325 | "umd": "^3.0.0"
326 | }
327 | },
328 | "browser-resolve": {
329 | "version": "1.11.3",
330 | "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz",
331 | "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==",
332 | "dev": true,
333 | "requires": {
334 | "resolve": "1.1.7"
335 | },
336 | "dependencies": {
337 | "resolve": {
338 | "version": "1.1.7",
339 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz",
340 | "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=",
341 | "dev": true
342 | }
343 | }
344 | },
345 | "browserify": {
346 | "version": "16.5.0",
347 | "resolved": "https://registry.npmjs.org/browserify/-/browserify-16.5.0.tgz",
348 | "integrity": "sha512-6bfI3cl76YLAnCZ75AGu/XPOsqUhRyc0F/olGIJeCxtfxF2HvPKEcmjU9M8oAPxl4uBY1U7Nry33Q6koV3f2iw==",
349 | "dev": true,
350 | "requires": {
351 | "JSONStream": "^1.0.3",
352 | "assert": "^1.4.0",
353 | "browser-pack": "^6.0.1",
354 | "browser-resolve": "^1.11.0",
355 | "browserify-zlib": "~0.2.0",
356 | "buffer": "^5.0.2",
357 | "cached-path-relative": "^1.0.0",
358 | "concat-stream": "^1.6.0",
359 | "console-browserify": "^1.1.0",
360 | "constants-browserify": "~1.0.0",
361 | "crypto-browserify": "^3.0.0",
362 | "defined": "^1.0.0",
363 | "deps-sort": "^2.0.0",
364 | "domain-browser": "^1.2.0",
365 | "duplexer2": "~0.1.2",
366 | "events": "^2.0.0",
367 | "glob": "^7.1.0",
368 | "has": "^1.0.0",
369 | "htmlescape": "^1.1.0",
370 | "https-browserify": "^1.0.0",
371 | "inherits": "~2.0.1",
372 | "insert-module-globals": "^7.0.0",
373 | "labeled-stream-splicer": "^2.0.0",
374 | "mkdirp": "^0.5.0",
375 | "module-deps": "^6.0.0",
376 | "os-browserify": "~0.3.0",
377 | "parents": "^1.0.1",
378 | "path-browserify": "~0.0.0",
379 | "process": "~0.11.0",
380 | "punycode": "^1.3.2",
381 | "querystring-es3": "~0.2.0",
382 | "read-only-stream": "^2.0.0",
383 | "readable-stream": "^2.0.2",
384 | "resolve": "^1.1.4",
385 | "shasum": "^1.0.0",
386 | "shell-quote": "^1.6.1",
387 | "stream-browserify": "^2.0.0",
388 | "stream-http": "^3.0.0",
389 | "string_decoder": "^1.1.1",
390 | "subarg": "^1.0.0",
391 | "syntax-error": "^1.1.1",
392 | "through2": "^2.0.0",
393 | "timers-browserify": "^1.0.1",
394 | "tty-browserify": "0.0.1",
395 | "url": "~0.11.0",
396 | "util": "~0.10.1",
397 | "vm-browserify": "^1.0.0",
398 | "xtend": "^4.0.0"
399 | }
400 | },
401 | "browserify-aes": {
402 | "version": "1.2.0",
403 | "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
404 | "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
405 | "dev": true,
406 | "requires": {
407 | "buffer-xor": "^1.0.3",
408 | "cipher-base": "^1.0.0",
409 | "create-hash": "^1.1.0",
410 | "evp_bytestokey": "^1.0.3",
411 | "inherits": "^2.0.1",
412 | "safe-buffer": "^5.0.1"
413 | }
414 | },
415 | "browserify-cipher": {
416 | "version": "1.0.1",
417 | "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz",
418 | "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==",
419 | "dev": true,
420 | "requires": {
421 | "browserify-aes": "^1.0.4",
422 | "browserify-des": "^1.0.0",
423 | "evp_bytestokey": "^1.0.0"
424 | }
425 | },
426 | "browserify-des": {
427 | "version": "1.0.2",
428 | "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz",
429 | "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==",
430 | "dev": true,
431 | "requires": {
432 | "cipher-base": "^1.0.1",
433 | "des.js": "^1.0.0",
434 | "inherits": "^2.0.1",
435 | "safe-buffer": "^5.1.2"
436 | }
437 | },
438 | "browserify-rsa": {
439 | "version": "4.0.1",
440 | "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz",
441 | "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=",
442 | "dev": true,
443 | "requires": {
444 | "bn.js": "^4.1.0",
445 | "randombytes": "^2.0.1"
446 | }
447 | },
448 | "browserify-sign": {
449 | "version": "4.0.4",
450 | "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz",
451 | "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=",
452 | "dev": true,
453 | "requires": {
454 | "bn.js": "^4.1.1",
455 | "browserify-rsa": "^4.0.0",
456 | "create-hash": "^1.1.0",
457 | "create-hmac": "^1.1.2",
458 | "elliptic": "^6.0.0",
459 | "inherits": "^2.0.1",
460 | "parse-asn1": "^5.0.0"
461 | }
462 | },
463 | "browserify-zlib": {
464 | "version": "0.2.0",
465 | "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz",
466 | "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==",
467 | "dev": true,
468 | "requires": {
469 | "pako": "~1.0.5"
470 | }
471 | },
472 | "buffer": {
473 | "version": "5.4.3",
474 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.4.3.tgz",
475 | "integrity": "sha512-zvj65TkFeIt3i6aj5bIvJDzjjQQGs4o/sNoezg1F1kYap9Nu2jcUdpwzRSJTHMMzG0H7bZkn4rNQpImhuxWX2A==",
476 | "dev": true,
477 | "requires": {
478 | "base64-js": "^1.0.2",
479 | "ieee754": "^1.1.4"
480 | }
481 | },
482 | "buffer-equal-constant-time": {
483 | "version": "1.0.1",
484 | "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
485 | "integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk=",
486 | "dev": true
487 | },
488 | "buffer-from": {
489 | "version": "1.1.1",
490 | "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
491 | "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
492 | "dev": true
493 | },
494 | "buffer-xor": {
495 | "version": "1.0.3",
496 | "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz",
497 | "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=",
498 | "dev": true
499 | },
500 | "builtin-status-codes": {
501 | "version": "3.0.0",
502 | "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz",
503 | "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=",
504 | "dev": true
505 | },
506 | "cacheable-request": {
507 | "version": "6.1.0",
508 | "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz",
509 | "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==",
510 | "dev": true,
511 | "requires": {
512 | "clone-response": "^1.0.2",
513 | "get-stream": "^5.1.0",
514 | "http-cache-semantics": "^4.0.0",
515 | "keyv": "^3.0.0",
516 | "lowercase-keys": "^2.0.0",
517 | "normalize-url": "^4.1.0",
518 | "responselike": "^1.0.2"
519 | },
520 | "dependencies": {
521 | "get-stream": {
522 | "version": "5.1.0",
523 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz",
524 | "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==",
525 | "dev": true,
526 | "requires": {
527 | "pump": "^3.0.0"
528 | }
529 | },
530 | "lowercase-keys": {
531 | "version": "2.0.0",
532 | "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz",
533 | "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==",
534 | "dev": true
535 | }
536 | }
537 | },
538 | "cached-path-relative": {
539 | "version": "1.0.2",
540 | "resolved": "https://registry.npmjs.org/cached-path-relative/-/cached-path-relative-1.0.2.tgz",
541 | "integrity": "sha512-5r2GqsoEb4qMTTN9J+WzXfjov+hjxT+j3u5K+kIVNIwAd99DLCJE9pBIMP1qVeybV6JiijL385Oz0DcYxfbOIg==",
542 | "dev": true
543 | },
544 | "caseless": {
545 | "version": "0.12.0",
546 | "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
547 | "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
548 | "dev": true
549 | },
550 | "chalk": {
551 | "version": "2.4.2",
552 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
553 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
554 | "dev": true,
555 | "requires": {
556 | "ansi-styles": "^3.2.1",
557 | "escape-string-regexp": "^1.0.5",
558 | "supports-color": "^5.3.0"
559 | }
560 | },
561 | "chardet": {
562 | "version": "0.7.0",
563 | "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz",
564 | "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
565 | "dev": true
566 | },
567 | "cheerio": {
568 | "version": "0.22.0",
569 | "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-0.22.0.tgz",
570 | "integrity": "sha1-qbqoYKP5tZWmuBsahocxIe06Jp4=",
571 | "dev": true,
572 | "requires": {
573 | "css-select": "~1.2.0",
574 | "dom-serializer": "~0.1.0",
575 | "entities": "~1.1.1",
576 | "htmlparser2": "^3.9.1",
577 | "lodash.assignin": "^4.0.9",
578 | "lodash.bind": "^4.1.4",
579 | "lodash.defaults": "^4.0.1",
580 | "lodash.filter": "^4.4.0",
581 | "lodash.flatten": "^4.2.0",
582 | "lodash.foreach": "^4.3.0",
583 | "lodash.map": "^4.4.0",
584 | "lodash.merge": "^4.4.0",
585 | "lodash.pick": "^4.2.1",
586 | "lodash.reduce": "^4.4.0",
587 | "lodash.reject": "^4.4.0",
588 | "lodash.some": "^4.4.0"
589 | }
590 | },
591 | "cipher-base": {
592 | "version": "1.0.4",
593 | "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz",
594 | "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==",
595 | "dev": true,
596 | "requires": {
597 | "inherits": "^2.0.1",
598 | "safe-buffer": "^5.0.1"
599 | }
600 | },
601 | "clean-css": {
602 | "version": "4.2.1",
603 | "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz",
604 | "integrity": "sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==",
605 | "dev": true,
606 | "requires": {
607 | "source-map": "~0.6.0"
608 | },
609 | "dependencies": {
610 | "source-map": {
611 | "version": "0.6.1",
612 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
613 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
614 | "dev": true
615 | }
616 | }
617 | },
618 | "clean-css-cli": {
619 | "version": "4.3.0",
620 | "resolved": "https://registry.npmjs.org/clean-css-cli/-/clean-css-cli-4.3.0.tgz",
621 | "integrity": "sha512-8GHZfr+mG3zB/Lgqrr27qHBFsPSn0fyEI3f2rIZpxPxUbn2J6A8xyyeBRVTW8duDuXigN0s80vsXiXJOEFIO5Q==",
622 | "dev": true,
623 | "requires": {
624 | "clean-css": "^4.2.1",
625 | "commander": "2.x",
626 | "glob": "7.x"
627 | },
628 | "dependencies": {
629 | "commander": {
630 | "version": "2.20.3",
631 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
632 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
633 | "dev": true
634 | }
635 | }
636 | },
637 | "clean-stack": {
638 | "version": "2.2.0",
639 | "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
640 | "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==",
641 | "dev": true
642 | },
643 | "cli-cursor": {
644 | "version": "3.1.0",
645 | "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
646 | "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
647 | "dev": true,
648 | "requires": {
649 | "restore-cursor": "^3.1.0"
650 | }
651 | },
652 | "cli-spinner": {
653 | "version": "0.2.10",
654 | "resolved": "https://registry.npmjs.org/cli-spinner/-/cli-spinner-0.2.10.tgz",
655 | "integrity": "sha512-U0sSQ+JJvSLi1pAYuJykwiA8Dsr15uHEy85iCJ6A+0DjVxivr3d+N2Wjvodeg89uP5K6TswFkKBfAD7B3YSn/Q==",
656 | "dev": true
657 | },
658 | "cli-width": {
659 | "version": "2.2.0",
660 | "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz",
661 | "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=",
662 | "dev": true
663 | },
664 | "clone-response": {
665 | "version": "1.0.2",
666 | "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz",
667 | "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=",
668 | "dev": true,
669 | "requires": {
670 | "mimic-response": "^1.0.0"
671 | }
672 | },
673 | "color-convert": {
674 | "version": "1.9.3",
675 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
676 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
677 | "dev": true,
678 | "requires": {
679 | "color-name": "1.1.3"
680 | }
681 | },
682 | "color-name": {
683 | "version": "1.1.3",
684 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
685 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
686 | "dev": true
687 | },
688 | "combine-source-map": {
689 | "version": "0.8.0",
690 | "resolved": "https://registry.npmjs.org/combine-source-map/-/combine-source-map-0.8.0.tgz",
691 | "integrity": "sha1-pY0N8ELBhvz4IqjoAV9UUNLXmos=",
692 | "dev": true,
693 | "requires": {
694 | "convert-source-map": "~1.1.0",
695 | "inline-source-map": "~0.6.0",
696 | "lodash.memoize": "~3.0.3",
697 | "source-map": "~0.5.3"
698 | }
699 | },
700 | "combined-stream": {
701 | "version": "1.0.8",
702 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
703 | "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
704 | "dev": true,
705 | "requires": {
706 | "delayed-stream": "~1.0.0"
707 | }
708 | },
709 | "commander": {
710 | "version": "3.0.2",
711 | "resolved": "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz",
712 | "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==",
713 | "dev": true
714 | },
715 | "concat-map": {
716 | "version": "0.0.1",
717 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
718 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
719 | "dev": true
720 | },
721 | "concat-stream": {
722 | "version": "1.6.2",
723 | "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
724 | "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
725 | "dev": true,
726 | "requires": {
727 | "buffer-from": "^1.0.0",
728 | "inherits": "^2.0.3",
729 | "readable-stream": "^2.2.2",
730 | "typedarray": "^0.0.6"
731 | }
732 | },
733 | "console-browserify": {
734 | "version": "1.2.0",
735 | "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz",
736 | "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==",
737 | "dev": true
738 | },
739 | "constants-browserify": {
740 | "version": "1.0.0",
741 | "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz",
742 | "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=",
743 | "dev": true
744 | },
745 | "convert-source-map": {
746 | "version": "1.1.3",
747 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.1.3.tgz",
748 | "integrity": "sha1-SCnId+n+SbMWHzvzZziI4gRpmGA=",
749 | "dev": true
750 | },
751 | "core-util-is": {
752 | "version": "1.0.2",
753 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
754 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
755 | "dev": true
756 | },
757 | "create-ecdh": {
758 | "version": "4.0.3",
759 | "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz",
760 | "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==",
761 | "dev": true,
762 | "requires": {
763 | "bn.js": "^4.1.0",
764 | "elliptic": "^6.0.0"
765 | }
766 | },
767 | "create-hash": {
768 | "version": "1.2.0",
769 | "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
770 | "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
771 | "dev": true,
772 | "requires": {
773 | "cipher-base": "^1.0.1",
774 | "inherits": "^2.0.1",
775 | "md5.js": "^1.3.4",
776 | "ripemd160": "^2.0.1",
777 | "sha.js": "^2.4.0"
778 | }
779 | },
780 | "create-hmac": {
781 | "version": "1.1.7",
782 | "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz",
783 | "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
784 | "dev": true,
785 | "requires": {
786 | "cipher-base": "^1.0.3",
787 | "create-hash": "^1.1.0",
788 | "inherits": "^2.0.1",
789 | "ripemd160": "^2.0.0",
790 | "safe-buffer": "^5.0.1",
791 | "sha.js": "^2.4.8"
792 | }
793 | },
794 | "cross-spawn": {
795 | "version": "6.0.5",
796 | "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
797 | "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
798 | "dev": true,
799 | "requires": {
800 | "nice-try": "^1.0.4",
801 | "path-key": "^2.0.1",
802 | "semver": "^5.5.0",
803 | "shebang-command": "^1.2.0",
804 | "which": "^1.2.9"
805 | }
806 | },
807 | "crypto-browserify": {
808 | "version": "3.12.0",
809 | "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
810 | "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==",
811 | "dev": true,
812 | "requires": {
813 | "browserify-cipher": "^1.0.0",
814 | "browserify-sign": "^4.0.0",
815 | "create-ecdh": "^4.0.0",
816 | "create-hash": "^1.1.0",
817 | "create-hmac": "^1.1.0",
818 | "diffie-hellman": "^5.0.0",
819 | "inherits": "^2.0.1",
820 | "pbkdf2": "^3.0.3",
821 | "public-encrypt": "^4.0.0",
822 | "randombytes": "^2.0.0",
823 | "randomfill": "^1.0.3"
824 | }
825 | },
826 | "css-select": {
827 | "version": "1.2.0",
828 | "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz",
829 | "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=",
830 | "dev": true,
831 | "requires": {
832 | "boolbase": "~1.0.0",
833 | "css-what": "2.1",
834 | "domutils": "1.5.1",
835 | "nth-check": "~1.0.1"
836 | }
837 | },
838 | "css-what": {
839 | "version": "2.1.3",
840 | "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz",
841 | "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==",
842 | "dev": true
843 | },
844 | "cwd": {
845 | "version": "0.10.0",
846 | "resolved": "https://registry.npmjs.org/cwd/-/cwd-0.10.0.tgz",
847 | "integrity": "sha1-FyQAaUBXwioTsM8WFix+S3p/5Wc=",
848 | "dev": true,
849 | "requires": {
850 | "find-pkg": "^0.1.2",
851 | "fs-exists-sync": "^0.1.0"
852 | }
853 | },
854 | "dash-ast": {
855 | "version": "1.0.0",
856 | "resolved": "https://registry.npmjs.org/dash-ast/-/dash-ast-1.0.0.tgz",
857 | "integrity": "sha512-Vy4dx7gquTeMcQR/hDkYLGUnwVil6vk4FOOct+djUnHOUWt+zJPJAaRIXaAFkPXtJjvlY7o3rfRu0/3hpnwoUA==",
858 | "dev": true
859 | },
860 | "dashdash": {
861 | "version": "1.14.1",
862 | "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
863 | "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
864 | "dev": true,
865 | "requires": {
866 | "assert-plus": "^1.0.0"
867 | }
868 | },
869 | "datauri": {
870 | "version": "2.0.0",
871 | "resolved": "https://registry.npmjs.org/datauri/-/datauri-2.0.0.tgz",
872 | "integrity": "sha512-zS2HSf9pI5XPlNZgIqJg/wCJpecgU/HA6E/uv2EfaWnW1EiTGLfy/EexTIsC9c99yoCOTXlqeeWk4FkCSuO3/g==",
873 | "dev": true,
874 | "requires": {
875 | "image-size": "^0.7.3",
876 | "mimer": "^1.0.0"
877 | }
878 | },
879 | "debug": {
880 | "version": "3.2.6",
881 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
882 | "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
883 | "dev": true,
884 | "requires": {
885 | "ms": "^2.1.1"
886 | }
887 | },
888 | "decompress-response": {
889 | "version": "3.3.0",
890 | "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz",
891 | "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=",
892 | "dev": true,
893 | "requires": {
894 | "mimic-response": "^1.0.0"
895 | }
896 | },
897 | "deep-extend": {
898 | "version": "0.6.0",
899 | "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
900 | "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
901 | "dev": true
902 | },
903 | "defer-to-connect": {
904 | "version": "1.1.0",
905 | "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.0.tgz",
906 | "integrity": "sha512-WE2sZoctWm/v4smfCAdjYbrfS55JiMRdlY9ZubFhsYbteCK9+BvAx4YV7nPjYM6ZnX5BcoVKwfmyx9sIFTgQMQ==",
907 | "dev": true
908 | },
909 | "defined": {
910 | "version": "1.0.0",
911 | "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz",
912 | "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=",
913 | "dev": true
914 | },
915 | "delayed-stream": {
916 | "version": "1.0.0",
917 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
918 | "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
919 | "dev": true
920 | },
921 | "depd": {
922 | "version": "1.1.2",
923 | "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
924 | "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=",
925 | "dev": true
926 | },
927 | "deps-sort": {
928 | "version": "2.0.1",
929 | "resolved": "https://registry.npmjs.org/deps-sort/-/deps-sort-2.0.1.tgz",
930 | "integrity": "sha512-1orqXQr5po+3KI6kQb9A4jnXT1PBwggGl2d7Sq2xsnOeI9GPcE/tGcF9UiSZtZBM7MukY4cAh7MemS6tZYipfw==",
931 | "dev": true,
932 | "requires": {
933 | "JSONStream": "^1.0.3",
934 | "shasum-object": "^1.0.0",
935 | "subarg": "^1.0.0",
936 | "through2": "^2.0.0"
937 | }
938 | },
939 | "des.js": {
940 | "version": "1.0.0",
941 | "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz",
942 | "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=",
943 | "dev": true,
944 | "requires": {
945 | "inherits": "^2.0.1",
946 | "minimalistic-assert": "^1.0.0"
947 | }
948 | },
949 | "detective": {
950 | "version": "5.2.0",
951 | "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.0.tgz",
952 | "integrity": "sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg==",
953 | "dev": true,
954 | "requires": {
955 | "acorn-node": "^1.6.1",
956 | "defined": "^1.0.0",
957 | "minimist": "^1.1.1"
958 | },
959 | "dependencies": {
960 | "minimist": {
961 | "version": "1.2.0",
962 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
963 | "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
964 | "dev": true
965 | }
966 | }
967 | },
968 | "diffie-hellman": {
969 | "version": "5.0.3",
970 | "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
971 | "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==",
972 | "dev": true,
973 | "requires": {
974 | "bn.js": "^4.1.0",
975 | "miller-rabin": "^4.0.0",
976 | "randombytes": "^2.0.0"
977 | }
978 | },
979 | "dns-packet": {
980 | "version": "5.2.1",
981 | "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.2.1.tgz",
982 | "integrity": "sha512-JHj2yJeKOqlxzeuYpN1d56GfhzivAxavNwHj9co3qptECel27B1rLY5PifJAvubsInX5pGLDjAHuCfCUc2Zv/w==",
983 | "dev": true,
984 | "requires": {
985 | "ip": "^1.1.5"
986 | }
987 | },
988 | "dns-socket": {
989 | "version": "4.2.0",
990 | "resolved": "https://registry.npmjs.org/dns-socket/-/dns-socket-4.2.0.tgz",
991 | "integrity": "sha512-4XuD3z28jht3jvHbiom6fAipgG5LkjYeDLrX5OH8cbl0AtzTyUUAxGckcW8T7z0pLfBBV5qOiuC4wUEohk6FrQ==",
992 | "dev": true,
993 | "requires": {
994 | "dns-packet": "^5.1.2"
995 | }
996 | },
997 | "dom-serializer": {
998 | "version": "0.1.1",
999 | "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz",
1000 | "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==",
1001 | "dev": true,
1002 | "requires": {
1003 | "domelementtype": "^1.3.0",
1004 | "entities": "^1.1.1"
1005 | }
1006 | },
1007 | "domain-browser": {
1008 | "version": "1.2.0",
1009 | "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz",
1010 | "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==",
1011 | "dev": true
1012 | },
1013 | "domelementtype": {
1014 | "version": "1.3.1",
1015 | "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz",
1016 | "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==",
1017 | "dev": true
1018 | },
1019 | "domhandler": {
1020 | "version": "2.4.2",
1021 | "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz",
1022 | "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==",
1023 | "dev": true,
1024 | "requires": {
1025 | "domelementtype": "1"
1026 | }
1027 | },
1028 | "domutils": {
1029 | "version": "1.5.1",
1030 | "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz",
1031 | "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=",
1032 | "dev": true,
1033 | "requires": {
1034 | "dom-serializer": "0",
1035 | "domelementtype": "1"
1036 | }
1037 | },
1038 | "dotf": {
1039 | "version": "1.2.0",
1040 | "resolved": "https://registry.npmjs.org/dotf/-/dotf-1.2.0.tgz",
1041 | "integrity": "sha512-InO+tJ/NBPlxrCiwQpTt7eOxgA3B8IoZboYGmt94MaWT5mmTfr7mHK1RT7OFNvCJx7UFoJ3g0/rq0c+QQWk+8w==",
1042 | "dev": true,
1043 | "requires": {
1044 | "jsonfile": "^3.0.1",
1045 | "resolve-file": "^0.3.0",
1046 | "resolve-path": "^1.3.3"
1047 | }
1048 | },
1049 | "duplexer2": {
1050 | "version": "0.1.4",
1051 | "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz",
1052 | "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=",
1053 | "dev": true,
1054 | "requires": {
1055 | "readable-stream": "^2.0.2"
1056 | }
1057 | },
1058 | "duplexer3": {
1059 | "version": "0.1.4",
1060 | "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz",
1061 | "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=",
1062 | "dev": true
1063 | },
1064 | "ecc-jsbn": {
1065 | "version": "0.1.2",
1066 | "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
1067 | "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
1068 | "dev": true,
1069 | "requires": {
1070 | "jsbn": "~0.1.0",
1071 | "safer-buffer": "^2.1.0"
1072 | }
1073 | },
1074 | "ecdsa-sig-formatter": {
1075 | "version": "1.0.11",
1076 | "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz",
1077 | "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==",
1078 | "dev": true,
1079 | "requires": {
1080 | "safe-buffer": "^5.0.1"
1081 | }
1082 | },
1083 | "ellipsize": {
1084 | "version": "0.1.0",
1085 | "resolved": "https://registry.npmjs.org/ellipsize/-/ellipsize-0.1.0.tgz",
1086 | "integrity": "sha1-nUNoLUS5GtFuvYQmisEDFwplU/g=",
1087 | "dev": true
1088 | },
1089 | "elliptic": {
1090 | "version": "6.5.1",
1091 | "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.1.tgz",
1092 | "integrity": "sha512-xvJINNLbTeWQjrl6X+7eQCrIy/YPv5XCpKW6kB5mKvtnGILoLDcySuwomfdzt0BMdLNVnuRNTuzKNHj0bva1Cg==",
1093 | "dev": true,
1094 | "requires": {
1095 | "bn.js": "^4.4.0",
1096 | "brorand": "^1.0.1",
1097 | "hash.js": "^1.0.0",
1098 | "hmac-drbg": "^1.0.0",
1099 | "inherits": "^2.0.1",
1100 | "minimalistic-assert": "^1.0.0",
1101 | "minimalistic-crypto-utils": "^1.0.0"
1102 | }
1103 | },
1104 | "emoji-regex": {
1105 | "version": "8.0.0",
1106 | "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
1107 | "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
1108 | "dev": true
1109 | },
1110 | "end-of-stream": {
1111 | "version": "1.4.4",
1112 | "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
1113 | "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
1114 | "dev": true,
1115 | "requires": {
1116 | "once": "^1.4.0"
1117 | }
1118 | },
1119 | "entities": {
1120 | "version": "1.1.2",
1121 | "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz",
1122 | "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==",
1123 | "dev": true
1124 | },
1125 | "es6-promise": {
1126 | "version": "4.2.8",
1127 | "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz",
1128 | "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==",
1129 | "dev": true
1130 | },
1131 | "es6-promisify": {
1132 | "version": "5.0.0",
1133 | "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz",
1134 | "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=",
1135 | "dev": true,
1136 | "requires": {
1137 | "es6-promise": "^4.0.3"
1138 | }
1139 | },
1140 | "escape-string-regexp": {
1141 | "version": "1.0.5",
1142 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
1143 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
1144 | "dev": true
1145 | },
1146 | "event-target-shim": {
1147 | "version": "5.0.1",
1148 | "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz",
1149 | "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==",
1150 | "dev": true
1151 | },
1152 | "events": {
1153 | "version": "2.1.0",
1154 | "resolved": "https://registry.npmjs.org/events/-/events-2.1.0.tgz",
1155 | "integrity": "sha512-3Zmiobend8P9DjmKAty0Era4jV8oJ0yGYe2nJJAxgymF9+N8F2m0hhZiMoWtcfepExzNKZumFU3ksdQbInGWCg==",
1156 | "dev": true
1157 | },
1158 | "evp_bytestokey": {
1159 | "version": "1.0.3",
1160 | "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz",
1161 | "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
1162 | "dev": true,
1163 | "requires": {
1164 | "md5.js": "^1.3.4",
1165 | "safe-buffer": "^5.1.1"
1166 | }
1167 | },
1168 | "exec-sh": {
1169 | "version": "0.2.2",
1170 | "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.2.2.tgz",
1171 | "integrity": "sha512-FIUCJz1RbuS0FKTdaAafAByGS0CPvU3R0MeHxgtl+djzCc//F8HakL8GzmVNZanasTbTAY/3DRFA0KpVqj/eAw==",
1172 | "dev": true,
1173 | "requires": {
1174 | "merge": "^1.2.0"
1175 | }
1176 | },
1177 | "expand-tilde": {
1178 | "version": "2.0.2",
1179 | "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz",
1180 | "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=",
1181 | "dev": true,
1182 | "requires": {
1183 | "homedir-polyfill": "^1.0.1"
1184 | }
1185 | },
1186 | "extend": {
1187 | "version": "3.0.2",
1188 | "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
1189 | "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
1190 | "dev": true
1191 | },
1192 | "extend-shallow": {
1193 | "version": "2.0.1",
1194 | "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
1195 | "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
1196 | "dev": true,
1197 | "requires": {
1198 | "is-extendable": "^0.1.0"
1199 | }
1200 | },
1201 | "external-editor": {
1202 | "version": "3.1.0",
1203 | "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz",
1204 | "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==",
1205 | "dev": true,
1206 | "requires": {
1207 | "chardet": "^0.7.0",
1208 | "iconv-lite": "^0.4.24",
1209 | "tmp": "^0.0.33"
1210 | }
1211 | },
1212 | "extsprintf": {
1213 | "version": "1.3.0",
1214 | "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
1215 | "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
1216 | "dev": true
1217 | },
1218 | "fast-deep-equal": {
1219 | "version": "2.0.1",
1220 | "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
1221 | "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=",
1222 | "dev": true
1223 | },
1224 | "fast-json-stable-stringify": {
1225 | "version": "2.0.0",
1226 | "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
1227 | "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
1228 | "dev": true
1229 | },
1230 | "fast-safe-stringify": {
1231 | "version": "2.0.7",
1232 | "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz",
1233 | "integrity": "sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA==",
1234 | "dev": true
1235 | },
1236 | "fast-text-encoding": {
1237 | "version": "1.0.0",
1238 | "resolved": "https://registry.npmjs.org/fast-text-encoding/-/fast-text-encoding-1.0.0.tgz",
1239 | "integrity": "sha512-R9bHCvweUxxwkDwhjav5vxpFvdPGlVngtqmx4pIZfSUhM/Q4NiIUHB456BAf+Q1Nwu3HEZYONtu+Rya+af4jiQ==",
1240 | "dev": true
1241 | },
1242 | "figures": {
1243 | "version": "3.1.0",
1244 | "resolved": "https://registry.npmjs.org/figures/-/figures-3.1.0.tgz",
1245 | "integrity": "sha512-ravh8VRXqHuMvZt/d8GblBeqDMkdJMBdv/2KntFH+ra5MXkO7nxNKpzQ3n6QD/2da1kH0aWmNISdvhM7gl2gVg==",
1246 | "dev": true,
1247 | "requires": {
1248 | "escape-string-regexp": "^1.0.5"
1249 | }
1250 | },
1251 | "find-file-up": {
1252 | "version": "0.1.3",
1253 | "resolved": "https://registry.npmjs.org/find-file-up/-/find-file-up-0.1.3.tgz",
1254 | "integrity": "sha1-z2gJG8+fMApA2kEbN9pczlovvqA=",
1255 | "dev": true,
1256 | "requires": {
1257 | "fs-exists-sync": "^0.1.0",
1258 | "resolve-dir": "^0.1.0"
1259 | }
1260 | },
1261 | "find-pkg": {
1262 | "version": "0.1.2",
1263 | "resolved": "https://registry.npmjs.org/find-pkg/-/find-pkg-0.1.2.tgz",
1264 | "integrity": "sha1-G9wiwG42NlUy4qJIBGhUuXiNpVc=",
1265 | "dev": true,
1266 | "requires": {
1267 | "find-file-up": "^0.1.2"
1268 | }
1269 | },
1270 | "find-up": {
1271 | "version": "4.1.0",
1272 | "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
1273 | "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
1274 | "dev": true,
1275 | "requires": {
1276 | "locate-path": "^5.0.0",
1277 | "path-exists": "^4.0.0"
1278 | }
1279 | },
1280 | "forever-agent": {
1281 | "version": "0.6.1",
1282 | "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
1283 | "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
1284 | "dev": true
1285 | },
1286 | "form-data": {
1287 | "version": "2.3.3",
1288 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
1289 | "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
1290 | "dev": true,
1291 | "requires": {
1292 | "asynckit": "^0.4.0",
1293 | "combined-stream": "^1.0.6",
1294 | "mime-types": "^2.1.12"
1295 | }
1296 | },
1297 | "fs-exists-sync": {
1298 | "version": "0.1.0",
1299 | "resolved": "https://registry.npmjs.org/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz",
1300 | "integrity": "sha1-mC1ok6+RjnLQjeyehnP/K1qNat0=",
1301 | "dev": true
1302 | },
1303 | "fs-extra": {
1304 | "version": "8.1.0",
1305 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
1306 | "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
1307 | "dev": true,
1308 | "requires": {
1309 | "graceful-fs": "^4.2.0",
1310 | "jsonfile": "^4.0.0",
1311 | "universalify": "^0.1.0"
1312 | },
1313 | "dependencies": {
1314 | "jsonfile": {
1315 | "version": "4.0.0",
1316 | "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
1317 | "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
1318 | "dev": true,
1319 | "requires": {
1320 | "graceful-fs": "^4.1.6"
1321 | }
1322 | }
1323 | }
1324 | },
1325 | "fs.realpath": {
1326 | "version": "1.0.0",
1327 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
1328 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
1329 | "dev": true
1330 | },
1331 | "function-bind": {
1332 | "version": "1.1.1",
1333 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
1334 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
1335 | "dev": true
1336 | },
1337 | "fuzzy": {
1338 | "version": "0.1.3",
1339 | "resolved": "https://registry.npmjs.org/fuzzy/-/fuzzy-0.1.3.tgz",
1340 | "integrity": "sha1-THbsL/CsGjap3M+aAN+GIweNTtg=",
1341 | "dev": true
1342 | },
1343 | "gaxios": {
1344 | "version": "2.1.0",
1345 | "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-2.1.0.tgz",
1346 | "integrity": "sha512-Gtpb5sdQmb82sgVkT2GnS2n+Kx4dlFwbeMYcDlD395aEvsLCSQXJJcHt7oJ2LrGxDEAeiOkK79Zv2A8Pzt6CFg==",
1347 | "dev": true,
1348 | "requires": {
1349 | "abort-controller": "^3.0.0",
1350 | "extend": "^3.0.2",
1351 | "https-proxy-agent": "^3.0.0",
1352 | "is-stream": "^2.0.0",
1353 | "node-fetch": "^2.3.0"
1354 | }
1355 | },
1356 | "gcp-metadata": {
1357 | "version": "3.2.1",
1358 | "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-3.2.1.tgz",
1359 | "integrity": "sha512-JjDedBWnbXVXWwTpjBdpb9RpVLiowXG4/50rra4hPH8REXAi2si6Xbb48B2SwkQBLz9Wu6+o32GDTvVy2kkLoQ==",
1360 | "dev": true,
1361 | "requires": {
1362 | "gaxios": "^2.1.0",
1363 | "json-bigint": "^0.3.0"
1364 | }
1365 | },
1366 | "get-assigned-identifiers": {
1367 | "version": "1.2.0",
1368 | "resolved": "https://registry.npmjs.org/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz",
1369 | "integrity": "sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ==",
1370 | "dev": true
1371 | },
1372 | "get-stream": {
1373 | "version": "4.1.0",
1374 | "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
1375 | "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
1376 | "dev": true,
1377 | "requires": {
1378 | "pump": "^3.0.0"
1379 | }
1380 | },
1381 | "getpass": {
1382 | "version": "0.1.7",
1383 | "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
1384 | "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
1385 | "dev": true,
1386 | "requires": {
1387 | "assert-plus": "^1.0.0"
1388 | }
1389 | },
1390 | "glob": {
1391 | "version": "7.1.6",
1392 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
1393 | "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
1394 | "dev": true,
1395 | "requires": {
1396 | "fs.realpath": "^1.0.0",
1397 | "inflight": "^1.0.4",
1398 | "inherits": "2",
1399 | "minimatch": "^3.0.4",
1400 | "once": "^1.3.0",
1401 | "path-is-absolute": "^1.0.0"
1402 | }
1403 | },
1404 | "global-modules": {
1405 | "version": "0.2.3",
1406 | "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-0.2.3.tgz",
1407 | "integrity": "sha1-6lo77ULG1s6ZWk+KEmm12uIjgo0=",
1408 | "dev": true,
1409 | "requires": {
1410 | "global-prefix": "^0.1.4",
1411 | "is-windows": "^0.2.0"
1412 | }
1413 | },
1414 | "global-prefix": {
1415 | "version": "0.1.5",
1416 | "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-0.1.5.tgz",
1417 | "integrity": "sha1-jTvGuNo8qBEqFg2NSW/wRiv+948=",
1418 | "dev": true,
1419 | "requires": {
1420 | "homedir-polyfill": "^1.0.0",
1421 | "ini": "^1.3.4",
1422 | "is-windows": "^0.2.0",
1423 | "which": "^1.2.12"
1424 | }
1425 | },
1426 | "google-auth-library": {
1427 | "version": "5.5.1",
1428 | "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-5.5.1.tgz",
1429 | "integrity": "sha512-zCtjQccWS/EHYyFdXRbfeSGM/gW+d7uMAcVnvXRnjBXON5ijo6s0nsObP0ifqileIDSbZjTlLtgo+UoN8IFJcg==",
1430 | "dev": true,
1431 | "requires": {
1432 | "arrify": "^2.0.0",
1433 | "base64-js": "^1.3.0",
1434 | "fast-text-encoding": "^1.0.0",
1435 | "gaxios": "^2.1.0",
1436 | "gcp-metadata": "^3.2.0",
1437 | "gtoken": "^4.1.0",
1438 | "jws": "^3.1.5",
1439 | "lru-cache": "^5.0.0"
1440 | }
1441 | },
1442 | "google-p12-pem": {
1443 | "version": "2.0.2",
1444 | "resolved": "https://registry.npmjs.org/google-p12-pem/-/google-p12-pem-2.0.2.tgz",
1445 | "integrity": "sha512-UfnEARfJKI6pbmC1hfFFm+UAcZxeIwTiEcHfqKe/drMsXD/ilnVjF7zgOGpHXyhuvX6jNJK3S8A0hOQjwtFxEw==",
1446 | "dev": true,
1447 | "requires": {
1448 | "node-forge": "^0.9.0"
1449 | }
1450 | },
1451 | "googleapis": {
1452 | "version": "42.0.0",
1453 | "resolved": "https://registry.npmjs.org/googleapis/-/googleapis-42.0.0.tgz",
1454 | "integrity": "sha512-nQiKPDmzmMusnU8UOibmlC6hsgkm70SjqmLxSlBBb7i0z7/J6UPilSzo9tAMoHA8u3BUw3OXn13+p9YLmBH6Gg==",
1455 | "dev": true,
1456 | "requires": {
1457 | "google-auth-library": "^5.1.0",
1458 | "googleapis-common": "^3.0.0"
1459 | }
1460 | },
1461 | "googleapis-common": {
1462 | "version": "3.1.1",
1463 | "resolved": "https://registry.npmjs.org/googleapis-common/-/googleapis-common-3.1.1.tgz",
1464 | "integrity": "sha512-sXNS9oJifZOk2Pa6SzxoSfv0Mj9y/qIOsVV7D8WHuH//90CXNnpR/nCYVa+KcPMDT9ONq21sbtvjfKATMV1Bug==",
1465 | "dev": true,
1466 | "requires": {
1467 | "extend": "^3.0.2",
1468 | "gaxios": "^2.0.1",
1469 | "google-auth-library": "^5.2.0",
1470 | "qs": "^6.7.0",
1471 | "url-template": "^2.0.8",
1472 | "uuid": "^3.3.2"
1473 | }
1474 | },
1475 | "got": {
1476 | "version": "9.6.0",
1477 | "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz",
1478 | "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==",
1479 | "dev": true,
1480 | "requires": {
1481 | "@sindresorhus/is": "^0.14.0",
1482 | "@szmarczak/http-timer": "^1.1.2",
1483 | "cacheable-request": "^6.0.0",
1484 | "decompress-response": "^3.3.0",
1485 | "duplexer3": "^0.1.4",
1486 | "get-stream": "^4.1.0",
1487 | "lowercase-keys": "^1.0.1",
1488 | "mimic-response": "^1.0.1",
1489 | "p-cancelable": "^1.0.0",
1490 | "to-readable-stream": "^1.0.0",
1491 | "url-parse-lax": "^3.0.0"
1492 | }
1493 | },
1494 | "graceful-fs": {
1495 | "version": "4.2.3",
1496 | "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
1497 | "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==",
1498 | "dev": true
1499 | },
1500 | "gtoken": {
1501 | "version": "4.1.1",
1502 | "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-4.1.1.tgz",
1503 | "integrity": "sha512-2FEmEDGi4NdM6u+mtaLjSDDtHiw5wT+nBsI+yrSeFO6fVqPEytYVF6uiIpRaOaZhRP+ozjYWuwwtMlrjAyTcYA==",
1504 | "dev": true,
1505 | "requires": {
1506 | "gaxios": "^2.1.0",
1507 | "google-p12-pem": "^2.0.0",
1508 | "jws": "^3.1.5",
1509 | "mime": "^2.2.0"
1510 | }
1511 | },
1512 | "har-schema": {
1513 | "version": "2.0.0",
1514 | "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
1515 | "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
1516 | "dev": true
1517 | },
1518 | "har-validator": {
1519 | "version": "5.1.3",
1520 | "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz",
1521 | "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==",
1522 | "dev": true,
1523 | "requires": {
1524 | "ajv": "^6.5.5",
1525 | "har-schema": "^2.0.0"
1526 | }
1527 | },
1528 | "has": {
1529 | "version": "1.0.3",
1530 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
1531 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
1532 | "dev": true,
1533 | "requires": {
1534 | "function-bind": "^1.1.1"
1535 | }
1536 | },
1537 | "has-flag": {
1538 | "version": "3.0.0",
1539 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
1540 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
1541 | "dev": true
1542 | },
1543 | "hash-base": {
1544 | "version": "3.0.4",
1545 | "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz",
1546 | "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=",
1547 | "dev": true,
1548 | "requires": {
1549 | "inherits": "^2.0.1",
1550 | "safe-buffer": "^5.0.1"
1551 | }
1552 | },
1553 | "hash.js": {
1554 | "version": "1.1.7",
1555 | "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz",
1556 | "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==",
1557 | "dev": true,
1558 | "requires": {
1559 | "inherits": "^2.0.3",
1560 | "minimalistic-assert": "^1.0.1"
1561 | }
1562 | },
1563 | "highlight.js": {
1564 | "version": "9.16.2",
1565 | "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-9.16.2.tgz",
1566 | "integrity": "sha512-feMUrVLZvjy0oC7FVJQcSQRqbBq9kwqnYE4+Kj9ZjbHh3g+BisiPgF49NyQbVLNdrL/qqZr3Ca9yOKwgn2i/tw==",
1567 | "dev": true
1568 | },
1569 | "hmac-drbg": {
1570 | "version": "1.0.1",
1571 | "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
1572 | "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=",
1573 | "dev": true,
1574 | "requires": {
1575 | "hash.js": "^1.0.3",
1576 | "minimalistic-assert": "^1.0.0",
1577 | "minimalistic-crypto-utils": "^1.0.1"
1578 | }
1579 | },
1580 | "homedir-polyfill": {
1581 | "version": "1.0.3",
1582 | "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz",
1583 | "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==",
1584 | "dev": true,
1585 | "requires": {
1586 | "parse-passwd": "^1.0.0"
1587 | }
1588 | },
1589 | "htmlescape": {
1590 | "version": "1.1.1",
1591 | "resolved": "https://registry.npmjs.org/htmlescape/-/htmlescape-1.1.1.tgz",
1592 | "integrity": "sha1-OgPtwiFLyjtmQko+eVk0lQnLA1E=",
1593 | "dev": true
1594 | },
1595 | "htmlparser2": {
1596 | "version": "3.10.1",
1597 | "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz",
1598 | "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==",
1599 | "dev": true,
1600 | "requires": {
1601 | "domelementtype": "^1.3.1",
1602 | "domhandler": "^2.3.0",
1603 | "domutils": "^1.5.1",
1604 | "entities": "^1.1.1",
1605 | "inherits": "^2.0.1",
1606 | "readable-stream": "^3.1.1"
1607 | },
1608 | "dependencies": {
1609 | "readable-stream": {
1610 | "version": "3.4.0",
1611 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz",
1612 | "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==",
1613 | "dev": true,
1614 | "requires": {
1615 | "inherits": "^2.0.3",
1616 | "string_decoder": "^1.1.1",
1617 | "util-deprecate": "^1.0.1"
1618 | }
1619 | }
1620 | }
1621 | },
1622 | "http-cache-semantics": {
1623 | "version": "4.0.3",
1624 | "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.0.3.tgz",
1625 | "integrity": "sha512-TcIMG3qeVLgDr1TEd2XvHaTnMPwYQUQMIBLy+5pLSDKYFc7UIqj39w8EGzZkaxoLv/l2K8HaI0t5AVA+YYgUew==",
1626 | "dev": true
1627 | },
1628 | "http-errors": {
1629 | "version": "1.6.3",
1630 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz",
1631 | "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=",
1632 | "dev": true,
1633 | "requires": {
1634 | "depd": "~1.1.2",
1635 | "inherits": "2.0.3",
1636 | "setprototypeof": "1.1.0",
1637 | "statuses": ">= 1.4.0 < 2"
1638 | }
1639 | },
1640 | "http-signature": {
1641 | "version": "1.2.0",
1642 | "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
1643 | "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
1644 | "dev": true,
1645 | "requires": {
1646 | "assert-plus": "^1.0.0",
1647 | "jsprim": "^1.2.2",
1648 | "sshpk": "^1.7.0"
1649 | }
1650 | },
1651 | "https-browserify": {
1652 | "version": "1.0.0",
1653 | "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz",
1654 | "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=",
1655 | "dev": true
1656 | },
1657 | "https-proxy-agent": {
1658 | "version": "3.0.1",
1659 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-3.0.1.tgz",
1660 | "integrity": "sha512-+ML2Rbh6DAuee7d07tYGEKOEi2voWPUGan+ExdPbPW6Z3svq+JCqr0v8WmKPOkz1vOVykPCBSuobe7G8GJUtVg==",
1661 | "dev": true,
1662 | "requires": {
1663 | "agent-base": "^4.3.0",
1664 | "debug": "^3.1.0"
1665 | }
1666 | },
1667 | "iconv-lite": {
1668 | "version": "0.4.24",
1669 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
1670 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
1671 | "dev": true,
1672 | "requires": {
1673 | "safer-buffer": ">= 2.1.2 < 3"
1674 | }
1675 | },
1676 | "ieee754": {
1677 | "version": "1.1.13",
1678 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz",
1679 | "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==",
1680 | "dev": true
1681 | },
1682 | "image-size": {
1683 | "version": "0.7.5",
1684 | "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.7.5.tgz",
1685 | "integrity": "sha512-Hiyv+mXHfFEP7LzUL/llg9RwFxxY+o9N3JVLIeG5E7iFIFAalxvRU9UZthBdYDEVnzHMgjnKJPPpay5BWf1g9g==",
1686 | "dev": true
1687 | },
1688 | "indent-string": {
1689 | "version": "4.0.0",
1690 | "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
1691 | "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
1692 | "dev": true
1693 | },
1694 | "inflight": {
1695 | "version": "1.0.6",
1696 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
1697 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
1698 | "dev": true,
1699 | "requires": {
1700 | "once": "^1.3.0",
1701 | "wrappy": "1"
1702 | }
1703 | },
1704 | "inherits": {
1705 | "version": "2.0.3",
1706 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
1707 | "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
1708 | "dev": true
1709 | },
1710 | "ini": {
1711 | "version": "1.3.5",
1712 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
1713 | "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
1714 | "dev": true
1715 | },
1716 | "inline-source-map": {
1717 | "version": "0.6.2",
1718 | "resolved": "https://registry.npmjs.org/inline-source-map/-/inline-source-map-0.6.2.tgz",
1719 | "integrity": "sha1-+Tk0ccGKedFyT4Y/o4tYY3Ct4qU=",
1720 | "dev": true,
1721 | "requires": {
1722 | "source-map": "~0.5.3"
1723 | }
1724 | },
1725 | "inquirer": {
1726 | "version": "7.0.0",
1727 | "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.0.tgz",
1728 | "integrity": "sha512-rSdC7zelHdRQFkWnhsMu2+2SO41mpv2oF2zy4tMhmiLWkcKbOAs87fWAJhVXttKVwhdZvymvnuM95EyEXg2/tQ==",
1729 | "dev": true,
1730 | "requires": {
1731 | "ansi-escapes": "^4.2.1",
1732 | "chalk": "^2.4.2",
1733 | "cli-cursor": "^3.1.0",
1734 | "cli-width": "^2.0.0",
1735 | "external-editor": "^3.0.3",
1736 | "figures": "^3.0.0",
1737 | "lodash": "^4.17.15",
1738 | "mute-stream": "0.0.8",
1739 | "run-async": "^2.2.0",
1740 | "rxjs": "^6.4.0",
1741 | "string-width": "^4.1.0",
1742 | "strip-ansi": "^5.1.0",
1743 | "through": "^2.3.6"
1744 | }
1745 | },
1746 | "inquirer-autocomplete-prompt": {
1747 | "version": "1.0.1",
1748 | "resolved": "https://registry.npmjs.org/inquirer-autocomplete-prompt/-/inquirer-autocomplete-prompt-1.0.1.tgz",
1749 | "integrity": "sha512-Y4V6ifAu9LNrNjcEtYq8YUKhrgmmufUn5fsDQqeWgHY8rEO6ZAQkNUiZtBm2kw2uUQlC9HdgrRCHDhTPPguH5A==",
1750 | "dev": true,
1751 | "requires": {
1752 | "ansi-escapes": "^3.0.0",
1753 | "chalk": "^2.0.0",
1754 | "figures": "^2.0.0",
1755 | "run-async": "^2.3.0"
1756 | },
1757 | "dependencies": {
1758 | "ansi-escapes": {
1759 | "version": "3.2.0",
1760 | "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz",
1761 | "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==",
1762 | "dev": true
1763 | },
1764 | "figures": {
1765 | "version": "2.0.0",
1766 | "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz",
1767 | "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=",
1768 | "dev": true,
1769 | "requires": {
1770 | "escape-string-regexp": "^1.0.5"
1771 | }
1772 | }
1773 | }
1774 | },
1775 | "insert-module-globals": {
1776 | "version": "7.2.0",
1777 | "resolved": "https://registry.npmjs.org/insert-module-globals/-/insert-module-globals-7.2.0.tgz",
1778 | "integrity": "sha512-VE6NlW+WGn2/AeOMd496AHFYmE7eLKkUY6Ty31k4og5vmA3Fjuwe9v6ifH6Xx/Hz27QvdoMoviw1/pqWRB09Sw==",
1779 | "dev": true,
1780 | "requires": {
1781 | "JSONStream": "^1.0.3",
1782 | "acorn-node": "^1.5.2",
1783 | "combine-source-map": "^0.8.0",
1784 | "concat-stream": "^1.6.1",
1785 | "is-buffer": "^1.1.0",
1786 | "path-is-absolute": "^1.0.1",
1787 | "process": "~0.11.0",
1788 | "through2": "^2.0.0",
1789 | "undeclared-identifiers": "^1.1.2",
1790 | "xtend": "^4.0.0"
1791 | }
1792 | },
1793 | "ip": {
1794 | "version": "1.1.5",
1795 | "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz",
1796 | "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=",
1797 | "dev": true
1798 | },
1799 | "ip-regex": {
1800 | "version": "4.1.0",
1801 | "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-4.1.0.tgz",
1802 | "integrity": "sha512-pKnZpbgCTfH/1NLIlOduP/V+WRXzC2MOz3Qo8xmxk8C5GudJLgK5QyLVXOSWy3ParAH7Eemurl3xjv/WXYFvMA==",
1803 | "dev": true
1804 | },
1805 | "is-buffer": {
1806 | "version": "1.1.6",
1807 | "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
1808 | "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
1809 | "dev": true
1810 | },
1811 | "is-extendable": {
1812 | "version": "0.1.1",
1813 | "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
1814 | "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
1815 | "dev": true
1816 | },
1817 | "is-fullwidth-code-point": {
1818 | "version": "3.0.0",
1819 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
1820 | "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
1821 | "dev": true
1822 | },
1823 | "is-ip": {
1824 | "version": "3.1.0",
1825 | "resolved": "https://registry.npmjs.org/is-ip/-/is-ip-3.1.0.tgz",
1826 | "integrity": "sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q==",
1827 | "dev": true,
1828 | "requires": {
1829 | "ip-regex": "^4.0.0"
1830 | }
1831 | },
1832 | "is-online": {
1833 | "version": "8.2.0",
1834 | "resolved": "https://registry.npmjs.org/is-online/-/is-online-8.2.0.tgz",
1835 | "integrity": "sha512-dvTrzRlziHPdl+uazMK+9ypLlwOA3szkaGfAWqI/MKuUutgNxOFBl2gfu2BTkV8C7A2YcYHNlVcsxHzZik3wUQ==",
1836 | "dev": true,
1837 | "requires": {
1838 | "got": "^9.6.0",
1839 | "p-any": "^2.0.0",
1840 | "p-timeout": "^3.0.0",
1841 | "public-ip": "^3.0.0"
1842 | }
1843 | },
1844 | "is-promise": {
1845 | "version": "2.1.0",
1846 | "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz",
1847 | "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=",
1848 | "dev": true
1849 | },
1850 | "is-stream": {
1851 | "version": "2.0.0",
1852 | "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz",
1853 | "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==",
1854 | "dev": true
1855 | },
1856 | "is-typedarray": {
1857 | "version": "1.0.0",
1858 | "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
1859 | "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
1860 | "dev": true
1861 | },
1862 | "is-windows": {
1863 | "version": "0.2.0",
1864 | "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz",
1865 | "integrity": "sha1-3hqm1j6indJIc3tp8f+LgALSEIw=",
1866 | "dev": true
1867 | },
1868 | "is-wsl": {
1869 | "version": "1.1.0",
1870 | "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
1871 | "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=",
1872 | "dev": true
1873 | },
1874 | "isarray": {
1875 | "version": "1.0.0",
1876 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
1877 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
1878 | "dev": true
1879 | },
1880 | "isexe": {
1881 | "version": "2.0.0",
1882 | "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
1883 | "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
1884 | "dev": true
1885 | },
1886 | "isstream": {
1887 | "version": "0.1.2",
1888 | "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
1889 | "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
1890 | "dev": true
1891 | },
1892 | "jquery": {
1893 | "version": "3.4.1",
1894 | "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.4.1.tgz",
1895 | "integrity": "sha512-36+AdBzCL+y6qjw5Tx7HgzeGCzC81MDDgaUP8ld2zhx58HdqXGoBd+tHdrBMiyjGQs0Hxs/MLZTu/eHNJJuWPw==",
1896 | "dev": true
1897 | },
1898 | "jsbn": {
1899 | "version": "0.1.1",
1900 | "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
1901 | "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
1902 | "dev": true
1903 | },
1904 | "json-bigint": {
1905 | "version": "0.3.0",
1906 | "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-0.3.0.tgz",
1907 | "integrity": "sha1-DM2RLEuCcNBfBW+9E4FLU9OCWx4=",
1908 | "dev": true,
1909 | "requires": {
1910 | "bignumber.js": "^7.0.0"
1911 | }
1912 | },
1913 | "json-buffer": {
1914 | "version": "3.0.0",
1915 | "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz",
1916 | "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=",
1917 | "dev": true
1918 | },
1919 | "json-schema": {
1920 | "version": "0.2.3",
1921 | "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
1922 | "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
1923 | "dev": true
1924 | },
1925 | "json-schema-traverse": {
1926 | "version": "0.4.1",
1927 | "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
1928 | "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
1929 | "dev": true
1930 | },
1931 | "json-stable-stringify": {
1932 | "version": "0.0.1",
1933 | "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-0.0.1.tgz",
1934 | "integrity": "sha1-YRwj6BTbN1Un34URk9tZ3Sryf0U=",
1935 | "dev": true,
1936 | "requires": {
1937 | "jsonify": "~0.0.0"
1938 | }
1939 | },
1940 | "json-stringify-safe": {
1941 | "version": "5.0.1",
1942 | "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
1943 | "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
1944 | "dev": true
1945 | },
1946 | "jsonfile": {
1947 | "version": "3.0.1",
1948 | "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz",
1949 | "integrity": "sha1-pezG9l9T9mLEQVx2daAzHQmS7GY=",
1950 | "dev": true,
1951 | "requires": {
1952 | "graceful-fs": "^4.1.6"
1953 | }
1954 | },
1955 | "jsonify": {
1956 | "version": "0.0.0",
1957 | "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
1958 | "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=",
1959 | "dev": true
1960 | },
1961 | "jsonparse": {
1962 | "version": "1.3.1",
1963 | "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz",
1964 | "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=",
1965 | "dev": true
1966 | },
1967 | "jsprim": {
1968 | "version": "1.4.1",
1969 | "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
1970 | "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
1971 | "dev": true,
1972 | "requires": {
1973 | "assert-plus": "1.0.0",
1974 | "extsprintf": "1.3.0",
1975 | "json-schema": "0.2.3",
1976 | "verror": "1.10.0"
1977 | }
1978 | },
1979 | "juice": {
1980 | "version": "5.2.0",
1981 | "resolved": "https://registry.npmjs.org/juice/-/juice-5.2.0.tgz",
1982 | "integrity": "sha512-0l6GZmT3efexyaaay3SchKT5kG311N59TEFP5lfvEy0nz9SNqjx311plJ3b4jze7arsmDsiHQLh/xnAuk0HFTQ==",
1983 | "dev": true,
1984 | "requires": {
1985 | "cheerio": "^0.22.0",
1986 | "commander": "^2.15.1",
1987 | "cross-spawn": "^6.0.5",
1988 | "deep-extend": "^0.6.0",
1989 | "mensch": "^0.3.3",
1990 | "slick": "^1.12.2",
1991 | "web-resource-inliner": "^4.3.1"
1992 | },
1993 | "dependencies": {
1994 | "commander": {
1995 | "version": "2.20.3",
1996 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
1997 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
1998 | "dev": true
1999 | }
2000 | }
2001 | },
2002 | "jwa": {
2003 | "version": "1.4.1",
2004 | "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz",
2005 | "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==",
2006 | "dev": true,
2007 | "requires": {
2008 | "buffer-equal-constant-time": "1.0.1",
2009 | "ecdsa-sig-formatter": "1.0.11",
2010 | "safe-buffer": "^5.0.1"
2011 | }
2012 | },
2013 | "jws": {
2014 | "version": "3.2.2",
2015 | "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz",
2016 | "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==",
2017 | "dev": true,
2018 | "requires": {
2019 | "jwa": "^1.4.1",
2020 | "safe-buffer": "^5.0.1"
2021 | }
2022 | },
2023 | "keyv": {
2024 | "version": "3.1.0",
2025 | "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz",
2026 | "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==",
2027 | "dev": true,
2028 | "requires": {
2029 | "json-buffer": "3.0.0"
2030 | }
2031 | },
2032 | "kind-of": {
2033 | "version": "3.2.2",
2034 | "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
2035 | "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
2036 | "dev": true,
2037 | "requires": {
2038 | "is-buffer": "^1.1.5"
2039 | }
2040 | },
2041 | "labeled-stream-splicer": {
2042 | "version": "2.0.2",
2043 | "resolved": "https://registry.npmjs.org/labeled-stream-splicer/-/labeled-stream-splicer-2.0.2.tgz",
2044 | "integrity": "sha512-Ca4LSXFFZUjPScRaqOcFxneA0VpKZr4MMYCljyQr4LIewTLb3Y0IUTIsnBBsVubIeEfxeSZpSjSsRM8APEQaAw==",
2045 | "dev": true,
2046 | "requires": {
2047 | "inherits": "^2.0.1",
2048 | "stream-splicer": "^2.0.0"
2049 | }
2050 | },
2051 | "lazy-cache": {
2052 | "version": "2.0.2",
2053 | "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-2.0.2.tgz",
2054 | "integrity": "sha1-uRkKT5EzVGlIQIWfio9whNiCImQ=",
2055 | "dev": true,
2056 | "requires": {
2057 | "set-getter": "^0.1.0"
2058 | }
2059 | },
2060 | "locate-path": {
2061 | "version": "5.0.0",
2062 | "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
2063 | "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
2064 | "dev": true,
2065 | "requires": {
2066 | "p-locate": "^4.1.0"
2067 | }
2068 | },
2069 | "lodash": {
2070 | "version": "4.17.15",
2071 | "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
2072 | "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==",
2073 | "dev": true
2074 | },
2075 | "lodash.assignin": {
2076 | "version": "4.2.0",
2077 | "resolved": "https://registry.npmjs.org/lodash.assignin/-/lodash.assignin-4.2.0.tgz",
2078 | "integrity": "sha1-uo31+4QesKPoBEIysOJjqNxqKKI=",
2079 | "dev": true
2080 | },
2081 | "lodash.bind": {
2082 | "version": "4.2.1",
2083 | "resolved": "https://registry.npmjs.org/lodash.bind/-/lodash.bind-4.2.1.tgz",
2084 | "integrity": "sha1-euMBfpOWIqwxt9fX3LGzTbFpDTU=",
2085 | "dev": true
2086 | },
2087 | "lodash.defaults": {
2088 | "version": "4.2.0",
2089 | "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz",
2090 | "integrity": "sha1-0JF4cW/+pN3p5ft7N/bwgCJ0WAw=",
2091 | "dev": true
2092 | },
2093 | "lodash.filter": {
2094 | "version": "4.6.0",
2095 | "resolved": "https://registry.npmjs.org/lodash.filter/-/lodash.filter-4.6.0.tgz",
2096 | "integrity": "sha1-ZosdSYFgOuHMWm+nYBQ+SAtMSs4=",
2097 | "dev": true
2098 | },
2099 | "lodash.flatten": {
2100 | "version": "4.4.0",
2101 | "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz",
2102 | "integrity": "sha1-8xwiIlqWMtK7+OSt2+8kCqdlph8=",
2103 | "dev": true
2104 | },
2105 | "lodash.foreach": {
2106 | "version": "4.5.0",
2107 | "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz",
2108 | "integrity": "sha1-Gmo16s5AEoDH8G3d7DUWWrJ+PlM=",
2109 | "dev": true
2110 | },
2111 | "lodash.map": {
2112 | "version": "4.6.0",
2113 | "resolved": "https://registry.npmjs.org/lodash.map/-/lodash.map-4.6.0.tgz",
2114 | "integrity": "sha1-dx7Hg540c9nEzeKLGTlMNWL09tM=",
2115 | "dev": true
2116 | },
2117 | "lodash.memoize": {
2118 | "version": "3.0.4",
2119 | "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-3.0.4.tgz",
2120 | "integrity": "sha1-LcvSwofLwKVcxCMovQxzYVDVPj8=",
2121 | "dev": true
2122 | },
2123 | "lodash.merge": {
2124 | "version": "4.6.2",
2125 | "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
2126 | "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
2127 | "dev": true
2128 | },
2129 | "lodash.pick": {
2130 | "version": "4.4.0",
2131 | "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz",
2132 | "integrity": "sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM=",
2133 | "dev": true
2134 | },
2135 | "lodash.reduce": {
2136 | "version": "4.6.0",
2137 | "resolved": "https://registry.npmjs.org/lodash.reduce/-/lodash.reduce-4.6.0.tgz",
2138 | "integrity": "sha1-8atrg5KZrUj3hKu/R2WW8DuRTTs=",
2139 | "dev": true
2140 | },
2141 | "lodash.reject": {
2142 | "version": "4.6.0",
2143 | "resolved": "https://registry.npmjs.org/lodash.reject/-/lodash.reject-4.6.0.tgz",
2144 | "integrity": "sha1-gNZJLcFHCGS79YNTO2UfQqn1JBU=",
2145 | "dev": true
2146 | },
2147 | "lodash.some": {
2148 | "version": "4.6.0",
2149 | "resolved": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz",
2150 | "integrity": "sha1-G7nzFO9ri63tE7VJFpsqlF62jk0=",
2151 | "dev": true
2152 | },
2153 | "lodash.unescape": {
2154 | "version": "4.0.1",
2155 | "resolved": "https://registry.npmjs.org/lodash.unescape/-/lodash.unescape-4.0.1.tgz",
2156 | "integrity": "sha1-vyJJiGzlFM2hEvrpIYzcBlIR/Jw=",
2157 | "dev": true
2158 | },
2159 | "lowercase-keys": {
2160 | "version": "1.0.1",
2161 | "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
2162 | "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==",
2163 | "dev": true
2164 | },
2165 | "lru-cache": {
2166 | "version": "5.1.1",
2167 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
2168 | "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
2169 | "dev": true,
2170 | "requires": {
2171 | "yallist": "^3.0.2"
2172 | }
2173 | },
2174 | "md5.js": {
2175 | "version": "1.3.5",
2176 | "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz",
2177 | "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==",
2178 | "dev": true,
2179 | "requires": {
2180 | "hash-base": "^3.0.0",
2181 | "inherits": "^2.0.1",
2182 | "safe-buffer": "^5.1.2"
2183 | }
2184 | },
2185 | "mensch": {
2186 | "version": "0.3.4",
2187 | "resolved": "https://registry.npmjs.org/mensch/-/mensch-0.3.4.tgz",
2188 | "integrity": "sha512-IAeFvcOnV9V0Yk+bFhYR07O3yNina9ANIN5MoXBKYJ/RLYPurd2d0yw14MDhpr9/momp0WofT1bPUh3hkzdi/g==",
2189 | "dev": true
2190 | },
2191 | "merge": {
2192 | "version": "1.2.1",
2193 | "resolved": "https://registry.npmjs.org/merge/-/merge-1.2.1.tgz",
2194 | "integrity": "sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ==",
2195 | "dev": true
2196 | },
2197 | "miller-rabin": {
2198 | "version": "4.0.1",
2199 | "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz",
2200 | "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==",
2201 | "dev": true,
2202 | "requires": {
2203 | "bn.js": "^4.0.0",
2204 | "brorand": "^1.0.1"
2205 | }
2206 | },
2207 | "mime": {
2208 | "version": "2.4.4",
2209 | "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz",
2210 | "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==",
2211 | "dev": true
2212 | },
2213 | "mime-db": {
2214 | "version": "1.40.0",
2215 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz",
2216 | "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==",
2217 | "dev": true
2218 | },
2219 | "mime-types": {
2220 | "version": "2.1.24",
2221 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz",
2222 | "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==",
2223 | "dev": true,
2224 | "requires": {
2225 | "mime-db": "1.40.0"
2226 | }
2227 | },
2228 | "mimer": {
2229 | "version": "1.0.0",
2230 | "resolved": "https://registry.npmjs.org/mimer/-/mimer-1.0.0.tgz",
2231 | "integrity": "sha512-4ZJvCzfcwsBgPbkKXUzGoVZMWjv8IDIygkGzVc7uUYhgnK0t2LmGxxjdgH1i+pn0/KQfB5F/VKUJlfyTSOFQjg==",
2232 | "dev": true
2233 | },
2234 | "mimic-fn": {
2235 | "version": "2.1.0",
2236 | "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
2237 | "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
2238 | "dev": true
2239 | },
2240 | "mimic-response": {
2241 | "version": "1.0.1",
2242 | "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz",
2243 | "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==",
2244 | "dev": true
2245 | },
2246 | "minimalistic-assert": {
2247 | "version": "1.0.1",
2248 | "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
2249 | "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==",
2250 | "dev": true
2251 | },
2252 | "minimalistic-crypto-utils": {
2253 | "version": "1.0.1",
2254 | "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
2255 | "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=",
2256 | "dev": true
2257 | },
2258 | "minimatch": {
2259 | "version": "3.0.4",
2260 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
2261 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
2262 | "dev": true,
2263 | "requires": {
2264 | "brace-expansion": "^1.1.7"
2265 | }
2266 | },
2267 | "minimist": {
2268 | "version": "0.0.8",
2269 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
2270 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
2271 | "dev": true
2272 | },
2273 | "mkdirp": {
2274 | "version": "0.5.1",
2275 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
2276 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
2277 | "dev": true,
2278 | "requires": {
2279 | "minimist": "0.0.8"
2280 | }
2281 | },
2282 | "module-deps": {
2283 | "version": "6.2.1",
2284 | "resolved": "https://registry.npmjs.org/module-deps/-/module-deps-6.2.1.tgz",
2285 | "integrity": "sha512-UnEn6Ah36Tu4jFiBbJVUtt0h+iXqxpLqDvPS8nllbw5RZFmNJ1+Mz5BjYnM9ieH80zyxHkARGLnMIHlPK5bu6A==",
2286 | "dev": true,
2287 | "requires": {
2288 | "JSONStream": "^1.0.3",
2289 | "browser-resolve": "^1.7.0",
2290 | "cached-path-relative": "^1.0.2",
2291 | "concat-stream": "~1.6.0",
2292 | "defined": "^1.0.0",
2293 | "detective": "^5.0.2",
2294 | "duplexer2": "^0.1.2",
2295 | "inherits": "^2.0.1",
2296 | "parents": "^1.0.0",
2297 | "readable-stream": "^2.0.2",
2298 | "resolve": "^1.4.0",
2299 | "stream-combiner2": "^1.1.1",
2300 | "subarg": "^1.0.0",
2301 | "through2": "^2.0.0",
2302 | "xtend": "^4.0.0"
2303 | }
2304 | },
2305 | "ms": {
2306 | "version": "2.1.2",
2307 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
2308 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
2309 | "dev": true
2310 | },
2311 | "multimatch": {
2312 | "version": "4.0.0",
2313 | "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-4.0.0.tgz",
2314 | "integrity": "sha512-lDmx79y1z6i7RNx0ZGCPq1bzJ6ZoDDKbvh7jxr9SJcWLkShMzXrHbYVpTdnhNM5MXpDUxCQ4DgqVttVXlBgiBQ==",
2315 | "dev": true,
2316 | "requires": {
2317 | "@types/minimatch": "^3.0.3",
2318 | "array-differ": "^3.0.0",
2319 | "array-union": "^2.1.0",
2320 | "arrify": "^2.0.1",
2321 | "minimatch": "^3.0.4"
2322 | }
2323 | },
2324 | "mute-stream": {
2325 | "version": "0.0.8",
2326 | "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz",
2327 | "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
2328 | "dev": true
2329 | },
2330 | "nice-try": {
2331 | "version": "1.0.5",
2332 | "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
2333 | "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
2334 | "dev": true
2335 | },
2336 | "node-fetch": {
2337 | "version": "2.6.0",
2338 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.0.tgz",
2339 | "integrity": "sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA==",
2340 | "dev": true
2341 | },
2342 | "node-forge": {
2343 | "version": "0.9.1",
2344 | "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.9.1.tgz",
2345 | "integrity": "sha512-G6RlQt5Sb4GMBzXvhfkeFmbqR6MzhtnT7VTHuLadjkii3rdYHNdw0m8zA4BTxVIh68FicCQ2NSUANpsqkr9jvQ==",
2346 | "dev": true
2347 | },
2348 | "normalize-newline": {
2349 | "version": "3.0.0",
2350 | "resolved": "https://registry.npmjs.org/normalize-newline/-/normalize-newline-3.0.0.tgz",
2351 | "integrity": "sha1-HL6oBKukNgAfg5OKsh7AOdaa6dM=",
2352 | "dev": true
2353 | },
2354 | "normalize-url": {
2355 | "version": "4.5.0",
2356 | "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz",
2357 | "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==",
2358 | "dev": true
2359 | },
2360 | "nth-check": {
2361 | "version": "1.0.2",
2362 | "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz",
2363 | "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==",
2364 | "dev": true,
2365 | "requires": {
2366 | "boolbase": "~1.0.0"
2367 | }
2368 | },
2369 | "oauth-sign": {
2370 | "version": "0.9.0",
2371 | "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
2372 | "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
2373 | "dev": true
2374 | },
2375 | "object-assign": {
2376 | "version": "4.1.1",
2377 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
2378 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=",
2379 | "dev": true
2380 | },
2381 | "once": {
2382 | "version": "1.4.0",
2383 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
2384 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
2385 | "dev": true,
2386 | "requires": {
2387 | "wrappy": "1"
2388 | }
2389 | },
2390 | "onetime": {
2391 | "version": "5.1.0",
2392 | "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz",
2393 | "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==",
2394 | "dev": true,
2395 | "requires": {
2396 | "mimic-fn": "^2.1.0"
2397 | }
2398 | },
2399 | "open": {
2400 | "version": "6.4.0",
2401 | "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz",
2402 | "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==",
2403 | "dev": true,
2404 | "requires": {
2405 | "is-wsl": "^1.1.0"
2406 | }
2407 | },
2408 | "os-browserify": {
2409 | "version": "0.3.0",
2410 | "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz",
2411 | "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=",
2412 | "dev": true
2413 | },
2414 | "os-homedir": {
2415 | "version": "1.0.2",
2416 | "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
2417 | "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=",
2418 | "dev": true
2419 | },
2420 | "os-tmpdir": {
2421 | "version": "1.0.2",
2422 | "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
2423 | "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=",
2424 | "dev": true
2425 | },
2426 | "p-any": {
2427 | "version": "2.1.0",
2428 | "resolved": "https://registry.npmjs.org/p-any/-/p-any-2.1.0.tgz",
2429 | "integrity": "sha512-JAERcaMBLYKMq+voYw36+x5Dgh47+/o7yuv2oQYuSSUml4YeqJEFznBrY2UeEkoSHqBua6hz518n/PsowTYLLg==",
2430 | "dev": true,
2431 | "requires": {
2432 | "p-cancelable": "^2.0.0",
2433 | "p-some": "^4.0.0",
2434 | "type-fest": "^0.3.0"
2435 | },
2436 | "dependencies": {
2437 | "p-cancelable": {
2438 | "version": "2.0.0",
2439 | "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.0.0.tgz",
2440 | "integrity": "sha512-wvPXDmbMmu2ksjkB4Z3nZWTSkJEb9lqVdMaCKpZUGJG9TMiNp9XcbG3fn9fPKjem04fJMJnXoyFPk2FmgiaiNg==",
2441 | "dev": true
2442 | },
2443 | "type-fest": {
2444 | "version": "0.3.1",
2445 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz",
2446 | "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==",
2447 | "dev": true
2448 | }
2449 | }
2450 | },
2451 | "p-cancelable": {
2452 | "version": "1.1.0",
2453 | "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz",
2454 | "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==",
2455 | "dev": true
2456 | },
2457 | "p-finally": {
2458 | "version": "1.0.0",
2459 | "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
2460 | "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
2461 | "dev": true
2462 | },
2463 | "p-limit": {
2464 | "version": "2.2.1",
2465 | "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz",
2466 | "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==",
2467 | "dev": true,
2468 | "requires": {
2469 | "p-try": "^2.0.0"
2470 | }
2471 | },
2472 | "p-locate": {
2473 | "version": "4.1.0",
2474 | "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
2475 | "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
2476 | "dev": true,
2477 | "requires": {
2478 | "p-limit": "^2.2.0"
2479 | }
2480 | },
2481 | "p-some": {
2482 | "version": "4.1.0",
2483 | "resolved": "https://registry.npmjs.org/p-some/-/p-some-4.1.0.tgz",
2484 | "integrity": "sha512-MF/HIbq6GeBqTrTIl5OJubzkGU+qfFhAFi0gnTAK6rgEIJIknEiABHOTtQu4e6JiXjIwuMPMUFQzyHh5QjCl1g==",
2485 | "dev": true,
2486 | "requires": {
2487 | "aggregate-error": "^3.0.0",
2488 | "p-cancelable": "^2.0.0"
2489 | },
2490 | "dependencies": {
2491 | "p-cancelable": {
2492 | "version": "2.0.0",
2493 | "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.0.0.tgz",
2494 | "integrity": "sha512-wvPXDmbMmu2ksjkB4Z3nZWTSkJEb9lqVdMaCKpZUGJG9TMiNp9XcbG3fn9fPKjem04fJMJnXoyFPk2FmgiaiNg==",
2495 | "dev": true
2496 | }
2497 | }
2498 | },
2499 | "p-timeout": {
2500 | "version": "3.2.0",
2501 | "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz",
2502 | "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==",
2503 | "dev": true,
2504 | "requires": {
2505 | "p-finally": "^1.0.0"
2506 | }
2507 | },
2508 | "p-try": {
2509 | "version": "2.2.0",
2510 | "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
2511 | "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
2512 | "dev": true
2513 | },
2514 | "pako": {
2515 | "version": "1.0.10",
2516 | "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.10.tgz",
2517 | "integrity": "sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==",
2518 | "dev": true
2519 | },
2520 | "parents": {
2521 | "version": "1.0.1",
2522 | "resolved": "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz",
2523 | "integrity": "sha1-/t1NK/GTp3dF/nHjcdc8MwfZx1E=",
2524 | "dev": true,
2525 | "requires": {
2526 | "path-platform": "~0.11.15"
2527 | }
2528 | },
2529 | "parse-asn1": {
2530 | "version": "5.1.5",
2531 | "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz",
2532 | "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==",
2533 | "dev": true,
2534 | "requires": {
2535 | "asn1.js": "^4.0.0",
2536 | "browserify-aes": "^1.0.0",
2537 | "create-hash": "^1.1.0",
2538 | "evp_bytestokey": "^1.0.0",
2539 | "pbkdf2": "^3.0.3",
2540 | "safe-buffer": "^5.1.1"
2541 | }
2542 | },
2543 | "parse-passwd": {
2544 | "version": "1.0.0",
2545 | "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz",
2546 | "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=",
2547 | "dev": true
2548 | },
2549 | "path-browserify": {
2550 | "version": "0.0.1",
2551 | "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz",
2552 | "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==",
2553 | "dev": true
2554 | },
2555 | "path-exists": {
2556 | "version": "4.0.0",
2557 | "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
2558 | "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
2559 | "dev": true
2560 | },
2561 | "path-is-absolute": {
2562 | "version": "1.0.1",
2563 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
2564 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
2565 | "dev": true
2566 | },
2567 | "path-key": {
2568 | "version": "2.0.1",
2569 | "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
2570 | "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
2571 | "dev": true
2572 | },
2573 | "path-parse": {
2574 | "version": "1.0.6",
2575 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
2576 | "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
2577 | "dev": true
2578 | },
2579 | "path-platform": {
2580 | "version": "0.11.15",
2581 | "resolved": "https://registry.npmjs.org/path-platform/-/path-platform-0.11.15.tgz",
2582 | "integrity": "sha1-6GQhf3TDaFDwhSt43Hv31KVyG/I=",
2583 | "dev": true
2584 | },
2585 | "pbkdf2": {
2586 | "version": "3.0.17",
2587 | "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz",
2588 | "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==",
2589 | "dev": true,
2590 | "requires": {
2591 | "create-hash": "^1.1.2",
2592 | "create-hmac": "^1.1.4",
2593 | "ripemd160": "^2.0.1",
2594 | "safe-buffer": "^5.0.1",
2595 | "sha.js": "^2.4.8"
2596 | }
2597 | },
2598 | "performance-now": {
2599 | "version": "2.1.0",
2600 | "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
2601 | "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
2602 | "dev": true
2603 | },
2604 | "pluralize": {
2605 | "version": "8.0.0",
2606 | "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz",
2607 | "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==",
2608 | "dev": true
2609 | },
2610 | "prepend-http": {
2611 | "version": "2.0.0",
2612 | "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz",
2613 | "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=",
2614 | "dev": true
2615 | },
2616 | "process": {
2617 | "version": "0.11.10",
2618 | "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
2619 | "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=",
2620 | "dev": true
2621 | },
2622 | "process-nextick-args": {
2623 | "version": "2.0.1",
2624 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
2625 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
2626 | "dev": true
2627 | },
2628 | "psl": {
2629 | "version": "1.4.0",
2630 | "resolved": "https://registry.npmjs.org/psl/-/psl-1.4.0.tgz",
2631 | "integrity": "sha512-HZzqCGPecFLyoRj5HLfuDSKYTJkAfB5thKBIkRHtGjWwY7p1dAyveIbXIq4tO0KYfDF2tHqPUgY9SDnGm00uFw==",
2632 | "dev": true
2633 | },
2634 | "public-encrypt": {
2635 | "version": "4.0.3",
2636 | "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz",
2637 | "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==",
2638 | "dev": true,
2639 | "requires": {
2640 | "bn.js": "^4.1.0",
2641 | "browserify-rsa": "^4.0.0",
2642 | "create-hash": "^1.1.0",
2643 | "parse-asn1": "^5.0.0",
2644 | "randombytes": "^2.0.1",
2645 | "safe-buffer": "^5.1.2"
2646 | }
2647 | },
2648 | "public-ip": {
2649 | "version": "3.2.0",
2650 | "resolved": "https://registry.npmjs.org/public-ip/-/public-ip-3.2.0.tgz",
2651 | "integrity": "sha512-DBq4o955zhrhESG4z6GkLN9mtY9NT/JOjEV8pvnYy3bjVQOQF0J5lJNwWLbEWwNstyNFJlY7JxCPFq4bdXSabw==",
2652 | "dev": true,
2653 | "requires": {
2654 | "dns-socket": "^4.2.0",
2655 | "got": "^9.6.0",
2656 | "is-ip": "^3.1.0"
2657 | }
2658 | },
2659 | "pump": {
2660 | "version": "3.0.0",
2661 | "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
2662 | "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
2663 | "dev": true,
2664 | "requires": {
2665 | "end-of-stream": "^1.1.0",
2666 | "once": "^1.3.1"
2667 | }
2668 | },
2669 | "punycode": {
2670 | "version": "1.4.1",
2671 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
2672 | "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
2673 | "dev": true
2674 | },
2675 | "qs": {
2676 | "version": "6.9.1",
2677 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.1.tgz",
2678 | "integrity": "sha512-Cxm7/SS/y/Z3MHWSxXb8lIFqgqBowP5JMlTUFyJN88y0SGQhVmZnqFK/PeuMX9LzUyWsqqhNxIyg0jlzq946yA==",
2679 | "dev": true
2680 | },
2681 | "querystring": {
2682 | "version": "0.2.0",
2683 | "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
2684 | "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=",
2685 | "dev": true
2686 | },
2687 | "querystring-es3": {
2688 | "version": "0.2.1",
2689 | "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz",
2690 | "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=",
2691 | "dev": true
2692 | },
2693 | "randombytes": {
2694 | "version": "2.1.0",
2695 | "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
2696 | "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
2697 | "dev": true,
2698 | "requires": {
2699 | "safe-buffer": "^5.1.0"
2700 | }
2701 | },
2702 | "randomfill": {
2703 | "version": "1.0.4",
2704 | "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz",
2705 | "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==",
2706 | "dev": true,
2707 | "requires": {
2708 | "randombytes": "^2.0.5",
2709 | "safe-buffer": "^5.1.0"
2710 | }
2711 | },
2712 | "read-only-stream": {
2713 | "version": "2.0.0",
2714 | "resolved": "https://registry.npmjs.org/read-only-stream/-/read-only-stream-2.0.0.tgz",
2715 | "integrity": "sha1-JyT9aoET1zdkrCiNQ4YnDB2/F/A=",
2716 | "dev": true,
2717 | "requires": {
2718 | "readable-stream": "^2.0.2"
2719 | }
2720 | },
2721 | "readable-stream": {
2722 | "version": "2.3.6",
2723 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
2724 | "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
2725 | "dev": true,
2726 | "requires": {
2727 | "core-util-is": "~1.0.0",
2728 | "inherits": "~2.0.3",
2729 | "isarray": "~1.0.0",
2730 | "process-nextick-args": "~2.0.0",
2731 | "safe-buffer": "~5.1.1",
2732 | "string_decoder": "~1.1.1",
2733 | "util-deprecate": "~1.0.1"
2734 | },
2735 | "dependencies": {
2736 | "safe-buffer": {
2737 | "version": "5.1.2",
2738 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
2739 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
2740 | "dev": true
2741 | },
2742 | "string_decoder": {
2743 | "version": "1.1.1",
2744 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
2745 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
2746 | "dev": true,
2747 | "requires": {
2748 | "safe-buffer": "~5.1.0"
2749 | }
2750 | }
2751 | }
2752 | },
2753 | "recursive-readdir": {
2754 | "version": "2.2.2",
2755 | "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz",
2756 | "integrity": "sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg==",
2757 | "dev": true,
2758 | "requires": {
2759 | "minimatch": "3.0.4"
2760 | }
2761 | },
2762 | "request": {
2763 | "version": "2.88.0",
2764 | "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
2765 | "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==",
2766 | "dev": true,
2767 | "requires": {
2768 | "aws-sign2": "~0.7.0",
2769 | "aws4": "^1.8.0",
2770 | "caseless": "~0.12.0",
2771 | "combined-stream": "~1.0.6",
2772 | "extend": "~3.0.2",
2773 | "forever-agent": "~0.6.1",
2774 | "form-data": "~2.3.2",
2775 | "har-validator": "~5.1.0",
2776 | "http-signature": "~1.2.0",
2777 | "is-typedarray": "~1.0.0",
2778 | "isstream": "~0.1.2",
2779 | "json-stringify-safe": "~5.0.1",
2780 | "mime-types": "~2.1.19",
2781 | "oauth-sign": "~0.9.0",
2782 | "performance-now": "^2.1.0",
2783 | "qs": "~6.5.2",
2784 | "safe-buffer": "^5.1.2",
2785 | "tough-cookie": "~2.4.3",
2786 | "tunnel-agent": "^0.6.0",
2787 | "uuid": "^3.3.2"
2788 | },
2789 | "dependencies": {
2790 | "qs": {
2791 | "version": "6.5.2",
2792 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
2793 | "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
2794 | "dev": true
2795 | }
2796 | }
2797 | },
2798 | "resolve": {
2799 | "version": "1.12.0",
2800 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz",
2801 | "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==",
2802 | "dev": true,
2803 | "requires": {
2804 | "path-parse": "^1.0.6"
2805 | }
2806 | },
2807 | "resolve-dir": {
2808 | "version": "0.1.1",
2809 | "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-0.1.1.tgz",
2810 | "integrity": "sha1-shklmlYC+sXFxJatiUpujMQwJh4=",
2811 | "dev": true,
2812 | "requires": {
2813 | "expand-tilde": "^1.2.2",
2814 | "global-modules": "^0.2.3"
2815 | },
2816 | "dependencies": {
2817 | "expand-tilde": {
2818 | "version": "1.2.2",
2819 | "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-1.2.2.tgz",
2820 | "integrity": "sha1-C4HrqJflo9MdHD0QL48BRB5VlEk=",
2821 | "dev": true,
2822 | "requires": {
2823 | "os-homedir": "^1.0.1"
2824 | }
2825 | }
2826 | }
2827 | },
2828 | "resolve-file": {
2829 | "version": "0.3.0",
2830 | "resolved": "https://registry.npmjs.org/resolve-file/-/resolve-file-0.3.0.tgz",
2831 | "integrity": "sha1-EeH7RkVm06fFAMt+lIHo8LAKFO8=",
2832 | "dev": true,
2833 | "requires": {
2834 | "cwd": "^0.10.0",
2835 | "expand-tilde": "^2.0.2",
2836 | "extend-shallow": "^2.0.1",
2837 | "fs-exists-sync": "^0.1.0",
2838 | "homedir-polyfill": "^1.0.1",
2839 | "lazy-cache": "^2.0.2",
2840 | "resolve": "^1.2.0"
2841 | }
2842 | },
2843 | "resolve-path": {
2844 | "version": "1.4.0",
2845 | "resolved": "https://registry.npmjs.org/resolve-path/-/resolve-path-1.4.0.tgz",
2846 | "integrity": "sha1-xL2p9e+y/OZSR4c6s2u02DT+Fvc=",
2847 | "dev": true,
2848 | "requires": {
2849 | "http-errors": "~1.6.2",
2850 | "path-is-absolute": "1.0.1"
2851 | }
2852 | },
2853 | "responselike": {
2854 | "version": "1.0.2",
2855 | "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz",
2856 | "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=",
2857 | "dev": true,
2858 | "requires": {
2859 | "lowercase-keys": "^1.0.0"
2860 | }
2861 | },
2862 | "restore-cursor": {
2863 | "version": "3.1.0",
2864 | "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
2865 | "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==",
2866 | "dev": true,
2867 | "requires": {
2868 | "onetime": "^5.1.0",
2869 | "signal-exit": "^3.0.2"
2870 | }
2871 | },
2872 | "ripemd160": {
2873 | "version": "2.0.2",
2874 | "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz",
2875 | "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==",
2876 | "dev": true,
2877 | "requires": {
2878 | "hash-base": "^3.0.0",
2879 | "inherits": "^2.0.1"
2880 | }
2881 | },
2882 | "run-async": {
2883 | "version": "2.3.0",
2884 | "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz",
2885 | "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=",
2886 | "dev": true,
2887 | "requires": {
2888 | "is-promise": "^2.1.0"
2889 | }
2890 | },
2891 | "rxjs": {
2892 | "version": "6.5.3",
2893 | "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.3.tgz",
2894 | "integrity": "sha512-wuYsAYYFdWTAnAaPoKGNhfpWwKZbJW+HgAJ+mImp+Epl7BG8oNWBCTyRM8gba9k4lk8BgWdoYm21Mo/RYhhbgA==",
2895 | "dev": true,
2896 | "requires": {
2897 | "tslib": "^1.9.0"
2898 | }
2899 | },
2900 | "safe-buffer": {
2901 | "version": "5.2.0",
2902 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz",
2903 | "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==",
2904 | "dev": true
2905 | },
2906 | "safer-buffer": {
2907 | "version": "2.1.2",
2908 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
2909 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
2910 | "dev": true
2911 | },
2912 | "semver": {
2913 | "version": "5.7.1",
2914 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
2915 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
2916 | "dev": true
2917 | },
2918 | "set-getter": {
2919 | "version": "0.1.0",
2920 | "resolved": "https://registry.npmjs.org/set-getter/-/set-getter-0.1.0.tgz",
2921 | "integrity": "sha1-12nBgsnVpR9AkUXy+6guXoboA3Y=",
2922 | "dev": true,
2923 | "requires": {
2924 | "to-object-path": "^0.3.0"
2925 | }
2926 | },
2927 | "setprototypeof": {
2928 | "version": "1.1.0",
2929 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
2930 | "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==",
2931 | "dev": true
2932 | },
2933 | "sha.js": {
2934 | "version": "2.4.11",
2935 | "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
2936 | "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
2937 | "dev": true,
2938 | "requires": {
2939 | "inherits": "^2.0.1",
2940 | "safe-buffer": "^5.0.1"
2941 | }
2942 | },
2943 | "shasum": {
2944 | "version": "1.0.2",
2945 | "resolved": "https://registry.npmjs.org/shasum/-/shasum-1.0.2.tgz",
2946 | "integrity": "sha1-5wEjENj0F/TetXEhUOVni4euVl8=",
2947 | "dev": true,
2948 | "requires": {
2949 | "json-stable-stringify": "~0.0.0",
2950 | "sha.js": "~2.4.4"
2951 | }
2952 | },
2953 | "shasum-object": {
2954 | "version": "1.0.0",
2955 | "resolved": "https://registry.npmjs.org/shasum-object/-/shasum-object-1.0.0.tgz",
2956 | "integrity": "sha512-Iqo5rp/3xVi6M4YheapzZhhGPVs0yZwHj7wvwQ1B9z8H6zk+FEnI7y3Teq7qwnekfEhu8WmG2z0z4iWZaxLWVg==",
2957 | "dev": true,
2958 | "requires": {
2959 | "fast-safe-stringify": "^2.0.7"
2960 | }
2961 | },
2962 | "shebang-command": {
2963 | "version": "1.2.0",
2964 | "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
2965 | "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
2966 | "dev": true,
2967 | "requires": {
2968 | "shebang-regex": "^1.0.0"
2969 | }
2970 | },
2971 | "shebang-regex": {
2972 | "version": "1.0.0",
2973 | "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
2974 | "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
2975 | "dev": true
2976 | },
2977 | "shell-quote": {
2978 | "version": "1.7.2",
2979 | "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz",
2980 | "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==",
2981 | "dev": true
2982 | },
2983 | "signal-exit": {
2984 | "version": "3.0.2",
2985 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
2986 | "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
2987 | "dev": true
2988 | },
2989 | "simple-concat": {
2990 | "version": "1.0.0",
2991 | "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.0.tgz",
2992 | "integrity": "sha1-c0TLuLbib7J9ZrL8hvn21Zl1IcY=",
2993 | "dev": true
2994 | },
2995 | "slick": {
2996 | "version": "1.12.2",
2997 | "resolved": "https://registry.npmjs.org/slick/-/slick-1.12.2.tgz",
2998 | "integrity": "sha1-vQSN23TefRymkV+qSldXCzVQwtc=",
2999 | "dev": true
3000 | },
3001 | "source-map": {
3002 | "version": "0.5.7",
3003 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
3004 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
3005 | "dev": true
3006 | },
3007 | "source-map-support": {
3008 | "version": "0.5.16",
3009 | "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.16.tgz",
3010 | "integrity": "sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ==",
3011 | "dev": true,
3012 | "requires": {
3013 | "buffer-from": "^1.0.0",
3014 | "source-map": "^0.6.0"
3015 | },
3016 | "dependencies": {
3017 | "source-map": {
3018 | "version": "0.6.1",
3019 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
3020 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
3021 | "dev": true
3022 | }
3023 | }
3024 | },
3025 | "split-lines": {
3026 | "version": "2.0.0",
3027 | "resolved": "https://registry.npmjs.org/split-lines/-/split-lines-2.0.0.tgz",
3028 | "integrity": "sha512-gaIdhbqxkB5/VflPXsJwZvEzh/kdwiRPF9iqpkxX4us+lzB8INedFwjCyo6vwuz5x2Ddlnav2zh270CEjCG8mA==",
3029 | "dev": true
3030 | },
3031 | "sshpk": {
3032 | "version": "1.16.1",
3033 | "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
3034 | "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
3035 | "dev": true,
3036 | "requires": {
3037 | "asn1": "~0.2.3",
3038 | "assert-plus": "^1.0.0",
3039 | "bcrypt-pbkdf": "^1.0.0",
3040 | "dashdash": "^1.12.0",
3041 | "ecc-jsbn": "~0.1.1",
3042 | "getpass": "^0.1.1",
3043 | "jsbn": "~0.1.0",
3044 | "safer-buffer": "^2.0.2",
3045 | "tweetnacl": "~0.14.0"
3046 | }
3047 | },
3048 | "statuses": {
3049 | "version": "1.5.0",
3050 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
3051 | "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=",
3052 | "dev": true
3053 | },
3054 | "stream-browserify": {
3055 | "version": "2.0.2",
3056 | "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz",
3057 | "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==",
3058 | "dev": true,
3059 | "requires": {
3060 | "inherits": "~2.0.1",
3061 | "readable-stream": "^2.0.2"
3062 | }
3063 | },
3064 | "stream-combiner2": {
3065 | "version": "1.1.1",
3066 | "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz",
3067 | "integrity": "sha1-+02KFCDqNidk4hrUeAOXvry0HL4=",
3068 | "dev": true,
3069 | "requires": {
3070 | "duplexer2": "~0.1.0",
3071 | "readable-stream": "^2.0.2"
3072 | }
3073 | },
3074 | "stream-http": {
3075 | "version": "3.1.0",
3076 | "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.1.0.tgz",
3077 | "integrity": "sha512-cuB6RgO7BqC4FBYzmnvhob5Do3wIdIsXAgGycHJnW+981gHqoYcYz9lqjJrk8WXRddbwPuqPYRl+bag6mYv4lw==",
3078 | "dev": true,
3079 | "requires": {
3080 | "builtin-status-codes": "^3.0.0",
3081 | "inherits": "^2.0.1",
3082 | "readable-stream": "^3.0.6",
3083 | "xtend": "^4.0.0"
3084 | },
3085 | "dependencies": {
3086 | "readable-stream": {
3087 | "version": "3.4.0",
3088 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz",
3089 | "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==",
3090 | "dev": true,
3091 | "requires": {
3092 | "inherits": "^2.0.3",
3093 | "string_decoder": "^1.1.1",
3094 | "util-deprecate": "^1.0.1"
3095 | }
3096 | }
3097 | }
3098 | },
3099 | "stream-splicer": {
3100 | "version": "2.0.1",
3101 | "resolved": "https://registry.npmjs.org/stream-splicer/-/stream-splicer-2.0.1.tgz",
3102 | "integrity": "sha512-Xizh4/NPuYSyAXyT7g8IvdJ9HJpxIGL9PjyhtywCZvvP0OPIdqyrr4dMikeuvY8xahpdKEBlBTySe583totajg==",
3103 | "dev": true,
3104 | "requires": {
3105 | "inherits": "^2.0.1",
3106 | "readable-stream": "^2.0.2"
3107 | }
3108 | },
3109 | "string-width": {
3110 | "version": "4.2.0",
3111 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz",
3112 | "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==",
3113 | "dev": true,
3114 | "requires": {
3115 | "emoji-regex": "^8.0.0",
3116 | "is-fullwidth-code-point": "^3.0.0",
3117 | "strip-ansi": "^6.0.0"
3118 | },
3119 | "dependencies": {
3120 | "strip-ansi": {
3121 | "version": "6.0.0",
3122 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz",
3123 | "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==",
3124 | "dev": true,
3125 | "requires": {
3126 | "ansi-regex": "^5.0.0"
3127 | }
3128 | }
3129 | }
3130 | },
3131 | "string_decoder": {
3132 | "version": "1.3.0",
3133 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
3134 | "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
3135 | "dev": true,
3136 | "requires": {
3137 | "safe-buffer": "~5.2.0"
3138 | }
3139 | },
3140 | "strip-ansi": {
3141 | "version": "5.2.0",
3142 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
3143 | "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
3144 | "dev": true,
3145 | "requires": {
3146 | "ansi-regex": "^4.1.0"
3147 | },
3148 | "dependencies": {
3149 | "ansi-regex": {
3150 | "version": "4.1.0",
3151 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
3152 | "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
3153 | "dev": true
3154 | }
3155 | }
3156 | },
3157 | "strip-bom": {
3158 | "version": "4.0.0",
3159 | "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz",
3160 | "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==",
3161 | "dev": true
3162 | },
3163 | "subarg": {
3164 | "version": "1.0.0",
3165 | "resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz",
3166 | "integrity": "sha1-9izxdYHplrSPyWVpn1TAauJouNI=",
3167 | "dev": true,
3168 | "requires": {
3169 | "minimist": "^1.1.0"
3170 | },
3171 | "dependencies": {
3172 | "minimist": {
3173 | "version": "1.2.0",
3174 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
3175 | "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
3176 | "dev": true
3177 | }
3178 | }
3179 | },
3180 | "supports-color": {
3181 | "version": "5.5.0",
3182 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
3183 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
3184 | "dev": true,
3185 | "requires": {
3186 | "has-flag": "^3.0.0"
3187 | }
3188 | },
3189 | "syntax-error": {
3190 | "version": "1.4.0",
3191 | "resolved": "https://registry.npmjs.org/syntax-error/-/syntax-error-1.4.0.tgz",
3192 | "integrity": "sha512-YPPlu67mdnHGTup2A8ff7BC2Pjq0e0Yp/IyTFN03zWO0RcK07uLcbi7C2KpGR2FvWbaB0+bfE27a+sBKebSo7w==",
3193 | "dev": true,
3194 | "requires": {
3195 | "acorn-node": "^1.2.0"
3196 | }
3197 | },
3198 | "terser": {
3199 | "version": "3.17.0",
3200 | "resolved": "https://registry.npmjs.org/terser/-/terser-3.17.0.tgz",
3201 | "integrity": "sha512-/FQzzPJmCpjAH9Xvk2paiWrFq+5M6aVOf+2KRbwhByISDX/EujxsK+BAvrhb6H+2rtrLCHK9N01wO014vrIwVQ==",
3202 | "dev": true,
3203 | "requires": {
3204 | "commander": "^2.19.0",
3205 | "source-map": "~0.6.1",
3206 | "source-map-support": "~0.5.10"
3207 | },
3208 | "dependencies": {
3209 | "commander": {
3210 | "version": "2.20.3",
3211 | "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
3212 | "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
3213 | "dev": true
3214 | },
3215 | "source-map": {
3216 | "version": "0.6.1",
3217 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
3218 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
3219 | "dev": true
3220 | }
3221 | }
3222 | },
3223 | "through": {
3224 | "version": "2.3.8",
3225 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
3226 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
3227 | "dev": true
3228 | },
3229 | "through2": {
3230 | "version": "2.0.5",
3231 | "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
3232 | "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
3233 | "dev": true,
3234 | "requires": {
3235 | "readable-stream": "~2.3.6",
3236 | "xtend": "~4.0.1"
3237 | }
3238 | },
3239 | "timers-browserify": {
3240 | "version": "1.4.2",
3241 | "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-1.4.2.tgz",
3242 | "integrity": "sha1-ycWLV1voQHN1y14kYtrO50NZ9B0=",
3243 | "dev": true,
3244 | "requires": {
3245 | "process": "~0.11.0"
3246 | }
3247 | },
3248 | "tmp": {
3249 | "version": "0.0.33",
3250 | "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
3251 | "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==",
3252 | "dev": true,
3253 | "requires": {
3254 | "os-tmpdir": "~1.0.2"
3255 | }
3256 | },
3257 | "to-object-path": {
3258 | "version": "0.3.0",
3259 | "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
3260 | "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
3261 | "dev": true,
3262 | "requires": {
3263 | "kind-of": "^3.0.2"
3264 | }
3265 | },
3266 | "to-readable-stream": {
3267 | "version": "1.0.0",
3268 | "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz",
3269 | "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==",
3270 | "dev": true
3271 | },
3272 | "tough-cookie": {
3273 | "version": "2.4.3",
3274 | "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
3275 | "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
3276 | "dev": true,
3277 | "requires": {
3278 | "psl": "^1.1.24",
3279 | "punycode": "^1.4.1"
3280 | }
3281 | },
3282 | "ts2gas": {
3283 | "version": "3.4.4",
3284 | "resolved": "https://registry.npmjs.org/ts2gas/-/ts2gas-3.4.4.tgz",
3285 | "integrity": "sha512-u49TaxHUn+y88XqAJSyun488Yc7oqjZUCi/swOT1OP3qiHa/wJTeUH68842US+3OXxKk/As5SRmUHfChTcG3Ng==",
3286 | "dev": true,
3287 | "requires": {
3288 | "typescript": "^3.4.4"
3289 | }
3290 | },
3291 | "tslib": {
3292 | "version": "1.10.0",
3293 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz",
3294 | "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==",
3295 | "dev": true
3296 | },
3297 | "tty-browserify": {
3298 | "version": "0.0.1",
3299 | "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz",
3300 | "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==",
3301 | "dev": true
3302 | },
3303 | "tunnel-agent": {
3304 | "version": "0.6.0",
3305 | "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
3306 | "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
3307 | "dev": true,
3308 | "requires": {
3309 | "safe-buffer": "^5.0.1"
3310 | }
3311 | },
3312 | "tweetnacl": {
3313 | "version": "0.14.5",
3314 | "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
3315 | "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
3316 | "dev": true
3317 | },
3318 | "type-fest": {
3319 | "version": "0.5.2",
3320 | "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.5.2.tgz",
3321 | "integrity": "sha512-DWkS49EQKVX//Tbupb9TFa19c7+MK1XmzkrZUR8TAktmE/DizXoaoJV6TZ/tSIPXipqNiRI6CyAe7x69Jb6RSw==",
3322 | "dev": true
3323 | },
3324 | "typedarray": {
3325 | "version": "0.0.6",
3326 | "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
3327 | "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
3328 | "dev": true
3329 | },
3330 | "typescript": {
3331 | "version": "3.7.2",
3332 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.7.2.tgz",
3333 | "integrity": "sha512-ml7V7JfiN2Xwvcer+XAf2csGO1bPBdRbFCkYBczNZggrBZ9c7G3riSUeJmqEU5uOtXNPMhE3n+R4FA/3YOAWOQ==",
3334 | "dev": true
3335 | },
3336 | "uglify-es": {
3337 | "version": "3.3.9",
3338 | "resolved": "https://unpm.uberinternal.com/uglify-es/-/uglify-es-3.3.9.tgz",
3339 | "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==",
3340 | "dev": true,
3341 | "requires": {
3342 | "commander": "~2.13.0",
3343 | "source-map": "~0.6.1"
3344 | },
3345 | "dependencies": {
3346 | "commander": {
3347 | "version": "2.13.0",
3348 | "resolved": "https://unpm.uberinternal.com/commander/-/commander-2.13.0.tgz",
3349 | "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==",
3350 | "dev": true
3351 | },
3352 | "source-map": {
3353 | "version": "0.6.1",
3354 | "resolved": "https://unpm.uberinternal.com/source-map/-/source-map-0.6.1.tgz",
3355 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
3356 | "dev": true
3357 | }
3358 | }
3359 | },
3360 | "uglifyify": {
3361 | "version": "5.0.2",
3362 | "resolved": "https://registry.npmjs.org/uglifyify/-/uglifyify-5.0.2.tgz",
3363 | "integrity": "sha512-NcSk6pgoC+IgwZZ2tVLVHq+VNKSvLPlLkF5oUiHPVOJI0s/OlSVYEGXG9PCAH0hcyFZLyvt4KBdPAQBRlVDn1Q==",
3364 | "dev": true,
3365 | "requires": {
3366 | "convert-source-map": "~1.1.0",
3367 | "minimatch": "^3.0.2",
3368 | "terser": "^3.7.5",
3369 | "through": "~2.3.4",
3370 | "xtend": "^4.0.1"
3371 | }
3372 | },
3373 | "umd": {
3374 | "version": "3.0.3",
3375 | "resolved": "https://registry.npmjs.org/umd/-/umd-3.0.3.tgz",
3376 | "integrity": "sha512-4IcGSufhFshvLNcMCV80UnQVlZ5pMOC8mvNPForqwA4+lzYQuetTESLDQkeLmihq8bRcnpbQa48Wb8Lh16/xow==",
3377 | "dev": true
3378 | },
3379 | "undeclared-identifiers": {
3380 | "version": "1.1.3",
3381 | "resolved": "https://registry.npmjs.org/undeclared-identifiers/-/undeclared-identifiers-1.1.3.tgz",
3382 | "integrity": "sha512-pJOW4nxjlmfwKApE4zvxLScM/njmwj/DiUBv7EabwE4O8kRUy+HIwxQtZLBPll/jx1LJyBcqNfB3/cpv9EZwOw==",
3383 | "dev": true,
3384 | "requires": {
3385 | "acorn-node": "^1.3.0",
3386 | "dash-ast": "^1.0.0",
3387 | "get-assigned-identifiers": "^1.2.0",
3388 | "simple-concat": "^1.0.0",
3389 | "xtend": "^4.0.1"
3390 | }
3391 | },
3392 | "universalify": {
3393 | "version": "0.1.2",
3394 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
3395 | "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
3396 | "dev": true
3397 | },
3398 | "uri-js": {
3399 | "version": "4.2.2",
3400 | "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
3401 | "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
3402 | "dev": true,
3403 | "requires": {
3404 | "punycode": "^2.1.0"
3405 | },
3406 | "dependencies": {
3407 | "punycode": {
3408 | "version": "2.1.1",
3409 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
3410 | "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
3411 | "dev": true
3412 | }
3413 | }
3414 | },
3415 | "url": {
3416 | "version": "0.11.0",
3417 | "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz",
3418 | "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=",
3419 | "dev": true,
3420 | "requires": {
3421 | "punycode": "1.3.2",
3422 | "querystring": "0.2.0"
3423 | },
3424 | "dependencies": {
3425 | "punycode": {
3426 | "version": "1.3.2",
3427 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
3428 | "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=",
3429 | "dev": true
3430 | }
3431 | }
3432 | },
3433 | "url-parse-lax": {
3434 | "version": "3.0.0",
3435 | "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz",
3436 | "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=",
3437 | "dev": true,
3438 | "requires": {
3439 | "prepend-http": "^2.0.0"
3440 | }
3441 | },
3442 | "url-template": {
3443 | "version": "2.0.8",
3444 | "resolved": "https://registry.npmjs.org/url-template/-/url-template-2.0.8.tgz",
3445 | "integrity": "sha1-/FZaPMy/93MMd19WQflVV5FDnyE=",
3446 | "dev": true
3447 | },
3448 | "util": {
3449 | "version": "0.10.4",
3450 | "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz",
3451 | "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==",
3452 | "dev": true,
3453 | "requires": {
3454 | "inherits": "2.0.3"
3455 | }
3456 | },
3457 | "util-deprecate": {
3458 | "version": "1.0.2",
3459 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
3460 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
3461 | "dev": true
3462 | },
3463 | "uuid": {
3464 | "version": "3.3.3",
3465 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz",
3466 | "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==",
3467 | "dev": true
3468 | },
3469 | "valid-data-url": {
3470 | "version": "2.0.0",
3471 | "resolved": "https://registry.npmjs.org/valid-data-url/-/valid-data-url-2.0.0.tgz",
3472 | "integrity": "sha512-dyCZnv3aCey7yfTgIqdZanKl7xWAEEKCbgmR7SKqyK6QT/Z07ROactrgD1eA37C69ODRj7rNOjzKWVPh0EUjBA==",
3473 | "dev": true
3474 | },
3475 | "verror": {
3476 | "version": "1.10.0",
3477 | "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
3478 | "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
3479 | "dev": true,
3480 | "requires": {
3481 | "assert-plus": "^1.0.0",
3482 | "core-util-is": "1.0.2",
3483 | "extsprintf": "^1.2.0"
3484 | }
3485 | },
3486 | "vm-browserify": {
3487 | "version": "1.1.2",
3488 | "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz",
3489 | "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==",
3490 | "dev": true
3491 | },
3492 | "watch": {
3493 | "version": "1.0.2",
3494 | "resolved": "https://registry.npmjs.org/watch/-/watch-1.0.2.tgz",
3495 | "integrity": "sha1-NApxe952Vyb6CqB9ch4BR6VR3ww=",
3496 | "dev": true,
3497 | "requires": {
3498 | "exec-sh": "^0.2.0",
3499 | "minimist": "^1.2.0"
3500 | },
3501 | "dependencies": {
3502 | "minimist": {
3503 | "version": "1.2.0",
3504 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
3505 | "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
3506 | "dev": true
3507 | }
3508 | }
3509 | },
3510 | "web-resource-inliner": {
3511 | "version": "4.3.3",
3512 | "resolved": "https://registry.npmjs.org/web-resource-inliner/-/web-resource-inliner-4.3.3.tgz",
3513 | "integrity": "sha512-Qk19pohqZs3SoFUW4ZlOHlM8hsOnXhTpCrQ16b1qtJtKzJgO7NZLGP+/lcb2g3hWDQD39/LE/JYOn1Sjy7tn1A==",
3514 | "dev": true,
3515 | "requires": {
3516 | "async": "^3.1.0",
3517 | "chalk": "^2.4.2",
3518 | "datauri": "^2.0.0",
3519 | "htmlparser2": "^3.9.2",
3520 | "lodash.unescape": "^4.0.1",
3521 | "request": "^2.78.0",
3522 | "safer-buffer": "^2.1.2",
3523 | "valid-data-url": "^2.0.0",
3524 | "xtend": "^4.0.2"
3525 | }
3526 | },
3527 | "which": {
3528 | "version": "1.3.1",
3529 | "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
3530 | "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
3531 | "dev": true,
3532 | "requires": {
3533 | "isexe": "^2.0.0"
3534 | }
3535 | },
3536 | "wrappy": {
3537 | "version": "1.0.2",
3538 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
3539 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
3540 | "dev": true
3541 | },
3542 | "xtend": {
3543 | "version": "4.0.2",
3544 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
3545 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==",
3546 | "dev": true
3547 | },
3548 | "yallist": {
3549 | "version": "3.1.1",
3550 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
3551 | "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
3552 | "dev": true
3553 | }
3554 | }
3555 | }
3556 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "code-blocks",
3 | "version": "1.4.2",
4 | "repository": "https://github.com/alexwforsythe/code-blocks",
5 | "license": "MIT",
6 | "engines": {
7 | "node": ">=4.2.0"
8 | },
9 | "devDependencies": {
10 | "@google/clasp": "2.3.0",
11 | "@types/google-apps-script": "1.0.2",
12 | "browserify": "16.5.0",
13 | "clean-css-cli": "4.3.0",
14 | "highlight.js": "9.16.2",
15 | "highlightjs-graphql": "^1.0.2",
16 | "jquery": "3.4.1",
17 | "juice": "5.2.0",
18 | "uglify-es": "3.3.9",
19 | "uglifyify": "5.0.2"
20 | },
21 | "scripts": {
22 | "clean": "rm -rf dist/*",
23 | "build:gas": "./build.sh gas",
24 | "build:js": "./build.sh js",
25 | "build:static": "./build.sh static",
26 | "build": "npm run build:gas && npm run build:js && npm run build:static",
27 | "pull": "clasp pull",
28 | "pushOnly": "clasp push",
29 | "push:js": "npm run build:js && npm run pushOnly",
30 | "push:gas": "npm run build:gas && npm run pushOnly",
31 | "prepush": "npm run clean && npm run build",
32 | "push": "npm run pushOnly"
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/privacy-policy.md:
--------------------------------------------------------------------------------
1 | # Privacy Policy
2 |
3 | Your privacy is important to us. It is Code Blocks' policy to respect your privacy regarding any information we may collect from you through our app, Code Blocks.
4 |
5 | We only ask for personal information when we truly need it to provide a service to you. We collect it by fair and lawful means, with your knowledge and consent. We also let you know why we’re collecting it and how it will be used.
6 |
7 | We only retain collected information for as long as necessary to provide you with your requested service. What data we store, we’ll protect within commercially acceptable means to prevent loss and theft, as well as unauthorized access, disclosure, copying, use or modification.
8 |
9 | We don’t share any personally identifying information publicly or with third-parties, except when required to by law.
10 |
11 | Our app may link to external sites that are not operated by us. Please be aware that we have no control over the content and practices of these sites, and cannot accept responsibility or liability for their respective privacy policies.
12 |
13 | You are free to refuse our request for your personal information, with the understanding that we may be unable to provide you with some of your desired services.
14 |
15 | Your continued use of our website will be regarded as acceptance of our practices around privacy and personal information. If you have any questions about how we handle user data and personal information, feel free to contact us.
16 | This policy is effective as of 28 October 2019.
17 |
18 | ---
19 |
20 | [Homepage](https://www.alexwforsythe.com/code-blocks/) | [G Suite Marketplace](https://chrome.google.com/webstore/detail/code-blocks/ebieibfdjgmmimpldgengceekpfefmfd) | [Privacy Policy](https://www.alexwforsythe.com/code-blocks/privacy-policy) | [Terms of Service](https://www.alexwforsythe.com/code-blocks/terms-of-service)
21 |
--------------------------------------------------------------------------------
/server/colors.js:
--------------------------------------------------------------------------------
1 | var rgbPattern = /^rgb\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$/i;
2 |
3 | /**
4 | * Converts a color of type RGB or any variety of hex to a hex string
5 | * representation of that color. This function is used to get hex colors to
6 | * use in HTML tags.
7 | *
8 | * @param {string} color as RGB or hex
9 | * @returns {string} color as six-digit hex, e.g. #0000ff
10 | */
11 | function colorToHex(color) {
12 | color = color.toString();
13 |
14 | var start = color.indexOf('#');
15 | if (start !== -1) {
16 | color = color.slice(start);
17 | if (color.length === 7) {
18 | return color;
19 | }
20 |
21 | color = color.substr(0, 7);
22 | return padHex(color);
23 | }
24 |
25 | var rgb = color.match(rgbPattern);
26 | if (rgb) {
27 | color = rgb.slice(1, 4).reduce(function toBase16(result, i) {
28 | return result + parseInt(i, 10).toString(16);
29 | }, '');
30 |
31 | return padHex(color);
32 | }
33 |
34 | return colors[color];
35 | }
36 |
37 | /**
38 | * @param {string} hex color as hex
39 | * @returns {string} color as six-digit hex, e.g. #0000ff
40 | */
41 | function padHex(hex) {
42 | if (hex.indexOf('#') === 0) {
43 | hex = hex.slice(1);
44 | }
45 |
46 | if (hex.length === 3) {
47 | // this is a thing:
48 | // https://en.wikipedia.org/wiki/Web_colors#Shorthand_hexadecimal_form
49 | var expanded = hex.split('').reduce(function expand(result, c) {
50 | return result + c + c;
51 | }, '');
52 |
53 | return '#' + expanded;
54 | }
55 |
56 | var zeros = new Array(6 - hex.length + 1).join('0');
57 | return '#' + zeros + hex;
58 | }
59 |
60 | var colors = {
61 | aliceblue: '#f0f8ff',
62 | antiquewhite: '#faebd7',
63 | aqua: '#00ffff',
64 | aquamarine: '#7fffd4',
65 | azure: '#f0ffff',
66 | beige: '#f5f5dc',
67 | bisque: '#ffe4c4',
68 | black: '#000000',
69 | blanchedalmond: '#ffebcd',
70 | blue: '#0000ff',
71 | blueviolet: '#8a2be2',
72 | brown: '#a52a2a',
73 | burlywood: '#deb887',
74 | cadetblue: '#5f9ea0',
75 | chartreuse: '#7fff00',
76 | chocolate: '#d2691e',
77 | coral: '#ff7f50',
78 | cornflowerblue: '#6495ed',
79 | cornsilk: '#fff8dc',
80 | crimson: '#dc143c',
81 | cyan: '#00ffff',
82 | darkblue: '#00008b',
83 | darkcyan: '#008b8b',
84 | darkgoldenrod: '#b8860b',
85 | darkgray: '#a9a9a9',
86 | darkgreen: '#006400',
87 | darkkhaki: '#bdb76b',
88 | darkmagenta: '#8b008b',
89 | darkolivegreen: '#556b2f',
90 | darkorange: '#ff8c00',
91 | darkorchid: '#9932cc',
92 | darkred: '#8b0000',
93 | darksalmon: '#e9967a',
94 | darkseagreen: '#8fbc8f',
95 | darkslateblue: '#483d8b',
96 | darkslategray: '#2f4f4f',
97 | darkturquoise: '#00ced1',
98 | darkviolet: '#9400d3',
99 | deeppink: '#ff1493',
100 | deepskyblue: '#00bfff',
101 | dimgray: '#696969',
102 | dodgerblue: '#1e90ff',
103 | firebrick: '#b22222',
104 | floralwhite: '#fffaf0',
105 | forestgreen: '#228b22',
106 | fuchsia: '#ff00ff',
107 | gainsboro: '#dcdcdc',
108 | ghostwhite: '#f8f8ff',
109 | gold: '#ffd700',
110 | goldenrod: '#daa520',
111 | gray: '#808080',
112 | green: '#008000',
113 | greenyellow: '#adff2f',
114 | honeydew: '#f0fff0',
115 | hotpink: '#ff69b4',
116 | indianred : '#cd5c5c',
117 | indigo: '#4b0082',
118 | ivory: '#fffff0',
119 | khaki: '#f0e68c',
120 | lavender: '#e6e6fa',
121 | lavenderblush: '#fff0f5',
122 | lawngreen: '#7cfc00',
123 | lemonchiffon: '#fffacd',
124 | lightblue: '#add8e6',
125 | lightcoral: '#f08080',
126 | lightcyan: '#e0ffff',
127 | lightgoldenrodyellow: '#fafad2',
128 | lightgrey: '#d3d3d3',
129 | lightgreen: '#90ee90',
130 | lightpink: '#ffb6c1',
131 | lightsalmon: '#ffa07a',
132 | lightseagreen: '#20b2aa',
133 | lightskyblue: '#87cefa',
134 | lightslategray: '#778899',
135 | lightsteelblue: '#b0c4de',
136 | lightyellow: '#ffffe0',
137 | lime: '#00ff00',
138 | limegreen: '#32cd32',
139 | linen: '#faf0e6',
140 | magenta: '#ff00ff',
141 | maroon: '#800000',
142 | mediumaquamarine: '#66cdaa',
143 | mediumblue: '#0000cd',
144 | mediumorchid: '#ba55d3',
145 | mediumpurple: '#9370d8',
146 | mediumseagreen: '#3cb371',
147 | mediumslateblue: '#7b68ee',
148 | mediumspringgreen: '#00fa9a',
149 | mediumturquoise: '#48d1cc',
150 | mediumvioletred: '#c71585',
151 | midnightblue: '#191970',
152 | mintcream: '#f5fffa',
153 | mistyrose: '#ffe4e1',
154 | moccasin: '#ffe4b5',
155 | navajowhite: '#ffdead',
156 | navy: '#000080',
157 | oldlace: '#fdf5e6',
158 | olive: '#808000',
159 | olivedrab: '#6b8e23',
160 | orange: '#ffa500',
161 | orangered: '#ff4500',
162 | orchid: '#da70d6',
163 | palegoldenrod: '#eee8aa',
164 | palegreen: '#98fb98',
165 | paleturquoise: '#afeeee',
166 | palevioletred: '#d87093',
167 | papayawhip: '#ffefd5',
168 | peachpuff: '#ffdab9',
169 | peru: '#cd853f',
170 | pink: '#ffc0cb',
171 | plum: '#dda0dd',
172 | powderblue: '#b0e0e6',
173 | purple: '#800080',
174 | red: '#ff0000',
175 | rosybrown: '#bc8f8f',
176 | royalblue: '#4169e1',
177 | saddlebrown: '#8b4513',
178 | salmon: '#fa8072',
179 | sandybrown: '#f4a460',
180 | seagreen: '#2e8b57',
181 | seashell: '#fff5ee',
182 | sienna: '#a0522d',
183 | silver: '#c0c0c0',
184 | skyblue: '#87ceeb',
185 | slateblue: '#6a5acd',
186 | slategray: '#708090',
187 | snow: '#fffafa',
188 | springgreen: '#00ff7f',
189 | steelblue: '#4682b4',
190 | tan: '#d2b48c',
191 | teal: '#008080',
192 | thistle: '#d8bfd8',
193 | tomato: '#ff6347',
194 | turquoise: '#40e0d0',
195 | violet: '#ee82ee',
196 | wheat: '#f5deb3',
197 | white: '#ffffff',
198 | whitesmoke: '#f5f5f5',
199 | yellow: '#ffff00',
200 | yellowgreen: '#9acd32'
201 | };
202 |
--------------------------------------------------------------------------------
/server/constants.js:
--------------------------------------------------------------------------------
1 | var constants = {
2 | title: 'Code Blocks',
3 | cache: {
4 | ttl: 14400, // in seconds
5 | previewText: 'preview_text'
6 | },
7 | errors: {
8 | insert: 'Can\'t insert here.',
9 | getUserPreferences: 'Couldn\'t get user preferences.',
10 | selectText: 'Please select some text.',
11 | themeNotFound: 'Couldn\'t get theme.',
12 | getSelection: 'Couldn\'t get selection.',
13 | multipleBlocks: 'Can\'t format multiple blocks.'
14 | },
15 | themes: {
16 | base: 'default'
17 | },
18 | document: {
19 | font: 'Consolas',
20 | /**
21 | * A map of CSS attributes to document attributes.
22 | */
23 | docAttrs: {
24 | background: DocumentApp.Attribute.BACKGROUND_COLOR,
25 | bold: DocumentApp.Attribute.BOLD,
26 | bolder: DocumentApp.Attribute.BOLD,
27 | '700': DocumentApp.Attribute.BOLD, // juice transforms bold to 700
28 | normal: undefined, // to reset bold
29 | '400': undefined,
30 | color: DocumentApp.Attribute.FOREGROUND_COLOR,
31 | italic: DocumentApp.Attribute.ITALIC,
32 | 'line-through': DocumentApp.Attribute.STRIKETHROUGH,
33 | underline: DocumentApp.Attribute.UNDERLINE
34 | },
35 | cssAttrs: {
36 | fontWeight: 'font-weight',
37 | fontStyle: 'font-style',
38 | textDecoration: 'text-decoration',
39 | background: 'background',
40 | color: 'color'
41 | }
42 | }
43 | };
44 |
--------------------------------------------------------------------------------
/server/document.js:
--------------------------------------------------------------------------------
1 | /**
2 | * Gets the user's current selection if it exists. If there is no selection
3 | * but the cursor is in a table cell, sets the user's selection to the entire
4 | * cell and returns it. Otherwise, throws an error.
5 | *
6 | * @returns {GoogleAppsScript.Document.Range}
7 | */
8 | function getSelection() {
9 | var selection = DocumentApp.getActiveDocument().getSelection();
10 |
11 | if (selection) {
12 | // highlighting multiple cells is not supported
13 | if (hasMultipleCells(selection)) {
14 | throw constants.errors.multipleBlocks;
15 | }
16 | return selection;
17 | }
18 |
19 | // if the cursor is already in a cell, just select it for the user
20 | var document = DocumentApp.getActiveDocument();
21 | var container = document
22 | .getCursor()
23 | .getElement()
24 | .getParent();
25 |
26 | if (!isCell(container)) {
27 | container = container.getParent();
28 | }
29 | if (!isCell(container)) {
30 | throw constants.errors.selectText;
31 | }
32 |
33 | selection = document
34 | .newRange()
35 | .addElement(container)
36 | .build();
37 |
38 | document.setSelection(selection);
39 |
40 | return selection;
41 | }
42 |
43 | /**
44 | * Gets the text the user has selected. If there is no selection,
45 | * this function displays an error message.
46 | *
47 | * @param {GoogleAppsScript.Document.Range} selection
48 | * @return {string} the selected text
49 | */
50 | function getTextFromSelection(selection) {
51 | var elements = selection.getRangeElements();
52 | try {
53 | var result = elements.map(function (e) {
54 | var element = e.getElement();
55 | var text = element.asText().getText();
56 |
57 | if (e.isPartial()) {
58 | var startIndex = e.getStartOffset();
59 | var endIndex = e.getEndOffsetInclusive();
60 | return text.slice(startIndex, endIndex + 1);
61 | } else if (element.editAsText) {
62 | return text;
63 | }
64 | });
65 | } catch (err) {
66 | logError(constants.errors.getSelection, err);
67 | throw constants.errors.getSelection;
68 | }
69 |
70 | if (!result) {
71 | throw constants.errors.selectText;
72 | }
73 |
74 | return result.join('\n');
75 | }
76 |
77 | /**
78 | * Replaces the current selection with the provided HTML. This is gnarly.
79 | *
80 | * @param {GoogleAppsScript.Document.Range} selection
81 | * @param {string} html
82 | * @param {boolean} noBackground
83 | */
84 | function replaceSelection(selection, html, noBackground) {
85 | var document = DocumentApp.getActiveDocument();
86 | var body = document.getBody();
87 |
88 | var block = XmlService.parse(html);
89 | var root = block.getRootElement();
90 |
91 | var replaced = false;
92 | var ranges = selection.getRangeElements();
93 | for (var i = ranges.length - 1; i >= 0; i--) {
94 | var range = ranges[i];
95 | var element = range.getElement();
96 |
97 | // handle partials first
98 | if (range.isPartial()) {
99 | var parent = element.getParent();
100 | var asText = element.editAsText();
101 | var text = asText.getText();
102 | var start = range.getStartOffset();
103 | var end = range.getEndOffsetInclusive();
104 |
105 | // keep copies of surrounding text
106 | var before = start !== -1 && text.slice(0, start);
107 | var after = end !== -1 && text.slice(end + 1);
108 | var beforeEndsWithCr = before &&
109 | before.charAt(before.length - 1) === '\r';
110 | var afterStartsWithCr = after &&
111 | after.charAt(0) === '\r';
112 |
113 | if (beforeEndsWithCr && afterStartsWithCr) {
114 | // e.g. selection is full line with text above and below
115 | if (!replaced) {
116 | // copy before & after as text elements (with attrs)
117 | var copyBefore = asText.copy();
118 | var copyAfter = asText.copy();
119 | copyBefore = copyBefore.deleteText(start, text.length - 1);
120 | copyAfter = copyAfter.deleteText(0, end);
121 |
122 | // remove original element
123 | element.removeFromParent();
124 |
125 | // append to parent: before, table, after
126 | parent.appendText(copyBefore);
127 | var table = insertHtmlAsCell(parent, root, noBackground);
128 | var index = body.getChildIndex(table);
129 | var par = body.insertParagraph(index + 1, '');
130 | par.appendText(copyAfter);
131 | replaced = true;
132 | }
133 | } else if (before || after) {
134 | // e.g. selection is full line with empty line above or below
135 | if (!after && beforeEndsWithCr) {
136 | if (!replaced) {
137 | insertHtmlAsCell(parent, root, noBackground);
138 | replaced = true;
139 | }
140 | } else if (!before && afterStartsWithCr) {
141 | if (!replaced) {
142 | var nextContainer = parent.getPreviousSibling();
143 | insertHtmlAsCell(nextContainer, root, noBackground);
144 | replaced = true;
145 | }
146 | }
147 | // e.g. selection is part of a line
148 | asText.deleteText(start, end);
149 | if (!replaced) {
150 | // just insert text with no table
151 | insertHtmlAsText(element, root, start, noBackground);
152 | replaced = true;
153 | }
154 | } else if (!replaced) {
155 | // e.g. selection is line with empty lines above and below
156 | insertHtmlAsCell(parent, root, noBackground);
157 | try {
158 | var parentIndex = document.getBody().getChildIndex(parent);
159 | if (parentIndex && !isCell(element) && !isCell(parent)) {
160 | parent.removeFromParent();
161 | }
162 | } catch (e) {
163 | // ignore: paragraph was already removed from table cell
164 | }
165 | replaced = true;
166 | }
167 | } else {
168 | // e.g. selection is full container element
169 | if (!replaced) {
170 | insertHtmlAsCell(element, root, noBackground);
171 | if (!isCell(element)) {
172 | element.removeFromParent();
173 | }
174 | replaced = true;
175 | } else {
176 | element.removeFromParent();
177 | }
178 | }
179 | }
180 | }
181 |
182 | function insertHtmlAsCell(element, root, noBackground) {
183 | var cell;
184 | if (element.getType() === DocumentApp.ElementType.TABLE_CELL) {
185 | element.clear();
186 | cell = element;
187 | } else {
188 | var parent = element.getParent();
189 | if (parent.getType() === DocumentApp.ElementType.TABLE_CELL) {
190 | parent.clear();
191 | cell = parent;
192 | } else {
193 | // insert table
194 | var body = DocumentApp.getActiveDocument().getBody();
195 | var index = body.getChildIndex(element);
196 | var table = body.insertTable(index + 1);
197 |
198 | // remove border
199 | table.setBorderWidth(0);
200 |
201 | // append cell with paragraph
202 | cell = table.appendTableRow().appendTableCell();
203 | }
204 | }
205 |
206 | // set cell background color
207 | if (!noBackground) {
208 | var rootStyle = root.getAttribute('style');
209 | var rootAttrs = extendFromStyle({}, rootStyle);
210 | var rootBgc = rootAttrs[DocumentApp.Attribute.BACKGROUND_COLOR];
211 | if (rootBgc) {
212 | rootBgc = colorToHex(rootBgc);
213 | cell.setBackgroundColor(rootBgc);
214 | }
215 | }
216 |
217 | var par = cell.appendParagraph('');
218 | insertHtmlAsText(par, root, 0, noBackground);
219 |
220 | // clean up cell (remove initial paragraph)
221 | cell.getChild(0).removeFromParent();
222 |
223 | return table;
224 | }
225 |
226 | /**
227 | * Parses an HTML block as XML and inserts all of its children into the
228 | * document, respecting the 'style' attribute when possible. Each child node
229 | * inherits style properties from its parent.
230 | *
231 | * @param {GoogleAppsScript.Document.ContainerElement} element
232 | * @param {GoogleAppsScript.XML.Document.Element} root
233 | * @param {number} index
234 | * @param {boolean} noBackground
235 | */
236 | function insertHtmlAsText(element, root, index, noBackground) {
237 | var baseAttrs = {};
238 | baseAttrs[DocumentApp.Attribute.FONT_FAMILY] = constants.document.font;
239 |
240 | // disable font style attrs so they don't carry over to new elements
241 | delete baseAttrs[DocumentApp.Attribute.BOLD];
242 | delete baseAttrs[DocumentApp.Attribute.ITALIC];
243 | delete baseAttrs[DocumentApp.Attribute.UNDERLINE];
244 | delete baseAttrs[DocumentApp.Attribute.STRIKETHROUGH];
245 |
246 | var textToAppend = '';
247 | var groupedAttrs = [];
248 |
249 | // insert nodes
250 | var children = [{
251 | node: root,
252 | attrs: baseAttrs
253 | }];
254 | while (children.length > 0) {
255 | var child = children.pop();
256 | var type = child.node.getType();
257 |
258 | if (type === XmlService.ContentTypes.TEXT) {
259 | var str = child.node.getText();
260 | groupedAttrs.push({
261 | start: textToAppend.length,
262 | end: textToAppend.length + str.length - 1,
263 | attrs: child.attrs
264 | });
265 | textToAppend += str;
266 | } else if (type === XmlService.ContentTypes.ELEMENT) {
267 | // pass new style attributes down the stack
268 | var e = child.node.asElement();
269 | var style = e.getAttribute('style');
270 | var childAttrs = extendFromStyle(child.attrs, style, noBackground);
271 |
272 | var newNodes = e.getAllContent();
273 | for (var i = newNodes.length - 1; i >= 0; i--) {
274 | children.push({
275 | node: newNodes[i],
276 | attrs: childAttrs
277 | });
278 | }
279 | }
280 | }
281 |
282 | // append the full text and set its attributes in groups
283 | var asText = element.editAsText();
284 | asText.insertText(index, textToAppend);
285 | groupedAttrs.forEach(function setAttrs(group) {
286 | asText.setAttributes(
287 | index + group.start,
288 | index + group.end,
289 | group.attrs
290 | );
291 | });
292 | }
293 |
294 | function extendFromStyle(oldAttrs, style, noBackground) {
295 | var attrs = cloneObj(oldAttrs);
296 | if (!style) {
297 | return attrs;
298 | }
299 |
300 | var styleVal = style.getValue();
301 | var styles = styleVal.split(';');
302 |
303 | return styles.reduce(function addStyle(result, style) {
304 | var pieces = style.split(':');
305 | if (pieces.length === 2 && pieces[0] && pieces[1]) {
306 | var prop = pieces[0].trim().toLowerCase();
307 | var val = pieces[1].trim().toLowerCase();
308 | setDocAttr(result, prop, val, noBackground);
309 | }
310 | return result;
311 | }, attrs);
312 | }
313 |
314 | /**
315 | * Sets an element's Document.Attribute based on the given CSS property.
316 | *
317 | * @param {Object} attrs
318 | * @param {string} prop
319 | * @param {string} val
320 | * @param {boolean} noBackground
321 | */
322 | function setDocAttr(attrs, prop, val, noBackground) {
323 | // handle special cases
324 | // noinspection FallThroughInSwitchStatementJS
325 | switch (prop) {
326 | // font style
327 | case constants.document.cssAttrs.fontWeight:
328 | case constants.document.cssAttrs.fontStyle:
329 | case constants.document.cssAttrs.textDecoration:
330 | attrName = constants.document.docAttrs[val];
331 | if (attrName) {
332 | attrs[attrName] = true;
333 | }
334 | return;
335 | case constants.document.cssAttrs.background:
336 | if (noBackground) {
337 | return;
338 | }
339 | case constants.document.cssAttrs.color:
340 | val = colorToHex(val);
341 | break;
342 | }
343 |
344 | // everything else
345 | var attrName = constants.document.docAttrs[prop];
346 | if (attrName) {
347 | attrs[attrName] = val;
348 | }
349 | }
350 |
351 | /**
352 | * @param {GoogleAppsScript.Document.Range} range
353 | * @returns {boolean} whether the range contains multiple table cells
354 | */
355 | function hasMultipleCells(range) {
356 | var ranges = range.getRangeElements();
357 | var numCells = ranges.filter(hasCell).length;
358 | return ranges.some(hasTable) || numCells > 1;
359 | }
360 |
361 | /**
362 | * @param {GoogleAppsScript.Document.RangeElement} rangeElement
363 | * @returns {boolean} whether rangeElement contains a table
364 | */
365 | function hasTable(rangeElement) {
366 | var element = rangeElement.getElement();
367 | return element.getType() === DocumentApp.ElementType.TABLE;
368 | }
369 |
370 | /**
371 | * @param {GoogleAppsScript.Document.RangeElement} rangeElement
372 | * @returns {boolean} whether rangeElement contains a table cell
373 | */
374 | function hasCell(rangeElement) {
375 | var element = rangeElement.getElement();
376 | return isCell(element);
377 | }
378 |
379 | /**
380 | * @param {GoogleAppsScript.Document.Element|
381 | * GoogleAppsScript.Document.ContainerElement} element
382 | * @returns {boolean} whether element is a table cell
383 | */
384 | function isCell(element) {
385 | return element.getType() === DocumentApp.ElementType.TABLE_CELL;
386 | }
387 |
--------------------------------------------------------------------------------
/server/main.js:
--------------------------------------------------------------------------------
1 | //noinspection JSUnusedLocalSymbols
2 | /**
3 | * Creates a menu entry in the Google Docs UI when the document is opened.
4 | *
5 | * @param {Object} e The event parameter for a simple onOpen trigger. To
6 | * determine which authorization mode the trigger is running in, inspect
7 | * e.authMode.
8 | */
9 | function onOpen(e) {
10 | DocumentApp.getUi().createAddonMenu()
11 | .addItem('Start', 'showSidebar')
12 | .addToUi();
13 | }
14 |
15 | //noinspection JSUnusedGlobalSymbols
16 | /**
17 | * Runs when the add-on is installed.
18 | *
19 | * @param {Object} e The event parameter for a simple onInstall trigger.
20 | */
21 | function onInstall(e) {
22 | onOpen(e);
23 | }
24 |
25 | /**
26 | * Opens a sidebar in the document containing the add-on's user interface.
27 | */
28 | function showSidebar() {
29 | var ui = HtmlService.createTemplateFromFile('sidebar').evaluate()
30 | .setSandboxMode(HtmlService.SandboxMode.IFRAME)
31 | .setTitle(constants.title);
32 |
33 | DocumentApp.getUi().showSidebar(ui);
34 | }
35 |
36 | // noinspection JSUnusedGlobalSymbols
37 | /**
38 | * @returns {{
39 | * themes: Array.,
40 | * prefs: {language: string, theme: string, noBackground: string}
41 | * }}
42 | */
43 | function getThemesAndUserPrefs() {
44 | var scriptCache = CacheService.getScriptCache();
45 |
46 | return {
47 | themes: loadThemes(scriptCache),
48 | prefs: getUserPrefs()
49 | };
50 | }
51 |
52 | // noinspection JSUnusedGlobalSymbols
53 | /**
54 | * Saves the user's preferences and gets the user-selected text and CSS for
55 | * the selected theme.
56 | *
57 | * @param {Object} prefs
58 | * @param {string} prefs.language
59 | * @param {string} prefs.theme
60 | * @param {boolean} prefs.noBackground
61 | * @returns {{selection: string, css: string}}
62 | */
63 | function getSelectionAndThemeCssForPreview(prefs) {
64 | var selection = getSelection();
65 | var selectedText = getTextFromSelection(selection);
66 | var css = getThemeCss(prefs.theme);
67 |
68 | cacheSelection(selectedText);
69 | saveUserPrefs(prefs);
70 |
71 | return {
72 | selection: selectedText,
73 | css: css
74 | };
75 | }
76 |
77 | // noinspection JSUnusedGlobalSymbols
78 | /**
79 | * Replaces the text of the current selection with the provided block, or
80 | * throws an error if there is no selection. If multiple elements are selected,
81 | * only inserts the block in the last element that can contain text and
82 | * removes the other elements.
83 | *
84 | * @param {string} html the HTML to replace the current selection with
85 | * @param {boolean} noBackground
86 | * @param {GoogleAppsScript.Document.Range} [selection]
87 | */
88 | function insertCode(html, noBackground, selection) {
89 | if (!selection) {
90 | selection = getSelection();
91 | }
92 | try {
93 | replaceSelection(selection, html, noBackground)
94 | } catch (err) {
95 | logError(constants.errors.insert, err);
96 | throw constants.errors.insert;
97 | }
98 | }
99 |
100 | // noinspection JSUnusedGlobalSymbols
101 | /**
102 | * Replaces the text of the current selection with the provided block if the
103 | * user's selection has not changed since the last preview was rendered, or
104 | * gets the user-selected text and CSS for the selected theme.
105 | *
106 | * @param {string} html the preview HTML with inline CSS
107 | * @param {Object} prefs
108 | * @param {string} prefs.language
109 | * @param {string} prefs.theme
110 | * @param {boolean} prefs.noBackground
111 | * @returns {{selection: string, css: string}|undefined}
112 | */
113 | function insertCodeOrGetSelectionAndThemeCss(html, prefs) {
114 | var selection = getSelection();
115 | var selectedText = getTextFromSelection(selection);
116 |
117 | if (alreadySelected(selectedText) && alreadySaved(prefs)) {
118 | // the selection hasn't changed since the last preview,
119 | // so we can insert the provided html
120 | insertCode(html, prefs.noBackground, selection);
121 | } else {
122 | saveUserPrefs(prefs);
123 |
124 | return {
125 | selection: selectedText,
126 | css: getThemeCss(prefs.theme)
127 | };
128 | }
129 | }
130 |
131 | // noinspection JSUnusedGlobalSymbols
132 | /**
133 | * Helper function that puts external JS / CSS into the HTML file.
134 | *
135 | * @param {string} filename
136 | * @returns {string} file contents
137 | */
138 | function include(filename) {
139 | return HtmlService.createHtmlOutputFromFile(filename).getContent();
140 | }
141 |
--------------------------------------------------------------------------------
/server/util.js:
--------------------------------------------------------------------------------
1 | /**
2 | * @returns {Object} The user's preferences, if they exist.
3 | */
4 | /**
5 | * @returns {Object} the users's preferences
6 | */
7 | function getUserPrefs() {
8 | try {
9 | var userProps = PropertiesService.getUserProperties().getProperties();
10 | } catch (err) {
11 | logError(constants.errors.getUserPreferences, err);
12 | throw constants.errors.getUserPreferences;
13 | }
14 |
15 | return {
16 | language: userProps.language,
17 | theme: userProps.theme,
18 | noBackground: userProps.noBackground === 'true'
19 | }
20 | }
21 |
22 | /**
23 | * @param {Object} prefs
24 | * @param {string} prefs.language
25 | * @param {string} prefs.theme
26 | * @param {boolean} prefs.noBackground
27 | */
28 | function saveUserPrefs(prefs) {
29 | PropertiesService.getUserProperties().setProperties(prefs);
30 | }
31 |
32 | /**
33 | * todo: doc
34 | *
35 | * @param {Object} prefs
36 | * @param {string} prefs.language
37 | * @param {string} prefs.theme
38 | * @param {boolean} prefs.noBackground
39 | * @returns {boolean}
40 | */
41 | function alreadySaved(prefs) {
42 | var userPrefs = getUserPrefs();
43 | return prefs.language === userPrefs.language &&
44 | prefs.theme === userPrefs.theme &&
45 | prefs.noBackground === userPrefs.noBackground;
46 | }
47 |
48 | /**
49 | * todo: doc
50 | *
51 | * @param {string} selectedText
52 | * @returns {boolean}
53 | */
54 | function alreadySelected(selectedText) {
55 | var userCache = CacheService.getUserCache();
56 | var previewTextDigest = userCache.get(constants.cache.previewText);
57 | previewTextDigest = JSON.parse(previewTextDigest);
58 | if (previewTextDigest) {
59 | var selectedTextDigest = Utilities.computeDigest(
60 | Utilities.DigestAlgorithm.MD5, selectedText
61 | );
62 | }
63 | return arraysAreEqual(selectedTextDigest, previewTextDigest);
64 | }
65 |
66 | /**
67 | * todo: doc
68 | *
69 | * @param {string} selectedText
70 | */
71 | function cacheSelection(selectedText) {
72 | var userCache = CacheService.getUserCache();
73 | var hash = Utilities.computeDigest(
74 | Utilities.DigestAlgorithm.MD5, selectedText
75 | );
76 | var hashVal = JSON.stringify(hash);
77 | userCache.put(constants.cache.previewText, hashVal);
78 | }
79 |
80 | /**
81 | * Gets the list of supported color themes, caching their CSS if necessary.
82 | *
83 | * @param {GoogleAppsScript.Cache.Cache} scriptCache
84 | * @returns {Array.} a list of all theme names
85 | */
86 | function loadThemes(scriptCache) {
87 | var html = HtmlService.createHtmlOutputFromFile('styles.html');
88 | var xml = XmlService.parse(html.getContent());
89 | var root = xml.getRootElement();
90 | var styles = root.getChildren();
91 |
92 | var defaultCss = scriptCache.get(constants.themes.base);
93 | if (defaultCss) {
94 | // css is still cached
95 | return styles.map(function toThemeName(style) {
96 | return style.getAttribute('id').getValue();
97 | });
98 | }
99 |
100 | // need to cache themes
101 | return styles.map(function toThemeNameAndCacheCss(style) {
102 | var themeName = style.getAttribute('id').getValue();
103 | var css = style.getText();
104 |
105 | try {
106 | scriptCache.put(themeName, css, constants.cache.ttl);
107 | } catch (e) {
108 | logError('Failed to cache CSS', e);
109 | }
110 |
111 | return themeName;
112 | });
113 | }
114 |
115 | /**
116 | * Gets a theme's CSS, caching it if necessary.
117 | *
118 | * @param {string} themeName
119 | * @returns {string} the theme's CSS
120 | */
121 | function getThemeCss(themeName) {
122 | var scriptCache = CacheService.getScriptCache();
123 |
124 | var css = getThemeCssFromCache(scriptCache, themeName);
125 | if (css === null) {
126 | // reload and cache the theme css
127 | loadThemes(scriptCache);
128 |
129 | css = getThemeCssFromCache(scriptCache, themeName);
130 | if (css === null) {
131 | throw constants.errors.themeNotFound;
132 | }
133 | }
134 |
135 | return css;
136 | }
137 |
138 | /**
139 | * Gets a theme's CSS from the provided cache.
140 | *
141 | * @param {GoogleAppsScript.Cache.Cache} scriptCache
142 | * @param {string} themeName
143 | * @returns {string|null} the theme's CSS if cached, null otherwise
144 | */
145 | function getThemeCssFromCache(scriptCache, themeName) {
146 | if (themeName !== constants.themes.base) {
147 | return scriptCache.get(themeName);
148 | }
149 |
150 | // prepend default css to the theme
151 | var cached = scriptCache.getAll([constants.themes.base, themeName]);
152 | var baseCss = cached[constants.themes.base];
153 | var css = cached[themeName];
154 |
155 | return (baseCss && css) ? baseCss + css : null;
156 | }
157 |
158 | function cloneObj(obj) {
159 | // todo: optimize?
160 | return JSON.parse(JSON.stringify(obj));
161 | }
162 |
163 | /**
164 | * @param {*} lhs
165 | * @param {*} rhs
166 | * @returns {boolean}
167 | */
168 | function arraysAreEqual(lhs, rhs) {
169 | if (lhs === rhs) {
170 | return true;
171 | }
172 | if (lhs === null || rhs === null) {
173 | return false;
174 | }
175 | if (lhs.length !== rhs.length) {
176 | return false;
177 | }
178 |
179 | for (var i = 0; i < lhs.length; i++) {
180 | if (lhs[i] !== rhs[i]) {
181 | return false;
182 | }
183 | }
184 |
185 | return true;
186 | }
187 |
188 | function logError(msg, err) {
189 | Logger.log(msg + ': %s', err);
190 | }
191 |
--------------------------------------------------------------------------------
/terms-of-service.md:
--------------------------------------------------------------------------------
1 | # Code Blocks Terms of Service
2 |
3 | ## 1. Terms
4 |
5 | By accessing our app, Code Blocks, you are agreeing to be bound by these terms of service, all applicable laws and regulations, and agree that you are responsible for compliance with any applicable local laws. If you do not agree with any of these terms, you are prohibited from using or accessing Code Blocks. The materials contained in Code Blocks are protected by applicable copyright and trademark law.
6 |
7 | ## 2. Use License
8 |
9 | 1. Permission is granted to temporarily download multiple copies of Code Blocks per device for personal or commercial transitory viewing only. This is the grant of a license, not a transfer of title, and under this license you may not:
10 | 1. remove any copyright or other proprietary notations from the materials;
11 | 1. This license shall automatically terminate if you violate any of these restrictions and may be terminated by Code Blocks at any time. Upon terminating your viewing of these materials or upon the termination of this license, you must destroy any downloaded materials in your possession whether in electronic or printed format.
12 |
13 | ## 1. Disclaimer
14 |
15 | 1. The materials within Code Blocks are provided on an 'as is' basis. Code Blocks makes no warranties, expressed or implied, and hereby disclaims and negates all other warranties including, without limitation, implied warranties or conditions of merchantability, fitness for a particular purpose, or non-infringement of intellectual property or other violation of rights.
16 |
17 | 2. Further, Code Blocks does not warrant or make any representations concerning the accuracy, likely results, or reliability of the use of the materials on its website or otherwise relating to such materials or on any sites linked to Code Blocks.
18 |
19 | ## 4. Limitations
20 |
21 | In no event shall Code Blocks or its suppliers be liable for any damages (including, without limitation, damages for loss of data or profit, or due to business interruption) arising out of the use or inability to use Code Blocks, even if Code Blocks or a Code Blocks authorized representative has been notified orally or in writing of the possibility of such damage. Because some jurisdictions do not allow limitations on implied warranties, or limitations of liability for consequential or incidental damages, these limitations may not apply to you.
22 |
23 | ## 5. Accuracy of materials
24 |
25 | The materials appearing in Code Blocks could include technical, typographical, or photographic errors. Code Blocks does not warrant that any of the materials on Code Blocks are accurate, complete or current. Code Blocks may make changes to the materials contained in Code Blocks at any time without notice. However Code Blocks does not make any commitment to update the materials.
26 |
27 | ## 6. Links
28 |
29 | Code Blocks has not reviewed all of the sites linked to its app and is not responsible for the contents of any such linked site. The inclusion of any link does not imply endorsement by Code Blocks of the site. Use of any such linked website is at the user's own risk.
30 |
31 | ## 7. Modifications
32 |
33 | Code Blocks may revise these terms of service for its app at any time without notice. By using Code Blocks you are agreeing to be bound by the then current version of these terms of service.
34 |
35 | ## 8. Governing Law
36 |
37 | These terms and conditions are governed by and construed in accordance with the laws of California and you irrevocably submit to the exclusive jurisdiction of the courts in that State or location.
38 |
39 | ---
40 |
41 | [Homepage](https://www.alexwforsythe.com/code-blocks/) | [G Suite Marketplace](https://chrome.google.com/webstore/detail/code-blocks/ebieibfdjgmmimpldgengceekpfefmfd) | [Privacy Policy](https://www.alexwforsythe.com/code-blocks/privacy-policy) | [Terms of Service](https://www.alexwforsythe.com/code-blocks/terms-of-service)
42 |
--------------------------------------------------------------------------------