From 0410d632eab5a43f9a197c615cf0b2c5e54ad248 Mon Sep 17 00:00:00 2001 From: Ali Hamud Date: Thu, 30 Apr 2020 09:11:35 +0000 Subject: [PATCH 01/21] Added README.md --- README.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..0ca446a --- /dev/null +++ b/README.md @@ -0,0 +1,20 @@ +# Introduction +TODO: Give a short introduction of your project. Let this section explain the objectives or the motivation behind this project. + +# Getting Started +TODO: Guide users through getting your code up and running on their own system. In this section you can talk about: +1. Installation process +2. Software dependencies +3. Latest releases +4. API references + +# Build and Test +TODO: Describe and show how to build your code and run the tests. + +# Contribute +TODO: Explain how other users and developers can contribute to make your code better. + +If you want to learn more about creating good readme files then refer the following [guidelines](https://docs.microsoft.com/en-us/azure/devops/repos/git/create-a-readme?view=azure-devops). You can also seek inspiration from the below readme files: +- [ASP.NET Core](https://github.com/aspnet/Home) +- [Visual Studio Code](https://github.com/Microsoft/vscode) +- [Chakra Core](https://github.com/Microsoft/ChakraCore) \ No newline at end of file From 3fcfb0bc7f9cb9bdd14968ca924541d3626fac66 Mon Sep 17 00:00:00 2001 From: Ankit Kesharwani Date: Fri, 12 Jun 2020 05:42:01 +0000 Subject: [PATCH 02/21] Merged PR 91549: Initialize empty project for Warehouse demo app based on .NET 5 SDK and React-TS 1. Created a .NET 5 SDK based React-TS app 2. Installed and verified that all the NuGet packages that will be required in future | npm package | license | |:------|:------| | react | MIT | | react-dom | MIT | | @types/react | MIT | | @types/react-dom | MIT | | ajv | MIT | | cross-env | MIT | | typescript | [Apache 2.0](https://opensource.org/licenses/apache2.0) | | eslint | MIT | | eslint-config-react-app | MIT | | eslint-plugin-import | MIT | | eslint-plugin-jsx-a11y | MIT | | eslint-plugin-react | MIT | | react-scripts | MIT | | rimraf | [ISC](https://opensource.org/licenses/isc) | Related work items: #373756, #375260 --- .gitignore | 35 + WarehouseDemo.sln | 34 + WarehouseDemo/ClientApp/package-lock.json | 16367 ++++++++++++++++ WarehouseDemo/ClientApp/package.json | 50 + WarehouseDemo/ClientApp/public/index.html | 17 + WarehouseDemo/ClientApp/src/App.css | 0 WarehouseDemo/ClientApp/src/App.tsx | 11 + .../ClientApp/src/components/Icons/.gitkeep | 0 .../ClientApp/src/components/Images/.gitkeep | 0 WarehouseDemo/ClientApp/src/index.css | 0 WarehouseDemo/ClientApp/src/index.tsx | 10 + WarehouseDemo/ClientApp/test/App.test.tsx | 9 + WarehouseDemo/ClientApp/tsconfig.json | 25 + WarehouseDemo/Controllers/.gitkeep | 0 WarehouseDemo/Models/.gitkeep | 0 WarehouseDemo/Program.cs | 26 + WarehouseDemo/Properties/launchSettings.json | 27 + WarehouseDemo/Services/.gitkeep | 0 WarehouseDemo/Startup.cs | 71 + WarehouseDemo/WarehouseDemo.csproj | 52 + WarehouseDemo/appsettings.Development.json | 9 + WarehouseDemo/appsettings.json | 10 + 22 files changed, 16753 insertions(+) create mode 100644 .gitignore create mode 100644 WarehouseDemo.sln create mode 100644 WarehouseDemo/ClientApp/package-lock.json create mode 100644 WarehouseDemo/ClientApp/package.json create mode 100644 WarehouseDemo/ClientApp/public/index.html create mode 100644 WarehouseDemo/ClientApp/src/App.css create mode 100644 WarehouseDemo/ClientApp/src/App.tsx create mode 100644 WarehouseDemo/ClientApp/src/components/Icons/.gitkeep create mode 100644 WarehouseDemo/ClientApp/src/components/Images/.gitkeep create mode 100644 WarehouseDemo/ClientApp/src/index.css create mode 100644 WarehouseDemo/ClientApp/src/index.tsx create mode 100644 WarehouseDemo/ClientApp/test/App.test.tsx create mode 100644 WarehouseDemo/ClientApp/tsconfig.json create mode 100644 WarehouseDemo/Controllers/.gitkeep create mode 100644 WarehouseDemo/Models/.gitkeep create mode 100644 WarehouseDemo/Program.cs create mode 100644 WarehouseDemo/Properties/launchSettings.json create mode 100644 WarehouseDemo/Services/.gitkeep create mode 100644 WarehouseDemo/Startup.cs create mode 100644 WarehouseDemo/WarehouseDemo.csproj create mode 100644 WarehouseDemo/appsettings.Development.json create mode 100644 WarehouseDemo/appsettings.json diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9be1ae8 --- /dev/null +++ b/.gitignore @@ -0,0 +1,35 @@ +.DS_Store + +# dotnet core +bin/ +obj/ +project.lock.json +NuGetScratch/ + +api/wwwroot/** +!api/wwwroot/scratch.html +!api/wwwroot/favicon.ico + +# node +node_modules/ +typings/ +build/ +npm-debug.log + +# client-react +client-react/components/*.js +client-react.test/build +!client-react.test/build/client-react/styles/ + +# ops +ops/hosts +ops/config.yml +ops/*.retry + +# other +*.js.map + +# IDE +.idea/ +.vs/ +.vscode/ \ No newline at end of file diff --git a/WarehouseDemo.sln b/WarehouseDemo.sln new file mode 100644 index 0000000..0bad09c --- /dev/null +++ b/WarehouseDemo.sln @@ -0,0 +1,34 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.30128.74 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WarehouseDemo", "WarehouseDemo\WarehouseDemo.csproj", "{07B7833D-090C-4F50-B9F6-07C8D1709338}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|Any CPU = Release|Any CPU + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {07B7833D-090C-4F50-B9F6-07C8D1709338}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {07B7833D-090C-4F50-B9F6-07C8D1709338}.Debug|Any CPU.Build.0 = Debug|Any CPU + {07B7833D-090C-4F50-B9F6-07C8D1709338}.Debug|x64.ActiveCfg = Debug|Any CPU + {07B7833D-090C-4F50-B9F6-07C8D1709338}.Debug|x64.Build.0 = Debug|Any CPU + {07B7833D-090C-4F50-B9F6-07C8D1709338}.Debug|x86.ActiveCfg = Debug|Any CPU + {07B7833D-090C-4F50-B9F6-07C8D1709338}.Debug|x86.Build.0 = Debug|Any CPU + {07B7833D-090C-4F50-B9F6-07C8D1709338}.Release|Any CPU.ActiveCfg = Release|Any CPU + {07B7833D-090C-4F50-B9F6-07C8D1709338}.Release|Any CPU.Build.0 = Release|Any CPU + {07B7833D-090C-4F50-B9F6-07C8D1709338}.Release|x64.ActiveCfg = Release|Any CPU + {07B7833D-090C-4F50-B9F6-07C8D1709338}.Release|x64.Build.0 = Release|Any CPU + {07B7833D-090C-4F50-B9F6-07C8D1709338}.Release|x86.ActiveCfg = Release|Any CPU + {07B7833D-090C-4F50-B9F6-07C8D1709338}.Release|x86.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal diff --git a/WarehouseDemo/ClientApp/package-lock.json b/WarehouseDemo/ClientApp/package-lock.json new file mode 100644 index 0000000..0d28f14 --- /dev/null +++ b/WarehouseDemo/ClientApp/package-lock.json @@ -0,0 +1,16367 @@ +{ + "name": "warehousedemo", + "version": "0.1.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@babel/code-frame": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.1.tgz", + "integrity": "sha512-IGhtTmpjGbYzcEDOw7DcQtbQSXcG9ftmAXtWTu9V936vDye4xjjekktFAtgZsWpzTj/X01jocB46mTywm/4SZw==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.1" + } + }, + "@babel/compat-data": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.10.1.tgz", + "integrity": "sha512-CHvCj7So7iCkGKPRFUfryXIkU2gSBw7VSZFYLsqVhrS47269VK2Hfi9S/YcublPMW8k1u2bQBlbDruoQEm4fgw==", + "dev": true, + "requires": { + "browserslist": "^4.12.0", + "invariant": "^2.2.4", + "semver": "^5.5.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "@babel/core": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.9.0.tgz", + "integrity": "sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.8.3", + "@babel/generator": "^7.9.0", + "@babel/helper-module-transforms": "^7.9.0", + "@babel/helpers": "^7.9.0", + "@babel/parser": "^7.9.0", + "@babel/template": "^7.8.6", + "@babel/traverse": "^7.9.0", + "@babel/types": "^7.9.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.1", + "json5": "^2.1.2", + "lodash": "^4.17.13", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.10.2.tgz", + "integrity": "sha512-AxfBNHNu99DTMvlUPlt1h2+Hn7knPpH5ayJ8OqDWSeLld+Fi2AYBTC/IejWDM9Edcii4UzZRCsbUt0WlSDsDsA==", + "dev": true, + "requires": { + "@babel/types": "^7.10.2", + "jsesc": "^2.5.1", + "lodash": "^4.17.13", + "source-map": "^0.5.0" + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.1.tgz", + "integrity": "sha512-ewp3rvJEwLaHgyWGe4wQssC2vjks3E80WiUe2BpMb0KhreTjMROCbxXcEovTrbeGVdQct5VjQfrv9EgC+xMzCw==", + "dev": true, + "requires": { + "@babel/types": "^7.10.1" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.10.1.tgz", + "integrity": "sha512-cQpVq48EkYxUU0xozpGCLla3wlkdRRqLWu1ksFMXA9CM5KQmyyRpSEsYXbao7JUkOw/tAaYKCaYyZq6HOFYtyw==", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.10.1", + "@babel/types": "^7.10.1" + } + }, + "@babel/helper-builder-react-jsx": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.10.1.tgz", + "integrity": "sha512-KXzzpyWhXgzjXIlJU1ZjIXzUPdej1suE6vzqgImZ/cpAsR/CC8gUcX4EWRmDfWz/cs6HOCPMBIJ3nKoXt3BFuw==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.1", + "@babel/types": "^7.10.1" + } + }, + "@babel/helper-builder-react-jsx-experimental": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.10.1.tgz", + "integrity": "sha512-irQJ8kpQUV3JasXPSFQ+LCCtJSc5ceZrPFVj6TElR6XCHssi3jV8ch3odIrNtjJFRZZVbrOEfJMI79TPU/h1pQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.1", + "@babel/helper-module-imports": "^7.10.1", + "@babel/types": "^7.10.1" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.10.2.tgz", + "integrity": "sha512-hYgOhF4To2UTB4LTaZepN/4Pl9LD4gfbJx8A34mqoluT8TLbof1mhUlYuNWTEebONa8+UlCC4X0TEXu7AOUyGA==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.10.1", + "browserslist": "^4.12.0", + "invariant": "^2.2.4", + "levenary": "^1.1.1", + "semver": "^5.5.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.10.2.tgz", + "integrity": "sha512-5C/QhkGFh1vqcziq1vAL6SI9ymzUp8BCYjFpvYVhWP4DlATIb3u5q3iUd35mvlyGs8fO7hckkW7i0tmH+5+bvQ==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.10.1", + "@babel/helper-member-expression-to-functions": "^7.10.1", + "@babel/helper-optimise-call-expression": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-replace-supers": "^7.10.1", + "@babel/helper-split-export-declaration": "^7.10.1" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.10.1.tgz", + "integrity": "sha512-Rx4rHS0pVuJn5pJOqaqcZR4XSgeF9G/pO/79t+4r7380tXFJdzImFnxMU19f83wjSrmKHq6myrM10pFHTGzkUA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.1", + "@babel/helper-regex": "^7.10.1", + "regexpu-core": "^4.7.0" + } + }, + "@babel/helper-define-map": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.10.1.tgz", + "integrity": "sha512-+5odWpX+OnvkD0Zmq7panrMuAGQBu6aPUgvMzuMGo4R+jUOvealEj2hiqI6WhxgKrTpFoFj0+VdsuA8KDxHBDg==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.10.1", + "@babel/types": "^7.10.1", + "lodash": "^4.17.13" + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.10.1.tgz", + "integrity": "sha512-vcUJ3cDjLjvkKzt6rHrl767FeE7pMEYfPanq5L16GRtrXIoznc0HykNW2aEYkcnP76P0isoqJ34dDMFZwzEpJg==", + "dev": true, + "requires": { + "@babel/traverse": "^7.10.1", + "@babel/types": "^7.10.1" + } + }, + "@babel/helper-function-name": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.1.tgz", + "integrity": "sha512-fcpumwhs3YyZ/ttd5Rz0xn0TpIwVkN7X0V38B9TWNfVF42KEkhkAAuPCQ3oXmtTRtiPJrmZ0TrfS0GKF0eMaRQ==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.10.1", + "@babel/template": "^7.10.1", + "@babel/types": "^7.10.1" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.1.tgz", + "integrity": "sha512-F5qdXkYGOQUb0hpRaPoetF9AnsXknKjWMZ+wmsIRsp5ge5sFh4c3h1eH2pRTTuy9KKAA2+TTYomGXAtEL2fQEw==", + "dev": true, + "requires": { + "@babel/types": "^7.10.1" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.10.1.tgz", + "integrity": "sha512-vLm5srkU8rI6X3+aQ1rQJyfjvCBLXP8cAGeuw04zeAM2ItKb1e7pmVmLyHb4sDaAYnLL13RHOZPLEtcGZ5xvjg==", + "dev": true, + "requires": { + "@babel/types": "^7.10.1" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.10.1.tgz", + "integrity": "sha512-u7XLXeM2n50gb6PWJ9hoO5oO7JFPaZtrh35t8RqKLT1jFKj9IWeD1zrcrYp1q1qiZTdEarfDWfTIP8nGsu0h5g==", + "dev": true, + "requires": { + "@babel/types": "^7.10.1" + } + }, + "@babel/helper-module-imports": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.10.1.tgz", + "integrity": "sha512-SFxgwYmZ3HZPyZwJRiVNLRHWuW2OgE5k2nrVs6D9Iv4PPnXVffuEHy83Sfx/l4SqF+5kyJXjAyUmrG7tNm+qVg==", + "dev": true, + "requires": { + "@babel/types": "^7.10.1" + } + }, + "@babel/helper-module-transforms": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.10.1.tgz", + "integrity": "sha512-RLHRCAzyJe7Q7sF4oy2cB+kRnU4wDZY/H2xJFGof+M+SJEGhZsb+GFj5j1AD8NiSaVBJ+Pf0/WObiXu/zxWpFg==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.10.1", + "@babel/helper-replace-supers": "^7.10.1", + "@babel/helper-simple-access": "^7.10.1", + "@babel/helper-split-export-declaration": "^7.10.1", + "@babel/template": "^7.10.1", + "@babel/types": "^7.10.1", + "lodash": "^4.17.13" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.1.tgz", + "integrity": "sha512-a0DjNS1prnBsoKx83dP2falChcs7p3i8VMzdrSbfLhuQra/2ENC4sbri34dz/rWmDADsmF1q5GbfaXydh0Jbjg==", + "dev": true, + "requires": { + "@babel/types": "^7.10.1" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.1.tgz", + "integrity": "sha512-fvoGeXt0bJc7VMWZGCAEBEMo/HAjW2mP8apF5eXK0wSqwLAVHAISCWRoLMBMUs2kqeaG77jltVqu4Hn8Egl3nA==", + "dev": true + }, + "@babel/helper-regex": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.10.1.tgz", + "integrity": "sha512-7isHr19RsIJWWLLFn21ubFt223PjQyg1HY7CZEMRr820HttHPpVvrsIN3bUOo44DEfFV4kBXO7Abbn9KTUZV7g==", + "dev": true, + "requires": { + "lodash": "^4.17.13" + } + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.10.1.tgz", + "integrity": "sha512-RfX1P8HqsfgmJ6CwaXGKMAqbYdlleqglvVtht0HGPMSsy2V6MqLlOJVF/0Qyb/m2ZCi2z3q3+s6Pv7R/dQuZ6A==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.1", + "@babel/helper-wrap-function": "^7.10.1", + "@babel/template": "^7.10.1", + "@babel/traverse": "^7.10.1", + "@babel/types": "^7.10.1" + } + }, + "@babel/helper-replace-supers": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.10.1.tgz", + "integrity": "sha512-SOwJzEfpuQwInzzQJGjGaiG578UYmyi2Xw668klPWV5n07B73S0a9btjLk/52Mlcxa+5AdIYqws1KyXRfMoB7A==", + "dev": true, + "requires": { + "@babel/helper-member-expression-to-functions": "^7.10.1", + "@babel/helper-optimise-call-expression": "^7.10.1", + "@babel/traverse": "^7.10.1", + "@babel/types": "^7.10.1" + } + }, + "@babel/helper-simple-access": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.10.1.tgz", + "integrity": "sha512-VSWpWzRzn9VtgMJBIWTZ+GP107kZdQ4YplJlCmIrjoLVSi/0upixezHCDG8kpPVTBJpKfxTH01wDhh+jS2zKbw==", + "dev": true, + "requires": { + "@babel/template": "^7.10.1", + "@babel/types": "^7.10.1" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.10.1.tgz", + "integrity": "sha512-UQ1LVBPrYdbchNhLwj6fetj46BcFwfS4NllJo/1aJsT+1dLTEnXJL0qHqtY7gPzF8S2fXBJamf1biAXV3X077g==", + "dev": true, + "requires": { + "@babel/types": "^7.10.1" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.1.tgz", + "integrity": "sha512-5vW/JXLALhczRCWP0PnFDMCJAchlBvM7f4uk/jXritBnIa6E1KmqmtrS3yn1LAnxFBypQ3eneLuXjsnfQsgILw==", + "dev": true + }, + "@babel/helper-wrap-function": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.10.1.tgz", + "integrity": "sha512-C0MzRGteVDn+H32/ZgbAv5r56f2o1fZSA/rj/TYo8JEJNHg+9BdSmKBUND0shxWRztWhjlT2cvHYuynpPsVJwQ==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.10.1", + "@babel/template": "^7.10.1", + "@babel/traverse": "^7.10.1", + "@babel/types": "^7.10.1" + } + }, + "@babel/helpers": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.10.1.tgz", + "integrity": "sha512-muQNHF+IdU6wGgkaJyhhEmI54MOZBKsFfsXFhboz1ybwJ1Kl7IHlbm2a++4jwrmY5UYsgitt5lfqo1wMFcHmyw==", + "dev": true, + "requires": { + "@babel/template": "^7.10.1", + "@babel/traverse": "^7.10.1", + "@babel/types": "^7.10.1" + } + }, + "@babel/highlight": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.1.tgz", + "integrity": "sha512-8rMof+gVP8mxYZApLF/JgNDAkdKa+aJt3ZYxF8z6+j/hpeXL7iMsKCPHa2jNMHu/qqBwzQF4OHNoYi8dMA/rYg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.1", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.10.2.tgz", + "integrity": "sha512-PApSXlNMJyB4JiGVhCOlzKIif+TKFTvu0aQAhnTvfP/z3vVSN6ZypH5bfUNwFXXjRQtUEBNFd2PtmCmG2Py3qQ==", + "dev": true + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.10.1.tgz", + "integrity": "sha512-vzZE12ZTdB336POZjmpblWfNNRpMSua45EYnRigE2XsZxcXcIyly2ixnTJasJE4Zq3U7t2d8rRF7XRUuzHxbOw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-remap-async-to-generator": "^7.10.1", + "@babel/plugin-syntax-async-generators": "^7.8.0" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.10.1.tgz", + "integrity": "sha512-sqdGWgoXlnOdgMXU+9MbhzwFRgxVLeiGBqTrnuS7LC2IBU31wSsESbTUreT2O418obpfPdGUR2GbEufZF1bpqw==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-proposal-decorators": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.8.3.tgz", + "integrity": "sha512-e3RvdvS4qPJVTe288DlXjwKflpfy1hr0j5dz5WpIYYeP7vQZg2WfAEIp8k5/Lwis/m5REXEteIz6rrcDtXXG7w==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-decorators": "^7.8.3" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.10.1.tgz", + "integrity": "sha512-Cpc2yUVHTEGPlmiQzXj026kqwjEQAD9I4ZC16uzdbgWgitg/UHKHLffKNCQZ5+y8jpIZPJcKcwsr2HwPh+w3XA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-syntax-dynamic-import": "^7.8.0" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.10.1.tgz", + "integrity": "sha512-m8r5BmV+ZLpWPtMY2mOKN7wre6HIO4gfIiV+eOmsnZABNenrt/kzYBwrh+KOfgumSWpnlGs5F70J8afYMSJMBg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-syntax-json-strings": "^7.8.0" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.10.1.tgz", + "integrity": "sha512-56cI/uHYgL2C8HVuHOuvVowihhX0sxb3nnfVRzUeVHTWmRHTZrKuAh/OBIMggGU/S1g/1D2CRCXqP+3u7vX7iA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.10.1.tgz", + "integrity": "sha512-jjfym4N9HtCiNfyyLAVD8WqPYeHUrw4ihxuAynWj6zzp2gf9Ey2f7ImhFm6ikB3CLf5Z/zmcJDri6B4+9j9RsA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-syntax-numeric-separator": "^7.10.1" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.10.1.tgz", + "integrity": "sha512-Z+Qri55KiQkHh7Fc4BW6o+QBuTagbOp9txE+4U1i79u9oWlf2npkiDx+Rf3iK3lbcHBuNy9UOkwuR5wOMH3LIQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-transform-parameters": "^7.10.1" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.10.1.tgz", + "integrity": "sha512-VqExgeE62YBqI3ogkGoOJp1R6u12DFZjqwJhqtKc2o5m1YTUuUWnos7bZQFBhwkxIFpWYJ7uB75U7VAPPiKETA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.10.1.tgz", + "integrity": "sha512-dqQj475q8+/avvok72CF3AOSV/SGEcH29zT5hhohqqvvZ2+boQoOr7iGldBG5YXTO2qgCgc2B3WvVLUdbeMlGA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-syntax-optional-chaining": "^7.8.0" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.10.1.tgz", + "integrity": "sha512-RZecFFJjDiQ2z6maFprLgrdnm0OzoC23Mx89xf1CcEsxmHuzuXOdniEuI+S3v7vjQG4F5sa6YtUp+19sZuSxHg==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.10.1.tgz", + "integrity": "sha512-JjfngYRvwmPwmnbRZyNiPFI8zxCZb8euzbCG/LxyKdeTb59tVciKo9GK9bi6JYKInk1H11Dq9j/zRqIH4KigfQ==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.1.tgz", + "integrity": "sha512-Gf2Yx/iRs1JREDtVZ56OrjjgFHCaldpTnuy9BHla10qyVT3YkIIGEtoDWhyop0ksu1GvNjHIoYRBqm3zoR1jyQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-syntax-decorators": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.10.1.tgz", + "integrity": "sha512-a9OAbQhKOwSle1Vr0NJu/ISg1sPfdEkfRKWpgPuzhnWWzForou2gIeUIIwjAMHRekhhpJ7eulZlYs0H14Cbi+g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-flow": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.10.1.tgz", + "integrity": "sha512-b3pWVncLBYoPP60UOTc7NMlbtsHQ6ITim78KQejNHK6WJ2mzV5kCcg4mIWpasAfJEgwVTibwo2e+FU7UEIKQUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-jsx": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.10.1.tgz", + "integrity": "sha512-+OxyOArpVFXQeXKLO9o+r2I4dIoVoy6+Uu0vKELrlweDM3QJADZj+Z+5ERansZqIZBcLj42vHnDI8Rz9BnRIuQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.1.tgz", + "integrity": "sha512-uTd0OsHrpe3tH5gRPTxG8Voh99/WCU78vIm5NMRYPAqC8lR4vajt6KkCAknCHrx24vkPdd/05yfdGSB4EIY2mg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.10.1.tgz", + "integrity": "sha512-hgA5RYkmZm8FTFT3yu2N9Bx7yVVOKYT6yEdXXo6j2JTm0wNxgqaGeQVaSHRjhfnQbX91DtjFB6McRFSlcJH3xQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-syntax-typescript": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.10.1.tgz", + "integrity": "sha512-X/d8glkrAtra7CaQGMiGs/OGa6XgUzqPcBXCIGFCpCqnfGlT0Wfbzo/B89xHhnInTaItPK8LALblVXcUOEh95Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.10.1.tgz", + "integrity": "sha512-6AZHgFJKP3DJX0eCNJj01RpytUa3SOGawIxweHkNX2L6PYikOZmoh5B0d7hIHaIgveMjX990IAa/xK7jRTN8OA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.10.1.tgz", + "integrity": "sha512-XCgYjJ8TY2slj6SReBUyamJn3k2JLUIiiR5b6t1mNCMSvv7yx+jJpaewakikp0uWFQSF7ChPPoe3dHmXLpISkg==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-remap-async-to-generator": "^7.10.1" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.10.1.tgz", + "integrity": "sha512-B7K15Xp8lv0sOJrdVAoukKlxP9N59HS48V1J3U/JGj+Ad+MHq+am6xJVs85AgXrQn4LV8vaYFOB+pr/yIuzW8Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.10.1.tgz", + "integrity": "sha512-8bpWG6TtF5akdhIm/uWTyjHqENpy13Fx8chg7pFH875aNLwX8JxIxqm08gmAT+Whe6AOmaTeLPe7dpLbXt+xUw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1", + "lodash": "^4.17.13" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.10.1.tgz", + "integrity": "sha512-P9V0YIh+ln/B3RStPoXpEQ/CoAxQIhRSUn7aXqQ+FZJ2u8+oCtjIXR3+X0vsSD8zv+mb56K7wZW1XiDTDGiDRQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.1", + "@babel/helper-define-map": "^7.10.1", + "@babel/helper-function-name": "^7.10.1", + "@babel/helper-optimise-call-expression": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-replace-supers": "^7.10.1", + "@babel/helper-split-export-declaration": "^7.10.1", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.10.1.tgz", + "integrity": "sha512-mqSrGjp3IefMsXIenBfGcPXxJxweQe2hEIwMQvjtiDQ9b1IBvDUjkAtV/HMXX47/vXf14qDNedXsIiNd1FmkaQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.1.tgz", + "integrity": "sha512-V/nUc4yGWG71OhaTH705pU8ZSdM6c1KmmLP8ys59oOYbT7RpMYAR3MsVOt6OHL0WzG7BlTU076va9fjJyYzJMA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.10.1.tgz", + "integrity": "sha512-19VIMsD1dp02RvduFUmfzj8uknaO3uiHHF0s3E1OHnVsNj8oge8EQ5RzHRbJjGSetRnkEuBYO7TG1M5kKjGLOA==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.10.1.tgz", + "integrity": "sha512-wIEpkX4QvX8Mo9W6XF3EdGttrIPZWozHfEaDTU0WJD/TDnXMvdDh30mzUl/9qWhnf7naicYartcEfUghTCSNpA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.10.1.tgz", + "integrity": "sha512-lr/przdAbpEA2BUzRvjXdEDLrArGRRPwbaF9rvayuHRvdQ7lUTTkZnhZrJ4LE2jvgMRFF4f0YuPQ20vhiPYxtA==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-flow-strip-types": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.9.0.tgz", + "integrity": "sha512-7Qfg0lKQhEHs93FChxVLAvhBshOPQDtJUTVHr/ZwQNRccCm4O9D79r9tVSoV8iNwjP1YgfD+e/fgHcPkN1qEQg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-flow": "^7.8.3" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.10.1.tgz", + "integrity": "sha512-US8KCuxfQcn0LwSCMWMma8M2R5mAjJGsmoCBVwlMygvmDUMkTCykc84IqN1M7t+agSfOmLYTInLCHJM+RUoz+w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.10.1.tgz", + "integrity": "sha512-//bsKsKFBJfGd65qSNNh1exBy5Y9gD9ZN+DvrJ8f7HXr4avE5POW6zB7Rj6VnqHV33+0vXWUwJT0wSHubiAQkw==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.10.1.tgz", + "integrity": "sha512-qi0+5qgevz1NHLZroObRm5A+8JJtibb7vdcPQF1KQE12+Y/xxl8coJ+TpPW9iRq+Mhw/NKLjm+5SHtAHCC7lAw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.10.1.tgz", + "integrity": "sha512-UmaWhDokOFT2GcgU6MkHC11i0NQcL63iqeufXWfRy6pUOGYeCGEKhvfFO6Vz70UfYJYHwveg62GS83Rvpxn+NA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.10.1.tgz", + "integrity": "sha512-31+hnWSFRI4/ACFr1qkboBbrTxoBIzj7qA69qlq8HY8p7+YCzkCT6/TvQ1a4B0z27VeWtAeJd6pr5G04dc1iHw==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.10.1.tgz", + "integrity": "sha512-AQG4fc3KOah0vdITwt7Gi6hD9BtQP/8bhem7OjbaMoRNCH5Djx42O2vYMfau7QnAzQCa+RJnhJBmFFMGpQEzrg==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-simple-access": "^7.10.1", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.10.1.tgz", + "integrity": "sha512-ewNKcj1TQZDL3YnO85qh9zo1YF1CHgmSTlRQgHqe63oTrMI85cthKtZjAiZSsSNjPQ5NCaYo5QkbYqEw1ZBgZA==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.10.1", + "@babel/helper-module-transforms": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.10.1.tgz", + "integrity": "sha512-EIuiRNMd6GB6ulcYlETnYYfgv4AxqrswghmBRQbWLHZxN4s7mupxzglnHqk9ZiUpDI4eRWewedJJNj67PWOXKA==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.8.3.tgz", + "integrity": "sha512-f+tF/8UVPU86TrCb06JoPWIdDpTNSGGcAtaD9mLP0aYGA0OS0j7j7DHJR0GTFrUZPUU6loZhbsVZgTh0N+Qdnw==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.8.3" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.10.1.tgz", + "integrity": "sha512-MBlzPc1nJvbmO9rPr1fQwXOM2iGut+JC92ku6PbiJMMK7SnQc1rytgpopveE3Evn47gzvGYeCdgfCDbZo0ecUw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.10.1.tgz", + "integrity": "sha512-WnnStUDN5GL+wGQrJylrnnVlFhFmeArINIR9gjhSeYyvroGhBrSAXYg/RHsnfzmsa+onJrTJrEClPzgNmmQ4Gw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-replace-supers": "^7.10.1" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.10.1.tgz", + "integrity": "sha512-tJ1T0n6g4dXMsL45YsSzzSDZCxiHXAQp/qHrucOq5gEHncTA3xDxnd5+sZcoQp+N1ZbieAaB8r/VUCG0gqseOg==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.10.1.tgz", + "integrity": "sha512-Kr6+mgag8auNrgEpbfIWzdXYOvqDHZOF0+Bx2xh4H2EDNwcbRb9lY6nkZg8oSjsX+DH9Ebxm9hOqtKW+gRDeNA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-react-constant-elements": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.10.1.tgz", + "integrity": "sha512-V4os6bkWt/jbrzfyVcZn2ZpuHZkvj3vyBU0U/dtS8SZuMS7Rfx5oknTrtfyXJ2/QZk8gX7Yls5Z921ItNpE30Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-react-display-name": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.10.1.tgz", + "integrity": "sha512-rBjKcVwjk26H3VX8pavMxGf33LNlbocMHdSeldIEswtQ/hrjyTG8fKKILW1cSkODyRovckN/uZlGb2+sAV9JUQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-react-jsx": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.10.1.tgz", + "integrity": "sha512-MBVworWiSRBap3Vs39eHt+6pJuLUAaK4oxGc8g+wY+vuSJvLiEQjW1LSTqKb8OUPtDvHCkdPhk7d6sjC19xyFw==", + "dev": true, + "requires": { + "@babel/helper-builder-react-jsx": "^7.10.1", + "@babel/helper-builder-react-jsx-experimental": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-syntax-jsx": "^7.10.1" + } + }, + "@babel/plugin-transform-react-jsx-development": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.10.1.tgz", + "integrity": "sha512-XwDy/FFoCfw9wGFtdn5Z+dHh6HXKHkC6DwKNWpN74VWinUagZfDcEJc3Y8Dn5B3WMVnAllX8Kviaw7MtC5Epwg==", + "dev": true, + "requires": { + "@babel/helper-builder-react-jsx-experimental": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-syntax-jsx": "^7.10.1" + } + }, + "@babel/plugin-transform-react-jsx-self": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.10.1.tgz", + "integrity": "sha512-4p+RBw9d1qV4S749J42ZooeQaBomFPrSxa9JONLHJ1TxCBo3TzJ79vtmG2S2erUT8PDDrPdw4ZbXGr2/1+dILA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-syntax-jsx": "^7.10.1" + } + }, + "@babel/plugin-transform-react-jsx-source": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.10.1.tgz", + "integrity": "sha512-neAbaKkoiL+LXYbGDvh6PjPG+YeA67OsZlE78u50xbWh2L1/C81uHiNP5d1fw+uqUIoiNdCC8ZB+G4Zh3hShJA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-syntax-jsx": "^7.10.1" + } + }, + "@babel/plugin-transform-react-pure-annotations": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.10.1.tgz", + "integrity": "sha512-mfhoiai083AkeewsBHUpaS/FM1dmUENHBMpS/tugSJ7VXqXO5dCN1Gkint2YvM1Cdv1uhmAKt1ZOuAjceKmlLA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.10.1.tgz", + "integrity": "sha512-B3+Y2prScgJ2Bh/2l9LJxKbb8C8kRfsG4AdPT+n7ixBHIxJaIG8bi8tgjxUMege1+WqSJ+7gu1YeoMVO3gPWzw==", + "dev": true, + "requires": { + "regenerator-transform": "^0.14.2" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.10.1.tgz", + "integrity": "sha512-qN1OMoE2nuqSPmpTqEM7OvJ1FkMEV+BjVeZZm9V9mq/x1JLKQ4pcv8riZJMNN3u2AUGl0ouOMjRr2siecvHqUQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-runtime": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.9.0.tgz", + "integrity": "sha512-pUu9VSf3kI1OqbWINQ7MaugnitRss1z533436waNXp+0N3ur3zfut37sXiQMxkuCF4VUjwZucen/quskCh7NHw==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "resolve": "^1.8.1", + "semver": "^5.5.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.10.1.tgz", + "integrity": "sha512-AR0E/lZMfLstScFwztApGeyTHJ5u3JUKMjneqRItWeEqDdHWZwAOKycvQNCasCK/3r5YXsuNG25funcJDu7Y2g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.10.1.tgz", + "integrity": "sha512-8wTPym6edIrClW8FI2IoaePB91ETOtg36dOkj3bYcNe7aDMN2FXEoUa+WrmPc4xa1u2PQK46fUX2aCb+zo9rfw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.10.1.tgz", + "integrity": "sha512-j17ojftKjrL7ufX8ajKvwRilwqTok4q+BjkknmQw9VNHnItTyMP5anPFzxFJdCQs7clLcWpCV3ma+6qZWLnGMA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/helper-regex": "^7.10.1" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.10.1.tgz", + "integrity": "sha512-t7B/3MQf5M1T9hPCRG28DNGZUuxAuDqLYS03rJrIk2prj/UV7Z6FOneijhQhnv/Xa039vidXeVbvjK2SK5f7Gg==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.10.1.tgz", + "integrity": "sha512-qX8KZcmbvA23zDi+lk9s6hC1FM7jgLHYIjuLgULgc8QtYnmB3tAVIYkNoKRQ75qWBeyzcoMoK8ZQmogGtC/w0g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-typescript": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.10.1.tgz", + "integrity": "sha512-v+QWKlmCnsaimLeqq9vyCsVRMViZG1k2SZTlcZvB+TqyH570Zsij8nvVUZzOASCRiQFUxkLrn9Wg/kH0zgy5OQ==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-syntax-typescript": "^7.10.1" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.10.1.tgz", + "integrity": "sha512-zZ0Poh/yy1d4jeDWpx/mNwbKJVwUYJX73q+gyh4bwtG0/iUlzdEu0sLMda8yuDFS6LBQlT/ST1SJAR6zYwXWgw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.10.1.tgz", + "integrity": "sha512-Y/2a2W299k0VIUdbqYm9X2qS6fE0CUBhhiPpimK6byy7OJ/kORLlIX+J6UrjgNu5awvs62k+6RSslxhcvVw2Tw==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1" + } + }, + "@babel/preset-env": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.10.2.tgz", + "integrity": "sha512-MjqhX0RZaEgK/KueRzh+3yPSk30oqDKJ5HP5tqTSB1e2gzGS3PLy7K0BIpnp78+0anFuSwOeuCf1zZO7RzRvEA==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.10.1", + "@babel/helper-compilation-targets": "^7.10.2", + "@babel/helper-module-imports": "^7.10.1", + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-proposal-async-generator-functions": "^7.10.1", + "@babel/plugin-proposal-class-properties": "^7.10.1", + "@babel/plugin-proposal-dynamic-import": "^7.10.1", + "@babel/plugin-proposal-json-strings": "^7.10.1", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.10.1", + "@babel/plugin-proposal-numeric-separator": "^7.10.1", + "@babel/plugin-proposal-object-rest-spread": "^7.10.1", + "@babel/plugin-proposal-optional-catch-binding": "^7.10.1", + "@babel/plugin-proposal-optional-chaining": "^7.10.1", + "@babel/plugin-proposal-private-methods": "^7.10.1", + "@babel/plugin-proposal-unicode-property-regex": "^7.10.1", + "@babel/plugin-syntax-async-generators": "^7.8.0", + "@babel/plugin-syntax-class-properties": "^7.10.1", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", + "@babel/plugin-syntax-numeric-separator": "^7.10.1", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.0", + "@babel/plugin-syntax-top-level-await": "^7.10.1", + "@babel/plugin-transform-arrow-functions": "^7.10.1", + "@babel/plugin-transform-async-to-generator": "^7.10.1", + "@babel/plugin-transform-block-scoped-functions": "^7.10.1", + "@babel/plugin-transform-block-scoping": "^7.10.1", + "@babel/plugin-transform-classes": "^7.10.1", + "@babel/plugin-transform-computed-properties": "^7.10.1", + "@babel/plugin-transform-destructuring": "^7.10.1", + "@babel/plugin-transform-dotall-regex": "^7.10.1", + "@babel/plugin-transform-duplicate-keys": "^7.10.1", + "@babel/plugin-transform-exponentiation-operator": "^7.10.1", + "@babel/plugin-transform-for-of": "^7.10.1", + "@babel/plugin-transform-function-name": "^7.10.1", + "@babel/plugin-transform-literals": "^7.10.1", + "@babel/plugin-transform-member-expression-literals": "^7.10.1", + "@babel/plugin-transform-modules-amd": "^7.10.1", + "@babel/plugin-transform-modules-commonjs": "^7.10.1", + "@babel/plugin-transform-modules-systemjs": "^7.10.1", + "@babel/plugin-transform-modules-umd": "^7.10.1", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.8.3", + "@babel/plugin-transform-new-target": "^7.10.1", + "@babel/plugin-transform-object-super": "^7.10.1", + "@babel/plugin-transform-parameters": "^7.10.1", + "@babel/plugin-transform-property-literals": "^7.10.1", + "@babel/plugin-transform-regenerator": "^7.10.1", + "@babel/plugin-transform-reserved-words": "^7.10.1", + "@babel/plugin-transform-shorthand-properties": "^7.10.1", + "@babel/plugin-transform-spread": "^7.10.1", + "@babel/plugin-transform-sticky-regex": "^7.10.1", + "@babel/plugin-transform-template-literals": "^7.10.1", + "@babel/plugin-transform-typeof-symbol": "^7.10.1", + "@babel/plugin-transform-unicode-escapes": "^7.10.1", + "@babel/plugin-transform-unicode-regex": "^7.10.1", + "@babel/preset-modules": "^0.1.3", + "@babel/types": "^7.10.2", + "browserslist": "^4.12.0", + "core-js-compat": "^3.6.2", + "invariant": "^2.2.2", + "levenary": "^1.1.1", + "semver": "^5.5.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "@babel/preset-modules": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.3.tgz", + "integrity": "sha512-Ra3JXOHBq2xd56xSF7lMKXdjBn3T772Y1Wet3yWnkDly9zHvJki029tAFzvAAK5cf4YV3yoxuP61crYRol6SVg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/preset-react": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.10.1.tgz", + "integrity": "sha512-Rw0SxQ7VKhObmFjD/cUcKhPTtzpeviEFX1E6PgP+cYOhQ98icNqtINNFANlsdbQHrmeWnqdxA4Tmnl1jy5tp3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.1", + "@babel/plugin-transform-react-display-name": "^7.10.1", + "@babel/plugin-transform-react-jsx": "^7.10.1", + "@babel/plugin-transform-react-jsx-development": "^7.10.1", + "@babel/plugin-transform-react-jsx-self": "^7.10.1", + "@babel/plugin-transform-react-jsx-source": "^7.10.1", + "@babel/plugin-transform-react-pure-annotations": "^7.10.1" + } + }, + "@babel/preset-typescript": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.9.0.tgz", + "integrity": "sha512-S4cueFnGrIbvYJgwsVFKdvOmpiL0XGw9MFW9D0vgRys5g36PBhZRL8NX8Gr2akz8XRtzq6HuDXPD/1nniagNUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-transform-typescript": "^7.9.0" + } + }, + "@babel/runtime": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.10.2.tgz", + "integrity": "sha512-6sF3uQw2ivImfVIl62RZ7MXhO2tap69WeWK57vAaimT6AZbE4FbqjdEJIN1UqoD6wI6B+1n9UiagafH1sxjOtg==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/runtime-corejs3": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.10.2.tgz", + "integrity": "sha512-+a2M/u7r15o3dV1NEizr9bRi+KUVnrs/qYxF0Z06DAPx/4VCWaz1WA7EcbE+uqGgt39lp5akWGmHsTseIkHkHg==", + "dev": true, + "requires": { + "core-js-pure": "^3.0.0", + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.1.tgz", + "integrity": "sha512-OQDg6SqvFSsc9A0ej6SKINWrpJiNonRIniYondK2ViKhB06i3c0s+76XUft71iqBEe9S1OKsHwPAjfHnuvnCig==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.1", + "@babel/parser": "^7.10.1", + "@babel/types": "^7.10.1" + } + }, + "@babel/traverse": { + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.10.1.tgz", + "integrity": "sha512-C/cTuXeKt85K+p08jN6vMDz8vSV0vZcI0wmQ36o6mjbuo++kPMdpOYw23W2XH04dbRt9/nMEfA4W3eR21CD+TQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.1", + "@babel/generator": "^7.10.1", + "@babel/helper-function-name": "^7.10.1", + "@babel/helper-split-export-declaration": "^7.10.1", + "@babel/parser": "^7.10.1", + "@babel/types": "^7.10.1", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.13" + } + }, + "@babel/types": { + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.10.2.tgz", + "integrity": "sha512-AD3AwWBSz0AWF0AkCN9VPiWrvldXq+/e3cHa4J89vo4ymjz1XwrBFFVZmkJTsQIPNk+ZVomPSXUJqq8yyjZsng==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.1", + "lodash": "^4.17.13", + "to-fast-properties": "^2.0.0" + } + }, + "@cnakazawa/watch": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", + "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", + "dev": true, + "requires": { + "exec-sh": "^0.3.2", + "minimist": "^1.2.0" + } + }, + "@csstools/convert-colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@csstools/convert-colors/-/convert-colors-1.4.0.tgz", + "integrity": "sha512-5a6wqoJV/xEdbRNKVo6I4hO3VjyDq//8q2f9I6PBAvMesJHFauXDorcNCsr9RzvsZnaWi5NYCcfyqP1QeFHFbw==", + "dev": true + }, + "@csstools/normalize.css": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/@csstools/normalize.css/-/normalize.css-10.1.0.tgz", + "integrity": "sha512-ij4wRiunFfaJxjB0BdrYHIH8FxBJpOwNPhhAcunlmPdXudL1WQV1qoP9un6JsEBAgQH+7UXyyjh0g7jTxXK6tg==", + "dev": true + }, + "@hapi/address": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@hapi/address/-/address-2.1.4.tgz", + "integrity": "sha512-QD1PhQk+s31P1ixsX0H0Suoupp3VMXzIVMSwobR3F3MSUO2YCV0B7xqLcUw/Bh8yuvd3LhpyqLQWTNcRmp6IdQ==", + "dev": true + }, + "@hapi/bourne": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-1.3.2.tgz", + "integrity": "sha512-1dVNHT76Uu5N3eJNTYcvxee+jzX4Z9lfciqRRHCU27ihbUcYi+iSc2iml5Ke1LXe1SyJCLA0+14Jh4tXJgOppA==", + "dev": true + }, + "@hapi/hoek": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-8.5.1.tgz", + "integrity": "sha512-yN7kbciD87WzLGc5539Tn0sApjyiGHAJgKvG9W8C7O+6c7qmoQMfVs0W4bX17eqz6C78QJqqFrtgdK5EWf6Qow==", + "dev": true + }, + "@hapi/joi": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/@hapi/joi/-/joi-15.1.1.tgz", + "integrity": "sha512-entf8ZMOK8sc+8YfeOlM8pCfg3b5+WZIKBfUaaJT8UsjAAPjartzxIYm3TIbjvA4u+u++KbcXD38k682nVHDAQ==", + "dev": true, + "requires": { + "@hapi/address": "2.x.x", + "@hapi/bourne": "1.x.x", + "@hapi/hoek": "8.x.x", + "@hapi/topo": "3.x.x" + } + }, + "@hapi/topo": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-3.1.6.tgz", + "integrity": "sha512-tAag0jEcjwH+P2quUfipd7liWCNX2F8NvYjQp2wtInsZxnMlypdw0FtAOLxtvvkO+GSRRbmNi8m/5y42PQJYCQ==", + "dev": true, + "requires": { + "@hapi/hoek": "^8.3.0" + } + }, + "@jest/console": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-24.9.0.tgz", + "integrity": "sha512-Zuj6b8TnKXi3q4ymac8EQfc3ea/uhLeCGThFqXeC8H9/raaH8ARPUTdId+XyGd03Z4In0/VjD2OYFcBF09fNLQ==", + "dev": true, + "requires": { + "@jest/source-map": "^24.9.0", + "chalk": "^2.0.1", + "slash": "^2.0.0" + } + }, + "@jest/core": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-24.9.0.tgz", + "integrity": "sha512-Fogg3s4wlAr1VX7q+rhV9RVnUv5tD7VuWfYy1+whMiWUrvl7U3QJSJyWcDio9Lq2prqYsZaeTv2Rz24pWGkJ2A==", + "dev": true, + "requires": { + "@jest/console": "^24.7.1", + "@jest/reporters": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "graceful-fs": "^4.1.15", + "jest-changed-files": "^24.9.0", + "jest-config": "^24.9.0", + "jest-haste-map": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.9.0", + "jest-resolve-dependencies": "^24.9.0", + "jest-runner": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-snapshot": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "jest-watcher": "^24.9.0", + "micromatch": "^3.1.10", + "p-each-series": "^1.0.0", + "realpath-native": "^1.1.0", + "rimraf": "^2.5.4", + "slash": "^2.0.0", + "strip-ansi": "^5.0.0" + }, + "dependencies": { + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true + } + } + }, + "@jest/environment": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-24.9.0.tgz", + "integrity": "sha512-5A1QluTPhvdIPFYnO3sZC3smkNeXPVELz7ikPbhUj0bQjB07EoE9qtLrem14ZUYWdVayYbsjVwIiL4WBIMV4aQ==", + "dev": true, + "requires": { + "@jest/fake-timers": "^24.9.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "jest-mock": "^24.9.0" + } + }, + "@jest/fake-timers": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-24.9.0.tgz", + "integrity": "sha512-eWQcNa2YSwzXWIMC5KufBh3oWRIijrQFROsIqt6v/NS9Io/gknw1jsAC9c+ih/RQX4A3O7SeWAhQeN0goKhT9A==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-mock": "^24.9.0" + } + }, + "@jest/reporters": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-24.9.0.tgz", + "integrity": "sha512-mu4X0yjaHrffOsWmVLzitKmmmWSQ3GGuefgNscUSWNiUNcEOSEQk9k3pERKEQVBb0Cnn88+UESIsZEMH3o88Gw==", + "dev": true, + "requires": { + "@jest/environment": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "glob": "^7.1.2", + "istanbul-lib-coverage": "^2.0.2", + "istanbul-lib-instrument": "^3.0.1", + "istanbul-lib-report": "^2.0.4", + "istanbul-lib-source-maps": "^3.0.1", + "istanbul-reports": "^2.2.6", + "jest-haste-map": "^24.9.0", + "jest-resolve": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-util": "^24.9.0", + "jest-worker": "^24.6.0", + "node-notifier": "^5.4.2", + "slash": "^2.0.0", + "source-map": "^0.6.0", + "string-length": "^2.0.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "@jest/source-map": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-24.9.0.tgz", + "integrity": "sha512-/Xw7xGlsZb4MJzNDgB7PW5crou5JqWiBQaz6xyPd3ArOg2nfn/PunV8+olXbbEZzNl591o5rWKE9BRDaFAuIBg==", + "dev": true, + "requires": { + "callsites": "^3.0.0", + "graceful-fs": "^4.1.15", + "source-map": "^0.6.0" + }, + "dependencies": { + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "@jest/test-result": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-24.9.0.tgz", + "integrity": "sha512-XEFrHbBonBJ8dGp2JmF8kP/nQI/ImPpygKHwQ/SY+es59Z3L5PI4Qb9TQQMAEeYsThG1xF0k6tmG0tIKATNiiA==", + "dev": true, + "requires": { + "@jest/console": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/istanbul-lib-coverage": "^2.0.0" + } + }, + "@jest/test-sequencer": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-24.9.0.tgz", + "integrity": "sha512-6qqsU4o0kW1dvA95qfNog8v8gkRN9ph6Lz7r96IvZpHdNipP2cBcb07J1Z45mz/VIS01OHJ3pY8T5fUY38tg4A==", + "dev": true, + "requires": { + "@jest/test-result": "^24.9.0", + "jest-haste-map": "^24.9.0", + "jest-runner": "^24.9.0", + "jest-runtime": "^24.9.0" + } + }, + "@jest/transform": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-24.9.0.tgz", + "integrity": "sha512-TcQUmyNRxV94S0QpMOnZl0++6RMiqpbH/ZMccFB/amku6Uwvyb1cjYX7xkp5nGNkbX4QPH/FcB6q1HBTHynLmQ==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/types": "^24.9.0", + "babel-plugin-istanbul": "^5.1.0", + "chalk": "^2.0.1", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.1.15", + "jest-haste-map": "^24.9.0", + "jest-regex-util": "^24.9.0", + "jest-util": "^24.9.0", + "micromatch": "^3.1.10", + "pirates": "^4.0.1", + "realpath-native": "^1.1.0", + "slash": "^2.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "2.4.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "@jest/types": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz", + "integrity": "sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^1.1.1", + "@types/yargs": "^13.0.0" + } + }, + "@mrmlnc/readdir-enhanced": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", + "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", + "dev": true, + "requires": { + "call-me-maybe": "^1.0.1", + "glob-to-regexp": "^0.3.0" + } + }, + "@nodelib/fs.stat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", + "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", + "dev": true + }, + "@svgr/babel-plugin-add-jsx-attribute": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-4.2.0.tgz", + "integrity": "sha512-j7KnilGyZzYr/jhcrSYS3FGWMZVaqyCG0vzMCwzvei0coIkczuYMcniK07nI0aHJINciujjH11T72ICW5eL5Ig==", + "dev": true + }, + "@svgr/babel-plugin-remove-jsx-attribute": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-4.2.0.tgz", + "integrity": "sha512-3XHLtJ+HbRCH4n28S7y/yZoEQnRpl0tvTZQsHqvaeNXPra+6vE5tbRliH3ox1yZYPCxrlqaJT/Mg+75GpDKlvQ==", + "dev": true + }, + "@svgr/babel-plugin-remove-jsx-empty-expression": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-4.2.0.tgz", + "integrity": "sha512-yTr2iLdf6oEuUE9MsRdvt0NmdpMBAkgK8Bjhl6epb+eQWk6abBaX3d65UZ3E3FWaOwePyUgNyNCMVG61gGCQ7w==", + "dev": true + }, + "@svgr/babel-plugin-replace-jsx-attribute-value": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-4.2.0.tgz", + "integrity": "sha512-U9m870Kqm0ko8beHawRXLGLvSi/ZMrl89gJ5BNcT452fAjtF2p4uRzXkdzvGJJJYBgx7BmqlDjBN/eCp5AAX2w==", + "dev": true + }, + "@svgr/babel-plugin-svg-dynamic-title": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-4.3.3.tgz", + "integrity": "sha512-w3Be6xUNdwgParsvxkkeZb545VhXEwjGMwExMVBIdPQJeyMQHqm9Msnb2a1teHBqUYL66qtwfhNkbj1iarCG7w==", + "dev": true + }, + "@svgr/babel-plugin-svg-em-dimensions": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-4.2.0.tgz", + "integrity": "sha512-C0Uy+BHolCHGOZ8Dnr1zXy/KgpBOkEUYY9kI/HseHVPeMbluaX3CijJr7D4C5uR8zrc1T64nnq/k63ydQuGt4w==", + "dev": true + }, + "@svgr/babel-plugin-transform-react-native-svg": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-4.2.0.tgz", + "integrity": "sha512-7YvynOpZDpCOUoIVlaaOUU87J4Z6RdD6spYN4eUb5tfPoKGSF9OG2NuhgYnq4jSkAxcpMaXWPf1cePkzmqTPNw==", + "dev": true + }, + "@svgr/babel-plugin-transform-svg-component": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-4.2.0.tgz", + "integrity": "sha512-hYfYuZhQPCBVotABsXKSCfel2slf/yvJY8heTVX1PCTaq/IgASq1IyxPPKJ0chWREEKewIU/JMSsIGBtK1KKxw==", + "dev": true + }, + "@svgr/babel-preset": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-4.3.3.tgz", + "integrity": "sha512-6PG80tdz4eAlYUN3g5GZiUjg2FMcp+Wn6rtnz5WJG9ITGEF1pmFdzq02597Hn0OmnQuCVaBYQE1OVFAnwOl+0A==", + "dev": true, + "requires": { + "@svgr/babel-plugin-add-jsx-attribute": "^4.2.0", + "@svgr/babel-plugin-remove-jsx-attribute": "^4.2.0", + "@svgr/babel-plugin-remove-jsx-empty-expression": "^4.2.0", + "@svgr/babel-plugin-replace-jsx-attribute-value": "^4.2.0", + "@svgr/babel-plugin-svg-dynamic-title": "^4.3.3", + "@svgr/babel-plugin-svg-em-dimensions": "^4.2.0", + "@svgr/babel-plugin-transform-react-native-svg": "^4.2.0", + "@svgr/babel-plugin-transform-svg-component": "^4.2.0" + } + }, + "@svgr/core": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@svgr/core/-/core-4.3.3.tgz", + "integrity": "sha512-qNuGF1QON1626UCaZamWt5yedpgOytvLj5BQZe2j1k1B8DUG4OyugZyfEwBeXozCUwhLEpsrgPrE+eCu4fY17w==", + "dev": true, + "requires": { + "@svgr/plugin-jsx": "^4.3.3", + "camelcase": "^5.3.1", + "cosmiconfig": "^5.2.1" + } + }, + "@svgr/hast-util-to-babel-ast": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-4.3.2.tgz", + "integrity": "sha512-JioXclZGhFIDL3ddn4Kiq8qEqYM2PyDKV0aYno8+IXTLuYt6TOgHUbUAAFvqtb0Xn37NwP0BTHglejFoYr8RZg==", + "dev": true, + "requires": { + "@babel/types": "^7.4.4" + } + }, + "@svgr/plugin-jsx": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-4.3.3.tgz", + "integrity": "sha512-cLOCSpNWQnDB1/v+SUENHH7a0XY09bfuMKdq9+gYvtuwzC2rU4I0wKGFEp1i24holdQdwodCtDQdFtJiTCWc+w==", + "dev": true, + "requires": { + "@babel/core": "^7.4.5", + "@svgr/babel-preset": "^4.3.3", + "@svgr/hast-util-to-babel-ast": "^4.3.2", + "svg-parser": "^2.0.0" + } + }, + "@svgr/plugin-svgo": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-4.3.1.tgz", + "integrity": "sha512-PrMtEDUWjX3Ea65JsVCwTIXuSqa3CG9px+DluF1/eo9mlDrgrtFE7NE/DjdhjJgSM9wenlVBzkzneSIUgfUI/w==", + "dev": true, + "requires": { + "cosmiconfig": "^5.2.1", + "merge-deep": "^3.0.2", + "svgo": "^1.2.2" + } + }, + "@svgr/webpack": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-4.3.3.tgz", + "integrity": "sha512-bjnWolZ6KVsHhgyCoYRFmbd26p8XVbulCzSG53BDQqAr+JOAderYK7CuYrB3bDjHJuF6LJ7Wrr42+goLRV9qIg==", + "dev": true, + "requires": { + "@babel/core": "^7.4.5", + "@babel/plugin-transform-react-constant-elements": "^7.0.0", + "@babel/preset-env": "^7.4.5", + "@babel/preset-react": "^7.0.0", + "@svgr/core": "^4.3.3", + "@svgr/plugin-jsx": "^4.3.3", + "@svgr/plugin-svgo": "^4.3.1", + "loader-utils": "^1.2.3" + } + }, + "@types/babel__core": { + "version": "7.1.8", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.8.tgz", + "integrity": "sha512-KXBiQG2OXvaPWFPDS1rD8yV9vO0OuWIqAEqLsbfX0oU2REN5KuoMnZ1gClWcBhO5I3n6oTVAmrMufOvRqdmFTQ==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "@types/babel__generator": { + "version": "7.6.1", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.1.tgz", + "integrity": "sha512-bBKm+2VPJcMRVwNhxKu8W+5/zT7pwNEqeokFOmbvVSqGzFneNxYcEBro9Ac7/N9tlsaPYnZLK8J1LWKkMsLAew==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@types/babel__template": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.0.2.tgz", + "integrity": "sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@types/babel__traverse": { + "version": "7.0.12", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.0.12.tgz", + "integrity": "sha512-t4CoEokHTfcyfb4hUaF9oOHu9RmmNWnm1CP0YmMqOOfClKascOmvlEM736vlqeScuGvBDsHkf8R2INd4DWreQA==", + "dev": true, + "requires": { + "@babel/types": "^7.3.0" + } + }, + "@types/color-name": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==", + "dev": true + }, + "@types/eslint-visitor-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz", + "integrity": "sha512-OCutwjDZ4aFS6PB1UZ988C4YgwlBHJd6wCeQqaLdmadZ/7e+w79+hbMUFC1QXDNCmdyoRfAFdm0RypzwR+Qpag==", + "dev": true + }, + "@types/events": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/events/-/events-3.0.0.tgz", + "integrity": "sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g==", + "dev": true + }, + "@types/glob": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.1.tgz", + "integrity": "sha512-1Bh06cbWJUHMC97acuD6UMG29nMt0Aqz1vF3guLfG+kHHJhy3AyohZFFxYk2f7Q1SQIrNwvncxAE0N/9s70F2w==", + "dev": true, + "requires": { + "@types/events": "*", + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.2.tgz", + "integrity": "sha512-rsZg7eL+Xcxsxk2XlBt9KcG8nOp9iYdKCOikY9x2RFJCyOdNj4MKPQty0e8oZr29vVAzKXr1BmR+kZauti3o1w==", + "dev": true + }, + "@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz", + "integrity": "sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*", + "@types/istanbul-lib-report": "*" + } + }, + "@types/jasmine": { + "version": "3.5.10", + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.5.10.tgz", + "integrity": "sha512-3F8qpwBAiVc5+HPJeXJpbrl+XjawGmciN5LgiO7Gv1pl1RHtjoMNqZpqEksaPJW05ViKe8snYInRs6xB25Xdew==", + "dev": true + }, + "@types/json-schema": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.4.tgz", + "integrity": "sha512-8+KAKzEvSUdeo+kmqnKrqgeE+LcA0tjYWFY7RPProVYwnqDjukzO+3b6dLD56rYX5TdWejnEOLJYOIeh4CXKuA==", + "dev": true + }, + "@types/minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", + "dev": true + }, + "@types/node": { + "version": "14.0.10", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.10.tgz", + "integrity": "sha512-Bz23oN/5bi0rniKT24ExLf4cK0JdvN3dH/3k0whYkdN4eI4vS2ZW/2ENNn2uxHCzWcbdHIa/GRuWQytfzCjRYw==", + "dev": true + }, + "@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true + }, + "@types/prop-types": { + "version": "15.7.3", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.3.tgz", + "integrity": "sha512-KfRL3PuHmqQLOG+2tGpRO26Ctg+Cq1E01D2DMriKEATHgWLfeNDmq9e29Q9WIky0dQ3NPkd1mzYH8Lm936Z9qw==", + "dev": true + }, + "@types/q": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz", + "integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==", + "dev": true + }, + "@types/react": { + "version": "16.9.35", + "resolved": "https://registry.npmjs.org/@types/react/-/react-16.9.35.tgz", + "integrity": "sha512-q0n0SsWcGc8nDqH2GJfWQWUOmZSJhXV64CjVN5SvcNti3TdEaA3AH0D8DwNmMdzjMAC/78tB8nAZIlV8yTz+zQ==", + "dev": true, + "requires": { + "@types/prop-types": "*", + "csstype": "^2.2.0" + } + }, + "@types/react-dom": { + "version": "16.9.8", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-16.9.8.tgz", + "integrity": "sha512-ykkPQ+5nFknnlU6lDd947WbQ6TE3NNzbQAkInC2EKY1qeYdTKp7onFusmYZb+ityzx2YviqT6BXSu+LyWWJwcA==", + "dev": true, + "requires": { + "@types/react": "*" + } + }, + "@types/stack-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz", + "integrity": "sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==", + "dev": true + }, + "@types/yargs": { + "version": "13.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.9.tgz", + "integrity": "sha512-xrvhZ4DZewMDhoH1utLtOAwYQy60eYFoXeje30TzM3VOvQlBwQaEpKFq5m34k1wOw2AKIi2pwtiAjdmhvlBUzg==", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-15.0.0.tgz", + "integrity": "sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw==", + "dev": true + }, + "@typescript-eslint/eslint-plugin": { + "version": "2.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.34.0.tgz", + "integrity": "sha512-4zY3Z88rEE99+CNvTbXSyovv2z9PNOVffTWD2W8QF5s2prBQtwN2zadqERcrHpcR7O/+KMI3fcTAmUUhK/iQcQ==", + "dev": true, + "requires": { + "@typescript-eslint/experimental-utils": "2.34.0", + "functional-red-black-tree": "^1.0.1", + "regexpp": "^3.0.0", + "tsutils": "^3.17.1" + } + }, + "@typescript-eslint/experimental-utils": { + "version": "2.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.34.0.tgz", + "integrity": "sha512-eS6FTkq+wuMJ+sgtuNTtcqavWXqsflWcfBnlYhg/nS4aZ1leewkXGbvBhaapn1q6qf4M71bsR1tez5JTRMuqwA==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.3", + "@typescript-eslint/typescript-estree": "2.34.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^2.0.0" + } + }, + "@typescript-eslint/parser": { + "version": "2.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.34.0.tgz", + "integrity": "sha512-03ilO0ucSD0EPTw2X4PntSIRFtDPWjrVq7C3/Z3VQHRC7+13YB55rcJI3Jt+YgeHbjUdJPcPa7b23rXCBokuyA==", + "dev": true, + "requires": { + "@types/eslint-visitor-keys": "^1.0.0", + "@typescript-eslint/experimental-utils": "2.34.0", + "@typescript-eslint/typescript-estree": "2.34.0", + "eslint-visitor-keys": "^1.1.0" + } + }, + "@typescript-eslint/typescript-estree": { + "version": "2.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.34.0.tgz", + "integrity": "sha512-OMAr+nJWKdlVM9LOqCqh3pQQPwxHAN7Du8DR6dmwCrAmxtiXQnhHJ6tBNtf+cggqfo51SG/FCwnKhXCIM7hnVg==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "eslint-visitor-keys": "^1.1.0", + "glob": "^7.1.6", + "is-glob": "^4.0.1", + "lodash": "^4.17.15", + "semver": "^7.3.2", + "tsutils": "^3.17.1" + }, + "dependencies": { + "semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "dev": true + } + } + }, + "@webassemblyjs/ast": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz", + "integrity": "sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ==", + "dev": true, + "requires": { + "@webassemblyjs/helper-module-context": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/wast-parser": "1.8.5" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz", + "integrity": "sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ==", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz", + "integrity": "sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz", + "integrity": "sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q==", + "dev": true + }, + "@webassemblyjs/helper-code-frame": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz", + "integrity": "sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ==", + "dev": true, + "requires": { + "@webassemblyjs/wast-printer": "1.8.5" + } + }, + "@webassemblyjs/helper-fsm": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz", + "integrity": "sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow==", + "dev": true + }, + "@webassemblyjs/helper-module-context": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz", + "integrity": "sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "mamacro": "^0.0.3" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz", + "integrity": "sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz", + "integrity": "sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz", + "integrity": "sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g==", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.8.5.tgz", + "integrity": "sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A==", + "dev": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.8.5.tgz", + "integrity": "sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw==", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz", + "integrity": "sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/helper-wasm-section": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5", + "@webassemblyjs/wasm-opt": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5", + "@webassemblyjs/wast-printer": "1.8.5" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz", + "integrity": "sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/ieee754": "1.8.5", + "@webassemblyjs/leb128": "1.8.5", + "@webassemblyjs/utf8": "1.8.5" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz", + "integrity": "sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-buffer": "1.8.5", + "@webassemblyjs/wasm-gen": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz", + "integrity": "sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-api-error": "1.8.5", + "@webassemblyjs/helper-wasm-bytecode": "1.8.5", + "@webassemblyjs/ieee754": "1.8.5", + "@webassemblyjs/leb128": "1.8.5", + "@webassemblyjs/utf8": "1.8.5" + } + }, + "@webassemblyjs/wast-parser": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz", + "integrity": "sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/floating-point-hex-parser": "1.8.5", + "@webassemblyjs/helper-api-error": "1.8.5", + "@webassemblyjs/helper-code-frame": "1.8.5", + "@webassemblyjs/helper-fsm": "1.8.5", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz", + "integrity": "sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/wast-parser": "1.8.5", + "@xtuc/long": "4.2.2" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "abab": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.3.tgz", + "integrity": "sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg==", + "dev": true + }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "dev": true, + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "acorn": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.2.0.tgz", + "integrity": "sha512-apwXVmYVpQ34m/i71vrApRrRKCWQnZZF1+npOD0WV5xZFfwWOmKGQ2RWlfdy9vWITsenisM8M0Qeq8agcFHNiQ==", + "dev": true + }, + "acorn-globals": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", + "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", + "dev": true, + "requires": { + "acorn": "^6.0.1", + "acorn-walk": "^6.0.1" + }, + "dependencies": { + "acorn": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", + "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", + "dev": true + } + } + }, + "acorn-jsx": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz", + "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==", + "dev": true + }, + "acorn-walk": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", + "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==", + "dev": true + }, + "address": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/address/-/address-1.1.2.tgz", + "integrity": "sha512-aT6camzM4xEA54YVJYSqxz1kv4IHnQZRtThJJHhUMRExaU5spC7jX5ugSwTaTgJliIgs4VhZOk7htClvQ/LmRA==", + "dev": true + }, + "adjust-sourcemap-loader": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-2.0.0.tgz", + "integrity": "sha512-4hFsTsn58+YjrU9qKzML2JSSDqKvN8mUGQ0nNIrfPi8hmIONT4L3uUaT6MKdMsZ9AjsU6D2xDkZxCkbQPxChrA==", + "dev": true, + "requires": { + "assert": "1.4.1", + "camelcase": "5.0.0", + "loader-utils": "1.2.3", + "object-path": "0.11.4", + "regex-parser": "2.2.10" + }, + "dependencies": { + "camelcase": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz", + "integrity": "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==", + "dev": true + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^2.0.0", + "json5": "^1.0.1" + } + } + } + }, + "after": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", + "integrity": "sha1-/ts5T58OAqqXaOcCvaI7UF+ufh8=", + "dev": true + }, + "aggregate-error": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.0.1.tgz", + "integrity": "sha512-quoaXsZ9/BLNae5yiNoUz+Nhkwz83GhWwtYFglcjEQB2NDHCIpApbqXxIFnm4Pq/Nvhrsq5sYJFyohrrxnTGAA==", + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ajv": { + "version": "6.12.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.2.tgz", + "integrity": "sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-errors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", + "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", + "dev": true + }, + "ajv-keywords": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", + "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==", + "dev": true + }, + "alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", + "dev": true + }, + "ansi-colors": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", + "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", + "dev": true + }, + "ansi-escapes": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", + "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", + "dev": true, + "requires": { + "type-fest": "^0.11.0" + }, + "dependencies": { + "type-fest": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", + "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", + "dev": true + } + } + }, + "ansi-html": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", + "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", + "dev": true + }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "aria-query": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-3.0.0.tgz", + "integrity": "sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w=", + "dev": true, + "requires": { + "ast-types-flow": "0.0.7", + "commander": "^2.11.0" + } + }, + "arity-n": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arity-n/-/arity-n-1.0.4.tgz", + "integrity": "sha1-2edrEXM+CFacCEeuezmyhgswt0U=", + "dev": true + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", + "dev": true + }, + "array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "dev": true + }, + "array-includes": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.1.tgz", + "integrity": "sha512-c2VXaCHl7zPsvpkFsw4nxvFie4fh1ur9bpcgsVkIjqn0H/Xwdg+7fv3n2r/isyS8EBj5b06M9kHyZuIr4El6WQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0", + "is-string": "^1.0.5" + } + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "array.prototype.flat": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.2.3.tgz", + "integrity": "sha512-gBlRZV0VSmfPIeWfuuy56XZMvbVfbEUnOXUvt3F/eUUUSyzlgLxhEX4YAEpxNAogRGehPSnfXyPtYyKAhkzQhQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "arraybuffer.slice": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", + "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==", + "dev": true + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", + "dev": true + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "assert": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", + "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", + "dev": true, + "requires": { + "util": "0.10.3" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "ast-types-flow": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", + "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=", + "dev": true + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true + }, + "async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + }, + "async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", + "dev": true + }, + "async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "autoprefixer": { + "version": "9.8.0", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.0.tgz", + "integrity": "sha512-D96ZiIHXbDmU02dBaemyAg53ez+6F5yZmapmgKcjm35yEe1uVDYI8hGW3VYoGRaG290ZFf91YxHrR518vC0u/A==", + "dev": true, + "requires": { + "browserslist": "^4.12.0", + "caniuse-lite": "^1.0.30001061", + "chalk": "^2.4.2", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^7.0.30", + "postcss-value-parser": "^4.1.0" + } + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.0.tgz", + "integrity": "sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA==", + "dev": true + }, + "axobject-query": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.1.2.tgz", + "integrity": "sha512-ICt34ZmrVt8UQnvPl6TVyDTkmhXmAyAT4Jh5ugfGUX4MOrZ+U/ZY6/sdylRw3qGNr9Ub5AJsaHeDMzNLehRdOQ==", + "dev": true + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "babel-eslint": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/babel-eslint/-/babel-eslint-10.1.0.tgz", + "integrity": "sha512-ifWaTHQ0ce+448CYop8AdrQiBsGrnC+bMgfyKFdi6EsPLTAWG+QfyDeM6OH+FmWnKvEq5NnBMLvlBUPKQZoDSg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.7.0", + "@babel/traverse": "^7.7.0", + "@babel/types": "^7.7.0", + "eslint-visitor-keys": "^1.0.0", + "resolve": "^1.12.0" + } + }, + "babel-extract-comments": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/babel-extract-comments/-/babel-extract-comments-1.0.0.tgz", + "integrity": "sha512-qWWzi4TlddohA91bFwgt6zO/J0X+io7Qp184Fw0m2JYRSTZnJbFR8+07KmzudHCZgOiKRCrjhylwv9Xd8gfhVQ==", + "dev": true, + "requires": { + "babylon": "^6.18.0" + } + }, + "babel-jest": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-24.9.0.tgz", + "integrity": "sha512-ntuddfyiN+EhMw58PTNL1ph4C9rECiQXjI4nMMBKBaNjXvqLdkXpPRcMSr4iyBrJg/+wz9brFUD6RhOAT6r4Iw==", + "dev": true, + "requires": { + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/babel__core": "^7.1.0", + "babel-plugin-istanbul": "^5.1.0", + "babel-preset-jest": "^24.9.0", + "chalk": "^2.4.2", + "slash": "^2.0.0" + } + }, + "babel-loader": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.1.0.tgz", + "integrity": "sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw==", + "dev": true, + "requires": { + "find-cache-dir": "^2.1.0", + "loader-utils": "^1.4.0", + "mkdirp": "^0.5.3", + "pify": "^4.0.1", + "schema-utils": "^2.6.5" + }, + "dependencies": { + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + } + } + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dev": true, + "requires": { + "object.assign": "^4.1.0" + } + }, + "babel-plugin-istanbul": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-5.2.0.tgz", + "integrity": "sha512-5LphC0USA8t4i1zCtjbbNb6jJj/9+X6P37Qfirc/70EQ34xKlMW+a1RHGwxGI+SwWpNwZ27HqvzAobeqaXwiZw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "find-up": "^3.0.0", + "istanbul-lib-instrument": "^3.3.0", + "test-exclude": "^5.2.3" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + } + } + }, + "babel-plugin-jest-hoist": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-24.9.0.tgz", + "integrity": "sha512-2EMA2P8Vp7lG0RAzr4HXqtYwacfMErOuv1U3wrvxHX6rD1sV6xS3WXG3r8TRQ2r6w8OhvSdWt+z41hQNwNm3Xw==", + "dev": true, + "requires": { + "@types/babel__traverse": "^7.0.6" + } + }, + "babel-plugin-macros": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz", + "integrity": "sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.7.2", + "cosmiconfig": "^6.0.0", + "resolve": "^1.12.0" + }, + "dependencies": { + "cosmiconfig": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-6.0.0.tgz", + "integrity": "sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==", + "dev": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.7.2" + } + }, + "import-fresh": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "parse-json": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.0.0.tgz", + "integrity": "sha512-OOY5b7PAEFV0E2Fir1KOkxchnZNCdowAJgQ5NuxjpBKTRP3pQhwkrkxqQjeoKJ+fO7bCpmIZaogI4eZGDMEGOw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1", + "lines-and-columns": "^1.1.6" + } + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + } + } + }, + "babel-plugin-named-asset-import": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.6.tgz", + "integrity": "sha512-1aGDUfL1qOOIoqk9QKGIo2lANk+C7ko/fqH0uIyC71x3PEGz0uVP8ISgfEsFuG+FKmjHTvFK/nNM8dowpmUxLA==", + "dev": true + }, + "babel-plugin-syntax-object-rest-spread": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", + "integrity": "sha1-/WU28rzhODb/o6VFjEkDpZe7O/U=", + "dev": true + }, + "babel-plugin-transform-object-rest-spread": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-object-rest-spread/-/babel-plugin-transform-object-rest-spread-6.26.0.tgz", + "integrity": "sha1-DzZpLVD+9rfi1LOsFHgTepY7ewY=", + "dev": true, + "requires": { + "babel-plugin-syntax-object-rest-spread": "^6.8.0", + "babel-runtime": "^6.26.0" + } + }, + "babel-plugin-transform-react-remove-prop-types": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz", + "integrity": "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==", + "dev": true + }, + "babel-preset-jest": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-24.9.0.tgz", + "integrity": "sha512-izTUuhE4TMfTRPF92fFwD2QfdXaZW08qvWTFCI51V8rW5x00UuPgc3ajRoWofXOuxjfcOM5zzSYsQS3H8KGCAg==", + "dev": true, + "requires": { + "@babel/plugin-syntax-object-rest-spread": "^7.0.0", + "babel-plugin-jest-hoist": "^24.9.0" + } + }, + "babel-preset-react-app": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-9.1.2.tgz", + "integrity": "sha512-k58RtQOKH21NyKtzptoAvtAODuAJJs3ZhqBMl456/GnXEQ/0La92pNmwgWoMn5pBTrsvk3YYXdY7zpY4e3UIxA==", + "dev": true, + "requires": { + "@babel/core": "7.9.0", + "@babel/plugin-proposal-class-properties": "7.8.3", + "@babel/plugin-proposal-decorators": "7.8.3", + "@babel/plugin-proposal-nullish-coalescing-operator": "7.8.3", + "@babel/plugin-proposal-numeric-separator": "7.8.3", + "@babel/plugin-proposal-optional-chaining": "7.9.0", + "@babel/plugin-transform-flow-strip-types": "7.9.0", + "@babel/plugin-transform-react-display-name": "7.8.3", + "@babel/plugin-transform-runtime": "7.9.0", + "@babel/preset-env": "7.9.0", + "@babel/preset-react": "7.9.1", + "@babel/preset-typescript": "7.9.0", + "@babel/runtime": "7.9.0", + "babel-plugin-macros": "2.8.0", + "babel-plugin-transform-react-remove-prop-types": "0.4.24" + }, + "dependencies": { + "@babel/plugin-proposal-class-properties": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.8.3.tgz", + "integrity": "sha512-EqFhbo7IosdgPgZggHaNObkmO1kNUe3slaKu54d5OWvy+p9QIKOzK1GAEpAIsZtWVtPXUHSMcT4smvDrCfY4AA==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-TS9MlfzXpXKt6YYomudb/KU7nQI6/xnapG6in1uZxoxDghuSMZsPb6D2fyUwNYSAp4l1iR7QtFOjkqcRYcUsfw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.8.3.tgz", + "integrity": "sha512-jWioO1s6R/R+wEHizfaScNsAx+xKgwTLNXSh7tTC4Usj3ItsPEhYkEpU4h+lpnBwq7NBVOJXfO6cRFYcX69JUQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.9.0.tgz", + "integrity": "sha512-NDn5tu3tcv4W30jNhmc2hyD5c56G6cXx4TesJubhxrJeCvuuMpttxr0OnNCqbZGhFjLrg+NIhxxC+BK5F6yS3w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.0" + } + }, + "@babel/plugin-transform-react-display-name": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.8.3.tgz", + "integrity": "sha512-3Jy/PCw8Fe6uBKtEgz3M82ljt+lTg+xJaM4og+eyu83qLT87ZUSckn0wy7r31jflURWLO83TW6Ylf7lyXj3m5A==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/preset-env": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.9.0.tgz", + "integrity": "sha512-712DeRXT6dyKAM/FMbQTV/FvRCms2hPCx+3weRjZ8iQVQWZejWWk1wwG6ViWMyqb/ouBbGOl5b6aCk0+j1NmsQ==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.9.0", + "@babel/helper-compilation-targets": "^7.8.7", + "@babel/helper-module-imports": "^7.8.3", + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-proposal-async-generator-functions": "^7.8.3", + "@babel/plugin-proposal-dynamic-import": "^7.8.3", + "@babel/plugin-proposal-json-strings": "^7.8.3", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-proposal-numeric-separator": "^7.8.3", + "@babel/plugin-proposal-object-rest-spread": "^7.9.0", + "@babel/plugin-proposal-optional-catch-binding": "^7.8.3", + "@babel/plugin-proposal-optional-chaining": "^7.9.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.8.3", + "@babel/plugin-syntax-async-generators": "^7.8.0", + "@babel/plugin-syntax-dynamic-import": "^7.8.0", + "@babel/plugin-syntax-json-strings": "^7.8.0", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", + "@babel/plugin-syntax-numeric-separator": "^7.8.0", + "@babel/plugin-syntax-object-rest-spread": "^7.8.0", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.0", + "@babel/plugin-syntax-top-level-await": "^7.8.3", + "@babel/plugin-transform-arrow-functions": "^7.8.3", + "@babel/plugin-transform-async-to-generator": "^7.8.3", + "@babel/plugin-transform-block-scoped-functions": "^7.8.3", + "@babel/plugin-transform-block-scoping": "^7.8.3", + "@babel/plugin-transform-classes": "^7.9.0", + "@babel/plugin-transform-computed-properties": "^7.8.3", + "@babel/plugin-transform-destructuring": "^7.8.3", + "@babel/plugin-transform-dotall-regex": "^7.8.3", + "@babel/plugin-transform-duplicate-keys": "^7.8.3", + "@babel/plugin-transform-exponentiation-operator": "^7.8.3", + "@babel/plugin-transform-for-of": "^7.9.0", + "@babel/plugin-transform-function-name": "^7.8.3", + "@babel/plugin-transform-literals": "^7.8.3", + "@babel/plugin-transform-member-expression-literals": "^7.8.3", + "@babel/plugin-transform-modules-amd": "^7.9.0", + "@babel/plugin-transform-modules-commonjs": "^7.9.0", + "@babel/plugin-transform-modules-systemjs": "^7.9.0", + "@babel/plugin-transform-modules-umd": "^7.9.0", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.8.3", + "@babel/plugin-transform-new-target": "^7.8.3", + "@babel/plugin-transform-object-super": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.8.7", + "@babel/plugin-transform-property-literals": "^7.8.3", + "@babel/plugin-transform-regenerator": "^7.8.7", + "@babel/plugin-transform-reserved-words": "^7.8.3", + "@babel/plugin-transform-shorthand-properties": "^7.8.3", + "@babel/plugin-transform-spread": "^7.8.3", + "@babel/plugin-transform-sticky-regex": "^7.8.3", + "@babel/plugin-transform-template-literals": "^7.8.3", + "@babel/plugin-transform-typeof-symbol": "^7.8.4", + "@babel/plugin-transform-unicode-regex": "^7.8.3", + "@babel/preset-modules": "^0.1.3", + "@babel/types": "^7.9.0", + "browserslist": "^4.9.1", + "core-js-compat": "^3.6.2", + "invariant": "^2.2.2", + "levenary": "^1.1.1", + "semver": "^5.5.0" + } + }, + "@babel/preset-react": { + "version": "7.9.1", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.9.1.tgz", + "integrity": "sha512-aJBYF23MPj0RNdp/4bHnAP0NVqqZRr9kl0NAOP4nJCex6OYVio59+dnQzsAWFuogdLyeaKA1hmfUIVZkY5J+TQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3", + "@babel/plugin-transform-react-display-name": "^7.8.3", + "@babel/plugin-transform-react-jsx": "^7.9.1", + "@babel/plugin-transform-react-jsx-development": "^7.9.0", + "@babel/plugin-transform-react-jsx-self": "^7.9.0", + "@babel/plugin-transform-react-jsx-source": "^7.9.0" + } + }, + "@babel/runtime": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.9.0.tgz", + "integrity": "sha512-cTIudHnzuWLS56ik4DnRnqqNf8MkdUzV4iFFI1h7Jo9xvrpQROYaAnaSd2mHLQAzzZAPfATynX5ord6YlNYNMA==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + }, + "dependencies": { + "core-js": { + "version": "2.6.11", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.11.tgz", + "integrity": "sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==", + "dev": true + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + } + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + }, + "backo2": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", + "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc=", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + } + } + }, + "base64-arraybuffer": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz", + "integrity": "sha1-c5JncZI7Whl0etZmqlzUv5xunOg=", + "dev": true + }, + "base64-js": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==", + "dev": true + }, + "base64id": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", + "dev": true + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "better-assert": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/better-assert/-/better-assert-1.0.2.tgz", + "integrity": "sha1-QIZrnhueC1W0gYlDEeaPr/rrxSI=", + "dev": true, + "requires": { + "callsite": "1.0.0" + } + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true + }, + "binary-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", + "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==", + "dev": true + }, + "blob": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", + "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==", + "dev": true + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "bn.js": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.1.2.tgz", + "integrity": "sha512-40rZaf3bUNKTVYu9sIeeEGOg7g14Yvnj9kH7b50EiwX0Q7A6umbvfI5tvHaOERH0XigqKkfLkFQxzb4e6CIXnA==", + "dev": true + }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "dev": true, + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "dependencies": { + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "dev": true + } + } + }, + "bonjour": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", + "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", + "dev": true, + "requires": { + "array-flatten": "^2.1.0", + "deep-equal": "^1.0.1", + "dns-equal": "^1.0.0", + "dns-txt": "^2.0.2", + "multicast-dns": "^6.0.1", + "multicast-dns-service-types": "^1.1.0" + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "dev": true + }, + "browser-resolve": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", + "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", + "dev": true, + "requires": { + "resolve": "1.1.7" + }, + "dependencies": { + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "dev": true + } + } + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "browserify-sign": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.0.tgz", + "integrity": "sha512-hEZC1KEeYuoHRqhGhTy6gWrpJA3ZDjFWv0DE61643ZnOXAKJb3u7yWcrU0mMc9SwAqK1n7myPGndkp0dFG7NFA==", + "dev": true, + "requires": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.2", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "browserify-zlib": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", + "dev": true, + "requires": { + "pako": "~1.0.5" + } + }, + "browserslist": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.12.0.tgz", + "integrity": "sha512-UH2GkcEDSI0k/lRkuDSzFl9ZZ87skSy9w2XAn1MsZnL+4c4rqbBd3e82UWHbYDpztABrPBhZsTEeuxVfHppqDg==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001043", + "electron-to-chromium": "^1.3.413", + "node-releases": "^1.1.53", + "pkg-up": "^2.0.0" + } + }, + "bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "requires": { + "node-int64": "^0.4.0" + } + }, + "buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "buffer-indexof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", + "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "builtin-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true + }, + "cacache": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-13.0.1.tgz", + "integrity": "sha512-5ZvAxd05HDDU+y9BVvcqYu2LLXmPnQ0hW62h32g4xBTgL/MppR4/04NHfj/ycM2y6lmTnbw6HVi+1eN0Psba6w==", + "dev": true, + "requires": { + "chownr": "^1.1.2", + "figgy-pudding": "^3.5.1", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.2", + "infer-owner": "^1.0.4", + "lru-cache": "^5.1.1", + "minipass": "^3.0.0", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "p-map": "^3.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^2.7.1", + "ssri": "^7.0.0", + "unique-filename": "^1.1.1" + }, + "dependencies": { + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "call-me-maybe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", + "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", + "dev": true + }, + "caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "dev": true, + "requires": { + "callsites": "^2.0.0" + } + }, + "caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "dev": true, + "requires": { + "caller-callsite": "^2.0.0" + } + }, + "callsite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", + "integrity": "sha1-KAOY5dZkvXQDi28JBRU+borxvCA=", + "dev": true + }, + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "dev": true + }, + "camel-case": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.1.tgz", + "integrity": "sha512-7fa2WcG4fYFkclIvEmxBbTvmibwF2/agfEBc6q3lOpVu0A13ltLsA+Hr/8Hp6kp5f+G7hKi6t8lys6XxP+1K6Q==", + "dev": true, + "requires": { + "pascal-case": "^3.1.1", + "tslib": "^1.10.0" + } + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "caniuse-lite": { + "version": "1.0.30001077", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001077.tgz", + "integrity": "sha512-AEzsGvjBJL0lby/87W96PyEvwN0GsYvk5LHsglLg9tW37K4BqvAvoSCdWIE13OZQ8afupqZ73+oL/1LkedN8hA==", + "dev": true + }, + "capture-exit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz", + "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", + "dev": true, + "requires": { + "rsvp": "^4.8.4" + } + }, + "case-sensitive-paths-webpack-plugin": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.3.0.tgz", + "integrity": "sha512-/4YgnZS8y1UXXmC02xD5rRrBEu6T5ub+mQHLNRj0fzTRbgdBYhsNo2V5EqwgqrExjxsjtF/OpAKAMkKsxbD5XQ==", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "chokidar": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.0.tgz", + "integrity": "sha512-aXAaho2VJtisB/1fg1+3nlLJqGOuewTzQpd/Tz0yTg2R0e4IGtshYvtjowyEumcBv2z+y4+kc75Mz7j5xJskcQ==", + "dev": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.4.0" + }, + "dependencies": { + "anymatch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "chrome-trace-event": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", + "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "clean-css": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.3.tgz", + "integrity": "sha512-VcMWDN54ZN/DS+g58HYL5/n4Zrqe8vHJpGA8KdgUXFU4fuP/aHNw8eld9SyEIyabIMJX/0RaY/fplOo5hYLSFA==", + "dev": true, + "requires": { + "source-map": "~0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cli-width": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", + "dev": true + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + }, + "dependencies": { + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + } + } + }, + "clone-deep": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-0.2.4.tgz", + "integrity": "sha1-TnPdCen7lxzDhnDF3O2cGJZIHMY=", + "dev": true, + "requires": { + "for-own": "^0.1.3", + "is-plain-object": "^2.0.1", + "kind-of": "^3.0.2", + "lazy-cache": "^1.0.3", + "shallow-clone": "^0.1.2" + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "dev": true + }, + "coa": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", + "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", + "dev": true, + "requires": { + "@types/q": "^1.5.1", + "chalk": "^2.4.1", + "q": "^1.1.2" + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/color/-/color-3.1.2.tgz", + "integrity": "sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg==", + "dev": true, + "requires": { + "color-convert": "^1.9.1", + "color-string": "^1.5.2" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "color-string": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz", + "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==", + "dev": true, + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "dev": true + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "common-tags": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.0.tgz", + "integrity": "sha512-6P6g0uetGpW/sdyUy/iQQCbFF0kWVMSIVSyYz7Zgjcgh8mgw8PQzDNZeyZ5DQ2gM7LBoZPHmnjz8rUthkBG5tw==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "component-bind": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", + "integrity": "sha1-AMYIq33Nk4l8AAllGx06jh5zu9E=", + "dev": true + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "component-inherit": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", + "integrity": "sha1-ZF/ErfWLcrZJ1crmUTVhnbJv8UM=", + "dev": true + }, + "compose-function": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/compose-function/-/compose-function-3.0.3.tgz", + "integrity": "sha1-ntZ18TzFRQHTCVCkhv9qe6OrGF8=", + "dev": true, + "requires": { + "arity-n": "^1.0.4" + } + }, + "compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "requires": { + "mime-db": ">= 1.43.0 < 2" + } + }, + "compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "confusing-browser-globals": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.9.tgz", + "integrity": "sha512-KbS1Y0jMtyPgIxjO7ZzMAuUpAKMt1SzCL9fsrKsX6b0zJPTaT0SiSPmewwVZg9UAO83HVIlEhZF84LIjZ0lmAw==", + "dev": true + }, + "connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "dev": true, + "requires": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "dev": true + }, + "console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true + }, + "constants-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", + "dev": true + }, + "contains-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz", + "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=", + "dev": true + }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "dev": true, + "requires": { + "safe-buffer": "5.1.2" + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", + "dev": true + }, + "convert-source-map": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", + "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "core-js": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz", + "integrity": "sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==", + "dev": true + }, + "core-js-compat": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.6.5.tgz", + "integrity": "sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng==", + "dev": true, + "requires": { + "browserslist": "^4.8.5", + "semver": "7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true + } + } + }, + "core-js-pure": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.6.5.tgz", + "integrity": "sha512-lacdXOimsiD0QyNf9BC/mxivNJ/ybBGJXQFKzRekp1WTHoVUWsUHEn+2T8GJAzzIhyOuXA+gOxCVN3l+5PLPUA==", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "dev": true, + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + } + }, + "create-ecdh": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", + "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-env": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-5.2.1.tgz", + "integrity": "sha512-1yHhtcfAd1r4nwQgknowuUNfIT9E8dOMMspC36g45dN+iD1blloi7xp8X/xAIDnjHWyt1uQ8PHk2fkNaym7soQ==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.5" + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "css": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", + "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "source-map": "^0.6.1", + "source-map-resolve": "^0.5.2", + "urix": "^0.1.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "css-blank-pseudo": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-0.1.4.tgz", + "integrity": "sha512-LHz35Hr83dnFeipc7oqFDmsjHdljj3TQtxGGiNWSOsTLIAubSm4TEz8qCaKFpk7idaQ1GfWscF4E6mgpBysA1w==", + "dev": true, + "requires": { + "postcss": "^7.0.5" + } + }, + "css-color-names": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", + "dev": true + }, + "css-declaration-sorter": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", + "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", + "dev": true, + "requires": { + "postcss": "^7.0.1", + "timsort": "^0.3.0" + } + }, + "css-has-pseudo": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-0.10.0.tgz", + "integrity": "sha512-Z8hnfsZu4o/kt+AuFzeGpLVhFOGO9mluyHBaA2bA8aCGTwah5sT3WV/fTHH8UNZUytOIImuGPrl/prlb4oX4qQ==", + "dev": true, + "requires": { + "postcss": "^7.0.6", + "postcss-selector-parser": "^5.0.0-rc.4" + }, + "dependencies": { + "cssesc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", + "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==", + "dev": true + }, + "postcss-selector-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", + "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", + "dev": true, + "requires": { + "cssesc": "^2.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "css-loader": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.4.2.tgz", + "integrity": "sha512-jYq4zdZT0oS0Iykt+fqnzVLRIeiPWhka+7BqPn+oSIpWJAHak5tmB/WZrJ2a21JhCeFyNnnlroSl8c+MtVndzA==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "cssesc": "^3.0.0", + "icss-utils": "^4.1.1", + "loader-utils": "^1.2.3", + "normalize-path": "^3.0.0", + "postcss": "^7.0.23", + "postcss-modules-extract-imports": "^2.0.0", + "postcss-modules-local-by-default": "^3.0.2", + "postcss-modules-scope": "^2.1.1", + "postcss-modules-values": "^3.0.0", + "postcss-value-parser": "^4.0.2", + "schema-utils": "^2.6.0" + }, + "dependencies": { + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + } + } + }, + "css-prefers-color-scheme": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-3.1.1.tgz", + "integrity": "sha512-MTu6+tMs9S3EUqzmqLXEcgNRbNkkD/TGFvowpeoWJn5Vfq7FMgsmRQs9X5NXAURiOBmOxm/lLjsDNXDE6k9bhg==", + "dev": true, + "requires": { + "postcss": "^7.0.5" + } + }, + "css-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", + "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "css-select-base-adapter": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", + "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", + "dev": true + }, + "css-tree": { + "version": "1.0.0-alpha.37", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", + "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", + "dev": true, + "requires": { + "mdn-data": "2.0.4", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "css-what": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.3.0.tgz", + "integrity": "sha512-pv9JPyatiPaQ6pf4OvD/dbfm0o5LviWmwxNWzblYf/1u9QZd0ihV+PMwy5jdQWQ3349kZmKEx9WXuSka2dM4cg==", + "dev": true + }, + "cssdb": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-4.4.0.tgz", + "integrity": "sha512-LsTAR1JPEM9TpGhl/0p3nQecC2LJ0kD8X5YARu1hk/9I1gril5vDtMZyNxcEpxxDj34YNck/ucjuoUd66K03oQ==", + "dev": true + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, + "cssnano": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz", + "integrity": "sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.0", + "cssnano-preset-default": "^4.0.7", + "is-resolvable": "^1.0.0", + "postcss": "^7.0.0" + } + }, + "cssnano-preset-default": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz", + "integrity": "sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==", + "dev": true, + "requires": { + "css-declaration-sorter": "^4.0.1", + "cssnano-util-raw-cache": "^4.0.1", + "postcss": "^7.0.0", + "postcss-calc": "^7.0.1", + "postcss-colormin": "^4.0.3", + "postcss-convert-values": "^4.0.1", + "postcss-discard-comments": "^4.0.2", + "postcss-discard-duplicates": "^4.0.2", + "postcss-discard-empty": "^4.0.1", + "postcss-discard-overridden": "^4.0.1", + "postcss-merge-longhand": "^4.0.11", + "postcss-merge-rules": "^4.0.3", + "postcss-minify-font-values": "^4.0.2", + "postcss-minify-gradients": "^4.0.2", + "postcss-minify-params": "^4.0.2", + "postcss-minify-selectors": "^4.0.2", + "postcss-normalize-charset": "^4.0.1", + "postcss-normalize-display-values": "^4.0.2", + "postcss-normalize-positions": "^4.0.2", + "postcss-normalize-repeat-style": "^4.0.2", + "postcss-normalize-string": "^4.0.2", + "postcss-normalize-timing-functions": "^4.0.2", + "postcss-normalize-unicode": "^4.0.1", + "postcss-normalize-url": "^4.0.1", + "postcss-normalize-whitespace": "^4.0.2", + "postcss-ordered-values": "^4.1.2", + "postcss-reduce-initial": "^4.0.3", + "postcss-reduce-transforms": "^4.0.2", + "postcss-svgo": "^4.0.2", + "postcss-unique-selectors": "^4.0.1" + } + }, + "cssnano-util-get-arguments": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", + "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=", + "dev": true + }, + "cssnano-util-get-match": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", + "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=", + "dev": true + }, + "cssnano-util-raw-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", + "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "cssnano-util-same-parent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", + "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==", + "dev": true + }, + "csso": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.0.3.tgz", + "integrity": "sha512-NL3spysxUkcrOgnpsT4Xdl2aiEiBG6bXswAABQVHcMrfjjBisFOKwLDOmf4wf32aPdcJws1zds2B0Rg+jqMyHQ==", + "dev": true, + "requires": { + "css-tree": "1.0.0-alpha.39" + }, + "dependencies": { + "css-tree": { + "version": "1.0.0-alpha.39", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.39.tgz", + "integrity": "sha512-7UvkEYgBAHRG9Nt980lYxjsTrCyHFN53ky3wVsDkiMdVqylqRt+Zc+jm5qw7/qyOvN2dHSYtX0e4MbCCExSvnA==", + "dev": true, + "requires": { + "mdn-data": "2.0.6", + "source-map": "^0.6.1" + } + }, + "mdn-data": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.6.tgz", + "integrity": "sha512-rQvjv71olwNHgiTbfPZFkJtjNMciWgswYeciZhtvWLO8bmX3TnhyA62I6sTWOyZssWHJJjY6/KiWwqQsWWsqOA==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + }, + "cssstyle": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz", + "integrity": "sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==", + "dev": true, + "requires": { + "cssom": "0.3.x" + } + }, + "csstype": { + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.10.tgz", + "integrity": "sha512-D34BqZU4cIlMCY93rZHbrq9pjTAQJ3U8S8rfBqjwHxkGPThWFjzZDQpgMJY0QViLxth6ZKYiwFBo14RdN44U/w==", + "dev": true + }, + "custom-event": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", + "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=", + "dev": true + }, + "cyclist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", + "dev": true + }, + "d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dev": true, + "requires": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "damerau-levenshtein": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.6.tgz", + "integrity": "sha512-JVrozIeElnj3QzfUIt8tB8YMluBJom4Vw9qTPpjGYQ9fYlB3D/rb6OordUxf3xeFB35LKWs0xqcO5U6ySvBtug==", + "dev": true + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "data-urls": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", + "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", + "dev": true, + "requires": { + "abab": "^2.0.0", + "whatwg-mimetype": "^2.2.0", + "whatwg-url": "^7.0.0" + }, + "dependencies": { + "whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + } + } + }, + "date-format": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-3.0.0.tgz", + "integrity": "sha512-eyTcpKOcamdhWJXj56DpQMo1ylSQpcGtGKXcU0Tb97+K56/CF5amAqqqNj0+KvA0iw2ynxtHWFsPDSClCxe48w==", + "dev": true + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "deep-equal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "dev": true, + "requires": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + } + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "default-gateway": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", + "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", + "dev": true, + "requires": { + "execa": "^1.0.0", + "ip-regex": "^2.1.0" + } + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + } + } + }, + "del": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", + "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "globby": "^6.1.0", + "is-path-cwd": "^2.0.0", + "is-path-in-cwd": "^2.0.0", + "p-map": "^2.0.0", + "pify": "^4.0.1", + "rimraf": "^2.6.3" + }, + "dependencies": { + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "detect-newline": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", + "integrity": "sha1-9B8cEL5LAOh7XxPaaAdZ8sW/0+I=", + "dev": true + }, + "detect-node": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", + "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==", + "dev": true + }, + "detect-port-alt": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/detect-port-alt/-/detect-port-alt-1.1.6.tgz", + "integrity": "sha512-5tQykt+LqfJFBEYaDITx7S7cR7mJ/zQmLXZ2qt5w04ainYZw6tBf9dBunMjVeVOdYVRUzUOE4HkY5J7+uttb5Q==", + "dev": true, + "requires": { + "address": "^1.0.1", + "debug": "^2.6.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "di": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", + "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=", + "dev": true + }, + "diff-sequences": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-24.9.0.tgz", + "integrity": "sha512-Dj6Wk3tWyTE+Fo1rW8v0Xhwk80um6yFYKbuAxc9c3EZxIHFDYwbi34Uk42u1CdnIiVorvt4RmlSDjIPyzGC2ew==", + "dev": true + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "dir-glob": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz", + "integrity": "sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==", + "dev": true, + "requires": { + "arrify": "^1.0.1", + "path-type": "^3.0.0" + } + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", + "dev": true + }, + "dns-packet": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz", + "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==", + "dev": true, + "requires": { + "ip": "^1.1.0", + "safe-buffer": "^5.0.1" + } + }, + "dns-txt": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", + "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", + "dev": true, + "requires": { + "buffer-indexof": "^1.0.0" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dev": true, + "requires": { + "utila": "~0.4" + } + }, + "dom-serialize": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", + "integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=", + "dev": true, + "requires": { + "custom-event": "~1.0.0", + "ent": "~2.2.0", + "extend": "^3.0.0", + "void-elements": "^2.0.0" + } + }, + "dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + }, + "dependencies": { + "domelementtype": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.1.tgz", + "integrity": "sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==", + "dev": true + } + } + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true + }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true + }, + "domexception": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", + "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "dev": true, + "requires": { + "webidl-conversions": "^4.0.2" + } + }, + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "dev": true, + "requires": { + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "dot-case": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.3.tgz", + "integrity": "sha512-7hwEmg6RiSQfm/GwPL4AAWXKy3YNNZA3oFv2Pdiey0mwkRCPZ9x6SZbkLcn8Ma5PYeVokzoD4Twv2n7LKp5WeA==", + "dev": true, + "requires": { + "no-case": "^3.0.3", + "tslib": "^1.10.0" + } + }, + "dot-prop": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.2.0.tgz", + "integrity": "sha512-uEUyaDKoSQ1M4Oq8l45hSE26SnTxL6snNnqvK/VWx5wJhmff5z0FUVJDKDanor/6w3kzE3i7XZOk+7wC0EXr1A==", + "dev": true, + "requires": { + "is-obj": "^2.0.0" + } + }, + "dotenv": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-8.2.0.tgz", + "integrity": "sha512-8sJ78ElpbDJBHNeBzUbUVLsqKdccaa/BXF1uPTw3GrvQTBgrQrtObr2mUrE38vzYd8cEv+m/JBfDLioYcfXoaw==", + "dev": true + }, + "dotenv-expand": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", + "dev": true + }, + "duplexer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", + "dev": true + }, + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dev": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.459", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.459.tgz", + "integrity": "sha512-aN3Z89qEYIwVjzGi9SrcTjjopRZ3STUA6xTufS0fxZy8xOO2iqVw8rYKdT32CHgOKHOYj5KGmz3n6xUKE4QJiQ==", + "dev": true + }, + "elliptic": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.2.tgz", + "integrity": "sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw==", + "dev": true, + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "engine.io": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-3.4.2.tgz", + "integrity": "sha512-b4Q85dFkGw+TqgytGPrGgACRUhsdKc9S9ErRAXpPGy/CXKs4tYoHDkvIRdsseAF7NjfVwjRFIn6KTnbw7LwJZg==", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "base64id": "2.0.0", + "cookie": "0.3.1", + "debug": "~4.1.0", + "engine.io-parser": "~2.2.0", + "ws": "^7.1.2" + }, + "dependencies": { + "cookie": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", + "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=", + "dev": true + }, + "ws": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.3.0.tgz", + "integrity": "sha512-iFtXzngZVXPGgpTlP1rBqsUK82p9tKqsWRPg5L56egiljujJT3vGAYnHANvFxBieXrTFavhzhxW52jnaWV+w2w==", + "dev": true + } + } + }, + "engine.io-client": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.4.3.tgz", + "integrity": "sha512-0NGY+9hioejTEJCaSJZfWZLk4FPI9dN+1H1C4+wj2iuFba47UgZbJzfWs4aNFajnX/qAaYKbe2lLTfEEWzCmcw==", + "dev": true, + "requires": { + "component-emitter": "~1.3.0", + "component-inherit": "0.0.3", + "debug": "~4.1.0", + "engine.io-parser": "~2.2.0", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "ws": "~6.1.0", + "xmlhttprequest-ssl": "~1.5.4", + "yeast": "0.1.2" + }, + "dependencies": { + "ws": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.1.4.tgz", + "integrity": "sha512-eqZfL+NE/YQc1/ZynhojeV8q+H050oR8AZ2uIev7RU10svA9ZnJUddHcOUZTJLinZ9yEfdA2kSATS2qZK5fhJA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + } + } + }, + "engine.io-parser": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.2.0.tgz", + "integrity": "sha512-6I3qD9iUxotsC5HEMuuGsKA0cXerGz+4uGcXQEkfBidgKf0amsjrrtwcbwK/nzpZBxclXlV7gGl9dgWvu4LF6w==", + "dev": true, + "requires": { + "after": "0.8.2", + "arraybuffer.slice": "~0.0.7", + "base64-arraybuffer": "0.1.5", + "blob": "0.0.5", + "has-binary2": "~1.0.2" + } + }, + "enhanced-resolve": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.1.1.tgz", + "integrity": "sha512-98p2zE+rL7/g/DzMHMTF4zZlCgeVdJ7yr6xzEpJRYwFYrGi9ANdn5DnJURg6RpBkyk60XYDnWIv51VfIhfNGuA==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "memory-fs": "^0.5.0", + "tapable": "^1.0.0" + }, + "dependencies": { + "memory-fs": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", + "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "ent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", + "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=", + "dev": true + }, + "entities": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz", + "integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==", + "dev": true + }, + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "dev": true, + "requires": { + "prr": "~1.0.1" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.17.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.5.tgz", + "integrity": "sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.1.5", + "is-regex": "^1.0.5", + "object-inspect": "^1.7.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.0", + "string.prototype.trimleft": "^2.1.1", + "string.prototype.trimright": "^2.1.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "es5-ext": { + "version": "0.10.53", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", + "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", + "dev": true, + "requires": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.3", + "next-tick": "~1.0.0" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "dev": true, + "requires": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "escodegen": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.2.tgz", + "integrity": "sha512-InuOIiKk8wwuOFg6x9BQXbzjrQhtyXh46K9bqVTPzSo2FnyMBaYGBMC6PhQy7yxxil9vIedFBweQBMK74/7o8A==", + "dev": true, + "requires": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + } + } + }, + "eslint": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", + "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "ajv": "^6.10.0", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^1.4.3", + "eslint-visitor-keys": "^1.1.0", + "espree": "^6.1.2", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "inquirer": "^7.0.0", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.14", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.3", + "progress": "^2.0.0", + "regexpp": "^2.0.1", + "semver": "^6.1.2", + "strip-ansi": "^5.2.0", + "strip-json-comments": "^3.0.1", + "table": "^5.2.3", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "eslint-utils": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", + "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + }, + "import-fresh": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", + "dev": true + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + } + } + }, + "eslint-config-react-app": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-5.2.1.tgz", + "integrity": "sha512-pGIZ8t0mFLcV+6ZirRgYK6RVqUIKRIi9MmgzUEmrIknsn3AdO0I32asO86dJgloHq+9ZPl8UIg8mYrvgP5u2wQ==", + "dev": true, + "requires": { + "confusing-browser-globals": "^1.0.9" + } + }, + "eslint-import-resolver-node": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.3.tgz", + "integrity": "sha512-b8crLDo0M5RSe5YG8Pu2DYBj71tSB6OvXkfzwbJU2w7y8P4/yo0MyF8jU26IEuEuHF2K5/gcAJE3LhQGqBBbVg==", + "dev": true, + "requires": { + "debug": "^2.6.9", + "resolve": "^1.13.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "eslint-loader": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/eslint-loader/-/eslint-loader-3.0.3.tgz", + "integrity": "sha512-+YRqB95PnNvxNp1HEjQmvf9KNvCin5HXYYseOXVC2U0KEcw4IkQ2IQEBG46j7+gW39bMzeu0GsUhVbBY3Votpw==", + "dev": true, + "requires": { + "fs-extra": "^8.1.0", + "loader-fs-cache": "^1.0.2", + "loader-utils": "^1.2.3", + "object-hash": "^2.0.1", + "schema-utils": "^2.6.1" + } + }, + "eslint-module-utils": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz", + "integrity": "sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA==", + "dev": true, + "requires": { + "debug": "^2.6.9", + "pkg-dir": "^2.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=", + "dev": true, + "requires": { + "find-up": "^2.1.0" + } + } + } + }, + "eslint-plugin-flowtype": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-4.6.0.tgz", + "integrity": "sha512-W5hLjpFfZyZsXfo5anlu7HM970JBDqbEshAJUkeczP6BFCIfJXuiIBQXyberLRtOStT0OGPF8efeTbxlHk4LpQ==", + "dev": true, + "requires": { + "lodash": "^4.17.15" + } + }, + "eslint-plugin-import": { + "version": "2.20.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.20.2.tgz", + "integrity": "sha512-FObidqpXrR8OnCh4iNsxy+WACztJLXAHBO5hK79T1Hc77PgQZkyDGA5Ag9xAvRpglvLNxhH/zSmZ70/pZ31dHg==", + "dev": true, + "requires": { + "array-includes": "^3.0.3", + "array.prototype.flat": "^1.2.1", + "contains-path": "^0.1.0", + "debug": "^2.6.9", + "doctrine": "1.5.0", + "eslint-import-resolver-node": "^0.3.2", + "eslint-module-utils": "^2.4.1", + "has": "^1.0.3", + "minimatch": "^3.0.4", + "object.values": "^1.1.0", + "read-pkg-up": "^2.0.0", + "resolve": "^1.12.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "doctrine": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "isarray": "^1.0.0" + } + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + } + } + } + }, + "eslint-plugin-jsx-a11y": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.2.3.tgz", + "integrity": "sha512-CawzfGt9w83tyuVekn0GDPU9ytYtxyxyFZ3aSWROmnRRFQFT2BiPJd7jvRdzNDi6oLWaS2asMeYSNMjWTV4eNg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.4.5", + "aria-query": "^3.0.0", + "array-includes": "^3.0.3", + "ast-types-flow": "^0.0.7", + "axobject-query": "^2.0.2", + "damerau-levenshtein": "^1.0.4", + "emoji-regex": "^7.0.2", + "has": "^1.0.3", + "jsx-ast-utils": "^2.2.1" + }, + "dependencies": { + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + } + } + }, + "eslint-plugin-react": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.20.0.tgz", + "integrity": "sha512-rqe1abd0vxMjmbPngo4NaYxTcR3Y4Hrmc/jg4T+sYz63yqlmJRknpEQfmWY+eDWPuMmix6iUIK+mv0zExjeLgA==", + "dev": true, + "requires": { + "array-includes": "^3.1.1", + "doctrine": "^2.1.0", + "has": "^1.0.3", + "jsx-ast-utils": "^2.2.3", + "object.entries": "^1.1.1", + "object.fromentries": "^2.0.2", + "object.values": "^1.1.1", + "prop-types": "^15.7.2", + "resolve": "^1.15.1", + "string.prototype.matchall": "^4.0.2", + "xregexp": "^4.3.0" + }, + "dependencies": { + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + } + } + }, + "eslint-plugin-react-hooks": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-1.7.0.tgz", + "integrity": "sha512-iXTCFcOmlWvw4+TOE8CLWj6yX1GwzT0Y6cUfHHZqWnSk144VmVIRcVGtUAzrLES7C798lmvnt02C7rxaOX1HNA==", + "dev": true + }, + "eslint-scope": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz", + "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.0.0.tgz", + "integrity": "sha512-0HCPuJv+7Wv1bACm8y5/ECVfYdfsAm9xmVb7saeFlxjPYALefjhbYoCkBjPdPzGH8wWyTpAez82Fh3VKYEZ8OA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "eslint-visitor-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.1.0.tgz", + "integrity": "sha512-8y9YjtM1JBJU/A9Kc+SbaOV4y29sSWckBwMHa+FGtVj5gN/sbnKDf6xJUl+8g7FAij9LVaP8C24DUiH/f/2Z9A==", + "dev": true + }, + "espree": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", + "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.1.0" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esquery": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", + "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.1.0.tgz", + "integrity": "sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw==", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "dev": true, + "requires": { + "estraverse": "^4.1.0" + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true + }, + "eventemitter3": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.4.tgz", + "integrity": "sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==", + "dev": true + }, + "events": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.1.0.tgz", + "integrity": "sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg==", + "dev": true + }, + "eventsource": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.0.7.tgz", + "integrity": "sha512-4Ln17+vVT0k8aWq+t/bF5arcS3EpT9gYtW66EPacdj/mAFevznsnyoHLPy2BA8gbIQeIHoPsvwmfBftfcG//BQ==", + "dev": true, + "requires": { + "original": "^1.0.0" + } + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "exec-sh": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.4.tgz", + "integrity": "sha512-sEFIkc61v75sWeOe72qyrqg2Qg0OuLESziUDk/O/z2qgS15y2gWVFrI6f2Qn/qw/0/NCfCEsmNA4zOjkwEZT1A==", + "dev": true + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", + "dev": true + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "expect": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-24.9.0.tgz", + "integrity": "sha512-wvVAx8XIol3Z5m9zvZXiyZOQ+sRJqNTIm6sGjdWlaZIeupQGO3WbYI+15D/AmEwZywL6wtJkbAbJtzkOfBuR0Q==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "ansi-styles": "^3.2.0", + "jest-get-type": "^24.9.0", + "jest-matcher-utils": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-regex-util": "^24.9.0" + } + }, + "express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "dev": true, + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "dev": true + } + } + }, + "ext": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", + "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", + "dev": true, + "requires": { + "type": "^2.0.0" + }, + "dependencies": { + "type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.0.0.tgz", + "integrity": "sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow==", + "dev": true + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "dev": true + }, + "fast-glob": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", + "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", + "dev": true, + "requires": { + "@mrmlnc/readdir-enhanced": "^2.2.1", + "@nodelib/fs.stat": "^1.1.2", + "glob-parent": "^3.1.0", + "is-glob": "^4.0.0", + "merge2": "^1.2.3", + "micromatch": "^3.1.10" + }, + "dependencies": { + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + } + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "faye-websocket": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", + "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "fb-watchman": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", + "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", + "dev": true, + "requires": { + "bser": "2.1.1" + } + }, + "figgy-pudding": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", + "dev": true + }, + "figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "dev": true, + "requires": { + "flat-cache": "^2.0.1" + } + }, + "file-loader": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-4.3.0.tgz", + "integrity": "sha512-aKrYPYjF1yG3oX0kWRrqrSMfgftm7oJW5M+m4owoldH5C51C0RkIwB++JbRvEW3IU6/ZG5n8UvEcdgwOt2UOWA==", + "dev": true, + "requires": { + "loader-utils": "^1.2.3", + "schema-utils": "^2.5.0" + } + }, + "filesize": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-6.0.1.tgz", + "integrity": "sha512-u4AYWPgbI5GBhs6id1KdImZWn5yfyFrrQ8OWZdN7ZMfA8Bf4HcO0BGo9bmUIEV8yrp8I1xVfJ/dn90GtFNNJcg==", + "dev": true + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "dev": true, + "requires": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + }, + "dependencies": { + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "flatted": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "dev": true + }, + "flatten": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz", + "integrity": "sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==", + "dev": true + }, + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "follow-redirects": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.11.0.tgz", + "integrity": "sha512-KZm0V+ll8PfBrKwMzdo5D13b1bur9Iq9Zd/RMmAoQQcl2PxxFml8cxXPaaPYVbV0RjNjq1CU7zIzAOqtUPudmA==", + "dev": true, + "requires": { + "debug": "^3.0.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=", + "dev": true, + "requires": { + "for-in": "^1.0.1" + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "fork-ts-checker-webpack-plugin": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-3.1.1.tgz", + "integrity": "sha512-DuVkPNrM12jR41KM2e+N+styka0EgLkTnXmNcXdgOM37vtGeY+oCBK/Jx0hzSeEU6memFCtWb4htrHPMDfwwUQ==", + "dev": true, + "requires": { + "babel-code-frame": "^6.22.0", + "chalk": "^2.4.1", + "chokidar": "^3.3.0", + "micromatch": "^3.1.10", + "minimatch": "^3.0.4", + "semver": "^5.6.0", + "tapable": "^1.0.0", + "worker-rpc": "^0.1.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", + "dev": true + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "gensync": { + "version": "1.0.0-beta.1", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", + "integrity": "sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg==", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-own-enumerable-property-symbols": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", + "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", + "dev": true + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "glob-to-regexp": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", + "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", + "dev": true + }, + "global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "dev": true, + "requires": { + "global-prefix": "^3.0.0" + } + }, + "global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "dev": true, + "requires": { + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + }, + "dependencies": { + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + } + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "globby": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-8.0.2.tgz", + "integrity": "sha512-yTzMmKygLp8RUpG1Ymu2VXPSJQZjNAZPD4ywgYEaG7e4tBJeUQBO8OpXrf1RCNcEs5alsoJYPAMiIHP0cmeC7w==", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "dir-glob": "2.0.0", + "fast-glob": "^2.0.2", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" + }, + "dependencies": { + "ignore": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", + "dev": true + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + } + } + }, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + }, + "growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", + "dev": true + }, + "gzip-size": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-5.1.1.tgz", + "integrity": "sha512-FNHi6mmoHvs1mxZAds4PpdCS6QG8B4C1krxJsMutgxl5t3+GlRTzzI3NEkifXx2pVsOvJdOGSmIgDhQ55FwdPA==", + "dev": true, + "requires": { + "duplexer": "^0.1.1", + "pify": "^4.0.1" + }, + "dependencies": { + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + } + } + }, + "handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", + "dev": true, + "requires": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + } + }, + "harmony-reflect": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.1.tgz", + "integrity": "sha512-WJTeyp0JzGtHcuMsi7rw2VwtkvLa+JyfEKJCFyfcS0+CDkjQ5lHPu7zEhFZP+PDSRrEgXa5Ah0l1MbgbE41XjA==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + } + } + }, + "has-binary2": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz", + "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==", + "dev": true, + "requires": { + "isarray": "2.0.1" + }, + "dependencies": { + "isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", + "dev": true + } + } + }, + "has-cors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", + "integrity": "sha1-XkdHk/fqmEPRu5nCPu9J/xJv/zk=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true + }, + "hex-color-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", + "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==", + "dev": true + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "hosted-git-info": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "dev": true + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "hsl-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", + "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=", + "dev": true + }, + "hsla-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", + "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=", + "dev": true + }, + "html-comment-regex": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", + "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==", + "dev": true + }, + "html-encoding-sniffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "dev": true, + "requires": { + "whatwg-encoding": "^1.0.1" + } + }, + "html-entities": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.3.1.tgz", + "integrity": "sha512-rhE/4Z3hIhzHAUKbW8jVcCyuT5oJCXXqhN/6mXXVCpzTmvJnoH2HL/bt3EZ6p55jbFJBeAe1ZNpL5BugLujxNA==", + "dev": true + }, + "html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "html-minifier-terser": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz", + "integrity": "sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg==", + "dev": true, + "requires": { + "camel-case": "^4.1.1", + "clean-css": "^4.2.3", + "commander": "^4.1.1", + "he": "^1.2.0", + "param-case": "^3.0.3", + "relateurl": "^0.2.7", + "terser": "^4.6.3" + }, + "dependencies": { + "commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true + } + } + }, + "html-webpack-plugin": { + "version": "4.0.0-beta.11", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-4.0.0-beta.11.tgz", + "integrity": "sha512-4Xzepf0qWxf8CGg7/WQM5qBB2Lc/NFI7MhU59eUDTkuQp3skZczH4UA1d6oQyDEIoMDgERVhRyTdtUPZ5s5HBg==", + "dev": true, + "requires": { + "html-minifier-terser": "^5.0.1", + "loader-utils": "^1.2.3", + "lodash": "^4.17.15", + "pretty-error": "^2.1.1", + "tapable": "^1.1.3", + "util.promisify": "1.0.0" + }, + "dependencies": { + "util.promisify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", + "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "object.getownpropertydescriptors": "^2.0.3" + } + } + } + }, + "htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "dev": true, + "requires": { + "domelementtype": "^1.3.1", + "domhandler": "^2.3.0", + "domutils": "^1.5.1", + "entities": "^1.1.1", + "inherits": "^2.0.1", + "readable-stream": "^3.1.1" + }, + "dependencies": { + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true + } + } + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "dev": true + }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } + } + }, + "http-parser-js": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.2.tgz", + "integrity": "sha512-opCO9ASqg5Wy2FNo7A0sxy71yGbbkJJXLdgMK04Tcypw9jr2MgWbyubb0+WdmDmGnFflO7fRbqbaihh/ENDlRQ==", + "dev": true + }, + "http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-middleware": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", + "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", + "dev": true, + "requires": { + "http-proxy": "^1.17.0", + "is-glob": "^4.0.0", + "lodash": "^4.17.11", + "micromatch": "^3.1.10" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "icss-utils": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz", + "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==", + "dev": true, + "requires": { + "postcss": "^7.0.14" + } + }, + "identity-obj-proxy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz", + "integrity": "sha1-lNK9qWCERT7zb7xarsN+D3nx/BQ=", + "dev": true, + "requires": { + "harmony-reflect": "^1.4.6" + } + }, + "ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", + "dev": true + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "dev": true + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "immer": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/immer/-/immer-1.10.0.tgz", + "integrity": "sha512-O3sR1/opvCDGLEVcvrGTMtLac8GJ5IwZC4puPrLuRj3l7ICKvkmA0vGuU9OW8mV9WIBRnaxp5GJh9IEAaNOoYg==", + "dev": true + }, + "import-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", + "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=", + "dev": true, + "requires": { + "import-from": "^2.1.0" + } + }, + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "dev": true, + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, + "import-from": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", + "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "dev": true, + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", + "dev": true + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=", + "dev": true + }, + "infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, + "inquirer": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.1.0.tgz", + "integrity": "sha512-5fJMWEmikSYu0nv/flMc475MhGbB7TSPd/2IpFV4I4rMklboCH2rQjYY5kKiYGHqUF9gvaambupcJFFG9dvReg==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^3.0.0", + "cli-cursor": "^3.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.15", + "mute-stream": "0.0.8", + "run-async": "^2.4.0", + "rxjs": "^6.5.3", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "internal-ip": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", + "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", + "dev": true, + "requires": { + "default-gateway": "^4.2.0", + "ipaddr.js": "^1.9.0" + } + }, + "internal-slot": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.2.tgz", + "integrity": "sha512-2cQNfwhAfJIkU4KZPkDI+Gj5yNNnbqi40W9Gge6dfnk4TocEVm00B3bdiL+JINrbGJil2TeHvM4rETGzk/f/0g==", + "dev": true, + "requires": { + "es-abstract": "^1.17.0-next.1", + "has": "^1.0.3", + "side-channel": "^1.0.2" + } + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true + }, + "ip-regex": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", + "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", + "dev": true + }, + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true + }, + "is-absolute-url": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", + "dev": true + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-arguments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", + "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", + "dev": true + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-callable": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", + "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", + "dev": true + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "requires": { + "ci-info": "^2.0.0" + } + }, + "is-color-stop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", + "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", + "dev": true, + "requires": { + "css-color-names": "^0.0.4", + "hex-color-regex": "^1.1.0", + "hsl-regex": "^1.0.0", + "hsla-regex": "^1.0.0", + "rgb-regex": "^1.0.1", + "rgba-regex": "^1.0.0" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "dev": true + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "dev": true + }, + "is-docker": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.0.0.tgz", + "integrity": "sha512-pJEdRugimx4fBMra5z2/5iRdZ63OhYV0vr0Dwm5+xtW4D1FvRkB8hamMIhnWfyJeDdyr/aa7BDyNbtG38VxgoQ==", + "dev": true + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true + }, + "is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "dev": true + }, + "is-path-in-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", + "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", + "dev": true, + "requires": { + "is-path-inside": "^2.1.0" + } + }, + "is-path-inside": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", + "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", + "dev": true, + "requires": { + "path-is-inside": "^1.0.2" + } + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-regex": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", + "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", + "dev": true + }, + "is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", + "dev": true + }, + "is-root": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-root/-/is-root-2.1.0.tgz", + "integrity": "sha512-AGOriNp96vNBd3HtU+RzFEc75FfR5ymiYv8E553I71SCeXBiMsVDUtdio1OEFvrPyLIQ9tVR5RxXIFe5PUFjMg==", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-string": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.5.tgz", + "integrity": "sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ==", + "dev": true + }, + "is-svg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", + "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==", + "dev": true, + "requires": { + "html-comment-regex": "^1.1.0" + } + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isbinaryfile": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.6.tgz", + "integrity": "sha512-ORrEy+SNVqUhrCaal4hA4fBzhggQQ+BaLntyPOdoEiwlKZW9BZiJXjg3RMiruE4tPEI3pyVPpySHQF/dKWperg==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "istanbul-lib-coverage": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", + "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", + "dev": true, + "requires": { + "@babel/generator": "^7.4.0", + "@babel/parser": "^7.4.3", + "@babel/template": "^7.4.0", + "@babel/traverse": "^7.4.3", + "@babel/types": "^7.4.0", + "istanbul-lib-coverage": "^2.0.5", + "semver": "^6.0.0" + } + }, + "istanbul-lib-report": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz", + "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "supports-color": "^6.1.0" + }, + "dependencies": { + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", + "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "rimraf": "^2.6.3", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "istanbul-reports": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.7.tgz", + "integrity": "sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg==", + "dev": true, + "requires": { + "html-escaper": "^2.0.0" + } + }, + "jasmine-core": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.5.0.tgz", + "integrity": "sha512-nCeAiw37MIMA9w9IXso7bRaLl+c/ef3wnxsoSAlYrzS+Ot0zTG6nU8G/cIfGkqpkjX2wNaIW9RFG0TwIFnG6bA==", + "dev": true + }, + "jest": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-24.9.0.tgz", + "integrity": "sha512-YvkBL1Zm7d2B1+h5fHEOdyjCG+sGMz4f8D86/0HiqJ6MB4MnDc8FgP5vdWsGnemOQro7lnYo8UakZ3+5A0jxGw==", + "dev": true, + "requires": { + "import-local": "^2.0.0", + "jest-cli": "^24.9.0" + }, + "dependencies": { + "jest-cli": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-24.9.0.tgz", + "integrity": "sha512-+VLRKyitT3BWoMeSUIHRxV/2g8y9gw91Jh5z2UmXZzkZKpbC08CSehVxgHUwTpy+HwGcns/tqafQDJW7imYvGg==", + "dev": true, + "requires": { + "@jest/core": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "import-local": "^2.0.0", + "is-ci": "^2.0.0", + "jest-config": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "prompts": "^2.0.1", + "realpath-native": "^1.1.0", + "yargs": "^13.3.0" + } + } + } + }, + "jest-changed-files": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-24.9.0.tgz", + "integrity": "sha512-6aTWpe2mHF0DhL28WjdkO8LyGjs3zItPET4bMSeXU6T3ub4FPMw+mcOcbdGXQOAfmLcxofD23/5Bl9Z4AkFwqg==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "execa": "^1.0.0", + "throat": "^4.0.0" + } + }, + "jest-config": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-24.9.0.tgz", + "integrity": "sha512-RATtQJtVYQrp7fvWg6f5y3pEFj9I+H8sWw4aKxnDZ96mob5i5SD6ZEGWgMLXQ4LE8UurrjbdlLWdUeo+28QpfQ==", + "dev": true, + "requires": { + "@babel/core": "^7.1.0", + "@jest/test-sequencer": "^24.9.0", + "@jest/types": "^24.9.0", + "babel-jest": "^24.9.0", + "chalk": "^2.0.1", + "glob": "^7.1.1", + "jest-environment-jsdom": "^24.9.0", + "jest-environment-node": "^24.9.0", + "jest-get-type": "^24.9.0", + "jest-jasmine2": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "micromatch": "^3.1.10", + "pretty-format": "^24.9.0", + "realpath-native": "^1.1.0" + } + }, + "jest-diff": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-24.9.0.tgz", + "integrity": "sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "diff-sequences": "^24.9.0", + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" + } + }, + "jest-docblock": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-24.9.0.tgz", + "integrity": "sha512-F1DjdpDMJMA1cN6He0FNYNZlo3yYmOtRUnktrT9Q37njYzC5WEaDdmbynIgy0L/IvXvvgsG8OsqhLPXTpfmZAA==", + "dev": true, + "requires": { + "detect-newline": "^2.1.0" + } + }, + "jest-each": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-24.9.0.tgz", + "integrity": "sha512-ONi0R4BvW45cw8s2Lrx8YgbeXL1oCQ/wIDwmsM3CqM/nlblNCPmnC3IPQlMbRFZu3wKdQ2U8BqM6lh3LJ5Bsog==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "jest-get-type": "^24.9.0", + "jest-util": "^24.9.0", + "pretty-format": "^24.9.0" + } + }, + "jest-environment-jsdom": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-24.9.0.tgz", + "integrity": "sha512-Zv9FV9NBRzLuALXjvRijO2351DRQeLYXtpD4xNvfoVFw21IOKNhZAEUKcbiEtjTkm2GsJ3boMVgkaR7rN8qetA==", + "dev": true, + "requires": { + "@jest/environment": "^24.9.0", + "@jest/fake-timers": "^24.9.0", + "@jest/types": "^24.9.0", + "jest-mock": "^24.9.0", + "jest-util": "^24.9.0", + "jsdom": "^11.5.1" + } + }, + "jest-environment-jsdom-fourteen": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom-fourteen/-/jest-environment-jsdom-fourteen-1.0.1.tgz", + "integrity": "sha512-DojMX1sY+at5Ep+O9yME34CdidZnO3/zfPh8UW+918C5fIZET5vCjfkegixmsi7AtdYfkr4bPlIzmWnlvQkP7Q==", + "dev": true, + "requires": { + "@jest/environment": "^24.3.0", + "@jest/fake-timers": "^24.3.0", + "@jest/types": "^24.3.0", + "jest-mock": "^24.0.0", + "jest-util": "^24.0.0", + "jsdom": "^14.1.0" + }, + "dependencies": { + "acorn": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", + "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", + "dev": true + }, + "jsdom": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-14.1.0.tgz", + "integrity": "sha512-O901mfJSuTdwU2w3Sn+74T+RnDVP+FuV5fH8tcPWyqrseRAb0s5xOtPgCFiPOtLcyK7CLIJwPyD83ZqQWvA5ng==", + "dev": true, + "requires": { + "abab": "^2.0.0", + "acorn": "^6.0.4", + "acorn-globals": "^4.3.0", + "array-equal": "^1.0.0", + "cssom": "^0.3.4", + "cssstyle": "^1.1.1", + "data-urls": "^1.1.0", + "domexception": "^1.0.1", + "escodegen": "^1.11.0", + "html-encoding-sniffer": "^1.0.2", + "nwsapi": "^2.1.3", + "parse5": "5.1.0", + "pn": "^1.1.0", + "request": "^2.88.0", + "request-promise-native": "^1.0.5", + "saxes": "^3.1.9", + "symbol-tree": "^3.2.2", + "tough-cookie": "^2.5.0", + "w3c-hr-time": "^1.0.1", + "w3c-xmlserializer": "^1.1.2", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^7.0.0", + "ws": "^6.1.2", + "xml-name-validator": "^3.0.0" + } + }, + "parse5": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", + "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==", + "dev": true + }, + "whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "ws": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", + "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + } + } + }, + "jest-environment-node": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-24.9.0.tgz", + "integrity": "sha512-6d4V2f4nxzIzwendo27Tr0aFm+IXWa0XEUnaH6nU0FMaozxovt+sfRvh4J47wL1OvF83I3SSTu0XK+i4Bqe7uA==", + "dev": true, + "requires": { + "@jest/environment": "^24.9.0", + "@jest/fake-timers": "^24.9.0", + "@jest/types": "^24.9.0", + "jest-mock": "^24.9.0", + "jest-util": "^24.9.0" + } + }, + "jest-get-type": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-24.9.0.tgz", + "integrity": "sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==", + "dev": true + }, + "jest-haste-map": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-24.9.0.tgz", + "integrity": "sha512-kfVFmsuWui2Sj1Rp1AJ4D9HqJwE4uwTlS/vO+eRUaMmd54BFpli2XhMQnPC2k4cHFVbB2Q2C+jtI1AGLgEnCjQ==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "anymatch": "^2.0.0", + "fb-watchman": "^2.0.0", + "fsevents": "^1.2.7", + "graceful-fs": "^4.1.15", + "invariant": "^2.2.4", + "jest-serializer": "^24.9.0", + "jest-util": "^24.9.0", + "jest-worker": "^24.9.0", + "micromatch": "^3.1.10", + "sane": "^4.0.3", + "walker": "^1.0.7" + }, + "dependencies": { + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true + } + } + }, + "jest-jasmine2": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-24.9.0.tgz", + "integrity": "sha512-Cq7vkAgaYKp+PsX+2/JbTarrk0DmNhsEtqBXNwUHkdlbrTBLtMJINADf2mf5FkowNsq8evbPc07/qFO0AdKTzw==", + "dev": true, + "requires": { + "@babel/traverse": "^7.1.0", + "@jest/environment": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "co": "^4.6.0", + "expect": "^24.9.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^24.9.0", + "jest-matcher-utils": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-snapshot": "^24.9.0", + "jest-util": "^24.9.0", + "pretty-format": "^24.9.0", + "throat": "^4.0.0" + } + }, + "jest-leak-detector": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-24.9.0.tgz", + "integrity": "sha512-tYkFIDsiKTGwb2FG1w8hX9V0aUb2ot8zY/2nFg087dUageonw1zrLMP4W6zsRO59dPkTSKie+D4rhMuP9nRmrA==", + "dev": true, + "requires": { + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" + } + }, + "jest-matcher-utils": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz", + "integrity": "sha512-OZz2IXsu6eaiMAwe67c1T+5tUAtQyQx27/EMEkbFAGiw52tB9em+uGbzpcgYVpA8wl0hlxKPZxrly4CXU/GjHA==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "jest-diff": "^24.9.0", + "jest-get-type": "^24.9.0", + "pretty-format": "^24.9.0" + } + }, + "jest-message-util": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-24.9.0.tgz", + "integrity": "sha512-oCj8FiZ3U0hTP4aSui87P4L4jC37BtQwUMqk+zk/b11FR19BJDeZsZAvIHutWnmtw7r85UmR3CEWZ0HWU2mAlw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/stack-utils": "^1.0.1", + "chalk": "^2.0.1", + "micromatch": "^3.1.10", + "slash": "^2.0.0", + "stack-utils": "^1.0.1" + } + }, + "jest-mock": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-24.9.0.tgz", + "integrity": "sha512-3BEYN5WbSq9wd+SyLDES7AHnjH9A/ROBwmz7l2y+ol+NtSFO8DYiEBzoO1CeFc9a8DYy10EO4dDFVv/wN3zl1w==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0" + } + }, + "jest-pnp-resolver": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz", + "integrity": "sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ==", + "dev": true + }, + "jest-regex-util": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-24.9.0.tgz", + "integrity": "sha512-05Cmb6CuxaA+Ys6fjr3PhvV3bGQmO+2p2La4hFbU+W5uOc479f7FdLXUWXw4pYMAhhSZIuKHwSXSu6CsSBAXQA==", + "dev": true + }, + "jest-resolve": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-24.9.0.tgz", + "integrity": "sha512-TaLeLVL1l08YFZAt3zaPtjiVvyy4oSA6CRe+0AFPPVX3Q/VI0giIWWoAvoS5L96vj9Dqxj4fB5p2qrHCmTU/MQ==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "browser-resolve": "^1.11.3", + "chalk": "^2.0.1", + "jest-pnp-resolver": "^1.2.1", + "realpath-native": "^1.1.0" + } + }, + "jest-resolve-dependencies": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-24.9.0.tgz", + "integrity": "sha512-Fm7b6AlWnYhT0BXy4hXpactHIqER7erNgIsIozDXWl5dVm+k8XdGVe1oTg1JyaFnOxarMEbax3wyRJqGP2Pq+g==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-snapshot": "^24.9.0" + } + }, + "jest-runner": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-24.9.0.tgz", + "integrity": "sha512-KksJQyI3/0mhcfspnxxEOBueGrd5E4vV7ADQLT9ESaCzz02WnbdbKWIf5Mkaucoaj7obQckYPVX6JJhgUcoWWg==", + "dev": true, + "requires": { + "@jest/console": "^24.7.1", + "@jest/environment": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "chalk": "^2.4.2", + "exit": "^0.1.2", + "graceful-fs": "^4.1.15", + "jest-config": "^24.9.0", + "jest-docblock": "^24.3.0", + "jest-haste-map": "^24.9.0", + "jest-jasmine2": "^24.9.0", + "jest-leak-detector": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-resolve": "^24.9.0", + "jest-runtime": "^24.9.0", + "jest-util": "^24.9.0", + "jest-worker": "^24.6.0", + "source-map-support": "^0.5.6", + "throat": "^4.0.0" + } + }, + "jest-runtime": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-24.9.0.tgz", + "integrity": "sha512-8oNqgnmF3v2J6PVRM2Jfuj8oX3syKmaynlDMMKQ4iyzbQzIG6th5ub/lM2bCMTmoTKM3ykcUYI2Pw9xwNtjMnw==", + "dev": true, + "requires": { + "@jest/console": "^24.7.1", + "@jest/environment": "^24.9.0", + "@jest/source-map": "^24.3.0", + "@jest/transform": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/yargs": "^13.0.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.1.15", + "jest-config": "^24.9.0", + "jest-haste-map": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-mock": "^24.9.0", + "jest-regex-util": "^24.3.0", + "jest-resolve": "^24.9.0", + "jest-snapshot": "^24.9.0", + "jest-util": "^24.9.0", + "jest-validate": "^24.9.0", + "realpath-native": "^1.1.0", + "slash": "^2.0.0", + "strip-bom": "^3.0.0", + "yargs": "^13.3.0" + } + }, + "jest-serializer": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-24.9.0.tgz", + "integrity": "sha512-DxYipDr8OvfrKH3Kel6NdED3OXxjvxXZ1uIY2I9OFbGg+vUkkg7AGvi65qbhbWNPvDckXmzMPbK3u3HaDO49bQ==", + "dev": true + }, + "jest-snapshot": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-24.9.0.tgz", + "integrity": "sha512-uI/rszGSs73xCM0l+up7O7a40o90cnrk429LOiK3aeTvfC0HHmldbd81/B7Ix81KSFe1lwkbl7GnBGG4UfuDew==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0", + "@jest/types": "^24.9.0", + "chalk": "^2.0.1", + "expect": "^24.9.0", + "jest-diff": "^24.9.0", + "jest-get-type": "^24.9.0", + "jest-matcher-utils": "^24.9.0", + "jest-message-util": "^24.9.0", + "jest-resolve": "^24.9.0", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^24.9.0", + "semver": "^6.2.0" + } + }, + "jest-util": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-24.9.0.tgz", + "integrity": "sha512-x+cZU8VRmOJxbA1K5oDBdxQmdq0OIdADarLxk0Mq+3XS4jgvhG/oKGWcIDCtPG0HgjxOYvF+ilPJQsAyXfbNOg==", + "dev": true, + "requires": { + "@jest/console": "^24.9.0", + "@jest/fake-timers": "^24.9.0", + "@jest/source-map": "^24.9.0", + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "callsites": "^3.0.0", + "chalk": "^2.0.1", + "graceful-fs": "^4.1.15", + "is-ci": "^2.0.0", + "mkdirp": "^0.5.1", + "slash": "^2.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "jest-validate": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-24.9.0.tgz", + "integrity": "sha512-HPIt6C5ACwiqSiwi+OfSSHbK8sG7akG8eATl+IPKaeIjtPOeBUd/g3J7DghugzxrGjI93qS/+RPKe1H6PqvhRQ==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "camelcase": "^5.3.1", + "chalk": "^2.0.1", + "jest-get-type": "^24.9.0", + "leven": "^3.1.0", + "pretty-format": "^24.9.0" + } + }, + "jest-watch-typeahead": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/jest-watch-typeahead/-/jest-watch-typeahead-0.4.2.tgz", + "integrity": "sha512-f7VpLebTdaXs81rg/oj4Vg/ObZy2QtGzAmGLNsqUS5G5KtSN68tFcIsbvNODfNyQxU78g7D8x77o3bgfBTR+2Q==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^2.4.1", + "jest-regex-util": "^24.9.0", + "jest-watcher": "^24.3.0", + "slash": "^3.0.0", + "string-length": "^3.1.0", + "strip-ansi": "^5.0.0" + }, + "dependencies": { + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "string-length": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-3.1.0.tgz", + "integrity": "sha512-Ttp5YvkGm5v9Ijagtaz1BnN+k9ObpvS0eIBblPMp2YWL8FBmi9qblQ9fexc2k/CXFgrTIteU3jAw3payCnwSTA==", + "dev": true, + "requires": { + "astral-regex": "^1.0.0", + "strip-ansi": "^5.2.0" + } + } + } + }, + "jest-watcher": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-24.9.0.tgz", + "integrity": "sha512-+/fLOfKPXXYJDYlks62/4R4GoT+GU1tYZed99JSCOsmzkkF7727RqKrjNAxtfO4YpGv11wybgRvCjR73lK2GZw==", + "dev": true, + "requires": { + "@jest/test-result": "^24.9.0", + "@jest/types": "^24.9.0", + "@types/yargs": "^13.0.0", + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.1", + "jest-util": "^24.9.0", + "string-length": "^2.0.0" + }, + "dependencies": { + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true + } + } + }, + "jest-worker": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-24.9.0.tgz", + "integrity": "sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw==", + "dev": true, + "requires": { + "merge-stream": "^2.0.0", + "supports-color": "^6.1.0" + }, + "dependencies": { + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "js-yaml": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", + "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "jsdom": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz", + "integrity": "sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==", + "dev": true, + "requires": { + "abab": "^2.0.0", + "acorn": "^5.5.3", + "acorn-globals": "^4.1.0", + "array-equal": "^1.0.0", + "cssom": ">= 0.3.2 < 0.4.0", + "cssstyle": "^1.0.0", + "data-urls": "^1.0.0", + "domexception": "^1.0.1", + "escodegen": "^1.9.1", + "html-encoding-sniffer": "^1.0.2", + "left-pad": "^1.3.0", + "nwsapi": "^2.0.7", + "parse5": "4.0.0", + "pn": "^1.1.0", + "request": "^2.87.0", + "request-promise-native": "^1.0.5", + "sax": "^1.2.4", + "symbol-tree": "^3.2.2", + "tough-cookie": "^2.3.4", + "w3c-hr-time": "^1.0.1", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.3", + "whatwg-mimetype": "^2.1.0", + "whatwg-url": "^6.4.1", + "ws": "^5.2.0", + "xml-name-validator": "^3.0.0" + }, + "dependencies": { + "acorn": { + "version": "5.7.4", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", + "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", + "dev": true + } + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz", + "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=", + "dev": true, + "requires": { + "jsonify": "~0.0.0" + } + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "json3": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", + "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==", + "dev": true + }, + "json5": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsonify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz", + "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", + "dev": true + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "jsx-ast-utils": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.3.0.tgz", + "integrity": "sha512-3HNoc7nZ1hpZIKB3hJ7BlFRkzCx2BynRtfSwbkqZdpRdvAPsGMnzclPwrvDBS7/lalHTj21NwIeaEpysHBOudg==", + "dev": true, + "requires": { + "array-includes": "^3.1.1", + "object.assign": "^4.1.0" + } + }, + "karma": { + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/karma/-/karma-5.0.9.tgz", + "integrity": "sha512-dUA5z7Lo7G4FRSe1ZAXqOINEEWxmCjDBbfRBmU/wYlSMwxUQJP/tEEP90yJt3Uqo03s9rCgVnxtlfq+uDhxSPg==", + "dev": true, + "requires": { + "body-parser": "^1.19.0", + "braces": "^3.0.2", + "chokidar": "^3.0.0", + "colors": "^1.4.0", + "connect": "^3.7.0", + "di": "^0.0.1", + "dom-serialize": "^2.2.1", + "flatted": "^2.0.2", + "glob": "^7.1.6", + "graceful-fs": "^4.2.4", + "http-proxy": "^1.18.1", + "isbinaryfile": "^4.0.6", + "lodash": "^4.17.15", + "log4js": "^6.2.1", + "mime": "^2.4.5", + "minimatch": "^3.0.4", + "qjobs": "^1.2.0", + "range-parser": "^1.2.1", + "rimraf": "^3.0.2", + "socket.io": "^2.3.0", + "source-map": "^0.6.1", + "tmp": "0.2.1", + "ua-parser-js": "0.7.21", + "yargs": "^15.3.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", + "dev": true, + "requires": { + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "requires": { + "rimraf": "^3.0.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "yargs": { + "version": "15.3.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.3.1.tgz", + "integrity": "sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA==", + "dev": true, + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.1" + } + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "karma-chrome-launcher": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.0.tgz", + "integrity": "sha512-3dPs/n7vgz1rxxtynpzZTvb9y/GIaW8xjAwcIGttLbycqoFtI7yo1NGnQi6oFTherRE+GIhCAHZC4vEqWGhNvg==", + "dev": true, + "requires": { + "which": "^1.2.1" + } + }, + "karma-jasmine": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-3.3.1.tgz", + "integrity": "sha512-Nxh7eX9mOQMyK0VSsMxdod+bcqrR/ikrmEiWj5M6fwuQ7oI+YEF1FckaDsWfs6TIpULm9f0fTKMjF7XcrvWyqQ==", + "dev": true, + "requires": { + "jasmine-core": "^3.5.0" + } + }, + "killable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", + "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true + }, + "last-call-webpack-plugin": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz", + "integrity": "sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w==", + "dev": true, + "requires": { + "lodash": "^4.17.5", + "webpack-sources": "^1.1.0" + } + }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "dev": true + }, + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, + "requires": { + "invert-kv": "^2.0.0" + } + }, + "left-pad": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz", + "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==", + "dev": true + }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true + }, + "levenary": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/levenary/-/levenary-1.1.1.tgz", + "integrity": "sha512-mkAdOIt79FD6irqjYSs4rdbnlT5vRonMEvBVPVb3XmevfS8kgRXwfes0dhPdEtzTWD/1eNE/Bm/G1iRt6DcnQQ==", + "dev": true, + "requires": { + "leven": "^3.1.0" + } + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "lines-and-columns": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", + "dev": true + }, + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + } + }, + "loader-fs-cache": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/loader-fs-cache/-/loader-fs-cache-1.0.3.tgz", + "integrity": "sha512-ldcgZpjNJj71n+2Mf6yetz+c9bM4xpKtNds4LbqXzU/PTdeAX0g3ytnU1AJMEcTk2Lex4Smpe3Q/eCTsvUBxbA==", + "dev": true, + "requires": { + "find-cache-dir": "^0.1.1", + "mkdirp": "^0.5.1" + }, + "dependencies": { + "find-cache-dir": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-0.1.1.tgz", + "integrity": "sha1-yN765XyKUqinhPnjHFfHQumToLk=", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "mkdirp": "^0.5.1", + "pkg-dir": "^1.0.0" + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "pkg-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-1.0.0.tgz", + "integrity": "sha1-ektQio1bstYp1EcFb/TpyTFM89Q=", + "dev": true, + "requires": { + "find-up": "^1.0.0" + } + } + } + }, + "loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", + "dev": true + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + } + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + }, + "lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", + "dev": true + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", + "dev": true + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "dev": true + }, + "lodash.template": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", + "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", + "dev": true, + "requires": { + "lodash._reinterpolate": "^3.0.0", + "lodash.templatesettings": "^4.0.0" + } + }, + "lodash.templatesettings": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", + "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", + "dev": true, + "requires": { + "lodash._reinterpolate": "^3.0.0" + } + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "dev": true + }, + "log4js": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.3.0.tgz", + "integrity": "sha512-Mc8jNuSFImQUIateBFwdOQcmC6Q5maU0VVvdC2R6XMb66/VnT+7WS4D/0EeNMZu1YODmJe5NIn2XftCzEocUgw==", + "dev": true, + "requires": { + "date-format": "^3.0.0", + "debug": "^4.1.1", + "flatted": "^2.0.1", + "rfdc": "^1.1.4", + "streamroller": "^2.2.4" + } + }, + "loglevel": { + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.8.tgz", + "integrity": "sha512-bsU7+gc9AJ2SqpzxwU3+1fedl8zAntbtC5XYlt3s2j1hJcn2PsXSmgN8TaLG/J1/2mod4+cE/3vNL70/c1RNCA==", + "dev": true + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "lower-case": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.1.tgz", + "integrity": "sha512-LiWgfDLLb1dwbFQZsSglpRj+1ctGnayXz3Uv0/WO8n558JycT5fg6zkNcnW0G68Nn0aEldTFeEfmjCfmqry/rQ==", + "dev": true, + "requires": { + "tslib": "^1.10.0" + } + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + }, + "dependencies": { + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + } + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "dependencies": { + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "makeerror": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", + "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", + "dev": true, + "requires": { + "tmpl": "1.0.x" + } + }, + "mamacro": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz", + "integrity": "sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==", + "dev": true + }, + "map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, + "requires": { + "p-defer": "^1.0.0" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "mdn-data": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", + "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", + "dev": true + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", + "dev": true + }, + "mem": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "dev": true, + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + } + }, + "memory-fs": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", + "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", + "dev": true, + "requires": { + "errno": "^0.1.3", + "readable-stream": "^2.0.1" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "merge-deep": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/merge-deep/-/merge-deep-3.0.2.tgz", + "integrity": "sha512-T7qC8kg4Zoti1cFd8Cr0M+qaZfOwjlPDEdZIIPPB2JZctjaPM4fX+i7HOId69tAti2fvO6X5ldfYUONDODsrkA==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "clone-deep": "^0.2.4", + "kind-of": "^3.0.2" + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", + "dev": true + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true + }, + "microevent.ts": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/microevent.ts/-/microevent.ts-0.1.1.tgz", + "integrity": "sha512-jo1OfR4TaEwd5HOrt5+tAZ9mqT4jmpNAusXtyfNzqVm9uiSYFZlKM1wYL4oU7azZW/PxQW53wM0S6OR1JHNa2g==", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + } + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "mime": { + "version": "2.4.6", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.6.tgz", + "integrity": "sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==", + "dev": true + }, + "mime-db": { + "version": "1.44.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==", + "dev": true + }, + "mime-types": { + "version": "2.1.27", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", + "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", + "dev": true, + "requires": { + "mime-db": "1.44.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "mini-css-extract-plugin": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.9.0.tgz", + "integrity": "sha512-lp3GeY7ygcgAmVIcRPBVhIkf8Us7FZjA+ILpal44qLdSu11wmjKQ3d9k15lfD7pO4esu9eUIAW7qiYIBppv40A==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "normalize-url": "1.9.1", + "schema-utils": "^1.0.0", + "webpack-sources": "^1.1.0" + }, + "dependencies": { + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "minipass": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", + "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-pipeline": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.3.tgz", + "integrity": "sha512-cFOknTvng5vqnwOpDsZTWhNll6Jf8o2x+/diplafmxpuIymAjzoOolZG0VvQf3V2HgqzJNhnuKHYp2BqDgz8IQ==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "dev": true, + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mixin-object": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mixin-object/-/mixin-object-2.0.1.tgz", + "integrity": "sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=", + "dev": true, + "requires": { + "for-in": "^0.1.3", + "is-extendable": "^0.1.1" + }, + "dependencies": { + "for-in": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-0.1.8.tgz", + "integrity": "sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=", + "dev": true + } + } + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "multicast-dns": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", + "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", + "dev": true, + "requires": { + "dns-packet": "^1.3.1", + "thunky": "^1.0.2" + } + }, + "multicast-dns-service-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", + "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", + "dev": true + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + } + } + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", + "dev": true + }, + "neo-async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", + "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", + "dev": true + }, + "next-tick": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", + "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "no-case": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.3.tgz", + "integrity": "sha512-ehY/mVQCf9BL0gKfsJBvFJen+1V//U+0HQMPrWct40ixE4jnv0bfvxDbWtAHL9EcaPEOJHVVYKoQn1TlZUB8Tw==", + "dev": true, + "requires": { + "lower-case": "^2.0.1", + "tslib": "^1.10.0" + } + }, + "node-forge": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.9.0.tgz", + "integrity": "sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ==", + "dev": true + }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", + "dev": true + }, + "node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "dev": true, + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + }, + "dependencies": { + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "dev": true, + "requires": { + "inherits": "2.0.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } + } + } + } + }, + "node-modules-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", + "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", + "dev": true + }, + "node-notifier": { + "version": "5.4.3", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.3.tgz", + "integrity": "sha512-M4UBGcs4jeOK9CjTsYwkvH6/MzuUmGCyTW+kCY7uO+1ZVr0+FHGdPdIf5CCLqAaxnRrWidyoQlNkMIIVwbKB8Q==", + "dev": true, + "requires": { + "growly": "^1.3.0", + "is-wsl": "^1.1.0", + "semver": "^5.5.0", + "shellwords": "^0.1.1", + "which": "^1.3.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "node-releases": { + "version": "1.1.58", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.58.tgz", + "integrity": "sha512-NxBudgVKiRh/2aPWMgPR7bPTX0VPmGx5QBwCtdHitnqFE5/O8DeBXuIMH1nwNnw/aMo6AjOrpsHzfY3UbUJ7yg==", + "dev": true + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true + }, + "normalize-url": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", + "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", + "dev": true, + "requires": { + "object-assign": "^4.0.1", + "prepend-http": "^1.0.0", + "query-string": "^4.1.0", + "sort-keys": "^1.0.0" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "dev": true, + "requires": { + "boolbase": "~1.0.0" + } + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "dev": true + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "nwsapi": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", + "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", + "dev": true + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object-component": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/object-component/-/object-component-0.0.3.tgz", + "integrity": "sha1-8MaapQ78lbhmwYb0AKM3acsvEpE=", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "object-hash": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.0.3.tgz", + "integrity": "sha512-JPKn0GMu+Fa3zt3Bmr66JhokJU5BaNBIh4ZeTlaCBzrBsOeXzwcKKAK1tbLiPKgvwmPXsDvvLHoWh5Bm7ofIYg==", + "dev": true + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + }, + "object-is": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.2.tgz", + "integrity": "sha512-5lHCz+0uufF6wZ7CRFWJN3hp8Jqblpgve06U5CMQ3f//6iDjPr2PEo9MWCjEssDsa+UZEL4PkFpr+BMop6aKzQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object-path": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.11.4.tgz", + "integrity": "sha1-NwrnUvvzfePqcKhhwju6iRVpGUk=", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.entries": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.2.tgz", + "integrity": "sha512-BQdB9qKmb/HyNdMNWVr7O3+z5MUIx3aiegEIJqjMBbBf0YT9RRxTJSim4mzFqtyr7PDAHigq0N9dO0m0tRakQA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "has": "^1.0.3" + } + }, + "object.fromentries": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.2.tgz", + "integrity": "sha512-r3ZiBH7MQppDJVLx6fhD618GKNG40CZYH9wgwdhKxBDDbQgjeWGGd4AtkZad84d291YxvWe7bJGuE65Anh0dxQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "object.getownpropertydescriptors": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", + "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "object.values": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.1.tgz", + "integrity": "sha512-WTa54g2K8iu0kmS/us18jEmdv1a4Wi//BZ/DTVYEcH0XhLM5NYdpDHja3gt57VrZLcNAO2WGA+KpWsDBaHt6eA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", + "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "open": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/open/-/open-7.0.4.tgz", + "integrity": "sha512-brSA+/yq+b08Hsr4c8fsEW2CRzk1BmfN3SAK/5VCHQ9bdoZJ4qa/+AfR0xHjlbbZUyPkUHs1b8x1RqdyZdkVqQ==", + "dev": true, + "requires": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + }, + "dependencies": { + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "requires": { + "is-docker": "^2.0.0" + } + } + } + }, + "opn": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", + "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "optimize-css-assets-webpack-plugin": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.3.tgz", + "integrity": "sha512-q9fbvCRS6EYtUKKSwI87qm2IxlyJK5b4dygW1rKUBT6mMDhdG5e5bZT63v6tnJR9F9FB/H5a0HTmtw+laUBxKA==", + "dev": true, + "requires": { + "cssnano": "^4.1.10", + "last-call-webpack-plugin": "^3.0.0" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "original": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", + "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", + "dev": true, + "requires": { + "url-parse": "^1.4.3" + } + }, + "os-browserify": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", + "dev": true + }, + "os-locale": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "dev": true, + "requires": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "dev": true + }, + "p-each-series": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-1.0.0.tgz", + "integrity": "sha1-kw89Et0fUOdDRFeiLNbwSsatf3E=", + "dev": true, + "requires": { + "p-reduce": "^1.0.0" + } + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", + "dev": true + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-map": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "p-reduce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz", + "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=", + "dev": true + }, + "p-retry": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz", + "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==", + "dev": true, + "requires": { + "retry": "^0.12.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + }, + "parallel-transform": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", + "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", + "dev": true, + "requires": { + "cyclist": "^1.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "param-case": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.3.tgz", + "integrity": "sha512-VWBVyimc1+QrzappRs7waeN2YmoZFCGXWASRYX1/rGHtXqEcrGEIDm+jqIwFa2fRXNgQEwrxaYuIrX0WcAguTA==", + "dev": true, + "requires": { + "dot-case": "^3.0.3", + "tslib": "^1.10.0" + } + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + }, + "dependencies": { + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + } + } + }, + "parse-asn1": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", + "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==", + "dev": true, + "requires": { + "asn1.js": "^4.0.0", + "browserify-aes": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "parse5": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", + "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", + "dev": true + }, + "parseqs": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.5.tgz", + "integrity": "sha1-1SCKNzjkZ2bikbouoXNoSSGouJ0=", + "dev": true, + "requires": { + "better-assert": "~1.0.0" + } + }, + "parseuri": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.5.tgz", + "integrity": "sha1-gCBKUNTbt3m/3G6+J3jZDkvOMgo=", + "dev": true, + "requires": { + "better-assert": "~1.0.0" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, + "pascal-case": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.1.tgz", + "integrity": "sha512-XIeHKqIrsquVTQL2crjq3NfJUxmdLasn3TYOU0VBM+UX2a6ztAWBlJQBePLGY7VHW8+2dRadeIPK5+KImwTxQA==", + "dev": true, + "requires": { + "no-case": "^3.0.3", + "tslib": "^1.10.0" + } + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", + "dev": true + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "pbkdf2": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.0.tgz", + "integrity": "sha512-wHMFZ6HTLGlB9f/WsQBs5OwMQJoLXYuJUzbA+j+hRBf7+Y8KcXpatzIviIcTy1OAyhWQp08nyiPO8Dnv0z4Sww==", + "dev": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "pirates": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", + "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", + "dev": true, + "requires": { + "node-modules-regexp": "^1.0.0" + } + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + } + } + }, + "pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", + "integrity": "sha1-yBmscoBZpGHKscOImivjxJoATX8=", + "dev": true, + "requires": { + "find-up": "^2.1.0" + } + }, + "pn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", + "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", + "dev": true + }, + "pnp-webpack-plugin": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz", + "integrity": "sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg==", + "dev": true, + "requires": { + "ts-pnp": "^1.1.6" + } + }, + "portfinder": { + "version": "1.0.26", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.26.tgz", + "integrity": "sha512-Xi7mKxJHHMI3rIUrnm/jjUgwhbYMkp/XKEcZX3aG4BrumLpq3nmoQMX+ClYnDZnZ/New7IatC1no5RX0zo1vXQ==", + "dev": true, + "requires": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.1" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "postcss": { + "version": "7.0.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", + "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "postcss-attribute-case-insensitive": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-4.0.2.tgz", + "integrity": "sha512-clkFxk/9pcdb4Vkn0hAHq3YnxBQ2p0CGD1dy24jN+reBck+EWxMbxSUqN4Yj7t0w8csl87K6p0gxBe1utkJsYA==", + "dev": true, + "requires": { + "postcss": "^7.0.2", + "postcss-selector-parser": "^6.0.2" + } + }, + "postcss-browser-comments": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-browser-comments/-/postcss-browser-comments-3.0.0.tgz", + "integrity": "sha512-qfVjLfq7HFd2e0HW4s1dvU8X080OZdG46fFbIBFjW7US7YPDcWfRvdElvwMJr2LI6hMmD+7LnH2HcmXTs+uOig==", + "dev": true, + "requires": { + "postcss": "^7" + } + }, + "postcss-calc": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.2.tgz", + "integrity": "sha512-rofZFHUg6ZIrvRwPeFktv06GdbDYLcGqh9EwiMutZg+a0oePCCw1zHOEiji6LCpyRcjTREtPASuUqeAvYlEVvQ==", + "dev": true, + "requires": { + "postcss": "^7.0.27", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" + } + }, + "postcss-color-functional-notation": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-2.0.1.tgz", + "integrity": "sha512-ZBARCypjEDofW4P6IdPVTLhDNXPRn8T2s1zHbZidW6rPaaZvcnCS2soYFIQJrMZSxiePJ2XIYTlcb2ztr/eT2g==", + "dev": true, + "requires": { + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + } + }, + "postcss-color-gray": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-color-gray/-/postcss-color-gray-5.0.0.tgz", + "integrity": "sha512-q6BuRnAGKM/ZRpfDascZlIZPjvwsRye7UDNalqVz3s7GDxMtqPY6+Q871liNxsonUw8oC61OG+PSaysYpl1bnw==", + "dev": true, + "requires": { + "@csstools/convert-colors": "^1.4.0", + "postcss": "^7.0.5", + "postcss-values-parser": "^2.0.0" + } + }, + "postcss-color-hex-alpha": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-5.0.3.tgz", + "integrity": "sha512-PF4GDel8q3kkreVXKLAGNpHKilXsZ6xuu+mOQMHWHLPNyjiUBOr75sp5ZKJfmv1MCus5/DWUGcK9hm6qHEnXYw==", + "dev": true, + "requires": { + "postcss": "^7.0.14", + "postcss-values-parser": "^2.0.1" + } + }, + "postcss-color-mod-function": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/postcss-color-mod-function/-/postcss-color-mod-function-3.0.3.tgz", + "integrity": "sha512-YP4VG+xufxaVtzV6ZmhEtc+/aTXH3d0JLpnYfxqTvwZPbJhWqp8bSY3nfNzNRFLgB4XSaBA82OE4VjOOKpCdVQ==", + "dev": true, + "requires": { + "@csstools/convert-colors": "^1.4.0", + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + } + }, + "postcss-color-rebeccapurple": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-4.0.1.tgz", + "integrity": "sha512-aAe3OhkS6qJXBbqzvZth2Au4V3KieR5sRQ4ptb2b2O8wgvB3SJBsdG+jsn2BZbbwekDG8nTfcCNKcSfe/lEy8g==", + "dev": true, + "requires": { + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + } + }, + "postcss-colormin": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz", + "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "color": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-convert-values": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", + "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-custom-media": { + "version": "7.0.8", + "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-7.0.8.tgz", + "integrity": "sha512-c9s5iX0Ge15o00HKbuRuTqNndsJUbaXdiNsksnVH8H4gdc+zbLzr/UasOwNG6CTDpLFekVY4672eWdiiWu2GUg==", + "dev": true, + "requires": { + "postcss": "^7.0.14" + } + }, + "postcss-custom-properties": { + "version": "8.0.11", + "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-8.0.11.tgz", + "integrity": "sha512-nm+o0eLdYqdnJ5abAJeXp4CEU1c1k+eB2yMCvhgzsds/e0umabFrN6HoTy/8Q4K5ilxERdl/JD1LO5ANoYBeMA==", + "dev": true, + "requires": { + "postcss": "^7.0.17", + "postcss-values-parser": "^2.0.1" + } + }, + "postcss-custom-selectors": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-5.1.2.tgz", + "integrity": "sha512-DSGDhqinCqXqlS4R7KGxL1OSycd1lydugJ1ky4iRXPHdBRiozyMHrdu0H3o7qNOCiZwySZTUI5MV0T8QhCLu+w==", + "dev": true, + "requires": { + "postcss": "^7.0.2", + "postcss-selector-parser": "^5.0.0-rc.3" + }, + "dependencies": { + "cssesc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", + "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==", + "dev": true + }, + "postcss-selector-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", + "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", + "dev": true, + "requires": { + "cssesc": "^2.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-dir-pseudo-class": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-5.0.0.tgz", + "integrity": "sha512-3pm4oq8HYWMZePJY+5ANriPs3P07q+LW6FAdTlkFH2XqDdP4HeeJYMOzn0HYLhRSjBO3fhiqSwwU9xEULSrPgw==", + "dev": true, + "requires": { + "postcss": "^7.0.2", + "postcss-selector-parser": "^5.0.0-rc.3" + }, + "dependencies": { + "cssesc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", + "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==", + "dev": true + }, + "postcss-selector-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", + "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", + "dev": true, + "requires": { + "cssesc": "^2.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-discard-comments": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", + "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-duplicates": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", + "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-empty": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", + "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-overridden": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", + "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-double-position-gradients": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-1.0.0.tgz", + "integrity": "sha512-G+nV8EnQq25fOI8CH/B6krEohGWnF5+3A6H/+JEpOncu5dCnkS1QQ6+ct3Jkaepw1NGVqqOZH6lqrm244mCftA==", + "dev": true, + "requires": { + "postcss": "^7.0.5", + "postcss-values-parser": "^2.0.0" + } + }, + "postcss-env-function": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-2.0.2.tgz", + "integrity": "sha512-rwac4BuZlITeUbiBq60h/xbLzXY43qOsIErngWa4l7Mt+RaSkT7QBjXVGTcBHupykkblHMDrBFh30zchYPaOUw==", + "dev": true, + "requires": { + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + } + }, + "postcss-flexbugs-fixes": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-4.1.0.tgz", + "integrity": "sha512-jr1LHxQvStNNAHlgco6PzY308zvLklh7SJVYuWUwyUQncofaAlD2l+P/gxKHOdqWKe7xJSkVLFF/2Tp+JqMSZA==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-focus-visible": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-4.0.0.tgz", + "integrity": "sha512-Z5CkWBw0+idJHSV6+Bgf2peDOFf/x4o+vX/pwcNYrWpXFrSfTkQ3JQ1ojrq9yS+upnAlNRHeg8uEwFTgorjI8g==", + "dev": true, + "requires": { + "postcss": "^7.0.2" + } + }, + "postcss-focus-within": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-3.0.0.tgz", + "integrity": "sha512-W0APui8jQeBKbCGZudW37EeMCjDeVxKgiYfIIEo8Bdh5SpB9sxds/Iq8SEuzS0Q4YFOlG7EPFulbbxujpkrV2w==", + "dev": true, + "requires": { + "postcss": "^7.0.2" + } + }, + "postcss-font-variant": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-4.0.0.tgz", + "integrity": "sha512-M8BFYKOvCrI2aITzDad7kWuXXTm0YhGdP9Q8HanmN4EF1Hmcgs1KK5rSHylt/lUJe8yLxiSwWAHdScoEiIxztg==", + "dev": true, + "requires": { + "postcss": "^7.0.2" + } + }, + "postcss-gap-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-2.0.0.tgz", + "integrity": "sha512-QZSqDaMgXCHuHTEzMsS2KfVDOq7ZFiknSpkrPJY6jmxbugUPTuSzs/vuE5I3zv0WAS+3vhrlqhijiprnuQfzmg==", + "dev": true, + "requires": { + "postcss": "^7.0.2" + } + }, + "postcss-image-set-function": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-3.0.1.tgz", + "integrity": "sha512-oPTcFFip5LZy8Y/whto91L9xdRHCWEMs3e1MdJxhgt4jy2WYXfhkng59fH5qLXSCPN8k4n94p1Czrfe5IOkKUw==", + "dev": true, + "requires": { + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + } + }, + "postcss-initial": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-3.0.2.tgz", + "integrity": "sha512-ugA2wKonC0xeNHgirR4D3VWHs2JcU08WAi1KFLVcnb7IN89phID6Qtg2RIctWbnvp1TM2BOmDtX8GGLCKdR8YA==", + "dev": true, + "requires": { + "lodash.template": "^4.5.0", + "postcss": "^7.0.2" + } + }, + "postcss-lab-function": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-2.0.1.tgz", + "integrity": "sha512-whLy1IeZKY+3fYdqQFuDBf8Auw+qFuVnChWjmxm/UhHWqNHZx+B99EwxTvGYmUBqe3Fjxs4L1BoZTJmPu6usVg==", + "dev": true, + "requires": { + "@csstools/convert-colors": "^1.4.0", + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + } + }, + "postcss-load-config": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.0.tgz", + "integrity": "sha512-4pV3JJVPLd5+RueiVVB+gFOAa7GWc25XQcMp86Zexzke69mKf6Nx9LRcQywdz7yZI9n1udOxmLuAwTBypypF8Q==", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.0", + "import-cwd": "^2.0.0" + } + }, + "postcss-loader": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-3.0.0.tgz", + "integrity": "sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "postcss": "^7.0.0", + "postcss-load-config": "^2.0.0", + "schema-utils": "^1.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "postcss-logical": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-3.0.0.tgz", + "integrity": "sha512-1SUKdJc2vuMOmeItqGuNaC+N8MzBWFWEkAnRnLpFYj1tGGa7NqyVBujfRtgNa2gXR+6RkGUiB2O5Vmh7E2RmiA==", + "dev": true, + "requires": { + "postcss": "^7.0.2" + } + }, + "postcss-media-minmax": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-4.0.0.tgz", + "integrity": "sha512-fo9moya6qyxsjbFAYl97qKO9gyre3qvbMnkOZeZwlsW6XYFsvs2DMGDlchVLfAd8LHPZDxivu/+qW2SMQeTHBw==", + "dev": true, + "requires": { + "postcss": "^7.0.2" + } + }, + "postcss-merge-longhand": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", + "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==", + "dev": true, + "requires": { + "css-color-names": "0.0.4", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "stylehacks": "^4.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-merge-rules": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", + "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "cssnano-util-same-parent": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0", + "vendors": "^1.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-minify-font-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", + "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-minify-gradients": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", + "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "is-color-stop": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-minify-params": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", + "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "browserslist": "^4.0.0", + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "uniqs": "^2.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-minify-selectors": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", + "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-modules-extract-imports": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz", + "integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==", + "dev": true, + "requires": { + "postcss": "^7.0.5" + } + }, + "postcss-modules-local-by-default": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.2.tgz", + "integrity": "sha512-jM/V8eqM4oJ/22j0gx4jrp63GSvDH6v86OqyTHHUvk4/k1vceipZsaymiZ5PvocqZOl5SFHiFJqjs3la0wnfIQ==", + "dev": true, + "requires": { + "icss-utils": "^4.1.1", + "postcss": "^7.0.16", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.0" + } + }, + "postcss-modules-scope": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz", + "integrity": "sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==", + "dev": true, + "requires": { + "postcss": "^7.0.6", + "postcss-selector-parser": "^6.0.0" + } + }, + "postcss-modules-values": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz", + "integrity": "sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==", + "dev": true, + "requires": { + "icss-utils": "^4.0.0", + "postcss": "^7.0.6" + } + }, + "postcss-nesting": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-7.0.1.tgz", + "integrity": "sha512-FrorPb0H3nuVq0Sff7W2rnc3SmIcruVC6YwpcS+k687VxyxO33iE1amna7wHuRVzM8vfiYofXSBHNAZ3QhLvYg==", + "dev": true, + "requires": { + "postcss": "^7.0.2" + } + }, + "postcss-normalize": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize/-/postcss-normalize-8.0.1.tgz", + "integrity": "sha512-rt9JMS/m9FHIRroDDBGSMsyW1c0fkvOJPy62ggxSHUldJO7B195TqFMqIf+lY5ezpDcYOV4j86aUp3/XbxzCCQ==", + "dev": true, + "requires": { + "@csstools/normalize.css": "^10.1.0", + "browserslist": "^4.6.2", + "postcss": "^7.0.17", + "postcss-browser-comments": "^3.0.0", + "sanitize.css": "^10.0.0" + } + }, + "postcss-normalize-charset": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", + "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-normalize-display-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", + "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-positions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", + "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-repeat-style": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", + "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-string": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", + "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==", + "dev": true, + "requires": { + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-timing-functions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", + "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-unicode": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", + "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-url": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", + "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", + "dev": true, + "requires": { + "is-absolute-url": "^2.0.0", + "normalize-url": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "normalize-url": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", + "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", + "dev": true + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-whitespace": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", + "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-ordered-values": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", + "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-overflow-shorthand": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-2.0.0.tgz", + "integrity": "sha512-aK0fHc9CBNx8jbzMYhshZcEv8LtYnBIRYQD5i7w/K/wS9c2+0NSR6B3OVMu5y0hBHYLcMGjfU+dmWYNKH0I85g==", + "dev": true, + "requires": { + "postcss": "^7.0.2" + } + }, + "postcss-page-break": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-2.0.0.tgz", + "integrity": "sha512-tkpTSrLpfLfD9HvgOlJuigLuk39wVTbbd8RKcy8/ugV2bNBUW3xU+AIqyxhDrQr1VUj1RmyJrBn1YWrqUm9zAQ==", + "dev": true, + "requires": { + "postcss": "^7.0.2" + } + }, + "postcss-place": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-4.0.1.tgz", + "integrity": "sha512-Zb6byCSLkgRKLODj/5mQugyuj9bvAAw9LqJJjgwz5cYryGeXfFZfSXoP1UfveccFmeq0b/2xxwcTEVScnqGxBg==", + "dev": true, + "requires": { + "postcss": "^7.0.2", + "postcss-values-parser": "^2.0.0" + } + }, + "postcss-preset-env": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-6.7.0.tgz", + "integrity": "sha512-eU4/K5xzSFwUFJ8hTdTQzo2RBLbDVt83QZrAvI07TULOkmyQlnYlpwep+2yIK+K+0KlZO4BvFcleOCCcUtwchg==", + "dev": true, + "requires": { + "autoprefixer": "^9.6.1", + "browserslist": "^4.6.4", + "caniuse-lite": "^1.0.30000981", + "css-blank-pseudo": "^0.1.4", + "css-has-pseudo": "^0.10.0", + "css-prefers-color-scheme": "^3.1.1", + "cssdb": "^4.4.0", + "postcss": "^7.0.17", + "postcss-attribute-case-insensitive": "^4.0.1", + "postcss-color-functional-notation": "^2.0.1", + "postcss-color-gray": "^5.0.0", + "postcss-color-hex-alpha": "^5.0.3", + "postcss-color-mod-function": "^3.0.3", + "postcss-color-rebeccapurple": "^4.0.1", + "postcss-custom-media": "^7.0.8", + "postcss-custom-properties": "^8.0.11", + "postcss-custom-selectors": "^5.1.2", + "postcss-dir-pseudo-class": "^5.0.0", + "postcss-double-position-gradients": "^1.0.0", + "postcss-env-function": "^2.0.2", + "postcss-focus-visible": "^4.0.0", + "postcss-focus-within": "^3.0.0", + "postcss-font-variant": "^4.0.0", + "postcss-gap-properties": "^2.0.0", + "postcss-image-set-function": "^3.0.1", + "postcss-initial": "^3.0.0", + "postcss-lab-function": "^2.0.1", + "postcss-logical": "^3.0.0", + "postcss-media-minmax": "^4.0.0", + "postcss-nesting": "^7.0.0", + "postcss-overflow-shorthand": "^2.0.0", + "postcss-page-break": "^2.0.0", + "postcss-place": "^4.0.1", + "postcss-pseudo-class-any-link": "^6.0.0", + "postcss-replace-overflow-wrap": "^3.0.0", + "postcss-selector-matches": "^4.0.0", + "postcss-selector-not": "^4.0.0" + } + }, + "postcss-pseudo-class-any-link": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-6.0.0.tgz", + "integrity": "sha512-lgXW9sYJdLqtmw23otOzrtbDXofUdfYzNm4PIpNE322/swES3VU9XlXHeJS46zT2onFO7V1QFdD4Q9LiZj8mew==", + "dev": true, + "requires": { + "postcss": "^7.0.2", + "postcss-selector-parser": "^5.0.0-rc.3" + }, + "dependencies": { + "cssesc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", + "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==", + "dev": true + }, + "postcss-selector-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz", + "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==", + "dev": true, + "requires": { + "cssesc": "^2.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-reduce-initial": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", + "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0" + } + }, + "postcss-reduce-transforms": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", + "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-replace-overflow-wrap": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-3.0.0.tgz", + "integrity": "sha512-2T5hcEHArDT6X9+9dVSPQdo7QHzG4XKclFT8rU5TzJPDN7RIRTbO9c4drUISOVemLj03aezStHCR2AIcr8XLpw==", + "dev": true, + "requires": { + "postcss": "^7.0.2" + } + }, + "postcss-safe-parser": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-4.0.1.tgz", + "integrity": "sha512-xZsFA3uX8MO3yAda03QrG3/Eg1LN3EPfjjf07vke/46HERLZyHrTsQ9E1r1w1W//fWEhtYNndo2hQplN2cVpCQ==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-selector-matches": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-matches/-/postcss-selector-matches-4.0.0.tgz", + "integrity": "sha512-LgsHwQR/EsRYSqlwdGzeaPKVT0Ml7LAT6E75T8W8xLJY62CE4S/l03BWIt3jT8Taq22kXP08s2SfTSzaraoPww==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "postcss": "^7.0.2" + } + }, + "postcss-selector-not": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-4.0.0.tgz", + "integrity": "sha512-W+bkBZRhqJaYN8XAnbbZPLWMvZD1wKTu0UxtFKdhtGjWYmxhkUneoeOhRJKdAE5V7ZTlnbHfCR+6bNwK9e1dTQ==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "postcss": "^7.0.2" + } + }, + "postcss-selector-parser": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz", + "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, + "postcss-svgo": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.2.tgz", + "integrity": "sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==", + "dev": true, + "requires": { + "is-svg": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "svgo": "^1.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-unique-selectors": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", + "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "postcss": "^7.0.0", + "uniqs": "^2.0.0" + } + }, + "postcss-value-parser": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", + "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", + "dev": true + }, + "postcss-values-parser": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz", + "integrity": "sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg==", + "dev": true, + "requires": { + "flatten": "^1.0.2", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "dev": true + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "dev": true + }, + "pretty-bytes": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.3.0.tgz", + "integrity": "sha512-hjGrh+P926p4R4WbaB6OckyRtO0F0/lQBiT+0gnxjV+5kjPBrfVBFCsCLbMqVQeydvIoouYTCmmEURiH3R1Bdg==", + "dev": true + }, + "pretty-error": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz", + "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=", + "dev": true, + "requires": { + "renderkid": "^2.0.1", + "utila": "~0.4" + } + }, + "pretty-format": { + "version": "24.9.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz", + "integrity": "sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==", + "dev": true, + "requires": { + "@jest/types": "^24.9.0", + "ansi-regex": "^4.0.0", + "ansi-styles": "^3.2.0", + "react-is": "^16.8.4" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + } + } + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "dev": true + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, + "promise": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/promise/-/promise-8.1.0.tgz", + "integrity": "sha512-W04AqnILOL/sPRXziNicCjSNRruLAuIHEOVBazepu0545DDNGYHz7ar9ZgZ1fMU8/MA4mVxp5rkBWRi6OXIy3Q==", + "dev": true, + "requires": { + "asap": "~2.0.6" + } + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, + "prompts": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.3.2.tgz", + "integrity": "sha512-Q06uKs2CkNYVID0VqwfAl9mipo99zkBv/n2JtWY89Yxa3ZabWSrs0e2KTudKVa3peLUvYXMefDqIleLPVUBZMA==", + "dev": true, + "requires": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.4" + } + }, + "prop-types": { + "version": "15.7.2", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz", + "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==", + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.8.1" + } + }, + "proxy-addr": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", + "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", + "dev": true, + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.1" + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "dev": true + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + }, + "dependencies": { + "bn.js": { + "version": "4.11.9", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", + "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "dev": true + } + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "dev": true + }, + "qjobs": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", + "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", + "dev": true + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + }, + "query-string": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=", + "dev": true, + "requires": { + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true + }, + "querystringify": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.1.tgz", + "integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==", + "dev": true + }, + "raf": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz", + "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==", + "dev": true, + "requires": { + "performance-now": "^2.1.0" + } + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true + }, + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "dev": true, + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "dependencies": { + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "dev": true + } + } + }, + "react": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react/-/react-16.13.1.tgz", + "integrity": "sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w==", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2" + } + }, + "react-app-polyfill": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/react-app-polyfill/-/react-app-polyfill-1.0.6.tgz", + "integrity": "sha512-OfBnObtnGgLGfweORmdZbyEz+3dgVePQBb3zipiaDsMHV1NpWm0rDFYIVXFV/AK+x4VIIfWHhrdMIeoTLyRr2g==", + "dev": true, + "requires": { + "core-js": "^3.5.0", + "object-assign": "^4.1.1", + "promise": "^8.0.3", + "raf": "^3.4.1", + "regenerator-runtime": "^0.13.3", + "whatwg-fetch": "^3.0.0" + } + }, + "react-dev-utils": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-10.2.1.tgz", + "integrity": "sha512-XxTbgJnYZmxuPtY3y/UV0D8/65NKkmaia4rXzViknVnZeVlklSh8u6TnaEYPfAi/Gh1TP4mEOXHI6jQOPbeakQ==", + "dev": true, + "requires": { + "@babel/code-frame": "7.8.3", + "address": "1.1.2", + "browserslist": "4.10.0", + "chalk": "2.4.2", + "cross-spawn": "7.0.1", + "detect-port-alt": "1.1.6", + "escape-string-regexp": "2.0.0", + "filesize": "6.0.1", + "find-up": "4.1.0", + "fork-ts-checker-webpack-plugin": "3.1.1", + "global-modules": "2.0.0", + "globby": "8.0.2", + "gzip-size": "5.1.1", + "immer": "1.10.0", + "inquirer": "7.0.4", + "is-root": "2.1.0", + "loader-utils": "1.2.3", + "open": "^7.0.2", + "pkg-up": "3.1.0", + "react-error-overlay": "^6.0.7", + "recursive-readdir": "2.2.2", + "shell-quote": "1.7.2", + "strip-ansi": "6.0.0", + "text-table": "0.2.0" + }, + "dependencies": { + "@babel/code-frame": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", + "dev": true, + "requires": { + "@babel/highlight": "^7.8.3" + } + }, + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "browserslist": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.10.0.tgz", + "integrity": "sha512-TpfK0TDgv71dzuTsEAlQiHeWQ/tiPqgNZVdv046fvNtBZrjbv2O3TsWCDU0AWGJJKCF/KsjNdLzR9hXOsh/CfA==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001035", + "electron-to-chromium": "^1.3.378", + "node-releases": "^1.1.52", + "pkg-up": "^3.1.0" + } + }, + "cross-spawn": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.1.tgz", + "integrity": "sha512-u7v4o84SwFpD32Z8IIcPZ6z1/ie24O6RU3RbtL5Y316l3KuHVPx9ItBgWQ6VlfAFnRnTtMUrsQ9MUUTuEZjogg==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "dependencies": { + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + } + } + }, + "inquirer": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.0.4.tgz", + "integrity": "sha512-Bu5Td5+j11sCkqfqmUTiwv+tWisMtP0L7Q8WrqA2C/BbBhy1YTdFrvjjlrKq8oagA/tLQBski2Gcx/Sqyi2qSQ==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^2.4.2", + "cli-cursor": "^3.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.15", + "mute-stream": "0.0.8", + "run-async": "^2.2.0", + "rxjs": "^6.5.3", + "string-width": "^4.1.0", + "strip-ansi": "^5.1.0", + "through": "^2.3.6" + }, + "dependencies": { + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^2.0.0", + "json5": "^1.0.1" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "pkg-up": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", + "integrity": "sha512-nDywThFk1i4BQK4twPQ6TA4RT8bDY96yeuCVBWL3ePARCiEKDRSrNGbFIgUJpLp+XeIR65v8ra7WuJOFUBtkMA==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + } + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + } + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "react-dom": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.13.1.tgz", + "integrity": "sha512-81PIMmVLnCNLO/fFOQxdQkvEq/+Hfpv24XNJfpyZhTRfO0QcmQIF/PgCa1zCOj2w1hrn12MFLyaJ/G0+Mxtfag==", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.19.1" + } + }, + "react-error-overlay": { + "version": "6.0.7", + "resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.7.tgz", + "integrity": "sha512-TAv1KJFh3RhqxNvhzxj6LeT5NWklP6rDr2a0jaTfsZ5wSZWHOGeqQyejUp3xxLfPt2UpyJEcVQB/zyPcmonNFA==", + "dev": true + }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "react-scripts": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-3.4.1.tgz", + "integrity": "sha512-JpTdi/0Sfd31mZA6Ukx+lq5j1JoKItX7qqEK4OiACjVQletM1P38g49d9/D0yTxp9FrSF+xpJFStkGgKEIRjlQ==", + "dev": true, + "requires": { + "@babel/core": "7.9.0", + "@svgr/webpack": "4.3.3", + "@typescript-eslint/eslint-plugin": "^2.10.0", + "@typescript-eslint/parser": "^2.10.0", + "babel-eslint": "10.1.0", + "babel-jest": "^24.9.0", + "babel-loader": "8.1.0", + "babel-plugin-named-asset-import": "^0.3.6", + "babel-preset-react-app": "^9.1.2", + "camelcase": "^5.3.1", + "case-sensitive-paths-webpack-plugin": "2.3.0", + "css-loader": "3.4.2", + "dotenv": "8.2.0", + "dotenv-expand": "5.1.0", + "eslint": "^6.6.0", + "eslint-config-react-app": "^5.2.1", + "eslint-loader": "3.0.3", + "eslint-plugin-flowtype": "4.6.0", + "eslint-plugin-import": "2.20.1", + "eslint-plugin-jsx-a11y": "6.2.3", + "eslint-plugin-react": "7.19.0", + "eslint-plugin-react-hooks": "^1.6.1", + "file-loader": "4.3.0", + "fs-extra": "^8.1.0", + "fsevents": "2.1.2", + "html-webpack-plugin": "4.0.0-beta.11", + "identity-obj-proxy": "3.0.0", + "jest": "24.9.0", + "jest-environment-jsdom-fourteen": "1.0.1", + "jest-resolve": "24.9.0", + "jest-watch-typeahead": "0.4.2", + "mini-css-extract-plugin": "0.9.0", + "optimize-css-assets-webpack-plugin": "5.0.3", + "pnp-webpack-plugin": "1.6.4", + "postcss-flexbugs-fixes": "4.1.0", + "postcss-loader": "3.0.0", + "postcss-normalize": "8.0.1", + "postcss-preset-env": "6.7.0", + "postcss-safe-parser": "4.0.1", + "react-app-polyfill": "^1.0.6", + "react-dev-utils": "^10.2.1", + "resolve": "1.15.0", + "resolve-url-loader": "3.1.1", + "sass-loader": "8.0.2", + "semver": "6.3.0", + "style-loader": "0.23.1", + "terser-webpack-plugin": "2.3.5", + "ts-pnp": "1.1.6", + "url-loader": "2.3.0", + "webpack": "4.42.0", + "webpack-dev-server": "3.10.3", + "webpack-manifest-plugin": "2.2.0", + "workbox-webpack-plugin": "4.3.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "doctrine": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "isarray": "^1.0.0" + } + }, + "eslint": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", + "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "ajv": "^6.10.0", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^1.4.3", + "eslint-visitor-keys": "^1.1.0", + "espree": "^6.1.2", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "inquirer": "^7.0.0", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.14", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.3", + "progress": "^2.0.0", + "regexpp": "^2.0.1", + "semver": "^6.1.2", + "strip-ansi": "^5.2.0", + "strip-json-comments": "^3.0.1", + "table": "^5.2.3", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "eslint-plugin-import": { + "version": "2.20.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.20.1.tgz", + "integrity": "sha512-qQHgFOTjguR+LnYRoToeZWT62XM55MBVXObHM6SKFd1VzDcX/vqT1kAz8ssqigh5eMj8qXcRoXXGZpPP6RfdCw==", + "dev": true, + "requires": { + "array-includes": "^3.0.3", + "array.prototype.flat": "^1.2.1", + "contains-path": "^0.1.0", + "debug": "^2.6.9", + "doctrine": "1.5.0", + "eslint-import-resolver-node": "^0.3.2", + "eslint-module-utils": "^2.4.1", + "has": "^1.0.3", + "minimatch": "^3.0.4", + "object.values": "^1.1.0", + "read-pkg-up": "^2.0.0", + "resolve": "^1.12.0" + } + }, + "eslint-plugin-react": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.19.0.tgz", + "integrity": "sha512-SPT8j72CGuAP+JFbT0sJHOB80TX/pu44gQ4vXH/cq+hQTiY2PuZ6IHkqXJV6x1b28GDdo1lbInjKUrrdUf0LOQ==", + "dev": true, + "requires": { + "array-includes": "^3.1.1", + "doctrine": "^2.1.0", + "has": "^1.0.3", + "jsx-ast-utils": "^2.2.3", + "object.entries": "^1.1.1", + "object.fromentries": "^2.0.2", + "object.values": "^1.1.1", + "prop-types": "^15.7.2", + "resolve": "^1.15.1", + "semver": "^6.3.0", + "string.prototype.matchall": "^4.0.2", + "xregexp": "^4.3.0" + }, + "dependencies": { + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + } + } + }, + "eslint-utils": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", + "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "espree": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", + "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.1.0" + } + }, + "fsevents": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz", + "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==", + "dev": true, + "optional": true + }, + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + }, + "import-fresh": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "load-json-file": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", + "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "strip-bom": "^3.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "path-type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", + "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=", + "dev": true, + "requires": { + "pify": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "read-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz", + "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=", + "dev": true, + "requires": { + "load-json-file": "^2.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^2.0.0" + } + }, + "read-pkg-up": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz", + "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^2.0.0" + } + }, + "regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", + "dev": true + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + } + } + }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "dev": true, + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + } + }, + "read-pkg-up": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz", + "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==", + "dev": true, + "requires": { + "find-up": "^3.0.0", + "read-pkg": "^3.0.0" + }, + "dependencies": { + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + } + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "readdirp": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz", + "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "realpath-native": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.1.0.tgz", + "integrity": "sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA==", + "dev": true, + "requires": { + "util.promisify": "^1.0.0" + } + }, + "recursive-readdir": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz", + "integrity": "sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg==", + "dev": true, + "requires": { + "minimatch": "3.0.4" + } + }, + "regenerate": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", + "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", + "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", + "dev": true, + "requires": { + "regenerate": "^1.4.0" + } + }, + "regenerator-runtime": { + "version": "0.13.5", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.5.tgz", + "integrity": "sha512-ZS5w8CpKFinUzOwW3c83oPeVXoNsrLsaCoLtJvAClH135j/R77RuymhiSErhm2lKcwSCIpmvIWSbDkIfAqKQlA==", + "dev": true + }, + "regenerator-transform": { + "version": "0.14.4", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.4.tgz", + "integrity": "sha512-EaJaKPBI9GvKpvUz2mz4fhx7WPgvwRLY9v3hlNHWmAuJHI13T4nwKnNvm5RWJzEdnI5g5UwtOww+S8IdoUC2bw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.4", + "private": "^0.1.8" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regex-parser": { + "version": "2.2.10", + "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.10.tgz", + "integrity": "sha512-8t6074A68gHfU8Neftl0Le6KTDwfGAj7IyjPIMSfikI2wJUTHDMaIq42bUsfVnj8mhx0R+45rdUXHGpN164avA==", + "dev": true + }, + "regexp.prototype.flags": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.0.tgz", + "integrity": "sha512-2+Q0C5g951OlYlJz6yu5/M33IcsESLlLfsyIaLJaG4FA2r4yP8MvVMJUUP/fVBkSpbbbZlS5gynbEWLipiiXiQ==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "regexpp": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", + "dev": true + }, + "regexpu-core": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.0.tgz", + "integrity": "sha512-TQ4KXRnIn6tz6tjnrXEkD/sshygKH/j5KzK86X8MkeHyZ8qst/LZ89j3X4/8HEIfHANTFIP/AbXakeRhWIl5YQ==", + "dev": true, + "requires": { + "regenerate": "^1.4.0", + "regenerate-unicode-properties": "^8.2.0", + "regjsgen": "^0.5.1", + "regjsparser": "^0.6.4", + "unicode-match-property-ecmascript": "^1.0.4", + "unicode-match-property-value-ecmascript": "^1.2.0" + } + }, + "regjsgen": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", + "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", + "dev": true + }, + "regjsparser": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.4.tgz", + "integrity": "sha512-64O87/dPDgfk8/RQqC4gkZoGyyWFIEUTTh80CU6CWuK5vkCGyekIx+oKcEIYtP/RAxSQltCZHCNu/mdd7fqlJw==", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true + } + } + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "dev": true + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", + "dev": true + }, + "renderkid": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.3.tgz", + "integrity": "sha512-z8CLQp7EZBPCwCnncgf9C4XAi3WR0dv+uWu/PjIyhhAb5d6IJ/QZqlHFprHeKT+59//V6BNUsLbvN8+2LarxGA==", + "dev": true, + "requires": { + "css-select": "^1.1.0", + "dom-converter": "^0.2", + "htmlparser2": "^3.3.0", + "strip-ansi": "^3.0.0", + "utila": "^0.4.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "css-select": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "dev": true, + "requires": { + "boolbase": "~1.0.0", + "css-what": "2.1", + "domutils": "1.5.1", + "nth-check": "~1.0.1" + } + }, + "css-what": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz", + "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==", + "dev": true + }, + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + } + }, + "request-promise-core": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.3.tgz", + "integrity": "sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ==", + "dev": true, + "requires": { + "lodash": "^4.17.15" + } + }, + "request-promise-native": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.8.tgz", + "integrity": "sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ==", + "dev": true, + "requires": { + "request-promise-core": "1.1.3", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "resolve": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.15.0.tgz", + "integrity": "sha512-+hTmAldEGE80U2wJJDC1lebb5jWqvTYAfm3YZ1ckk1gBr0MnCqUKlwK1e+anaFljIl+F5tR5IoZcm4ZDA1zMQw==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "resolve-url-loader": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-3.1.1.tgz", + "integrity": "sha512-K1N5xUjj7v0l2j/3Sgs5b8CjrrgtC70SmdCuZiJ8tSyb5J+uk3FoeZ4b7yTnH6j7ngI+Bc5bldHJIa8hYdu2gQ==", + "dev": true, + "requires": { + "adjust-sourcemap-loader": "2.0.0", + "camelcase": "5.3.1", + "compose-function": "3.0.3", + "convert-source-map": "1.7.0", + "es6-iterator": "2.0.3", + "loader-utils": "1.2.3", + "postcss": "7.0.21", + "rework": "1.0.1", + "rework-visit": "1.0.0", + "source-map": "0.6.1" + }, + "dependencies": { + "emojis-list": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", + "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", + "dev": true + }, + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^2.0.0", + "json5": "^1.0.1" + } + }, + "postcss": { + "version": "7.0.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.21.tgz", + "integrity": "sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", + "dev": true + }, + "rework": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rework/-/rework-1.0.1.tgz", + "integrity": "sha1-MIBqhBNCtUUQqkEQhQzUhTQUSqc=", + "dev": true, + "requires": { + "convert-source-map": "^0.3.3", + "css": "^2.0.0" + }, + "dependencies": { + "convert-source-map": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-0.3.5.tgz", + "integrity": "sha1-8dgClQr33SYxof6+BZZVDIarMZA=", + "dev": true + } + } + }, + "rework-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rework-visit/-/rework-visit-1.0.0.tgz", + "integrity": "sha1-mUWygD8hni96ygCtuLyfZA+ELJo=", + "dev": true + }, + "rfdc": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.1.4.tgz", + "integrity": "sha512-5C9HXdzK8EAqN7JDif30jqsBzavB7wLpaubisuQIGHWf2gUXSpzy6ArX/+Da8RjFpagWsCn+pIgxTMAmKw9Zug==", + "dev": true + }, + "rgb-regex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", + "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=", + "dev": true + }, + "rgba-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", + "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=", + "dev": true + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "rsvp": { + "version": "4.8.5", + "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", + "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==", + "dev": true + }, + "run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true + }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "dev": true, + "requires": { + "aproba": "^1.1.1" + } + }, + "rxjs": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz", + "integrity": "sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "sane": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz", + "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", + "dev": true, + "requires": { + "@cnakazawa/watch": "^1.0.3", + "anymatch": "^2.0.0", + "capture-exit": "^2.0.0", + "exec-sh": "^0.3.2", + "execa": "^1.0.0", + "fb-watchman": "^2.0.0", + "micromatch": "^3.1.4", + "minimist": "^1.1.1", + "walker": "~1.0.5" + } + }, + "sanitize.css": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/sanitize.css/-/sanitize.css-10.0.0.tgz", + "integrity": "sha512-vTxrZz4dX5W86M6oVWVdOVe72ZiPs41Oi7Z6Km4W5Turyz28mrXSJhhEBZoRtzJWIv3833WKVwLSDWWkEfupMg==", + "dev": true + }, + "sass-loader": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-8.0.2.tgz", + "integrity": "sha512-7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ==", + "dev": true, + "requires": { + "clone-deep": "^4.0.1", + "loader-utils": "^1.2.3", + "neo-async": "^2.6.1", + "schema-utils": "^2.6.1", + "semver": "^6.3.0" + }, + "dependencies": { + "clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + } + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "saxes": { + "version": "3.1.11", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-3.1.11.tgz", + "integrity": "sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g==", + "dev": true, + "requires": { + "xmlchars": "^2.1.1" + } + }, + "scheduler": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", + "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", + "requires": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "schema-utils": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", + "integrity": "sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.4", + "ajv": "^6.12.2", + "ajv-keywords": "^3.4.1" + } + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "dev": true + }, + "selfsigned": { + "version": "1.10.7", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.7.tgz", + "integrity": "sha512-8M3wBCzeWIJnQfl43IKwOmC4H/RAp50S8DF60znzjW5GVqTcSe2vWclt7hmYVPkKPlHWOu5EaWOMZ2Y6W8ZXTA==", + "dev": true, + "requires": { + "node-forge": "0.9.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + } + } + }, + "serialize-javascript": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-2.1.2.tgz", + "integrity": "sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ==", + "dev": true + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + } + } + }, + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "dev": true + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shallow-clone": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-0.1.2.tgz", + "integrity": "sha1-WQnodLp3EG1zrEFM/sH/yofZcGA=", + "dev": true, + "requires": { + "is-extendable": "^0.1.1", + "kind-of": "^2.0.1", + "lazy-cache": "^0.2.3", + "mixin-object": "^2.0.1" + }, + "dependencies": { + "kind-of": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-2.0.1.tgz", + "integrity": "sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU=", + "dev": true, + "requires": { + "is-buffer": "^1.0.2" + } + }, + "lazy-cache": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-0.2.7.tgz", + "integrity": "sha1-f+3fLctu23fRHvHRF6tf/fCrG2U=", + "dev": true + } + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "shell-quote": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz", + "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==", + "dev": true + }, + "shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", + "dev": true + }, + "side-channel": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.2.tgz", + "integrity": "sha512-7rL9YlPHg7Ancea1S96Pa8/QWb4BtXL/TZvS6B8XFetGBeuhAsfmUspK6DokBeZ64+Kj9TCNRD/30pVz1BvQNA==", + "dev": true, + "requires": { + "es-abstract": "^1.17.0-next.1", + "object-inspect": "^1.7.0" + } + }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "dev": true + }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "dev": true, + "requires": { + "is-arrayish": "^0.3.1" + }, + "dependencies": { + "is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "dev": true + } + } + }, + "sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + }, + "slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + } + } + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + } + }, + "socket.io": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-2.3.0.tgz", + "integrity": "sha512-2A892lrj0GcgR/9Qk81EaY2gYhCBxurV0PfmmESO6p27QPrUK1J3zdns+5QPqvUYK2q657nSj0guoIil9+7eFg==", + "dev": true, + "requires": { + "debug": "~4.1.0", + "engine.io": "~3.4.0", + "has-binary2": "~1.0.2", + "socket.io-adapter": "~1.1.0", + "socket.io-client": "2.3.0", + "socket.io-parser": "~3.4.0" + } + }, + "socket.io-adapter": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-1.1.2.tgz", + "integrity": "sha512-WzZRUj1kUjrTIrUKpZLEzFZ1OLj5FwLlAFQs9kuZJzJi5DKdU7FsWc36SNmA8iDOtwBQyT8FkrriRM8vXLYz8g==", + "dev": true + }, + "socket.io-client": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.3.0.tgz", + "integrity": "sha512-cEQQf24gET3rfhxZ2jJ5xzAOo/xhZwK+mOqtGRg5IowZsMgwvHwnf/mCRapAAkadhM26y+iydgwsXGObBB5ZdA==", + "dev": true, + "requires": { + "backo2": "1.0.2", + "base64-arraybuffer": "0.1.5", + "component-bind": "1.0.0", + "component-emitter": "1.2.1", + "debug": "~4.1.0", + "engine.io-client": "~3.4.0", + "has-binary2": "~1.0.2", + "has-cors": "1.1.0", + "indexof": "0.0.1", + "object-component": "0.0.3", + "parseqs": "0.0.5", + "parseuri": "0.0.5", + "socket.io-parser": "~3.3.0", + "to-array": "0.1.4" + }, + "dependencies": { + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "socket.io-parser": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.0.tgz", + "integrity": "sha512-hczmV6bDgdaEbVqhAeVMM/jfUfzuEZHsQg6eOmLgJht6G3mPKMxYm75w2+qhAQZ+4X+1+ATZ+QFKeOZD5riHng==", + "dev": true, + "requires": { + "component-emitter": "1.2.1", + "debug": "~3.1.0", + "isarray": "2.0.1" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + } + } + } + } + }, + "socket.io-parser": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.4.1.tgz", + "integrity": "sha512-11hMgzL+WCLWf1uFtHSNvliI++tcRUWdoeYuwIl+Axvwy9z2gQM+7nJyN3STj1tLj5JyIUH8/gpDGxzAlDdi0A==", + "dev": true, + "requires": { + "component-emitter": "1.2.1", + "debug": "~4.1.0", + "isarray": "2.0.1" + }, + "dependencies": { + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "isarray": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", + "integrity": "sha1-o32U7ZzaLVmGXJ92/llu4fM4dB4=", + "dev": true + } + } + }, + "sockjs": { + "version": "0.3.19", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.19.tgz", + "integrity": "sha512-V48klKZl8T6MzatbLlzzRNhMepEys9Y4oGFpypBFFn1gLI/QQ9HtLLyWJNbPlwGLelOVOEijUbTTJeLLI59jLw==", + "dev": true, + "requires": { + "faye-websocket": "^0.10.0", + "uuid": "^3.0.1" + } + }, + "sockjs-client": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.4.0.tgz", + "integrity": "sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g==", + "dev": true, + "requires": { + "debug": "^3.2.5", + "eventsource": "^1.0.7", + "faye-websocket": "~0.11.1", + "inherits": "^2.0.3", + "json3": "^3.3.2", + "url-parse": "^1.4.3" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "faye-websocket": { + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", + "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + } + } + }, + "sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=", + "dev": true, + "requires": { + "is-plain-obj": "^1.0.0" + } + }, + "source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", + "dev": true + }, + "spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + } + }, + "spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "ssri": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-7.1.0.tgz", + "integrity": "sha512-77/WrDZUWocK0mvA5NTRQyveUf+wsrIc6vyrxpS8tVvYBcX215QbafrJR3KtkpskIzoFLqqNuuYQvxaMjXJ/0g==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1", + "minipass": "^3.1.1" + } + }, + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "dev": true + }, + "stack-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.2.tgz", + "integrity": "sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA==", + "dev": true + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true + }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", + "dev": true + }, + "stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "dev": true, + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", + "dev": true + }, + "streamroller": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-2.2.4.tgz", + "integrity": "sha512-OG79qm3AujAM9ImoqgWEY1xG4HX+Lw+yY6qZj9R1K2mhF5bEmQ849wvrb+4vt4jLMLzwXttJlQbOdPOQVRv7DQ==", + "dev": true, + "requires": { + "date-format": "^2.1.0", + "debug": "^4.1.1", + "fs-extra": "^8.1.0" + }, + "dependencies": { + "date-format": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-2.1.0.tgz", + "integrity": "sha512-bYQuGLeFxhkxNOF3rcMtiZxvCBAquGzZm6oWA1oZ0g2THUzivaRhv8uOhdr19LmoobSOLoIAxeUK2RdbM8IFTA==", + "dev": true + } + } + }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", + "dev": true + }, + "string-length": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", + "integrity": "sha1-1A27aGo6zpYMHP/KVivyxF+DY+0=", + "dev": true, + "requires": { + "astral-regex": "^1.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "string.prototype.matchall": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.2.tgz", + "integrity": "sha512-N/jp6O5fMf9os0JU3E72Qhf590RSRZU/ungsL/qJUYVTNv7hTG0P/dbPjxINVN9jpscu3nzYwKESU3P3RY5tOg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0", + "has-symbols": "^1.0.1", + "internal-slot": "^1.0.2", + "regexp.prototype.flags": "^1.3.0", + "side-channel": "^1.0.2" + } + }, + "string.prototype.trimend": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", + "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "string.prototype.trimleft": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.2.tgz", + "integrity": "sha512-gCA0tza1JBvqr3bfAIFJGqfdRTyPae82+KTnm3coDXkZN9wnuW3HjGgN386D7hfv5CHQYCI022/rJPVlqXyHSw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimstart": "^1.0.0" + } + }, + "string.prototype.trimright": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.2.tgz", + "integrity": "sha512-ZNRQ7sY3KroTaYjRS6EbNiiHrOkjihL9aQE/8gfQ4DtAC/aEBRHFJa44OmoWxGGqXuJlfKkZW4WcXErGr+9ZFg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5", + "string.prototype.trimend": "^1.0.0" + } + }, + "string.prototype.trimstart": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", + "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "stringify-object": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "dev": true, + "requires": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + }, + "dependencies": { + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true + } + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + } + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "strip-comments": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-1.0.2.tgz", + "integrity": "sha512-kL97alc47hoyIQSV165tTt9rG5dn4w1dNnBhOQ3bOU1Nc1hel09jnXANaHJ7vzHLd4Ju8kseDGzlev96pghLFw==", + "dev": true, + "requires": { + "babel-extract-comments": "^1.0.0", + "babel-plugin-transform-object-rest-spread": "^6.26.0" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "strip-json-comments": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.0.tgz", + "integrity": "sha512-e6/d0eBu7gHtdCqFt0xJr642LdToM5/cN4Qb9DbHjVx1CP5RyeM+zH7pbecEmDv/lBqb0QH+6Uqq75rxFPkM0w==", + "dev": true + }, + "style-loader": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.23.1.tgz", + "integrity": "sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "schema-utils": "^1.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "stylehacks": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", + "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "svg-parser": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz", + "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==", + "dev": true + }, + "svgo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", + "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "coa": "^2.0.2", + "css-select": "^2.0.0", + "css-select-base-adapter": "^0.1.1", + "css-tree": "1.0.0-alpha.37", + "csso": "^4.0.2", + "js-yaml": "^3.13.1", + "mkdirp": "~0.5.1", + "object.values": "^1.1.0", + "sax": "~1.2.4", + "stable": "^0.1.8", + "unquote": "~1.1.1", + "util.promisify": "~1.0.0" + } + }, + "symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, + "table": { + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + }, + "dependencies": { + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + } + } + }, + "tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "dev": true + }, + "terser": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.7.0.tgz", + "integrity": "sha512-Lfb0RiZcjRDXCC3OSHJpEkxJ9Qeqs6mp2v4jf2MHfy8vGERmVDuvjXdd/EnP5Deme5F2yBRBymKmKHCBg2echw==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "terser-webpack-plugin": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-2.3.5.tgz", + "integrity": "sha512-WlWksUoq+E4+JlJ+h+U+QUzXpcsMSSNXkDy9lBVkSqDn1w23Gg29L/ary9GeJVYCGiNJJX7LnVc4bwL1N3/g1w==", + "dev": true, + "requires": { + "cacache": "^13.0.1", + "find-cache-dir": "^3.2.0", + "jest-worker": "^25.1.0", + "p-limit": "^2.2.2", + "schema-utils": "^2.6.4", + "serialize-javascript": "^2.1.2", + "source-map": "^0.6.1", + "terser": "^4.4.3", + "webpack-sources": "^1.4.3" + }, + "dependencies": { + "find-cache-dir": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", + "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "jest-worker": { + "version": "25.5.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-25.5.0.tgz", + "integrity": "sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw==", + "dev": true, + "requires": { + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "test-exclude": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.3.tgz", + "integrity": "sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g==", + "dev": true, + "requires": { + "glob": "^7.1.3", + "minimatch": "^3.0.4", + "read-pkg-up": "^4.0.0", + "require-main-filename": "^2.0.0" + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "throat": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz", + "integrity": "sha1-iQN8vJLFarGJJua6TLsgDhVnKmo=", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "timers-browserify": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz", + "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==", + "dev": true, + "requires": { + "setimmediate": "^1.0.4" + } + }, + "timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", + "dev": true + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "tmpl": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.4.tgz", + "integrity": "sha1-I2QN17QtAEM5ERQIIOXPRA5SHdE=", + "dev": true + }, + "to-array": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", + "integrity": "sha1-F+bBH3PdTz10zaek/zI46a2b+JA=", + "dev": true + }, + "to-arraybuffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", + "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "dev": true + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "ts-pnp": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.1.6.tgz", + "integrity": "sha512-CrG5GqAAzMT7144Cl+UIFP7mz/iIhiy+xQ6GGcnjTezhALT02uPMRw7tgDSESgB5MsfKt55+GPWw4ir1kVtMIQ==", + "dev": true + }, + "tslib": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", + "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==", + "dev": true + }, + "tsutils": { + "version": "3.17.1", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz", + "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + }, + "tty-browserify": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", + "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true + }, + "type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", + "dev": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "typescript": { + "version": "3.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.3.tgz", + "integrity": "sha512-D/wqnB2xzNFIcoBG9FG8cXRDjiqSTbG2wd8DMZeQyJlP1vfTkIxH4GKveWaEBYySKIg+USu+E+EDIR47SqnaMQ==", + "dev": true + }, + "ua-parser-js": { + "version": "0.7.21", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.21.tgz", + "integrity": "sha512-+O8/qh/Qj8CgC6eYBVBykMrNtp5Gebn4dlGD/kKXVkJNDwyrAwSIqwz8CDf+tsAIWVycKcku6gIXJ0qwx/ZXaQ==", + "dev": true + }, + "unicode-canonical-property-names-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", + "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", + "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^1.0.4", + "unicode-property-aliases-ecmascript": "^1.0.4" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", + "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", + "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", + "dev": true + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", + "dev": true + }, + "uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", + "dev": true + }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "unquote": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", + "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + } + } + }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + }, + "url-loader": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-2.3.0.tgz", + "integrity": "sha512-goSdg8VY+7nPZKUEChZSEtW5gjbS66USIGCeSJ1OVOJ7Yfuh/36YxCwMi5HVEJh6mqUYOoy3NJ0vlOMrWsSHog==", + "dev": true, + "requires": { + "loader-utils": "^1.2.3", + "mime": "^2.4.4", + "schema-utils": "^2.5.0" + } + }, + "url-parse": { + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.7.tgz", + "integrity": "sha512-d3uaVyzDB9tQoSXFvuSUNFibTd9zxd2bkVrDRvF5TmvWWQwqE4lgYJ5m+x1DbecWkw+LK4RNl2CU1hHuOKPVlg==", + "dev": true, + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "2.0.1" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "util.promisify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", + "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.2", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.0" + } + }, + "utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + }, + "v8-compile-cache": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz", + "integrity": "sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ==", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true + }, + "vendors": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", + "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "dev": true + }, + "void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", + "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", + "dev": true + }, + "w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "dev": true, + "requires": { + "browser-process-hrtime": "^1.0.0" + } + }, + "w3c-xmlserializer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz", + "integrity": "sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg==", + "dev": true, + "requires": { + "domexception": "^1.0.1", + "webidl-conversions": "^4.0.2", + "xml-name-validator": "^3.0.0" + } + }, + "walker": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", + "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", + "dev": true, + "requires": { + "makeerror": "1.0.x" + } + }, + "watchpack": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.2.tgz", + "integrity": "sha512-ymVbbQP40MFTp+cNMvpyBpBtygHnPzPkHqoIwRRj/0B8KhqQwV8LaKjtbaxF2lK4vl8zN9wCxS46IFCU5K4W0g==", + "dev": true, + "requires": { + "chokidar": "^3.4.0", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0", + "watchpack-chokidar2": "^2.0.0" + } + }, + "watchpack-chokidar2": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz", + "integrity": "sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA==", + "dev": true, + "optional": true, + "requires": { + "chokidar": "^2.1.8" + }, + "dependencies": { + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true, + "optional": true + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "optional": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "optional": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "optional": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "optional": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "optional": true + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "optional": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "requires": { + "minimalistic-assert": "^1.0.0" + } + }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, + "webpack": { + "version": "4.42.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.42.0.tgz", + "integrity": "sha512-EzJRHvwQyBiYrYqhyjW9AqM90dE4+s1/XtCfn7uWg6cS72zH+2VPFAlsnW0+W0cDi0XRjNKUMoJtpSi50+Ph6w==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.8.5", + "@webassemblyjs/helper-module-context": "1.8.5", + "@webassemblyjs/wasm-edit": "1.8.5", + "@webassemblyjs/wasm-parser": "1.8.5", + "acorn": "^6.2.1", + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^4.1.0", + "eslint-scope": "^4.0.3", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^2.4.0", + "loader-utils": "^1.2.3", + "memory-fs": "^0.4.1", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.1", + "neo-async": "^2.6.1", + "node-libs-browser": "^2.2.1", + "schema-utils": "^1.0.0", + "tapable": "^1.1.3", + "terser-webpack-plugin": "^1.4.3", + "watchpack": "^1.6.0", + "webpack-sources": "^1.4.1" + }, + "dependencies": { + "acorn": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", + "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", + "dev": true + }, + "cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "dev": true, + "requires": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "serialize-javascript": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-3.1.0.tgz", + "integrity": "sha512-JIJT1DGiWmIKhzRsG91aS6Ze4sFUrYbltlkg2onR5OrnNM02Kl/hnY/T4FN2omvyeBbQmMJv+K4cPOpGzOTFBg==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "ssri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "terser-webpack-plugin": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.4.tgz", + "integrity": "sha512-U4mACBHIegmfoEe5fdongHESNJWqsGU+W0S/9+BmYGVQDw1+c2Ow05TpMhxjPK1sRb7cuYq1BPl1e5YHJMTCqA==", + "dev": true, + "requires": { + "cacache": "^12.0.2", + "find-cache-dir": "^2.1.0", + "is-wsl": "^1.1.0", + "schema-utils": "^1.0.0", + "serialize-javascript": "^3.1.0", + "source-map": "^0.6.1", + "terser": "^4.1.2", + "webpack-sources": "^1.4.0", + "worker-farm": "^1.7.0" + } + } + } + }, + "webpack-dev-middleware": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz", + "integrity": "sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw==", + "dev": true, + "requires": { + "memory-fs": "^0.4.1", + "mime": "^2.4.4", + "mkdirp": "^0.5.1", + "range-parser": "^1.2.1", + "webpack-log": "^2.0.0" + } + }, + "webpack-dev-server": { + "version": "3.10.3", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.10.3.tgz", + "integrity": "sha512-e4nWev8YzEVNdOMcNzNeCN947sWJNd43E5XvsJzbAL08kGc2frm1tQ32hTJslRS+H65LCb/AaUCYU7fjHCpDeQ==", + "dev": true, + "requires": { + "ansi-html": "0.0.7", + "bonjour": "^3.5.0", + "chokidar": "^2.1.8", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "debug": "^4.1.1", + "del": "^4.1.1", + "express": "^4.17.1", + "html-entities": "^1.2.1", + "http-proxy-middleware": "0.19.1", + "import-local": "^2.0.0", + "internal-ip": "^4.3.0", + "ip": "^1.1.5", + "is-absolute-url": "^3.0.3", + "killable": "^1.0.1", + "loglevel": "^1.6.6", + "opn": "^5.5.0", + "p-retry": "^3.0.1", + "portfinder": "^1.0.25", + "schema-utils": "^1.0.0", + "selfsigned": "^1.10.7", + "semver": "^6.3.0", + "serve-index": "^1.9.1", + "sockjs": "0.3.19", + "sockjs-client": "1.4.0", + "spdy": "^4.0.1", + "strip-ansi": "^3.0.1", + "supports-color": "^6.1.0", + "url": "^0.11.0", + "webpack-dev-middleware": "^3.7.2", + "webpack-log": "^2.0.0", + "ws": "^6.2.1", + "yargs": "12.0.5" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-absolute-url": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", + "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "schema-utils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", + "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-errors": "^1.0.0", + "ajv-keywords": "^3.1.0" + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + }, + "ws": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz", + "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + }, + "yargs": { + "version": "12.0.5", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", + "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^11.1.1" + } + }, + "yargs-parser": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", + "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "webpack-log": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", + "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", + "dev": true, + "requires": { + "ansi-colors": "^3.0.0", + "uuid": "^3.3.2" + } + }, + "webpack-manifest-plugin": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/webpack-manifest-plugin/-/webpack-manifest-plugin-2.2.0.tgz", + "integrity": "sha512-9S6YyKKKh/Oz/eryM1RyLVDVmy3NSPV0JXMRhZ18fJsq+AwGxUY34X54VNwkzYcEmEkDwNxuEOboCZEebJXBAQ==", + "dev": true, + "requires": { + "fs-extra": "^7.0.0", + "lodash": ">=3.5 <5", + "object.entries": "^1.1.0", + "tapable": "^1.0.0" + }, + "dependencies": { + "fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + } + } + }, + "webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dev": true, + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "requires": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true + }, + "whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dev": true, + "requires": { + "iconv-lite": "0.4.24" + } + }, + "whatwg-fetch": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz", + "integrity": "sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q==", + "dev": true + }, + "whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true + }, + "whatwg-url": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz", + "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "workbox-background-sync": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-background-sync/-/workbox-background-sync-4.3.1.tgz", + "integrity": "sha512-1uFkvU8JXi7L7fCHVBEEnc3asPpiAL33kO495UMcD5+arew9IbKW2rV5lpzhoWcm/qhGB89YfO4PmB/0hQwPRg==", + "dev": true, + "requires": { + "workbox-core": "^4.3.1" + } + }, + "workbox-broadcast-update": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-broadcast-update/-/workbox-broadcast-update-4.3.1.tgz", + "integrity": "sha512-MTSfgzIljpKLTBPROo4IpKjESD86pPFlZwlvVG32Kb70hW+aob4Jxpblud8EhNb1/L5m43DUM4q7C+W6eQMMbA==", + "dev": true, + "requires": { + "workbox-core": "^4.3.1" + } + }, + "workbox-build": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-4.3.1.tgz", + "integrity": "sha512-UHdwrN3FrDvicM3AqJS/J07X0KXj67R8Cg0waq1MKEOqzo89ap6zh6LmaLnRAjpB+bDIz+7OlPye9iii9KBnxw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.3.4", + "@hapi/joi": "^15.0.0", + "common-tags": "^1.8.0", + "fs-extra": "^4.0.2", + "glob": "^7.1.3", + "lodash.template": "^4.4.0", + "pretty-bytes": "^5.1.0", + "stringify-object": "^3.3.0", + "strip-comments": "^1.0.2", + "workbox-background-sync": "^4.3.1", + "workbox-broadcast-update": "^4.3.1", + "workbox-cacheable-response": "^4.3.1", + "workbox-core": "^4.3.1", + "workbox-expiration": "^4.3.1", + "workbox-google-analytics": "^4.3.1", + "workbox-navigation-preload": "^4.3.1", + "workbox-precaching": "^4.3.1", + "workbox-range-requests": "^4.3.1", + "workbox-routing": "^4.3.1", + "workbox-strategies": "^4.3.1", + "workbox-streams": "^4.3.1", + "workbox-sw": "^4.3.1", + "workbox-window": "^4.3.1" + }, + "dependencies": { + "fs-extra": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", + "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + } + } + }, + "workbox-cacheable-response": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-cacheable-response/-/workbox-cacheable-response-4.3.1.tgz", + "integrity": "sha512-Rp5qlzm6z8IOvnQNkCdO9qrDgDpoPNguovs0H8C+wswLuPgSzSp9p2afb5maUt9R1uTIwOXrVQMmPfPypv+npw==", + "dev": true, + "requires": { + "workbox-core": "^4.3.1" + } + }, + "workbox-core": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-core/-/workbox-core-4.3.1.tgz", + "integrity": "sha512-I3C9jlLmMKPxAC1t0ExCq+QoAMd0vAAHULEgRZ7kieCdUd919n53WC0AfvokHNwqRhGn+tIIj7vcb5duCjs2Kg==", + "dev": true + }, + "workbox-expiration": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-expiration/-/workbox-expiration-4.3.1.tgz", + "integrity": "sha512-vsJLhgQsQouv9m0rpbXubT5jw0jMQdjpkum0uT+d9tTwhXcEZks7qLfQ9dGSaufTD2eimxbUOJfWLbNQpIDMPw==", + "dev": true, + "requires": { + "workbox-core": "^4.3.1" + } + }, + "workbox-google-analytics": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-google-analytics/-/workbox-google-analytics-4.3.1.tgz", + "integrity": "sha512-xzCjAoKuOb55CBSwQrbyWBKqp35yg1vw9ohIlU2wTy06ZrYfJ8rKochb1MSGlnoBfXGWss3UPzxR5QL5guIFdg==", + "dev": true, + "requires": { + "workbox-background-sync": "^4.3.1", + "workbox-core": "^4.3.1", + "workbox-routing": "^4.3.1", + "workbox-strategies": "^4.3.1" + } + }, + "workbox-navigation-preload": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-navigation-preload/-/workbox-navigation-preload-4.3.1.tgz", + "integrity": "sha512-K076n3oFHYp16/C+F8CwrRqD25GitA6Rkd6+qAmLmMv1QHPI2jfDwYqrytOfKfYq42bYtW8Pr21ejZX7GvALOw==", + "dev": true, + "requires": { + "workbox-core": "^4.3.1" + } + }, + "workbox-precaching": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-precaching/-/workbox-precaching-4.3.1.tgz", + "integrity": "sha512-piSg/2csPoIi/vPpp48t1q5JLYjMkmg5gsXBQkh/QYapCdVwwmKlU9mHdmy52KsDGIjVaqEUMFvEzn2LRaigqQ==", + "dev": true, + "requires": { + "workbox-core": "^4.3.1" + } + }, + "workbox-range-requests": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-range-requests/-/workbox-range-requests-4.3.1.tgz", + "integrity": "sha512-S+HhL9+iTFypJZ/yQSl/x2Bf5pWnbXdd3j57xnb0V60FW1LVn9LRZkPtneODklzYuFZv7qK6riZ5BNyc0R0jZA==", + "dev": true, + "requires": { + "workbox-core": "^4.3.1" + } + }, + "workbox-routing": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-routing/-/workbox-routing-4.3.1.tgz", + "integrity": "sha512-FkbtrODA4Imsi0p7TW9u9MXuQ5P4pVs1sWHK4dJMMChVROsbEltuE79fBoIk/BCztvOJ7yUpErMKa4z3uQLX+g==", + "dev": true, + "requires": { + "workbox-core": "^4.3.1" + } + }, + "workbox-strategies": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-strategies/-/workbox-strategies-4.3.1.tgz", + "integrity": "sha512-F/+E57BmVG8dX6dCCopBlkDvvhg/zj6VDs0PigYwSN23L8hseSRwljrceU2WzTvk/+BSYICsWmRq5qHS2UYzhw==", + "dev": true, + "requires": { + "workbox-core": "^4.3.1" + } + }, + "workbox-streams": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-streams/-/workbox-streams-4.3.1.tgz", + "integrity": "sha512-4Kisis1f/y0ihf4l3u/+ndMkJkIT4/6UOacU3A4BwZSAC9pQ9vSvJpIi/WFGQRH/uPXvuVjF5c2RfIPQFSS2uA==", + "dev": true, + "requires": { + "workbox-core": "^4.3.1" + } + }, + "workbox-sw": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-4.3.1.tgz", + "integrity": "sha512-0jXdusCL2uC5gM3yYFT6QMBzKfBr2XTk0g5TPAV4y8IZDyVNDyj1a8uSXy3/XrvkVTmQvLN4O5k3JawGReXr9w==", + "dev": true + }, + "workbox-webpack-plugin": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-webpack-plugin/-/workbox-webpack-plugin-4.3.1.tgz", + "integrity": "sha512-gJ9jd8Mb8wHLbRz9ZvGN57IAmknOipD3W4XNE/Lk/4lqs5Htw4WOQgakQy/o/4CoXQlMCYldaqUg+EJ35l9MEQ==", + "dev": true, + "requires": { + "@babel/runtime": "^7.0.0", + "json-stable-stringify": "^1.0.1", + "workbox-build": "^4.3.1" + } + }, + "workbox-window": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/workbox-window/-/workbox-window-4.3.1.tgz", + "integrity": "sha512-C5gWKh6I58w3GeSc0wp2Ne+rqVw8qwcmZnQGpjiek8A2wpbxSJb1FdCoQVO+jDJs35bFgo/WETgl1fqgsxN0Hg==", + "dev": true, + "requires": { + "workbox-core": "^4.3.1" + } + }, + "worker-farm": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", + "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", + "dev": true, + "requires": { + "errno": "~0.1.7" + } + }, + "worker-rpc": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/worker-rpc/-/worker-rpc-0.1.1.tgz", + "integrity": "sha512-P1WjMrUB3qgJNI9jfmpZ/htmBEjFh//6l/5y8SD9hg1Ef5zTTVVoRjTrTEzPrNBQvmhMxkoTsjOXN10GWU7aCg==", + "dev": true, + "requires": { + "microevent.ts": "~0.1.1" + } + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "dependencies": { + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "dev": true, + "requires": { + "mkdirp": "^0.5.1" + } + }, + "write-file-atomic": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.1.tgz", + "integrity": "sha512-TGHFeZEZMnv+gBFRfjAcxL5bPHrsGKtnb4qsFAws7/vlh+QfwAaySIw4AXP9ZskTTh5GWu3FLuJhsWVdiJPGvg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "ws": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.2.tgz", + "integrity": "sha512-jaHFD6PFv6UgoIVda6qZllptQsMlDEJkTQcybzzXDYM1XO9Y8em691FGMPmM46WGyLU4z9KMgQN+qrux/nhlHA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + }, + "xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true + }, + "xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, + "xmlhttprequest-ssl": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz", + "integrity": "sha1-wodrBhaKrcQOV9l+gRkayPQ5iz4=", + "dev": true + }, + "xregexp": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.3.0.tgz", + "integrity": "sha512-7jXDIFXh5yJ/orPn4SXjuVrWWoi4Cr8jfV1eHv9CixKSbU+jY4mxfrBwAuDvupPNKpMUY+FeIqsVw/JLT9+B8g==", + "dev": true, + "requires": { + "@babel/runtime-corejs3": "^7.8.3" + } + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "yaml": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.0.tgz", + "integrity": "sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==", + "dev": true + }, + "yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "dev": true, + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + }, + "dependencies": { + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + } + } + }, + "yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "yeast": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", + "integrity": "sha1-AI4G2AlDIMNy28L47XagymyKxBk=", + "dev": true + } + } +} diff --git a/WarehouseDemo/ClientApp/package.json b/WarehouseDemo/ClientApp/package.json new file mode 100644 index 0000000..ba2dcef --- /dev/null +++ b/WarehouseDemo/ClientApp/package.json @@ -0,0 +1,50 @@ +{ + "name": "warehousedemo", + "version": "0.1.0", + "private": true, + "dependencies": { + "react": "16.13.1", + "react-dom": "^16.13.1" + }, + "devDependencies": { + "@types/jasmine": "^3.5.10", + "@types/react": "^16.9.35", + "@types/react-dom": "^16.9.8", + "ajv": "^6.9.1", + "cross-env": "^5.2.0", + "eslint": "^6.8.0", + "eslint-config-react-app": "^5.2.0", + "eslint-plugin-import": "^2.20.1", + "eslint-plugin-jsx-a11y": "^6.2.3", + "eslint-plugin-react": "^7.18.3", + "jasmine-core": "^3.5.0", + "karma": "^5.0.9", + "karma-chrome-launcher": "^3.1.0", + "karma-jasmine": "^3.3.1", + "react-scripts": "^3.4.1", + "rimraf": "^2.6.2", + "typescript": "^3.9.3" + }, + "eslintConfig": { + "extends": "react-app" + }, + "scripts": { + "start": "rimraf ./build && react-scripts start", + "build": "react-scripts build", + "test": "cross-env CI=true react-scripts test --env=jsdom", + "eject": "react-scripts eject", + "lint": "eslint ./src/" + }, + "browserslist": { + "production": [ + ">0.2%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] + } +} diff --git a/WarehouseDemo/ClientApp/public/index.html b/WarehouseDemo/ClientApp/public/index.html new file mode 100644 index 0000000..144f458 --- /dev/null +++ b/WarehouseDemo/ClientApp/public/index.html @@ -0,0 +1,17 @@ + + + + + + + + Warehouse demo + + + +
+ + diff --git a/WarehouseDemo/ClientApp/src/App.css b/WarehouseDemo/ClientApp/src/App.css new file mode 100644 index 0000000..e69de29 diff --git a/WarehouseDemo/ClientApp/src/App.tsx b/WarehouseDemo/ClientApp/src/App.tsx new file mode 100644 index 0000000..30dda1f --- /dev/null +++ b/WarehouseDemo/ClientApp/src/App.tsx @@ -0,0 +1,11 @@ +import React from 'react'; +import './App.css'; + +// Return component from this function for rendering +export function App() { + return ( +
Warehouse demo
+ ); +} + +export default App; \ No newline at end of file diff --git a/WarehouseDemo/ClientApp/src/components/Icons/.gitkeep b/WarehouseDemo/ClientApp/src/components/Icons/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/WarehouseDemo/ClientApp/src/components/Images/.gitkeep b/WarehouseDemo/ClientApp/src/components/Images/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/WarehouseDemo/ClientApp/src/index.css b/WarehouseDemo/ClientApp/src/index.css new file mode 100644 index 0000000..e69de29 diff --git a/WarehouseDemo/ClientApp/src/index.tsx b/WarehouseDemo/ClientApp/src/index.tsx new file mode 100644 index 0000000..d1b1b9e --- /dev/null +++ b/WarehouseDemo/ClientApp/src/index.tsx @@ -0,0 +1,10 @@ +import ReactDOM from 'react-dom'; +import React from 'react'; +import './index.css'; +import App from './App'; + +// Element to which the app component will be appended +const rootElement = document.getElementById('root'); + +// Render app component +ReactDOM.render(, rootElement); \ No newline at end of file diff --git a/WarehouseDemo/ClientApp/test/App.test.tsx b/WarehouseDemo/ClientApp/test/App.test.tsx new file mode 100644 index 0000000..6eff4a6 --- /dev/null +++ b/WarehouseDemo/ClientApp/test/App.test.tsx @@ -0,0 +1,9 @@ +import React from 'react'; +import App from '../src/App'; +import ReactDOM from 'react-dom'; + +// Automated test cases here +it('renders learn react link', () => { + ReactDOM.render(, document.getElementById('root')); + expect(/warehouse demo/i).toBeDefined(); +}); \ No newline at end of file diff --git a/WarehouseDemo/ClientApp/tsconfig.json b/WarehouseDemo/ClientApp/tsconfig.json new file mode 100644 index 0000000..171592f --- /dev/null +++ b/WarehouseDemo/ClientApp/tsconfig.json @@ -0,0 +1,25 @@ +{ + "compilerOptions": { + "target": "es5", + "lib": [ + "dom", + "dom.iterable", + "esnext" + ], + "allowJs": true, + "skipLibCheck": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "strict": false, + "forceConsistentCasingInFileNames": true, + "module": "esnext", + "moduleResolution": "node", + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react" + }, + "include": [ + "src" + ] +} diff --git a/WarehouseDemo/Controllers/.gitkeep b/WarehouseDemo/Controllers/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/WarehouseDemo/Models/.gitkeep b/WarehouseDemo/Models/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/WarehouseDemo/Program.cs b/WarehouseDemo/Program.cs new file mode 100644 index 0000000..1b908c3 --- /dev/null +++ b/WarehouseDemo/Program.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Hosting; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.Hosting; +using Microsoft.Extensions.Logging; + +namespace WarehouseDemo +{ + public class Program + { + public static void Main(string[] args) + { + CreateHostBuilder(args).Build().Run(); + } + + public static IHostBuilder CreateHostBuilder(string[] args) => + Host.CreateDefaultBuilder(args) + .ConfigureWebHostDefaults(webBuilder => + { + webBuilder.UseStartup(); + }); + } +} diff --git a/WarehouseDemo/Properties/launchSettings.json b/WarehouseDemo/Properties/launchSettings.json new file mode 100644 index 0000000..41ff5dd --- /dev/null +++ b/WarehouseDemo/Properties/launchSettings.json @@ -0,0 +1,27 @@ +{ + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:48756", + "sslPort": 44358 + } + }, + "profiles": { + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "WarehouseDemo": { + "commandName": "Project", + "launchBrowser": true, + "applicationUrl": "https://localhost:5001;http://localhost:5000", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} diff --git a/WarehouseDemo/Services/.gitkeep b/WarehouseDemo/Services/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/WarehouseDemo/Startup.cs b/WarehouseDemo/Startup.cs new file mode 100644 index 0000000..d86cf39 --- /dev/null +++ b/WarehouseDemo/Startup.cs @@ -0,0 +1,71 @@ +using Microsoft.AspNetCore.Builder; +using Microsoft.AspNetCore.Hosting; +using Microsoft.AspNetCore.HttpsPolicy; +using Microsoft.AspNetCore.SpaServices.ReactDevelopmentServer; +using Microsoft.Extensions.Configuration; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; + +namespace WarehouseDemo +{ + public class Startup + { + public Startup(IConfiguration configuration) + { + Configuration = configuration; + } + + public IConfiguration Configuration { get; } + + // This method gets called by the runtime. Use this method to add services to the container. + public void ConfigureServices(IServiceCollection services) + { + + services.AddControllersWithViews(); + + // In production, the React files will be served from this directory + services.AddSpaStaticFiles(configuration => + { + configuration.RootPath = "ClientApp/build"; + }); + } + + // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. + public void Configure(IApplicationBuilder app, IWebHostEnvironment env) + { + if (env.IsDevelopment()) + { + app.UseDeveloperExceptionPage(); + } + else + { + app.UseExceptionHandler("/Error"); + // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. + app.UseHsts(); + } + + app.UseHttpsRedirection(); + app.UseStaticFiles(); + app.UseSpaStaticFiles(); + + app.UseRouting(); + + app.UseEndpoints(endpoints => + { + endpoints.MapControllerRoute( + name: "default", + pattern: "{controller}/{action=Index}/{id?}"); + }); + + app.UseSpa(spa => + { + spa.Options.SourcePath = "ClientApp"; + + if (env.IsDevelopment()) + { + spa.UseReactDevelopmentServer(npmScript: "start"); + } + }); + } + } +} diff --git a/WarehouseDemo/WarehouseDemo.csproj b/WarehouseDemo/WarehouseDemo.csproj new file mode 100644 index 0000000..e469ddd --- /dev/null +++ b/WarehouseDemo/WarehouseDemo.csproj @@ -0,0 +1,52 @@ + + + + Microsoft.PowerBI.WarehouseDemo + Microsoft.PowerBI.WarehouseDemo + netcoreapp5.0 + true + Latest + false + ClientApp\ + $(DefaultItemExcludes);$(SpaRoot)node_modules\** + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + %(DistFiles.Identity) + PreserveNewest + true + + + + + diff --git a/WarehouseDemo/appsettings.Development.json b/WarehouseDemo/appsettings.Development.json new file mode 100644 index 0000000..8983e0f --- /dev/null +++ b/WarehouseDemo/appsettings.Development.json @@ -0,0 +1,9 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft": "Warning", + "Microsoft.Hosting.Lifetime": "Information" + } + } +} diff --git a/WarehouseDemo/appsettings.json b/WarehouseDemo/appsettings.json new file mode 100644 index 0000000..a778a45 --- /dev/null +++ b/WarehouseDemo/appsettings.json @@ -0,0 +1,10 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft": "Warning", + "Microsoft.Hosting.Lifetime": "Information" + } + }, + "AllowedHosts": "*" +} From be6937ecebacd2003d87f3d8a1f2328559f9a971 Mon Sep 17 00:00:00 2001 From: Anant Singh Date: Thu, 25 Jun 2020 13:22:14 +0000 Subject: [PATCH 03/21] Merged PR 93263: Add landing and login pages ## Licenses |Package| License | |:------|:------:| |bootstrap|MIT | |jquery|MIT| |node-sass|MIT| |@popperjs/core|MIT| |@types/bootstrap|MIT| |@types/jquery|MIT| ## General |Check| Yes/No/NA | |:------|:------:| | Are the build scripts passing? | NA | | Are open errors/warning details shared with the reviewer? | NA | | Are there 0 violations to applicable coding guidelines? | Yes | | Does the app have a consistent exception management setup? | NA | | Does the source code contain any commented code? | No | | Is testing performed and results captured in ADO? | Yes | | Are all the external packages/libraries are installed from an online package manager? | Yes | ## Frontend | Check | Yes/No/NA | |:------|:------:| | Is the client UI responsive and scales well for different resolutions? | Yes | | Are the user inputs validated in the code? | Yes | | Have you used the coding standards? | Yes | | The DOM is not accessed multiple times | Yes | | Does the code have 0 HTML warnings and errors ([HTMLValidator](https://www.freeformatter.com/html-validator.html))? | Yes | | Does the code have 0 CSS warnings and errors ([CSSLint](http://csslint.net/))? | No | | Does the code have 0 ESLint warnings and errors ([ESLint](https://eslint.org/))? | No | | Does the UI updates have 0 Accessibilties issues? | Yes | | Are the test cases executed on Chromium Edge? | Yes | | When key value pairs in object have same name, only key is used instead of the pair| Yes | | There are trailing commas when there are multiple properties in an object| Yes | | Non static HTML elements are not appended | Yes | | Async functions return the promise and not return the result| Yes | Related work items: #377285, #377317, #381850, #382282 --- .gitignore | 1 + WarehouseDemo/ClientApp/.eslintrc.js | 37 + WarehouseDemo/ClientApp/.prettierrc.js | 10 + WarehouseDemo/ClientApp/package-lock.json | 981 +++++++++++++++++- WarehouseDemo/ClientApp/package.json | 16 +- WarehouseDemo/ClientApp/public/index.html | 28 +- WarehouseDemo/ClientApp/src/App.css | 0 WarehouseDemo/ClientApp/src/App.scss | 20 + WarehouseDemo/ClientApp/src/App.tsx | 67 +- .../ClientApp/src/assets/Icons/lock.svg | 1 + .../ClientApp/src/assets/Icons/user.svg | 1 + .../ClientApp/src/assets/Images/app-name.svg | 1 + .../ClientApp/src/components/Card/Card.scss | 43 + .../ClientApp/src/components/Card/Card.tsx | 38 + .../ClientApp/src/components/Home/Home.scss | 7 + .../ClientApp/src/components/Home/Home.tsx | 31 + .../ClientApp/src/components/Icons/.gitkeep | 0 .../ClientApp/src/components/Images/.gitkeep | 0 .../ClientApp/src/components/Login/Login.scss | 36 + .../ClientApp/src/components/Login/Login.tsx | 62 ++ WarehouseDemo/ClientApp/src/index.css | 0 WarehouseDemo/ClientApp/src/index.scss | 3 + WarehouseDemo/ClientApp/src/index.tsx | 6 +- 23 files changed, 1337 insertions(+), 52 deletions(-) create mode 100644 WarehouseDemo/ClientApp/.eslintrc.js create mode 100644 WarehouseDemo/ClientApp/.prettierrc.js delete mode 100644 WarehouseDemo/ClientApp/src/App.css create mode 100644 WarehouseDemo/ClientApp/src/App.scss create mode 100644 WarehouseDemo/ClientApp/src/assets/Icons/lock.svg create mode 100644 WarehouseDemo/ClientApp/src/assets/Icons/user.svg create mode 100644 WarehouseDemo/ClientApp/src/assets/Images/app-name.svg create mode 100644 WarehouseDemo/ClientApp/src/components/Card/Card.scss create mode 100644 WarehouseDemo/ClientApp/src/components/Card/Card.tsx create mode 100644 WarehouseDemo/ClientApp/src/components/Home/Home.scss create mode 100644 WarehouseDemo/ClientApp/src/components/Home/Home.tsx delete mode 100644 WarehouseDemo/ClientApp/src/components/Icons/.gitkeep delete mode 100644 WarehouseDemo/ClientApp/src/components/Images/.gitkeep create mode 100644 WarehouseDemo/ClientApp/src/components/Login/Login.scss create mode 100644 WarehouseDemo/ClientApp/src/components/Login/Login.tsx delete mode 100644 WarehouseDemo/ClientApp/src/index.css create mode 100644 WarehouseDemo/ClientApp/src/index.scss diff --git a/.gitignore b/.gitignore index 9be1ae8..02e5606 100644 --- a/.gitignore +++ b/.gitignore @@ -20,6 +20,7 @@ npm-debug.log client-react/components/*.js client-react.test/build !client-react.test/build/client-react/styles/ +WarehouseDemo/ClientApp/src/react-app-env.d.ts # ops ops/hosts diff --git a/WarehouseDemo/ClientApp/.eslintrc.js b/WarehouseDemo/ClientApp/.eslintrc.js new file mode 100644 index 0000000..21496e8 --- /dev/null +++ b/WarehouseDemo/ClientApp/.eslintrc.js @@ -0,0 +1,37 @@ +module.exports = { + parser: "@typescript-eslint/parser", // Specifies the ESLint parser + parserOptions: { + ecmaVersion: 2020, // Allows for the parsing of modern ECMAScript features + sourceType: "module", // Allows for the use of imports + ecmaFeatures: { + jsx: true // Allows for the parsing of JSX + }, + project: './tsconfig.json', + }, + plugins: ["@typescript-eslint", "prettier"], + settings: { + react: { + version: "detect" // Tells eslint-plugin-react to automatically detect the version of React to use + } + }, + extends: [ + "eslint:recommended", + "plugin:react/recommended", // Uses the recommended rules from @eslint-plugin-react + "plugin:@typescript-eslint/recommended", // Uses the recommended rules from @typescript-eslint/eslint-plugin + "plugin:react-hooks/recommended", + "plugin:prettier/recommended" + ], + rules: { + // Place to specify ESLint rules. Can be used to overwrite rules specified from the extended configs + // e.g. "@typescript-eslint/explicit-function-return-type": "off", + "react-hooks/rules-of-hooks": "error", + "react-hooks/exhaustive-deps": "warn", + "prefer-const": "warn", + "no-var": "error", + "@typescript-eslint/no-explicit-any": "warn", + "@typescript-eslint/no-unused-vars": "warn", + "@typescript-eslint/no-unsafe-return": "error", + "@typescript-eslint/no-extra-semi": "off", + "prettier/prettier": "error", + }, + }; \ No newline at end of file diff --git a/WarehouseDemo/ClientApp/.prettierrc.js b/WarehouseDemo/ClientApp/.prettierrc.js new file mode 100644 index 0000000..4ebea5c --- /dev/null +++ b/WarehouseDemo/ClientApp/.prettierrc.js @@ -0,0 +1,10 @@ +module.exports = { + trailingComma: "es5", + tabWidth: 4, + useTabs: true, + singleQuote: true, + jsxSingleQuote: true, + trailingComma: "es5", + bracketSpacing: true, + jsxBracketSameLine: true +}; \ No newline at end of file diff --git a/WarehouseDemo/ClientApp/package-lock.json b/WarehouseDemo/ClientApp/package-lock.json index 0d28f14..380e2f5 100644 --- a/WarehouseDemo/ClientApp/package-lock.json +++ b/WarehouseDemo/ClientApp/package-lock.json @@ -1494,6 +1494,12 @@ "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", "dev": true }, + "@popperjs/core": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.4.2.tgz", + "integrity": "sha512-JlGTGRYHC2QK+DDbePyXdBdooxFq2+noLfWpRqJtkxcb/oYWzOF0kcbfvvbWrwevCC1l6hLUg1wHYT+ona5BWQ==", + "dev": true + }, "@svgr/babel-plugin-add-jsx-attribute": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-4.2.0.tgz", @@ -1658,6 +1664,16 @@ "@babel/types": "^7.3.0" } }, + "@types/bootstrap": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/@types/bootstrap/-/bootstrap-4.5.0.tgz", + "integrity": "sha512-AWu7D+Cduyic75YptSRiXuCIy1c3SsmYk/9ixS68Ft2eAgg2wRj5U2M+7PK5zpakk4gTgfrWHeGxJqkSjttwyQ==", + "dev": true, + "requires": { + "@types/jquery": "*", + "popper.js": "^1.14.1" + } + }, "@types/color-name": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", @@ -1718,6 +1734,15 @@ "integrity": "sha512-3F8qpwBAiVc5+HPJeXJpbrl+XjawGmciN5LgiO7Gv1pl1RHtjoMNqZpqEksaPJW05ViKe8snYInRs6xB25Xdew==", "dev": true }, + "@types/jquery": { + "version": "3.3.38", + "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.3.38.tgz", + "integrity": "sha512-nkDvmx7x/6kDM5guu/YpXkGZ/Xj/IwGiLDdKM99YA5Vag7pjGyTJ8BNUh/6hxEn/sEu5DKtyRgnONJ7EmOoKrA==", + "dev": true, + "requires": { + "@types/sizzle": "*" + } + }, "@types/json-schema": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.4.tgz", @@ -1773,6 +1798,12 @@ "@types/react": "*" } }, + "@types/sizzle": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.2.tgz", + "integrity": "sha512-7EJYyKTL7tFR8+gDbB6Wwz/arpGa0Mywk1TJbNzKzHtzbwVmY4HR9WqS5VV7dsBUKQmPNr192jHr/VpBluj/hg==", + "dev": true + }, "@types/stack-utils": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz", @@ -1795,45 +1826,54 @@ "dev": true }, "@typescript-eslint/eslint-plugin": { - "version": "2.34.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.34.0.tgz", - "integrity": "sha512-4zY3Z88rEE99+CNvTbXSyovv2z9PNOVffTWD2W8QF5s2prBQtwN2zadqERcrHpcR7O/+KMI3fcTAmUUhK/iQcQ==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-3.3.0.tgz", + "integrity": "sha512-Ybx/wU75Tazz6nU2d7nN6ll0B98odoiYLXwcuwS5WSttGzK46t0n7TPRQ4ozwcTv82UY6TQoIvI+sJfTzqK9dQ==", "dev": true, "requires": { - "@typescript-eslint/experimental-utils": "2.34.0", + "@typescript-eslint/experimental-utils": "3.3.0", "functional-red-black-tree": "^1.0.1", "regexpp": "^3.0.0", + "semver": "^7.3.2", "tsutils": "^3.17.1" + }, + "dependencies": { + "semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "dev": true + } } }, "@typescript-eslint/experimental-utils": { - "version": "2.34.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.34.0.tgz", - "integrity": "sha512-eS6FTkq+wuMJ+sgtuNTtcqavWXqsflWcfBnlYhg/nS4aZ1leewkXGbvBhaapn1q6qf4M71bsR1tez5JTRMuqwA==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-3.3.0.tgz", + "integrity": "sha512-d4pGIAbu/tYsrPrdHCQ5xfadJGvlkUxbeBB56nO/VGmEDi/sKmfa5fGty5t5veL1OyJBrUmSiRn1R1qfVDydrg==", "dev": true, "requires": { "@types/json-schema": "^7.0.3", - "@typescript-eslint/typescript-estree": "2.34.0", + "@typescript-eslint/typescript-estree": "3.3.0", "eslint-scope": "^5.0.0", "eslint-utils": "^2.0.0" } }, "@typescript-eslint/parser": { - "version": "2.34.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.34.0.tgz", - "integrity": "sha512-03ilO0ucSD0EPTw2X4PntSIRFtDPWjrVq7C3/Z3VQHRC7+13YB55rcJI3Jt+YgeHbjUdJPcPa7b23rXCBokuyA==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-3.3.0.tgz", + "integrity": "sha512-a7S0Sqn/+RpOOWTcaLw6RD4obsharzxmgMfdK24l364VxuBODXjuJM7ImCkSXEN7oz52aiZbXSbc76+2EsE91w==", "dev": true, "requires": { "@types/eslint-visitor-keys": "^1.0.0", - "@typescript-eslint/experimental-utils": "2.34.0", - "@typescript-eslint/typescript-estree": "2.34.0", + "@typescript-eslint/experimental-utils": "3.3.0", + "@typescript-eslint/typescript-estree": "3.3.0", "eslint-visitor-keys": "^1.1.0" } }, "@typescript-eslint/typescript-estree": { - "version": "2.34.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.34.0.tgz", - "integrity": "sha512-OMAr+nJWKdlVM9LOqCqh3pQQPwxHAN7Du8DR6dmwCrAmxtiXQnhHJ6tBNtf+cggqfo51SG/FCwnKhXCIM7hnVg==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-3.3.0.tgz", + "integrity": "sha512-3SqxylENltEvJsjjMSDCUx/edZNSC7wAqifUU1Ywp//0OWEZwMZJfecJud9XxJ/40rAKEbJMKBOQzeOjrLJFzQ==", "dev": true, "requires": { "debug": "^4.1.1", @@ -2047,6 +2087,12 @@ "integrity": "sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg==", "dev": true }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, "accepts": { "version": "1.3.7", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", @@ -2192,6 +2238,12 @@ "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", "dev": true }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "dev": true + }, "ansi-colors": { "version": "3.2.4", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", @@ -2252,6 +2304,42 @@ "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", "dev": true }, + "are-we-there-yet": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "dev": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, "argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", @@ -2301,6 +2389,12 @@ "integrity": "sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM=", "dev": true }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true + }, "array-flatten": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", @@ -2443,6 +2537,12 @@ "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", "dev": true }, + "async-foreach": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", + "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=", + "dev": true + }, "async-limiter": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", @@ -3113,12 +3213,31 @@ "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==", "dev": true }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, "blob": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==", "dev": true }, + "block-stream": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=", + "dev": true, + "requires": { + "inherits": "~2.0.0" + } + }, "bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", @@ -3198,6 +3317,12 @@ "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", "dev": true }, + "bootstrap": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.5.0.tgz", + "integrity": "sha512-Z93QoXvodoVslA+PWNdk23Hze4RBYIkpb5h8I2HY2Tu2h7A0LpAgLcyrhrSUyo2/Oxm2l1fRZPs1e5hnxnliXA==", + "dev": true + }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -3523,6 +3648,24 @@ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, + "requires": { + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" + }, + "dependencies": { + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + } + } + }, "caniuse-api": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", @@ -4047,6 +4190,12 @@ "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", "dev": true }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true + }, "constants-browserify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", @@ -4553,6 +4702,15 @@ "integrity": "sha512-D34BqZU4cIlMCY93rZHbrq9pjTAQJ3U8S8rfBqjwHxkGPThWFjzZDQpgMJY0QViLxth6ZKYiwFBo14RdN44U/w==", "dev": true }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true, + "requires": { + "array-find-index": "^1.0.1" + } + }, "custom-event": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", @@ -4783,6 +4941,12 @@ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", "dev": true }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true + }, "depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", @@ -5476,6 +5640,23 @@ } } }, + "eslint-config-prettier": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.11.0.tgz", + "integrity": "sha512-oB8cpLWSAjOVFEJhhyMZh6NOEOtBVziaqdDQ86+qhDHFbZXoRTM7pNSvFRfW/W/L/LrQ38C99J5CGuRBBzBsdA==", + "dev": true, + "requires": { + "get-stdin": "^6.0.0" + }, + "dependencies": { + "get-stdin": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz", + "integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==", + "dev": true + } + } + }, "eslint-config-react-app": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-5.2.1.tgz", @@ -5699,6 +5880,15 @@ } } }, + "eslint-plugin-prettier": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.4.tgz", + "integrity": "sha512-jZDa8z76klRqo+TdGDTFJSavwbnWK2ZpqGKNZ+VvweMW516pDUMmQ2koXvxEE4JhzNvTv+radye/bWGBmA6jmg==", + "dev": true, + "requires": { + "prettier-linter-helpers": "^1.0.0" + } + }, "eslint-plugin-react": { "version": "7.20.0", "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.20.0.tgz", @@ -5739,9 +5929,9 @@ } }, "eslint-plugin-react-hooks": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-1.7.0.tgz", - "integrity": "sha512-iXTCFcOmlWvw4+TOE8CLWj6yX1GwzT0Y6cUfHHZqWnSk144VmVIRcVGtUAzrLES7C798lmvnt02C7rxaOX1HNA==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.0.4.tgz", + "integrity": "sha512-equAdEIsUETLFNCmmCkiCGq6rkSK5MoJhXFPFYeUebcjKgBmWWcgVOqZyQC8Bv1BwVCnTq9tBxgJFgAJTWoJtA==", "dev": true }, "eslint-scope": { @@ -5755,9 +5945,9 @@ } }, "eslint-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.0.0.tgz", - "integrity": "sha512-0HCPuJv+7Wv1bACm8y5/ECVfYdfsAm9xmVb7saeFlxjPYALefjhbYoCkBjPdPzGH8wWyTpAez82Fh3VKYEZ8OA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", "dev": true, "requires": { "eslint-visitor-keys": "^1.1.0" @@ -6157,6 +6347,12 @@ "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", "dev": true }, + "fast-diff": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "dev": true + }, "fast-glob": { "version": "2.2.7", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", @@ -6258,6 +6454,13 @@ "schema-utils": "^2.5.0" } }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "optional": true + }, "filesize": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/filesize/-/filesize-6.0.1.tgz", @@ -6613,6 +6816,18 @@ "dev": true, "optional": true }, + "fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + } + }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -6625,6 +6840,68 @@ "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", "dev": true }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dev": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "gaze": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", + "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", + "dev": true, + "requires": { + "globule": "^1.0.0" + } + }, "gensync": { "version": "1.0.0-beta.1", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", @@ -6643,6 +6920,12 @@ "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", "dev": true }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + }, "get-stream": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", @@ -6759,6 +7042,17 @@ } } }, + "globule": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.2.tgz", + "integrity": "sha512-7IDTQTIu2xzXkT+6mlluidnWo+BypnbSoEVVQCGfzqnl5Ik8d3e1d4wycb8Rj9tWW+Z39uPWsdlquqiqPCd/pA==", + "dev": true, + "requires": { + "glob": "~7.1.1", + "lodash": "~4.17.10", + "minimatch": "~3.0.2" + } + }, "graceful-fs": { "version": "4.2.4", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", @@ -6878,6 +7172,12 @@ "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", "dev": true }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true + }, "has-value": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", @@ -7284,6 +7584,12 @@ "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true }, + "in-publish": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.1.tgz", + "integrity": "sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ==", + "dev": true + }, "indent-string": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", @@ -7595,6 +7901,12 @@ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", "dev": true }, + "is-finite": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", + "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", + "dev": true + }, "is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -7733,6 +8045,12 @@ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", "dev": true }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, "is-windows": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", @@ -8097,7 +8415,11 @@ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", "dev": true, - "optional": true + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } } } }, @@ -8418,6 +8740,18 @@ } } }, + "jquery": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.5.1.tgz", + "integrity": "sha512-XwIBPqcMn57FxfT+Go5pzySnm4KWkT1Tv7gjrpT1srtf8Weynl6R273VJ5GjkRb51IzMp5nbaPjJXMWeju2MKg==", + "dev": true + }, + "js-base64": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.5.2.tgz", + "integrity": "sha512-Vg8czh0Q7sFBSUMWWArX/miJeBWYBPpdU/3M/DKSaekLMqrqVPaedp+5mZhie/r0lgrcaYBfwXatEew6gwgiQQ==", + "dev": true + }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -9081,6 +9415,16 @@ "js-tokens": "^3.0.0 || ^4.0.0" } }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + } + }, "lower-case": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.1.tgz", @@ -9161,6 +9505,12 @@ "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", "dev": true }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + }, "map-visit": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", @@ -9240,6 +9590,114 @@ } } }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, + "requires": { + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + } + } + }, "merge-deep": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/merge-deep/-/merge-deep-3.0.2.tgz", @@ -9551,6 +10009,12 @@ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "dev": true }, + "nan": { + "version": "2.14.1", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.1.tgz", + "integrity": "sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw==", + "dev": true + }, "nanomatch": { "version": "1.2.13", "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", @@ -9624,6 +10088,34 @@ "integrity": "sha512-7ASaDa3pD+lJ3WvXFsxekJQelBKRpne+GOVbLbtHYdd7pFspyeuJHnWfLplGf3SwKGbfs/aYl5V/JCIaHVUKKQ==", "dev": true }, + "node-gyp": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz", + "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==", + "dev": true, + "requires": { + "fstream": "^1.0.0", + "glob": "^7.0.3", + "graceful-fs": "^4.1.2", + "mkdirp": "^0.5.0", + "nopt": "2 || 3", + "npmlog": "0 || 1 || 2 || 3 || 4", + "osenv": "0", + "request": "^2.87.0", + "rimraf": "2", + "semver": "~5.3.0", + "tar": "^2.0.0", + "which": "1" + }, + "dependencies": { + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8=", + "dev": true + } + } + }, "node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", @@ -9745,6 +10237,108 @@ "integrity": "sha512-NxBudgVKiRh/2aPWMgPR7bPTX0VPmGx5QBwCtdHitnqFE5/O8DeBXuIMH1nwNnw/aMo6AjOrpsHzfY3UbUJ7yg==", "dev": true }, + "node-sass": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.14.1.tgz", + "integrity": "sha512-sjCuOlvGyCJS40R8BscF5vhVlQjNN069NtQ1gSxyK1u9iqvn6tf7O1R4GNowVZfiZUCRt5MmMs1xd+4V/7Yr0g==", + "dev": true, + "requires": { + "async-foreach": "^0.1.3", + "chalk": "^1.1.1", + "cross-spawn": "^3.0.0", + "gaze": "^1.0.0", + "get-stdin": "^4.0.1", + "glob": "^7.0.3", + "in-publish": "^2.0.0", + "lodash": "^4.17.15", + "meow": "^3.7.0", + "mkdirp": "^0.5.1", + "nan": "^2.13.2", + "node-gyp": "^3.8.0", + "npmlog": "^4.0.0", + "request": "^2.88.0", + "sass-graph": "2.2.5", + "stdout-stream": "^1.4.0", + "true-case-path": "^1.0.2" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "cross-spawn": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", + "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "which": "^1.2.9" + } + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", + "dev": true + } + } + }, + "nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "dev": true, + "requires": { + "abbrev": "1" + } + }, "normalize-package-data": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", @@ -9801,6 +10395,18 @@ "path-key": "^2.0.0" } }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, "nth-check": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", @@ -10084,6 +10690,12 @@ "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", "dev": true }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, "os-locale": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", @@ -10101,6 +10713,16 @@ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "dev": true }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dev": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, "p-defer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", @@ -10506,6 +11128,12 @@ "ts-pnp": "^1.1.6" } }, + "popper.js": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", + "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==", + "dev": true + }, "portfinder": { "version": "1.0.26", "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.26.tgz", @@ -11571,6 +12199,21 @@ "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", "dev": true }, + "prettier": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.0.5.tgz", + "integrity": "sha512-7PtVymN48hGcO4fGjybyBSIWDsLU4H4XlvOHfq91pz9kkGlonzwTfYkaIEwiRg/dAJF9YlbsduBAgtYLi+8cFg==", + "dev": true + }, + "prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "requires": { + "fast-diff": "^1.1.2" + } + }, "pretty-bytes": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.3.0.tgz", @@ -11682,6 +12325,12 @@ "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", "dev": true }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, "psl": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", @@ -12229,6 +12878,99 @@ "workbox-webpack-plugin": "4.3.1" }, "dependencies": { + "@typescript-eslint/eslint-plugin": { + "version": "2.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-2.34.0.tgz", + "integrity": "sha512-4zY3Z88rEE99+CNvTbXSyovv2z9PNOVffTWD2W8QF5s2prBQtwN2zadqERcrHpcR7O/+KMI3fcTAmUUhK/iQcQ==", + "dev": true, + "requires": { + "@typescript-eslint/experimental-utils": "2.34.0", + "functional-red-black-tree": "^1.0.1", + "regexpp": "^3.0.0", + "tsutils": "^3.17.1" + }, + "dependencies": { + "regexpp": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", + "dev": true + } + } + }, + "@typescript-eslint/experimental-utils": { + "version": "2.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-2.34.0.tgz", + "integrity": "sha512-eS6FTkq+wuMJ+sgtuNTtcqavWXqsflWcfBnlYhg/nS4aZ1leewkXGbvBhaapn1q6qf4M71bsR1tez5JTRMuqwA==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.3", + "@typescript-eslint/typescript-estree": "2.34.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^2.0.0" + }, + "dependencies": { + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + } + } + }, + "@typescript-eslint/parser": { + "version": "2.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-2.34.0.tgz", + "integrity": "sha512-03ilO0ucSD0EPTw2X4PntSIRFtDPWjrVq7C3/Z3VQHRC7+13YB55rcJI3Jt+YgeHbjUdJPcPa7b23rXCBokuyA==", + "dev": true, + "requires": { + "@types/eslint-visitor-keys": "^1.0.0", + "@typescript-eslint/experimental-utils": "2.34.0", + "@typescript-eslint/typescript-estree": "2.34.0", + "eslint-visitor-keys": "^1.1.0" + } + }, + "@typescript-eslint/typescript-estree": { + "version": "2.34.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-2.34.0.tgz", + "integrity": "sha512-OMAr+nJWKdlVM9LOqCqh3pQQPwxHAN7Du8DR6dmwCrAmxtiXQnhHJ6tBNtf+cggqfo51SG/FCwnKhXCIM7hnVg==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "eslint-visitor-keys": "^1.1.0", + "glob": "^7.1.6", + "is-glob": "^4.0.1", + "lodash": "^4.17.15", + "semver": "^7.3.2", + "tsutils": "^3.17.1" + }, + "dependencies": { + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "dev": true + } + } + }, "debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -12379,6 +13121,12 @@ } } }, + "eslint-plugin-react-hooks": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-1.7.0.tgz", + "integrity": "sha512-iXTCFcOmlWvw4+TOE8CLWj6yX1GwzT0Y6cUfHHZqWnSk144VmVIRcVGtUAzrLES7C798lmvnt02C7rxaOX1HNA==", + "dev": true + }, "eslint-utils": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", @@ -12606,6 +13354,27 @@ "minimatch": "3.0.4" } }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "dev": true, + "requires": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + }, + "dependencies": { + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + } + } + }, "regenerate": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", @@ -12788,6 +13557,15 @@ "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", "dev": true }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "^1.0.0" + } + }, "request": { "version": "2.88.2", "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", @@ -13113,6 +13891,18 @@ "integrity": "sha512-vTxrZz4dX5W86M6oVWVdOVe72ZiPs41Oi7Z6Km4W5Turyz28mrXSJhhEBZoRtzJWIv3833WKVwLSDWWkEfupMg==", "dev": true }, + "sass-graph": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.5.tgz", + "integrity": "sha512-VFWDAHOe6mRuT4mZRd4eKE+d8Uedrk6Xnh7Sh9b4NGufQLQjOrvf/MQoOdx+0s92L89FeyUUNfU597j/3uNpag==", + "dev": true, + "requires": { + "glob": "^7.0.0", + "lodash": "^4.0.0", + "scss-tokenizer": "^0.2.3", + "yargs": "^13.3.2" + } + }, "sass-loader": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-8.0.2.tgz", @@ -13189,6 +13979,27 @@ "ajv-keywords": "^3.4.1" } }, + "scss-tokenizer": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", + "integrity": "sha1-jrBtualyMzOCTT9VMGQRSYR85dE=", + "dev": true, + "requires": { + "js-base64": "^2.1.8", + "source-map": "^0.4.2" + }, + "dependencies": { + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", + "dev": true, + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, "select-hose": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", @@ -13975,6 +14786,41 @@ "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", "dev": true }, + "stdout-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz", + "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==", + "dev": true, + "requires": { + "readable-stream": "^2.0.1" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, "stealthy-require": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", @@ -14277,6 +15123,15 @@ "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", "dev": true }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true, + "requires": { + "get-stdin": "^4.0.1" + } + }, "strip-json-comments": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.0.tgz", @@ -14415,6 +15270,17 @@ "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", "dev": true }, + "tar": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz", + "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==", + "dev": true, + "requires": { + "block-stream": "*", + "fstream": "^1.0.12", + "inherits": "2" + } + }, "terser": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/terser/-/terser-4.7.0.tgz", @@ -14738,6 +15604,21 @@ "punycode": "^2.1.0" } }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true + }, + "true-case-path": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz", + "integrity": "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==", + "dev": true, + "requires": { + "glob": "^7.1.2" + } + }, "ts-pnp": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.1.6.tgz", @@ -15211,7 +16092,11 @@ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", "dev": true, - "optional": true + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } }, "glob-parent": { "version": "3.1.0", @@ -15560,7 +16445,11 @@ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", "dev": true, - "optional": true + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } }, "get-caller-file": { "version": "1.0.3", @@ -15937,6 +16826,48 @@ "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", "dev": true }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "dev": true, + "requires": { + "string-width": "^1.0.2 || 2" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, "word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", diff --git a/WarehouseDemo/ClientApp/package.json b/WarehouseDemo/ClientApp/package.json index ba2dcef..4c1491a 100644 --- a/WarehouseDemo/ClientApp/package.json +++ b/WarehouseDemo/ClientApp/package.json @@ -7,20 +7,32 @@ "react-dom": "^16.13.1" }, "devDependencies": { + "@popperjs/core": "^2.4.2", + "@types/bootstrap": "^4.5.0", "@types/jasmine": "^3.5.10", + "@types/jquery": "^3.3.38", "@types/react": "^16.9.35", "@types/react-dom": "^16.9.8", + "@typescript-eslint/eslint-plugin": "^3.3.0", + "@typescript-eslint/parser": "^3.3.0", "ajv": "^6.9.1", + "bootstrap": "^4.5.0", "cross-env": "^5.2.0", "eslint": "^6.8.0", + "eslint-config-prettier": "^6.11.0", "eslint-config-react-app": "^5.2.0", "eslint-plugin-import": "^2.20.1", "eslint-plugin-jsx-a11y": "^6.2.3", - "eslint-plugin-react": "^7.18.3", + "eslint-plugin-prettier": "^3.1.4", + "eslint-plugin-react": "^7.20.0", + "eslint-plugin-react-hooks": "^4.0.4", "jasmine-core": "^3.5.0", + "jquery": "^3.5.1", "karma": "^5.0.9", "karma-chrome-launcher": "^3.1.0", "karma-jasmine": "^3.3.1", + "node-sass": "^4.14.1", + "prettier": "^2.0.5", "react-scripts": "^3.4.1", "rimraf": "^2.6.2", "typescript": "^3.9.3" @@ -33,7 +45,7 @@ "build": "react-scripts build", "test": "cross-env CI=true react-scripts test --env=jsdom", "eject": "react-scripts eject", - "lint": "eslint ./src/" + "lint": "eslint --fix src/**/*.{ts,tsx}" }, "browserslist": { "production": [ diff --git a/WarehouseDemo/ClientApp/public/index.html b/WarehouseDemo/ClientApp/public/index.html index 144f458..a75de1d 100644 --- a/WarehouseDemo/ClientApp/public/index.html +++ b/WarehouseDemo/ClientApp/public/index.html @@ -1,17 +1,17 @@ - - - - - - Warehouse demo - - - -
- + + + + + + Warehouse demo + + + +
+ diff --git a/WarehouseDemo/ClientApp/src/App.css b/WarehouseDemo/ClientApp/src/App.css deleted file mode 100644 index e69de29..0000000 diff --git a/WarehouseDemo/ClientApp/src/App.scss b/WarehouseDemo/ClientApp/src/App.scss new file mode 100644 index 0000000..f5da6eb --- /dev/null +++ b/WarehouseDemo/ClientApp/src/App.scss @@ -0,0 +1,20 @@ +input.form-control { + box-shadow: none !important; + padding-left: 3rem !important; +} + +.input-icon { + height: 16px; + width: 16px; +} + +.set-icon { + color: #808080; + opacity: 0.7; + z-index: 1; +} + +.vertical-center { + top: 50%; + transform: translateY(-50%); +} \ No newline at end of file diff --git a/WarehouseDemo/ClientApp/src/App.tsx b/WarehouseDemo/ClientApp/src/App.tsx index 30dda1f..fe39ffc 100644 --- a/WarehouseDemo/ClientApp/src/App.tsx +++ b/WarehouseDemo/ClientApp/src/App.tsx @@ -1,11 +1,62 @@ -import React from 'react'; -import './App.css'; +import 'bootstrap/dist/css/bootstrap.min.css'; +import './App.scss'; +import React, { useState } from 'react'; +import { Card } from './components/Card/Card'; -// Return component from this function for rendering -export function App() { - return ( -
Warehouse demo
- ); +export enum Page { + Home = 'home', + Login = 'login', } -export default App; \ No newline at end of file +export enum Profile { + SalesPerson = 'Sales Person', + SalesManager = 'Sales Manager', + Anonymous = 'Anonymous', +} + +export default function App(): React.FunctionComponentElement { + // Check default for profile + const [state, setState] = useState({ + page: Page.Home, + profile: Profile.Anonymous, + }); + + const setProfileType = (profileType: Profile): void => { + setState({ page: Page.Login, profile: profileType }); + }; + + const homeOnClick = (): void => { + setState({ ...state, page: Page.Home }); + }; + + const loginOnClick = (): void => { + // TODO: Add login logic + }; + + let page: JSX.Element; + switch (state.page) { + case Page.Home: + page = ( + + ); + break; + + case Page.Login: + page = ( + + ); + break; + } + + return page; +} diff --git a/WarehouseDemo/ClientApp/src/assets/Icons/lock.svg b/WarehouseDemo/ClientApp/src/assets/Icons/lock.svg new file mode 100644 index 0000000..ad0e584 --- /dev/null +++ b/WarehouseDemo/ClientApp/src/assets/Icons/lock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/WarehouseDemo/ClientApp/src/assets/Icons/user.svg b/WarehouseDemo/ClientApp/src/assets/Icons/user.svg new file mode 100644 index 0000000..dbd2805 --- /dev/null +++ b/WarehouseDemo/ClientApp/src/assets/Icons/user.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/WarehouseDemo/ClientApp/src/assets/Images/app-name.svg b/WarehouseDemo/ClientApp/src/assets/Images/app-name.svg new file mode 100644 index 0000000..8cec279 --- /dev/null +++ b/WarehouseDemo/ClientApp/src/assets/Images/app-name.svg @@ -0,0 +1 @@ +WAREHOUSECONTOSO \ No newline at end of file diff --git a/WarehouseDemo/ClientApp/src/components/Card/Card.scss b/WarehouseDemo/ClientApp/src/components/Card/Card.scss new file mode 100644 index 0000000..d3d6ebb --- /dev/null +++ b/WarehouseDemo/ClientApp/src/components/Card/Card.scss @@ -0,0 +1,43 @@ +button { + background-color: #303778; + border: none; + color: #FFFFFF; + font: 400 14px "Segoe UI"; + padding: 0.5rem 0; + opacity: 1; + text-align: center; +} + +button:focus { + outline: none; +} + +.card { + max-width: 400px; +} + +.card-img { + padding-top: 2.5rem; + width: 70%; +} + +.card-text { + color: #4A4A4A; + font: 400 13px "Segoe UI"; + margin-bottom: 1rem; + text-align: center; +} + +.card-title { + color: #303778; + font: 600 18px "Segoe UI"; + margin-bottom: 0; + text-align: center; +} + +.gradient-bg { + background: linear-gradient(135deg, #D1A2B8, #9585BE, #2F3C6B); + height: 100%; + margin: 0; + padding: 0; +} \ No newline at end of file diff --git a/WarehouseDemo/ClientApp/src/components/Card/Card.tsx b/WarehouseDemo/ClientApp/src/components/Card/Card.tsx new file mode 100644 index 0000000..2da867e --- /dev/null +++ b/WarehouseDemo/ClientApp/src/components/Card/Card.tsx @@ -0,0 +1,38 @@ +import './Card.scss'; +import React from 'react'; +import { Home, HomeProps } from '../Home/Home'; +import { Login, LoginProps } from '../Login/Login'; +import { Page } from '../../App'; + +export interface CardProps extends LoginProps, HomeProps { + page: Page; +} + +// TODO: use enum for page type +export function Card(props: CardProps): JSX.Element { + let cardBody: JSX.Element; + if (props.page === Page.Home) { + cardBody = ; + } else if (props.page === Page.Login) { + cardBody = ( + + ); + } + + return ( +
+
+ App name + + {cardBody} +
+
+ ); +} diff --git a/WarehouseDemo/ClientApp/src/components/Home/Home.scss b/WarehouseDemo/ClientApp/src/components/Home/Home.scss new file mode 100644 index 0000000..fc45825 --- /dev/null +++ b/WarehouseDemo/ClientApp/src/components/Home/Home.scss @@ -0,0 +1,7 @@ +#salesmanager-btn { + margin-bottom: 3.5rem; +} + +#salesperson-btn { + margin-bottom: 1.5rem; +} \ No newline at end of file diff --git a/WarehouseDemo/ClientApp/src/components/Home/Home.tsx b/WarehouseDemo/ClientApp/src/components/Home/Home.tsx new file mode 100644 index 0000000..7604930 --- /dev/null +++ b/WarehouseDemo/ClientApp/src/components/Home/Home.tsx @@ -0,0 +1,31 @@ +import './Home.scss'; +import React from 'react'; +import { Profile } from '../../App'; + +export interface HomeProps { + setProfileType: { (profileType: Profile): void }; +} + +export function Home(props: HomeProps): JSX.Element { + return ( +
+

Sign-in

+ +

Select type of user

+ + + + +
+ ); +} diff --git a/WarehouseDemo/ClientApp/src/components/Icons/.gitkeep b/WarehouseDemo/ClientApp/src/components/Icons/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/WarehouseDemo/ClientApp/src/components/Images/.gitkeep b/WarehouseDemo/ClientApp/src/components/Images/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/WarehouseDemo/ClientApp/src/components/Login/Login.scss b/WarehouseDemo/ClientApp/src/components/Login/Login.scss new file mode 100644 index 0000000..162dd54 --- /dev/null +++ b/WarehouseDemo/ClientApp/src/components/Login/Login.scss @@ -0,0 +1,36 @@ +#back-btn, #login-btn { + background-color: #303778; + border: none; + color: #FFFFFF; + font: 400 14px "Segoe UI"; + padding: 0.5rem 0; + opacity: 1; + text-align: center; +} + +@media only screen and (max-width: 575px) { + #back-btn { + margin-bottom: 0.5rem; + } +} + +#btn-wrapper { + margin-top: 1.5rem; + margin-bottom: 3.5rem; +} + +.form-group { + position: relative; +} + +.set-icon { + margin-left: 12%; + position: absolute; + top: 10%; +} + +@media only screen and (max-width: 767px) { + .set-icon { + margin-left: 4%; + } +} \ No newline at end of file diff --git a/WarehouseDemo/ClientApp/src/components/Login/Login.tsx b/WarehouseDemo/ClientApp/src/components/Login/Login.tsx new file mode 100644 index 0000000..1b6cb5a --- /dev/null +++ b/WarehouseDemo/ClientApp/src/components/Login/Login.tsx @@ -0,0 +1,62 @@ +import './Login.scss'; +import React from 'react'; + +export interface LoginProps { + homeOnClick: { + (event?: React.MouseEvent): void; + }; + loginOnClick: { + (event?: React.MouseEvent): void; + }; +} + +export function Login(props: LoginProps): JSX.Element { + return ( +
+
+ + User icon + + +
+ +
+ + Lock icon + + +
+ +
+ + +
+
+ ); +} diff --git a/WarehouseDemo/ClientApp/src/index.css b/WarehouseDemo/ClientApp/src/index.css deleted file mode 100644 index e69de29..0000000 diff --git a/WarehouseDemo/ClientApp/src/index.scss b/WarehouseDemo/ClientApp/src/index.scss new file mode 100644 index 0000000..a4f1a8d --- /dev/null +++ b/WarehouseDemo/ClientApp/src/index.scss @@ -0,0 +1,3 @@ +body, html { + height: 100%; +} \ No newline at end of file diff --git a/WarehouseDemo/ClientApp/src/index.tsx b/WarehouseDemo/ClientApp/src/index.tsx index d1b1b9e..0dbd5c0 100644 --- a/WarehouseDemo/ClientApp/src/index.tsx +++ b/WarehouseDemo/ClientApp/src/index.tsx @@ -1,10 +1,10 @@ -import ReactDOM from 'react-dom'; import React from 'react'; -import './index.css'; +import ReactDOM from 'react-dom'; import App from './App'; +import './index.scss'; // Element to which the app component will be appended const rootElement = document.getElementById('root'); // Render app component -ReactDOM.render(, rootElement); \ No newline at end of file +ReactDOM.render(, rootElement); From b775b8e6b00657d9f1ed9dd47d1d18c6ce78f084 Mon Sep 17 00:00:00 2001 From: Ankit Kesharwani Date: Mon, 6 Jul 2020 04:57:34 +0000 Subject: [PATCH 04/21] Merged PR 96200: Add Embed page and personalize bar 1. Added Embed page for Sales Person and Sales Manager views (Page change based on selected tab is not in the scope of this PR) 2. Added personalize home menu (Functionality for personalize menu options is not in the scope of this PR) ![Embed page and personalize bar.gif](https://dev.azure.com/powerbi/4c7b5adb-c2d0-4f18-b23c-edc4ac30f4e1/_apis/git/repositories/86d91d91-79e8-4628-908a-22b61d76f56c/pullRequests/96200/attachments/Embed%20page%20and%20personalize%20bar.gif) ## Frontend | Check | Yes/No/NA | |:------|:------:| | Is the client UI responsive and scales well for different resolutions? |Yes| | Are the user inputs validated in the code? |Yes| | Have you used the coding standards? |Yes| | The DOM is not accessed multiple times |Yes| | Does the code have 0 HTML warnings and errors ([HTMLValidator](https://www.freeformatter.com/html-validator.html))? |Yes| | Does the code have 0 CSS warnings and errors ([CSSLint](http://csslint.net/))? |NA| | Does the code have 0 ESLint warnings and errors ([ESLint](https://eslint.org/))? | Yes| | Are the test cases executed on Chromium Edge? |Yes| | When key value pairs in object have same name, only key is used instead of the pair|NA| | There are trailing commas when there are multiple properties in an object| Yes| | Non static HTML elements are not appended | NA| | Async functions return the promise and not return the result| NA| ## React checklist |Checkpoints| Yes/No/NA | |:------|:------:| | Function with prev state as param is used to update state when prev state used to derive new state value|Yes | | Attached event handler method without invoking it within a wrapper function| Yes| | Used context api (useContext hook) for sharing a common prop for all components. E.g. applying theme |Yes | | Second parameter is passed when using useEffect hook | Yes| | Computations and conditional statements are minimal in return statement. JSX element is computed before return statement and returned in return statement |Yes | | Async and compute intensive tasks are executed in useEffect hook (or componentDidMount or componentDidUpdate methods) |Yes | | User defined components start with Capital letters |Yes | | None of the state's value can be derived from another state|Yes | | Component composition is used to share common functionality|Yes | | Hooks are called on the top level of component. i.e. not inside a conditional statement |Yes | Related work items: #396241 --- WarehouseDemo/ClientApp/.prettierrc.js | 1 - WarehouseDemo/ClientApp/.sass-lint.yml | 4 + WarehouseDemo/ClientApp/package-lock.json | 848 +++++++++++++++++- WarehouseDemo/ClientApp/package.json | 6 +- WarehouseDemo/ClientApp/public/index.html | 2 +- WarehouseDemo/ClientApp/src/App.scss | 11 +- WarehouseDemo/ClientApp/src/App.tsx | 32 +- .../src/assets/Icons/personalise-close.svg | 1 + .../Icons/personalise-include-visuals.svg | 1 + .../src/assets/Icons/personalise-layout.svg | 1 + .../src/assets/Icons/personalise-qna.svg | 1 + .../ClientApp/src/assets/Icons/setting.svg | 1 + .../assets/Images/salesmanager-profile.svg | 8 + .../src/assets/Images/salesperson-profile.svg | 8 + .../ClientApp/src/components/Card/Card.scss | 8 +- .../ClientApp/src/components/Card/Card.tsx | 1 - .../src/components/EmbedPage/EmbedPage.scss | 12 + .../src/components/EmbedPage/EmbedPage.tsx | 275 ++++++ .../src/components/IconBar/IconBar.scss | 23 + .../src/components/IconBar/IconBar.tsx | 60 ++ .../ClientApp/src/components/Login/Login.scss | 4 +- .../src/components/NavTabs/NavTabs.scss | 26 + .../src/components/NavTabs/NavTabs.tsx | 31 + .../PersonaliseBar/PersonaliseBar.scss | 21 + .../PersonaliseBar/PersonaliseBar.tsx | 80 ++ .../components/ProfileInfo/ProfileInfo.scss | 13 + .../components/ProfileInfo/ProfileInfo.tsx | 20 + .../src/components/SettingsDropdown.tsx | 27 + .../ClientApp/src/components/tabConfig.ts | 71 ++ .../ClientApp/src/components/utils.ts | 23 + WarehouseDemo/ClientApp/src/constants.ts | 25 + WarehouseDemo/ClientApp/src/index.tsx | 1 + WarehouseDemo/powerbi-client-react-0.1.0.tgz | Bin 0 -> 116761 bytes 33 files changed, 1630 insertions(+), 16 deletions(-) create mode 100644 WarehouseDemo/ClientApp/.sass-lint.yml create mode 100644 WarehouseDemo/ClientApp/src/assets/Icons/personalise-close.svg create mode 100644 WarehouseDemo/ClientApp/src/assets/Icons/personalise-include-visuals.svg create mode 100644 WarehouseDemo/ClientApp/src/assets/Icons/personalise-layout.svg create mode 100644 WarehouseDemo/ClientApp/src/assets/Icons/personalise-qna.svg create mode 100644 WarehouseDemo/ClientApp/src/assets/Icons/setting.svg create mode 100644 WarehouseDemo/ClientApp/src/assets/Images/salesmanager-profile.svg create mode 100644 WarehouseDemo/ClientApp/src/assets/Images/salesperson-profile.svg create mode 100644 WarehouseDemo/ClientApp/src/components/EmbedPage/EmbedPage.scss create mode 100644 WarehouseDemo/ClientApp/src/components/EmbedPage/EmbedPage.tsx create mode 100644 WarehouseDemo/ClientApp/src/components/IconBar/IconBar.scss create mode 100644 WarehouseDemo/ClientApp/src/components/IconBar/IconBar.tsx create mode 100644 WarehouseDemo/ClientApp/src/components/NavTabs/NavTabs.scss create mode 100644 WarehouseDemo/ClientApp/src/components/NavTabs/NavTabs.tsx create mode 100644 WarehouseDemo/ClientApp/src/components/PersonaliseBar/PersonaliseBar.scss create mode 100644 WarehouseDemo/ClientApp/src/components/PersonaliseBar/PersonaliseBar.tsx create mode 100644 WarehouseDemo/ClientApp/src/components/ProfileInfo/ProfileInfo.scss create mode 100644 WarehouseDemo/ClientApp/src/components/ProfileInfo/ProfileInfo.tsx create mode 100644 WarehouseDemo/ClientApp/src/components/SettingsDropdown.tsx create mode 100644 WarehouseDemo/ClientApp/src/components/tabConfig.ts create mode 100644 WarehouseDemo/ClientApp/src/components/utils.ts create mode 100644 WarehouseDemo/ClientApp/src/constants.ts create mode 100644 WarehouseDemo/powerbi-client-react-0.1.0.tgz diff --git a/WarehouseDemo/ClientApp/.prettierrc.js b/WarehouseDemo/ClientApp/.prettierrc.js index 4ebea5c..95c7445 100644 --- a/WarehouseDemo/ClientApp/.prettierrc.js +++ b/WarehouseDemo/ClientApp/.prettierrc.js @@ -1,5 +1,4 @@ module.exports = { - trailingComma: "es5", tabWidth: 4, useTabs: true, singleQuote: true, diff --git a/WarehouseDemo/ClientApp/.sass-lint.yml b/WarehouseDemo/ClientApp/.sass-lint.yml new file mode 100644 index 0000000..8c2d251 --- /dev/null +++ b/WarehouseDemo/ClientApp/.sass-lint.yml @@ -0,0 +1,4 @@ +files: + include: 'src/**/*.s+(a|c)ss' +rules: + indentation: 0 \ No newline at end of file diff --git a/WarehouseDemo/ClientApp/package-lock.json b/WarehouseDemo/ClientApp/package-lock.json index 380e2f5..2d9be3d 100644 --- a/WarehouseDemo/ClientApp/package-lock.json +++ b/WarehouseDemo/ClientApp/package-lock.json @@ -3820,6 +3820,12 @@ "safe-buffer": "^5.0.1" } }, + "circular-json": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz", + "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", + "dev": true + }, "class-utils": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", @@ -5509,6 +5515,50 @@ "es6-symbol": "^3.1.1" } }, + "es6-map": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", + "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.14", + "es6-iterator": "~2.0.1", + "es6-set": "~0.1.5", + "es6-symbol": "~3.1.1", + "event-emitter": "~0.3.5" + } + }, + "es6-promise": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-3.3.1.tgz", + "integrity": "sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=" + }, + "es6-set": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", + "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.14", + "es6-iterator": "~2.0.1", + "es6-symbol": "3.1.1", + "event-emitter": "~0.3.5" + }, + "dependencies": { + "es6-symbol": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", + "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.14" + } + } + } + }, "es6-symbol": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", @@ -5519,6 +5569,18 @@ "ext": "^1.1.2" } }, + "es6-weak-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.1" + } + }, "escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", @@ -5553,6 +5615,18 @@ } } }, + "escope": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", + "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", + "dev": true, + "requires": { + "es6-map": "^0.1.3", + "es6-weak-map": "^2.0.1", + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, "eslint": { "version": "6.8.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", @@ -6020,6 +6094,16 @@ "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", "dev": true }, + "event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, "eventemitter3": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.4.tgz", @@ -6078,6 +6162,12 @@ "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", "dev": true }, + "exit-hook": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", + "integrity": "sha1-8FyiM7SMBdVP/wd2XfhQfpXAL/g=", + "dev": true + }, "expand-brackets": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", @@ -6745,6 +6835,15 @@ } } }, + "front-matter": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/front-matter/-/front-matter-2.1.2.tgz", + "integrity": "sha1-91mDufL0E75ljJPf172M5AePXNs=", + "dev": true, + "requires": { + "js-yaml": "^3.4.6" + } + }, "fs-extra": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", @@ -6902,6 +7001,24 @@ "globule": "^1.0.0" } }, + "generate-function": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", + "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==", + "dev": true, + "requires": { + "is-property": "^1.0.2" + } + }, + "generate-object-property": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz", + "integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=", + "dev": true, + "requires": { + "is-property": "^1.0.0" + } + }, "gensync": { "version": "1.0.0-beta.1", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.1.tgz", @@ -7053,6 +7170,23 @@ "minimatch": "~3.0.2" } }, + "gonzales-pe-sl": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/gonzales-pe-sl/-/gonzales-pe-sl-4.2.3.tgz", + "integrity": "sha1-aoaLw4BkXxQf7rBCxvl/zHG1n+Y=", + "dev": true, + "requires": { + "minimist": "1.1.x" + }, + "dependencies": { + "minimist": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.1.3.tgz", + "integrity": "sha1-O+39kaktOQFvz6ocaB6Pqhoe/ag=", + "dev": true + } + } + }, "graceful-fs": { "version": "4.2.4", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", @@ -7449,6 +7583,14 @@ "integrity": "sha512-opCO9ASqg5Wy2FNo7A0sxy71yGbbkJJXLdgMK04Tcypw9jr2MgWbyubb0+WdmDmGnFflO7fRbqbaihh/ENDlRQ==", "dev": true }, + "http-post-message": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/http-post-message/-/http-post-message-0.2.3.tgz", + "integrity": "sha1-MsVgrGFfMQp+RZ/8cSd7V5skLh4=", + "requires": { + "es6-promise": "^3.2.1" + } + }, "http-proxy": { "version": "1.18.1", "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", @@ -7928,6 +8070,25 @@ "is-extglob": "^2.1.1" } }, + "is-my-ip-valid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-my-ip-valid/-/is-my-ip-valid-1.0.0.tgz", + "integrity": "sha512-gmh/eWXROncUzRnIa1Ubrt5b8ep/MGSnfAUI3aRp+sqTCs1tv1Isl8d8F6JmkN3dXKc3ehZMrtiPN9eL03NuaQ==", + "dev": true + }, + "is-my-json-valid": { + "version": "2.20.0", + "resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.20.0.tgz", + "integrity": "sha512-XTHBZSIIxNsIsZXg7XB5l8z/OBFosl1Wao4tXLpeC7eKU4Vm/kdop2azkPqULwnfGQjmeDIyey9g7afMMtdWAA==", + "dev": true, + "requires": { + "generate-function": "^2.0.0", + "generate-object-property": "^1.1.0", + "is-my-ip-valid": "^1.0.0", + "jsonpointer": "^4.0.0", + "xtend": "^4.0.0" + } + }, "is-number": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", @@ -7982,6 +8143,12 @@ "isobject": "^3.0.1" } }, + "is-property": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", + "dev": true + }, "is-regex": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", @@ -8417,7 +8584,6 @@ "dev": true, "optional": true, "requires": { - "bindings": "^1.5.0", "nan": "^2.12.1" } } @@ -8890,6 +9056,12 @@ "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=", "dev": true }, + "jsonpointer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz", + "integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=", + "dev": true + }, "jsprim": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", @@ -9176,6 +9348,12 @@ "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", "dev": true }, + "known-css-properties": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.3.0.tgz", + "integrity": "sha512-QMQcnKAiQccfQTqtBh/qwquGZ2XK/DXND1jrcN9M8gMMy99Gwla7GQjndVUsEqIaRyP6bsFRuhwRj5poafBGJQ==", + "dev": true + }, "last-call-webpack-plugin": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz", @@ -9351,6 +9529,18 @@ "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", "dev": true }, + "lodash.capitalize": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/lodash.capitalize/-/lodash.capitalize-4.2.1.tgz", + "integrity": "sha1-+CbJtOKoUR2E46yinbBeGk87cqk=", + "dev": true + }, + "lodash.kebabcase": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", + "integrity": "sha1-hImxyw0p/4gZXM7KRI/21swpXDY=", + "dev": true + }, "lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", @@ -9698,6 +9888,120 @@ } } }, + "merge": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/merge/-/merge-1.2.1.tgz", + "integrity": "sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ==", + "dev": true + }, + "merge-deep": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/merge-deep/-/merge-deep-3.0.2.tgz", + "integrity": "sha512-T7qC8kg4Zoti1cFd8Cr0M+qaZfOwjlPDEdZIIPPB2JZctjaPM4fX+i7HOId69tAti2fvO6X5ldfYUONDODsrkA==", + "dev": true, + "requires": { + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + } + } + }, "merge-deep": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/merge-deep/-/merge-deep-3.0.2.tgz", @@ -11113,6 +11417,12 @@ "find-up": "^2.1.0" } }, + "pluralize": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-1.2.1.tgz", + "integrity": "sha1-0aIUg/0iu0HlihL6NCGCMUCJfEU=", + "dev": true + }, "pn": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", @@ -12187,6 +12497,38 @@ "uniq": "^1.0.1" } }, + "powerbi-client": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/powerbi-client/-/powerbi-client-2.11.0.tgz", + "integrity": "sha512-IvCn/VIoOg87e3SVGGgWIN1Igi+WW8byiEepAY/0FvUJ2uG7Y0bOgpfSLxwIgTWEHIMfIAZpx4NYzpiPMZibrA==", + "requires": { + "http-post-message": "^0.2", + "powerbi-models": "^1.3", + "powerbi-router": "^0.1", + "window-post-message-proxy": "^0.2" + } + }, + "powerbi-client-react": { + "version": "file:../powerbi-client-react-0.1.0.tgz", + "integrity": "sha512-WDwrKfeZT3sqxMjsDuZ2Kk2HGVUJzMGSK5TaLJIaQ5oygkfhML65q0cUysnxW+Bgwb3sCMavszjYbq8ME355rQ==", + "requires": { + "powerbi-client": "^2.11.0" + } + }, + "powerbi-models": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/powerbi-models/-/powerbi-models-1.3.4.tgz", + "integrity": "sha512-hphw7boqjh/GSTUg4xZNoUE5/SWGTKWZhDZHapl1lIsbq2uXQQWVr6k9uyvZDLfTakE4+o18SBcIQe4IRNAduQ==" + }, + "powerbi-router": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/powerbi-router/-/powerbi-router-0.1.5.tgz", + "integrity": "sha1-3S0tBHT4y3ZpCoX2pR2Mqf6pOjI=", + "requires": { + "es6-promise": "^3.2.1", + "route-recognizer": "^0.1.11" + } + }, "prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", @@ -13336,6 +13678,34 @@ "picomatch": "^2.2.1" } }, + "readline2": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/readline2/-/readline2-1.0.1.tgz", + "integrity": "sha1-QQWWCP/BVHV7cV2ZidGZ/783LjU=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "mute-stream": "0.0.5" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "mute-stream": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.5.tgz", + "integrity": "sha1-j7+rsKmKJT0xhDMfno3rc3L6xsA=", + "dev": true + } + } + }, "realpath-native": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.1.0.tgz", @@ -13626,6 +13996,39 @@ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", "dev": true }, + "require-uncached": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/require-uncached/-/require-uncached-1.0.3.tgz", + "integrity": "sha1-Tg1W1slmL9MeQwEcS5WqSZVUIdM=", + "dev": true, + "requires": { + "caller-path": "^0.1.0", + "resolve-from": "^1.0.0" + }, + "dependencies": { + "caller-path": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-0.1.0.tgz", + "integrity": "sha1-lAhe9jWB7NPaqSREqP6U6CV3dR8=", + "dev": true, + "requires": { + "callsites": "^0.2.0" + } + }, + "callsites": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-0.2.0.tgz", + "integrity": "sha1-r6uWJikQp/M8GaV3WCXGnzTjUMo=", + "dev": true + }, + "resolve-from": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-1.0.1.tgz", + "integrity": "sha1-Jsv+k10a7uq7Kbw/5a6wHpPUQiY=", + "dev": true + } + } + }, "requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", @@ -13817,6 +14220,11 @@ "inherits": "^2.0.1" } }, + "route-recognizer": { + "version": "0.1.11", + "resolved": "https://registry.npmjs.org/route-recognizer/-/route-recognizer-0.1.11.tgz", + "integrity": "sha1-gQ2OVwKrtAVtbcuOhlxWhefBTrc=" + }, "rsvp": { "version": "4.8.5", "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", @@ -13838,6 +14246,12 @@ "aproba": "^1.1.1" } }, + "rx-lite": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz", + "integrity": "sha1-Gc5QLKVyZl87ZHsQk5+X/RYV8QI=", + "dev": true + }, "rxjs": { "version": "6.5.5", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.5.tgz", @@ -13903,6 +14317,413 @@ "yargs": "^13.3.2" } }, + "sass-lint": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/sass-lint/-/sass-lint-1.13.1.tgz", + "integrity": "sha512-DSyah8/MyjzW2BWYmQWekYEKir44BpLqrCFsgs9iaWiVTcwZfwXHF586hh3D1n+/9ihUNMfd8iHAyb9KkGgs7Q==", + "dev": true, + "requires": { + "commander": "^2.8.1", + "eslint": "^2.7.0", + "front-matter": "2.1.2", + "fs-extra": "^3.0.1", + "glob": "^7.0.0", + "globule": "^1.0.0", + "gonzales-pe-sl": "^4.2.3", + "js-yaml": "^3.5.4", + "known-css-properties": "^0.3.0", + "lodash.capitalize": "^4.1.0", + "lodash.kebabcase": "^4.0.0", + "merge": "^1.2.0", + "path-is-absolute": "^1.0.0", + "util": "^0.10.3" + }, + "dependencies": { + "acorn": { + "version": "5.7.4", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", + "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", + "dev": true + }, + "acorn-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-3.0.1.tgz", + "integrity": "sha1-r9+UiPsezvyDSPb7IvRk4ypYs2s=", + "dev": true, + "requires": { + "acorn": "^3.0.4" + }, + "dependencies": { + "acorn": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-3.3.0.tgz", + "integrity": "sha1-ReN/s56No/JbruP/U2niu18iAXo=", + "dev": true + } + } + }, + "ajv": { + "version": "4.11.8", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz", + "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=", + "dev": true, + "requires": { + "co": "^4.6.0", + "json-stable-stringify": "^1.0.1" + } + }, + "ajv-keywords": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz", + "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=", + "dev": true + }, + "ansi-escapes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz", + "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "cli-cursor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", + "integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=", + "dev": true, + "requires": { + "restore-cursor": "^1.0.1" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "doctrine": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "isarray": "^1.0.0" + } + }, + "eslint": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-2.13.1.tgz", + "integrity": "sha1-5MyPoPAJ+4KaquI4VaKTYL4fbBE=", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "concat-stream": "^1.4.6", + "debug": "^2.1.1", + "doctrine": "^1.2.2", + "es6-map": "^0.1.3", + "escope": "^3.6.0", + "espree": "^3.1.6", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "file-entry-cache": "^1.1.1", + "glob": "^7.0.3", + "globals": "^9.2.0", + "ignore": "^3.1.2", + "imurmurhash": "^0.1.4", + "inquirer": "^0.12.0", + "is-my-json-valid": "^2.10.0", + "is-resolvable": "^1.0.0", + "js-yaml": "^3.5.1", + "json-stable-stringify": "^1.0.0", + "levn": "^0.3.0", + "lodash": "^4.0.0", + "mkdirp": "^0.5.0", + "optionator": "^0.8.1", + "path-is-absolute": "^1.0.0", + "path-is-inside": "^1.0.1", + "pluralize": "^1.2.1", + "progress": "^1.1.8", + "require-uncached": "^1.0.2", + "shelljs": "^0.6.0", + "strip-json-comments": "~1.0.1", + "table": "^3.7.8", + "text-table": "~0.2.0", + "user-home": "^2.0.0" + } + }, + "espree": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz", + "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==", + "dev": true, + "requires": { + "acorn": "^5.5.0", + "acorn-jsx": "^3.0.0" + } + }, + "figures": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", + "integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5", + "object-assign": "^4.1.0" + } + }, + "file-entry-cache": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-1.3.1.tgz", + "integrity": "sha1-RMYepgeuS+nBQC9B9EJwy/4zT/g=", + "dev": true, + "requires": { + "flat-cache": "^1.2.1", + "object-assign": "^4.0.1" + } + }, + "flat-cache": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz", + "integrity": "sha512-VwyB3Lkgacfik2vhqR4uv2rvebqmDvFu4jlN/C1RzWoJEo8I7z4Q404oiqYCkq41mni8EzQnm95emU9seckwtg==", + "dev": true, + "requires": { + "circular-json": "^0.3.1", + "graceful-fs": "^4.1.2", + "rimraf": "~2.6.2", + "write": "^0.2.1" + } + }, + "fs-extra": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", + "integrity": "sha1-N5TzeMWLNC6n27sjCVEJxLO2IpE=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^3.0.0", + "universalify": "^0.1.0" + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + }, + "ignore": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", + "dev": true + }, + "inquirer": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-0.12.0.tgz", + "integrity": "sha1-HvK/1jUE3wvHV4X/+MLEHfEvB34=", + "dev": true, + "requires": { + "ansi-escapes": "^1.1.0", + "ansi-regex": "^2.0.0", + "chalk": "^1.0.0", + "cli-cursor": "^1.0.1", + "cli-width": "^2.0.0", + "figures": "^1.3.5", + "lodash": "^4.3.0", + "readline2": "^1.0.1", + "run-async": "^0.1.0", + "rx-lite": "^3.1.2", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.0", + "through": "^2.3.6" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "jsonfile": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz", + "integrity": "sha1-pezG9l9T9mLEQVx2daAzHQmS7GY=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "onetime": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", + "integrity": "sha1-ofeDj4MUxRbwXs78vEzP4EtO14k=", + "dev": true + }, + "progress": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz", + "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=", + "dev": true + }, + "restore-cursor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", + "integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=", + "dev": true, + "requires": { + "exit-hook": "^1.0.0", + "onetime": "^1.0.0" + } + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "run-async": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-0.1.0.tgz", + "integrity": "sha1-yK1KXhEGYeQCp9IbUw4AnyX444k=", + "dev": true, + "requires": { + "once": "^1.3.0" + } + }, + "slice-ansi": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", + "integrity": "sha1-7b+JA/ZvfOL46v1s7tZeJkyDGzU=", + "dev": true + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz", + "integrity": "sha1-HhX7ysl9Pumb8tc7TGVrCCu6+5E=", + "dev": true + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + }, + "table": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/table/-/table-3.8.3.tgz", + "integrity": "sha1-K7xULw/amGGnVdOUf+/Ys/UThV8=", + "dev": true, + "requires": { + "ajv": "^4.7.0", + "ajv-keywords": "^1.0.0", + "chalk": "^1.1.1", + "lodash": "^4.0.0", + "slice-ansi": "0.0.4", + "string-width": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "write": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/write/-/write-0.2.1.tgz", + "integrity": "sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c=", + "dev": true, + "requires": { + "mkdirp": "^0.5.1" + } + } + } + }, "sass-loader": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-8.0.2.tgz", @@ -14248,6 +15069,12 @@ "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==", "dev": true }, + "shelljs": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.6.1.tgz", + "integrity": "sha1-7GIRvtGSBEIIj+D3Cyg3Iy7SyKg=", + "dev": true + }, "shellwords": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", @@ -15904,6 +16731,15 @@ "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", "dev": true }, + "user-home": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/user-home/-/user-home-2.0.0.tgz", + "integrity": "sha1-nHC/2Babwdy/SGBODwS4tJzenp8=", + "dev": true, + "requires": { + "os-homedir": "^1.0.0" + } + }, "util": { "version": "0.10.3", "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", @@ -16094,7 +16930,6 @@ "dev": true, "optional": true, "requires": { - "bindings": "^1.5.0", "nan": "^2.12.1" } }, @@ -16447,7 +17282,6 @@ "dev": true, "optional": true, "requires": { - "bindings": "^1.5.0", "nan": "^2.12.1" } }, @@ -16868,6 +17702,14 @@ } } }, + "window-post-message-proxy": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/window-post-message-proxy/-/window-post-message-proxy-0.2.6.tgz", + "integrity": "sha512-IwNWtUWVFarBa2F9vhmfv2yr0PfPm57QuOBCw3qSLaunhD3THcHUKQ4HrJQiCuYUT7LEjhUtaoA+hrV+wQzNmQ==", + "requires": { + "es6-promise": "^3.1.2" + } + }, "word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", diff --git a/WarehouseDemo/ClientApp/package.json b/WarehouseDemo/ClientApp/package.json index 4c1491a..4ba4d82 100644 --- a/WarehouseDemo/ClientApp/package.json +++ b/WarehouseDemo/ClientApp/package.json @@ -3,6 +3,8 @@ "version": "0.1.0", "private": true, "dependencies": { + "powerbi-client": "^2.11.0", + "powerbi-client-react": "file:../powerbi-client-react-0.1.0.tgz", "react": "16.13.1", "react-dom": "^16.13.1" }, @@ -35,6 +37,7 @@ "prettier": "^2.0.5", "react-scripts": "^3.4.1", "rimraf": "^2.6.2", + "sass-lint": "^1.13.1", "typescript": "^3.9.3" }, "eslintConfig": { @@ -45,7 +48,8 @@ "build": "react-scripts build", "test": "cross-env CI=true react-scripts test --env=jsdom", "eject": "react-scripts eject", - "lint": "eslint --fix src/**/*.{ts,tsx}" + "lint": "eslint --fix src/**/*.{ts,tsx} && echo Linting complete.", + "scss-lint": "sass-lint -c .sass-lint.yml -v -q" }, "browserslist": { "production": [ diff --git a/WarehouseDemo/ClientApp/public/index.html b/WarehouseDemo/ClientApp/public/index.html index a75de1d..3081155 100644 --- a/WarehouseDemo/ClientApp/public/index.html +++ b/WarehouseDemo/ClientApp/public/index.html @@ -12,6 +12,6 @@ -
+
diff --git a/WarehouseDemo/ClientApp/src/App.scss b/WarehouseDemo/ClientApp/src/App.scss index f5da6eb..beb76bc 100644 --- a/WarehouseDemo/ClientApp/src/App.scss +++ b/WarehouseDemo/ClientApp/src/App.scss @@ -8,6 +8,15 @@ input.form-control { width: 16px; } +.report-container { + margin: 30px; + height: 90vh; +} + +.report-container > iframe { + border: 0; +} + .set-icon { color: #808080; opacity: 0.7; @@ -17,4 +26,4 @@ input.form-control { .vertical-center { top: 50%; transform: translateY(-50%); -} \ No newline at end of file +} diff --git a/WarehouseDemo/ClientApp/src/App.tsx b/WarehouseDemo/ClientApp/src/App.tsx index fe39ffc..a40bcd5 100644 --- a/WarehouseDemo/ClientApp/src/App.tsx +++ b/WarehouseDemo/ClientApp/src/App.tsx @@ -1,11 +1,15 @@ import 'bootstrap/dist/css/bootstrap.min.css'; +import 'bootstrap/dist/js/bootstrap.min.js'; import './App.scss'; import React, { useState } from 'react'; import { Card } from './components/Card/Card'; +import { EmbedPage } from './components/EmbedPage/EmbedPage'; +import { SalesManager, SalesPerson } from './constants'; export enum Page { Home = 'home', Login = 'login', + Embed = 'embed', } export enum Profile { @@ -30,9 +34,24 @@ export default function App(): React.FunctionComponentElement { }; const loginOnClick = (): void => { - // TODO: Add login logic + // TODO: Add login check + setState({ ...state, page: Page.Embed }); }; + const logoutOnClick = (): void => { + setState({ ...state, page: Page.Home }); + }; + + const firstName = + state.profile === Profile.SalesManager + ? SalesManager.firstName + : SalesPerson.firstName; + const lastName = + state.profile === Profile.SalesManager + ? SalesManager.lastName + : SalesPerson.lastName; + + // Select page to display let page: JSX.Element; switch (state.page) { case Page.Home: @@ -45,7 +64,6 @@ export default function App(): React.FunctionComponentElement { /> ); break; - case Page.Login: page = ( { /> ); break; + case Page.Embed: + page = ( + + ); + break; } return page; diff --git a/WarehouseDemo/ClientApp/src/assets/Icons/personalise-close.svg b/WarehouseDemo/ClientApp/src/assets/Icons/personalise-close.svg new file mode 100644 index 0000000..0bf90a9 --- /dev/null +++ b/WarehouseDemo/ClientApp/src/assets/Icons/personalise-close.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/WarehouseDemo/ClientApp/src/assets/Icons/personalise-include-visuals.svg b/WarehouseDemo/ClientApp/src/assets/Icons/personalise-include-visuals.svg new file mode 100644 index 0000000..a0becf0 --- /dev/null +++ b/WarehouseDemo/ClientApp/src/assets/Icons/personalise-include-visuals.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/WarehouseDemo/ClientApp/src/assets/Icons/personalise-layout.svg b/WarehouseDemo/ClientApp/src/assets/Icons/personalise-layout.svg new file mode 100644 index 0000000..470ced5 --- /dev/null +++ b/WarehouseDemo/ClientApp/src/assets/Icons/personalise-layout.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/WarehouseDemo/ClientApp/src/assets/Icons/personalise-qna.svg b/WarehouseDemo/ClientApp/src/assets/Icons/personalise-qna.svg new file mode 100644 index 0000000..f450685 --- /dev/null +++ b/WarehouseDemo/ClientApp/src/assets/Icons/personalise-qna.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/WarehouseDemo/ClientApp/src/assets/Icons/setting.svg b/WarehouseDemo/ClientApp/src/assets/Icons/setting.svg new file mode 100644 index 0000000..3274b1a --- /dev/null +++ b/WarehouseDemo/ClientApp/src/assets/Icons/setting.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/WarehouseDemo/ClientApp/src/assets/Images/salesmanager-profile.svg b/WarehouseDemo/ClientApp/src/assets/Images/salesmanager-profile.svg new file mode 100644 index 0000000..9ddf066 --- /dev/null +++ b/WarehouseDemo/ClientApp/src/assets/Images/salesmanager-profile.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/WarehouseDemo/ClientApp/src/assets/Images/salesperson-profile.svg b/WarehouseDemo/ClientApp/src/assets/Images/salesperson-profile.svg new file mode 100644 index 0000000..71129b6 --- /dev/null +++ b/WarehouseDemo/ClientApp/src/assets/Images/salesperson-profile.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/WarehouseDemo/ClientApp/src/components/Card/Card.scss b/WarehouseDemo/ClientApp/src/components/Card/Card.scss index d3d6ebb..bc5bae4 100644 --- a/WarehouseDemo/ClientApp/src/components/Card/Card.scss +++ b/WarehouseDemo/ClientApp/src/components/Card/Card.scss @@ -2,7 +2,7 @@ button { background-color: #303778; border: none; color: #FFFFFF; - font: 400 14px "Segoe UI"; + font: 400 14px 'Segoe UI'; padding: 0.5rem 0; opacity: 1; text-align: center; @@ -23,14 +23,14 @@ button:focus { .card-text { color: #4A4A4A; - font: 400 13px "Segoe UI"; + font: 400 13px 'Segoe UI'; margin-bottom: 1rem; text-align: center; } .card-title { color: #303778; - font: 600 18px "Segoe UI"; + font: 600 18px 'Segoe UI'; margin-bottom: 0; text-align: center; } @@ -40,4 +40,4 @@ button:focus { height: 100%; margin: 0; padding: 0; -} \ No newline at end of file +} diff --git a/WarehouseDemo/ClientApp/src/components/Card/Card.tsx b/WarehouseDemo/ClientApp/src/components/Card/Card.tsx index 2da867e..e49b281 100644 --- a/WarehouseDemo/ClientApp/src/components/Card/Card.tsx +++ b/WarehouseDemo/ClientApp/src/components/Card/Card.tsx @@ -8,7 +8,6 @@ export interface CardProps extends LoginProps, HomeProps { page: Page; } -// TODO: use enum for page type export function Card(props: CardProps): JSX.Element { let cardBody: JSX.Element; if (props.page === Page.Home) { diff --git a/WarehouseDemo/ClientApp/src/components/EmbedPage/EmbedPage.scss b/WarehouseDemo/ClientApp/src/components/EmbedPage/EmbedPage.scss new file mode 100644 index 0000000..2b48968 --- /dev/null +++ b/WarehouseDemo/ClientApp/src/components/EmbedPage/EmbedPage.scss @@ -0,0 +1,12 @@ +.app-name { + left: 2rem; + position: absolute; +} + +.embed-page-class { + background: #EBEFF3 0% 0% no-repeat padding-box; +} + +.layout-img { + margin: 10px; +} diff --git a/WarehouseDemo/ClientApp/src/components/EmbedPage/EmbedPage.tsx b/WarehouseDemo/ClientApp/src/components/EmbedPage/EmbedPage.tsx new file mode 100644 index 0000000..0727368 --- /dev/null +++ b/WarehouseDemo/ClientApp/src/components/EmbedPage/EmbedPage.tsx @@ -0,0 +1,275 @@ +import './EmbedPage.scss'; +import React, { useState, useEffect, useRef } from 'react'; +import { Report, Embed, models, service } from 'powerbi-client'; +import { PowerBIEmbed, EmbedProps } from 'powerbi-client-react'; +import { Profile } from '../../App'; +import { NavTabs, Tab } from '../NavTabs/NavTabs'; +import { IconBar } from '../IconBar/IconBar'; +import { PersonaliseBar } from '../PersonaliseBar/PersonaliseBar'; +import { getVisualsFromReport } from '../utils'; +import { Layout } from '../PersonaliseBar/PersonaliseBar'; +import { salesPersonTabs, salesManagerTabs, TabName } from '../tabConfig'; +import { appName, reportEmbedConfigUrl } from '../../constants'; + +export interface EmbedPageProps { + profile: Profile; + firstName: string; + lastName: string; + logoutOnClick: { (): void }; +} + +export interface ReportVisual { + id: string; + name: string; + checked: boolean; +} + +export function EmbedPage(props: EmbedPageProps): JSX.Element { + // State hook for PowerBI Report + const [powerbiReport, setReport] = useState(null); + + // Maintaining a ref to the 'powerbiReport' state hook + // Reason: async callbacks like powerbi load event handler of PBI report does not + // get the latest value of the state + // https://stackoverflow.com/questions/57847594/react-hooks-accessing-up-to-date-state-from-within-a-callback + // If a more elegant solution is found, update this approach of keeping state ref + const stateRef = useRef(); + stateRef.current = powerbiReport; + + // Report config state hook + const [sampleReportConfig, setReportConfig] = useState< + EmbedProps['embedConfig'] + >({ + type: 'report', + embedUrl: undefined, + tokenType: models.TokenType.Embed, + accessToken: undefined, + settings: { + layoutType: models.LayoutType.Custom, + customLayout: { + displayOption: models.DisplayOption.FitToWidth, + }, + }, + }); + + // State hook to toggle personalise bar + const [showPersonaliseBar, setShowPersonaliseBar] = useState( + false + ); + + // List of tabs' name + let tabNames: Array = []; + if (props.profile === Profile.SalesPerson) { + tabNames = salesPersonTabs.map((tabConfig) => tabConfig.name); + } else if (props.profile === Profile.SalesManager) { + tabNames = salesManagerTabs.map((tabConfig) => tabConfig.name); + } + + // State hook to set first tab as active + const [activeTab, setActiveTab] = useState(() => { + if (tabNames?.length > 0) { + return tabNames[0]; + } else { + return null; + } + }); + + // State hook for PowerBI Report + const [reportvisuals, setReportVisuals] = useState([]); + + /* End of state hooks declaration */ + + const eventHandlersMap = new Map([ + [ + 'loaded', + function () { + getVisualsFromReport(stateRef.current, (visuals) => { + // Remove visuals without title + visuals = visuals.filter( + (visual) => visual.title !== undefined + ); + + // TODO: Get only valid visuals with title + setReportVisuals( + visuals.map((visual) => { + return { + id: visual.name, + name: visual.title, + checked: true, + }; + }) + ); + }); + }, + ], + [ + 'rendered', + function () { + // Add logic to trigger after report is rendered + }, + ], + [ + 'error', + function (event: service.ICustomEvent) { + console.error(event.detail); + }, + ], + ]); + + // Fetch config for sample report + async function fetchReportConfig(): Promise { + try { + // Fetch report's embed config + const serverRes = await fetch(reportEmbedConfigUrl); + + if (!serverRes.ok) { + console.error( + `Failed to fetch config for report. Status: ${serverRes.status} ${serverRes.statusText}` + ); + return; + } + const serverResString = await serverRes.text(); + const { embedToken, embedUrl } = await JSON.parse(serverResString); + + // Update the state "sampleReportConfig" and re-render component to embed report + setReportConfig({ + ...sampleReportConfig, + embedUrl: embedUrl, + accessToken: embedToken, + }); + } catch (error) { + console.error('Error in fetching embed configuration', error); + } + } + + // Fetch config when sampleReportConfig state does not contain accessToken + // This effect runs only once at mount of this component + useEffect( + () => { + if (!sampleReportConfig.accessToken) { + fetchReportConfig(); + } + }, + // Eslint does not allow the effect to run exactly once at the mount of component irrespective of hook dependencies + // eslint-disable-next-line react-hooks/exhaustive-deps + [] + ); + + // Update title of the report iframe + useEffect(() => { + if (powerbiReport) { + powerbiReport.setComponentTitle('Report'); + } + }, [powerbiReport]); + + function getReport(embeddedReport: Embed): void { + setReport(embeddedReport as Report); + } + + function togglePersonaliseBar(): void { + setShowPersonaliseBar((prevState) => !prevState); + } + + function tabOnClick(selectedTab: Tab['name']): void { + // Close personalise bar when other tab is clicked + if (selectedTab !== TabName.Home) { + setShowPersonaliseBar(false); + } + setActiveTab(selectedTab); + } + + function getReportPageName( + activeTab: Tab['name'], + profileType: Profile + ): string { + let pageName: string; + + // Get report page name corresponding to active tab + if (profileType === Profile.SalesPerson) { + pageName = salesPersonTabs.find((salesPersonTab) => { + return salesPersonTab.name === activeTab; + })?.reportPageName; + } else if (profileType === Profile.SalesManager) { + pageName = salesManagerTabs.find((salesManagerTab) => { + return salesManagerTab.name === activeTab; + })?.reportPageName; + } else { + console.error('Unknown user name'); + } + + return pageName; + } + + // Change embedded report's page based on new active tab + useEffect(() => { + // Get report page name corresponding to active tab + const pageName = getReportPageName(activeTab, props.profile); + + if (powerbiReport) { + // Set given page as active in the embedded report + const page = powerbiReport.page(pageName); + page?.setActive().catch((reason) => console.error(reason)); + } + }, [activeTab, powerbiReport, props.profile]); + + // State hook for the layout type to be rendered + // Three column layout is the default layout type selected + const [layoutType] = useState(Layout.threeColumnLayout); + + // Create array of Tab for rendering and set isActive as true for the active tab + const tabsDetails: Array = tabNames.map( + (tabName: Tab['name']): Tab => { + return { name: tabName, isActive: tabName === activeTab }; + } + ); + + const navTabs = ; + + const navPane = ( + + ); + + useEffect(() => { + // TODO: Remove report visuals on checkbox here + // Re-arrange visuals in the custom layout + }, [reportvisuals, layoutType]); + + // TODO: add image styling + const personaliseBar = ( + + ); + + const reportContainer = ( + + ); + + return ( +
+ {navPane} + {showPersonaliseBar && activeTab === TabName.Home + ? personaliseBar + : null} + {reportContainer} +
+ ); +} diff --git a/WarehouseDemo/ClientApp/src/components/IconBar/IconBar.scss b/WarehouseDemo/ClientApp/src/components/IconBar/IconBar.scss new file mode 100644 index 0000000..626c3ef --- /dev/null +++ b/WarehouseDemo/ClientApp/src/components/IconBar/IconBar.scss @@ -0,0 +1,23 @@ +.dropdown-item { + padding-bottom: 0.75rem; + padding-top: 0.75rem; +} + +.icon-bar { + margin-top: -1.5px; + position: absolute; + right: 2rem; +} + +.setting { + cursor: pointer; + margin-right: 30px; +} + +#settings-dropdown { + transform: translateX(10%); +} + +.user-profile { + margin-right: 8px; +} diff --git a/WarehouseDemo/ClientApp/src/components/IconBar/IconBar.tsx b/WarehouseDemo/ClientApp/src/components/IconBar/IconBar.tsx new file mode 100644 index 0000000..040aa6b --- /dev/null +++ b/WarehouseDemo/ClientApp/src/components/IconBar/IconBar.tsx @@ -0,0 +1,60 @@ +import './IconBar.scss'; +import React from 'react'; +import { SettingsDropdown, SettingsDropdownProps } from '../SettingsDropdown'; +import { ProfileInfo } from '../ProfileInfo/ProfileInfo'; +import { Profile } from '../../App'; + +export interface IconBarProps extends SettingsDropdownProps { + firstName: string; + lastName: string; + profile: Profile; +} + +export function IconBar(props: IconBarProps): JSX.Element { + let profilePicName: string; + + switch (props.profile) { + case Profile.SalesManager: + profilePicName = 'salesmanager-profile.svg'; + break; + case Profile.SalesPerson: + profilePicName = 'salesperson-profile.svg'; + break; + case Profile.Anonymous: + profilePicName = 'anonymous-profile.svg'; + break; + } + + return ( +
+
+ More options + +
+
+ Profile photo +
+
+ +
+
+ ); +} diff --git a/WarehouseDemo/ClientApp/src/components/Login/Login.scss b/WarehouseDemo/ClientApp/src/components/Login/Login.scss index 162dd54..f04e48f 100644 --- a/WarehouseDemo/ClientApp/src/components/Login/Login.scss +++ b/WarehouseDemo/ClientApp/src/components/Login/Login.scss @@ -2,7 +2,7 @@ background-color: #303778; border: none; color: #FFFFFF; - font: 400 14px "Segoe UI"; + font: 400 14px 'Segoe UI'; padding: 0.5rem 0; opacity: 1; text-align: center; @@ -33,4 +33,4 @@ .set-icon { margin-left: 4%; } -} \ No newline at end of file +} diff --git a/WarehouseDemo/ClientApp/src/components/NavTabs/NavTabs.scss b/WarehouseDemo/ClientApp/src/components/NavTabs/NavTabs.scss new file mode 100644 index 0000000..3ac6195 --- /dev/null +++ b/WarehouseDemo/ClientApp/src/components/NavTabs/NavTabs.scss @@ -0,0 +1,26 @@ +li { + margin: 0 .5rem; +} + +.navbar { + background-color: white; + padding: 1rem; +} + +.navbar-light .navbar-nav .active a { + border-bottom: 2.5px solid #303778; +} + +.nav-link { + color: #303778; + margin-left: 15px; + margin-right: 15px; +} + +.nav-item { + color: #303778; + font: 700 18px/21px 'Segoe UI'; + letter-spacing: 0; + opacity: 1; + text-align: left; +} diff --git a/WarehouseDemo/ClientApp/src/components/NavTabs/NavTabs.tsx b/WarehouseDemo/ClientApp/src/components/NavTabs/NavTabs.tsx new file mode 100644 index 0000000..5761aa0 --- /dev/null +++ b/WarehouseDemo/ClientApp/src/components/NavTabs/NavTabs.tsx @@ -0,0 +1,31 @@ +import './NavTabs.scss'; +import React from 'react'; + +export interface Tab { + readonly name: string; + readonly isActive: boolean; +} + +export interface NavTabsProps { + tabsList: Array; + tabOnClick: { (selectedTab: Tab['name']): void }; +} + +export function NavTabs(props: NavTabsProps): JSX.Element { + return ( +
    + {props.tabsList.map((tab) => { + return ( +
  • props.tabOnClick(tab.name)}> + + {tab.name} + +
  • + ); + })} +
+ ); +} diff --git a/WarehouseDemo/ClientApp/src/components/PersonaliseBar/PersonaliseBar.scss b/WarehouseDemo/ClientApp/src/components/PersonaliseBar/PersonaliseBar.scss new file mode 100644 index 0000000..8d1632c --- /dev/null +++ b/WarehouseDemo/ClientApp/src/components/PersonaliseBar/PersonaliseBar.scss @@ -0,0 +1,21 @@ +.personalise-bar { + align-content: space-between; + background: #FFFFFF 0% 0% no-repeat padding-box; + box-shadow: 0px 16px 25px #D8D8D829; + display: flex; + flex-flow: column wrap; + height: 60px; + margin: 30px; + opacity: 1; +} + +.personalise-icon { + background: transparent 0% 0% no-repeat padding-box; + cursor: pointer; + opacity: 1; + padding: 17px; +} + +.personalise-icon-close { + padding: 22px; +} diff --git a/WarehouseDemo/ClientApp/src/components/PersonaliseBar/PersonaliseBar.tsx b/WarehouseDemo/ClientApp/src/components/PersonaliseBar/PersonaliseBar.tsx new file mode 100644 index 0000000..9cd1a7a --- /dev/null +++ b/WarehouseDemo/ClientApp/src/components/PersonaliseBar/PersonaliseBar.tsx @@ -0,0 +1,80 @@ +import './PersonaliseBar.scss'; +import React from 'react'; + +interface PersonaliseBarProps { + togglePersonaliseBar: { (): void }; +} + +export enum Layout { + oneColumnLayout, + twoColumnLayout, + threeColumnLayout, + twoColumnColspanLayout, + twoColumnRowspanLayout, +} + +export function PersonaliseBar(props: PersonaliseBarProps): JSX.Element { + function toggleVisualDropdown() { + // TODO: Add logic to show/hide dropdown + } + + function toggleLayoutDropdown() { + // TODO: Add logic to show/hide dropdown + } + + const personaliseIcons = [ + { + name: 'personalise-include-visuals', + onClickHandler: toggleVisualDropdown, + className: 'personalise-icon', + }, + { + name: 'personalise-layout', + onClickHandler: toggleLayoutDropdown, + className: 'personalise-icon', + }, + { + name: 'personalise-qna', + onClickHandler: null, + className: 'personalise-icon', + }, + ]; + + const personaliseCloseIcon = { + name: 'personalise-close', + onClickHandler: props.togglePersonaliseBar, + className: 'personalise-icon personalise-icon-close', + }; + + const iconList = personaliseIcons.map((icon, idx) => { + return ( + {icon.name} + ); + }); + + const closeIcon = ( + {personaliseCloseIcon.name} + ); + + const personaliseBar = ( +
+
{iconList}
+
{closeIcon}
+
+ ); + + return personaliseBar; +} diff --git a/WarehouseDemo/ClientApp/src/components/ProfileInfo/ProfileInfo.scss b/WarehouseDemo/ClientApp/src/components/ProfileInfo/ProfileInfo.scss new file mode 100644 index 0000000..1c7d0d8 --- /dev/null +++ b/WarehouseDemo/ClientApp/src/components/ProfileInfo/ProfileInfo.scss @@ -0,0 +1,13 @@ +.profile-info { + color: #7B7B7B; + font: 400 12px/16px 'Segoe UI'; + opacity: 1; + padding: 0; +} + +.username { + color: #4A4A4A; + font: 700 16px/21px 'Segoe UI'; + letter-spacing: 0; + opacity: 1; +} diff --git a/WarehouseDemo/ClientApp/src/components/ProfileInfo/ProfileInfo.tsx b/WarehouseDemo/ClientApp/src/components/ProfileInfo/ProfileInfo.tsx new file mode 100644 index 0000000..1a3abd5 --- /dev/null +++ b/WarehouseDemo/ClientApp/src/components/ProfileInfo/ProfileInfo.tsx @@ -0,0 +1,20 @@ +import './ProfileInfo.scss'; +import React from 'react'; +import { Profile } from '../../App'; + +export interface ProfileInfoProps { + firstName: string; + lastName: string; + profile: Profile; +} + +export function ProfileInfo(props: ProfileInfoProps): JSX.Element { + return ( +
+
+ {props.firstName + ' ' + props.lastName} +
+
{props.profile}
+
+ ); +} diff --git a/WarehouseDemo/ClientApp/src/components/SettingsDropdown.tsx b/WarehouseDemo/ClientApp/src/components/SettingsDropdown.tsx new file mode 100644 index 0000000..79f55e4 --- /dev/null +++ b/WarehouseDemo/ClientApp/src/components/SettingsDropdown.tsx @@ -0,0 +1,27 @@ +import React from 'react'; + +export interface SettingsDropdownProps { + showPersonaliseBar: boolean; + personaliseBarOnClick: { (): void }; + logoutOnClick: { (): void }; +} + +export function SettingsDropdown(props: SettingsDropdownProps): JSX.Element { + return ( +
+ {props.showPersonaliseBar ? ( +
+ Personalize Home +
+ ) : null} +
Color Theme
+
Support
+
About
+
+ Sign out +
+
+ ); +} diff --git a/WarehouseDemo/ClientApp/src/components/tabConfig.ts b/WarehouseDemo/ClientApp/src/components/tabConfig.ts new file mode 100644 index 0000000..94deeb0 --- /dev/null +++ b/WarehouseDemo/ClientApp/src/components/tabConfig.ts @@ -0,0 +1,71 @@ +/** + * Config for tabs in EmbedPage + * + * Get reportPageName from the report's URL + * https://app.powerbi.com/groups/GroupId/reports/ReportId/ReportPageName + */ +export interface TabConfig { + name: string; + reportPageName: string; +} + +/** + * Names of all tabs + */ +export enum TabName { + Home = 'Home', + Leads = 'Leads', + Opportunities = 'Opportunities', + Accounts = 'Accounts', + MyActivities = 'My Activities', + Sellers = 'Sellers', + Analytics = 'Analytics', +} + +/** + * List of tabs for sales person + */ +export const salesPersonTabs: TabConfig[] = [ + { + name: TabName.Home, + reportPageName: 'ReportSection2', + }, + { + name: TabName.Leads, + reportPageName: 'ReportSection', + }, + { + name: TabName.Opportunities, + reportPageName: 'ReportSection1', + }, + { + name: TabName.Accounts, + reportPageName: '', + }, + { + name: TabName.MyActivities, + reportPageName: '', + }, +]; + +/** + * List of tabs for sales manager + */ +export const salesManagerTabs: TabConfig[] = [ + { + name: TabName.Home, + reportPageName: '', + }, + { + name: TabName.Sellers, + reportPageName: '', + }, + { + name: TabName.Accounts, + reportPageName: '', + }, + { + name: TabName.Analytics, + reportPageName: '', + }, +]; diff --git a/WarehouseDemo/ClientApp/src/components/utils.ts b/WarehouseDemo/ClientApp/src/components/utils.ts new file mode 100644 index 0000000..128d4d3 --- /dev/null +++ b/WarehouseDemo/ClientApp/src/components/utils.ts @@ -0,0 +1,23 @@ +import { Report, VisualDescriptor } from 'powerbi-client'; + +/** + * Get all the visuals for the given powerbi report. + * + * @param powerbiReport PowerBI Report instance + * @param callbackfn Callback method with list of report visuals as param + */ +export async function getVisualsFromReport( + powerbiReport: Report, + callbackfn?: { (visuals?: VisualDescriptor[]): void } +): Promise { + try { + const pages = await powerbiReport.getPages(); + const activePage = pages.find((page) => { + return page.isActive; + }); + const visuals = await activePage.getVisuals(); + callbackfn(visuals); + } catch (reason) { + console.error(reason); + } +} diff --git a/WarehouseDemo/ClientApp/src/constants.ts b/WarehouseDemo/ClientApp/src/constants.ts new file mode 100644 index 0000000..63330d1 --- /dev/null +++ b/WarehouseDemo/ClientApp/src/constants.ts @@ -0,0 +1,25 @@ +/** + * SalesPerson details + */ +export const SalesPerson = { + firstName: 'June', + lastName: 'Smith', +}; + +/** + * SalesManager details + */ +export const SalesManager = { + firstName: 'Donna', + lastName: 'Paul', +}; + +/** + * API end-point url to get embed config for a sample report + */ +export const reportEmbedConfigUrl = '/api/powerbi/EmbedParams'; + +/** + * Name of the application + */ +export const appName = 'Contoso'; diff --git a/WarehouseDemo/ClientApp/src/index.tsx b/WarehouseDemo/ClientApp/src/index.tsx index 0dbd5c0..6ae50b8 100644 --- a/WarehouseDemo/ClientApp/src/index.tsx +++ b/WarehouseDemo/ClientApp/src/index.tsx @@ -1,3 +1,4 @@ +import './index.scss'; import React from 'react'; import ReactDOM from 'react-dom'; import App from './App'; diff --git a/WarehouseDemo/powerbi-client-react-0.1.0.tgz b/WarehouseDemo/powerbi-client-react-0.1.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..a64fd3dc722eb56a2e24a45480dd5252a2228474 GIT binary patch literal 116761 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 JUS z{VAn+K|*(g=a*)W(0k_u_@kJADHmPJfq_6y;=6cF20qZ(|3R|FLA54J6g@+TM#w z%=d$mYNe~f2Ve)r<;C6rUA17sKu-c(&^Ivh=p&Gmpob0m8T?Q*CZgX!ZqbG-MV%|I z&J*X#eL)OgKl5b8e&kWL{;DzYkF;l1?}VI%F#wrBW01eqF!U#nWNq~?AGF~8LEog; z9lfkaFk)xn_0@ixgcYj=5Cd1c3!^Fl&TxD)Jr)7Q43F6sg`Vvat690BB3^b;`@#q; z<9fv$*Gt87?9+$50Me(@yR?5bF~HV1Hs^oH`R9sEs(hJi5LXhwgv>x8j`Kqwe~ILrYlLtqBcV_!CK& zx@0AJK=cf)d7W;z7Xncpba}Xbj0%v6@Z@YfoF2_U6Q6Qx`msFHBBFtwI@untl{!x* z=%kK|)@4DIW6e4tt0(sc(sy^QX47h*^rI=hexrR! zN5Qz}2dFQCl#fO@g>+y$)OIsQG$L9Q+9H~I@>0n{%^~<-5%{SI-Hu!YdBR$d7%Q3{ zxMu9{F13T&os>3&#Tr?ifQ*{awpq}xB2D7Ux^K$^+&Z;22^y{#AiTTi}PyTuBY##PG3r6V<~ zM^Ar3?WFQH?_5d0d*CL42d91O#Xge)bFBh16 zEgk8W9MULHI0(3A>nB#We!^@$Fx=(+Irv&y(xVF3kst44Dievx46c9D#`RCSSBl%8 zlqSnDoap0clfjs{{;|pRj~iV7d;;CVu;+x8`T;ZIKCK28>t#oL(OCC6_TB?Hhm#na z;^_3xqXI)nzL)Ds(WQWou6#ej1i&y6gqzGldvBz|jQJlJRt^)-q_0X(`I1Bb;hOheiZFUSsPvn2#-Ay1ZwO>4 z$V9)yfOX<$1+_HE#U^Z`<6!u~jyP~SnuRD&Rh)%zsvegytGy7%lT*T-s&#=fw@ywl zp4zM?xro`~_GpZ3ccem*wcRV14b+RvQnE1))xE$t%!1}#OR z>a}F4>R{~{Synlb?>N9m^IgEy`9WXPw`yC2=F7&y1A&TVLiBxE{L)j$l~ z2e*O0uo?PWIu+%Xkj|Cuo%J$QQe-{6_T$o{E(i2hn}usfKMhs#4c_v8zRfSw*a}ak z`W}tE&z$v=PQ>xaS2-&on068?Nrhy&F8IuWA_BW7*Vk9?-xE=I|Gs~CG&MZwh*Miy zs#~UYabHaD`1s7UE2(>}6-9(H`;#t&j3#>+GrIyO||pQ;(4I#Q5ot$~^1 z88EegH^s8Ss){4?#$V(sr3Bp*WF^+Bu327hG8;gDbPy;~?Y#FaMh8BRt`;5!YI<@+m1D4EL+?uBtC&MB^^yiWTn7|SrQ=vKqBmwHBG z9lkj>f?vz&mpL3pUp+jr&wo2aNT^Y_eTBYb`(y%GZ+hO8+=^F^Yel4@T> zAz3yXZs#U6lqjg2S$IbDqJezn+IYc8z5&%Nqn-ieN3!Wl`qeQ&IH}XxyJv4#x&m3+ zJ5JLAb|#!-1V+VcUo`Vqj)s0DX4u3gkhdt-!!wtG8{Kl)&v9 zcjl-c)a!ndjxE?qzY%9E2tRjx*5`RtG(y3GL$y(M6`_!b7&oWiX`?o`q+YF*ruocK zWqVp(J?rXFrPp=Y4^r^SPZEL=b*LV(xQ+ckEI=Ib3iRQ||10e-=*x|A0UBl6D8)cs zJ#0Nk0e4E*leV)qlPrvUFuwLyWuOpILCXP>VA===daZJ$8-)lWST+kX>$ zpaO<+*LHX^j{f@_`S0qx|8VhEj0=>*w(ndI3g~Cz9J;%)N{MjP46}&d<-`nj4!!`9 zZY)E7SDSO<=r{|qOR75p77QzeQC_UHYc|YHvNqkIOz~m|oR%>H^TXj|ULy(OEhhAr?RHJmN zq^po_FOFdvqZF$S(R+K8I!j9q!cS&%*_JX0W6GjJ1Z^lJa{T4sWPkW!<%ixC@QFqK zaS97J#fAGIE-%t7q(!Bblok%G`)d0@q9MLLAd+Du$`!8Q36}oHquv@Ku55TLME1f` zkx?GX|HXIKo~qKYP`1MVO~|?O&mhNF7^s)Wy(hi3Ri32GPVkxp=B@qMTkSomtKM%+8S-Gb#0_ zvU;WMhvlGu>OERjWh4{;5wj8$GLKM-5+SMgXCv|9@C@V~@h}d6;W^XeS*z51ScULf zZ;dl6&?6&SnQVfs%qsGS6fHE9!`JIk!bf%ji@`Z^7g6$$y&oT|k;!yKFRQ85<4is52eRC2u|UPe6%r@2O(%4B7da@n9!I=feb%@dw~B(MP` z0sO8S9WfLBVUujf!ITKw;)v6j$A%$YA`%i_BE}zVQF{-EkGm(0Yo$Srl3$eOHL|Nw z;sF`hT#};jYDn#v!UUw?0PnW|#VYEiRaNyrx?;yC+)Bgsa3lPA;$?elQV51C)I&u!K1c z#5D68b@2!crHv=@w1e>9#Jf7MD8>SvFxeTJL;0v_0#5cMV+QlUj=z z+fjYXXe=}?mP>b%rHpG*H%}!Sk6!B3`ik<7fRbg4T#!89^+rJY#M*30lMrd5d>jXt za^GY@l#5N^tkRL%H6XQ01mKCwjiEO{*=1f`1%+Tp!`F5mtuk#P-mi#YZ#W??f6B1q<_;eVIm&mMdP`D? z>vD3UF^W(;_)wBq157v(K@^fYGY$2ESs<5N=hj~@-hR0QH}@00RWRCBpTC8HZRSzQNCwOP5*5q@2h0s zcRxght%CR%RTHAT-ry$sw#AnAw(509c_RrQyF{#HT`4xdBk{4gq}8~HLb-=9j0wRc z%L_%y6b-<}gO4v2jX#J+#LQ@-kFVcq{L?oU_!F>3pH2t(6gn=F{L3`nT&GIu;CLH% z5>_yNrh5J45n(AmF>(KuBswGc7nfZXgu@|>hCIcOIYCIV9+50keSw=Mi0^iTWTAf( z@Hf@ZtSqhCGG6!o|Ji%9?!mCK_I>Bmzp6#H zj17Tw_e?+k>5J}QS=Lf2)vi*YMOQ4enoE$TTR!gP=Vc#lB}T#2-dFGMS`h;LU_FL8 z8rKHl>)?AnzowrlYbgSFPCAeqD}9CX&vb>=P&tQf)!r^EsNA?$j$eT;q3IQ120*nv z$6Y_BkB}$uxxOoweR*3?HRY#cl(+y5#S={Nt+#lvZnZ!eOx=pxNU@&}h;r|>044<# zT9~>jJq=$YgCG<$qDip=hlk>CB78b_Q$0P?CLpc|*YdTwVbFydy}f?4ND!&%y(W~3 z3m7=oWS+DisYPL~UnS9kP8@K}lKL|r_QnILmS-T^-R8Q7V`;R}FrZrMz4wMaR2A>x zE?(rt3+$x5;UBCfzZR`-dj$ARKZwq<@MbU)Q+#oo{P$ut#UJjS=?ba5de9f+ z)6;mM&<*C~P*8%s#XoLSy#<$Cu~NSX)J4!u@7zx&JWKd`*&g9hC@7vQsYC3zb|~18 z)Dh$s`ZHa?0OHt*$H@nh2D1&sp+&FdwuMj3ka}~4d*co;;UOV~zxqpW*;P9gW;bZ> zTtYKuMa6sNX)3i(O`slE)1fy7d{Te&A8Xjr-m)m6Rng92&4Z8HIg~eNLAz4zmLefQ0_dDvY~!Em@5!9*3cBCbGG&n@nB=8(Zobyd(O^O2`w6Kc-Xz~WI; zJEix9f~>cwwwsI9966u+tG6ii)KurK?oMx&t}ZZt>z9Z1^J;j;JovFbZt||Q(eMRq zfB~YE(!r=XA1v-YLZRs1h&2m1%dyZKU45)@;)AwO0mu#_HnMP^d<_hn#QB2aCHf1{ zCnj@6&ET0{JWil0bPJPtRLhwk_Bvx$mTudh$e-F{TAc?LAa2_oMQraUiynht?GBvE zQt=^rbibiOe-rK#bl^TT05F)^j2bl*N0+c5JvJ4}j;0C=uataqCY5AutLgvun_oTTWQEGCR`|& z1t!xQ6T@EnUbr00_>|^x#TJ$mRVWRTu7^)yl>tLFy0WATYY;3A`#Asc5&X6pC=C4+ z^jlp|pc%ku;^@mSo5G16X~}#S3OJ9QX`Lyo8i{6Fin!8}pDqad#0E)*723A`9afPx zI1Br8_ra`6rKH}6HQ`!_xs?y|IqU#hJ>)s zU_^@Al4`P=Yw2f5#bIBlViZIn^1*?<#WMOVtUP?dG)ebxseM=$_91O;y3f_!(DZn` zx`B9WUqLAP5j|QMAGHpOj$`ekqPZT*;*(h!WNY^sZCEb0F8t+z4T7cbywm)phZw0`)>Z%56kzhH>E z!67^~5*@;mX#OFXk$N8#9>EcOcN7)qZOF1Sw3bb^qykd9jywK$K`L*ej9=V)G!Y0y zBPF;VuWi1`AAO_H0R>!N?LdJKXMo|OmTQ)fvEM8al$PtDv)~8}Vbd%QQ&oH&26Q6x zZBXqn-+G$N!RSyW@Xh=zW_grJ`kFT@nJ?a5o!DRMg5_}C-@_rsdC&r@CytcA2N$Rn zB94W;cR6mDF!g*?%nAyUr`k5($rJAmH)UX+hcw;)F>7ItQeyod9eL3*j0V1P-2G&+ zI1WFflCQUuP+Oc?qxS{*cHeui56Rrnwf>oX~SLl}~HOp~{C@LCKX&=np;%BmeV&n4s-;r)xbL_R246ep$mWwuGyn z524EHp~mNX7c$!g+D4fjhE-^MRe|jtA>2F61QdK9U<(W5vmnViG){)rI6)>G0W%J{ zX97F15nj9qh`Em;I{Z?*6#Ru+#614SEM2pU!e2(d5nhfEyOp5;fBinVoX;1$Ki2Ld z_#(L1pN}ivCuKs4R19$OD{?xx@89VaoT4&<}kWc|e8;=fn7^{nv9Ht>*eoU?%tK``&`Q=^SLL-uoIj2r9Yf_{QD> z@{VHI%Gz`&@?_a4$xnx7>*>5_glT!hS(sy6P-jqmwe+Me^~-;D^vbU;AbX`b!xal^ zU}jBf+ZfX5o8Gv&=J>876*$TficYnu$~eYkVL-(DAhaKtF&^DzSIye<#p<7r zX7s}6yuF}FqRab=6=!W*Tk>D8&~S=l9GFB!Oa`fzXHs-KxWceycg4J3!B%r+TBv*vk2;EWv$zVeg$fFMh5Hx$ z?uVrtWZ-{+nNqLZC>^M(S`-E%8v+qE;O<3ZtLk`!Av!<}$9#wj1A1*vm*f=0)zO1t z)f0E$(r~}K<$5o>Rz>H-{}fWeL|>*^Z7r8xd9v#j86+u`*gFaB7VDPPIO;G9+Q&2F z=eWtMHTnEhwO%+jh@MJ1LTKtaEJ!oI@=3!U+`VT*QC5$o-p2<AcA%V*ca9n&0bg0I1 zIlZ4OmQ^=00b_X@7%>Ck(DU9$+x?Dy81)tP-tu7pjOv>=TLXotd=h}7`kNmgq2&;7 z6IR|^;9R{CEffqCy;!{P4K}LiK?ku@XqZ9d@<)2(*To~9@@wa??|Hk`Rx9v-ixS*5PDoJ79FV4eT-;h1oTt_cX^oz^ z;GTJ?*o22jt{C8Z!R@HF0|hRqLlBbJv*gCsQp#FML=i@d0ER>mSbNweGR?=h7{k1~ z?Fe6kg~;ebiq(ihN>?F;)OWCa-tIuy`P^8%KpnNVFjQ|fddy+Hk1%QwFcxn;B#fp8 zbc1b^7TOU+JSNE?0n!1RIF7im}?9UM`g@iiqWR$C^~Y zd|-HB1szQ^q)=207(~8!MaQ?eel z0b0FQ6aC$M$vTu#+ABQ(^SX5G3vNokVm(fmYE0F5O&o4UqG-$g6mn4=MUshkY6(I; z)!)LAnl5>Ga6uYYjlxjt?zX=tHZ-L_v>eBJ2vRD2Pw^F=^=NqOt0p>{;_5@Nant0J z1+q@_W#|T+jJt?&M5Hz^COp6%+6Mv`@ImviU+<~H;jPA+#<@>Q#lF?&o8XMbZF}t1 zAt)%dW~iiCOR?XnKXw<#GhAuOqj>~UFy@9)kA?1qhe*;D!`&NkkF*8Kwnx-8sWJ%M zF{%dGt3eD(zWbY;Na`2gE_)PH^tqFRdsGo1d>1PN5miw#?W%t(*a`5R`j=P##1-0t zbgZRR|Ew!gk?|HnT-U>!=e$Dmo<~mxB6HQ~&POzdA69D?Ix~SnLL#L*^@-ImPKVU}e?6NA>TCDI|17+Gbm8(=UKc zfWWWnAK<{7`u78I1$qj-JLcepad!;BP~Q#euTUaSgj(PrZt8{n5q-0^x=I%wHM8f4t1 zz)$W#e0L+zGu%Tm3JcjpcoIh zP`_{pE_S6o2Z7e_SXzNK=rYFrE3A2cPFdi$J3&H*JN80dv4 zlpJqy_5WRU?7XzEoqXQOU)%ZoNL&~5#kII@snA`}%%>VH{suvz?BQs3qq>eHuZ)$m>3fok%HBR?WhC*m^y0loVi`Q43qIVSmsa{UGn zp@tN^Dz|Emm9EXr4TRTe7l1EcuO}j(f9(mF?TyHD7udAxy z`Xz5?touNH)lR;J^+xoi8cls|%>@l-VGPG|A#AS!1{T8SJ`b~aLeSRrXEOnih~m?| z4gWv6NF%3+Q!o5Z{mhE%o|@t_tYm(nW~lx&aEYr$HEsnh_!beTTROa!=NhWorgU)nKsrThG@~H-G-Re zc*Na8yF$VKB`-7Ze||%2N(1Y__LflzFS7IkhGZ|L`fcS)=HPMIb;M7oBU894&Vz~c zG@2f^U6-`cq0v6It-$|;qyZqV#tgGu>B>&NxGzTaLP=^)b-h6rbGt%$=@Bi|$ zUzh`k@;wV$Xl!9B@)3H&x#gd702;eX>vR7fqim8$m}=s2gn)3SP*;{`_@=Iko*t37 zb>+`cw-I-wh}7d)y0uzB-X1TdZXVQ&9@N#-S}Jsr`5Q%CWZo_#T(SE)?gt!Eg|Tmi zpFOR;uNCPRgP1;Pk2!!k#m0w~; zYx#!Xx!3JJdz!SOzM>RLhg zM362MOzZGlZq11gt>DCa)~R0VQ_CAzmp>WdeyLh6zwv?hWodk(AvUv4L2M?r#>g^y zNh~CfBVo~=lkiy08DM+DpJUqp6Xa!edU~25sd}5zlOkWhx`<>wDgM(|JFI}KSi5DE zQV941@p5e)LCg+~t805>O^KTznnXnptGx7W4-!$43}VMnW`paW5d$l*Tp2O30t=E7 z3o8Kfs2I>Vhu%2rDG{fd3Mx;p%sB{22qD$~P5i%If$oSTG7ccR7NOu3IpvJ#C<`Vw z5*)(SM{KQ%xP+Aai3m{zB#W+9!m7yQswgSEG`x?Ia8;3E)M`kQkk;1ffW|rN4r?N( zYkVLeYy52$kQuSKQorsfj2Q@&oT_hXnVpPy^uDYWi7##xgWgCSAWpG@;@8wRCJjXR z;hqMjINaTmXmFeeoR-Gao6kK$pgOaSH#UH*FBGZ(=O@@JwqDKKpF>2#>IhNt?H0w`O4^5G+!p_&F~-$e#{+AGO}Vv z2;wHHMe6@1RIp)%aA^6rBJ#c=j8D;fwNPqZt9u&qxo zi)NfZWWNbPsG=lNg+HyX`=OJ6TT5RD5d*}1vxDuoI#4r=B?~#?aQ#MJTZ@e2i7S49*Z6Y4IQU=#n z-&ePXjK8rC)OBa6gcShf5SQ>^H?0cS3xO;10vZTZtPCxWG!;usmDoIkyIjFq>B^rO z%WP>^V2KJ^>eAXxwXCH!#!FYw^6C#31sM1XF46Yb63HPgQJrQ-0yheJO1YrgX#wzW zCMbVc54b>_AQ%xp&Z zkf8?aB!@_~mhlO1;9?@=!x0!>w4AoHGzCH!q@C})JEV7V3wXwBN1GJ30G0_(x(oE9wQ%#u8R$D2R z;PHb@>>FFl7KYq9$H_IY0_wR{raO+7TpDEfsBeo2AL;!>5d~kT(e#)zOe`LYa}bW2 z#mTPlK;GlugMu1P;ee&xNX61hhUr&*-%^ZUtbKFu6+JN{Bgq`1In|dtyGu;1hX~%p z4c`3J`@5l-ULoU~^2kQeEeI$cKG}O~Z*sWC0lz~tD2;K8pju0B6dse(FYh0fTKN{Q=J&}&~g=zEi2_43Y0NIt`Lc{$^nUjCoi?t7NRu;T#VKcYr%aK}Wgj#lxYuiMoaPw<7 zl7XuT>S_kJ_ufDf#grb9h0y-50WH4Au1J@tr%6J{KwlE2IhY=hk57KJMqzn_WE{7& zbT;U#s^t*lo6rf_c`Mn{0qg5(DOCxiQ;{p^57^U01g=KIMF&i6gmo%g2N?qORFO#b zac9{i6jfC{qF(cY0AN6$zp-l?Ka4R~foi|Rtc7n|EYLaogkT+$iw`-CR`zJabwm`6 z4ULY6PYKfQS~iUa-4<#Law-dEIjHJO^3<+C4^azJGT*;ZCAsx~Hqe+Q*~W}mP(y*Z z4xYaIN*bMMtW1xI!7JXc6boP@b@Fc6eG7+KLA~?s4ox}4>sw^M1hz01sRKA-cWoM7 zMbSbFZPKq)4TQiK^1iCZrUiG|P}w`8&yV>iNn$`NGNK&_S%4 z3JErbJnHv~sZDHx?MvQ<-DBlFs)dfv0vT7}zha*816DSMR21AJ=!UWQ71k}fwSd9d zETLdWbpm(Utw`|$l_leGHDBCx%k9{nEA698n*OSYLd3p!eJC_%gqD|W zEr8j?$W-6Afb(O)Ai_rE?V5(OK{q~nma`VAVGP#-*Eed!%^Hi3F3|3ED^CuZYCmW_ zBY*gua3_w#Zp?}5E*#$QsUqqxY(T`o6EY9L)a_?P@VyDU`apXA{R(dTfk1*;$B=JTL|K_214V^xYDEuZ*1G=yel67F7Hzjn8De12`MM^lhWFMM`@7oWl5gM03);oF}bWWpr$ z7HI2yIf+%7h_Kr*3#j80Q=z5WAs!3_PUqp0*{qAdXf{c4I33fjM{*)7Cycxq&v+_- zAQ>j+p|-qYH9yo`iY9&Eqfp+Fq+*g^k~Zu_kX(hdLh-95!E03lmYK2HBdgfS^ZOAr zR`WTA#~{ik#0*(+YhN*_c7r?D-C z>>2A|nQUApD?cPMxiUjvsul}_;Fc4;(wW=pNr`fYYuKxJx?2hd`;soQUINn~L66q( z0cAXl5>fidEg9y?-~4>-`cc`ffxk(`gJ>q1veM|^&3B!E8n8gkvt!_8Q>)Qx3~f?6 z(AoD=M$If!(#!((Yl+zeu>?;OA&&flw5`|`-bXFqz+>qRAbETMO7)6ar~%i#Ei@L( zFJ}RPJpyIjotRSX6^=JoSQA#2nj)N%?pqRm8C7*eTkT1AHGx4eSG5J{#%#UB}<5&I-GF zL75~~;08k}J?ulh!*F#4sZ12ocLB*y9g=(pX-O&HEqT;~sc;JimJl?1jgoPcN19v0 z({vfdj)j;LyezJq;aQZuhUVh-Lbmb};40<{Nn?RXk8Vv(61^y);57AN5nJ%t-k?Um z60iy3Q7%aoz_v_nbxCsT^`xXGS{mBs#MKgRloGqHXc7!|x2lA~%UrouMr4pr+VG z3bNHhrJ9{GO4vE-BLWsxg(y*aR4<8W4a+Es3fqsG&e-#YvC8bXSb#~kLHAi zGYA+3Ib?>BgNHJU5=F|!>jrMWzCE}%S zUO7W|9Igl5p5J2ID7#i(NmFz+vs+elJaV*@dCwN}k|B6yE2sd^&2Yp7jXYVtP78&= zXknWG`dd>n3%$^gqXlBpMG)ZTV$1fN7nfWT`76+Gu!c`@lh1JCeaTAVl)rmZaxjHg zpbNSRGlqe=#zI|O%s=gA)VJOXUhfwSlf>}n^7Rp(6S}|(VQ63Xsoep>rI9F%Z_R!t zw`5a#0n&j@M;$-u0Tdom8>;dKoyy&cAKPB?m6YvYuSJy_RzR@&6_Ym(ioB9TU$KHZ z(fF~icv56X_S9EAD_-vu5s#I|6a$!b)!zmLYm#-$l~bzB6kdS-EvcbZ1;Mp;n|;a` z?=uw8J<>#ROfHw1!(*G%v(o=*P)mAVIi$T5w=|j_m>piW?ACTgo~mbDSR)ah!|t%~ zoCL|9GmP{Bc_xj5AaG2Xv*Sg-9KpvP_SE|hSL`hXm8x6YKlilbg<(*vRlV=Hb`ZHG z*K5wFAyRn02W^a)BA@nv!x4g(*)_%N`Y91JAQt^jkw8#S4nOr!+^8!PB{JnEX&-XX z405eZ!F)r~F1*RG+1oS^bFk0_W?>~rp;?%Xp=29g8bnq;lD)nX2bDoSB*>2bjI901 zdt=80zw+6KhXvDkMn`1e14U@p6o69Jh9XI(2U6icGPP-Wl4JyAlarzW=rFux7}n8n z7-p&}e()!}y6F{}ZXdhvsO`-#bLRs1yT4fiL>=#qg6aYE}*sKbxm-PLr3dk;V za!eyz+1jV$_Ozv%EDlV>{FeJt%6`VSLv1Vz9?ouP`B#*%}smpq+% zc%r&Z_eee(>(WLD1z{~k(1Xq(MO zzRU?DFcJQ*jlkhrCdi|HyJEC-k&*WaG&)xO6hyR3C{KaD+6|;wh)V`lL0j7;>|v1| z2%eI*LJvfyd?4Yec>?9Lw0uH6wZVxzr0wlSUSVOv))F1JdxP!fDw>FJyEfQ?)_`N< zPXNH|^G8%_&9BP#xe6Y6cw$Be=rWRgd~1Y3XdHCPK^?dNIf~hgp#Fv5$WKoWoYLFt zRY7g2!laBot)j~sYG7l&qtjDxP|RJU3>{dFmRJu5yc*CD#;9XHqh(`3PP#dq^1`zX z#fKTxN;|Kt;yC1+(+8kZRYHm?YKs|q%3_G~RAQBp7K-s$BAvH{u5h8AD!gY4WLV3S zUZoz^m6S-~0PCYNtoi2yjNpdFn+AIBUy`?m0~f=6)QXKT$O$@>_vC#sMv%KDAy@*{ zjG*jaM?(2Pat-`^k*NeGRi z&y{9X@{nsSJn^AkK14lGS^+&cx}?uB1CB!1xmZ)vDY2gAa**I5aN0S|n}jcA>a6S4V~V=TPk)z?LHd_A--HvlunB%o4= zRwGp+|4oqrS)^Au5QlAd4$2-c7+Uj#2z}-r31t?7{^e4T_XBm-7k%o@!4Mu8BjEqr zYl1LiPy-w;0jMP%pj}9^C_fX9a!}$0aUQZ z7Lt_>T1aX$NuSZdN34X+j+7F?2lo~Y*uHl-gq?`u=~D3Zl8Eg2=SanLSZP6Hd74~t zkuqy7MP6AsKXl~KG2*(x78!!X71?2KSVUWEju!H3Zqd2&U}AdQ_vDM03+*YBTKi8>fJ$u%;;2$xdOMi;ck$(O*yuJE3XCp=8XPa?a5>wHulT?JQ+t>KEP57VO(Q4c z(EMXoV&p?(iIz7!DF5F*PyIJj#NSL2*MBob)bf8bMOHEAUzOS zC4`C6)O}P5(yPYW@qZG zZC2b^R(nIC%T&)!;X&=GMK7UM2gT*Xo`CW;{@$vRU-IG+JJdeJv&z?m|?X01L#%j!nkoEuk1adb$k3s zID))n^oV{TRGUebzem75Y4`IRp^*Y{3rMH&lC)}m`9z+L^IlTCKEJGkOmDp0p%lR{ z0c%p`+c?D-^XmZ`%Pnj=gxH$Y0jKe2h-bP^x)q$X8tE&ZT!#ur5G|#I^4DG{7wDcsN+y>v= zL$&ns=3s{X6E90jUYBqxX-a)h9`$)I_gNo7v*&@qwDJGV0bF=6^fKv3x55_sD^A3m z+MhkL#npR8P(Xj%K!0(jh0@>Q);8acqz~AIgbh7*6hT{kD70jhp1nk0(>fph|=g*gbUu&3x{N<0_eSBONsQOaNjoH zW+gg|`1J;zI_CS4^rOcbfafH|mIknSWCObQOraDoq;3Fs19wOV+ut%@Psnc0@0I#d z7~_(y#GZQDJ+l4OduByM_1Z5S_WH(+BY(K&^CWsz-t<2A?Vpr9_shw_V(-nDJr;-X zWi@{r!+qWpF&g&`Zzk^%U8@y{NjRJYNqueqNZ2M5_O398zKX2`wH+r+@t&Z0=xG_~ z>4{r2N3KNo;}p1n6u8(9_vStRRBtDtdhlfl8IUs&QR+LwL-8ID zhC*>(CPkbbaLT<&)&>W{z|wpCtzxH zcBXzqDT_px6p97f3;1Bjl7h)Qbw288=i5sd&^w4SIS$Y~{1~|< zw=cDihJ5)!DJJUN0d^|iZzz16N78}#oa!9Jq*5A8j;i6k=<@-8G`Y#!KIO6MRkd_h z*RR3zl@NXKHWbTA7|&4PVVQ|Yh#`S%@Z?RF6UtSY@w&m~Iq6w8z#vL+)=ARnYzch0 zXUjh+WYZ@j=%u>2qpv8`Xh28f_b^l^V_m!Fv#XoBcT%S-w%Am4S7+}U7H0%?RGpAV z#HMlKnWG#`-_AF{j`5k_q0RRx%^Ea}wVu;?+G2r~<76AWawCFk!mL({KI%zT^F?$7 z6!If-X-vqcwI=Yd>bSSWlv@P(hMKIID6$5l7;dNt{tZL z&})~jd${yTO;(eh*GdlAL#G$6M#H+N!(t%|M<$PjfVtGWlBW?3EZp>`7H(6;(IjYP z;9tGQ_DClin9v@u!fl4O8* zU`rD$8iML&>z*LA{XRHex#7dPD;KA1kV7yhR4^%0nb)oJ;62&QIOtG;f>+;L^@o*_);-aN=a4AcADU%pI z{t~6tiqw%g3JUE2r!x$``#`kyfz~-gFSE3J`}DF0laZe}TIYDxoiC(rfHW221*z!- zmRaou@o6q|@7ZM*oXLQ8Ceze+gQhlV+h=^MjFmgWNJO)xv>5BN7rSGT)V7BCREMxj zZ%?iE>_K~KFa^e(N*50(_3%WNRJigLu6>As$%nv0Bn)Ew0(dZX@gUBoO8~=DPA~+v z0Zh1%8dne#%4cCh?~Z0WrPZE1pui~lWS}10;RNUOa`r%>>_d7vqL)j0i2zcP!}tyn zrE_OY-zDP+lqu2inWE!p*>{m;@qCPsr#ZeH{ZMPd7qZsB4Q-7taMay!WRoKt+Antz za9_IDJ6NrzYack+nMP#_XLEKs>byszB_16voWeWC8}gjL%@J+TEIK4#Q*D0-?WIvK zcu(FDdK%eRYMe61&Nng6`ObMZ<6(9jZr}i}GD|Yp6b2#`mmzQLA6P~-OlsWacrIL$ zomjK;lGfbCPk_$q`hV~PX|!9=2IoXnGS4pWPw-oh7yOMXSMi(76NJ{q8-q+FLaf3|(!}ML(MwDU*yuHgweR<~GS{-w3DJ2;P z?yr%-pg)IB+))6?3$c}MBUrCEDUme`KT5)WQJO@7;OmVx>YIM=o*E=tTF|g?#&q-v zLriM0e-bY3r}O_aIvWQ0Ry4vWZSr6TjV~krc8vUUyn}Xkh#@K31xe)feX++)P~HH7 zr36N0q{UKVkXs>v`4H;aXErDzBISbgIA+pgN;UZwJHU4@9_4(=`i3ZHA94*l2~#IJ zMLE+GlbuJAXy##0&j<7>C4C6NdgJ4NHQD};@o1-T`br>rKIcDSo=?Gu4*bT{# zy7mE!MMSAPJ9zt$UpCIgmxzT@<`VFwm@_#oqXuO$YDWQ1Hf3*_iVmfALn@pg1B)UF z5bRGp2zK+5!@TCb~VK^z{K%v80g z7~H$f)U~%rK?O=djda_abE3wijfb&-w2ApIZ^VH(Q{y z1Z_CBrj~`2F4#v6g^*Et8URMrV`L@l>3l>*I9k-uJ`abkqR=M*>X^;VM!86d@qL+- zeT;Of&t5#O%GrxKa^U*l6=XDuvm3}g2KMF1e?OsIhf_QoM3MtYDsW^<_UY@xjtUa&Sh+Nlh;i9JQKMG<<*tFYh#8e1TJKc9gi?4aa5R2)80eeM~^rr7lJS%}$>{ zKW8F_!7d*+bq0efT*(9$b_JJ0^ky|C=LCZEi_5#5vB*&Si&t2l5=Urb_~w%0U^IMd zE_`XXq4U9cV%yU*Lt6o&y0#hEyH|idHJTM@ccEqcvQgSaW}{2p=*=s5Iq` z;Nu4l|FL!aWns+@_!Kptd}Vlh&+X$5c=p(?{GKiCh2ys!>GRSQq852`GmI^-EPQ#- zt~a;XFK}sAj|-&RHH9X(K!yL{;~?O>ewO+y2pC$&bS($?dPW$TBnU-sPXp`y z@TB3fAXfS;~E?{-=T{D9x9$Vu&d#Zu?^MRmeukUAU2{Z2f zaK&n5FfANIbt}00d0^rx8cUB(Sd*xEO1Vjqax4p+&Au`cl1{*Kgzwtjf&t5f3Co#b zCH*lE!jcZEcLWZi8WY_AHUP}rPXUwi6;275lV@}%Adu`=sb}Dt_m!jwy}YA@)auJy z6PSx1h7EOZU?$srQGnKl-w1oH$h=FH*FOW!l?l#u5S(c~M~S1T=7b(VEC5e7ynYj& z4rwI>&jrJi6t^PvIAnmX&^kImfTD4x-P$);f zqZ6vNmJs)RBS?&Y3T$G^llnBE6Zu0pbK;=JQ>qxLEA)F3E^C|vYNC^Oq8QS~m=GZ5 zV>-D4N?ug-MU1rYn;(Yz3rx#E#vG4{&0L4SKbF!m-$o9@Fnw>+hruiu!gwQcgi+Za z9Fyif^RZ3viFwgt_C3eV=tj*h6-zMRCjG;;x4yTF!@#1uC4i{55m6dKL=VAx<{TnQ z!Jy3L*1qYXDK?~?V`lFHHT)mxr@8qG+`rAw=;6^_vP_! zHzi!Cw3wRRE-!}hO%sB4sM`r9e%1#iLc6^w;dW1orP=NL;%<{oxY~faP0DBFd?&h9 z1dc9q+M3;FF77tlgv(E;+c@Ty)JeiZyUmvH0)`PJ5AeE8UEFQw9W;(IE4d%6;dA<3sVHT(z|iGP!xP=69Xyn}H#=Ql z+-c<9U_yAY(n&59aX48^!t6G7aksq|SO&{%8H@_H3?A*bSLS@^8MEK<#cMli0bgMt z%RXlvI^Hj3Sb(75pPTQjb)D7yuE^S~{br&4&dMmbL?BYb>vwzcd{-@i8}&Pa1jI!* z8Y_J7mNCdR4sjk{ztfBR-L*`bv6f%aj9r;&#{BN5Xhytc@`U}DvRu5(JYjwJQ#>K< z!{>zj3ZK&&pZ9k^h0l?eDb3OKE~mt~NSVdCgxT+T;+&%tInqYQhc`vreMw21&N#D& z&1SL6K#cK5oe3u&n&8t$OpVf%oZ*u~4Wl$B7hJmZm9FqTHf#&V!9Nr^_6jax)BMZG$)hXZptW)$~2EGW0b~Z_Jd}eGfI~-f=`OP7^QRB z!L!0y(QSLBL#x-Oy8X6Ucfe0WqjW1rZJNcnZO&qXPb)DsN)vL{CYa5Q(!E^Zlahpu z(yq1Qk*$3r+u+kqY>m>4+;IzgqjYN720HTP87y_D32%4o{!|~RQcN6SyxsEAWjajB zx%yyew#1#hW8~-XJjhWCQ9+h#`Ns3K+(;TDI@-DsolCbTHis{A{6&P0s&P9}F6~IO zlnx zO9#HvA(xKuD4d)>`v5eQzZMSQiHMbz9yO6VKPTTRKY@G3CUB{vm9SAAnb7MQzgE>$ zsS=kZN_PyF`LO{egxMNJ=LdW*>0!oq8CVSj?C(&1axtRq|Nk%++z zu~1HnDa&k>5&__AXf)wp?Ij;%SXmh37nRb4W$H9Ie1KWn6KP^u=1Wj!?3oO%+(55f z22S1>glESKJF}4RWI&cMu!8butl;W-z>2=LEtnIf`yh8>M-v6u8f|CTEtSPmCG7jx z#Xf<>eLL-&1?37Gh>e~_w}66Ql4l`kjn(To9w79MV{ac>;}n0k!#T@!L7F>|8%h!0oCg-k8|VJ$6`&MHWB|BZ_=3#SQ1zBh`MSz;M#8A=b^!wzR&C!J9-G!t zF7_Q3qlN;mlstxyuKG{HpB{?<%;7}p|~C4YmZ^Eu7jR+Qf$7y2+rq=@8VX=O?#tsw^3UKMet zk1gq2GM)%6_f|?%j#{1`6eudTLfsACwo3CqcN+dy3Xy_|%iFM45SP_D8n{fiVrcnO z;d0b6v8TsJRtF`7_}H43&8heJVBDmHN7*|}#BJItwuj#6TYsc~+ zWvW(n9hAMtkNsPdf@FELmZ?&c!uGqubWiLiX$aoiO#WPpTo zf|$mvQOR7OR9I!ub1gy^jY4~#>z=4jr;dj=ly zXo3WQ*c4;?%tx3Kk7oRI5*_1HNjpK2$ov+ih!I3{s}VjgI;^fxK&z1xTjs3cJBHn0 zIL+OxrjvITKOo|zoP;5Cf!-7$iGkdY2&s2`%`gR!YI8ZI`o-)2z;*4$BDT{da@K4q z((Zno1*$cjI~bv{GL1+u{bjcJc#q7;aYoiV0;=$Po- zSOsTcjEQnT3*4TPD~HG`sc^j`@T;->1L>@KFG;qdCtgGZI<2yz%EVGiZj36OnI8V=TJ@ zHW^8O5=A1lBv0&yA|&k(85~zk|M3ElK0$hOYtaAOlaP)eq&FgpkdFBvO{axd0^4@_ za&t?NAGgl}bnbTnx+A|2=t&U)9U(w(=^UyH=$_I(DEAv}eS*=%GEh2IGf*1y95A3$ zwUdC(GD_z{P@2v?E(Er%P&&zZt=8RtFiLOAew4;bI9*83`W{Lb^OZg8+I?+@u=62_ z#{XI){-3f&^hl6wEyrxUq^QBwn2pbCv%G7KIMT--+cY4Q*|54$W5o~E1#frK9AELZ zK3Gxf<0S;uIbJ|kP17l!3>>J83*?{~;VKX~>5ae!95u!ok;dV9I}{l5?`HT#V)$;; zctnQUzG=}~Kqg7}&-vk29pA|l z)glWpSxgCorguyep}Wc5AqL^=GcagH7_@gWh|)&f2yDQa$_X;porr#(g+P7#PedTF z`yXB1>^-cm#)r6d-X}MQ2(kDELS*2Z7`Voy+RF)fLa`?DjVuZwbYorc(T&FC4aM_;UT!N#kY_gzqbB6cj`N9K6wBv?JdxW&bzXt){G(3|xjR>3OE;e;^N+aY=IWgcYl$rB*Q{s=L zL{BG{RB5*9Lq3x&UcRIl8?dCroGUSxv15ED-WBdibfxaBInzYf=XO2&DmxtSjGEp_ zN|5iFS~qlmTt=+>d>d5XG#`K!hb&pdJA5V6u_M>v|_#WsBOF<*IAo*QQh59vvem{9ns*eZIsDaAry(7vEfci z!W`!iomNzfm6BUc8peWC)Fbw!_#VXZUuF5PvK*!?+g+c-OcVg$iGPk-P`9s9|RCmtXwl7Z({~j;AI6i;B4g$()_fT z_s-)Y^FLCXJw;4hZ5CU|96e!F!(eKIdN`L;k2SQlgoAsaqeSJ9_i8{#8L4%oEIyRY z%{(EJW^)Fn;aamfqZ}}2l)r1vxTO`x2As8wlnF^==eg6Te=rq>7Do_h)8?dJh(AlhAEF>LiZkw`IV{TQ)&l0R{+Z^m00oKA zJvtH_aH6t@_%xBJ^P)3Te%;*VVM?-@XU$%^BB5lc8f ziqL4h6E4FurT(JolwzuDPx-M9f#0HdH zf%kT(A&xueNtXXS!QyxO*nSng*^`HMMozYz>>hL3_j)2ks-Tdp9`TqITDKA$k`=IS zrOvc&1$fL2ZnvJq2AqVXecqAlGp$?OKN5SsAy%v!u(JL|Pk&?4=K`6`j+o5QnxZMa z(C6^nnIh{QJey9TzU)t>R1&n*2_zITTIzU!P$bSI6afWfM>i2kY`}@hI1-A8Se{8J z)_>$u|1v`H_Ny8?X~z4_BxeaECnq+f$Mmi7F_JUs2~KZI5&Nvj(BWOe!webJ2@lf& zl9Tx^$%&IeU1rFjF4JUCm)mm<>VG62{ufEklt@mTNY2z663Lk|$$ZdW6Vi-$nEuBKl5X1I}2Ea2^|xJI^%S z{UfR5FGKXf_vEP%Oh1XB;SKffK{L}0ZS1cb+T4O*4!Uu7eV=8Pg5&A+D%hM@V$pu1ltFZJp{>OA@eeojfunUR>2 zlk;Qvxd@}qsD?)P)H0<=U=w)&KU3eu&l|+gh`yYhj>+|gJ**iSW%b8I+f#ba0 zGmrDu5o@2_lXr+yJ%OJ)3DK$10260g-j3uwE7P$V4bDN8uP4gg9|hJFl9}51S4@5K zHk8|AmZn`VEDK7;Jo-GYUVG;hN7aA=Uj3$>vWI^*0vm9Kk}erviQIWd&Hl_|il@w! zn=0-c9qC*88A=KHi;-m#c2X5*k{HJY_Lz_kTKvpn3Evi4FU~I#Me8dW<0&{UR#RhgmI4U5Jo;Nu;i>Em75#8BNs zQv|S?zy_SC7}aSExiiDv|4fs{so3R<6syXA!h?AEDe#VCN(H;yufGWIoW)J~yRbcJ4IcSU zyDbV|TWb|34Wy^peB+cjUhWjL(adBGMQ-2`on+|wt)!}pI4| z(u5qG4RDC8i?aa^0<3FzZg|q6F`neKmB0p^z8rAky3CoZEBF64>-uG3a+kBNiz)aQ z^mubf_-2*M2_N2ow3L`^(VB{kLHIT@jPS(=Uj9Wz_+p$U<1gX+OZbivzFF5ag2hZD z*iFC)7CYAncIeLEun{cAMz9+;g3Zs%kn?96!Tw(t+0%7X5KYS8AnUS;&ws@K8zw%y zb1o*)#AnULylaSvp_FnIYRnpT|5D1ol=7H}=t~JR#MIoJ5@zra5D_2F^av8A>|3sg zh-nN*0vk}cGr%Chfyn%$Q^Ndtr1F=I=-1NR|A2JLaVPwNjypN!B2`}ms5IT8bs3e0 zQ?5fx=V8g1d04DaadsG%hb1=rOQio2>5ERwX8R`T9^V_JdlbmSGX8EJmfi!AZfrnd z)aahZk~=fW^`A+)zmrCx9*i%Ge}i7+DD_I5(nC(+RtG!WaohI@1sp@-E6V8BYCa;3 znhnR-ZvvXl_Pg%=1^(FyY`_`I4Qe(UF+NYT`7`6||4jC=Cog4>{P-~$$2)!sDZcce z*A*eb>J-(>H{DEe=X0{pNnqzszq|8ENNeNw&R$G#$y(7f_x*q1Hk*G|`jiaq`xWi` zu1p=<_vwDf{b$Jj*`BeyH|!aUz=AK&T<`%c_|#qS$ph_jY`_^xN|dk?{WA@@{{e$W zjh5WO3yd&e0J$vxC!>&c_uyi$eehzh>rD}<Y)tJcALlqxHF-Z)?35yWvlLpzz&Di#q$RG4l&;|CbmuQ+OSV#H%bL zax62)qFUh&y5O~zbb&RWpU&K0d*`Rq0S1^klK}=#-y;KD2yDRV$~5Bm3~&AY=N_Q` zM&{x#vgH1fQ^ptp9;2(k;$ki5$5K!(24NT75&Ccf7{mvi049JBiSOdW4)LKQu>nW` zgR2)2%QNxe&rASwYH^v$>0qOC{3*XVKMP^WhSZ}zolOiqi$3u3vp`@cTSfkQiT?^{ z$9x|VLJq!_XNuu5d@Ii+5FRuAZuXu5f+jAo0cS2Jb=n2dGl|Hbc`eU>Q<0|ZJ$Pk~ zLg}a(KqA5{?hpp0FVRt?AxDUx`b!%AXGnvRjVZTNmSz@3wTn-#L=e52D_n27lALet z((3)uE24{dMRb9$i1r(9mgwDtaxl~z=d}8Q+KmXfJbEhi<dM^i>aM95a~UZ89DXh*(|zx(JU zlYMJ}XJkT;uq0^_+Fd--5qg9LO_P>_mBQMQ=$Qvu@_djbg{Sr^Bl60<6P;<*06x<+%OODqD z!79w<0{xP&vA#znSD~>Z8&yN?pEi=nK3^vE*Sz&VLn43G&AVMQXu+3-C7)Snq~d`io@shgIe2pf7jCleRo4TWx?Tj6UHTBIHl z;rk7jRt&ajj;>RWh%JD_4!?P~8+Nn$P8t~0y*DtZ6Hx8D=c@LHv75AQRstJP7(}-n zE=1x?cKc_dkaMw%^FQ&$FL%6#d~xc?&Y~7PvXlMB6|k6eI7X4{ak-V-V;;O+KMb$? zCSFHP$`}by#^{-pF`#XxnKDM1GDes(#{S8a@szTuSV7>{&d4_wcL?7siD<19(OMt7 zwR3ZVXz?M@EfOt0B)SO@t?hU1kqfj(&IC5#M8$@$XdVBf4~d@UVn$2K zv^0ARQi1m6c(NyhWSY#@OW8eUknDw?*X#bZI{Xib)PvC_vU8kd=Ojx$m|}X#l20JT zboaX{rn5B~5;ov0WruGKPn^dg#{UF!B#ncwXzxfA80LIPyA*yb*!M~3rE3Z6`sXfP z>r<%LgnStpxC-Kk{GbpaE+EAll8z{CjP2iZ9REY4;yL8jAat9 z_KAfG;tNY5I7uuI-;P81RbG@i;BA89PLm?0cGMAKH0y*#pyJ$go=e0Zo#!%uKbbS} zCm4>wmmgpQkmvH2P=9+K{`{GFF29$x@)TO#D6~pBe+XJli`Tv@oaV>S3asD3^pr{D zVVs|Gj~-dhPq_RNs02x1MC*rGE?D&c8JxYYl9zUr^=beZt9Bb4E+qdB@yj%+&F z05Qsaml!4KJ~@%2`{V=xp(FNZ5~J-OY18>e#8`*&fU`+wcg9`D$81BT;4M+v>g5z? zOcZBFmY$(p9-}y`VOSnk1UCn)#t?ZpVD%<|JhAV_7HtrD76Kb^y7C5*XC~%nBF~>0 zu=+(dw15>a{f&IYYYHNwJ8r~U4v#G^c-wXKsbVL4&Z+R1o&04d7qXL)sdMKZ44pe0 z$h43!cJfVO6ShBL zW%(GnAB8EzSeq4>*n^?C+yoXk_T9zZ;NnIEHlP%j8(iG1n4h`0|2)OzR~z}hCxT-)GT16AC%e9N2q= z`+l_?SpT}6&f|6O@QQ-TH}?M>ihJbU7h5?#h9i?vSU$S(=&wZZS0cDbBH%RoeEy)1 z5g~m3pcjY;>7N@bXHl%2n|mq3{yl8KnadulLaFntsQ~#b{>3RS9{$DUYk2BltNLPa$ORVPurqdnV&p75T@tZU za1uJ44cv6RQzZ&@rz9#Y$frx^64$8q^SQ)TK84yZE>JD3>#8wd11BraSQ2Q;BT z54IidtA_1x7my3~-;ESq;h%-T2Artadx*PXLnow zle4>hFU|h138f*5fR;mRDb_}w=I{f_Gb5>6HJ?fpyK+h&)htL*^)!I3vq%;{Xsb)6 z7!YMc%UvH#bci5?70J0APS`qGVWM-LEx5)BB7r8&;jr~|Bb3^_07j!#!`M_1%klHu zULi4KbfkW4Q_Hc;|LWbVRw`=u5i#ps+uMvOL81E%4D9B@j2K{*`p{RC?rU%4D!!To z)uCk;&S*87b2skJfm6i`dYp-+QU0`tq<^q65#$|!_0yE-UKinC!;REfQBONM%KWw@ zlxg9&%@OuIw{gBS?8XFzO!=Nd+oExP8MYo?K;t%=V4g+Op6Zs-0Fc2It*lB!7nC;H z73&g~ElPBm8bsJC1~tS}X4SooJAQ|>sM3=LWvUE{csw_S8?=^$?-j8e(#z36=l;QI z;BFnMz1YJjl_71PMv}&A<0l|S3^sA%M}C8A19zQ36@+C{3BRR7R&K%PO99)nCtkZW$l5D{ zAWbZRSS?&xQN$A?fVwpN9ObJU&~~h18BTW~e&7_4v80jzRT2cH0bRIZO&cGa!a07*emzEPe|c0@N8f`%2t zHXTl*P+cL_c$wCWA+8Ew7FdeeCr*;)J;Xy7wZ#X7f7vk+<-^i`NNkCJVgl3=NidP} zB|w-T0wMo)2m@Z0Y=ODX!R+e?lkbfYKy{e>oDh_6ZED!=kmSdP%3ikgw?-F(S39(c zb~MX09=2|F5yNZXQKF+FYsMaps3WoFW(bzk63k>nyX3w12~TN+*pwJUV~lGp_q6G7 zl(+OVTT+PaP|!JcNy%m5w0N|Fuz_Pmtpf}m(G`g=Fl)|5sdZPFk^F&JQ2L!Xz%go< z%+M09yk56y&#`W7HQMktY}Ft1-zvJ#M&r_W#XPQ$F77y_p~ z>0`=MxP({UGm^(Kr^lUQtAMw#ZQeV4y)Q_UAJ|xQ5VnvIK!e+uMDRVK7p-PmT(X+o zqVwfKO%6B7&6rshd{l&wrZ{yc@q6&roi1@MskId)9=9)99BfS1c6sT)s;ZBky;_ zzUb$FMP@wYO!0|p+;FE9qrs2S;3CV=W_>h8GXbGYpP@2&KvFt;1=*`F5>uWZIMKnB zUe*G=QF+0YQ(oobCr_oAue|z~+CRE|i-$+m)gYTRwd4mdm3D$Z?mQqGBwzXC%*TmZ zX{=R@mUMZt#OxNGHDvZc^AL*;WLih&$Rq`>!j6^LdSocEkR2)Es?Wd~nZmDR-kwUf zvm+BEXY6$n;|sR@qF3ONw86&OCzeTEgrXt3u#~AEwi;^s$18b^s{l>;K&%In%Ymr} zVf%xWGHtlE56rF`i+I`AFdFXV&ln;b88O1fKs9@z_0N+sigT&&OQw=HB2~6E#J=9h zgowzVvWLu(BRbEa!px5-8VxHk{DWIT{UNzRs~Kzf~M6D8jh*a z4(T>c3Y`^Q?yENxW+Qzr9t_RY&z%yQ&Zfoul-9X276G%=mNx5tU{0czDTEmo2xTX} zsktr$dsZ>Y1~=5VgXDu>NmFule%AV=c-L5(lk};a37X|}7|K~nvuo{`M&GsF2g6uoJWl=Wb8qZn^EJX_O>WENdU0}tMdKbc14~E@lI1Ur2!j_2@ zh_4MeJLCjCF`fF@Z~T?@*_t=0Z!9VubsNmFZQ|W_rt=dUdt3flVp;4Gw1*CG--+|u zCtldo>`JlZXKbNsF-uk~lZoLCT+4$b)J^UCMB ztIPF?8IUjb=B&-^>nLo+eHF}g@813bCP}6W7a~3`$*3N}C7TItM{vIka*CXvQ=EY4 z5q@zVOiyr<@56R~`!!c-2cVao`V>x^tTuGI#61YJLCeurkQ*71_Ra#cV+RAB>?u*_ z*!WAZ8Sc)Jcs>(kpdKuU_^gQdKuFau0a~K^>k)D=GflGOQRke^UjyjdcmTI|ZV;j6uR@mXPgD420B)<95mKRzC^)jO!Shr5>34zX z>;0s}8w5hkfq<2yvleR-W0dHkugdbSl3scuPLV~N3CXpn0{&nLr;@Kfs-Exi)RAPl z4ru#Y6trm$L(a%9ppf>{4_B#h!}qy7N^ZXAz#b$V>ULWO4gB^=K7L=#eg>rg%? z=B$Oy5#yfmtNG+q?0^JAAII8;Zrd*-sm^dfHba0DCw;Q!@%$~pCid%KvqRWuHy#~0 z%6lf7^(n~gF!(e(W|taCo|l1Uc!o753~#bC&j-_|jg$I48;9qbBs*~Bd%mb;@po(< zurs)F_7B!I06+S_XYWwXQ^bx}pX?b5u?QZ3|CxQ0I%D4`rbck-mw>B{N{XxL80Lux z<7<;+yyJf?ig}B#4*Uci;-CJ|<{(q8r$nzvhyjqf0q1&!nJ9&|*J2z1;tLGUQm89A zA*~&rDgG*;xCXQZ9RT^47x(kDy#(|b7V>elq`)x;=mCfFHWWOHzI`m{l5SaVCYZp@ zIAmjfs~;igLG6Vne1 zwv2d+a2hW-s=Vr6d1hY)sw^CIeau7(2v%(^v;NPIMylY@%4*vd^G70AhQc6D?gD~N7#APfd~ zC`z!yb0#l2ZW6rQPcWz47xHw2+EW+d_JXtBh`HdIro+xj%n7COf-*iQF%m-` zN~?WYT@y-oKCaz!5_Cib(~R0FJSb6nU6LmF^d2Dd+vBnI9X^=Soqio#pCkEaqxu0y z;o;@GodE6sctj}L@z=IzcO1BW(S5~~BgZMKHxFhyt_<`UZa(0aw zToW|!*0xs6KZqbJSxVp?PMI;1h+$}KT}-euUazD{oij|G6((0-r?*Bmu;3cuCb$7I zBm?J}?J9JC$KN;LaO2-Q$>la4cB-;{Q=*ibcq4HLD#3HZB+xQ$FPLgCDavgqOfh%zgNalU zP@^`MF@K{$+SI>*HnBlagVdx=Td6bfJiQKYebDov9sZE-q z)eL8M>Myl9PHpIBLo(4VklN6#r;R1VXu9etT#kr;|$>Qfwe|i z&(g$Zi^Qgab8Ua}EaxIXY=-|odvC+mMvg3u{*|8G`wnDau=$4MWarpzV;tfTVn`-K za&wH`;0C+fbhiy=mj8ZLA5u%*YTG2)**VXf!H6Rj!)G0q|M~SOE7` zT-D854Ol=uN<&7&dX@!{vf4rxaEc%X@-XN>EFi-IPIjxbNy!ry!nTmt?nm!Q7#e$d z_PzVKHJ2I805E)A0-D}^EibTB3XKyS)u%y~2Q*>#aXmd4Mj{`2bY(&r_ror+i59P%*f+qEHmW-v zbfDK*Q4ka!&=cbs=x0|S@U|HryYgBf?Csjd+5C=HpriV>%QhbDHuvyW|KX;8Mwf_; zEkgS?pvHxRVZh1;6>fTPdm^gxD)4o$)IW$AK`U7I8CKdmU3nt_Q|%4XJ7Dnjs>iX$ ztC+JlGQV#1l*bZEIT-S;Lx%kR$f%6h9%&&qs~cznde<@gK2H#tw-*$Q`8x|b(dP&9 zo#N7em|)@tnf7LdV+$HOUpSE3gpfO<8adqM=FVKWhwZQ}FBV34t>NUl8gXn7x3S*} zhNdOnZxJRd^scLk*-}Liq6b3Wk3~L@E7sbj9a6qcFAAlu>WAAIC)N}%dGrnU*e2O~ zY)?LPyRA;DC1awQ@II*NAF$Wq`=%>{O4f1Rk2e0$RGBAT`Ry;D$#k;wN&_CD)$PG* z8saO5tKuHPyAr}m9F?jQlMYs5>wPPj*XC``5l1TG2^@2)n@SPylDqfFArq7oQB^sB z+~2vqR%st}2~~;wL05`_$z9Ngq)2X4uVhH2kI2*lU9xlp_~!b-fWo{(bsAsqjnb_| z**jOqLUaYL+)=PorpWs+vC<}QnElt_e1BJ;r0Q3EbYIl-1tW3a?!{?km?)N=LUqYvYzr z`Ui9p{b`7{e`5fA>wvQDTn5+p-zj+lIzClx_pgcC6Hrg#s0*Ugz-y+(ryUqIBRFn` z6K$9%erm#gq9d1GzB&aQ_L@Z978VJ`n6B;x*OVo#dV>S1zblQ&`r4?a#s}%OtsOcG z+`8ppY_eQX17cHqh5f%6D=O4W7ngm5;iwQ)A#i zA7v}FU{jA=zG2P2j}l!};JDeH8Ve54(qI-eI8etMfjc1LIN7RcTO7Ijel?vbDV{47 z7Iz$Bm`sbG8xHC^{k?oCL^TnhUkl;C?Ryt?7zBbz`1>5tg|Lx@qlVhxvk+FGfh#w* zQQ>QFOgaWzQ7HSdRsm`jpfbk74H=aH|GGLzZHo!;G`CWA--`dQzfNV2OyUM=CY{a>X^qQOzGJJR*~Zml zI;$d?O4M}%9%aD_VGoWYV-MmfuISK4-UkHm1WZw}G2d|UAr-gb$%Fc!_J#=gHI<&> z2AH_6(t!j&zZ{VQQ>HCBu0rfJ`OQlt2DT!3-U2h-uWmK`O_-pqI=8Mb&G$M zF(k>wwq0 z$G%JS$6=yA@7L=Ic~cB5!MR;fV=Oh0lZCvfqlj<4!s}5kxqwz~rGTPTX7Ayb*e4|^ z)YSnBZSez5LGITg9(@A{?ajsk2MbZ`YYk4dN(cJLS>$olE6=%m&*pFl7n2)FlW(x> zM699WRjgg^YA;d;DM0Sm7^YVtlO25?t*f}otZ;y&>+aVtNDGQVaBQ?-f8Vz%{i?S5 zV4fnp3*;PSux0BJs7Kh4glDl5C-d5_jmcZt%Dn2s>$tIs#oe@;BEPJ zcTm+x0;~() z-m273RnWIkOVK+>XCfO&(Czg@I`f;-Pd5!}4XVWG9}Za$5mF?nBC5D@J+1r)okxx| z5@iMOqs-I7PeOj$ZjqMS!q&U=YY+5P6mNBvun&`9eL@z8S#~S9Y0i#R0uhuD9IT77 z1H*#bq!PJw%d}Z(CAHfg4J%6c`rKGk-#L-qsJ45k6J+~=quQomfV5QHT?%DqtSif# z1ZG0!$`;wa-UFG!3g|s+HShVP6n1W=O{+=;9jG)z%X%@94gk!P?50HD9E}^$f5eptN%#0lPPW zZDxUi%BnekVG0pAIO+ihKKruN zq^`BgYgg40BM$^DX%7Q7Nw$Eox%V|Xz+DM(DFRo?@PjdOt~}I@ro@;c5y@bI2?W5pkWE_t4`5F`|Q; z!=eR6gBi9q_R@}p6rABuF;#E z6i>We83+k@WiszUznVIw_TAMq;PMs&JS*t`pw~YcA#pY0cOuCFG;XqJ)K>mF;h02T z`FGZpA8@S)#?Ok-;jZe7u6$$nH8SJ6V$d>{77gYp4t!S|__X@a#6gf&a>BVxPtZRF zk*N^KRr~&F+yKfKo<@E9bt5~vvx*nNBrYnjBi$qL{i;=p>2QW)*QMIwqW?;91YhRj z-sN*j`#6L$dH^muI!JorJfZyx9*7BMggl=vTJ=yLYuCttOt{rvOc87p2zo?=M8g`M zfjAbDMKTr1E(X-yw1Z=I*{s$sn{J?Phz zNpvGq-h%1jCZudnj!`9>9`9BIwxz&6CVLXptbV&My&`(5^o@2VQ+oYB?v8)2yQ8hS zI}**^!6q`EI=F%6?zrNZ+`B5v>1}kaCWyzNx`qGUQMN-94*2ew#_kffxX`dks=gfSJbrR7;dK6JLyl)t1|eCx!4eKcFi<7K%7UJ<86;2=vVZzWO{Gn2xPBq;e4j*VT}|Y|s~PJ5JXbY=Lc8E^wJC z0FZM*Cy<~$zTekmf%_(^vlTDq{()fE-|bh;p|7YUV3jk@&qxsRPP^e= zB5#;=M$KKA(P0OAJKZFePQC{N{Iy4Z;>N#XqU|3r(UpmIP4f}JRI1?&+Eky0Z)#6b0r6XtKjS72ZZ;lim z-tWH^G$2%THdtS9BNi-Bo4=%Y#q?_hA)5OLN_RRA1Pv#;NS!! zb={Hc^F>HizoBZ@_=piET?XAbVBYuR6203rxhO9$tHzh)8-nZ z11}-ZPKBVWxG+S{M|8dZ(We)v_~~MLENPuZFGezvXJFT*(_mDLK2j6}O!a8s(#0nX zx-B(8r22JdZ_mEI^pome{{mXsZLmzhv6mtAPmh=cnoi<9f>FI z#)P+sSfmfBzIcqMV}Hog2YDs|-;UBliIqfowV@BB&i(2>^Ruh5I3v(R})%{w9(t;ju7V1X$!d87iZb$ZUgCB;x z=%cYYHxhrx1Bx!B#)2#E9%67Qr%F=2*`y`)H=5I*#1uxgQa`+3 z#gnI#eZBwIq<%MKfy>TRyyr{qc{0^ocXip|r1F+>6NZ%0keSthKvFR69i{}33~u+e z%|*nSQqWxn5x*o<$sg0l`zQ3)j1Qr}M|?as4S4U9bLL*=4#zz~q~9*CmYb>+R?zJbNI{GwOoWnIKCXSGQl2X?Yj(DGtLqAvp3_6?6{JwKnOE#d`u3 zaL&FR_Sx*>Ih#AF4ml0y1|9LD7ubWp-N@bKVX&gI$9Kl|@e-ViVK4RHn^M0LdzGf% z(+(-QEutCBIh7Pjx^w7hJ0CBtBvlNP*{lOS?9?wFSbk0?TEf9=4zoqJY-9+6_Xa0S ztkZ=kql9Kv19r%bM53$xJ&&(&8JJOWHkF){$sA}?E zvnDB^je|4>={=$7SgULz>fpYP-bC+!#zQ$M-t+e(pd>Za2PDbC7&uA;P zd4~rKXsvD10^xoowYgrVqK`?;!sBoi!pZG5Z`qQC-_&<& z`f6XHE+E#Mm-&j0-PW0eCKTl9?r|vRKC;&>7v3$ssy1&(WZy`$gl~NbyNO~mrDbGum>g=)FEw z^vg^G*Tq$LiQC_lp~LoR+CjNW?up|S`j5*NUkj+Z&qvFQq$7B5ShKQPS1KM84t7zv z5C9)ob^Tq~@n1QfEPdO;O&wUeEEoy>bdd z@jUX`ke0Pky+ZCfsov13%0KU_2HT-R{ERI+z{Cl~u(>v~elKnE3+%-7st z#9E+}>W>?Arn&DA@|{ev6EWz9IpjKrTA8(P%et@w>vnC``Odd%Gw zkm<1y$OlB_8~oU0cO6M|k6-C-$CIkuz;*QJfCB(X|Dd8wUK~*UeWVjBR*{WK}(_G3&%#{+#oy1Ugf4f=>LA{>+K zDYLNOp|2jr;72WKxK-eSAw=7BxB2G4&V*zqGb_j>{TAkWPih&+>Bi|>IwJbWFNYr| z_XeLuD;I$HBr)*8uEu_igCwCHdGh+xv|Sq9 zT9k$K6DcZ>-3;!l*^Z8TlIx#TjwV$l6}G3kX7CMzZJ?Me80@`m zuqRI)?2TloyNhBLY$3JG^ej8Fz0K;GTtr!VR2d%h=>l@OI(bMt7}1dcX-VU)hhTnyiEBC|gJIP#qP!gAP5tqDoReb-XEvlq+D}L)jwCl2 zQZbp7Ei(Q-VW{07JS0In5$Nj&6#aBoN&U`T|BTK=(VfzU`;koy5w2Bs3ujsB!svyR zf_WZYthZ83ZoMHy!l3a!V-sI^VlRfw!N>{&pj{|U5kDJr@Oh5;w!|KgzJN zGWrgVuB*2s(m&#@q&^)P#jkU9o0UI&%&iz!H(g?tWC@m06t>{t=nXmmnkP)8fG>3I z)UK!|mC`lNiu z6S@Y_g2Nhgijd{n#amzPK3gt3s8dm-e!y3xSYJLv_4ysaYApz>QE74pcQ{xZSAS2f z<-O`Q?}|_AK4#lrr<>U|-n>U*!y-))TDHry4>w5Fc*oGhdS9f<=`Dn+qlaXhM*;!S z^kPzj98`PN5k0p^ccP}KS;Ik^99``-ov@Jox_-mrgAbPLX!yEyR^8gkjl2PQd&5c7 zP@-P&_wzMIR1AwCi_1X6Y1Pbo(QT<;wcTWeBo%-E&0FWW53b|i;IMI4bIRR>Je z#B62tI*$Blz*2t6+1@$-m&D{1IKBR3ke3hf0x7brg z2{;4tjx>ob@${*_NqX={=1Tjl<+C&Sc9dF9_3awvJn7P{cRoVJ8yT8u*`!MPIO#-6 znK3()YQ~OfmUQa{Ps#-M$D<@ct>Cq&PpV^ujK+uHJ5(wlzU1I^wLvCq^%2QIQS8&;M$1nWe;WG#H9+li(3XR#HkZG|8FdKi|P^j&} z51Wn9S$@aabV`~(UF14fUZImpeYeWyi$=w~m-L#c5fHgs1pSyM zBe=O)otD1Axt_PMQseX_RRMQ5q#_CQ!)^|J?%>cvQzLa@5&wZBpN4t}j*l-2&{sLW zd9T|Jcu)Omkfr&71YC=K?oB6zjXcPpQrD-HZh0=6ii#%Lgcttu?_wU=>=46E~HskE~Kl$!14rlMvZuK@& zY}tK3p+&(XaZ*R{|L!pv%`v_<>C&yT;{iU^?ZXa0W_8;`L_k;URk3P8~&Gz9PPH_)Z@|{2Wnh3gzaD30Z>+KpT;n&i&jZC?5aX_rEiDqQl5}iHF zdQ_VscHhLeLu5!4U5Ocx8IO0Z>g#m!eRD^x2gDS>rdY4?Lm@X+C9&%0!R7N5bX1)n z`G49~u1cBohM$7non|*|Gv2J~vr%ki#Bu{+gLC_`@pX$=$9> zh%0qs@b_%Ppp1J6stW#F%HC9aoluolMQ?{V;l?0kg-oDl*FPoq#7RNiPRJ8^!q}j| ztzKrb$W`m3`iKtO4^-BudsYYNF3AXPf!34i*1hrh7%iN@AF362BGhXqR?1)N*~ zjXOH}7L1hFaRvWdyG%$2L$%^w(^rN5{PDW3XyU;gA|2xh8x((t$I-PBxkoz>)WH#- zT7x2Rs9itd;D&C()#Rbt5c|N;=Y|9^fEWcgs8LS)%qbk!9HL~ye0cy=T1s#jNOvZI z?mOs2c#k&d!KBJPA8$~?v9nE#_Nl)gk2E1Lkq;=75NLuBVAP%68^gl@ha22M^6B0q z3CiaaA~*wZxtVPm^5F*5D(j42;LH83yp!>b>>R>6Z}}8~ZkVuVmUBO;VeI0`hd^Wq zm!u9pj^GsR=z)*Kx6~Gq*JcL!UZ;8QEoe1WSxyexN@I_b%X|tc0iis=3zM{(&{GCA zYBxH;D6tKUJC`|)S;(fBddSjhJdn?RSM#LRZ+sN6d}MNiSb&5rRCZjs5!T}nvgiri z9FQo-Ne7fZVAzs)uXBiFfP$Xl%~~s9zqhU_&*u&1iWb1mz(Lc*vY^qj!o6HoVOV&W;0axF`kEx1i@7h+ZApmk z(A(o@5oTr=B7R6S&Bk|dI0v4#OXLSQt@Q)4i~-(j6qB_b4u|D?NB3oNb!?!@B~%1yIK>=8 z3a5JR&aRq3_6%>_JzJ+v zN;E0^=nrij&KaIOTp?4~Kcv6MZe=p9?z;U$t?ms_!1m4C0q3ICg4I`ds;*G#jdJXA zwfU0&HC*({SDFpQ15ZddxMQwJ!K)uo(V}3+;T93)h`oWh7W{IW{3g>$w9pcP@9SJU zQ;&jI$veO*!ADy?PId+Lq{4D+t4EL9U_G2oebe5r29Kt`J+~gJ8}(g#J#D@Lr>adF za|TEc5Y{*2c|Gq^#cg{7ub`tu*1lX0CbL%ubKmhp_>U`!T zyN+lATf~UKAjh?&kApJDl#&U5a?fLXprpiL(8GU8(JArel_6Iy@wJbb(hiK?^5NkT z=8I03gnZe5`G9J1BOr|M;nLa0mdYCg)k@~qEuEO6bj*lf{6BIYOl28SWQBgH43(sI zjyP%QhSb(zoDZ4tzTwr}=W;&wR+z#i=dd+3%$+UL@5w`kBD*26CIP==0@}_1#)H0~ zcf*t0;)$1y9^wO1QkiYNCU(em@e`{Lb>8Ly4d{-SD%zp{PWiv|?ixY|GM8{ED;t?* zjZ_to+ky>c$&N=mRo$IMm#J>HwViaojdLXj)>Qw2z>fLPGj`_RX6=JB?Zp2OSv_?)r0p~b7xx{ zz!qEi~hN~=pI!PT1ij<0C^$Xp>kpyl&ZYJ0~~uP3%#XL-t(zH zGf0j5pwY}!)Tft<>wD9xiYS*?5J|%LyV|m)y$~J;>x3Aet>=NPobu@#E*k8TtQhj| zV3(SdnUB9tM_4z8G;F3{M(C`Nhx0Yua^&WvBoI7z<|Lv5$T`GKTMljG&W=fL8Xaje z0;YUNCj2HZ=#*dU-~jIJ4L+3Emiv!1YTN~c8`&~s!@tKHN~p{Cq$_r5!D=Z%GV@|? zC4**^2L+R*eq_L9TG2g8amVOR-Ar6TY`{ch~iLTv9!7K5YNCZ>4(+StfjyH(}1Y|9qu zB4v8ssTm!PM`lkuW*c|*X!h0bT{8qO!FZ|%tJ1&in%hWZ{mu<>MqidNW-2t{-X zTwkfFxlk8x6w;yUl=tR6+kbngCDk_$C^Un12e~wJOpxQDE3Lg$W2z14IDwpWlEW8K z0Y(;3(uVd90XaeiW|uwSC_d0NQs3E37lQVUk3>xFj&wxVgbMkQ!#66&`#Wi;w9V4L z_UIdflI9B6(tyU=D#)!yynqMiy95VsE2IlbY9osVDK~BoHTf^)ItmshB}z_9tESYA zI;Re;OseHjpm`nc^vkS*yYl3l zh?gHIuJgbz`+H2ZjFlT)3y;_eaUOEo*Gs%huK2&#yD5(NN-r<#&7rPoamYqZP1)yn zF;KnPB!xgQ#`RHnGlgA zW-{vN3gRujlNY8+F&~(*HD7wrNDf=9&?IhMpRQ33G8C+H59BX<2Bj+^*Tj<2sZ+tE zY1AYV5BJf>bycNE0H$fRr&49&NU{#mZXUVr;$sEt8_onj1rW5tcJ z2hK^3BhnNv4p^X0k=3y2J29s$jZbFk`x>ojj9uD1vNn3X-Ftj#p-m6c+}nAzuCOxW zVJX8We2Q{e(y)-JeCwzx?OoQ_GW=%B17ra~W7)oA28<}$G?x5Gt{1t;?`UB6HO1*( zC$Cj}PL_yZ?N{igQlVPKqK`uXdEw%a*u^ffxE-RPOWh*f8>cz zTnLMZhW~ErqFNa@3ctYi;LFO6rq`AD$JTrM@NOu1f>bN$j`el*`j%OzRNeT$Qp^QM zYDA*T&JHuehmkhI@K)RN*P5+J`&hFn=wX2R25UHOM%=8sDKE`2P6UW+4h8N#nFTwn zK9H3QCc_%homJ(tZ0vLp5ZqJ-u=LgZi4I!bw+!q`k=gq-1CMBMpg?@(oihKlQa zD`11kW|L(vg+`rhaWRXrgm~r2&OUh*BOb{P!`>&C%{l|2B{*4OAP?^d2tQ15B?QF~ zv#NtV>PBw{#6eH|6>?ru;NrndS~+G~>DtkNhPlQtnNs`r8q4C-dtlsvFewjormWl7 ztn@SMC+;&)Tt4+&petXJrPz$5`%%{Cc11~()bqZsIdxLdcyL+A=LC?F+kxrkxz=V9 zw&fQ%dsK4afqKbGHh;64dM^me(*J3zL6Vivnu}aVJ1kO2T1wYZnY?R92~8$LTe95s&@J#WNgoliP3r%eHI|;Z)b7W76%|aWAANgb025hG*=XS@)Ewt!fK>)@L6z z^1OU1$($(||8Ilr34C4aRMrfR_4R2>CcaI%B{x>8+QE%l;_aHcO(GouCtEB0?i7q^ zqDe&^)9XwIWxhgPrlTS`-JKQMc<85gH@#h+@7{_gQXUFmQ}|*%ruS3VX_Ynzt-MNV z(AOmP8qq#x3| z3R)En%56!*G95VEp@c5o13R=qiAzjB_;wfLVqD_2Mr6(a9n)dnzzX`Vq@Ec-dQL0p zVi4DUj~b5U$zQ&%&;XJyy^T37$&5<06f?$mCr=MY))AIVnobwZfHNh6iL6jI^o2;~ z&$3MGk*^6KX^LC?mMra{!xY9ADFhoNDJF;Jo+)X^dH4BNTdw?~x4I*b&gw@DH>kV) zYD5`8V%lmTs%AxR(PC=K@Bw?Y@IpRm_)2k>2!x;0ADf_jf5? zTki>r%&*wv$2u~dr`IYJ=mo>V*d7Y*d~g$a*J22Mqy+d8^uR&Z9El7$@PjMP znpc;`ag*oW#2ixenUZeH>)fz0M^_ZbhFR_=s8HMie?0vCEHfDVcDybR10i;>kJ%gf z$(u5*O>2DxBy0U}gD=Iw050X|n}i>~B}d-;LsUMju<@6?Nmpn))bd0Q%bfUxaObj6 zJE}A;AylAN-)7{o2QK=Mt`2AHydv%6H#t1eTGR;RKm?V z2DLSW$_B*$nwDY(6?Y*}R^d(eU95FPmD~4Y3YweAhk7>7h@P~B2*-8pHUVg? z2d6juNMnfy6_V0af-TnwD0*LJ#Ef~h2Pk>m-D*rae44dN|TcS^jc*GuO3sQUU9EQ337cSzPXc3P?& zNOMZHkM!Ctem@hMG*`D?yZf~!B$r>^@!%oiHlBgt)fI^8s(?2^{C^kz?-Tr=D1C!* zyPq(dDX3K+DfxVt?zOF>0szG6qNpTSnjjs~?OQbPD;v0j@c6P7KqYpYS3*}l1lf>> zN=Mry>LF6*q(T?wkA_thmW6s#TA{%i9b^sEuFudreuCHJKOs-V{FU_Qr}R&7GHkqs z6mP-18$i<*gn@m6f$h`#DiydWbhNw2*-Q4wk|{w@f8)9;ePuG5WV?mBLf@xXW=4m$ zuO)oy-tE_;0}j$_;jKmZ`*#!rEk2{qbP4gWmL5BTSka$l2gb)ro9@EknwtvT-X8L_ z=E44+S#f>BS>KZe_j?RCrKsbTJsI#)+S7)0e3Szr6a$F028@^a77r$V8zK*_531Mu z97?iZ=!X|?l&rt$tLC5YA*J~8M`n#JgHOYR|g@dSn|cc^o`-F!#h=y!TZ z9s~>a9^8iyKYp9Tz7$&ExJpz+j|RY+yY2|pLbtMk2b6S|55$K%dX0uzTqPHJV_VA~ zj+ZA;qNCQ);v>_}h@%xk_RsXGDZhYvRb?9+GfR?(;bVU{ReM|?{T7WVeJ$ZFB~Jsa zovJ_iP?_}feVI?`q!ufFPpq$w**?Ysu0+X(XnEWxdQZro5EL; zHt@AUH{qKR(Fg@yw?OjMN7X46cKWQTZ8d=5Q?iAV5RZ^ty3k_+sPGo}pCrgwW~Tgy+VyLtEwbFO6{&2YDOXKQ(kNcHg1;9Sdf z%q8jeZfq@E__qhQ4)ZPV_i3J23(ZqVVE47LGsvTJgOT=4N-0CS%?cCBTY@`U*HqdK z+WcV^SJY_Zg9k$OY4P3^9R4UPMTJsJ ziKOTZ`pMP+Y*a_>D!kOqf)NLcXvqlJ@QquJivBxO2yZL717 zUS*fN4EJ<8Z(uZhYX`ldAMNd_kH*C1&&dD$Dv#Go@Dk&QUw21l>Jl@3mtm$u7g92T z@(GS*@&81T9M3HG4?XFAvtn!we&>C~pn57S@9P9z?-5`iSh3gh6w6H9f}<0T=ndXg z_%;im=C<~1_1UFA@SeSRHVW^&=)(WCJMg_A`8D!7-DK@L78T-f9Cf|e4TD5{dG_M` zne#a*m7LSQ=M2N%c;GqRPPgxU4n+B+6FGhmC!N8->$UJ}?7VXRe0=#izzWA!H~hgDTLc;Q@j2C!`$?{VtBj`5*4f5SpGLHx2)lFV+03-&XwMMCw2y5r|0#I{?`U# z_DMAMjJEG-sh~A?=!BOVFs{ifY7UK7?-9UBii9t*jtc?q;@ayb&T={p{vxJ<%`Ed< z8;Y@VwU;xXYvgHz(zOtS2CnB_`hn+Mc}e0$YSEm_Fmn2xXcz`liIc(}dZGu}a9OQb z&>4z#B)I9m5ZmV`8;sCw_*~yf$B4W&8tJ>{NU=ebM=H-=NkhKCY`}pOn-@{v6P$jT(C{xehf5I) zJb6s;vX&rJ&-vL|e?jnot#%ZP?X4>Q?PptT2=?SfSE7T#z!}kKeGj)MLz0{@h%-&M zUO2pAspehZ3j`Q3-riKywvTY{pJI#`UcWQ(oPmF%BugO`BsvvfN65Q8gA(NQpYu>& zSw#|lQ|pyB+k0+IM5`ccY&{2ZVtV5)fZS+`NNZFo|5!^`*$x~;NdTgj$%U4AIT#NH zYJ}EJu^hyzf}PX?pfXX`84r>r`@UtOqcJ~PP_mJm?@wa7G46z==fJ#{VFowe6vQ_n z)`s)79u7y;TTNF{{1U5YpygbYeR=6Tu3h*+53zuao~xm8o9W}Oe z)XN$&sOh;{KER3d!rGcZ)0E>p4AF2F9rc!J;DS^-OG=7luuY|Tj5FN{c9DcYBy0Un ze0!Pi=D5Tl`vQQAPOlJn?vu}CNR_B3rd(6s;2_+sF9zY0?5fBjlGwviay=Vzav zz0|dhH$ux1dnk#fO7#(nB9BrRVq9cnJ+{tZ_iq8ph07B{O+WPuh+4-ll z+q6SsZ_s8nE{DIRH>9plUCBSVm1U@r1_fq}{MmfNbunqI$~~^7)%mZNDJT+OKFSI!u-z;)y@mQ)g9wJh zpa|S{7MiL}e`s(b4{Cf}FMyOA*L$olYRiUPqJivn;{HY0iF$=l*Eh3ZYqE`Kp|wxT zHTa1?@QOiiWkH|%C^o1S{?cH1!wau?oEuqKb*L^Xb2Iv_fg5$MiiftBh4xO=7Imo+ z{?b6*2A$$b<`(!Q=!m-52L9IIO#FD<85D!s$%6WT4McU>l1p+hYhK)q{E;BdLg@Q; z;Au5N8# zlcFjgi<+Ip=?OhJanMD=tPrH0u)LjkJc41b$zE0OZ^J~`^U_zu+ED;*A`*GsK_`yM z`h}ltUJBzlxb&~aY)HVMf-oA2VUA<5_^Xa6h+!Bhh&ZG%PQ$SfF~N*3ndz)q7#ScwZDpv0CzMZ+rpTZ8IF0DoJ&N2W$g(*IP$t})w7UwBX;u=tSECyR7iqxd^ zg#wF6ZC$2AUL)`yg@I5^R-L=P-|d4TgE}RuDx**s3b4hgGB{B~@ij`JsrE716k_8< z`kv2i<^Lu!OMlbG<58u>{%|z#h6wo2CVzdjkXl=*0jYxk4OFTs{-v0Jf4{J86lXVe zCx@any_o^xzek;@GZX_mR9pDbNw+g1yq_c^fxtL%hF%Q(MjF+?8GFDQ0nbpO#oq-k zhvR?|=L|YiFS7UgF=Y{tj>a#rU*ZY>qMqODTl?E}Kc{ z_na~~MPwnkF`P%U5x_waAUzT0n^@3P|ZhmsJO=4*8)O z5V+C=Zq#pZI$0s|3coUul)|+(5^H@s_S#~kqK_ts24rGuS6<+WMfJ|knziL@OLODW z3Ril)Sm+KxZva#lN(th46JQl<+4`lz39JD*E`NSjA^>se1&y)UD-o>H3;Zu&`}4EZ z`Qj7ldz?WwGq4U~Rs4qkz`*~r3V(}LAjL$K z&>#OYkHGbYvb|E;(OTi`FpI&}Jf1Hu;)>L))}zC)r5v+FNkKGElYR*zTj zG71I8z^MaVywjU5Nkin@^fLh=UC;j|vW6%AcUUuQh6X$sD(7FaOImVHk88&-99Mw8 z;y5RcP7s#4e-&W3m2~*6S%52phLn10wfyJfs#DlLl|CGfqPE_#Ouw z?)wIh$E=G@vkYK}71=IlQE0}N_GgiU0K9iZ8CKi$@U-=&PCkl9$D=>26%qGqO&rpq zhAbWb#IiBA)lEfx=SU={u_WXwQ)dV1e&JyjnzWknC)zC$oTUsFm5;OP^Zda@Pk&je zDi;wuM5P~ZjquFD1t!2E5;1G7$)D_QR6W^tK&RI`j*f+ydl&hMNA#h2zj*xF4*3|) z23g;uSrVchB{-wgaeC}mhXv?+k*8OjPgp=9Nyisv@|SNVE)_Mp0F9l0S)9rs+{U0T zHPnBd%S6p3=Q&ZGgDWuo@$=8x7wPW{FC7iZ&z;}2Ixn1F*c~Hz0dKYtv?m>tubfI0 zb*36h;sKxtLkbkcH6bmcX6Cg_EuvU$> zJ|EL4PSEefDwg)b^W;HG4^PEANdl+)J$bgI1|50h*o!luln)o0diQ>uz)_Na8D&(a zU&wWR=f@uR7IS<|9@c!%@AotRs=(a8OaRCOn8i8&H+d@~8H6GUtSQ8F6m$l8Li-Pq z%_K7C6qus;A9~C|i$<4uA7_rJ#S_xXyXLAuL|2U$nsCriJnnXdnteGQ45m=YqZ3Rx zv=Q2<;G5AB;LuP0*Hbr|7Jnb&UKM1_OZ6V{EQZgK=;DJPtI$U%$KbXnZU>X@2(Z53Nws8IlA5$PhKDeC(1bfIQ$Q%?waFT}9Zq49dCqewAzc}__m{G>0; zL#KnJF81z?7pyHzH)%glA)fD}1G)%jAp{_hB04Bw=(6Kk!(TNU z0DaHU=B+j!w3#&@`7h~5;T>*Mk|j%(j*9h=jfK8uG2I{YMY>g#l2)BX%d*`ZG8cD-bqoJ6eB6Q|d(UsZyM;P6 zDQflz7Brsn)PCh9Z^vR((eb651{mm6Z>8m*G*^d}ICwzig@&yGTN`-6RnmXT_}jf3 z{kU_+$o1|r=cGSKYf2*<6tjT1r$QwML!ct>QW&fBGbMfy7=sQR01v|OW;~iDGa`Q? zYFgz(^PNFz-=$>Gte>b~%n21JV8CLN{3zaQu+dZUx9HxNfBsYP6hTeODqPlWMyRO1 z*t}^!89fyE&1UjSlD^{@luwol$ShyCkKeA*g*pFHh9^8nj)|9F7iFy7a6ITaL6|r_ zPkbH1m6Qc@g&P>fVZQqO8A7|o-LX4=$*iR8YQ23U8K<-aI7Zh$uBx$V-IraCFQEZ4x+5?9YS<6Ir;RrF)iQ};AgJ&r#(~xt}6)j$kv=s}h zf%t&orvjf7O&g2X$R$L;1RMyKWL=ET^01|-0rs!}5Kn_{8UkNCZee_TM#GDh*nq*H zBOvI8Q3OHzx{qNY`9+5ut??l7M*~muQn5=d1`h)}8br^45RUMtpwN?`Qe=;kj3VE? z{F#xpKw_Vt-3A>o)ETp;&YxPrp^*2t_<0XQNn1rz=EEVCvd5n8+K36H0DD2i<%OAHx~^ zFeQWp&U7O$_DoAwbdFc1I|J^J$ep0Z(!I$y)u;^NN}44?%#8|ryVKl{ifBQ9POoue zXLpD!Q7eS25=kQIlCHcv@>m21Ar?(+=P@-G{qt=TW$0iY577luOLkbLJgxD?YC|nT zsv@Q#_Pp&BIDWNr2`U_4HxanI>(KhZEgHoejKkV81D&-5an~Y}6=iEGF%M7_5jj&+L!N2rY2Wu`FwYf-td5Y_d zKiD*xH6mJ@6NZ=qs_uZbWjhOy{|eNkNWXoTZSx(vQaV87T7}(MJV|-!SXZ2w&P)^m z$&Jq{QqR9cVZhdw(6cyFKk_DiIA&odw^^2j3*GlGH5CmxDqH2%K~uHY<4F>w-4pBS zg&s`_^?HMQD8ryI7Cv|SEceVP9F4&sBlT}tqwjeq0VW)#QFANKb^v~(!i@o3fInS? zpr=O&49Ek3taR6e_ z`JXuvN&kb_rXraoN|)rI!qKs#<-AYg8d^_BJZHi3FUJEh9q~8dHGhK=v;{iROXVK) zCm=~b0f=3`71ncloup#~aizo5M$pAu@{6CQWP+_`J2~eBe(*&`!8OA4x=BK9~+~h?RxbQl<^njseke%P?S%mWtU(B@OQr-Km1N>fx zlAguSvv-)pX3Ts+$~q9Fu8Au(;R|veLHH;bZgdjhG;8eli$Nov_`S>ywUQPI+eb&m z%>H1qLbFz$1E4Z?1LDKGM0&0%PD5rDF{QC%`CRNL*TQ@ zzU}!F+n#r_aku(u(xpET6siYp7494v>_stR+>hTwOC4AThxbulT~Ftn*384sfIz>(|vle*;Z~{Jm2z?JCDVf9vWfvVOp6_Y3abn zz!C=fnK8is9dTVi%~X+I;W&_WkE{K8VN!_n1qnX$4{j3iQ|+M zl3FoZm*0ABHglbxe5j?5cK)*INocIf=Uk1811)T7Dba)9%dP9&bFSiEF$oMOcP99p zPua??s0Nw}NRe<|o33y5?1U-1fQm=n6z=v2YYb9gWiR(+YeU8;OkvDTv)9M;Vf_Sk z3j2qDc|#DBa$%Y@Ix$1eC$!2X4GU{%-pR3pQD+OVP|Hv>A$=C?oYr!I(c-LP(HiB1 z$3J_1JQ{SSlyw7rJm|`+(0Sc2r3Lvui}H>id+s<+!XYyVU9n$v(uL(L*5AlGD({*o zKJGfv5YBcYbegJQMX6?cK@U^>nBFkw40A0ClM}$u2^F3*s4%j+1i*)w7oG0S6$-6c z%mQ;NT6x8{hLKw@OffPGu073UGIFAsOHJr_ou#CcTx3TTq|}q%CvyGq*aWpx#XRjA z0M=qX;0sQprUSgS{P`IZ#v%XbeUZgijm-9`nHk z1p!EyZUlwWz2*R63VBG^KGWn0I9Gmdzj0Hw5?7woXyWShv~vafS&Rs;-#&YOUe5Bh z%oYZ4Yn{=<1Y;(5+SLKx(T$~xo%7GVGbgfW$Rco+K5oUxz1J1jE_>tGf=8L(I> zWb`9@kUs9N^k&W3Xc~}L&UwZ~k>-nB&5qwVK+Jr#X0OcDQF$6O<(Z6&>BlcKaB?~` z!Jy{)pMwnJN_75)deKpXdRoV*9R_R+%poz@RGsL`dJ!D{!4&Z6gRhWHu>2DK`(Myv zOm_`A4q6nitP~1*=-^y5{M9LgoK>wwnXONYuv7fZxxkQQ^-=9cv;Y5Cz8n<_&=)_jp$WORfs#?^Lfo9^u ztb;1)pq@(*Br+$<#KWnl$~_v;Rqt?sw+? zqtJmu)rC$3Rs2rZkGkUl#yQ9kdFhK}cdv9qGACFS-@Bc0Y#K`XDIxh#RV*09^RTm- zkLe(r-w2bI;_a_ax6jz7mRhiWXaGiLE$=-pa`i8huJqBy&7OWA>`4)kizV@+$O?tw zTtJD8URpdPAKWk8xji!psxMwoIS+Cy6jTzfElIJR($$A)n!KWt<((y+8WaC8}|OiX67e9=KJ|7m=35GY_nC|XO~y-s(xv(@=^YioPs*R7q4&0qKTFL!?JY;5nZ zZ+qoSZ+m-bH3NXIrk=vhQ~|=9zAk&eSDdxAHRrTb--u4z7sIPeBQeyue3_*BT9bxN za?E<6)@-fLsNO~4P#6~f1!q%|FxsQC=u zNEH@3tk)S4WJ1m4JuJy!##Cth>5L)UlO8pu(mjC|rf%lFFo9<-{E7V`oq_CA?~)Gx z5#wB*=jXNtL9?0`6M3;vqGG#ktAYfnjxA5gqnRaZ1~9_vOjwH^64Qkyz8+Of(cedt zn6Z7~3zfOmUy_RtaF%2e+!^csZ(m7UA6@Y9FWSiuUg64LvcwhhbcTxF0WXAmf_Vn9 z_@Ygxxgn zI)PWm&`9-^m09^Q3s)xFg)laLG!YIYgj~v0q_`o`|9P(e{D^=?#C#lvNL%&*A;5=R z{l`p+>1sDf@RyYSP#Qb0{voyx^kzCEpQhP>e`^7ahFe{PA>4|2G_=ki$%G0I0_NVC zo0H(|CmBqf(%?5o=g=u#(ua5&{q{uW-U?bMyosFO*!02rfb@3&fH~iQe_NdKeXr9a zi_hk}E>xTHb)TX~S(>Z#9V0K(r~bv>?+40q|04CMNk6PifS*CP-Is2cGO!S-D#_^j z7fKEz+vZmd5k=SAv>E*EbVnHz1bM3tfBruuN8Sn`KO$^WPRg3Qso#Ex>vKa$V2rG;VKjG~< zA=t0jw=*xy0>y^zqR$7r{9D z6#sSlk4NX6SFz|cIV(TJyz&^ND1v@L*y0@FK`-0gs34d>IoGfTne-*HX@DcsUz~0j ze&jeBNTj0iq)a9kf~Y$IwP-}WcrEb+Q&a=SH^z;29Mgl+Ne)4aR@B{$HcqB{5Uqio z7L0$Ji%cbwmcuy>iCw9rJX1 zNf6XViH$}=p@U_jD^05Z*_zXVJ+U}rH9dd zgDIw7h+@>@*!so;*dacL398(sAMw$wOyR*-Wc?wYEX9;}0Y}o2H{&5*4irnPDZFaJ9Kp_f$BZj5=&GP)N~zmUK`lqmgW5#FX^V1yp>*>>7oeKIC(QwhErXne|e{}!TBS?~h4eap_;7VkJlL?$%>#He?ndnm(; z={!${vtpti3n+Zn1=B1on;|V$5B9vA&`6}pnd;il`iY)qzW!r_Gs`!LSFIuPB-2KQ z&p~3OUWkr1nICEBMMCrPF`ZiEQH~KO?s`Ed^22NnC^_OR_*du}`8MBx7_%FWrjj^* zb^IZS=MLw}9m?!z9K|$aXadr)d^`Zc*97H@Ipag>aeCjJ`$_IF>J5uzs(_wMspSi8 zRhS&|@!d4d4-F#ssM`FMTqs?d&h}K^F6M?1elG*zW<&<*AmBpD2$LsE2n{N+hjIyX z;*AhV1Mf7$36nv*}rzVv*-8)5thH0SHm<_SsVc%B<>}#IPpCmW#Bj#c7Ql8%1O_ z*KIREs&Pgt7Cze#nU{5E z=4jWm!U-DsNyUd3h?jSqF7$E`-mPluLdlI1l_qEvb4S9(fq;`nUX1-gFKuDb0xVLS z!$*`z)o~$#FR)oS)u!qIGAu07;-=0H@qup`q06JZpbbNpKmaP{x22?Klrzvz6kgD( z(JUFplS$m3j|tdEtF!yL}?tFDSvDycaU-X>19#o>mc3_!a&s zI(x;P_OyNu#mBe#(0z+&kr$GS39!yJa@rXrB#!){up2vF4`ukJe@`0p(2o;v*k&kR z8?*e=yfLsQmT+iQ166%_Q1JO#KS@R}N+n2*`V`_lJUx9UqX+m%V9kNTwoc7+sb|KZ z;<=+@(o^^ViY?Lk17mw3($%{YZ5IPKU-)RL(7s>xK-@;ayIjku=3K!E1e)}+J7P}% zUcq&iS|Z)nouC&E+c=x$CwUTKozRAR>dMLV1ZUBcJ%~RR z{S9S-J`MZQauui~sE~YwfgK1$ScR$WLjLSCFR{Wg@FeqNw`XONOkxxz4hKetNw@IKc~rp}#rapNaB zP`Trh3>bRARRi?BYvSDtMdTat4s8z>#C`e*mLI2WjG26w<(C_aO0SUlBGy5D5)0+R zMcaY7PU<@?Qhf%1*!-A1Xfr<2+R3(0P4|ko-}oWX^yLDTYd61piXQ)zj0gk3zwsOd zZr3&sU=Zq#E$0uh^E??6{T)nCCmYjRvZqf2qF}xaH$j(D?C_9+|Xd^9e z=f1}IM%l}z%zk+gYjHT#ppjN~eOP_KFLhSKo<_XR3K)bqrnXynI zI{T@Qip`5Y*O@_4u-kX%vr!DgZbU2fX?D*b-vd8udN@s-HZel{FhrQ5v54?dPZBnG3_3jt5v^@q%(%9bKoi)V%9M zLce89nu7`-=FBM!D#Utvp22KGTclpT=xI56;GcQFJk#rZgNrt3VNS`P7I~{wn5`f9 zhO9a)xO99_+0Z1^AII&)xo1tZrBN4eaaQu$ZBd*~cCa(<-KN+oynj1mRje;oq$*lI zE89(W-p!OUmF#@{+IM+3_JG+G9B!xKlF;xgmAN| zW3xJ&IT=+OF4l1#g0IG+PY&UXgxi_?U{znLdW-$5_Ng@3)sRT!S1-gjPLo0;x6@sk1R26U$7U-$z*nXWm_ z0QWJt7Wp)mu$ZRcg!~V9q@`=22yao7L9ls6$fr0EodOZmEYqP_H(10@!0kny(z$x^ z(T9;hR~Jm!ey-1J5pu~$JO;c<`26{p$0x-t z`TCr6mMk9g9nZh{pT13u;thpAQ-rW5!10bx*-6Dj2)G!6a#S(t1$LE6Zxm~MW!Dr@oD5=U8RLcH=HlHlXU2L z1o=^jp(G4k!QyYA=*!|mv_rZf45}wNZnOe16veV5) zlAWr&rh2Z>_mIjM9|yv8#%!e0%U$>7{smT_PSqE8BEn zPH#i__#Q|H@_Lf?j{2nx4_6y#Bt!u|7rwym$=%;gx5D!M3+EIs7pKW~B;;J>)AKKn z&V8JgD}6mc-`Zo*W&%|mZL(zrd{qE4C>`}RN@wcF_}^twBexkAcxJFmH#q}->m>Gs zYSBw$e+jEHWK81PaxwQlE}$7aK7r|IpYL<$QunKlZ`Dc_4wmojN3}lNw7$i=CbhAd zq1(oul)2%x0cU7gEf46`^6#0{`@f!GPiNBV3^G+~uj49HKac$T_#7L3DP91E_cAMo zC=J688xYXx2s5i=qg7|Uh{4J17xafDhmtT6;Vw8UH$A~$2k;0LgaG)1L1!(Du1a3; z>sh-b_^38iaFHszhBS;)h z!vnU`agt61P8s=16TLdfK?R~8V#fO%nHG^KU)sr$fi3I*cV+uuFw1|2 zH8LJvIh@a5tGNX6%AlZi6J5hby@*@s&$3~xPg-vEG^YYVy_Y7Gh)w{^T`>L$ypNUw z6xhHNIbuC&ot9?s_;8$z#xM~gP9EZO8+PRmTz|=b+Hj0tENI5`|3q&(k`0cb3lOer zykG}$Sno!v*){k`#rhBIat{!Gb;Lki}Bd+ z{Xk5}P~Ee$W-ZU>dTa*OFo8Op?Sge|M6PO)>?p0vY9qn z&slkuZL?g!N_g3p?k)e8)>ybLm(K5}UrJZHpQ>wnsJM|vF*9M3^1bTBa0iGzuVon99BL5A4S{)0r25KBnr+PC& zY77BUsxSFgTy`(0IlqfMxC}vO67qJy(roL2vBSwgq(b#G!Bm&rMFAa5hMMW5gy5_;*oFiu)@ zB=P9FLUiHa{(#6$y17Y1FZBL+~xTP zsOtroll>vmZ8p+>p%0N=`-yYqJ)z_YU{)+Awyb=?Jd6;ZxBj_wV8-VV;Nq za(yZS%P9lkrP(w}yGCyt>r`ickZf*{|7~5D)T*mBbKLQA7LvvPk*$(ig*mye!$!%k z7Ze;{Y<=_bMdmFs?b$JvC_@*xGPU&5#@hP&T3JsY&uQ$h<0YOLPmpZKHBvd1<)q$^ z`~2+dS1)eiQ1PutnaLHeDLiHmbL6Xp@!)BKe&7m-t%IbNcl;p((8K48Y|@4M6wCDtPPwtw^mWv}d$=;vw*1tuyQ?*i^K9 z{v{oT9jNLZph`D_gu)-sKR+|E_xahEg5k=RfPsaYJw9Kiy`4(uWyToqH&}V=;=?XL z=0eM%VwZVeP$P1^_3_PS(Z=ZtBhSm!Ag4#1bOyrapvAlIFkhG+&6t z&(CxgIpDPG_g)tc;FFZz3g|-aejUYl6U<}^tB&Mz*>W4Zn>)UPLFY;zTqov~o&}>@ z8>q}Wb0EK$fi<4uD107BkaBI9;>>Afsq3+*+x%Vx2(ga&n4O}|a*8VcB2bk9V8Q0v zklqA?26Om8u5atcwDr-okoTOJWPUj0&>UkOJ9y zA*}*xbJvHIj{}S)747DYfA61S1{Yo*GO!K&8>LMwKz;iAhRfJF$_TH30wuzp^FZw{ zD3e<*PaP?Mz30Y+tyN{+t>>Cgn!DAsO!!Ep@{hHYrsj2nr#`Vd&f;@`Wjrd%*S2oo z`01(PCezm3`yDL_JM; z7QZwn7&bn?fs-lcaScNGm+6fSsAd@?Hw*Hjc+L*iGT$JJFeMXQG!pg{UkJcZmLLp% zl>&>!>;h!3-|}W%$wu)QrB0GU3URS zgqk=H4e!h?LbbhRnwB8P&XSVRh3iP)pSqU32hy;0^QaUR)dkin)YnP|8Zf8TX>^h9 z^6j%I%TFU6(`bA#@Vj5(!K<%d7Z~{ngI*!Jbz%Jz;#vh)NTR7yu2o1yfl?vw{8<>W zZBW4N%9*8p)D_w9|7Xr?`J8?_WhedeZ9bSpdZNVEyHD_5#w!ZzM^*@-^Xdzx^wC`V zxnm-#*Ty?J=Bt~KMJ?yi&sJx0i@oHXq`2ct(P#dMe)&%^UL?z}Utc)qU&KB~Wj*Ku z=O$017=EsQr?;lsi4HFyQ-igGd`lJ5Fv1+H&++j0A{(nP5~_9Yd<6FIh4@eY#;u|| zZR*rVLAXCRcnT_W@QfJ=B8K_M+Y&;!jlt~$p|UTtu@Bk}8JLlZk8ys>i1!OfoUjZV zRIi`@T19^YbZwjG<8yVY{bL=Od?B8$)7ZB2`g5($%hWG>8VMy=dk{gRdiBXz1XX&T z{`L7;GoZ|w;ATJ<8%8)~%3scd^1+KPgc(Z^)(L_to7?(hCkimT12o*A)~al7>pEQl zfo7Z3mP_WhydU9h5e>o?LomP0g>)8pd05*7EB9?Kw1bW?>IudU!QhgV7*%!gS&~v( z223zt3SLP?+(1I`R8rf2D4-(!t3gQmhjZhHST?`s$qXABHR;7K7lR}?MbPU+J%gsw z!UdtYn4i33kd`W25XKu+gbWIkMT?FCgW(MdlSS#0>TR@DHH!6x&D77VZOxBIgU<9A zQ~%@_*Z6F#uJPsE{3Qs{PfkO6u~%DOt@P!SAbo^vG{y?+#S6o#bdzys0LU;FS}#uV zY&6yoZIp!2Yl_vr2}^_Vw?&&X~9@=T?2c?)y`*p5|YV}{fmJ~!m8}$ z_rpJ=vs4|?vM9xIF$4|YGb-u0p9w3o4sSZsaGcmFHT`DbIW0cd{`~x`)rl2jWHid6 zm-AceOmW@H6leAwUibs=otS>q@e^a)XFn|r?TrvFakn$_3|^o6mabt6Lt8VgP+udX zZe~pmMQJqfgB!f7S_P+`A4d80vDY)!%3kHXp!oB%x8jd0xHF=!Vp{m}`yp3?9$t>b zyI{t07u5KUKC>M$MOdJV)w4sVGArEna0!vipd%~4xVb9Ey5_!~=Szgd z!@L$Y{+9Xj@~M!Cfi*>;cL$8c!rkA1DE%xbV+H1zQS^*E1E?W3u` zrse1Q--1rOPS3y^6}()u?Z?PZOw4Gd3qgVRbu!8-6fD*j4P8^q`Ia` zOb)HGuAXY8hIVSy&glX~CpO7XUovu@3eVLaAg{fRM(Kf zTx3dIRWCC)%oY_^sfd*=pW9FAD^F9 z!$c{FOcS!`NY!*-r~V zd+!Z8@M3cg19i0Nd>hJn*z?eMp7W{PF|( zY6-#8k25wm75%`O=)G*2Q~80teS#;{jqSlDKX4{mA3Nqm%)Z2aDu$=+uNjr}{WcTU zjQw{!f-8&Z;Z?!bQ`HK0ovLweF9pWP&1BJcz_a~-?-cNh8<4TM?WAVf4(No;)Omp zORaPgFS1iKD`!vPOC`9?>-5N#t6p9VgTa&{1vv!NY^4$&X4@G#66^^P2%Xu6oZ~T5 zoEfY=<0e7W7f<_J`;)65=+!Ox+Z34^6=6Z&hDm!of?8g0J~4ld$0N^lnyUDbY%aJJ{bEy|$6)Jb-gYe5Tr)tC=X&(^J2zqq zV&?WstEo*FvVJPIU*Zkja11F%!>H#))#>-|Kj?7wu9N)>i1JVS&Xc2qohSdEyYtcs z7w$J62F(~oL4Q4YS884T8}_1xMgy${J6A)diQNL|3OhQozG3g$)?>jPn`GTx++PZE z-tIK^S+1Ggef7;dG7oCz&dgW0?9hbm{+PF^{C$dHw9L{@!(QhH>|A|7KV}D;qX$|t z3TC!p(^UUy=MowYfKg~a=kkjD5`2e@wgCIvbA|i@<(F-COSw$hr7Pe<=3?a*@EiEc ztTkMa&qPIzdG0^o#XP=aD6%p3yWh!xG#E2Ek5(_oa;#LT)VT9(=0r2s=f=}= zeG+&8O&LGYKUb9TGqc;iiNoQ=_41^KwOv7=M_9GDX`7?DS{}f@<#-f>J)`GR7cf=MkJ?&n;8Nx>=!N0xKS->jfntV5>?FUx_k6s+1 zfPkOqRW1AXZ;&F^Exe%kxX2w;bB`L(c>=>^|M`X)5%JMa`bXY0{t===!dg^h$odv- zm6j53Er0kPcTN`KY?iHh6EM}^cHMI3xd>iX=NCH}xl|8&h@Ic`Uy_NxPzl|1?qWds z2XXnIije~U?2in@{ct?!;Tr*ZUhyOZZchXa=~v;c=uWo}vo{|V2tvi7gC0FGV2o`A z%3wZoWk7CPN_?g0*MCR^iP=A4zBF#UQqSYQ7$+pXj8x}NFZAMIDUn$P5jnU@CTiwR zE6t|uV5)M^UNTgb=F%=uVE{FmHs}7A!UWaO8-YB&lxgtt&1J847|^8&gEDZZ>$AX< zyE^jgKt2h?h=AzU@Xr(|@!a7|2#Vx5eGu-6{CgJW7?Ik(l^zQg&{Fh0!c#K0e}@p& z`It!$-yqQPB1le6i6ZUW|Igl=u(xd^kHcSu@%D}7Mv;&7wCl|;aopCsxf-Y4=Y4Fi zLrJvFMj};Fvg2m`-T#=uK^y~;qGb7q^t7==0)qiC7|aX?Ge!H6w%7Qfp-~gaXIiUf z4x`wtnV0kKLo={tLMyY^7c}HcY?Q@PVg(DO*3vx^3-f(E-_`4wCaHO-YMV6t>9iI# zprzJHW5Ku;VGg7d<&^8n1XH-Q%%W;__0rRr&G(xkI{{=p!qA%6V=KtP&&ggOhoYDT z=%ix~o_BRaQ2lW@>;{msHX`(5Et!Bd@WM*K!w|9El3`|*FboXjK&mu1d!yh2_je{U zC2@y`vG2v%2y$8A#y&_hyvHOPQCu!-xo};%!bU!~RA4Gojc2>EgGF$~bIYf~Zf@I# zLWuk#pK%0b>;#;ien;i_+?q3W#6PX}(x+=3_ zmf6dG!3#>m_h(@OMLmXgYCemSkHP>2Dn^{A|RBnSa)S< zl;<`75fXV`t%AZ=fa*Vkjf#kx6veP*O9V0{VK_ZZd^KXU5R5KT4Y@+h1rF170LFS9 zR92e5BC%KO;Y-099WIAfRtAXu;huzyqYg0)B03jB@-NjZl@`5JXFZnDdUEY2pFp#XtpkiqKTNVC3KUbU%ALqW<@?Po-91$=)*ZEy*kh(PgIMom^n+J@UfX=>TRoyFTruLi zi;rM29&{c&Xyh0P96DG77c%?|Pfv%@Dc%SDS%CE>`QeQrLj0?X&#y5fm|^Ga67NP% zg4da>={(@qEbAa_VuOgAkIFjmj5RjnPE6MaK#1rEJoXXCq-=Boqi=i$=+xZe+l@!!_nVEyq{b!fjcW;E3Q)7-?TFo zTwPWinnf7ma4;HR?K8D=S^udgUV5F5eunUCtjJqX0-o>fCZl+CDWB_Q_Y$;py_E?M zGge7F%d;S6dJTwC%wrGy9L7CF#C~KU14+VCTunJf#^c>jV69?NfaN%w7<#WHY&KDPs$(t!?@N4a3n`4_6ecY1>w?k_Fe z8DxdN`tG)+%IH6xc2z0umyLrelmD>C1><1>Lt_-IyT<6Tu=Lkv94!6Kf%)rj=~>3+ zsB3d#?deukNG~E2)P@Yc=)i&)S9)cQJ(ojAWv+A%T%*@Ka76SoypAU zwuy-z$ck39fmWHar0KvFZOR7@japPlRL*0kPED;Qm_m9ri#E>jXAPP);Z&vCygBeP zP(LQ7T&wjPqFtjmR{v_zuWwK*Qt-J^ouXm0fpRK#=#vDHQ!=PAGoof4R0WFGiwmkI zZJ*ai)k1~Kf7GOEy(c$I+4^mpvTjwPY@=)Ss9Oi&r*OSgRVue=*9!>6xE{DK@N74>rNbyt!>d57~=)Ksnxtz`^{BMfVt2=j#zTVk z`(e^8$vZ%mvO220t|Q>EvQjXAh%U7{yXB{QW5;?qN;I^GG6#&ba{~uySzNlffmMAa)c{qzo#+SlwVwl}-o9Rt8k_1x@+)_?PbZxnXH$_Jh!H3lG(b#JQg3VE&D>Y1;{+;s%pH)?cw zs4Cx7pL6uJPUjE3)Q&fec)8mB=0I+Y(zPz=bgn)2_5MYeowd_&*sVG3UA_KI_21}( zHUP$R-w3>iT!QsFKN3}Ms^1cIt;_O}SHfmouZ~E~s@<3j&2@JDr>}S7I^yL0<98lz zY?D@ZFU$vCaU?vCo@KeOU>&i<0&!#FiG_zQrdY3hqXFdpTN3W1$w_=V=3a?4Mx@8V z+|)o&z0d}OdhHt!Rt_D=2Mo_Wz#S}cHAdtw3eHW957{YgfXMfL*-rXz*VlX^8^+Da zdKMyv%xAsxjR?2D{ThYcTKw}|tA4Y#MUI1GS>%t4dq0JicWwZT`IO-6>Guo&!T>P6&P#Ztp1BAILa?R71ibct6zWp^=fdn(&Rsa zbvS@l&(#50qn~!iy{IXB-3*S8FQWD!?0h^HmokozVXOq$HyDbo#Zi7cgiE8N%Z93a zxO99RWv>vX5xrtG97lQl2^ep15K)79ybkUoZp)1gy^2!Av+{~h^oowz##`-My;@rs zmCCDqr&qJZPj9X7&00~f`;Ncsme>73uNx+pZ%)eV{HWIZof2dH!AetU#y{}N~2Xh@s zIif<%AI*itkMt_^ZNs1$evVb8nn5m}o!DR7pcn7{<*#qh4aN5TRlhOmd=xUS^E}4O zEEQ@iN^-ZKz_`*>aO|^*5lRTI)p8GE)Z4~NQwOf!jeoDRXb#-s+O6GW+|NNlXdW*# z3zEwvt+*E+43kT|#$SS$S*CFSWo$0ldS*P}g=|3kctcUgg>3INMzky~#wMW`g^5<~ zXywT29ywZ-a3_XT3uoaVH_;6EYEVgUs?>9{S5>LyhSRT7D^CJq47@q)e}JG;XVm9U zF*@Sq$D9RRp}ca#+ZcH~Sg|d#uD_`|vr@mmQ+2_ZoHpa};9Hq=tsazd(Ppr20aB}Y za-Qr3RnCw-+(U!Lsj~`4eohsofK`J-gXj=Gx|5H6GuSvHpsFJ`$M0$ax}+p1>w=F% zj0JV{n-M-Tw9&WFCbcT*?d(>f##>2Pb+_gMNv&n8_$A$R%W*VnHeoa%A_eV@qJH_} z*&&PD5J$r>8^HzpT4dS`o-~7R%wa&G^(86>vt9=pXbYO7h_rU7!VMRk<5<7}S~^>6 zhb~M2H05!%Q1ZWfD2|-mkrUZkm7+yWV>(EI2qZDrv#`~hwjj1AZcK< zfl0D2+W6G^nS5cv1=hy{D)H+}<-GA{e;pFG4AE9&PAA~ZM{d(9l+|QC^Hn1{C+-PM z2A{4(KqtZ0RVIsPt@eo2>nbr>wZ)HHt6dlByGP_0R3#yrYR=eb4SR9&aiY>bZdwXagmw8i)op0fq}1!^AP^Og?xUB@oMLrr5Bg!AAQ_6^`+mC`o{-1ce3w!Y(OR zn@0kzSK7~t#;2oZa6k)dT!C~1^dlQFkhiB<1x!I{2H%okOJx3HY2PUA2T)KsjxJEX zsRG3*>wwGVK7(&vva#nc8usHXs~|f0rjO0t_a?}K`#65{A8|Q`9?4=iC6Z~9&O%=3 zLdP!!S!@d!IvcYLM?C#r>B4@mCE1;B88(CO%G#Q^jc-aImhh;p5OMreS_}Uf8~BSk3ke>zhsS z+k&^jZc4@3@Uc(o_N5qY=RCW$PZTBw;r?o5CDrWA029^pBTGzJ)w%La6K=p&1jBuz zBmt@t6dHiz@ghLDjxeqF_A?U@M76EAeH@u^*8lMBsLq8Le zh6}aU)K-~PlFCYv_RyvkPTA*ByHU-dR`Z?3AaF9?T(BKrNHoZ0fI-jH8;ttq3q-8k zV7nk_#GT9t(AI4RZ6{EQU0k^EGI{Z>4Al1Kgtckbf=}Z!!xy8u9UpH72S>pb=D7nK zW_l9v{Jso*r~RPYQuSDa?JYKJWCLzZl`nDt(VW;Lhyl}XorT$(i$wVw4^~!!?!f?J z;I!GFEh7XRm+83&w%&E#h92O>b=jU|C>?l4kB*OF;#5{DCJBs1kd*G0o!qONhs=W> zVM3c^-0KBTawg8x= zw1Kk9X;B8x`LoDa3h0#I3?M2{lOJz6vk9by#R4(jWa>9T8SvhkYa;iYNLa+7@}zP+ zc{xwoX(l4#_Xdg@Js@7mkBUBoowIWKJQYtdzL825m;?$L$gjt-B;Gdtt-^S2@=^5{ z648~Q4H%HaCA#QUNjgS)lk%lC9H)Od>taMdO!fWi+lhd`e*T?!%qnoB0`Gi@9 zHEBNBBG-l4&h1fhCK~b@UWIx8;}R`5r=>MgswI{ z$dSCZ6+nt)93qt-*_RzzT^z~YLJzhpbx1vb6vSIDOfzLOQ<9ED8JN|gN1n|2I4sZN zEO9;8*3)rFWN+3Bs~cIWmUZXqAU!-GRro(mY-ugT$ro~)MD5pCTG`1b&!N2NUcf+FUO^zm*AHM)lZsF z8x7o6Hf_i+Aci`9ohj4KlNcj6avHlM{JS#M8#Lf2dYhD~Y8e0Av>X-@eR1e>6Hal| zbK6?!$xq`(IoDEj5^>GlXq#3`YPgKiaHDHGV?x6biQNoW^4bGv11cOr*MWV4ArwCH zRmae7tKuLM1LJ`N!)SRn)E-3(PT?Rr-V_szA$QlPI)qkB6-Uq=6B-T%G&XJ?O}=%R z^&5jU%i?w~`hzFqC3i2g3~SPSKo5x7&h6a7h~BkgrWSvCb0Y8k{}imjh{?V$DA69uNeA=?A6 z*rx4`MKc$!>}!6(mxH zyf2%v8cTV4wrVrR!ggRBy@6e8b5$?ILdIGUV0JFN)!Y7py#{y89B?c6>n*h&$otPz zp;j6Iy8^QJkf(cDh+^wBH+Hyr5l=2_#1NBbC?ZcN9^aT~yx`jeZu8*Vf+@_Du`Fc7 z8JQ$Wj^Kqa|F=(iznM73#q3VfJaaPn^@zgB&1vy%82j#JQze155RX0QP99R34aa)m zMRI!fWn3<%oF(L)V&Rlwpa1&r5|g7>{YJ4uE(cL`r#MHXEfDFrGuX;m))o|Gm~?VX z+LPRE?i?Jqr@Py1PExcfh&Di4<1THkeilyp#jZR1LBb?--b!Fn}qFNG@UMF zr$3vK0VoO2@klor-Eu@_*zoL@<2lYm+HD@L`9&P|($m|BXr2>dD(pO2m1cxwo@HYy zB#C4lGeS^LdN!S{gGz`ttF@ytO-@IMZoTPV*9<=Gj^h4Op{l;@%Z zJ+<}dBA|sTb#c0&xoFo#C@d81V6KWb&^zt&JHLhZKkh#hD_;innOP-9 zR2>6{xnT~->)~xA=<2MEtbP-mjYMR@*n&GIr!F|#bexS`2D4#oJ|iPUn>09v|b z{kZoMRlz#0ElL%0%JLR-ZtG2ZKPAWY!mYq{y>;ixdA(RHxNk65?)x#ioX(@H7So#8 z?d;yNF7HB6?5lv`cvx2v+o{%S&cc3;qhUDgoL$bAgZaQ#U|_zgbLC$?Bo^!|SO|}k zcjHWw(>?0S%ji7n-Ln3CA)AViJ54DP7wiR<+BF2@YuZ=}AXgKPZ^iaffX8Bo2^IqK zmn9&Vva@3D&Y$e+3H(dGc=bIWgU` zj(j0Jm|n?KN|RoGS)onLrWa;$hnJn6+fu-abLkNk=EPm8rWaf_m@`)evYaP3;sGbD zu*5U?|^3y>Jwt zM=w}UX0^!`z%1P83hK>ivn#-0vEc=a4Uc#9j%b%dhnVGlJL}$!;(qjd5|6T-bezm} z&Jr_W{EYiE_0Bi-jJ?+|nRPGYq|+OBqxWeyoU6~pHN}RTk+4F{!GvRf4<(j@eX+LG zQY?9tw+O@fJ{`QCmDEDODwI};@^g|>h?W=9NwAPkct`JubaG8u$VO5Bo(Lf`+RsLc zSzLzei(t^9UrQI5ZGtLB6-2=Ph`NG}GL@$5+DCl4Nb`R>)61KOH;UKPv_H=!1gClbG7Liixg0&yF_pNJ4X zfZ%4(pc2Xh6F6L2k%{FCfP9QDFVdlY1%Wk67r(MsY~B3i^t7mDLP!Q4>L~=|TL(Yh z;5vAgT)sJ(g8t3=jhu};^oLPG^Y^T&{0A*mn6PiBFoCE59$_zwtl}!p>v7CVtTE{= zWPh!3*n+n|u~)5Ll$?&v;P<0PBw|J=QjlN5gX7p<0hs97PJah2&=|i?GRSm z3rj?>utZ=#>x*Vn>hZUtE4SAmamy928&hlUt+Z=#=qcr0cdsjI#Vhk}EM(q=%Hlh{i)zL0x^h1`q%T%5q&GJzKkx&DZwi|LMO z1Q2AhUzkWfFJu0_m&fU?qqacq-G~d@@rvY679#mVBzJ~#A(Gz#k^Ft!i)JH@JCKUw z?AfK~6=lzEcOiZU3-KHK`Gtz#UAg5ijOVvrm-r&>`WJC`bT(bkrfUi1coxN{XVV35 zsestMS8bdfxwckA$ud6ZUR~y!g)XzuWt^d0=rVUemwC&!*!}qL8MxCpkP3Afr}Uh3 z8K>QaE)&dEml@4Dlf*zw_#)YoL;AIa28wC;pkt&X^bwgItMR}qj&(%WnOCqQy7dL~ z3FgXt7HZMG=5U@>rudxm#*J3w)A14qTsc#5s?3wSIE^pZOfWH<8KhYjw|hWj$I$X1+mqfc*6_^_@7KLu-3M_tMd{%j#< zqo5rHVZfPCa1oEr0)}Cbo-hK6f|In@OE2IJT3#5_J3KVHc!-@kG`gvtV?ouOP9Z|{Kd77l5COTy^|1shPIh+r3< zlW<@+yATV4g%b+)bDF!4b4^#l`*JM-a{gj65YYWCbd|W(fpKOMFzT-)+~;s+jovMH zGntd?(7m@Z*n3-TLjxfZcwob*{if*F7_xdY1O=>6j-V>cNtU3RUdR){T;&NKF79oZ zM7v4Y?iIv|ufj#HDW%m}+>Lf|Fy@WjJ>+uKs;kZEJiM!*4Z-pD5=M3dhSDD3|AGmE zGvR#&V9U5*LDl*3!vZ80oH3XyXPl98a@)0yYgYvCCkriDsM9dhVzyYRUHQLbV*YMn zVqTb-ouOQqnD2mzc|Salo@H;tVc3r#y7Tn1k{4p3nB=WBCke^h{z5nk7EUntT^h<`px(Ux*nCF~b?kg_u!u>wgsvrr+&#AcY&eUa;{o%2n2^$$OPQaON9V zEUr?u;i=t?+Sd_9oN}WfR@?YZ*0691wr%Wa5gS^!W)eM zs)og8Qmp1mL9#+At-OUye%qB2`>E%T0Ie+=azUm?lL)IPd(@HEVFU$vALU0)v0gD3 z8Q9aNHV_3VAS=#s)%n&xSM)2-<9vYIVt_kAo=VeLu~38!aVH<*c7-7}p}-(_4vyQE z2HC7?NoEIZu#fK2XcwpDtn4PK^TFDJrL}1hFumeq#oW>h@o^zOesSXCEw@tf%ULhO z%XB>YV``a|gjV5lsa0dHS4*w77jk4USF4n~Wj=M(Q{!^stehR=Y|slY-wdWcvg>HH z_Ckj`Ym{LqGTzSALz-D@9wAF&s9j8uFX|^+@Yuy8GK?^qB#Mp zH0;F9h~-4f3vLq3m7AR7b~g)ke?s4$fjjrJ61}36kg_qT)3!SfBPj_S!TIHCASoWKPjX_22>&e!I!IpJR8h)(qBz02Tn@SG9xML6sRowUz76u0AEJh}`@1eve0 z&RNtCXBmNrvmI-xwf3={oOTbF&PJob=IZJoy@-bGn6btFDx0k?V~ndDsehasly|r^ zE9s5HeZ9B|cSGlY4lkMV1d!s+#VzHW9pv{}b9WME1rATvn=6+mF<5Z=V6H0fEO_#C zylK`fTqmnpv+=2;`z_dbO*T$4iz!*Tj~$n{h|v~$aVHwSXFM+&&5o%TLM@KEP*ihX zkr#?^Sg`hB!P;xG_KYB`*)jJK!kz0tY5n=K*?S?&sLkNZm~)j@y++yfg;924ly!!3 zVU)cCMp?e@XCa3xZVJ*Pe6g3*kB*s-BYf z`1wbbR&72sTmCaS-?>SCv*0rXZu7Ay&mjBhgeKVYqQx<@tgbV#l$(f7ZUDdM>~ywl z)W<$6TYjD_EI$j&k291D%g-IK{OqLte#jQp>{Kx?#NsHvzFPB&fX@qGaSie!@SuAKzirPtPMRjoyB2vnU*P?!XGmqUdgrYsMDV9l&ysj(SrEpq(1k zd#LPs#j)B7Z;_x|)*3oc70yz9SE@p=#ZFa)Rp;eiRfxnwcn;<&JkKuM#Ds>$4kv(X z%}X&u!=j?sg=KMA#z<;&+)|ENsa>zp@tcLwaba|HhH_zayty1;@6V$C47|%JU==ce znHA=m0L*N9A@l@u6?#T6`v1zR3OrOOMQbagLp|PmIe;SO`uY~l5(?Vz?)2X-cKXFm z?+oQ)r@sToi(qYJl>R(Ux_Tgq+OmNMUU9}8y3V|E=FqJ#goI$emJvP;d)-C2r}+vM z9{R5>SNJ(faZ9#zA;06#Bi0IXX#BIf`i~$>$HPwaimiAC>-Tprw;}CPFKhjowffSbD>&&yad#}^c{&)aCqwde?@ZF1-yRaNse-4-4gMh-y1nf^| zJRCB1)4L3kbQEN=3hvmf5*uy=dAMYa*KWTZb$=iB^mY(9z6e;?0D7F@3~LcWJ5dr2 zO_1I06>X@Gf3Z88KeR+ZbBih zK$@s0=MbAqRXO7tWsECrzm0HGD{Rc1oINGK)k}^?vA5t8yra+d zb^ec&ZT_3fG`zN6ic{=ogvVFqRsK5eGp38;MDTf!*L}@q$XDWLybK+-dwGe~d=v!c z+m)p%UV###^3j3M*TD`FX%>WuQbhu$i-h*Dwe(sBg#R0a!>}KG&Z6OY+=*KI{O?sD z9*~89egEp^F7N(T5b-Z$K|Z>BIJ`S)auT18harr>6`Ml%Y1TT6yWJ?!pRE#WoOh`q z5Nt{W7*Ao0k+;HjM8-QJCL1K(hzSI7_B>5Tj2nal_Tz-%7C90SOch58R=5IXZOlRv z)5IZM`#E!)p=S6Joy$SOQkdx=q;1Aj?X8nD0NFmmdls;UW- zgK>7I3DYgsH%30)-E$!CrX(TbDT%qg+=Wc!a)H)!>rpJ4x7Wh6E?duS z5ji`vLTB@hGz!>|oX6=n3t&J+V}c}`!NpnJIfI?Gi)HyJ?sbE|#?kOHK$4EwI)_a* z8$_M>)VfMz); zj$Z}iVb6TeMb%7|n1D$LT4j2Ccdz^NFzriu%h2Xni{$c`qyH{C-Teegv6_yWmy3wl=%9;Vyqq7Mj-8NA;ShtlIOScjF z0MYnW!G^<`7~5djLIOHq)G-vh)fgOS1h3=UG|2rRmU^k&*bNsrY8`KR2}&jx+Qd9qO>-y1kUux3e)`#BiLOgERJGkew= zCo$uFjJU20h77Nnq%!&sTV?6Ric6F&#wHR?+8IU}6W20#&ou~)nLN7XxdVW$Xq<_|qYDR;uL#9ZR zsefD?%`Ea%(;{GQ|I-+#ulcB&3&S3liK$$u=|Vz2II2$Zc|Q!QC(UlC6Sd+Dv~^%S z4V{Q1u>-6WQJ=t|W61Gub(z3btfL^#TnlUSX$UlRhC@K=+tHr%(d>`Z6D# zWdJT;w0co;3W^1Lzg9pLAnD`MU<58SUe-A#Sju!aOg|g5XQSYP$&+9-J4we$w-x;V z={V?**?bFm6O~yeLBxy_hPv!2Rew$J3{otih#^=$TnZiqzENYZ4wsf&hfCF#?}W0E zqUc_nA;Mr+$$|^kkvP#vz0Q7+Gj~YL>#%md=6QQ0Uw0Y%bbKAKn2?*l<=B-irDL=p zZrevVl5Fo3t6x@{IP`t_cF9<7DFoXO2O3mBoP?-Bg_X}uh?q;dam?)^@Tiq=0|9U#mSoI7iN;-NY8>x6VOdysPbXI_!r% zrhs2E&UlfIdtJ2YL!}@^<8&6ZF9R?^fr9nH;SC=ItL03m!xSQNCTK5VACIy z^de!Xc6qa5G6FltAR3-9bf60%A3gS8$ZG;)OIbT-;W-)^QXq(7%mh=$<&72rB3K@{ zO&#`tF53}0quyoFD2$@b;Ca*u;iv;3fS8RCq)7v@=!eM|M+>$K>`9Uar{i$QdJsic zXIUS3;ph|N(OF>d=3j zCoCc;$|V}k@bfc`R^`D1aQ8?%LK8*4XF~7To(actw`=FT&DM!`cu^C~xxL(aFdLhM zvVB1d%EmB_6gjC4Ol$bglfAOi92`}h+x@7F>r64N85bXz_6A@#n2uzr7@VRb?hV0o z3{WX1(;}=*2ike<>`YSDRI*nokM(gIf&T!LY@`xZFH`;<6ff;%#@G1#jPmr$^D&RJGhgPpL~8TVjrbA}J+e&ACm zUFh-yoeVmo4gy>5a5$VdKkV5qKUeeDrW|$14Pm18iXl*K3TRNqvsH-?u?01X21oM6 zrxKBLOz)DXI*@{5@Nk-VxWxCsr4>R2@ocV*vN4_vZ4z2g-i(QUv4X^CdSAHQ zD~bj;#2`*aDYwA$#bQ>|d3=`7tXOPW7M~`K&sR-~0Hn`OzK#h7P{c=awpqND<%iUQ zw(&T;QI(Yvu6k3Q#EWT`r`)?qcaWA^K*ja|A1uervaz{w`JO3HKtc_>*kZBMGp3yaFUywyrtzr^kdu~(=2MI?4 zd!O!O>v@mLjUi*)g>u134bkdy@W|8qLKE{CHmrqNIjAbsfmQj0fjMK_F7}p23xUomlC@$*000{O3oYvsKu$nB;*0=^jXyTh_aeyAcJdb;d#`Z z!YCbQ`v74oM_X}nS)B)qM(^$kgTxEFvB$`An1uYcicb1XlB|n}x*{<=gPSBl7+@ff zK*&I@FZE=UfY(znPDKOZ7F#-srZqSarF{X=JfaUeo;9 zQgd~kpzn&rTy8F?2On@2lcuykM8Vc>Hy&-eW#QB3GXCLG#L74q4dtgjjKYt^JF+$S zQq~&uVWQUP1!;}a3}?=^yj3%J3$&Cu;Nio(aI1#~?e};Co#}C6*j}oqE#Bfwh@9IA zS*id1FPOCQTh@zV7>^3*S&jtNf8&ZM1_qJ2rl0W(EZjB-hd9FY$sdStrSFIF>1i~S zPZ_}uqWw{bp{M0Zz<8MKpMS$BrLIQh8Ki#s3T%~ACpxGv*N^AwlN9`l!v zYEM4YDea1xv2mDiA!`2)vjO4z6x-Szlk@ zVrB3*;`voWyS(oNCQ-NU^*T-nj2~tb0)vOKeGzd9s302CkGCS|gC1nzSsp7u=xwk( zU6IbD_R@MrN0I%u?O%P5zzQAvj2SU&~R~`*PkNH4d1D%V5Eeru&RO{HT0aHMxTuUM|aN5^j_E zE^!KoK4nPSx9-)IPRjRK-06(78F{NBEzZjY*`llo9FV8>^?en7jJUI}h&0B>ZwB7K zDKVh+ZkbFqn5xP0D}iO+uxdrl*&UYP8k2d&&X!5ssE@3^=Edz6op5U}b;7mPq)^Ja zwYD?dH94@lq(6!KY6X&;aHAq!N$&?SDq#piAfj5P2y!YyWbyz{f98v;Asd@g0Fngt zhow>$+_rWFpg$xo*K*t1q?DUBs81ogi7C4&+08pzli$IkwV2_4jTT|PtsplCBmW)r}a_Ap^(nUEix5t&qcm6+C6=cc+So7v}Hc3tJVl&_ePmGcSaod9DIs#{2R=XMW!%uOa ziP`#72*Gy|^?D>&jsPSB0cn_OfB_M7yla$g?T`EYa2Wq>xe%AH!n{p-pGGJ48E?`i z?zML69BpH9nIqW5i6V_TdBJx)a@BK2U9{nxPd5BZ*u(89Gk;suTA)yQSG*aDc#0*T zV+O09?EgZ*F!sVA>#=DV1`wCsG=>KMNrxX{d+hOW`O0{Df)c%`NUm`Nw#jrZFfic{ z5lbJ&EsPVs0gILeZ=P^TvyEpT>qEM^h+fuAdZ@anEAMt%qoxlZJh|EZj*ll0J|c6! zH@jbEOu7>*ex=mM>3-I#pVn+$?axQTH>&~W)Vtu%N?_}yNyKAQg12|BnuN$%rDt1} z>!%JOA#6@4?*y*32&#iPZX2V6n=NTL7VpsM7<3K{Aswiv!RIR{{pWlo2<#3}p}=WD zj+(dtnnNhbuziUt2Bsp!8$&#XYjOG)p<3{<-Q*A%AOTW5pGMzi0H0qf5}c1zfNfS< z0`rvz5U;t@^1LJhF_!kk_>UI|vpZecId)iIoAlhl@oUFyyCN(_fxSP^iYv;Rul2;W zo){Oden&(CG5wnKQMJMTmV^^Qw!&Od8AnA6{)y7Y$t>(n%=&En^{>&No@X@6q`$dJ zekPe*>5-G28!dlt968y=sDmfF%06nj)p1xy^EyYrSI@yaI!8feNRlbQMSOIeKh+W!bwL8}V%~%vV6R8SKKfd`M!n z`zh9B1<02Dt=d)4UqYVkyO!d*8%&3{GgTlWT3)KNMg%tZ zNKo=pu;?lf@jOFv-D0_Ec0`RkEkDta@9@`+$xc;|*={9imr73JlobD5hs=bdcjrYW z(RZ6v{MIAF$U#?jtw|fRu_hfKN1xc>bu}p=*EnhE z=4%h2;QYC-xzkzUOYl`S%1n`0|%oCvd5QEL;} z?l4weI0_+xUA64NoTPWSK`|Z9GIKB=;K?%wiwv4!bKN=BkTY^gdB2D{)jTet!( zB1JH{U0O_9iy@o?wG#!aH^7*=w zdB8=Cb)xp^FdYxHy5cucQik{1v?Ik6Wk-N3ck~p6)f1{T1boa(!Y{updtJfdDP}wW z;P7`j=&>_`m4Y7MlK8^iu1JF@!ZVFhOpu%}B@_khZ9Ql(I%x%GqtRe;;?z@~Co+_x@KYaVm58r$jbsul6uYLFUn{H?0al7;F509hv_uqf}oDV99hJYB2`v{9CPt2u4D2~7SuuMP!#$vj@G=8Eq!)MMQSVZ2d|iFB z!^RTXk+Fbe3S+G@h3@~lw%K73&3F#(gCk1ocU#Shl)JID0|4^fPd zuhNE#A|NWIL$Bj1!A}-S@HH#Jl~vnn+OkKteGz77?KB*AmH0cMa;pGT)Nd_^6ji-` z(8s(B)iq^RhgOy+4HK!rl?REGd)+?&dnNVYaxq5$fRtCed~B|y?p&tGEBx-3E)O4m z2|NwEZ$r=$!DX>4d$S79oruodClTSl^wb+Lp(%v(0juh>;V`_^j}^z+nQ#-}Vc7Lh z#Z7J6jTaTo5$}QBg&>wd;-?D+Cd1{&c3B~!0BcKoY=orx!SBb6S+l+fH|Ao1#ITc{zeOMdD%G{HT!dBwp19g+q8M{)$6N*>4C51bHANJr2b0 z+1WBn>`z5DO=_fX)~va@$^_T}&#G$hNK8Q~Mj_=I4IyFOV46n{8=cOWXUaE~?Rjd^ zp&3S!9L9+YgI;tR_IT8TO%*~86GAcurQEqkoDZFa=S;6iRCr#jmg!#KV%?IP5_PbWfg1 zFQRnxUkeY3Dn z-7O~#-9Gi6tz2bWfmKu2IQ1Sfi@SCyug3+HpTLR)#j6;QD!N+$IKn`ai&T>sX{t$O zH*Ly+$)&A06PjXR>}pzJ@Zd!37o(hD@O3Tm1aY}81rIQEbvtZwdVdW8+}6za<2p(i zE~q*9X;f9Jcu%fRpR%TY64wmHDV6g8NdvS82egaYlLp~NT{x_PxILQANK)i&S8`k~ zGM#<{9iL3K@g129El%Gjkvs=YroaNQKnmm-^pdA z!J}EZ+-9_bRn4?zOqSFga7>ljfP&jn)oN9At&!l6c4|j~Gr*~&g$NNbFYoFe-!62I zd!l>%mV|Xx4_0*&%>!Dhu6VH0Gt@g6w0m(b{8tiAcp?lnW^@+J25|=Zho9hx9j@YT z1(;2wjmW$oY~5Cr6u4lAJ-|yuctj$4^zd2r9`XHIfq0yMwcDzF8Y5E!ER^x0aDkV{n;d#5!7T%C_(3U9Gw3 zALaztQ$Lv6@H&O`52qmcc2n3x|B?%|RjqT=XaLT_olXH@sMkE&sILE-C{KSg0oXNz zxudsTenWwj6ah6QU&8KOMZ9#lI+recLXd1?R(T#B5tx!kxMWZ&$(CFQP^DeT^1Fp( zd21v~?sxCa+5LT~a490N*OV`LZ9rZ7oel_2VRxarfnG*rMF`Vc=ot~PRnXy9+74?c?TegG>S7uOkWJ5{ z;Sib^W8f0!1)TBcCnWsmQ}gGhAseSBC#((h4IqqYXHk55Hp&5t-%qXI6v$uk6#)|n zPh@_l<_a&?Y3?3S6ti3G;J^@9?66y#{15S(luoTa{yw9UvcnZO%j}ef>5OGT0;duk1;R_A~LL;?)wYj_YxpE(05o0I9 z=PJyvibt<#Xj%rW17{ig#;(e!R2>oaDsK0pYJLB-8LShJFX_jB(~kvhN}6w#5veN3 z9~2L_byqcCrs@gfmk#|}Wm-;GNbFN9~RSXjH9xaSyK}1tW7GtXYTg0kRk>?w@sQinlqDLLV zeZAtas03#`(LDD|OiyMrAl5OPo zY+f)7$8aqt4f3>cJh7yCJ}UE9=_Nq=(o<2+CfTIG@g+c{L;vcTC#?e47x-7DrJQ7W z6r_*i{iBqWF&@dvWBZ@A;@}!%RIg}`g~+@N>X#T#ZeJ&RaehC4Dn|>EL}N2Ju&LH2 zTI0a_Yihx`xffL;Kx*ZLId zY|?6@IvnJc z6X3Y=v-~zG!_1*ezZ} z>pt6sKV3Gg-m{$x&tis*g4l8tC$({uk!HoP+oehpW8ET)QsL;LQB{y+QQLHF{f;wa zO0VSgKnku|#sUDGi%ERhf5KtH?+rpu1FH~EXMs~^zR>1z)0kAVn0JOZ{jW5_^U)Y* z6267+qaI$X^$!2=k|unYqy8{GM_v8;LBPX{JO(GH$Kpcg;{i}@aK6^sXnhy_FKBdD zf{nHH?}ArxXP9Q`$tc)KhYUWyhyQBtJ)&|r%4K@d=I==i>o@GZLbP6hhhdC(4%2kR zghM_|9HG(SC_WL{EAZFhi1$XM*G74iR{-aKEW%_Uw%?to&<5zjh|FwR;<5~m75qgj z>~|Gx{)o${0u36dY8{~RYYNK>igbQQ=|^BIYEd@?CUCeO7J>N=IoqBRteY=(FLK`i@JP*GjU9%6{NumT2#ne zr8LhJcctpppuhySNCanK63B`|-iE3AY~tOE^?(60bq+mmsM3+z(6U z6SUtK5(9RA_fymvkGSKi=!AzVBtOuH7*8lnHqi_u6SSXGys#9%pL^k{j$D`p!u5>C zuEpPiI>}gBDfo9%b&eFH5k~+VoKq)v($o63Wfi;fHR~=%fRO3KpNYFz;J_uvOT1y@ zWdR_DwAJTFX;7hr6*z5^Ym;iDLr{82V>y_?xZR68$AfTmc6?l+u>tB=pez+O0FIIY zlN{K-FKLCXVHq`rPn1V-#`7U7|+TJS-)N_3^ct(|2serTu+8^ps(k^|NoOxa!A}a4#iFz%U{bYzfn;6lSanY@ufuB}R}8 zoMKBQ)EP&9ONE+LSOWq?%S&D$x|SBA;iL0#4PtZpE6)|KwF@Nt3SA(HneKu~xD0oR zmGz>uO_QeS#tfp?+A^QBrZ~CNKoXuBSJuU!e(b0PK*QB^Vhz0h6#ULL=NYTMS3TCC zdCSlsZH-@pI9vj;+p|;gQSI_o&KVGq!Cf#hu&sjf zD_B`x(3tjCH|>lu0N^Md^&)qY93I73&K~H^VGklCQR8=p_jmBf=HQ4PVvd#Q9KY`~ zH0%>NW!i~1Zl$d>5mnytK6FL7t-xiCd@4ubaAc95(IeKIeeGU2e^`T48ORHLxfzTI zHsX+gD1G2*wXc5Q6$0OZ3e|VUjM^Mt9FZ)#zx%lQ|B8m!XE{W49 ziH4Zj2xS6Bl1#c4*M&M~A%q8k9Rnj-GZK{C4I}iXYJ{_*6;xRiDI+wnNAk_FpY04U z2Mm3{VQ-h3`wkX()Bck|6}9-IT%b~5NaEoG@(09r#2e;bo37*0ABZb)^%TRq$Z#s5MH3wD#n?6(;PoxyPoBK-s)woERYmSTh#vooLzBL>b1X z(DDK~FZ9 zJ!i7f!V_-(b}#8hpQN9Q8o(HyzB!@C5I!JRn-I3QgU9P0p6cFlf=f#w+x7Z`5%ro=^pv#qj zVsIVqsCoV&^b*!cC=iUQ@Fw(2#48#$mIYGFO~0%^X~)w+c8wiR2Q~W5>E^n-4tT51 z!odrA7Kn|7D}rjT9OTk@*u`jBj6b4z$dW^IPSOq9m-=Qq)j$sNSH^gb48Ib;5YF~p zwsVmE89}UtZrlM0LXJiU6kg#n86&UzbV>0WS5pG%F@U3_39J`B4U@EY6>5O9G8I@_ zKlB1dO$I`yn3N6TU;A%fxA-0(pIqix^Bn2RL9o11h0|&Cs}n&E?{MjB3LQ(LucRgT z>`1iL^uQheR*Z*_q(BQFOWY)QUjD580FG zJWj`%${8*d*r_-oLti0Nx{@oJId0c#+2`bmokcze0LUtonvJqEpyajE{#(C8)Mp~L|(qVKmPIJmUU1Gmx`Xg^I!?z^&?5piI zM~xnM?mi^Ti{Sex4QQeD&4Iv(4WvcfQ$ZiS3sw|jBH%G8VWnQ#bfz-bTfk#DOr+H; zcoAovaM;y$H{YZ?;|?DqQbfrdRWPf!?zDr~ zQlv7;btoZ@V-#55E)^#owuKs^Ni(RxOMww$)39)xfoHiogGJ7(ce}^MQDy&vk0z{4 zE_75oTFKWam{@Topp7*QJ|^i!670QzZIVeuV1>n;B4Xz!fW3i8*%u5YSw$I6GPUth zmrKuY6F45ykYgD&fKz~ukyVk{6I&R(W@bNYvzDa||+GdY0uNevsDA-M_fiuqAo=}=BIlT%C?-9{N^ zzDwV)yw(!?gY!RmHTd8KB~B~3{pN5I)La7cNrMQKb zZE35sjfAMdsop`hiCi;(2?-E1BrQjVfj84HcuFiZ&*G|?Ra2P;TSo4Fo(eNxB zfOEsgh+B6-8$=&02sNR?g2L}n-1m*tD)ksyf*kFK4}LW2tHi2Gl6h1R;HuLTC3LY)$#~QeTWNi`au(-GWSk*kjR#WK(<_69mm1Nygm9*7L14G*ivKA{bX#x=fd9P4Jc==S8#O9#$LHhb$aMY zH6Fn13>8h|JP7YiV0OassvpLqD8aC~z&i7Te17S%1JU_tJ47!UMKiZSRC2Q;ob^yz zydaBPa+=tLY0#?VRYTL6;Q*Z4 zet-9Jo968W{I4`6bvVi%YN-FTpwkSo!j6rJ9RNuZv5s zi%YMIORtMduZv5sbv~6Yz1F((nn;#p1v+uBx+=j;J$6Fokiw6Obn|P(mKwz5qaxqv z4M;V>tY_VPwO_(k7F?M?Q0R3Enh&=8RdfXNdiqnUGCc~)<=YiLbD28-s(h7j^KAj z<3EMTOKuLiQW&C1ZfhCDAWb-Dity|wBDT0g_k?o*pMocAYbzCpW1t79 zG)4nMtDZ?VJ}TqiXC&i3E8^HVt_IsR>YA^-%-R8K#`#RT4RY1MZ4xkV{j&T1aH;8* zVBOz@e~4G2Q=9UOHI3F_O*|2xU%E2^F=fAm`FQ(gf9eS#iooz~;=i+=t?`#US-;<{ zxe{5iztq`!_I~HryEI?IoIUk~L3wM$`6HgXmYS@)I>#?|U+%u&y-Sk}eKMw4_$^kL z*J~MVY+MuM`TYc@jGZQp&oYXs$PR<>MZ9~5>6KJKMN^H!G#nJh1Fwt_sv zsk-zE3Yb|p`UDpZ;}P86&jR)egM09Mj$*i(wwDc}PJD8y{BEpUWpJ*TpRuD0SDxGv zH9=GY`9X69*|tE1HZDMz*GmM#K1zcV>AbP8WztVEgDXt2?p>b5y`E7BG}vr&b+rpI z%0ZE7_0zvup|F(>PgkSl@$dVq-L#Xf{wHd${wq8W_c28N>N|O1ZuOU5+75fiytQnV z|6S#+>P@XySrfb(amB`=8@xY&2U9Yvit$=yUp-8=8`;(e}=~MuZA3Y*zQouf7 z^&SW7V5nA=*)zL2FGs}Hsj|0&GORrZCS0;0AoMa{6w5nd0;_=0;W^VcHK44knCF$z zv^@JMMi0g%9gnyK$0tkROZfK;1;BQFmF>*D&Mzt_Ul&Njnb8qjB`Aect zqkl&b>?0^>Qg2$&eNI$n%3W@s=dhX*{7NBI`0(*M5aod$I0*G*%U}PBenmXC9$ne< zA@~PJ#={3h8EcV=0{kR7(GFSc;LogQWL5FMINCK#wH1$z&#YzdJ1^c?o6ULg0CMiO z9uX;+S}GOkC$P)iH5_)KGSI zjOicVMV<6CiU0Oynpt15s|>50GK<_2(&^a|N9{P0@~b5unmQnSr1yOfqUePq8Fx&^ zJrc4}_c96laR)s%Az^(NB4x^auz9K?Jn!T-m&|EL3&(dB4!fOH1y@2xPv|A*4;d#f z?%0p8S~jp%qW2Kj%b5b$cdVxkTWIE9pQ=krZ%?+P7Xj*CpdwX9((1t zQ(Y|Nut7D*#<&C~q^IFqr^3HM)>M(3^HNx`?7A_!vc?eFvRh6ed9yLGo0^iJ>4cVs#q_ zS~YRf0uZJN+Z$vQ!giV>L=l4uO`<0%c*oc zfyg@p(8E#7z>v85CAKsS1%}@r4|AT$FCnOn6cbZtS=x#7IMP@rYl>@DJ+^msFN4!D z8#y+*k;rI`qmd>G6wE}%NTxFqVaDL57SA89M{zufq8^*EKG>w8MWZkOfxDe-SkF;Z z=Xbo~t3{>)ma}Fshh_SHm!4ViVLM?i=P9K z+Bc2S-1H5dWd}U6ao`pVHjzo#%ZHn?B(ss&tT+$w0RyT$(-AZawp#wR&`4U~;G;&4 zevC!{5nK`}76e>-RMi?*=&^yMs6+O`hNxSjuc;%h^esPM2RrHDGQix`QJ&gZb*jtz z8whKOWTYAXyp#+Tg8>7N61Pw#@6oLeWaGH2#2BAC?nYrx4{!~P3**I}oPg@geGict z$AW=LY%~F%t4E9l$|xFOugB1|?60z?khp-K#$h_wj*)(YtRGVM>YZj^rU2a zZ~%8HFF?aSM^xpm#yLJe@ld;1J|Mg(4=IjHv>L-6b``gwsI9T(YD#$f}1f`aX_*qhi{X4vTD=V5U z>Mu*coGG@$+ZMmQwY1CTPKhh(XddBB!n+jfHV|wO$EK>?V$N>fL(U^1H!RlcJCPL# z@m<(|0Hdq~MnSY6!umNp1%lYindzbuSO%z3w|gE1B{hZGo3VjtKW> zseo?&qW~+Od%kcUwoR;yx)8Cnjv7Hk}${(`(%X=18LbZXy~i2 za4mn83(Q}2v))%YYA2$K6)Ohc((DD-Zt zW?YiX9~2{=lcOypjnbUKh$HYOZY^y#TcoV3A!Z=DWupWie!oLhz+*f9y#--ho^`vp z;0b;veFW$V4Sf(>5^MSZ-x(=;5>Q-KQ)Yv4yW<@k^RA4ZkuEm2aLEQr9_4myb4;5q@yQu= z8gr-B!H9=@ox}SrduTDz+hBCah zV8VLH22HV6Ig!QNYgr-4VXV5 zmWi4Y93-~U^OB^OGk;~d@8J@r-1QV5GHHz*jV+}d;=1wUBKvNq|0$9=VFQ7)4CSQ-G_jRr=Hu7%CN%1h($v1au z`Z|*_W^k?0mWnA*Qt->?8vOSZKs5|QQc(axBZkEpD&cP@ScN@xoG4T}f(BVk`2SOu zj?%gP3cc&Y9y)64K$lmSo56Am{`ngIc?ADFg@69HY*>Vr8}M)i{yBhuj^Llq@XrjN?dh322d^it#aTn$>`>@HH z6Zr>m+Ct@U1g3o~sEsRJ)3Jdu5~vDJ6x9IQz!>>Q;fR63V~m&|8F>2|f}I&EOtjE> zW?iv98a%S#isZeS%*DvR7!0@+m|sJe3rEwOFST_Hn9l$FQX%u%vW!= z)KGzIO&e=p00?blTMSn?`=W#neTx!1-B;_@{T>PpDW^<^$!xUtuU>FwBrLog^h-3??PzSDUWNr=%)n94<8u{=0hgXvNsOD^D{& z1M~ssZx7T|9L;FTAr<4)^Q{57iOIg1xo+L9iQXM#aW75eT(jm&Ce^HPt@BEbqIW{_ zIbh>&6{p#!RipM8vbo8GR^P;x!K520U&JH(M3jjq31kuPvC2aJ78#+WrA`Vw$gf&~ z@S5Ql*USsQDCB|oryv^M3d-st_vAIHRjguCEM>Cdg@kcyJy#ZOja-PKxrYLzeH}G8 zJl7x=Wla6gget~$A_+mr6O>YoQmHUOfn%XIlz9wjp4byr83_H1PJA(Is~ex-P3Dop z)gG<^;|Snw)#7e6*=070`awU2W2}tF6a!E85Qdyd)F5&4KuB3|F^oqe$PJYVS;qzr z0lQ4^ceqrg;!_Ji8XVwLVY>s<{0y#Ug#AG;5>dw55qr6@w#Hvx1}R>RH$hlU9WH&k z{QGc8rIpC~a4iLgCy_0I7ZO{*r_hTJVerr3?+>lu=X9tp!Gl-q`j0=dk}y0Rg4GUq z+DYV^hFi_y(j}`1>fqrLVA9|YNZ^>+W*rEAT*2=>uuUtx)}SDa`Z*-)w%USdRUg_y z#q4}oX-W4d<@E$Ldr^q@6SB*GJMBRiHUKqNN^c4Y28PjU!>zpzapuiJcwJCj-a~rh zr8DW})r(HRS9XZEZXg<66rY}rc*9oFA-u6^2eXdJ`HgdGV=I9t!V==8bdn9*;7270 zv1yD#m#OzQe9ayJMBWb>Nv*G~Epx9~VHn`8a~I#3_Xga?oc`bviM!pNJzJ7Ian|W3 zsTSR_&X=ZIfZC$Og~l*qWDfcY=VKb9V8fB7Ey+i;1!uMMAzW>*c0Q;DgB_J{cvnAs zTD@HT`vbpjCzs6!m>{>X4gJ#xMuJ1|GK<*uajtxt`BDaFHiuh07ep;1QDkvHW+aS# zxul1g+N#i6!G9P(z#V=H6khLKM|_FOb+4>cRH(OfWfmFq7O=L+=h_t z33xgu>dH|Td3fO{J&i`(>E4KhR~lIQeLT)b(o zmPkcTz+zm(W$;6aqO^Xs*x;}oX?eNmG()Ps=4M4JzuLYCIoQjEHTOwcxjm+d3PA$$BDu>pLtY!wsd z5k*})Jp6hVozu0G$&g;Rk*+iVs%H%~(cAnYX5AjxVs|CvH#{R=dk}Tw75`fek#8JC z2xX*r{XMcC5vwG3-G|PU+r81MbcQ>n&&~(iTH^z}-Dl4~tl)#(vM6KKns!+x6@$xZ zf&x0Q!Nvy&5`yhzOdj#tNB2(9h6!l#+aF=46Y-Ry2&svQgka}E86G)d26>6t2!-7) zO8jBZ0GWr(Ei}t=v-BqHf6?ifZ6Dyg29bKDBIAq`xi0W-mDbHHBYTO0@93ijB*O5N7L)2ONOo00)s&C0~lV`2`@< zoV1;cz0130qXzpY;PtDNO)^{(&D{DvG_3EL3KYzhABflsBWR)4Wi5AQ)L(TEV9Z%# zpV4v*GQNhr*j+i(47sC$cXoHUg4|=`fFi9Jv2xD6 zUUI^LX?(#+1GiLJ=^%Dbr}Of0w)@u@w>zxaB6^CF1o7P2hjUo++rx)8Slt3@0@mLY zxVZ?>o*-tWvnD(0AfKD}$k&C=CxrEMFs?+X{OHT)%*{9GqEkV6Sv2~@I5jf=P>_I7 zPK2@2fh%_RKfxPX(R?^^c1Stw*+}z12cJFFCCy67dqOV-*5)fnCCCH!aB%X>+3cNJ zPc~d6BWjG)JB~>vcksM@A&9xd#owDitfkAvaV+O=REBEw%pN!WXOQEu5IYAjUQ5oR z-bpKXonkzokY8ZqvKm-wnYMX)$}`Tz2?h=0I;=8DfrR7$W@1*7aXW5zjJxenGwmwZ z1bu^bX+^C&-alfgaw;nvOlze%m};?r)R2+pdVP8M*DC}siVaDd(}j?y<()Or9^3Q@ zH;;f9GuA!1;)}Kf;$9kJ(o~$1f1`OMw`q$+y_!TYqa9|F-Nle!^gW<}xy#W19lkwK zyN(F_uLKM__P->J`GG#k~_Q*286Z&aI0Z~Xj@2i zq%{(Xse6#BgXSd?A0q<3W7qI1Iw z5{ExYQABu~V9|p=k5I7_Gjd=K{-Z~gbag&@+#vngxf3IaLw06U{Dt#dagebYJb0jE zZe64CvsK=5?X9UBL6YL%6m777;NtYq7QES(4$<^BS644CE?O5)Fy8w6cdKWke(#&L z^;HZpz(m?rFo9+*c>IsE$Lrs>)}OS#X{{S;A7Wf=;~(WpxO#Z_X!W$;43_`DjkRT; ztA%Me!ffEgEZ{w4=+*D<_IBWeFM$I9?2|dBJh^uRb855hs@luTTUWJ4T88os<0May zR&|H7Vt47cO6Z%msd6+eR&UK-D-SEjsAn#(lC8xGcT@4gt&CNbqA$Md42G=HbfPso zn{(I0rT>!IGfY$BXMd=Uq3O6IZf^;o?&sb>2ZBF&^`@Q4kG-8LQ zN{L|V`H~g{eN&X7m{c}DGJ)s=&*b=9Al$y8qEs^`qJ(Ci zVn;<_pA$*AUf1G5B@(FQ#8%+OR$x)SKB+;BwTId2@8zB*=UU#QsJgvyNScE@8ktwY zxSY>8`_1Nw|McJtu!Jhkm?!_%^4mzvPKbj)-UC!N`PIjU3#Vx<%}H*)rFNd7;$@>D z;@neFfi37&GzjA%naB%XqSFVRB9whs8@Z9FA!S4ZP*(!gxLkmJg0#l`e0?zeEoZI#Yz` zD6>ehoJ17p3Na>&!f@bVA`9C_KJUYcYDPn6Kw?tmfQm1aSZ(}y_%^{1mX|%;Ox=un zikNdC7#`tp>7gxrk}evcJkt#1ul#8t@6gJrdq&Wh?I z+2(a1QV?&NQPm0|x$?Cv>r7xkjE4tnM_!08rInd|7kHCJ#X6I!HCYBpj9j^Zg-#jk z9)kjBMay8gaowl=K#ei8M2mR;3D5KcM=#vpU4ex<8VK8%^1UH;XKq2cUNelNW}RzJ|4u=skG$!_Ah_ zFpPV6@dHRJxCpbLE9i?~tI_XH@Jq9B@i!a!%=vjFCos|Sv;mRb48(<^H!p+2RY%Zh z+TzJ;#m4{mTe-d&z)KPg*{k&<=lduq@hf2GDu$RjqV7rLjQ2?P9-CC~~lD z(bpu6@~>AbB6yz`SCRiqX3s{*S}LnNef9{G5%}^0R3L@M#)?cHAaW%oPOgKEO1Tb< zv<7arYbR5|p>Wv7B*qU!1%cn&w0C(Db1Ri9rl5A=oU{`f$==W-af>L7HxtE9uDxaZ zhbl1ScI=$K+Ymeir;Y%qMP9dH(tY4AXR6p${?$l|tBS}1^jtidpwXEW^cM<&cSi$g1{Lxv0@s_t<}z-*(%&?#fV0tUaKD` zta;R|a+S6!oNja;_0jY&zRR|Bzjss3f>F_d-T)|snOCmxXfW{MJ5;4&C zwj8~~B_8VZF^_QpmcC?L-m$`yd_Et>@X#;{fHHL$X;a!M^Kos z<*RxJ9j5Q`jo@(URh;m9=zOIk62U*9xknIn>^#om5z{UnwI69dPmm!%XU4Hmwz84TEp$m|Ni&lO1rwyiZdK} zHBZpi&qhWoj?=bwFQ&cnnF%nGAssF~Q1lo+e5ezu@dD1^9&CpzeEa2F?@r@~Z<(O1 zqu8it_UDh$<>rI6CPNnf93R7tPw@>mF819RrB|~5&}7u?GCFFW zZbO63kN9Vckqjq+_6jg0+#k==xEri7GHJuGJbc*r$iJ;LwKohE_U3dO97`VI&lN_3 z{}$o0A8j0MX~52|7#v3bVM|EZfMb@A0mI68 z(>z(>oo84<2V_4^upgZ3eE#YyzOXh2P581IHetd}alSq_k^DBh&ExbUiH4j1Y6$|k zy3%IsHDAd-fGzlgP}>MKgn1E=Lr&lle%Rt)uC5gDH?aC7lb3vA+hqsaI54ttR$!3B z;K6_a5Z}B$<4N%*`xoNs;WzlP!8ofP?MLqt(-<&KcxIzJu`S zY6X|x+wIlE!_`Nu+;7`V&B;>@a>{0O23+qqX=O#Ey4$}o*=W#MVH3{%y4a%c0*St5 zqZNN*Yrfk8NQ|VqiV;Nkooy(Lhy)(pD=`lo3ZG97gN;8x*z7b#{mrO}wKvy{`P_$Y zg%S;1a-oKac!0==?-C#NlcTi0_D|W%hYx=fhyE*iQ}6R3;iDj@bqn_erB>pUcmMal z!zGbIn?G0yd6Q80bo;@&WDV?HxN-`73zuJZ5yJ(G?#gFOc+J>9o^r5R7r%KZGxi(n zaGSSyB}r~m0Lf`gKpSu%e_`D#SfZyZG73W@!aV_zZ9j!jhf9xsXI)-f*=(;g*SAjD zAhoy60-GSAFmi;x@M~$(%OhM_QLa0z;>VvtDLH*)%;R%+J3RP!B=}RCwbN~WT-iE( zwEdoaJHbJ|lH5oR5{xLZ`93|taoud3Y(Hnq>i@O(q|Hqv$<9|C;s4N>4WyoFOR^0N zPeL$&&5n1u#x}#ulO0XVYS}%=l2PFP=GvkeXVC=iYM(cJJx_ogJC}j(6ZAE3dZl@+!ytO1AM7)`j{>DAtgQs*x(60udsJfoiK>9(86ggtKt=L1*Yg@db z6}2y}ww0yoC%-}6z>134YBckk(nSzoC=B2uYNN>M{ZPG4ZJ(ca@7^VGjwDT(K(sc6 zeG@h`3x5kJ|J&U<4;_8%`+g8B=49dNH^rNR9`~9RhZcjgPnrZbu|KDJnBQBVTO3d| zEhL5r(cjvxc3E2dp3$m|y!hWLw;Q#8S8~^3aIXHlwz^{IFA|fZ8@10^nd9>7NqWq; z=(~4_4#PnPY#-A$^;cP&(8OT^?+bA-5wo*o`|a%@%ZUJ#+7R7j-V~Ws|!u& zkh&)Jxl&}#j-unHZ3ZA+>7GT3eMT*&HISi9A*2LiX4TDj762>3+fy!89S#N6VJgA_ zd9TMq#9;v)V!oWo<}rSV*Uf^-hzQy#&H9FPpv&zRQ@QF=cNUC>1Gg4jQ(jM!ix3VJAo|+_3|4r$ib^10fw7ddiygf0ALMZK1ofL-K z8_%~kcEZiqI~!ZCpT67<*WZM%-|U3%wl~5zTjB3--i7ZsU%m{VZGH+>-N=G` ze*i6S@M==KbWl-pY27wE6ILJm7yz<_dInW6AVkmf6}tk9g4NKEZKZSCX2n^~oH*cb zkYDS-&_LF-=-H+PR>;aPYNlizIeNPo68SeR6pwVvn`N9F78)m*T8%r0du@%4F8sQC zSAzz^7!sP8%KYYVj_q>j$Hle_XsLa%Sq}Y{(n8pFIV9VqUtqgfmGx)y&4b+`8VEfy z5DvsRh?QCJab}nZ$6I(V3a7i4U~m9f>5>ZLgGe%MehNZB=l&G$o_~HA4G-epvt*Kj zVjRk#{))N=D9z6ARZIXHi=*Ci)|Z2~vP4KMGI-80g~r0cqndhcwS5A0irO8`^sKF^ zqU|W#M>PpvWzt_nwEo-9^O;vQyn~KeTm+JbPz!d1W-XbTw&H#}$JAVDWQxcdrc)-$ zTYZ1R5Ta0MMpoG*{S{AssUE$t<~uG>&aLn%;0^kVL%o2L3QxWZ~tMBAC@om;$+P&1`DPrmSa+?^f}1=_>pWZCHV zK|7pVJ!i?+zIk+vx_ojHv%5r&+q%_cvr8^p>OiiS(dlS9xdc>p#yo7V$_7#u#|-&m zTXAo?4|8dLPb8P_fKx#cb(?~Hv|sH4*(J?v5ng$;3!TJc3=a#ELTyH&zYFbG?GD|Y znIUdGZNrov#~8@yaGLH8^^Vr7&7Iw0!DbKc{dsXZNQRT;UXn)L0j_5+Plvb_xqO0w zpRg1uwDH6eCfgD_Ux&6SeBI)rt{gID%2ooU7&7+FbYqAdk02{3D6w}>?R>NksTJeN zhzp@#tZdiHAr0D+#A%E%YSeGNil7}5%*O2ww8(lxMF5e=?`8`Z1#sMBlaQ*$jRNE3 zK-;speLK{<(iU{Q8)?Cw9%6XbcWL~Z=8}r3U`3H2M?41@4YzK=_Fa{>X( zY~$cm1u;JLV#Xt%jHY`$K(`nT@XN0cJt0Vn{i^Cwn>$bu2BRF0j*{sSZSfq}Paf8j zG@Zt2y%$fSWbh>EwePL0JmkVS%6PBhiX5#J3$zk-_W@VreC878@&I?tfkGko@~1K0 z8=}soQazpf=ps_-X`gt+Pa%cA##4lJspE>@Y3%X#^!>`^v3J#8uQl#JaC^OKpOYv$ zwY1W3ogKN8tDQ=Sr)lIA28M-3-_7TsZC4W?`=40gN_#Ytt7X&GAY;|XjeQ-C%&QjA z69X|+Zj1U9G}>w_5ZJ0Ryx(dMV``GJ^hLs6AvLF+{NZS$zfv+&3Cz82^c$@T=SHPw$D+BM>B*h5OGj6gXu2ReU1B}65aa-Pm zYKrRMinn35@%=%YTxmY5YG!vS#&@}%k!(o%r>~-84N3N#{NTxLm7=U%)tPF8xQz=sR!&g&RD4-!3UrSN2HK=z zvFUTO2;ts&2^R518QNMdSn5h+xhfd=2}~4%h~a~dyP$cp25e zU{b31yQcsjwDw5dJS&r-wz*+tdIWOeF(4FG*~iKkQKN5r+uI)i_f~Qtp6KTF@XC$F z0B{zV{WN`!rBV3+Sk&#PZX2>Tg7KH9=>(`abAJKgNR5zmAlHthV-wQFZT_UTW(xg6 z&8YtJ2%)yG++vw4plUg$Z#yP54x4K(d(huVJK8gl|CN34NSB207B`kP~Q1O1SLGm$fdJHeH5)B<*O9lYJ2e(I*1@M@m0_{FG z%Xy$3o)G^ziHE(E8Le4Geq`9d;|w2AbHthG$K&J#eT=CePh@(yv*IoDQZ;~XIbpQL z!>g+Rb6iDs`g!NoORtxlc*+masZL`7OSGkPdI{_i7G6(IWOeE>Mjx=7`N#H~*M|Gj zR34*C7)?h#b)(}<7a)&4?O@cQ{{C}i|JZU-02hqJ?F3iWPxpbg=&H_ z$NigM3&z#?KRb8MgL)!vxMfvvv@mCIs<*bD0V&Rk*8f%G37HGWyt9cV~`SnJ0cy!((tOC6RR?>jm2^H5mc{jm@3oDILcv zr451G7RP$%s5ki;3DVVO5oy(Ac9CIcx-|WZXCgA9w>iF2G%HN&Z^m5ssUbsCkIQ}j zi!fy%=H8)pLrOVPi$!qE;w|E_JS>$SuL-9R`|p#%;2jvuc?KlR2VIx|iYqag92-U# zjCeAq;5 zJ-qLELN{j6rLj6cuw3@~wzzZ;h8P!&rM<-5>S2)*)T_VzL@|dvJ*}+SY4Y$eq(ng~ zwO*iO&7H6pPJCM&vL5(u>m~J&>+`sac$=(5*~I>-Yi69OLW|dz5NhY=URkz6sm6#X zozM)mAiX~t3`U>mDD!?ijK;|*HCgfhm6~TEicVDH(8;k65gwr85o}&{qjpe}MFh&L zWf>lTj-&A)iO0U%!fMSzB;El?qtlbRUISII5>Lmq$gvAFVvKVp!ndO#*BqC*T8x%&$X+y^wvnIPc zzg}pYP9_LW4XFfmLbpEl!U!sUe%_U?C~S#B{Wx zMb=0c;1zp%WfU>F<$=axFgmDKwp1<*H6>c@9wXan_6^-pkO${O zr?b1nFwog}Jm}j&XDhCj(k|OPl->J~ZNc_HFkaENNsp%kt+DS^9K*h{=PS>Wj4OiN zrXABQSdxPslOUl^uG`vnCV2tB{M?p@+MIWmk9ZjapuqiTqzNPsyxSa=ZqCD;71B2( zS6glsMZ(2CX^PLlYmq9y8k_W*MoiVzOzynucb4%P9So-130}yaSv}A`Mv=miEX?9p z^hUBHS0VcNpiGh)K_UQZqTQV+U^TL(aSe`k1GMD zsx2UVx1sj04Lhs#3ZzwPEH5$GI?q&d5jaaI6(Qdx3d^%q-_ula0oJS zqIGi_gRUj0u0OVB${p|L(I-?vI>tRN(oVlz0nP<6`sZF%ofe8dMzy1~{4W z%+XvCPPx@wH`aXEc-W}po09~%k+`;W$D>baJXS;S0&%dOL%?i&b4Y70 z)1yBjX~Plh=b8pdN-H-lwIqlU`cpH!ypHM6Ux+g_48++BCRs?s8D?F<mDeM9DRT z2939I+y~A&+}8`?nML07w+KU&TilhM7-;BtQoK5h3w5|=5X*TwB5ku;th@=Cs<#k~ zf?Svdd(g2omA&d6`nAlrx=>em6Nk7qJMc5y$S_T95OfbHjUg$6TtZY>VTNxz?!OQt~xQ9Eof-?h*R_8J{-2 z4O2HIa?lR%RpId&1bPb{C9`1TRL`dqW}+b{2823u_(t+nQn@h-koo~x^#?USv(O*O z*&hde#@UDn7XeB0$*M|pC^95BXX+@Iqzfj6OO6}7Mx{OFnqDZ8p2XMb5M|S!$H1q0 zA@v};ynA#per z@8n*flUQTHGE^XSdD>_?xnPL6vtfwhI}Dp8<0r>&HH(xv?1juLL$%JC@rmumw23D4 zB(v(N^3_(FkZ6ZXfw!cUA^d^r5Pq^kv_vy{2~?t`%m9U=;Mw{eR~Z5!uoipqASn$d z3^OK`7fk_?w0QOO?PeN^GzgD@TH~IP`S?P%&{M7KkzgsZ=4whi%^aN+(LPDRL@YcQ zNm}!j&qR7viOAmbU9I(MXCrmv*FX6iLw(dV6T)abe5$wnK3 z!efo9;_Dn|v@0(?%ec5OvsV|^WAu;$1ty7s5IZgb8_x9U)2A9Jn}49c?NME=)492o zPWLuOiSO1+GvT7@C==B3t(T#0o^SLhLg*#wq+ZBNd$mdWd2P&H|83x<5ZU$L`;D~+ zH|xKD#UuN7?ow%B3B|xVaBYGW*tv1-^jml1=DFtM%zt}Szreg#&;0p+uW^4RJO9^K zAKbs0|9{1kkH^B{Se9DWHj0kLBHW=!t1SzyVpUTbSmmNXDjY`zL8^cM{o=xvVxnO7 z`r^Xecqotuo@*=abAy_2-DNRI_$@vcY3NeXOg=v|S_oHC9OZ-Gl}F|vbyo1%i$N6! z!z>$_gX_?dIkXkZ>2_oe+brd`5}89xR8Hf_9AuzMijK^oOjrU-(Z^pIkHe)fg^}yV zS`%@mv?EA;)v~}edu(=2YV@4LI-T^e+|Dc+a5Y!+qLGE&ChhdzFEMzd2XJY=jQo; O_xuN#D`f@%@(BP9MyJ34 literal 0 HcmV?d00001 From c92d6c1d3972c294e403531ce0659abaf5209920 Mon Sep 17 00:00:00 2001 From: Ankit Kesharwani Date: Fri, 17 Jul 2020 04:37:21 +0000 Subject: [PATCH 05/21] Merged PR 91817: Add Embed token service to the server-side 1. This PR contains services for generating AAD token using SP with cert and for generating Multi-resource embed token using Power BI .NET SDK 2. Code flow to handle errors in the UI from the server-side will be sent in a different PR ## C# | Checklist | Yes/ No/NA | |:-----------|:-----------:| | Are the naming conventions as per development standards? | Yes | | Is there summary for each method? | Yes | | Is there summary for each attribute in class? | No | | Is code analysis executed? | Yes | | Is modularization done? - Same code is not repeated across functions and files | Yes | | Are unused directives are removed from files? | Yes | | Directives are mentioned after namespace in files | Yes | | Is commented code is removed from all files? | Yes | | Is code commenting is done appropriately? | Yes | | Are access specifiers mentioned for all classes, methods, and attributes of class? | Yes | ## Testing | Checklist | Yes/ No/NA | |:-----------|:-----------:| | Are the test cases executed? | Yes | | Are there 0 build errors and warnings? | Yes | Related work items: #373760, #374686, #375261, #378185, #378186, #381358, #397740 --- WarehouseDemo/Constant.cs | 18 +++ .../Controllers/PowerBiController.cs | 51 +++++++ .../{Controllers => Helpers}/.gitkeep | 0 WarehouseDemo/Models/.gitkeep | 0 WarehouseDemo/Models/AuthConfig.cs | 15 +++ WarehouseDemo/Models/KeyVaultConfig.cs | 15 +++ WarehouseDemo/Models/PowerBiConfig.cs | 15 +++ WarehouseDemo/Program.cs | 40 +++--- WarehouseDemo/Services/.gitkeep | 0 WarehouseDemo/Services/AuthService.cs | 102 ++++++++++++++ WarehouseDemo/Services/EmbedService.cs | 71 ++++++++++ WarehouseDemo/Startup.cs | 127 ++++++++++-------- WarehouseDemo/WarehouseDemo.csproj | 4 + WarehouseDemo/appsettings.Development.json | 14 +- WarehouseDemo/appsettings.json | 20 +-- 15 files changed, 399 insertions(+), 93 deletions(-) create mode 100644 WarehouseDemo/Constant.cs create mode 100644 WarehouseDemo/Controllers/PowerBiController.cs rename WarehouseDemo/{Controllers => Helpers}/.gitkeep (100%) delete mode 100644 WarehouseDemo/Models/.gitkeep create mode 100644 WarehouseDemo/Models/AuthConfig.cs create mode 100644 WarehouseDemo/Models/KeyVaultConfig.cs create mode 100644 WarehouseDemo/Models/PowerBiConfig.cs delete mode 100644 WarehouseDemo/Services/.gitkeep create mode 100644 WarehouseDemo/Services/AuthService.cs create mode 100644 WarehouseDemo/Services/EmbedService.cs diff --git a/WarehouseDemo/Constant.cs b/WarehouseDemo/Constant.cs new file mode 100644 index 0000000..3f0da98 --- /dev/null +++ b/WarehouseDemo/Constant.cs @@ -0,0 +1,18 @@ +// ---------------------------------------------------------------------------- +// Copyright (c) Microsoft Corporation. All rights reserved. +// ---------------------------------------------------------------------------- + +public class Constant +{ + // Used as key for storing certificate in cache + public const string Certificate = "Certificate"; + + // Used to renew AAD token minutes before expiry + public const int RenewBeforeMinutes = 10; + + // Used to remove cached values after days of inactivity + public const int ExpireInDays = 7; + + // Used to create Power BI HTTP client + public const string PowerBiApiUri = "https://api.powerbi.com"; +} \ No newline at end of file diff --git a/WarehouseDemo/Controllers/PowerBiController.cs b/WarehouseDemo/Controllers/PowerBiController.cs new file mode 100644 index 0000000..12d62c4 --- /dev/null +++ b/WarehouseDemo/Controllers/PowerBiController.cs @@ -0,0 +1,51 @@ +// ---------------------------------------------------------------------------- +// Copyright (c) Microsoft Corporation. All rights reserved. +// ---------------------------------------------------------------------------- + +namespace WarehouseDemo.Controllers +{ + using Microsoft.AspNetCore.Mvc; + using Microsoft.Extensions.Caching.Memory; + using Microsoft.Extensions.Options; + using System; + using System.Threading.Tasks; + using WarehouseDemo.Models; + using WarehouseDemo.Service; + + [ApiController] + [Route("[controller]")] + public class PowerBiController : ControllerBase + { + private static IOptions KeyVaultConfig { get; set; } + private static IOptions AuthConfig { get; set; } + private static IOptions PowerBiConfig { get; set; } + private IMemoryCache Cache { get; set; } + + public PowerBiController(IOptions keyVaultConfig, IOptions authConfig, IOptions powerBiConfig, IMemoryCache cache) + { + KeyVaultConfig = keyVaultConfig; + AuthConfig = authConfig; + PowerBiConfig = powerBiConfig; + + // Get service cache + Cache = cache; + } + + [HttpPost("/api/powerbi/EmbedParams")] + public async Task GetEmbedParams() + { + // TODO: Extract JWT token from request header + // TODO: Add throttling by IP on this API + + // Generate AAD token + var authService = new AuthService(KeyVaultConfig, AuthConfig, Cache); + var aadToken = await authService.GetAadToken(); + + // Generate Embed token + var embedService = new EmbedService(aadToken); + var embedParams = embedService.GenerateEmbedParams(new Guid(PowerBiConfig.Value.WorkspaceId), new Guid(PowerBiConfig.Value.ReportId)); + + return Ok(embedParams.ToString()); + } + } +} diff --git a/WarehouseDemo/Controllers/.gitkeep b/WarehouseDemo/Helpers/.gitkeep similarity index 100% rename from WarehouseDemo/Controllers/.gitkeep rename to WarehouseDemo/Helpers/.gitkeep diff --git a/WarehouseDemo/Models/.gitkeep b/WarehouseDemo/Models/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/WarehouseDemo/Models/AuthConfig.cs b/WarehouseDemo/Models/AuthConfig.cs new file mode 100644 index 0000000..0189b63 --- /dev/null +++ b/WarehouseDemo/Models/AuthConfig.cs @@ -0,0 +1,15 @@ +// ---------------------------------------------------------------------------- +// Copyright (c) Microsoft Corporation. All rights reserved. +// ---------------------------------------------------------------------------- + +namespace WarehouseDemo.Models +{ + public class AuthConfig + { + // Client Id (Application Id) of the AAD app + public string ClientId { get; set; } + + // Id of the Azure tenant in which AAD app is hosted + public string TenantId { get; set; } + } +} diff --git a/WarehouseDemo/Models/KeyVaultConfig.cs b/WarehouseDemo/Models/KeyVaultConfig.cs new file mode 100644 index 0000000..346ce75 --- /dev/null +++ b/WarehouseDemo/Models/KeyVaultConfig.cs @@ -0,0 +1,15 @@ +// ---------------------------------------------------------------------------- +// Copyright (c) Microsoft Corporation. All rights reserved. +// ---------------------------------------------------------------------------- + +namespace WarehouseDemo.Models +{ + public class KeyVaultConfig + { + // Name of the Azure Key Vault in which certificate is present + public string KeyVaultName { get; set; } + + // Name of certificate to be used for authentication + public string CertificateName { get; set; } + } +} diff --git a/WarehouseDemo/Models/PowerBiConfig.cs b/WarehouseDemo/Models/PowerBiConfig.cs new file mode 100644 index 0000000..5709ffd --- /dev/null +++ b/WarehouseDemo/Models/PowerBiConfig.cs @@ -0,0 +1,15 @@ +// ---------------------------------------------------------------------------- +// Copyright (c) Microsoft Corporation. All rights reserved. +// ---------------------------------------------------------------------------- + +namespace WarehouseDemo.Models +{ + public class PowerBiConfig + { + // Id of Power BI workspace in which the report is present + public string WorkspaceId { get; set; } + + // Id of Power BI report to be embedded + public string ReportId { get; set; } + } +} diff --git a/WarehouseDemo/Program.cs b/WarehouseDemo/Program.cs index 1b908c3..88ede20 100644 --- a/WarehouseDemo/Program.cs +++ b/WarehouseDemo/Program.cs @@ -1,26 +1,24 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; -using Microsoft.AspNetCore.Hosting; -using Microsoft.Extensions.Configuration; -using Microsoft.Extensions.Hosting; -using Microsoft.Extensions.Logging; +// ---------------------------------------------------------------------------- +// Copyright (c) Microsoft Corporation. All rights reserved. +// ---------------------------------------------------------------------------- namespace WarehouseDemo { - public class Program - { - public static void Main(string[] args) - { - CreateHostBuilder(args).Build().Run(); - } + using Microsoft.AspNetCore.Hosting; + using Microsoft.Extensions.Hosting; - public static IHostBuilder CreateHostBuilder(string[] args) => - Host.CreateDefaultBuilder(args) - .ConfigureWebHostDefaults(webBuilder => - { - webBuilder.UseStartup(); - }); - } + public class Program + { + public static void Main(string[] args) + { + CreateHostBuilder(args).Build().Run(); + } + + public static IHostBuilder CreateHostBuilder(string[] args) => + Host.CreateDefaultBuilder(args) + .ConfigureWebHostDefaults(webBuilder => + { + webBuilder.UseStartup(); + }); + } } diff --git a/WarehouseDemo/Services/.gitkeep b/WarehouseDemo/Services/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/WarehouseDemo/Services/AuthService.cs b/WarehouseDemo/Services/AuthService.cs new file mode 100644 index 0000000..8d52e0a --- /dev/null +++ b/WarehouseDemo/Services/AuthService.cs @@ -0,0 +1,102 @@ +// ---------------------------------------------------------------------------- +// Copyright (c) Microsoft Corporation. All rights reserved. +// ---------------------------------------------------------------------------- + +namespace WarehouseDemo.Service +{ + using Microsoft.Azure.KeyVault; + using Microsoft.Azure.Services.AppAuthentication; + using Microsoft.Extensions.Caching.Memory; + using Microsoft.Extensions.Options; + using Microsoft.Identity.Client; + using System; + using System.Security.Cryptography.X509Certificates; + using System.Threading.Tasks; + using WarehouseDemo.Models; + + public class AuthService + { + private IMemoryCache Cache { get; set; } + private IOptions KeyVaultConfig { get; set; } + private IOptions AuthConfig { get; set; } + private static string aadToken; + private static DateTime tokenExpiry; + + public AuthService(IOptions keyVaultConfig, IOptions authConfig, IMemoryCache cache) + { + KeyVaultConfig = keyVaultConfig; + AuthConfig = authConfig; + Cache = cache; + } + + /// + /// Return Azure Active Directory token + /// + /// Azure Active Directory token + public async Task GetAadToken() + { + // Generate token if it is not present or near expiry + if (string.IsNullOrEmpty(aadToken) || tokenExpiry.Subtract(DateTime.UtcNow) <= TimeSpan.FromMinutes(Constant.RenewBeforeMinutes)) + { + await GenerateAadToken(); + } + return aadToken; + } + + /// + /// Generate Azure Active Directory token + /// + /// + private async Task GenerateAadToken() + { + // Retrieve certificate from Azure Key Vault using Managed Service Identity + var clientCertificate = await ReadCertificateFromVault(); + + var authorityUrl = $"https://login.microsoftonline.com/{AuthConfig.Value.TenantId}"; + var scope = new string[] { "https://analysis.windows.net/powerbi/api/.default" }; + + IConfidentialClientApplication clientApp = ConfidentialClientApplicationBuilder + .Create(AuthConfig.Value.ClientId) + .WithCertificate(clientCertificate) + .WithAuthority(authorityUrl) + .Build(); + + var authenticationResult = await clientApp.AcquireTokenForClient(scope).ExecuteAsync(); + aadToken = authenticationResult.AccessToken; + tokenExpiry = authenticationResult.ExpiresOn.DateTime; + } + + /// + /// Get certificate from Azure Key Vault + /// + /// X509Certificate2 certificate + private async Task ReadCertificateFromVault() + { + X509Certificate2 x509Certificate; + + // Check whether certificate is present in cache + if (Cache.TryGetValue(Constant.Certificate, out x509Certificate)) + { + return x509Certificate; + } + + var serviceTokenProvider = new AzureServiceTokenProvider(); + var keyVaultClient = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(serviceTokenProvider.KeyVaultTokenCallback)); + + var certificate = await keyVaultClient.GetCertificateAsync($"https://{KeyVaultConfig.Value.KeyVaultName}.vault.azure.net/", KeyVaultConfig.Value.CertificateName); + var secret = await keyVaultClient.GetSecretAsync(certificate.SecretIdentifier.Identifier); + + // MachineKeySet flag is required by Azure Web app + x509Certificate = new X509Certificate2(Convert.FromBase64String(secret.Value), string.Empty, X509KeyStorageFlags.MachineKeySet); + + // Create cache options + var cacheOptions = new MemoryCacheEntryOptions() + // Keep in cache for this time, reset time if accessed + .SetSlidingExpiration(TimeSpan.FromDays(Constant.ExpireInDays)); + + // Cache the certificate + Cache.Set(Constant.Certificate, x509Certificate, cacheOptions); + return x509Certificate; + } + } +} diff --git a/WarehouseDemo/Services/EmbedService.cs b/WarehouseDemo/Services/EmbedService.cs new file mode 100644 index 0000000..e995535 --- /dev/null +++ b/WarehouseDemo/Services/EmbedService.cs @@ -0,0 +1,71 @@ +// ---------------------------------------------------------------------------- +// Copyright (c) Microsoft Corporation. All rights reserved. +// ---------------------------------------------------------------------------- + +namespace WarehouseDemo.Service +{ + using Microsoft.PowerBI.Api; + using Microsoft.PowerBI.Api.Models; + using Microsoft.Rest; + using Newtonsoft.Json.Linq; + using System; + + public class EmbedService + { + private TokenCredentials tokenCredentials; + + public EmbedService(string aadToken) + { + tokenCredentials = new TokenCredentials(aadToken, "Bearer"); + } + + /// + /// Generate Embed token and Embed URL + /// + /// + public JObject GenerateEmbedParams(Guid workspaceId, Guid reportId) + { + // TODO: Pass effective identity once roles are implemented in the report + + using (var pbiClient = new PowerBIClient(new Uri(Constant.PowerBiApiUri), tokenCredentials)) + { + // Get report info + var pbiReport = pbiClient.Reports.GetReportInGroup(workspaceId, reportId); + + // Create list of datasets + var datasets = new GenerateTokenRequestV2Dataset[] { new GenerateTokenRequestV2Dataset(pbiReport.DatasetId) }; + + // Create list of reports + var reports = new GenerateTokenRequestV2Report[] { new GenerateTokenRequestV2Report(reportId) }; + + // Create list of workspaces + var workspaces = new GenerateTokenRequestV2TargetWorkspace[] { new GenerateTokenRequestV2TargetWorkspace(workspaceId) }; + + // Create a request for getting Embed token + var tokenRequest = new GenerateTokenRequestV2(datasets: datasets, reports: reports, targetWorkspaces: workspaces); + + // Get Embed token + var embedToken = pbiClient.EmbedToken.GenerateToken(tokenRequest); + + // Capture embed parameters + var embedParams = new JObject + { + { "Id", pbiReport.Id.ToString() }, + { "EmbedUrl", pbiReport.EmbedUrl }, + { "Type", "report" }, + { "EmbedToken", new JObject { + { "Token", embedToken.Token }, + { "TokenId", embedToken.TokenId }, + { "Expiration", embedToken.Expiration.ToString() } + } + }, + { "MinutesToExpiration",(int)embedToken.Expiration.Subtract(DateTime.UtcNow).TotalMinutes }, + { "DefaultPage", null }, + { "MobileDefaultPage", null } + }; + + return embedParams; + } + } + } +} diff --git a/WarehouseDemo/Startup.cs b/WarehouseDemo/Startup.cs index d86cf39..d0838fb 100644 --- a/WarehouseDemo/Startup.cs +++ b/WarehouseDemo/Startup.cs @@ -1,71 +1,84 @@ -using Microsoft.AspNetCore.Builder; -using Microsoft.AspNetCore.Hosting; -using Microsoft.AspNetCore.HttpsPolicy; -using Microsoft.AspNetCore.SpaServices.ReactDevelopmentServer; -using Microsoft.Extensions.Configuration; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Hosting; +// ---------------------------------------------------------------------------- +// Copyright (c) Microsoft Corporation. All rights reserved. +// ---------------------------------------------------------------------------- namespace WarehouseDemo { - public class Startup - { - public Startup(IConfiguration configuration) - { - Configuration = configuration; - } + using Microsoft.AspNetCore.Builder; + using Microsoft.AspNetCore.Hosting; + using Microsoft.AspNetCore.SpaServices.ReactDevelopmentServer; + using Microsoft.Extensions.Configuration; + using Microsoft.Extensions.DependencyInjection; + using Microsoft.Extensions.Hosting; + using WarehouseDemo.Models; - public IConfiguration Configuration { get; } + public class Startup + { + public Startup(IConfiguration configuration) + { + Configuration = configuration; + } - // This method gets called by the runtime. Use this method to add services to the container. - public void ConfigureServices(IServiceCollection services) - { + public IConfiguration Configuration { get; } - services.AddControllersWithViews(); + // This method gets called by the runtime. Use this method to add services to the container. + public void ConfigureServices(IServiceCollection services) + { + services.AddMemoryCache(); + services.AddControllersWithViews(); - // In production, the React files will be served from this directory - services.AddSpaStaticFiles(configuration => - { - configuration.RootPath = "ClientApp/build"; - }); - } + // In production, the React files will be served from this directory + services.AddSpaStaticFiles(configuration => + { + configuration.RootPath = "ClientApp/build"; + }); - // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. - public void Configure(IApplicationBuilder app, IWebHostEnvironment env) - { - if (env.IsDevelopment()) - { - app.UseDeveloperExceptionPage(); - } - else - { - app.UseExceptionHandler("/Error"); - // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. - app.UseHsts(); - } + // Load KeyVault parameters + services.Configure(Configuration.GetSection("KeyVault")); - app.UseHttpsRedirection(); - app.UseStaticFiles(); - app.UseSpaStaticFiles(); + // Load Auth configuration + services.Configure(Configuration.GetSection("Auth")); - app.UseRouting(); + // Load Power BI configuration + services.Configure(Configuration.GetSection("PowerBi")); + } - app.UseEndpoints(endpoints => - { - endpoints.MapControllerRoute( - name: "default", - pattern: "{controller}/{action=Index}/{id?}"); - }); + // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. + public void Configure(IApplicationBuilder app, IWebHostEnvironment env) + { + if (env.IsDevelopment()) + { + app.UseDeveloperExceptionPage(); + } + else + { + app.UseExceptionHandler("/Error"); + // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. + app.UseHsts(); + } - app.UseSpa(spa => - { - spa.Options.SourcePath = "ClientApp"; + app.UseHttpsRedirection(); + app.UseStaticFiles(); + app.UseSpaStaticFiles(); - if (env.IsDevelopment()) - { - spa.UseReactDevelopmentServer(npmScript: "start"); - } - }); - } - } + app.UseRouting(); + + app.UseEndpoints(endpoints => + { + endpoints.MapControllerRoute( + name: "default", + pattern: "{controller}/{action=Index}/{id?}"); + }); + + app.UseSpa(spa => + { + spa.Options.SourcePath = "ClientApp"; + + if (env.IsDevelopment()) + { + spa.UseReactDevelopmentServer(npmScript: "start"); + } + }); + } + } } diff --git a/WarehouseDemo/WarehouseDemo.csproj b/WarehouseDemo/WarehouseDemo.csproj index e469ddd..ea7a60a 100644 --- a/WarehouseDemo/WarehouseDemo.csproj +++ b/WarehouseDemo/WarehouseDemo.csproj @@ -13,7 +13,11 @@ + + + + diff --git a/WarehouseDemo/appsettings.Development.json b/WarehouseDemo/appsettings.Development.json index 8983e0f..b1c285d 100644 --- a/WarehouseDemo/appsettings.Development.json +++ b/WarehouseDemo/appsettings.Development.json @@ -1,9 +1,9 @@ { - "Logging": { - "LogLevel": { - "Default": "Information", - "Microsoft": "Warning", - "Microsoft.Hosting.Lifetime": "Information" - } - } + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft": "Warning", + "Microsoft.Hosting.Lifetime": "Information" + } + } } diff --git a/WarehouseDemo/appsettings.json b/WarehouseDemo/appsettings.json index a778a45..e52719a 100644 --- a/WarehouseDemo/appsettings.json +++ b/WarehouseDemo/appsettings.json @@ -1,10 +1,14 @@ { - "Logging": { - "LogLevel": { - "Default": "Information", - "Microsoft": "Warning", - "Microsoft.Hosting.Lifetime": "Information" - } - }, - "AllowedHosts": "*" + "KeyVault": { + "KeyVaultName": "", + "CertificateName": "" + }, + "Auth": { + "ClientId": "", + "TenantId": "" + }, + "PowerBi": { + "WorkspaceId": "", + "ReportId": "" + } } From 0aa6a138d5b46a347cd63dbf1ec5f2dfd3628c89 Mon Sep 17 00:00:00 2001 From: Anant Singh Date: Fri, 17 Jul 2020 06:48:27 +0000 Subject: [PATCH 06/21] Merged PR 92058: Add dropdowns for personalize menu and page footer Added following functionality of personalize bar of the Home tab: 1. Show/Hide checkbox for visuals 2. Custom Layout selection 3. Toggle Qna visual Bug #392755: [Warehouse demo]: Scss lint warnings ## Frontend | Check | Yes/No/NA | |:------|:------:| | Is the client UI responsive and scales well for different resolutions? |Yes| | Are the user inputs validated in the code? |Yes| | Have you used the coding standards? |Yes| | The DOM is not accessed multiple times |Yes| | Does the code have 0 HTML warnings and errors ([HTMLValidator](https://www.freeformatter.com/html-validator.html))? |Yes| | Does the code have 0 CSS warnings and errors ([CSSLint](http://csslint.net/))? |NA| | Does the code have 0 ESLint warnings and errors ([ESLint](https://eslint.org/))? | Yes| | Are the test cases executed on Chromium Edge? |Yes| | When key value pairs in object have same name, only key is used instead of the pair|NA| | There are trailing commas when there are multiple properties in an object| Yes| | Non static HTML elements are not appended | NA| | Async functions return the promise and not return the result| NA| #React checklist: |Checkpoints| Yes/No/NA | |:------|:------:| | Function with prev state as param is used to update state when prev state used to derive new state value|Yes | | Attached event handler method without invoking it within a wrapper function| Yes| | Used context api (useContext hook) for sharing a common prop for all components. E.g. applying theme |Yes | | Second parameter is passed when using useEffect hook | Yes| | Computations and conditional statements are minimal in return statement. JSX element is computed before return statement and returned in return statement |Yes | | Async and compute intensive tasks are executed in useEffect hook (or componentDidMount or componentDidUpdate methods) |Yes | | User defined components start with Capital letters |Yes | | None of the state's value can be derived from another state|Yes | | Component composition is used to share common functionality|Yes | | Hooks are called on the top level of component. i.e. not inside a conditional statement |Yes | Related work items: #373773, #374760, #375262, #377308, #378157, #378726, #378730, #381363, #383518, #392755, #397258 --- WarehouseDemo/ClientApp/.eslintrc.js | 4 + WarehouseDemo/ClientApp/.prettierrc.js | 7 +- WarehouseDemo/ClientApp/.sass-lint.yml | 11 +- WarehouseDemo/ClientApp/package-lock.json | 125 ------- WarehouseDemo/ClientApp/public/index.html | 4 + WarehouseDemo/ClientApp/src/App.scss | 34 +- WarehouseDemo/ClientApp/src/App.tsx | 54 ++- .../src/assets/Icons/colspan-selected.svg | 1 + .../ClientApp/src/assets/Icons/colspan.svg | 1 + .../ClientApp/src/assets/Icons/github.svg | 11 + .../src/assets/Icons/one-column-selected.svg | 1 + .../ClientApp/src/assets/Icons/one-column.svg | 1 + .../ClientApp/src/assets/Icons/powerbi.svg | 13 + .../src/assets/Icons/rowspan-selected.svg | 1 + .../ClientApp/src/assets/Icons/rowspan.svg | 1 + .../assets/Icons/three-column-selected.svg | 1 + .../src/assets/Icons/three-column.svg | 1 + .../src/assets/Icons/two-column-selected.svg | 1 + .../ClientApp/src/assets/Icons/two-column.svg | 1 + .../src/assets/Images/anonymous-profile.svg | 6 + .../ClientApp/src/assets/Images/app-name.svg | 2 +- .../ClientApp/src/components/Card/Card.scss | 59 +-- .../ClientApp/src/components/Card/Card.tsx | 10 +- .../src/components/Checkbox/CheckBox.tsx | 30 ++ .../src/components/EmbedPage/EmbedPage.scss | 19 +- .../src/components/EmbedPage/EmbedPage.tsx | 211 ++++++++--- .../src/components/Footer/Footer.scss | 24 ++ .../src/components/Footer/Footer.tsx | 34 ++ .../ClientApp/src/components/Home/Home.scss | 24 +- .../ClientApp/src/components/Home/Home.tsx | 12 +- .../src/components/IconBar/IconBar.scss | 10 +- .../src/components/IconBar/IconBar.tsx | 39 +- .../ClientApp/src/components/Login/Login.scss | 84 +++-- .../ClientApp/src/components/Login/Login.tsx | 41 +-- .../src/components/NavTabs/NavTabs.scss | 7 +- .../src/components/NavTabs/NavTabs.tsx | 4 + .../PersonaliseBar/PersonaliseBar.scss | 141 +++++++- .../PersonaliseBar/PersonaliseBar.tsx | 173 ++++++++- .../components/ProfileInfo/ProfileInfo.scss | 4 + .../components/ProfileInfo/ProfileInfo.tsx | 8 +- .../SettingsDropdown.tsx | 8 +- .../ClientApp/src/components/VisualGroup.ts | 335 ++++++++++++++++++ .../ClientApp/src/components/layoutMapping.ts | 60 ++++ .../ClientApp/src/components/tabConfig.ts | 4 + .../ClientApp/src/components/utils.ts | 22 +- WarehouseDemo/ClientApp/src/constants.ts | 64 ++++ WarehouseDemo/ClientApp/src/index.scss | 6 +- WarehouseDemo/ClientApp/src/index.tsx | 4 + 48 files changed, 1366 insertions(+), 352 deletions(-) create mode 100644 WarehouseDemo/ClientApp/src/assets/Icons/colspan-selected.svg create mode 100644 WarehouseDemo/ClientApp/src/assets/Icons/colspan.svg create mode 100644 WarehouseDemo/ClientApp/src/assets/Icons/github.svg create mode 100644 WarehouseDemo/ClientApp/src/assets/Icons/one-column-selected.svg create mode 100644 WarehouseDemo/ClientApp/src/assets/Icons/one-column.svg create mode 100644 WarehouseDemo/ClientApp/src/assets/Icons/powerbi.svg create mode 100644 WarehouseDemo/ClientApp/src/assets/Icons/rowspan-selected.svg create mode 100644 WarehouseDemo/ClientApp/src/assets/Icons/rowspan.svg create mode 100644 WarehouseDemo/ClientApp/src/assets/Icons/three-column-selected.svg create mode 100644 WarehouseDemo/ClientApp/src/assets/Icons/three-column.svg create mode 100644 WarehouseDemo/ClientApp/src/assets/Icons/two-column-selected.svg create mode 100644 WarehouseDemo/ClientApp/src/assets/Icons/two-column.svg create mode 100644 WarehouseDemo/ClientApp/src/assets/Images/anonymous-profile.svg create mode 100644 WarehouseDemo/ClientApp/src/components/Checkbox/CheckBox.tsx create mode 100644 WarehouseDemo/ClientApp/src/components/Footer/Footer.scss create mode 100644 WarehouseDemo/ClientApp/src/components/Footer/Footer.tsx rename WarehouseDemo/ClientApp/src/components/{ => SettingsDropdown}/SettingsDropdown.tsx (69%) create mode 100644 WarehouseDemo/ClientApp/src/components/VisualGroup.ts create mode 100644 WarehouseDemo/ClientApp/src/components/layoutMapping.ts diff --git a/WarehouseDemo/ClientApp/.eslintrc.js b/WarehouseDemo/ClientApp/.eslintrc.js index 21496e8..435d2ef 100644 --- a/WarehouseDemo/ClientApp/.eslintrc.js +++ b/WarehouseDemo/ClientApp/.eslintrc.js @@ -1,3 +1,7 @@ +// --------------------------------------------------------------------------- +// Copyright (c) Microsoft Corporation. All rights reserved. +// --------------------------------------------------------------------------- + module.exports = { parser: "@typescript-eslint/parser", // Specifies the ESLint parser parserOptions: { diff --git a/WarehouseDemo/ClientApp/.prettierrc.js b/WarehouseDemo/ClientApp/.prettierrc.js index 95c7445..cd485b1 100644 --- a/WarehouseDemo/ClientApp/.prettierrc.js +++ b/WarehouseDemo/ClientApp/.prettierrc.js @@ -1,3 +1,7 @@ +// --------------------------------------------------------------------------- +// Copyright (c) Microsoft Corporation. All rights reserved. +// --------------------------------------------------------------------------- + module.exports = { tabWidth: 4, useTabs: true, @@ -5,5 +9,6 @@ module.exports = { jsxSingleQuote: true, trailingComma: "es5", bracketSpacing: true, - jsxBracketSameLine: true + jsxBracketSameLine: true, + printWidth: 110, }; \ No newline at end of file diff --git a/WarehouseDemo/ClientApp/.sass-lint.yml b/WarehouseDemo/ClientApp/.sass-lint.yml index 8c2d251..06767df 100644 --- a/WarehouseDemo/ClientApp/.sass-lint.yml +++ b/WarehouseDemo/ClientApp/.sass-lint.yml @@ -1,4 +1,13 @@ files: include: 'src/**/*.s+(a|c)ss' rules: - indentation: 0 \ No newline at end of file + indentation: 0 + hex-notation: + - 2 + - + style: uppercase + no-invalid-hex: 0 + no-color-literals: 0 + hex-length: 0 + single-line-per-selector: 0 + border-zero: 0 diff --git a/WarehouseDemo/ClientApp/package-lock.json b/WarehouseDemo/ClientApp/package-lock.json index 2d9be3d..23f65ec 100644 --- a/WarehouseDemo/ClientApp/package-lock.json +++ b/WarehouseDemo/ClientApp/package-lock.json @@ -3213,16 +3213,6 @@ "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==", "dev": true }, - "bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "dev": true, - "optional": true, - "requires": { - "file-uri-to-path": "1.0.0" - } - }, "blob": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", @@ -6544,13 +6534,6 @@ "schema-utils": "^2.5.0" } }, - "file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "dev": true, - "optional": true - }, "filesize": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/filesize/-/filesize-6.0.1.tgz", @@ -9894,114 +9877,6 @@ "integrity": "sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ==", "dev": true }, - "merge-deep": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/merge-deep/-/merge-deep-3.0.2.tgz", - "integrity": "sha512-T7qC8kg4Zoti1cFd8Cr0M+qaZfOwjlPDEdZIIPPB2JZctjaPM4fX+i7HOId69tAti2fvO6X5ldfYUONDODsrkA==", - "dev": true, - "requires": { - "camelcase-keys": "^2.0.0", - "decamelize": "^1.1.2", - "loud-rejection": "^1.0.0", - "map-obj": "^1.0.1", - "minimist": "^1.1.3", - "normalize-package-data": "^2.3.4", - "object-assign": "^4.0.1", - "read-pkg-up": "^1.0.1", - "redent": "^1.0.0", - "trim-newlines": "^1.0.0" - }, - "dependencies": { - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - } - }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "dev": true, - "requires": { - "error-ex": "^1.2.0" - } - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "requires": { - "pinkie-promise": "^2.0.0" - } - }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true, - "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true, - "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - } - }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "requires": { - "is-utf8": "^0.2.0" - } - } - } - }, "merge-deep": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/merge-deep/-/merge-deep-3.0.2.tgz", diff --git a/WarehouseDemo/ClientApp/public/index.html b/WarehouseDemo/ClientApp/public/index.html index 3081155..628b963 100644 --- a/WarehouseDemo/ClientApp/public/index.html +++ b/WarehouseDemo/ClientApp/public/index.html @@ -1,3 +1,7 @@ + + diff --git a/WarehouseDemo/ClientApp/src/App.scss b/WarehouseDemo/ClientApp/src/App.scss index beb76bc..c4b1da1 100644 --- a/WarehouseDemo/ClientApp/src/App.scss +++ b/WarehouseDemo/ClientApp/src/App.scss @@ -1,16 +1,24 @@ +// --------------------------------------------------------------------------- +// Copyright (c) Microsoft Corporation. All rights reserved. +// --------------------------------------------------------------------------- + +.active { + color: #303778 !important; +} + input.form-control { - box-shadow: none !important; - padding-left: 3rem !important; + box-shadow: none !important; + padding-left: 3rem !important; } .input-icon { - height: 16px; - width: 16px; + height: 16px; + width: 16px; } .report-container { + height: 90vh; margin: 30px; - height: 90vh; } .report-container > iframe { @@ -18,12 +26,18 @@ input.form-control { } .set-icon { - color: #808080; - opacity: 0.7; - z-index: 1; + color: #808080; + opacity: .7; + z-index: 1; } .vertical-center { - top: 50%; - transform: translateY(-50%); + top: 50%; + transform: translateY(-50%); +} + +.visuals-list-dropdown { + border: 0; + padding: 20px; + transform: translate(30px, -30px); } diff --git a/WarehouseDemo/ClientApp/src/App.tsx b/WarehouseDemo/ClientApp/src/App.tsx index a40bcd5..99be0ca 100644 --- a/WarehouseDemo/ClientApp/src/App.tsx +++ b/WarehouseDemo/ClientApp/src/App.tsx @@ -1,10 +1,14 @@ +// --------------------------------------------------------------------------- +// Copyright (c) Microsoft Corporation. All rights reserved. +// --------------------------------------------------------------------------- + import 'bootstrap/dist/css/bootstrap.min.css'; import 'bootstrap/dist/js/bootstrap.min.js'; import './App.scss'; import React, { useState } from 'react'; import { Card } from './components/Card/Card'; import { EmbedPage } from './components/EmbedPage/EmbedPage'; -import { SalesManager, SalesPerson } from './constants'; +import { SalesManager, SalesPerson, AnonymousUser } from './constants'; export enum Page { Home = 'home', @@ -15,16 +19,16 @@ export enum Page { export enum Profile { SalesPerson = 'Sales Person', SalesManager = 'Sales Manager', - Anonymous = 'Anonymous', } export default function App(): React.FunctionComponentElement { - // Check default for profile const [state, setState] = useState({ page: Page.Home, - profile: Profile.Anonymous, + profile: undefined, }); + const [anonymousLogin, setAnonymousLogin] = useState(false); + const setProfileType = (profileType: Profile): void => { setState({ page: Page.Login, profile: profileType }); }; @@ -36,20 +40,42 @@ export default function App(): React.FunctionComponentElement { const loginOnClick = (): void => { // TODO: Add login check setState({ ...state, page: Page.Embed }); + setAnonymousLogin(false); + }; + + const anonymousLoginOnClick = (): void => { + setState({ ...state, page: Page.Embed }); + setAnonymousLogin(true); }; const logoutOnClick = (): void => { setState({ ...state, page: Page.Home }); }; - const firstName = - state.profile === Profile.SalesManager - ? SalesManager.firstName - : SalesPerson.firstName; - const lastName = - state.profile === Profile.SalesManager - ? SalesManager.lastName - : SalesPerson.lastName; + let firstName: string; + let lastName: string; + let profileImageName: string; + + switch (state.profile) { + case Profile.SalesManager: + firstName = SalesManager.firstName; + lastName = SalesManager.lastName; + profileImageName = SalesManager.profileImageName; + break; + + case Profile.SalesPerson: + if (anonymousLogin) { + firstName = AnonymousUser.firstName; + lastName = AnonymousUser.lastName; + profileImageName = AnonymousUser.profileImageName; + break; + } + + firstName = SalesPerson.firstName; + lastName = SalesPerson.lastName; + profileImageName = SalesPerson.profileImageName; + break; + } // Select page to display let page: JSX.Element; @@ -58,6 +84,7 @@ export default function App(): React.FunctionComponentElement { page = ( { page = ( ); break; @@ -80,6 +109,7 @@ export default function App(): React.FunctionComponentElement { profile={state.profile} firstName={firstName} lastName={lastName} + profileImageName={profileImageName} logoutOnClick={logoutOnClick} /> ); diff --git a/WarehouseDemo/ClientApp/src/assets/Icons/colspan-selected.svg b/WarehouseDemo/ClientApp/src/assets/Icons/colspan-selected.svg new file mode 100644 index 0000000..823283b --- /dev/null +++ b/WarehouseDemo/ClientApp/src/assets/Icons/colspan-selected.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/WarehouseDemo/ClientApp/src/assets/Icons/colspan.svg b/WarehouseDemo/ClientApp/src/assets/Icons/colspan.svg new file mode 100644 index 0000000..5ab6d80 --- /dev/null +++ b/WarehouseDemo/ClientApp/src/assets/Icons/colspan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/WarehouseDemo/ClientApp/src/assets/Icons/github.svg b/WarehouseDemo/ClientApp/src/assets/Icons/github.svg new file mode 100644 index 0000000..b677f67 --- /dev/null +++ b/WarehouseDemo/ClientApp/src/assets/Icons/github.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/WarehouseDemo/ClientApp/src/assets/Icons/one-column-selected.svg b/WarehouseDemo/ClientApp/src/assets/Icons/one-column-selected.svg new file mode 100644 index 0000000..efa8a5b --- /dev/null +++ b/WarehouseDemo/ClientApp/src/assets/Icons/one-column-selected.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/WarehouseDemo/ClientApp/src/assets/Icons/one-column.svg b/WarehouseDemo/ClientApp/src/assets/Icons/one-column.svg new file mode 100644 index 0000000..ee89c76 --- /dev/null +++ b/WarehouseDemo/ClientApp/src/assets/Icons/one-column.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/WarehouseDemo/ClientApp/src/assets/Icons/powerbi.svg b/WarehouseDemo/ClientApp/src/assets/Icons/powerbi.svg new file mode 100644 index 0000000..dcb8996 --- /dev/null +++ b/WarehouseDemo/ClientApp/src/assets/Icons/powerbi.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/WarehouseDemo/ClientApp/src/assets/Icons/rowspan-selected.svg b/WarehouseDemo/ClientApp/src/assets/Icons/rowspan-selected.svg new file mode 100644 index 0000000..da0bd7a --- /dev/null +++ b/WarehouseDemo/ClientApp/src/assets/Icons/rowspan-selected.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/WarehouseDemo/ClientApp/src/assets/Icons/rowspan.svg b/WarehouseDemo/ClientApp/src/assets/Icons/rowspan.svg new file mode 100644 index 0000000..e68c076 --- /dev/null +++ b/WarehouseDemo/ClientApp/src/assets/Icons/rowspan.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/WarehouseDemo/ClientApp/src/assets/Icons/three-column-selected.svg b/WarehouseDemo/ClientApp/src/assets/Icons/three-column-selected.svg new file mode 100644 index 0000000..3b0e4af --- /dev/null +++ b/WarehouseDemo/ClientApp/src/assets/Icons/three-column-selected.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/WarehouseDemo/ClientApp/src/assets/Icons/three-column.svg b/WarehouseDemo/ClientApp/src/assets/Icons/three-column.svg new file mode 100644 index 0000000..92b58e3 --- /dev/null +++ b/WarehouseDemo/ClientApp/src/assets/Icons/three-column.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/WarehouseDemo/ClientApp/src/assets/Icons/two-column-selected.svg b/WarehouseDemo/ClientApp/src/assets/Icons/two-column-selected.svg new file mode 100644 index 0000000..4f1a1e4 --- /dev/null +++ b/WarehouseDemo/ClientApp/src/assets/Icons/two-column-selected.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/WarehouseDemo/ClientApp/src/assets/Icons/two-column.svg b/WarehouseDemo/ClientApp/src/assets/Icons/two-column.svg new file mode 100644 index 0000000..7687e35 --- /dev/null +++ b/WarehouseDemo/ClientApp/src/assets/Icons/two-column.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/WarehouseDemo/ClientApp/src/assets/Images/anonymous-profile.svg b/WarehouseDemo/ClientApp/src/assets/Images/anonymous-profile.svg new file mode 100644 index 0000000..5f9507f --- /dev/null +++ b/WarehouseDemo/ClientApp/src/assets/Images/anonymous-profile.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/WarehouseDemo/ClientApp/src/assets/Images/app-name.svg b/WarehouseDemo/ClientApp/src/assets/Images/app-name.svg index 8cec279..2fcfddf 100644 --- a/WarehouseDemo/ClientApp/src/assets/Images/app-name.svg +++ b/WarehouseDemo/ClientApp/src/assets/Images/app-name.svg @@ -1 +1 @@ -WAREHOUSECONTOSO \ No newline at end of file + \ No newline at end of file diff --git a/WarehouseDemo/ClientApp/src/components/Card/Card.scss b/WarehouseDemo/ClientApp/src/components/Card/Card.scss index bc5bae4..7400d09 100644 --- a/WarehouseDemo/ClientApp/src/components/Card/Card.scss +++ b/WarehouseDemo/ClientApp/src/components/Card/Card.scss @@ -1,43 +1,50 @@ +// --------------------------------------------------------------------------- +// Copyright (c) Microsoft Corporation. All rights reserved. +// --------------------------------------------------------------------------- + button { - background-color: #303778; - border: none; - color: #FFFFFF; - font: 400 14px 'Segoe UI'; - padding: 0.5rem 0; - opacity: 1; - text-align: center; + background-color: #303778; + border: none; + color: #FFFFFF; + font: 400 14px 'Segoe UI'; + margin: .5rem 66px; + opacity: 1; + text-align: center; } button:focus { - outline: none; + outline: none; } .card { - max-width: 400px; + border-radius: 8px; + height: 427px; + width: 514px; } .card-img { - padding-top: 2.5rem; - width: 70%; -} - -.card-text { - color: #4A4A4A; - font: 400 13px 'Segoe UI'; - margin-bottom: 1rem; - text-align: center; + height: 40px; + margin-top: 60px; + width: 112px; } .card-title { - color: #303778; - font: 600 18px 'Segoe UI'; - margin-bottom: 0; - text-align: center; + color: #303778; + font: 600 18px 'Segoe UI'; + margin-bottom: 1rem; + text-align: center; } .gradient-bg { - background: linear-gradient(135deg, #D1A2B8, #9585BE, #2F3C6B); - height: 100%; - margin: 0; - padding: 0; + background: linear-gradient(135deg, #D1A2B8, #9585BE, #2F3C6B); + height: 100%; + margin: 0; + padding: 0; +} + +.horizontal-separator { + background-color: #CFCFCF; + height: 1px; + margin: 36px 87px 20px; + opacity: 1; } diff --git a/WarehouseDemo/ClientApp/src/components/Card/Card.tsx b/WarehouseDemo/ClientApp/src/components/Card/Card.tsx index e49b281..5c740fe 100644 --- a/WarehouseDemo/ClientApp/src/components/Card/Card.tsx +++ b/WarehouseDemo/ClientApp/src/components/Card/Card.tsx @@ -1,3 +1,7 @@ +// --------------------------------------------------------------------------- +// Copyright (c) Microsoft Corporation. All rights reserved. +// --------------------------------------------------------------------------- + import './Card.scss'; import React from 'react'; import { Home, HomeProps } from '../Home/Home'; @@ -17,19 +21,23 @@ export function Card(props: CardProps): JSX.Element { ); } return (
-
+
App name + {props.page === Page.Home ?
: null} + {cardBody}
diff --git a/WarehouseDemo/ClientApp/src/components/Checkbox/CheckBox.tsx b/WarehouseDemo/ClientApp/src/components/Checkbox/CheckBox.tsx new file mode 100644 index 0000000..9533e6f --- /dev/null +++ b/WarehouseDemo/ClientApp/src/components/Checkbox/CheckBox.tsx @@ -0,0 +1,30 @@ +// --------------------------------------------------------------------------- +// Copyright (c) Microsoft Corporation. All rights reserved. +// --------------------------------------------------------------------------- + +import React from 'react'; + +export interface CheckBoxProps { + title: string; + name: string; + checked: boolean; + handleCheckboxInput: { (event: React.ChangeEvent): void }; +} + +export const CheckBox = (props: CheckBoxProps): JSX.Element => { + return ( +
  • + +
  • + ); +}; diff --git a/WarehouseDemo/ClientApp/src/components/EmbedPage/EmbedPage.scss b/WarehouseDemo/ClientApp/src/components/EmbedPage/EmbedPage.scss index 2b48968..ab5f368 100644 --- a/WarehouseDemo/ClientApp/src/components/EmbedPage/EmbedPage.scss +++ b/WarehouseDemo/ClientApp/src/components/EmbedPage/EmbedPage.scss @@ -1,12 +1,17 @@ +// --------------------------------------------------------------------------- +// Copyright (c) Microsoft Corporation. All rights reserved. +// --------------------------------------------------------------------------- + .app-name { - left: 2rem; - position: absolute; + left: 2rem; + position: absolute; +} + +body { + background: #EBEFF3 0% 0% no-repeat padding-box; + opacity: 1; } .embed-page-class { - background: #EBEFF3 0% 0% no-repeat padding-box; -} - -.layout-img { - margin: 10px; + background: #EBEFF3 0% 0% no-repeat padding-box; } diff --git a/WarehouseDemo/ClientApp/src/components/EmbedPage/EmbedPage.tsx b/WarehouseDemo/ClientApp/src/components/EmbedPage/EmbedPage.tsx index 0727368..c16575b 100644 --- a/WarehouseDemo/ClientApp/src/components/EmbedPage/EmbedPage.tsx +++ b/WarehouseDemo/ClientApp/src/components/EmbedPage/EmbedPage.tsx @@ -1,29 +1,29 @@ +// --------------------------------------------------------------------------- +// Copyright (c) Microsoft Corporation. All rights reserved. +// --------------------------------------------------------------------------- + import './EmbedPage.scss'; -import React, { useState, useEffect, useRef } from 'react'; -import { Report, Embed, models, service } from 'powerbi-client'; -import { PowerBIEmbed, EmbedProps } from 'powerbi-client-react'; +import React, { useState, useEffect, useRef, useCallback } from 'react'; +import { Report, Embed, models, service, IEmbedConfiguration } from 'powerbi-client'; import { Profile } from '../../App'; import { NavTabs, Tab } from '../NavTabs/NavTabs'; import { IconBar } from '../IconBar/IconBar'; -import { PersonaliseBar } from '../PersonaliseBar/PersonaliseBar'; -import { getVisualsFromReport } from '../utils'; -import { Layout } from '../PersonaliseBar/PersonaliseBar'; +import { PowerBIEmbed } from 'powerbi-client-react'; +import { PersonaliseBar, Layout } from '../PersonaliseBar/PersonaliseBar'; +import { Footer } from '../Footer/Footer'; +import { getVisualsFromReport, getActivePage } from '../utils'; +import { VisualGroup, pairVisuals, getPageLayout, rearrangeVisualGroups } from '../VisualGroup'; import { salesPersonTabs, salesManagerTabs, TabName } from '../tabConfig'; -import { appName, reportEmbedConfigUrl } from '../../constants'; +import { appName, reportEmbedConfigUrl, ReportMargin } from '../../constants'; export interface EmbedPageProps { profile: Profile; firstName: string; lastName: string; + profileImageName: string; logoutOnClick: { (): void }; } -export interface ReportVisual { - id: string; - name: string; - checked: boolean; -} - export function EmbedPage(props: EmbedPageProps): JSX.Element { // State hook for PowerBI Report const [powerbiReport, setReport] = useState(null); @@ -37,9 +37,7 @@ export function EmbedPage(props: EmbedPageProps): JSX.Element { stateRef.current = powerbiReport; // Report config state hook - const [sampleReportConfig, setReportConfig] = useState< - EmbedProps['embedConfig'] - >({ + const [sampleReportConfig, setReportConfig] = useState({ type: 'report', embedUrl: undefined, tokenType: models.TokenType.Embed, @@ -48,14 +46,24 @@ export function EmbedPage(props: EmbedPageProps): JSX.Element { layoutType: models.LayoutType.Custom, customLayout: { displayOption: models.DisplayOption.FitToWidth, + pagesLayout: {}, + }, + panes: { + filters: { + visible: false, + }, + pageNavigation: { + visible: false, + }, }, }, }); // State hook to toggle personalise bar - const [showPersonaliseBar, setShowPersonaliseBar] = useState( - false - ); + const [showPersonaliseBar, setShowPersonaliseBar] = useState(false); + + // State hook to set qna visual index + const [qnaVisualIndex, setQnaVisualIndex] = useState(null); // List of tabs' name let tabNames: Array = []; @@ -75,7 +83,11 @@ export function EmbedPage(props: EmbedPageProps): JSX.Element { }); // State hook for PowerBI Report - const [reportvisuals, setReportVisuals] = useState([]); + const [reportVisuals, setReportVisuals] = useState([]); + + // State hook for the layout type to be rendered + // Three column layout is the default layout type selected + const [layoutType, setLayoutType] = useState(Layout.threeColumnLayout); /* End of state hooks declaration */ @@ -83,28 +95,30 @@ export function EmbedPage(props: EmbedPageProps): JSX.Element { [ 'loaded', function () { + console.log('Report has loaded'); getVisualsFromReport(stateRef.current, (visuals) => { // Remove visuals without title - visuals = visuals.filter( - (visual) => visual.title !== undefined - ); + visuals = visuals.filter((visual) => visual.title); - // TODO: Get only valid visuals with title - setReportVisuals( - visuals.map((visual) => { - return { - id: visual.name, - name: visual.title, - checked: true, - }; - }) - ); + // Check if the report has a QnA visual from the list of visuals and get the index + let qnaVisualIndexSearch = visuals.findIndex((visual) => visual.type === 'qnaVisual'); + + // No QnA visual in the report + if (qnaVisualIndexSearch === -1) { + qnaVisualIndexSearch = null; + } + + setQnaVisualIndex(qnaVisualIndexSearch); + + // Build visual groups and update state + setReportVisuals(pairVisuals(visuals)); }); }, ], [ 'rendered', function () { + console.log('Report has rendered'); // Add logic to trigger after report is rendered }, ], @@ -178,10 +192,7 @@ export function EmbedPage(props: EmbedPageProps): JSX.Element { setActiveTab(selectedTab); } - function getReportPageName( - activeTab: Tab['name'], - profileType: Profile - ): string { + function getReportPageName(activeTab: Tab['name'], profileType: Profile): string { let pageName: string; // Get report page name corresponding to active tab @@ -212,10 +223,6 @@ export function EmbedPage(props: EmbedPageProps): JSX.Element { } }, [activeTab, powerbiReport, props.profile]); - // State hook for the layout type to be rendered - // Three column layout is the default layout type selected - const [layoutType] = useState(Layout.threeColumnLayout); - // Create array of Tab for rendering and set isActive as true for the active tab const tabsDetails: Array = tabNames.map( (tabName: Tab['name']): Tab => { @@ -226,16 +233,13 @@ export function EmbedPage(props: EmbedPageProps): JSX.Element { const navTabs = ; const navPane = ( -
    @@ -36,27 +39,25 @@ export function Login(props: LoginProps): JSX.Element { className='input-icon' /> - +
    -
    -
    + + {props.profile === Profile.SalesPerson ? ( +
    + Enter in demo mode +
    + ) : null} ); } diff --git a/WarehouseDemo/ClientApp/src/components/NavTabs/NavTabs.scss b/WarehouseDemo/ClientApp/src/components/NavTabs/NavTabs.scss index 3ac6195..107c438 100644 --- a/WarehouseDemo/ClientApp/src/components/NavTabs/NavTabs.scss +++ b/WarehouseDemo/ClientApp/src/components/NavTabs/NavTabs.scss @@ -1,9 +1,14 @@ +// --------------------------------------------------------------------------- +// Copyright (c) Microsoft Corporation. All rights reserved. +// --------------------------------------------------------------------------- + li { margin: 0 .5rem; } -.navbar { +.header { background-color: white; + height: 96px; padding: 1rem; } diff --git a/WarehouseDemo/ClientApp/src/components/NavTabs/NavTabs.tsx b/WarehouseDemo/ClientApp/src/components/NavTabs/NavTabs.tsx index 5761aa0..fa1be8f 100644 --- a/WarehouseDemo/ClientApp/src/components/NavTabs/NavTabs.tsx +++ b/WarehouseDemo/ClientApp/src/components/NavTabs/NavTabs.tsx @@ -1,3 +1,7 @@ +// --------------------------------------------------------------------------- +// Copyright (c) Microsoft Corporation. All rights reserved. +// --------------------------------------------------------------------------- + import './NavTabs.scss'; import React from 'react'; diff --git a/WarehouseDemo/ClientApp/src/components/PersonaliseBar/PersonaliseBar.scss b/WarehouseDemo/ClientApp/src/components/PersonaliseBar/PersonaliseBar.scss index 8d1632c..42fe666 100644 --- a/WarehouseDemo/ClientApp/src/components/PersonaliseBar/PersonaliseBar.scss +++ b/WarehouseDemo/ClientApp/src/components/PersonaliseBar/PersonaliseBar.scss @@ -1,21 +1,136 @@ +// --------------------------------------------------------------------------- +// Copyright (c) Microsoft Corporation. All rights reserved. +// --------------------------------------------------------------------------- + +$personalise-dropdown-shadow: 0 11px 16px #94949430; + +.layout-img { + margin: 10px; +} + +.layouts-list-dropdown { + border-radius: 0; + border-width: 0; + box-shadow: $personalise-dropdown-shadow; + cursor: pointer; + display: flex; + flex-flow: column wrap; + min-width: 0; + transform: translate(90px, -32px); + width: 60px; +} + .personalise-bar { - align-content: space-between; - background: #FFFFFF 0% 0% no-repeat padding-box; - box-shadow: 0px 16px 25px #D8D8D829; - display: flex; - flex-flow: column wrap; - height: 60px; - margin: 30px; - opacity: 1; + align-content: space-between; + background: #FFFFFF 0 0 no-repeat padding-box; + box-shadow: 0 16px 25px #D8D8D829; + display: flex; + flex-flow: column wrap; + height: 60px; + margin: 30px; + opacity: 1; } .personalise-icon { - background: transparent 0% 0% no-repeat padding-box; - cursor: pointer; - opacity: 1; - padding: 17px; + background: transparent 0% 0% no-repeat padding-box; + cursor: pointer; + height: 60px; + opacity: 1; + padding: 17px; + width: 60px; +} + +.personalise-icon-active { + background: #D7DAF9 !important; } .personalise-icon-close { - padding: 22px; + cursor: pointer; + padding: 22px; +} + +.visual-checkbox-checkmark { + background: transparent; + border: 1px solid #CFCFCF; + border-radius: 0; + height: 20px; + left: 0; + position: absolute; + top: 3px; + width: 20px; +} + +.visual-checkbox-checkmark::after { + content: ''; + display: none; + position: absolute; +} + +.visual-checkbox-li { + margin: 9px 1px; +} + +.visual-checkbox-li>label { + cursor: pointer; + display: block; + font-size: 16px; + margin-bottom: 18px; + padding-left: 30px; + position: relative; +} + +.visual-checkbox-li>label>input { + cursor: pointer; + opacity: 0; + position: absolute; +} + +.visual-checkbox-li>label>input:checked~.visual-checkbox-checkmark { + background-color: #303778; + border: 0; +} + +.visual-checkbox-li>label>input:checked~.visual-checkbox-checkmark::after { + display: block; +} + +.visual-checkbox-li>label .visual-checkbox-checkmark::after { + border: 2px solid #FFF; + border-width: 0 1.5px 1.5px 0; + height: 13px; + left: 7px; + top: 2px; + transform: rotate(45deg); + width: 6px; +} + +.visuals-list-dropdown { + border: none; + border-radius: 0; + box-shadow: $personalise-dropdown-shadow; + padding: 34px 32px 25px; + transform: translate(30px, -31px); + width: 325px; +} + +.visual-list-title { + color: #303778; + font: Bold 20px/21px Segoe UI; + letter-spacing: 0; + text-align: left; +} + +.visual-list-subtitle { + color: #33384B; + font: Regular 16px/21px Segoe UI; + letter-spacing: 0; + padding-bottom: 17px; + text-align: left; +} + +.visual-title { + display: block; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; } diff --git a/WarehouseDemo/ClientApp/src/components/PersonaliseBar/PersonaliseBar.tsx b/WarehouseDemo/ClientApp/src/components/PersonaliseBar/PersonaliseBar.tsx index 9cd1a7a..533aefa 100644 --- a/WarehouseDemo/ClientApp/src/components/PersonaliseBar/PersonaliseBar.tsx +++ b/WarehouseDemo/ClientApp/src/components/PersonaliseBar/PersonaliseBar.tsx @@ -1,8 +1,21 @@ +// --------------------------------------------------------------------------- +// Copyright (c) Microsoft Corporation. All rights reserved. +// --------------------------------------------------------------------------- + import './PersonaliseBar.scss'; -import React from 'react'; +import '../EmbedPage/EmbedPage.scss'; +import React, { useState, useEffect } from 'react'; +import { VisualGroup } from '../VisualGroup'; +import { CheckBox } from '../Checkbox/CheckBox'; interface PersonaliseBarProps { togglePersonaliseBar: { (): void }; + visuals: VisualGroup[]; + handleCheckboxInput: { (event: React.ChangeEvent): void }; + toggleQnaVisual: { (): void }; + qnaVisualIndex: number; + setLayoutType: { (layoutType: Layout): void }; + layoutType: Layout; } export enum Layout { @@ -14,29 +27,73 @@ export enum Layout { } export function PersonaliseBar(props: PersonaliseBarProps): JSX.Element { + // State hook to set a tab as active + const [visualDropdown, setVisualDropdown] = useState(false); + + // State hook to set a tab as active + const [layoutDropdown, setLayoutDropdown] = useState(false); + function toggleVisualDropdown() { - // TODO: Add logic to show/hide dropdown + setVisualDropdown((prevState) => !prevState); + // TODO: Make closing of other dropdowns scalable + setLayoutDropdown(false); } function toggleLayoutDropdown() { - // TODO: Add logic to show/hide dropdown + // TODO: Make closing of other dropdowns scalable + setVisualDropdown(false); + setLayoutDropdown((prevState) => !prevState); + } + + useEffect(() => { + // TODO: Remove report visuals on checkbox here + // Re-arrange visuals in the custom layout + }, [layoutDropdown]); + + let layoutImageName = 'three-column-selected'; + switch (props.layoutType) { + case Layout.oneColumnLayout: + layoutImageName = 'one-column-selected'; + break; + + case Layout.twoColumnLayout: + layoutImageName = 'two-column-selected'; + break; + + case Layout.threeColumnLayout: + layoutImageName = 'three-column-selected'; + break; + + case Layout.twoColumnRowspanLayout: + layoutImageName = 'rowspan-selected'; + break; + + case Layout.twoColumnColspanLayout: + layoutImageName = 'colspan-selected'; + break; } const personaliseIcons = [ { name: 'personalise-include-visuals', onClickHandler: toggleVisualDropdown, - className: 'personalise-icon', + className: `personalise-icon ${visualDropdown ? 'personalise-icon-active' : ''}`, }, { - name: 'personalise-layout', + name: layoutImageName, onClickHandler: toggleLayoutDropdown, - className: 'personalise-icon', + className: `personalise-icon ${layoutDropdown ? 'personalise-icon-active' : ''}`, }, { name: 'personalise-qna', - onClickHandler: null, - className: 'personalise-icon', + onClickHandler: props.toggleQnaVisual, + className: `personalise-icon ${ + props.qnaVisualIndex && + props.visuals.length > 0 && + props.visuals[props.qnaVisualIndex].checked + ? 'personalise-icon-active' + : '' + }`, }, ]; @@ -46,6 +103,39 @@ export function PersonaliseBar(props: PersonaliseBarProps): JSX.Element { className: 'personalise-icon personalise-icon-close', }; + const layoutTypes = [ + { + name: 'three-column', + selectedName: 'three-column-selected', + layout: Layout.threeColumnLayout, + className: 'layout-img', + }, + { + name: 'two-column', + selectedName: 'two-column-selected', + layout: Layout.twoColumnLayout, + className: 'layout-img', + }, + { + name: 'one-column', + selectedName: 'one-column-selected', + layout: Layout.oneColumnLayout, + className: 'layout-img', + }, + { + name: 'rowspan', + selectedName: 'rowspan-selected', + layout: Layout.twoColumnRowspanLayout, + className: 'layout-img', + }, + { + name: 'colspan', + selectedName: 'colspan-selected', + layout: Layout.twoColumnColspanLayout, + className: 'layout-img', + }, + ]; + const iconList = personaliseIcons.map((icon, idx) => { return ( ); - return personaliseBar; + const visualListTitle =
    Configure Report View
    ; + const visualListSubtitle =
    (Show/Hide)
    ; + + let visualsCheckboxList: JSX.Element[] = null; + + if (props.visuals?.length > 0) { + visualsCheckboxList = props.visuals + .filter((visual) => visual.mainVisual.type !== 'qnaVisual') + .map((visual, idx) => { + return ( + + ); + }); + } + + // Visuals dropdown element + const visualsCheckbox: JSX.Element = visualDropdown ? ( +
    +
      + {visualListTitle} + {visualListSubtitle} + {visualsCheckboxList} +
    +
    + ) : null; + + // Layouts dropdown element + const layoutsElement: JSX.Element = layoutDropdown ? ( +
    +
      + {layoutTypes.map((layoutType, idx) => { + let imgName = undefined; + if (props.layoutType === layoutType.layout) { + imgName = layoutType.selectedName; + } else { + imgName = layoutType.name; + } + return ( + {layoutType.name} { + props.setLayoutType(layoutType.layout); + }} + key={idx} + /> + ); + })} +
    +
    + ) : null; + + return ( + + {personaliseBar} + {visualsCheckbox} + {layoutsElement} + + ); } diff --git a/WarehouseDemo/ClientApp/src/components/ProfileInfo/ProfileInfo.scss b/WarehouseDemo/ClientApp/src/components/ProfileInfo/ProfileInfo.scss index 1c7d0d8..a05e8ae 100644 --- a/WarehouseDemo/ClientApp/src/components/ProfileInfo/ProfileInfo.scss +++ b/WarehouseDemo/ClientApp/src/components/ProfileInfo/ProfileInfo.scss @@ -1,3 +1,7 @@ +// --------------------------------------------------------------------------- +// Copyright (c) Microsoft Corporation. All rights reserved. +// --------------------------------------------------------------------------- + .profile-info { color: #7B7B7B; font: 400 12px/16px 'Segoe UI'; diff --git a/WarehouseDemo/ClientApp/src/components/ProfileInfo/ProfileInfo.tsx b/WarehouseDemo/ClientApp/src/components/ProfileInfo/ProfileInfo.tsx index 1a3abd5..254945d 100644 --- a/WarehouseDemo/ClientApp/src/components/ProfileInfo/ProfileInfo.tsx +++ b/WarehouseDemo/ClientApp/src/components/ProfileInfo/ProfileInfo.tsx @@ -1,3 +1,7 @@ +// --------------------------------------------------------------------------- +// Copyright (c) Microsoft Corporation. All rights reserved. +// --------------------------------------------------------------------------- + import './ProfileInfo.scss'; import React from 'react'; import { Profile } from '../../App'; @@ -11,9 +15,7 @@ export interface ProfileInfoProps { export function ProfileInfo(props: ProfileInfoProps): JSX.Element { return (
    -
    - {props.firstName + ' ' + props.lastName} -
    +
    {props.firstName + ' ' + props.lastName}
    {props.profile}
    ); diff --git a/WarehouseDemo/ClientApp/src/components/SettingsDropdown.tsx b/WarehouseDemo/ClientApp/src/components/SettingsDropdown/SettingsDropdown.tsx similarity index 69% rename from WarehouseDemo/ClientApp/src/components/SettingsDropdown.tsx rename to WarehouseDemo/ClientApp/src/components/SettingsDropdown/SettingsDropdown.tsx index 79f55e4..c8ef2ad 100644 --- a/WarehouseDemo/ClientApp/src/components/SettingsDropdown.tsx +++ b/WarehouseDemo/ClientApp/src/components/SettingsDropdown/SettingsDropdown.tsx @@ -1,3 +1,7 @@ +// --------------------------------------------------------------------------- +// Copyright (c) Microsoft Corporation. All rights reserved. +// --------------------------------------------------------------------------- + import React from 'react'; export interface SettingsDropdownProps { @@ -10,9 +14,7 @@ export function SettingsDropdown(props: SettingsDropdownProps): JSX.Element { return (
    {props.showPersonaliseBar ? ( -
    +
    Personalize Home
    ) : null} diff --git a/WarehouseDemo/ClientApp/src/components/VisualGroup.ts b/WarehouseDemo/ClientApp/src/components/VisualGroup.ts new file mode 100644 index 0000000..8c39931 --- /dev/null +++ b/WarehouseDemo/ClientApp/src/components/VisualGroup.ts @@ -0,0 +1,335 @@ +// --------------------------------------------------------------------------- +// Copyright (c) Microsoft Corporation. All rights reserved. +// --------------------------------------------------------------------------- + +import { VisualDescriptor, models, Report } from 'powerbi-client'; +import { IVisualNode } from 'visualDescriptor'; +import { Layout } from './PersonaliseBar/PersonaliseBar'; +import { + visualPairs, + visualMargin, + visualAspectRatio, + rowsPerSpanTypeSection, + visualsPerSpanTypeSection, + overlapVisualHeightRatio, +} from '../constants'; +import { layoutMap, LayoutColumns, SpanType } from './layoutMapping'; + +export interface VisualGroup { + mainVisual: IVisualNode; + overlapVisual?: IVisualNode; + checked: boolean; +} + +/** + * Pairs the report visuals into VisualGroups based on visualPairs array + * @param reportVisuals List of visuals of the embedded report + */ +export function pairVisuals(reportVisuals: VisualDescriptor[]): VisualGroup[] { + // List of title of overlapping visuals + const overlapVisualsPairList = visualPairs.map((visualPair) => { + return visualPair[1]; + }); + + // List of main visuals + // Filter out overlapping visuals from all visuals, i.e. [reportVisuals] - [overlapping visuals] + const mainVisualGroupList = reportVisuals.filter((reportVisual) => { + return !overlapVisualsPairList.includes(reportVisual.title); + }); + + // Final list of Visual groups + const visualGroups: VisualGroup[] = mainVisualGroupList.map((reportVisual) => { + // Pair of groups visuals' title + const visualTitlePair = visualPairs.find((visualPair) => { + // Check if this main visual has a mapped overlapping visual + return visualPair[0] === reportVisual.title; + }); + + let overlapVisual: VisualGroup['overlapVisual']; + + if (visualTitlePair) { + // Title of the overlapping visual mapped to this reportVisual + const overlapVisualTitle = visualTitlePair[1]; + + // Get the overlap visual + overlapVisual = reportVisuals.find((visual) => { + return visual.title === overlapVisualTitle; + }); + } + + return { + mainVisual: reportVisual, + overlapVisual: overlapVisual, + + // Make the QNA visual hidden by default + checked: reportVisual.type !== 'qnaVisual', + }; + }); + + return visualGroups; +} + +/** + * Construct page Layout from selected visual groups + * @param reportPageName + * @param visualGroups Visual groups of the embedded report + */ +export function getPageLayout(reportPageName: string, visualGroups: VisualGroup[]): models.PagesLayout { + const visualsLayout = visualGroupsToVisualsLayout(visualGroups); + + const pagesLayout: models.PagesLayout = {}; + pagesLayout[reportPageName] = { + defaultLayout: { + displayState: { + // Default display mode for visuals is hidden + mode: models.VisualContainerDisplayMode.Hidden, + }, + }, + visualsLayout: visualsLayout, + }; + + return pagesLayout; +} + +/** + * Construct visual layout from selected visual groups + * @param visualGroups Visual groups of the embedded report + */ +function visualGroupsToVisualsLayout(visualGroups: VisualGroup[]): models.VisualsLayout { + const visualsLayout: models.VisualsLayout = {}; + + for (const visualGroup of visualGroups) { + // Show only the visuals groups selected + if (!visualGroup.checked) { + continue; + } + + // Construct visual layout of mainVisual + visualsLayout[visualGroup.mainVisual.name] = visualGroup.mainVisual.layout; + + // Construct visual layout of overlapping visual if available + if (visualGroup.overlapVisual) { + visualsLayout[visualGroup.overlapVisual.name] = visualGroup.overlapVisual.layout; + } + } + + // Convert every visual in all visual groups into type models.VisualsLayout + return visualsLayout; +} + +/** + * Calculates the coordinates of all visuals for the given report + * based on the layout type selected and updates the visualGroups array + * @param visualGroups List of all visual groups of the report + * @param selectedLayout Layout type selected + * @param powerbiReport Embedded powerbi report + * @returns new report's height + */ +export function rearrangeVisualGroups( + visualGroups: VisualGroup[], + selectedLayout: Layout, + powerbiReport: Report +): number { + const reportWidth = powerbiReport.element.clientWidth; + let reportHeight = powerbiReport.element.clientHeight; + + // Get number of columns corresponding to given layout + const layoutColumns = layoutMap.get(selectedLayout).columns; + + // Count of checked visuals + const checkedVisualsLength = visualGroups.filter((visualGroup) => visualGroup.checked).length; + + // Calculating the combined width of the all visuals in a row + const visualsTotalWidth = reportWidth - visualMargin * (layoutColumns + 1); + + // Calculate the width of a single visual, according to the number of columns + // For one and three columns visuals width will be a third of visuals total width + const visualWidth = visualsTotalWidth / layoutColumns; + + // Calculate visualHeight with margins + let visualHeight = visualWidth * visualAspectRatio; + + // Get the layoutSpanType for given layout type + const layoutSpanType = layoutMap.get(selectedLayout).spanType; + + // Visuals starting point + let x = visualMargin; + let y = visualMargin; + + // 2 x 2 Layout with column span in second row + if (layoutSpanType === SpanType.ColSpan) { + let rows = rowsPerSpanTypeSection * Math.floor(checkedVisualsLength / visualsPerSpanTypeSection); + + if (checkedVisualsLength % visualsPerSpanTypeSection) { + rows += 1; + } + + reportHeight = Math.max(reportHeight, rows * visualHeight + (rows + 1) * visualMargin); + + for (let idx = 0, checkedCount = 0; idx < visualGroups.length; idx++) { + const element = visualGroups[idx]; + if (!element.checked) { + continue; + } + + // Width of this visual grp + const width = + checkedCount % visualsPerSpanTypeSection === visualsPerSpanTypeSection - 1 + ? visualWidth * 2 + : visualWidth; + + const mainVisualLayout = element.mainVisual.layout; + // Calc coordinates of main visual + mainVisualLayout.x = x; + mainVisualLayout.y = y; + mainVisualLayout.width = width; + mainVisualLayout.height = visualHeight; + mainVisualLayout.displayState = { + // Change the selected visual's display mode to visible + mode: models.VisualContainerDisplayMode.Visible, + }; + + if (element.overlapVisual) { + const overlapVisualLayout = element.overlapVisual.layout; + // Calc coordinates of main visual + overlapVisualLayout.x = x; + overlapVisualLayout.y = y + visualHeight * (1 - overlapVisualHeightRatio); + overlapVisualLayout.width = width; + overlapVisualLayout.height = visualHeight * overlapVisualHeightRatio; + overlapVisualLayout.displayState = { + // Change the selected visual's display mode to visible + mode: models.VisualContainerDisplayMode.Visible, + }; + } + + // Calculating (x,y) position for the next visual + x += + visualMargin + + (checkedCount % visualsPerSpanTypeSection === visualsPerSpanTypeSection - 1 + ? visualWidth * 2 + : visualWidth); + + // Reset x + if (x + visualWidth > reportWidth) { + x = visualMargin; + y += visualHeight + visualMargin; + } + + checkedCount++; + } + } + // 2 x 2 Layout with row span in first column + else if (layoutSpanType === SpanType.RowSpan) { + let rows = rowsPerSpanTypeSection * Math.floor(checkedVisualsLength / visualsPerSpanTypeSection); + + if (checkedVisualsLength % visualsPerSpanTypeSection) { + rows += 2; + } + + reportHeight = Math.max(reportHeight, rows * visualHeight + (rows + 1) * visualMargin); + + for (let idx = 0, checkedCount = 0; idx < visualGroups.length; idx++) { + const element = visualGroups[idx]; + if (!element.checked) { + continue; + } + + // Width of this visual grp + const height = checkedCount % visualsPerSpanTypeSection === 0 ? visualHeight * 2 : visualHeight; + + const mainVisualLayout = element.mainVisual.layout; + // Calc coordinates of main visual + mainVisualLayout.x = x; + mainVisualLayout.y = y; + mainVisualLayout.width = visualWidth; + mainVisualLayout.height = height; + mainVisualLayout.displayState = { + // Change the selected visual's display mode to visible + mode: models.VisualContainerDisplayMode.Visible, + }; + + if (element.overlapVisual) { + const overlapVisualLayout = element.overlapVisual.layout; + // Calc coordinates of main visual + overlapVisualLayout.x = x; + overlapVisualLayout.y = y + height * (1 - overlapVisualHeightRatio); + overlapVisualLayout.width = visualWidth; + overlapVisualLayout.height = height * overlapVisualHeightRatio; + overlapVisualLayout.displayState = { + // Change the selected visual's display mode to visible + mode: models.VisualContainerDisplayMode.Visible, + }; + } + + // Calculating (x,y) position for the next visual + x += visualMargin + visualWidth; + + // Reset x + if (x + visualWidth > reportWidth) { + x = + (checkedCount + 1) % visualsPerSpanTypeSection === 0 + ? visualMargin + : 2 * visualMargin + visualWidth; + y += + checkedCount % visualsPerSpanTypeSection === 0 + ? visualHeight * 2 + : visualHeight + visualMargin; + } + + checkedCount++; + } + } + // n x n Layout + else { + if (layoutColumns === LayoutColumns.One) { + visualHeight /= 2; + } + + const rows = Math.ceil(checkedVisualsLength / layoutColumns); + + reportHeight = Math.max(reportHeight, rows * visualHeight + (rows + 1) * visualMargin); + + for (let idx = 0; idx < visualGroups.length; idx++) { + const element = visualGroups[idx]; + if (!element.checked) { + continue; + } + + const mainVisualLayout = element.mainVisual.layout; + // Calc coordinates of main visual + mainVisualLayout.x = x; + mainVisualLayout.y = y; + mainVisualLayout.width = visualWidth; + mainVisualLayout.height = visualHeight; + mainVisualLayout.displayState = { + // Change the selected visual's display mode to visible + mode: models.VisualContainerDisplayMode.Visible, + }; + + if (element.overlapVisual) { + const overlapVisualLayout = element.overlapVisual.layout; + // Calc coordinates of main visual + overlapVisualLayout.x = x; + overlapVisualLayout.y = y + visualHeight * (1 - overlapVisualHeightRatio); + overlapVisualLayout.width = visualWidth; + overlapVisualLayout.height = visualHeight * overlapVisualHeightRatio; + overlapVisualLayout.displayState = { + // Change the selected visual's display mode to visible + mode: models.VisualContainerDisplayMode.Visible, + }; + } + + // Calculating (x,y) position for the next visual + x += visualMargin + visualWidth; + + // Reset x + if (x + visualWidth > reportWidth) { + x = visualMargin; + y += visualHeight + visualMargin; + } + } + } + + // Return height to resize the embedded report + return reportHeight; +} diff --git a/WarehouseDemo/ClientApp/src/components/layoutMapping.ts b/WarehouseDemo/ClientApp/src/components/layoutMapping.ts new file mode 100644 index 0000000..dc8e4c8 --- /dev/null +++ b/WarehouseDemo/ClientApp/src/components/layoutMapping.ts @@ -0,0 +1,60 @@ +// --------------------------------------------------------------------------- +// Copyright (c) Microsoft Corporation. All rights reserved. +// --------------------------------------------------------------------------- + +import { Layout } from './PersonaliseBar/PersonaliseBar'; + +export interface LayoutMapping { + spanType: SpanType; + columns: number; +} + +export enum SpanType { + None = 0, + RowSpan = 1, + ColSpan = 2, +} + +export enum LayoutColumns { + One = 1, + Two = 2, + Three = 3, +} + +export const layoutMap = new Map([ + [ + Layout.oneColumnLayout, + { + spanType: SpanType.None, + columns: 1, + }, + ], + [ + Layout.twoColumnLayout, + { + spanType: SpanType.None, + columns: 2, + }, + ], + [ + Layout.threeColumnLayout, + { + spanType: SpanType.None, + columns: 3, + }, + ], + [ + Layout.twoColumnColspanLayout, + { + spanType: SpanType.ColSpan, + columns: 2, + }, + ], + [ + Layout.twoColumnRowspanLayout, + { + spanType: SpanType.RowSpan, + columns: 2, + }, + ], +]); diff --git a/WarehouseDemo/ClientApp/src/components/tabConfig.ts b/WarehouseDemo/ClientApp/src/components/tabConfig.ts index 94deeb0..5e83f8c 100644 --- a/WarehouseDemo/ClientApp/src/components/tabConfig.ts +++ b/WarehouseDemo/ClientApp/src/components/tabConfig.ts @@ -1,3 +1,7 @@ +// --------------------------------------------------------------------------- +// Copyright (c) Microsoft Corporation. All rights reserved. +// --------------------------------------------------------------------------- + /** * Config for tabs in EmbedPage * diff --git a/WarehouseDemo/ClientApp/src/components/utils.ts b/WarehouseDemo/ClientApp/src/components/utils.ts index 128d4d3..59b8719 100644 --- a/WarehouseDemo/ClientApp/src/components/utils.ts +++ b/WarehouseDemo/ClientApp/src/components/utils.ts @@ -1,4 +1,8 @@ -import { Report, VisualDescriptor } from 'powerbi-client'; +// --------------------------------------------------------------------------- +// Copyright (c) Microsoft Corporation. All rights reserved. +// --------------------------------------------------------------------------- + +import { Report, VisualDescriptor, Page } from 'powerbi-client'; /** * Get all the visuals for the given powerbi report. @@ -21,3 +25,19 @@ export async function getVisualsFromReport( console.error(reason); } } + +/** + * Gets current active page from the given report + * @param powerbiReport + * @returns active page instance + */ +export async function getActivePage(powerbiReport: Report): Promise { + const pages = await powerbiReport.getPages(); + + // Find active page + const activePage = pages.find((page) => { + return page.isActive; + }); + + return activePage; +} diff --git a/WarehouseDemo/ClientApp/src/constants.ts b/WarehouseDemo/ClientApp/src/constants.ts index 63330d1..b39add8 100644 --- a/WarehouseDemo/ClientApp/src/constants.ts +++ b/WarehouseDemo/ClientApp/src/constants.ts @@ -1,9 +1,14 @@ +// --------------------------------------------------------------------------- +// Copyright (c) Microsoft Corporation. All rights reserved. +// --------------------------------------------------------------------------- + /** * SalesPerson details */ export const SalesPerson = { firstName: 'June', lastName: 'Smith', + profileImageName: 'salesperson-profile.svg', }; /** @@ -12,6 +17,16 @@ export const SalesPerson = { export const SalesManager = { firstName: 'Donna', lastName: 'Paul', + profileImageName: 'salesmanager-profile.svg', +}; + +/** + * Anonymous user details + */ +export const AnonymousUser = { + firstName: 'Anonymous', + lastName: '', + profileImageName: 'anonymous-profile.svg', }; /** @@ -19,6 +34,55 @@ export const SalesManager = { */ export const reportEmbedConfigUrl = '/api/powerbi/EmbedParams'; +/** + * Pairs of visuals to be grouped together in the custom layout + * Format: ['main visual title', 'overlapping visual title'] + */ +// TODO: Add titles of visuals to be paired in custom layout +export const visualPairs = [['', '']]; + +/** + * Margin around each visual + */ +export const visualMargin = 20; + +/** + * Left right margin around report page + */ +export const ReportMargin = 10; + +/** + * Aspect ratio of all visuals + */ +export const visualAspectRatio = 9 / 16; + +/** + * Ratio of height of Overlap visual and Main visual + */ +export const overlapVisualHeightRatio = 1 / 4; + +// Section means a single unit that will be repeating as pattern to form the layout +// These 2 variables are used for the 2 custom layouts with spanning +/** + * Row is the max number of visuals in any column of a section (repeating unit) + */ +export const rowsPerSpanTypeSection = 2; + +/** + * Number of visuals in a section (repeating unit) + */ +export const visualsPerSpanTypeSection = 3; + +/** + * Alternative name for PowerBI icon + */ +export const powerBiIconAltName = 'powerbi'; + +/** + * Alternative name for GitHub icon + */ +export const gitHubIconAltName = 'github'; + /** * Name of the application */ diff --git a/WarehouseDemo/ClientApp/src/index.scss b/WarehouseDemo/ClientApp/src/index.scss index a4f1a8d..8632d51 100644 --- a/WarehouseDemo/ClientApp/src/index.scss +++ b/WarehouseDemo/ClientApp/src/index.scss @@ -1,3 +1,7 @@ +// --------------------------------------------------------------------------- +// Copyright (c) Microsoft Corporation. All rights reserved. +// --------------------------------------------------------------------------- + body, html { height: 100%; -} \ No newline at end of file +} diff --git a/WarehouseDemo/ClientApp/src/index.tsx b/WarehouseDemo/ClientApp/src/index.tsx index 6ae50b8..8f62ad7 100644 --- a/WarehouseDemo/ClientApp/src/index.tsx +++ b/WarehouseDemo/ClientApp/src/index.tsx @@ -1,3 +1,7 @@ +// --------------------------------------------------------------------------- +// Copyright (c) Microsoft Corporation. All rights reserved. +// --------------------------------------------------------------------------- + import './index.scss'; import React from 'react'; import ReactDOM from 'react-dom'; From 7b3f275e413c91e48dfe2a206cf7b8bbaa8854fa Mon Sep 17 00:00:00 2001 From: Ankit Kesharwani Date: Thu, 23 Jul 2020 15:11:38 +0000 Subject: [PATCH 07/21] Merged PR 94024: Add Export report service to the server-side 1. This PR contains a service for exporting report page in 3 different formats (pdf, pptx, png) with their current state in the embedded session 2. Code flow to handle errors in the UI from the server-side will be sent in a different PR ## C# | Checklist | Yes/ No/NA | |:-----------|:-----------:| | Are the naming conventions as per development standards? | Yes | | Is there summary for each method? | Yes | | Is there summary for each attribute in class? | No | | Is code analysis executed? | Yes | | Is modularization done? - Same code is not repeated across functions and files | Yes | | Are unused directives are removed from files? | Yes | | Directives are mentioned after namespace in files | Yes | | Is commented code is removed from all files? | Yes | | Is code commenting is done appropriately? | Yes | | Are access specifiers mentioned for all classes, methods, and attributes of class? | Yes | ## Testing | Checklist | Yes/ No/NA | |:-----------|:-----------:| | Are the test cases executed? | Yes | | Are there 0 build errors and warnings? | Yes | Related work items: #378185, #397267, #400518, #403334 --- WarehouseDemo/Constant.cs | 25 ++- .../Controllers/PowerBiController.cs | 26 +++ WarehouseDemo/Helpers/.gitkeep | 0 WarehouseDemo/Helpers/ParamHelper.cs | 22 +++ WarehouseDemo/Models/ExportParams.cs | 18 +++ WarehouseDemo/Models/ExportedFile.cs | 20 +++ WarehouseDemo/Services/ExportService.cs | 151 ++++++++++++++++++ 7 files changed, 261 insertions(+), 1 deletion(-) delete mode 100644 WarehouseDemo/Helpers/.gitkeep create mode 100644 WarehouseDemo/Helpers/ParamHelper.cs create mode 100644 WarehouseDemo/Models/ExportParams.cs create mode 100644 WarehouseDemo/Models/ExportedFile.cs create mode 100644 WarehouseDemo/Services/ExportService.cs diff --git a/WarehouseDemo/Constant.cs b/WarehouseDemo/Constant.cs index 3f0da98..4fe7154 100644 --- a/WarehouseDemo/Constant.cs +++ b/WarehouseDemo/Constant.cs @@ -15,4 +15,27 @@ public class Constant // Used to create Power BI HTTP client public const string PowerBiApiUri = "https://api.powerbi.com"; -} \ No newline at end of file + + // Used to check the file format of export file + public const string PDF = "PDF"; + public const string PPT = "PPT"; + public const string PNG = "PNG"; + + // Used as media type while returning exported file + public const string MimeTypePdf = "application/pdf"; + public const string MimeTypePptx = "application/vnd.openxmlformats-officedocument.presentationml.presentation"; + public const string MimeTypePng = "image/png"; + + // Used to set the name of exported file + public const string ExportFileName = "Exported"; + + // Used for setting locale for exporting + public const string DefaultLocale = "en-us"; + + // Used while polling for report export status + public const int ExportTimeoutInMinutes = 10; + + // Used for returning error message during export parameters validation failure + public const string MissingPageName = "Provide a valid page name"; + public const string MissingFileFormat = "Provide a valid file format"; +} diff --git a/WarehouseDemo/Controllers/PowerBiController.cs b/WarehouseDemo/Controllers/PowerBiController.cs index 12d62c4..664b5b0 100644 --- a/WarehouseDemo/Controllers/PowerBiController.cs +++ b/WarehouseDemo/Controllers/PowerBiController.cs @@ -47,5 +47,31 @@ namespace WarehouseDemo.Controllers return Ok(embedParams.ToString()); } + + [HttpPost("/api/powerbi/ExportReport")] + public async Task> GetExportedReport([FromBody] ExportParams exportParams) + { + // TODO: Extract JWT token from request header + // TODO: Add throttling by IP on this API + + if (string.IsNullOrWhiteSpace(exportParams.PageName)) + { + return BadRequest(Constant.MissingPageName); + } + else if (string.IsNullOrWhiteSpace(exportParams.FileFormat)) + { + return BadRequest(Constant.MissingFileFormat); + } + + // Generate AAD token + var authService = new AuthService(KeyVaultConfig, AuthConfig, Cache); + var aadToken = await authService.GetAadToken(); + + // Generated exported file + var exportService = new ExportService(aadToken); + var exportedFile = await exportService.GetExportedFile(new Guid(PowerBiConfig.Value.WorkspaceId), new Guid(PowerBiConfig.Value.ReportId), exportParams.PageName, exportParams.FileFormat, exportParams.PageState); + + return Ok(File(exportedFile.MemoryStream.ToArray(), exportedFile.MimeType, exportedFile.FileName)); + } } } diff --git a/WarehouseDemo/Helpers/.gitkeep b/WarehouseDemo/Helpers/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/WarehouseDemo/Helpers/ParamHelper.cs b/WarehouseDemo/Helpers/ParamHelper.cs new file mode 100644 index 0000000..7663475 --- /dev/null +++ b/WarehouseDemo/Helpers/ParamHelper.cs @@ -0,0 +1,22 @@ +namespace WarehouseDemo.Helpers +{ + using System; + using System.Text; + + public static class ParamHelper + { + /// + /// Decode Base64 encoded string + /// + /// Base64 decoded string + public static string DecodeBase64EncodedString(string base64String) + { + if (string.IsNullOrWhiteSpace(base64String)) + { + return null; + } + + return Encoding.UTF8.GetString(Convert.FromBase64String(base64String)); + } + } +} diff --git a/WarehouseDemo/Models/ExportParams.cs b/WarehouseDemo/Models/ExportParams.cs new file mode 100644 index 0000000..43c65db --- /dev/null +++ b/WarehouseDemo/Models/ExportParams.cs @@ -0,0 +1,18 @@ +// ---------------------------------------------------------------------------- +// Copyright (c) Microsoft Corporation. All rights reserved. +// ---------------------------------------------------------------------------- + +namespace WarehouseDemo.Models +{ + public class ExportParams + { + // Name of report page to be exported + public string PageName { get; set; } + + // Format of export file + public string FileFormat { get; set; } + + // State of page to be exported + public string PageState { get; set; } + } +} diff --git a/WarehouseDemo/Models/ExportedFile.cs b/WarehouseDemo/Models/ExportedFile.cs new file mode 100644 index 0000000..f936b1a --- /dev/null +++ b/WarehouseDemo/Models/ExportedFile.cs @@ -0,0 +1,20 @@ +// ---------------------------------------------------------------------------- +// Copyright (c) Microsoft Corporation. All rights reserved. +// ---------------------------------------------------------------------------- + +namespace WarehouseDemo.Models +{ + using System.IO; + + public class ExportedFile + { + // Stores exported report page stream + public MemoryStream MemoryStream { get; set; } + + // Stores name of file with extension + public string FileName { get; set; } + + // Stores the MIME type of the exported file + public string MimeType { get; set; } + } +} diff --git a/WarehouseDemo/Services/ExportService.cs b/WarehouseDemo/Services/ExportService.cs new file mode 100644 index 0000000..8e40760 --- /dev/null +++ b/WarehouseDemo/Services/ExportService.cs @@ -0,0 +1,151 @@ +// ---------------------------------------------------------------------------- +// Copyright (c) Microsoft Corporation. All rights reserved. +// ---------------------------------------------------------------------------- + +namespace WarehouseDemo.Service +{ + using Microsoft.PowerBI.Api; + using Microsoft.PowerBI.Api.Models; + using Microsoft.Rest; + using System; + using System.Collections.Generic; + using System.IO; + using System.Threading.Tasks; + using WarehouseDemo.Models; + + public class ExportService + { + private TokenCredentials tokenCredentials; + + public ExportService(string aadToken) + { + tokenCredentials = new TokenCredentials(aadToken, "Bearer"); + } + + /// + /// Get exported report file + /// + /// Wrapper object with exported file as a stream object and its extension + public async Task GetExportedFile(Guid workspaceId, Guid reportId, string pageName, string fileFormat, string pageState = null) + { + FileFormat exportFormat; + string mimeType; + switch (fileFormat.ToUpper()) + { + case Constant.PDF: + exportFormat = FileFormat.PDF; + mimeType = Constant.MimeTypePdf; + break; + + case Constant.PPT: + exportFormat = FileFormat.PPTX; + mimeType = Constant.MimeTypePptx; + break; + + case Constant.PNG: + exportFormat = FileFormat.PNG; + mimeType = Constant.MimeTypePng; + break; + + default: throw new Exception("Provide a valid export file type"); + } + + using (var pbiClient = new PowerBIClient(new Uri(Constant.PowerBiApiUri), tokenCredentials)) + { + var exportId = await InitExportRequest(pbiClient, workspaceId, reportId, pageName, exportFormat, pageState); + var fileExport = await GetFileExport(pbiClient, workspaceId, reportId, exportId); + + if (fileExport.Status != ExportState.Succeeded) + { + throw new Exception("Failed to export report"); + } + + // Get exported file as stream object + var memoryStream = new MemoryStream(); + using (var exportStream = await pbiClient.Reports.GetFileOfExportToFileAsync(workspaceId, reportId, fileExport.Id)) + { + await exportStream.CopyToAsync(memoryStream); + } + + return new ExportedFile + { + MemoryStream = memoryStream, + FileName = $"{Constant.ExportFileName}{fileExport.ResourceFileExtension}", + MimeType = mimeType + }; + } + } + + /// + /// Initialize export request for report + /// + /// Id of Export request + private async Task InitExportRequest(PowerBIClient pbiClient, Guid workspaceId, Guid reportId, string pageName, FileFormat fileFormat, string pageState = null) + { + PageBookmark pageBookmark = null; + + if (!string.IsNullOrWhiteSpace(pageState)) + { + // To export report page with current bookmark + pageBookmark = new PageBookmark(null, pageState); + } + + var powerBIReportExportConfiguration = new PowerBIReportExportConfiguration + { + Settings = new ExportReportSettings + { + Locale = Constant.DefaultLocale + }, + + // Initialize list of pages along with their state to be exported + Pages = new List() { new ExportReportPage(pageName, pageBookmark) }, + }; + + var exportRequest = new ExportReportRequest + { + Format = fileFormat, + PowerBIReportConfiguration = powerBIReportExportConfiguration, + }; + + // Initiate export process + var export = await pbiClient.Reports.ExportToFileInGroupAsync(workspaceId, reportId, exportRequest); + return export.Id; + } + + /// + /// Get exported file status + /// + /// Export request status object + private async Task GetFileExport(PowerBIClient pbiClient, Guid workspaceId, Guid reportId, string exportId) + { + var startTime = DateTime.UtcNow; + Export exportStatus = null; + + do + { + // Return if timeout occurs + if (DateTime.UtcNow.Subtract(startTime).TotalMinutes >= Constant.ExportTimeoutInMinutes) + { + return null; + } + + var httpMessage = await pbiClient.Reports.GetExportToFileStatusInGroupWithHttpMessagesAsync(workspaceId, reportId, exportId); + exportStatus = httpMessage.Body; + + if (exportStatus.Status == ExportState.Running || exportStatus.Status == ExportState.NotStarted) + { + // Extract wait time from response header + var retryAfter = httpMessage.Response.Headers.RetryAfter; + int retryAfterInSec = retryAfter.Delta.Value.Seconds; + + // Wait before polling again + await Task.Delay(retryAfterInSec * 1000); + } + } + + // While not in a terminal state, keep polling + while (exportStatus.Status != ExportState.Succeeded && exportStatus.Status != ExportState.Failed); + return exportStatus; + } + } +} From 801b4928e1fa6544f945d7e13b1f2585641a4566 Mon Sep 17 00:00:00 2001 From: Ankit Kesharwani Date: Thu, 23 Jul 2020 15:20:01 +0000 Subject: [PATCH 08/21] Merged PR 95426: Add feature for error handling on server-side This PR contains code for handling server-side exceptions and returning the error details to the client-side ## C# | Checklist | Yes/ No/NA | |:-----------|:-----------:| | Are the naming conventions as per development standards? | Yes | | Is there summary for each method? | Yes | | Is there summary for each attribute in class? | No | | Is code analysis executed? | Yes | | Is modularization done? - Same code is not repeated across functions and files | Yes | | Are unused directives are removed from files? | Yes | | Directives are mentioned after namespace in files | Yes | | Is commented code is removed from all files? | Yes | | Is code commenting is done appropriately? | Yes | | Are access specifiers mentioned for all classes, methods, and attributes of class? | Yes | ## Testing | Checklist | Yes/ No/NA | |:-----------|:-----------:| | Are the test cases executed? | Yes | | Are there 0 build errors and warnings? | Yes | Related work items: #383548, #383925, #401039 --- .../Controllers/PowerBiController.cs | 76 +++++++++++++++---- WarehouseDemo/Helpers/ErrorHelper.cs | 39 ++++++++++ WarehouseDemo/Services/AuthService.cs | 32 +++++--- WarehouseDemo/Services/ExportService.cs | 49 +++++++----- 4 files changed, 151 insertions(+), 45 deletions(-) create mode 100644 WarehouseDemo/Helpers/ErrorHelper.cs diff --git a/WarehouseDemo/Controllers/PowerBiController.cs b/WarehouseDemo/Controllers/PowerBiController.cs index 664b5b0..9df7571 100644 --- a/WarehouseDemo/Controllers/PowerBiController.cs +++ b/WarehouseDemo/Controllers/PowerBiController.cs @@ -7,9 +7,13 @@ namespace WarehouseDemo.Controllers using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Caching.Memory; using Microsoft.Extensions.Options; - using System; + using Microsoft.Identity.Client; + using Microsoft.Rest; + using Newtonsoft.Json.Linq; + using System; using System.Threading.Tasks; - using WarehouseDemo.Models; + using WarehouseDemo.Helpers; + using WarehouseDemo.Models; using WarehouseDemo.Service; [ApiController] @@ -37,15 +41,35 @@ namespace WarehouseDemo.Controllers // TODO: Extract JWT token from request header // TODO: Add throttling by IP on this API - // Generate AAD token - var authService = new AuthService(KeyVaultConfig, AuthConfig, Cache); - var aadToken = await authService.GetAadToken(); + try + { + // Generate AAD token + var authService = new AuthService(KeyVaultConfig, AuthConfig, Cache); + var aadToken = await authService.GetAadToken(); - // Generate Embed token - var embedService = new EmbedService(aadToken); - var embedParams = embedService.GenerateEmbedParams(new Guid(PowerBiConfig.Value.WorkspaceId), new Guid(PowerBiConfig.Value.ReportId)); + // Generate Embed token + var embedService = new EmbedService(aadToken); + var embedParams = embedService.GenerateEmbedParams(new Guid(PowerBiConfig.Value.WorkspaceId), new Guid(PowerBiConfig.Value.ReportId)); - return Ok(embedParams.ToString()); + return Ok(embedParams.ToString()); + } + catch (MsalServiceException ex) + { + return StatusCode(ex.StatusCode, ex.Message); + } + catch (MsalClientException ex) + { + return StatusCode(int.Parse(ex.ErrorCode), ex.Message); + } + catch (HttpOperationException ex) + { + JObject error = ErrorHelper.ExtractPowerBiErrorInfo(ex); + return StatusCode((int)ex.Response.StatusCode, error.ToString()); + } + catch (Exception ex) + { + return StatusCode(500, ex.Message); + } } [HttpPost("/api/powerbi/ExportReport")] @@ -63,15 +87,35 @@ namespace WarehouseDemo.Controllers return BadRequest(Constant.MissingFileFormat); } - // Generate AAD token - var authService = new AuthService(KeyVaultConfig, AuthConfig, Cache); - var aadToken = await authService.GetAadToken(); + try + { + // Generate AAD token + var authService = new AuthService(KeyVaultConfig, AuthConfig, Cache); + var aadToken = await authService.GetAadToken(); - // Generated exported file - var exportService = new ExportService(aadToken); - var exportedFile = await exportService.GetExportedFile(new Guid(PowerBiConfig.Value.WorkspaceId), new Guid(PowerBiConfig.Value.ReportId), exportParams.PageName, exportParams.FileFormat, exportParams.PageState); + // Generated exported file + var exportService = new ExportService(aadToken); + var exportedFile = await exportService.GetExportedFile(new Guid(PowerBiConfig.Value.WorkspaceId), new Guid(PowerBiConfig.Value.ReportId), exportParams.PageName, exportParams.FileFormat, exportParams.PageState); - return Ok(File(exportedFile.MemoryStream.ToArray(), exportedFile.MimeType, exportedFile.FileName)); + return Ok(File(exportedFile.MemoryStream.ToArray(), exportedFile.MimeType, exportedFile.FileName)); + } + catch (MsalServiceException ex) + { + return StatusCode(ex.StatusCode, ex.Message); + } + catch (MsalClientException ex) + { + return StatusCode(int.Parse(ex.ErrorCode), ex.Message); + } + catch (HttpOperationException ex) + { + JObject error = ErrorHelper.ExtractPowerBiErrorInfo(ex); + return StatusCode((int)ex.Response.StatusCode, error.ToString()); + } + catch (Exception ex) + { + return StatusCode(500, ex.Message); + } } } } diff --git a/WarehouseDemo/Helpers/ErrorHelper.cs b/WarehouseDemo/Helpers/ErrorHelper.cs new file mode 100644 index 0000000..9a7d94a --- /dev/null +++ b/WarehouseDemo/Helpers/ErrorHelper.cs @@ -0,0 +1,39 @@ +namespace WarehouseDemo.Helpers +{ + using Microsoft.Rest; + using Newtonsoft.Json.Linq; + using System.Collections.Generic; + using System.Linq; + + public static class ErrorHelper + { + /// + /// Extracts error details from the exception + /// + /// Error details as JSON + public static JObject ExtractPowerBiErrorInfo(HttpOperationException ex) + { + IEnumerable requestId; + IEnumerable clusterUri; + JObject error = JObject.Parse(ex.Response.Content)["error"] as JObject; + + // Extract Request Id from the response header + ex.Response.Headers.TryGetValue("RequestId", out requestId); + + // Extract Cluster Uri from the response header + ex.Response.Headers.TryGetValue("home-cluster-uri", out clusterUri); + + // Add extracted values to the error JSON + if (requestId != null) + { + error.Add("requestId", requestId.FirstOrDefault()); + } + if (clusterUri != null) + { + error.Add("clusterUri", clusterUri.FirstOrDefault()); + } + + return error; + } + } +} \ No newline at end of file diff --git a/WarehouseDemo/Services/AuthService.cs b/WarehouseDemo/Services/AuthService.cs index 8d52e0a..74386c3 100644 --- a/WarehouseDemo/Services/AuthService.cs +++ b/WarehouseDemo/Services/AuthService.cs @@ -83,20 +83,28 @@ namespace WarehouseDemo.Service var serviceTokenProvider = new AzureServiceTokenProvider(); var keyVaultClient = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(serviceTokenProvider.KeyVaultTokenCallback)); - var certificate = await keyVaultClient.GetCertificateAsync($"https://{KeyVaultConfig.Value.KeyVaultName}.vault.azure.net/", KeyVaultConfig.Value.CertificateName); - var secret = await keyVaultClient.GetSecretAsync(certificate.SecretIdentifier.Identifier); + try + { + var certificate = await keyVaultClient.GetCertificateAsync($"https://{KeyVaultConfig.Value.KeyVaultName}.vault.azure.net/", KeyVaultConfig.Value.CertificateName); + var secret = await keyVaultClient.GetSecretAsync(certificate.SecretIdentifier.Identifier); + + // MachineKeySet flag is required by Azure Web app + x509Certificate = new X509Certificate2(Convert.FromBase64String(secret.Value), string.Empty, X509KeyStorageFlags.MachineKeySet); - // MachineKeySet flag is required by Azure Web app - x509Certificate = new X509Certificate2(Convert.FromBase64String(secret.Value), string.Empty, X509KeyStorageFlags.MachineKeySet); + // Create cache options + var cacheOptions = new MemoryCacheEntryOptions() + // Keep in cache for this time, reset time if accessed + .SetSlidingExpiration(TimeSpan.FromDays(Constant.ExpireInDays)); - // Create cache options - var cacheOptions = new MemoryCacheEntryOptions() - // Keep in cache for this time, reset time if accessed - .SetSlidingExpiration(TimeSpan.FromDays(Constant.ExpireInDays)); - - // Cache the certificate - Cache.Set(Constant.Certificate, x509Certificate, cacheOptions); - return x509Certificate; + // Cache the certificate + Cache.Set(Constant.Certificate, x509Certificate, cacheOptions); + return x509Certificate; + } + catch (Exception ex) + { + Console.Error.WriteLine(ex.Message); + throw new Exception("Error while accessing Key Vault"); + } } } } diff --git a/WarehouseDemo/Services/ExportService.cs b/WarehouseDemo/Services/ExportService.cs index 8e40760..8f19418 100644 --- a/WarehouseDemo/Services/ExportService.cs +++ b/WarehouseDemo/Services/ExportService.cs @@ -52,27 +52,42 @@ namespace WarehouseDemo.Service using (var pbiClient = new PowerBIClient(new Uri(Constant.PowerBiApiUri), tokenCredentials)) { - var exportId = await InitExportRequest(pbiClient, workspaceId, reportId, pageName, exportFormat, pageState); - var fileExport = await GetFileExport(pbiClient, workspaceId, reportId, exportId); - - if (fileExport.Status != ExportState.Succeeded) + try { - throw new Exception("Failed to export report"); + var exportId = await InitExportRequest(pbiClient, workspaceId, reportId, pageName, exportFormat, pageState); + var fileExport = await GetFileExport(pbiClient, workspaceId, reportId, exportId); + + if (fileExport.Status != ExportState.Succeeded) + { + throw new Exception("Failed to export report"); + } + + // Get exported file as stream object + var memoryStream = new MemoryStream(); + using (var exportStream = await pbiClient.Reports.GetFileOfExportToFileAsync(workspaceId, reportId, fileExport.Id)) + { + await exportStream.CopyToAsync(memoryStream); + } + + return new ExportedFile + { + MemoryStream = memoryStream, + FileName = $"{Constant.ExportFileName}{fileExport.ResourceFileExtension}", + MimeType = mimeType + }; } - - // Get exported file as stream object - var memoryStream = new MemoryStream(); - using (var exportStream = await pbiClient.Reports.GetFileOfExportToFileAsync(workspaceId, reportId, fileExport.Id)) + catch (AggregateException ae) { - await exportStream.CopyToAsync(memoryStream); + ae.Handle((ex) => + { + if (ex is HttpOperationException) + { + return ex is HttpOperationException; + } + return false; + }); + return null; } - - return new ExportedFile - { - MemoryStream = memoryStream, - FileName = $"{Constant.ExportFileName}{fileExport.ResourceFileExtension}", - MimeType = mimeType - }; } } From 5e33c8d356363b91c9c97464a520756c64329bda Mon Sep 17 00:00:00 2001 From: Anant Singh Date: Thu, 30 Jul 2020 07:48:43 +0000 Subject: [PATCH 09/21] Merged PR 95158: Add support for dark theme in the app 1. Added support for dark theme theme 2. Added 2 buttons in Analytics Tab (Sales Manager) view 3. Update Embed Param request to use POST instead of GET ## Frontend | Check | Yes/No/NA | |:------|:------:| | Is the client UI responsive and scales well for different resolutions? |Yes| | Are the user inputs validated in the code? |Yes| | Have you used the coding standards? |Yes| | The DOM is not accessed multiple times |Yes| | Does the code have 0 HTML warnings and errors ([HTMLValidator](https://www.freeformatter.com/html-validator.html))? |Yes| | Current SCSS warnings and errors count | 77| | Does the code have 0 ESLint warnings and errors ([ESLint](https://eslint.org/))? | Yes| | Are the test cases executed on Chromium Edge? |Yes| | When key value pairs in object have same name, only key is used instead of the pair|NA| | There are trailing commas when there are multiple properties in an object| Yes| | Non static HTML elements are not appended | NA| | Async functions return the promise and not return the result| NA| #React checklist: |Checkpoints| Yes/No/NA | |:------|:------:| | Function with prev state as param is used to update state when prev state used to derive new state value|Yes | | Attached event handler method without invoking it within a wrapper function| Yes| | Used context api (useContext hook) for sharing a common prop for all components. E.g. applying theme |Yes | | Second parameter is passed when using useEffect hook | Yes| | Computations and conditional statements are minimal in return statement. JSX element is computed before return statement and returned in return statement |Yes | | Async and compute intensive tasks are executed in useEffect hook (or componentDidMount or componentDidUpdate methods) |Yes | | User defined components start with Capital letters |Yes | | None of the state's value can be derived from another state|Yes | | Component composition is used to share common functionality|Yes | | Hooks are called on the top level of component. i.e. not inside a conditional statement |Yes | Related work items: #392248 --- .gitignore | 3 + WarehouseDemo/ClientApp/karma.conf.js | 47 ++++ WarehouseDemo/ClientApp/package-lock.json | 224 ++++++++++++++++- WarehouseDemo/ClientApp/package.json | 11 +- WarehouseDemo/ClientApp/src/App.scss | 12 +- .../Icons/analytics-captureview-dark.svg | 1 + .../Icons/analytics-captureview-light.svg | 1 + .../assets/Icons/analytics-myviews-dark.svg | 1 + .../assets/Icons/analytics-myviews-light.svg | 1 + .../assets/Icons/colspan-selected-dark.svg | 1 + .../assets/Icons/colspan-selected-light.svg | 1 + .../colspan-selected-personalise-dark.svg | 1 + .../colspan-selected-personalise-light.svg | 1 + .../assets/Icons/one-column-selected-dark.svg | 1 + .../Icons/one-column-selected-light.svg | 1 + .../one-column-selected-personalise-dark.svg | 1 + .../one-column-selected-personalise-light.svg | 1 + .../assets/Icons/personalise-close-dark.svg | 1 + ...-close.svg => personalise-close-light.svg} | 0 .../personalise-include-visuals-dark.svg | 1 + ... => personalise-include-visuals-light.svg} | 0 .../assets/Icons/personalise-layout-dark.svg | 1 + ...ayout.svg => personalise-layout-light.svg} | 0 .../personalise-question-answer-dark.svg | 1 + ... => personalise-question-answer-light.svg} | 0 .../assets/Icons/rowspan-selected-dark.svg | 1 + .../assets/Icons/rowspan-selected-light.svg | 1 + .../rowspan-selected-personalise-dark.svg | 1 + .../rowspan-selected-personalise-light.svg | 1 + .../src/assets/Icons/settings-dark.svg | 1 + .../Icons/{setting.svg => settings-light.svg} | 0 .../Icons/three-column-selected-dark.svg | 1 + .../Icons/three-column-selected-light.svg | 1 + ...three-column-selected-personalise-dark.svg | 1 + ...hree-column-selected-personalise-light.svg | 1 + .../assets/Icons/two-column-selected-dark.svg | 1 + .../Icons/two-column-selected-light.svg | 1 + .../two-column-selected-personalise-dark.svg | 1 + .../two-column-selected-personalise-light.svg | 1 + .../src/assets/Images/app-name-dark.svg | 1 + .../{app-name.svg => app-name-light.svg} | 0 .../src/assets/ReportThemes/darkTheme.json | 232 ++++++++++++++++++ .../src/assets/ReportThemes/lightTheme.json | 40 +++ .../AnalyticsButton/AnalyticsButton.scss | 64 +++++ .../AnalyticsButton/AnalyticsButton.tsx | 24 ++ .../ClientApp/src/components/Card/Card.tsx | 2 +- .../src/components/Checkbox/CheckBox.tsx | 9 +- .../src/components/EmbedPage/EmbedPage.scss | 7 +- .../src/components/EmbedPage/EmbedPage.tsx | 103 ++++++-- .../src/components/IconBar/IconBar.scss | 14 +- .../src/components/IconBar/IconBar.tsx | 12 +- .../src/components/NavTabs/NavTabs.scss | 58 ++++- .../src/components/NavTabs/NavTabs.tsx | 18 +- .../PersonaliseBar/PersonaliseBar.scss | 69 +++++- .../PersonaliseBar/PersonaliseBar.tsx | 47 ++-- .../components/ProfileInfo/ProfileInfo.scss | 27 +- .../components/ProfileInfo/ProfileInfo.tsx | 8 +- .../SettingsDropdown/SettingsDropdown.scss | 111 +++++++++ .../SettingsDropdown/SettingsDropdown.tsx | 74 +++++- WarehouseDemo/ClientApp/src/themeContext.ts | 14 ++ WarehouseDemo/ClientApp/test/App.test.tsx | 53 +++- WarehouseDemo/ClientApp/tsconfig.test.json | 19 ++ .../ClientApp/webpack.test.config.js | 54 ++++ WarehouseDemo/powerbi-client-react-0.1.0.tgz | Bin 116761 -> 0 bytes 64 files changed, 1263 insertions(+), 123 deletions(-) create mode 100644 WarehouseDemo/ClientApp/karma.conf.js create mode 100644 WarehouseDemo/ClientApp/src/assets/Icons/analytics-captureview-dark.svg create mode 100644 WarehouseDemo/ClientApp/src/assets/Icons/analytics-captureview-light.svg create mode 100644 WarehouseDemo/ClientApp/src/assets/Icons/analytics-myviews-dark.svg create mode 100644 WarehouseDemo/ClientApp/src/assets/Icons/analytics-myviews-light.svg create mode 100644 WarehouseDemo/ClientApp/src/assets/Icons/colspan-selected-dark.svg create mode 100644 WarehouseDemo/ClientApp/src/assets/Icons/colspan-selected-light.svg create mode 100644 WarehouseDemo/ClientApp/src/assets/Icons/colspan-selected-personalise-dark.svg create mode 100644 WarehouseDemo/ClientApp/src/assets/Icons/colspan-selected-personalise-light.svg create mode 100644 WarehouseDemo/ClientApp/src/assets/Icons/one-column-selected-dark.svg create mode 100644 WarehouseDemo/ClientApp/src/assets/Icons/one-column-selected-light.svg create mode 100644 WarehouseDemo/ClientApp/src/assets/Icons/one-column-selected-personalise-dark.svg create mode 100644 WarehouseDemo/ClientApp/src/assets/Icons/one-column-selected-personalise-light.svg create mode 100644 WarehouseDemo/ClientApp/src/assets/Icons/personalise-close-dark.svg rename WarehouseDemo/ClientApp/src/assets/Icons/{personalise-close.svg => personalise-close-light.svg} (100%) create mode 100644 WarehouseDemo/ClientApp/src/assets/Icons/personalise-include-visuals-dark.svg rename WarehouseDemo/ClientApp/src/assets/Icons/{personalise-include-visuals.svg => personalise-include-visuals-light.svg} (100%) create mode 100644 WarehouseDemo/ClientApp/src/assets/Icons/personalise-layout-dark.svg rename WarehouseDemo/ClientApp/src/assets/Icons/{personalise-layout.svg => personalise-layout-light.svg} (100%) create mode 100644 WarehouseDemo/ClientApp/src/assets/Icons/personalise-question-answer-dark.svg rename WarehouseDemo/ClientApp/src/assets/Icons/{personalise-qna.svg => personalise-question-answer-light.svg} (100%) create mode 100644 WarehouseDemo/ClientApp/src/assets/Icons/rowspan-selected-dark.svg create mode 100644 WarehouseDemo/ClientApp/src/assets/Icons/rowspan-selected-light.svg create mode 100644 WarehouseDemo/ClientApp/src/assets/Icons/rowspan-selected-personalise-dark.svg create mode 100644 WarehouseDemo/ClientApp/src/assets/Icons/rowspan-selected-personalise-light.svg create mode 100644 WarehouseDemo/ClientApp/src/assets/Icons/settings-dark.svg rename WarehouseDemo/ClientApp/src/assets/Icons/{setting.svg => settings-light.svg} (100%) create mode 100644 WarehouseDemo/ClientApp/src/assets/Icons/three-column-selected-dark.svg create mode 100644 WarehouseDemo/ClientApp/src/assets/Icons/three-column-selected-light.svg create mode 100644 WarehouseDemo/ClientApp/src/assets/Icons/three-column-selected-personalise-dark.svg create mode 100644 WarehouseDemo/ClientApp/src/assets/Icons/three-column-selected-personalise-light.svg create mode 100644 WarehouseDemo/ClientApp/src/assets/Icons/two-column-selected-dark.svg create mode 100644 WarehouseDemo/ClientApp/src/assets/Icons/two-column-selected-light.svg create mode 100644 WarehouseDemo/ClientApp/src/assets/Icons/two-column-selected-personalise-dark.svg create mode 100644 WarehouseDemo/ClientApp/src/assets/Icons/two-column-selected-personalise-light.svg create mode 100644 WarehouseDemo/ClientApp/src/assets/Images/app-name-dark.svg rename WarehouseDemo/ClientApp/src/assets/Images/{app-name.svg => app-name-light.svg} (100%) create mode 100644 WarehouseDemo/ClientApp/src/assets/ReportThemes/darkTheme.json create mode 100644 WarehouseDemo/ClientApp/src/assets/ReportThemes/lightTheme.json create mode 100644 WarehouseDemo/ClientApp/src/components/AnalyticsButton/AnalyticsButton.scss create mode 100644 WarehouseDemo/ClientApp/src/components/AnalyticsButton/AnalyticsButton.tsx create mode 100644 WarehouseDemo/ClientApp/src/components/SettingsDropdown/SettingsDropdown.scss create mode 100644 WarehouseDemo/ClientApp/src/themeContext.ts create mode 100644 WarehouseDemo/ClientApp/tsconfig.test.json create mode 100644 WarehouseDemo/ClientApp/webpack.test.config.js delete mode 100644 WarehouseDemo/powerbi-client-react-0.1.0.tgz diff --git a/.gitignore b/.gitignore index 02e5606..ebb6c83 100644 --- a/.gitignore +++ b/.gitignore @@ -22,6 +22,9 @@ client-react.test/build !client-react.test/build/client-react/styles/ WarehouseDemo/ClientApp/src/react-app-env.d.ts +# testing +compiledTests/ + # ops ops/hosts ops/config.yml diff --git a/WarehouseDemo/ClientApp/karma.conf.js b/WarehouseDemo/ClientApp/karma.conf.js new file mode 100644 index 0000000..dcdc77c --- /dev/null +++ b/WarehouseDemo/ClientApp/karma.conf.js @@ -0,0 +1,47 @@ +// Karma configuration + +module.exports = function (config) { + config.set({ + + // base path that will be used to resolve all patterns (eg. files, exclude) + basePath: '', + + // frameworks to use + frameworks: ['jasmine'], + + // list of files / patterns to load in the browser + files: [ + 'compiledTests/**/*.js' + ], + + // list of files / patterns to exclude + exclude: [ + '*.map', + 'compiledTests/**/*.map' + ], + + // preprocess matching files before serving them to the browser + preprocessors: { + }, + + // test results reporter to use + reporters: ['progress'], + + // enable / disable colors in the output (reporters and logs) + colors: true, + + // level of logging + // possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG + logLevel: config.LOG_INFO, + + // enable / disable watching file and executing tests whenever any file changes + autoWatch: false, + + // start these browsers + browsers: ['ChromeHeadless'], + + // Continuous Integration mode + // if true, Karma captures browsers, runs the tests and exits + singleRun: true, + }) +} diff --git a/WarehouseDemo/ClientApp/package-lock.json b/WarehouseDemo/ClientApp/package-lock.json index 23f65ec..a674023 100644 --- a/WarehouseDemo/ClientApp/package-lock.json +++ b/WarehouseDemo/ClientApp/package-lock.json @@ -4965,6 +4965,12 @@ "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", "dev": true }, + "detect-file": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=", + "dev": true + }, "detect-newline": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", @@ -6208,6 +6214,15 @@ } } }, + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "dev": true, + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, "expect": { "version": "24.9.0", "resolved": "https://registry.npmjs.org/expect/-/expect-24.9.0.tgz", @@ -6615,6 +6630,18 @@ "locate-path": "^2.0.0" } }, + "findup-sync": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", + "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", + "dev": true, + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^4.0.0", + "micromatch": "^3.0.4", + "resolve-dir": "^1.0.1" + } + }, "flat-cache": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", @@ -7379,6 +7406,15 @@ "minimalistic-crypto-utils": "^1.0.1" } }, + "homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "dev": true, + "requires": { + "parse-passwd": "^1.0.0" + } + }, "hosted-git-info": { "version": "2.8.8", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", @@ -7864,6 +7900,12 @@ "side-channel": "^1.0.2" } }, + "interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "dev": true + }, "invariant": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", @@ -11071,6 +11113,12 @@ "json-parse-better-errors": "^1.0.1" } }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=", + "dev": true + }, "parse5": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", @@ -12373,27 +12421,28 @@ } }, "powerbi-client": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/powerbi-client/-/powerbi-client-2.11.0.tgz", - "integrity": "sha512-IvCn/VIoOg87e3SVGGgWIN1Igi+WW8byiEepAY/0FvUJ2uG7Y0bOgpfSLxwIgTWEHIMfIAZpx4NYzpiPMZibrA==", + "version": "2.13.2", + "resolved": "https://registry.npmjs.org/powerbi-client/-/powerbi-client-2.13.2.tgz", + "integrity": "sha512-8kcNaMHzka5Ja0zSu3IGC24G5oasvbL2Oa7GcOA4GOXov/P5EQRu8RSZwcOOqlrm/Lc0hQmccwi08ze6sqDRBw==", "requires": { "http-post-message": "^0.2", - "powerbi-models": "^1.3", + "powerbi-models": "^1.4", "powerbi-router": "^0.1", "window-post-message-proxy": "^0.2" } }, "powerbi-client-react": { - "version": "file:../powerbi-client-react-0.1.0.tgz", - "integrity": "sha512-WDwrKfeZT3sqxMjsDuZ2Kk2HGVUJzMGSK5TaLJIaQ5oygkfhML65q0cUysnxW+Bgwb3sCMavszjYbq8ME355rQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/powerbi-client-react/-/powerbi-client-react-1.0.1.tgz", + "integrity": "sha512-YkwrKd6ho5Z5MImNaNJekNsKsaN72edF8a8d89fx3BxMI5d3pR9TakNrpQ9NN0If4vlNWCKvso/JwGT/DXUocg==", "requires": { "powerbi-client": "^2.11.0" } }, "powerbi-models": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/powerbi-models/-/powerbi-models-1.3.4.tgz", - "integrity": "sha512-hphw7boqjh/GSTUg4xZNoUE5/SWGTKWZhDZHapl1lIsbq2uXQQWVr6k9uyvZDLfTakE4+o18SBcIQe4IRNAduQ==" + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/powerbi-models/-/powerbi-models-1.4.0.tgz", + "integrity": "sha512-SNdY3SSjOU1DHs3mgyvi2jv1UvTIXoxrbdZBEjsePQ7bo6Rp425Q6qKCE7kHgJz5fjOZ6tPU5+zT+J4J7xYFQQ==" }, "powerbi-router": { "version": "0.1.5", @@ -13928,6 +13977,42 @@ "resolve-from": "^3.0.0" } }, + "resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", + "dev": true, + "requires": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + }, + "dependencies": { + "global-modules": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "dev": true, + "requires": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + } + }, + "global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", + "dev": true, + "requires": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + } + } + } + }, "resolve-from": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", @@ -15902,6 +15987,39 @@ "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==", "dev": true }, + "svg-url-loader": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/svg-url-loader/-/svg-url-loader-6.0.0.tgz", + "integrity": "sha512-Qr5SCKxyxKcRnvnVrO3iQj9EX/v40UiGEMshgegzV7vpo3yc+HexELOdtWcA3MKjL8IyZZ1zOdcILmDEa/8JJQ==", + "dev": true, + "requires": { + "file-loader": "~6.0.0", + "loader-utils": "~2.0.0" + }, + "dependencies": { + "file-loader": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.0.0.tgz", + "integrity": "sha512-/aMOAYEFXDdjG0wytpTL5YQLfZnnTmLNjn+AIrJ/6HVnTfDqLsVKUUwkDf4I4kgex36BvjuXEn/TX9B/1ESyqQ==", + "dev": true, + "requires": { + "loader-utils": "^2.0.0", + "schema-utils": "^2.6.5" + } + }, + "loader-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", + "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + } + } + }, "svgo": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", @@ -16321,6 +16439,64 @@ "glob": "^7.1.2" } }, + "ts-loader": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-7.0.5.tgz", + "integrity": "sha512-zXypEIT6k3oTc+OZNx/cqElrsbBtYqDknf48OZos0NQ3RTt045fBIU8RRSu+suObBzYB355aIPGOe/3kj9h7Ig==", + "dev": true, + "requires": { + "chalk": "^2.3.0", + "enhanced-resolve": "^4.0.0", + "loader-utils": "^1.0.2", + "micromatch": "^4.0.0", + "semver": "^6.0.0" + }, + "dependencies": { + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + } + } + }, "ts-pnp": { "version": "1.1.6", "resolved": "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.1.6.tgz", @@ -17027,6 +17203,36 @@ } } }, + "webpack-cli": { + "version": "3.3.12", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.3.12.tgz", + "integrity": "sha512-NVWBaz9k839ZH/sinurM+HcDvJOTXwSjYp1ku+5XKeOC03z8v5QitnK/x+lAxGXFyhdayoIf/GOpv85z3/xPag==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "cross-spawn": "^6.0.5", + "enhanced-resolve": "^4.1.1", + "findup-sync": "^3.0.0", + "global-modules": "^2.0.0", + "import-local": "^2.0.0", + "interpret": "^1.4.0", + "loader-utils": "^1.4.0", + "supports-color": "^6.1.0", + "v8-compile-cache": "^2.1.1", + "yargs": "^13.3.2" + }, + "dependencies": { + "supports-color": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", + "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, "webpack-dev-middleware": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz", diff --git a/WarehouseDemo/ClientApp/package.json b/WarehouseDemo/ClientApp/package.json index 4ba4d82..7758fc0 100644 --- a/WarehouseDemo/ClientApp/package.json +++ b/WarehouseDemo/ClientApp/package.json @@ -3,8 +3,7 @@ "version": "0.1.0", "private": true, "dependencies": { - "powerbi-client": "^2.11.0", - "powerbi-client-react": "file:../powerbi-client-react-0.1.0.tgz", + "powerbi-client-react": "^1.0.1", "react": "16.13.1", "react-dom": "^16.13.1" }, @@ -38,7 +37,10 @@ "react-scripts": "^3.4.1", "rimraf": "^2.6.2", "sass-lint": "^1.13.1", - "typescript": "^3.9.3" + "svg-url-loader": "^6.0.0", + "ts-loader": "^7.0.5", + "typescript": "^3.9.3", + "webpack-cli": "^3.3.12" }, "eslintConfig": { "extends": "react-app" @@ -46,7 +48,8 @@ "scripts": { "start": "rimraf ./build && react-scripts start", "build": "react-scripts build", - "test": "cross-env CI=true react-scripts test --env=jsdom", + "pretest": "webpack --config webpack.test.config.js", + "test": "karma start karma.conf.js", "eject": "react-scripts eject", "lint": "eslint --fix src/**/*.{ts,tsx} && echo Linting complete.", "scss-lint": "sass-lint -c .sass-lint.yml -v -q" diff --git a/WarehouseDemo/ClientApp/src/App.scss b/WarehouseDemo/ClientApp/src/App.scss index c4b1da1..a437e82 100644 --- a/WarehouseDemo/ClientApp/src/App.scss +++ b/WarehouseDemo/ClientApp/src/App.scss @@ -2,10 +2,6 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // --------------------------------------------------------------------------- -.active { - color: #303778 !important; -} - input.form-control { box-shadow: none !important; padding-left: 3rem !important; @@ -22,7 +18,7 @@ input.form-control { } .report-container > iframe { - border: 0; + border: 0; } .set-icon { @@ -35,9 +31,3 @@ input.form-control { top: 50%; transform: translateY(-50%); } - -.visuals-list-dropdown { - border: 0; - padding: 20px; - transform: translate(30px, -30px); -} diff --git a/WarehouseDemo/ClientApp/src/assets/Icons/analytics-captureview-dark.svg b/WarehouseDemo/ClientApp/src/assets/Icons/analytics-captureview-dark.svg new file mode 100644 index 0000000..3254245 --- /dev/null +++ b/WarehouseDemo/ClientApp/src/assets/Icons/analytics-captureview-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/WarehouseDemo/ClientApp/src/assets/Icons/analytics-captureview-light.svg b/WarehouseDemo/ClientApp/src/assets/Icons/analytics-captureview-light.svg new file mode 100644 index 0000000..38c95d4 --- /dev/null +++ b/WarehouseDemo/ClientApp/src/assets/Icons/analytics-captureview-light.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/WarehouseDemo/ClientApp/src/assets/Icons/analytics-myviews-dark.svg b/WarehouseDemo/ClientApp/src/assets/Icons/analytics-myviews-dark.svg new file mode 100644 index 0000000..0d66705 --- /dev/null +++ b/WarehouseDemo/ClientApp/src/assets/Icons/analytics-myviews-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/WarehouseDemo/ClientApp/src/assets/Icons/analytics-myviews-light.svg b/WarehouseDemo/ClientApp/src/assets/Icons/analytics-myviews-light.svg new file mode 100644 index 0000000..146890e --- /dev/null +++ b/WarehouseDemo/ClientApp/src/assets/Icons/analytics-myviews-light.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/WarehouseDemo/ClientApp/src/assets/Icons/colspan-selected-dark.svg b/WarehouseDemo/ClientApp/src/assets/Icons/colspan-selected-dark.svg new file mode 100644 index 0000000..78253da --- /dev/null +++ b/WarehouseDemo/ClientApp/src/assets/Icons/colspan-selected-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/WarehouseDemo/ClientApp/src/assets/Icons/colspan-selected-light.svg b/WarehouseDemo/ClientApp/src/assets/Icons/colspan-selected-light.svg new file mode 100644 index 0000000..823283b --- /dev/null +++ b/WarehouseDemo/ClientApp/src/assets/Icons/colspan-selected-light.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/WarehouseDemo/ClientApp/src/assets/Icons/colspan-selected-personalise-dark.svg b/WarehouseDemo/ClientApp/src/assets/Icons/colspan-selected-personalise-dark.svg new file mode 100644 index 0000000..15eb292 --- /dev/null +++ b/WarehouseDemo/ClientApp/src/assets/Icons/colspan-selected-personalise-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/WarehouseDemo/ClientApp/src/assets/Icons/colspan-selected-personalise-light.svg b/WarehouseDemo/ClientApp/src/assets/Icons/colspan-selected-personalise-light.svg new file mode 100644 index 0000000..823283b --- /dev/null +++ b/WarehouseDemo/ClientApp/src/assets/Icons/colspan-selected-personalise-light.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/WarehouseDemo/ClientApp/src/assets/Icons/one-column-selected-dark.svg b/WarehouseDemo/ClientApp/src/assets/Icons/one-column-selected-dark.svg new file mode 100644 index 0000000..4ddbd98 --- /dev/null +++ b/WarehouseDemo/ClientApp/src/assets/Icons/one-column-selected-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/WarehouseDemo/ClientApp/src/assets/Icons/one-column-selected-light.svg b/WarehouseDemo/ClientApp/src/assets/Icons/one-column-selected-light.svg new file mode 100644 index 0000000..efa8a5b --- /dev/null +++ b/WarehouseDemo/ClientApp/src/assets/Icons/one-column-selected-light.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/WarehouseDemo/ClientApp/src/assets/Icons/one-column-selected-personalise-dark.svg b/WarehouseDemo/ClientApp/src/assets/Icons/one-column-selected-personalise-dark.svg new file mode 100644 index 0000000..81b775e --- /dev/null +++ b/WarehouseDemo/ClientApp/src/assets/Icons/one-column-selected-personalise-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/WarehouseDemo/ClientApp/src/assets/Icons/one-column-selected-personalise-light.svg b/WarehouseDemo/ClientApp/src/assets/Icons/one-column-selected-personalise-light.svg new file mode 100644 index 0000000..4e9ca32 --- /dev/null +++ b/WarehouseDemo/ClientApp/src/assets/Icons/one-column-selected-personalise-light.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/WarehouseDemo/ClientApp/src/assets/Icons/personalise-close-dark.svg b/WarehouseDemo/ClientApp/src/assets/Icons/personalise-close-dark.svg new file mode 100644 index 0000000..8155c5c --- /dev/null +++ b/WarehouseDemo/ClientApp/src/assets/Icons/personalise-close-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/WarehouseDemo/ClientApp/src/assets/Icons/personalise-close.svg b/WarehouseDemo/ClientApp/src/assets/Icons/personalise-close-light.svg similarity index 100% rename from WarehouseDemo/ClientApp/src/assets/Icons/personalise-close.svg rename to WarehouseDemo/ClientApp/src/assets/Icons/personalise-close-light.svg diff --git a/WarehouseDemo/ClientApp/src/assets/Icons/personalise-include-visuals-dark.svg b/WarehouseDemo/ClientApp/src/assets/Icons/personalise-include-visuals-dark.svg new file mode 100644 index 0000000..503b86e --- /dev/null +++ b/WarehouseDemo/ClientApp/src/assets/Icons/personalise-include-visuals-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/WarehouseDemo/ClientApp/src/assets/Icons/personalise-include-visuals.svg b/WarehouseDemo/ClientApp/src/assets/Icons/personalise-include-visuals-light.svg similarity index 100% rename from WarehouseDemo/ClientApp/src/assets/Icons/personalise-include-visuals.svg rename to WarehouseDemo/ClientApp/src/assets/Icons/personalise-include-visuals-light.svg diff --git a/WarehouseDemo/ClientApp/src/assets/Icons/personalise-layout-dark.svg b/WarehouseDemo/ClientApp/src/assets/Icons/personalise-layout-dark.svg new file mode 100644 index 0000000..bf0288a --- /dev/null +++ b/WarehouseDemo/ClientApp/src/assets/Icons/personalise-layout-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/WarehouseDemo/ClientApp/src/assets/Icons/personalise-layout.svg b/WarehouseDemo/ClientApp/src/assets/Icons/personalise-layout-light.svg similarity index 100% rename from WarehouseDemo/ClientApp/src/assets/Icons/personalise-layout.svg rename to WarehouseDemo/ClientApp/src/assets/Icons/personalise-layout-light.svg diff --git a/WarehouseDemo/ClientApp/src/assets/Icons/personalise-question-answer-dark.svg b/WarehouseDemo/ClientApp/src/assets/Icons/personalise-question-answer-dark.svg new file mode 100644 index 0000000..12db90b --- /dev/null +++ b/WarehouseDemo/ClientApp/src/assets/Icons/personalise-question-answer-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/WarehouseDemo/ClientApp/src/assets/Icons/personalise-qna.svg b/WarehouseDemo/ClientApp/src/assets/Icons/personalise-question-answer-light.svg similarity index 100% rename from WarehouseDemo/ClientApp/src/assets/Icons/personalise-qna.svg rename to WarehouseDemo/ClientApp/src/assets/Icons/personalise-question-answer-light.svg diff --git a/WarehouseDemo/ClientApp/src/assets/Icons/rowspan-selected-dark.svg b/WarehouseDemo/ClientApp/src/assets/Icons/rowspan-selected-dark.svg new file mode 100644 index 0000000..bd659f2 --- /dev/null +++ b/WarehouseDemo/ClientApp/src/assets/Icons/rowspan-selected-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/WarehouseDemo/ClientApp/src/assets/Icons/rowspan-selected-light.svg b/WarehouseDemo/ClientApp/src/assets/Icons/rowspan-selected-light.svg new file mode 100644 index 0000000..da0bd7a --- /dev/null +++ b/WarehouseDemo/ClientApp/src/assets/Icons/rowspan-selected-light.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/WarehouseDemo/ClientApp/src/assets/Icons/rowspan-selected-personalise-dark.svg b/WarehouseDemo/ClientApp/src/assets/Icons/rowspan-selected-personalise-dark.svg new file mode 100644 index 0000000..0f9f966 --- /dev/null +++ b/WarehouseDemo/ClientApp/src/assets/Icons/rowspan-selected-personalise-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/WarehouseDemo/ClientApp/src/assets/Icons/rowspan-selected-personalise-light.svg b/WarehouseDemo/ClientApp/src/assets/Icons/rowspan-selected-personalise-light.svg new file mode 100644 index 0000000..da0bd7a --- /dev/null +++ b/WarehouseDemo/ClientApp/src/assets/Icons/rowspan-selected-personalise-light.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/WarehouseDemo/ClientApp/src/assets/Icons/settings-dark.svg b/WarehouseDemo/ClientApp/src/assets/Icons/settings-dark.svg new file mode 100644 index 0000000..f23acd1 --- /dev/null +++ b/WarehouseDemo/ClientApp/src/assets/Icons/settings-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/WarehouseDemo/ClientApp/src/assets/Icons/setting.svg b/WarehouseDemo/ClientApp/src/assets/Icons/settings-light.svg similarity index 100% rename from WarehouseDemo/ClientApp/src/assets/Icons/setting.svg rename to WarehouseDemo/ClientApp/src/assets/Icons/settings-light.svg diff --git a/WarehouseDemo/ClientApp/src/assets/Icons/three-column-selected-dark.svg b/WarehouseDemo/ClientApp/src/assets/Icons/three-column-selected-dark.svg new file mode 100644 index 0000000..e9b4a20 --- /dev/null +++ b/WarehouseDemo/ClientApp/src/assets/Icons/three-column-selected-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/WarehouseDemo/ClientApp/src/assets/Icons/three-column-selected-light.svg b/WarehouseDemo/ClientApp/src/assets/Icons/three-column-selected-light.svg new file mode 100644 index 0000000..3b0e4af --- /dev/null +++ b/WarehouseDemo/ClientApp/src/assets/Icons/three-column-selected-light.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/WarehouseDemo/ClientApp/src/assets/Icons/three-column-selected-personalise-dark.svg b/WarehouseDemo/ClientApp/src/assets/Icons/three-column-selected-personalise-dark.svg new file mode 100644 index 0000000..58e7e63 --- /dev/null +++ b/WarehouseDemo/ClientApp/src/assets/Icons/three-column-selected-personalise-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/WarehouseDemo/ClientApp/src/assets/Icons/three-column-selected-personalise-light.svg b/WarehouseDemo/ClientApp/src/assets/Icons/three-column-selected-personalise-light.svg new file mode 100644 index 0000000..3b0e4af --- /dev/null +++ b/WarehouseDemo/ClientApp/src/assets/Icons/three-column-selected-personalise-light.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/WarehouseDemo/ClientApp/src/assets/Icons/two-column-selected-dark.svg b/WarehouseDemo/ClientApp/src/assets/Icons/two-column-selected-dark.svg new file mode 100644 index 0000000..cf972c2 --- /dev/null +++ b/WarehouseDemo/ClientApp/src/assets/Icons/two-column-selected-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/WarehouseDemo/ClientApp/src/assets/Icons/two-column-selected-light.svg b/WarehouseDemo/ClientApp/src/assets/Icons/two-column-selected-light.svg new file mode 100644 index 0000000..4f1a1e4 --- /dev/null +++ b/WarehouseDemo/ClientApp/src/assets/Icons/two-column-selected-light.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/WarehouseDemo/ClientApp/src/assets/Icons/two-column-selected-personalise-dark.svg b/WarehouseDemo/ClientApp/src/assets/Icons/two-column-selected-personalise-dark.svg new file mode 100644 index 0000000..fe8afa0 --- /dev/null +++ b/WarehouseDemo/ClientApp/src/assets/Icons/two-column-selected-personalise-dark.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/WarehouseDemo/ClientApp/src/assets/Icons/two-column-selected-personalise-light.svg b/WarehouseDemo/ClientApp/src/assets/Icons/two-column-selected-personalise-light.svg new file mode 100644 index 0000000..4f1a1e4 --- /dev/null +++ b/WarehouseDemo/ClientApp/src/assets/Icons/two-column-selected-personalise-light.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/WarehouseDemo/ClientApp/src/assets/Images/app-name-dark.svg b/WarehouseDemo/ClientApp/src/assets/Images/app-name-dark.svg new file mode 100644 index 0000000..ba132de --- /dev/null +++ b/WarehouseDemo/ClientApp/src/assets/Images/app-name-dark.svg @@ -0,0 +1 @@ +WAREHOUSECONTOSO \ No newline at end of file diff --git a/WarehouseDemo/ClientApp/src/assets/Images/app-name.svg b/WarehouseDemo/ClientApp/src/assets/Images/app-name-light.svg similarity index 100% rename from WarehouseDemo/ClientApp/src/assets/Images/app-name.svg rename to WarehouseDemo/ClientApp/src/assets/Images/app-name-light.svg diff --git a/WarehouseDemo/ClientApp/src/assets/ReportThemes/darkTheme.json b/WarehouseDemo/ClientApp/src/assets/ReportThemes/darkTheme.json new file mode 100644 index 0000000..48153c0 --- /dev/null +++ b/WarehouseDemo/ClientApp/src/assets/ReportThemes/darkTheme.json @@ -0,0 +1,232 @@ +{ + "name": "Innovate", + "dataColors": [ + "#70B0E0", + "#FCB714", + "#2878BD", + "#0EB194", + "#108372", + "#AF916D", + "#C4B07B", + "#F15628", + "#6F9EDB", + "#FEE266", + "#5DA9FD", + "#4AC5BB", + "#35B895", + "#B69087", + "#B6A887", + "#F48459", + "#1D5C95", + "#BDA750", + "#4A82BB", + "#168980", + "#288A6F", + "#A67668", + "#7B6E4F", + "#B54C25", + "#164672", + "#7E6F36", + "#31567D", + "#0F5C55", + "#0D2E25", + "#7B594F", + "#524934", + "#793418" + ], + "foreground": "#FFFFFF", + "foregroundNeutralSecondary": "#D2D0CE", + "foregroundNeutralTertiary": "#979593", + "background": "#3a3a3a", + "backgroundLight": "#3B3A39", + "backgroundNeutral": "#605E5C", + "tableAccent": "#2878BD", + "maximum": "#2878BD", + "center": "#FCB714", + "minimum": "#D0E4F5", + "hyperlink": "#2878BD", + "visitedHyperlink": "#D0E4F5", + "textClasses": { + "callout": { + "fontFace": "Arial", + "color": "#FFFFFF" + }, + "title": { + "fontFace": "Arial", + "color": "#FFFFFF" + }, + "header": { + "fontFace": "Arial", + "color": "#FFFFFF" + }, + "label": { + "fontFace": "Arial", + "color": "#FFFFFF" + } + }, + "visualStyles": { + "*": { + "*": { + "background": [ + { + "color": { + "solid": { + "color": "#343741" + } + } + } + ], + "visualHeader": [ + { + "foreground": { + "solid": { + "color": "#FFFFFF" + } + }, + "border": { + "solid": { + "color": "#3a3a3a" + } + }, + "background": { + "solid": { + "color": "#3a3a3a" + } + } + } + ], + "outspacePane": [ + { + "backgroundColor": { + "solid": { + "color": "#3a3a3a" + } + }, + "foregroundColor": { + "solid": { + "color": "#FFFFFF" + } + }, + "transparency": 0, + "border": true, + "borderColor": { + "solid": { + "color": "#979593" + } + } + } + ], + "filterCard": [ + { + "$id": "Applied", + "transparency": 0, + "foregroundColor": { + "solid": { + "color": "#FFFFFF" + } + }, + "backgroundColor": { + "solid": { + "color": "#605E5C" + } + }, + "inputBoxColor": { + "solid": { + "color": "#605E5C" + } + }, + "borderColor": { + "solid": { + "color": "#979593" + } + }, + "border": true + }, + { + "$id": "Available", + "transparency": 0, + "foregroundColor": { + "solid": { + "color": "#FFFFFF" + } + }, + "backgroundColor": { + "solid": { + "color": "#3a3a3a" + } + }, + "inputBoxColor": { + "solid": { + "color": "#3a3a3a" + } + }, + "borderColor": { + "solid": { + "color": "#979593" + } + }, + "border": true + } + ] + } + }, + "slicer": { + "*": { + "items": [ + { + "background": { + "solid": { + "color": "#3a3a3a" + } + } + } + ], + "numericInputStyle": [ + { + "background": { + "solid": { + "color": "#3a3a3a" + } + } + } + ] + } + }, + "keyDriversVisual": { + "*": { + "keyInfluencersVisual": [ + { + "canvasColor": { + "solid": { + "color": "#3B3A39" + } + } + } + ] + } + }, + "page": { + "*": { + "outspace": [ + { + "color": { + "solid": { + "color": "#000000" + } + } + } + ], + "background": [ + { + "transparency": 0, + "color": { + "solid": { + "color": "#000000" + } + } + } + ] + } + } + } +} \ No newline at end of file diff --git a/WarehouseDemo/ClientApp/src/assets/ReportThemes/lightTheme.json b/WarehouseDemo/ClientApp/src/assets/ReportThemes/lightTheme.json new file mode 100644 index 0000000..d32dc64 --- /dev/null +++ b/WarehouseDemo/ClientApp/src/assets/ReportThemes/lightTheme.json @@ -0,0 +1,40 @@ +{ + "name": "Classroom", + "dataColors": [ + "#4A8DDC", + "#4C5D8A", + "#F3C911", + "#DC5B57", + "#33AE81", + "#95C8F0", + "#DD915F", + "#9A64A0", + "#6EA4E3", + "#707DA1", + "#F5D441", + "#E37C79", + "#5CBE9A", + "#AAD3F3", + "#E4A77F", + "#AE83B3", + "#386AA5", + "#394668", + "#B6970D", + "#A54441", + "#268361", + "#7096B4", + "#A66D47", + "#744B78", + "#25476E", + "#262F45", + "#7A6509", + "#6E2E2C", + "#1A5741", + "#4B6478", + "#6F4930", + "#4D3250" + ], + "background": "#FFFFFF", + "foreground": "#070f25", + "tableAccent": "#0F1934" +} \ No newline at end of file diff --git a/WarehouseDemo/ClientApp/src/components/AnalyticsButton/AnalyticsButton.scss b/WarehouseDemo/ClientApp/src/components/AnalyticsButton/AnalyticsButton.scss new file mode 100644 index 0000000..bd45bbf --- /dev/null +++ b/WarehouseDemo/ClientApp/src/components/AnalyticsButton/AnalyticsButton.scss @@ -0,0 +1,64 @@ +.analytics-button { + background: #FFFFFF 0% 0% no-repeat padding-box; + border: 1px solid #BCBFDE; + cursor: pointer; + display: inline-block; + height: 40px; + margin-right: 20px; + opacity: 1; + padding: 6px 0; + text-align: center; + width: 160px; + + &.light { + background-color: #FFFFFF; + } + + &.dark { + background-color: #343741; + } +} + +.analytics-button-icon { + background: transparent; + display: inline-block; +} + +.analytics-button-text { + display: inline-block; + font: Semibold 17px 'Segoe UI'; + letter-spacing: 0; + margin-left: 8px; + opacity: 1; + text-align: left; + + &.light { + color: #303778; + } + + &.dark { + color: #D8D8D8; + } +} + +.horizontal-rule { + background-color: #D0D1E1; + border: 1px solid #D0D1E1; + opacity: 1; + width: 100%; + margin: 26px 0; +} + +.analytics-button-container { + margin-top: 26px; + margin-left: 35px; + margin-right: 35px; + + &.light { + background-color: #EBEFF3; + } + + &.dark { + background-color: #1F2128; + } +} diff --git a/WarehouseDemo/ClientApp/src/components/AnalyticsButton/AnalyticsButton.tsx b/WarehouseDemo/ClientApp/src/components/AnalyticsButton/AnalyticsButton.tsx new file mode 100644 index 0000000..4152e81 --- /dev/null +++ b/WarehouseDemo/ClientApp/src/components/AnalyticsButton/AnalyticsButton.tsx @@ -0,0 +1,24 @@ +import React, { useContext } from 'react'; +import './AnalyticsButton.scss'; +import ThemeContext, { Theme } from '../../themeContext'; + +export interface AnalyticsButtonProps { + icon: string; // svg image + onClick?: { (event: React.MouseEvent): void }; + children?: string; +} + +/** + * Render buttons for Analytics tab + * @param props AnalyticsButtonProps + */ +export function AnalyticsButton(props: AnalyticsButtonProps): JSX.Element { + const theme: Theme = useContext(ThemeContext); + + return ( +
    + +
    {props.children}
    +
    + ); +} diff --git a/WarehouseDemo/ClientApp/src/components/Card/Card.tsx b/WarehouseDemo/ClientApp/src/components/Card/Card.tsx index 5c740fe..ff18e8f 100644 --- a/WarehouseDemo/ClientApp/src/components/Card/Card.tsx +++ b/WarehouseDemo/ClientApp/src/components/Card/Card.tsx @@ -31,7 +31,7 @@ export function Card(props: CardProps): JSX.Element {
    App name diff --git a/WarehouseDemo/ClientApp/src/components/Checkbox/CheckBox.tsx b/WarehouseDemo/ClientApp/src/components/Checkbox/CheckBox.tsx index 9533e6f..bc4ec06 100644 --- a/WarehouseDemo/ClientApp/src/components/Checkbox/CheckBox.tsx +++ b/WarehouseDemo/ClientApp/src/components/Checkbox/CheckBox.tsx @@ -2,7 +2,8 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // --------------------------------------------------------------------------- -import React from 'react'; +import React, { useContext } from 'react'; +import ThemeContext from '../../themeContext'; export interface CheckBoxProps { title: string; @@ -12,10 +13,12 @@ export interface CheckBoxProps { } export const CheckBox = (props: CheckBoxProps): JSX.Element => { + const theme = useContext(ThemeContext); + return ( -
  • +