├── .gitignore ├── .vscode └── settings.json ├── src ├── declarations.d.ts ├── index.ts ├── app-settings.ts ├── cors.ts ├── state.ts ├── aes.ts └── routes.ts ├── tsconfig.json ├── package.json ├── LICENSE ├── README.md └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | dist 3 | .env 4 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "editor.formatOnSave": true, 3 | "editor.insertSpaces": true, 4 | "editor.tabSize": 2, 5 | "files.insertFinalNewline": true 6 | } 7 | -------------------------------------------------------------------------------- /src/declarations.d.ts: -------------------------------------------------------------------------------- 1 | interface FetchEvent extends Event { 2 | request: Request; 3 | respondWith(response: Promise | Response): Promise; 4 | waitUntil(f: Promise): void; 5 | } 6 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | import { processRequest } from './routes'; 2 | 3 | addEventListener('fetch', e => { 4 | // work around as strict typescript check doesn't allow e to be of type FetchEvent 5 | const fe = e as FetchEvent 6 | fe.respondWith(processRequest(fe)); 7 | }); 8 | -------------------------------------------------------------------------------- /src/app-settings.ts: -------------------------------------------------------------------------------- 1 | export const settings = { 2 | client_id: process.env.CLIENT_ID!, 3 | client_secret: process.env.CLIENT_SECRET!, 4 | state_password: process.env.STATE_PASSWORD!, 5 | bot_token: process.env.BOT_TOKEN!, 6 | origins: process.env.ORIGINS!.split(",").map(x => x.trim()), 7 | webhook_secret: process.env.WEBHOOK_SECRET! 8 | }; 9 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "esnext", 4 | "module": "esnext", 5 | "outDir": "dist", 6 | "moduleResolution": "node", 7 | "lib": [ 8 | "esnext", 9 | "dom" 10 | ], 11 | "strict": true, 12 | "strictNullChecks": true, 13 | "noFallthroughCasesInSwitch": true, 14 | "noImplicitAny": true, 15 | "noImplicitReturns": true, 16 | "noImplicitThis": true, 17 | "noUnusedLocals": true, 18 | "noUnusedParameters": true, 19 | "forceConsistentCasingInFileNames": true, 20 | "removeComments": true 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "utterances-oauth", 3 | "version": "0.1.0", 4 | "description": "GitHub OAuth server for utterances", 5 | "main": "dist/index.js", 6 | "scripts": { 7 | "start": "cfworker run --watch --inspect src/index.ts", 8 | "build": "cfworker build src/index.ts", 9 | "deploy": "cfworker deploy --name utteranc-es --route 'api.utteranc.es/*' src/index.ts" 10 | }, 11 | "repository": { 12 | "type": "git", 13 | "url": "https://github.com/utterance/utterances-oauth" 14 | }, 15 | "license": "MIT", 16 | "devDependencies": { 17 | "@cfworker/dev": "^1.6.11", 18 | "typescript": "^4.2.4" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/cors.ts: -------------------------------------------------------------------------------- 1 | export function addCorsHeaders(res: Response, origins: string[], requestOrigin: string | null) { 2 | const permittedOrigin = requestOrigin === null || origins.indexOf(requestOrigin) === -1 ? origins[0] : requestOrigin; 3 | res.headers.append('Access-Control-Allow-Origin', permittedOrigin); 4 | res.headers.append('Access-Control-Allow-Methods', 'GET, POST, OPTIONS'); 5 | res.headers.append('Access-Control-Allow-Credentials', 'true'); 6 | res.headers.append('Access-Control-Max-Age', '86400'); // 24 hours 7 | res.headers.append('Access-Control-Allow-Headers', 'X-Requested-With, X-HTTP-Method-Override, Content-Type, Accept, Authorization, label'); 8 | } 9 | -------------------------------------------------------------------------------- /src/state.ts: -------------------------------------------------------------------------------- 1 | import { encrypt, decrypt } from "./aes"; 2 | 3 | const defaultValidityPeriod = 5 * 60 * 1000; // 5 minutes 4 | 5 | interface State { 6 | value: string; 7 | expires: number; 8 | } 9 | 10 | export function encodeState(value: string, password: string, expires = Date.now() + defaultValidityPeriod ) { 11 | const state: State = { value, expires }; 12 | return encrypt(JSON.stringify(state), password); 13 | } 14 | 15 | const invalidError = new Error('state is invalid'); 16 | const expiredError = new Error('state is expired'); 17 | 18 | export async function tryDecodeState(encryptedState: string, password: string): Promise { 19 | let state: State; 20 | try { 21 | state = JSON.parse(await decrypt(encryptedState, password)); 22 | } catch (err) { 23 | return invalidError; 24 | } 25 | if (Date.now() > state.expires) { 26 | return expiredError; 27 | } 28 | return state.value; 29 | } 30 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2018 Jeremy Danyow 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 | # utterances-oauth 2 | 3 | This repo contains the source for the [Cloudflare Worker](https://developers.cloudflare.com/workers/) that powers the GitHub OAuth flow and issue creation for Utterances. 4 | 5 | ## install 6 | 7 | ``` 8 | yarn install 9 | ``` 10 | 11 | ## configuration 12 | 13 | Create a file named `.env` at the root. File should have the following values: 14 | 15 | - BOT_TOKEN: a personal access token that will be used when creating GitHub issues. 16 | - CLIENT_ID: The client id to be used in the [GitHub OAuth web application flow](https://developer.github.com/v3/oauth/#web-application-flow) 17 | - CLIENT_SECRET: The client secret for the OAuth web application flow 18 | - STATE_PASSWORD: 32 character password for encrypting state in request headers/cookies. Generate [here](https://lastpass.com/generatepassword.php). 19 | - ORIGINS: comma delimited list of permitted origins. For CORS. 20 | 21 | Example: 22 | 23 | ``` 24 | BOT_TOKEN=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 25 | CLIENT_ID=aaaaaaaaaaaaaaaaaaaa 26 | CLIENT_SECRET=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 27 | STATE_PASSWORD=01234567890123456789012345678901 28 | ORIGINS=https://utteranc.es,http://localhost:9000 29 | ``` 30 | 31 | ## run locally 32 | 33 | ``` 34 | yarn run start 35 | ``` 36 | 37 | ## build 38 | 39 | ``` 40 | yarn run build 41 | ``` 42 | 43 | ## deploy 44 | 45 | First add the necessary CLOUDFLARE\_\* entries to your .env file. See [@cfworker/dev README](https://www.npmjs.com/package/@cfworker/dev) for more information. 46 | 47 | Then execute: 48 | 49 | ``` 50 | yarn run deploy 51 | ``` 52 | -------------------------------------------------------------------------------- /src/aes.ts: -------------------------------------------------------------------------------- 1 | export async function encrypt(plaintext: string, password: string) { 2 | const pwUtf8 = new TextEncoder().encode(password); // encode password as UTF-8 3 | const pwHash = await crypto.subtle.digest('SHA-256', pwUtf8); // hash the password 4 | 5 | const iv = crypto.getRandomValues(new Uint8Array(12)); // get 96-bit random iv 6 | 7 | const alg = { name: 'AES-GCM', iv: iv } as any; // specify algorithm to use 8 | 9 | const key = await crypto.subtle.importKey('raw', pwHash, alg, false, ['encrypt']); // generate key from pw 10 | 11 | const ptUint8 = new TextEncoder().encode(plaintext); // encode plaintext as UTF-8 12 | const ctBuffer = await crypto.subtle.encrypt(alg, key, ptUint8); // encrypt plaintext using key 13 | 14 | const ctArray = Array.from(new Uint8Array(ctBuffer)); // ciphertext as byte array 15 | const ctStr = ctArray.map(byte => String.fromCharCode(byte)).join(''); // ciphertext as string 16 | const ctBase64 = btoa(ctStr); // encode ciphertext as base64 17 | 18 | const ivHex = Array.from(iv).map(b => ('00' + b.toString(16)).slice(-2)).join(''); // iv as hex string 19 | 20 | return ivHex + ctBase64; // return iv+ciphertext 21 | } 22 | 23 | export async function decrypt(ciphertext: string, password: string) { 24 | const pwUtf8 = new TextEncoder().encode(password); // encode password as UTF-8 25 | const pwHash = await crypto.subtle.digest('SHA-256', pwUtf8); // hash the password 26 | 27 | const iv = ciphertext.slice(0, 24).match(/.{2}/g)!.map(byte => parseInt(byte, 16)); // get iv from ciphertext 28 | 29 | const alg = { name: 'AES-GCM', iv: new Uint8Array(iv) } as any; // specify algorithm to use 30 | 31 | const key = await crypto.subtle.importKey('raw', pwHash, alg, false, ['decrypt']); // use pw to generate key 32 | 33 | const ctStr = atob(ciphertext.slice(24)); // decode base64 ciphertext 34 | const ctUint8 = new Uint8Array(ctStr.match(/[\s\S]/g)!.map(ch => ch.charCodeAt(0))); // ciphertext as Uint8Array 35 | 36 | const plainBuffer = await crypto.subtle.decrypt(alg, key, ctUint8); // decrypt ciphertext using key 37 | const plaintext = new TextDecoder().decode(plainBuffer); // decode password from UTF-8 38 | 39 | return plaintext; // return the plaintext 40 | } 41 | -------------------------------------------------------------------------------- /src/routes.ts: -------------------------------------------------------------------------------- 1 | import { settings } from './app-settings'; 2 | import { encodeState, tryDecodeState } from './state'; 3 | import { addCorsHeaders } from './cors'; 4 | 5 | const authorizeUrl = 'https://github.com/login/oauth/authorize'; 6 | const accessTokenUrl = 'https://github.com/login/oauth/access_token'; 7 | 8 | export async function processRequest(fetchEvent: FetchEvent) { 9 | const response = await routeRequest(fetchEvent); 10 | applySecurityPolicy(response); 11 | return response; 12 | } 13 | 14 | async function routeRequest(fetchEvent: FetchEvent) { 15 | const request = fetchEvent.request; 16 | const { origin, pathname, searchParams: search } = new URL(request.url); 17 | 18 | if (request.method === 'OPTIONS') { 19 | const response = new Response(undefined, { status: 200, statusText: 'OK' }); 20 | addCorsHeaders(response, settings.origins, request.headers.get('origin')); 21 | return response; 22 | } else if (request.method === 'GET' && (pathname === '' || pathname === '/')) { 23 | return new Response('alive', { 24 | status: 200, 25 | statusText: 'OK', 26 | headers: { 'Content-Type': 'text/plain' } 27 | }); 28 | } else if (request.method === 'GET' && pathname === '/authorize') { 29 | return authorizeRequestHandler(origin, search); 30 | } else if (request.method === 'GET' && pathname === '/authorized') { 31 | return await authorizedRequestHandler(search); 32 | } else if (request.method === 'POST' && pathname === '/token') { 33 | const response = await tokenRequestHandler(request); 34 | addCorsHeaders(response, settings.origins, request.headers.get('origin')); 35 | return response; 36 | } else if (request.method === 'POST' && /^\/repos\/[\w-]+\/[\w-.]+\/issues$/i.test(pathname)) { 37 | const response = await postIssueRequestHandler(pathname, search, fetchEvent); 38 | addCorsHeaders(response, settings.origins, request.headers.get('origin')); 39 | return response; 40 | }else if (request.method === 'POST' && pathname === '/webhook') { 41 | return await webhookRequestHandler(fetchEvent); 42 | } else { 43 | return new Response(`Not Found: ${pathname}`, { 44 | status: 404, 45 | statusText: 'not found', 46 | headers: { 'Content-Type': 'text/plain' } 47 | }); 48 | } 49 | } 50 | 51 | function applySecurityPolicy(response: Response) { 52 | // pages are not allowed to be shown in iframes. 53 | response.headers.append('X-Frame-Options', 'DENY'); 54 | // pages do not have any cross-origin deps on scripts or css. 55 | response.headers.append('Content-Security-Policy', `default-src 'self'`); 56 | // don't cache responses. 57 | response.headers.append('Cache-Control', 'no-store, no-cache, must-revalidate, proxy-revalidate'); 58 | } 59 | 60 | function badRequest(message: string) { 61 | return new Response(message, { 62 | status: 400, 63 | statusText: 'bad request', 64 | headers: { 'Content-Type': 'text/plain' } 65 | }); 66 | } 67 | 68 | async function authorizeRequestHandler(origin: string, search: URLSearchParams) { 69 | const { client_id, state_password } = settings; 70 | 71 | const appReturnUrl = search.get('redirect_uri'); 72 | 73 | if (!appReturnUrl) { 74 | return badRequest(`"redirect_uri" is required.`); 75 | } 76 | 77 | const state = await encodeState(appReturnUrl, state_password); 78 | const redirect_uri = origin + '/authorized'; 79 | return new Response(undefined, { 80 | status: 302, 81 | statusText: 'found', 82 | headers: { 83 | Location: `${authorizeUrl}?${new URLSearchParams({ client_id, redirect_uri, state })}` 84 | } 85 | }); 86 | } 87 | 88 | async function authorizedRequestHandler(search: URLSearchParams) { 89 | const code = search.get('code'); 90 | const state = search.get('state'); 91 | 92 | if (!code) { 93 | return badRequest('"code" is required.'); 94 | } 95 | 96 | if (!state) { 97 | return badRequest('"state" is required.'); 98 | } 99 | 100 | const { client_id, client_secret, state_password } = settings; 101 | 102 | const returnUrl = await tryDecodeState(state, state_password); 103 | if (returnUrl instanceof Error) { 104 | return badRequest(returnUrl.message); 105 | } 106 | 107 | const init = { 108 | method: 'POST', 109 | body: (new URLSearchParams({ client_id, client_secret, code, state })).toString(), 110 | headers: { 111 | 'Accept': 'application/json', 112 | 'Content-Type': 'application/x-www-form-urlencoded', 113 | 'User-Agent': 'utterances' 114 | } 115 | }; 116 | 117 | let accessToken: string; 118 | try { 119 | const response = await fetch(accessTokenUrl, init); 120 | if (response.ok) { 121 | const data = await response.json(); 122 | accessToken = data.access_token; 123 | } else { 124 | throw new Error(`Access token response had status ${response.status}.`); 125 | } 126 | } catch (_) { 127 | return new Response('Unable to load token from GitHub.'); 128 | } 129 | 130 | const url = new URL(returnUrl); 131 | const session = await encodeState(accessToken, state_password, Date.now() + 1000 * 60 * 60 * 24 * 365); 132 | url.searchParams.set('utterances', session); 133 | 134 | return new Response(undefined, { 135 | status: 302, 136 | statusText: 'found', 137 | headers: { 138 | 'Location': url.href 139 | } 140 | }); 141 | } 142 | 143 | async function tokenRequestHandler(request: Request) { 144 | const { state_password } = settings; 145 | let session: string; 146 | try { 147 | session = await request.json(); 148 | } catch { 149 | return badRequest('Unable to parse body'); 150 | } 151 | const token = await tryDecodeState(session, state_password); 152 | if (token instanceof Error) { 153 | return badRequest(token.message); 154 | } 155 | return new Response(JSON.stringify(token), { 156 | status: 200, 157 | statusText: 'OK', 158 | headers: { 159 | 'Content-Type': 'application/json' 160 | } 161 | }); 162 | } 163 | 164 | async function postIssueRequestHandler(path: string, search: URLSearchParams, fetchEvent: FetchEvent) { 165 | const request = fetchEvent.request; 166 | const authorization = request.headers.get('authorization'); 167 | 168 | if (!authorization) { 169 | return badRequest('Authorization header is required.'); 170 | } 171 | 172 | const authInit = { 173 | method: 'GET', 174 | headers: { 175 | 'Authorization': authorization, 176 | 'User-Agent': 'utterances' 177 | } 178 | }; 179 | 180 | let authenticated = false; 181 | try { 182 | const response = await fetch('https://api.github.com/user', authInit); 183 | authenticated = response.ok; 184 | } catch (_) { 185 | } 186 | if (!authenticated) { 187 | return new Response(undefined, { status: 401, statusText: 'not authorized' }); 188 | } 189 | 190 | const init = { 191 | method: 'POST', 192 | headers: { 193 | 'Authorization': 'token ' + settings.bot_token, 194 | 'User-Agent': 'utterances', 195 | }, 196 | body: request.body 197 | }; 198 | try { 199 | const response = await fetch(`https://api.github.com${path}`, init); 200 | const issue = await response.json(); 201 | if (search.has('label')) { 202 | const labelsInit = { 203 | method: 'POST', 204 | headers: { 205 | 'Authorization': authorization, 206 | 'User-Agent': 'utterances', 207 | 'Accept': 'application/vnd.github.symmetra-preview+json' 208 | }, 209 | body: JSON.stringify({ labels: [search.get('label')] }) 210 | }; 211 | fetchEvent.waitUntil(fetch(`https://api.github.com${path}/${issue.number}/labels`, labelsInit)); 212 | } 213 | return new Response(JSON.stringify(issue), { 214 | status: response.status, 215 | statusText: response.statusText, 216 | headers: { 217 | 'Content-Type': 'application/json' 218 | } 219 | }); 220 | } catch (_) { 221 | return new Response('Unable to post issue to GitHub.', { 222 | status: 503, 223 | statusText: 'service unavailable', 224 | headers: { 'Content-Type': 'text/plain' } 225 | }); 226 | } 227 | } 228 | 229 | async function webhookRequestHandler(_: FetchEvent) { 230 | return new Response(undefined, { status: 204 }); 231 | } 232 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@cfworker/dev@^1.6.11": 6 | version "1.6.11" 7 | resolved "https://registry.yarnpkg.com/@cfworker/dev/-/dev-1.6.11.tgz#b3d79cc277e6285d00cccca955bfe92b6352d7f0" 8 | integrity sha512-0LTIFDoxhBNU35XQxdk/w5Q9OtS+AAXEWCB+3TuRA/p2KvSawzx32sPKWH47Nnnchm66Mc7Gf3/c4kOz4ol1yg== 9 | dependencies: 10 | "@cfworker/worker-types" "^1.6.11" 11 | "@cloudflare/workers-types" "^2.2.1" 12 | "@rollup/plugin-commonjs" "^18.0.0" 13 | "@rollup/plugin-json" "^4.1.0" 14 | "@rollup/plugin-multi-entry" "^4.0.0" 15 | "@rollup/plugin-node-resolve" "^11.2.1" 16 | "@rollup/plugin-replace" "^2.4.2" 17 | chokidar "^3.5.1" 18 | commander "^7.2.0" 19 | dotenv "^8.2.0" 20 | envinfo "^7.7.4" 21 | form-data "^4.0.0" 22 | fs-extra "^9.1.0" 23 | glob "^7.1.6" 24 | glob-promise "^4.1.0" 25 | node-cleanup "^2.1.2" 26 | node-fetch "^2.6.1" 27 | ora "^5.4.0" 28 | puppeteer "^8.0.0" 29 | rollup "^2.44.0" 30 | rollup-plugin-minify-html-literals "^1.2.6" 31 | rollup-plugin-typescript2 "^0.30.0" 32 | typescript "^4.2.3" 33 | 34 | "@cfworker/worker-types@^1.6.11": 35 | version "1.6.11" 36 | resolved "https://registry.yarnpkg.com/@cfworker/worker-types/-/worker-types-1.6.11.tgz#ebc8771ce2459a26bc16f8af6c8dcbf01025ab1a" 37 | integrity sha512-RBxuh4ctOPhm2ZZ4FY2lsUjuVCjljspk1k8SLA1yjEpd3i1zKFpmEcq3AdmPYRHbqE93xxu39vPEYXbZimfvBg== 38 | 39 | "@cloudflare/workers-types@^2.2.1": 40 | version "2.2.2" 41 | resolved "https://registry.yarnpkg.com/@cloudflare/workers-types/-/workers-types-2.2.2.tgz#1bced16bba801d7af987da835467545bb5cc7ac6" 42 | integrity sha512-kaMn2rueJ0PL1TYVGknTCh0X0x0d9G+FNXAFep7/4uqecEZoQb/63o6rOmMuiqI09zLuHV6xhKRXinokV/MY9A== 43 | 44 | "@rollup/plugin-commonjs@^18.0.0": 45 | version "18.0.0" 46 | resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-18.0.0.tgz#50dc7518b5aa9e66a270e529ea85115d269825c4" 47 | integrity sha512-fj92shhg8luw7XbA0HowAqz90oo7qtLGwqTKbyZ8pmOyH8ui5e+u0wPEgeHLH3djcVma6gUCUrjY6w5R2o1u6g== 48 | dependencies: 49 | "@rollup/pluginutils" "^3.1.0" 50 | commondir "^1.0.1" 51 | estree-walker "^2.0.1" 52 | glob "^7.1.6" 53 | is-reference "^1.2.1" 54 | magic-string "^0.25.7" 55 | resolve "^1.17.0" 56 | 57 | "@rollup/plugin-json@^4.1.0": 58 | version "4.1.0" 59 | resolved "https://registry.yarnpkg.com/@rollup/plugin-json/-/plugin-json-4.1.0.tgz#54e09867ae6963c593844d8bd7a9c718294496f3" 60 | integrity sha512-yfLbTdNS6amI/2OpmbiBoW12vngr5NW2jCJVZSBEz+H5KfUJZ2M7sDjk0U6GOOdCWFVScShte29o9NezJ53TPw== 61 | dependencies: 62 | "@rollup/pluginutils" "^3.0.8" 63 | 64 | "@rollup/plugin-multi-entry@^4.0.0": 65 | version "4.0.0" 66 | resolved "https://registry.yarnpkg.com/@rollup/plugin-multi-entry/-/plugin-multi-entry-4.0.0.tgz#8e105f16ec1bb26639eb3302c8db5665f44b9939" 67 | integrity sha512-1Sw86rwFxrNS7ECY3iSZ7T940xKnruNGpmQDgSDVTp+VTa1g5cPXNzBgp+IoOer41CiVeGFLwYwvicVoJLHEDQ== 68 | dependencies: 69 | "@rollup/plugin-virtual" "^2.0.3" 70 | matched "^5.0.0" 71 | 72 | "@rollup/plugin-node-resolve@^11.2.1": 73 | version "11.2.1" 74 | resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz#82aa59397a29cd4e13248b106e6a4a1880362a60" 75 | integrity sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg== 76 | dependencies: 77 | "@rollup/pluginutils" "^3.1.0" 78 | "@types/resolve" "1.17.1" 79 | builtin-modules "^3.1.0" 80 | deepmerge "^4.2.2" 81 | is-module "^1.0.0" 82 | resolve "^1.19.0" 83 | 84 | "@rollup/plugin-replace@^2.4.2": 85 | version "2.4.2" 86 | resolved "https://registry.yarnpkg.com/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz#a2d539314fbc77c244858faa523012825068510a" 87 | integrity sha512-IGcu+cydlUMZ5En85jxHH4qj2hta/11BHq95iHEyb2sbgiN0eCdzvUcHw5gt9pBL5lTi4JDYJ1acCoMGpTvEZg== 88 | dependencies: 89 | "@rollup/pluginutils" "^3.1.0" 90 | magic-string "^0.25.7" 91 | 92 | "@rollup/plugin-virtual@^2.0.3": 93 | version "2.0.3" 94 | resolved "https://registry.yarnpkg.com/@rollup/plugin-virtual/-/plugin-virtual-2.0.3.tgz#0afc88d75c1e1378ab290b8e9898d4edb5be0d74" 95 | integrity sha512-pw6ziJcyjZtntQ//bkad9qXaBx665SgEL8C8KI5wO8G5iU5MPxvdWrQyVaAvjojGm9tJoS8M9Z/EEepbqieYmw== 96 | 97 | "@rollup/pluginutils@^3.0.8", "@rollup/pluginutils@^3.1.0": 98 | version "3.1.0" 99 | resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-3.1.0.tgz#706b4524ee6dc8b103b3c995533e5ad680c02b9b" 100 | integrity sha512-GksZ6pr6TpIjHm8h9lSQ8pi8BE9VeubNT0OMJ3B5uZJ8pz73NPiqOtCog/x2/QzM1ENChPKxMDhiQuRHsqc+lg== 101 | dependencies: 102 | "@types/estree" "0.0.39" 103 | estree-walker "^1.0.1" 104 | picomatch "^2.2.2" 105 | 106 | "@rollup/pluginutils@^4.1.0": 107 | version "4.1.0" 108 | resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-4.1.0.tgz#0dcc61c780e39257554feb7f77207dceca13c838" 109 | integrity sha512-TrBhfJkFxA+ER+ew2U2/fHbebhLT/l/2pRk0hfj9KusXUuRXd2v0R58AfaZK9VXDQ4TogOSEmICVrQAA3zFnHQ== 110 | dependencies: 111 | estree-walker "^2.0.1" 112 | picomatch "^2.2.2" 113 | 114 | "@types/clean-css@*": 115 | version "4.2.4" 116 | resolved "https://registry.yarnpkg.com/@types/clean-css/-/clean-css-4.2.4.tgz#4fe4705c384e6ec9ee8454bc3d49089f38dc038a" 117 | integrity sha512-x8xEbfTtcv5uyQDrBXKg9Beo5QhTPqO4vM0uq4iU27/nhyRRWNEMKHjxvAb0WDvp2Mnt4Sw0jKmIi5yQF/k2Ag== 118 | dependencies: 119 | "@types/node" "*" 120 | source-map "^0.6.0" 121 | 122 | "@types/estree@*": 123 | version "0.0.47" 124 | resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.47.tgz#d7a51db20f0650efec24cd04994f523d93172ed4" 125 | integrity sha512-c5ciR06jK8u9BstrmJyO97m+klJrrhCf9u3rLu3DEAJBirxRqSCvDQoYKmxuYwQI5SZChAWu+tq9oVlGRuzPAg== 126 | 127 | "@types/estree@0.0.39": 128 | version "0.0.39" 129 | resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" 130 | integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== 131 | 132 | "@types/glob@^7.1.3": 133 | version "7.1.3" 134 | resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.1.3.tgz#e6ba80f36b7daad2c685acd9266382e68985c183" 135 | integrity sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w== 136 | dependencies: 137 | "@types/minimatch" "*" 138 | "@types/node" "*" 139 | 140 | "@types/html-minifier@^3.5.3": 141 | version "3.5.3" 142 | resolved "https://registry.yarnpkg.com/@types/html-minifier/-/html-minifier-3.5.3.tgz#5276845138db2cebc54c789e0aaf87621a21e84f" 143 | integrity sha512-j1P/4PcWVVCPEy5lofcHnQ6BtXz9tHGiFPWzqm7TtGuWZEfCHEP446HlkSNc9fQgNJaJZ6ewPtp2aaFla/Uerg== 144 | dependencies: 145 | "@types/clean-css" "*" 146 | "@types/relateurl" "*" 147 | "@types/uglify-js" "*" 148 | 149 | "@types/minimatch@*": 150 | version "3.0.4" 151 | resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.4.tgz#f0ec25dbf2f0e4b18647313ac031134ca5b24b21" 152 | integrity sha512-1z8k4wzFnNjVK/tlxvrWuK5WMt6mydWWP7+zvH5eFep4oj+UkrfiJTRtjCeBXNpwaA/FYqqtb4/QS4ianFpIRA== 153 | 154 | "@types/node@*": 155 | version "15.0.1" 156 | resolved "https://registry.yarnpkg.com/@types/node/-/node-15.0.1.tgz#ef34dea0881028d11398be5bf4e856743e3dc35a" 157 | integrity sha512-TMkXt0Ck1y0KKsGr9gJtWGjttxlZnnvDtphxUOSd0bfaR6Q1jle+sPvrzNR1urqYTWMinoKvjKfXUGsumaO1PA== 158 | 159 | "@types/relateurl@*": 160 | version "0.2.28" 161 | resolved "https://registry.yarnpkg.com/@types/relateurl/-/relateurl-0.2.28.tgz#6bda7db8653fa62643f5ee69e9f69c11a392e3a6" 162 | integrity sha1-a9p9uGU/piZD9e5p6facEaOS46Y= 163 | 164 | "@types/resolve@1.17.1": 165 | version "1.17.1" 166 | resolved "https://registry.yarnpkg.com/@types/resolve/-/resolve-1.17.1.tgz#3afd6ad8967c77e4376c598a82ddd58f46ec45d6" 167 | integrity sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw== 168 | dependencies: 169 | "@types/node" "*" 170 | 171 | "@types/uglify-js@*": 172 | version "3.13.0" 173 | resolved "https://registry.yarnpkg.com/@types/uglify-js/-/uglify-js-3.13.0.tgz#1cad8df1fb0b143c5aba08de5712ea9d1ff71124" 174 | integrity sha512-EGkrJD5Uy+Pg0NUR8uA4bJ5WMfljyad0G+784vLCNUkD+QwOJXUbBYExXfVGf7YtyzdQp3L/XMYcliB987kL5Q== 175 | dependencies: 176 | source-map "^0.6.1" 177 | 178 | "@types/yauzl@^2.9.1": 179 | version "2.9.1" 180 | resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.9.1.tgz#d10f69f9f522eef3cf98e30afb684a1e1ec923af" 181 | integrity sha512-A1b8SU4D10uoPjwb0lnHmmu8wZhR9d+9o2PKBQT2jU5YPTKsxac6M2qGAdY7VcL+dHHhARVUDmeg0rOrcd9EjA== 182 | dependencies: 183 | "@types/node" "*" 184 | 185 | agent-base@6: 186 | version "6.0.2" 187 | resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" 188 | integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== 189 | dependencies: 190 | debug "4" 191 | 192 | ansi-regex@^5.0.0: 193 | version "5.0.0" 194 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" 195 | integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== 196 | 197 | ansi-styles@^4.1.0: 198 | version "4.3.0" 199 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 200 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 201 | dependencies: 202 | color-convert "^2.0.1" 203 | 204 | anymatch@~3.1.1: 205 | version "3.1.2" 206 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" 207 | integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== 208 | dependencies: 209 | normalize-path "^3.0.0" 210 | picomatch "^2.0.4" 211 | 212 | asynckit@^0.4.0: 213 | version "0.4.0" 214 | resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" 215 | integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= 216 | 217 | at-least-node@^1.0.0: 218 | version "1.0.0" 219 | resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" 220 | integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== 221 | 222 | balanced-match@^1.0.0: 223 | version "1.0.2" 224 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 225 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 226 | 227 | base64-js@^1.3.1: 228 | version "1.5.1" 229 | resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" 230 | integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== 231 | 232 | binary-extensions@^2.0.0: 233 | version "2.2.0" 234 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" 235 | integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== 236 | 237 | bl@^4.0.3, bl@^4.1.0: 238 | version "4.1.0" 239 | resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" 240 | integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== 241 | dependencies: 242 | buffer "^5.5.0" 243 | inherits "^2.0.4" 244 | readable-stream "^3.4.0" 245 | 246 | brace-expansion@^1.1.7: 247 | version "1.1.11" 248 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 249 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 250 | dependencies: 251 | balanced-match "^1.0.0" 252 | concat-map "0.0.1" 253 | 254 | braces@~3.0.2: 255 | version "3.0.2" 256 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" 257 | integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== 258 | dependencies: 259 | fill-range "^7.0.1" 260 | 261 | buffer-crc32@~0.2.3: 262 | version "0.2.13" 263 | resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" 264 | integrity sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI= 265 | 266 | buffer@^5.2.1, buffer@^5.5.0: 267 | version "5.7.1" 268 | resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" 269 | integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== 270 | dependencies: 271 | base64-js "^1.3.1" 272 | ieee754 "^1.1.13" 273 | 274 | builtin-modules@^3.1.0: 275 | version "3.2.0" 276 | resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-3.2.0.tgz#45d5db99e7ee5e6bc4f362e008bf917ab5049887" 277 | integrity sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA== 278 | 279 | camel-case@^3.0.0: 280 | version "3.0.0" 281 | resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" 282 | integrity sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M= 283 | dependencies: 284 | no-case "^2.2.0" 285 | upper-case "^1.1.1" 286 | 287 | chalk@^4.1.0: 288 | version "4.1.1" 289 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.1.tgz#c80b3fab28bf6371e6863325eee67e618b77e6ad" 290 | integrity sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg== 291 | dependencies: 292 | ansi-styles "^4.1.0" 293 | supports-color "^7.1.0" 294 | 295 | chokidar@^3.5.1: 296 | version "3.5.1" 297 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" 298 | integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== 299 | dependencies: 300 | anymatch "~3.1.1" 301 | braces "~3.0.2" 302 | glob-parent "~5.1.0" 303 | is-binary-path "~2.1.0" 304 | is-glob "~4.0.1" 305 | normalize-path "~3.0.0" 306 | readdirp "~3.5.0" 307 | optionalDependencies: 308 | fsevents "~2.3.1" 309 | 310 | chownr@^1.1.1: 311 | version "1.1.4" 312 | resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" 313 | integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== 314 | 315 | clean-css@^4.2.1: 316 | version "4.2.3" 317 | resolved "https://registry.yarnpkg.com/clean-css/-/clean-css-4.2.3.tgz#507b5de7d97b48ee53d84adb0160ff6216380f78" 318 | integrity sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA== 319 | dependencies: 320 | source-map "~0.6.0" 321 | 322 | cli-cursor@^3.1.0: 323 | version "3.1.0" 324 | resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" 325 | integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== 326 | dependencies: 327 | restore-cursor "^3.1.0" 328 | 329 | cli-spinners@^2.5.0: 330 | version "2.6.0" 331 | resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.6.0.tgz#36c7dc98fb6a9a76bd6238ec3f77e2425627e939" 332 | integrity sha512-t+4/y50K/+4xcCRosKkA7W4gTr1MySvLV0q+PxmG7FJ5g+66ChKurYjxBCjHggHH3HA5Hh9cy+lcUGWDqVH+4Q== 333 | 334 | clone@^1.0.2: 335 | version "1.0.4" 336 | resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" 337 | integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= 338 | 339 | color-convert@^2.0.1: 340 | version "2.0.1" 341 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 342 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 343 | dependencies: 344 | color-name "~1.1.4" 345 | 346 | color-name@~1.1.4: 347 | version "1.1.4" 348 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 349 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 350 | 351 | combined-stream@^1.0.8: 352 | version "1.0.8" 353 | resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" 354 | integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== 355 | dependencies: 356 | delayed-stream "~1.0.0" 357 | 358 | commander@^2.19.0: 359 | version "2.20.3" 360 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" 361 | integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== 362 | 363 | commander@^7.2.0: 364 | version "7.2.0" 365 | resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" 366 | integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw== 367 | 368 | commondir@^1.0.1: 369 | version "1.0.1" 370 | resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" 371 | integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= 372 | 373 | concat-map@0.0.1: 374 | version "0.0.1" 375 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 376 | integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= 377 | 378 | debug@4, debug@^4.1.0, debug@^4.1.1: 379 | version "4.3.1" 380 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" 381 | integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== 382 | dependencies: 383 | ms "2.1.2" 384 | 385 | deepmerge@^4.2.2: 386 | version "4.2.2" 387 | resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" 388 | integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== 389 | 390 | defaults@^1.0.3: 391 | version "1.0.3" 392 | resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" 393 | integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730= 394 | dependencies: 395 | clone "^1.0.2" 396 | 397 | delayed-stream@~1.0.0: 398 | version "1.0.0" 399 | resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" 400 | integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk= 401 | 402 | devtools-protocol@0.0.854822: 403 | version "0.0.854822" 404 | resolved "https://registry.yarnpkg.com/devtools-protocol/-/devtools-protocol-0.0.854822.tgz#eac3a5260a6b3b4e729a09fdc0c77b0d322e777b" 405 | integrity sha512-xd4D8kHQtB0KtWW0c9xBZD5LVtm9chkMOfs/3Yn01RhT/sFIsVtzTtypfKoFfWBaL+7xCYLxjOLkhwPXaX/Kcg== 406 | 407 | dotenv@^8.2.0: 408 | version "8.2.0" 409 | resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-8.2.0.tgz#97e619259ada750eea3e4ea3e26bceea5424b16a" 410 | integrity sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw== 411 | 412 | end-of-stream@^1.1.0, end-of-stream@^1.4.1: 413 | version "1.4.4" 414 | resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" 415 | integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== 416 | dependencies: 417 | once "^1.4.0" 418 | 419 | envinfo@^7.7.4: 420 | version "7.8.1" 421 | resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475" 422 | integrity sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw== 423 | 424 | estree-walker@^0.6.1: 425 | version "0.6.1" 426 | resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-0.6.1.tgz#53049143f40c6eb918b23671d1fe3219f3a1b362" 427 | integrity sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w== 428 | 429 | estree-walker@^1.0.1: 430 | version "1.0.1" 431 | resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-1.0.1.tgz#31bc5d612c96b704106b477e6dd5d8aa138cb700" 432 | integrity sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg== 433 | 434 | estree-walker@^2.0.1: 435 | version "2.0.2" 436 | resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" 437 | integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== 438 | 439 | extract-zip@^2.0.0: 440 | version "2.0.1" 441 | resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a" 442 | integrity sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg== 443 | dependencies: 444 | debug "^4.1.1" 445 | get-stream "^5.1.0" 446 | yauzl "^2.10.0" 447 | optionalDependencies: 448 | "@types/yauzl" "^2.9.1" 449 | 450 | fd-slicer@~1.1.0: 451 | version "1.1.0" 452 | resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" 453 | integrity sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4= 454 | dependencies: 455 | pend "~1.2.0" 456 | 457 | fill-range@^7.0.1: 458 | version "7.0.1" 459 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" 460 | integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== 461 | dependencies: 462 | to-regex-range "^5.0.1" 463 | 464 | find-cache-dir@^3.3.1: 465 | version "3.3.1" 466 | resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880" 467 | integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ== 468 | dependencies: 469 | commondir "^1.0.1" 470 | make-dir "^3.0.2" 471 | pkg-dir "^4.1.0" 472 | 473 | find-up@^4.0.0: 474 | version "4.1.0" 475 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" 476 | integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== 477 | dependencies: 478 | locate-path "^5.0.0" 479 | path-exists "^4.0.0" 480 | 481 | form-data@^4.0.0: 482 | version "4.0.0" 483 | resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" 484 | integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== 485 | dependencies: 486 | asynckit "^0.4.0" 487 | combined-stream "^1.0.8" 488 | mime-types "^2.1.12" 489 | 490 | fs-constants@^1.0.0: 491 | version "1.0.0" 492 | resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" 493 | integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== 494 | 495 | fs-extra@8.1.0: 496 | version "8.1.0" 497 | resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" 498 | integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== 499 | dependencies: 500 | graceful-fs "^4.2.0" 501 | jsonfile "^4.0.0" 502 | universalify "^0.1.0" 503 | 504 | fs-extra@^9.1.0: 505 | version "9.1.0" 506 | resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" 507 | integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== 508 | dependencies: 509 | at-least-node "^1.0.0" 510 | graceful-fs "^4.2.0" 511 | jsonfile "^6.0.1" 512 | universalify "^2.0.0" 513 | 514 | fs.realpath@^1.0.0: 515 | version "1.0.0" 516 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 517 | integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= 518 | 519 | fsevents@~2.3.1: 520 | version "2.3.2" 521 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" 522 | integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== 523 | 524 | function-bind@^1.1.1: 525 | version "1.1.1" 526 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" 527 | integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== 528 | 529 | get-stream@^5.1.0: 530 | version "5.2.0" 531 | resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" 532 | integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== 533 | dependencies: 534 | pump "^3.0.0" 535 | 536 | glob-parent@~5.1.0: 537 | version "5.1.2" 538 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 539 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 540 | dependencies: 541 | is-glob "^4.0.1" 542 | 543 | glob-promise@^4.1.0: 544 | version "4.1.0" 545 | resolved "https://registry.yarnpkg.com/glob-promise/-/glob-promise-4.1.0.tgz#cde1692fd7442ce24b50e123dfe8b5f8428f35a3" 546 | integrity sha512-wOdaX1+QJi3ldbjq4fXX/BbGSjhsG6eGXqMnBjQj9ubDiDLvrXbbXRj02rA0CXbMMM7J58dajiQ72va63D7pNw== 547 | dependencies: 548 | "@types/glob" "^7.1.3" 549 | 550 | glob@^7.1.3, glob@^7.1.6: 551 | version "7.1.6" 552 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" 553 | integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== 554 | dependencies: 555 | fs.realpath "^1.0.0" 556 | inflight "^1.0.4" 557 | inherits "2" 558 | minimatch "^3.0.4" 559 | once "^1.3.0" 560 | path-is-absolute "^1.0.0" 561 | 562 | graceful-fs@^4.1.6, graceful-fs@^4.2.0: 563 | version "4.2.6" 564 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" 565 | integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== 566 | 567 | has-flag@^4.0.0: 568 | version "4.0.0" 569 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 570 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 571 | 572 | has@^1.0.3: 573 | version "1.0.3" 574 | resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" 575 | integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== 576 | dependencies: 577 | function-bind "^1.1.1" 578 | 579 | he@^1.2.0: 580 | version "1.2.0" 581 | resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" 582 | integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== 583 | 584 | html-minifier@^4.0.0: 585 | version "4.0.0" 586 | resolved "https://registry.yarnpkg.com/html-minifier/-/html-minifier-4.0.0.tgz#cca9aad8bce1175e02e17a8c33e46d8988889f56" 587 | integrity sha512-aoGxanpFPLg7MkIl/DDFYtb0iWz7jMFGqFhvEDZga6/4QTjneiD8I/NXL1x5aaoCp7FSIT6h/OhykDdPsbtMig== 588 | dependencies: 589 | camel-case "^3.0.0" 590 | clean-css "^4.2.1" 591 | commander "^2.19.0" 592 | he "^1.2.0" 593 | param-case "^2.1.1" 594 | relateurl "^0.2.7" 595 | uglify-js "^3.5.1" 596 | 597 | https-proxy-agent@^5.0.0: 598 | version "5.0.0" 599 | resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz#e2a90542abb68a762e0a0850f6c9edadfd8506b2" 600 | integrity sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA== 601 | dependencies: 602 | agent-base "6" 603 | debug "4" 604 | 605 | ieee754@^1.1.13: 606 | version "1.2.1" 607 | resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" 608 | integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== 609 | 610 | inflight@^1.0.4: 611 | version "1.0.6" 612 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 613 | integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= 614 | dependencies: 615 | once "^1.3.0" 616 | wrappy "1" 617 | 618 | inherits@2, inherits@^2.0.3, inherits@^2.0.4: 619 | version "2.0.4" 620 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 621 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 622 | 623 | is-binary-path@~2.1.0: 624 | version "2.1.0" 625 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" 626 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== 627 | dependencies: 628 | binary-extensions "^2.0.0" 629 | 630 | is-core-module@^2.2.0: 631 | version "2.3.0" 632 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.3.0.tgz#d341652e3408bca69c4671b79a0954a3d349f887" 633 | integrity sha512-xSphU2KG9867tsYdLD4RWQ1VqdFl4HTO9Thf3I/3dLEfr0dbPTWKsuCKrgqMljg4nPE+Gq0VCnzT3gr0CyBmsw== 634 | dependencies: 635 | has "^1.0.3" 636 | 637 | is-extglob@^2.1.1: 638 | version "2.1.1" 639 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 640 | integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= 641 | 642 | is-glob@^4.0.1, is-glob@~4.0.1: 643 | version "4.0.1" 644 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" 645 | integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== 646 | dependencies: 647 | is-extglob "^2.1.1" 648 | 649 | is-interactive@^1.0.0: 650 | version "1.0.0" 651 | resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" 652 | integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== 653 | 654 | is-module@^1.0.0: 655 | version "1.0.0" 656 | resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" 657 | integrity sha1-Mlj7afeMFNW4FdZkM2tM/7ZEFZE= 658 | 659 | is-number@^7.0.0: 660 | version "7.0.0" 661 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 662 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 663 | 664 | is-reference@^1.2.1: 665 | version "1.2.1" 666 | resolved "https://registry.yarnpkg.com/is-reference/-/is-reference-1.2.1.tgz#8b2dac0b371f4bc994fdeaba9eb542d03002d0b7" 667 | integrity sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ== 668 | dependencies: 669 | "@types/estree" "*" 670 | 671 | is-unicode-supported@^0.1.0: 672 | version "0.1.0" 673 | resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" 674 | integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== 675 | 676 | jsonfile@^4.0.0: 677 | version "4.0.0" 678 | resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" 679 | integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= 680 | optionalDependencies: 681 | graceful-fs "^4.1.6" 682 | 683 | jsonfile@^6.0.1: 684 | version "6.1.0" 685 | resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" 686 | integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== 687 | dependencies: 688 | universalify "^2.0.0" 689 | optionalDependencies: 690 | graceful-fs "^4.1.6" 691 | 692 | locate-path@^5.0.0: 693 | version "5.0.0" 694 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" 695 | integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== 696 | dependencies: 697 | p-locate "^4.1.0" 698 | 699 | log-symbols@^4.1.0: 700 | version "4.1.0" 701 | resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" 702 | integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== 703 | dependencies: 704 | chalk "^4.1.0" 705 | is-unicode-supported "^0.1.0" 706 | 707 | lower-case@^1.1.1: 708 | version "1.1.4" 709 | resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" 710 | integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw= 711 | 712 | magic-string@^0.25.0, magic-string@^0.25.7: 713 | version "0.25.7" 714 | resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.25.7.tgz#3f497d6fd34c669c6798dcb821f2ef31f5445051" 715 | integrity sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA== 716 | dependencies: 717 | sourcemap-codec "^1.4.4" 718 | 719 | make-dir@^3.0.2: 720 | version "3.1.0" 721 | resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" 722 | integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== 723 | dependencies: 724 | semver "^6.0.0" 725 | 726 | matched@^5.0.0: 727 | version "5.0.1" 728 | resolved "https://registry.yarnpkg.com/matched/-/matched-5.0.1.tgz#620606d9dac6b7f4e955354b82e02ef4e3a62dc3" 729 | integrity sha512-E1fhSTPRyhAlNaNvGXAgZQlq1hL0bgYMTk/6bktVlIhzUnX/SZs7296ACdVeNJE8xFNGSuvd9IpI7vSnmcqLvw== 730 | dependencies: 731 | glob "^7.1.6" 732 | picomatch "^2.2.1" 733 | 734 | mime-db@1.47.0: 735 | version "1.47.0" 736 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.47.0.tgz#8cb313e59965d3c05cfbf898915a267af46a335c" 737 | integrity sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw== 738 | 739 | mime-types@^2.1.12: 740 | version "2.1.30" 741 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.30.tgz#6e7be8b4c479825f85ed6326695db73f9305d62d" 742 | integrity sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg== 743 | dependencies: 744 | mime-db "1.47.0" 745 | 746 | mimic-fn@^2.1.0: 747 | version "2.1.0" 748 | resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" 749 | integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== 750 | 751 | minify-html-literals@^1.3.5: 752 | version "1.3.5" 753 | resolved "https://registry.yarnpkg.com/minify-html-literals/-/minify-html-literals-1.3.5.tgz#11c05e2b9699be7f41647186a9fe8249b7de6734" 754 | integrity sha512-p8T8ryePRR8FVfJZLVFmM53WY25FL0moCCTycUDuAu6rf9GMLwy0gNjXBGNin3Yun7Y+tIWd28axOf0t2EpAlQ== 755 | dependencies: 756 | "@types/html-minifier" "^3.5.3" 757 | clean-css "^4.2.1" 758 | html-minifier "^4.0.0" 759 | magic-string "^0.25.0" 760 | parse-literals "^1.2.1" 761 | 762 | minimatch@^3.0.4: 763 | version "3.0.4" 764 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" 765 | integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== 766 | dependencies: 767 | brace-expansion "^1.1.7" 768 | 769 | mkdirp-classic@^0.5.2: 770 | version "0.5.3" 771 | resolved "https://registry.yarnpkg.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz#fa10c9115cc6d8865be221ba47ee9bed78601113" 772 | integrity sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A== 773 | 774 | ms@2.1.2: 775 | version "2.1.2" 776 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 777 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 778 | 779 | no-case@^2.2.0: 780 | version "2.3.2" 781 | resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac" 782 | integrity sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ== 783 | dependencies: 784 | lower-case "^1.1.1" 785 | 786 | node-cleanup@^2.1.2: 787 | version "2.1.2" 788 | resolved "https://registry.yarnpkg.com/node-cleanup/-/node-cleanup-2.1.2.tgz#7ac19abd297e09a7f72a71545d951b517e4dde2c" 789 | integrity sha1-esGavSl+Caf3KnFUXZUbUX5N3iw= 790 | 791 | node-fetch@^2.6.1: 792 | version "2.6.1" 793 | resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" 794 | integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== 795 | 796 | normalize-path@^3.0.0, normalize-path@~3.0.0: 797 | version "3.0.0" 798 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 799 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 800 | 801 | once@^1.3.0, once@^1.3.1, once@^1.4.0: 802 | version "1.4.0" 803 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 804 | integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= 805 | dependencies: 806 | wrappy "1" 807 | 808 | onetime@^5.1.0: 809 | version "5.1.2" 810 | resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" 811 | integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== 812 | dependencies: 813 | mimic-fn "^2.1.0" 814 | 815 | ora@^5.4.0: 816 | version "5.4.0" 817 | resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.0.tgz#42eda4855835b9cd14d33864c97a3c95a3f56bf4" 818 | integrity sha512-1StwyXQGoU6gdjYkyVcqOLnVlbKj+6yPNNOxJVgpt9t4eksKjiriiHuxktLYkgllwk+D6MbC4ihH84L1udRXPg== 819 | dependencies: 820 | bl "^4.1.0" 821 | chalk "^4.1.0" 822 | cli-cursor "^3.1.0" 823 | cli-spinners "^2.5.0" 824 | is-interactive "^1.0.0" 825 | is-unicode-supported "^0.1.0" 826 | log-symbols "^4.1.0" 827 | strip-ansi "^6.0.0" 828 | wcwidth "^1.0.1" 829 | 830 | p-limit@^2.2.0: 831 | version "2.3.0" 832 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" 833 | integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== 834 | dependencies: 835 | p-try "^2.0.0" 836 | 837 | p-locate@^4.1.0: 838 | version "4.1.0" 839 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" 840 | integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== 841 | dependencies: 842 | p-limit "^2.2.0" 843 | 844 | p-try@^2.0.0: 845 | version "2.2.0" 846 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" 847 | integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== 848 | 849 | param-case@^2.1.1: 850 | version "2.1.1" 851 | resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" 852 | integrity sha1-35T9jPZTHs915r75oIWPvHK+Ikc= 853 | dependencies: 854 | no-case "^2.2.0" 855 | 856 | parse-literals@^1.2.1: 857 | version "1.2.1" 858 | resolved "https://registry.yarnpkg.com/parse-literals/-/parse-literals-1.2.1.tgz#2311855a12a6e12434f44eb40fa434c48cc0560f" 859 | integrity sha512-Ml0w104Ph2wwzuRdxrg9booVWsngXbB4bZ5T2z6WyF8b5oaNkUmBiDtahi34yUIpXD8Y13JjAK6UyIyApJ73RQ== 860 | dependencies: 861 | typescript "^2.9.2 || ^3.0.0 || ^4.0.0" 862 | 863 | path-exists@^4.0.0: 864 | version "4.0.0" 865 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" 866 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== 867 | 868 | path-is-absolute@^1.0.0: 869 | version "1.0.1" 870 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 871 | integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= 872 | 873 | path-parse@^1.0.6: 874 | version "1.0.6" 875 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" 876 | integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== 877 | 878 | pend@~1.2.0: 879 | version "1.2.0" 880 | resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" 881 | integrity sha1-elfrVQpng/kRUzH89GY9XI4AelA= 882 | 883 | picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2: 884 | version "2.2.3" 885 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.3.tgz#465547f359ccc206d3c48e46a1bcb89bf7ee619d" 886 | integrity sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg== 887 | 888 | pkg-dir@^4.1.0, pkg-dir@^4.2.0: 889 | version "4.2.0" 890 | resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" 891 | integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== 892 | dependencies: 893 | find-up "^4.0.0" 894 | 895 | progress@^2.0.1: 896 | version "2.0.3" 897 | resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" 898 | integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== 899 | 900 | proxy-from-env@^1.1.0: 901 | version "1.1.0" 902 | resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" 903 | integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== 904 | 905 | pump@^3.0.0: 906 | version "3.0.0" 907 | resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64" 908 | integrity sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww== 909 | dependencies: 910 | end-of-stream "^1.1.0" 911 | once "^1.3.1" 912 | 913 | puppeteer@^8.0.0: 914 | version "8.0.0" 915 | resolved "https://registry.yarnpkg.com/puppeteer/-/puppeteer-8.0.0.tgz#a236669118aa795331c2d0ca19877159e7664705" 916 | integrity sha512-D0RzSWlepeWkxPPdK3xhTcefj8rjah1791GE82Pdjsri49sy11ci/JQsAO8K2NRukqvwEtcI+ImP5F4ZiMvtIQ== 917 | dependencies: 918 | debug "^4.1.0" 919 | devtools-protocol "0.0.854822" 920 | extract-zip "^2.0.0" 921 | https-proxy-agent "^5.0.0" 922 | node-fetch "^2.6.1" 923 | pkg-dir "^4.2.0" 924 | progress "^2.0.1" 925 | proxy-from-env "^1.1.0" 926 | rimraf "^3.0.2" 927 | tar-fs "^2.0.0" 928 | unbzip2-stream "^1.3.3" 929 | ws "^7.2.3" 930 | 931 | readable-stream@^3.1.1, readable-stream@^3.4.0: 932 | version "3.6.0" 933 | resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" 934 | integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== 935 | dependencies: 936 | inherits "^2.0.3" 937 | string_decoder "^1.1.1" 938 | util-deprecate "^1.0.1" 939 | 940 | readdirp@~3.5.0: 941 | version "3.5.0" 942 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" 943 | integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== 944 | dependencies: 945 | picomatch "^2.2.1" 946 | 947 | relateurl@^0.2.7: 948 | version "0.2.7" 949 | resolved "https://registry.yarnpkg.com/relateurl/-/relateurl-0.2.7.tgz#54dbf377e51440aca90a4cd274600d3ff2d888a9" 950 | integrity sha1-VNvzd+UUQKypCkzSdGANP/LYiKk= 951 | 952 | resolve@1.20.0, resolve@^1.17.0, resolve@^1.19.0: 953 | version "1.20.0" 954 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" 955 | integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== 956 | dependencies: 957 | is-core-module "^2.2.0" 958 | path-parse "^1.0.6" 959 | 960 | restore-cursor@^3.1.0: 961 | version "3.1.0" 962 | resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" 963 | integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== 964 | dependencies: 965 | onetime "^5.1.0" 966 | signal-exit "^3.0.2" 967 | 968 | rimraf@^3.0.2: 969 | version "3.0.2" 970 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" 971 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== 972 | dependencies: 973 | glob "^7.1.3" 974 | 975 | rollup-plugin-minify-html-literals@^1.2.6: 976 | version "1.2.6" 977 | resolved "https://registry.yarnpkg.com/rollup-plugin-minify-html-literals/-/rollup-plugin-minify-html-literals-1.2.6.tgz#775d9502e786ac6a4fc23ac53e5cb1658627938b" 978 | integrity sha512-JRq2fjlCTiw0zu+1Sy3ClHGCxA79dWGr4HLHWSQgd060StVW9fBVksuj8Xw/suPkNSGClJf/4xNQ1MF6JeXPaw== 979 | dependencies: 980 | minify-html-literals "^1.3.5" 981 | rollup-pluginutils "^2.8.2" 982 | 983 | rollup-plugin-typescript2@^0.30.0: 984 | version "0.30.0" 985 | resolved "https://registry.yarnpkg.com/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.30.0.tgz#1cc99ac2309bf4b9d0a3ebdbc2002aecd56083d3" 986 | integrity sha512-NUFszIQyhgDdhRS9ya/VEmsnpTe+GERDMmFo0Y+kf8ds51Xy57nPNGglJY+W6x1vcouA7Au7nsTgsLFj2I0PxQ== 987 | dependencies: 988 | "@rollup/pluginutils" "^4.1.0" 989 | find-cache-dir "^3.3.1" 990 | fs-extra "8.1.0" 991 | resolve "1.20.0" 992 | tslib "2.1.0" 993 | 994 | rollup-pluginutils@^2.8.2: 995 | version "2.8.2" 996 | resolved "https://registry.yarnpkg.com/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz#72f2af0748b592364dbd3389e600e5a9444a351e" 997 | integrity sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ== 998 | dependencies: 999 | estree-walker "^0.6.1" 1000 | 1001 | rollup@^2.44.0: 1002 | version "2.46.0" 1003 | resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.46.0.tgz#8cacf89d2ee31a34755f1af40a665168f592b829" 1004 | integrity sha512-qPGoUBNl+Z8uNu0z7pD3WPTABWRbcOwIrO/5ccDJzmrtzn0LVf6Lj91+L5CcWhXl6iWf23FQ6m8Jkl2CmN1O7Q== 1005 | optionalDependencies: 1006 | fsevents "~2.3.1" 1007 | 1008 | safe-buffer@~5.2.0: 1009 | version "5.2.1" 1010 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 1011 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 1012 | 1013 | semver@^6.0.0: 1014 | version "6.3.0" 1015 | resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" 1016 | integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== 1017 | 1018 | signal-exit@^3.0.2: 1019 | version "3.0.3" 1020 | resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" 1021 | integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== 1022 | 1023 | source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0: 1024 | version "0.6.1" 1025 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 1026 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 1027 | 1028 | sourcemap-codec@^1.4.4: 1029 | version "1.4.8" 1030 | resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" 1031 | integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== 1032 | 1033 | string_decoder@^1.1.1: 1034 | version "1.3.0" 1035 | resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" 1036 | integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== 1037 | dependencies: 1038 | safe-buffer "~5.2.0" 1039 | 1040 | strip-ansi@^6.0.0: 1041 | version "6.0.0" 1042 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" 1043 | integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== 1044 | dependencies: 1045 | ansi-regex "^5.0.0" 1046 | 1047 | supports-color@^7.1.0: 1048 | version "7.2.0" 1049 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 1050 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 1051 | dependencies: 1052 | has-flag "^4.0.0" 1053 | 1054 | tar-fs@^2.0.0: 1055 | version "2.1.1" 1056 | resolved "https://registry.yarnpkg.com/tar-fs/-/tar-fs-2.1.1.tgz#489a15ab85f1f0befabb370b7de4f9eb5cbe8784" 1057 | integrity sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng== 1058 | dependencies: 1059 | chownr "^1.1.1" 1060 | mkdirp-classic "^0.5.2" 1061 | pump "^3.0.0" 1062 | tar-stream "^2.1.4" 1063 | 1064 | tar-stream@^2.1.4: 1065 | version "2.2.0" 1066 | resolved "https://registry.yarnpkg.com/tar-stream/-/tar-stream-2.2.0.tgz#acad84c284136b060dc3faa64474aa9aebd77287" 1067 | integrity sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ== 1068 | dependencies: 1069 | bl "^4.0.3" 1070 | end-of-stream "^1.4.1" 1071 | fs-constants "^1.0.0" 1072 | inherits "^2.0.3" 1073 | readable-stream "^3.1.1" 1074 | 1075 | through@^2.3.8: 1076 | version "2.3.8" 1077 | resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" 1078 | integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= 1079 | 1080 | to-regex-range@^5.0.1: 1081 | version "5.0.1" 1082 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 1083 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 1084 | dependencies: 1085 | is-number "^7.0.0" 1086 | 1087 | tslib@2.1.0: 1088 | version "2.1.0" 1089 | resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a" 1090 | integrity sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A== 1091 | 1092 | "typescript@^2.9.2 || ^3.0.0 || ^4.0.0", typescript@^4.2.3, typescript@^4.2.4: 1093 | version "4.2.4" 1094 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.2.4.tgz#8610b59747de028fda898a8aef0e103f156d0961" 1095 | integrity sha512-V+evlYHZnQkaz8TRBuxTA92yZBPotr5H+WhQ7bD3hZUndx5tGOa1fuCgeSjxAzM1RiN5IzvadIXTVefuuwZCRg== 1096 | 1097 | uglify-js@^3.5.1: 1098 | version "3.13.5" 1099 | resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.13.5.tgz#5d71d6dbba64cf441f32929b1efce7365bb4f113" 1100 | integrity sha512-xtB8yEqIkn7zmOyS2zUNBsYCBRhDkvlNxMMY2smuJ/qA8NCHeQvKCF3i9Z4k8FJH4+PJvZRtMrPynfZ75+CSZw== 1101 | 1102 | unbzip2-stream@^1.3.3: 1103 | version "1.4.3" 1104 | resolved "https://registry.yarnpkg.com/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz#b0da04c4371311df771cdc215e87f2130991ace7" 1105 | integrity sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg== 1106 | dependencies: 1107 | buffer "^5.2.1" 1108 | through "^2.3.8" 1109 | 1110 | universalify@^0.1.0: 1111 | version "0.1.2" 1112 | resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" 1113 | integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== 1114 | 1115 | universalify@^2.0.0: 1116 | version "2.0.0" 1117 | resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" 1118 | integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== 1119 | 1120 | upper-case@^1.1.1: 1121 | version "1.1.3" 1122 | resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" 1123 | integrity sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg= 1124 | 1125 | util-deprecate@^1.0.1: 1126 | version "1.0.2" 1127 | resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" 1128 | integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= 1129 | 1130 | wcwidth@^1.0.1: 1131 | version "1.0.1" 1132 | resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" 1133 | integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= 1134 | dependencies: 1135 | defaults "^1.0.3" 1136 | 1137 | wrappy@1: 1138 | version "1.0.2" 1139 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1140 | integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= 1141 | 1142 | ws@^7.2.3: 1143 | version "7.4.5" 1144 | resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.5.tgz#a484dd851e9beb6fdb420027e3885e8ce48986c1" 1145 | integrity sha512-xzyu3hFvomRfXKH8vOFMU3OguG6oOvhXMo3xsGy3xWExqaM2dxBbVxuD99O7m3ZUFMvvscsZDqxfgMaRr/Nr1g== 1146 | 1147 | yauzl@^2.10.0: 1148 | version "2.10.0" 1149 | resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" 1150 | integrity sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk= 1151 | dependencies: 1152 | buffer-crc32 "~0.2.3" 1153 | fd-slicer "~1.1.0" 1154 | --------------------------------------------------------------------------------